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 <[email protected]>
>
> * 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~