OSDN Git Service

* config/s390/s390.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Remove.
authoraesok <aesok@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 22 Jan 2011 21:38:39 +0000 (21:38 +0000)
committeraesok <aesok@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 22 Jan 2011 21:38:39 +0000 (21:38 +0000)
* config/s390/s390.c (s390_register_move_cost,
s390_memory_move_cost): New.
(TARGET_REGISTER_MOVE_COST, TARGET_MEMORY_MOVE_COST): Define.

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

gcc/ChangeLog
gcc/config/s390/s390.c
gcc/config/s390/s390.h

index df4658b..8e15282 100644 (file)
@@ -1,3 +1,10 @@
+2011-01-22  Anatoly Sokolov  <aesok@post.ru>
+
+       * config/s390/s390.h (REGISTER_MOVE_COST, MEMORY_MOVE_COST): Remove.
+       * config/s390/s390.c (s390_register_move_cost,
+       s390_memory_move_cost): New.
+       (TARGET_REGISTER_MOVE_COST, TARGET_MEMORY_MOVE_COST): Define.
+
 2011-01-22  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
 
        PR middle-end/47401
index efbf035..4bc7362 100644 (file)
@@ -2426,6 +2426,31 @@ s390_float_const_zero_p (rtx value)
          && value == CONST0_RTX (GET_MODE (value)));
 }
 
+/* Implement TARGET_REGISTER_MOVE_COST.  */
+
+static int
+s390_register_move_cost (enum machine_mode mode ATTRIBUTE_UNUSED,
+                         reg_class_t from, reg_class_t to)
+{
+/* On s390, copy between fprs and gprs is expensive.  */
+  if ((reg_classes_intersect_p (from, GENERAL_REGS)
+       && reg_classes_intersect_p (to, FP_REGS))
+      || (reg_classes_intersect_p (from, FP_REGS)
+         && reg_classes_intersect_p (to, GENERAL_REGS)))
+    return 10;
+
+  return 1;
+}
+
+/* Implement TARGET_MEMORY_MOVE_COST.  */
+
+static int
+s390_memory_move_cost (enum machine_mode mode ATTRIBUTE_UNUSED,
+                      reg_class_t rclass ATTRIBUTE_UNUSED,
+                      bool in ATTRIBUTE_UNUSED)
+{
+  return 1;
+}
 
 /* Compute a (partial) cost for rtx X.  Return true if the complete
    cost has been computed, and false if subexpressions should be
@@ -10640,6 +10665,10 @@ s390_loop_unroll_adjust (unsigned nunroll, struct loop *loop)
 #define TARGET_RTX_COSTS s390_rtx_costs
 #undef TARGET_ADDRESS_COST
 #define TARGET_ADDRESS_COST s390_address_cost
+#undef TARGET_REGISTER_MOVE_COST
+#define TARGET_REGISTER_MOVE_COST s390_register_move_cost
+#undef TARGET_MEMORY_MOVE_COST
+#define TARGET_MEMORY_MOVE_COST s390_memory_move_cost
 
 #undef TARGET_MACHINE_DEPENDENT_REORG
 #define TARGET_MACHINE_DEPENDENT_REORG s390_reorg
index ed0a2aa..824864f 100644 (file)
@@ -780,18 +780,6 @@ do {                                                                       \
 
 /* Relative costs of operations.  */
 
-/* On s390, copy between fprs and gprs is expensive.  */
-#define REGISTER_MOVE_COST(MODE, CLASS1, CLASS2)                        \
-  ((   (   reg_classes_intersect_p ((CLASS1), GENERAL_REGS)            \
-        && reg_classes_intersect_p ((CLASS2), FP_REGS))                        \
-    || (   reg_classes_intersect_p ((CLASS1), FP_REGS)                 \
-        && reg_classes_intersect_p ((CLASS2), GENERAL_REGS))) ? 10 : 1)
-
-/* A C expression for the cost of moving data of mode M between a
-   register and memory.  A value of 2 is the default; this cost is
-   relative to those in `REGISTER_MOVE_COST'.  */
-#define MEMORY_MOVE_COST(M, C, I) 1
-
 /* A C expression for the cost of a branch instruction.  A value of 1
    is the default; other values are interpreted relative to that.  */
 #define BRANCH_COST(speed_p, predictable_p) 1