aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohnny Chen <johnny.chen@apple.com>2011-03-24 01:40:42 +0000
committerJohnny Chen <johnny.chen@apple.com>2011-03-24 01:40:42 +0000
commit3d793962becf3a345cfff96202f3c6c27a1fb5d4 (patch)
treebe0d866a0a409381419a3015dc35af015353f70d
parent571f290376ad7b84aac6e58dcecd19d9797a3892 (diff)
downloadexternal_llvm-3d793962becf3a345cfff96202f3c6c27a1fb5d4.zip
external_llvm-3d793962becf3a345cfff96202f3c6c27a1fb5d4.tar.gz
external_llvm-3d793962becf3a345cfff96202f3c6c27a1fb5d4.tar.bz2
Load/Store Multiple:
These instructions were changed to not embed the addressing mode within the MC instructions We also need to update the corresponding assert stmt. Also add two test cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128191 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp8
-rw-r--r--test/MC/Disassembler/ARM/arm-tests.txt6
2 files changed, 10 insertions, 4 deletions
diff --git a/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp b/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
index d92a019..e000cab 100644
--- a/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
+++ b/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
@@ -1235,13 +1235,13 @@ static bool DisassembleStMiscFrm(MCInst &MI, unsigned Opcode, uint32_t insn,
}
// The algorithm for disassembly of LdStMulFrm is different from others because
-// it explicitly populates the two predicate operands after operand 0 (the base)
-// and operand 1 (the AM4 mode imm). After operand 3, we need to populate the
-// reglist with each affected register encoded as an MCOperand.
+// it explicitly populates the two predicate operands after the base register.
+// After that, we need to populate the reglist with each affected register
+// encoded as an MCOperand.
static bool DisassembleLdStMulFrm(MCInst &MI, unsigned Opcode, uint32_t insn,
unsigned short NumOps, unsigned &NumOpsAdded, BO B) {
- assert(NumOps >= 5 && "LdStMulFrm expects NumOps >= 5");
+ assert(NumOps >= 4 && "LdStMulFrm expects NumOps >= 4");
NumOpsAdded = 0;
unsigned Base = getRegisterEnum(B, ARM::GPRRegClassID, decodeRn(insn));
diff --git a/test/MC/Disassembler/ARM/arm-tests.txt b/test/MC/Disassembler/ARM/arm-tests.txt
index eace5ab..93d6a03 100644
--- a/test/MC/Disassembler/ARM/arm-tests.txt
+++ b/test/MC/Disassembler/ARM/arm-tests.txt
@@ -175,3 +175,9 @@
# CHECK: strtvc r5, [r3], r0, lsr #20
0x30 0x5a 0xa3 0x76
+
+# CHECK: stmiblo sp, {r0, r4, r8, r11, r12, pc}
+0x11 0x99 0x8d 0x39
+
+# CHECK: ldmdb sp, {r0, r4, r8, r11, r12, pc}
+0x11 0x99 0x1d 0xe9