[llvm] [RISCV][TTI] Add shuffle costing for masked slide lowering (PR #128537)
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 25 06:08:33 PST 2025
================
@@ -474,6 +474,64 @@ costShuffleViaVRegSplitting(RISCVTTIImpl &TTI, MVT LegalVT,
return InstructionCost::getInvalid();
}
+InstructionCost RISCVTTIImpl::getSlideCost(FixedVectorType *Tp,
+ ArrayRef<int> Mask,
+ TTI::TargetCostKind CostKind) {
+ // Avoid missing masks
+ if (Mask.size() <= 2)
+ return InstructionCost::getInvalid();
+
+ int NumElts = Tp->getNumElements();
+ std::pair<InstructionCost, MVT> LT = getTypeLegalizationCost(Tp);
+ // Avoid scalarization cases
+ if (!LT.second.isFixedLengthVector())
+ return InstructionCost::getInvalid();
+
+ // Requires moving elements between parts, which requires additional
+ // unmodeled instructions.
+ if (LT.first != 1)
+ return InstructionCost::getInvalid();
+
+ auto getSlideOpcode = [&](int SlideAmt) {
----------------
lukel97 wrote:
Nit, capital letter for variable names?
https://github.com/llvm/llvm-project/pull/128537
More information about the llvm-commits
mailing list