34 {
39#if defined(_MSC_VER) && (defined(_M_X64) || defined(_M_IX86))
42 {
48 }
53 }
54 }
55#elif defined(__i386__) && defined(__PIC__) && !defined(__clang__) && defined(__GNUC__)
56
57
58
59
62 "pushl %%ebx\n\t"
63 "cpuid\n\t"
64 "popl %%ebx\n\t"
66 : "a"(0)
67 : "ecx", "edx");
71 "pushl %%ebx\n\t"
72 "cpuid\n\t"
73 "popl %%ebx\n\t"
74 :
"=a"(f1a),
"=c"(
f1c),
"=d"(f1d)
75 : "a"(1));
76 }
79 "pushl %%ebx\n\t"
80 "cpuid\n\t"
81 "movl %%ebx, %%eax\n\t"
82 "popl %%ebx"
83 : "=a"(f7b), "=c"(f7c)
84 : "a"(7), "c"(0)
85 : "edx");
86 }
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");
93 }
97 : "=a"(f7a), "=b"(f7b), "=c"(f7c)
98 : "a"(7), "c"(0)
99 : "edx");
100 }
101#endif
102 {
108 return cpuid;
109 }
110}
PPC_QUAL void __cpuid(int CPUInfo[], const int InfoType)
__INTRIN_INLINE void __cpuidex(int CPUInfo[4], int InfoType, int ECXValue)
__asm__(".p2align 4, 0x90\n" ".seh_proc __seh2_global_filter_func\n" "__seh2_global_filter_func:\n" "\tsub %rbp, %rax\n" "\tpush %rbp\n" "\t.seh_pushreg %rbp\n" "\tsub $32, %rsp\n" "\t.seh_stackalloc 32\n" "\t.seh_endprologue\n" "\tsub %rax, %rdx\n" "\tmov %rdx, %rbp\n" "\tjmp *%r8\n" "__seh2_global_filter_func_exit:\n" "\t.p2align 4\n" "\tadd $32, %rsp\n" "\tpop %rbp\n" "\tret\n" "\t.seh_endproc")