aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2011-07-08 21:10:35 +0000
committerJim Grosbach <grosbach@apple.com>2011-07-08 21:10:35 +0000
commitd28ec08eddf4cf8dc5ffe94c6cf72df32e257166 (patch)
treec66a66573411446aab001d127ab5177a6065dd08 /lib
parent75ca4b94bd9dcd3952fdc237429342a2154ba142 (diff)
downloadexternal_llvm-d28ec08eddf4cf8dc5ffe94c6cf72df32e257166.zip
external_llvm-d28ec08eddf4cf8dc5ffe94c6cf72df32e257166.tar.gz
external_llvm-d28ec08eddf4cf8dc5ffe94c6cf72df32e257166.tar.bz2
Pseudo-ize tBX_RET and tBX_RET_vararg.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134739 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/ARM/ARMInstrThumb.td21
1 files changed, 5 insertions, 16 deletions
diff --git a/lib/Target/ARM/ARMInstrThumb.td b/lib/Target/ARM/ARMInstrThumb.td
index 10038c8..9a96dc7 100644
--- a/lib/Target/ARM/ARMInstrThumb.td
+++ b/lib/Target/ARM/ARMInstrThumb.td
@@ -385,24 +385,13 @@ let isBranch = 1, isTerminator = 1, isBarrier = 1, isIndirectBranch = 1 in {
}
let isReturn = 1, isTerminator = 1, isBarrier = 1 in {
- def tBX_RET : TI<(outs), (ins), IIC_Br, "bx\tlr",
- [(ARMretflag)]>,
- T1Special<{1,1,0,?}> {
- // A6.2.3 & A8.6.25
- let Inst{6-3} = 0b1110; // Rm = lr
- let Inst{2-0} = 0b000;
- }
+ def tBX_RET : tPseudoExpand<(outs), (ins), Size2Bytes, IIC_Br,
+ [(ARMretflag)], (tBX LR, (ops 14, zero_reg))>;
// Alternative return instruction used by vararg functions.
- def tBX_RET_vararg : TI<(outs), (ins tGPR:$Rm),
- IIC_Br, "bx\t$Rm",
- []>,
- T1Special<{1,1,0,?}> {
- // A6.2.3 & A8.6.25
- bits<4> Rm;
- let Inst{6-3} = Rm;
- let Inst{2-0} = 0b000;
- }
+ def tBX_RET_vararg : tPseudoExpand<(outs), (ins tGPR:$Rm),
+ Size2Bytes, IIC_Br, [],
+ (tBX GPR:$Rm, (ops 14, zero_reg))>;
}
// All calls clobber the non-callee saved registers. SP is marked as a use to