diff options
| author | Johnny Chen <johnny.chen@apple.com> | 2011-03-09 20:01:14 +0000 |
|---|---|---|
| committer | Johnny Chen <johnny.chen@apple.com> | 2011-03-09 20:01:14 +0000 |
| commit | 9363d41f1419282db17003934851e9f524d54305 (patch) | |
| tree | 050ee4fa4212d568fb17e514bed0f4bd905b7cc3 /llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp | |
| parent | 787ba0bf9b8f8c7c235495ab85cae842be16b978 (diff) | |
| download | llvm-9363d41f1419282db17003934851e9f524d54305.zip llvm-9363d41f1419282db17003934851e9f524d54305.tar.gz llvm-9363d41f1419282db17003934851e9f524d54305.tar.bz2 | |
LLVM combines the offset mode of A8.6.199 A1 & A2 into STRBT.
The insufficient encoding information of the combined instruction confuses the decoder wrt
UQADD16. Add extra logic to recover from that.
Fixed an assert reported by Sean Callanan
llvm-svn: 127354
Diffstat (limited to 'llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp')
| -rw-r--r-- | llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp b/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp index 78d73d3..54b13dc 100644 --- a/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp +++ b/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp @@ -94,6 +94,9 @@ static unsigned decodeARMInstruction(uint32_t &insn) { // As a result, the decoder fails to deocode USAT properly. if (slice(insn, 27, 21) == 0x37 && slice(insn, 5, 4) == 1) return ARM::USAT; + // As a result, the decoder fails to deocode UQADD16 properly. + if (slice(insn, 27, 20) == 0x66 && slice(insn, 7, 4) == 1) + return ARM::UQADD16; // Ditto for ADDSrs, which is a super-instruction for A8.6.7 & A8.6.8. // As a result, the decoder fails to decode UMULL properly. |
