summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnny Chen <johnny.chen@apple.com>2011-03-25 17:31:16 +0000
committerJohnny Chen <johnny.chen@apple.com>2011-03-25 17:31:16 +0000
commit6c3891067b6e2e2aa399a57ecae407677f22391d (patch)
tree74acc87537d620233798624a36394cb007cdd5a8
parent15a3ea0628d2e961cecd70b4e284149524aa3019 (diff)
downloadllvm-6c3891067b6e2e2aa399a57ecae407677f22391d.tar.gz
llvm-6c3891067b6e2e2aa399a57ecae407677f22391d.tar.bz2
llvm-6c3891067b6e2e2aa399a57ecae407677f22391d.tar.xz
Instruction formats of SWP/SWPB were changed from LdStExFrm to MiscFrm. Modify the disassembler to handle that.
rdar://problem/9184053 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128285 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp5
-rw-r--r--test/MC/Disassembler/ARM/arm-tests.txt3
2 files changed, 8 insertions, 0 deletions
diff --git a/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp b/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
index ff19a385cf..3c48879eb3 100644
--- a/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
+++ b/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
@@ -2951,6 +2951,11 @@ static bool DisassembleMiscFrm(MCInst &MI, unsigned Opcode, uint32_t insn,
case ARM::WFI:
case ARM::SEV:
return true;
+ case ARM::SWP:
+ case ARM::SWPB:
+ // SWP, SWPB: Rd Rm Rn
+ // Delegate to DisassembleLdStExFrm()....
+ return DisassembleLdStExFrm(MI, Opcode, insn, NumOps, NumOpsAdded, B);
default:
break;
}
diff --git a/test/MC/Disassembler/ARM/arm-tests.txt b/test/MC/Disassembler/ARM/arm-tests.txt
index 16e6981382..f4836772d5 100644
--- a/test/MC/Disassembler/ARM/arm-tests.txt
+++ b/test/MC/Disassembler/ARM/arm-tests.txt
@@ -184,3 +184,6 @@
# CHECK: ldmdb sp, {r0, r4, r8, r11, r12, pc}
0x11 0x99 0x1d 0xe9
+
+# CHECK: swpge r3, r2, [r6]
+0x92 0x30 0x06 0xa1