On Tue, Nov 11, 2014 at 3:55 AM, Kyrill Tkachov <kyrylo.tkac...@arm.com> wrote: > Hi all, > > This is the aarch64 implementation of the macro fusion hook, used to fuse > mov+movk instructions together. > > A new field is declared in the tuning struct and as we add more fuseable ops > in the future we will fill in more bits in the fuseable_ops field. > > Bootstrapped and tested on aarch64-none-linux-gnu. > > Ok for trunk?
I have a few comments about this patch as I have a patch which depends on this for ThunderX. Each new function should have a comment before it saying what the function does. The checks inside aarch_macro_fusion_pair_p for single_set and any_condjump_p seems a little too restrictive to add more fusion without major changes to the code. In the fusion case I am adding is about fusing any single cycle arithmetic instruction (on ThunderX) that produces flags and the branch that consumes it. Thanks, Andrew > > 2014-11-11 Kyrylo Tkachov <kyrylo.tkac...@arm.com> > > * config/aarch64/aarch64-protos.h (struct tune_params): Add > fuseable_ops field. > * config/aarch64/aarch64.c (generic_tunings): Specify fuseable_ops. > (cortexa53_tunings): Likewise. > (cortexa57_tunings): Likewise. > (thunderx_tunings): Likewise. > (aarch64_macro_fusion_p): New function. > (aarch_macro_fusion_pair_p): Likewise. > (TARGET_SCHED_MACRO_FUSION_P): Define. > (TARGET_SCHED_MACRO_FUSION_PAIR_P): Likewise. > (AARCH64_FUSE_MOV_MOVK): Likewise. > (AARCH64_FUSE_NOTHING): Likewise.