@@ -40,30 +40,30 @@ def FPR16INX : RegisterOperand<GPRF16> {
40
40
41
41
def ZfhExt : ExtInfo<"", "", [HasStdExtZfh],
42
42
f16, FPR16, FPR32, ?, FPR16>;
43
- def ZfhminExt : ExtInfo<"", "", [HasStdExtZfhOrZfhmin ],
43
+ def ZfhminExt : ExtInfo<"", "", [HasStdExtZfhmin ],
44
44
f16, FPR16, FPR32, ?, FPR16>;
45
45
def ZfhDExt : ExtInfo<"", "", [HasStdExtZfh, HasStdExtD],
46
46
?, ?, FPR32, FPR64, FPR16>;
47
- def ZfhminDExt : ExtInfo<"", "", [HasStdExtZfhOrZfhmin , HasStdExtD],
47
+ def ZfhminDExt : ExtInfo<"", "", [HasStdExtZfhmin , HasStdExtD],
48
48
?, ?, FPR32, FPR64, FPR16>;
49
49
50
50
def ZhinxExt : ExtInfo<"_INX", "RVZfinx",
51
51
[HasStdExtZhinx],
52
52
f16, FPR16INX, FPR32INX, ?, FPR16INX>;
53
53
def ZhinxminExt : ExtInfo<"_INX", "RVZfinx",
54
- [HasStdExtZhinxOrZhinxmin ],
54
+ [HasStdExtZhinxmin ],
55
55
f16, FPR16INX, FPR32INX, ?, FPR16INX>;
56
56
def ZhinxZdinxExt : ExtInfo<"_INX", "RVZfinx",
57
57
[HasStdExtZhinx, HasStdExtZdinx, IsRV64],
58
58
?, ?, FPR32INX, FPR64INX, FPR16INX>;
59
59
def ZhinxminZdinxExt : ExtInfo<"_INX", "RVZfinx",
60
- [HasStdExtZhinxOrZhinxmin , HasStdExtZdinx, IsRV64],
60
+ [HasStdExtZhinxmin , HasStdExtZdinx, IsRV64],
61
61
?, ?, FPR32INX, FPR64INX, FPR16INX>;
62
62
def ZhinxZdinx32Ext : ExtInfo<"_IN32X", "RV32Zdinx",
63
63
[HasStdExtZhinx, HasStdExtZdinx, IsRV32],
64
64
?, ?, FPR32INX, FPR64IN32X, FPR16INX >;
65
65
def ZhinxminZdinx32Ext : ExtInfo<"_IN32X", "RV32Zdinx",
66
- [HasStdExtZhinxOrZhinxmin , HasStdExtZdinx, IsRV32],
66
+ [HasStdExtZhinxmin , HasStdExtZdinx, IsRV32],
67
67
?, ?, FPR32INX, FPR64IN32X, FPR16INX>;
68
68
69
69
defvar ZfhExts = [ZfhExt, ZhinxExt];
@@ -200,10 +200,10 @@ foreach Ext = ZfhminDExts in {
200
200
// Assembler Pseudo Instructions (User-Level ISA, Version 2.2, Chapter 20)
201
201
//===----------------------------------------------------------------------===//
202
202
203
- let Predicates = [HasStdExtZfhOrZfhmin ] in {
203
+ let Predicates = [HasStdExtZfhmin ] in {
204
204
def : InstAlias<"flh $rd, (${rs1})", (FLH FPR16:$rd, GPR:$rs1, 0), 0>;
205
205
def : InstAlias<"fsh $rs2, (${rs1})", (FSH FPR16:$rs2, GPR:$rs1, 0), 0>;
206
- } // Predicates = [HasStdExtZfhOrZfhmin ]
206
+ } // Predicates = [HasStdExtZfhmin ]
207
207
208
208
let Predicates = [HasStdExtZfh] in {
209
209
def : InstAlias<"fmv.h $rd, $rs", (FSGNJ_H FPR16:$rd, FPR16:$rs, FPR16:$rs)>;
@@ -223,10 +223,10 @@ def PseudoQuietFLT_H : PseudoQuietFCMP<FPR16>;
223
223
}
224
224
} // Predicates = [HasStdExtZfh]
225
225
226
- let Predicates = [HasStdExtZfhOrZfhmin ] in {
226
+ let Predicates = [HasStdExtZfhmin ] in {
227
227
def PseudoFLH : PseudoFloatLoad<"flh", FPR16>;
228
228
def PseudoFSH : PseudoStore<"fsh", FPR16>;
229
- } // Predicates = [HasStdExtZfhOrZfhmin ]
229
+ } // Predicates = [HasStdExtZfhmin ]
230
230
231
231
let Predicates = [HasStdExtZhinx] in {
232
232
def : InstAlias<"fmv.h $rd, $rs", (FSGNJ_H_INX FPR16INX:$rd, FPR16INX:$rs, FPR16INX:$rs)>;
@@ -242,7 +242,7 @@ let usesCustomInserter = 1 in {
242
242
def PseudoQuietFLE_H_INX : PseudoQuietFCMP<FPR16INX>;
243
243
def PseudoQuietFLT_H_INX : PseudoQuietFCMP<FPR16INX>;
244
244
}
245
- } // Predicates = [HasStdExtZhinxOrZhinxmin ]
245
+ } // Predicates = [HasStdExtZhinxmin ]
246
246
247
247
//===----------------------------------------------------------------------===//
248
248
// Pseudo-instructions and codegen patterns
@@ -412,15 +412,15 @@ defm Select_FPR16INX : SelectCC_GPR_rrirr<FPR16INX, f16>;
412
412
def PseudoFROUND_H_INX : PseudoFROUND<FPR16INX, f16>;
413
413
} // Predicates = [HasStdExtZhinx]
414
414
415
- let Predicates = [HasStdExtZfhOrZfhmin ] in {
415
+ let Predicates = [HasStdExtZfhmin ] in {
416
416
/// Loads
417
417
def : LdPat<load, FLH, f16>;
418
418
419
419
/// Stores
420
420
def : StPat<store, FSH, FPR16, f16>;
421
- } // Predicates = [HasStdExtZfhOrZfhmin ]
421
+ } // Predicates = [HasStdExtZfhmin ]
422
422
423
- let Predicates = [HasStdExtZhinxOrZhinxmin ] in {
423
+ let Predicates = [HasStdExtZhinxmin ] in {
424
424
/// Loads
425
425
def : Pat<(f16 (load (AddrRegImm (XLenVT GPR:$rs1), simm12:$imm12))),
426
426
(COPY_TO_REGCLASS (LH GPR:$rs1, simm12:$imm12), GPRF16)>;
@@ -429,9 +429,9 @@ def : Pat<(f16 (load (AddrRegImm (XLenVT GPR:$rs1), simm12:$imm12))),
429
429
def : Pat<(store (f16 FPR16INX:$rs2),
430
430
(AddrRegImm (XLenVT GPR:$rs1), simm12:$imm12)),
431
431
(SH (COPY_TO_REGCLASS FPR16INX:$rs2, GPR), GPR:$rs1, simm12:$imm12)>;
432
- } // Predicates = [HasStdExtZhinxOrZhinxmin ]
432
+ } // Predicates = [HasStdExtZhinxmin ]
433
433
434
- let Predicates = [HasStdExtZfhOrZfhmin ] in {
434
+ let Predicates = [HasStdExtZfhmin ] in {
435
435
/// Float conversion operations
436
436
437
437
// f32 -> f16, f16 -> f32
@@ -444,9 +444,9 @@ def : Pat<(riscv_fmv_x_anyexth (f16 FPR16:$src)), (FMV_X_H FPR16:$src)>;
444
444
def : Pat<(riscv_fmv_x_signexth (f16 FPR16:$src)), (FMV_X_H FPR16:$src)>;
445
445
446
446
def : Pat<(fcopysign FPR32:$rs1, (f16 FPR16:$rs2)), (FSGNJ_S $rs1, (FCVT_S_H $rs2, FRM_RNE))>;
447
- } // Predicates = [HasStdExtZfhOrZfhmin ]
447
+ } // Predicates = [HasStdExtZfhmin ]
448
448
449
- let Predicates = [HasStdExtZhinxOrZhinxmin ] in {
449
+ let Predicates = [HasStdExtZhinxmin ] in {
450
450
/// Float conversion operations
451
451
452
452
// f32 -> f16, f16 -> f32
@@ -459,7 +459,7 @@ def : Pat<(riscv_fmv_x_anyexth FPR16INX:$src), (COPY_TO_REGCLASS FPR16INX:$src,
459
459
def : Pat<(riscv_fmv_x_signexth FPR16INX:$src), (COPY_TO_REGCLASS FPR16INX:$src, GPR)>;
460
460
461
461
def : Pat<(fcopysign FPR32INX:$rs1, FPR16INX:$rs2), (FSGNJ_S_INX $rs1, (FCVT_S_H_INX $rs2, FRM_RNE))>;
462
- } // Predicates = [HasStdExtZhinxOrZhinxmin ]
462
+ } // Predicates = [HasStdExtZhinxmin ]
463
463
464
464
let Predicates = [HasStdExtZfh] in {
465
465
// half->[u]int. Round-to-zero must be used.
@@ -561,7 +561,7 @@ def : Pat<(any_sint_to_fp (i64 GPR:$rs1)), (FCVT_H_L_INX $rs1, FRM_DYN)>;
561
561
def : Pat<(any_uint_to_fp (i64 GPR:$rs1)), (FCVT_H_LU_INX $rs1, FRM_DYN)>;
562
562
} // Predicates = [HasStdExtZhinx, IsRV64]
563
563
564
- let Predicates = [HasStdExtZfhOrZfhmin , HasStdExtD] in {
564
+ let Predicates = [HasStdExtZfhmin , HasStdExtD] in {
565
565
/// Float conversion operations
566
566
// f64 -> f16, f16 -> f64
567
567
def : Pat<(f16 (any_fpround FPR64:$rs1)), (FCVT_H_D FPR64:$rs1, FRM_DYN)>;
@@ -571,9 +571,9 @@ def : Pat<(any_fpextend (f16 FPR16:$rs1)), (FCVT_D_H FPR16:$rs1, FRM_RNE)>;
571
571
def : Pat<(f16 (fcopysign FPR16:$rs1, FPR64:$rs2)),
572
572
(FSGNJ_H $rs1, (FCVT_H_D $rs2, FRM_DYN))>;
573
573
def : Pat<(fcopysign FPR64:$rs1, (f16 FPR16:$rs2)), (FSGNJ_D $rs1, (FCVT_D_H $rs2, FRM_RNE))>;
574
- } // Predicates = [HasStdExtZfhOrZfhmin , HasStdExtD]
574
+ } // Predicates = [HasStdExtZfhmin , HasStdExtD]
575
575
576
- let Predicates = [HasStdExtZhinxOrZhinxmin , HasStdExtZdinx, IsRV32] in {
576
+ let Predicates = [HasStdExtZhinxmin , HasStdExtZdinx, IsRV32] in {
577
577
/// Float conversion operations
578
578
// f64 -> f16, f16 -> f64
579
579
def : Pat<(any_fpround FPR64IN32X:$rs1), (FCVT_H_D_IN32X FPR64IN32X:$rs1, FRM_DYN)>;
@@ -583,9 +583,9 @@ def : Pat<(any_fpextend FPR16INX:$rs1), (FCVT_D_H_IN32X FPR16INX:$rs1, FRM_RNE)>
583
583
def : Pat<(fcopysign FPR16INX:$rs1, FPR64IN32X:$rs2),
584
584
(FSGNJ_H_INX $rs1, (FCVT_H_D_IN32X $rs2, 0b111))>;
585
585
def : Pat<(fcopysign FPR64IN32X:$rs1, FPR16INX:$rs2), (FSGNJ_D_IN32X $rs1, (FCVT_D_H_IN32X $rs2, FRM_RNE))>;
586
- } // Predicates = [HasStdExtZhinxOrZhinxmin , HasStdExtZdinx, IsRV32]
586
+ } // Predicates = [HasStdExtZhinxmin , HasStdExtZdinx, IsRV32]
587
587
588
- let Predicates = [HasStdExtZhinxOrZhinxmin , HasStdExtZdinx, IsRV64] in {
588
+ let Predicates = [HasStdExtZhinxmin , HasStdExtZdinx, IsRV64] in {
589
589
/// Float conversion operations
590
590
// f64 -> f16, f16 -> f64
591
591
def : Pat<(any_fpround FPR64INX:$rs1), (FCVT_H_D_INX FPR64INX:$rs1, FRM_DYN)>;
@@ -595,7 +595,7 @@ def : Pat<(any_fpextend FPR16INX:$rs1), (FCVT_D_H_INX FPR16INX:$rs1, FRM_RNE)>;
595
595
def : Pat<(fcopysign FPR16INX:$rs1, FPR64INX:$rs2),
596
596
(FSGNJ_H_INX $rs1, (FCVT_H_D_INX $rs2, 0b111))>;
597
597
def : Pat<(fcopysign FPR64INX:$rs1, FPR16INX:$rs2), (FSGNJ_D_INX $rs1, (FCVT_D_H_INX $rs2, FRM_RNE))>;
598
- } // Predicates = [HasStdExtZhinxOrZhinxmin , HasStdExtZdinx, IsRV64]
598
+ } // Predicates = [HasStdExtZhinxmin , HasStdExtZdinx, IsRV64]
599
599
600
600
let Predicates = [HasStdExtZfhmin, NoStdExtZfh] in {
601
601
// half->[u]int. Round-to-zero must be used.
0 commit comments