• hubicka's avatar
    * i386.c (athlon_cost): Fix lea, divide and XFmode move costs. · d8fbfe34
    hubicka authored
    	(x86_integer_DFmode_moves, x86_partial_reg_dependency,
    	 x86_memory_mismatch_stall): New global variables.
    	(ix86_adjust_cost): Handle MEMORY_BOTH on places MEMORY_STORE was only
    	alloved; fix load penalties for Athlon.
    	* i386.h (x86_integer_DFmode_moves, x86_partial_reg_dependency,
    	x86_memory_mismatch_stall): Declare.
    	(TARGET_INTEGER_DFMODE_MOVES, TARGET_PARTIAL_REG_DEPENDENCY,
    	 TARGET_MEMORY_MISMATCH_STALL): New.
    	* i386.md (athlon scheduling parameters): Fix latencies according to
    	Athlon Optimization Manual.
    	(sahf, xchg, fldcw, leave instruction patterns): Set athlon_decode to
    	vector.
    	(fsqrt instruction patterns): Set athlon_decode to direct.
    	(movhi_1): Promote for TARGET_PARTIAL_REG_DEPENDENCY and for
    	PARTIAL_REGISTER_STALL with !TARGET_HIMODE_MATH machines.
    	(movqi_1): Handle promoting correctly for TARGET_PARTIAL_REG_DEPENDENCY
    	and TARGET_PARTIAL_REGISTER_STALL machines.
    	(pushdf_nointeger): New pattern.
    	(pushdf_integer): Rename from pushdf.
    	(movdf_nointger): Enable for !TARGET_INTEGER_DFMODE_MOVES machines.
    	(movdf_intger): Disable for !TARGET_INTEGER_DFMODE_MOVES machines.
    
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33215 138bc75d-0d04-0410-961f-82ee72b054a4
    d8fbfe34
i386.c 178 KB