This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH][AArch64] Implement TARGET_SCHED_MACRO_FUSION_PAIR_P
- From: Andrew Pinski <pinskia at gmail dot com>
- To: Kyrill Tkachov <kyrylo dot tkachov at arm dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, Marcus Shawcroft <marcus dot shawcroft at arm dot com>, Richard Earnshaw <Richard dot Earnshaw at arm dot com>
- Date: Wed, 12 Nov 2014 23:24:01 -0800
- Subject: Re: [PATCH][AArch64] Implement TARGET_SCHED_MACRO_FUSION_PAIR_P
- Authentication-results: sourceware.org; auth=none
- References: <5461F924 dot 3000304 at arm dot com>
On Tue, Nov 11, 2014 at 3:55 AM, Kyrill Tkachov <kyrylo.tkachov@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.tkachov@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.