This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
ACCUMULATE_OUTGOING_ARGS/PUSH_ROUNDING as runtime switch
- To: egcs-patches at egcs dot cygnus dot com, rth at cygnus dot com
- Subject: ACCUMULATE_OUTGOING_ARGS/PUSH_ROUNDING as runtime switch
- From: Jan Hubicka <hubicka at atrey dot karlin dot mff dot cuni dot cz>
- Date: Sun, 30 Jan 2000 01:31:58 +0100
Richard: I am sorry for sending twice, th patch was too long.
Hi
This patch changes ACCUMULATE_OUTGOING_ARGS and PUSH_ROUNDING to runtime
choosable options. The ACCUMULATE_OUTGOING_ARGS is now expression and
PUSH_ROUNDING is handled by new target macro PUSH_ARGS (when nonzero, push
instructions are used, otherwise discrete equivalent).
The patch is quite long, but simple, so hope it don't contains serious bugs.
It bootstraps on i386 and result is byte equivalent to version w/o the patch.
The motivation is, that i386 defaults to PUSH_ROUNDING method, but the discrete
equivalent may be faster in some cases. It is much longer and I know that Marc
already tried this in the past with negative results. Some aspects changed since
that. The soft_frame_pointer patches allows better prologue/epilogue to be
emited for ACCUMULATE_OUTGOING_ARGS and PREFERRED_STACK_BOUNDARY brought notable
extra overhead to the default method. Normally stack pointer is aligned twice
(once at the end of frame and second at the end of passed paramters). With this
patch only one alignment is neccesary. This results in notable speedups on Pentium
and I would expect even higher speedups on the Athlon and other out of order
CPUs, that have troubles with scheduling push instructions.
Bell Labs Benchmark B1: Ackerman's function (recursion) (nongpl/bell-labs/b1.c)
---% 104% 118% 106%
---% 109% 128% 104%
Hanoi (tests/hanoi.c)
108% 105% 101% 103%
107% 103% 101% 103%
Quicksort (tests/qsort.c)
102% 102% 100% 101%
101% 101% 100% 101%
Bell Labs Benchmark B7: (integer statistics) (nongpl/bell-labs/b7.c)
---% 102% 149% 103%
---% 104% 106% 103%
Floating point tests
Quicksort (tests/qsort.c)
100% 102% 102%
Unsorted tests
Bell Labs benchmark B2 (tree creation) (nongpl/bell-labs/b2.c):111%
Bell Labs benchmark B3 (qsort for strings) (nongpl/bell-labs/b3.c):105%
Bell Labs benchmark B4 (tty driver fragt) (nongpl/bell-labs/b4.c):108%
Bell Labs benchmark B6 (symbol tbl insert) (nongpl/bell-labs/b5.c):104%
Bell Labs benchmark B6 (release buffers) (nongpl/bell-labs/b6.c):112%
Dhrystone (nongpl/dhry/dhry_1.c nongpl/dhry/dhry_2.c): 102%
Palette approximation (tests/pal.c): 101%
Bzip2 block sorting loop (tests/bzip2.c): 103%
I've also measured change of integer index from 2.05 to 2.10 and fp from
1.93 to 1.95 in Byte benchmarks (there was no slowdowns in the invidual tests
and notable (20%) speedup in the huffman test).
I don't suggest enabling this by default at some optimization level yet, since
the code size increase is large (4%) and we may reduce the performance penalty of
current code by avoiding extra stack adjustments. I think we may hit performance
of code w/o preferred stack boundary, where the speedups are lower:
---% 107% 106% 102%
---% 107% 103% 96%
Hanoi (tests/hanoi.c)
107% 101% 100% 102%
108% 101% 100% 102%
Quicksort (tests/qsort.c)
100% 102% 101% 101%
100% 101% 100% 101%
Bell Labs Benchmark B7: (integer statistics) (nongpl/bell-labs/b7.c)
---% 105% 104% 100%
---% 104% 100% 100%
Bell Labs benchmark B2 (tree creation) (nongpl/bell-labs/b2.c):110%
Bell Labs benchmark B3 (qsort for strings) (nongpl/bell-labs/b3.c):103%
Bell Labs benchmark B6 (symbol tbl insert) (nongpl/bell-labs/b5.c):101%
Bell Labs benchmark B6 (release buffers) (nongpl/bell-labs/b6.c):101%
But I think it is interesting enought, to make this as runtime option
and allow more experimenting in the future. I think that for Athlon and other
CPUs with large code caches this can be interesting optimization strategy.
I've added -mpush-args to control stack passing method and -maccumulate-outgoing-args
switches to the i386 machine description to allow this.
Note that the patch is not complette. It needs to change
#define ACCUMULATE_OUTGOING_ARGS to #define ACCUMULATE_OUTGOING_ARGS 1
in the machine descriptions. I will add this, if the patch will not be refused.
Honza
So leden 29 19:57:03 CET 2000 Jan Hubicka <jh@suse.cz>
* calls.c (PUSH_ARGS_REVERSED): Change to expression, default to
PUSH_ARGS or 0.
(struct arg_data): Define save_area field unconditionally.
(stack_arg_under_construction, stack_usage_map, highest_outgoing_arg_in_use):
Define unconditionally.
(save_fixed_argument_area, restore_fixed_argument_area): Define when
REG_PARM_STACK_SPACE defined.
(emit_call_1): Avoid #ifdefs on ACCUMULATE_OUTGOING_ARGS.
(initialize_argument_information): Avoid #ifdefs on PUSH_ARGS_REVERSED
(expand_call): Initialize must_preallocate using PUSH_ARGS;
avoid #ifdefs on ACCUMULATE_OUTGOING_ARGS and PUSH_ARGS_REVERSED; Set
stack_arg_under_construction unconditionally.
(emit_library_call): Likewise.
(store_one_arg): Avoid #ifdefs on ACCUMULATE_OUTGOING_ARGS.
* defaults.h (PUSH_ARGS, ACCUMULATE_OUTGOING_ARGS): Provide default.
* expr.c (push_blocks): Avoid #if on ACCUMULATE_OUTGOING_ARGS
(emit_push_insn): Likewise.
* final.c (final_scan_insn): Likewise.
* function.c (STACK_DYNAMIC_OFFSET default): Likewise.
* tm.texi (ACCUMULATE_OUTGOING_ARGS): Update documentation.
(PUSH_ROUNDING): Likewise.
(PUSH_ARGS): Document.
* i386.c (SAVED_REGS_FIRST): Always true when ACCUMULATE_OUTGOING_ARGS.
(ix86_compute_frame_size): Remove #ifdef PREFERRED_STACK_BOUDNARY.
Handle current_function_outgoin_args_size when ACCUMULATE_OUTGOING_ARGS
* i386.h (MASK_NO_PUSH_ARGS, MASK_ACCUMULATE_OUTGOING_ARGS): New.
(TARGET_PUSH_ARGS, TARGET_ACCUMULATE_OUTGOING_ARGS): New macro.
(TARGET_SWITCHES): Add push-args, no-push-args, accumulate-outgoing-args,
no-accumulate-outgoing-args.
(ACCUMULATE_OUTGOING_ARGS, PUSH_ARGS): New macro.
* invoke.texi (-mpush-args, -maccumulate-outgoing-args): Document.
begin 644 calls1.gz
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
=WQ'\OX<F;#6QAWVBN*291[WXYO\!_YG[;M6"`0!K
`
end