@@ -970,11 +970,16 @@ class VOP3_CVT_SCALE_FP4FP8BF8_F32_TiedInput_Profile<VOPProfile P> : VOP3_Profil
970970 let HasOMod = 0;
971971}
972972
973+ class VOP3_CVT_SCALE_FP4_F32_TiedInput_Profile<VOPProfile P> : VOP3_CVT_SCALE_FP4FP8BF8_F32_TiedInput_Profile<P> {
974+ let HasFP8DstByteSel = 1;
975+ }
976+
973977class VOP3_CVT_SCALE_SR_F8BF8_F16BF16F32_TiedInput_Profile<VOPProfile P> : VOP3_CVT_SCALE_FP4FP8BF8_F32_TiedInput_Profile<P> {
974978 let InsVOP3OpSel = (ins FP32InputMods:$src0_modifiers, Src0RC64:$src0,
975979 Int32InputMods:$src1_modifiers, Src1RC64:$src1,
976980 FP32InputMods:$src2_modifiers, Src2RC64:$src2,
977981 VGPR_32:$vdst_in, op_sel0:$op_sel);
982+ let HasFP8DstByteSel = 1;
978983}
979984
980985
@@ -992,6 +997,7 @@ class VOP3_CVT_SCALE_FP4_F16BF16_TiedInput_Profile<VOPProfile P> : VOP3_Profile<
992997 HasSrc0FloatMods, HasSrc1FloatMods,
993998 HasSrc2FloatMods>.ret);
994999 let HasExtVOP3DPP = 0;
1000+ let HasFP8DstByteSel = 1;
9951001}
9961002
9971003class VOP3_CVT_SCALE_SR_PK_F4_F16BF16_TiedInput_Profile<ValueType Src0Ty> :
@@ -1004,6 +1010,7 @@ class VOP3_CVT_SCALE_SR_PK_F4_F16BF16_TiedInput_Profile<ValueType Src0Ty> :
10041010 let HasExtVOP3DPP = 0;
10051011 let HasOpSel = 1;
10061012 let HasOMod = 0;
1013+ let HasFP8DstByteSel = 1;
10071014}
10081015
10091016def VOP3_CVT_SCALE_SR_PK_F4_F32_TiedInput_Profile : VOP3_Profile<VOPProfile<[i32, v2f32, i32, f32]>, VOP3_OPSEL> {
@@ -1015,6 +1022,7 @@ def VOP3_CVT_SCALE_SR_PK_F4_F32_TiedInput_Profile : VOP3_Profile<VOPProfile<[i32
10151022 let HasExtVOP3DPP = 0;
10161023 let HasOpSel = 1;
10171024 let HasOMod = 0;
1025+ let HasFP8DstByteSel = 1;
10181026}
10191027
10201028class VOP3_CVT_SCALE_PK_F16BF16F32_FP4FP8BF8_Profile<ValueType DstTy> : VOP3_Profile<VOPProfile<[DstTy, i32, f32, untyped]>,
@@ -1090,7 +1098,7 @@ let SubtargetPredicate = HasBF8ConversionScaleInsts, mayRaiseFPException = 0 in
10901098let SubtargetPredicate = HasFP4ConversionScaleInsts, mayRaiseFPException = 0 in {
10911099 defm V_CVT_SCALEF32_PK_F32_FP4 : VOP3Inst<"v_cvt_scalef32_pk_f32_fp4", VOP3_CVT_SCALE_PK_F16BF16F32_FP4FP8BF8_Profile<v2f32>>;
10921100 let Constraints = "$vdst = $vdst_in", DisableEncoding="$vdst_in" in {
1093- 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>>;
1101+ 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>>;
10941102 let Constraints = "@earlyclobber $vdst" in {
10951103 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>>;
10961104 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>>;
@@ -2047,6 +2055,7 @@ multiclass VOP3_Real_BITOP3_gfx9<bits<10> op, string AsmName, bit isSingle = 0>
20472055 }
20482056 }
20492057}
2058+
20502059} // End AssemblerPredicate = isGFX9Only, DecoderNamespace = "GFX9"
20512060
20522061defm V_MAD_U64_U32 : VOP3be_Real_vi <0x1E8>;
0 commit comments