Remove _ISOMAC check from <cpu-features.h>
Commit Message
Remove _ISOMAC check from <cpu-features.h> since it isn't an installer
header file.
---
sysdeps/x86/include/cpu-features.h | 156 ++++++++++++++---------------
1 file changed, 75 insertions(+), 81 deletions(-)
Comments
On Thu, Dec 24, 2020 at 3:46 PM H.J. Lu <hjl.tools@gmail.com> wrote:
>
> Remove _ISOMAC check from <cpu-features.h> since it isn't an installer
> header file.
> ---
> sysdeps/x86/include/cpu-features.h | 156 ++++++++++++++---------------
> 1 file changed, 75 insertions(+), 81 deletions(-)
>
> diff --git a/sysdeps/x86/include/cpu-features.h b/sysdeps/x86/include/cpu-features.h
> index 0df57d9a17..a53194a6ca 100644
> --- a/sysdeps/x86/include/cpu-features.h
> +++ b/sysdeps/x86/include/cpu-features.h
> @@ -23,20 +23,16 @@
> # error this should be impossible
> #endif
>
> -#ifndef _ISOMAC
> /* Get most of the contents from the public header, but we define a
> different `struct cpu_features' type for private use. */
> -# define cpu_features cpu_features_public
> -# define __x86_get_cpu_features __x86_get_cpu_features_public
> -#endif
> +#define cpu_features cpu_features_public
> +#define __x86_get_cpu_features __x86_get_cpu_features_public
>
> #include <sysdeps/x86/sys/platform/x86.h>
>
> -#ifndef _ISOMAC
> -
> -# undef cpu_features
> -# undef __x86_get_cpu_features
> -# define __get_cpu_features() __x86_get_cpu_features (0)
> +#undef cpu_features
> +#undef __x86_get_cpu_features
> +#define __get_cpu_features() __x86_get_cpu_features (0)
>
> enum
> {
> @@ -48,79 +44,79 @@ enum
> };
>
> /* Only used directly in cpu-features.c. */
> -# define CPU_FEATURE_SET(ptr, name) \
> +#define CPU_FEATURE_SET(ptr, name) \
> ptr->features[index_cpu_##name].usable.reg_##name |= bit_cpu_##name;
> -# define CPU_FEATURE_UNSET(ptr, name) \
> +#define CPU_FEATURE_UNSET(ptr, name) \
> ptr->features[index_cpu_##name].usable.reg_##name &= ~bit_cpu_##name;
> -# define CPU_FEATURE_SET_USABLE(ptr, name) \
> +#define CPU_FEATURE_SET_USABLE(ptr, name) \
> ptr->features[index_cpu_##name].usable.reg_##name \
> |= ptr->features[index_cpu_##name].cpuid.reg_##name & bit_cpu_##name;
> -# define CPU_FEATURE_PREFERRED_P(ptr, name) \
> +#define CPU_FEATURE_PREFERRED_P(ptr, name) \
> ((ptr->preferred[index_arch_##name] & bit_arch_##name) != 0)
>
> /* HAS_CPU_FEATURE evaluates to true if CPU supports the feature. */
> -# undef HAS_CPU_FEATURE
> -# define HAS_CPU_FEATURE(name) \
> +#undef HAS_CPU_FEATURE
> +#define HAS_CPU_FEATURE(name) \
> CPU_FEATURE_CPU_P (__x86_get_cpu_features (0), name)
> /* CPU_FEATURE_USABLE evaluates to true if the feature is usable. */
> -# undef CPU_FEATURE_USABLE
> -# define CPU_FEATURE_USABLE(name) \
> +#undef CPU_FEATURE_USABLE
> +#define CPU_FEATURE_USABLE(name) \
> CPU_FEATURE_USABLE_P (__x86_get_cpu_features (0), name)
> /* CPU_FEATURE_PREFER evaluates to true if we prefer the feature at
> runtime. */
> -# define CPU_FEATURE_PREFERRED(name) \
> +#define CPU_FEATURE_PREFERRED(name) \
> CPU_FEATURE_PREFERRED_P(__get_cpu_features (), name)
>
> -# define CPU_FEATURES_CPU_P(ptr, name) \
> +#define CPU_FEATURES_CPU_P(ptr, name) \
> CPU_FEATURE_CPU_P (ptr, name)
> -# define CPU_FEATURES_ARCH_P(ptr, name) \
> +#define CPU_FEATURES_ARCH_P(ptr, name) \
> CPU_FEATURE_PREFERRED_P (ptr, name)
> -# define HAS_ARCH_FEATURE(name) \
> +#define HAS_ARCH_FEATURE(name) \
> CPU_FEATURE_PREFERRED (name)
>
> /* PREFERRED_FEATURE_INDEX_1. */
> -# define bit_arch_I586 (1u << 0)
> -# define bit_arch_I686 (1u << 1)
> -# define bit_arch_Fast_Rep_String (1u << 2)
> -# define bit_arch_Fast_Copy_Backward (1u << 3)
> -# define bit_arch_Fast_Unaligned_Load (1u << 4)
> -# define bit_arch_Fast_Unaligned_Copy (1u << 5)
> -# define bit_arch_Slow_BSF (1u << 6)
> -# define bit_arch_Slow_SSE4_2 (1u << 7)
> -# define bit_arch_AVX_Fast_Unaligned_Load (1u << 8)
> -# define bit_arch_Prefer_MAP_32BIT_EXEC (1u << 9)
> -# define bit_arch_Prefer_PMINUB_for_stringop (1u << 10)
> -# define bit_arch_Prefer_No_VZEROUPPER (1u << 11)
> -# define bit_arch_Prefer_ERMS (1u << 12)
> -# define bit_arch_Prefer_FSRM (1u << 13)
> -# define bit_arch_Prefer_No_AVX512 (1u << 14)
> -# define bit_arch_MathVec_Prefer_No_AVX512 (1u << 15)
> -
> -# define index_arch_Fast_Rep_String PREFERRED_FEATURE_INDEX_1
> -# define index_arch_Fast_Copy_Backward PREFERRED_FEATURE_INDEX_1
> -# define index_arch_Slow_BSF PREFERRED_FEATURE_INDEX_1
> -# define index_arch_Fast_Unaligned_Load PREFERRED_FEATURE_INDEX_1
> -# define index_arch_Prefer_PMINUB_for_stringop PREFERRED_FEATURE_INDEX_1
> -# define index_arch_Fast_Unaligned_Copy PREFERRED_FEATURE_INDEX_1
> -# define index_arch_I586 PREFERRED_FEATURE_INDEX_1
> -# define index_arch_I686 PREFERRED_FEATURE_INDEX_1
> -# define index_arch_Slow_SSE4_2 PREFERRED_FEATURE_INDEX_1
> -# define index_arch_AVX_Fast_Unaligned_Load PREFERRED_FEATURE_INDEX_1
> -# define index_arch_Prefer_MAP_32BIT_EXEC PREFERRED_FEATURE_INDEX_1
> -# define index_arch_Prefer_No_VZEROUPPER PREFERRED_FEATURE_INDEX_1
> -# define index_arch_Prefer_ERMS PREFERRED_FEATURE_INDEX_1
> -# define index_arch_Prefer_No_AVX512 PREFERRED_FEATURE_INDEX_1
> -# define index_arch_MathVec_Prefer_No_AVX512 PREFERRED_FEATURE_INDEX_1
> -# define index_arch_Prefer_FSRM PREFERRED_FEATURE_INDEX_1
> +#define bit_arch_I586 (1u << 0)
> +#define bit_arch_I686 (1u << 1)
> +#define bit_arch_Fast_Rep_String (1u << 2)
> +#define bit_arch_Fast_Copy_Backward (1u << 3)
> +#define bit_arch_Fast_Unaligned_Load (1u << 4)
> +#define bit_arch_Fast_Unaligned_Copy (1u << 5)
> +#define bit_arch_Slow_BSF (1u << 6)
> +#define bit_arch_Slow_SSE4_2 (1u << 7)
> +#define bit_arch_AVX_Fast_Unaligned_Load (1u << 8)
> +#define bit_arch_Prefer_MAP_32BIT_EXEC (1u << 9)
> +#define bit_arch_Prefer_PMINUB_for_stringop (1u << 10)
> +#define bit_arch_Prefer_No_VZEROUPPER (1u << 11)
> +#define bit_arch_Prefer_ERMS (1u << 12)
> +#define bit_arch_Prefer_FSRM (1u << 13)
> +#define bit_arch_Prefer_No_AVX512 (1u << 14)
> +#define bit_arch_MathVec_Prefer_No_AVX512 (1u << 15)
> +
> +#define index_arch_Fast_Rep_String PREFERRED_FEATURE_INDEX_1
> +#define index_arch_Fast_Copy_Backward PREFERRED_FEATURE_INDEX_1
> +#define index_arch_Slow_BSF PREFERRED_FEATURE_INDEX_1
> +#define index_arch_Fast_Unaligned_Load PREFERRED_FEATURE_INDEX_1
> +#define index_arch_Prefer_PMINUB_for_stringop PREFERRED_FEATURE_INDEX_1
> +#define index_arch_Fast_Unaligned_Copy PREFERRED_FEATURE_INDEX_1
> +#define index_arch_I586 PREFERRED_FEATURE_INDEX_1
> +#define index_arch_I686 PREFERRED_FEATURE_INDEX_1
> +#define index_arch_Slow_SSE4_2 PREFERRED_FEATURE_INDEX_1
> +#define index_arch_AVX_Fast_Unaligned_Load PREFERRED_FEATURE_INDEX_1
> +#define index_arch_Prefer_MAP_32BIT_EXEC PREFERRED_FEATURE_INDEX_1
> +#define index_arch_Prefer_No_VZEROUPPER PREFERRED_FEATURE_INDEX_1
> +#define index_arch_Prefer_ERMS PREFERRED_FEATURE_INDEX_1
> +#define index_arch_Prefer_No_AVX512 PREFERRED_FEATURE_INDEX_1
> +#define index_arch_MathVec_Prefer_No_AVX512 PREFERRED_FEATURE_INDEX_1
> +#define index_arch_Prefer_FSRM PREFERRED_FEATURE_INDEX_1
>
> /* XCR0 Feature flags. */
> -# define bit_XMM_state (1u << 1)
> -# define bit_YMM_state (1u << 2)
> -# define bit_Opmask_state (1u << 5)
> -# define bit_ZMM0_15_state (1u << 6)
> -# define bit_ZMM16_31_state (1u << 7)
> -# define bit_XTILECFG_state (1u << 17)
> -# define bit_XTILEDATA_state (1u << 18)
> +#define bit_XMM_state (1u << 1)
> +#define bit_YMM_state (1u << 2)
> +#define bit_Opmask_state (1u << 5)
> +#define bit_ZMM0_15_state (1u << 6)
> +#define bit_ZMM16_31_state (1u << 7)
> +#define bit_XTILECFG_state (1u << 17)
> +#define bit_XTILEDATA_state (1u << 18)
>
> struct cpu_features
> {
> @@ -153,30 +149,28 @@ struct cpu_features
> unsigned long int rep_stosb_threshold;
> };
>
> -# if defined (_LIBC) && !IS_IN (nonlib)
> +#if defined (_LIBC) && !IS_IN (nonlib)
> /* Unused for x86. */
> -# define INIT_ARCH()
> -# define __x86_get_cpu_features(max) (&GLRO(dl_x86_cpu_features))
> +# define INIT_ARCH()
> +# define __x86_get_cpu_features(max) (&GLRO(dl_x86_cpu_features))
> extern void _dl_x86_init_cpu_features (void) attribute_hidden;
> -# endif
> +#endif
>
> -# ifdef __x86_64__
> -# define HAS_CPUID 1
> -# elif (defined __i586__ || defined __pentium__ \
> +#ifdef __x86_64__
> +# define HAS_CPUID 1
> +#elif (defined __i586__ || defined __pentium__ \
> || defined __geode__ || defined __k6__)
> -# define HAS_CPUID 1
> -# define HAS_I586 1
> -# define HAS_I686 HAS_ARCH_FEATURE (I686)
> -# elif defined __i486__
> -# define HAS_CPUID 0
> -# define HAS_I586 HAS_ARCH_FEATURE (I586)
> -# define HAS_I686 HAS_ARCH_FEATURE (I686)
> -# else
> -# define HAS_CPUID 1
> -# define HAS_I586 1
> -# define HAS_I686 1
> +# define HAS_CPUID 1
> +# define HAS_I586 1
> +# define HAS_I686 HAS_ARCH_FEATURE (I686)
> +#elif defined __i486__
> +# define HAS_CPUID 0
> +# define HAS_I586 HAS_ARCH_FEATURE (I586)
> +# define HAS_I686 HAS_ARCH_FEATURE (I686)
> +#else
> +# define HAS_CPUID 1
> +# define HAS_I586 1
> +# define HAS_I686 1
> # endif
>
> -#endif /* !_ISOMAC */
> -
> #endif /* include/cpu-features.h */
> --
> 2.29.2
>
Tested on i686, x32 and x86-64. I am checking it in.
@@ -23,20 +23,16 @@
# error this should be impossible
#endif
-#ifndef _ISOMAC
/* Get most of the contents from the public header, but we define a
different `struct cpu_features' type for private use. */
-# define cpu_features cpu_features_public
-# define __x86_get_cpu_features __x86_get_cpu_features_public
-#endif
+#define cpu_features cpu_features_public
+#define __x86_get_cpu_features __x86_get_cpu_features_public
#include <sysdeps/x86/sys/platform/x86.h>
-#ifndef _ISOMAC
-
-# undef cpu_features
-# undef __x86_get_cpu_features
-# define __get_cpu_features() __x86_get_cpu_features (0)
+#undef cpu_features
+#undef __x86_get_cpu_features
+#define __get_cpu_features() __x86_get_cpu_features (0)
enum
{
@@ -48,79 +44,79 @@ enum
};
/* Only used directly in cpu-features.c. */
-# define CPU_FEATURE_SET(ptr, name) \
+#define CPU_FEATURE_SET(ptr, name) \
ptr->features[index_cpu_##name].usable.reg_##name |= bit_cpu_##name;
-# define CPU_FEATURE_UNSET(ptr, name) \
+#define CPU_FEATURE_UNSET(ptr, name) \
ptr->features[index_cpu_##name].usable.reg_##name &= ~bit_cpu_##name;
-# define CPU_FEATURE_SET_USABLE(ptr, name) \
+#define CPU_FEATURE_SET_USABLE(ptr, name) \
ptr->features[index_cpu_##name].usable.reg_##name \
|= ptr->features[index_cpu_##name].cpuid.reg_##name & bit_cpu_##name;
-# define CPU_FEATURE_PREFERRED_P(ptr, name) \
+#define CPU_FEATURE_PREFERRED_P(ptr, name) \
((ptr->preferred[index_arch_##name] & bit_arch_##name) != 0)
/* HAS_CPU_FEATURE evaluates to true if CPU supports the feature. */
-# undef HAS_CPU_FEATURE
-# define HAS_CPU_FEATURE(name) \
+#undef HAS_CPU_FEATURE
+#define HAS_CPU_FEATURE(name) \
CPU_FEATURE_CPU_P (__x86_get_cpu_features (0), name)
/* CPU_FEATURE_USABLE evaluates to true if the feature is usable. */
-# undef CPU_FEATURE_USABLE
-# define CPU_FEATURE_USABLE(name) \
+#undef CPU_FEATURE_USABLE
+#define CPU_FEATURE_USABLE(name) \
CPU_FEATURE_USABLE_P (__x86_get_cpu_features (0), name)
/* CPU_FEATURE_PREFER evaluates to true if we prefer the feature at
runtime. */
-# define CPU_FEATURE_PREFERRED(name) \
+#define CPU_FEATURE_PREFERRED(name) \
CPU_FEATURE_PREFERRED_P(__get_cpu_features (), name)
-# define CPU_FEATURES_CPU_P(ptr, name) \
+#define CPU_FEATURES_CPU_P(ptr, name) \
CPU_FEATURE_CPU_P (ptr, name)
-# define CPU_FEATURES_ARCH_P(ptr, name) \
+#define CPU_FEATURES_ARCH_P(ptr, name) \
CPU_FEATURE_PREFERRED_P (ptr, name)
-# define HAS_ARCH_FEATURE(name) \
+#define HAS_ARCH_FEATURE(name) \
CPU_FEATURE_PREFERRED (name)
/* PREFERRED_FEATURE_INDEX_1. */
-# define bit_arch_I586 (1u << 0)
-# define bit_arch_I686 (1u << 1)
-# define bit_arch_Fast_Rep_String (1u << 2)
-# define bit_arch_Fast_Copy_Backward (1u << 3)
-# define bit_arch_Fast_Unaligned_Load (1u << 4)
-# define bit_arch_Fast_Unaligned_Copy (1u << 5)
-# define bit_arch_Slow_BSF (1u << 6)
-# define bit_arch_Slow_SSE4_2 (1u << 7)
-# define bit_arch_AVX_Fast_Unaligned_Load (1u << 8)
-# define bit_arch_Prefer_MAP_32BIT_EXEC (1u << 9)
-# define bit_arch_Prefer_PMINUB_for_stringop (1u << 10)
-# define bit_arch_Prefer_No_VZEROUPPER (1u << 11)
-# define bit_arch_Prefer_ERMS (1u << 12)
-# define bit_arch_Prefer_FSRM (1u << 13)
-# define bit_arch_Prefer_No_AVX512 (1u << 14)
-# define bit_arch_MathVec_Prefer_No_AVX512 (1u << 15)
-
-# define index_arch_Fast_Rep_String PREFERRED_FEATURE_INDEX_1
-# define index_arch_Fast_Copy_Backward PREFERRED_FEATURE_INDEX_1
-# define index_arch_Slow_BSF PREFERRED_FEATURE_INDEX_1
-# define index_arch_Fast_Unaligned_Load PREFERRED_FEATURE_INDEX_1
-# define index_arch_Prefer_PMINUB_for_stringop PREFERRED_FEATURE_INDEX_1
-# define index_arch_Fast_Unaligned_Copy PREFERRED_FEATURE_INDEX_1
-# define index_arch_I586 PREFERRED_FEATURE_INDEX_1
-# define index_arch_I686 PREFERRED_FEATURE_INDEX_1
-# define index_arch_Slow_SSE4_2 PREFERRED_FEATURE_INDEX_1
-# define index_arch_AVX_Fast_Unaligned_Load PREFERRED_FEATURE_INDEX_1
-# define index_arch_Prefer_MAP_32BIT_EXEC PREFERRED_FEATURE_INDEX_1
-# define index_arch_Prefer_No_VZEROUPPER PREFERRED_FEATURE_INDEX_1
-# define index_arch_Prefer_ERMS PREFERRED_FEATURE_INDEX_1
-# define index_arch_Prefer_No_AVX512 PREFERRED_FEATURE_INDEX_1
-# define index_arch_MathVec_Prefer_No_AVX512 PREFERRED_FEATURE_INDEX_1
-# define index_arch_Prefer_FSRM PREFERRED_FEATURE_INDEX_1
+#define bit_arch_I586 (1u << 0)
+#define bit_arch_I686 (1u << 1)
+#define bit_arch_Fast_Rep_String (1u << 2)
+#define bit_arch_Fast_Copy_Backward (1u << 3)
+#define bit_arch_Fast_Unaligned_Load (1u << 4)
+#define bit_arch_Fast_Unaligned_Copy (1u << 5)
+#define bit_arch_Slow_BSF (1u << 6)
+#define bit_arch_Slow_SSE4_2 (1u << 7)
+#define bit_arch_AVX_Fast_Unaligned_Load (1u << 8)
+#define bit_arch_Prefer_MAP_32BIT_EXEC (1u << 9)
+#define bit_arch_Prefer_PMINUB_for_stringop (1u << 10)
+#define bit_arch_Prefer_No_VZEROUPPER (1u << 11)
+#define bit_arch_Prefer_ERMS (1u << 12)
+#define bit_arch_Prefer_FSRM (1u << 13)
+#define bit_arch_Prefer_No_AVX512 (1u << 14)
+#define bit_arch_MathVec_Prefer_No_AVX512 (1u << 15)
+
+#define index_arch_Fast_Rep_String PREFERRED_FEATURE_INDEX_1
+#define index_arch_Fast_Copy_Backward PREFERRED_FEATURE_INDEX_1
+#define index_arch_Slow_BSF PREFERRED_FEATURE_INDEX_1
+#define index_arch_Fast_Unaligned_Load PREFERRED_FEATURE_INDEX_1
+#define index_arch_Prefer_PMINUB_for_stringop PREFERRED_FEATURE_INDEX_1
+#define index_arch_Fast_Unaligned_Copy PREFERRED_FEATURE_INDEX_1
+#define index_arch_I586 PREFERRED_FEATURE_INDEX_1
+#define index_arch_I686 PREFERRED_FEATURE_INDEX_1
+#define index_arch_Slow_SSE4_2 PREFERRED_FEATURE_INDEX_1
+#define index_arch_AVX_Fast_Unaligned_Load PREFERRED_FEATURE_INDEX_1
+#define index_arch_Prefer_MAP_32BIT_EXEC PREFERRED_FEATURE_INDEX_1
+#define index_arch_Prefer_No_VZEROUPPER PREFERRED_FEATURE_INDEX_1
+#define index_arch_Prefer_ERMS PREFERRED_FEATURE_INDEX_1
+#define index_arch_Prefer_No_AVX512 PREFERRED_FEATURE_INDEX_1
+#define index_arch_MathVec_Prefer_No_AVX512 PREFERRED_FEATURE_INDEX_1
+#define index_arch_Prefer_FSRM PREFERRED_FEATURE_INDEX_1
/* XCR0 Feature flags. */
-# define bit_XMM_state (1u << 1)
-# define bit_YMM_state (1u << 2)
-# define bit_Opmask_state (1u << 5)
-# define bit_ZMM0_15_state (1u << 6)
-# define bit_ZMM16_31_state (1u << 7)
-# define bit_XTILECFG_state (1u << 17)
-# define bit_XTILEDATA_state (1u << 18)
+#define bit_XMM_state (1u << 1)
+#define bit_YMM_state (1u << 2)
+#define bit_Opmask_state (1u << 5)
+#define bit_ZMM0_15_state (1u << 6)
+#define bit_ZMM16_31_state (1u << 7)
+#define bit_XTILECFG_state (1u << 17)
+#define bit_XTILEDATA_state (1u << 18)
struct cpu_features
{
@@ -153,30 +149,28 @@ struct cpu_features
unsigned long int rep_stosb_threshold;
};
-# if defined (_LIBC) && !IS_IN (nonlib)
+#if defined (_LIBC) && !IS_IN (nonlib)
/* Unused for x86. */
-# define INIT_ARCH()
-# define __x86_get_cpu_features(max) (&GLRO(dl_x86_cpu_features))
+# define INIT_ARCH()
+# define __x86_get_cpu_features(max) (&GLRO(dl_x86_cpu_features))
extern void _dl_x86_init_cpu_features (void) attribute_hidden;
-# endif
+#endif
-# ifdef __x86_64__
-# define HAS_CPUID 1
-# elif (defined __i586__ || defined __pentium__ \
+#ifdef __x86_64__
+# define HAS_CPUID 1
+#elif (defined __i586__ || defined __pentium__ \
|| defined __geode__ || defined __k6__)
-# define HAS_CPUID 1
-# define HAS_I586 1
-# define HAS_I686 HAS_ARCH_FEATURE (I686)
-# elif defined __i486__
-# define HAS_CPUID 0
-# define HAS_I586 HAS_ARCH_FEATURE (I586)
-# define HAS_I686 HAS_ARCH_FEATURE (I686)
-# else
-# define HAS_CPUID 1
-# define HAS_I586 1
-# define HAS_I686 1
+# define HAS_CPUID 1
+# define HAS_I586 1
+# define HAS_I686 HAS_ARCH_FEATURE (I686)
+#elif defined __i486__
+# define HAS_CPUID 0
+# define HAS_I586 HAS_ARCH_FEATURE (I586)
+# define HAS_I686 HAS_ARCH_FEATURE (I686)
+#else
+# define HAS_CPUID 1
+# define HAS_I586 1
+# define HAS_I686 1
# endif
-#endif /* !_ISOMAC */
-
#endif /* include/cpu-features.h */