diff --git a/compiler-rt/lib/builtins/cpu_model/x86.c b/compiler-rt/lib/builtins/cpu_model/x86.c index 8b352cfe568d0..2d2ded1ea504d 100644 --- a/compiler-rt/lib/builtins/cpu_model/x86.c +++ b/compiler-rt/lib/builtins/cpu_model/x86.c @@ -1090,8 +1090,8 @@ static void getAvailableFeatures(unsigned ECX, unsigned EDX, unsigned MaxLeaf, if (HasLeaf1E && (EAX & 0x100)) setFeature(FEATURE_AMX_MOVRS); - bool HasLeaf24 = - MaxLevel >= 0x24 && !getX86CpuIDAndInfo(0x24, &EAX, &EBX, &ECX, &EDX); + bool HasLeaf24 = MaxLevel >= 0x24 && + !getX86CpuIDAndInfoEx(0x24, 0x0, &EAX, &EBX, &ECX, &EDX); if (HasLeaf7Subleaf1 && ((EDX >> 19) & 1) && HasLeaf24) { int AVX10Ver = EBX & 0xff; if (AVX10Ver >= 1) diff --git a/llvm/lib/TargetParser/Host.cpp b/llvm/lib/TargetParser/Host.cpp index cb793d60a286f..82a8e3afe5ec0 100644 --- a/llvm/lib/TargetParser/Host.cpp +++ b/llvm/lib/TargetParser/Host.cpp @@ -2192,10 +2192,10 @@ StringMap sys::getHostCPUFeatures() { Features["amx-avx512"] = HasLeaf1E && ((EAX >> 7) & 1) && HasAMXSave; Features["amx-movrs"] = HasLeaf1E && ((EAX >> 8) & 1) && HasAMXSave; - bool HasLeaf24 = - MaxLevel >= 0x24 && !getX86CpuIDAndInfo(0x24, &EAX, &EBX, &ECX, &EDX); + bool HasLeaf24 = MaxLevel >= 0x24 && + !getX86CpuIDAndInfoEx(0x24, 0x0, &EAX, &EBX, &ECX, &EDX); - int AVX10Ver = HasLeaf24 && (EBX & 0xff); + int AVX10Ver = HasLeaf24 ? (EBX & 0xff) : 0; Features["avx10.1"] = HasAVX10 && AVX10Ver >= 1; Features["avx10.2"] = HasAVX10 && AVX10Ver >= 2;