summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2011-07-20 20:32:09 +0000
committerJim Grosbach <grosbach@apple.com>2011-07-20 20:32:09 +0000
commita98f80095bdaa8deca492c1acd29b3d097b4c993 (patch)
tree898709a7d410650541d21f17cde30d7b65ecc16e /llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
parent424e55933ae309834a5cf091ac351417ca5b055f (diff)
downloadbcm5719-llvm-a98f80095bdaa8deca492c1acd29b3d097b4c993.tar.gz
bcm5719-llvm-a98f80095bdaa8deca492c1acd29b3d097b4c993.zip
ARM: Tidy up representation of PKH instruction.
The shift type is implied by the instruction (PKHBT vs. PKHTB) and so shouldn't be also encoded as part of the shift value immediate. Otherwise we're able to represent invalid instructions, plus it needlessly complicates the representation. Preparatory work for asm parsing of these instructions. llvm-svn: 135616
Diffstat (limited to 'llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp')
-rw-r--r--llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp b/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
index d89c80a9d45..320679ea88a 100644
--- a/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
+++ b/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
@@ -1638,7 +1638,10 @@ static bool DisassembleArithMiscFrm(MCInst &MI, unsigned Opcode, uint32_t insn,
else if (Opcode == ARM::PKHTB)
Opc = ARM_AM::asr;
getImmShiftSE(Opc, ShiftAmt);
- MI.addOperand(MCOperand::CreateImm(ARM_AM::getSORegOpc(Opc, ShiftAmt)));
+ if (Opcode == ARM::PKHBT || Opcode == ARM::PKHTB)
+ MI.addOperand(MCOperand::CreateImm(ShiftAmt));
+ else
+ MI.addOperand(MCOperand::CreateImm(ARM_AM::getSORegOpc(Opc, ShiftAmt)));
++OpIdx;
}
OpenPOWER on IntegriCloud