[PATCH] D127531: [SLP]Improve analysis of same/alternate code ops and scheduling.

Alexey Bataev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 26 15:43:26 PDT 2022


ABataev added inline comments.


================
Comment at: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:1251
+                  getUnderlyingObject(LI2->getPointerOperand()))
+            return LookAheadHeuristics::ScoreAltOpcodes;
           return LookAheadHeuristics::ScoreFail;
----------------
vdmitrie wrote:
> ABataev wrote:
> > vdmitrie wrote:
> > > I'm not sure I understand why this is scored as alternating opcodes.
> > > If underlying objects are same that probably means Dist variable must have a value and the value is 0.
> > > i.e. these loads are from same location. right?  It sounds like splat load. 
> > > Where alternating opcodes come from?
> > No. If you have Geps with non-const indices, the Dist might be None. But the loads still may be the source of masked gather.
> > No. If you have Geps with non-const indices, the Dist might be None. But the loads still may be the source of masked gather.
> 
> Ah. right. I forgot that we now vectorize non-const indices. But still, why alternate opcode?
> It sounds like we need to introduce named constant dedicated to gather.
Because we return alternate if the distance is very big and most probably will result in masked gather with constant indices.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D127531/new/

https://reviews.llvm.org/D127531



More information about the llvm-commits mailing list