s390.h (REGISTER_MOVE_COST, [...]): Remove.
* 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. From-SVN: r169135
This commit is contained in:
parent
0cecee061e
commit
ccaed3ba91
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user