diff options
author | Jim Grosbach <grosbach@apple.com> | 2010-12-03 22:33:42 +0000 |
---|---|---|
committer | Jim Grosbach <grosbach@apple.com> | 2010-12-03 22:33:42 +0000 |
commit | 4fa102b84e6e0ec889e99ef7ab3c05885a3e4cb1 (patch) | |
tree | 7c2fde25178567f714a60f2d0120ae056e0954a6 | |
parent | d91f4e40e6312304c60c83c3dd93f769a39a9772 (diff) |
Remove incorrect BL target encoding (it's similar to, but not the same as the
ARM instruction). Add encoding of bits 13 and 11.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120849 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/ARM/ARMInstrThumb.td | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/lib/Target/ARM/ARMInstrThumb.td b/lib/Target/ARM/ARMInstrThumb.td index da36a6f906..d045191c92 100644 --- a/lib/Target/ARM/ARMInstrThumb.td +++ b/lib/Target/ARM/ARMInstrThumb.td @@ -366,16 +366,12 @@ let isCall = 1, Uses = [SP] in { // Also used for Thumb2 def tBL : TIx2<0b11110, 0b11, 1, - (outs), (ins bltarget:$func, variable_ops), IIC_Br, + (outs), (ins i32imm:$func, variable_ops), IIC_Br, "bl\t$func", [(ARMtcall tglobaladdr:$func)]>, Requires<[IsThumb, IsNotDarwin]> { - bits<24> func; - let Inst{26} = func{23}; - let Inst{25-16} = func{20-11}; - let Inst{13} = func{22}; - let Inst{11} = func{21}; - let Inst{10-0} = func{10-0}; + let Inst{13} = 1; + let Inst{11} = 1; } // ARMv5T and above, also used for Thumb2 @@ -383,7 +379,10 @@ let isCall = 1, (outs), (ins i32imm:$func, variable_ops), IIC_Br, "blx\t$func", [(ARMcall tglobaladdr:$func)]>, - Requires<[IsThumb, HasV5T, IsNotDarwin]>; + Requires<[IsThumb, HasV5T, IsNotDarwin]> { + let Inst{13} = 1; + let Inst{11} = 1; + } // Also used for Thumb2 def tBLXr : TI<(outs), (ins GPR:$func, variable_ops), IIC_Br, @@ -413,16 +412,12 @@ let isCall = 1, Uses = [R7, SP] in { // Also used for Thumb2 def tBLr9 : TIx2<0b11110, 0b11, 1, - (outs), (ins pred:$p, bltarget:$func, variable_ops), IIC_Br, + (outs), (ins pred:$p, i32imm:$func, variable_ops), IIC_Br, "bl${p}\t$func", [(ARMtcall tglobaladdr:$func)]>, Requires<[IsThumb, IsDarwin]> { - bits<24> func; - let Inst{26} = func{23}; - let Inst{25-16} = func{20-11}; - let Inst{13} = func{22}; - let Inst{11} = func{21}; - let Inst{10-0} = func{10-0}; + let Inst{13} = 1; + let Inst{11} = 1; } // ARMv5T and above, also used for Thumb2 @@ -430,7 +425,10 @@ let isCall = 1, (outs), (ins pred:$p, i32imm:$func, variable_ops), IIC_Br, "blx${p}\t$func", [(ARMcall tglobaladdr:$func)]>, - Requires<[IsThumb, HasV5T, IsDarwin]>; + Requires<[IsThumb, HasV5T, IsDarwin]> { + let Inst{13} = 1; + let Inst{11} = 1; + } // Also used for Thumb2 def tBLXr_r9 : TI<(outs), (ins pred:$p, GPR:$func, variable_ops), IIC_Br, |