mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-25 20:59:51 +00:00
ADR was added with the wrong encoding for inst{24-21}, and the ARM decoder was fooled.
Set the encoding bits to {0,?,?,0}, not 0. Plus delegate the disassembly of ADR to the more generic ADDri/SUBri instructions, and add a test case for that. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128234 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
23670e5b95
commit
e6d69e7dbe
@ -1253,7 +1253,7 @@ let neverHasSideEffects = 1, isReMaterializable = 1 in
|
||||
// The 'adr' mnemonic encodes differently if the label is before or after
|
||||
// the instruction. The {24-21} opcode bits are set by the fixup, as we don't
|
||||
// know until then which form of the instruction will be used.
|
||||
def ADR : AI1<0, (outs GPR:$Rd), (ins adrlabel:$label),
|
||||
def ADR : AI1<{0,?,?,0}, (outs GPR:$Rd), (ins adrlabel:$label),
|
||||
MiscFrm, IIC_iALUi, "adr", "\t$Rd, #$label", []> {
|
||||
bits<4> Rd;
|
||||
bits<12> label;
|
||||
|
@ -1,5 +1,8 @@
|
||||
# RUN: llvm-mc --disassemble %s -triple=arm-apple-darwin9 | FileCheck %s
|
||||
|
||||
# CHECK: addpl r4, pc, #19, 8
|
||||
0x4c 0x45 0x8f 0x52
|
||||
|
||||
# CHECK: b #0
|
||||
0x00 0x00 0x00 0xea
|
||||
|
||||
|
@ -1584,6 +1584,10 @@ ARMDEBackend::populateInstruction(const CodeGenInstruction &CGI,
|
||||
Name == "MOVr_TC")
|
||||
return false;
|
||||
|
||||
// Delegate ADR disassembly to the more generic ADDri/SUBri instructions.
|
||||
if (Name == "ADR")
|
||||
return false;
|
||||
|
||||
//
|
||||
// The following special cases are for conflict resolutions.
|
||||
//
|
||||
|
Loading…
Reference in New Issue
Block a user