diff options
author | Jim Grosbach <grosbach@apple.com> | 2011-07-26 21:28:43 +0000 |
---|---|---|
committer | Jim Grosbach <grosbach@apple.com> | 2011-07-26 21:28:43 +0000 |
commit | d2659138da55d08e0e480dd9bce6a6b933bae294 (patch) | |
tree | 819e74466806db639a9fc2a83725f16d8cc05f84 /llvm/lib/Target/ARM/Disassembler | |
parent | 182543aba2ab09cd3e3c1cf8c6a9ca25245b93c0 (diff) | |
download | bcm5719-llvm-d2659138da55d08e0e480dd9bce6a6b933bae294.tar.gz bcm5719-llvm-d2659138da55d08e0e480dd9bce6a6b933bae294.zip |
ARM cleanup of rot_imm encoding.
Start of cleaning this up a bit. First step is to remove the encoder hook by
storing the operand as the bits it'll actually encode to so it can just be
directly used. Map it to the assembly source values 8/16/24 when we print it.
llvm-svn: 136152
Diffstat (limited to 'llvm/lib/Target/ARM/Disassembler')
-rw-r--r-- | llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp | 3 | ||||
-rw-r--r-- | llvm/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h | 8 |
2 files changed, 2 insertions, 9 deletions
diff --git a/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp b/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp index 07d9f8ebc77..f16870054e1 100644 --- a/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp +++ b/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp @@ -1785,8 +1785,7 @@ static bool DisassembleExtFrm(MCInst &MI, unsigned Opcode, uint32_t insn, && !OpInfo[OpIdx].isPredicate() && !OpInfo[OpIdx].isOptionalDef()) { // Extract the 2-bit rotate field Inst{11-10}. unsigned rot = (insn >> ARMII::ExtRotImmShift) & 3; - // Rotation by 8, 16, or 24 bits. - MI.addOperand(MCOperand::CreateImm(rot << 3)); + MI.addOperand(MCOperand::CreateImm(rot)); ++OpIdx; } diff --git a/llvm/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h b/llvm/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h index 694ffe6e991..e534e21375a 100644 --- a/llvm/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h +++ b/llvm/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h @@ -323,12 +323,6 @@ static inline int decodeImm32_BLX(uint32_t insn) { return SignExtend32<25>(Imm25); } -// See, for example, A8.6.221 SXTAB16. -static inline unsigned decodeRotate(uint32_t insn) { - unsigned rotate = slice(insn, 5, 4); - return rotate << 3; -} - /////////////////////////////////////////////// // // // Thumb1 instruction disassembly functions. // @@ -2195,7 +2189,7 @@ static bool DisassembleThumb2DPReg(MCInst &MI, unsigned Opcode, uint32_t insn, if (OpIdx < NumOps && OpInfo[OpIdx].RegClass < 0 && !OpInfo[OpIdx].isPredicate() && !OpInfo[OpIdx].isOptionalDef()) { // Add the rotation amount immediate. - MI.addOperand(MCOperand::CreateImm(decodeRotate(insn))); + MI.addOperand(MCOperand::CreateImm(slice(insn, 5, 4))); ++OpIdx; } |