Commit a3ea9ab8 by Alan Lawrence Committed by Alan Lawrence

[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
parent ba6fdd82
2014-09-09 Alan Lawrence <alan.lawrence@arm.com> 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. * gcc.target/aarch64/vldN_1.c: New test.
2014-09-09 Alan Lawrence <alan.lawrence@arm.com> 2014-09-09 Alan Lawrence <alan.lawrence@arm.com>
......
...@@ -5,48 +5,54 @@ ...@@ -5,48 +5,54 @@
extern void abort (void); extern void abort (void);
int __attribute__ ((noinline)) #define TESTMETH(TYPE, NUM, BASETYPE, SUFFIX) \
test_vld1_vst1 () int __attribute__ ((noinline)) \
{ test_vld1_vst1##SUFFIX () \
int8x8_t a; { \
int8x8_t b; TYPE vec; \
int i = 0; int i = 0; \
int8_t c[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; BASETYPE src[NUM]; \
int8_t d[8]; BASETYPE dest[NUM]; \
a = vld1_s8 (c); for (i = 0; i < NUM; i++) \
asm volatile ("":::"memory"); src[i] = 2*i + 1; \
vst1_s8 (d, a); asm volatile ("":::"memory"); \
asm volatile ("":::"memory"); vec = vld1 ## SUFFIX (src); \
for (; i < 8; i++) asm volatile ("":::"memory"); \
if (c[i] != d[i]) vst1 ## SUFFIX (dest, vec); \
return 1; asm volatile ("":::"memory"); \
return 0; for (i = 0; i < NUM; i++) \
if (src[i] != dest[i]) \
return 1; \
return 0; \
} }
int __attribute__ ((noinline)) #define VARIANTS(THING) \
test_vld1q_vst1q () THING (int8x8_t, 8, int8_t, _s8) \
{ THING (uint8x8_t, 8, uint8_t, _u8) \
int16x8_t a; THING (int16x4_t, 4, int16_t, _s16) \
int16x8_t b; THING (uint16x4_t, 4, uint16_t, _u16) \
int i = 0; THING (int32x2_t, 2, int32_t, _s32) \
int16_t c[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; THING (uint32x2_t, 2, uint32_t, _u32) \
int16_t d[8]; THING (float32x2_t, 2, float32_t, _f32) \
a = vld1q_s16 (c); THING (int8x16_t, 16, int8_t, q_s8) \
asm volatile ("":::"memory"); THING (uint8x16_t, 16, uint8_t, q_u8) \
vst1q_s16 (d, a); THING (int16x8_t, 8, int16_t, q_s16) \
asm volatile ("":::"memory"); THING (uint16x8_t, 8, uint16_t, q_u16) \
for (; i < 8; i++) THING (int32x4_t, 4, int32_t, q_s32) \
if (c[i] != d[i]) THING (uint32x4_t, 4, uint32_t, q_u32) \
return 1; THING (int64x2_t, 2, int64_t, q_s64) \
return 0; 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 int
main () main ()
{ {
if (test_vld1_vst1 ()) VARIANTS (DOTEST);
abort ();
if (test_vld1q_vst1q ())
abort ();
return 0; return 0;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment