diff options
author | Alan Lawrence <alan.lawrence@arm.com> | 2014-03-25 15:59:48 +0000 |
---|---|---|
committer | James Greenhalgh <jgreenhalgh@gcc.gnu.org> | 2014-03-25 15:59:48 +0000 |
commit | 4b1e108cb2518d9a3f2e37e624ca787bb68957df (patch) | |
tree | 5b3b177cff852248efce5e8b17dc874a2c85621f | |
parent | 774f475861f60d93b160b1c736d25049c93a1e97 (diff) | |
download | gcc-4b1e108cb2518d9a3f2e37e624ca787bb68957df.zip gcc-4b1e108cb2518d9a3f2e37e624ca787bb68957df.tar.gz gcc-4b1e108cb2518d9a3f2e37e624ca787bb68957df.tar.bz2 |
[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
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64.c | 4 |
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3da0621..fef65b6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-03-25 Alan Lawrence <alan.lawrence@arm.com> + + * config/aarch64/aarch64.c (aarch64_simd_valid_immediate): Reverse + order of elements for big-endian. + 2014-03-25 Richard Biener <rguenther@suse.de> PR middle-end/60635 diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index ebd58c0..e839539 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; |