[X86] Make CMPXCHG16B feature imply CMPXCHG8B feature.
authorCraig Topper <craig.topper@intel.com>
Thu, 8 Aug 2019 18:11:17 +0000 (18:11 +0000)
committerCraig Topper <craig.topper@intel.com>
Thu, 8 Aug 2019 18:11:17 +0000 (18:11 +0000)
This fixes znver1 so that it properly enables CMPXHG8B. We can
probably remove explicit CMPXCHG8B from CPUs that also have
CMPXCHG16B, but keeping this simple to allow cherry pick to 9.0.

Fixes PR42935.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@368324 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86.td
test/CodeGen/X86/cmpxchg8b.ll

index e53c752873409c4622bac6fd6b6beef42f3df94a..d5f4a72cafcdf2c6d67902d868f8f8089c37766a 100644 (file)
@@ -95,7 +95,8 @@ def Feature3DNowA  : SubtargetFeature<"3dnowa", "X863DNowLevel", "ThreeDNowA",
 def Feature64Bit   : SubtargetFeature<"64bit", "HasX86_64", "true",
                                       "Support 64-bit instructions">;
 def FeatureCMPXCHG16B : SubtargetFeature<"cx16", "HasCmpxchg16b", "true",
-                                      "64-bit with cmpxchg16b">;
+                                      "64-bit with cmpxchg16b",
+                                      [FeatureCMPXCHG8B]>;
 def FeatureSlowSHLD : SubtargetFeature<"slow-shld", "IsSHLDSlow", "true",
                                        "SHLD instruction is slow">;
 def FeatureSlowPMULLD : SubtargetFeature<"slow-pmulld", "IsPMULLDSlow", "true",
index 8eb3dda6b6eba6560f8da81a62f483e920d0801d..caf40c541e2801d01fb74790c7e986d6fd329272 100644 (file)
@@ -2,6 +2,7 @@
 ; RUN: llc < %s -mtriple=i686-unknown- -mcpu=core2 | FileCheck %s --check-prefixes=CHECK,X86
 ; RUN: llc < %s -mtriple=x86_64-unknown- -mcpu=core2 | FileCheck %s --check-prefixes=CHECK,X64
 ; RUN: llc < %s -mtriple=i686-unknown- -mcpu=i486 | FileCheck %s --check-prefixes=I486
+; RUN: llc < %s -mtriple=i686-unknown- -mcpu=znver1 | FileCheck %s --check-prefixes=CHECK,X86
 
 ; Basic 64-bit cmpxchg
 define void @t1(i64* nocapture %p) nounwind ssp {