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)
DEF(int16_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 }
66