Recently we've put a lot of effort into improving ifcvt to use CSEL on AArch64.
authorWilco Dijkstra <wdijkstr@arm.com>
Wed, 22 Mar 2017 18:12:05 +0000 (18:12 +0000)
committerWilco Dijkstra <wilco@gcc.gnu.org>
Wed, 22 Mar 2017 18:12:05 +0000 (18:12 +0000)
In  https://gcc.gnu.org/ml/gcc-patches/2015-11/msg01639.html James determined
the best value for AArch64 code generation.  Although this setting is used when
explicitly targeting Cortex cores, it is not otherwise used.  This means by
default GCC will not use (F)CSEL in many common cases.

Change the generic_branch_cost to be the same as cortexa57_branch_cost so that
all supported cores benefit from CSEL.  This is generally faster and smaller.
On one benchmark the new setting fixes a regression since GCC6 and improves
performance by 49%.

    gcc/
* config/aarch64/aarch64.c (generic_branch_cost):
Copy cortexa57_branch_cost.

From-SVN: r246397

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

index a4d5a9a560e897e77abc2f08c303b85635e6996b..9d52b2539663e99058cd1ce457637b9128a9808d 100644 (file)
@@ -1,3 +1,8 @@
+2017-03-22  Wilco Dijkstra  <wdijkstr@arm.com>
+
+       * config/aarch64/aarch64.c (generic_branch_cost):
+       Copycortexa57_branch_cost.
+
 2017-03-22  Wilco Dijkstra  <wdijkstr@arm.com>
 
        * config/aarch64/aarch64.c (generic_tunings): Add AES fusion.
index eb0095d6b6d3ed515b41c42a29d397d3aad661f4..4f769a40a4e9de83cb5aacfd3ff58301c2feeb78 100644 (file)
@@ -484,8 +484,8 @@ static const struct cpu_vector_cost thunderx2t99_vector_cost =
 /* Generic costs for branch instructions.  */
 static const struct cpu_branch_cost generic_branch_cost =
 {
-  2,  /* Predictable.  */
-  2   /* Unpredictable.  */
+  1,  /* Predictable.  */
+  3   /* Unpredictable.  */
 };
 
 /* Branch costs for Cortex-A57.  */