@@ -127,92 +127,8 @@ class LiveRegOptimizer {
127
127
return LK.first != TargetLoweringBase::TypeLegal;
128
128
}
129
129
130
- // / Check if intrinsic natively operates on 8-bit or 16-bit
131
- bool isNativeIntrinsic (Intrinsic::ID ID) {
132
- switch (ID) {
133
- case Intrinsic::amdgcn_dot4_f32_fp8_bf8:
134
- case Intrinsic::amdgcn_dot4_f32_bf8_fp8:
135
- case Intrinsic::amdgcn_dot4_f32_fp8_fp8:
136
- case Intrinsic::amdgcn_dot4_f32_bf8_bf8:
137
- case Intrinsic::amdgcn_mfma_i32_4x4x4i8:
138
- case Intrinsic::amdgcn_mfma_i32_16x16x4i8:
139
- case Intrinsic::amdgcn_mfma_i32_32x32x4i8:
140
- case Intrinsic::amdgcn_mfma_i32_16x16x16i8:
141
- case Intrinsic::amdgcn_mfma_i32_32x32x8i8:
142
- case Intrinsic::amdgcn_mfma_i32_16x16x64_i8:
143
- case Intrinsic::amdgcn_mfma_i32_32x32x32_i8:
144
- case Intrinsic::amdgcn_mfma_i32_32x32x16_i8:
145
- case Intrinsic::amdgcn_mfma_i32_16x16x32_i8:
146
- case Intrinsic::amdgcn_mfma_f32_16x16x32_bf8_bf8:
147
- case Intrinsic::amdgcn_mfma_f32_16x16x32_bf8_fp8:
148
- case Intrinsic::amdgcn_mfma_f32_16x16x32_fp8_bf8:
149
- case Intrinsic::amdgcn_mfma_f32_16x16x32_fp8_fp8:
150
- case Intrinsic::amdgcn_mfma_f32_32x32x16_bf8_bf8:
151
- case Intrinsic::amdgcn_mfma_f32_32x32x16_bf8_fp8:
152
- case Intrinsic::amdgcn_mfma_f32_32x32x16_fp8_bf8:
153
- case Intrinsic::amdgcn_mfma_f32_32x32x16_fp8_fp8:
154
- case Intrinsic::amdgcn_smfmac_i32_16x16x64_i8:
155
- case Intrinsic::amdgcn_smfmac_i32_32x32x32_i8:
156
- case Intrinsic::amdgcn_smfmac_f32_16x16x64_bf8_bf8:
157
- case Intrinsic::amdgcn_smfmac_f32_16x16x64_bf8_fp8:
158
- case Intrinsic::amdgcn_smfmac_f32_16x16x64_fp8_bf8:
159
- case Intrinsic::amdgcn_smfmac_f32_16x16x64_fp8_fp8:
160
- case Intrinsic::amdgcn_smfmac_f32_32x32x32_bf8_bf8:
161
- case Intrinsic::amdgcn_smfmac_f32_32x32x32_bf8_fp8:
162
- case Intrinsic::amdgcn_smfmac_f32_32x32x32_fp8_bf8:
163
- case Intrinsic::amdgcn_smfmac_f32_32x32x32_fp8_fp8:
164
- case Intrinsic::amdgcn_smfmac_i32_16x16x128_i8:
165
- case Intrinsic::amdgcn_smfmac_i32_32x32x64_i8:
166
- case Intrinsic::amdgcn_smfmac_f32_16x16x128_bf8_bf8:
167
- case Intrinsic::amdgcn_smfmac_f32_16x16x128_bf8_fp8:
168
- case Intrinsic::amdgcn_smfmac_f32_16x16x128_fp8_bf8:
169
- case Intrinsic::amdgcn_smfmac_f32_16x16x128_fp8_fp8:
170
- case Intrinsic::amdgcn_smfmac_f32_32x32x64_bf8_bf8:
171
- case Intrinsic::amdgcn_smfmac_f32_32x32x64_bf8_fp8:
172
- case Intrinsic::amdgcn_smfmac_f32_32x32x64_fp8_bf8:
173
- case Intrinsic::amdgcn_smfmac_f32_32x32x64_fp8_fp8:
174
- case Intrinsic::amdgcn_wmma_f32_16x16x16_fp8_fp8:
175
- case Intrinsic::amdgcn_wmma_f32_16x16x16_fp8_bf8:
176
- case Intrinsic::amdgcn_wmma_f32_16x16x16_bf8_fp8:
177
- case Intrinsic::amdgcn_wmma_f32_16x16x16_bf8_bf8:
178
- case Intrinsic::amdgcn_swmmac_f32_16x16x32_fp8_fp8:
179
- case Intrinsic::amdgcn_swmmac_f32_16x16x32_fp8_bf8:
180
- case Intrinsic::amdgcn_swmmac_f32_16x16x32_bf8_fp8:
181
- case Intrinsic::amdgcn_swmmac_f32_16x16x32_bf8_bf8:
182
- case Intrinsic::amdgcn_wmma_i32_16x16x16_iu8:
183
- case Intrinsic::amdgcn_wmma_i32_16x16x16_iu4:
184
- case Intrinsic::amdgcn_wmma_i32_16x16x32_iu4:
185
- case Intrinsic::amdgcn_swmmac_i32_16x16x32_iu8:
186
- case Intrinsic::amdgcn_swmmac_i32_16x16x32_iu4:
187
- case Intrinsic::amdgcn_swmmac_i32_16x16x64_iu4:
188
- case Intrinsic::amdgcn_raw_buffer_store_format:
189
- case Intrinsic::amdgcn_raw_buffer_store:
190
- case Intrinsic::amdgcn_raw_ptr_buffer_store_format:
191
- case Intrinsic::amdgcn_raw_ptr_buffer_store:
192
- case Intrinsic::amdgcn_struct_buffer_store_format:
193
- case Intrinsic::amdgcn_struct_buffer_store:
194
- case Intrinsic::amdgcn_struct_ptr_buffer_store_format:
195
- case Intrinsic::amdgcn_struct_ptr_buffer_store:
196
- case Intrinsic::amdgcn_raw_tbuffer_store:
197
- case Intrinsic::amdgcn_raw_ptr_tbuffer_store:
198
- case Intrinsic::amdgcn_struct_ptr_tbuffer_store:
199
- case Intrinsic::amdgcn_struct_tbuffer_store:
200
- return true ;
201
- default :
202
- return false ;
203
- }
204
- }
205
-
206
130
bool isOpLegal (Instruction *I) {
207
- if (const auto *Intr = dyn_cast<IntrinsicInst>(I)) {
208
- Intrinsic::ID ID = Intr->getIntrinsicID ();
209
- if (isNativeIntrinsic (ID))
210
- return true ;
211
- }
212
- // Stores
213
- if (isa<StoreInst>(I))
214
- return true ;
215
- return false ;
131
+ return isa<StoreInst>(I) || isa<IntrinsicInst>(I);
216
132
}
217
133
218
134
bool isCoercionProfitable (Instruction *II) {
0 commit comments