re PR target/88513 (FAIL: gcc.target/i386/pr59591-1.c)
authorJakub Jelinek <jakub@redhat.com>
Tue, 18 Dec 2018 11:22:00 +0000 (12:22 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 18 Dec 2018 11:22:00 +0000 (12:22 +0100)
commit4714942e0fbd2aa23f12f88d80b93e9b6ff4c041
treefe6f44463c394d04881a2c89fce4d2052ab22c43
parent6a30d8c0a687baae0cea91ca6b3adbed32e84471
re PR target/88513 (FAIL: gcc.target/i386/pr59591-1.c)

PR target/88513
PR target/88514
* optabs.def (vec_pack_sbool_trunc_optab, vec_unpacks_sbool_hi_optab,
vec_unpacks_sbool_lo_optab): New optabs.
* optabs.c (expand_widen_pattern_expr): Use vec_unpacks_sbool_*_optab
and pass additional argument if both input and target have the same
scalar mode of VECTOR_BOOLEAN_TYPE_P vectors.
* expr.c (expand_expr_real_2) <case VEC_PACK_TRUNC_EXPR>: Handle
VECTOR_BOOLEAN_TYPE_P pack where result has the same scalar mode
as the operands using vec_pack_sbool_trunc_optab.
* tree-vect-stmts.c (supportable_widening_operation): Use
vec_unpacks_sbool_{lo,hi}_optab for VECTOR_BOOLEAN_TYPE_P conversions
where both wider_vectype and vectype have the same scalar mode.
(supportable_narrowing_operation): Similarly use
vec_pack_sbool_trunc_optab if narrow_vectype and vectype have the same
scalar mode.
* config/i386/i386.c (ix86_get_builtin)
<case IX86_BUILTIN_GATHER3ALTDIV8SF>: Check for VECTOR_MODE_P
rather than non-VOIDmode.
* config/i386/sse.md (vec_pack_trunc_qi, vec_pack_trunc_<mode>):
Remove useless ()s around "register_operand", formatting fixes.
(vec_pack_sbool_trunc_qi, vec_unpacks_sbool_lo_qi,
vec_unpacks_sbool_hi_qi): New expanders.
* doc/md.texi (vec_pack_sbool_trunc_M, vec_unpacks_sbool_hi_M,
vec_unpacks_sbool_lo_M): Document.

* gcc.target/i386/avx512f-pr88513-1.c: New test.
* gcc.target/i386/avx512f-pr88513-2.c: New test.
* gcc.target/i386/avx512vl-pr88464-1.c: New test.
* gcc.target/i386/avx512vl-pr88464-2.c: New test.
* gcc.target/i386/avx512vl-pr88464-3.c: New test.
* gcc.target/i386/avx512vl-pr88464-4.c: New test.
* gcc.target/i386/avx512vl-pr88513-1.c: New test.
* gcc.target/i386/avx512vl-pr88513-2.c: New test.
* gcc.target/i386/avx512vl-pr88513-3.c: New test.
* gcc.target/i386/avx512vl-pr88513-4.c: New test.
* gcc.target/i386/avx512vl-pr88514-1.c: New test.
* gcc.target/i386/avx512vl-pr88514-2.c: New test.
* gcc.target/i386/avx512vl-pr88514-3.c: New test.

From-SVN: r267228
22 files changed:
gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/sse.md
gcc/doc/md.texi
gcc/expr.c
gcc/optabs.c
gcc/optabs.def
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/avx512f-pr88513-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512f-pr88513-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88464-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88513-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88513-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88513-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88513-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88514-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88514-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx512vl-pr88514-3.c [new file with mode: 0644]
gcc/tree-vect-stmts.c