Commit 15dd8b3a by Yuri Rumyantsev Committed by Kirill Yukhin

i386.md (floatunssi<mode>2 expand): Add new expand for QI/HImode operand to…

i386.md (floatunssi<mode>2 expand): Add new expand for QI/HImode operand to produce more effictive code for...

        * 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.

From-SVN: r201663
parent 94109a6a
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
......
......@@ -5037,6 +5037,18 @@
&& 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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment