summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2011-10-12 21:59:02 +0000
committerJim Grosbach <grosbach@apple.com>2011-10-12 21:59:02 +0000
commita098a891ab6ace44a52181627d6557858ed5c051 (patch)
treed334e0fb897379503e32e9bf35a8999a42e34b57 /llvm
parentd433042388345f85ced99eb5e5b4f1a581b3e424 (diff)
downloadbcm5719-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.cpp31
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;
OpenPOWER on IntegriCloud