From patchwork Wed Aug 2 15:40:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lu, Hongjiu" X-Patchwork-Id: 21873 Received: (qmail 125703 invoked by alias); 2 Aug 2017 15:41:01 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 125675 invoked by uid 89); 2 Aug 2017 15:41:00 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LAZY_DOMAIN_SECURITY, NO_DNS_FOR_FROM, RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy= X-HELO: mga06.intel.com X-ExtLoop1: 1 Date: Wed, 2 Aug 2017 08:40:57 -0700 From: "H.J. Lu" To: GNU C Library Subject: [PATCH 4/4] x86: Remove assembly versions of HAS_CPU_FEATURE/HAS_ARCH_FEATURE Message-ID: <20170802154057.GA21982@gmail.com> Reply-To: "H.J. Lu" MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.8.3 (2017-05-23) I will check in this after the first 3 patches are checked in. H.J. --- Since all x86 IFUNC selectors are implemented in C, assembly versions of HAS_CPU_FEATURE and HAS_ARCH_FEATURE can be removed. * sysdeps/x86/cpu-features.h [__ASSEMBLER__] (LOAD_RTLD_GLOBAL_RO_RDX, HAS_FEATURE, LOAD_FUNC_GOT_EAX, HAS_CPU_FEATURE, HAS_ARCH_FEATURE): Removed. --- sysdeps/x86/cpu-features.h | 57 ---------------------------------------------- 1 file changed, 57 deletions(-) diff --git a/sysdeps/x86/cpu-features.h b/sysdeps/x86/cpu-features.h index 3ed67f5800..af52689123 100644 --- a/sysdeps/x86/cpu-features.h +++ b/sysdeps/x86/cpu-features.h @@ -127,63 +127,6 @@ # define index_arch_Use_dl_runtime_resolve_slow FEATURE_INDEX_1*FEATURE_SIZE # define index_arch_Prefer_No_AVX512 FEATURE_INDEX_1*FEATURE_SIZE - -# if defined (_LIBC) && !IS_IN (nonlib) -# ifdef __x86_64__ -# ifdef SHARED -# if IS_IN (rtld) -# define LOAD_RTLD_GLOBAL_RO_RDX -# define HAS_FEATURE(offset, field, name) \ - testl $(bit_##field##_##name), \ - _rtld_local_ro+offset+(index_##field##_##name)(%rip) -# else -# define LOAD_RTLD_GLOBAL_RO_RDX \ - mov _rtld_global_ro@GOTPCREL(%rip), %RDX_LP -# define HAS_FEATURE(offset, field, name) \ - testl $(bit_##field##_##name), \ - RTLD_GLOBAL_RO_DL_X86_CPU_FEATURES_OFFSET+offset+(index_##field##_##name)(%rdx) -# endif -# else /* SHARED */ -# define LOAD_RTLD_GLOBAL_RO_RDX -# define HAS_FEATURE(offset, field, name) \ - testl $(bit_##field##_##name), \ - _dl_x86_cpu_features+offset+(index_##field##_##name)(%rip) -# endif /* !SHARED */ -# else /* __x86_64__ */ -# ifdef SHARED -# define LOAD_FUNC_GOT_EAX(func) \ - leal func@GOTOFF(%edx), %eax -# if IS_IN (rtld) -# define LOAD_GOT_AND_RTLD_GLOBAL_RO \ - LOAD_PIC_REG(dx) -# define HAS_FEATURE(offset, field, name) \ - testl $(bit_##field##_##name), \ - offset+(index_##field##_##name)+_rtld_local_ro@GOTOFF(%edx) -# else -# define LOAD_GOT_AND_RTLD_GLOBAL_RO \ - LOAD_PIC_REG(dx); \ - mov _rtld_global_ro@GOT(%edx), %ecx -# define HAS_FEATURE(offset, field, name) \ - testl $(bit_##field##_##name), \ - RTLD_GLOBAL_RO_DL_X86_CPU_FEATURES_OFFSET+offset+(index_##field##_##name)(%ecx) -# endif -# else /* SHARED */ -# define LOAD_FUNC_GOT_EAX(func) \ - leal func, %eax -# define LOAD_GOT_AND_RTLD_GLOBAL_RO -# define HAS_FEATURE(offset, field, name) \ - testl $(bit_##field##_##name), \ - _dl_x86_cpu_features+offset+(index_##field##_##name) -# endif /* !SHARED */ -# endif /* !__x86_64__ */ -# else /* _LIBC && !nonlib */ -# error "Sorry, is unimplemented for assembler" -# endif /* !_LIBC || nonlib */ - -/* HAS_* evaluates to true if we may use the feature at runtime. */ -# define HAS_CPU_FEATURE(name) HAS_FEATURE (CPUID_OFFSET, cpu, name) -# define HAS_ARCH_FEATURE(name) HAS_FEATURE (FEATURE_OFFSET, arch, name) - #else /* __ASSEMBLER__ */ enum