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:
parent
897eef7b83
commit
356ecb1530
2 changed files with 12 additions and 3 deletions
|
@ -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
|
||||
|
|
|
@ -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 : \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue