diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2022-06-27 12:52:58 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2022-06-27 12:52:58 -0700 |
commit | f56c497d2b640577f0a8a41f04d4f2c25a8800bd (patch) | |
tree | cadb265ead9a4e1f9f9784bfa18076b4553fe884 /sysdeps/x86/isa-level.h | |
parent | 4fc321dc58b29217e322526b49549930d0807179 (diff) | |
download | glibc-f56c497d2b640577f0a8a41f04d4f2c25a8800bd.tar.gz glibc-f56c497d2b640577f0a8a41f04d4f2c25a8800bd.tar.xz glibc-f56c497d2b640577f0a8a41f04d4f2c25a8800bd.zip |
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.
Diffstat (limited to 'sysdeps/x86/isa-level.h')
-rw-r--r-- | sysdeps/x86/isa-level.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/sysdeps/x86/isa-level.h b/sysdeps/x86/isa-level.h index 075e7c6ee1..c6156e7f7a 100644 --- a/sysdeps/x86/isa-level.h +++ b/sysdeps/x86/isa-level.h @@ -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 |