From 74e931849e5d94c531958b456bd9210b8c3774d2 Mon Sep 17 00:00:00 2001 From: Yeting Kuo Date: Thu, 27 Apr 2023 15:37:39 +0800 Subject: [PATCH] [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 --- llvm/lib/Target/RISCV/RISCVISelLowering.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp index 811b1bfe1a6f..8b95075105a8 100644 --- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp +++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp @@ -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,