@@ -845,9 +845,12 @@ multiclass MUBUF_Pseudo_Atomics <string opName,
845845// MUBUF Instructions
846846//===----------------------------------------------------------------------===//
847847
848+ let OtherPredicates = [HasFormattedMUBUFInsts] in
848849defm BUFFER_LOAD_FORMAT_X : MUBUF_Pseudo_Loads_Lds <
849850 "buffer_load_format_x", f32
850851>;
852+
853+ let SubtargetPredicate = HasFormattedMUBUFInsts in {
851854defm BUFFER_LOAD_FORMAT_XY : MUBUF_Pseudo_Loads <
852855 "buffer_load_format_xy", v2f32
853856>;
@@ -927,6 +930,7 @@ let TiedSourceNotRead = 1 in {
927930 "buffer_store_format_d16_xyzw", v4f16
928931 >;
929932} // End OtherPredicates = [HasPackedD16VMem], D16Buf = 1.
933+ } // End SubtargetPredicate = HasFormattedMUBUFInsts.
930934
931935defm BUFFER_LOAD_UBYTE : MUBUF_Pseudo_Loads_Lds <
932936 "buffer_load_ubyte", i32
@@ -1172,6 +1176,7 @@ defm BUFFER_LOAD_SHORT_D16_HI : MUBUF_Pseudo_Loads <
11721176 "buffer_load_short_d16_hi", i32, 1
11731177>;
11741178
1179+ let OtherPredicates = [HasFormattedMUBUFInsts] in
11751180defm BUFFER_LOAD_FORMAT_D16_HI_X : MUBUF_Pseudo_Loads <
11761181 "buffer_load_format_d16_hi_x", i32
11771182>;
@@ -1185,6 +1190,7 @@ defm BUFFER_STORE_SHORT_D16_HI : MUBUF_Pseudo_Stores <
11851190 "buffer_store_short_d16_hi", i32
11861191>;
11871192
1193+ let OtherPredicates = [HasFormattedMUBUFInsts] in
11881194defm BUFFER_STORE_FORMAT_D16_HI_X : MUBUF_Pseudo_Stores <
11891195 "buffer_store_format_d16_hi_x", i32
11901196>;
@@ -1366,6 +1372,7 @@ multiclass MUBUF_LoadIntrinsicPat<SDPatternOperator name, ValueType vt,
13661372 defm : MUBUF_LoadIntrinsicPat_Common<name, vt, opcode # "_VBUFFER", memoryVt>;
13671373}
13681374
1375+ let OtherPredicates = [HasFormattedMUBUFInsts] in {
13691376defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format, f32, "BUFFER_LOAD_FORMAT_X">;
13701377defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format, i32, "BUFFER_LOAD_FORMAT_X">;
13711378defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format, v2f32, "BUFFER_LOAD_FORMAT_XY">;
@@ -1379,17 +1386,18 @@ defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format_tfe, v2i32, "BUFFER_LOAD_FORM
13791386defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format_tfe, v3i32, "BUFFER_LOAD_FORMAT_XY_TFE">;
13801387defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format_tfe, v4i32, "BUFFER_LOAD_FORMAT_XYZ_TFE">;
13811388defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format_tfe, v5i32, "BUFFER_LOAD_FORMAT_XYZW_TFE">;
1389+ } // End OtherPredicates = [HasFormattedMUBUFInsts].
13821390
1383- let OtherPredicates = [HasUnpackedD16VMem] in {
1391+ let OtherPredicates = [HasUnpackedD16VMem, HasFormattedMUBUFInsts ] in {
13841392 defm : MUBUF_LoadIntrinsicPat_Common<SIbuffer_load_format_d16, f16, "BUFFER_LOAD_FORMAT_D16_X_gfx80">;
13851393 defm : MUBUF_LoadIntrinsicPat_Common<SIbuffer_load_format_d16, i16, "BUFFER_LOAD_FORMAT_D16_X_gfx80">;
13861394 defm : MUBUF_LoadIntrinsicPat_Common<SIbuffer_load_format_d16, i32, "BUFFER_LOAD_FORMAT_D16_X_gfx80">;
13871395 defm : MUBUF_LoadIntrinsicPat_Common<SIbuffer_load_format_d16, v2i32, "BUFFER_LOAD_FORMAT_D16_XY_gfx80">;
13881396 defm : MUBUF_LoadIntrinsicPat_Common<SIbuffer_load_format_d16, v3i32, "BUFFER_LOAD_FORMAT_D16_XYZ_gfx80">;
13891397 defm : MUBUF_LoadIntrinsicPat_Common<SIbuffer_load_format_d16, v4i32, "BUFFER_LOAD_FORMAT_D16_XYZW_gfx80">;
1390- } // End HasUnpackedD16VMem.
1398+ } // End OtherPredicates = [ HasUnpackedD16VMem, HasFormattedMUBUFInsts] .
13911399
1392- let OtherPredicates = [HasPackedD16VMem] in {
1400+ let OtherPredicates = [HasPackedD16VMem, HasFormattedMUBUFInsts ] in {
13931401 defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format_d16, f16, "BUFFER_LOAD_FORMAT_D16_X">;
13941402 defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format_d16, i16, "BUFFER_LOAD_FORMAT_D16_X">;
13951403 defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format_d16, i32, "BUFFER_LOAD_FORMAT_D16_X">;
@@ -1399,7 +1407,7 @@ let OtherPredicates = [HasPackedD16VMem] in {
13991407 defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format_d16, v4i16, "BUFFER_LOAD_FORMAT_D16_XYZ", v3i16>;
14001408 defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format_d16, v4f16, "BUFFER_LOAD_FORMAT_D16_XYZW">;
14011409 defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format_d16, v4i16, "BUFFER_LOAD_FORMAT_D16_XYZW">;
1402- } // End HasPackedD16VMem.
1410+ } // End OtherPredicates = [ HasPackedD16VMem, HasFormattedMUBUFInsts] .
14031411
14041412foreach vt = Reg32Types.types in {
14051413defm : MUBUF_LoadIntrinsicPat<SIbuffer_load, vt, "BUFFER_LOAD_DWORD">;
@@ -1475,6 +1483,7 @@ multiclass MUBUF_StoreIntrinsicPat<SDPatternOperator name, ValueType vt,
14751483 defm : MUBUF_StoreIntrinsicPat_Common<name, vt, opcode # "_VBUFFER", memoryVt>;
14761484}
14771485
1486+ let OtherPredicates = [HasFormattedMUBUFInsts] in {
14781487defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format, f32, "BUFFER_STORE_FORMAT_X">;
14791488defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format, i32, "BUFFER_STORE_FORMAT_X">;
14801489defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format, v2f32, "BUFFER_STORE_FORMAT_XY">;
@@ -1484,17 +1493,18 @@ defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format, v3f32, "BUFFER_STORE_FORMA
14841493defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format, v3i32, "BUFFER_STORE_FORMAT_XYZ">;
14851494defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format, v4f32, "BUFFER_STORE_FORMAT_XYZW">;
14861495defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format, v4i32, "BUFFER_STORE_FORMAT_XYZW">;
1496+ } // End OtherPredicates = [HasFormattedMUBUFInsts].
14871497
1488- let OtherPredicates = [HasUnpackedD16VMem] in {
1498+ let OtherPredicates = [HasUnpackedD16VMem, HasFormattedMUBUFInsts ] in {
14891499 defm : MUBUF_StoreIntrinsicPat_Common<SIbuffer_store_format_d16, f16, "BUFFER_STORE_FORMAT_D16_X_gfx80">;
14901500 defm : MUBUF_StoreIntrinsicPat_Common<SIbuffer_store_format_d16, i16, "BUFFER_STORE_FORMAT_D16_X_gfx80">;
14911501 defm : MUBUF_StoreIntrinsicPat_Common<SIbuffer_store_format_d16, i32, "BUFFER_STORE_FORMAT_D16_X_gfx80">;
14921502 defm : MUBUF_StoreIntrinsicPat_Common<SIbuffer_store_format_d16, v2i32, "BUFFER_STORE_FORMAT_D16_XY_gfx80">;
14931503 defm : MUBUF_StoreIntrinsicPat_Common<SIbuffer_store_format_d16, v3i32, "BUFFER_STORE_FORMAT_D16_XYZ_gfx80">;
14941504 defm : MUBUF_StoreIntrinsicPat_Common<SIbuffer_store_format_d16, v4i32, "BUFFER_STORE_FORMAT_D16_XYZW_gfx80">;
1495- } // End HasUnpackedD16VMem.
1505+ } // End OtherPredicates = [ HasUnpackedD16VMem, HasFormattedMUBUFInsts] .
14961506
1497- let OtherPredicates = [HasPackedD16VMem] in {
1507+ let OtherPredicates = [HasPackedD16VMem, HasFormattedMUBUFInsts ] in {
14981508 defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format_d16, f16, "BUFFER_STORE_FORMAT_D16_X">;
14991509 defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format_d16, i16, "BUFFER_STORE_FORMAT_D16_X">;
15001510 defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format_d16, i32, "BUFFER_STORE_FORMAT_D16_X">;
@@ -1504,7 +1514,7 @@ let OtherPredicates = [HasPackedD16VMem] in {
15041514 defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format_d16, v4i16, "BUFFER_STORE_FORMAT_D16_XYZ", v3i16>;
15051515 defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format_d16, v4f16, "BUFFER_STORE_FORMAT_D16_XYZW">;
15061516 defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format_d16, v4i16, "BUFFER_STORE_FORMAT_D16_XYZW">;
1507- } // End HasPackedD16VMem.
1517+ } // End OtherPredicates = [ HasPackedD16VMem, HasFormattedMUBUFInsts] .
15081518
15091519foreach vt = Reg32Types.types in {
15101520defm : MUBUF_StoreIntrinsicPat<SIbuffer_store, vt, "BUFFER_STORE_DWORD">;
0 commit comments