I checked this preappoved patch into trunk. But we generate the wrong code for the testcase due to mixing XMM and x87 registers.
H.J. --- Index: ChangeLog =================================================================== --- ChangeLog (revision 209810) +++ ChangeLog (working copy) @@ -1,3 +1,9 @@ +2014-04-25 H.J. Lu <hongjiu...@intel.com> + + PR target/60969 + * config/i386/i386.md (*movsf_internal): Set MODE to SI for + alternative 12. + 2014-04-25 Jiong Wang <jiong.w...@arm.com> * config/arm/predicates.md (call_insn_operand): Add long_call check. Index: config/i386/i386.md =================================================================== --- config/i386/i386.md (revision 209810) +++ config/i386/i386.md (working copy) @@ -3201,7 +3201,7 @@ (const_string "1") (const_string "*"))) (set (attr "mode") - (cond [(eq_attr "alternative" "3,4,9,10,13,14,15") + (cond [(eq_attr "alternative" "3,4,9,10,12,13,14,15") (const_string "SI") (eq_attr "alternative" "11") (const_string "DI")