http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52932
--- Comment #10 from Agner Fog <agner at agner dot org> 2012-04-13 16:50:33 UTC --- _mm256_permutevar8x32_epi32 has the operands in wrong order. They need to be swapped. Did you fix this too? On 12-04-2012 20:37, uros at gcc dot gnu.org wrote: > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52932 > > --- Comment #9 from uros at gcc dot gnu.org 2012-04-12 18:37:47 UTC --- > Author: uros > Date: Thu Apr 12 18:37:42 2012 > New Revision: 186388 > > URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=186388 > Log: > 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. > > > Modified: > trunk/gcc/ChangeLog > trunk/gcc/config/i386/avx2intrin.h > trunk/gcc/config/i386/i386.c > trunk/gcc/config/i386/sse.md > trunk/gcc/testsuite/ChangeLog > trunk/gcc/testsuite/gcc.target/i386/avx2-vpermd-2.c > trunk/gcc/testsuite/gcc.target/i386/avx2-vpermps-1.c > trunk/gcc/testsuite/gcc.target/i386/avx2-vpermps-2.c >