]> git.ipfire.org Git - thirdparty/gcc.git/commit
Fix regression from x86 multi-epilogue tuning
authorRichard Biener <rguenther@suse.de>
Wed, 14 May 2025 14:36:29 +0000 (16:36 +0200)
committerRichard Biener <rguenther@suse.de>
Fri, 6 Jun 2025 07:43:05 +0000 (09:43 +0200)
commite93f02828faf7dc0df6a4d67b1b6b2a30bd713cb
tree542d2becdbf19340d38b37c49cbd012a4207e32a
parent63465629ea118d27e59f3d97a92db1461c8b591e
Fix regression from x86 multi-epilogue tuning

With the avx512_two_epilogues tuning enabled for zen4 and zen5
the gcc.target/i386/vect-epilogues-5.c testcase below regresses
and ends up using AVX2 sized vectors for the masked epilogue
rather than AVX512 sized vectors.  The following patch rectifies
this and adds coverage for the intended behavior.

* config/i386/i386.cc (ix86_vector_costs::finish_cost):
Do not suggest a first epilogue mode for AVX512 sized
main loops with X86_TUNE_AVX512_TWO_EPILOGUES as that
interferes with using a masked epilogue.

* gcc.target/i386/vect-epilogues-1.c: New testcase.
* gcc.target/i386/vect-epilogues-2.c: Likewise.
* gcc.target/i386/vect-epilogues-3.c: Likewise.
* gcc.target/i386/vect-epilogues-4.c: Likewise.
* gcc.target/i386/vect-epilogues-5.c: Likewise.

(cherry picked from commit 75c7f90bfe6fa8e6c1a70b784e98a3412861646d)
gcc/config/i386/i386.cc
gcc/testsuite/gcc.target/i386/vect-epilogues-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/vect-epilogues-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/vect-epilogues-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/vect-epilogues-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/vect-epilogues-5.c [new file with mode: 0644]