diff mbox series

[AArch64] Increase default function alignment

Message ID VI1PR0801MB21279519E21E8E2AEED6C6B883190@VI1PR0801MB2127.eurprd08.prod.outlook.com
State New
Headers show
Series [AArch64] Increase default function alignment | expand

Commit Message

Wilco Dijkstra May 31, 2019, 11:52 a.m. UTC
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  <wdijkstr@arm.com>

	* config/aarch64/aarch64.c (generic_tunings): Set function alignment to 16.

--

Comments

Steve Ellcey May 31, 2019, 3:27 p.m. UTC | #1
On Fri, 2019-05-31 at 11:52 +0000, 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  <wdijkstr@arm.com>
> 
> 	* 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
sellcey@marvell.com
Wilco Dijkstra May 31, 2019, 3:59 p.m. UTC | #2
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
Wilco Dijkstra July 31, 2019, 4:59 p.m. UTC | #3
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  <wdijkstr@arm.com>
 
         * 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.  */
James Greenhalgh Aug. 12, 2019, 5:07 p.m. UTC | #4
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  <wdijkstr@arm.com>
> 
> 	* 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.  */
>
diff mbox series

Patch

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.  */