From ea77e738038687830313955979daa746dceb6d7a Mon Sep 17 00:00:00 2001 From: Ulrich Weigand Date: Tue, 28 Sep 2004 21:39:28 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 8 ++++++++ gcc/config/s390/s390.c | 39 +-------------------------------------- gcc/config/s390/s390.md | 5 ++++- 3 files changed, 13 insertions(+), 39 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0a0d3bf..11e0ce2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2004-09-28 Ulrich Weigand + + * 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 * config/ia64/ia64.c (ia64_expand_prologue): Declare ei diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index 7556b32..3fff67c 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -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: diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index e5e0aab..d7f0e07 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -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") -- 2.7.4