mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-24 10:22:41 +08:00
Clean up x86 multiarch HAS_FOO macros.
This commit is contained in:
parent
930799d555
commit
9d6982d5d2
@ -1,3 +1,12 @@
|
||||
2009-10-06 Roland McGrath <roland@redhat.com>
|
||||
|
||||
* sysdeps/x86_64/multiarch/init-arch.h
|
||||
[NOT_IN_libc] (__get_cpu_features): Define it as a macro.
|
||||
(HAS_CPU_FEATURE): New macro.
|
||||
(HAS_SSE2, HAS_POPCOUNT, HAS_SSE4_2, HAS_FMA): Use it.
|
||||
* sysdeps/x86_64/multiarch/init-arch.c
|
||||
(__get_cpu_features): #undef it before definition.
|
||||
|
||||
2009-10-05 Andreas Schwab <schwab@redhat.com>
|
||||
|
||||
* locale/C-time.c: Revert week-1stday back to 19971130 and set
|
||||
|
@ -77,6 +77,7 @@ __init_cpu_features (void)
|
||||
__cpu_features.kind = arch_kind_other;
|
||||
}
|
||||
|
||||
#undef __get_cpu_features
|
||||
|
||||
const struct cpu_features *
|
||||
__get_cpu_features (void)
|
||||
|
@ -58,30 +58,16 @@ extern void __init_cpu_features (void) attribute_hidden;
|
||||
extern const struct cpu_features *__get_cpu_features (void)
|
||||
__attribute__ ((const));
|
||||
|
||||
#ifndef NOT_IN_libc
|
||||
# define __get_cpu_features() (&__cpu_features)
|
||||
#endif
|
||||
|
||||
#define HAS_CPU_FEATURE(idx, reg, bit) \
|
||||
((__get_cpu_features ()->cpuid[idx].reg & (1 << (bit))) != 0)
|
||||
|
||||
/* Following are the feature tests used throughout libc. */
|
||||
|
||||
#ifndef NOT_IN_libc
|
||||
# define HAS_SSE2 \
|
||||
((__cpu_features.cpuid[COMMON_CPUID_INDEX_1].edx & (1 << 26)) != 0)
|
||||
|
||||
# define HAS_POPCOUNT \
|
||||
((__cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx & (1 << 23)) != 0)
|
||||
|
||||
# define HAS_SSE4_2 \
|
||||
((__cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx & (1 << 20)) != 0)
|
||||
|
||||
# define HAS_FMA \
|
||||
((__cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx & (1 << 12)) != 0)
|
||||
#else
|
||||
# define HAS_SSE2 \
|
||||
((__get_cpu_features ()->cpuid[COMMON_CPUID_INDEX_1].edx & (1 << 26)) != 0)
|
||||
|
||||
# define HAS_POPCOUNT \
|
||||
((__get_cpu_features ()->cpuid[COMMON_CPUID_INDEX_1].ecx & (1 << 23)) != 0)
|
||||
|
||||
# define HAS_SSE4_2 \
|
||||
((__get_cpu_features ()->cpuid[COMMON_CPUID_INDEX_1].ecx & (1 << 20)) != 0)
|
||||
|
||||
# define HAS_FMA \
|
||||
((__get_cpu_features ()->cpuid[COMMON_CPUID_INDEX_1].ecx & (1 << 12)) != 0)
|
||||
#endif
|
||||
#define HAS_SSE2 HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, edx, 26)
|
||||
#define HAS_POPCOUNT HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, 23)
|
||||
#define HAS_SSE4_2 HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, 20)
|
||||
#define HAS_FMA HAS_CPU_FEATURE (COMMON_CPUID_INDEX_1, ecx, 12)
|
||||
|
Loading…
Reference in New Issue
Block a user