From 053e03332162e3a0527f0ac76313dcf1b8c1ae8c Mon Sep 17 00:00:00 2001 From: "Mikhail R. Gadelha" Date: Fri, 14 Feb 2025 10:58:18 -0300 Subject: [PATCH] [RISCV] Generalize cost model for vp_fneg. NFC. (#126915) Move the cost model for vp_fneg from the riscv-specific implementation to the generic TTI layer. This ensures consistent handling of vp_fneg across targets --- llvm/include/llvm/CodeGen/BasicTTIImpl.h | 3 ++- llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp | 7 ------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/llvm/include/llvm/CodeGen/BasicTTIImpl.h b/llvm/include/llvm/CodeGen/BasicTTIImpl.h index c63d288ad1579..032c7d7b5159e 100644 --- a/llvm/include/llvm/CodeGen/BasicTTIImpl.h +++ b/llvm/include/llvm/CodeGen/BasicTTIImpl.h @@ -1675,7 +1675,8 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase { return thisT()->getMemoryOpCost(*FOp, ICA.getArgTypes()[0], Alignment, AS, CostKind); } - if (VPBinOpIntrinsic::isVPBinOp(ICA.getID())) { + if (VPBinOpIntrinsic::isVPBinOp(ICA.getID()) || + ICA.getID() == Intrinsic::vp_fneg) { return thisT()->getArithmeticInstrCost(*FOp, ICA.getReturnType(), CostKind); } diff --git a/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp b/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp index c46400a1936ad..da77bae18962c 100644 --- a/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp +++ b/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp @@ -1356,13 +1356,6 @@ RISCVTTIImpl::getIntrinsicInstrCost(const IntrinsicCostAttributes &ICA, return Cost * LT.first; break; } - case Intrinsic::vp_fneg: { - std::optional FOp = - VPIntrinsic::getFunctionalOpcodeForVP(ICA.getID()); - assert(FOp.has_value()); - return getArithmeticInstrCost(*FOp, ICA.getReturnType(), CostKind); - break; - } case Intrinsic::vp_select: { Intrinsic::ID IID = ICA.getID(); std::optional FOp = VPIntrinsic::getFunctionalOpcodeForVP(IID);