[PATCH] D50820: [VPlan] Implement initial vector code generation support for simple outer loops.

Satish K Guggilla via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 15 16:42:58 PDT 2018


sguggill created this revision.
sguggill added reviewers: fhahn, rengolin, hsaito, dcaballe.
Herald added subscribers: llvm-commits, rogfer01, rkruppe, tschuett, bollu.

[VPlan] Implement vector code generation support for simple outer loops.

                    

Context: Patch Series #1 for outer loop vectorization support in LV                               
using VPlan. (RFC: http://lists.llvm.org/pipermail/llvm-dev/2017-December/119523.html).

                    

This patch introduces vector code generation support for simple outer loops that are              
currently supported in the VPlanNativePath. Changes here essentially do the following:

                    

- force vector code generation using explicit vectorize_width
- add conservative early returns in cost model and other places for VPlanNativePath
- add code for setting up outer loop inductions
- support for widening non-induction PHIs that can result from inner loops and uniform

conditional branches

- support for generating uniform inner branches

We plan to add a handful C outer loop executable tests once the initial code generation           
support is committed. This patch is expected to be NFC for the inner loop vectorizer              
path.

                    

Since we are moving in the direction of supporting outer loop vectorization in LV,                
it may also be time to rename classes such as InnerLoopVectorizer.


Repository:
  rL LLVM

https://reviews.llvm.org/D50820

Files:
  include/llvm/Transforms/Vectorize/LoopVectorizationLegality.h
  lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
  lib/Transforms/Vectorize/LoopVectorize.cpp
  lib/Transforms/Vectorize/VPlan.cpp
  lib/Transforms/Vectorize/VPlan.h
  lib/Transforms/Vectorize/VPlanHCFGTransforms.cpp
  lib/Transforms/Vectorize/VPlanValue.h
  test/Transforms/LoopVectorize/outer_loop_test1.ll
  test/Transforms/LoopVectorize/outer_loop_test2.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D50820.160940.patch
Type: text/x-patch
Size: 28780 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180815/c6d442b4/attachment.bin>


More information about the llvm-commits mailing list