x86: Move CPU_FEATURE{S}_{USABLE|ARCH}_P to isa-level.h

Move X86_ISA_CPU_FEATURE_USABLE_P and X86_ISA_CPU_FEATURES_ARCH_P to
where MINIMUM_X86_ISA_LEVEL and XXX_X86_ISA_LEVEL are defined.
This commit is contained in:
H.J. Lu 2022-06-27 12:52:58 -07:00
parent 4fc321dc58
commit f56c497d2b
2 changed files with 24 additions and 27 deletions

View File

@ -56,31 +56,4 @@
# define X86_IFUNC_IMPL_ADD_V1(...)
#endif
/* Both X86_ISA_CPU_FEATURE_USABLE_P and X86_ISA_CPU_FEATURES_ARCH_P
macros are wrappers for the the respective
CPU_FEATURE{S}_{USABLE|ARCH}_P runtime checks. They differ in two
ways.
1. The USABLE_P version is evaluated to true when the feature
is enabled.
2. The ARCH_P version has a third argument `not`. The `not`
argument can either be '!' or empty. If the feature is
enabled above an ISA level, the third argument should be empty
and the expression is evaluated to true when the feature is
enabled. If the feature is disabled above an ISA level, the
third argument should be `!` and the expression is evaluated
to true when the feature is disabled.
*/
#define X86_ISA_CPU_FEATURE_USABLE_P(ptr, name) \
(((name##_X86_ISA_LEVEL) <= MINIMUM_X86_ISA_LEVEL) \
|| CPU_FEATURE_USABLE_P (ptr, name))
#define X86_ISA_CPU_FEATURES_ARCH_P(ptr, name, not) \
(((name##_X86_ISA_LEVEL) <= MINIMUM_X86_ISA_LEVEL) \
|| not CPU_FEATURES_ARCH_P (ptr, name))
#endif

View File

@ -87,6 +87,30 @@
when ISA level < 3. */
#define Prefer_No_VZEROUPPER_X86_ISA_LEVEL 3
/* Both X86_ISA_CPU_FEATURE_USABLE_P and X86_ISA_CPU_FEATURES_ARCH_P
macros are wrappers for the respective CPU_FEATURE{S}_{USABLE|ARCH}_P
runtime checks. They differ in two ways.
1. The USABLE_P version is evaluated to true when the feature
is enabled.
2. The ARCH_P version has a third argument `not`. The `not`
argument can either be `!` or empty. If the feature is
enabled above an ISA level, the third argument should be empty
and the expression is evaluated to true when the feature is
enabled. If the feature is disabled above an ISA level, the
third argument should be `!` and the expression is evaluated
to true when the feature is disabled.
*/
#define X86_ISA_CPU_FEATURE_USABLE_P(ptr, name) \
(((name##_X86_ISA_LEVEL) <= MINIMUM_X86_ISA_LEVEL) \
|| CPU_FEATURE_USABLE_P (ptr, name))
#define X86_ISA_CPU_FEATURES_ARCH_P(ptr, name, not) \
(((name##_X86_ISA_LEVEL) <= MINIMUM_X86_ISA_LEVEL) \
|| not CPU_FEATURES_ARCH_P (ptr, name))
#define ISA_SHOULD_BUILD(isa_build_level) \
(MINIMUM_X86_ISA_LEVEL <= (isa_build_level) && IS_IN (libc)) \
|| defined ISA_DEFAULT_IMPL