re PR target/52607 (v4df __builtin_shuffle with {0,2,1,3} or {1,3,0,2})
authorJakub Jelinek <jakub@redhat.com>
Tue, 20 Mar 2012 16:25:54 +0000 (17:25 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 20 Mar 2012 16:25:54 +0000 (17:25 +0100)
commit6945a32ec3fb20b5bba0d98a419da26c1c6b62d4
tree125a00826bd91bb2914b8a2b8c72e9e6c03b8776
parent681676df511683e888303c510562195c52c67607
re PR target/52607 (v4df __builtin_shuffle with {0,2,1,3} or {1,3,0,2})

PR target/52607
* config/i386/i386.md ("isa" attribute): Add avx2 and noavx2.
("enabled" attribute): Handle avx2 and noavx2 isas.
* config/i386/sse.md (avx2_vec_dupv8sf_1, avx2_pbroadcast<mode>_1):
New insns.
(vec_dup<mode>): Add avx2 =x,x alternative.
(vec_dup<mode> splitter): Don't split if TARGET_AVX2.
(*avx_vperm_broadcast_<mode>): Don't split V4DFmode if TARGET_AVX2.
For TARGET_AVX2, V8SFmode and elt == 0 split into vbroadcastss.
* config/i386/i386.c (expand_vec_perm_pshufb): Emit also vpermps
for V8SFmode.
(expand_vec_perm_1): For broadcasts, use avx2_pbroadcast<mode>_1
if possible, handle also V8SFmode.

From-SVN: r185577
gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/i386.md
gcc/config/i386/sse.md