aarch64-protos.h (tune_params): Add align field.
authorAndrew Pinski <apinski@cavium.com>
Thu, 11 Dec 2014 23:11:03 +0000 (23:11 +0000)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Thu, 11 Dec 2014 23:11:03 +0000 (15:11 -0800)
2014-12-11  Andrew Pinski  <apinski@cavium.com>

        * config/aarch64/aarch64-protos.h (tune_params): Add align field.
        * config/aarch64/aarch64.c (generic_tunings): Specify align.
        (cortexa53_tunings): Likewise.
        (cortexa57_tunings): Likewise.
        (thunderx_tunings): Likewise.
        (aarch64_override_options): Set align_loops, align_jumps,
        align_functions based on what the tuning struct.

From-SVN: r218645

gcc/ChangeLog
gcc/config/aarch64/aarch64-protos.h
gcc/config/aarch64/aarch64.c

index bf3fb8540322f754297b2659d7999d5d3408a788..7478b0f02b2d7ea9499fb7673b80b28bd0d15e4e 100644 (file)
@@ -1,3 +1,13 @@
+2014-12-11  Andrew Pinski  <apinski@cavium.com>
+
+       * config/aarch64/aarch64-protos.h (tune_params): Add align field.
+       * config/aarch64/aarch64.c (generic_tunings): Specify align.
+       (cortexa53_tunings): Likewise.
+       (cortexa57_tunings): Likewise.
+       (thunderx_tunings): Likewise.
+       (aarch64_override_options): Set align_loops, align_jumps,
+       align_functions based on what the tuning struct.
+
 2014-12-11  Eric Botcazou  <ebotcazou@adacore.com>
 
        * doc/md.texi (Insn Lengths): Fix description of (pc).
index bcfe89e5c3cfed1477edf3f835f2d5491c17de53..234efcb32705ddc07a0dd1e1edeae5e6f4ed49d3 100644 (file)
@@ -170,6 +170,7 @@ struct tune_params
   const struct cpu_vector_cost *const vec_costs;
   const int memmov_cost;
   const int issue_rate;
+  const int align;
   const unsigned int fuseable_ops;
   const int int_reassoc_width;
   const int fp_reassoc_width;
index e1d1ad4b526576388a9e1c025dff0914e142b95b..226a808a01ad43af72e20fcd2de44b5ab069b6fe 100644 (file)
@@ -323,6 +323,7 @@ static const struct tune_params generic_tunings =
   &generic_vector_cost,
   NAMED_PARAM (memmov_cost, 4),
   NAMED_PARAM (issue_rate, 2),
+  NAMED_PARAM (align, 4),
   NAMED_PARAM (fuseable_ops, AARCH64_FUSE_NOTHING),
   2,   /* int_reassoc_width.  */
   4,   /* fp_reassoc_width.  */
@@ -337,6 +338,7 @@ static const struct tune_params cortexa53_tunings =
   &generic_vector_cost,
   NAMED_PARAM (memmov_cost, 4),
   NAMED_PARAM (issue_rate, 2),
+  NAMED_PARAM (align, 8),
   NAMED_PARAM (fuseable_ops, (AARCH64_FUSE_MOV_MOVK | AARCH64_FUSE_ADRP_ADD
                              | AARCH64_FUSE_MOVK_MOVK | AARCH64_FUSE_ADRP_LDR)),
   2,   /* int_reassoc_width.  */
@@ -352,6 +354,7 @@ static const struct tune_params cortexa57_tunings =
   &cortexa57_vector_cost,
   NAMED_PARAM (memmov_cost, 4),
   NAMED_PARAM (issue_rate, 3),
+  NAMED_PARAM (align, 8),
   NAMED_PARAM (fuseable_ops, (AARCH64_FUSE_MOV_MOVK | AARCH64_FUSE_ADRP_ADD | AARCH64_FUSE_MOVK_MOVK)),
   2,   /* int_reassoc_width.  */
   4,   /* fp_reassoc_width.  */
@@ -366,6 +369,7 @@ static const struct tune_params thunderx_tunings =
   &generic_vector_cost,
   NAMED_PARAM (memmov_cost, 6),
   NAMED_PARAM (issue_rate, 2),
+  NAMED_PARAM (align, 8),
   NAMED_PARAM (fuseable_ops, AARCH64_FUSE_CMP_BRANCH),
   2,   /* int_reassoc_width.  */
   4,   /* fp_reassoc_width.  */
@@ -6762,6 +6766,18 @@ aarch64_override_options (void)
 #endif
     }
 
+  /* If not opzimizing for size, set the default
+     alignment to what the target wants */
+  if (!optimize_size)
+    {
+      if (align_loops <= 0)
+       align_loops = aarch64_tune_params->align;
+      if (align_jumps <= 0)
+       align_jumps = aarch64_tune_params->align;
+      if (align_functions <= 0)
+       align_functions = aarch64_tune_params->align;
+    }
+
   aarch64_override_options_after_change ();
 }