[PowerPC] Add "wait" instruction
authorUlrich Weigand <ulrich.weigand@de.ibm.com>
Mon, 1 Jul 2013 17:21:23 +0000 (17:21 +0000)
committerUlrich Weigand <ulrich.weigand@de.ibm.com>
Mon, 1 Jul 2013 17:21:23 +0000 (17:21 +0000)
This adds the "wait" instruction and its extended mnemonics.

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

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

index fc925e11e81f9d9f36af1c638713b43739448ae9..5c2c59f21beda91040e3ccc39a74ee6a559a67c4 100644 (file)
@@ -2260,6 +2260,9 @@ def ICBI : XForm_1a<31, 982, (outs), (ins memrr:$src),
 def EIEIO : XForm_24_eieio<31, 854, (outs), (ins),
                            "eieio", LdStLoad, []>;
 
+def WAIT : XForm_24_sync<31, 62, (outs), (ins i32imm:$L),
+                         "wait $L", LdStLoad, []>;
+
 //===----------------------------------------------------------------------===//
 // PowerPC Assembler Instruction Aliases
 //
@@ -2286,6 +2289,10 @@ def : InstAlias<"sync", (SYNC 0)>;
 def : InstAlias<"lwsync", (SYNC 1)>;
 def : InstAlias<"ptesync", (SYNC 2)>;
 
+def : InstAlias<"wait", (WAIT 0)>;
+def : InstAlias<"waitrsv", (WAIT 1)>;
+def : InstAlias<"waitimpl", (WAIT 2)>;
+
 def : InstAlias<"xnop", (XORI R0, R0, 0)>;
 
 def : InstAlias<"mr $rA, $rB", (OR8 g8rc:$rA, g8rc:$rB, g8rc:$rB)>;
index d066003cfb2cb74bc7f578483b0155c61e5f64c2..b6c2e621d42c7ee1f71ee81121ca49a06cdb2575 100644 (file)
@@ -39,7 +39,8 @@
          sync 2
 # CHECK: eieio                           # encoding: [0x7c,0x00,0x06,0xac]
          eieio
-# FIXME: wait 2
+# CHECK: wait 2                          # encoding: [0x7c,0x40,0x00,0x7c]
+         wait 2
 
 # Extended mnemonics
 
 # CHECK: sync 2                          # encoding: [0x7c,0x40,0x04,0xac]
          ptesync
 
-# FIXME: wait
-# FIXME: waitrsv
-# FIXME: waitimpl
+# CHECK: wait 0                          # encoding: [0x7c,0x00,0x00,0x7c]
+         wait
+# CHECK: wait 1                          # encoding: [0x7c,0x20,0x00,0x7c]
+         waitrsv
+# CHECK: wait 2                          # encoding: [0x7c,0x40,0x00,0x7c]
+         waitimpl