i386.md (*movxf_internal): Penalize FYx*r->o alternative to prevent partial memory...
authorUros Bizjak <uros@gcc.gnu.org>
Mon, 30 May 2011 20:55:30 +0000 (22:55 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Mon, 30 May 2011 20:55:30 +0000 (22:55 +0200)
commitb17d542637d69e2e0ea09434a7892706a335dc28
tree6866f2f327a649175a244f2051b7b017833804ae
parenta0cd843f4d76e778d03509bd3aa80a3880ab717f
i386.md (*movxf_internal): Penalize FYx*r->o alternative to prevent partial memory stalls.

* config/i386/i386.md (*movxf_internal): Penalize FYx*r->o alternative
to prevent partial memory stalls.  Do not move CONST_DOUBLEs directly
to memory for !TARGET_MEMORY_MISMATCH_STALL.
(*movdf_internal_rex64): Do not penalize F->r alternative.
(*movdf_internal):  Penalize FYd*r->o alternative to prevent partial
memory stalls.  Generate SSE and x87 CONST_DOUBLE immediates only
when optimizing function for size.  Do not move CONST_DOUBLEs
directly to memory for !TARGET_MEMORY_MISMATCH_STALL.
(FP move splitters): Merge {TF,XF,DF}mode move splitters.  Do not
handle SUBREGs.  Do not check for MEM_P operands in the insn condition,
check for ANY_FP_REGNO_P instead.
* config/i386/constraints.md (Yd): Enable GENERAL_REGS for
TARGET_64BIT and for TARGET_INTEGER_DFMODE_MOVES when optimizing
function for speed.
* config/i386/i386.c (ix86_option_override_internal): Do not
set TARGET_INTEGER_DFMODE_MOVES here.

From-SVN: r174453
gcc/ChangeLog
gcc/config/i386/constraints.md
gcc/config/i386/i386.c
gcc/config/i386/i386.md