This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH] Account for prologue spills in reg_pressure scheduling
- From: Maxim Kuvyrkov <maxim dot kuvyrkov at linaro dot org>
- To: Sebastian Pop <sebpop at gmail dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, Vladimir Makarov <vmakarov at redhat dot com>, Richard Sandiford <rdsandiford at googlemail dot com>, Ramana Radhakrishnan <ramana dot radhakrishnan at arm dot com>, Marcus Shawcroft <marcus dot shawcroft at arm dot com>, Richard Earnshaw <rearnsha at arm dot com>
- Date: Tue, 21 Oct 2014 09:56:34 +1300
- Subject: Re: [PATCH] Account for prologue spills in reg_pressure scheduling
- Authentication-results: sourceware.org; auth=none
- References: <FE7CEF4D-A27B-46D0-96B3-3569C1558DF9 at linaro dot org> <20141020191105 dot GB30024 at f1 dot c dot bardezibar dot internal> <ED2138EC-B4EA-4BBA-AC29-5B5A3B628A9F at linaro dot org> <20141020204417 dot GA7213 at f1 dot c dot bardezibar dot internal>
[Adding ARM maintainers to CC]
On Oct 21, 2014, at 9:44 AM, Sebastian Pop <email@example.com> wrote:
> Hi Maxim,
> Maxim Kuvyrkov wrote:
>> Thanks, benchmarking results are welcome! AArch64 doesn't use reg_pressure
>> scheduling by default. Use "-fsched-pressure
>> --param=sched-pressure-algorithm=2" to enable same thing as on ARM. I would
>> imagine C++ and Fortran floating-point code to be most affected.
> On aarch64 I only see perf improvements with your patch: no perf degradations on
> all the tests that I have run.
> base0: r216447, -O3
> base1: r216447, -O3 -fsched-pressure --param=sched-pressure-algorithm=2
> patch: r216447 + your patch, -O3 -fsched-pressure --param=sched-pressure-algorithm=2
> patch vs. base1 is only an improvement.
> base1 vs. base0 has a few good improvements, and some small degradations: your
> patch improves the perf for one of the degradations to the point it is better
> now with -fsched-pressure --param=sched-pressure-algorithm=2 than at -O3.
> Could we turn on "-fsched-pressure --param=sched-pressure-algorithm=2" by
> default for aarch64?
These are great results, yay! Sebastian, what benchmarks did you run?
We need to see improvements on spec2k / spec2k6 to enable register-pressure scheduling on AArch64 by default. The current understanding is that AArch64 has enough registers to not benefit from pressure-aware scheduling. On the other hand, one could argue that cores with more complex pipelines (e.g., A57) might not benefit from pipeline-oriented scheduling either, and, therefore, scheduling for register pressure can provide a better win.