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)71test_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)80test_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)89test_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)98test_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)107test_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)116test_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)125test_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)134test_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)143test_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)152test_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)161test_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)170test_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)179test_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)188test_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)197test_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)206test_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)215test_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)224test_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)233test_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)242test_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)251test_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)260test_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)269test_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)278test_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)287test_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)296test_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)305test_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)314test_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)323test_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)332test_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)341test_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)350test_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)359test_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)368test_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)377test_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)386test_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)395test_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)404test_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)413test_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)422test_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)431test_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)440test_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)449test_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)458test_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)467test_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)476test_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)485test_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)494test_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)503test_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)512test_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)521test_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)530test_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)539test_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)548test_float_tanh (void) 549 { 550 int i; 551 552 for (i = 0; i < SIZE; i++) 553 f1[i] = __builtin_tanhf (f2[i]); 554 } 555