[llvm] [SystemZ] Add custom handling of legal vectors with reduce-add. (PR #88495)
Ulrich Weigand via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 12 04:21:18 PDT 2024
================
@@ -1326,3 +1323,31 @@ SystemZTTIImpl::getIntrinsicInstrCost(const IntrinsicCostAttributes &ICA,
return Cost;
return BaseT::getIntrinsicInstrCost(ICA, CostKind);
}
+
+bool SystemZTTIImpl::shouldExpandReduction(const IntrinsicInst *II) const {
+ // Always expand on Subtargets without vector instructions
+ if (!ST->hasVector())
+ return true;
+
+ // Always expand for operands that do not fill one vector reg
+ auto *Type = cast<FixedVectorType>(II->getOperand(0)->getType());
+ unsigned NumElts = Type->getNumElements();
+ unsigned ScalarSize = Type->getScalarSizeInBits();
+ unsigned MaxElts = SystemZ::VectorBits / ScalarSize;
+ if (NumElts < MaxElts)
+ return true;
+
+ // Otherwise
+ switch (II->getIntrinsicID()) {
+ // Do not expand vector.reduce.add
----------------
uweigand wrote:
Ah sorry, I misread. Comment is actually correct.
https://github.com/llvm/llvm-project/pull/88495
More information about the llvm-commits
mailing list