This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
This patch is intended for GCC 3.4. It enables the GCC 3.4 new unroller to work with loops optimized by the doloop optimization (this is a frequent case on PowerPC). It corrects the performance regression seen for the GCC 3.4 on PowerPC platforms for the option -funroll-loops (the option -fbranch-count-reg that enables the doloop optimization is by default enabled). For the option -funroll-loops (-fbranch-count-reg by default enabled), the patch gains more then 4% improvement overall CFSPEC2000 (f77, c) on Power4 with 3 benchmarks showing around 10% improvement (wupise, swim, art). For overall CINTSPEC2000 no significant changes. Testing (bootstrapping + regression tests) was done on Power4, x86 and IA 64. Bootstrapping was done by adding -funroll-loops to -O2 level of optimization (as our changes affect the unrolling). Regression test passed successfully. On Power4, the patch has been tested on SPECPU2000 benchmark and no regression. On IPA the applications Blitz++ and FTensor were compiled and run with -funroll-loops and no regressions. Mircea Namolaru 2004-02-15 Mircea Namolaru <namolaru@il.ibm.com> * cfgloop.h (get_var_set_from_bct, is_bct_cond): Declaration of new functions. * cfgloopanal.c: Include loop.h. (get_var_set_from_bct, is_bct_cond): New functions. (blocks_single_set_registers, count_loop_iterations, simple_increment): Handle branch and count jumps. * doloop.c (doloop_condition_get): Export. * loop-init.c (fixup_loop_exit_succesor): New function. (loop_optimizer_finalize): Handle loops ending with branch and count jumps. * loop-unroll.c: Include toplev.h (discard_increment, expand_bct): New functions. (peel_loop_completely, unroll_loop_constant_iterations, unroll_loop_runtime_iterations): Handle the removal of branch and count jumps. * loop.h (doloop_condition_get): Declare.
Attachment:
diff34
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |