11 #ifndef ZSTD_COMMON_CPU_H 12 #define ZSTD_COMMON_CPU_H 39 #if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_IX86)) 55 #elif defined(__i386__) && defined(__PIC__) && !defined(__clang__) && defined(__GNUC__) 74 :
"=a"(f1a),
"=c"(
f1c),
"=d"(f1d)
81 "movl %%ebx, %%eax\n\t" 83 :
"=a"(f7b),
"=c"(f7c)
87 #elif defined(__x86_64__) || defined(_M_X64) || defined(__i386__) 89 __asm__(
"cpuid" :
"=a"(
n) :
"a"(0) :
"ebx",
"ecx",
"edx");
92 __asm__(
"cpuid" :
"=a"(f1a),
"=c"(
f1c),
"=d"(f1d) :
"a"(1) :
"ebx");
97 :
"=a"(f7a),
"=b"(f7b),
"=c"(f7c)
112 #define X(name, r, bit) \ 113 MEM_STATIC int ZSTD_cpuid_##name(ZSTD_cpuid_t const cpuid) { \ 114 return ((cpuid.r) & (1U << bit)) != 0; \ 118 #define C(name, bit) X(name, f1c, bit) 149 #define D(name, bit) X(name, f1d, bit) 182 #define B(name, bit) X(name, f7b, bit) 208 #define C(name, bit) X(name, f7c, bit)
__asm__("\n\t \
NewInt3Handler:\n\t \
pushl $" STR(REASON_INT3) "\n\t \
// call debugger loop\n\t \
jmp NewInt31Handler\n\t \
")
MEM_STATIC ZSTD_cpuid_t ZSTD_cpuid(void)
double __cdecl fma(double, double, double)
__INTRIN_INLINE void __cpuidex(int CPUInfo[4], int InfoType, int ECXValue)
PPC_QUAL void __cpuid(int CPUInfo[], const int InfoType)