i386-opts.h (enum stringop_alg): Add vector_loop.
ChangeLog: * config/i386/i386-opts.h (enum stringop_alg): Add vector_loop. * config/i386/i386.c (expand_set_or_movmem_via_loop): Use adjust_address instead of change_address to keep info about alignment. (emit_strmov): Remove. (emit_memmov): New function. (expand_movmem_epilogue): Refactor to properly handle bigger sizes. (expand_movmem_epilogue): Likewise and return updated rtx for destination. (expand_constant_movmem_prologue): Likewise and return updated rtx for destination and source. (decide_alignment): Refactor, handle vector_loop. (ix86_expand_movmem): Likewise. (ix86_expand_setmem): Likewise. * config/i386/i386.opt (Enum): Add vector_loop to option stringop_alg. testsuite/ChangeLog: * gcc.target/i386/memcpy-vector_loop-1.c: New. * gcc.target/i386/memcpy-vector_loop-2.c: New. From-SVN: r200751
Showing
This diff is collapsed.
Click to expand it.
Please
register
or
sign in
to comment