[PATCH] Fix gcc.target/aarch64/vec_zeroextend.c for big-endian
apinski@marvell.com
apinski@marvell.com
Sat Jan 25 14:14:00 GMT 2020
From: Andrew Pinski <apinski@marvell.com>
vec_zeroextend.c fails on big-endian as it assumes
0 index is the lower part but it is not for
big-endian case. This fixes the problem by
using the correct index for the lower part
for big-endian.
Committed as obvious after a test on aarch64_be-linux-gnu.
Thanks,
Andrew Pinski
ChangeLog:
* gcc.target/aarch64/vec_zeroextend.c: Fix for big-endian.
---
gcc/testsuite/gcc.target/aarch64/vec_zeroextend.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/gcc/testsuite/gcc.target/aarch64/vec_zeroextend.c b/gcc/testsuite/gcc.target/aarch64/vec_zeroextend.c
index 9c3971f036a..5a74cbc5aba 100644
--- a/gcc/testsuite/gcc.target/aarch64/vec_zeroextend.c
+++ b/gcc/testsuite/gcc.target/aarch64/vec_zeroextend.c
@@ -3,17 +3,21 @@
#define vector __attribute__((vector_size(16) ))
+#define lowull (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ ? 1 : 0)
+#define lowui (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ ? 3 : 0)
+
+
vector unsigned long long
f1(vector unsigned long long b, vector unsigned int a)
{
- b[0] = a[0];
+ b[lowull] = a[lowui];
return b;
}
unsigned long long
f2(vector unsigned int a)
{
- return a[0];
+ return a[lowui];
}
/* { dg-final { scan-assembler-times {fmov} 2 } } */
--
2.17.1
More information about the Gcc-patches
mailing list