From: Alan Lawrence Date: Tue, 25 Mar 2014 15:59:48 +0000 (+0000) Subject: [PATCH AArch64] Fix aarch64_simd_valid_immediate for Bigendian X-Git-Tag: releases/gcc-4.9.0~313 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4b1e108cb2518d9a3f2e37e624ca787bb68957df;p=thirdparty%2Fgcc.git [PATCH AArch64] Fix aarch64_simd_valid_immediate for Bigendian gcc/ * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Reverse order of elements for big-endian. From-SVN: r208814 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3da0621998cd..fef65b6d9e5d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-03-25 Alan Lawrence + + * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Reverse + order of elements for big-endian. + 2014-03-25 Richard Biener PR middle-end/60635 diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index ebd58c007611..e839539fda15 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -6566,7 +6566,9 @@ aarch64_simd_valid_immediate (rtx op, enum machine_mode mode, bool inverse, /* Splat vector constant out into a byte vector. */ for (i = 0; i < n_elts; i++) { - rtx el = CONST_VECTOR_ELT (op, i); + /* The vector is provided in gcc endian-neutral fashion. For aarch64_be, + it must be laid out in the vector register in reverse order. */ + rtx el = CONST_VECTOR_ELT (op, BYTES_BIG_ENDIAN ? (n_elts - 1 - i) : i); unsigned HOST_WIDE_INT elpart; unsigned int part, parts;