On 04/08/14 14:32, Alan Lawrence wrote:
> At the moment, for two-element vectors, __builtin_shuffle (vector, (mask) {C,
> C}) for identical constants C outputs a zip (with both argument vectors the
> same) rather than a dup. Dup is more obvious and easier to read, so prefer it.
>
> For big-endian, aarch64_evpc_dup always aborts; however tests demonstrate it
> works ok, so enable it.
>
> Finally, add a testcase (of execution results, this gives confidence that
> evpc_dup is ok for bigendian - yes, a different element index is output than
> for
> little-endian). Note existing tests for zip are not affected, they always
> have
> the two arguments different.
>
> gcc/ChangeLog:
> * config/aarch64/aarch64.c (aarch64_evpc_dup): Enable for bigendian.
> (aarch64_expand_vec_perm_const): Check for dup before zip.
>
> gcc/testsuite/ChangeLog:
> * gcc.target/aarch64/vdup_n_2.c: New test.
>
>
OK.
R.