On Thu, Dec 7, 2017 at 11:28 AM, Bin Cheng <bin.ch...@arm.com> wrote: > Hi, > This is the overall loop interchange patch on gimple-linterchange branch. > Note the new pass > is enabled at -O3 level by default. Bootstrap and regtest on x86_64 and > AArch64(ongoing). > NOte after cost model change it is now far more conservative than original > version. It only > interchanges 11 loops in spec2k6 (416 doesn't build at the moment), vs ~250 > for the original > version. I will collect compilation time data, though there shouldn't be any > surprise given > few loops are actually interchanged. I will also collect spec2k6 data, > shouldn't affect cases > other than bwaves either. > So is it OK?
Please omit the no longer needed change to gsi_remove in gimple-iterator.[ch]. The new --params need documenting in invoke.texi. Ok with those changes. Thanks! Richard. > Thanks, > bin > 2017-12-07 Bin Cheng <bin.ch...@arm.com> > Richard Biener <rguent...@suse.de> > > PR tree-optimization/81303 > * Makefile.in (gimple-loop-interchange.o): New object file. > * common.opt (floop-interchange): Reuse the option from graphite. > * doc/invoke.texi (-floop-interchange): Ditto. New document for > -floop-interchange and mention it for -O3. > * opts.c (default_options_table): Enable -floop-interchange at -O3. > * gimple-loop-interchange.cc: New file. > * params.def (PARAM_LOOP_INTERCHANGE_MAX_NUM_STMTS): New parameter. > (PARAM_LOOP_INTERCHANGE_STRIDE_RATIO): New parameter. > * passes.def (pass_linterchange): New pass. > * timevar.def (TV_LINTERCHANGE): New time var. > * tree-pass.h (make_pass_linterchange): New declaration. > * tree-ssa-loop-ivcanon.c (create_canonical_iv): Change to external > interchange. Record IV before/after increment in new parameters. > * tree-ssa-loop-ivopts.h (create_canonical_iv): New declaration. > * tree-vect-loop.c (vect_is_simple_reduction): Factor out reduction > path check into... > (check_reduction_path): ...New function here. > * tree-vectorizer.h (check_reduction_path): New declaration. > > gcc/testsuite > 2017-12-07 Bin Cheng <bin.ch...@arm.com> > Richard Biener <rguent...@suse.de> > > PR tree-optimization/81303 > * gcc.dg/tree-ssa/loop-interchange-1.c: New test. > * gcc.dg/tree-ssa/loop-interchange-1b.c: New test. > * gcc.dg/tree-ssa/loop-interchange-2.c: New test. > * gcc.dg/tree-ssa/loop-interchange-3.c: New test. > * gcc.dg/tree-ssa/loop-interchange-4.c: New test. > * gcc.dg/tree-ssa/loop-interchange-5.c: New test. > * gcc.dg/tree-ssa/loop-interchange-6.c: New test. > * gcc.dg/tree-ssa/loop-interchange-7.c: New test. > * gcc.dg/tree-ssa/loop-interchange-8.c: New test. > * gcc.dg/tree-ssa/loop-interchange-9.c: New test. > * gcc.dg/tree-ssa/loop-interchange-10.c: New test. > * gcc.dg/tree-ssa/loop-interchange-11.c: New test. > * gcc.dg/tree-ssa/loop-interchange-12.c: New test. > * gcc.dg/tree-ssa/loop-interchange-13.c: New test.