@@ -248,7 +248,6 @@ def PseudoQuietFLT_H_INX : PseudoQuietFCMP<FPR16INX>;
248
248
// Pseudo-instructions and codegen patterns
249
249
//===----------------------------------------------------------------------===//
250
250
251
- let Predicates = [HasStdExtZfh] in {
252
251
253
252
/// Float conversion operations
254
253
@@ -257,11 +256,14 @@ let Predicates = [HasStdExtZfh] in {
257
256
258
257
/// Float arithmetic operations
259
258
260
- def : PatFprFprDynFrm<any_fadd, FADD_H, FPR16, f16>;
261
- def : PatFprFprDynFrm<any_fsub, FSUB_H, FPR16, f16>;
262
- def : PatFprFprDynFrm<any_fmul, FMUL_H, FPR16, f16>;
263
- def : PatFprFprDynFrm<any_fdiv, FDIV_H, FPR16, f16>;
259
+ foreach Ext = ZfhExts in {
260
+ defm : PatFprFprDynFrm_m<any_fadd, FADD_H, Ext>;
261
+ defm : PatFprFprDynFrm_m<any_fsub, FSUB_H, Ext>;
262
+ defm : PatFprFprDynFrm_m<any_fmul, FMUL_H, Ext>;
263
+ defm : PatFprFprDynFrm_m<any_fdiv, FDIV_H, Ext>;
264
+ }
264
265
266
+ let Predicates = [HasStdExtZfh] in {
265
267
def : Pat<(f16 (any_fsqrt FPR16:$rs1)), (FSQRT_H FPR16:$rs1, FRM_DYN)>;
266
268
267
269
def : Pat<(f16 (fneg FPR16:$rs1)), (FSGNJN_H $rs1, $rs1)>;
@@ -304,11 +306,6 @@ let Predicates = [HasStdExtZhinx] in {
304
306
305
307
/// Float arithmetic operations
306
308
307
- def : PatFprFprDynFrm<any_fadd, FADD_H_INX, FPR16INX, f16>;
308
- def : PatFprFprDynFrm<any_fsub, FSUB_H_INX, FPR16INX, f16>;
309
- def : PatFprFprDynFrm<any_fmul, FMUL_H_INX, FPR16INX, f16>;
310
- def : PatFprFprDynFrm<any_fdiv, FDIV_H_INX, FPR16INX, f16>;
311
-
312
309
def : Pat<(any_fsqrt FPR16INX:$rs1), (FSQRT_H_INX FPR16INX:$rs1, FRM_DYN)>;
313
310
314
311
def : Pat<(fneg FPR16INX:$rs1), (FSGNJN_H_INX $rs1, $rs1)>;
@@ -358,12 +355,12 @@ foreach Ext = ZfhExts in {
358
355
359
356
// Match non-signaling FEQ_D
360
357
foreach Ext = ZfhExts in {
361
- defm : PatSetCC_m<any_fsetcc, SETEQ, FEQ_H, Ext, f16 >;
362
- defm : PatSetCC_m<any_fsetcc, SETOEQ, FEQ_H, Ext, f16 >;
363
- defm : PatSetCC_m<strict_fsetcc, SETLT, PseudoQuietFLT_H, Ext, f16 >;
364
- defm : PatSetCC_m<strict_fsetcc, SETOLT, PseudoQuietFLT_H, Ext, f16 >;
365
- defm : PatSetCC_m<strict_fsetcc, SETLE, PseudoQuietFLE_H, Ext, f16 >;
366
- defm : PatSetCC_m<strict_fsetcc, SETOLE, PseudoQuietFLE_H, Ext, f16 >;
358
+ defm : PatSetCC_m<any_fsetcc, SETEQ, FEQ_H, Ext>;
359
+ defm : PatSetCC_m<any_fsetcc, SETOEQ, FEQ_H, Ext>;
360
+ defm : PatSetCC_m<strict_fsetcc, SETLT, PseudoQuietFLT_H, Ext>;
361
+ defm : PatSetCC_m<strict_fsetcc, SETOLT, PseudoQuietFLT_H, Ext>;
362
+ defm : PatSetCC_m<strict_fsetcc, SETLE, PseudoQuietFLE_H, Ext>;
363
+ defm : PatSetCC_m<strict_fsetcc, SETOLE, PseudoQuietFLE_H, Ext>;
367
364
}
368
365
369
366
let Predicates = [HasStdExtZfh] in {
@@ -397,10 +394,10 @@ def : Pat<(XLenVT (strict_fsetccs FPR16INX:$rs1, FPR16INX:$rs1, SETOEQ)),
397
394
} // Predicates = [HasStdExtZhinx]
398
395
399
396
foreach Ext = ZfhExts in {
400
- defm : PatSetCC_m<any_fsetccs, SETLT, FLT_H, Ext, f16 >;
401
- defm : PatSetCC_m<any_fsetccs, SETOLT, FLT_H, Ext, f16 >;
402
- defm : PatSetCC_m<any_fsetccs, SETLE, FLE_H, Ext, f16 >;
403
- defm : PatSetCC_m<any_fsetccs, SETOLE, FLE_H, Ext, f16 >;
397
+ defm : PatSetCC_m<any_fsetccs, SETLT, FLT_H, Ext>;
398
+ defm : PatSetCC_m<any_fsetccs, SETOLT, FLT_H, Ext>;
399
+ defm : PatSetCC_m<any_fsetccs, SETLE, FLE_H, Ext>;
400
+ defm : PatSetCC_m<any_fsetccs, SETOLE, FLE_H, Ext>;
404
401
}
405
402
406
403
let Predicates = [HasStdExtZfh] in {
0 commit comments