1 /* { dg-do compile } */
2 /* { dg-additional-options "-Wno-pedantic -Wno-long-long -m64" } */
3 
4 /* Vector arg.  Pass via pointer.  */
5 
6 typedef char __attribute__ ((vector_size (1))) vc1;
7 typedef char __attribute__ ((vector_size (2))) vc2;
8 typedef char __attribute__ ((vector_size (4))) vc4;
9 typedef char __attribute__ ((vector_size (8))) vc8;
10 
11 typedef short __attribute__ ((vector_size (2))) vs1;
12 typedef short __attribute__ ((vector_size (4))) vs2;
13 typedef short __attribute__ ((vector_size (8))) vs4;
14 typedef short __attribute__ ((vector_size (16))) vs8;
15 
16 typedef int __attribute__ ((vector_size (4))) vi1;
17 typedef int __attribute__ ((vector_size (8))) vi2;
18 typedef int __attribute__ ((vector_size (16))) vi4;
19 typedef int __attribute__ ((vector_size (32))) vi8;
20 
21 typedef long long __attribute__ ((vector_size (8))) vll1;
22 typedef long long __attribute__ ((vector_size (16))) vll2;
23 typedef long long __attribute__ ((vector_size (32))) vll4;
24 typedef long long __attribute__ ((vector_size (64))) vll8;
25 
26 typedef float __attribute__ ((vector_size (4))) vf1;
27 typedef float __attribute__ ((vector_size (8))) vf2;
28 typedef float __attribute__ ((vector_size (16))) vf4;
29 typedef float __attribute__ ((vector_size (32))) vf8;
30 
31 typedef double __attribute__ ((vector_size (8))) vd1;
32 typedef double __attribute__ ((vector_size (16))) vd2;
33 typedef double __attribute__ ((vector_size (32))) vd4;
34 typedef double __attribute__ ((vector_size (64))) vd8;
35 
36 /* { dg-final { scan-assembler-times ".extern .func dcl_avc1 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
37 void dcl_avc1 (vc1);
38 /* { dg-final { scan-assembler-times ".extern .func dcl_avc2 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
39 void dcl_avc2 (vc2);
40 /* { dg-final { scan-assembler-times ".extern .func dcl_avc4 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
41 void dcl_avc4 (vc4);
42 /* { dg-final { scan-assembler-times ".extern .func dcl_avc8 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
43 void dcl_avc8 (vc8);
44 
45 /* { dg-final { scan-assembler-times ".extern .func dcl_avs1 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
46 void dcl_avs1 (vs1);
47 /* { dg-final { scan-assembler-times ".extern .func dcl_avs2 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
48 void dcl_avs2 (vs2);
49 /* { dg-final { scan-assembler-times ".extern .func dcl_avs4 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
50 void dcl_avs4 (vs4);
51 /* { dg-final { scan-assembler-times ".extern .func dcl_avs8 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
52 void dcl_avs8 (vs8);
53 
54 /* { dg-final { scan-assembler-times ".extern .func dcl_avi1 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
55 void dcl_avi1 (vi1);
56 /* { dg-final { scan-assembler-times ".extern .func dcl_avi2 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
57 void dcl_avi2 (vi2);
58 /* { dg-final { scan-assembler-times ".extern .func dcl_avi4 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
59 void dcl_avi4 (vi4);
60 /* { dg-final { scan-assembler-times ".extern .func dcl_avi8 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
61 void dcl_avi8 (vi8);
62 
63 /* { dg-final { scan-assembler-times ".extern .func dcl_avll1 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
64 void dcl_avll1 (vll1);
65 /* { dg-final { scan-assembler-times ".extern .func dcl_avll2 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
66 void dcl_avll2 (vll2);
67 /* { dg-final { scan-assembler-times ".extern .func dcl_avll4 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
68 void dcl_avll4 (vll4);
69 /* { dg-final { scan-assembler-times ".extern .func dcl_avll8 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
70 void dcl_avll8 (vll8);
71 
72 /* { dg-final { scan-assembler-times ".extern .func dcl_avf1 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
73 void dcl_avf1 (vf1);
74 /* { dg-final { scan-assembler-times ".extern .func dcl_avf2 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
75 void dcl_avf2 (vf2);
76 /* { dg-final { scan-assembler-times ".extern .func dcl_avf4 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
77 void dcl_avf4 (vf4);
78 /* { dg-final { scan-assembler-times ".extern .func dcl_avf8 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
79 void dcl_avf8 (vf8);
80 
81 /* { dg-final { scan-assembler-times ".extern .func dcl_avd1 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
82 void dcl_avd1 (vd1);
83 /* { dg-final { scan-assembler-times ".extern .func dcl_avd2 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
84 void dcl_avd2 (vd2);
85 /* { dg-final { scan-assembler-times ".extern .func dcl_avd4 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
86 void dcl_avd4 (vd4);
87 /* { dg-final { scan-assembler-times ".extern .func dcl_avd8 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
88 void dcl_avd8 (vd8);
89 
90 #define M(T, V) ({T t;t[0]= V;t;})
91 
test_1(void)92 void  test_1 (void)
93 {
94   dcl_avc1 (M (vc1, 1));
95   dcl_avc2 (M (vc2, 2));
96   dcl_avc4 (M (vc4, 3));
97   dcl_avc8 (M (vc8, 4));
98 
99   dcl_avs1 (M (vs1, 5));
100   dcl_avs2 (M (vs2, 6));
101   dcl_avs4 (M (vs4, 7));
102   dcl_avs8 (M (vs8, 8));
103 
104   dcl_avi1 (M (vi1, 9));
105   dcl_avi2 (M (vi2, 10));
106   dcl_avi4 (M (vi4, 11));
107   dcl_avi8 (M (vi8, 12));
108 
109   dcl_avll1 (M (vll1, 13));
110   dcl_avll2 (M (vll2, 14));
111   dcl_avll4 (M (vll4, 15));
112   dcl_avll8 (M (vll8, 16));
113 
114   dcl_avf1 (M (vf1, 17));
115   dcl_avf2 (M (vf2, 18));
116   dcl_avf4 (M (vf4, 19));
117   dcl_avf8 (M (vf8, 20));
118 
119   dcl_avd1 (M (vd1, 21));
120   dcl_avd2 (M (vd2, 22));
121   dcl_avd4 (M (vd4, 23));
122   dcl_avd8 (M (vd8, 24));
123 }
124 
125 /* { dg-final { scan-assembler-times ".visible .func dfn_avc1 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avc1(vc1 a)126 void dfn_avc1(vc1 a)
127 {
128 }
129 /* { dg-final { scan-assembler-times ".visible .func dfn_avc2 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avc2(vc2 a)130 void dfn_avc2(vc2 a)
131 {
132 }
133 /* { dg-final { scan-assembler-times ".visible .func dfn_avc4 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avc4(vc4 a)134 void dfn_avc4(vc4 a)
135 {
136 }
137 /* { dg-final { scan-assembler-times ".visible .func dfn_avc8 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avc8(vc8 a)138 void dfn_avc8(vc8 a)
139 {
140 }
141 
142 /* { dg-final { scan-assembler-times ".visible .func dfn_avs1 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avs1(vs1 a)143 void dfn_avs1(vs1 a)
144 {
145 }
146 /* { dg-final { scan-assembler-times ".visible .func dfn_avs2 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avs2(vs2 a)147 void dfn_avs2(vs2 a)
148 {
149 }
150 /* { dg-final { scan-assembler-times ".visible .func dfn_avs4 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avs4(vs4 a)151 void dfn_avs4(vs4 a)
152 {
153 }
154 /* { dg-final { scan-assembler-times ".visible .func dfn_avs8 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avs8(vs8 a)155 void dfn_avs8(vs8 a)
156 {
157 }
158 
159 /* { dg-final { scan-assembler-times ".visible .func dfn_avi1 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avi1(vi1 a)160 void dfn_avi1(vi1 a)
161 {
162 }
163 /* { dg-final { scan-assembler-times ".visible .func dfn_avi2 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avi2(vi2 a)164 void dfn_avi2(vi2 a)
165 {
166 }
167 /* { dg-final { scan-assembler-times ".visible .func dfn_avi4 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avi4(vi4 a)168 void dfn_avi4(vi4 a)
169 {
170 }
171 /* { dg-final { scan-assembler-times ".visible .func dfn_avi8 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avi8(vi8 a)172 void dfn_avi8(vi8 a)
173 {
174 }
175 
176 /* { dg-final { scan-assembler-times ".visible .func dfn_avll1 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avll1(vll1 a)177 void dfn_avll1(vll1 a)
178 {
179 }
180 /* { dg-final { scan-assembler-times ".visible .func dfn_avll2 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avll2(vll2 a)181 void dfn_avll2(vll2 a)
182 {
183 }
184 /* { dg-final { scan-assembler-times ".visible .func dfn_avll4 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avll4(vll4 a)185 void dfn_avll4(vll4 a)
186 {
187 }
188 /* { dg-final { scan-assembler-times ".visible .func dfn_avll8 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avll8(vll8 a)189 void dfn_avll8(vll8 a)
190 {
191 }
192 
193 /* { dg-final { scan-assembler-times ".visible .func dfn_avf1 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avf1(vf1 a)194 void dfn_avf1(vf1 a)
195 {
196 }
197 /* { dg-final { scan-assembler-times ".visible .func dfn_avf2 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avf2(vf2 a)198 void dfn_avf2(vf2 a)
199 {
200 }
201 /* { dg-final { scan-assembler-times ".visible .func dfn_avf4 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avf4(vf4 a)202 void dfn_avf4(vf4 a)
203 {
204 }
205 /* { dg-final { scan-assembler-times ".visible .func dfn_avf8 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avf8(vf8 a)206 void dfn_avf8(vf8 a)
207 {
208 }
209 
210 /* { dg-final { scan-assembler-times ".visible .func dfn_avd1 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avd1(vd1 a)211 void dfn_avd1(vd1 a)
212 {
213 }
214 /* { dg-final { scan-assembler-times ".visible .func dfn_avd2 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avd2(vd2 a)215 void dfn_avd2(vd2 a)
216 {
217 }
218 /* { dg-final { scan-assembler-times ".visible .func dfn_avd4 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avd4(vd4 a)219 void dfn_avd4(vd4 a)
220 {
221 }
222 /* { dg-final { scan-assembler-times ".visible .func dfn_avd8 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
dfn_avd8(vd8 a)223 void dfn_avd8(vd8 a)
224 {
225 }
226