aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2011-09-15 19:46:13 +0000
committerJim Grosbach <grosbach@apple.com>2011-09-15 19:46:13 +0000
commit689b86ed2e1f1daf9201f0ef83ff3bc1d5167232 (patch)
treed5c16b01cf018464e4a5408597b77786072a6122
parent8f29e6969eb99410b9914bcb5ee2d9a125f07f88 (diff)
Thumb2 assembly parsing and encoding for REV16/REVSH.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139828 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/ARM/ARMInstrThumb2.td4
-rw-r--r--test/MC/ARM/basic-thumb2-instructions.s32
2 files changed, 35 insertions, 1 deletions
diff --git a/lib/Target/ARM/ARMInstrThumb2.td b/lib/Target/ARM/ARMInstrThumb2.td
index 9467f36f98..6043597761 100644
--- a/lib/Target/ARM/ARMInstrThumb2.td
+++ b/lib/Target/ARM/ARMInstrThumb2.td
@@ -3841,5 +3841,7 @@ def : t2InstAlias<"push${p} $regs", (t2STMDB_UPD SP, pred:$p, reglist:$regs)>;
def : t2InstAlias<"pop${p}.w $regs", (t2LDMIA_UPD SP, pred:$p, reglist:$regs)>;
def : t2InstAlias<"pop${p} $regs", (t2LDMIA_UPD SP, pred:$p, reglist:$regs)>;
-// Alias for REV without the ".w" optional width specifier.
+// Alias for REV/REV16/REVSH without the ".w" optional width specifier.
def : t2InstAlias<"rev${p} $Rd, $Rm", (t2REV rGPR:$Rd, rGPR:$Rm, pred:$p)>;
+def : t2InstAlias<"rev16${p} $Rd, $Rm", (t2REV16 rGPR:$Rd, rGPR:$Rm, pred:$p)>;
+def : t2InstAlias<"revsh${p} $Rd, $Rm", (t2REVSH rGPR:$Rd, rGPR:$Rm, pred:$p)>;
diff --git a/test/MC/ARM/basic-thumb2-instructions.s b/test/MC/ARM/basic-thumb2-instructions.s
index 9723407bbb..26be6f0e25 100644
--- a/test/MC/ARM/basic-thumb2-instructions.s
+++ b/test/MC/ARM/basic-thumb2-instructions.s
@@ -1442,6 +1442,38 @@ _func:
@------------------------------------------------------------------------------
+@ REV16
+@------------------------------------------------------------------------------
+ rev16.w r1, r2
+ rev16 r2, r8
+ itt ne
+ rev16ne r1, r2
+ rev16ne r1, r8
+
+ rev16.w r1, r2 @ encoding: [0x92,0xfa,0x92,0xf1]
+ rev16.w r2, r8 @ encoding: [0x98,0xfa,0x98,0xf2]
+ itt ne @ encoding: [0x1c,0xbf]
+ rev16ne r1, r2 @ encoding: [0x51,0xba]
+ rev16ne.w r1, r8 @ encoding: [0x98,0xfa,0x98,0xf1]
+
+
+@------------------------------------------------------------------------------
+@ REVSH
+@------------------------------------------------------------------------------
+ revsh.w r1, r2
+ revsh r2, r8
+ itt ne
+ revshne r1, r2
+ revshne r1, r8
+
+ revsh.w r1, r2 @ encoding: [0x92,0xfa,0xb2,0xf1]
+ revsh.w r2, r8 @ encoding: [0x98,0xfa,0xb8,0xf2]
+ itt ne @ encoding: [0x1c,0xbf]
+ revshne r1, r2 @ encoding: [0xd1,0xba]
+ revshne.w r1, r8 @ encoding: [0x98,0xfa,0xb8,0xf1]
+
+
+@------------------------------------------------------------------------------
@ SUB (register)
@------------------------------------------------------------------------------
sub.w r5, r2, r12, rrx