Thumb2 assembly parsing and encoding for STR(immediate).

Add aliases for STRB/STRH while there. Tests forthcoming for those.

llvm-svn: 139942
This commit is contained in:
Jim Grosbach 2011-09-16 21:06:12 +00:00
parent 0ee0b9fdaf
commit 92606beeae
2 changed files with 32 additions and 0 deletions

View File

@ -3864,3 +3864,19 @@ def : t2InstAlias<"usat${p} $Rd, $sat_imm, $Rn",
// STM w/o the .w suffix.
def : t2InstAlias<"stm${p} $Rn, $regs",
(t2STMIA GPR:$Rn, pred:$p, reglist:$regs)>;
// Alias for STR, STRB, and STRH without the ".w" optional
// width specifier.
def : t2InstAlias<"str${p} $Rt, $addr",
(t2STRi12 GPR:$Rt, t2addrmode_imm12:$addr, pred:$p)>;
def : t2InstAlias<"strb${p} $Rt, $addr",
(t2STRBi12 rGPR:$Rt, t2addrmode_imm12:$addr, pred:$p)>;
def : t2InstAlias<"strh${p} $Rt, $addr",
(t2STRHi12 rGPR:$Rt, t2addrmode_imm12:$addr, pred:$p)>;
def : t2InstAlias<"str${p} $Rt, $addr",
(t2STRs GPR:$Rt, t2addrmode_so_reg:$addr, pred:$p)>;
def : t2InstAlias<"strb${p} $Rt, $addr",
(t2STRBs rGPR:$Rt, t2addrmode_so_reg:$addr, pred:$p)>;
def : t2InstAlias<"strh${p} $Rt, $addr",
(t2STRHs rGPR:$Rt, t2addrmode_so_reg:$addr, pred:$p)>;

View File

@ -2160,6 +2160,22 @@ _func:
@ CHECK: stm.w r5!, {r3, r8} @ encoding: [0xa5,0xe8,0x08,0x01]
@------------------------------------------------------------------------------
@ STR(immediate)
@------------------------------------------------------------------------------
str r5, [r5, #-4]
str r5, [r6, #32]
str r5, [r6, #33]
str r5, [r6, #257]
str.w pc, [r7, #257]
@ CHECK: str r5, [r5, #-4] @ encoding: [0x45,0xf8,0x04,0x5c]
@ CHECK: str r5, [r6, #32] @ encoding: [0x35,0x62]
@ CHECK: str.w r5, [r6, #33] @ encoding: [0xc6,0xf8,0x21,0x50]
@ CHECK: str.w r5, [r6, #257] @ encoding: [0xc6,0xf8,0x01,0x51]
@ CHECK: str.w pc, [r7, #257] @ encoding: [0xc7,0xf8,0x01,0xf1]
@------------------------------------------------------------------------------
@ SUB (register)
@------------------------------------------------------------------------------