Skip to content

Commit 7c8030e

Browse files
authored
[RISCV] Combine HasStdExtZfhOrZfhmin and HasStdExtZfhmin. NFC (#78826)
I kept the AssemblerPredicate and diagnostic from HasStdExtZfhOrZfhmin that mentions both extensions, but replaced all uses with HasStdExtZfhmin. Same for the Zhinxmin equivalent.
1 parent 80b67ee commit 7c8030e

File tree

2 files changed

+26
-37
lines changed

2 files changed

+26
-37
lines changed

llvm/lib/Target/RISCV/RISCVFeatures.td

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ def FeatureStdExtZfhmin
214214
[FeatureStdExtF]>;
215215
def HasStdExtZfhmin : Predicate<"Subtarget->hasStdExtZfhmin()">,
216216
AssemblerPredicate<(all_of FeatureStdExtZfhmin),
217+
"'Zfh' (Half-Precision Floating-Point) or "
217218
"'Zfhmin' (Half-Precision Floating-Point Minimal)">;
218219

219220
def FeatureStdExtZfh
@@ -225,13 +226,6 @@ def HasStdExtZfh : Predicate<"Subtarget->hasStdExtZfh()">,
225226
"'Zfh' (Half-Precision Floating-Point)">;
226227
def NoStdExtZfh : Predicate<"!Subtarget->hasStdExtZfh()">;
227228

228-
// FIXME: Remove this.
229-
def HasStdExtZfhOrZfhmin
230-
: Predicate<"Subtarget->hasStdExtZfhmin()">,
231-
AssemblerPredicate<(all_of FeatureStdExtZfhmin),
232-
"'Zfh' (Half-Precision Floating-Point) or "
233-
"'Zfhmin' (Half-Precision Floating-Point Minimal)">;
234-
235229
def FeatureStdExtZfbfmin
236230
: SubtargetFeature<"experimental-zfbfmin", "HasStdExtZfbfmin", "true",
237231
"'Zfbfmin' (Scalar BF16 Converts)",
@@ -278,6 +272,7 @@ def FeatureStdExtZhinxmin
278272
[FeatureStdExtZfinx]>;
279273
def HasStdExtZhinxmin : Predicate<"Subtarget->hasStdExtZhinxmin()">,
280274
AssemblerPredicate<(all_of FeatureStdExtZhinxmin),
275+
"'Zhinx' (Half Float in Integer) or "
281276
"'Zhinxmin' (Half Float in Integer Minimal)">;
282277

283278
def FeatureStdExtZhinx
@@ -289,12 +284,6 @@ def HasStdExtZhinx : Predicate<"Subtarget->hasStdExtZhinx()">,
289284
"'Zhinx' (Half Float in Integer)">;
290285
def NoStdExtZhinx : Predicate<"!Subtarget->hasStdExtZhinx()">;
291286

292-
def HasStdExtZhinxOrZhinxmin
293-
: Predicate<"Subtarget->hasStdExtZhinxmin()">,
294-
AssemblerPredicate<(all_of FeatureStdExtZhinxmin),
295-
"'Zhinx' (Half Float in Integer) or "
296-
"'Zhinxmin' (Half Float in Integer Minimal)">;
297-
298287
// Compressed Extensions
299288

300289
def FeatureStdExtC

llvm/lib/Target/RISCV/RISCVInstrInfoZfh.td

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -40,30 +40,30 @@ def FPR16INX : RegisterOperand<GPRF16> {
4040

4141
def ZfhExt : ExtInfo<"", "", [HasStdExtZfh],
4242
f16, FPR16, FPR32, ?, FPR16>;
43-
def ZfhminExt : ExtInfo<"", "", [HasStdExtZfhOrZfhmin],
43+
def ZfhminExt : ExtInfo<"", "", [HasStdExtZfhmin],
4444
f16, FPR16, FPR32, ?, FPR16>;
4545
def ZfhDExt : ExtInfo<"", "", [HasStdExtZfh, HasStdExtD],
4646
?, ?, FPR32, FPR64, FPR16>;
47-
def ZfhminDExt : ExtInfo<"", "", [HasStdExtZfhOrZfhmin, HasStdExtD],
47+
def ZfhminDExt : ExtInfo<"", "", [HasStdExtZfhmin, HasStdExtD],
4848
?, ?, FPR32, FPR64, FPR16>;
4949

5050
def ZhinxExt : ExtInfo<"_INX", "RVZfinx",
5151
[HasStdExtZhinx],
5252
f16, FPR16INX, FPR32INX, ?, FPR16INX>;
5353
def ZhinxminExt : ExtInfo<"_INX", "RVZfinx",
54-
[HasStdExtZhinxOrZhinxmin],
54+
[HasStdExtZhinxmin],
5555
f16, FPR16INX, FPR32INX, ?, FPR16INX>;
5656
def ZhinxZdinxExt : ExtInfo<"_INX", "RVZfinx",
5757
[HasStdExtZhinx, HasStdExtZdinx, IsRV64],
5858
?, ?, FPR32INX, FPR64INX, FPR16INX>;
5959
def ZhinxminZdinxExt : ExtInfo<"_INX", "RVZfinx",
60-
[HasStdExtZhinxOrZhinxmin, HasStdExtZdinx, IsRV64],
60+
[HasStdExtZhinxmin, HasStdExtZdinx, IsRV64],
6161
?, ?, FPR32INX, FPR64INX, FPR16INX>;
6262
def ZhinxZdinx32Ext : ExtInfo<"_IN32X", "RV32Zdinx",
6363
[HasStdExtZhinx, HasStdExtZdinx, IsRV32],
6464
?, ?, FPR32INX, FPR64IN32X, FPR16INX >;
6565
def ZhinxminZdinx32Ext : ExtInfo<"_IN32X", "RV32Zdinx",
66-
[HasStdExtZhinxOrZhinxmin, HasStdExtZdinx, IsRV32],
66+
[HasStdExtZhinxmin, HasStdExtZdinx, IsRV32],
6767
?, ?, FPR32INX, FPR64IN32X, FPR16INX>;
6868

6969
defvar ZfhExts = [ZfhExt, ZhinxExt];
@@ -200,10 +200,10 @@ foreach Ext = ZfhminDExts in {
200200
// Assembler Pseudo Instructions (User-Level ISA, Version 2.2, Chapter 20)
201201
//===----------------------------------------------------------------------===//
202202

203-
let Predicates = [HasStdExtZfhOrZfhmin] in {
203+
let Predicates = [HasStdExtZfhmin] in {
204204
def : InstAlias<"flh $rd, (${rs1})", (FLH FPR16:$rd, GPR:$rs1, 0), 0>;
205205
def : InstAlias<"fsh $rs2, (${rs1})", (FSH FPR16:$rs2, GPR:$rs1, 0), 0>;
206-
} // Predicates = [HasStdExtZfhOrZfhmin]
206+
} // Predicates = [HasStdExtZfhmin]
207207

208208
let Predicates = [HasStdExtZfh] in {
209209
def : InstAlias<"fmv.h $rd, $rs", (FSGNJ_H FPR16:$rd, FPR16:$rs, FPR16:$rs)>;
@@ -223,10 +223,10 @@ def PseudoQuietFLT_H : PseudoQuietFCMP<FPR16>;
223223
}
224224
} // Predicates = [HasStdExtZfh]
225225

226-
let Predicates = [HasStdExtZfhOrZfhmin] in {
226+
let Predicates = [HasStdExtZfhmin] in {
227227
def PseudoFLH : PseudoFloatLoad<"flh", FPR16>;
228228
def PseudoFSH : PseudoStore<"fsh", FPR16>;
229-
} // Predicates = [HasStdExtZfhOrZfhmin]
229+
} // Predicates = [HasStdExtZfhmin]
230230

231231
let Predicates = [HasStdExtZhinx] in {
232232
def : InstAlias<"fmv.h $rd, $rs", (FSGNJ_H_INX FPR16INX:$rd, FPR16INX:$rs, FPR16INX:$rs)>;
@@ -242,7 +242,7 @@ let usesCustomInserter = 1 in {
242242
def PseudoQuietFLE_H_INX : PseudoQuietFCMP<FPR16INX>;
243243
def PseudoQuietFLT_H_INX : PseudoQuietFCMP<FPR16INX>;
244244
}
245-
} // Predicates = [HasStdExtZhinxOrZhinxmin]
245+
} // Predicates = [HasStdExtZhinxmin]
246246

247247
//===----------------------------------------------------------------------===//
248248
// Pseudo-instructions and codegen patterns
@@ -412,15 +412,15 @@ defm Select_FPR16INX : SelectCC_GPR_rrirr<FPR16INX, f16>;
412412
def PseudoFROUND_H_INX : PseudoFROUND<FPR16INX, f16>;
413413
} // Predicates = [HasStdExtZhinx]
414414

415-
let Predicates = [HasStdExtZfhOrZfhmin] in {
415+
let Predicates = [HasStdExtZfhmin] in {
416416
/// Loads
417417
def : LdPat<load, FLH, f16>;
418418

419419
/// Stores
420420
def : StPat<store, FSH, FPR16, f16>;
421-
} // Predicates = [HasStdExtZfhOrZfhmin]
421+
} // Predicates = [HasStdExtZfhmin]
422422

423-
let Predicates = [HasStdExtZhinxOrZhinxmin] in {
423+
let Predicates = [HasStdExtZhinxmin] in {
424424
/// Loads
425425
def : Pat<(f16 (load (AddrRegImm (XLenVT GPR:$rs1), simm12:$imm12))),
426426
(COPY_TO_REGCLASS (LH GPR:$rs1, simm12:$imm12), GPRF16)>;
@@ -429,9 +429,9 @@ def : Pat<(f16 (load (AddrRegImm (XLenVT GPR:$rs1), simm12:$imm12))),
429429
def : Pat<(store (f16 FPR16INX:$rs2),
430430
(AddrRegImm (XLenVT GPR:$rs1), simm12:$imm12)),
431431
(SH (COPY_TO_REGCLASS FPR16INX:$rs2, GPR), GPR:$rs1, simm12:$imm12)>;
432-
} // Predicates = [HasStdExtZhinxOrZhinxmin]
432+
} // Predicates = [HasStdExtZhinxmin]
433433

434-
let Predicates = [HasStdExtZfhOrZfhmin] in {
434+
let Predicates = [HasStdExtZfhmin] in {
435435
/// Float conversion operations
436436

437437
// f32 -> f16, f16 -> f32
@@ -444,9 +444,9 @@ def : Pat<(riscv_fmv_x_anyexth (f16 FPR16:$src)), (FMV_X_H FPR16:$src)>;
444444
def : Pat<(riscv_fmv_x_signexth (f16 FPR16:$src)), (FMV_X_H FPR16:$src)>;
445445

446446
def : Pat<(fcopysign FPR32:$rs1, (f16 FPR16:$rs2)), (FSGNJ_S $rs1, (FCVT_S_H $rs2, FRM_RNE))>;
447-
} // Predicates = [HasStdExtZfhOrZfhmin]
447+
} // Predicates = [HasStdExtZfhmin]
448448

449-
let Predicates = [HasStdExtZhinxOrZhinxmin] in {
449+
let Predicates = [HasStdExtZhinxmin] in {
450450
/// Float conversion operations
451451

452452
// f32 -> f16, f16 -> f32
@@ -459,7 +459,7 @@ def : Pat<(riscv_fmv_x_anyexth FPR16INX:$src), (COPY_TO_REGCLASS FPR16INX:$src,
459459
def : Pat<(riscv_fmv_x_signexth FPR16INX:$src), (COPY_TO_REGCLASS FPR16INX:$src, GPR)>;
460460

461461
def : Pat<(fcopysign FPR32INX:$rs1, FPR16INX:$rs2), (FSGNJ_S_INX $rs1, (FCVT_S_H_INX $rs2, FRM_RNE))>;
462-
} // Predicates = [HasStdExtZhinxOrZhinxmin]
462+
} // Predicates = [HasStdExtZhinxmin]
463463

464464
let Predicates = [HasStdExtZfh] in {
465465
// 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)>;
561561
def : Pat<(any_uint_to_fp (i64 GPR:$rs1)), (FCVT_H_LU_INX $rs1, FRM_DYN)>;
562562
} // Predicates = [HasStdExtZhinx, IsRV64]
563563

564-
let Predicates = [HasStdExtZfhOrZfhmin, HasStdExtD] in {
564+
let Predicates = [HasStdExtZfhmin, HasStdExtD] in {
565565
/// Float conversion operations
566566
// f64 -> f16, f16 -> f64
567567
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)>;
571571
def : Pat<(f16 (fcopysign FPR16:$rs1, FPR64:$rs2)),
572572
(FSGNJ_H $rs1, (FCVT_H_D $rs2, FRM_DYN))>;
573573
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]
575575

576-
let Predicates = [HasStdExtZhinxOrZhinxmin, HasStdExtZdinx, IsRV32] in {
576+
let Predicates = [HasStdExtZhinxmin, HasStdExtZdinx, IsRV32] in {
577577
/// Float conversion operations
578578
// f64 -> f16, f16 -> f64
579579
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)>
583583
def : Pat<(fcopysign FPR16INX:$rs1, FPR64IN32X:$rs2),
584584
(FSGNJ_H_INX $rs1, (FCVT_H_D_IN32X $rs2, 0b111))>;
585585
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]
587587

588-
let Predicates = [HasStdExtZhinxOrZhinxmin, HasStdExtZdinx, IsRV64] in {
588+
let Predicates = [HasStdExtZhinxmin, HasStdExtZdinx, IsRV64] in {
589589
/// Float conversion operations
590590
// f64 -> f16, f16 -> f64
591591
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)>;
595595
def : Pat<(fcopysign FPR16INX:$rs1, FPR64INX:$rs2),
596596
(FSGNJ_H_INX $rs1, (FCVT_H_D_INX $rs2, 0b111))>;
597597
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]
599599

600600
let Predicates = [HasStdExtZfhmin, NoStdExtZfh] in {
601601
// half->[u]int. Round-to-zero must be used.

0 commit comments

Comments
 (0)