Recognize BookE's mbar instruction.
authorJoerg Sonnenberger <joerg@bec.de>
Tue, 29 Jul 2014 23:16:31 +0000 (23:16 +0000)
committerJoerg Sonnenberger <joerg@bec.de>
Tue, 29 Jul 2014 23:16:31 +0000 (23:16 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214244 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPCInstrFormats.td
lib/Target/PowerPC/PPCInstrInfo.td
test/MC/Disassembler/PowerPC/ppc64-encoding-bookII.txt
test/MC/PowerPC/ppc64-encoding-bookII.s

index c95aefafab07e7ceb1a2406b6483f4bd6654ee56..d40a9ab882a2b01ee8ccb04ce1a366ab67ffd37b 100644 (file)
@@ -468,6 +468,15 @@ class XForm_sr<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
   let Inst{21-30} = xo;
 }
 
+class XForm_mbar<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
+                InstrItinClass itin>
+         : I<opcode, OOL, IOL, asmstr, itin> {
+  bits<5> MO;
+
+  let Inst{6-10} = MO;
+  let Inst{21-30} = xo;
+}
+
 class XForm_srin<bits<6> opcode, bits<10> xo, dag OOL, dag IOL, string asmstr,
                 InstrItinClass itin>
          : I<opcode, OOL, IOL, asmstr, itin> {
index 5b8cb5cedec8c3eb3b3c7ae16b2d82a2647a6e4a..1839853049a2fb824612579ba9e6ce19e74c355d 100644 (file)
@@ -3046,6 +3046,9 @@ def EIEIO : XForm_24_eieio<31, 854, (outs), (ins),
 def WAIT : XForm_24_sync<31, 62, (outs), (ins i32imm:$L),
                          "wait $L", IIC_LdStLoad, []>;
 
+def MBAR : XForm_mbar<31, 854, (outs), (ins u5imm:$MO),
+                         "mbar $MO", IIC_LdStLoad>, Requires<[IsBookE]>;
+
 def MTSR: XForm_sr<31, 210, (outs), (ins gprc:$RS, u4imm:$SR),
             "mtsr $SR, $RS", IIC_SprMTSR>;
 
index 5e6033d4299a22ea02b85465954b3fac522a2d78..f0ef9024648b1d6c6c6854121aa8040d1329b3b5 100644 (file)
@@ -33,6 +33,9 @@
 # CHECK: wait 2                          
 0x7c 0x40 0x00 0x7c
 
+# CHECK: mbar 1
+0x7c 0x20 0x06 0xac
+
 # CHECK: dcbf 2, 3                       
 0x7c 0x02 0x18 0xac
 
index 99796ca610028e1fec12bb1e1b5c5918551532d5..9e109e1265c1a97f752ea8251d848ebaf746beb0 100644 (file)
@@ -53,6 +53,9 @@
 # CHECK-BE: wait 2                          # encoding: [0x7c,0x40,0x00,0x7c]
 # CHECK-LE: wait 2                          # encoding: [0x7c,0x00,0x40,0x7c]
             wait 2
+# CHECK-BE: mbar 1                          # encoding: [0x7c,0x20,0x06,0xac]
+# CHECK-LE: mbar 1                          # encoding: [0xac,0x06,0x20,0x7c]
+            mbar 1
 
 # Extended mnemonics