xref: /aosp_15_r20/external/libopus/cmake/cpu_info_by_asm.c (revision a58d3d2adb790c104798cd88c8a3aff4fa8b82cc)
1 #include <stdio.h>
main()2 int main() {
3     unsigned int CPUInfo0;
4     unsigned int CPUInfo1;
5     unsigned int CPUInfo2;
6     unsigned int CPUInfo3;
7     unsigned int InfoType;
8 #if defined(__i386__) && defined(__PIC__)
9 /* %ebx is PIC register in 32-bit, so mustn't clobber it. */
10     __asm__ __volatile__ (
11         "xchg %%ebx, %1\n"
12         "cpuid\n"
13         "xchg %%ebx, %1\n":
14         "=a" (CPUInfo0),
15         "=r" (CPUInfo1),
16         "=c" (CPUInfo2),
17         "=d" (CPUInfo3) :
18         "0" (InfoType), "2" (0)
19     );
20 #else
21     __asm__ __volatile__ (
22         "cpuid":
23         "=a" (CPUInfo0),
24         "=b" (CPUInfo1),
25         "=c" (CPUInfo2),
26         "=d" (CPUInfo3) :
27         "0" (InfoType), "2" (0)
28     );
29 #endif
30     return 0;
31 }
32