aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2010-12-03 22:33:42 +0000
committerJim Grosbach <grosbach@apple.com>2010-12-03 22:33:42 +0000
commite4fee20498dae90b984ad72782bdb3da524992b7 (patch)
tree8d0f082aff798fff3fe2e26fe41249bc86926d15
parent567ebd0cb548bead241a363fa17db5508a439eae (diff)
downloadllvm-e4fee20498dae90b984ad72782bdb3da524992b7.zip
llvm-e4fee20498dae90b984ad72782bdb3da524992b7.tar.gz
llvm-e4fee20498dae90b984ad72782bdb3da524992b7.tar.bz2
Remove incorrect BL target encoding (it's similar to, but not the same as the
ARM instruction). Add encoding of bits 13 and 11. llvm-svn: 120849
-rw-r--r--llvm/lib/Target/ARM/ARMInstrThumb.td30
1 files changed, 14 insertions, 16 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrThumb.td b/llvm/lib/Target/ARM/ARMInstrThumb.td
index da36a6f..d045191 100644
--- a/llvm/lib/Target/ARM/ARMInstrThumb.td
+++ b/llvm/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,