[PATCH] [LoopReroll] Introduce the concept of DAGRootSets.

James Molloy james.molloy at arm.com
Thu Feb 5 08:09:17 PST 2015


Hi hfinkel,

A DAGRootSet models an induction variable being used in a rerollable
loop. For example:

   x[i*3+0] = y1
   x[i*3+1] = y2
   x[i*3+2] = y3

   Base instruction -> i*3
                    +---+----+
                   /    |     \
               ST[y1]  +1     +2  <-- Roots
                        |      |
                      ST[y2] ST[y3]

There may be multiple DAGRootSets, for example:

   x[i*2+0] = ...   (1)
   x[i*2+1] = ...   (1)
   x[i*2+4] = ...   (2)
   x[i*2+5] = ...   (2)
   x[(i+1234)*2+5678] = ... (3)
   x[(i+1234)*2+5679] = ... (3)

This concept is similar to the "Scale" member used previously, but allows
multiple independent sets of roots based off the same induction variable.

REPOSITORY
  rL LLVM

http://reviews.llvm.org/D7439

Files:
  lib/Transforms/Scalar/LoopRerollPass.cpp
  test/Transforms/LoopReroll/basic.ll

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D7439.19406.patch
Type: text/x-patch
Size: 31073 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150205/aec2eabe/attachment.bin>


More information about the llvm-commits mailing list