@@ -1092,19 +1092,23 @@ let SubtargetPredicate = isGFX12Plus in {
1092
1092
}
1093
1093
1094
1094
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>;
1105
1097
}
1106
1098
} // End SubtargetPredicate = isGFX12Plus
1107
1099
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
+
1108
1112
let SubtargetPredicate = isGFX10Plus in {
1109
1113
defm GLOBAL_ATOMIC_FCMPSWAP :
1110
1114
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,
2809
2813
defm _SADDR : VFLAT_Real_gfx12<op, name>;
2810
2814
}
2811
2815
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
+
2812
2823
multiclass VGLOBAL_Real_AllAddr_gfx12_w64<bits<8> op,
2813
2824
string name = get_FLAT_ps<NAME>.Mnemonic> :
2814
2825
VFLAT_Aliases_gfx12<name> {
@@ -2951,8 +2962,8 @@ defm GLOBAL_ATOMIC_FMIN : VGLOBAL_Real_Atomics_gfx12<0x051, "global_a
2951
2962
defm GLOBAL_ATOMIC_FMAX : VGLOBAL_Real_Atomics_gfx12<0x052, "global_atomic_max_num_f32", "global_atomic_max_f32">;
2952
2963
defm GLOBAL_ATOMIC_ADD_F32 : VGLOBAL_Real_Atomics_gfx12<0x056>;
2953
2964
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>;
2956
2967
2957
2968
defm GLOBAL_LOAD_TR_B128_w64 : VGLOBAL_Real_AllAddr_gfx12_w64<0x057>;
2958
2969
defm 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_
2992
3003
defm SCRATCH_LOAD_BLOCK : VSCRATCH_Real_AllAddr_gfx12<0x53>;
2993
3004
defm SCRATCH_STORE_BLOCK : VSCRATCH_Real_AllAddr_gfx12<0x54>;
2994
3005
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
+
2995
3060
def True16D16Table : GenericTable {
2996
3061
let FilterClass = "True16D16Table";
2997
3062
let CppTypeName = "True16D16Info";
0 commit comments