ChangeLog:
commit7645814ef7877eb17bc0c28d50e94140cd3ab0a9
authorkyukhin <kyukhin@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Jul 2013 06:48:15 +0000 (8 06:48 +0000)
committerkyukhin <kyukhin@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Jul 2013 06:48:15 +0000 (8 06:48 +0000)
treeba89b5940f5318ef03d3bc4262cca5673f95b354
parent2a584aaedde58f87a35055a27c8be80ee94d5280
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@200751 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/i386/i386-opts.h
gcc/config/i386/i386.c
gcc/config/i386/i386.opt
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/memcpy-vector_loop-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c [new file with mode: 0644]