aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.target/aarch64/vld1-vst1_1.c
blob: d1834a264708fe6ab901ac1a27544ca8ebb815cc (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
/* Test vld1 and vst1 maintain consistent indexing.  */
/* { dg-do run } */
/* { dg-options "-O3" } */
#include <arm_neon.h>

extern void abort (void);

int __attribute__ ((noinline))
test_vld1_vst1 ()
{
  int8x8_t a;
  int8x8_t b;
  int i = 0;
  int8_t c[8] = { 0, 1, 2, 3, 4, 5, 6, 7 };
  int8_t d[8];
  a = vld1_s8 (c);
  asm volatile ("":::"memory");
  vst1_s8 (d, a);
  asm volatile ("":::"memory");
  for (; i < 8; i++)
    if (c[i] != d[i])
      return 1;
  return 0;
}

int __attribute__ ((noinline))
test_vld1q_vst1q ()
{
  int16x8_t a;
  int16x8_t b;
  int i = 0;
  int16_t c[8] = { 0, 1, 2, 3, 4, 5, 6, 7 };
  int16_t d[8];
  a = vld1q_s16 (c);
  asm volatile ("":::"memory");
  vst1q_s16 (d, a);
  asm volatile ("":::"memory");
  for (; i < 8; i++)
    if (c[i] != d[i])
      return 1;
  return 0;
}

int
main ()
{
  if (test_vld1_vst1 ())
    abort ();
  if (test_vld1q_vst1q ())
    abort ();
  return 0;
}