Commit ea77e738 by Ulrich Weigand Committed by Ulrich Weigand

s390.c (s390_adjust_cost): Remove.

	* config/s390/s390.c (s390_adjust_cost): Remove.
	(TARGET_SCHED_ADJUST_COST): Do not redefine.
	(s390_adjust_priority): Handle TYPE_STM like TYPE_STORE.
	* config/s390/s390.md ("main_pool"): Use "larl" type
	attribute if TARGET_CPU_ZARCH.

From-SVN: r88254
parent 9924d7d8
2004-09-28 Ulrich Weigand <uweigand@de.ibm.com>
* config/s390/s390.c (s390_adjust_cost): Remove.
(TARGET_SCHED_ADJUST_COST): Do not redefine.
(s390_adjust_priority): Handle TYPE_STM like TYPE_STORE.
* config/s390/s390.md ("main_pool"): Use "larl" type
attribute if TARGET_CPU_ZARCH.
2004-09-28 Jakub Jelinek <jakub@redhat.com> 2004-09-28 Jakub Jelinek <jakub@redhat.com>
* config/ia64/ia64.c (ia64_expand_prologue): Declare ei * config/ia64/ia64.c (ia64_expand_prologue): Declare ei
......
...@@ -67,7 +67,6 @@ static void s390_output_mi_thunk (FILE *, tree, HOST_WIDE_INT, ...@@ -67,7 +67,6 @@ static void s390_output_mi_thunk (FILE *, tree, HOST_WIDE_INT,
HOST_WIDE_INT, tree); HOST_WIDE_INT, tree);
static enum attr_type s390_safe_attr_type (rtx); static enum attr_type s390_safe_attr_type (rtx);
static int s390_adjust_cost (rtx, rtx, rtx, int);
static int s390_adjust_priority (rtx, int); static int s390_adjust_priority (rtx, int);
static int s390_issue_rate (void); static int s390_issue_rate (void);
static int s390_first_cycle_multipass_dfa_lookahead (void); static int s390_first_cycle_multipass_dfa_lookahead (void);
...@@ -121,8 +120,6 @@ static bool s390_pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode mode, ...@@ -121,8 +120,6 @@ static bool s390_pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode mode,
#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK #undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
#define TARGET_ASM_CAN_OUTPUT_MI_THUNK hook_bool_tree_hwi_hwi_tree_true #define TARGET_ASM_CAN_OUTPUT_MI_THUNK hook_bool_tree_hwi_hwi_tree_true
#undef TARGET_SCHED_ADJUST_COST
#define TARGET_SCHED_ADJUST_COST s390_adjust_cost
#undef TARGET_SCHED_ADJUST_PRIORITY #undef TARGET_SCHED_ADJUST_PRIORITY
#define TARGET_SCHED_ADJUST_PRIORITY s390_adjust_priority #define TARGET_SCHED_ADJUST_PRIORITY s390_adjust_priority
#undef TARGET_SCHED_ISSUE_RATE #undef TARGET_SCHED_ISSUE_RATE
...@@ -4167,41 +4164,6 @@ s390_agen_dep_p (rtx dep_insn, rtx insn) ...@@ -4167,41 +4164,6 @@ s390_agen_dep_p (rtx dep_insn, rtx insn)
return 0; return 0;
} }
/* Return the modified cost of the dependency of instruction INSN
on instruction DEP_INSN through the link LINK. COST is the
default cost of that dependency.
Data dependencies are all handled without delay. However, if a
register is modified and subsequently used as base or index
register of a memory reference, at least 4 cycles need to pass
between setting and using the register to avoid pipeline stalls.
An exception is the LA instruction. An address generated by LA can
be used by introducing only a one cycle stall on the pipeline. */
static int
s390_adjust_cost (rtx insn, rtx link, rtx dep_insn, int cost)
{
/* If the dependence is an anti-dependence, there is no cost. For an
output dependence, there is sometimes a cost, but it doesn't seem
worth handling those few cases. */
if (REG_NOTE_KIND (link) != 0)
return 0;
/* If we can't recognize the insns, we can't really do anything. */
if (recog_memoized (insn) < 0 || recog_memoized (dep_insn) < 0)
return cost;
/* Operand forward in case of lr, load and la. */
if (s390_tune == PROCESSOR_2084_Z990
&& cost == 1
&& (s390_safe_attr_type (dep_insn) == TYPE_LA
|| s390_safe_attr_type (dep_insn) == TYPE_LR
|| s390_safe_attr_type (dep_insn) == TYPE_LOAD))
return 0;
return cost;
}
/* A C statement (sans semicolon) to update the integer scheduling priority /* A C statement (sans semicolon) to update the integer scheduling priority
INSN_PRIORITY (INSN). Increase the priority to execute the INSN earlier, INSN_PRIORITY (INSN). Increase the priority to execute the INSN earlier,
reduce the priority to execute INSN later. Do not define this macro if reduce the priority to execute INSN later. Do not define this macro if
...@@ -4226,6 +4188,7 @@ s390_adjust_priority (rtx insn ATTRIBUTE_UNUSED, int priority) ...@@ -4226,6 +4188,7 @@ s390_adjust_priority (rtx insn ATTRIBUTE_UNUSED, int priority)
priority = priority << 3; priority = priority << 3;
break; break;
case TYPE_STORE: case TYPE_STORE:
case TYPE_STM:
priority = priority << 1; priority = priority << 1;
break; break;
default: default:
......
...@@ -7405,7 +7405,10 @@ ...@@ -7405,7 +7405,10 @@
(unspec_volatile [(const_int 0)] UNSPECV_MAIN_POOL))] (unspec_volatile [(const_int 0)] UNSPECV_MAIN_POOL))]
"GET_MODE (operands[0]) == Pmode" "GET_MODE (operands[0]) == Pmode"
"* abort ();" "* abort ();"
[(set_attr "op_type" "NN")]) [(set_attr "op_type" "NN")
(set (attr "type")
(if_then_else (ne (symbol_ref "TARGET_CPU_ZARCH") (const_int 0))
(const_string "larl") (const_string "la")))])
(define_insn "reload_base_31" (define_insn "reload_base_31"
[(set (match_operand 0 "register_operand" "=a") [(set (match_operand 0 "register_operand" "=a")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment