@@ -2301,7 +2301,8 @@ class MUBUF_Real_gfx11<bits<8> op, MUBUF_Pseudo ps,
2301
2301
string real_name = ps.Mnemonic> :
2302
2302
Base_MUBUF_Real_gfx6_gfx7_gfx10_gfx11<ps, SIEncodingFamily.GFX11, real_name> {
2303
2303
let Inst{12} = !if(ps.has_slc, cpol{CPolBit.SLC}, ?);
2304
- let Inst{13} = !if(ps.has_dlc, cpol{CPolBit.DLC}, ps.dlc_value);
2304
+ // In GFX11 dlc is applicable to all loads/stores/atomics.
2305
+ let Inst{13} = !if(!or(ps.mayLoad, ps.mayStore), cpol{CPolBit.DLC}, ps.dlc_value);
2305
2306
let Inst{14} = !if(ps.has_glc, cpol{CPolBit.GLC}, ps.glc_value);
2306
2307
let Inst{25-18} = op;
2307
2308
let Inst{53} = ps.tfe;
@@ -2311,12 +2312,6 @@ class MUBUF_Real_gfx11<bits<8> op, MUBUF_Pseudo ps,
2311
2312
let DecoderNamespace = "GFX11";
2312
2313
}
2313
2314
2314
- class Base_MUBUF_Real_Atomic_gfx11<bits<8> op, MUBUF_Pseudo ps,
2315
- string real_name> :
2316
- MUBUF_Real_gfx11<op, ps, real_name> {
2317
- let Inst{13} = cpol{CPolBit.DLC};
2318
- }
2319
-
2320
2315
class Base_MUBUF_Real_gfx6_gfx7_gfx10<bits<7> op, MUBUF_Pseudo ps, int ef> :
2321
2316
Base_MUBUF_Real_gfx6_gfx7_gfx10_gfx11<ps, ef> {
2322
2317
let Inst{12} = ps.offen;
@@ -2499,7 +2494,7 @@ multiclass MUBUF_Real_AllAddr_gfx11_gfx12_Renamed<bits<8> op, string real_name>
2499
2494
2500
2495
class MUBUF_Real_Atomic_gfx11_impl<bits<8> op, string ps_name,
2501
2496
string real_name> :
2502
- Base_MUBUF_Real_Atomic_gfx11 <op, !cast<MUBUF_Pseudo>(ps_name), real_name>;
2497
+ MUBUF_Real_gfx11 <op, !cast<MUBUF_Pseudo>(ps_name), real_name>;
2503
2498
2504
2499
class MUBUF_Real_Atomic_gfx12_impl<bits<8> op, string ps_name,
2505
2500
string real_name> :
0 commit comments