1 /* { dg-do compile { target { powerpc*-*-linux* } } } */
2 /* { dg-skip-if "" { powerpc*-*-darwin* } } */
3 /* { dg-require-effective-target powerpc_vsx_ok } */
4 /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */
5 /* { dg-options "-O3 -ftree-vectorize -mcpu=power7 -ffast-math -mveclibabi=mass" } */
6 /* { dg-final { scan-assembler "bl\[\\. \]+atan2d2" } } */
7 /* { dg-final { scan-assembler "bl\[\\. \]+atan2f4" } } */
8 /* { dg-final { scan-assembler "bl\[\\. \]+hypotd2" } } */
9 /* { dg-final { scan-assembler "bl\[\\. \]+hypotf4" } } */
10 /* { dg-final { scan-assembler "bl\[\\. \]+powd2" } } */
11 /* { dg-final { scan-assembler "bl\[\\. \]+powf4" } } */
12 /* { dg-final { scan-assembler "bl\[\\. \]+acosd2" } } */
13 /* { dg-final { scan-assembler "bl\[\\. \]+acosf4" } } */
14 /* { dg-final { scan-assembler "bl\[\\. \]+acoshd2" } } */
15 /* { dg-final { scan-assembler "bl\[\\. \]+acoshf4" } } */
16 /* { dg-final { scan-assembler "bl\[\\. \]+asind2" } } */
17 /* { dg-final { scan-assembler "bl\[\\. \]+asinf4" } } */
18 /* { dg-final { scan-assembler "bl\[\\. \]+asinhd2" } } */
19 /* { dg-final { scan-assembler "bl\[\\. \]+asinhf4" } } */
20 /* { dg-final { scan-assembler "bl\[\\. \]+atand2" } } */
21 /* { dg-final { scan-assembler "bl\[\\. \]+atanf4" } } */
22 /* { dg-final { scan-assembler "bl\[\\. \]+atanhd2" } } */
23 /* { dg-final { scan-assembler "bl\[\\. \]+atanhf4" } } */
24 /* { dg-final { scan-assembler "bl\[\\. \]+cbrtd2" } } */
25 /* { dg-final { scan-assembler "bl\[\\. \]+cbrtf4" } } */
26 /* { dg-final { scan-assembler "bl\[\\. \]+cosd2" } } */
27 /* { dg-final { scan-assembler "bl\[\\. \]+cosf4" } } */
28 /* { dg-final { scan-assembler "bl\[\\. \]+coshd2" } } */
29 /* { dg-final { scan-assembler "bl\[\\. \]+coshf4" } } */
30 /* { dg-final { scan-assembler "bl\[\\. \]+erfd2" } } */
31 /* { dg-final { scan-assembler "bl\[\\. \]+erff4" } } */
32 /* { dg-final { scan-assembler "bl\[\\. \]+erfcd2" } } */
33 /* { dg-final { scan-assembler "bl\[\\. \]+erfcf4" } } */
34 /* { dg-final { scan-assembler "bl\[\\. \]+exp2d2" } } */
35 /* { dg-final { scan-assembler "bl\[\\. \]+exp2f4" } } */
36 /* { dg-final { scan-assembler "bl\[\\. \]+expd2" } } */
37 /* { dg-final { scan-assembler "bl\[\\. \]+expf4" } } */
38 /* { dg-final { scan-assembler "bl\[\\. \]+expm1d2" } } */
39 /* { dg-final { scan-assembler "bl\[\\. \]+expm1f4" } } */
40 /* { dg-final { scan-assembler "bl\[\\. \]+lgamma" } } */
41 /* { dg-final { scan-assembler "bl\[\\. \]+lgammaf" } } */
42 /* { dg-final { scan-assembler "bl\[\\. \]+log10d2" } } */
43 /* { dg-final { scan-assembler "bl\[\\. \]+log10f4" } } */
44 /* { dg-final { scan-assembler "bl\[\\. \]+log1pd2" } } */
45 /* { dg-final { scan-assembler "bl\[\\. \]+log1pf4" } } */
46 /* { dg-final { scan-assembler "bl\[\\. \]+log2d2" } } */
47 /* { dg-final { scan-assembler "bl\[\\. \]+log2f4" } } */
48 /* { dg-final { scan-assembler "bl\[\\. \]+logd2" } } */
49 /* { dg-final { scan-assembler "bl\[\\. \]+logf4" } } */
50 /* { dg-final { scan-assembler "bl\[\\. \]+sind2" } } */
51 /* { dg-final { scan-assembler "bl\[\\. \]+sinf4" } } */
52 /* { dg-final { scan-assembler "bl\[\\. \]+sinhd2" } } */
53 /* { dg-final { scan-assembler "bl\[\\. \]+sinhf4" } } */
54 /* { dg-final { scan-assembler "bl\[\\. \]+tand2" } } */
55 /* { dg-final { scan-assembler "bl\[\\. \]+tanf4" } } */
56 /* { dg-final { scan-assembler "bl\[\\. \]+tanhd2" } } */
57 /* { dg-final { scan-assembler "bl\[\\. \]+tanhf4" } } */
58 
59 #ifndef SIZE
60 #define SIZE 1024
61 #endif
62 
63 double d1[SIZE] __attribute__((__aligned__(32)));
64 double d2[SIZE] __attribute__((__aligned__(32)));
65 double d3[SIZE] __attribute__((__aligned__(32)));
66 
67 float f1[SIZE] __attribute__((__aligned__(32)));
68 float f2[SIZE] __attribute__((__aligned__(32)));
69 float f3[SIZE] __attribute__((__aligned__(32)));
70 
71 void
test_double_atan2(void)72 test_double_atan2 (void)
73 {
74   int i;
75 
76   for (i = 0; i < SIZE; i++)
77     d1[i] = __builtin_atan2 (d2[i], d3[i]);
78 }
79 
80 void
test_float_atan2(void)81 test_float_atan2 (void)
82 {
83   int i;
84 
85   for (i = 0; i < SIZE; i++)
86     f1[i] = __builtin_atan2f (f2[i], f3[i]);
87 }
88 
89 void
test_double_hypot(void)90 test_double_hypot (void)
91 {
92   int i;
93 
94   for (i = 0; i < SIZE; i++)
95     d1[i] = __builtin_hypot (d2[i], d3[i]);
96 }
97 
98 void
test_float_hypot(void)99 test_float_hypot (void)
100 {
101   int i;
102 
103   for (i = 0; i < SIZE; i++)
104     f1[i] = __builtin_hypotf (f2[i], f3[i]);
105 }
106 
107 void
test_double_pow(void)108 test_double_pow (void)
109 {
110   int i;
111 
112   for (i = 0; i < SIZE; i++)
113     d1[i] = __builtin_pow (d2[i], d3[i]);
114 }
115 
116 void
test_float_pow(void)117 test_float_pow (void)
118 {
119   int i;
120 
121   for (i = 0; i < SIZE; i++)
122     f1[i] = __builtin_powf (f2[i], f3[i]);
123 }
124 
125 void
test_double_acos(void)126 test_double_acos (void)
127 {
128   int i;
129 
130   for (i = 0; i < SIZE; i++)
131     d1[i] = __builtin_acos (d2[i]);
132 }
133 
134 void
test_float_acos(void)135 test_float_acos (void)
136 {
137   int i;
138 
139   for (i = 0; i < SIZE; i++)
140     f1[i] = __builtin_acosf (f2[i]);
141 }
142 
143 void
test_double_acosh(void)144 test_double_acosh (void)
145 {
146   int i;
147 
148   for (i = 0; i < SIZE; i++)
149     d1[i] = __builtin_acosh (d2[i]);
150 }
151 
152 void
test_float_acosh(void)153 test_float_acosh (void)
154 {
155   int i;
156 
157   for (i = 0; i < SIZE; i++)
158     f1[i] = __builtin_acoshf (f2[i]);
159 }
160 
161 void
test_double_asin(void)162 test_double_asin (void)
163 {
164   int i;
165 
166   for (i = 0; i < SIZE; i++)
167     d1[i] = __builtin_asin (d2[i]);
168 }
169 
170 void
test_float_asin(void)171 test_float_asin (void)
172 {
173   int i;
174 
175   for (i = 0; i < SIZE; i++)
176     f1[i] = __builtin_asinf (f2[i]);
177 }
178 
179 void
test_double_asinh(void)180 test_double_asinh (void)
181 {
182   int i;
183 
184   for (i = 0; i < SIZE; i++)
185     d1[i] = __builtin_asinh (d2[i]);
186 }
187 
188 void
test_float_asinh(void)189 test_float_asinh (void)
190 {
191   int i;
192 
193   for (i = 0; i < SIZE; i++)
194     f1[i] = __builtin_asinhf (f2[i]);
195 }
196 
197 void
test_double_atan(void)198 test_double_atan (void)
199 {
200   int i;
201 
202   for (i = 0; i < SIZE; i++)
203     d1[i] = __builtin_atan (d2[i]);
204 }
205 
206 void
test_float_atan(void)207 test_float_atan (void)
208 {
209   int i;
210 
211   for (i = 0; i < SIZE; i++)
212     f1[i] = __builtin_atanf (f2[i]);
213 }
214 
215 void
test_double_atanh(void)216 test_double_atanh (void)
217 {
218   int i;
219 
220   for (i = 0; i < SIZE; i++)
221     d1[i] = __builtin_atanh (d2[i]);
222 }
223 
224 void
test_float_atanh(void)225 test_float_atanh (void)
226 {
227   int i;
228 
229   for (i = 0; i < SIZE; i++)
230     f1[i] = __builtin_atanhf (f2[i]);
231 }
232 
233 void
test_double_cbrt(void)234 test_double_cbrt (void)
235 {
236   int i;
237 
238   for (i = 0; i < SIZE; i++)
239     d1[i] = __builtin_cbrt (d2[i]);
240 }
241 
242 void
test_float_cbrt(void)243 test_float_cbrt (void)
244 {
245   int i;
246 
247   for (i = 0; i < SIZE; i++)
248     f1[i] = __builtin_cbrtf (f2[i]);
249 }
250 
251 void
test_double_cos(void)252 test_double_cos (void)
253 {
254   int i;
255 
256   for (i = 0; i < SIZE; i++)
257     d1[i] = __builtin_cos (d2[i]);
258 }
259 
260 void
test_float_cos(void)261 test_float_cos (void)
262 {
263   int i;
264 
265   for (i = 0; i < SIZE; i++)
266     f1[i] = __builtin_cosf (f2[i]);
267 }
268 
269 void
test_double_cosh(void)270 test_double_cosh (void)
271 {
272   int i;
273 
274   for (i = 0; i < SIZE; i++)
275     d1[i] = __builtin_cosh (d2[i]);
276 }
277 
278 void
test_float_cosh(void)279 test_float_cosh (void)
280 {
281   int i;
282 
283   for (i = 0; i < SIZE; i++)
284     f1[i] = __builtin_coshf (f2[i]);
285 }
286 
287 void
test_double_erf(void)288 test_double_erf (void)
289 {
290   int i;
291 
292   for (i = 0; i < SIZE; i++)
293     d1[i] = __builtin_erf (d2[i]);
294 }
295 
296 void
test_float_erf(void)297 test_float_erf (void)
298 {
299   int i;
300 
301   for (i = 0; i < SIZE; i++)
302     f1[i] = __builtin_erff (f2[i]);
303 }
304 
305 void
test_double_erfc(void)306 test_double_erfc (void)
307 {
308   int i;
309 
310   for (i = 0; i < SIZE; i++)
311     d1[i] = __builtin_erfc (d2[i]);
312 }
313 
314 void
test_float_erfc(void)315 test_float_erfc (void)
316 {
317   int i;
318 
319   for (i = 0; i < SIZE; i++)
320     f1[i] = __builtin_erfcf (f2[i]);
321 }
322 
323 void
test_double_exp2(void)324 test_double_exp2 (void)
325 {
326   int i;
327 
328   for (i = 0; i < SIZE; i++)
329     d1[i] = __builtin_exp2 (d2[i]);
330 }
331 
332 void
test_float_exp2(void)333 test_float_exp2 (void)
334 {
335   int i;
336 
337   for (i = 0; i < SIZE; i++)
338     f1[i] = __builtin_exp2f (f2[i]);
339 }
340 
341 void
test_double_exp(void)342 test_double_exp (void)
343 {
344   int i;
345 
346   for (i = 0; i < SIZE; i++)
347     d1[i] = __builtin_exp (d2[i]);
348 }
349 
350 void
test_float_exp(void)351 test_float_exp (void)
352 {
353   int i;
354 
355   for (i = 0; i < SIZE; i++)
356     f1[i] = __builtin_expf (f2[i]);
357 }
358 
359 void
test_double_expm1(void)360 test_double_expm1 (void)
361 {
362   int i;
363 
364   for (i = 0; i < SIZE; i++)
365     d1[i] = __builtin_expm1 (d2[i]);
366 }
367 
368 void
test_float_expm1(void)369 test_float_expm1 (void)
370 {
371   int i;
372 
373   for (i = 0; i < SIZE; i++)
374     f1[i] = __builtin_expm1f (f2[i]);
375 }
376 
377 void
test_double_lgamma(void)378 test_double_lgamma (void)
379 {
380   int i;
381 
382   for (i = 0; i < SIZE; i++)
383     d1[i] = __builtin_lgamma (d2[i]);
384 }
385 
386 void
test_float_lgamma(void)387 test_float_lgamma (void)
388 {
389   int i;
390 
391   for (i = 0; i < SIZE; i++)
392     f1[i] = __builtin_lgammaf (f2[i]);
393 }
394 
395 void
test_double_log10(void)396 test_double_log10 (void)
397 {
398   int i;
399 
400   for (i = 0; i < SIZE; i++)
401     d1[i] = __builtin_log10 (d2[i]);
402 }
403 
404 void
test_float_log10(void)405 test_float_log10 (void)
406 {
407   int i;
408 
409   for (i = 0; i < SIZE; i++)
410     f1[i] = __builtin_log10f (f2[i]);
411 }
412 
413 void
test_double_log1p(void)414 test_double_log1p (void)
415 {
416   int i;
417 
418   for (i = 0; i < SIZE; i++)
419     d1[i] = __builtin_log1p (d2[i]);
420 }
421 
422 void
test_float_log1p(void)423 test_float_log1p (void)
424 {
425   int i;
426 
427   for (i = 0; i < SIZE; i++)
428     f1[i] = __builtin_log1pf (f2[i]);
429 }
430 
431 void
test_double_log2(void)432 test_double_log2 (void)
433 {
434   int i;
435 
436   for (i = 0; i < SIZE; i++)
437     d1[i] = __builtin_log2 (d2[i]);
438 }
439 
440 void
test_float_log2(void)441 test_float_log2 (void)
442 {
443   int i;
444 
445   for (i = 0; i < SIZE; i++)
446     f1[i] = __builtin_log2f (f2[i]);
447 }
448 
449 void
test_double_log(void)450 test_double_log (void)
451 {
452   int i;
453 
454   for (i = 0; i < SIZE; i++)
455     d1[i] = __builtin_log (d2[i]);
456 }
457 
458 void
test_float_log(void)459 test_float_log (void)
460 {
461   int i;
462 
463   for (i = 0; i < SIZE; i++)
464     f1[i] = __builtin_logf (f2[i]);
465 }
466 
467 void
test_double_sin(void)468 test_double_sin (void)
469 {
470   int i;
471 
472   for (i = 0; i < SIZE; i++)
473     d1[i] = __builtin_sin (d2[i]);
474 }
475 
476 void
test_float_sin(void)477 test_float_sin (void)
478 {
479   int i;
480 
481   for (i = 0; i < SIZE; i++)
482     f1[i] = __builtin_sinf (f2[i]);
483 }
484 
485 void
test_double_sinh(void)486 test_double_sinh (void)
487 {
488   int i;
489 
490   for (i = 0; i < SIZE; i++)
491     d1[i] = __builtin_sinh (d2[i]);
492 }
493 
494 void
test_float_sinh(void)495 test_float_sinh (void)
496 {
497   int i;
498 
499   for (i = 0; i < SIZE; i++)
500     f1[i] = __builtin_sinhf (f2[i]);
501 }
502 
503 void
test_double_sqrt(void)504 test_double_sqrt (void)
505 {
506   int i;
507 
508   for (i = 0; i < SIZE; i++)
509     d1[i] = __builtin_sqrt (d2[i]);
510 }
511 
512 void
test_float_sqrt(void)513 test_float_sqrt (void)
514 {
515   int i;
516 
517   for (i = 0; i < SIZE; i++)
518     f1[i] = __builtin_sqrtf (f2[i]);
519 }
520 
521 void
test_double_tan(void)522 test_double_tan (void)
523 {
524   int i;
525 
526   for (i = 0; i < SIZE; i++)
527     d1[i] = __builtin_tan (d2[i]);
528 }
529 
530 void
test_float_tan(void)531 test_float_tan (void)
532 {
533   int i;
534 
535   for (i = 0; i < SIZE; i++)
536     f1[i] = __builtin_tanf (f2[i]);
537 }
538 
539 void
test_double_tanh(void)540 test_double_tanh (void)
541 {
542   int i;
543 
544   for (i = 0; i < SIZE; i++)
545     d1[i] = __builtin_tanh (d2[i]);
546 }
547 
548 void
test_float_tanh(void)549 test_float_tanh (void)
550 {
551   int i;
552 
553   for (i = 0; i < SIZE; i++)
554     f1[i] = __builtin_tanhf (f2[i]);
555 }
556