@@ -845,9 +845,12 @@ multiclass MUBUF_Pseudo_Atomics <string opName,
845
845
// MUBUF Instructions
846
846
//===----------------------------------------------------------------------===//
847
847
848
+ let OtherPredicates = [HasFormattedMUBUFInsts] in
848
849
defm BUFFER_LOAD_FORMAT_X : MUBUF_Pseudo_Loads_Lds <
849
850
"buffer_load_format_x", f32
850
851
>;
852
+
853
+ let SubtargetPredicate = HasFormattedMUBUFInsts in {
851
854
defm BUFFER_LOAD_FORMAT_XY : MUBUF_Pseudo_Loads <
852
855
"buffer_load_format_xy", v2f32
853
856
>;
@@ -927,6 +930,7 @@ let TiedSourceNotRead = 1 in {
927
930
"buffer_store_format_d16_xyzw", v4f16
928
931
>;
929
932
} // End OtherPredicates = [HasPackedD16VMem], D16Buf = 1.
933
+ } // End SubtargetPredicate = HasFormattedMUBUFInsts.
930
934
931
935
defm BUFFER_LOAD_UBYTE : MUBUF_Pseudo_Loads_Lds <
932
936
"buffer_load_ubyte", i32
@@ -1172,6 +1176,7 @@ defm BUFFER_LOAD_SHORT_D16_HI : MUBUF_Pseudo_Loads <
1172
1176
"buffer_load_short_d16_hi", i32, 1
1173
1177
>;
1174
1178
1179
+ let OtherPredicates = [HasFormattedMUBUFInsts] in
1175
1180
defm BUFFER_LOAD_FORMAT_D16_HI_X : MUBUF_Pseudo_Loads <
1176
1181
"buffer_load_format_d16_hi_x", i32
1177
1182
>;
@@ -1185,6 +1190,7 @@ defm BUFFER_STORE_SHORT_D16_HI : MUBUF_Pseudo_Stores <
1185
1190
"buffer_store_short_d16_hi", i32
1186
1191
>;
1187
1192
1193
+ let OtherPredicates = [HasFormattedMUBUFInsts] in
1188
1194
defm BUFFER_STORE_FORMAT_D16_HI_X : MUBUF_Pseudo_Stores <
1189
1195
"buffer_store_format_d16_hi_x", i32
1190
1196
>;
@@ -1366,6 +1372,7 @@ multiclass MUBUF_LoadIntrinsicPat<SDPatternOperator name, ValueType vt,
1366
1372
defm : MUBUF_LoadIntrinsicPat_Common<name, vt, opcode # "_VBUFFER", memoryVt>;
1367
1373
}
1368
1374
1375
+ let OtherPredicates = [HasFormattedMUBUFInsts] in {
1369
1376
defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format, f32, "BUFFER_LOAD_FORMAT_X">;
1370
1377
defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format, i32, "BUFFER_LOAD_FORMAT_X">;
1371
1378
defm : 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
1379
1386
defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format_tfe, v3i32, "BUFFER_LOAD_FORMAT_XY_TFE">;
1380
1387
defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format_tfe, v4i32, "BUFFER_LOAD_FORMAT_XYZ_TFE">;
1381
1388
defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format_tfe, v5i32, "BUFFER_LOAD_FORMAT_XYZW_TFE">;
1389
+ } // End OtherPredicates = [HasFormattedMUBUFInsts].
1382
1390
1383
- let OtherPredicates = [HasUnpackedD16VMem] in {
1391
+ let OtherPredicates = [HasUnpackedD16VMem, HasFormattedMUBUFInsts ] in {
1384
1392
defm : MUBUF_LoadIntrinsicPat_Common<SIbuffer_load_format_d16, f16, "BUFFER_LOAD_FORMAT_D16_X_gfx80">;
1385
1393
defm : MUBUF_LoadIntrinsicPat_Common<SIbuffer_load_format_d16, i16, "BUFFER_LOAD_FORMAT_D16_X_gfx80">;
1386
1394
defm : MUBUF_LoadIntrinsicPat_Common<SIbuffer_load_format_d16, i32, "BUFFER_LOAD_FORMAT_D16_X_gfx80">;
1387
1395
defm : MUBUF_LoadIntrinsicPat_Common<SIbuffer_load_format_d16, v2i32, "BUFFER_LOAD_FORMAT_D16_XY_gfx80">;
1388
1396
defm : MUBUF_LoadIntrinsicPat_Common<SIbuffer_load_format_d16, v3i32, "BUFFER_LOAD_FORMAT_D16_XYZ_gfx80">;
1389
1397
defm : MUBUF_LoadIntrinsicPat_Common<SIbuffer_load_format_d16, v4i32, "BUFFER_LOAD_FORMAT_D16_XYZW_gfx80">;
1390
- } // End HasUnpackedD16VMem.
1398
+ } // End OtherPredicates = [ HasUnpackedD16VMem, HasFormattedMUBUFInsts] .
1391
1399
1392
- let OtherPredicates = [HasPackedD16VMem] in {
1400
+ let OtherPredicates = [HasPackedD16VMem, HasFormattedMUBUFInsts ] in {
1393
1401
defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format_d16, f16, "BUFFER_LOAD_FORMAT_D16_X">;
1394
1402
defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format_d16, i16, "BUFFER_LOAD_FORMAT_D16_X">;
1395
1403
defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format_d16, i32, "BUFFER_LOAD_FORMAT_D16_X">;
@@ -1399,7 +1407,7 @@ let OtherPredicates = [HasPackedD16VMem] in {
1399
1407
defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format_d16, v4i16, "BUFFER_LOAD_FORMAT_D16_XYZ", v3i16>;
1400
1408
defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format_d16, v4f16, "BUFFER_LOAD_FORMAT_D16_XYZW">;
1401
1409
defm : MUBUF_LoadIntrinsicPat<SIbuffer_load_format_d16, v4i16, "BUFFER_LOAD_FORMAT_D16_XYZW">;
1402
- } // End HasPackedD16VMem.
1410
+ } // End OtherPredicates = [ HasPackedD16VMem, HasFormattedMUBUFInsts] .
1403
1411
1404
1412
foreach vt = Reg32Types.types in {
1405
1413
defm : MUBUF_LoadIntrinsicPat<SIbuffer_load, vt, "BUFFER_LOAD_DWORD">;
@@ -1475,6 +1483,7 @@ multiclass MUBUF_StoreIntrinsicPat<SDPatternOperator name, ValueType vt,
1475
1483
defm : MUBUF_StoreIntrinsicPat_Common<name, vt, opcode # "_VBUFFER", memoryVt>;
1476
1484
}
1477
1485
1486
+ let OtherPredicates = [HasFormattedMUBUFInsts] in {
1478
1487
defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format, f32, "BUFFER_STORE_FORMAT_X">;
1479
1488
defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format, i32, "BUFFER_STORE_FORMAT_X">;
1480
1489
defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format, v2f32, "BUFFER_STORE_FORMAT_XY">;
@@ -1484,17 +1493,18 @@ defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format, v3f32, "BUFFER_STORE_FORMA
1484
1493
defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format, v3i32, "BUFFER_STORE_FORMAT_XYZ">;
1485
1494
defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format, v4f32, "BUFFER_STORE_FORMAT_XYZW">;
1486
1495
defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format, v4i32, "BUFFER_STORE_FORMAT_XYZW">;
1496
+ } // End OtherPredicates = [HasFormattedMUBUFInsts].
1487
1497
1488
- let OtherPredicates = [HasUnpackedD16VMem] in {
1498
+ let OtherPredicates = [HasUnpackedD16VMem, HasFormattedMUBUFInsts ] in {
1489
1499
defm : MUBUF_StoreIntrinsicPat_Common<SIbuffer_store_format_d16, f16, "BUFFER_STORE_FORMAT_D16_X_gfx80">;
1490
1500
defm : MUBUF_StoreIntrinsicPat_Common<SIbuffer_store_format_d16, i16, "BUFFER_STORE_FORMAT_D16_X_gfx80">;
1491
1501
defm : MUBUF_StoreIntrinsicPat_Common<SIbuffer_store_format_d16, i32, "BUFFER_STORE_FORMAT_D16_X_gfx80">;
1492
1502
defm : MUBUF_StoreIntrinsicPat_Common<SIbuffer_store_format_d16, v2i32, "BUFFER_STORE_FORMAT_D16_XY_gfx80">;
1493
1503
defm : MUBUF_StoreIntrinsicPat_Common<SIbuffer_store_format_d16, v3i32, "BUFFER_STORE_FORMAT_D16_XYZ_gfx80">;
1494
1504
defm : MUBUF_StoreIntrinsicPat_Common<SIbuffer_store_format_d16, v4i32, "BUFFER_STORE_FORMAT_D16_XYZW_gfx80">;
1495
- } // End HasUnpackedD16VMem.
1505
+ } // End OtherPredicates = [ HasUnpackedD16VMem, HasFormattedMUBUFInsts] .
1496
1506
1497
- let OtherPredicates = [HasPackedD16VMem] in {
1507
+ let OtherPredicates = [HasPackedD16VMem, HasFormattedMUBUFInsts ] in {
1498
1508
defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format_d16, f16, "BUFFER_STORE_FORMAT_D16_X">;
1499
1509
defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format_d16, i16, "BUFFER_STORE_FORMAT_D16_X">;
1500
1510
defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format_d16, i32, "BUFFER_STORE_FORMAT_D16_X">;
@@ -1504,7 +1514,7 @@ let OtherPredicates = [HasPackedD16VMem] in {
1504
1514
defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format_d16, v4i16, "BUFFER_STORE_FORMAT_D16_XYZ", v3i16>;
1505
1515
defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format_d16, v4f16, "BUFFER_STORE_FORMAT_D16_XYZW">;
1506
1516
defm : MUBUF_StoreIntrinsicPat<SIbuffer_store_format_d16, v4i16, "BUFFER_STORE_FORMAT_D16_XYZW">;
1507
- } // End HasPackedD16VMem.
1517
+ } // End OtherPredicates = [ HasPackedD16VMem, HasFormattedMUBUFInsts] .
1508
1518
1509
1519
foreach vt = Reg32Types.types in {
1510
1520
defm : MUBUF_StoreIntrinsicPat<SIbuffer_store, vt, "BUFFER_STORE_DWORD">;
0 commit comments