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)72test_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)81test_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)90test_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)99test_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)108test_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)117test_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)126test_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)135test_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)144test_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)153test_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)162test_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)171test_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)180test_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)189test_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)198test_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)207test_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)216test_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)225test_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)234test_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)243test_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)252test_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)261test_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)270test_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)279test_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)288test_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)297test_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)306test_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)315test_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)324test_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)333test_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)342test_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)351test_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)360test_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)369test_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)378test_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)387test_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)396test_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)405test_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)414test_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)423test_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)432test_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)441test_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)450test_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)459test_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)468test_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)477test_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)486test_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)495test_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)504test_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)513test_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)522test_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)531test_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)540test_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)549test_float_tanh (void) 550 { 551 int i; 552 553 for (i = 0; i < SIZE; i++) 554 f1[i] = __builtin_tanhf (f2[i]); 555 } 556