re PR tree-optimization/88464 (AVX-512 vectorization of masked scatter failing with...
authorJakub Jelinek <jakub@redhat.com>
Tue, 18 Dec 2018 18:41:26 +0000 (19:41 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 18 Dec 2018 18:41:26 +0000 (19:41 +0100)
commitdc5b05a07544bbab9e309a45ebcb350a37b69103
treecbe8e6687ad716c56bd6fb8e972324ae16755d83
parent4894e316a8feaf1d38e64e867358107445b7dc31
re PR tree-optimization/88464 (AVX-512 vectorization of masked scatter failing with "not suitable for scatter store")

PR target/88464
* config/i386/i386-builtin-types.def
(VOID_FTYPE_PDOUBLE_QI_V8SI_V4DF_INT,
VOID_FTYPE_PFLOAT_QI_V4DI_V8SF_INT,
VOID_FTYPE_PLONGLONG_QI_V8SI_V4DI_INT,
VOID_FTYPE_PINT_QI_V4DI_V8SI_INT,
VOID_FTYPE_PDOUBLE_QI_V4SI_V2DF_INT,
VOID_FTYPE_PFLOAT_QI_V2DI_V4SF_INT,
VOID_FTYPE_PLONGLONG_QI_V4SI_V2DI_INT,
VOID_FTYPE_PINT_QI_V2DI_V4SI_INT): New builtin types.
* config/i386/i386.c (enum ix86_builtins): Add
IX86_BUILTIN_SCATTERALTSIV4DF, IX86_BUILTIN_SCATTERALTDIV8SF,
IX86_BUILTIN_SCATTERALTSIV4DI, IX86_BUILTIN_SCATTERALTDIV8SI,
IX86_BUILTIN_SCATTERALTSIV2DF, IX86_BUILTIN_SCATTERALTDIV4SF,
IX86_BUILTIN_SCATTERALTSIV2DI and IX86_BUILTIN_SCATTERALTDIV4SI.
(ix86_init_mmx_sse_builtins): Fix up names of IX86_BUILTIN_GATHERALT*,
IX86_BUILTIN_GATHER3ALT* and IX86_BUILTIN_SCATTERALT* builtins to
match the IX86_BUILTIN codes.  Build  IX86_BUILTIN_SCATTERALTSIV4DF,
IX86_BUILTIN_SCATTERALTDIV8SF, IX86_BUILTIN_SCATTERALTSIV4DI,
IX86_BUILTIN_SCATTERALTDIV8SI, IX86_BUILTIN_SCATTERALTSIV2DF,
IX86_BUILTIN_SCATTERALTDIV4SF, IX86_BUILTIN_SCATTERALTSIV2DI and
IX86_BUILTIN_SCATTERALTDIV4SI decls.
(ix86_vectorize_builtin_scatter): Expand those new builtins.

* gcc.target/i386/avx512f-pr88464-5.c: New test.
* gcc.target/i386/avx512f-pr88464-6.c: New test.
* gcc.target/i386/avx512f-pr88464-7.c: New test.
* gcc.target/i386/avx512f-pr88464-8.c: New test.
* gcc.target/i386/avx512vl-pr88464-5.c: New test.
* gcc.target/i386/avx512vl-pr88464-6.c: New test.
* gcc.target/i386/avx512vl-pr88464-7.c: New test.
* gcc.target/i386/avx512vl-pr88464-8.c: New test.
* gcc.target/i386/avx512vl-pr88464-9.c: New test.
* gcc.target/i386/avx512vl-pr88464-10.c: New test.
* gcc.target/i386/avx512vl-pr88464-11.c: New test.
* gcc.target/i386/avx512vl-pr88464-12.c: New test.
* gcc.target/i386/avx512vl-pr88464-13.c: New test.
* gcc.target/i386/avx512vl-pr88464-14.c: New test.
* gcc.target/i386/avx512vl-pr88464-15.c: New test.
* gcc.target/i386/avx512vl-pr88464-16.c: New test.

From-SVN: r267239
20 files changed:
gcc/ChangeLog
gcc/config/i386/i386-builtin-types.def
gcc/config/i386/i386.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/avx512f-pr88464-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-pr88464-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-pr88464-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-pr88464-8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-10.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-11.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-12.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-13.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-14.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-15.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-16.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-7.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-8.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-9.c [new file with mode: 0644]