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] |