On 03/15/12 13:09, Jakub Jelinek wrote: > Hi! > > As noted in the PR, we can vectorize e.g. V4DFmode > __builtin_shuffle (, {1, 2, 3, 0}) in 3 insns, some intra-lane > permutation, followed by swapping of the lanes (vperm2f128) and > finally vblend{pd,ps} that merges in the registers with non-swapped > and swapped lanes. > > Bootstrapped/regtested on x86_64-linux and i686-linux, tested > additionally with > GCC_TEST_RUN_EXPENSIVE=1 make check-gcc > RUNTESTFLAGS='--target_board=unix\{-m32/-mavx,-m64/-mavx\} > dg-torture.exp=vshuf*' > Ok for trunk? > > 2012-03-15 Jakub Jelinek <ja...@redhat.com> > > PR target/52568 > * config/i386/i386.c (expand_vec_perm_vperm2f128_vblend): New > function. > (ix86_expand_vec_perm_const_1): Use it. > > * gcc.dg/torture/vshuf-4.inc: Add two new tests. > * gcc.dg/torture/vshuf-8.inc: Likewise. > * gcc.dg/torture/vshuf-16.inc: Likewise. > * gcc.dg/torture/vshuf-32.inc: Likewise.
Ok. r~