[AArch64] Add regmove_costs for Cortex-A57 and A53
authorWilco Dijkstra <wdijkstr@arm.com>
Fri, 12 Sep 2014 09:46:25 +0000 (09:46 +0000)
committerJiong Wang <jiwang@gcc.gnu.org>
Fri, 12 Sep 2014 09:46:25 +0000 (09:46 +0000)
2014-09-12  Wilco Dijkstra  <wdijkstr@arm.com>

  * gcc/config/aarch64/aarch64.c: (cortexa57_regmove_cost): New cost table for
  A57.
  (cortexa53_regmove_cost): New cost table for A53.  Increase GP2FP/FP2GP cost
  to spilling from integer to FP registers.

From-SVN: r215208

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

index b10f285bcd712ec8d70c9ea567bf86eb2d2c184c..af000040028f6845122fa0e0f815a6b3d22202ab 100644 (file)
@@ -1,3 +1,10 @@
+2014-09-12  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+
+       * gcc/config/aarch64/aarch64.c (cortexa57_regmove_cost): New cost table
+       for A57.
+       (cortexa53_regmove_cost): New cost table for A53.  Increase GP2FP/FP2GP
+       cost to spilling from integer to FP registers.
+
 2014-09-12  Wilco Dijkstra  <wilco.dijkstra@arm.com>
 
        * config/aarch64/aarch64.c (aarch64_register_move_cost): Fix Q register
index 73ddb0db98b24b7710df0d301bfcfb45a8e6fc78..15c7be697d35b5e03424911141667ecd2aeb9653 100644 (file)
@@ -218,6 +218,26 @@ static const struct cpu_regmove_cost generic_regmove_cost =
   NAMED_PARAM (FP2FP, 2)
 };
 
+static const struct cpu_regmove_cost cortexa57_regmove_cost =
+{
+  NAMED_PARAM (GP2GP, 1),
+  /* Avoid the use of slow int<->fp moves for spilling by setting
+     their cost higher than memmov_cost.  */
+  NAMED_PARAM (GP2FP, 5),
+  NAMED_PARAM (FP2GP, 5),
+  NAMED_PARAM (FP2FP, 2)
+};
+
+static const struct cpu_regmove_cost cortexa53_regmove_cost =
+{
+  NAMED_PARAM (GP2GP, 1),
+  /* Avoid the use of slow int<->fp moves for spilling by setting
+     their cost higher than memmov_cost.  */
+  NAMED_PARAM (GP2FP, 5),
+  NAMED_PARAM (FP2GP, 5),
+  NAMED_PARAM (FP2FP, 2)
+};
+
 /* Generic costs for vector insn classes.  */
 #if HAVE_DESIGNATED_INITIALIZERS && GCC_VERSION >= 2007
 __extension__
@@ -275,7 +295,7 @@ static const struct tune_params cortexa53_tunings =
 {
   &cortexa53_extra_costs,
   &generic_addrcost_table,
-  &generic_regmove_cost,
+  &cortexa53_regmove_cost,
   &generic_vector_cost,
   NAMED_PARAM (memmov_cost, 4),
   NAMED_PARAM (issue_rate, 2)
@@ -285,7 +305,7 @@ static const struct tune_params cortexa57_tunings =
 {
   &cortexa57_extra_costs,
   &cortexa57_addrcost_table,
-  &generic_regmove_cost,
+  &cortexa57_regmove_cost,
   &cortexa57_vector_cost,
   NAMED_PARAM (memmov_cost, 4),
   NAMED_PARAM (issue_rate, 3)