@@ -1092,19 +1092,23 @@ let SubtargetPredicate = isGFX12Plus in {
10921092 }
10931093
10941094 let WaveSizePredicate = isWave32 in {
1095- let Mnemonic = "global_load_tr_b128" in
1096- defm GLOBAL_LOAD_TR_B128_w32 : FLAT_Global_Load_Pseudo <"global_load_tr_b128_w32", VReg_128>;
1097- let Mnemonic = "global_load_tr_b64" in
1098- defm GLOBAL_LOAD_TR_B64_w32 : FLAT_Global_Load_Pseudo <"global_load_tr_b64_w32", VReg_64>;
1099- }
1100- let WaveSizePredicate = isWave64 in {
1101- let Mnemonic = "global_load_tr_b128" in
1102- defm GLOBAL_LOAD_TR_B128_w64 : FLAT_Global_Load_Pseudo <"global_load_tr_b128_w64", VReg_64>;
1103- let Mnemonic = "global_load_tr_b64" in
1104- defm GLOBAL_LOAD_TR_B64_w64 : FLAT_Global_Load_Pseudo <"global_load_tr_b64_w64", VGPR_32>;
1095+ defm GLOBAL_LOAD_TR_B128_w32 : FLAT_Global_Load_Pseudo <"global_load_tr_b128", VReg_128>;
1096+ defm GLOBAL_LOAD_TR_B64_w32 : FLAT_Global_Load_Pseudo <"global_load_tr_b64", VReg_64>;
11051097 }
11061098} // End SubtargetPredicate = isGFX12Plus
11071099
1100+ let WaveSizePredicate = isWave64, SubtargetPredicate = isGFX12PlusNot12_50 in {
1101+ let Mnemonic = "global_load_tr_b128" in
1102+ defm GLOBAL_LOAD_TR_B128_w64 : FLAT_Global_Load_Pseudo <"global_load_tr_b128_w64", VReg_64>;
1103+ let Mnemonic = "global_load_tr_b64" in
1104+ defm GLOBAL_LOAD_TR_B64_w64 : FLAT_Global_Load_Pseudo <"global_load_tr_b64_w64", VGPR_32>;
1105+ }
1106+
1107+ let WaveSizePredicate = isWave32, SubtargetPredicate = isGFX1250Plus in {
1108+ defm GLOBAL_LOAD_TR6_B96 : FLAT_Global_Load_Pseudo <"global_load_tr6_b96", VReg_96>;
1109+ defm GLOBAL_LOAD_TR4_B64 : FLAT_Global_Load_Pseudo <"global_load_tr4_b64", VReg_64>;
1110+ }
1111+
11081112let SubtargetPredicate = isGFX10Plus in {
11091113 defm GLOBAL_ATOMIC_FCMPSWAP :
11101114 FLAT_Global_Atomic_Pseudo<"global_atomic_fcmpswap", VGPR_32, f32, v2f32, VReg_64>;
@@ -2809,6 +2813,13 @@ multiclass VGLOBAL_Real_AllAddr_gfx12<bits<8> op,
28092813 defm _SADDR : VFLAT_Real_gfx12<op, name>;
28102814}
28112815
2816+ multiclass VGLOBAL_Real_AllAddr_gfx1200<bits<8> op> {
2817+ let AssemblerPredicate = isGFX12Not12_50 in {
2818+ defm "" : VFLAT_Real_gfx12<op>;
2819+ defm _SADDR : VFLAT_Real_gfx12<op>;
2820+ }
2821+ }
2822+
28122823multiclass VGLOBAL_Real_AllAddr_gfx12_w64<bits<8> op,
28132824 string name = get_FLAT_ps<NAME>.Mnemonic> :
28142825 VFLAT_Aliases_gfx12<name> {
@@ -2951,8 +2962,8 @@ defm GLOBAL_ATOMIC_FMIN : VGLOBAL_Real_Atomics_gfx12<0x051, "global_a
29512962defm GLOBAL_ATOMIC_FMAX : VGLOBAL_Real_Atomics_gfx12<0x052, "global_atomic_max_num_f32", "global_atomic_max_f32">;
29522963defm GLOBAL_ATOMIC_ADD_F32 : VGLOBAL_Real_Atomics_gfx12<0x056>;
29532964
2954- defm GLOBAL_LOAD_TR_B128_w32 : VGLOBAL_Real_AllAddr_gfx12 <0x057>;
2955- defm GLOBAL_LOAD_TR_B64_w32 : VGLOBAL_Real_AllAddr_gfx12 <0x058>;
2965+ defm GLOBAL_LOAD_TR_B128_w32 : VGLOBAL_Real_AllAddr_gfx1200 <0x057>;
2966+ defm GLOBAL_LOAD_TR_B64_w32 : VGLOBAL_Real_AllAddr_gfx1200 <0x058>;
29562967
29572968defm GLOBAL_LOAD_TR_B128_w64 : VGLOBAL_Real_AllAddr_gfx12_w64<0x057>;
29582969defm GLOBAL_LOAD_TR_B64_w64 : VGLOBAL_Real_AllAddr_gfx12_w64<0x058>;
@@ -2992,6 +3003,60 @@ defm SCRATCH_STORE_SHORT_D16_HI : VSCRATCH_Real_AllAddr_gfx12<0x25, "scratch_
29923003defm SCRATCH_LOAD_BLOCK : VSCRATCH_Real_AllAddr_gfx12<0x53>;
29933004defm SCRATCH_STORE_BLOCK : VSCRATCH_Real_AllAddr_gfx12<0x54>;
29943005
3006+ //===----------------------------------------------------------------------===//
3007+ // GFX1250
3008+ //===----------------------------------------------------------------------===//
3009+
3010+ multiclass VFLAT_Real_gfx1250<bits<8> op,
3011+ string name = get_FLAT_ps<NAME>.Mnemonic> {
3012+ defvar ps = !cast<FLAT_Pseudo>(NAME);
3013+ def _gfx1250 : VFLAT_Real<op, ps, name>,
3014+ SIMCInstr<ps.PseudoInstr, SIEncodingFamily.GFX1250> {
3015+ let AssemblerPredicate = isGFX125xOnly;
3016+ let DecoderNamespace = "GFX1250";
3017+
3018+ let Inst{25-24} = {ps.is_flat_global, ps.is_flat_scratch};
3019+ }
3020+ }
3021+
3022+ multiclass VFLAT_Aliases_gfx1250<string name> {
3023+ defvar ps = get_FLAT_ps<NAME>;
3024+ if !ne(ps.Mnemonic, name) then
3025+ def : MnemonicAlias<ps.Mnemonic, name>, Requires<[isGFX125xOnly]>;
3026+ }
3027+
3028+ multiclass VFLAT_Real_Base_gfx1250<bits<8> op, string name = get_FLAT_ps<NAME>.Mnemonic> :
3029+ VFLAT_Aliases_gfx1250<name> {
3030+ defm "" : VFLAT_Real_gfx1250<op, name>;
3031+ }
3032+
3033+ multiclass VFLAT_Real_RTN_gfx1250<bits<8> op, string name> {
3034+ defm _RTN : VFLAT_Real_gfx1250<op, name>;
3035+ }
3036+
3037+ multiclass VFLAT_Real_SADDR_gfx1250<bits<8> op, string name> {
3038+ defm _SADDR : VFLAT_Real_gfx1250<op, name>;
3039+ }
3040+
3041+ multiclass VFLAT_Real_SADDR_RTN_gfx1250<bits<8> op, string name> {
3042+ defm _SADDR_RTN : VFLAT_Real_gfx1250<op, name>;
3043+ }
3044+
3045+ multiclass VFLAT_Real_AllAddr_gfx1250<bits<8> op, string name = get_FLAT_ps<NAME>.Mnemonic> :
3046+ VFLAT_Real_Base_gfx1250<op, name>,
3047+ VFLAT_Real_SADDR_gfx1250<op, name>;
3048+
3049+ multiclass VFLAT_Real_Atomics_gfx1250<bits<8> op, string name = get_FLAT_ps<NAME>.Mnemonic> :
3050+ VFLAT_Real_AllAddr_gfx1250<op, name>,
3051+ VFLAT_Real_RTN_gfx1250<op, name>,
3052+ VFLAT_Real_SADDR_RTN_gfx1250<op, name>;
3053+
3054+ defm GLOBAL_LOAD_TR_B128_w32 : VFLAT_Real_AllAddr_gfx1250<0x057, "global_load_tr16_b128">;
3055+ defm GLOBAL_LOAD_TR_B64_w32 : VFLAT_Real_AllAddr_gfx1250<0x058, "global_load_tr8_b64">;
3056+
3057+ defm GLOBAL_LOAD_TR4_B64 : VFLAT_Real_AllAddr_gfx1250<0x073>;
3058+ defm GLOBAL_LOAD_TR6_B96 : VFLAT_Real_AllAddr_gfx1250<0x074>;
3059+
29953060def True16D16Table : GenericTable {
29963061 let FilterClass = "True16D16Table";
29973062 let CppTypeName = "True16D16Info";
0 commit comments