@@ -2059,6 +2059,7 @@ multiclass thumb2_ld_mult<string asm, InstrItinClass itin,
2059
2059
def IA :
2060
2060
T2XI<(outs), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
2061
2061
itin, !strconcat(asm, "${p}.w\t$Rn, $regs"), []> {
2062
+ bits<0> p;
2062
2063
bits<4> Rn;
2063
2064
bits<16> regs;
2064
2065
@@ -2074,6 +2075,7 @@ multiclass thumb2_ld_mult<string asm, InstrItinClass itin,
2074
2075
def IA_UPD :
2075
2076
T2XIt<(outs GPR:$wb), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
2076
2077
itin_upd, !strconcat(asm, "${p}.w\t$Rn!, $regs"), "$Rn = $wb", []> {
2078
+ bits<0> p;
2077
2079
bits<4> Rn;
2078
2080
bits<16> regs;
2079
2081
@@ -2089,6 +2091,7 @@ multiclass thumb2_ld_mult<string asm, InstrItinClass itin,
2089
2091
def DB :
2090
2092
T2XI<(outs), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
2091
2093
itin, !strconcat(asm, "db${p}\t$Rn, $regs"), []> {
2094
+ bits<0> p;
2092
2095
bits<4> Rn;
2093
2096
bits<16> regs;
2094
2097
@@ -2104,6 +2107,7 @@ multiclass thumb2_ld_mult<string asm, InstrItinClass itin,
2104
2107
def DB_UPD :
2105
2108
T2XIt<(outs GPR:$wb), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
2106
2109
itin_upd, !strconcat(asm, "db${p}\t$Rn!, $regs"), "$Rn = $wb", []> {
2110
+ bits<0> p;
2107
2111
bits<4> Rn;
2108
2112
bits<16> regs;
2109
2113
@@ -2128,6 +2132,7 @@ multiclass thumb2_st_mult<string asm, InstrItinClass itin,
2128
2132
def IA :
2129
2133
T2XI<(outs), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
2130
2134
itin, !strconcat(asm, "${p}.w\t$Rn, $regs"), []> {
2135
+ bits<0> p;
2131
2136
bits<4> Rn;
2132
2137
bits<16> regs;
2133
2138
@@ -2146,6 +2151,7 @@ multiclass thumb2_st_mult<string asm, InstrItinClass itin,
2146
2151
def IA_UPD :
2147
2152
T2XIt<(outs GPR:$wb), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
2148
2153
itin_upd, !strconcat(asm, "${p}.w\t$Rn!, $regs"), "$Rn = $wb", []> {
2154
+ bits<0> p;
2149
2155
bits<4> Rn;
2150
2156
bits<16> regs;
2151
2157
@@ -2164,6 +2170,7 @@ multiclass thumb2_st_mult<string asm, InstrItinClass itin,
2164
2170
def DB :
2165
2171
T2XI<(outs), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
2166
2172
itin, !strconcat(asm, "db${p}\t$Rn, $regs"), []> {
2173
+ bits<0> p;
2167
2174
bits<4> Rn;
2168
2175
bits<16> regs;
2169
2176
@@ -2182,6 +2189,7 @@ multiclass thumb2_st_mult<string asm, InstrItinClass itin,
2182
2189
def DB_UPD :
2183
2190
T2XIt<(outs GPR:$wb), (ins GPR:$Rn, pred:$p, reglist:$regs, variable_ops),
2184
2191
itin_upd, !strconcat(asm, "db${p}\t$Rn!, $regs"), "$Rn = $wb", []> {
2192
+ bits<0> p;
2185
2193
bits<4> Rn;
2186
2194
bits<16> regs;
2187
2195
@@ -4030,9 +4038,11 @@ def t2TBH : T2I<(outs), (ins (addrmode_tbh $Rn, $Rm):$addr), IIC_Br,
4030
4038
// FIXME: should be able to write a pattern for ARMBrcond, but can't use
4031
4039
// a two-value operand where a dag node expects ", "two operands. :(
4032
4040
let isBranch = 1, isTerminator = 1 in
4033
- def t2Bcc : T2I<(outs), (ins brtarget:$target), IIC_Br,
4034
- "b", ".w\t$target",
4035
- [/*(ARMbrcond bb:$target, imm:$cc)*/]>, Sched<[WriteBr]> {
4041
+ def t2Bcc : Thumb2XI<(outs), (ins brtarget:$target, pred:$p),
4042
+ AddrModeNone, 4, IIC_Br,
4043
+ "b${p}.w\t$target", "",
4044
+ [/*(ARMbrcond bb:$target, imm:$cc)*/]>,
4045
+ Sched<[WriteBr]> {
4036
4046
let Inst{31-27} = 0b11110;
4037
4047
let Inst{15-14} = 0b10;
4038
4048
let Inst{12} = 0;
@@ -5488,6 +5498,7 @@ class V8_1MI<dag oops, dag iops, AddrMode am, InstrItinClass itin, string asm,
5488
5498
def t2CLRM : V8_1MI<(outs),
5489
5499
(ins pred:$p, reglist_with_apsr:$regs, variable_ops),
5490
5500
AddrModeNone, NoItinerary, "clrm${p}", "$regs", "", []> {
5501
+ bits<0> p;
5491
5502
bits<16> regs;
5492
5503
5493
5504
let Inst{31-16} = 0b1110100010011111;
@@ -5516,6 +5527,7 @@ def t2BF_LabelPseudo
5516
5527
5517
5528
def t2BFi : t2BF<(ins bflabel_u4:$b_label, bflabel_s16:$label, pred:$p),
5518
5529
!strconcat("bf", "${p}"), "$b_label, $label"> {
5530
+ bits<0> p;
5519
5531
bits<4> b_label;
5520
5532
bits<16> label;
5521
5533
@@ -5547,6 +5559,7 @@ def t2BFic : t2BF<(ins bflabel_u4:$b_label, bflabel_s12:$label,
5547
5559
5548
5560
def t2BFr : t2BF<(ins bflabel_u4:$b_label, rGPR:$Rn, pred:$p),
5549
5561
!strconcat("bfx", "${p}"), "$b_label, $Rn"> {
5562
+ bits<0> p;
5550
5563
bits<4> b_label;
5551
5564
bits<4> Rn;
5552
5565
@@ -5558,6 +5571,7 @@ def t2BFr : t2BF<(ins bflabel_u4:$b_label, rGPR:$Rn, pred:$p),
5558
5571
5559
5572
def t2BFLi : t2BF<(ins bflabel_u4:$b_label, bflabel_s18:$label, pred:$p),
5560
5573
!strconcat("bfl", "${p}"), "$b_label, $label"> {
5574
+ bits<0> p;
5561
5575
bits<4> b_label;
5562
5576
bits<18> label;
5563
5577
@@ -5570,6 +5584,7 @@ def t2BFLi : t2BF<(ins bflabel_u4:$b_label, bflabel_s18:$label, pred:$p),
5570
5584
5571
5585
def t2BFLr : t2BF<(ins bflabel_u4:$b_label, rGPR:$Rn, pred:$p),
5572
5586
!strconcat("bflx", "${p}"), "$b_label, $Rn"> {
5587
+ bits<0> p;
5573
5588
bits<4> b_label;
5574
5589
bits<4> Rn;
5575
5590
@@ -5810,6 +5825,7 @@ let Predicates = [IsThumb2, HasV8_1MMainline, HasPACBTI] in {
5810
5825
def t2PACG : V8_1MI<(outs rGPR:$Rd),
5811
5826
(ins pred:$p, GPRnopc:$Rn, GPRnopc:$Rm),
5812
5827
AddrModeNone, NoItinerary, "pacg${p}", "$Rd, $Rn, $Rm", "", []> {
5828
+ bits<0> p;
5813
5829
bits<4> Rd;
5814
5830
bits<4> Rn;
5815
5831
bits<4> Rm;
@@ -5825,6 +5841,7 @@ let hasSideEffects = 1 in {
5825
5841
class PACBTIAut<dag iops, string asm, bit b>
5826
5842
: V8_1MI<(outs), iops,
5827
5843
AddrModeNone, NoItinerary, asm, "$Ra, $Rn, $Rm", "", []> {
5844
+ bits<0> p;
5828
5845
bits<4> Ra;
5829
5846
bits<4> Rn;
5830
5847
bits<4> Rm;
0 commit comments