@@ -811,8 +811,8 @@ def tLDMIA_UPD :
811
811
"$Rn = $wb", IIC_iLoad_mu>,
812
812
PseudoInstExpansion<(tLDMIA tGPR:$Rn, pred:$p, reglist:$regs)> {
813
813
let Size = 2;
814
- let OutOperandList = (outs GPR :$wb);
815
- let InOperandList = (ins GPR :$Rn, pred:$p, reglist:$regs, variable_ops);
814
+ let OutOperandList = (outs tGPR :$wb);
815
+ let InOperandList = (ins tGPR :$Rn, pred:$p, reglist:$regs, variable_ops);
816
816
let Pattern = [];
817
817
let isCodeGenOnly = 1;
818
818
let isPseudo = 1;
@@ -821,7 +821,7 @@ def tLDMIA_UPD :
821
821
822
822
// There is no non-writeback version of STM for Thumb.
823
823
let mayStore = 1, hasExtraSrcRegAllocReq = 1 in
824
- def tSTMIA_UPD : Thumb1I<(outs GPR :$wb),
824
+ def tSTMIA_UPD : Thumb1I<(outs tGPR :$wb),
825
825
(ins tGPR:$Rn, pred:$p, reglist:$regs, variable_ops),
826
826
AddrModeNone, 2, IIC_iStore_mu,
827
827
"stm${p}\t$Rn!, $regs", "$Rn = $wb", []>,
@@ -1511,12 +1511,13 @@ def tInt_eh_sjlj_setjmp : ThumbXI<(outs),(ins tGPR:$src, tGPR:$val),
1511
1511
// FIXME: Non-IOS version(s)
1512
1512
let isBarrier = 1, hasSideEffects = 1, isTerminator = 1, isCodeGenOnly = 1,
1513
1513
Defs = [ R7, LR, SP ] in
1514
- def tInt_eh_sjlj_longjmp : XI<(outs), (ins GPR :$src, GPR :$scratch),
1514
+ def tInt_eh_sjlj_longjmp : XI<(outs), (ins tGPR :$src, tGPR :$scratch),
1515
1515
AddrModeNone, 0, IndexModeNone,
1516
1516
Pseudo, NoItinerary, "", "",
1517
- [(ARMeh_sjlj_longjmp GPR :$src, GPR :$scratch)]>,
1517
+ [(ARMeh_sjlj_longjmp tGPR :$src, tGPR :$scratch)]>,
1518
1518
Requires<[IsThumb,IsNotWindows]>;
1519
1519
1520
+ // (Windows is Thumb2-only)
1520
1521
let isBarrier = 1, hasSideEffects = 1, isTerminator = 1, isCodeGenOnly = 1,
1521
1522
Defs = [ R11, LR, SP ] in
1522
1523
def tInt_WIN_eh_sjlj_longjmp
@@ -1611,16 +1612,16 @@ def : T1Pat<(extloadi16 t_addrmode_rr:$addr), (tLDRHr t_addrmode_rr:$addr)>;
1611
1612
// and expand it just after ISel.
1612
1613
let usesCustomInserter = 1, mayLoad =1,
1613
1614
Constraints = "$Rn = $Rn_wb,@earlyclobber $Rn_wb" in
1614
- def tLDR_postidx: tPseudoInst<(outs rGPR :$Rt, rGPR :$Rn_wb),
1615
- (ins rGPR :$Rn, pred:$p),
1615
+ def tLDR_postidx: tPseudoInst<(outs tGPR :$Rt, tGPR :$Rn_wb),
1616
+ (ins tGPR :$Rn, pred:$p),
1616
1617
4, IIC_iStore_ru,
1617
1618
[]>;
1618
1619
1619
1620
// post-inc STR -> STM r0!, {r1}. The layout of this (because it doesn't def
1620
1621
// multiple registers) is the same in ISel as MachineInstr, so there's no need
1621
1622
// for a pseudo.
1622
- def : T1Pat<(post_store rGPR :$Rt, rGPR :$Rn, 4),
1623
- (tSTMIA_UPD rGPR :$Rn, rGPR :$Rt)>;
1623
+ def : T1Pat<(post_store tGPR :$Rt, tGPR :$Rn, 4),
1624
+ (tSTMIA_UPD tGPR :$Rn, tGPR :$Rt)>;
1624
1625
1625
1626
// If it's impossible to use [r,r] address mode for sextload, select to
1626
1627
// ldr{b|h} + sxt{b|h} instead.
@@ -1689,9 +1690,9 @@ def : T1Pat<(i32 imm256_510:$src),
1689
1690
// be expanded into two instructions late to allow if-conversion and
1690
1691
// scheduling.
1691
1692
let isReMaterializable = 1 in
1692
- def tLDRpci_pic : PseudoInst<(outs GPR :$dst), (ins i32imm:$addr, pclabel:$cp),
1693
+ def tLDRpci_pic : PseudoInst<(outs tGPR :$dst), (ins i32imm:$addr, pclabel:$cp),
1693
1694
NoItinerary,
1694
- [(set GPR :$dst, (ARMpic_add (load (ARMWrapper tconstpool:$addr)),
1695
+ [(set tGPR :$dst, (ARMpic_add (load (ARMWrapper tconstpool:$addr)),
1695
1696
imm:$cp))]>,
1696
1697
Requires<[IsThumb, IsThumb1Only]>;
1697
1698
0 commit comments