Skip to content

Commit 6f682c2

Browse files
committed
[RISCV] Merge similar code for legalizing i16<->f16 and i<->bf16 bitcasts. NFC
1 parent 4f4bd41 commit 6f682c2

File tree

1 file changed

+9
-22
lines changed

1 file changed

+9
-22
lines changed

llvm/lib/Target/RISCV/RISCVISelLowering.cpp

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6295,31 +6295,21 @@ SDValue RISCVTargetLowering::LowerOperation(SDValue Op,
62956295
SDValue Op0 = Op.getOperand(0);
62966296
EVT Op0VT = Op0.getValueType();
62976297
MVT XLenVT = Subtarget.getXLenVT();
6298-
if (VT == MVT::f16 && Op0VT == MVT::i16 &&
6299-
Subtarget.hasStdExtZfhminOrZhinxmin()) {
6298+
if (Op0VT == MVT::i16 &&
6299+
((VT == MVT::f16 && Subtarget.hasStdExtZfhminOrZhinxmin()) ||
6300+
(VT == MVT::bf16 && Subtarget.hasStdExtZfbfmin()))) {
63006301
SDValue NewOp0 = DAG.getNode(ISD::ANY_EXTEND, DL, XLenVT, Op0);
6301-
SDValue FPConv = DAG.getNode(RISCVISD::FMV_H_X, DL, MVT::f16, NewOp0);
6302-
return FPConv;
6303-
}
6304-
if (VT == MVT::bf16 && Op0VT == MVT::i16 &&
6305-
Subtarget.hasStdExtZfbfmin()) {
6306-
SDValue NewOp0 = DAG.getNode(ISD::ANY_EXTEND, DL, XLenVT, Op0);
6307-
SDValue FPConv = DAG.getNode(RISCVISD::FMV_H_X, DL, MVT::bf16, NewOp0);
6308-
return FPConv;
6302+
return DAG.getNode(RISCVISD::FMV_H_X, DL, VT, NewOp0);
63096303
}
63106304
if (VT == MVT::f32 && Op0VT == MVT::i32 && Subtarget.is64Bit() &&
63116305
Subtarget.hasStdExtFOrZfinx()) {
63126306
SDValue NewOp0 = DAG.getNode(ISD::ANY_EXTEND, DL, MVT::i64, Op0);
6313-
SDValue FPConv =
6314-
DAG.getNode(RISCVISD::FMV_W_X_RV64, DL, MVT::f32, NewOp0);
6315-
return FPConv;
6307+
return DAG.getNode(RISCVISD::FMV_W_X_RV64, DL, MVT::f32, NewOp0);
63166308
}
63176309
if (VT == MVT::f64 && Op0VT == MVT::i64 && XLenVT == MVT::i32) {
63186310
SDValue Lo, Hi;
63196311
std::tie(Lo, Hi) = DAG.SplitScalar(Op0, DL, MVT::i32, MVT::i32);
6320-
SDValue RetReg =
6321-
DAG.getNode(RISCVISD::BuildPairF64, DL, MVT::f64, Lo, Hi);
6322-
return RetReg;
6312+
return DAG.getNode(RISCVISD::BuildPairF64, DL, MVT::f64, Lo, Hi);
63236313
}
63246314

63256315
// Consider other scalar<->scalar casts as legal if the types are legal.
@@ -12567,12 +12557,9 @@ void RISCVTargetLowering::ReplaceNodeResults(SDNode *N,
1256712557
SDValue Op0 = N->getOperand(0);
1256812558
EVT Op0VT = Op0.getValueType();
1256912559
MVT XLenVT = Subtarget.getXLenVT();
12570-
if (VT == MVT::i16 && Op0VT == MVT::f16 &&
12571-
Subtarget.hasStdExtZfhminOrZhinxmin()) {
12572-
SDValue FPConv = DAG.getNode(RISCVISD::FMV_X_ANYEXTH, DL, XLenVT, Op0);
12573-
Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i16, FPConv));
12574-
} else if (VT == MVT::i16 && Op0VT == MVT::bf16 &&
12575-
Subtarget.hasStdExtZfbfmin()) {
12560+
if (VT == MVT::i16 &&
12561+
((Op0VT == MVT::f16 && Subtarget.hasStdExtZfhminOrZhinxmin()) ||
12562+
(Op0VT == MVT::bf16 && Subtarget.hasStdExtZfbfmin()))) {
1257612563
SDValue FPConv = DAG.getNode(RISCVISD::FMV_X_ANYEXTH, DL, XLenVT, Op0);
1257712564
Results.push_back(DAG.getNode(ISD::TRUNCATE, DL, MVT::i16, FPConv));
1257812565
} else if (VT == MVT::i32 && Op0VT == MVT::f32 && Subtarget.is64Bit() &&

0 commit comments

Comments
 (0)