On 06/04/2014 10:06 AM, Evgeny Stupachenko wrote: > Is it ok to use the following pattern? > > patch passed bootstrap and make check, but one test failed: > gcc/testsuite/gcc.target/i386/vect-rebuild.c > It failed on /* { dg-final { scan-assembler-times "\tv?permilpd\[ \t\]" 1 } } > */ > which is now palignr. However, both palignr and permilpd costs 1 tick > and take 6 bytes in the opcode. > I vote for modifying the test to scan for palignr: > /* { dg-final { scan-assembler-times "\tv?palignr\[ \t\]" 1 } } */ > > 2014-06-04 Evgeny Stupachenko <evstu...@gmail.com> > > * config/i386/sse.md (*ssse3_palignr<mode>_perm): New. > * config/i386/predicates.md (palignr_operand): New. > Indicates if permutation is suitable for palignr instruction.
Surely permilpd avoids some sort of reformatting penalty when actually using doubles. If you move this pattern down below the other vec_select patterns, we'll prefer the others for matching masks. r~