Add Thumb encodings for REV instructions.
authorBill Wendling <isanbard@gmail.com>
Mon, 29 Nov 2010 00:42:50 +0000 (00:42 +0000)
committerBill Wendling <isanbard@gmail.com>
Mon, 29 Nov 2010 00:42:50 +0000 (00:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120277 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMInstrThumb.td
test/MC/ARM/thumb.s

index acb85e76f08adcc43cc675c290db47c6e3fd3885..b7efe1bd5c0921d60ffceb80c10c09f5ee3be78a 100644 (file)
@@ -1028,30 +1028,48 @@ def tORR : T1sIt<(outs tGPR:$dst), (ins tGPR:$lhs, tGPR:$rhs),  IIC_iBITr,
 }
 
 // Swaps
-def tREV : T1pI<(outs tGPR:$dst), (ins tGPR:$src), IIC_iUNAr,
-                "rev", "\t$dst, $src",
-                [(set tGPR:$dst, (bswap tGPR:$src))]>,
+def tREV : T1pI<(outs tGPR:$Rd), (ins tGPR:$Rm), IIC_iUNAr,
+                "rev", "\t$Rd, $Rm",
+                [(set tGPR:$Rd, (bswap tGPR:$Rm))]>,
                 Requires<[IsThumb, IsThumb1Only, HasV6]>,
-           T1Misc<{1,0,1,0,0,0,?}>;
-
-def tREV16 : T1pI<(outs tGPR:$dst), (ins tGPR:$src), IIC_iUNAr,
-                  "rev16", "\t$dst, $src",
-             [(set tGPR:$dst,
-                   (or (and (srl tGPR:$src, (i32 8)), 0xFF),
-                       (or (and (shl tGPR:$src, (i32 8)), 0xFF00),
-                           (or (and (srl tGPR:$src, (i32 8)), 0xFF0000),
-                               (and (shl tGPR:$src, (i32 8)), 0xFF000000)))))]>,
+           T1Misc<{1,0,1,0,0,0,?}> {
+  // A8.6.134
+  bits<3> Rm;
+  bits<3> Rd;
+  let Inst{5-3} = Rm;
+  let Inst{2-0} = Rd;
+}
+
+def tREV16 : T1pI<(outs tGPR:$Rd), (ins tGPR:$Rm), IIC_iUNAr,
+                  "rev16", "\t$Rd, $Rm",
+             [(set tGPR:$Rd,
+                   (or (and (srl tGPR:$Rm, (i32 8)), 0xFF),
+                       (or (and (shl tGPR:$Rm, (i32 8)), 0xFF00),
+                           (or (and (srl tGPR:$Rm, (i32 8)), 0xFF0000),
+                               (and (shl tGPR:$Rm, (i32 8)), 0xFF000000)))))]>,
                 Requires<[IsThumb, IsThumb1Only, HasV6]>,
-             T1Misc<{1,0,1,0,0,1,?}>;
+             T1Misc<{1,0,1,0,0,1,?}> {
+  // A8.6.135
+  bits<3> Rm;
+  bits<3> Rd;
+  let Inst{5-3} = Rm;
+  let Inst{2-0} = Rd;
+}
 
-def tREVSH : T1pI<(outs tGPR:$dst), (ins tGPR:$src), IIC_iUNAr,
-                  "revsh", "\t$dst, $src",
-                  [(set tGPR:$dst,
+def tREVSH : T1pI<(outs tGPR:$Rd), (ins tGPR:$Rm), IIC_iUNAr,
+                  "revsh", "\t$Rd, $Rm",
+                  [(set tGPR:$Rd,
                         (sext_inreg
-                          (or (srl (and tGPR:$src, 0xFF00), (i32 8)),
-                              (shl tGPR:$src, (i32 8))), i16))]>,
+                          (or (srl (and tGPR:$Rm, 0xFF00), (i32 8)),
+                              (shl tGPR:$Rm, (i32 8))), i16))]>,
                   Requires<[IsThumb, IsThumb1Only, HasV6]>,
-             T1Misc<{1,0,1,0,1,1,?}>;
+             T1Misc<{1,0,1,0,1,1,?}> {
+  // A8.6.135
+  bits<3> Rm;
+  bits<3> Rd;
+  let Inst{5-3} = Rm;
+  let Inst{2-0} = Rd;
+}
 
 // rotate right register
 def tROR : T1sIt<(outs tGPR:$dst), (ins tGPR:$lhs, tGPR:$rhs), IIC_iMOVsr,
index 20ff022ab753ed03eee11ab01a978bc82930984e..7e7dde3f996660d5bfe0e84c074dd1b24129afc7 100644 (file)
@@ -1,4 +1,4 @@
-@ RUN: llvm-mc -triple thumb-apple-darwin -show-encoding < %s | FileCheck %s
+@ RUN: llvm-mc -triple thumbv6-apple-darwin -show-encoding < %s | FileCheck %s
         .code 16
 
 @ CHECK: cmp   r1, r2               @ encoding: [0x91,0x42]
 
 @ CHECK: blx   r9                   @ encoding: [0xc8,0x47]
        blx     r9
+
+@ CHECK: rev   r2, r3               @ encoding: [0x1a,0xba]
+@ CHECK: rev16 r3, r4               @ encoding: [0x63,0xba]
+@ CHECK: revsh r5, r6               @ encoding: [0xf5,0xba]
+        rev     r2, r3
+        rev16   r3, r4
+        revsh   r5, r6