diff options
author | Michael Matz <matz@suse.de> | 2017-12-07 14:49:54 +0000 |
---|---|---|
committer | Michael Matz <matz@gcc.gnu.org> | 2017-12-07 14:49:54 +0000 |
commit | 1cc521f1a824b5913aeda06ebe296de98f2d9453 (patch) | |
tree | 906285fc77b9852eb7e207a988b9d0144496c8b1 /gcc/doc | |
parent | 5a40ae3c3acf7eaabc9599f5701adbd2f6ec607e (diff) | |
download | gcc-1cc521f1a824b5913aeda06ebe296de98f2d9453.zip gcc-1cc521f1a824b5913aeda06ebe296de98f2d9453.tar.gz gcc-1cc521f1a824b5913aeda06ebe296de98f2d9453.tar.bz2 |
Add unroll and jam pass
* gimple-loop-jam.c: New file.
* Makefile.in (OBJS): Add gimple-loop-jam.o.
* common.opt (funroll-and-jam): New option.
* opts.c (default_options_table): Add unroll-and-jam at -O3.
* params.def (PARAM_UNROLL_JAM_MIN_PERCENT): New param.
(PARAM_UNROLL_JAM_MAX_UNROLL): Ditto.
* passes.def: Add pass_loop_jam.
* timevar.def (TV_LOOP_JAM): Add.
* tree-pass.h (make_pass_loop_jam): Declare.
* cfgloop.c (flow_loop_tree_node_add): Add AFTER argument.
* cfgloop.h (flow_loop_tree_node_add): Adjust declaration.
* cfgloopmanip.c (duplicate_loop): Add AFTER argument, adjust call
to flow_loop_tree_node_add.
(duplicate_subloops, copy_loops_to): Append to sibling list.
* cfgloopmanip.h: (duplicate_loop): Adjust declaration.
* doc/invoke.texi (-funroll-and-jam): Document new option.
(unroll-jam-min-percent, unroll-jam-max-unroll): Document new params.
testsuite/
* gcc.dg/unroll-and-jam.c: New test.
From-SVN: r255467
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/invoke.texi | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 3487a62..447b66a 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -437,7 +437,7 @@ Objective-C and Objective-C++ Dialects}. -ftree-reassoc -ftree-sink -ftree-slsr -ftree-sra @gol -ftree-switch-conversion -ftree-tail-merge @gol -ftree-ter -ftree-vectorize -ftree-vrp -funconstrained-commons @gol --funit-at-a-time -funroll-all-loops -funroll-loops @gol +-funit-at-a-time -funroll-all-loops -funroll-loops -funroll-and-jam @gol -funsafe-math-optimizations -funswitch-loops @gol -fipa-ra -fvariable-expansion-in-unroller -fvect-cost-model -fvpt @gol -fweb -fwhole-program -fwpa -fuse-linker-plugin @gol @@ -9771,6 +9771,12 @@ for one side of the iteration space and false for the other. Move branches with loop invariant conditions out of the loop, with duplicates of the loop on both branches (modified according to result of the condition). +@item -funroll-and-jam +@opindex funroll-and-jam +Apply unroll and jam transoformations on feasible loops. In a loop +nest this unrolls the outer loop by some factor and fuses the resulting +multiple inner loops. + @item -ffunction-sections @itemx -fdata-sections @opindex ffunction-sections @@ -10838,6 +10844,14 @@ we may be able to devirtualize speculatively. @item max-vrp-switch-assertions The maximum number of assertions to add along the default edge of a switch statement during VRP. The default is 10. + +@item unroll-jam-min-percent +The minimum percentage of memory references that must be optimized +away for the unroll-and-jam transformation to be considered profitable. + +@item unroll-jam-max-unroll +The maximum number of times the outer loop should be unrolled by +the unroll-and-jam transformation. @end table @end table |