diff --git a/llvm/include/llvm/IR/VPIntrinsics.def b/llvm/include/llvm/IR/VPIntrinsics.def --- a/llvm/include/llvm/IR/VPIntrinsics.def +++ b/llvm/include/llvm/IR/VPIntrinsics.def @@ -273,7 +273,7 @@ HELPER_REGISTER_FP_CAST_VP(sitofp, VP_SINT_TO_FP, SIToFP, 1) // llvm.vp.fptrunc(x,mask,vlen) -HELPER_REGISTER_FP_CAST_VP(fptrunc, VP_FP_ROUND, FPTrunc, 1) +HELPER_REGISTER_FP_CAST_VP(fptrunc, VP_FP_TRUNCATE, FPTrunc, 1) // llvm.vp.fpext(x,mask,vlen) HELPER_REGISTER_FP_CAST_VP(fpext, VP_FP_EXTEND, FPExt, 0) diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp --- a/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp @@ -1034,7 +1034,7 @@ case ISD::FP_EXTEND: case ISD::VP_FP_EXTEND: case ISD::FP_ROUND: - case ISD::VP_FP_ROUND: + case ISD::VP_FP_TRUNCATE: case ISD::FP_TO_SINT: case ISD::VP_FP_TO_SINT: case ISD::FP_TO_UINT: @@ -2784,7 +2784,7 @@ Res = SplitVecOp_TruncateHelper(N); break; case ISD::STRICT_FP_ROUND: - case ISD::VP_FP_ROUND: + case ISD::VP_FP_TRUNCATE: case ISD::FP_ROUND: Res = SplitVecOp_FP_ROUND(N); break; case ISD::FCOPYSIGN: Res = SplitVecOp_FCOPYSIGN(N); break; case ISD::STORE: @@ -3770,13 +3770,13 @@ SDValue NewChain = DAG.getNode(ISD::TokenFactor, DL, MVT::Other, Lo.getValue(1), Hi.getValue(1)); ReplaceValueWith(SDValue(N, 1), NewChain); - } else if (N->getOpcode() == ISD::VP_FP_ROUND) { + } else if (N->getOpcode() == ISD::VP_FP_TRUNCATE) { SDValue MaskLo, MaskHi, EVLLo, EVLHi; std::tie(MaskLo, MaskHi) = SplitMask(N->getOperand(1)); std::tie(EVLLo, EVLHi) = DAG.SplitEVL(N->getOperand(2), N->getValueType(0), DL); - Lo = DAG.getNode(ISD::VP_FP_ROUND, DL, OutVT, Lo, MaskLo, EVLLo); - Hi = DAG.getNode(ISD::VP_FP_ROUND, DL, OutVT, Hi, MaskHi, EVLHi); + Lo = DAG.getNode(ISD::VP_FP_TRUNCATE, DL, OutVT, Lo, MaskLo, EVLLo); + Hi = DAG.getNode(ISD::VP_FP_TRUNCATE, DL, OutVT, Hi, MaskHi, EVLHi); } else { Lo = DAG.getNode(ISD::FP_ROUND, DL, OutVT, Lo, N->getOperand(1)); Hi = DAG.getNode(ISD::FP_ROUND, DL, OutVT, Hi, N->getOperand(1)); @@ -4027,7 +4027,7 @@ case ISD::FP_EXTEND: case ISD::VP_FP_EXTEND: case ISD::FP_ROUND: - case ISD::VP_FP_ROUND: + case ISD::VP_FP_TRUNCATE: case ISD::FP_TO_SINT: case ISD::VP_FP_TO_SINT: case ISD::FP_TO_UINT: diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.h b/llvm/lib/Target/RISCV/RISCVISelLowering.h --- a/llvm/lib/Target/RISCV/RISCVISelLowering.h +++ b/llvm/lib/Target/RISCV/RISCVISelLowering.h @@ -630,7 +630,7 @@ int64_t ExtTrueVal) const; SDValue lowerVectorMaskTruncLike(SDValue Op, SelectionDAG &DAG) const; SDValue lowerVectorTruncLike(SDValue Op, SelectionDAG &DAG) const; - SDValue lowerVectorFPExtendOrRoundLike(SDValue Op, SelectionDAG &DAG) const; + SDValue lowerVPFPExtendOrTruncateOp(SDValue Op, SelectionDAG &DAG) const; SDValue lowerINSERT_VECTOR_ELT(SDValue Op, SelectionDAG &DAG) const; SDValue lowerEXTRACT_VECTOR_ELT(SDValue Op, SelectionDAG &DAG) const; SDValue LowerINTRINSIC_WO_CHAIN(SDValue Op, SelectionDAG &DAG) const; diff --git a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp --- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp +++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp @@ -449,7 +449,7 @@ ISD::VP_FMA, ISD::VP_REDUCE_FADD, ISD::VP_REDUCE_SEQ_FADD, ISD::VP_REDUCE_FMIN, ISD::VP_REDUCE_FMAX, ISD::VP_MERGE, ISD::VP_SELECT, ISD::VP_SINT_TO_FP, ISD::VP_UINT_TO_FP, - ISD::VP_SETCC, ISD::VP_FP_ROUND, ISD::VP_FP_EXTEND}; + ISD::VP_SETCC, ISD::VP_FP_TRUNCATE, ISD::VP_FP_EXTEND}; static const unsigned IntegerVecReduceOps[] = { ISD::VECREDUCE_ADD, ISD::VECREDUCE_AND, ISD::VECREDUCE_OR, @@ -3463,7 +3463,7 @@ case ISD::FP_ROUND: if (!Op.getValueType().isVector()) return Op; - return lowerVectorFPExtendOrRoundLike(Op, DAG); + return lowerVPFPExtendOrTruncateOp(Op, DAG); case ISD::FP_TO_SINT: case ISD::FP_TO_UINT: case ISD::SINT_TO_FP: @@ -3864,8 +3864,8 @@ case ISD::VP_TRUNCATE: return lowerVectorTruncLike(Op, DAG); case ISD::VP_FP_EXTEND: - case ISD::VP_FP_ROUND: - return lowerVectorFPExtendOrRoundLike(Op, DAG); + case ISD::VP_FP_TRUNCATE: + return lowerVPFPExtendOrTruncateOp(Op, DAG); case ISD::VP_FP_TO_SINT: return lowerVPFPIntConvOp(Op, DAG, RISCVISD::VFCVT_RTZ_X_F_VL); case ISD::VP_FP_TO_UINT: @@ -4616,10 +4616,10 @@ } SDValue -RISCVTargetLowering::lowerVectorFPExtendOrRoundLike(SDValue Op, - SelectionDAG &DAG) const { - bool IsVP = - Op.getOpcode() == ISD::VP_FP_ROUND || Op.getOpcode() == ISD::VP_FP_EXTEND; +RISCVTargetLowering::lowerVPFPExtendOrTruncateOp(SDValue Op, + SelectionDAG &DAG) const { + bool IsVP = Op.getOpcode() == ISD::VP_FP_TRUNCATE || + Op.getOpcode() == ISD::VP_FP_EXTEND; bool IsExtend = Op.getOpcode() == ISD::VP_FP_EXTEND || Op.getOpcode() == ISD::FP_EXTEND; // RVV can only do truncate fp to types half the size as the source. We