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
This commit is contained in:
Ulrich Weigand 2004-09-28 21:39:28 +00:00 committed by Ulrich Weigand
parent 9924d7d8d8
commit ea77e73803
3 changed files with 13 additions and 39 deletions

View File

@ -1,3 +1,11 @@
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>
* config/ia64/ia64.c (ia64_expand_prologue): Declare ei

View File

@ -67,7 +67,6 @@ static void s390_output_mi_thunk (FILE *, tree, HOST_WIDE_INT,
HOST_WIDE_INT, tree);
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_issue_rate (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,
#undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
#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
#define TARGET_SCHED_ADJUST_PRIORITY s390_adjust_priority
#undef TARGET_SCHED_ISSUE_RATE
@ -4167,41 +4164,6 @@ s390_agen_dep_p (rtx dep_insn, rtx insn)
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
INSN_PRIORITY (INSN). Increase the priority to execute the INSN earlier,
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)
priority = priority << 3;
break;
case TYPE_STORE:
case TYPE_STM:
priority = priority << 1;
break;
default:

View File

@ -7405,7 +7405,10 @@
(unspec_volatile [(const_int 0)] UNSPECV_MAIN_POOL))]
"GET_MODE (operands[0]) == Pmode"
"* 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"
[(set (match_operand 0 "register_operand" "=a")