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]

[Patch ARM] Add big.LITTLE tuning options


Hi,

This patch series adds machinery and functionality to enable
tuning for big.LITTLE systems when compiling for the ARM target.

We take the convention for names to -mcpu that for some big.LITTLE
system where the big core is 'x' and the little core is 'y', the -mcpu
name will be x.y

In order to acheive that, we must first tweak some infrastructure.

First, in order to reduce coupling between assembler versions, we
must add name rewriting for the -mcpu command. big.LITTLE systems
use architecturally compatible cores, so we can be sure that if
we are asked to assemble for cortex-a15.cortex-a7, then we can also
assemble for cortex-a15. Thus, we choose to truncate at the first '.'
delimiter between core names.

The ARM backend presently carries the limitation that each entry in
arm-cores.def must provide a unique 'tuning' target. This is
restrictive and would require constant churn modifications to the
scheduler descriptions to add each big.LITTLE flavour which is released.
We modify this infrastructure to still carry a unique identifier, but also
to carry a potentially shared sheduling identifier.

The final 3 patches add support for new -mcpu values:
cortex-a15.cortex-a7, cortex-a57, cortex-a57.cortex-a53.

The series has been regression tested and built on a number of
configurations, bootstrapped with option --with-cpu=cortex-a15.cortex-a7
and benchmarked on an Cortex-A15 based system and a Cortex-A7 base
system with no regressions.

OK?

Thanks,
James

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]