diff options
author | Owen Anderson <resistor@mac.com> | 2011-07-27 23:36:57 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2011-07-27 23:36:57 +0000 |
commit | b81af2abe0accb7d04cdeec96010300c63a109a8 (patch) | |
tree | ecf2e2c8eb687e0b95d2a3bd41be1e6ff7c30132 /llvm/lib/Target/ARM/Disassembler | |
parent | 7742b5de7071f059f77a2d963fd910d4056c5f11 (diff) | |
download | bcm5719-llvm-b81af2abe0accb7d04cdeec96010300c63a109a8.tar.gz bcm5719-llvm-b81af2abe0accb7d04cdeec96010300c63a109a8.zip |
Refactor and improve the encodings/decodings for addrmode3 loads, and make the writeback operand always the first.
llvm-svn: 136295
Diffstat (limited to 'llvm/lib/Target/ARM/Disassembler')
-rw-r--r-- | llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp | 11 |
1 files changed, 1 insertions, 10 deletions
diff --git a/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp b/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp index 1f3920bd8cf..e8c2102c3d6 100644 --- a/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp +++ b/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp @@ -1460,7 +1460,7 @@ static bool DisassembleLdStMiscFrm(MCInst &MI, unsigned Opcode, uint32_t insn, && "Invalid arguments"); // Operand 0 of a pre- and post-indexed store is the address base writeback. - if (isPrePost && isStore) { + if (isPrePost) { assert(OpInfo[OpIdx].RegClass == ARM::GPRRegClassID && "Reg operand expected"); MI.addOperand(MCOperand::CreateReg(getRegisterEnum(B, ARM::GPRRegClassID, @@ -1485,15 +1485,6 @@ static bool DisassembleLdStMiscFrm(MCInst &MI, unsigned Opcode, uint32_t insn, ++OpIdx; } - // After dst of a pre- and post-indexed load is the address base writeback. - if (isPrePost && !isStore) { - assert(OpInfo[OpIdx].RegClass == ARM::GPRRegClassID && - "Reg operand expected"); - MI.addOperand(MCOperand::CreateReg(getRegisterEnum(B, ARM::GPRRegClassID, - decodeRn(insn)))); - ++OpIdx; - } - // Disassemble the base operand. if (OpIdx >= NumOps) return false; |