OSDN Git Service

* config/s390/s390.c (s390_adjust_cost): Remove.
authoruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 28 Sep 2004 21:39:28 +0000 (21:39 +0000)
committeruweigand <uweigand@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 28 Sep 2004 21:39:28 +0000 (21:39 +0000)
(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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@88254 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/s390/s390.c
gcc/config/s390/s390.md

index 0a0d3bf..11e0ce2 100644 (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
index 7556b32..3fff67c 100644 (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:
index e5e0aab..d7f0e07 100644 (file)
         (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")