aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlan Lawrence <alan.lawrence@arm.com>2014-09-09 14:03:17 +0000
committerAlan Lawrence <alalaw01@gcc.gnu.org>2014-09-09 14:03:17 +0000
commita3ea9ab8d081dd33c816c9a18debec563280fc76 (patch)
tree612536bee64e7f0f46ff7c1d1aa33966258dab6b /gcc
parentba6fdd828d8525f97835169e5b91fe9c7c5d6bc2 (diff)
downloadgcc-a3ea9ab8d081dd33c816c9a18debec563280fc76.zip
gcc-a3ea9ab8d081dd33c816c9a18debec563280fc76.tar.gz
gcc-a3ea9ab8d081dd33c816c9a18debec563280fc76.tar.bz2
[AArch64 Testsuite] Extend test of vld1+vst1 intrinsics to cover more variants
* gcc.target/aarch64/vld1-vst1_1.c: Rewrite to test all variants. From-SVN: r215077
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.target/aarch64/vld1-vst1_1.c80
2 files changed, 47 insertions, 37 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 879d5b2..4e2db2e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,9 @@
2014-09-09 Alan Lawrence <alan.lawrence@arm.com>
+ * gcc.target/aarch64/vld1-vst1_1.c: Rewrite to test all variants.
+
+2014-09-09 Alan Lawrence <alan.lawrence@arm.com>
+
* gcc.target/aarch64/vldN_1.c: New test.
2014-09-09 Alan Lawrence <alan.lawrence@arm.com>
diff --git a/gcc/testsuite/gcc.target/aarch64/vld1-vst1_1.c b/gcc/testsuite/gcc.target/aarch64/vld1-vst1_1.c
index d1834a2..290444e 100644
--- a/gcc/testsuite/gcc.target/aarch64/vld1-vst1_1.c
+++ b/gcc/testsuite/gcc.target/aarch64/vld1-vst1_1.c
@@ -5,48 +5,54 @@
extern void abort (void);
-int __attribute__ ((noinline))
-test_vld1_vst1 ()
-{
- int8x8_t a;
- int8x8_t b;
- int i = 0;
- int8_t c[8] = { 0, 1, 2, 3, 4, 5, 6, 7 };
- int8_t d[8];
- a = vld1_s8 (c);
- asm volatile ("":::"memory");
- vst1_s8 (d, a);
- asm volatile ("":::"memory");
- for (; i < 8; i++)
- if (c[i] != d[i])
- return 1;
- return 0;
+#define TESTMETH(TYPE, NUM, BASETYPE, SUFFIX) \
+int __attribute__ ((noinline)) \
+test_vld1_vst1##SUFFIX () \
+{ \
+ TYPE vec; \
+ int i = 0; \
+ BASETYPE src[NUM]; \
+ BASETYPE dest[NUM]; \
+ for (i = 0; i < NUM; i++) \
+ src[i] = 2*i + 1; \
+ asm volatile ("":::"memory"); \
+ vec = vld1 ## SUFFIX (src); \
+ asm volatile ("":::"memory"); \
+ vst1 ## SUFFIX (dest, vec); \
+ asm volatile ("":::"memory"); \
+ for (i = 0; i < NUM; i++) \
+ if (src[i] != dest[i]) \
+ return 1; \
+ return 0; \
}
-int __attribute__ ((noinline))
-test_vld1q_vst1q ()
-{
- int16x8_t a;
- int16x8_t b;
- int i = 0;
- int16_t c[8] = { 0, 1, 2, 3, 4, 5, 6, 7 };
- int16_t d[8];
- a = vld1q_s16 (c);
- asm volatile ("":::"memory");
- vst1q_s16 (d, a);
- asm volatile ("":::"memory");
- for (; i < 8; i++)
- if (c[i] != d[i])
- return 1;
- return 0;
-}
+#define VARIANTS(THING) \
+THING (int8x8_t, 8, int8_t, _s8) \
+THING (uint8x8_t, 8, uint8_t, _u8) \
+THING (int16x4_t, 4, int16_t, _s16) \
+THING (uint16x4_t, 4, uint16_t, _u16) \
+THING (int32x2_t, 2, int32_t, _s32) \
+THING (uint32x2_t, 2, uint32_t, _u32) \
+THING (float32x2_t, 2, float32_t, _f32) \
+THING (int8x16_t, 16, int8_t, q_s8) \
+THING (uint8x16_t, 16, uint8_t, q_u8) \
+THING (int16x8_t, 8, int16_t, q_s16) \
+THING (uint16x8_t, 8, uint16_t, q_u16) \
+THING (int32x4_t, 4, int32_t, q_s32) \
+THING (uint32x4_t, 4, uint32_t, q_u32) \
+THING (int64x2_t, 2, int64_t, q_s64) \
+THING (uint64x2_t, 2, uint64_t, q_u64) \
+THING (float64x2_t, 2, float64_t, q_f64)
+
+VARIANTS (TESTMETH)
+
+#define DOTEST(TYPE, NUM, BASETYPE, SUFFIX) \
+ if (test_vld1_vst1##SUFFIX ()) \
+ abort ();
int
main ()
{
- if (test_vld1_vst1 ())
- abort ();
- if (test_vld1q_vst1q ())
- abort ();
+ VARIANTS (DOTEST);
return 0;
}