@@ -140,10 +140,14 @@ multiclass VOP1Inst <string opName, VOPProfile P,
140140 if P.HasExtDPP then
141141 def _dpp : VOP1_DPP_Pseudo <opName, P>;
142142
143- let SubtargetPredicate = isGFX11Plus in {
144- if P.HasExtVOP3DPP then
145- def _e64_dpp : VOP3_DPP_Pseudo <opName, P>;
146- } // End SubtargetPredicate = isGFX11Plus
143+ if P.HasExtVOP3DPP then
144+ def _e64_dpp : VOP3_DPP_Pseudo <opName, P> {
145+ let SubtargetPredicate = isGFX11Plus;
146+ }
147+ else if P.HasExt64BitDPP then
148+ def _e64_dpp : VOP3_DPP_Pseudo <opName, P> {
149+ let OtherPredicates = [HasDPALU_DPP];
150+ }
147151
148152 def : LetDummies, AMDGPUMnemonicAlias<opName#"_e32", opName>;
149153 def : LetDummies, AMDGPUMnemonicAlias<opName#"_e64", opName>;
@@ -236,7 +240,7 @@ def VOPProfile_MOV : VOPProfile <[i32, i32, untyped, untyped]> {
236240let isReMaterializable = 1, isAsCheapAsAMove = 1 in {
237241defm V_MOV_B32 : VOP1Inst <"v_mov_b32", VOPProfile_MOV, null_frag, 0x8>;
238242
239- let SubtargetPredicate = isGFX940Plus , SchedRW = [Write64Bit] in
243+ let SubtargetPredicate = isGFX940orGFX1250 , SchedRW = [Write64Bit] in
240244defm V_MOV_B64 : VOP1Inst <"v_mov_b64", VOP_I64_I64>;
241245} // End isMoveImm = 1
242246
@@ -1117,6 +1121,8 @@ defm V_CVT_NORM_U16_F16 : VOP1_Real_FULL_t16_and_fake16_gfx11_gfx12<0x064>;
11171121defm V_CVT_F16_F32 : VOP1_Real_FULL_t16_and_fake16_gfx11_gfx12<0x00a>;
11181122defm V_CVT_F32_F16 : VOP1_Real_FULL_t16_and_fake16_gfx11_gfx12<0x00b>;
11191123
1124+ defm V_MOV_B64 : VOP1_Real_FULL <GFX1250Gen, 0x1d>;
1125+
11201126defm V_CVT_F32_BF16 : VOP1_Real_FULL_t16_and_fake16_gfx1250<0x072, "v_cvt_f32_bf16", "V_CVT_F32_BF16_gfx1250">;
11211127defm V_CVT_PK_F16_FP8 : VOP1_Real_FULL_t16_and_fake16_gfx1250<0x075>;
11221128defm V_CVT_PK_F16_BF8 : VOP1_Real_FULL_t16_and_fake16_gfx1250<0x076>;
0 commit comments