Use BL to implement Thumb far jumps.
authorEvan Cheng <evan.cheng@apple.com>
Tue, 30 Jan 2007 01:13:37 +0000 (01:13 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Tue, 30 Jan 2007 01:13:37 +0000 (01:13 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33649 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMInstrThumb.td

index c494be470569e37402009f541ba43dab8b033d30..b99569d4a005b18ae4fd7cad490f1bc4dcde7dca 100644 (file)
@@ -195,6 +195,9 @@ let isCall = 1, noResults = 1,
 let isBranch = 1, isTerminator = 1, isBarrier = 1 in {
   def tB   : TI<(ops brtarget:$dst), "b $dst", [(br bb:$dst)]>;
 
+  // Far jump
+  def tBfar  : TIx2<(ops brtarget:$dst), "bl $dst\t@ far jump", []>;
+
   def tBR_JTr : TJTI<(ops GPR:$dst, jtblock_operand:$jt, i32imm:$id),
                      "cpy pc, $dst \n\t.align\t2\n$jt",
                      [(ARMbrjt GPR:$dst, tjumptable:$jt, imm:$id)]>;