This patch is a small tidy of a more-complicated expression that just flips a single bit and can thus be a simple XOR.

No regressions on aarch64-none-elf or aarch64_be-none-elf. (I've verified code is indeed exercised by dg-torture.exp vshuf-v*.c).

Also ok after applying TBL and testsuite patches in http://gcc.gnu.org/ml/gcc-patches/2014-04/msg01309.html and http://gcc.gnu.org/ml/gcc-patches/2014-04/msg00579.html.

gcc/ChangeLog:
2014-04-23  Alan Lawrence  <alan.lawre...@arm.com>

        * config/aarch64/aarch64.c (aarch64_expand_vec_perm_1): tidy bit-flip 
expression.
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index a3147ee..b879754 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -8124,7 +8124,7 @@ aarch64_expand_vec_perm_const_1 (struct expand_vec_perm_d *d)
       rtx x;
 
       for (i = 0; i < nelt; ++i)
-	d->perm[i] = (d->perm[i] + nelt) & (2 * nelt - 1);
+	d->perm[i] ^= nelt; /* Keep the same index, but in the other vector.  */
 
       x = d->op0;
       d->op0 = d->op1;

Reply via email to