PR target/52932
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 12 Apr 2012 18:37:42 +0000 (18:37 +0000)
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 12 Apr 2012 18:37:42 +0000 (18:37 +0000)
commit8da8a06b586ddd9511b5c5c83e2c28ca8d7613a8
tree34aa5f05cd84d11ce0804a1ab11eb52429dedd93
parent203e95f620f96e8940c8ffa7887f28ab4475e8ac
PR target/52932
* config/i386/avx2intrin.h (_mm256_permutevar8x32_ps): Change second
argument type to __m256i.  Update call to __builtin_ia32_permvarsf256.
* config/i386/sse.md (UNSPEC_VPERMVAR): New.
(UNSPEC_VPERMSI, UNSPEC_VPERMSF): Remove.
(avx2_permvarv8sf, avx2_permvarv8si): Switch operands 1 and 2.
(avx2_permvar<mode>): Macroize insn from avx2_permvarv8sf and
avx2_permvarv8si using VI4F_256 mode iterator.
* config/i386/i386.c (bdesc_args) <__builtin_ia32_permvarsf256>:
Update builtin type to V8SF_FTYPE_V8SF_V8SI.
(ix86_expand_vec_perm): Update calls to gen_avx2_permvarv8si and
gen_avx2_permvarv8sf.
(expand_vec_perm_pshufb): Ditto.

testsuite/ChangeLog:

PR target/52932
* gcc.target/i386/avx2-vpermps-1.c (avx2_test): Use __m256i type for
second function argument.
* gcc.target/i386/avx2-vpermps-2.c (init_permps): Update declaration.
(calc_permps): Update declaration.  Calculate result correctly.
(avx2_test): Change src2 type to union256i_d.
* gcc.target/i386/avx2-vpermd-2.c (calc_permd): Calculate result
correctly.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@186388 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/i386/avx2intrin.h
gcc/config/i386/i386.c
gcc/config/i386/sse.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/avx2-vpermd-2.c
gcc/testsuite/gcc.target/i386/avx2-vpermps-1.c
gcc/testsuite/gcc.target/i386/avx2-vpermps-2.c