]> git.ipfire.org Git - thirdparty/gcc.git/commit
OMP SIMD inbranch call vectorization for AVX512 style masks
authorRichard Biener <rguenther@suse.de>
Fri, 13 Oct 2023 10:32:51 +0000 (12:32 +0200)
committerRichard Biener <rguenther@suse.de>
Fri, 13 Oct 2023 12:29:39 +0000 (14:29 +0200)
commit3179ad72f67f31824c444ef30ef171ad7495d274
treeccde04de737ecbd00200d75549fa6de153aeede7
parent63eaccd114393f4692976bb78b30148e6d77a89e
OMP SIMD inbranch call vectorization for AVX512 style masks

The following teaches vectorizable_simd_clone_call to handle
integer mode masks.  The tricky bit is to second-guess the
number of lanes represented by a single mask argument - the following
uses simdlen and the number of mask arguments to calculate that,
assuming ABIs have them uniform.

Similar to the VOIDmode handling there's a restriction on not
supporting splitting/merging of incoming vector masks to
more/less SIMD call arguments.

PR tree-optimization/111795
* tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
integer mode mask arguments.

* gcc.target/i386/vect-simd-clone-avx512-1.c: New testcase.
* gcc.target/i386/vect-simd-clone-avx512-2.c: Likewise.
* gcc.target/i386/vect-simd-clone-avx512-3.c: Likewise.
gcc/testsuite/gcc.target/i386/vect-simd-clone-avx512-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/vect-simd-clone-avx512-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/vect-simd-clone-avx512-3.c [new file with mode: 0644]
gcc/tree-vect-stmts.cc