@@ -532,7 +532,7 @@ multiclass MUBUF_Pseudo_Load_Pats_Common<string BaseInst, ValueType load_vt = i3
532
532
}
533
533
534
534
multiclass MUBUF_Pseudo_Load_Pats<string BaseInst, ValueType load_vt = i32, SDPatternOperator ld = null_frag>{
535
- let SubtargetPredicate = HasUnrestrictedSOffset in {
535
+ let OtherPredicates = [ HasUnrestrictedSOffset] in {
536
536
defm : MUBUF_Pseudo_Load_Pats_Common<BaseInst, load_vt, ld>;
537
537
}
538
538
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 =
629
629
}
630
630
631
631
multiclass MUBUF_Pseudo_Store_Pats<string BaseInst, ValueType store_vt = i32, SDPatternOperator st = null_frag> {
632
- let SubtargetPredicate = HasUnrestrictedSOffset in {
632
+ let OtherPredicates = [ HasUnrestrictedSOffset] in {
633
633
defm : MUBUF_Pseudo_Store_Pats_Common<BaseInst, store_vt, st>;
634
634
}
635
635
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 <
1227
1227
"buffer_atomic_pk_add_f16", VGPR_32, v2f16
1228
1228
>;
1229
1229
1230
- let OtherPredicates = [ HasAtomicFaddRtnInsts] in
1230
+ let SubtargetPredicate = HasAtomicFaddRtnInsts in
1231
1231
defm BUFFER_ATOMIC_ADD_F32 : MUBUF_Pseudo_Atomics_RTN<
1232
1232
"buffer_atomic_add_f32", VGPR_32, f32, null_frag
1233
1233
>;
1234
1234
1235
- let OtherPredicates = [ HasAtomicBufferGlobalPkAddF16Insts] in
1235
+ let SubtargetPredicate = HasAtomicBufferGlobalPkAddF16Insts in
1236
1236
defm BUFFER_ATOMIC_PK_ADD_F16 : MUBUF_Pseudo_Atomics_RTN <
1237
1237
"buffer_atomic_pk_add_f16", VGPR_32, v2f16, null_frag
1238
1238
>;
@@ -1699,9 +1699,11 @@ multiclass SIBufferAtomicPat_Common<string OpPrefix, ValueType vt, string Inst,
1699
1699
1700
1700
multiclass SIBufferAtomicPat<string OpPrefix, ValueType vt, string Inst,
1701
1701
list<string> RtnModes = ["ret", "noret"]> {
1702
- let SubtargetPredicate = HasUnrestrictedSOffset in {
1702
+ let OtherPredicates = [ HasUnrestrictedSOffset] in {
1703
1703
defm : SIBufferAtomicPat_Common<OpPrefix, vt, Inst, RtnModes>;
1704
1704
}
1705
+
1706
+ // FIXME: This needs a !HasUnrestrictedSOffset predicate
1705
1707
defm : SIBufferAtomicPat_Common<OpPrefix, vt, Inst # "_VBUFFER", RtnModes>;
1706
1708
}
1707
1709
@@ -1732,18 +1734,19 @@ defm : SIBufferAtomicPat<"SIbuffer_atomic_xor", i64, "BUFFER_ATOMIC_XOR_X2">;
1732
1734
defm : SIBufferAtomicPat<"SIbuffer_atomic_inc", i64, "BUFFER_ATOMIC_INC_X2">;
1733
1735
defm : SIBufferAtomicPat<"SIbuffer_atomic_dec", i64, "BUFFER_ATOMIC_DEC_X2">;
1734
1736
1735
- let OtherPredicates = [ HasAtomicCSubNoRtnInsts] in
1737
+ let SubtargetPredicate = HasAtomicCSubNoRtnInsts in
1736
1738
defm : SIBufferAtomicPat<"SIbuffer_atomic_csub", i32, "BUFFER_ATOMIC_CSUB", ["noret"]>;
1737
1739
1738
1740
let SubtargetPredicate = isGFX12Plus in {
1739
1741
defm : SIBufferAtomicPat_Common<"SIbuffer_atomic_fadd", v2bf16, "BUFFER_ATOMIC_PK_ADD_BF16_VBUFFER">;
1740
1742
defm : SIBufferAtomicPat_Common<"SIbuffer_atomic_cond_sub_u32", i32, "BUFFER_ATOMIC_COND_SUB_U32_VBUFFER", ["ret"]>;
1743
+ }
1741
1744
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"]>;
1744
1747
}
1745
1748
1746
- let OtherPredicates = [ isGFX6GFX7GFX10Plus] in {
1749
+ let SubtargetPredicate = isGFX6GFX7GFX10Plus in {
1747
1750
defm : SIBufferAtomicPat<"SIbuffer_atomic_fmin", f32, "BUFFER_ATOMIC_FMIN">;
1748
1751
defm : SIBufferAtomicPat<"SIbuffer_atomic_fmax", f32, "BUFFER_ATOMIC_FMAX">;
1749
1752
}
@@ -1803,29 +1806,21 @@ multiclass BufferAtomicPatterns_NO_RTN<SDPatternOperator name, ValueType vt,
1803
1806
defm : BufferAtomicPatterns_NO_RTN_Common<name, vt, opcode # "_VBUFFER">;
1804
1807
}
1805
1808
1806
- let OtherPredicates = [ HasAtomicFaddNoRtnInsts] in
1809
+ let SubtargetPredicate = HasAtomicFaddNoRtnInsts in
1807
1810
defm : SIBufferAtomicPat<"SIbuffer_atomic_fadd", f32, "BUFFER_ATOMIC_ADD_F32", ["noret"]>;
1808
1811
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
1816
1815
1817
- let OtherPredicates = [ HasAtomicFaddRtnInsts] in
1816
+ let SubtargetPredicate = HasAtomicFaddRtnInsts in
1818
1817
defm : SIBufferAtomicPat<"SIbuffer_atomic_fadd", f32, "BUFFER_ATOMIC_ADD_F32", ["ret"]>;
1819
1818
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
1827
1822
1828
- let OtherPredicates = [ HasBufferFlatGlobalAtomicsF64] in {
1823
+ let SubtargetPredicate = HasBufferFlatGlobalAtomicsF64 in {
1829
1824
defm : SIBufferAtomicPat<"SIbuffer_atomic_fadd", f64, "BUFFER_ATOMIC_ADD_F64">;
1830
1825
defm : SIBufferAtomicPat<"SIbuffer_atomic_fmin", f64, "BUFFER_ATOMIC_MIN_F64">;
1831
1826
defm : SIBufferAtomicPat<"SIbuffer_atomic_fmax", f64, "BUFFER_ATOMIC_MAX_F64">;
@@ -1901,7 +1896,7 @@ multiclass SIBufferAtomicCmpSwapPat_Common<ValueType vt, ValueType data_vt, stri
1901
1896
}
1902
1897
1903
1898
multiclass SIBufferAtomicCmpSwapPat<ValueType vt, ValueType data_vt, string Inst> {
1904
- let SubtargetPredicate = HasUnrestrictedSOffset in {
1899
+ let OtherPredicates = [ HasUnrestrictedSOffset] in {
1905
1900
defm : SIBufferAtomicCmpSwapPat_Common<vt, data_vt, Inst>;
1906
1901
}
1907
1902
defm : SIBufferAtomicCmpSwapPat_Common<vt, data_vt, Inst # "_VBUFFER">;
@@ -1952,7 +1947,7 @@ multiclass MUBUFLoad_PatternOffset_Common <string Instr, ValueType vt,
1952
1947
1953
1948
multiclass MUBUFLoad_PatternOffset <string Instr, ValueType vt,
1954
1949
PatFrag ld> {
1955
- let SubtargetPredicate = HasUnrestrictedSOffset in {
1950
+ let OtherPredicates = [ HasUnrestrictedSOffset] in {
1956
1951
defm : MUBUFLoad_PatternOffset_Common<Instr, vt, ld>;
1957
1952
}
1958
1953
defm : MUBUFLoad_PatternOffset_Common<Instr # "_VBUFFER", vt, ld>;
@@ -2193,7 +2188,7 @@ multiclass MTBUF_LoadIntrinsicPat_Common<SDPatternOperator name, ValueType vt,
2193
2188
2194
2189
multiclass MTBUF_LoadIntrinsicPat<SDPatternOperator name, ValueType vt,
2195
2190
string opcode, ValueType memoryVt = vt> {
2196
- let SubtargetPredicate = HasUnrestrictedSOffset in {
2191
+ let OtherPredicates = [ HasUnrestrictedSOffset] in {
2197
2192
defm : MTBUF_LoadIntrinsicPat_Common<name, vt, opcode, memoryVt>;
2198
2193
}
2199
2194
defm : MTBUF_LoadIntrinsicPat_Common<name, vt, opcode # "_VBUFFER", memoryVt>;
@@ -2208,15 +2203,15 @@ defm : MTBUF_LoadIntrinsicPat<SItbuffer_load, v2f32, "TBUFFER_LOAD_FORMAT_XY">;
2208
2203
defm : MTBUF_LoadIntrinsicPat<SItbuffer_load, v3f32, "TBUFFER_LOAD_FORMAT_XYZ">;
2209
2204
defm : MTBUF_LoadIntrinsicPat<SItbuffer_load, v4f32, "TBUFFER_LOAD_FORMAT_XYZW">;
2210
2205
2211
- let OtherPredicates = [ HasUnpackedD16VMem] in {
2206
+ let SubtargetPredicate = HasUnpackedD16VMem in {
2212
2207
defm : MTBUF_LoadIntrinsicPat_Common<SItbuffer_load_d16, f16, "TBUFFER_LOAD_FORMAT_D16_X_gfx80">;
2213
2208
defm : MTBUF_LoadIntrinsicPat_Common<SItbuffer_load_d16, i32, "TBUFFER_LOAD_FORMAT_D16_X_gfx80">;
2214
2209
defm : MTBUF_LoadIntrinsicPat_Common<SItbuffer_load_d16, v2i32, "TBUFFER_LOAD_FORMAT_D16_XY_gfx80">;
2215
2210
defm : MTBUF_LoadIntrinsicPat_Common<SItbuffer_load_d16, v3i32, "TBUFFER_LOAD_FORMAT_D16_XYZ_gfx80">;
2216
2211
defm : MTBUF_LoadIntrinsicPat_Common<SItbuffer_load_d16, v4i32, "TBUFFER_LOAD_FORMAT_D16_XYZW_gfx80">;
2217
2212
} // End HasUnpackedD16VMem.
2218
2213
2219
- let OtherPredicates = [ HasPackedD16VMem] in {
2214
+ let SubtargetPredicate = HasPackedD16VMem in {
2220
2215
defm : MTBUF_LoadIntrinsicPat<SItbuffer_load_d16, f16, "TBUFFER_LOAD_FORMAT_D16_X">;
2221
2216
defm : MTBUF_LoadIntrinsicPat<SItbuffer_load_d16, i32, "TBUFFER_LOAD_FORMAT_D16_X">;
2222
2217
defm : MTBUF_LoadIntrinsicPat<SItbuffer_load_d16, v2f16, "TBUFFER_LOAD_FORMAT_D16_XY">;
@@ -2265,7 +2260,7 @@ multiclass MTBUF_StoreIntrinsicPat_Common<SDPatternOperator name, ValueType vt,
2265
2260
2266
2261
multiclass MTBUF_StoreIntrinsicPat<SDPatternOperator name, ValueType vt,
2267
2262
string opcode, ValueType memoryVt = vt> {
2268
- let SubtargetPredicate = HasUnrestrictedSOffset in {
2263
+ let OtherPredicates = [ HasUnrestrictedSOffset] in {
2269
2264
defm : MTBUF_StoreIntrinsicPat_Common<name, vt, opcode, memoryVt>;
2270
2265
}
2271
2266
defm : MTBUF_StoreIntrinsicPat_Common<name, vt, opcode # "_VBUFFER", memoryVt>;
@@ -2280,15 +2275,15 @@ defm : MTBUF_StoreIntrinsicPat<SItbuffer_store, v2f32, "TBUFFER_STORE_FORMAT_XY"
2280
2275
defm : MTBUF_StoreIntrinsicPat<SItbuffer_store, v3f32, "TBUFFER_STORE_FORMAT_XYZ">;
2281
2276
defm : MTBUF_StoreIntrinsicPat<SItbuffer_store, v4f32, "TBUFFER_STORE_FORMAT_XYZW">;
2282
2277
2283
- let OtherPredicates = [ HasUnpackedD16VMem] in {
2278
+ let SubtargetPredicate = HasUnpackedD16VMem in {
2284
2279
defm : MTBUF_StoreIntrinsicPat_Common<SItbuffer_store_d16, f16, "TBUFFER_STORE_FORMAT_D16_X_gfx80">;
2285
2280
defm : MTBUF_StoreIntrinsicPat_Common<SItbuffer_store_d16, i32, "TBUFFER_STORE_FORMAT_D16_X_gfx80">;
2286
2281
defm : MTBUF_StoreIntrinsicPat_Common<SItbuffer_store_d16, v2i32, "TBUFFER_STORE_FORMAT_D16_XY_gfx80">;
2287
2282
defm : MTBUF_StoreIntrinsicPat_Common<SItbuffer_store_d16, v3i32, "TBUFFER_STORE_FORMAT_D16_XYZ_gfx80">;
2288
2283
defm : MTBUF_StoreIntrinsicPat_Common<SItbuffer_store_d16, v4i32, "TBUFFER_STORE_FORMAT_D16_XYZW_gfx80">;
2289
2284
} // End HasUnpackedD16VMem.
2290
2285
2291
- let OtherPredicates = [ HasPackedD16VMem] in {
2286
+ let SubtargetPredicate = HasPackedD16VMem in {
2292
2287
defm : MTBUF_StoreIntrinsicPat<SItbuffer_store_d16, f16, "TBUFFER_STORE_FORMAT_D16_X">;
2293
2288
defm : MTBUF_StoreIntrinsicPat<SItbuffer_store_d16, i32, "TBUFFER_STORE_FORMAT_D16_X">;
2294
2289
defm : MTBUF_StoreIntrinsicPat<SItbuffer_store_d16, v2f16, "TBUFFER_STORE_FORMAT_D16_XY">;
@@ -3267,10 +3262,7 @@ defm BUFFER_WBINVL1_VOL : MUBUF_Real_vi <0x3f>;
3267
3262
3268
3263
3269
3264
defm BUFFER_ATOMIC_PK_ADD_F16 : MUBUF_Real_Atomic_vi <0x4e>;
3270
-
3271
- let SubtargetPredicate = HasAtomicFaddNoRtnInsts in {
3272
3265
defm BUFFER_ATOMIC_ADD_F32 : MUBUF_Real_Atomic_vi <0x4d>;
3273
- } // End SubtargetPredicate = HasAtomicFaddNoRtnInsts
3274
3266
3275
3267
let SubtargetPredicate = isGFX90APlus in {
3276
3268
defm BUFFER_ATOMIC_ADD_F64 : MUBUF_Real_Atomic_vi<0x4f>;
0 commit comments