diff --git a/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp b/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp index 7caccb48..15c6aba6 100644 --- a/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp +++ b/Source/JavaScriptCore/assembler/MacroAssemblerX86Common.cpp @@ -1035,13 +1035,14 @@ void MacroAssemblerX86Common::collectCPUFeatures() static std::once_flag onceKey; std::call_once(onceKey, [] { { + __builtin_cpu_init (); CPUID cpuid = getCPUID(0x1); s_sse3CheckState = (cpuid[2] & (1 << 0)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear; s_supplementalSSE3CheckState = (cpuid[2] & (1 << 9)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear; s_sse4_1CheckState = (cpuid[2] & (1 << 19)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear; s_sse4_2CheckState = (cpuid[2] & (1 << 20)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear; s_popcntCheckState = (cpuid[2] & (1 << 23)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear; - s_avxCheckState = (cpuid[2] & (1 << 28)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear; + s_avxCheckState = (__builtin_cpu_supports ("avx")) ? CPUIDCheckState::Set : CPUIDCheckState::Clear; } #if OS(DARWIN) { @@ -1057,7 +1058,7 @@ void MacroAssemblerX86Common::collectCPUFeatures() { CPUID cpuid = getCPUID(0x7); s_bmi1CheckState = (cpuid[2] & (1 << 3)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear; - s_avx2CheckState = (cpuid[2] & (1 << 5)) ? CPUIDCheckState::Set : CPUIDCheckState::Clear; + s_avx2CheckState = (__builtin_cpu_supports ("avx2")) ? CPUIDCheckState::Set : CPUIDCheckState::Clear; } #endif {