1 /* Test vld1 and vst1 maintain consistent indexing. */
3 /* { dg-options "-O3" } */
6 extern void abort (void);
8 #define TESTMETH(TYPE, NUM, BASETYPE, SUFFIX) \
9 int __attribute__ ((noinline)) \
10 test_vld1_vst1##SUFFIX () \
16 for (i = 0; i < NUM; i++) \
18 asm volatile ("":::"memory"); \
19 vec = vld1 ## SUFFIX (src); \
20 asm volatile ("":::"memory"); \
21 vst1 ## SUFFIX (dest, vec); \
22 asm volatile ("":::"memory"); \
23 for (i = 0; i < NUM; i++) \
24 if (src[i] != dest[i]) \
29 #define VARIANTS(THING) \
30 THING (int8x8_t, 8, int8_t, _s8) \
31 THING (uint8x8_t, 8, uint8_t, _u8) \
32 THING (int16x4_t, 4, int16_t, _s16) \
33 THING (uint16x4_t, 4, uint16_t, _u16) \
34 THING (float16x4_t, 4, float16_t, _f16) \
35 THING (int32x2_t, 2, int32_t, _s32) \
36 THING (uint32x2_t, 2, uint32_t, _u32) \
37 THING (float32x2_t, 2, float32_t, _f32) \
38 THING (int8x16_t, 16, int8_t, q_s8) \
39 THING (uint8x16_t, 16, uint8_t, q_u8) \
40 THING (int16x8_t, 8, int16_t, q_s16) \
41 THING (uint16x8_t, 8, uint16_t, q_u16) \
42 THING (float16x8_t, 8, float16_t, q_f16)\
43 THING (int32x4_t, 4, int32_t, q_s32) \
44 THING (uint32x4_t, 4, uint32_t, q_u32) \
45 THING (float32x4_t, 4, float32_t, q_f32)\
46 THING (int64x2_t, 2, int64_t, q_s64) \
47 THING (uint64x2_t, 2, uint64_t, q_u64) \
48 THING (float64x2_t, 2, float64_t, q_f64)
52 #define DOTEST(TYPE, NUM, BASETYPE, SUFFIX) \
53 if (test_vld1_vst1##SUFFIX ()) \