re PR tree-optimization/88464 (AVX-512 vectorization of masked scatter failing with...
authorJakub Jelinek <jakub@redhat.com>
Sat, 15 Dec 2018 11:02:28 +0000 (12:02 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sat, 15 Dec 2018 11:02:28 +0000 (12:02 +0100)
commitb1985ca02ea01cd32de23be109672a7ebf593a46
treedcf3ccf64849f93f2fc560d0b53e8993c344dc6a
parentee34ebba1573641e069bae17a228f597b3f57205
re PR tree-optimization/88464 (AVX-512 vectorization of masked scatter failing with "not suitable for scatter store")

PR tree-optimization/88464
PR target/88498
* tree-vect-stmts.c (vect_build_gather_load_calls): For NARROWING
and mask with integral masktype, don't try to permute mask vectors,
instead emit VEC_UNPACK_{LO,HI}_EXPR.  Fix up NOP_EXPR operand.
(vectorizable_store): Handle masked scatters with decl and integral
mask type.
(permute_vec_elements): Allow scalar_dest to be NULL.
* config/i386/i386.c (ix86_get_builtin)
<case IX86_BUILTIN_GATHER3ALTDIV16SF>: Use lowpart_subreg for masks.
<case IX86_BUILTIN_GATHER3ALTDIV8SF>: Don't assume mask and src have
to be the same.

* gcc.target/i386/avx512f-pr88462-1.c: Rename to ...
* gcc.target/i386/avx512f-pr88464-1.c: ... this.  Fix up PR number.
Expect 4 vectorized loops instead of 3.
(f4): New function.
* gcc.target/i386/avx512f-pr88462-2.c: Rename to ...
* gcc.target/i386/avx512f-pr88464-2.c: ... this.  Fix up PR number
and #include.
(avx512f_test): Prepare arguments for f4 and check the results.
* gcc.target/i386/avx512f-pr88464-3.c: New test.
* gcc.target/i386/avx512f-pr88464-4.c: New test.

From-SVN: r267169
gcc/ChangeLog
gcc/config/i386/i386.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/avx512f-pr88462-1.c [deleted file]
gcc/testsuite/gcc.target/i386/avx512f-pr88462-2.c [deleted file]
gcc/testsuite/gcc.target/i386/avx512f-pr88464-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-pr88464-2.c [new file with mode: 0644]
gcc/tree-vect-stmts.c