]> git.ipfire.org Git - thirdparty/gcc.git/commit
Remove SPR/GNR/DMR from avx512_{move,store}_by pieces tune.
authorhongtao.liu <hongtao.liu@intel.com>
Tue, 16 Sep 2025 01:23:45 +0000 (03:23 +0200)
committerliuhongt <hongtao.liu@intel.com>
Thu, 18 Sep 2025 01:39:34 +0000 (18:39 -0700)
commitb748d6f63cb87a7d78a1d41f98a5763bbadd4d03
tree2e98243216ddc45d85250a83c6c09047da405b1a
parent281226830fdbd499c692b3f21648c04000bed73f
Remove SPR/GNR/DMR from avx512_{move,store}_by pieces tune.

Align move_max with prefer_vector_width for SPR/GNR/DMR similar as
below commit.

commit 6ea25c041964bf63014fcf7bb68fb1f5a0a4e123
Author: liuhongt <hongtao.liu@intel.com>
Date:   Thu Aug 15 12:54:07 2024 +0800

    Align ix86_{move_max,store_max} with vectorizer.

    When none of mprefer-vector-width, avx256_optimal/avx128_optimal,
    avx256_store_by_pieces/avx512_store_by_pieces is specified, GCC will
    set ix86_{move_max,store_max} as max available vector length except
    for AVX part.

                  if (TARGET_AVX512F_P (opts->x_ix86_isa_flags)
                      && TARGET_EVEX512_P (opts->x_ix86_isa_flags2))
                    opts->x_ix86_move_max = PVW_AVX512;
                  else
                    opts->x_ix86_move_max = PVW_AVX128;

    So for -mavx2, vectorizer will choose 256-bit for vectorization, but
    128-bit is used for struct copy, there could be a potential STLF issue
    due to this "misalign".

gcc/ChangeLog:

* config/i386/x86-tune.def (X86_TUNE_AVX512_MOVE_BY_PIECES):
Remove SPR/GNR/DMR.
(X86_TUNE_AVX512_STORE_BY_PIECES): Ditto.

gcc/testsuite/ChangeLog:

* gcc.target/i386/pieces-memcpy-18.c: Use -mtune=znver5
instead of -mtune=sapphirerapids.
* gcc.target/i386/pieces-memcpy-21.c: Ditto.
* gcc.target/i386/pieces-memset-46.c: Ditto.
* gcc.target/i386/pieces-memset-49.c: Ditto.

(cherry picked from commit dd713d0f3fc88778a9b3d4f8f1895a3cd6c145ca)
gcc/config/i386/x86-tune.def
gcc/testsuite/gcc.target/i386/pieces-memcpy-18.c
gcc/testsuite/gcc.target/i386/pieces-memcpy-21.c
gcc/testsuite/gcc.target/i386/pieces-memset-46.c
gcc/testsuite/gcc.target/i386/pieces-memset-49.c