aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/config/aarch64/aarch64-protos.h1
-rw-r--r--gcc/config/aarch64/aarch64.c16
3 files changed, 27 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bf3fb85..7478b0f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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).
diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h
index bcfe89e..234efcb 100644
--- a/gcc/config/aarch64/aarch64-protos.h
+++ b/gcc/config/aarch64/aarch64-protos.h
@@ -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;
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index e1d1ad4..226a808 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -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 ();
}