This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH/AARCH64] v2 Add aligning of functions/loops/jumps
- From: James Greenhalgh <james dot greenhalgh at arm dot com>
- To: Andrew Pinski <pinskia at gmail dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Fri, 5 Dec 2014 13:53:17 +0000
- Subject: Re: [PATCH/AARCH64] v2 Add aligning of functions/loops/jumps
- Authentication-results: sourceware.org; auth=none
- References: <CA+=Sn1m-+L3D=9RqNYj3YR0rBST4czr9cAOUqH2e8QvO5xeSbA at mail dot gmail dot com>
On Sun, Nov 23, 2014 at 12:09:16AM +0000, Andrew Pinski wrote:
> Hi,
> This is just a rebase of
> https://gcc.gnu.org/ml/gcc-patches/2014-11/msg01615.html as requested
> by https://gcc.gnu.org/ml/gcc-patches/2014-11/msg01736.html. Nothing
> has changed in it.
*ping* I'd like to see this patch revived, rebased and committed.
Thanks,
James
>
> OK? Built and tested on aarch64-elf with no regressions.
>
> Thanks,
> Andrew Pinski
>
> ChangeLog:
>
> * config/aarch64/aarch64-protos.h (tune_params): Add align field.
> * config/aarch64/aarch64.c (generic_tunings): Specify align.
> (cortexa53_tunings): Likewise.
> (cortexa57_tunings): Likewise.
> (thunderx_tunings): Likewise.
> (aarch64_override_options): Set align_loops, align_jumps,
> align_functions based on what the tuning struct.
> Index: config/aarch64/aarch64-protos.h
> ===================================================================
> --- config/aarch64/aarch64-protos.h (revision 217974)
> +++ config/aarch64/aarch64-protos.h (working copy)
> @@ -170,6 +170,7 @@ struct tune_params
> const struct cpu_vector_cost *const vec_costs;
> const int memmov_cost;
> const int issue_rate;
> + const int align;
> };
>
> HOST_WIDE_INT aarch64_initial_elimination_offset (unsigned, unsigned);
> Index: config/aarch64/aarch64.c
> ===================================================================
> --- config/aarch64/aarch64.c (revision 217974)
> +++ config/aarch64/aarch64.c (working copy)
> @@ -314,7 +314,8 @@ static const struct tune_params generic_
> &generic_regmove_cost,
> &generic_vector_cost,
> NAMED_PARAM (memmov_cost, 4),
> - NAMED_PARAM (issue_rate, 2)
> + NAMED_PARAM (issue_rate, 2),
> + NAMED_PARAM (align, 2),
> };
>
> static const struct tune_params cortexa53_tunings =
> @@ -324,7 +325,8 @@ static const struct tune_params cortexa5
> &cortexa53_regmove_cost,
> &generic_vector_cost,
> NAMED_PARAM (memmov_cost, 4),
> - NAMED_PARAM (issue_rate, 2)
> + NAMED_PARAM (issue_rate, 2),
> + NAMED_PARAM (align, 8),
> };
>
> static const struct tune_params cortexa57_tunings =
> @@ -334,7 +336,8 @@ static const struct tune_params cortexa5
> &cortexa57_regmove_cost,
> &cortexa57_vector_cost,
> NAMED_PARAM (memmov_cost, 4),
> - NAMED_PARAM (issue_rate, 3)
> + NAMED_PARAM (issue_rate, 3),
> + NAMED_PARAM (align, 8),
> };
>
> static const struct tune_params thunderx_tunings =
> @@ -344,7 +347,8 @@ static const struct tune_params thunderx
> &thunderx_regmove_cost,
> &generic_vector_cost,
> NAMED_PARAM (memmov_cost, 6),
> - NAMED_PARAM (issue_rate, 2)
> + NAMED_PARAM (issue_rate, 2),
> + NAMED_PARAM (align, 8),
> };
>
> /* A processor implementing AArch64. */
> @@ -6727,6 +6731,18 @@ aarch64_override_options (void)
> #endif
> }
>
> + /* If not opzimizing for size, set the default
> + alignment to what the target wants */
> + if (!optimize_size)
> + {
> + if (align_loops <= 0)
> + align_loops = aarch64_tune_params->align;
> + if (align_jumps <= 0)
> + align_jumps = aarch64_tune_params->align;
> + if (align_functions <= 0)
> + align_functions = aarch64_tune_params->align;
> + }
> +
> aarch64_override_options_after_change ();
> }
>