| Index: source/cpu_id.cc
|
| diff --git a/source/cpu_id.cc b/source/cpu_id.cc
|
| index 27e2467b020a326be1f919d3d00067388183e896..4fb168d740e38a9aac01b3bffcb5058924314a9f 100644
|
| --- a/source/cpu_id.cc
|
| +++ b/source/cpu_id.cc
|
| @@ -229,19 +229,21 @@ int InitCpuFlags(void) {
|
| if (cpu_info0[0] >= 7) {
|
| CpuId(7, 0, cpu_info7);
|
| }
|
| - cpu_info = ((cpu_info1[3] & 0x04000000) ? kCpuHasSSE2 : 0) |
|
| + cpu_info = kCpuHasX86 |
|
| + ((cpu_info1[3] & 0x04000000) ? kCpuHasSSE2 : 0) |
|
| ((cpu_info1[2] & 0x00000200) ? kCpuHasSSSE3 : 0) |
|
| ((cpu_info1[2] & 0x00080000) ? kCpuHasSSE41 : 0) |
|
| ((cpu_info1[2] & 0x00100000) ? kCpuHasSSE42 : 0) |
|
| - ((cpu_info7[1] & 0x00000200) ? kCpuHasERMS : 0) |
|
| - ((cpu_info1[2] & 0x00001000) ? kCpuHasFMA3 : 0) |
|
| - kCpuHasX86;
|
| + ((cpu_info7[1] & 0x00000200) ? kCpuHasERMS : 0);
|
|
|
| #ifdef HAS_XGETBV
|
| // AVX requires CPU has AVX, XSAVE and OSXSave for xgetbv
|
| if (((cpu_info1[2] & 0x1c000000) == 0x1c000000) && // AVX and OSXSave
|
| ((GetXCR0() & 6) == 6)) { // Test OS saves YMM registers
|
| - cpu_info |= ((cpu_info7[1] & 0x00000020) ? kCpuHasAVX2 : 0) | kCpuHasAVX;
|
| + cpu_info |= kCpuHasAVX |
|
| + ((cpu_info7[1] & 0x00000020) ? kCpuHasAVX2 : 0) |
|
| + ((cpu_info1[2] & 0x00001000) ? kCpuHasFMA3 : 0) |
|
| + ((cpu_info1[2] & 0x20000000) ? kCpuHasF16C : 0);
|
|
|
| // Detect AVX512bw
|
| if ((GetXCR0() & 0xe0) == 0xe0) {
|
| @@ -281,6 +283,10 @@ int InitCpuFlags(void) {
|
| if (TestEnv("LIBYUV_DISABLE_AVX3")) {
|
| cpu_info &= ~kCpuHasAVX3;
|
| }
|
| + if (TestEnv("LIBYUV_DISABLE_F16C")) {
|
| + cpu_info &= ~kCpuHasF16C;
|
| + }
|
| +
|
| #endif
|
| #if defined(__mips__) && defined(__linux__)
|
| #if defined(__mips_dspr2)
|
|
|