@@ -2297,19 +2297,20 @@ class Base_MUBUF_Real_gfx6_gfx7_gfx10_gfx11 <MUBUF_Pseudo ps, int ef,
2297
2297
let Inst{63-56} = !if(ps.has_soffset, soffset, ?);
2298
2298
}
2299
2299
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
+ }
2313
2314
}
2314
2315
2315
2316
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> :
2415
2416
let Inst{31-26} = 0b110001;
2416
2417
}
2417
2418
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
+ }
2430
2432
}
2431
2433
2432
2434
multiclass VBUFFER_MTBUF_Real_gfx12<bits<4> op, string real_name> {
@@ -2464,26 +2466,18 @@ class Mnem_gfx11 <string mnemonic, string real_name> :
2464
2466
class Mnem_gfx12 <string mnemonic, string real_name> :
2465
2467
MnemonicAlias<mnemonic, real_name>, Requires<[isGFX12Plus]>;
2466
2468
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
-
2475
2469
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>;
2480
2474
}
2481
2475
2482
2476
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>;
2487
2481
}
2488
2482
2489
2483
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>
2516
2510
def : Mnem_gfx11_gfx12<get_BUF_ps<NAME>.Mnemonic, real_name>;
2517
2511
}
2518
2512
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
-
2527
2513
multiclass MUBUF_Real_Atomic_gfx11_Renamed_impl<bits<8> op, bit is_return,
2528
2514
string real_name> {
2529
2515
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>;
2534
2520
}
2535
2521
2536
2522
multiclass MUBUF_Real_Atomic_gfx12_Renamed_impl<bits<8> op, bit is_return,
2537
2523
string real_name> {
2538
2524
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>;
2543
2529
}
2544
2530
2545
2531
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
2578
2564
def : Mnem_gfx12<gfx11_name, gfx12_name>;
2579
2565
}
2580
2566
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>;
2583
2569
2584
2570
defm BUFFER_LOAD_DWORD : MUBUF_Real_AllAddr_gfx11_gfx12_Renamed<0x014, "buffer_load_b32">;
2585
2571
defm BUFFER_LOAD_DWORDX2 : MUBUF_Real_AllAddr_gfx11_gfx12_Renamed<0x015, "buffer_load_b64">;
0 commit comments