1 /* { dg-do compile } */
2 /* { dg-additional-options "-Wno-pedantic -Wno-long-long -m64" } */
4 /* Vector arg. Pass via pointer. */
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
;
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
;
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
;
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
;
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
;
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
;
36 /* { dg-final { scan-assembler-times ".extern .func dcl_avc1 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
38 /* { dg-final { scan-assembler-times ".extern .func dcl_avc2 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
40 /* { dg-final { scan-assembler-times ".extern .func dcl_avc4 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
42 /* { dg-final { scan-assembler-times ".extern .func dcl_avc8 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
45 /* { dg-final { scan-assembler-times ".extern .func dcl_avs1 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
47 /* { dg-final { scan-assembler-times ".extern .func dcl_avs2 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
49 /* { dg-final { scan-assembler-times ".extern .func dcl_avs4 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
51 /* { dg-final { scan-assembler-times ".extern .func dcl_avs8 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
54 /* { dg-final { scan-assembler-times ".extern .func dcl_avi1 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
56 /* { dg-final { scan-assembler-times ".extern .func dcl_avi2 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
58 /* { dg-final { scan-assembler-times ".extern .func dcl_avi4 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
60 /* { dg-final { scan-assembler-times ".extern .func dcl_avi8 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
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
);
72 /* { dg-final { scan-assembler-times ".extern .func dcl_avf1 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
74 /* { dg-final { scan-assembler-times ".extern .func dcl_avf2 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
76 /* { dg-final { scan-assembler-times ".extern .func dcl_avf4 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
78 /* { dg-final { scan-assembler-times ".extern .func dcl_avf8 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
81 /* { dg-final { scan-assembler-times ".extern .func dcl_avd1 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
83 /* { dg-final { scan-assembler-times ".extern .func dcl_avd2 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
85 /* { dg-final { scan-assembler-times ".extern .func dcl_avd4 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
87 /* { dg-final { scan-assembler-times ".extern .func dcl_avd8 \\(.param.u64 %\[_a-z0-9\]*\\);" 1 } } */
90 #define M(T, V) ({T t;t[0]= V;t;})
94 dcl_avc1 (M (vc1
, 1));
95 dcl_avc2 (M (vc2
, 2));
96 dcl_avc4 (M (vc4
, 3));
97 dcl_avc8 (M (vc8
, 4));
99 dcl_avs1 (M (vs1
, 5));
100 dcl_avs2 (M (vs2
, 6));
101 dcl_avs4 (M (vs4
, 7));
102 dcl_avs8 (M (vs8
, 8));
104 dcl_avi1 (M (vi1
, 9));
105 dcl_avi2 (M (vi2
, 10));
106 dcl_avi4 (M (vi4
, 11));
107 dcl_avi8 (M (vi8
, 12));
109 dcl_avll1 (M (vll1
, 13));
110 dcl_avll2 (M (vll2
, 14));
111 dcl_avll4 (M (vll4
, 15));
112 dcl_avll8 (M (vll8
, 16));
114 dcl_avf1 (M (vf1
, 17));
115 dcl_avf2 (M (vf2
, 18));
116 dcl_avf4 (M (vf4
, 19));
117 dcl_avf8 (M (vf8
, 20));
119 dcl_avd1 (M (vd1
, 21));
120 dcl_avd2 (M (vd2
, 22));
121 dcl_avd4 (M (vd4
, 23));
122 dcl_avd8 (M (vd8
, 24));
125 /* { dg-final { scan-assembler-times ".visible .func dfn_avc1 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
129 /* { dg-final { scan-assembler-times ".visible .func dfn_avc2 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
133 /* { dg-final { scan-assembler-times ".visible .func dfn_avc4 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
137 /* { dg-final { scan-assembler-times ".visible .func dfn_avc8 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
142 /* { dg-final { scan-assembler-times ".visible .func dfn_avs1 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
146 /* { dg-final { scan-assembler-times ".visible .func dfn_avs2 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
150 /* { dg-final { scan-assembler-times ".visible .func dfn_avs4 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
154 /* { dg-final { scan-assembler-times ".visible .func dfn_avs8 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
159 /* { dg-final { scan-assembler-times ".visible .func dfn_avi1 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
163 /* { dg-final { scan-assembler-times ".visible .func dfn_avi2 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
167 /* { dg-final { scan-assembler-times ".visible .func dfn_avi4 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
171 /* { dg-final { scan-assembler-times ".visible .func dfn_avi8 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
176 /* { dg-final { scan-assembler-times ".visible .func dfn_avll1 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
177 void dfn_avll1(vll1 a
)
180 /* { dg-final { scan-assembler-times ".visible .func dfn_avll2 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
181 void dfn_avll2(vll2 a
)
184 /* { dg-final { scan-assembler-times ".visible .func dfn_avll4 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
185 void dfn_avll4(vll4 a
)
188 /* { dg-final { scan-assembler-times ".visible .func dfn_avll8 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
189 void dfn_avll8(vll8 a
)
193 /* { dg-final { scan-assembler-times ".visible .func dfn_avf1 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
197 /* { dg-final { scan-assembler-times ".visible .func dfn_avf2 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
201 /* { dg-final { scan-assembler-times ".visible .func dfn_avf4 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
205 /* { dg-final { scan-assembler-times ".visible .func dfn_avf8 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
210 /* { dg-final { scan-assembler-times ".visible .func dfn_avd1 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
214 /* { dg-final { scan-assembler-times ".visible .func dfn_avd2 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
218 /* { dg-final { scan-assembler-times ".visible .func dfn_avd4 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */
222 /* { dg-final { scan-assembler-times ".visible .func dfn_avd8 \\(.param.u64 %\[_a-z0-9\]*\\)(?:;|\[\r\n\]+\{)" 2 } } */