diff options
author | Owen Anderson <resistor@mac.com> | 2011-08-08 23:25:22 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2011-08-08 23:25:22 +0000 |
commit | 648f9a75fdbba228e89389c34a2b3f1ceecd06be (patch) | |
tree | 3a7bc508c5bbd6feb5fa779a147631c5d1145ef6 /lib/Target/ARM/ARMInstrThumb.td | |
parent | 7df4f963ea29284f6b2748c78ff658dc4ab36351 (diff) |
Thumb1 BL instructions encoding 22 bits of displacement, not 21.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137073 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMInstrThumb.td')
-rw-r--r-- | lib/Target/ARM/ARMInstrThumb.td | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/Target/ARM/ARMInstrThumb.td b/lib/Target/ARM/ARMInstrThumb.td index b71391d5c1..8442e06503 100644 --- a/lib/Target/ARM/ARMInstrThumb.td +++ b/lib/Target/ARM/ARMInstrThumb.td @@ -94,6 +94,7 @@ def t_cbtarget : Operand<i32> { def t_bltarget : Operand<i32> { let EncoderMethod = "getThumbBLTargetOpValue"; + let DecoderMethod = "DecodeThumbBLTargetOperand"; } def t_blxtarget : Operand<i32> { @@ -168,6 +169,7 @@ def t_addrmode_is1 : Operand<i32>, def t_addrmode_sp : Operand<i32>, ComplexPattern<i32, 2, "SelectThumbAddrModeSP", []> { let EncoderMethod = "getAddrModeThumbSPOpValue"; + let DecoderMethod = "DecodeThumbAddrModeSP"; let PrintMethod = "printThumbAddrModeSPOperand"; let MIOperandInfo = (ops GPR:$base, i32imm:$offsimm); } @@ -374,7 +376,8 @@ let isCall = 1, "bl${p}\t$func", [(ARMtcall tglobaladdr:$func)]>, Requires<[IsThumb, IsNotDarwin]> { - bits<21> func; + bits<22> func; + let Inst{26} = func{21}; let Inst{25-16} = func{20-11}; let Inst{13} = 1; let Inst{11} = 1; |