diff options
author | Evan Cheng <evan.cheng@apple.com> | 2009-08-07 21:19:10 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2009-08-07 21:19:10 +0000 |
commit | d77c7aba83bb290b9b62ede38b6ddbc9b790c6ef (patch) | |
tree | eee8001991e28c001e7597804b9fc9890855fd3f /lib | |
parent | 2234e5eee6d196594d42e6f2be51e176bf5e5f6e (diff) |
Thumb2 32-bit ldm / stm needs .w suffix if submode is ia.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78410 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Target/ARM/ARMInstrThumb2.td | 6 | ||||
-rw-r--r-- | lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp | 4 |
2 files changed, 7 insertions, 3 deletions
diff --git a/lib/Target/ARM/ARMInstrThumb2.td b/lib/Target/ARM/ARMInstrThumb2.td index 11b0454802..d4ee7c0c11 100644 --- a/lib/Target/ARM/ARMInstrThumb2.td +++ b/lib/Target/ARM/ARMInstrThumb2.td @@ -651,12 +651,12 @@ def t2STRB_POST : T2Iidxldst<(outs GPR:$base_wb), let mayLoad = 1 in def t2LDM : T2XI<(outs), (ins addrmode4:$addr, pred:$p, reglist:$dst1, variable_ops), - IIC_iLoad, "ldm${addr:submode}${p} $addr, $dst1", []>; + IIC_iLoad, "ldm${addr:submode}${p}${addr:wide} $addr, $dst1", []>; let mayStore = 1 in def t2STM : T2XI<(outs), (ins addrmode4:$addr, pred:$p, reglist:$src1, variable_ops), - IIC_iStore, "stm${addr:submode}${p} $addr, $src1", []>; + IIC_iStore, "stm${addr:submode}${p}${addr:wide} $addr, $src1", []>; //===----------------------------------------------------------------------===// // Move Instructions. @@ -1072,7 +1072,7 @@ let isCall = 1, let isReturn = 1, isTerminator = 1, mayLoad = 1 in def t2LDM_RET : T2XI<(outs), (ins addrmode4:$addr, pred:$p, reglist:$dst1, variable_ops), - IIC_iLoad, "ldm${addr:submode}${p} $addr, $dst1", + IIC_iLoad, "ldm${addr:submode}${p}${addr:wide} $addr, $dst1", []>; let isBranch = 1, isTerminator = 1, isBarrier = 1 in { diff --git a/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp b/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp index 7b19969cfb..3bbb3b9d46 100644 --- a/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp +++ b/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp @@ -599,6 +599,10 @@ void ARMAsmPrinter::printAddrMode4Operand(const MachineInstr *MI, int Op, O << ARM_AM::getAMSubModeAltStr(Mode, isLDM); } else O << ARM_AM::getAMSubModeStr(Mode); + } else if (Modifier && strcmp(Modifier, "wide") == 0) { + ARM_AM::AMSubMode Mode = ARM_AM::getAM4SubMode(MO2.getImm()); + if (Mode == ARM_AM::ia) + O << ".w"; } else { printOperand(MI, Op); if (ARM_AM::getAM4WBFlag(MO2.getImm())) |