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