https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119596

--- Comment #22 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by H.J. Lu <h...@gcc.gnu.org>:

https://gcc.gnu.org/g:d073bb6cfc219d4b6c283a0b527ee88b42e640e0

commit r16-1643-gd073bb6cfc219d4b6c283a0b527ee88b42e640e0
Author: H.J. Lu <hjl.to...@gmail.com>
Date:   Thu Mar 18 18:43:10 2021 -0700

    x86: Update memcpy/memset inline strategies for -mtune=generic

    Update memcpy and memset inline strategies for -mtune=generic:

    1. Don't align memory.
    2. For known sizes, prefer vector loop, unroll loop with 4 moves or
       stores per iteration without aligning the loop, up to 256 bytes.
    3. For unknown sizes, use memcpy/memset.
    4. Since each loop iteration has 4 stores and 8 stores for zeroing with
       unroll loop may be needed, change CLEAR_RATIO to 10 so that zeroing
       up to 72 bytes are fully unrolled with 9 stores without SSE.

    gcc/

            PR target/70308
            PR target/101366
            PR target/102294
            PR target/108585
            PR target/118276
            PR target/119596
            PR target/119703
            PR target/119704
            * config/i386/x86-tune-costs.h (generic_memcpy): Updated.
            (generic_memset): Likewise.
            (generic_cost): Change CLEAR_RATIO to 10.

    gcc/testsuite/

            PR target/70308
            PR target/101366
            PR target/102294
            PR target/108585
            PR target/118276
            PR target/119596
            PR target/119703
            PR target/119704
            * g++.target/i386/memset-pr101366-1.C: New test.
            * g++.target/i386/memset-pr101366-2.C: Likewise.
            * g++.target/i386/memset-pr108585-1a.C: Likewise.
            * g++.target/i386/memset-pr108585-1b.C: Likewise.
            * g++.target/i386/memset-pr118276-1a.C: Likewise.
            * g++.target/i386/memset-pr118276-1b.C: Likewise.
            * g++.target/i386/memset-pr118276-1c.C: Likewise.
            * gcc.target/i386/memcpy-strategy-12.c: Likewise.
            * gcc.target/i386/memcpy-strategy-13.c: Likewise.
            * gcc.target/i386/memset-pr70308-1a.c: Likewise.
            * gcc.target/i386/memset-pr70308-1b.c: Likewise.
            * gcc.target/i386/memset-strategy-25.c: Likewise.
            * gcc.target/i386/memset-strategy-26.c: Likewise.
            * gcc.target/i386/memset-strategy-27.c: Likewise.
            * gcc.target/i386/memset-strategy-28.c: Likewise.
            * gcc.target/i386/memset-strategy-29.c: Likewise.
            * gcc.target/i386/memset-strategy-30.c: Likewise.
            * gcc.target/i386/memset-strategy-31.c: Likewise.
            * gcc.target/i386/auto-init-padding-3.c: Expect XMM stores.
            * gcc.target/i386/auto-init-padding-9.c: Likewise.
            * gcc.target/i386/mvc17.c: Fail with "rep mov"
            * gcc.target/i386/pr111657-1.c: Scan for unrolled loop.  Fail
            with "rep mov".
            * gcc.target/i386/shrink_wrap_1.c: Also pass
            -mmemset-strategy=rep_8byte:-1:align.
            * gcc.target/i386/sw-1.c: Also pass -mstringop-strategy=rep_byte.

    Signed-off-by: H.J. Lu <hjl.to...@gmail.com>

Reply via email to