Hi! This patch adds new field in tune_params to indicate if LDRD/STRD are preferred over PUSH/POP in prologue/epilogue of specific core. It also creates new tune for cortex-A15 and updates tunes for other cores to set new field to default value. Changelog entry for Patch to create tune for cortex-a15: 2011-10-11 Sameera Deshpande * config/arm/arm-cores.def (cortex_a15): Update. * config/arm/arm-protos.h (struct tune_params): Add new field... (arm_gen_ldrd_strd): ... this. * config/arm/arm.c (arm_slowmul_tune): Add arm_gen_ldrd_strd field settings. (arm_fastmul_tune): Likewise. (arm_strongarm_tune): Likewise. (arm_xscale_tune): Likewise. (arm_9e_tune): Likewise. (arm_v6t2_tune): Likewise. (arm_cortex_tune): Likewise. (arm_cortex_a5_tune): Likewise. (arm_cortex_a9_tune): Likewise. (arm_fa726te_tune): Likewise. (arm_cortex_a15_tune): New variable. -- On Tue, 2011-10-11 at 10:08 +0100, Sameera Deshpande wrote: > This series of 5 patches generate LDRD/STRD instead of POP/PUSH in > epilogue/prologue for ARM and Thumb-2 mode of A15. > > Patch [1/5] introduces new field in tune which can be used to indicate > whether LDRD/STRD are preferred over POP/PUSH by the specific core. > > Patches [2-5/5] use this field to determine if LDRD/STRD can be > generated instead of PUSH/POP in ARM and Thumb-2 mode. > > Patch [2/5] generates LDRD instead of POP for Thumb-2 epilogue in A15. > This patch depends on patch [1/5]. > > Patch [3/5] generates STRD instead of PUSH for Thumb-2 prologue in A15. > This patch depends for variables, functions and patterns defined in > [1/5] and [2/5]. > > Patch [4/5] generates STRD instead of PUSH for ARM prologue in A15. This > patch depends on [1/5]. > > Patch [5/5] generates LDRD instead of POP for ARM epilogue in A15. This > patch depends for variables, functions and patterns defined in [1/5] and > [4/5]. > > All these patches depend upon the Thumb2/ARM RTL epilogue patches > http://gcc.gnu.org/ml/gcc-patches/2011-09/msg01854.html, > http://gcc.gnu.org/ml/gcc-patches/2011-09/msg01855.html submitted for > review. > > All these patches are applied in given order and tested with check-gcc, > check-gdb and bootstrap without regression. > > In case of ARM mode, significant performance improvement can be seen on > some parts of a popular embedded consumer benchmark (~26%). > However, in most of the cases, not much effect is seen on performance. > (~ 3% improvement) > > In case of thumb2, the performance improvement observed on same parts > the benchmark is ~11% (2.5% improvement). >