[PATCH] D22867: [LV] Untangle the concepts of uniform and scalar

Matthew Simpson via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 29 08:23:29 PDT 2016


mssimpso updated this revision to Diff 66125.
mssimpso added a comment.

Rebased on top of the two (yet to be committed) NFC's.

The first NFC will move the getPointerOperand helper and use it throughout LoopVectorize.cpp where appropriate. I'll commit it once Michael gives the go-ahead. The second will move isGatherOrScatterLegal into LoopVectorizationLegality (using the getPointerOperand helper).

Regarding the functional changes, yes I'll includ those in the commit log. They are:

- Marking the pointer operands of interleaved accesses uniform. They're treated as if they're consecutive when vectorizing interleaved groups. We have to collect the interleaved groups before the uniforms now.
- Moving the induction variable logic out of collectValuesToIgnore. IVs and their updates will now only be placed in VecValuesToIgnore if they're uniform. I believe the existing code was there because the IV scalarization logic needed VecValuesToIgnore to decide if a scalar IV was desired. But now, with a clear distinction between uniform and scalar, I think we should move this out. The IVs are handled by isScalarAfterVectorization now.


https://reviews.llvm.org/D22867

Files:
  lib/Transforms/Vectorize/LoopVectorize.cpp
  test/Transforms/LoopVectorize/induction.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D22867.66125.patch
Type: text/x-patch
Size: 14261 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160729/d264a25f/attachment.bin>


More information about the llvm-commits mailing list