@@ -1085,17 +1085,24 @@ multiclass VOP3P_Real_MFMA_gfx940<bits<7> op, string Name = !cast<VOP3_Pseudo>(N
1085
1085
defm : VOP3P_Real_MFMA_gfx940_aliases<Name, !subst("_1k", "", PS_ACD.Mnemonic), NAME>;
1086
1086
}
1087
1087
1088
- multiclass VOP3P_Real_MFMA<bits<7> op, string GFX940Name = !cast<VOP3_Pseudo>(NAME#"_e64").Mnemonic> :
1089
- VOP3P_Real_MFMA_gfx90a <op>,
1090
- VOP3P_Real_MFMA_gfx940 <op, GFX940Name> {
1088
+ multiclass VOP3P_Real_MFMA_vi<bits<7> op> {
1091
1089
def _vi : VOP3P_Real<!cast<VOP3_Pseudo>(NAME#"_e64"), SIEncodingFamily.VI>,
1092
1090
VOP3Pe_MAI <op, !cast<VOP3_Pseudo>(NAME#"_e64").Pfl, ?> {
1091
+ let SubtargetPredicate = isGFX8GFX9NotGFX90A;
1093
1092
let AssemblerPredicate = HasMAIInsts;
1094
1093
let DecoderNamespace = "GFX8";
1095
1094
let Constraints = "";
1096
1095
}
1097
1096
}
1098
1097
1098
+ multiclass VOP3P_Real_MFMA_vi_gfx90a<bits<7> op> :
1099
+ VOP3P_Real_MFMA_gfx90a <op>,
1100
+ VOP3P_Real_MFMA_vi <op>;
1101
+
1102
+ multiclass VOP3P_Real_MFMA<bits<7> op, string GFX940Name = !cast<VOP3_Pseudo>(NAME#"_e64").Mnemonic> :
1103
+ VOP3P_Real_MFMA_vi_gfx90a <op>,
1104
+ VOP3P_Real_MFMA_gfx940 <op, GFX940Name>;
1105
+
1099
1106
multiclass VOP3P_Real_SMFMAC<bits<7> op, string alias> {
1100
1107
def _gfx940 : VOP3P_Real<!cast<VOP3_Pseudo>(NAME#"_e64"), SIEncodingFamily.VI>,
1101
1108
VOP3Pe_SMFMAC <op> {
@@ -1156,7 +1163,7 @@ defm V_DOT8_U32_U4 : VOP3P_Real_vi <0x2b>;
1156
1163
defm V_DOT4_I32_I8 : VOP3P_Real_vi <0x28>;
1157
1164
defm V_DOT8_I32_I4 : VOP3P_Real_vi <0x2a>;
1158
1165
1159
- let SubtargetPredicate = HasMAIInsts in {
1166
+ let OtherPredicates = [ HasMAIInsts] in {
1160
1167
1161
1168
defm V_ACCVGPR_READ_B32 : VOP3P_Real_MAI <0x58>;
1162
1169
defm V_ACCVGPR_WRITE_B32 : VOP3P_Real_MAI <0x59>;
@@ -1174,17 +1181,15 @@ defm V_MFMA_I32_32X32X4I8 : VOP3P_Real_MFMA <0x50, "v_mfma_i32_32x32x4_2b_i8">
1174
1181
defm V_MFMA_I32_16X16X4I8 : VOP3P_Real_MFMA <0x51, "v_mfma_i32_16x16x4_4b_i8">;
1175
1182
defm V_MFMA_I32_4X4X4I8 : VOP3P_Real_MFMA <0x52, "v_mfma_i32_4x4x4_16b_i8">;
1176
1183
1177
- let SubtargetPredicate = isGFX908orGFX90A in {
1178
- defm V_MFMA_I32_16X16X16I8 : VOP3P_Real_MFMA <0x55>;
1179
- defm V_MFMA_I32_32X32X8I8 : VOP3P_Real_MFMA <0x54>;
1180
- defm V_MFMA_F32_32X32X2BF16 : VOP3P_Real_MFMA <0x68>;
1181
- defm V_MFMA_F32_16X16X2BF16 : VOP3P_Real_MFMA <0x69>;
1182
- defm V_MFMA_F32_4X4X2BF16 : VOP3P_Real_MFMA <0x6b>;
1183
- defm V_MFMA_F32_32X32X4BF16 : VOP3P_Real_MFMA <0x6c>;
1184
- defm V_MFMA_F32_16X16X8BF16 : VOP3P_Real_MFMA <0x6d>;
1185
- }
1184
+ defm V_MFMA_I32_16X16X16I8 : VOP3P_Real_MFMA_vi_gfx90a <0x55>;
1185
+ defm V_MFMA_I32_32X32X8I8 : VOP3P_Real_MFMA_vi_gfx90a <0x54>;
1186
+ defm V_MFMA_F32_32X32X2BF16 : VOP3P_Real_MFMA_vi_gfx90a <0x68>;
1187
+ defm V_MFMA_F32_16X16X2BF16 : VOP3P_Real_MFMA_vi_gfx90a <0x69>;
1188
+ defm V_MFMA_F32_4X4X2BF16 : VOP3P_Real_MFMA_vi_gfx90a <0x6b>;
1189
+ defm V_MFMA_F32_32X32X4BF16 : VOP3P_Real_MFMA_vi_gfx90a <0x6c>;
1190
+ defm V_MFMA_F32_16X16X8BF16 : VOP3P_Real_MFMA_vi_gfx90a <0x6d>;
1186
1191
1187
- } // End SubtargetPredicate = HasMAIInsts
1192
+ } // End OtherPredicates = [ HasMAIInsts]
1188
1193
1189
1194
defm V_MFMA_F32_32X32X4BF16_1K : VOP3P_Real_MFMA_gfx90a <0x63>;
1190
1195
defm V_MFMA_F32_16X16X4BF16_1K : VOP3P_Real_MFMA_gfx90a <0x64>;
0 commit comments