diff options
| author | Jim Grosbach <grosbach@apple.com> | 2011-10-12 21:59:02 +0000 |
|---|---|---|
| committer | Jim Grosbach <grosbach@apple.com> | 2011-10-12 21:59:02 +0000 |
| commit | a098a891ab6ace44a52181627d6557858ed5c051 (patch) | |
| tree | d334e0fb897379503e32e9bf35a8999a42e34b57 /llvm | |
| parent | d433042388345f85ced99eb5e5b4f1a581b3e424 (diff) | |
| download | bcm5719-llvm-a098a891ab6ace44a52181627d6557858ed5c051.tar.gz bcm5719-llvm-a098a891ab6ace44a52181627d6557858ed5c051.zip | |
ARM addrmode5 represents the 'U' bit of the encoding backwards.
The disassembler needs to use the AM5 factory methods instead of just
building up the immediate directly.
llvm-svn: 141819
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp b/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp index 7cead8c13b7..d33cb949168 100644 --- a/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp +++ b/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp @@ -1248,48 +1248,51 @@ static DecodeStatus DecodeCopMemInstruction(llvm::MCInst &Inst, unsigned Insn, case ARM::t2LDC2L_OFFSET: case ARM::t2LDC2_PRE: case ARM::t2LDC2L_PRE: - case ARM::t2LDC2_POST: - case ARM::t2LDC2L_POST: case ARM::t2STC2_OFFSET: case ARM::t2STC2L_OFFSET: case ARM::t2STC2_PRE: case ARM::t2STC2L_PRE: - case ARM::t2STC2_POST: - case ARM::t2STC2L_POST: case ARM::LDC2_OFFSET: case ARM::LDC2L_OFFSET: case ARM::LDC2_PRE: case ARM::LDC2L_PRE: - case ARM::LDC2_POST: - case ARM::LDC2L_POST: case ARM::STC2_OFFSET: case ARM::STC2L_OFFSET: case ARM::STC2_PRE: case ARM::STC2L_PRE: - case ARM::STC2_POST: - case ARM::STC2L_POST: case ARM::t2LDC_OFFSET: case ARM::t2LDCL_OFFSET: case ARM::t2LDC_PRE: case ARM::t2LDCL_PRE: - case ARM::t2LDC_POST: - case ARM::t2LDCL_POST: case ARM::t2STC_OFFSET: case ARM::t2STCL_OFFSET: case ARM::t2STC_PRE: case ARM::t2STCL_PRE: - case ARM::t2STC_POST: - case ARM::t2STCL_POST: case ARM::LDC_OFFSET: case ARM::LDCL_OFFSET: case ARM::LDC_PRE: case ARM::LDCL_PRE: - case ARM::LDC_POST: - case ARM::LDCL_POST: case ARM::STC_OFFSET: case ARM::STCL_OFFSET: case ARM::STC_PRE: case ARM::STCL_PRE: + imm = ARM_AM::getAM5Opc(U ? ARM_AM::add : ARM_AM::sub, imm); + Inst.addOperand(MCOperand::CreateImm(imm)); + break; + case ARM::t2LDC2_POST: + case ARM::t2LDC2L_POST: + case ARM::t2STC2_POST: + case ARM::t2STC2L_POST: + case ARM::LDC2_POST: + case ARM::LDC2L_POST: + case ARM::STC2_POST: + case ARM::STC2L_POST: + case ARM::t2LDC_POST: + case ARM::t2LDCL_POST: + case ARM::t2STC_POST: + case ARM::t2STCL_POST: + case ARM::LDC_POST: + case ARM::LDCL_POST: case ARM::STC_POST: case ARM::STCL_POST: imm |= U << 8; |

