[PATCH] D28907: [SLP] Fix for PR30787: Failure to beneficially vectorize 'copyable' elements in integer binary ops.

Alexey Bataev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 13 08:07:07 PST 2017


ABataev added inline comments.


================
Comment at: lib/Transforms/Vectorize/SLPVectorizer.cpp:1583
+  unsigned AltOpcode = getAltOpcode(S.Opcode);
+  if (S.IsNonAlt) {
+    bool SkipVector = false;
----------------
dtemirbulatov wrote:
> ABataev wrote:
> > dtemirbulatov wrote:
> > > This is the place where we check if a vector is diverse.
> > What are you trying to do here? What's the real problem?
> there are two issues here:
>        1) we could not combine remainder operation to any other operation in one vector, because of rem(interger, 1) != integer.
>        2) sometime we could schedule non-alternative, for example, a load operation, to other for example adds and the load operation is at the bottom of BB and that could result in dominance error for a constructed vector. There are two examples in pr35497.ll 
1. I think you can combine it, but you cannot choose it as the main opcode. YOu need to change tryToRepresentAsInstArg to exclude reminder operations, I think.
2. Still don't understand. Could you give some more details?


https://reviews.llvm.org/D28907





More information about the llvm-commits mailing list