Index: i386.md =================================================================== --- i386.md (revision 215797) +++ i386.md (working copy) @@ -4766,6 +4766,38 @@ } }) +(define_insn "*float2_sse_size" + [(set (match_operand:MODEF 0 "register_operand" "=f,x,x") + (float:MODEF + (match_operand:SWI48 1 "nonimmediate_operand" "m,r,m")))] + "SSE_FLOAT_MODE_P (mode) && TARGET_SSE_MATH + && optimize_function_for_size_p (cfun)" + "@ + fild%Z1\t%1 + %vcvtsi2\t{%1, %d0|%d0, %1} + %vcvtsi2\t{%1, %d0|%d0, %1}" + [(set_attr "type" "fmov,sseicvt,sseicvt") + (set_attr "prefix" "orig,maybe_vex,maybe_vex") + (set_attr "mode" "") + (set (attr "prefix_rex") + (if_then_else + (and (eq_attr "prefix" "maybe_vex") + (match_test "mode == DImode")) + (const_string "1") + (const_string "*"))) + (set_attr "unit" "i387,*,*") + (set_attr "athlon_decode" "*,double,direct") + (set_attr "amdfam10_decode" "*,vector,double") + (set_attr "bdver1_decode" "*,double,direct") + (set_attr "fp_int_src" "true") + (set (attr "enabled") + (cond [(eq_attr "alternative" "0") + (symbol_ref "TARGET_MIX_SSE_I387 + && X87_ENABLE_FLOAT (mode, + mode)") + ] + (const_int 1)))]) + (define_insn "*float2_sse" [(set (match_operand:MODEF 0 "register_operand" "=f,x,x") (float:MODEF @@ -4795,16 +4827,9 @@ && X87_ENABLE_FLOAT (mode, mode)") (eq_attr "alternative" "1") - /* ??? For sched1 we need constrain_operands to be able to - select an alternative. Leave this enabled before RA. */ - (symbol_ref "TARGET_INTER_UNIT_CONVERSIONS - || optimize_function_for_size_p (cfun) - || !(reload_completed - || reload_in_progress - || lra_in_progress)") + (symbol_ref "TARGET_INTER_UNIT_CONVERSIONS") ] - (symbol_ref "true"))) - ]) + (const_int 1)))]) (define_insn "*float2_i387" [(set (match_operand:MODEF 0 "register_operand" "=f")