aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2004-09-28 21:39:28 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2004-09-28 21:39:28 +0000
commitea77e738038687830313955979daa746dceb6d7a (patch)
tree840efeeb218941e87581e65cd487c2ad7556fac1 /gcc
parent9924d7d8d81740b9d64bef0089c61050af55b768 (diff)
downloadgcc-ea77e738038687830313955979daa746dceb6d7a.zip
gcc-ea77e738038687830313955979daa746dceb6d7a.tar.gz
gcc-ea77e738038687830313955979daa746dceb6d7a.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/s390/s390.c39
-rw-r--r--gcc/config/s390/s390.md5
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 <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
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")