mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
Post-index loads/stores in still need to print the post-indexed immediate, even if it's zero, to distinguish them from non-post-indexed instructions.
llvm-svn: 140420
This commit is contained in:
parent
071eb7580a
commit
53c6b08ad8
@ -1217,7 +1217,7 @@ def t2LDR_PRE : T2Ipreldst<0, 0b10, 1, 1, (outs GPR:$Rt, GPR:$Rn_wb),
|
||||
def t2LDR_POST : T2Ipostldst<0, 0b10, 1, 0, (outs GPR:$Rt, GPR:$Rn_wb),
|
||||
(ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
|
||||
AddrModeT2_i8, IndexModePost, IIC_iLoad_iu,
|
||||
"ldr", "\t$Rt, $Rn, $offset", "$Rn = $Rn_wb", []>;
|
||||
"ldr", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>;
|
||||
|
||||
def t2LDRB_PRE : T2Ipreldst<0, 0b00, 1, 1, (outs GPR:$Rt, GPR:$Rn_wb),
|
||||
(ins t2addrmode_imm8:$addr),
|
||||
@ -1229,7 +1229,7 @@ def t2LDRB_PRE : T2Ipreldst<0, 0b00, 1, 1, (outs GPR:$Rt, GPR:$Rn_wb),
|
||||
def t2LDRB_POST : T2Ipostldst<0, 0b00, 1, 0, (outs GPR:$Rt, GPR:$Rn_wb),
|
||||
(ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
|
||||
AddrModeT2_i8, IndexModePost, IIC_iLoad_bh_iu,
|
||||
"ldrb", "\t$Rt, $Rn, $offset", "$Rn = $Rn_wb", []>;
|
||||
"ldrb", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>;
|
||||
|
||||
def t2LDRH_PRE : T2Ipreldst<0, 0b01, 1, 1, (outs GPR:$Rt, GPR:$Rn_wb),
|
||||
(ins t2addrmode_imm8:$addr),
|
||||
@ -1241,7 +1241,7 @@ def t2LDRH_PRE : T2Ipreldst<0, 0b01, 1, 1, (outs GPR:$Rt, GPR:$Rn_wb),
|
||||
def t2LDRH_POST : T2Ipostldst<0, 0b01, 1, 0, (outs GPR:$Rt, GPR:$Rn_wb),
|
||||
(ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
|
||||
AddrModeT2_i8, IndexModePost, IIC_iLoad_bh_iu,
|
||||
"ldrh", "\t$Rt, $Rn, $offset", "$Rn = $Rn_wb", []>;
|
||||
"ldrh", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>;
|
||||
|
||||
def t2LDRSB_PRE : T2Ipreldst<1, 0b00, 1, 1, (outs GPR:$Rt, GPR:$Rn_wb),
|
||||
(ins t2addrmode_imm8:$addr),
|
||||
@ -1253,7 +1253,7 @@ def t2LDRSB_PRE : T2Ipreldst<1, 0b00, 1, 1, (outs GPR:$Rt, GPR:$Rn_wb),
|
||||
def t2LDRSB_POST : T2Ipostldst<1, 0b00, 1, 0, (outs GPR:$Rt, GPR:$Rn_wb),
|
||||
(ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
|
||||
AddrModeT2_i8, IndexModePost, IIC_iLoad_bh_iu,
|
||||
"ldrsb", "\t$Rt, $Rn, $offset", "$Rn = $Rn_wb", []>;
|
||||
"ldrsb", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>;
|
||||
|
||||
def t2LDRSH_PRE : T2Ipreldst<1, 0b01, 1, 1, (outs GPR:$Rt, GPR:$Rn_wb),
|
||||
(ins t2addrmode_imm8:$addr),
|
||||
@ -1265,7 +1265,7 @@ def t2LDRSH_PRE : T2Ipreldst<1, 0b01, 1, 1, (outs GPR:$Rt, GPR:$Rn_wb),
|
||||
def t2LDRSH_POST : T2Ipostldst<1, 0b01, 1, 0, (outs GPR:$Rt, GPR:$Rn_wb),
|
||||
(ins addr_offset_none:$Rn, t2am_imm8_offset:$offset),
|
||||
AddrModeT2_i8, IndexModePost, IIC_iLoad_bh_iu,
|
||||
"ldrsh", "\t$Rt, $Rn, $offset", "$Rn = $Rn_wb", []>;
|
||||
"ldrsh", "\t$Rt, $Rn$offset", "$Rn = $Rn_wb", []>;
|
||||
} // mayLoad = 1, neverHasSideEffects = 1
|
||||
|
||||
// LDRT, LDRBT, LDRHT, LDRSBT, LDRSHT all have offset mode (PUW=0b110).
|
||||
@ -1336,7 +1336,7 @@ def t2STR_POST : T2Ipostldst<0, 0b10, 0, 0, (outs GPRnopc:$Rn_wb),
|
||||
(ins rGPR:$Rt, addr_offset_none:$Rn,
|
||||
t2am_imm8_offset:$offset),
|
||||
AddrModeT2_i8, IndexModePost, IIC_iStore_iu,
|
||||
"str", "\t$Rt, $Rn, $offset",
|
||||
"str", "\t$Rt, $Rn$offset",
|
||||
"$Rn = $Rn_wb,@earlyclobber $Rn_wb",
|
||||
[(set GPRnopc:$Rn_wb,
|
||||
(post_store rGPR:$Rt, addr_offset_none:$Rn,
|
||||
@ -1346,7 +1346,7 @@ def t2STRH_POST : T2Ipostldst<0, 0b01, 0, 0, (outs GPRnopc:$Rn_wb),
|
||||
(ins rGPR:$Rt, addr_offset_none:$Rn,
|
||||
t2am_imm8_offset:$offset),
|
||||
AddrModeT2_i8, IndexModePost, IIC_iStore_bh_iu,
|
||||
"strh", "\t$Rt, $Rn, $offset",
|
||||
"strh", "\t$Rt, $Rn$offset",
|
||||
"$Rn = $Rn_wb,@earlyclobber $Rn_wb",
|
||||
[(set GPRnopc:$Rn_wb,
|
||||
(post_truncsti16 rGPR:$Rt, addr_offset_none:$Rn,
|
||||
@ -1356,7 +1356,7 @@ def t2STRB_POST : T2Ipostldst<0, 0b00, 0, 0, (outs GPRnopc:$Rn_wb),
|
||||
(ins rGPR:$Rt, addr_offset_none:$Rn,
|
||||
t2am_imm8_offset:$offset),
|
||||
AddrModeT2_i8, IndexModePost, IIC_iStore_bh_iu,
|
||||
"strb", "\t$Rt, $Rn, $offset",
|
||||
"strb", "\t$Rt, $Rn$offset",
|
||||
"$Rn = $Rn_wb,@earlyclobber $Rn_wb",
|
||||
[(set GPRnopc:$Rn_wb,
|
||||
(post_truncsti8 rGPR:$Rt, addr_offset_none:$Rn,
|
||||
|
@ -874,9 +874,9 @@ void ARMInstPrinter::printT2AddrModeImm8OffsetOperand(const MCInst *MI,
|
||||
int32_t OffImm = (int32_t)MO1.getImm();
|
||||
// Don't print +0.
|
||||
if (OffImm < 0)
|
||||
O << "#-" << -OffImm;
|
||||
else if (OffImm > 0)
|
||||
O << "#" << OffImm;
|
||||
O << ", #-" << -OffImm;
|
||||
else
|
||||
O << ", #" << OffImm;
|
||||
}
|
||||
|
||||
void ARMInstPrinter::printT2AddrModeImm8s4OffsetOperand(const MCInst *MI,
|
||||
|
@ -1779,6 +1779,13 @@
|
||||
|
||||
0x20 0xf3 0x1d 0x09
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# STR (immediate)
|
||||
#------------------------------------------------------------------------------
|
||||
# CHECK: str r10, [r11], #0
|
||||
|
||||
0x4b 0xf8 0x00 0xab
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# STRD (immediate)
|
||||
#------------------------------------------------------------------------------
|
||||
|
Loading…
x
Reference in New Issue
Block a user