[llvm] [AArch64] Lower partial add reduction to udot or svdot (PR #101010)
Sam Tebbs via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 21 08:47:54 PDT 2024
================
@@ -1971,6 +1971,48 @@ bool AArch64TargetLowering::shouldExpandGetActiveLaneMask(EVT ResVT,
return false;
}
+bool AArch64TargetLowering::shouldExpandPartialReductionIntrinsic(
+ const IntrinsicInst *I) const {
+
+ VectorType *RetTy = dyn_cast<VectorType>(I->getType());
+ if (!RetTy || !RetTy->isScalableTy())
+ return true;
+
+ Value *InputA;
+ Value *InputB;
+ if (match(I,
+ m_Intrinsic<Intrinsic::experimental_vector_partial_reduce_add>(
+ m_Value(), m_OneUse(m_Mul(m_ZExtOrSExt(m_Value(InputA)),
+ m_ZExtOrSExt(m_Value(InputB))))))) {
+ VectorType *InputAType = dyn_cast<VectorType>(InputA->getType());
+ VectorType *InputBType = dyn_cast<VectorType>(InputB->getType());
+ if (!InputAType || !InputBType)
+ return true;
----------------
SamTebbs33 wrote:
Thanks Paul, I like the approach of sharing the expansion code in SelectionDAG. Let me know what you think of the new implementation.
https://github.com/llvm/llvm-project/pull/101010
More information about the llvm-commits
mailing list