[RISCV] Disable strict node mutation and use correct lowering action of strict_fsetcc(s).

The patch disables strict node mutation by setting IsStrictFPEnabled to true.
It also fixes wrong lowering action of strict_fsetcc(s).

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D149320
This commit is contained in:
Yeting Kuo 2023-04-27 15:37:39 +08:00
parent 78ceb39b01
commit 74e931849e

View File

@ -635,6 +635,8 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
setOperationAction(ISD::VECTOR_REVERSE, VT, Custom);
setOperationAction({ISD::STRICT_FSETCC, ISD::STRICT_FSETCCS}, VT, Legal);
setOperationPromotedToType(
ISD::VECTOR_SPLICE, VT,
MVT::getVectorVT(MVT::i8, VT.getVectorElementCount()));
@ -894,8 +896,9 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
setOperationAction(ISD::SETCC, VT, Custom);
setOperationAction({ISD::STRICT_FSETCC, ISD::STRICT_FSETCCS}, VT,
Legal);
if (VT.getVectorElementType() == MVT::i1)
setOperationAction({ISD::STRICT_FSETCC, ISD::STRICT_FSETCCS}, VT,
Legal);
setOperationAction(ISD::SELECT, VT, Custom);
@ -1147,6 +1150,9 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
setLibcallName(RTLIB::FPEXT_F16_F32, "__extendhfsf2");
setLibcallName(RTLIB::FPROUND_F32_F16, "__truncsfhf2");
// Disable strict node mutation.
IsStrictFPEnabled = true;
}
EVT RISCVTargetLowering::getSetCCResultType(const DataLayout &DL,