@@ -211,90 +211,57 @@ def ReadFClass16 : SchedRead;
211211def ReadFClass32 : SchedRead;
212212def ReadFClass64 : SchedRead;
213213
214+ // For CPUs that support Zfhmin, but not Zfh.
214215multiclass UnsupportedSchedZfh {
215216let Unsupported = true in {
216217def : WriteRes<WriteFAdd16, []>;
217218def : WriteRes<WriteFClass16, []>;
218- def : WriteRes<WriteFCvtF16ToF64, []>;
219- def : WriteRes<WriteFCvtF64ToF16, []>;
220219def : WriteRes<WriteFCvtI64ToF16, []>;
221- def : WriteRes<WriteFCvtF32ToF16, []>;
222220def : WriteRes<WriteFCvtI32ToF16, []>;
223221def : WriteRes<WriteFCvtF16ToI64, []>;
224- def : WriteRes<WriteFCvtF16ToF32, []>;
225222def : WriteRes<WriteFCvtF16ToI32, []>;
226223def : WriteRes<WriteFDiv16, []>;
227224def : WriteRes<WriteFCmp16, []>;
228- def : WriteRes<WriteFLD16, []>;
229225def : WriteRes<WriteFMA16, []>;
230226def : WriteRes<WriteFMinMax16, []>;
231227def : WriteRes<WriteFMul16, []>;
232- def : WriteRes<WriteFMovI16ToF16, []>;
233- def : WriteRes<WriteFMovF16ToI16, []>;
234228def : WriteRes<WriteFSGNJ16, []>;
235- def : WriteRes<WriteFST16, []>;
236229def : WriteRes<WriteFSqrt16, []>;
237230
238231def : ReadAdvance<ReadFAdd16, 0>;
239232def : ReadAdvance<ReadFClass16, 0>;
240- def : ReadAdvance<ReadFCvtF16ToF64, 0>;
241- def : ReadAdvance<ReadFCvtF64ToF16, 0>;
242233def : ReadAdvance<ReadFCvtI64ToF16, 0>;
243- def : ReadAdvance<ReadFCvtF32ToF16, 0>;
244234def : ReadAdvance<ReadFCvtI32ToF16, 0>;
245235def : ReadAdvance<ReadFCvtF16ToI64, 0>;
246- def : ReadAdvance<ReadFCvtF16ToF32, 0>;
247236def : ReadAdvance<ReadFCvtF16ToI32, 0>;
248237def : ReadAdvance<ReadFDiv16, 0>;
249238def : ReadAdvance<ReadFCmp16, 0>;
250239def : ReadAdvance<ReadFMA16, 0>;
251240def : ReadAdvance<ReadFMinMax16, 0>;
252241def : ReadAdvance<ReadFMul16, 0>;
253- def : ReadAdvance<ReadFMovI16ToF16, 0>;
254- def : ReadAdvance<ReadFMovF16ToI16, 0>;
255242def : ReadAdvance<ReadFSGNJ16, 0>;
256243def : ReadAdvance<ReadFSqrt16, 0>;
257244} // Unsupported = true
258245}
259246
260- multiclass UnsupportedSchedF {
247+ // For CPUs that support neither Zfhmin or Zfh.
248+ multiclass UnsupportedSchedZfhmin : UnsupportedSchedZfh {
261249let Unsupported = true in {
262- def : WriteRes<WriteFST32, []>;
263- def : WriteRes<WriteFLD32, []>;
264- def : WriteRes<WriteFAdd32, []>;
265- def : WriteRes<WriteFSGNJ32, []>;
266- def : WriteRes<WriteFMinMax32, []>;
267- def : WriteRes<WriteFCvtI32ToF32, []>;
268- def : WriteRes<WriteFCvtI64ToF32, []>;
269- def : WriteRes<WriteFCvtF32ToI32, []>;
270- def : WriteRes<WriteFCvtF32ToI64, []>;
271- def : WriteRes<WriteFClass32, []>;
272- def : WriteRes<WriteFCmp32, []>;
273- def : WriteRes<WriteFMovF32ToI32, []>;
274- def : WriteRes<WriteFMovI32ToF32, []>;
275- def : WriteRes<WriteFMul32, []>;
276- def : WriteRes<WriteFMA32, []>;
277- def : WriteRes<WriteFDiv32, []>;
278- def : WriteRes<WriteFSqrt32, []>;
250+ def : WriteRes<WriteFCvtF16ToF64, []>;
251+ def : WriteRes<WriteFCvtF64ToF16, []>;
252+ def : WriteRes<WriteFCvtF16ToF32, []>;
253+ def : WriteRes<WriteFCvtF32ToF16, []>;
254+ def : WriteRes<WriteFLD16, []>;
255+ def : WriteRes<WriteFMovI16ToF16, []>;
256+ def : WriteRes<WriteFMovF16ToI16, []>;
257+ def : WriteRes<WriteFST16, []>;
279258
280- def : ReadAdvance<ReadFAdd32, 0>;
281- def : ReadAdvance<ReadFMul32, 0>;
282- def : ReadAdvance<ReadFMA32, 0>;
283- def : ReadAdvance<ReadFMA32Addend, 0>;
284- def : ReadAdvance<ReadFDiv32, 0>;
285- def : ReadAdvance<ReadFSqrt32, 0>;
286- def : ReadAdvance<ReadFCmp32, 0>;
287- def : ReadAdvance<ReadFSGNJ32, 0>;
288- def : ReadAdvance<ReadFMinMax32, 0>;
289- def : ReadAdvance<ReadFCvtF32ToI32, 0>;
290- def : ReadAdvance<ReadFCvtF32ToI64, 0>;
291- def : ReadAdvance<ReadFCvtI32ToF32, 0>;
292- def : ReadAdvance<ReadFCvtI64ToF32, 0>;
293- def : ReadAdvance<ReadFMovF32ToI32, 0>;
294- def : ReadAdvance<ReadFMovI32ToF32, 0>;
295- def : ReadAdvance<ReadFClass32, 0>;
296- def : ReadAdvance<ReadFStoreData, 0>;
297- def : ReadAdvance<ReadFMemBase, 0>;
259+ def : ReadAdvance<ReadFCvtF16ToF64, 0>;
260+ def : ReadAdvance<ReadFCvtF64ToF16, 0>;
261+ def : ReadAdvance<ReadFCvtF16ToF32, 0>;
262+ def : ReadAdvance<ReadFCvtF32ToF16, 0>;
263+ def : ReadAdvance<ReadFMovI16ToF16, 0>;
264+ def : ReadAdvance<ReadFMovF16ToI16, 0>;
298265} // Unsupported = true
299266}
300267
@@ -341,6 +308,48 @@ def : ReadAdvance<ReadFClass64, 0>;
341308} // Unsupported = true
342309}
343310
311+ // For CPUs with no floating point.
312+ multiclass UnsupportedSchedF : UnsupportedSchedD, UnsupportedSchedZfhmin {
313+ let Unsupported = true in {
314+ def : WriteRes<WriteFST32, []>;
315+ def : WriteRes<WriteFLD32, []>;
316+ def : WriteRes<WriteFAdd32, []>;
317+ def : WriteRes<WriteFSGNJ32, []>;
318+ def : WriteRes<WriteFMinMax32, []>;
319+ def : WriteRes<WriteFCvtI32ToF32, []>;
320+ def : WriteRes<WriteFCvtI64ToF32, []>;
321+ def : WriteRes<WriteFCvtF32ToI32, []>;
322+ def : WriteRes<WriteFCvtF32ToI64, []>;
323+ def : WriteRes<WriteFClass32, []>;
324+ def : WriteRes<WriteFCmp32, []>;
325+ def : WriteRes<WriteFMovF32ToI32, []>;
326+ def : WriteRes<WriteFMovI32ToF32, []>;
327+ def : WriteRes<WriteFMul32, []>;
328+ def : WriteRes<WriteFMA32, []>;
329+ def : WriteRes<WriteFDiv32, []>;
330+ def : WriteRes<WriteFSqrt32, []>;
331+
332+ def : ReadAdvance<ReadFAdd32, 0>;
333+ def : ReadAdvance<ReadFMul32, 0>;
334+ def : ReadAdvance<ReadFMA32, 0>;
335+ def : ReadAdvance<ReadFMA32Addend, 0>;
336+ def : ReadAdvance<ReadFDiv32, 0>;
337+ def : ReadAdvance<ReadFSqrt32, 0>;
338+ def : ReadAdvance<ReadFCmp32, 0>;
339+ def : ReadAdvance<ReadFSGNJ32, 0>;
340+ def : ReadAdvance<ReadFMinMax32, 0>;
341+ def : ReadAdvance<ReadFCvtF32ToI32, 0>;
342+ def : ReadAdvance<ReadFCvtF32ToI64, 0>;
343+ def : ReadAdvance<ReadFCvtI32ToF32, 0>;
344+ def : ReadAdvance<ReadFCvtI64ToF32, 0>;
345+ def : ReadAdvance<ReadFMovF32ToI32, 0>;
346+ def : ReadAdvance<ReadFMovI32ToF32, 0>;
347+ def : ReadAdvance<ReadFClass32, 0>;
348+ def : ReadAdvance<ReadFStoreData, 0>;
349+ def : ReadAdvance<ReadFMemBase, 0>;
350+ } // Unsupported = true
351+ }
352+
344353multiclass UnsupportedSchedSFB {
345354let Unsupported = true in {
346355def : WriteRes<WriteSFB, []>;
0 commit comments