[PATCH] D36258: Disable loop peeling during full unrolling pass.

Teresa Johnson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 2 22:12:28 PDT 2017


tejohnson created this revision.
Herald added subscribers: mehdi_amini, mzolotukhin.

Peeling should not occur during the full unrolling invocation early
in the pipeline, but rather later with partial and runtime loop
unrolling. The later loop unrolling invocation will also eventually
utilize profile summary and branch frequency information, which
we would like to use to control peeling. And for ThinLTO we want
to delay peeling until the backend (post thin link) phase, just as
we do for most types of unrolling.

Ensure peeling doesn't occur during the full unrolling invocation
by adding a parameter to the shared implementation function, similar
to the way partial and runtime loop unrolling are disabled.

Performance results for ThinLTO suggest this has a neutral to positive
effect on some internal benchmarks.


https://reviews.llvm.org/D36258

Files:
  include/llvm/Transforms/Scalar.h
  lib/Transforms/Scalar/LoopUnrollPass.cpp
  test/Transforms/LoopUnroll/peel-loop-pgo.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D36258.109484.patch
Type: text/x-patch
Size: 8296 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170803/648aaeea/attachment.bin>


More information about the llvm-commits mailing list