[PATCH] D95245: [SVE] Add support for scalable vectorization of loops with int/fast FP reductions
David Sherwood via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 8 01:14:19 PST 2021
david-arm added inline comments.
================
Comment at: llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp:1103
TTI::ReductionFlags Flags) const {
+ if (isa<ScalableVectorType>(Ty))
+ return true;
----------------
david-arm wrote:
> sdesmalen wrote:
> > david-arm wrote:
> > > Just a thought - if we're excluding FMul from reductions is it worth having an assert here that the op is not fmul?
> > The same should hold for integer Mul.
> >
> > nit: you can better add that to the switch statement below as:
> > case Instruction::Mul:
> > case Instruction::FMul:
> > assert(!isa<ScalableVectorType>(Ty) && "Unexpected ...");
> > LLVM_FALLTHROUGH;
> > case Instruction::Fadd:
> > ...
> >
> Hi @sdesmalen, just for information the reason I'd asked for an assert here is that if we're still intending to create a target reduction intrinsic at this point with a mul or fmul then something has gone badly wrong and is almost certainly a bug. This is because this function is only ever called at the point where you've already decided that it's legal to reduce a scalable mul operation. The two places where this is called are from SLPVectorizer.cpp:createSimpleTargetReduction and InnerLoopVectorizer::fixReduction (via createTargetReduction).
Sorry, please ignore my comment! For some reason I hadn't seen the assert in there.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D95245/new/
https://reviews.llvm.org/D95245
More information about the llvm-commits
mailing list