@@ -211,90 +211,57 @@ def ReadFClass16 : SchedRead;
211
211
def ReadFClass32 : SchedRead;
212
212
def ReadFClass64 : SchedRead;
213
213
214
+ // For CPUs that support Zfhmin, but not Zfh.
214
215
multiclass UnsupportedSchedZfh {
215
216
let Unsupported = true in {
216
217
def : WriteRes<WriteFAdd16, []>;
217
218
def : WriteRes<WriteFClass16, []>;
218
- def : WriteRes<WriteFCvtF16ToF64, []>;
219
- def : WriteRes<WriteFCvtF64ToF16, []>;
220
219
def : WriteRes<WriteFCvtI64ToF16, []>;
221
- def : WriteRes<WriteFCvtF32ToF16, []>;
222
220
def : WriteRes<WriteFCvtI32ToF16, []>;
223
221
def : WriteRes<WriteFCvtF16ToI64, []>;
224
- def : WriteRes<WriteFCvtF16ToF32, []>;
225
222
def : WriteRes<WriteFCvtF16ToI32, []>;
226
223
def : WriteRes<WriteFDiv16, []>;
227
224
def : WriteRes<WriteFCmp16, []>;
228
- def : WriteRes<WriteFLD16, []>;
229
225
def : WriteRes<WriteFMA16, []>;
230
226
def : WriteRes<WriteFMinMax16, []>;
231
227
def : WriteRes<WriteFMul16, []>;
232
- def : WriteRes<WriteFMovI16ToF16, []>;
233
- def : WriteRes<WriteFMovF16ToI16, []>;
234
228
def : WriteRes<WriteFSGNJ16, []>;
235
- def : WriteRes<WriteFST16, []>;
236
229
def : WriteRes<WriteFSqrt16, []>;
237
230
238
231
def : ReadAdvance<ReadFAdd16, 0>;
239
232
def : ReadAdvance<ReadFClass16, 0>;
240
- def : ReadAdvance<ReadFCvtF16ToF64, 0>;
241
- def : ReadAdvance<ReadFCvtF64ToF16, 0>;
242
233
def : ReadAdvance<ReadFCvtI64ToF16, 0>;
243
- def : ReadAdvance<ReadFCvtF32ToF16, 0>;
244
234
def : ReadAdvance<ReadFCvtI32ToF16, 0>;
245
235
def : ReadAdvance<ReadFCvtF16ToI64, 0>;
246
- def : ReadAdvance<ReadFCvtF16ToF32, 0>;
247
236
def : ReadAdvance<ReadFCvtF16ToI32, 0>;
248
237
def : ReadAdvance<ReadFDiv16, 0>;
249
238
def : ReadAdvance<ReadFCmp16, 0>;
250
239
def : ReadAdvance<ReadFMA16, 0>;
251
240
def : ReadAdvance<ReadFMinMax16, 0>;
252
241
def : ReadAdvance<ReadFMul16, 0>;
253
- def : ReadAdvance<ReadFMovI16ToF16, 0>;
254
- def : ReadAdvance<ReadFMovF16ToI16, 0>;
255
242
def : ReadAdvance<ReadFSGNJ16, 0>;
256
243
def : ReadAdvance<ReadFSqrt16, 0>;
257
244
} // Unsupported = true
258
245
}
259
246
260
- multiclass UnsupportedSchedF {
247
+ // For CPUs that support neither Zfhmin or Zfh.
248
+ multiclass UnsupportedSchedZfhmin : UnsupportedSchedZfh {
261
249
let 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, []>;
279
258
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>;
298
265
} // Unsupported = true
299
266
}
300
267
@@ -341,6 +308,48 @@ def : ReadAdvance<ReadFClass64, 0>;
341
308
} // Unsupported = true
342
309
}
343
310
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
+
344
353
multiclass UnsupportedSchedSFB {
345
354
let Unsupported = true in {
346
355
def : WriteRes<WriteSFB, []>;
0 commit comments