aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vect-ld1r.c
blob: f0571de9f05597d6669368f847be1830223a5036 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/* { dg-do run } */
/* { dg-options "-O3" } */

extern void abort (void);

#include "stdint.h"
#include "vect-ld1r.x"

DEF (int8_t)
DEF (int16_t)
DEF (int32_t)
DEF (int64_t)

#define FOOD(TYPE) \
  foo_ ## TYPE ## _d (&a_ ## TYPE, output_ ## TYPE)

#define FOOQ(TYPE) \
  foo_ ## TYPE ## _q (&a_ ## TYPE, output_ ## TYPE)

#define CHECKD(TYPE) \
  for (i = 0; i < 8 / sizeof (TYPE); i++) \
    if (output_ ## TYPE[i] != a_ ## TYPE) \
      abort ()

#define CHECKQ(TYPE) \
  for (i = 0; i < 32 / sizeof (TYPE); i++) \
    if (output_ ## TYPE[i] != a_ ## TYPE) \
      abort ()

#define DECL(TYPE) \
  TYPE output_ ## TYPE[32]; \
  TYPE a_ ## TYPE = (TYPE)12

int
main (void)
{

  DECL(int8_t);
  DECL(int16_t);
  DECL(int32_t);
  DECL(int64_t);
  int i;

  FOOD (int8_t);
  CHECKD (int8_t);
  FOOQ (int8_t);
  CHECKQ (int8_t);

  FOOD (int16_t);
  CHECKD (int16_t);
  FOOQ (int16_t);
  CHECKQ (int16_t);

  FOOD (int32_t);
  CHECKD (int32_t);
  FOOQ (int32_t);
  CHECKQ (int32_t);

  FOOD (int64_t);
  CHECKD (int64_t);
  FOOQ (int64_t);
  CHECKQ (int64_t);

  return 0;
}