@@ -1072,17 +1072,24 @@ multiclass VOP3P_Real_MFMA_gfx940<bits<7> op, string Name = !cast<VOP3_Pseudo>(N
1072
1072
defm : VOP3P_Real_MFMA_gfx940_aliases<Name, !subst("_1k", "", PS_ACD.Mnemonic), NAME>;
1073
1073
}
1074
1074
1075
- multiclass VOP3P_Real_MFMA<bits<7> op, string GFX940Name = !cast<VOP3_Pseudo>(NAME#"_e64").Mnemonic> :
1076
- VOP3P_Real_MFMA_gfx90a <op>,
1077
- VOP3P_Real_MFMA_gfx940 <op, GFX940Name> {
1075
+ multiclass VOP3P_Real_MFMA_vi<bits<7> op> {
1078
1076
def _vi : VOP3P_Real<!cast<VOP3_Pseudo>(NAME#"_e64"), SIEncodingFamily.VI>,
1079
1077
VOP3Pe_MAI <op, !cast<VOP3_Pseudo>(NAME#"_e64").Pfl, ?> {
1078
+ let SubtargetPredicate = isGFX8GFX9NotGFX90A;
1080
1079
let AssemblerPredicate = HasMAIInsts;
1081
1080
let DecoderNamespace = "GFX8";
1082
1081
let Constraints = "";
1083
1082
}
1084
1083
}
1085
1084
1085
+ multiclass VOP3P_Real_MFMA_vi_gfx90a<bits<7> op> :
1086
+ VOP3P_Real_MFMA_gfx90a <op>,
1087
+ VOP3P_Real_MFMA_vi <op>;
1088
+
1089
+ multiclass VOP3P_Real_MFMA<bits<7> op, string GFX940Name = !cast<VOP3_Pseudo>(NAME#"_e64").Mnemonic> :
1090
+ VOP3P_Real_MFMA_vi_gfx90a <op>,
1091
+ VOP3P_Real_MFMA_gfx940 <op, GFX940Name>;
1092
+
1086
1093
multiclass VOP3P_Real_SMFMAC<bits<7> op, string alias> {
1087
1094
def _gfx940 : VOP3P_Real<!cast<VOP3_Pseudo>(NAME#"_e64"), SIEncodingFamily.VI>,
1088
1095
VOP3Pe_SMFMAC <op> {
@@ -1143,7 +1150,7 @@ defm V_DOT8_U32_U4 : VOP3P_Real_vi <0x2b>;
1143
1150
defm V_DOT4_I32_I8 : VOP3P_Real_vi <0x28>;
1144
1151
defm V_DOT8_I32_I4 : VOP3P_Real_vi <0x2a>;
1145
1152
1146
- let SubtargetPredicate = HasMAIInsts in {
1153
+ let OtherPredicates = [ HasMAIInsts] in {
1147
1154
1148
1155
defm V_ACCVGPR_READ_B32 : VOP3P_Real_MAI <0x58>;
1149
1156
defm V_ACCVGPR_WRITE_B32 : VOP3P_Real_MAI <0x59>;
@@ -1161,17 +1168,15 @@ defm V_MFMA_I32_32X32X4I8 : VOP3P_Real_MFMA <0x50, "v_mfma_i32_32x32x4_2b_i8">
1161
1168
defm V_MFMA_I32_16X16X4I8 : VOP3P_Real_MFMA <0x51, "v_mfma_i32_16x16x4_4b_i8">;
1162
1169
defm V_MFMA_I32_4X4X4I8 : VOP3P_Real_MFMA <0x52, "v_mfma_i32_4x4x4_16b_i8">;
1163
1170
1164
- let SubtargetPredicate = isGFX908orGFX90A in {
1165
- defm V_MFMA_I32_16X16X16I8 : VOP3P_Real_MFMA <0x55>;
1166
- defm V_MFMA_I32_32X32X8I8 : VOP3P_Real_MFMA <0x54>;
1167
- defm V_MFMA_F32_32X32X2BF16 : VOP3P_Real_MFMA <0x68>;
1168
- defm V_MFMA_F32_16X16X2BF16 : VOP3P_Real_MFMA <0x69>;
1169
- defm V_MFMA_F32_4X4X2BF16 : VOP3P_Real_MFMA <0x6b>;
1170
- defm V_MFMA_F32_32X32X4BF16 : VOP3P_Real_MFMA <0x6c>;
1171
- defm V_MFMA_F32_16X16X8BF16 : VOP3P_Real_MFMA <0x6d>;
1172
- }
1171
+ defm V_MFMA_I32_16X16X16I8 : VOP3P_Real_MFMA_vi_gfx90a <0x55>;
1172
+ defm V_MFMA_I32_32X32X8I8 : VOP3P_Real_MFMA_vi_gfx90a <0x54>;
1173
+ defm V_MFMA_F32_32X32X2BF16 : VOP3P_Real_MFMA_vi_gfx90a <0x68>;
1174
+ defm V_MFMA_F32_16X16X2BF16 : VOP3P_Real_MFMA_vi_gfx90a <0x69>;
1175
+ defm V_MFMA_F32_4X4X2BF16 : VOP3P_Real_MFMA_vi_gfx90a <0x6b>;
1176
+ defm V_MFMA_F32_32X32X4BF16 : VOP3P_Real_MFMA_vi_gfx90a <0x6c>;
1177
+ defm V_MFMA_F32_16X16X8BF16 : VOP3P_Real_MFMA_vi_gfx90a <0x6d>;
1173
1178
1174
- } // End SubtargetPredicate = HasMAIInsts
1179
+ } // End OtherPredicates = [ HasMAIInsts]
1175
1180
1176
1181
defm V_MFMA_F32_32X32X4BF16_1K : VOP3P_Real_MFMA_gfx90a <0x63>;
1177
1182
defm V_MFMA_F32_16X16X4BF16_1K : VOP3P_Real_MFMA_gfx90a <0x64>;
0 commit comments