Message ID | 20120109120152.GK23330@e103070-lin.cambridge.arm.com |
---|---|
State | New |
Headers | show |
On 09/01/12 12:01, Matthew Gretton-Dann wrote: > The attached patch tunes the costs of conditional execution and branches > for Cortex-A15 to be the same as that for Cortex-A5. > > This gives an average improvement of over 6% on a popular embedded > benchmark. > > Note that the tuning parameter structure added for Cortex-A15 is only tuned > for branch costs, and otherwise takes the generic values. Tuning for other > optimisations (notably preload insertion) is still to be done. > > Thanks, > > Matt > > gcc/ChangeLog: > > 2012-01-06 Matthew Gretton-Dann <matthew.gretton-dann@arm.com> > > * config/arm/arm-cores.def (cortex-a15): Use cortex_a15_tune for > tuning parameters. > * config/arm/arm.c (arm_cortex_a15_tune): New static variable. > > Technically this is too late for 4.7, but the risk is very low and Cortex-A15 tuning is new. So OK, but please check in ASAP. R.
diff --git a/gcc/config/arm/arm-cores.def b/gcc/config/arm/arm-cores.def index 80609e0..b0bd172 100644 --- a/gcc/config/arm/arm-cores.def +++ b/gcc/config/arm/arm-cores.def @@ -129,7 +129,7 @@ ARM_CORE("cortex-a5", cortexa5, 7A, FL_LDSCHED, cortex_a5) ARM_CORE("cortex-a7", cortexa7, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex) ARM_CORE("cortex-a8", cortexa8, 7A, FL_LDSCHED, cortex) ARM_CORE("cortex-a9", cortexa9, 7A, FL_LDSCHED, cortex_a9) -ARM_CORE("cortex-a15", cortexa15, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex) +ARM_CORE("cortex-a15", cortexa15, 7A, FL_LDSCHED | FL_THUMB_DIV | FL_ARM_DIV, cortex_a15) ARM_CORE("cortex-r4", cortexr4, 7R, FL_LDSCHED, cortex) ARM_CORE("cortex-r4f", cortexr4f, 7R, FL_LDSCHED, cortex) ARM_CORE("cortex-r5", cortexr5, 7R, FL_LDSCHED | FL_ARM_DIV, cortex) diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 0bded8d..6f1eb13 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -961,6 +961,17 @@ const struct tune_params arm_cortex_a9_tune = arm_default_branch_cost }; +const struct tune_params arm_cortex_a15_tune = +{ + arm_9e_rtx_costs, + NULL, + 1, /* Constant limit. */ + 1, /* Max cond insns. */ + ARM_PREFETCH_NOT_BENEFICIAL, /* TODO: Calculate correct values. */ + false, /* Prefer constant pool. */ + arm_cortex_a5_branch_cost +}; + const struct tune_params arm_fa726te_tune = { arm_9e_rtx_costs,