+2013-08-12 Yuri Rumyantsev <ysrumyan@gmail.com>
+
+ * config/i386/i386.md (floatunssi<mode>2 expand): Add new
+ expand for QI/HImode operand to produce more effictive code for
+ unsigned char(short) --> float(double) conversion.
+
2013-08-12 Alexander Monakov <amonakov@ispras.ru>
* doc/invoke.texi: Mention that -ftls-model does not force the final
&& reload_completed"
[(set (match_dup 0) (float:X87MODEF (match_dup 1)))])
+(define_expand "floatuns<SWI12:mode><X87MODEF:mode>2"
+ [(set (match_operand:X87MODEF 0 "register_operand")
+ (unsigned_float:X87MODEF
+ (match_operand:SWI12 1 "nonimmediate_operand")))]
+ "!TARGET_64BIT
+ && SSE_FLOAT_MODE_P (<X87MODEF:MODE>mode) && TARGET_SSE_MATH"
+{
+ operands[1] = convert_to_mode (SImode, operands[1], 1);
+ emit_insn (gen_floatsi<X87MODEF:mode>2 (operands[0], operands[1]));
+ DONE;
+})
+
;; Avoid store forwarding (partial memory) stall penalty by extending
;; SImode value to DImode through XMM register instead of pushing two
;; SImode values to stack. Note that even !TARGET_INTER_UNIT_MOVES_TO_VEC