@@ -141,72 +141,59 @@ class getVOP2Pat64 <SDPatternOperator node, VOPProfile P> : LetDummies {
141
141
multiclass VOP2Inst_e32<string opName,
142
142
VOPProfile P,
143
143
SDPatternOperator node = null_frag,
144
- string revOp = opName,
145
- bit GFX9Renamed = 0> {
146
- let renamedInGFX9 = GFX9Renamed in {
144
+ string revOp = opName> {
147
145
def _e32 : VOP2_Pseudo <opName, P, VOPPatOrNull<node,P>.ret>,
148
146
Commutable_REV<revOp#"_e32", !eq(revOp, opName)>;
149
- } // End renamedInGFX9 = GFX9Renamed
150
147
}
151
148
multiclass
152
149
VOP2Inst_e32_VOPD<string opName, VOPProfile P, bits<5> VOPDOp,
153
150
string VOPDName, SDPatternOperator node = null_frag,
154
- string revOp = opName, bit GFX9Renamed = 0 > {
155
- defm NAME : VOP2Inst_e32<opName, P, node, revOp, GFX9Renamed >,
151
+ string revOp = opName> {
152
+ defm NAME : VOP2Inst_e32<opName, P, node, revOp>,
156
153
VOPD_Component<VOPDOp, VOPDName>;
157
154
}
158
155
multiclass VOP2Inst_e64<string opName,
159
156
VOPProfile P,
160
157
SDPatternOperator node = null_frag,
161
- string revOp = opName,
162
- bit GFX9Renamed = 0> {
163
- let renamedInGFX9 = GFX9Renamed in {
158
+ string revOp = opName> {
164
159
def _e64 : VOP3InstBase <opName, P, node, 1>,
165
160
Commutable_REV<revOp#"_e64", !eq(revOp, opName)>;
166
161
167
162
let SubtargetPredicate = isGFX11Plus in {
168
163
if P.HasExtVOP3DPP then
169
164
def _e64_dpp : VOP3_DPP_Pseudo <opName, P>;
170
165
} // End SubtargetPredicate = isGFX11Plus
171
- } // End renamedInGFX9 = GFX9Renamed
172
166
}
173
167
174
168
multiclass VOP2Inst_sdwa<string opName,
175
- VOPProfile P,
176
- bit GFX9Renamed = 0> {
177
- let renamedInGFX9 = GFX9Renamed in {
169
+ VOPProfile P> {
178
170
if P.HasExtSDWA then
179
171
def _sdwa : VOP2_SDWA_Pseudo <opName, P>;
180
- } // End renamedInGFX9 = GFX9Renamed
181
172
}
182
173
183
174
multiclass VOP2Inst<string opName,
184
175
VOPProfile P,
185
176
SDPatternOperator node = null_frag,
186
- string revOp = opName,
187
- bit GFX9Renamed = 0> :
188
- VOP2Inst_e32<opName, P, node, revOp, GFX9Renamed>,
189
- VOP2Inst_e64<opName, P, node, revOp, GFX9Renamed>,
190
- VOP2Inst_sdwa<opName, P, GFX9Renamed> {
191
- let renamedInGFX9 = GFX9Renamed in {
177
+ string revOp = opName> :
178
+ VOP2Inst_e32<opName, P, node, revOp>,
179
+ VOP2Inst_e64<opName, P, node, revOp>,
180
+ VOP2Inst_sdwa<opName, P> {
192
181
if P.HasExtDPP then
193
182
def _dpp : VOP2_DPP_Pseudo <opName, P>;
194
- }
195
183
}
196
184
197
185
multiclass VOP2Inst_t16<string opName,
198
186
VOPProfile P,
199
187
SDPatternOperator node = null_frag,
200
- string revOp = opName,
201
- bit GFX9Renamed = 0> {
188
+ string revOp = opName> {
202
189
let SubtargetPredicate = NotHasTrue16BitInsts, OtherPredicates = [Has16BitInsts] in {
203
- defm NAME : VOP2Inst<opName, P, node, revOp, GFX9Renamed >;
190
+ defm NAME : VOP2Inst<opName, P, node, revOp>;
204
191
}
205
192
let SubtargetPredicate = UseRealTrue16Insts in {
206
- defm _t16 : VOP2Inst<opName#"_t16", VOPProfile_True16<P>, node, revOp#"_t16", GFX9Renamed >;
193
+ defm _t16 : VOP2Inst<opName#"_t16", VOPProfile_True16<P>, node, revOp#"_t16">;
207
194
}
208
195
let SubtargetPredicate = UseFakeTrue16Insts in {
209
- defm _fake16 : VOP2Inst<opName#"_fake16", VOPProfile_Fake16<P>, node, revOp#"_fake16", GFX9Renamed >;
196
+ defm _fake16 : VOP2Inst<opName#"_fake16", VOPProfile_Fake16<P>, node, revOp#"_fake16">;
210
197
}
211
198
}
212
199
@@ -217,13 +204,12 @@ multiclass VOP2Inst_t16<string opName,
217
204
multiclass VOP2Inst_e64_t16<string opName,
218
205
VOPProfile P,
219
206
SDPatternOperator node = null_frag,
220
- string revOp = opName,
221
- bit GFX9Renamed = 0> {
207
+ string revOp = opName> {
222
208
let SubtargetPredicate = NotHasTrue16BitInsts, OtherPredicates = [Has16BitInsts] in {
223
- defm NAME : VOP2Inst<opName, P, node, revOp, GFX9Renamed >;
209
+ defm NAME : VOP2Inst<opName, P, node, revOp>;
224
210
}
225
211
let SubtargetPredicate = HasTrue16BitInsts in {
226
- defm _t16 : VOP2Inst_e64<opName#"_t16", VOPProfile_Fake16<P>, node, revOp#"_t16", GFX9Renamed >;
212
+ defm _t16 : VOP2Inst_e64<opName#"_t16", VOPProfile_Fake16<P>, node, revOp#"_t16">;
227
213
}
228
214
}
229
215
@@ -232,24 +218,19 @@ multiclass VOP2Inst_VOPD<string opName,
232
218
bits<5> VOPDOp,
233
219
string VOPDName,
234
220
SDPatternOperator node = null_frag,
235
- string revOp = opName,
236
- bit GFX9Renamed = 0> :
237
- VOP2Inst_e32_VOPD<opName, P, VOPDOp, VOPDName, node, revOp, GFX9Renamed>,
238
- VOP2Inst_e64<opName, P, node, revOp, GFX9Renamed>,
239
- VOP2Inst_sdwa<opName, P, GFX9Renamed> {
240
- let renamedInGFX9 = GFX9Renamed in {
221
+ string revOp = opName> :
222
+ VOP2Inst_e32_VOPD<opName, P, VOPDOp, VOPDName, node, revOp>,
223
+ VOP2Inst_e64<opName, P, node, revOp>,
224
+ VOP2Inst_sdwa<opName, P> {
241
225
if P.HasExtDPP then
242
226
def _dpp : VOP2_DPP_Pseudo <opName, P>;
243
- }
244
227
}
245
228
246
229
multiclass VOP2bInst <string opName,
247
230
VOPProfile P,
248
231
SDPatternOperator node = null_frag,
249
232
string revOp = opName,
250
- bit GFX9Renamed = 0,
251
233
bit useSGPRInput = !eq(P.NumSrcArgs, 3)> {
252
- let renamedInGFX9 = GFX9Renamed in {
253
234
let SchedRW = [Write32Bit, WriteSALU] in {
254
235
let Uses = !if(useSGPRInput, [VCC, EXEC], [EXEC]), Defs = [VCC] in {
255
236
def _e32 : VOP2_Pseudo <opName, P, VOPPatOrNull<node,P>.ret>,
@@ -273,7 +254,6 @@ multiclass VOP2bInst <string opName,
273
254
def _e64_dpp : VOP3_DPP_Pseudo <opName, P>;
274
255
} // End SubtargetPredicate = isGFX11Plus
275
256
}
276
- }
277
257
}
278
258
279
259
class VOP2bInstAlias <VOP2_Pseudo ps, Instruction inst,
@@ -751,18 +731,18 @@ def V_MADAK_F32 : VOP2_Pseudo <"v_madak_f32", VOP_MADAK_F32, []>;
751
731
752
732
// No patterns so that the scalar instructions are always selected.
753
733
// The scalar versions will be replaced with vector when needed later.
754
- defm V_ADD_CO_U32 : VOP2bInst <"v_add_co_u32", VOP2b_I32_I1_I32_I32, null_frag, "v_add_co_u32", 1 >;
755
- defm V_SUB_CO_U32 : VOP2bInst <"v_sub_co_u32", VOP2b_I32_I1_I32_I32, null_frag, "v_sub_co_u32", 1 >;
756
- defm V_SUBREV_CO_U32 : VOP2bInst <"v_subrev_co_u32", VOP2b_I32_I1_I32_I32, null_frag, "v_sub_co_u32", 1 >;
757
- defm V_ADDC_U32 : VOP2bInst <"v_addc_u32", VOP2b_I32_I1_I32_I32_I1, null_frag, "v_addc_u32", 1 >;
758
- defm V_SUBB_U32 : VOP2bInst <"v_subb_u32", VOP2b_I32_I1_I32_I32_I1, null_frag, "v_subb_u32", 1 >;
759
- defm V_SUBBREV_U32 : VOP2bInst <"v_subbrev_u32", VOP2b_I32_I1_I32_I32_I1, null_frag, "v_subb_u32", 1 >;
734
+ defm V_ADD_CO_U32 : VOP2bInst <"v_add_co_u32", VOP2b_I32_I1_I32_I32, null_frag, "v_add_co_u32">;
735
+ defm V_SUB_CO_U32 : VOP2bInst <"v_sub_co_u32", VOP2b_I32_I1_I32_I32, null_frag, "v_sub_co_u32">;
736
+ defm V_SUBREV_CO_U32 : VOP2bInst <"v_subrev_co_u32", VOP2b_I32_I1_I32_I32, null_frag, "v_sub_co_u32">;
737
+ defm V_ADDC_U32 : VOP2bInst <"v_addc_u32", VOP2b_I32_I1_I32_I32_I1, null_frag, "v_addc_u32">;
738
+ defm V_SUBB_U32 : VOP2bInst <"v_subb_u32", VOP2b_I32_I1_I32_I32_I1, null_frag, "v_subb_u32">;
739
+ defm V_SUBBREV_U32 : VOP2bInst <"v_subbrev_u32", VOP2b_I32_I1_I32_I32_I1, null_frag, "v_subb_u32">;
760
740
761
741
762
742
let SubtargetPredicate = HasAddNoCarryInsts, isReMaterializable = 1 in {
763
- defm V_ADD_U32 : VOP2Inst_VOPD <"v_add_u32", VOP_I32_I32_I32_ARITH, 0x10, "v_add_nc_u32", null_frag, "v_add_u32", 1 >;
764
- defm V_SUB_U32 : VOP2Inst <"v_sub_u32", VOP_I32_I32_I32_ARITH, null_frag, "v_sub_u32", 1 >;
765
- defm V_SUBREV_U32 : VOP2Inst <"v_subrev_u32", VOP_I32_I32_I32_ARITH, null_frag, "v_sub_u32", 1 >;
743
+ defm V_ADD_U32 : VOP2Inst_VOPD <"v_add_u32", VOP_I32_I32_I32_ARITH, 0x10, "v_add_nc_u32", null_frag, "v_add_u32">;
744
+ defm V_SUB_U32 : VOP2Inst <"v_sub_u32", VOP_I32_I32_I32_ARITH, null_frag, "v_sub_u32">;
745
+ defm V_SUBREV_U32 : VOP2Inst <"v_subrev_u32", VOP_I32_I32_I32_ARITH, null_frag, "v_sub_u32">;
766
746
}
767
747
768
748
} // End isCommutable = 1
0 commit comments