@@ -194,12 +194,9 @@ multiclass VOP2Inst_t16<string opName,
194194 let SubtargetPredicate = NotHasTrue16BitInsts, OtherPredicates = [Has16BitInsts] in {
195195 defm NAME : VOP2Inst<opName, P, node, revOp, GFX9Renamed>;
196196 }
197- let SubtargetPredicate = UseRealTrue16Insts in {
197+ let SubtargetPredicate = HasTrue16BitInsts in {
198198 defm _t16 : VOP2Inst<opName#"_t16", VOPProfile_True16<P>, node, revOp#"_t16", GFX9Renamed>;
199199 }
200- let SubtargetPredicate = UseFakeTrue16Insts in {
201- defm _fake16 : VOP2Inst<opName#"_fake16", VOPProfile_Fake16<P>, node, revOp#"_fake16", GFX9Renamed>;
202- }
203200}
204201
205202// Creating a _t16_e32 pseudo when there is no corresponding real instruction on
@@ -215,7 +212,7 @@ multiclass VOP2Inst_e64_t16<string opName,
215212 defm NAME : VOP2Inst<opName, P, node, revOp, GFX9Renamed>;
216213 }
217214 let SubtargetPredicate = HasTrue16BitInsts in {
218- defm _t16 : VOP2Inst_e64<opName#"_t16", VOPProfile_Fake16 <P>, node, revOp#"_t16", GFX9Renamed>;
215+ defm _t16 : VOP2Inst_e64<opName#"_t16", VOPProfile_True16 <P>, node, revOp#"_t16", GFX9Renamed>;
219216 }
220217}
221218
@@ -877,7 +874,7 @@ def LDEXP_F16_VOPProfile : VOPProfile <[f16, f16, f16, untyped]> {
877874 let HasSrc1FloatMods = 0;
878875 let Src1ModSDWA = Int16SDWAInputMods;
879876}
880- def LDEXP_F16_VOPProfile_True16 : VOPProfile_Fake16 <VOP_F16_F16_F16> {
877+ def LDEXP_F16_VOPProfile_True16 : VOPProfile_True16 <VOP_F16_F16_F16> {
881878 let Src1RC32 = RegisterOperand<VGPR_32_Lo128>;
882879 let Src1DPP = VGPR_32_Lo128;
883880 let Src1ModDPP = IntT16VRegInputMods;
@@ -928,9 +925,9 @@ def : LDEXP_F16_Pat<any_fldexp, V_LDEXP_F16_t16_e64>;
928925
929926let SubtargetPredicate = isGFX11Plus in {
930927 let isCommutable = 1 in {
931- defm V_AND_B16_t16 : VOP2Inst_e64 <"v_and_b16_t16", VOPProfile_Fake16 <VOP_I16_I16_I16>, and>;
932- defm V_OR_B16_t16 : VOP2Inst_e64 <"v_or_b16_t16", VOPProfile_Fake16 <VOP_I16_I16_I16>, or>;
933- defm V_XOR_B16_t16 : VOP2Inst_e64 <"v_xor_b16_t16", VOPProfile_Fake16 <VOP_I16_I16_I16>, xor>;
928+ defm V_AND_B16_t16 : VOP2Inst_e64 <"v_and_b16_t16", VOPProfile_True16 <VOP_I16_I16_I16>, and>;
929+ defm V_OR_B16_t16 : VOP2Inst_e64 <"v_or_b16_t16", VOPProfile_True16 <VOP_I16_I16_I16>, or>;
930+ defm V_XOR_B16_t16 : VOP2Inst_e64 <"v_xor_b16_t16", VOPProfile_True16 <VOP_I16_I16_I16>, xor>;
934931 } // End isCommutable = 1
935932} // End SubtargetPredicate = isGFX11Plus
936933
@@ -1310,8 +1307,6 @@ let AssemblerPredicate = isGFX11Only, DecoderNamespace = "GFX11" in {
13101307 multiclass VOP2_Real_e32_with_name_gfx11<bits<6> op, string opName,
13111308 string asmName, bit single = 0> {
13121309 defvar ps = !cast<VOP2_Pseudo>(opName#"_e32");
1313- let DecoderNamespace = !if(ps.Pfl.IsRealTrue16, "GFX11", "GFX11_FAKE16"),
1314- AssemblerPredicate = !if(ps.Pfl.IsRealTrue16, UseRealTrue16Insts, isGFX11Only) in
13151310 def _e32_gfx11 :
13161311 VOP2_Real<ps, SIEncodingFamily.GFX11, asmName>,
13171312 VOP2e<op{5-0}, ps.Pfl> {
@@ -1336,8 +1331,7 @@ let AssemblerPredicate = isGFX11Only, DecoderNamespace = "GFX11" in {
13361331 def _dpp_gfx11 : VOP2_DPP16<op, !cast<VOP2_DPP_Pseudo>(opName#"_dpp"),
13371332 SIEncodingFamily.GFX11> {
13381333 let AsmString = asmName # ps.Pfl.AsmDPP16;
1339- let DecoderNamespace = !if(ps.Pfl.IsRealTrue16, "DPPGFX11", "DPPGFX11_FAKE16");
1340- let AssemblerPredicate = !if(ps.Pfl.IsRealTrue16, UseRealTrue16Insts, isGFX11Only);
1334+ let DecoderNamespace = "DPPGFX11";
13411335 }
13421336 }
13431337 multiclass VOP2_Real_dpp8_with_name_gfx11<bits<6> op, string opName,
@@ -1346,8 +1340,7 @@ let AssemblerPredicate = isGFX11Only, DecoderNamespace = "GFX11" in {
13461340 if ps.Pfl.HasExtDPP then
13471341 def _dpp8_gfx11 : VOP2_DPP8<op, ps> {
13481342 let AsmString = asmName # ps.Pfl.AsmDPP8;
1349- let DecoderNamespace = !if(ps.Pfl.IsRealTrue16, "DPP8GFX11", "DPP8GFX11_FAKE16");
1350- let AssemblerPredicate = !if(ps.Pfl.IsRealTrue16, UseRealTrue16Insts, isGFX11Only);
1343+ let DecoderNamespace = "DPP8GFX11";
13511344 }
13521345 }
13531346
@@ -1498,19 +1491,13 @@ defm V_CVT_PK_RTZ_F16_F32 : VOP2_Real_FULL_with_name_gfx11<0x02f,
14981491defm V_PK_FMAC_F16 : VOP2Only_Real_gfx11<0x03c>;
14991492
15001493defm V_ADD_F16_t16 : VOP2_Real_FULL_t16_gfx11<0x032, "v_add_f16">;
1501- defm V_ADD_F16_fake16 : VOP2_Real_FULL_t16_gfx11<0x032, "v_add_f16">;
15021494defm V_SUB_F16_t16 : VOP2_Real_FULL_t16_gfx11<0x033, "v_sub_f16">;
1503- defm V_SUB_F16_fake16 : VOP2_Real_FULL_t16_gfx11<0x033, "v_sub_f16">;
15041495defm V_SUBREV_F16_t16 : VOP2_Real_FULL_t16_gfx11<0x034, "v_subrev_f16">;
1505- defm V_SUBREV_F16_fake16 : VOP2_Real_FULL_t16_gfx11<0x034, "v_subrev_f16">;
15061496defm V_MUL_F16_t16 : VOP2_Real_FULL_t16_gfx11<0x035, "v_mul_f16">;
1507- defm V_MUL_F16_fake16 : VOP2_Real_FULL_t16_gfx11<0x035, "v_mul_f16">;
15081497defm V_FMAC_F16_t16 : VOP2_Real_FULL_t16_gfx11<0x036, "v_fmac_f16">;
15091498defm V_LDEXP_F16_t16 : VOP2_Real_FULL_t16_gfx11<0x03b, "v_ldexp_f16">;
15101499defm V_MAX_F16_t16 : VOP2_Real_FULL_t16_gfx11<0x039, "v_max_f16">;
1511- defm V_MAX_F16_fake16 : VOP2_Real_FULL_t16_gfx11<0x039, "v_max_f16">;
15121500defm V_MIN_F16_t16 : VOP2_Real_FULL_t16_gfx11<0x03a, "v_min_f16">;
1513- defm V_MIN_F16_fake16 : VOP2_Real_FULL_t16_gfx11<0x03a, "v_min_f16">;
15141501defm V_FMAMK_F16_t16 : VOP2Only_Real_MADK_gfx11_with_name<0x037, "v_fmamk_f16">;
15151502defm V_FMAAK_F16_t16 : VOP2Only_Real_MADK_gfx11_with_name<0x038, "v_fmaak_f16">;
15161503
0 commit comments