[llvm] 20becf3 - [TTI] Move vp.{select,merge} costing from RISCV to BasicTTIImpl. NFC (#147870)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 9 23:30:56 PDT 2025
Author: Luke Lau
Date: 2025-07-10T14:30:52+08:00
New Revision: 20becf373edcf9d568f8904c2b473e6b48500787
URL: https://github.com/llvm/llvm-project/commit/20becf373edcf9d568f8904c2b473e6b48500787
DIFF: https://github.com/llvm/llvm-project/commit/20becf373edcf9d568f8904c2b473e6b48500787.diff
LOG: [TTI] Move vp.{select,merge} costing from RISCV to BasicTTIImpl. NFC (#147870)
Move the costing to the generic implementation in BasicTTIImpl since it
just falls back to the non-vp costing.
Also pass through the OperandValueInfo if using value based costing, but
I don't believe this affects the result for any in-tree target
currently.
Added:
Modified:
llvm/include/llvm/CodeGen/BasicTTIImpl.h
llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/CodeGen/BasicTTIImpl.h b/llvm/include/llvm/CodeGen/BasicTTIImpl.h
index 2b9be43eadb7a..1514677390725 100644
--- a/llvm/include/llvm/CodeGen/BasicTTIImpl.h
+++ b/llvm/include/llvm/CodeGen/BasicTTIImpl.h
@@ -1773,6 +1773,18 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
}
}
+ if (ICA.getID() == Intrinsic::vp_select ||
+ ICA.getID() == Intrinsic::vp_merge) {
+ TTI::OperandValueInfo OpInfoX, OpInfoY;
+ if (!ICA.isTypeBasedOnly()) {
+ OpInfoX = TTI::getOperandInfo(ICA.getArgs()[0]);
+ OpInfoY = TTI::getOperandInfo(ICA.getArgs()[1]);
+ }
+ return getCmpSelInstrCost(
+ Instruction::Select, ICA.getReturnType(), ICA.getArgTypes()[0],
+ CmpInst::BAD_ICMP_PREDICATE, CostKind, OpInfoX, OpInfoY);
+ }
+
std::optional<Intrinsic::ID> FID =
VPIntrinsic::getFunctionalIntrinsicIDForVP(ICA.getID());
if (FID) {
diff --git a/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp b/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
index 67a51c12b508e..9d9e473678670 100644
--- a/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
+++ b/llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
@@ -1512,17 +1512,6 @@ RISCVTTIImpl::getIntrinsicInstrCost(const IntrinsicCostAttributes &ICA,
return Cost * LT.first;
break;
}
- case Intrinsic::vp_select: {
- Intrinsic::ID IID = ICA.getID();
- std::optional<unsigned> FOp = VPIntrinsic::getFunctionalOpcodeForVP(IID);
- assert(FOp.has_value());
- return getCmpSelInstrCost(*FOp, ICA.getReturnType(), ICA.getArgTypes()[0],
- CmpInst::BAD_ICMP_PREDICATE, CostKind);
- }
- case Intrinsic::vp_merge:
- return getCmpSelInstrCost(Instruction::Select, ICA.getReturnType(),
- ICA.getArgTypes()[0], CmpInst::BAD_ICMP_PREDICATE,
- CostKind);
case Intrinsic::experimental_vp_splat: {
auto LT = getTypeLegalizationCost(RetTy);
// TODO: Lower i1 experimental_vp_splat
More information about the llvm-commits
mailing list