Thumb2 assembly parsing and encoding for LDRB(immediate).
authorJim Grosbach <grosbach@apple.com>
Wed, 7 Sep 2011 21:41:25 +0000 (21:41 +0000)
committerJim Grosbach <grosbach@apple.com>
Wed, 7 Sep 2011 21:41:25 +0000 (21:41 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139258 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMInstrThumb2.td
test/MC/ARM/basic-thumb2-instructions.s

index 71bea1f507cd5c8d9b1ec0dbc7d0a4cdf6fe7aa3..e2b16d853476adbc8ac6ae32b05e8bf249fe6c73 100644 (file)
@@ -3702,6 +3702,10 @@ def : InstAlias<"dmb", (t2DMB 0xf)>, Requires<[IsThumb2, HasDB]>;
 def : InstAlias<"dsb", (t2DSB 0xf)>, Requires<[IsThumb2, HasDB]>;
 def : InstAlias<"isb", (t2ISB 0xf)>, Requires<[IsThumb2, HasDB]>;
 
-// Alias for LDRi12 without the ".w" optional width specifier.
-def : t2InstAlias<"ldr${p} $Rd, $addr",
-                  (t2LDRi12 GPR:$Rd, t2addrmode_imm12:$addr, pred:$p)>;
+// Alias for LDR, LDRB, LDRH without the ".w" optional width specifier.
+def : t2InstAlias<"ldr${p} $Rt, $addr",
+                  (t2LDRi12 GPR:$Rt, t2addrmode_imm12:$addr, pred:$p)>;
+def : t2InstAlias<"ldrb${p} $Rt, $addr",
+                  (t2LDRBi12 rGPR:$Rt, t2addrmode_imm12:$addr, pred:$p)>;
+def : t2InstAlias<"ldrh${p} $Rt, $addr",
+                  (t2LDRHi12 rGPR:$Rt, t2addrmode_imm12:$addr, pred:$p)>;
index 40c152d347914758fdfca284b2f01df35ff10140..d23b565540e4f660356035bdc25667167f13f331 100644 (file)
@@ -539,6 +539,22 @@ _func:
             @   fixup A - offset: 0, value: _foo, kind: fixup_t2_ldst_pcrel_12
 
 
+@------------------------------------------------------------------------------
+@ LDRB(immediate)
+@------------------------------------------------------------------------------
+        ldrb r5, [r5, #-4]
+        ldrb r5, [r6, #32]
+        ldrb r5, [r6, #33]
+        ldrb r5, [r6, #257]
+        ldrb.w lr, [r7, #257]
+
+@ CHECK: ldrb  r5, [r5, #-4]           @ encoding: [0x15,0xf8,0x04,0x5c]
+@ CHECK: ldrb.w        r5, [r6, #32]           @ encoding: [0x96,0xf8,0x20,0x50]
+@ CHECK: ldrb.w        r5, [r6, #33]           @ encoding: [0x96,0xf8,0x21,0x50]
+@ CHECK: ldrb.w        r5, [r6, #257]          @ encoding: [0x96,0xf8,0x01,0x51]
+@ CHECK: ldrb.w        lr, [r7, #257]          @ encoding: [0x97,0xf8,0x01,0xe1]
+
+
 @------------------------------------------------------------------------------
 @ IT
 @------------------------------------------------------------------------------