Change XOP detection to use the correct CPUID bit instead of using the FMA4 bit.
authorCraig Topper <craig.topper@gmail.com>
Thu, 29 Dec 2011 19:25:56 +0000 (19:25 +0000)
committerCraig Topper <craig.topper@gmail.com>
Thu, 29 Dec 2011 19:25:56 +0000 (19:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147348 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86Subtarget.cpp

index 6e092c755a85c2af6d8365df3bb3de7e49928c27..4f0309bc569d57d3144a48ac6fff489ab358cacb 100644 (file)
@@ -266,15 +266,19 @@ void X86Subtarget::AutoDetectSubtargetFeatures() {
         HasLZCNT = true;
         ToggleFeature(X86::FeatureLZCNT);
       }
-      if (IsAMD && ((ECX >> 6) & 0x1)) {
-        HasSSE4A = true;
-        ToggleFeature(X86::FeatureSSE4A);
-      }
-      if (IsAMD && ((ECX >> 16) & 0x1)) {
-        HasFMA4 = true;
-        ToggleFeature(X86::FeatureFMA4);
-        HasXOP = true;
-        ToggleFeature(X86::FeatureXOP);
+      if (IsAMD) {
+        if ((ECX >> 6) & 0x1) {
+          HasSSE4A = true;
+          ToggleFeature(X86::FeatureSSE4A);
+        }
+        if ((ECX >> 11) & 0x1) {
+          HasXOP = true;
+          ToggleFeature(X86::FeatureXOP);
+        }
+        if ((ECX >> 16) & 0x1) {
+          HasFMA4 = true;
+          ToggleFeature(X86::FeatureFMA4);
+        }
       }
     }
   }