[PATCH] D28961: [SLP] Fix for PR31690: Allow using of extra values in horizontal reductions.

Alexey Bataev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 31 00:48:31 PST 2017


ABataev marked 5 inline comments as done.
ABataev added inline comments.


================
Comment at: lib/Transforms/Vectorize/SLPVectorizer.cpp:4152
+      // We ran into something like:
+      // ParentStackElem.first += ... + <ExtraArg_i> + ExtraArg + ...
+      // The whole ParentStackElem.first should be considered an extra value in
----------------
mkuper wrote:
> Isn't "ParentStackElim.first" in this case just "<ExtraArg_i> + ExtraArg" itself? What you're trying to say is that ParentStackElem.first has two "extra" arguments, so it is itself an extra argument, right?
Yes, I just provided some general description in C/C++ like format rather than in LLVM IR format.


================
Comment at: lib/Transforms/Vectorize/SLPVectorizer.cpp:4155
+      // this case.
+      ParentStackElem.second = ParentStackElem.first->getNumOperands();
+    } else {
----------------
mkuper wrote:
> What this basically does is avoid recursing above this node, right? Please document this, since it's non-obvious looking from this code ("second" here isn't meaningful, unless you know what the pair you were called with means - which is not documented above.)
Ok, will do


================
Comment at: lib/Transforms/Vectorize/SLPVectorizer.cpp:4166
 
+  A
   /// \brief Try to find a reduction tree.
----------------
mkuper wrote:
> This looks out of place. 
Ooops, will remove it.


================
Comment at: lib/Transforms/Vectorize/SLPVectorizer.cpp:4219
+          // Check if TreeN is an extra argument of its parent operation.
+          if (ExtraArgs.count(TreeN)) {
+            Value *ExtraArg = ExtraArgs[TreeN];
----------------
mkuper wrote:
> You can use ExtraArgs.lookup(TreeN) to replace the "if (map.count(k) v = map[k]" pattern. This saves a lookup.
Ok, will do, thanks.


================
Comment at: lib/Transforms/Vectorize/SLPVectorizer.cpp:4229
+              // reduction operations.
+              markExtraArg(Stack[Stack.size() - 2], TreeN);
+              ExtraArgs.erase(TreeN);
----------------
mkuper wrote:
> Does "Stack.size() - 2" always point to the parent? Please document this.
Yes, will add some additional comment


https://reviews.llvm.org/D28961





More information about the llvm-commits mailing list