Be a little bit more specific about target for the memory barrier
authorEric Christopher <echristo@apple.com>
Thu, 5 Aug 2010 18:36:20 +0000 (18:36 +0000)
committerEric Christopher <echristo@apple.com>
Thu, 5 Aug 2010 18:36:20 +0000 (18:36 +0000)
instructions.

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

lib/Target/X86/X86Instr64bit.td
lib/Target/X86/X86InstrInfo.td

index 04b75f9f8bc50da56e5a9d9b86f2c56a87dd3dde..4e2710b2ee568531b3b0531810286ceb175cfd26 100644 (file)
@@ -1624,7 +1624,8 @@ let Defs = [ESP] in
 def Int_MemBarrierNoSSE64  : RI<0x09, MRM1r, (outs), (ins GR64:$zero),
                            "lock\n\t"
                            "or{q}\t{$zero, (%rsp)|(%rsp), $zero}",
-                           [(X86MemBarrierNoSSE GR64:$zero)]>, LOCK;
+                           [(X86MemBarrierNoSSE GR64:$zero)]>,
+                                                                                                        Requires<[In64BitMode]>, LOCK;
 
 let Defs = [RAX, EFLAGS], Uses = [RAX] in {
 def LCMPXCHG64 : RI<0xB1, MRMDestMem, (outs), (ins i64mem:$ptr, GR64:$swap),
index 5fc1bb7be1bc80539d3e6026784744fcd4043665..b0e6b651ce1b74b661670ae63c3a7eb14d4c6cc0 100644 (file)
@@ -3938,7 +3938,8 @@ let Defs = [ESP] in
 def Int_MemBarrierNoSSE  : I<0x09, MRM1r, (outs), (ins GR32:$zero),
                            "lock\n\t"
                            "or{l}\t{$zero, (%esp)|(%esp), $zero}",
-                           [(X86MemBarrierNoSSE GR32:$zero)]>, LOCK;
+                           [(X86MemBarrierNoSSE GR32:$zero)]>,
+                                                                                                        Requires<[In32BitMode]>, LOCK;
 }
 
 // Atomic swap. These are just normal xchg instructions. But since a memory