1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00

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
This commit is contained in:
Johnny Chen 2011-03-09 20:01:14 +00:00
parent f99de77b19
commit 6bf5d7a170
2 changed files with 6 additions and 0 deletions

View File

@ -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.

View File

@ -139,3 +139,6 @@
# CHECK: bx r12
0x1c 0xff 0x2f 0xe1
# CHECK: uqadd16mi r6, r11, r8
0x18 0x60 0x6b 0x46