[AArch64] Enable compare branch fusion
authorWilco Dijkstra <wdijkstr@arm.com>
Fri, 17 Jan 2020 14:27:14 +0000 (14:27 +0000)
committerWilco Dijkstra <wdijkstr@arm.com>
Fri, 17 Jan 2020 14:28:30 +0000 (14:28 +0000)
Enable the most basic form of compare-branch fusion since various CPUs
support it. This has no measurable effect on cores which don't support
branch fusion, but increases fusion opportunities on cores which do.

gcc/
* config/aarch64/aarch64.c (generic_tunings): Add branch fusion.
(neoversen1_tunings): Likewise.

gcc/ChangeLog
gcc/config/aarch64/aarch64.c

index 06bcb81acc841ab8ebe0c858ba61f38906c9afbd..debd4d76a037e0e81615c3694cfb47cac040dfef 100644 (file)
@@ -1,3 +1,8 @@
+2020-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
+
+       * config/aarch64/aarch64.c (generic_tunings): Add branch fusion.
+       (neoversen1_tunings): Likewise.
+
 2020-01-17  Wilco Dijkstra  <wdijkstr@arm.com>
 
        PR target/92692
index ea9d6a12b12f9065ff9c40d005d71b0280bce312..fb2e1021182e1b87c426bd62357c5e7dbc1e5a79 100644 (file)
@@ -726,7 +726,7 @@ static const struct tune_params generic_tunings =
   SVE_NOT_IMPLEMENTED, /* sve_width  */
   4, /* memmov_cost  */
   2, /* issue_rate  */
-  (AARCH64_FUSE_AES_AESMC), /* fusible_ops  */
+  (AARCH64_FUSE_AES_AESMC | AARCH64_FUSE_CMP_BRANCH), /* fusible_ops  */
   "16:12",     /* function_align.  */
   "4", /* jump_align.  */
   "8", /* loop_align.  */
@@ -1130,7 +1130,7 @@ static const struct tune_params neoversen1_tunings =
   SVE_NOT_IMPLEMENTED, /* sve_width  */
   4, /* memmov_cost  */
   3, /* issue_rate  */
-  AARCH64_FUSE_AES_AESMC, /* fusible_ops  */
+  (AARCH64_FUSE_AES_AESMC | AARCH64_FUSE_CMP_BRANCH), /* fusible_ops  */
   "32:16",     /* function_align.  */
   "32:16",     /* jump_align.  */
   "32:16",     /* loop_align.  */