aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/aarch64/aarch64.c23
2 files changed, 29 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8c4b988..507320d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-01-18 Wilco Dijkstra <wdijkstr@arm.com>
+
+ * config/aarch64/aarch64.c (aarch64_sched_adjust_priority)
+ New function.
+ (TARGET_SCHED_ADJUST_PRIORITY): Define target hook.
+
2017-01-18 Maxim Ostapenko <m.ostapenko@samsung.com>
PR lto/79061
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index 27f2dc9..39a5880 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -14070,6 +14070,26 @@ aarch64_sched_fusion_priority (rtx_insn *insn, int max_pri,
return;
}
+/* Implement the TARGET_SCHED_ADJUST_PRIORITY hook.
+ Adjust priority of sha1h instructions so they are scheduled before
+ other SHA1 instructions. */
+
+static int
+aarch64_sched_adjust_priority (rtx_insn *insn, int priority)
+{
+ rtx x = PATTERN (insn);
+
+ if (GET_CODE (x) == SET)
+ {
+ x = SET_SRC (x);
+
+ if (GET_CODE (x) == UNSPEC && XINT (x, 1) == UNSPEC_SHA1H)
+ return priority + 10;
+ }
+
+ return priority;
+}
+
/* Given OPERANDS of consecutive load/store, check if we can merge
them into ldp/stp. LOAD is true if they are load instructions.
MODE is the mode of memory operands. */
@@ -14991,6 +15011,9 @@ aarch64_libgcc_floating_mode_supported_p
#undef TARGET_CAN_USE_DOLOOP_P
#define TARGET_CAN_USE_DOLOOP_P can_use_doloop_if_innermost
+#undef TARGET_SCHED_ADJUST_PRIORITY
+#define TARGET_SCHED_ADJUST_PRIORITY aarch64_sched_adjust_priority
+
#undef TARGET_SCHED_MACRO_FUSION_P
#define TARGET_SCHED_MACRO_FUSION_P aarch64_macro_fusion_p