@@ -122,15 +122,15 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
122
122
if (Subtarget.is64Bit() && RV64LegalI32)
123
123
addRegisterClass(MVT::i32, &RISCV::GPRRegClass);
124
124
125
- if (Subtarget.hasStdExtZfhOrZfhmin ())
125
+ if (Subtarget.hasStdExtZfhmin ())
126
126
addRegisterClass(MVT::f16, &RISCV::FPR16RegClass);
127
127
if (Subtarget.hasStdExtZfbfmin())
128
128
addRegisterClass(MVT::bf16, &RISCV::FPR16RegClass);
129
129
if (Subtarget.hasStdExtF())
130
130
addRegisterClass(MVT::f32, &RISCV::FPR32RegClass);
131
131
if (Subtarget.hasStdExtD())
132
132
addRegisterClass(MVT::f64, &RISCV::FPR64RegClass);
133
- if (Subtarget.hasStdExtZhinxOrZhinxmin ())
133
+ if (Subtarget.hasStdExtZhinxmin ())
134
134
addRegisterClass(MVT::f16, &RISCV::GPRF16RegClass);
135
135
if (Subtarget.hasStdExtZfinx())
136
136
addRegisterClass(MVT::f32, &RISCV::GPRF32RegClass);
@@ -439,7 +439,7 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
439
439
ISD::FCEIL, ISD::FFLOOR, ISD::FTRUNC, ISD::FRINT, ISD::FROUND,
440
440
ISD::FROUNDEVEN};
441
441
442
- if (Subtarget.hasStdExtZfhOrZfhminOrZhinxOrZhinxmin ())
442
+ if (Subtarget.hasStdExtZfhminOrZhinxmin ())
443
443
setOperationAction(ISD::BITCAST, MVT::i16, Custom);
444
444
445
445
static const unsigned ZfhminZfbfminPromoteOps[] = {
@@ -469,7 +469,7 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
469
469
setOperationAction(ISD::FCOPYSIGN, MVT::bf16, Expand);
470
470
}
471
471
472
- if (Subtarget.hasStdExtZfhOrZfhminOrZhinxOrZhinxmin ()) {
472
+ if (Subtarget.hasStdExtZfhminOrZhinxmin ()) {
473
473
if (Subtarget.hasStdExtZfhOrZhinx()) {
474
474
setOperationAction(FPLegalNodeTypes, MVT::f16, Legal);
475
475
setOperationAction(FPRndMode, MVT::f16,
@@ -1322,7 +1322,7 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
1322
1322
// Custom-legalize bitcasts from fixed-length vectors to scalar types.
1323
1323
setOperationAction(ISD::BITCAST, {MVT::i8, MVT::i16, MVT::i32, MVT::i64},
1324
1324
Custom);
1325
- if (Subtarget.hasStdExtZfhOrZfhminOrZhinxOrZhinxmin ())
1325
+ if (Subtarget.hasStdExtZfhminOrZhinxmin ())
1326
1326
setOperationAction(ISD::BITCAST, MVT::f16, Custom);
1327
1327
if (Subtarget.hasStdExtFOrZfinx())
1328
1328
setOperationAction(ISD::BITCAST, MVT::f32, Custom);
@@ -1388,7 +1388,7 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
1388
1388
1389
1389
if (Subtarget.hasStdExtZbkb())
1390
1390
setTargetDAGCombine(ISD::BITREVERSE);
1391
- if (Subtarget.hasStdExtZfhOrZfhminOrZhinxOrZhinxmin ())
1391
+ if (Subtarget.hasStdExtZfhminOrZhinxmin ())
1392
1392
setTargetDAGCombine(ISD::SIGN_EXTEND_INREG);
1393
1393
if (Subtarget.hasStdExtFOrZfinx())
1394
1394
setTargetDAGCombine({ISD::ZERO_EXTEND, ISD::FP_TO_SINT, ISD::FP_TO_UINT,
@@ -2099,7 +2099,7 @@ bool RISCVTargetLowering::isFPImmLegal(const APFloat &Imm, EVT VT,
2099
2099
bool ForCodeSize) const {
2100
2100
bool IsLegalVT = false;
2101
2101
if (VT == MVT::f16)
2102
- IsLegalVT = Subtarget.hasStdExtZfhOrZfhminOrZhinxOrZhinxmin ();
2102
+ IsLegalVT = Subtarget.hasStdExtZfhminOrZhinxmin ();
2103
2103
else if (VT == MVT::f32)
2104
2104
IsLegalVT = Subtarget.hasStdExtFOrZfinx();
2105
2105
else if (VT == MVT::f64)
@@ -2171,7 +2171,7 @@ MVT RISCVTargetLowering::getRegisterTypeForCallingConv(LLVMContext &Context,
2171
2171
// Use f32 to pass f16 if it is legal and Zfh/Zfhmin is not enabled.
2172
2172
// We might still end up using a GPR but that will be decided based on ABI.
2173
2173
if (VT == MVT::f16 && Subtarget.hasStdExtFOrZfinx() &&
2174
- !Subtarget.hasStdExtZfhOrZfhminOrZhinxOrZhinxmin ())
2174
+ !Subtarget.hasStdExtZfhminOrZhinxmin ())
2175
2175
return MVT::f32;
2176
2176
2177
2177
MVT PartVT = TargetLowering::getRegisterTypeForCallingConv(Context, CC, VT);
@@ -2188,7 +2188,7 @@ unsigned RISCVTargetLowering::getNumRegistersForCallingConv(LLVMContext &Context
2188
2188
// Use f32 to pass f16 if it is legal and Zfh/Zfhmin is not enabled.
2189
2189
// We might still end up using a GPR but that will be decided based on ABI.
2190
2190
if (VT == MVT::f16 && Subtarget.hasStdExtFOrZfinx() &&
2191
- !Subtarget.hasStdExtZfhOrZfhminOrZhinxOrZhinxmin ())
2191
+ !Subtarget.hasStdExtZfhminOrZhinxmin ())
2192
2192
return 1;
2193
2193
2194
2194
return TargetLowering::getNumRegistersForCallingConv(Context, CC, VT);
@@ -5761,7 +5761,7 @@ SDValue RISCVTargetLowering::LowerOperation(SDValue Op,
5761
5761
EVT Op0VT = Op0.getValueType();
5762
5762
MVT XLenVT = Subtarget.getXLenVT();
5763
5763
if (VT == MVT::f16 && Op0VT == MVT::i16 &&
5764
- Subtarget.hasStdExtZfhOrZfhminOrZhinxOrZhinxmin ()) {
5764
+ Subtarget.hasStdExtZfhminOrZhinxmin ()) {
5765
5765
SDValue NewOp0 = DAG.getNode(ISD::ANY_EXTEND, DL, XLenVT, Op0);
5766
5766
SDValue FPConv = DAG.getNode(RISCVISD::FMV_H_X, DL, MVT::f16, NewOp0);
5767
5767
return FPConv;
@@ -11527,11 +11527,11 @@ void RISCVTargetLowering::ReplaceNodeResults(SDNode *N,
11527
11527
EVT Op0VT = Op0.getValueType();
11528
11528
MVT XLenVT = Subtarget.getXLenVT();
11529
11529
if (VT == MVT::i16 && Op0VT == MVT::f16 &&
11530
- Subtarget.hasStdExtZfhOrZfhminOrZhinxOrZhinxmin ()) {
11530
+ Subtarget.hasStdExtZfhminOrZhinxmin ()) {
11531
11531
SDValue FPConv = DAG.getNode(RISCVISD::FMV_X_ANYEXTH, DL, XLenVT, Op0);
11532
11532
Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i16, FPConv));
11533
11533
} else if (VT == MVT::i16 && Op0VT == MVT::bf16 &&
11534
- Subtarget.hasStdExtZfbfmin()) {
11534
+ Subtarget.hasStdExtZfbfmin()) {
11535
11535
SDValue FPConv = DAG.getNode(RISCVISD::FMV_X_ANYEXTH, DL, XLenVT, Op0);
11536
11536
Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i16, FPConv));
11537
11537
} else if (VT == MVT::i32 && Op0VT == MVT::f32 && Subtarget.is64Bit() &&
@@ -18632,15 +18632,15 @@ RISCVTargetLowering::getRegForInlineAsmConstraint(const TargetRegisterInfo *TRI,
18632
18632
// TODO: Support fixed vectors up to XLen for P extension?
18633
18633
if (VT.isVector())
18634
18634
break;
18635
- if (VT == MVT::f16 && Subtarget.hasStdExtZhinxOrZhinxmin ())
18635
+ if (VT == MVT::f16 && Subtarget.hasStdExtZhinxmin ())
18636
18636
return std::make_pair(0U, &RISCV::GPRF16RegClass);
18637
18637
if (VT == MVT::f32 && Subtarget.hasStdExtZfinx())
18638
18638
return std::make_pair(0U, &RISCV::GPRF32RegClass);
18639
18639
if (VT == MVT::f64 && Subtarget.hasStdExtZdinx() && !Subtarget.is64Bit())
18640
18640
return std::make_pair(0U, &RISCV::GPRPF64RegClass);
18641
18641
return std::make_pair(0U, &RISCV::GPRNoX0RegClass);
18642
18642
case 'f':
18643
- if (Subtarget.hasStdExtZfhOrZfhmin () && VT == MVT::f16)
18643
+ if (Subtarget.hasStdExtZfhmin () && VT == MVT::f16)
18644
18644
return std::make_pair(0U, &RISCV::FPR16RegClass);
18645
18645
if (Subtarget.hasStdExtF() && VT == MVT::f32)
18646
18646
return std::make_pair(0U, &RISCV::FPR32RegClass);
@@ -18753,7 +18753,7 @@ RISCVTargetLowering::getRegForInlineAsmConstraint(const TargetRegisterInfo *TRI,
18753
18753
}
18754
18754
if (VT == MVT::f32 || VT == MVT::Other)
18755
18755
return std::make_pair(FReg, &RISCV::FPR32RegClass);
18756
- if (Subtarget.hasStdExtZfhOrZfhmin () && VT == MVT::f16) {
18756
+ if (Subtarget.hasStdExtZfhmin () && VT == MVT::f16) {
18757
18757
unsigned RegNo = FReg - RISCV::F0_F;
18758
18758
unsigned HReg = RISCV::F0_H + RegNo;
18759
18759
return std::make_pair(HReg, &RISCV::FPR16RegClass);
@@ -19100,7 +19100,7 @@ bool RISCVTargetLowering::shouldConvertFpToSat(unsigned Op, EVT FPVT,
19100
19100
19101
19101
switch (FPVT.getSimpleVT().SimpleTy) {
19102
19102
case MVT::f16:
19103
- return Subtarget.hasStdExtZfhOrZfhmin ();
19103
+ return Subtarget.hasStdExtZfhmin ();
19104
19104
case MVT::f32:
19105
19105
return Subtarget.hasStdExtF();
19106
19106
case MVT::f64:
0 commit comments