re PR target/17990 (sse used for negate without -mfpmath=sse)
PR target/17990 * config/i386/i386.c (x86_use_bt): New. (ix86_expand_unary_operator): Use MEM_P. (ix86_expand_fp_absneg_operator): New. * config/i386/i386.h (x86_use_bt): Declare. (TARGET_USE_BT): New. * config/i386/i386-protos.h: Update. * config/i386/i386.md (negsf2): Use ix86_expand_fp_absneg_operator. (negdf2, negxf2, abssf2, absdf2, absxf2): Likewise. (negsf2_memory, negsf2_ifs, negsf2_if, negdf2_memory, negdf2_ifs, negdf2_ifs_rex64, negdf2_if, negdf2_if_rex64, negxf2_if, abssf2_memory, abssf2_ifs, abssf2_if, absdf2_memory, absdf2_ifs, absdf2_ifs_rex64, absdf2_if, absxf2_if): Remove. (absnegsf2_mixed, absnegsf2_sse, absnegsf2_i387, absnegdf2_mixed, absnegdf2_sse, absnegdf2_i387, absnegxf2_i387): New. Merge all neg and abs splitters. Handle DFmode in general regs in 64-bit mode. (negextendsfdf2, absextendsfdf2): Disable for non-mixed sse math. (btsq, btrq, btcq): New. Add peepholes as well. (movv4sf_internal splitter): Postpone til after reload. (movv2di_internal splitter): Likewise. * config/i386/predicates.md (const_0_to_63_operand): New. (absneg_operator): New. From-SVN: r92165
Showing
This diff is collapsed.
Click to expand it.
Please
register
or
sign in
to comment