@@ -532,7 +532,7 @@ multiclass MUBUF_Pseudo_Load_Pats_Common<string BaseInst, ValueType load_vt = i3
532532}
533533
534534multiclass MUBUF_Pseudo_Load_Pats<string BaseInst, ValueType load_vt = i32, SDPatternOperator ld = null_frag>{
535- let SubtargetPredicate = HasUnrestrictedSOffset in {
535+ let OtherPredicates = [ HasUnrestrictedSOffset] in {
536536 defm : MUBUF_Pseudo_Load_Pats_Common<BaseInst, load_vt, ld>;
537537 }
538538 defm : MUBUF_Pseudo_Load_Pats_Common<BaseInst # "_VBUFFER", load_vt, ld>;
@@ -629,7 +629,7 @@ multiclass MUBUF_Pseudo_Store_Pats_Common<string BaseInst, ValueType store_vt =
629629}
630630
631631multiclass MUBUF_Pseudo_Store_Pats<string BaseInst, ValueType store_vt = i32, SDPatternOperator st = null_frag> {
632- let SubtargetPredicate = HasUnrestrictedSOffset in {
632+ let OtherPredicates = [ HasUnrestrictedSOffset] in {
633633 defm : MUBUF_Pseudo_Store_Pats_Common<BaseInst, store_vt, st>;
634634 }
635635 defm : MUBUF_Pseudo_Store_Pats_Common<BaseInst # "_VBUFFER", store_vt, st>;
@@ -1227,12 +1227,12 @@ defm BUFFER_ATOMIC_PK_ADD_F16 : MUBUF_Pseudo_Atomics_NO_RTN <
12271227 "buffer_atomic_pk_add_f16", VGPR_32, v2f16
12281228>;
12291229
1230- let OtherPredicates = [ HasAtomicFaddRtnInsts] in
1230+ let SubtargetPredicate = HasAtomicFaddRtnInsts in
12311231defm BUFFER_ATOMIC_ADD_F32 : MUBUF_Pseudo_Atomics_RTN<
12321232 "buffer_atomic_add_f32", VGPR_32, f32, null_frag
12331233>;
12341234
1235- let OtherPredicates = [ HasAtomicBufferGlobalPkAddF16Insts] in
1235+ let SubtargetPredicate = HasAtomicBufferGlobalPkAddF16Insts in
12361236defm BUFFER_ATOMIC_PK_ADD_F16 : MUBUF_Pseudo_Atomics_RTN <
12371237 "buffer_atomic_pk_add_f16", VGPR_32, v2f16, null_frag
12381238>;
@@ -1699,9 +1699,11 @@ multiclass SIBufferAtomicPat_Common<string OpPrefix, ValueType vt, string Inst,
16991699
17001700multiclass SIBufferAtomicPat<string OpPrefix, ValueType vt, string Inst,
17011701 list<string> RtnModes = ["ret", "noret"]> {
1702- let SubtargetPredicate = HasUnrestrictedSOffset in {
1702+ let OtherPredicates = [ HasUnrestrictedSOffset] in {
17031703 defm : SIBufferAtomicPat_Common<OpPrefix, vt, Inst, RtnModes>;
17041704 }
1705+
1706+ // FIXME: This needs a !HasUnrestrictedSOffset predicate
17051707 defm : SIBufferAtomicPat_Common<OpPrefix, vt, Inst # "_VBUFFER", RtnModes>;
17061708}
17071709
@@ -1732,18 +1734,19 @@ defm : SIBufferAtomicPat<"SIbuffer_atomic_xor", i64, "BUFFER_ATOMIC_XOR_X2">;
17321734defm : SIBufferAtomicPat<"SIbuffer_atomic_inc", i64, "BUFFER_ATOMIC_INC_X2">;
17331735defm : SIBufferAtomicPat<"SIbuffer_atomic_dec", i64, "BUFFER_ATOMIC_DEC_X2">;
17341736
1735- let OtherPredicates = [ HasAtomicCSubNoRtnInsts] in
1737+ let SubtargetPredicate = HasAtomicCSubNoRtnInsts in
17361738defm : SIBufferAtomicPat<"SIbuffer_atomic_csub", i32, "BUFFER_ATOMIC_CSUB", ["noret"]>;
17371739
17381740let SubtargetPredicate = isGFX12Plus in {
17391741 defm : SIBufferAtomicPat_Common<"SIbuffer_atomic_fadd", v2bf16, "BUFFER_ATOMIC_PK_ADD_BF16_VBUFFER">;
17401742 defm : SIBufferAtomicPat_Common<"SIbuffer_atomic_cond_sub_u32", i32, "BUFFER_ATOMIC_COND_SUB_U32_VBUFFER", ["ret"]>;
1743+ }
17411744
1742- let OtherPredicates = [ HasAtomicCSubNoRtnInsts] in
1743- defm : SIBufferAtomicPat_Common<"SIbuffer_atomic_cond_sub_u32", i32, "BUFFER_ATOMIC_COND_SUB_U32_VBUFFER", ["noret"]>;
1745+ let SubtargetPredicate = HasAtomicCSubNoRtnInsts in {
1746+ defm : SIBufferAtomicPat_Common<"SIbuffer_atomic_cond_sub_u32", i32, "BUFFER_ATOMIC_COND_SUB_U32_VBUFFER", ["noret"]>;
17441747}
17451748
1746- let OtherPredicates = [ isGFX6GFX7GFX10Plus] in {
1749+ let SubtargetPredicate = isGFX6GFX7GFX10Plus in {
17471750 defm : SIBufferAtomicPat<"SIbuffer_atomic_fmin", f32, "BUFFER_ATOMIC_FMIN">;
17481751 defm : SIBufferAtomicPat<"SIbuffer_atomic_fmax", f32, "BUFFER_ATOMIC_FMAX">;
17491752}
@@ -1803,29 +1806,21 @@ multiclass BufferAtomicPatterns_NO_RTN<SDPatternOperator name, ValueType vt,
18031806 defm : BufferAtomicPatterns_NO_RTN_Common<name, vt, opcode # "_VBUFFER">;
18041807}
18051808
1806- let OtherPredicates = [ HasAtomicFaddNoRtnInsts] in
1809+ let SubtargetPredicate = HasAtomicFaddNoRtnInsts in
18071810 defm : SIBufferAtomicPat<"SIbuffer_atomic_fadd", f32, "BUFFER_ATOMIC_ADD_F32", ["noret"]>;
18081811
1809- let OtherPredicates = [HasAtomicBufferGlobalPkAddF16NoRtnInsts] in {
1810- let SubtargetPredicate = isGFX9Only in
1811- defm : SIBufferAtomicPat_Common<"SIbuffer_atomic_fadd", v2f16, "BUFFER_ATOMIC_PK_ADD_F16", ["noret"]>;
1812-
1813- let SubtargetPredicate = isGFX12Plus in
1814- defm : SIBufferAtomicPat_Common<"SIbuffer_atomic_fadd", v2f16, "BUFFER_ATOMIC_PK_ADD_F16_VBUFFER", ["noret"]>;
1815- } // End OtherPredicates = [HasAtomicBufferGlobalPkAddF16NoRtnInsts]
1812+ let SubtargetPredicate = HasAtomicBufferGlobalPkAddF16NoRtnInsts in {
1813+ defm : SIBufferAtomicPat<"SIbuffer_atomic_fadd", v2f16, "BUFFER_ATOMIC_PK_ADD_F16", ["noret"]>;
1814+ } // End SubtargetPredicate = HasAtomicBufferGlobalPkAddF16NoRtnInsts
18161815
1817- let OtherPredicates = [ HasAtomicFaddRtnInsts] in
1816+ let SubtargetPredicate = HasAtomicFaddRtnInsts in
18181817 defm : SIBufferAtomicPat<"SIbuffer_atomic_fadd", f32, "BUFFER_ATOMIC_ADD_F32", ["ret"]>;
18191818
1820- let OtherPredicates = [HasAtomicBufferGlobalPkAddF16Insts] in {
1821- let SubtargetPredicate = isGFX9Only in
1822- defm : SIBufferAtomicPat_Common<"SIbuffer_atomic_fadd", v2f16, "BUFFER_ATOMIC_PK_ADD_F16", ["ret"]>;
1823-
1824- let SubtargetPredicate = isGFX12Plus in
1825- defm : SIBufferAtomicPat_Common<"SIbuffer_atomic_fadd", v2f16, "BUFFER_ATOMIC_PK_ADD_F16_VBUFFER", ["ret"]>;
1826- } // End OtherPredicates = [HasAtomicBufferGlobalPkAddF16Insts]
1819+ let SubtargetPredicate = HasAtomicBufferGlobalPkAddF16Insts in {
1820+ defm : SIBufferAtomicPat<"SIbuffer_atomic_fadd", v2f16, "BUFFER_ATOMIC_PK_ADD_F16", ["ret"]>;
1821+ } // End SubtargetPredicate = HasAtomicBufferGlobalPkAddF16Insts
18271822
1828- let OtherPredicates = [ HasBufferFlatGlobalAtomicsF64] in {
1823+ let SubtargetPredicate = HasBufferFlatGlobalAtomicsF64 in {
18291824 defm : SIBufferAtomicPat<"SIbuffer_atomic_fadd", f64, "BUFFER_ATOMIC_ADD_F64">;
18301825 defm : SIBufferAtomicPat<"SIbuffer_atomic_fmin", f64, "BUFFER_ATOMIC_MIN_F64">;
18311826 defm : SIBufferAtomicPat<"SIbuffer_atomic_fmax", f64, "BUFFER_ATOMIC_MAX_F64">;
@@ -1901,7 +1896,7 @@ multiclass SIBufferAtomicCmpSwapPat_Common<ValueType vt, ValueType data_vt, stri
19011896}
19021897
19031898multiclass SIBufferAtomicCmpSwapPat<ValueType vt, ValueType data_vt, string Inst> {
1904- let SubtargetPredicate = HasUnrestrictedSOffset in {
1899+ let OtherPredicates = [ HasUnrestrictedSOffset] in {
19051900 defm : SIBufferAtomicCmpSwapPat_Common<vt, data_vt, Inst>;
19061901 }
19071902 defm : SIBufferAtomicCmpSwapPat_Common<vt, data_vt, Inst # "_VBUFFER">;
@@ -1952,7 +1947,7 @@ multiclass MUBUFLoad_PatternOffset_Common <string Instr, ValueType vt,
19521947
19531948multiclass MUBUFLoad_PatternOffset <string Instr, ValueType vt,
19541949 PatFrag ld> {
1955- let SubtargetPredicate = HasUnrestrictedSOffset in {
1950+ let OtherPredicates = [ HasUnrestrictedSOffset] in {
19561951 defm : MUBUFLoad_PatternOffset_Common<Instr, vt, ld>;
19571952 }
19581953 defm : MUBUFLoad_PatternOffset_Common<Instr # "_VBUFFER", vt, ld>;
@@ -2193,7 +2188,7 @@ multiclass MTBUF_LoadIntrinsicPat_Common<SDPatternOperator name, ValueType vt,
21932188
21942189multiclass MTBUF_LoadIntrinsicPat<SDPatternOperator name, ValueType vt,
21952190 string opcode, ValueType memoryVt = vt> {
2196- let SubtargetPredicate = HasUnrestrictedSOffset in {
2191+ let OtherPredicates = [ HasUnrestrictedSOffset] in {
21972192 defm : MTBUF_LoadIntrinsicPat_Common<name, vt, opcode, memoryVt>;
21982193 }
21992194 defm : MTBUF_LoadIntrinsicPat_Common<name, vt, opcode # "_VBUFFER", memoryVt>;
@@ -2208,15 +2203,15 @@ defm : MTBUF_LoadIntrinsicPat<SItbuffer_load, v2f32, "TBUFFER_LOAD_FORMAT_XY">;
22082203defm : MTBUF_LoadIntrinsicPat<SItbuffer_load, v3f32, "TBUFFER_LOAD_FORMAT_XYZ">;
22092204defm : MTBUF_LoadIntrinsicPat<SItbuffer_load, v4f32, "TBUFFER_LOAD_FORMAT_XYZW">;
22102205
2211- let OtherPredicates = [ HasUnpackedD16VMem] in {
2206+ let SubtargetPredicate = HasUnpackedD16VMem in {
22122207 defm : MTBUF_LoadIntrinsicPat_Common<SItbuffer_load_d16, f16, "TBUFFER_LOAD_FORMAT_D16_X_gfx80">;
22132208 defm : MTBUF_LoadIntrinsicPat_Common<SItbuffer_load_d16, i32, "TBUFFER_LOAD_FORMAT_D16_X_gfx80">;
22142209 defm : MTBUF_LoadIntrinsicPat_Common<SItbuffer_load_d16, v2i32, "TBUFFER_LOAD_FORMAT_D16_XY_gfx80">;
22152210 defm : MTBUF_LoadIntrinsicPat_Common<SItbuffer_load_d16, v3i32, "TBUFFER_LOAD_FORMAT_D16_XYZ_gfx80">;
22162211 defm : MTBUF_LoadIntrinsicPat_Common<SItbuffer_load_d16, v4i32, "TBUFFER_LOAD_FORMAT_D16_XYZW_gfx80">;
22172212} // End HasUnpackedD16VMem.
22182213
2219- let OtherPredicates = [ HasPackedD16VMem] in {
2214+ let SubtargetPredicate = HasPackedD16VMem in {
22202215 defm : MTBUF_LoadIntrinsicPat<SItbuffer_load_d16, f16, "TBUFFER_LOAD_FORMAT_D16_X">;
22212216 defm : MTBUF_LoadIntrinsicPat<SItbuffer_load_d16, i32, "TBUFFER_LOAD_FORMAT_D16_X">;
22222217 defm : MTBUF_LoadIntrinsicPat<SItbuffer_load_d16, v2f16, "TBUFFER_LOAD_FORMAT_D16_XY">;
@@ -2265,7 +2260,7 @@ multiclass MTBUF_StoreIntrinsicPat_Common<SDPatternOperator name, ValueType vt,
22652260
22662261multiclass MTBUF_StoreIntrinsicPat<SDPatternOperator name, ValueType vt,
22672262 string opcode, ValueType memoryVt = vt> {
2268- let SubtargetPredicate = HasUnrestrictedSOffset in {
2263+ let OtherPredicates = [ HasUnrestrictedSOffset] in {
22692264 defm : MTBUF_StoreIntrinsicPat_Common<name, vt, opcode, memoryVt>;
22702265 }
22712266 defm : MTBUF_StoreIntrinsicPat_Common<name, vt, opcode # "_VBUFFER", memoryVt>;
@@ -2280,15 +2275,15 @@ defm : MTBUF_StoreIntrinsicPat<SItbuffer_store, v2f32, "TBUFFER_STORE_FORMAT_XY"
22802275defm : MTBUF_StoreIntrinsicPat<SItbuffer_store, v3f32, "TBUFFER_STORE_FORMAT_XYZ">;
22812276defm : MTBUF_StoreIntrinsicPat<SItbuffer_store, v4f32, "TBUFFER_STORE_FORMAT_XYZW">;
22822277
2283- let OtherPredicates = [ HasUnpackedD16VMem] in {
2278+ let SubtargetPredicate = HasUnpackedD16VMem in {
22842279 defm : MTBUF_StoreIntrinsicPat_Common<SItbuffer_store_d16, f16, "TBUFFER_STORE_FORMAT_D16_X_gfx80">;
22852280 defm : MTBUF_StoreIntrinsicPat_Common<SItbuffer_store_d16, i32, "TBUFFER_STORE_FORMAT_D16_X_gfx80">;
22862281 defm : MTBUF_StoreIntrinsicPat_Common<SItbuffer_store_d16, v2i32, "TBUFFER_STORE_FORMAT_D16_XY_gfx80">;
22872282 defm : MTBUF_StoreIntrinsicPat_Common<SItbuffer_store_d16, v3i32, "TBUFFER_STORE_FORMAT_D16_XYZ_gfx80">;
22882283 defm : MTBUF_StoreIntrinsicPat_Common<SItbuffer_store_d16, v4i32, "TBUFFER_STORE_FORMAT_D16_XYZW_gfx80">;
22892284} // End HasUnpackedD16VMem.
22902285
2291- let OtherPredicates = [ HasPackedD16VMem] in {
2286+ let SubtargetPredicate = HasPackedD16VMem in {
22922287 defm : MTBUF_StoreIntrinsicPat<SItbuffer_store_d16, f16, "TBUFFER_STORE_FORMAT_D16_X">;
22932288 defm : MTBUF_StoreIntrinsicPat<SItbuffer_store_d16, i32, "TBUFFER_STORE_FORMAT_D16_X">;
22942289 defm : MTBUF_StoreIntrinsicPat<SItbuffer_store_d16, v2f16, "TBUFFER_STORE_FORMAT_D16_XY">;
@@ -3267,10 +3262,7 @@ defm BUFFER_WBINVL1_VOL : MUBUF_Real_vi <0x3f>;
32673262
32683263
32693264defm BUFFER_ATOMIC_PK_ADD_F16 : MUBUF_Real_Atomic_vi <0x4e>;
3270-
3271- let SubtargetPredicate = HasAtomicFaddNoRtnInsts in {
32723265defm BUFFER_ATOMIC_ADD_F32 : MUBUF_Real_Atomic_vi <0x4d>;
3273- } // End SubtargetPredicate = HasAtomicFaddNoRtnInsts
32743266
32753267let SubtargetPredicate = isGFX90APlus in {
32763268 defm BUFFER_ATOMIC_ADD_F64 : MUBUF_Real_Atomic_vi<0x4f>;
0 commit comments