From a3ea9ab8d081dd33c816c9a18debec563280fc76 Mon Sep 17 00:00:00 2001 From: Alan Lawrence Date: Tue, 9 Sep 2014 14:03:17 +0000 Subject: [PATCH] [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 --- gcc/testsuite/ChangeLog | 4 + .../gcc.target/aarch64/vld1-vst1_1.c | 80 ++++++++++--------- 2 files changed, 47 insertions(+), 37 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 879d5b2ee80..4e2db2e69db 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2014-09-09 Alan Lawrence + + * gcc.target/aarch64/vld1-vst1_1.c: Rewrite to test all variants. + 2014-09-09 Alan Lawrence * gcc.target/aarch64/vldN_1.c: New test. diff --git a/gcc/testsuite/gcc.target/aarch64/vld1-vst1_1.c b/gcc/testsuite/gcc.target/aarch64/vld1-vst1_1.c index d1834a26470..290444e357f 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; } -- 2.30.2