Re: [PATCH][AArch64] Increase default function alignment
On Fri, May 31, 2019 at 12:52:32PM +0100, Wilco Dijkstra wrote: > With -mcpu=generic the function alignment is currently 8, however almost all > supported cores prefer 16 or higher, so increase the default to 16:12. > This gives ~0.2% performance increase on SPECINT2017, while codesize is 0.12% > larger. OK. Thanks, James > ChangeLog: > 2019-05-31 Wilco Dijkstra > > * config/aarch64/aarch64.c (generic_tunings): Set function alignment to > 16. > > -- > > diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c > index > 0023cb37bbae5afe9387840c1bb6b43586d4fac2..ed1422af6aab5e3c6eeea37ec57e69b64092a0ab > 100644 > --- a/gcc/config/aarch64/aarch64.c > +++ b/gcc/config/aarch64/aarch64.c > @@ -693,7 +693,7 @@ static const struct tune_params generic_tunings = >4, /* memmov_cost */ >2, /* issue_rate */ >(AARCH64_FUSE_AES_AESMC), /* fusible_ops */ > - "8", /* function_align. */ > + "16:12", /* function_align. */ >"4", /* jump_align. */ >"8", /* loop_align. */ >2, /* int_reassoc_width. */ >
Re: [PATCH][AArch64] Increase default function alignment
ping With -mcpu=generic the function alignment is currently 8, however almost all supported cores prefer 16 or higher, so increase the default to 16:12. This gives ~0.2% performance increase on SPECINT2017, while codesize is 0.12% larger. ChangeLog: 2019-05-31 Wilco Dijkstra * config/aarch64/aarch64.c (generic_tunings): Set function alignment to 16. -- diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 0023cb37bbae5afe9387840c1bb6b43586d4fac2..ed1422af6aab5e3c6eeea37ec57e69b64092a0ab 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -693,7 +693,7 @@ static const struct tune_params generic_tunings = 4, /* memmov_cost */ 2, /* issue_rate */ (AARCH64_FUSE_AES_AESMC), /* fusible_ops */ - "8", /* function_align. */ + "16:12", /* function_align. */ "4", /* jump_align. */ "8", /* loop_align. */ 2, /* int_reassoc_width. */
Re: [PATCH][AArch64] Increase default function alignment
Hi Steve, > I have no objection to the change but could the commit message and/or > comments be expanded to explain the ':12' part of this value. I > couldn't find an explanation for it in the code and I don't understand > what it does. See https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-falign-functions Basically the 12 guarantees there are at least 12 useable bytes in the 16-byte aligned block. This significantly lowers the overhead of padding compared to always forcing 16-byte alignment. The Neoverse N1 tuning already uses this feature. Wilco
Re: [PATCH][AArch64] Increase default function alignment
On Fri, 2019-05-31 at 11:52 +, Wilco Dijkstra wrote: > With -mcpu=generic the function alignment is currently 8, however almost all > supported cores prefer 16 or higher, so increase the default to 16:12. > This gives ~0.2% performance increase on SPECINT2017, while codesize is 0.12% > larger. > > ChangeLog: > 2019-05-31 Wilco Dijkstra > > * config/aarch64/aarch64.c (generic_tunings): Set function > alignment to 16. > > -- > > diff --git a/gcc/config/aarch64/aarch64.c > b/gcc/config/aarch64/aarch64.c > index > 0023cb37bbae5afe9387840c1bb6b43586d4fac2..ed1422af6aab5e3c6eeea37ec57 > e69b64092a0ab 100644 > --- a/gcc/config/aarch64/aarch64.c > +++ b/gcc/config/aarch64/aarch64.c > @@ -693,7 +693,7 @@ static const struct tune_params generic_tunings = >4, /* memmov_cost */ >2, /* issue_rate */ >(AARCH64_FUSE_AES_AESMC), /* fusible_ops */ > - "8", /* function_align. */ > + "16:12", /* function_align. */ >"4", /* jump_align. */ >"8", /* loop_align. */ >2, /* int_reassoc_width. */ I have no objection to the change but could the commit message and/or comments be expanded to explain the ':12' part of this value. I couldn't find an explanation for it in the code and I don't understand what it does. Steve Ellcey sell...@marvell.com
[PATCH][AArch64] Increase default function alignment
With -mcpu=generic the function alignment is currently 8, however almost all supported cores prefer 16 or higher, so increase the default to 16:12. This gives ~0.2% performance increase on SPECINT2017, while codesize is 0.12% larger. ChangeLog: 2019-05-31 Wilco Dijkstra * config/aarch64/aarch64.c (generic_tunings): Set function alignment to 16. -- diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index 0023cb37bbae5afe9387840c1bb6b43586d4fac2..ed1422af6aab5e3c6eeea37ec57e69b64092a0ab 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -693,7 +693,7 @@ static const struct tune_params generic_tunings = 4, /* memmov_cost */ 2, /* issue_rate */ (AARCH64_FUSE_AES_AESMC), /* fusible_ops */ - "8", /* function_align. */ + "16:12", /* function_align. */ "4", /* jump_align. */ "8", /* loop_align. */ 2, /* int_reassoc_width. */