+2015-01-17 Maxim Kuvyrkov <maxim.kuvyrkov@linaro.org>
+
+ * config/aarch64/aarch64.c
+ (aarch64_sched_first_cycle_multipass_dfa_lookahead): Implement hook.
+ (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Define.
+ * config/arm/arm.c
+ (arm_first_cycle_multipass_dfa_lookahead): Implement hook.
+ (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD): Define.
+
2015-01-17 Alan Modra <amodra@gmail.com>
* cprop.c (do_local_cprop): Disallow replacement of fixed
#include "builtins.h"
#include "rtl-iter.h"
#include "tm-constrs.h"
+#include "sched-int.h"
/* Defined for convenience. */
#define POINTER_BYTES (POINTER_SIZE / BITS_PER_UNIT)
return aarch64_tune_params->issue_rate;
}
+static int
+aarch64_sched_first_cycle_multipass_dfa_lookahead (void)
+{
+ int issue_rate = aarch64_sched_issue_rate ();
+
+ return issue_rate > 1 && !sched_fusion ? issue_rate : 0;
+}
+
/* Vectorizer cost model target hooks. */
/* Implement targetm.vectorize.builtin_vectorization_cost. */
#undef TARGET_SCHED_ISSUE_RATE
#define TARGET_SCHED_ISSUE_RATE aarch64_sched_issue_rate
+#undef TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD
+#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD \
+ aarch64_sched_first_cycle_multipass_dfa_lookahead
+
#undef TARGET_TRAMPOLINE_INIT
#define TARGET_TRAMPOLINE_INIT aarch64_trampoline_init
static bool arm_macro_fusion_p (void);
static bool arm_cannot_copy_insn_p (rtx_insn *);
static int arm_issue_rate (void);
+static int arm_first_cycle_multipass_dfa_lookahead (void);
static void arm_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED;
static bool arm_output_addr_const_extra (FILE *, rtx);
static bool arm_allocate_stack_slots_for_args (void);
#undef TARGET_SCHED_ISSUE_RATE
#define TARGET_SCHED_ISSUE_RATE arm_issue_rate
+#undef TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD
+#define TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD \
+ arm_first_cycle_multipass_dfa_lookahead
+
#undef TARGET_MANGLE_TYPE
#define TARGET_MANGLE_TYPE arm_mangle_type
}
}
+/* Return how many instructions should scheduler lookahead to choose the
+ best one. */
+static int
+arm_first_cycle_multipass_dfa_lookahead (void)
+{
+ int issue_rate = arm_issue_rate ();
+
+ return issue_rate > 1 && !sched_fusion ? issue_rate : 0;
+}
+
const char *
arm_mangle_type (const_tree type)
{