arm.h (REGISTER_MOVE_COST): Increase VFP register move cost.

* config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
	move cost.

From-SVN: r149057
This commit is contained in:
Daniel Jacobowitz 2009-06-29 16:55:56 +00:00 committed by Daniel Jacobowitz
parent 897eef7b83
commit 356ecb1530
2 changed files with 12 additions and 3 deletions

View file

@ -1,3 +1,8 @@
2009-06-29 Daniel Jacobowitz <dan@codesourcery.com>
* config/arm/arm.h (REGISTER_MOVE_COST): Increase VFP register
move cost.
2009-06-29 Uros Bizjak <ubizjak@gmail.com>
* doc/extend.texi (Additional Floating Types): __float128 is also

View file

@ -1433,13 +1433,17 @@ do { \
/* If defined, gives a class of registers that cannot be used as the
operand of a SUBREG that changes the mode of the object illegally. */
/* Moves between FPA_REGS and GENERAL_REGS are two memory insns. */
/* Moves between FPA_REGS and GENERAL_REGS are two memory insns.
Moves between VFP_REGS and GENERAL_REGS are a single insn, but
it is typically more expensive than a single memory access. We set
the cost to less than two memory accesses so that floating
point to integer conversion does not go through memory. */
#define REGISTER_MOVE_COST(MODE, FROM, TO) \
(TARGET_32BIT ? \
((FROM) == FPA_REGS && (TO) != FPA_REGS ? 20 : \
(FROM) != FPA_REGS && (TO) == FPA_REGS ? 20 : \
IS_VFP_CLASS (FROM) && !IS_VFP_CLASS (TO) ? 10 : \
!IS_VFP_CLASS (FROM) && IS_VFP_CLASS (TO) ? 10 : \
IS_VFP_CLASS (FROM) && !IS_VFP_CLASS (TO) ? 15 : \
!IS_VFP_CLASS (FROM) && IS_VFP_CLASS (TO) ? 15 : \
(FROM) == IWMMXT_REGS && (TO) != IWMMXT_REGS ? 4 : \
(FROM) != IWMMXT_REGS && (TO) == IWMMXT_REGS ? 4 : \
(FROM) == IWMMXT_GR_REGS || (TO) == IWMMXT_GR_REGS ? 20 : \