@@ -973,11 +973,16 @@ class VOP3_CVT_SCALE_FP4FP8BF8_F32_TiedInput_Profile<VOPProfile P> : VOP3_Profil
973973 let HasOMod = 0;
974974}
975975
976+ class VOP3_CVT_SCALE_FP4_F32_TiedInput_Profile<VOPProfile P> : VOP3_CVT_SCALE_FP4FP8BF8_F32_TiedInput_Profile<P> {
977+ let HasFP8DstByteSel = 1;
978+ }
979+
976980class VOP3_CVT_SCALE_SR_F8BF8_F16BF16F32_TiedInput_Profile<VOPProfile P> : VOP3_CVT_SCALE_FP4FP8BF8_F32_TiedInput_Profile<P> {
977981 let InsVOP3OpSel = (ins FP32InputMods:$src0_modifiers, Src0RC64:$src0,
978982 Int32InputMods:$src1_modifiers, Src1RC64:$src1,
979983 FP32InputMods:$src2_modifiers, Src2RC64:$src2,
980984 VGPR_32:$vdst_in, op_sel0:$op_sel);
985+ let HasFP8DstByteSel = 1;
981986}
982987
983988
@@ -995,6 +1000,7 @@ class VOP3_CVT_SCALE_FP4_F16BF16_TiedInput_Profile<VOPProfile P> : VOP3_Profile<
9951000 HasSrc0FloatMods, HasSrc1FloatMods,
9961001 HasSrc2FloatMods>.ret);
9971002 let HasExtVOP3DPP = 0;
1003+ let HasFP8DstByteSel = 1;
9981004}
9991005
10001006class VOP3_CVT_SCALE_SR_PK_F4_F16BF16_TiedInput_Profile<ValueType Src0Ty> :
@@ -1007,6 +1013,7 @@ class VOP3_CVT_SCALE_SR_PK_F4_F16BF16_TiedInput_Profile<ValueType Src0Ty> :
10071013 let HasExtVOP3DPP = 0;
10081014 let HasOpSel = 1;
10091015 let HasOMod = 0;
1016+ let HasFP8DstByteSel = 1;
10101017}
10111018
10121019def VOP3_CVT_SCALE_SR_PK_F4_F32_TiedInput_Profile : VOP3_Profile<VOPProfile<[i32, v2f32, i32, f32]>, VOP3_OPSEL> {
@@ -1018,6 +1025,7 @@ def VOP3_CVT_SCALE_SR_PK_F4_F32_TiedInput_Profile : VOP3_Profile<VOPProfile<[i32
10181025 let HasExtVOP3DPP = 0;
10191026 let HasOpSel = 1;
10201027 let HasOMod = 0;
1028+ let HasFP8DstByteSel = 1;
10211029}
10221030
10231031class VOP3_CVT_SCALE_PK_F16BF16F32_FP4FP8BF8_Profile<ValueType DstTy> : VOP3_Profile<VOPProfile<[DstTy, i32, f32, untyped]>,
@@ -1093,7 +1101,7 @@ let SubtargetPredicate = HasBF8ConversionScaleInsts, mayRaiseFPException = 0 in
10931101let SubtargetPredicate = HasFP4ConversionScaleInsts, mayRaiseFPException = 0 in {
10941102 defm V_CVT_SCALEF32_PK_F32_FP4 : VOP3Inst<"v_cvt_scalef32_pk_f32_fp4", VOP3_CVT_SCALE_PK_F16BF16F32_FP4FP8BF8_Profile<v2f32>>;
10951103 let Constraints = "$vdst = $vdst_in", DisableEncoding="$vdst_in" in {
1096- defm V_CVT_SCALEF32_PK_FP4_F32 : VOP3Inst<"v_cvt_scalef32_pk_fp4_f32", VOP3_CVT_SCALE_FP4FP8BF8_F32_TiedInput_Profile <VOP_I32_F32_F32_F32>>;
1104+ defm V_CVT_SCALEF32_PK_FP4_F32 : VOP3Inst<"v_cvt_scalef32_pk_fp4_f32", VOP3_CVT_SCALE_FP4_F32_TiedInput_Profile <VOP_I32_F32_F32_F32>>;
10971105 let Constraints = "@earlyclobber $vdst" in {
10981106 defm V_CVT_SCALEF32_SR_PK_FP4_F16: VOP3Inst<"v_cvt_scalef32_sr_pk_fp4_f16", VOP3_CVT_SCALE_SR_PK_F4_F16BF16_TiedInput_Profile<v2f16>>;
10991107 defm V_CVT_SCALEF32_SR_PK_FP4_BF16: VOP3Inst<"v_cvt_scalef32_sr_pk_fp4_bf16", VOP3_CVT_SCALE_SR_PK_F4_F16BF16_TiedInput_Profile<v2bf16>>;
@@ -2027,6 +2035,7 @@ multiclass VOP3_Real_BITOP3_gfx9<bits<10> op, string AsmName, bit isSingle = 0>
20272035 }
20282036 }
20292037}
2038+
20302039} // End AssemblerPredicate = isGFX9Only, DecoderNamespace = "GFX9"
20312040
20322041defm V_MAD_U64_U32 : VOP3be_Real_vi <0x1E8>;
0 commit comments