summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/powerpc/vsx-elemrev-3.c
blob: 2888c171c4fc7bcf4007c2ffa5d4ab2911027b9f (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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/* { dg-do compile { target { powerpc64-*-* } } } */
/* { dg-skip-if "do not override mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
/* { dg-options "-mcpu=power8 -O0" } */
/* { dg-final { scan-assembler-times "lxvd2x" 16 } } */
/* { dg-final { scan-assembler-times "lxvw4x" 8 } } */
/* { dg-final { scan-assembler-times "stxvd2x" 16 } } */
/* { dg-final { scan-assembler-times "stxvw4x" 8 } } */

#include <altivec.h>

extern vector double vd, *vdp;
extern vector signed long long vsll, *vsllp;
extern vector unsigned long long vull, *vullp;
extern vector float vf, *vfp;
extern vector signed int vsi, *vsip;
extern vector unsigned int vui, *vuip;
extern double *dp;
extern signed long long *sllp;
extern unsigned long long *ullp;
extern float *fp;
extern signed int *sip;
extern unsigned int *uip;

void foo0 (void)
{
  vd = vec_xl (0, vdp);
}

void foo1 (void)
{
  vsll = vec_xl (0, vsllp);
}

void foo2 (void)
{
  vull = vec_xl (0, vullp);
}

void foo3 (void)
{
  vf = vec_xl (0, vfp);
}

void foo4 (void)
{
  vsi = vec_xl (0, vsip);
}

void foo5 (void)
{
  vui = vec_xl (0, vuip);
}

void foo6 (void)
{
  vec_xst (vd, 0, vdp);
}

void foo7 (void)
{
  vec_xst (vsll, 0, vsllp);
}

void foo8 (void)
{
  vec_xst (vull, 0, vullp);
}

void foo9 (void)
{
  vec_xst (vf, 0, vfp);
}

void foo10 (void)
{
  vec_xst (vsi, 0, vsip);
}

void foo11 (void)
{
  vec_xst (vui, 0, vuip);
}

void foo20 (void)
{
  vd = vec_xl (0, dp);
}

void foo21 (void)
{
  vsll = vec_xl (0, sllp);
}

void foo22 (void)
{
  vull = vec_xl (0, ullp);
}

void foo23 (void)
{
  vf = vec_xl (0, fp);
}

void foo24 (void)
{
  vsi = vec_xl (0, sip);
}

void foo25 (void)
{
  vui = vec_xl (0, uip);
}

void foo26 (void)
{
  vec_xst (vd, 0, dp);
}

void foo27 (void)
{
  vec_xst (vsll, 0, sllp);
}

void foo28 (void)
{
  vec_xst (vull, 0, ullp);
}

void foo29 (void)
{
  vec_xst (vf, 0, fp);
}

void foo30 (void)
{
  vec_xst (vsi, 0, sip);
}

void foo31 (void)
{
  vec_xst (vui, 0, uip);
}