i386: Fix vec_set<mode> expanders [PR101424]
commit8d980e84240c82502661758fbecd5f456018ea89
authorUros Bizjak <ubizjak@gmail.com>
Mon, 12 Jul 2021 19:06:32 +0000 (12 21:06 +0200)
committerUros Bizjak <ubizjak@gmail.com>
Mon, 12 Jul 2021 19:08:46 +0000 (12 21:08 +0200)
tree5b9f7a4b567265ca0f838fbb6eed2d3049e32706
parenta1539b797a06e03b08e1f1de28ad0d19a3956616
i386: Fix vec_set<mode> expanders [PR101424]

AVX does not support 32-byte integer compares, required by
ix86_expand_vector_set_var.  The following patch fixes vec_set<mode>
expanders by introducing new vec_setm_avx2_operand predicate for AVX
vector modes.

gcc/

2021-07-12  Uroš Bizjak  <ubizjak@gmail.com>

PR target/101424
* config/i386/predicates.md (vec_setm_sse41_operand):
Rename from vec_setm_operand.
(vec_setm_avx2_operand): New predicate.
* config/i386/sse.md (vec_set<V_128:mode>): Use V_128 mode iterator.
Use vec_setm_sse41_operand as operand 2 predicate.
(vec_set<V_256_512:mode): New expander.
* config/i386/mmx.md (vec_setv2hi): Use vec_setm_sse41_operand
as operand 2 predicate.

gcc/testsuite/

2021-07-12  Uroš Bizjak  <ubizjak@gmail.com>

PR target/101424
* gcc.target/i386/pr101424.c: New test.
gcc/config/i386/mmx.md
gcc/config/i386/predicates.md
gcc/config/i386/sse.md
gcc/testsuite/gcc.target/i386/pr101424.c [new file with mode: 0644]