1 /* { dg-do run } */
2 /* { dg-options "-O3" } */
3
4 extern void abort (void);
5
6 #include "stdint.h"
7 #include "vect-ld1r.x"
8
9 DEF (int8_t)
10 DEF (int16_t)
11 DEF (int32_t)
12 DEF (int64_t)
13
14 #define FOOD(TYPE) \
15 foo_ ## TYPE ## _d (&a_ ## TYPE, output_ ## TYPE)
16
17 #define FOOQ(TYPE) \
18 foo_ ## TYPE ## _q (&a_ ## TYPE, output_ ## TYPE)
19
20 #define CHECKD(TYPE) \
21 for (i = 0; i < 8 / sizeof (TYPE); i++) \
22 if (output_ ## TYPE[i] != a_ ## TYPE) \
23 abort ()
24
25 #define CHECKQ(TYPE) \
26 for (i = 0; i < 32 / sizeof (TYPE); i++) \
27 if (output_ ## TYPE[i] != a_ ## TYPE) \
28 abort ()
29
30 #define DECL(TYPE) \
31 TYPE output_ ## TYPE[32]; \
32 TYPE a_ ## TYPE = (TYPE)12
33
34 int
35 main (void)
36 {
37
38 DECL(int8_t);
39 DECL(int16_t);
40 DECL(int32_t);
41 DECL(int64_t);
42 int i;
43
44 FOOD (int8_t);
45 CHECKD (int8_t);
46 FOOQ (int8_t);
47 CHECKQ (int8_t);
48
49 FOOD (int16_t);
50 CHECKD (int16_t);
51 FOOQ (int16_t);
52 CHECKQ (int16_t);
53
54 FOOD (int32_t);
55 CHECKD (int32_t);
56 FOOQ (int32_t);
57 CHECKQ (int32_t);
58
59 FOOD (int64_t);
60 CHECKD (int64_t);
61 FOOQ (int64_t);
62 CHECKQ (int64_t);
63
64 return 0;
65 }