Skip to content

Commit e49479b

Browse files
authored
[AMDGPU] Remove unneeded BUF _impl multiclasses. NFC. (#84034)
Remove MUBUF_Real_gfx11_impl and others. By converting the underlying class MUBUF_Real_gfx11 into a multiclass, the _impl wrapper is no longer needed.
1 parent 7df43cc commit e49479b

File tree

1 file changed

+45
-59
lines changed

1 file changed

+45
-59
lines changed

llvm/lib/Target/AMDGPU/BUFInstructions.td

Lines changed: 45 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -2297,19 +2297,20 @@ class Base_MUBUF_Real_gfx6_gfx7_gfx10_gfx11 <MUBUF_Pseudo ps, int ef,
22972297
let Inst{63-56} = !if(ps.has_soffset, soffset, ?);
22982298
}
22992299

2300-
class MUBUF_Real_gfx11<bits<8> op, MUBUF_Pseudo ps,
2301-
string real_name = ps.Mnemonic> :
2302-
Base_MUBUF_Real_gfx6_gfx7_gfx10_gfx11<ps, SIEncodingFamily.GFX11, real_name> {
2303-
let Inst{12} = !if(ps.has_slc, cpol{CPolBit.SLC}, ?);
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);
2306-
let Inst{14} = !if(ps.has_glc, cpol{CPolBit.GLC}, ps.glc_value);
2307-
let Inst{25-18} = op;
2308-
let Inst{53} = ps.tfe;
2309-
let Inst{54} = ps.offen;
2310-
let Inst{55} = ps.idxen;
2311-
let AssemblerPredicate = isGFX11Only;
2312-
let DecoderNamespace = "GFX11";
2300+
multiclass MUBUF_Real_gfx11<bits<8> op, string real_name = !cast<MUBUF_Pseudo>(NAME).Mnemonic> {
2301+
defvar ps = !cast<MUBUF_Pseudo>(NAME);
2302+
def _gfx11 : Base_MUBUF_Real_gfx6_gfx7_gfx10_gfx11<ps, SIEncodingFamily.GFX11, real_name> {
2303+
let Inst{12} = !if(ps.has_slc, cpol{CPolBit.SLC}, ?);
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);
2306+
let Inst{14} = !if(ps.has_glc, cpol{CPolBit.GLC}, ps.glc_value);
2307+
let Inst{25-18} = op;
2308+
let Inst{53} = ps.tfe;
2309+
let Inst{54} = ps.offen;
2310+
let Inst{55} = ps.idxen;
2311+
let AssemblerPredicate = isGFX11Only;
2312+
let DecoderNamespace = "GFX11";
2313+
}
23132314
}
23142315

23152316
class Base_MUBUF_Real_gfx6_gfx7_gfx10<bits<7> op, MUBUF_Pseudo ps, int ef> :
@@ -2415,18 +2416,19 @@ class VBUFFER_Real <BUF_Pseudo ps, string real_name = ps.Mnemonic> :
24152416
let Inst{31-26} = 0b110001;
24162417
}
24172418

2418-
class VBUFFER_MUBUF_Real_gfx12<bits<8> op, MUBUF_Pseudo ps,
2419-
string real_name = ps.Mnemonic> :
2420-
VBUFFER_Real<ps, real_name>, SIMCInstr<ps.PseudoInstr, SIEncodingFamily.GFX12> {
2421-
2422-
let MUBUF = 1;
2423-
2424-
// Set the last bit of format to 1 to avoid round-trip issues, as some tools
2425-
// print BUF_FMT_INVALID for format 0.
2426-
let Inst{55} = 0b1;
2427-
let Inst{21-14} = op;
2428-
let AssemblerPredicate = isGFX12Only;
2429-
let DecoderNamespace = "GFX12";
2419+
multiclass VBUFFER_MUBUF_Real_gfx12<bits<8> op, string real_name> {
2420+
defvar ps = !cast<MUBUF_Pseudo>(NAME);
2421+
def _gfx12 : VBUFFER_Real<ps, real_name>,
2422+
SIMCInstr<ps.PseudoInstr, SIEncodingFamily.GFX12> {
2423+
let MUBUF = 1;
2424+
2425+
// Set the last bit of format to 1 to avoid round-trip issues, as some tools
2426+
// print BUF_FMT_INVALID for format 0.
2427+
let Inst{55} = 0b1;
2428+
let Inst{21-14} = op;
2429+
let AssemblerPredicate = isGFX12Only;
2430+
let DecoderNamespace = "GFX12";
2431+
}
24302432
}
24312433

24322434
multiclass VBUFFER_MTBUF_Real_gfx12<bits<4> op, string real_name> {
@@ -2464,26 +2466,18 @@ class Mnem_gfx11 <string mnemonic, string real_name> :
24642466
class Mnem_gfx12 <string mnemonic, string real_name> :
24652467
MnemonicAlias<mnemonic, real_name>, Requires<[isGFX12Plus]>;
24662468

2467-
multiclass MUBUF_Real_gfx11_impl<bits<8> op, string real_name> {
2468-
def _gfx11 : MUBUF_Real_gfx11<op, !cast<MUBUF_Pseudo>(NAME), real_name>;
2469-
}
2470-
2471-
multiclass VBUFFER_MUBUF_Real_gfx12_impl<bits<8> op, string real_name> {
2472-
def _gfx12 : VBUFFER_MUBUF_Real_gfx12<op, !cast<MUBUF_Pseudo>(NAME), real_name>;
2473-
}
2474-
24752469
multiclass MUBUF_Real_AllAddr_gfx11_Renamed_Impl2<bits<8> op, string real_name> {
2476-
defm _BOTHEN : MUBUF_Real_gfx11_impl<op, real_name>;
2477-
defm _IDXEN : MUBUF_Real_gfx11_impl<op, real_name>;
2478-
defm _OFFEN : MUBUF_Real_gfx11_impl<op, real_name>;
2479-
defm _OFFSET : MUBUF_Real_gfx11_impl<op, real_name>;
2470+
defm _BOTHEN : MUBUF_Real_gfx11<op, real_name>;
2471+
defm _IDXEN : MUBUF_Real_gfx11<op, real_name>;
2472+
defm _OFFEN : MUBUF_Real_gfx11<op, real_name>;
2473+
defm _OFFSET : MUBUF_Real_gfx11<op, real_name>;
24802474
}
24812475

24822476
multiclass MUBUF_Real_AllAddr_gfx12_Renamed_Impl2<bits<8> op, string real_name> {
2483-
defm _VBUFFER_BOTHEN : VBUFFER_MUBUF_Real_gfx12_impl<op, real_name>;
2484-
defm _VBUFFER_IDXEN : VBUFFER_MUBUF_Real_gfx12_impl<op, real_name>;
2485-
defm _VBUFFER_OFFEN : VBUFFER_MUBUF_Real_gfx12_impl<op, real_name>;
2486-
defm _VBUFFER_OFFSET : VBUFFER_MUBUF_Real_gfx12_impl<op, real_name>;
2477+
defm _VBUFFER_BOTHEN : VBUFFER_MUBUF_Real_gfx12<op, real_name>;
2478+
defm _VBUFFER_IDXEN : VBUFFER_MUBUF_Real_gfx12<op, real_name>;
2479+
defm _VBUFFER_OFFEN : VBUFFER_MUBUF_Real_gfx12<op, real_name>;
2480+
defm _VBUFFER_OFFSET : VBUFFER_MUBUF_Real_gfx12<op, real_name>;
24872481
}
24882482

24892483
multiclass MUBUF_Real_AllAddr_gfx11_gfx12_Renamed_Impl2<bits<8> op, string real_name> :
@@ -2516,30 +2510,22 @@ multiclass MUBUF_Real_AllAddr_gfx11_gfx12_Renamed<bits<8> op, string real_name>
25162510
def : Mnem_gfx11_gfx12<get_BUF_ps<NAME>.Mnemonic, real_name>;
25172511
}
25182512

2519-
multiclass MUBUF_Real_Atomic_gfx11_impl<bits<8> op, string real_name> {
2520-
def _gfx11 : MUBUF_Real_gfx11<op, !cast<MUBUF_Pseudo>(NAME), real_name>;
2521-
}
2522-
2523-
multiclass MUBUF_Real_Atomic_gfx12_impl<bits<8> op, string real_name> {
2524-
def _gfx12 : VBUFFER_MUBUF_Real_gfx12<op, !cast<MUBUF_Pseudo>(NAME), real_name>;
2525-
}
2526-
25272513
multiclass MUBUF_Real_Atomic_gfx11_Renamed_impl<bits<8> op, bit is_return,
25282514
string real_name> {
25292515
defvar Rtn = !if(is_return, "_RTN", "");
2530-
defm _BOTHEN#Rtn : MUBUF_Real_Atomic_gfx11_impl<op, real_name>;
2531-
defm _IDXEN#Rtn : MUBUF_Real_Atomic_gfx11_impl<op, real_name>;
2532-
defm _OFFEN#Rtn : MUBUF_Real_Atomic_gfx11_impl<op, real_name>;
2533-
defm _OFFSET#Rtn : MUBUF_Real_Atomic_gfx11_impl<op, real_name>;
2516+
defm _BOTHEN#Rtn : MUBUF_Real_gfx11<op, real_name>;
2517+
defm _IDXEN#Rtn : MUBUF_Real_gfx11<op, real_name>;
2518+
defm _OFFEN#Rtn : MUBUF_Real_gfx11<op, real_name>;
2519+
defm _OFFSET#Rtn : MUBUF_Real_gfx11<op, real_name>;
25342520
}
25352521

25362522
multiclass MUBUF_Real_Atomic_gfx12_Renamed_impl<bits<8> op, bit is_return,
25372523
string real_name> {
25382524
defvar Rtn = !if(is_return, "_RTN", "");
2539-
defm _VBUFFER_BOTHEN#Rtn : MUBUF_Real_Atomic_gfx12_impl<op, real_name>;
2540-
defm _VBUFFER_IDXEN#Rtn : MUBUF_Real_Atomic_gfx12_impl<op, real_name>;
2541-
defm _VBUFFER_OFFEN#Rtn : MUBUF_Real_Atomic_gfx12_impl<op, real_name>;
2542-
defm _VBUFFER_OFFSET#Rtn : MUBUF_Real_Atomic_gfx12_impl<op, real_name>;
2525+
defm _VBUFFER_BOTHEN#Rtn : VBUFFER_MUBUF_Real_gfx12<op, real_name>;
2526+
defm _VBUFFER_IDXEN#Rtn : VBUFFER_MUBUF_Real_gfx12<op, real_name>;
2527+
defm _VBUFFER_OFFEN#Rtn : VBUFFER_MUBUF_Real_gfx12<op, real_name>;
2528+
defm _VBUFFER_OFFSET#Rtn : VBUFFER_MUBUF_Real_gfx12<op, real_name>;
25432529
}
25442530

25452531
multiclass MUBUF_Real_Atomic_gfx11_gfx12_Renamed_impl<bits<8> op, bit is_return,
@@ -2578,8 +2564,8 @@ multiclass MUBUF_Real_Atomic_gfx11_gfx12_Renamed_gfx12_Renamed<bits<8> op, strin
25782564
def : Mnem_gfx12<gfx11_name, gfx12_name>;
25792565
}
25802566

2581-
def BUFFER_GL0_INV_gfx11 : MUBUF_Real_gfx11<0x02B, BUFFER_GL0_INV>;
2582-
def BUFFER_GL1_INV_gfx11 : MUBUF_Real_gfx11<0x02C, BUFFER_GL1_INV>;
2567+
defm BUFFER_GL0_INV : MUBUF_Real_gfx11<0x02B>;
2568+
defm BUFFER_GL1_INV : MUBUF_Real_gfx11<0x02C>;
25832569

25842570
defm BUFFER_LOAD_DWORD : MUBUF_Real_AllAddr_gfx11_gfx12_Renamed<0x014, "buffer_load_b32">;
25852571
defm BUFFER_LOAD_DWORDX2 : MUBUF_Real_AllAddr_gfx11_gfx12_Renamed<0x015, "buffer_load_b64">;

0 commit comments

Comments
 (0)