1 /*===---- altivec.h - Standard header for type generic math ---------------===*\ 2 * 3 * Permission is hereby granted, free of charge, to any person obtaining a copy 4 * of this software and associated documentation files (the "Software"), to deal 5 * in the Software without restriction, including without limitation the rights 6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 * copies of the Software, and to permit persons to whom the Software is 8 * furnished to do so, subject to the following conditions: 9 * 10 * The above copyright notice and this permission notice shall be included in 11 * all copies or substantial portions of the Software. 12 * 13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 * THE SOFTWARE. 20 * 21 \*===----------------------------------------------------------------------===*/ 22 23 #ifndef __ALTIVEC_H 24 #define __ALTIVEC_H 25 26 #ifndef __ALTIVEC__ 27 #error "AltiVec support not enabled" 28 #endif 29 30 /* constants for mapping CR6 bits to predicate result. */ 31 32 #define __CR6_EQ 0 33 #define __CR6_EQ_REV 1 34 #define __CR6_LT 2 35 #define __CR6_LT_REV 3 36 37 #define __ATTRS_o_ai __attribute__((__overloadable__, __always_inline__)) 38 39 static vector signed char __ATTRS_o_ai vec_perm(vector signed char __a, 40 vector signed char __b, 41 vector unsigned char __c); 42 43 static vector unsigned char __ATTRS_o_ai vec_perm(vector unsigned char __a, 44 vector unsigned char __b, 45 vector unsigned char __c); 46 47 static vector bool char __ATTRS_o_ai vec_perm(vector bool char __a, 48 vector bool char __b, 49 vector unsigned char __c); 50 51 static vector short __ATTRS_o_ai vec_perm(vector signed short __a, 52 vector signed short __b, 53 vector unsigned char __c); 54 55 static vector unsigned short __ATTRS_o_ai vec_perm(vector unsigned short __a, 56 vector unsigned short __b, 57 vector unsigned char __c); 58 59 static vector bool short __ATTRS_o_ai vec_perm(vector bool short __a, 60 vector bool short __b, 61 vector unsigned char __c); 62 63 static vector pixel __ATTRS_o_ai vec_perm(vector pixel __a, vector pixel __b, 64 vector unsigned char __c); 65 66 static vector int __ATTRS_o_ai vec_perm(vector signed int __a, 67 vector signed int __b, 68 vector unsigned char __c); 69 70 static vector unsigned int __ATTRS_o_ai vec_perm(vector unsigned int __a, 71 vector unsigned int __b, 72 vector unsigned char __c); 73 74 static vector bool int __ATTRS_o_ai vec_perm(vector bool int __a, 75 vector bool int __b, 76 vector unsigned char __c); 77 78 static vector float __ATTRS_o_ai vec_perm(vector float __a, vector float __b, 79 vector unsigned char __c); 80 81 #ifdef __VSX__ 82 static vector long long __ATTRS_o_ai vec_perm(vector signed long long __a, 83 vector signed long long __b, 84 vector unsigned char __c); 85 86 static vector unsigned long long __ATTRS_o_ai 87 vec_perm(vector unsigned long long __a, vector unsigned long long __b, 88 vector unsigned char __c); 89 90 static vector bool long long __ATTRS_o_ai 91 vec_perm(vector bool long long __a, vector bool long long __b, 92 vector unsigned char __c); 93 94 static vector double __ATTRS_o_ai vec_perm(vector double __a, vector double __b, 95 vector unsigned char __c); 96 #endif 97 98 static vector unsigned char __ATTRS_o_ai vec_xor(vector unsigned char __a, 99 vector unsigned char __b); 100 101 /* vec_abs */ 102 103 #define __builtin_altivec_abs_v16qi vec_abs 104 #define __builtin_altivec_abs_v8hi vec_abs 105 #define __builtin_altivec_abs_v4si vec_abs 106 107 static vector signed char __ATTRS_o_ai vec_abs(vector signed char __a) { 108 return __builtin_altivec_vmaxsb(__a, -__a); 109 } 110 111 static vector signed short __ATTRS_o_ai vec_abs(vector signed short __a) { 112 return __builtin_altivec_vmaxsh(__a, -__a); 113 } 114 115 static vector signed int __ATTRS_o_ai vec_abs(vector signed int __a) { 116 return __builtin_altivec_vmaxsw(__a, -__a); 117 } 118 119 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__) 120 static vector signed long long __ATTRS_o_ai 121 vec_abs(vector signed long long __a) { 122 return __builtin_altivec_vmaxsd(__a, -__a); 123 } 124 #endif 125 126 static vector float __ATTRS_o_ai vec_abs(vector float __a) { 127 vector unsigned int __res = 128 (vector unsigned int)__a & (vector unsigned int)(0x7FFFFFFF); 129 return (vector float)__res; 130 } 131 132 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__) 133 static vector double __ATTRS_o_ai vec_abs(vector double __a) { 134 vector unsigned long long __res = { 0x7FFFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFFF }; 135 __res &= (vector unsigned int)__a; 136 return (vector double)__res; 137 } 138 #endif 139 140 /* vec_abss */ 141 #define __builtin_altivec_abss_v16qi vec_abss 142 #define __builtin_altivec_abss_v8hi vec_abss 143 #define __builtin_altivec_abss_v4si vec_abss 144 145 static vector signed char __ATTRS_o_ai vec_abss(vector signed char __a) { 146 return __builtin_altivec_vmaxsb( 147 __a, __builtin_altivec_vsubsbs((vector signed char)(0), __a)); 148 } 149 150 static vector signed short __ATTRS_o_ai vec_abss(vector signed short __a) { 151 return __builtin_altivec_vmaxsh( 152 __a, __builtin_altivec_vsubshs((vector signed short)(0), __a)); 153 } 154 155 static vector signed int __ATTRS_o_ai vec_abss(vector signed int __a) { 156 return __builtin_altivec_vmaxsw( 157 __a, __builtin_altivec_vsubsws((vector signed int)(0), __a)); 158 } 159 160 /* vec_add */ 161 162 static vector signed char __ATTRS_o_ai vec_add(vector signed char __a, 163 vector signed char __b) { 164 return __a + __b; 165 } 166 167 static vector signed char __ATTRS_o_ai vec_add(vector bool char __a, 168 vector signed char __b) { 169 return (vector signed char)__a + __b; 170 } 171 172 static vector signed char __ATTRS_o_ai vec_add(vector signed char __a, 173 vector bool char __b) { 174 return __a + (vector signed char)__b; 175 } 176 177 static vector unsigned char __ATTRS_o_ai vec_add(vector unsigned char __a, 178 vector unsigned char __b) { 179 return __a + __b; 180 } 181 182 static vector unsigned char __ATTRS_o_ai vec_add(vector bool char __a, 183 vector unsigned char __b) { 184 return (vector unsigned char)__a + __b; 185 } 186 187 static vector unsigned char __ATTRS_o_ai vec_add(vector unsigned char __a, 188 vector bool char __b) { 189 return __a + (vector unsigned char)__b; 190 } 191 192 static vector short __ATTRS_o_ai vec_add(vector short __a, vector short __b) { 193 return __a + __b; 194 } 195 196 static vector short __ATTRS_o_ai vec_add(vector bool short __a, 197 vector short __b) { 198 return (vector short)__a + __b; 199 } 200 201 static vector short __ATTRS_o_ai vec_add(vector short __a, 202 vector bool short __b) { 203 return __a + (vector short)__b; 204 } 205 206 static vector unsigned short __ATTRS_o_ai vec_add(vector unsigned short __a, 207 vector unsigned short __b) { 208 return __a + __b; 209 } 210 211 static vector unsigned short __ATTRS_o_ai vec_add(vector bool short __a, 212 vector unsigned short __b) { 213 return (vector unsigned short)__a + __b; 214 } 215 216 static vector unsigned short __ATTRS_o_ai vec_add(vector unsigned short __a, 217 vector bool short __b) { 218 return __a + (vector unsigned short)__b; 219 } 220 221 static vector int __ATTRS_o_ai vec_add(vector int __a, vector int __b) { 222 return __a + __b; 223 } 224 225 static vector int __ATTRS_o_ai vec_add(vector bool int __a, vector int __b) { 226 return (vector int)__a + __b; 227 } 228 229 static vector int __ATTRS_o_ai vec_add(vector int __a, vector bool int __b) { 230 return __a + (vector int)__b; 231 } 232 233 static vector unsigned int __ATTRS_o_ai vec_add(vector unsigned int __a, 234 vector unsigned int __b) { 235 return __a + __b; 236 } 237 238 static vector unsigned int __ATTRS_o_ai vec_add(vector bool int __a, 239 vector unsigned int __b) { 240 return (vector unsigned int)__a + __b; 241 } 242 243 static vector unsigned int __ATTRS_o_ai vec_add(vector unsigned int __a, 244 vector bool int __b) { 245 return __a + (vector unsigned int)__b; 246 } 247 248 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__) 249 static vector signed long long __ATTRS_o_ai 250 vec_add(vector signed long long __a, vector signed long long __b) { 251 return __a + __b; 252 } 253 254 static vector unsigned long long __ATTRS_o_ai 255 vec_add(vector unsigned long long __a, vector unsigned long long __b) { 256 return __a + __b; 257 } 258 259 static vector signed __int128 __ATTRS_o_ai vec_add(vector signed __int128 __a, 260 vector signed __int128 __b) { 261 return __a + __b; 262 } 263 264 static vector unsigned __int128 __ATTRS_o_ai 265 vec_add(vector unsigned __int128 __a, vector unsigned __int128 __b) { 266 return __a + __b; 267 } 268 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__) 269 270 static vector float __ATTRS_o_ai vec_add(vector float __a, vector float __b) { 271 return __a + __b; 272 } 273 274 #ifdef __VSX__ 275 static vector double __ATTRS_o_ai 276 vec_add(vector double __a, vector double __b) { 277 return __a + __b; 278 } 279 #endif // __VSX__ 280 281 /* vec_adde */ 282 283 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__) 284 static vector signed __int128 __ATTRS_o_ai 285 vec_adde(vector signed __int128 __a, vector signed __int128 __b, 286 vector signed __int128 __c) { 287 return __builtin_altivec_vaddeuqm(__a, __b, __c); 288 } 289 290 static vector unsigned __int128 __ATTRS_o_ai 291 vec_adde(vector unsigned __int128 __a, vector unsigned __int128 __b, 292 vector unsigned __int128 __c) { 293 return __builtin_altivec_vaddeuqm(__a, __b, __c); 294 } 295 #endif 296 297 /* vec_addec */ 298 299 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__) 300 static vector signed __int128 __ATTRS_o_ai 301 vec_addec(vector signed __int128 __a, vector signed __int128 __b, 302 vector signed __int128 __c) { 303 return __builtin_altivec_vaddecuq(__a, __b, __c); 304 } 305 306 static vector unsigned __int128 __ATTRS_o_ai 307 vec_addec(vector unsigned __int128 __a, vector unsigned __int128 __b, 308 vector unsigned __int128 __c) { 309 return __builtin_altivec_vaddecuq(__a, __b, __c); 310 } 311 #endif 312 313 /* vec_vaddubm */ 314 315 #define __builtin_altivec_vaddubm vec_vaddubm 316 317 static vector signed char __ATTRS_o_ai vec_vaddubm(vector signed char __a, 318 vector signed char __b) { 319 return __a + __b; 320 } 321 322 static vector signed char __ATTRS_o_ai vec_vaddubm(vector bool char __a, 323 vector signed char __b) { 324 return (vector signed char)__a + __b; 325 } 326 327 static vector signed char __ATTRS_o_ai vec_vaddubm(vector signed char __a, 328 vector bool char __b) { 329 return __a + (vector signed char)__b; 330 } 331 332 static vector unsigned char __ATTRS_o_ai vec_vaddubm(vector unsigned char __a, 333 vector unsigned char __b) { 334 return __a + __b; 335 } 336 337 static vector unsigned char __ATTRS_o_ai vec_vaddubm(vector bool char __a, 338 vector unsigned char __b) { 339 return (vector unsigned char)__a + __b; 340 } 341 342 static vector unsigned char __ATTRS_o_ai vec_vaddubm(vector unsigned char __a, 343 vector bool char __b) { 344 return __a + (vector unsigned char)__b; 345 } 346 347 /* vec_vadduhm */ 348 349 #define __builtin_altivec_vadduhm vec_vadduhm 350 351 static vector short __ATTRS_o_ai vec_vadduhm(vector short __a, 352 vector short __b) { 353 return __a + __b; 354 } 355 356 static vector short __ATTRS_o_ai vec_vadduhm(vector bool short __a, 357 vector short __b) { 358 return (vector short)__a + __b; 359 } 360 361 static vector short __ATTRS_o_ai vec_vadduhm(vector short __a, 362 vector bool short __b) { 363 return __a + (vector short)__b; 364 } 365 366 static vector unsigned short __ATTRS_o_ai 367 vec_vadduhm(vector unsigned short __a, vector unsigned short __b) { 368 return __a + __b; 369 } 370 371 static vector unsigned short __ATTRS_o_ai 372 vec_vadduhm(vector bool short __a, vector unsigned short __b) { 373 return (vector unsigned short)__a + __b; 374 } 375 376 static vector unsigned short __ATTRS_o_ai vec_vadduhm(vector unsigned short __a, 377 vector bool short __b) { 378 return __a + (vector unsigned short)__b; 379 } 380 381 /* vec_vadduwm */ 382 383 #define __builtin_altivec_vadduwm vec_vadduwm 384 385 static vector int __ATTRS_o_ai vec_vadduwm(vector int __a, vector int __b) { 386 return __a + __b; 387 } 388 389 static vector int __ATTRS_o_ai vec_vadduwm(vector bool int __a, 390 vector int __b) { 391 return (vector int)__a + __b; 392 } 393 394 static vector int __ATTRS_o_ai vec_vadduwm(vector int __a, 395 vector bool int __b) { 396 return __a + (vector int)__b; 397 } 398 399 static vector unsigned int __ATTRS_o_ai vec_vadduwm(vector unsigned int __a, 400 vector unsigned int __b) { 401 return __a + __b; 402 } 403 404 static vector unsigned int __ATTRS_o_ai vec_vadduwm(vector bool int __a, 405 vector unsigned int __b) { 406 return (vector unsigned int)__a + __b; 407 } 408 409 static vector unsigned int __ATTRS_o_ai vec_vadduwm(vector unsigned int __a, 410 vector bool int __b) { 411 return __a + (vector unsigned int)__b; 412 } 413 414 /* vec_vaddfp */ 415 416 #define __builtin_altivec_vaddfp vec_vaddfp 417 418 static vector float __attribute__((__always_inline__)) 419 vec_vaddfp(vector float __a, vector float __b) { 420 return __a + __b; 421 } 422 423 /* vec_addc */ 424 425 static vector signed int __ATTRS_o_ai vec_addc(vector signed int __a, 426 vector signed int __b) { 427 return (vector signed int)__builtin_altivec_vaddcuw((vector unsigned int)__a, 428 (vector unsigned int)__b); 429 } 430 431 static vector unsigned int __ATTRS_o_ai vec_addc(vector unsigned int __a, 432 vector unsigned int __b) { 433 return __builtin_altivec_vaddcuw(__a, __b); 434 } 435 436 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__) 437 static vector signed __int128 __ATTRS_o_ai 438 vec_addc(vector signed __int128 __a, vector signed __int128 __b) { 439 return (vector signed __int128)__builtin_altivec_vaddcuq( 440 (vector unsigned __int128)__a, 441 (vector unsigned __int128)__b); 442 } 443 444 static vector unsigned __int128 __ATTRS_o_ai 445 vec_addc(vector unsigned __int128 __a, vector unsigned __int128 __b) { 446 return __builtin_altivec_vaddcuq(__a, __b); 447 } 448 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__) 449 450 /* vec_vaddcuw */ 451 452 static vector unsigned int __attribute__((__always_inline__)) 453 vec_vaddcuw(vector unsigned int __a, vector unsigned int __b) { 454 return __builtin_altivec_vaddcuw(__a, __b); 455 } 456 457 /* vec_adds */ 458 459 static vector signed char __ATTRS_o_ai vec_adds(vector signed char __a, 460 vector signed char __b) { 461 return __builtin_altivec_vaddsbs(__a, __b); 462 } 463 464 static vector signed char __ATTRS_o_ai vec_adds(vector bool char __a, 465 vector signed char __b) { 466 return __builtin_altivec_vaddsbs((vector signed char)__a, __b); 467 } 468 469 static vector signed char __ATTRS_o_ai vec_adds(vector signed char __a, 470 vector bool char __b) { 471 return __builtin_altivec_vaddsbs(__a, (vector signed char)__b); 472 } 473 474 static vector unsigned char __ATTRS_o_ai vec_adds(vector unsigned char __a, 475 vector unsigned char __b) { 476 return __builtin_altivec_vaddubs(__a, __b); 477 } 478 479 static vector unsigned char __ATTRS_o_ai vec_adds(vector bool char __a, 480 vector unsigned char __b) { 481 return __builtin_altivec_vaddubs((vector unsigned char)__a, __b); 482 } 483 484 static vector unsigned char __ATTRS_o_ai vec_adds(vector unsigned char __a, 485 vector bool char __b) { 486 return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b); 487 } 488 489 static vector short __ATTRS_o_ai vec_adds(vector short __a, vector short __b) { 490 return __builtin_altivec_vaddshs(__a, __b); 491 } 492 493 static vector short __ATTRS_o_ai vec_adds(vector bool short __a, 494 vector short __b) { 495 return __builtin_altivec_vaddshs((vector short)__a, __b); 496 } 497 498 static vector short __ATTRS_o_ai vec_adds(vector short __a, 499 vector bool short __b) { 500 return __builtin_altivec_vaddshs(__a, (vector short)__b); 501 } 502 503 static vector unsigned short __ATTRS_o_ai vec_adds(vector unsigned short __a, 504 vector unsigned short __b) { 505 return __builtin_altivec_vadduhs(__a, __b); 506 } 507 508 static vector unsigned short __ATTRS_o_ai vec_adds(vector bool short __a, 509 vector unsigned short __b) { 510 return __builtin_altivec_vadduhs((vector unsigned short)__a, __b); 511 } 512 513 static vector unsigned short __ATTRS_o_ai vec_adds(vector unsigned short __a, 514 vector bool short __b) { 515 return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b); 516 } 517 518 static vector int __ATTRS_o_ai vec_adds(vector int __a, vector int __b) { 519 return __builtin_altivec_vaddsws(__a, __b); 520 } 521 522 static vector int __ATTRS_o_ai vec_adds(vector bool int __a, vector int __b) { 523 return __builtin_altivec_vaddsws((vector int)__a, __b); 524 } 525 526 static vector int __ATTRS_o_ai vec_adds(vector int __a, vector bool int __b) { 527 return __builtin_altivec_vaddsws(__a, (vector int)__b); 528 } 529 530 static vector unsigned int __ATTRS_o_ai vec_adds(vector unsigned int __a, 531 vector unsigned int __b) { 532 return __builtin_altivec_vadduws(__a, __b); 533 } 534 535 static vector unsigned int __ATTRS_o_ai vec_adds(vector bool int __a, 536 vector unsigned int __b) { 537 return __builtin_altivec_vadduws((vector unsigned int)__a, __b); 538 } 539 540 static vector unsigned int __ATTRS_o_ai vec_adds(vector unsigned int __a, 541 vector bool int __b) { 542 return __builtin_altivec_vadduws(__a, (vector unsigned int)__b); 543 } 544 545 /* vec_vaddsbs */ 546 547 static vector signed char __ATTRS_o_ai vec_vaddsbs(vector signed char __a, 548 vector signed char __b) { 549 return __builtin_altivec_vaddsbs(__a, __b); 550 } 551 552 static vector signed char __ATTRS_o_ai vec_vaddsbs(vector bool char __a, 553 vector signed char __b) { 554 return __builtin_altivec_vaddsbs((vector signed char)__a, __b); 555 } 556 557 static vector signed char __ATTRS_o_ai vec_vaddsbs(vector signed char __a, 558 vector bool char __b) { 559 return __builtin_altivec_vaddsbs(__a, (vector signed char)__b); 560 } 561 562 /* vec_vaddubs */ 563 564 static vector unsigned char __ATTRS_o_ai vec_vaddubs(vector unsigned char __a, 565 vector unsigned char __b) { 566 return __builtin_altivec_vaddubs(__a, __b); 567 } 568 569 static vector unsigned char __ATTRS_o_ai vec_vaddubs(vector bool char __a, 570 vector unsigned char __b) { 571 return __builtin_altivec_vaddubs((vector unsigned char)__a, __b); 572 } 573 574 static vector unsigned char __ATTRS_o_ai vec_vaddubs(vector unsigned char __a, 575 vector bool char __b) { 576 return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b); 577 } 578 579 /* vec_vaddshs */ 580 581 static vector short __ATTRS_o_ai vec_vaddshs(vector short __a, 582 vector short __b) { 583 return __builtin_altivec_vaddshs(__a, __b); 584 } 585 586 static vector short __ATTRS_o_ai vec_vaddshs(vector bool short __a, 587 vector short __b) { 588 return __builtin_altivec_vaddshs((vector short)__a, __b); 589 } 590 591 static vector short __ATTRS_o_ai vec_vaddshs(vector short __a, 592 vector bool short __b) { 593 return __builtin_altivec_vaddshs(__a, (vector short)__b); 594 } 595 596 /* vec_vadduhs */ 597 598 static vector unsigned short __ATTRS_o_ai 599 vec_vadduhs(vector unsigned short __a, vector unsigned short __b) { 600 return __builtin_altivec_vadduhs(__a, __b); 601 } 602 603 static vector unsigned short __ATTRS_o_ai 604 vec_vadduhs(vector bool short __a, vector unsigned short __b) { 605 return __builtin_altivec_vadduhs((vector unsigned short)__a, __b); 606 } 607 608 static vector unsigned short __ATTRS_o_ai vec_vadduhs(vector unsigned short __a, 609 vector bool short __b) { 610 return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b); 611 } 612 613 /* vec_vaddsws */ 614 615 static vector int __ATTRS_o_ai vec_vaddsws(vector int __a, vector int __b) { 616 return __builtin_altivec_vaddsws(__a, __b); 617 } 618 619 static vector int __ATTRS_o_ai vec_vaddsws(vector bool int __a, 620 vector int __b) { 621 return __builtin_altivec_vaddsws((vector int)__a, __b); 622 } 623 624 static vector int __ATTRS_o_ai vec_vaddsws(vector int __a, 625 vector bool int __b) { 626 return __builtin_altivec_vaddsws(__a, (vector int)__b); 627 } 628 629 /* vec_vadduws */ 630 631 static vector unsigned int __ATTRS_o_ai vec_vadduws(vector unsigned int __a, 632 vector unsigned int __b) { 633 return __builtin_altivec_vadduws(__a, __b); 634 } 635 636 static vector unsigned int __ATTRS_o_ai vec_vadduws(vector bool int __a, 637 vector unsigned int __b) { 638 return __builtin_altivec_vadduws((vector unsigned int)__a, __b); 639 } 640 641 static vector unsigned int __ATTRS_o_ai vec_vadduws(vector unsigned int __a, 642 vector bool int __b) { 643 return __builtin_altivec_vadduws(__a, (vector unsigned int)__b); 644 } 645 646 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__) 647 /* vec_vadduqm */ 648 649 static vector signed __int128 __ATTRS_o_ai 650 vec_vadduqm(vector signed __int128 __a, vector signed __int128 __b) { 651 return __a + __b; 652 } 653 654 static vector unsigned __int128 __ATTRS_o_ai 655 vec_vadduqm(vector unsigned __int128 __a, vector unsigned __int128 __b) { 656 return __a + __b; 657 } 658 659 /* vec_vaddeuqm */ 660 661 static vector signed __int128 __ATTRS_o_ai 662 vec_vaddeuqm(vector signed __int128 __a, vector signed __int128 __b, 663 vector signed __int128 __c) { 664 return __builtin_altivec_vaddeuqm(__a, __b, __c); 665 } 666 667 static vector unsigned __int128 __ATTRS_o_ai 668 vec_vaddeuqm(vector unsigned __int128 __a, vector unsigned __int128 __b, 669 vector unsigned __int128 __c) { 670 return __builtin_altivec_vaddeuqm(__a, __b, __c); 671 } 672 673 /* vec_vaddcuq */ 674 675 static vector signed __int128 __ATTRS_o_ai 676 vec_vaddcuq(vector signed __int128 __a, vector signed __int128 __b) { 677 return __builtin_altivec_vaddcuq(__a, __b); 678 } 679 680 static vector unsigned __int128 __ATTRS_o_ai 681 vec_vaddcuq(vector unsigned __int128 __a, vector unsigned __int128 __b) { 682 return __builtin_altivec_vaddcuq(__a, __b); 683 } 684 685 /* vec_vaddecuq */ 686 687 static vector signed __int128 __ATTRS_o_ai 688 vec_vaddecuq(vector signed __int128 __a, vector signed __int128 __b, 689 vector signed __int128 __c) { 690 return __builtin_altivec_vaddecuq(__a, __b, __c); 691 } 692 693 static vector unsigned __int128 __ATTRS_o_ai 694 vec_vaddecuq(vector unsigned __int128 __a, vector unsigned __int128 __b, 695 vector unsigned __int128 __c) { 696 return __builtin_altivec_vaddecuq(__a, __b, __c); 697 } 698 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__) 699 700 /* vec_and */ 701 702 #define __builtin_altivec_vand vec_and 703 704 static vector signed char __ATTRS_o_ai vec_and(vector signed char __a, 705 vector signed char __b) { 706 return __a & __b; 707 } 708 709 static vector signed char __ATTRS_o_ai vec_and(vector bool char __a, 710 vector signed char __b) { 711 return (vector signed char)__a & __b; 712 } 713 714 static vector signed char __ATTRS_o_ai vec_and(vector signed char __a, 715 vector bool char __b) { 716 return __a & (vector signed char)__b; 717 } 718 719 static vector unsigned char __ATTRS_o_ai vec_and(vector unsigned char __a, 720 vector unsigned char __b) { 721 return __a & __b; 722 } 723 724 static vector unsigned char __ATTRS_o_ai vec_and(vector bool char __a, 725 vector unsigned char __b) { 726 return (vector unsigned char)__a & __b; 727 } 728 729 static vector unsigned char __ATTRS_o_ai vec_and(vector unsigned char __a, 730 vector bool char __b) { 731 return __a & (vector unsigned char)__b; 732 } 733 734 static vector bool char __ATTRS_o_ai vec_and(vector bool char __a, 735 vector bool char __b) { 736 return __a & __b; 737 } 738 739 static vector short __ATTRS_o_ai vec_and(vector short __a, vector short __b) { 740 return __a & __b; 741 } 742 743 static vector short __ATTRS_o_ai vec_and(vector bool short __a, 744 vector short __b) { 745 return (vector short)__a & __b; 746 } 747 748 static vector short __ATTRS_o_ai vec_and(vector short __a, 749 vector bool short __b) { 750 return __a & (vector short)__b; 751 } 752 753 static vector unsigned short __ATTRS_o_ai vec_and(vector unsigned short __a, 754 vector unsigned short __b) { 755 return __a & __b; 756 } 757 758 static vector unsigned short __ATTRS_o_ai vec_and(vector bool short __a, 759 vector unsigned short __b) { 760 return (vector unsigned short)__a & __b; 761 } 762 763 static vector unsigned short __ATTRS_o_ai vec_and(vector unsigned short __a, 764 vector bool short __b) { 765 return __a & (vector unsigned short)__b; 766 } 767 768 static vector bool short __ATTRS_o_ai vec_and(vector bool short __a, 769 vector bool short __b) { 770 return __a & __b; 771 } 772 773 static vector int __ATTRS_o_ai vec_and(vector int __a, vector int __b) { 774 return __a & __b; 775 } 776 777 static vector int __ATTRS_o_ai vec_and(vector bool int __a, vector int __b) { 778 return (vector int)__a & __b; 779 } 780 781 static vector int __ATTRS_o_ai vec_and(vector int __a, vector bool int __b) { 782 return __a & (vector int)__b; 783 } 784 785 static vector unsigned int __ATTRS_o_ai vec_and(vector unsigned int __a, 786 vector unsigned int __b) { 787 return __a & __b; 788 } 789 790 static vector unsigned int __ATTRS_o_ai vec_and(vector bool int __a, 791 vector unsigned int __b) { 792 return (vector unsigned int)__a & __b; 793 } 794 795 static vector unsigned int __ATTRS_o_ai vec_and(vector unsigned int __a, 796 vector bool int __b) { 797 return __a & (vector unsigned int)__b; 798 } 799 800 static vector bool int __ATTRS_o_ai vec_and(vector bool int __a, 801 vector bool int __b) { 802 return __a & __b; 803 } 804 805 static vector float __ATTRS_o_ai vec_and(vector float __a, vector float __b) { 806 vector unsigned int __res = 807 (vector unsigned int)__a & (vector unsigned int)__b; 808 return (vector float)__res; 809 } 810 811 static vector float __ATTRS_o_ai vec_and(vector bool int __a, 812 vector float __b) { 813 vector unsigned int __res = 814 (vector unsigned int)__a & (vector unsigned int)__b; 815 return (vector float)__res; 816 } 817 818 static vector float __ATTRS_o_ai vec_and(vector float __a, 819 vector bool int __b) { 820 vector unsigned int __res = 821 (vector unsigned int)__a & (vector unsigned int)__b; 822 return (vector float)__res; 823 } 824 825 #ifdef __VSX__ 826 static vector double __ATTRS_o_ai vec_and(vector bool long long __a, vector double __b) { 827 vector unsigned long long __res = 828 (vector unsigned long long)__a & (vector unsigned long long)__b; 829 return (vector double)__res; 830 } 831 832 static vector double __ATTRS_o_ai vec_and(vector double __a, vector bool long long __b) { 833 vector unsigned long long __res = 834 (vector unsigned long long)__a & (vector unsigned long long)__b; 835 return (vector double)__res; 836 } 837 838 static vector double __ATTRS_o_ai vec_and(vector double __a, vector double __b) { 839 vector unsigned long long __res = 840 (vector unsigned long long)__a & (vector unsigned long long)__b; 841 return (vector double)__res; 842 } 843 844 static vector signed long long __ATTRS_o_ai 845 vec_and(vector signed long long __a, vector signed long long __b) { 846 return __a & __b; 847 } 848 849 static vector signed long long __ATTRS_o_ai 850 vec_and(vector bool long long __a, vector signed long long __b) { 851 return (vector signed long long)__a & __b; 852 } 853 854 static vector signed long long __ATTRS_o_ai vec_and(vector signed long long __a, 855 vector bool long long __b) { 856 return __a & (vector signed long long)__b; 857 } 858 859 static vector unsigned long long __ATTRS_o_ai 860 vec_and(vector unsigned long long __a, vector unsigned long long __b) { 861 return __a & __b; 862 } 863 864 static vector unsigned long long __ATTRS_o_ai 865 vec_and(vector bool long long __a, vector unsigned long long __b) { 866 return (vector unsigned long long)__a & __b; 867 } 868 869 static vector unsigned long long __ATTRS_o_ai 870 vec_and(vector unsigned long long __a, vector bool long long __b) { 871 return __a & (vector unsigned long long)__b; 872 } 873 874 static vector bool long long __ATTRS_o_ai vec_and(vector bool long long __a, 875 vector bool long long __b) { 876 return __a & __b; 877 } 878 #endif 879 880 /* vec_vand */ 881 882 static vector signed char __ATTRS_o_ai vec_vand(vector signed char __a, 883 vector signed char __b) { 884 return __a & __b; 885 } 886 887 static vector signed char __ATTRS_o_ai vec_vand(vector bool char __a, 888 vector signed char __b) { 889 return (vector signed char)__a & __b; 890 } 891 892 static vector signed char __ATTRS_o_ai vec_vand(vector signed char __a, 893 vector bool char __b) { 894 return __a & (vector signed char)__b; 895 } 896 897 static vector unsigned char __ATTRS_o_ai vec_vand(vector unsigned char __a, 898 vector unsigned char __b) { 899 return __a & __b; 900 } 901 902 static vector unsigned char __ATTRS_o_ai vec_vand(vector bool char __a, 903 vector unsigned char __b) { 904 return (vector unsigned char)__a & __b; 905 } 906 907 static vector unsigned char __ATTRS_o_ai vec_vand(vector unsigned char __a, 908 vector bool char __b) { 909 return __a & (vector unsigned char)__b; 910 } 911 912 static vector bool char __ATTRS_o_ai vec_vand(vector bool char __a, 913 vector bool char __b) { 914 return __a & __b; 915 } 916 917 static vector short __ATTRS_o_ai vec_vand(vector short __a, vector short __b) { 918 return __a & __b; 919 } 920 921 static vector short __ATTRS_o_ai vec_vand(vector bool short __a, 922 vector short __b) { 923 return (vector short)__a & __b; 924 } 925 926 static vector short __ATTRS_o_ai vec_vand(vector short __a, 927 vector bool short __b) { 928 return __a & (vector short)__b; 929 } 930 931 static vector unsigned short __ATTRS_o_ai vec_vand(vector unsigned short __a, 932 vector unsigned short __b) { 933 return __a & __b; 934 } 935 936 static vector unsigned short __ATTRS_o_ai vec_vand(vector bool short __a, 937 vector unsigned short __b) { 938 return (vector unsigned short)__a & __b; 939 } 940 941 static vector unsigned short __ATTRS_o_ai vec_vand(vector unsigned short __a, 942 vector bool short __b) { 943 return __a & (vector unsigned short)__b; 944 } 945 946 static vector bool short __ATTRS_o_ai vec_vand(vector bool short __a, 947 vector bool short __b) { 948 return __a & __b; 949 } 950 951 static vector int __ATTRS_o_ai vec_vand(vector int __a, vector int __b) { 952 return __a & __b; 953 } 954 955 static vector int __ATTRS_o_ai vec_vand(vector bool int __a, vector int __b) { 956 return (vector int)__a & __b; 957 } 958 959 static vector int __ATTRS_o_ai vec_vand(vector int __a, vector bool int __b) { 960 return __a & (vector int)__b; 961 } 962 963 static vector unsigned int __ATTRS_o_ai vec_vand(vector unsigned int __a, 964 vector unsigned int __b) { 965 return __a & __b; 966 } 967 968 static vector unsigned int __ATTRS_o_ai vec_vand(vector bool int __a, 969 vector unsigned int __b) { 970 return (vector unsigned int)__a & __b; 971 } 972 973 static vector unsigned int __ATTRS_o_ai vec_vand(vector unsigned int __a, 974 vector bool int __b) { 975 return __a & (vector unsigned int)__b; 976 } 977 978 static vector bool int __ATTRS_o_ai vec_vand(vector bool int __a, 979 vector bool int __b) { 980 return __a & __b; 981 } 982 983 static vector float __ATTRS_o_ai vec_vand(vector float __a, vector float __b) { 984 vector unsigned int __res = 985 (vector unsigned int)__a & (vector unsigned int)__b; 986 return (vector float)__res; 987 } 988 989 static vector float __ATTRS_o_ai vec_vand(vector bool int __a, 990 vector float __b) { 991 vector unsigned int __res = 992 (vector unsigned int)__a & (vector unsigned int)__b; 993 return (vector float)__res; 994 } 995 996 static vector float __ATTRS_o_ai vec_vand(vector float __a, 997 vector bool int __b) { 998 vector unsigned int __res = 999 (vector unsigned int)__a & (vector unsigned int)__b; 1000 return (vector float)__res; 1001 } 1002 1003 #ifdef __VSX__ 1004 static vector signed long long __ATTRS_o_ai 1005 vec_vand(vector signed long long __a, vector signed long long __b) { 1006 return __a & __b; 1007 } 1008 1009 static vector signed long long __ATTRS_o_ai 1010 vec_vand(vector bool long long __a, vector signed long long __b) { 1011 return (vector signed long long)__a & __b; 1012 } 1013 1014 static vector signed long long __ATTRS_o_ai 1015 vec_vand(vector signed long long __a, vector bool long long __b) { 1016 return __a & (vector signed long long)__b; 1017 } 1018 1019 static vector unsigned long long __ATTRS_o_ai 1020 vec_vand(vector unsigned long long __a, vector unsigned long long __b) { 1021 return __a & __b; 1022 } 1023 1024 static vector unsigned long long __ATTRS_o_ai 1025 vec_vand(vector bool long long __a, vector unsigned long long __b) { 1026 return (vector unsigned long long)__a & __b; 1027 } 1028 1029 static vector unsigned long long __ATTRS_o_ai 1030 vec_vand(vector unsigned long long __a, vector bool long long __b) { 1031 return __a & (vector unsigned long long)__b; 1032 } 1033 1034 static vector bool long long __ATTRS_o_ai vec_vand(vector bool long long __a, 1035 vector bool long long __b) { 1036 return __a & __b; 1037 } 1038 #endif 1039 1040 /* vec_andc */ 1041 1042 #define __builtin_altivec_vandc vec_andc 1043 1044 static vector signed char __ATTRS_o_ai vec_andc(vector signed char __a, 1045 vector signed char __b) { 1046 return __a & ~__b; 1047 } 1048 1049 static vector signed char __ATTRS_o_ai vec_andc(vector bool char __a, 1050 vector signed char __b) { 1051 return (vector signed char)__a & ~__b; 1052 } 1053 1054 static vector signed char __ATTRS_o_ai vec_andc(vector signed char __a, 1055 vector bool char __b) { 1056 return __a & ~(vector signed char)__b; 1057 } 1058 1059 static vector unsigned char __ATTRS_o_ai vec_andc(vector unsigned char __a, 1060 vector unsigned char __b) { 1061 return __a & ~__b; 1062 } 1063 1064 static vector unsigned char __ATTRS_o_ai vec_andc(vector bool char __a, 1065 vector unsigned char __b) { 1066 return (vector unsigned char)__a & ~__b; 1067 } 1068 1069 static vector unsigned char __ATTRS_o_ai vec_andc(vector unsigned char __a, 1070 vector bool char __b) { 1071 return __a & ~(vector unsigned char)__b; 1072 } 1073 1074 static vector bool char __ATTRS_o_ai vec_andc(vector bool char __a, 1075 vector bool char __b) { 1076 return __a & ~__b; 1077 } 1078 1079 static vector short __ATTRS_o_ai vec_andc(vector short __a, vector short __b) { 1080 return __a & ~__b; 1081 } 1082 1083 static vector short __ATTRS_o_ai vec_andc(vector bool short __a, 1084 vector short __b) { 1085 return (vector short)__a & ~__b; 1086 } 1087 1088 static vector short __ATTRS_o_ai vec_andc(vector short __a, 1089 vector bool short __b) { 1090 return __a & ~(vector short)__b; 1091 } 1092 1093 static vector unsigned short __ATTRS_o_ai vec_andc(vector unsigned short __a, 1094 vector unsigned short __b) { 1095 return __a & ~__b; 1096 } 1097 1098 static vector unsigned short __ATTRS_o_ai vec_andc(vector bool short __a, 1099 vector unsigned short __b) { 1100 return (vector unsigned short)__a & ~__b; 1101 } 1102 1103 static vector unsigned short __ATTRS_o_ai vec_andc(vector unsigned short __a, 1104 vector bool short __b) { 1105 return __a & ~(vector unsigned short)__b; 1106 } 1107 1108 static vector bool short __ATTRS_o_ai vec_andc(vector bool short __a, 1109 vector bool short __b) { 1110 return __a & ~__b; 1111 } 1112 1113 static vector int __ATTRS_o_ai vec_andc(vector int __a, vector int __b) { 1114 return __a & ~__b; 1115 } 1116 1117 static vector int __ATTRS_o_ai vec_andc(vector bool int __a, vector int __b) { 1118 return (vector int)__a & ~__b; 1119 } 1120 1121 static vector int __ATTRS_o_ai vec_andc(vector int __a, vector bool int __b) { 1122 return __a & ~(vector int)__b; 1123 } 1124 1125 static vector unsigned int __ATTRS_o_ai vec_andc(vector unsigned int __a, 1126 vector unsigned int __b) { 1127 return __a & ~__b; 1128 } 1129 1130 static vector unsigned int __ATTRS_o_ai vec_andc(vector bool int __a, 1131 vector unsigned int __b) { 1132 return (vector unsigned int)__a & ~__b; 1133 } 1134 1135 static vector unsigned int __ATTRS_o_ai vec_andc(vector unsigned int __a, 1136 vector bool int __b) { 1137 return __a & ~(vector unsigned int)__b; 1138 } 1139 1140 static vector bool int __ATTRS_o_ai vec_andc(vector bool int __a, 1141 vector bool int __b) { 1142 return __a & ~__b; 1143 } 1144 1145 static vector float __ATTRS_o_ai vec_andc(vector float __a, vector float __b) { 1146 vector unsigned int __res = 1147 (vector unsigned int)__a & ~(vector unsigned int)__b; 1148 return (vector float)__res; 1149 } 1150 1151 static vector float __ATTRS_o_ai vec_andc(vector bool int __a, 1152 vector float __b) { 1153 vector unsigned int __res = 1154 (vector unsigned int)__a & ~(vector unsigned int)__b; 1155 return (vector float)__res; 1156 } 1157 1158 static vector float __ATTRS_o_ai vec_andc(vector float __a, 1159 vector bool int __b) { 1160 vector unsigned int __res = 1161 (vector unsigned int)__a & ~(vector unsigned int)__b; 1162 return (vector float)__res; 1163 } 1164 1165 #ifdef __VSX__ 1166 static vector double __ATTRS_o_ai 1167 vec_andc(vector bool long long __a, vector double __b) { 1168 vector unsigned long long __res = 1169 (vector unsigned long long)__a & ~(vector unsigned long long)__b; 1170 return (vector double)__res; 1171 } 1172 1173 static vector double __ATTRS_o_ai 1174 vec_andc(vector double __a, vector bool long long __b) { 1175 vector unsigned long long __res = 1176 (vector unsigned long long)__a & ~(vector unsigned long long)__b; 1177 return (vector double)__res; 1178 } 1179 1180 static vector double __ATTRS_o_ai vec_andc(vector double __a, vector double __b) { 1181 vector unsigned long long __res = 1182 (vector unsigned long long)__a & ~(vector unsigned long long)__b; 1183 return (vector double)__res; 1184 } 1185 1186 static vector signed long long __ATTRS_o_ai 1187 vec_andc(vector signed long long __a, vector signed long long __b) { 1188 return __a & ~__b; 1189 } 1190 1191 static vector signed long long __ATTRS_o_ai 1192 vec_andc(vector bool long long __a, vector signed long long __b) { 1193 return (vector signed long long)__a & ~__b; 1194 } 1195 1196 static vector signed long long __ATTRS_o_ai 1197 vec_andc(vector signed long long __a, vector bool long long __b) { 1198 return __a & ~(vector signed long long)__b; 1199 } 1200 1201 static vector unsigned long long __ATTRS_o_ai 1202 vec_andc(vector unsigned long long __a, vector unsigned long long __b) { 1203 return __a & ~__b; 1204 } 1205 1206 static vector unsigned long long __ATTRS_o_ai 1207 vec_andc(vector bool long long __a, vector unsigned long long __b) { 1208 return (vector unsigned long long)__a & ~__b; 1209 } 1210 1211 static vector unsigned long long __ATTRS_o_ai 1212 vec_andc(vector unsigned long long __a, vector bool long long __b) { 1213 return __a & ~(vector unsigned long long)__b; 1214 } 1215 1216 static vector bool long long __ATTRS_o_ai vec_andc(vector bool long long __a, 1217 vector bool long long __b) { 1218 return __a & ~__b; 1219 } 1220 #endif 1221 1222 /* vec_vandc */ 1223 1224 static vector signed char __ATTRS_o_ai vec_vandc(vector signed char __a, 1225 vector signed char __b) { 1226 return __a & ~__b; 1227 } 1228 1229 static vector signed char __ATTRS_o_ai vec_vandc(vector bool char __a, 1230 vector signed char __b) { 1231 return (vector signed char)__a & ~__b; 1232 } 1233 1234 static vector signed char __ATTRS_o_ai vec_vandc(vector signed char __a, 1235 vector bool char __b) { 1236 return __a & ~(vector signed char)__b; 1237 } 1238 1239 static vector unsigned char __ATTRS_o_ai vec_vandc(vector unsigned char __a, 1240 vector unsigned char __b) { 1241 return __a & ~__b; 1242 } 1243 1244 static vector unsigned char __ATTRS_o_ai vec_vandc(vector bool char __a, 1245 vector unsigned char __b) { 1246 return (vector unsigned char)__a & ~__b; 1247 } 1248 1249 static vector unsigned char __ATTRS_o_ai vec_vandc(vector unsigned char __a, 1250 vector bool char __b) { 1251 return __a & ~(vector unsigned char)__b; 1252 } 1253 1254 static vector bool char __ATTRS_o_ai vec_vandc(vector bool char __a, 1255 vector bool char __b) { 1256 return __a & ~__b; 1257 } 1258 1259 static vector short __ATTRS_o_ai vec_vandc(vector short __a, vector short __b) { 1260 return __a & ~__b; 1261 } 1262 1263 static vector short __ATTRS_o_ai vec_vandc(vector bool short __a, 1264 vector short __b) { 1265 return (vector short)__a & ~__b; 1266 } 1267 1268 static vector short __ATTRS_o_ai vec_vandc(vector short __a, 1269 vector bool short __b) { 1270 return __a & ~(vector short)__b; 1271 } 1272 1273 static vector unsigned short __ATTRS_o_ai vec_vandc(vector unsigned short __a, 1274 vector unsigned short __b) { 1275 return __a & ~__b; 1276 } 1277 1278 static vector unsigned short __ATTRS_o_ai vec_vandc(vector bool short __a, 1279 vector unsigned short __b) { 1280 return (vector unsigned short)__a & ~__b; 1281 } 1282 1283 static vector unsigned short __ATTRS_o_ai vec_vandc(vector unsigned short __a, 1284 vector bool short __b) { 1285 return __a & ~(vector unsigned short)__b; 1286 } 1287 1288 static vector bool short __ATTRS_o_ai vec_vandc(vector bool short __a, 1289 vector bool short __b) { 1290 return __a & ~__b; 1291 } 1292 1293 static vector int __ATTRS_o_ai vec_vandc(vector int __a, vector int __b) { 1294 return __a & ~__b; 1295 } 1296 1297 static vector int __ATTRS_o_ai vec_vandc(vector bool int __a, vector int __b) { 1298 return (vector int)__a & ~__b; 1299 } 1300 1301 static vector int __ATTRS_o_ai vec_vandc(vector int __a, vector bool int __b) { 1302 return __a & ~(vector int)__b; 1303 } 1304 1305 static vector unsigned int __ATTRS_o_ai vec_vandc(vector unsigned int __a, 1306 vector unsigned int __b) { 1307 return __a & ~__b; 1308 } 1309 1310 static vector unsigned int __ATTRS_o_ai vec_vandc(vector bool int __a, 1311 vector unsigned int __b) { 1312 return (vector unsigned int)__a & ~__b; 1313 } 1314 1315 static vector unsigned int __ATTRS_o_ai vec_vandc(vector unsigned int __a, 1316 vector bool int __b) { 1317 return __a & ~(vector unsigned int)__b; 1318 } 1319 1320 static vector bool int __ATTRS_o_ai vec_vandc(vector bool int __a, 1321 vector bool int __b) { 1322 return __a & ~__b; 1323 } 1324 1325 static vector float __ATTRS_o_ai vec_vandc(vector float __a, vector float __b) { 1326 vector unsigned int __res = 1327 (vector unsigned int)__a & ~(vector unsigned int)__b; 1328 return (vector float)__res; 1329 } 1330 1331 static vector float __ATTRS_o_ai vec_vandc(vector bool int __a, 1332 vector float __b) { 1333 vector unsigned int __res = 1334 (vector unsigned int)__a & ~(vector unsigned int)__b; 1335 return (vector float)__res; 1336 } 1337 1338 static vector float __ATTRS_o_ai vec_vandc(vector float __a, 1339 vector bool int __b) { 1340 vector unsigned int __res = 1341 (vector unsigned int)__a & ~(vector unsigned int)__b; 1342 return (vector float)__res; 1343 } 1344 1345 #ifdef __VSX__ 1346 static vector signed long long __ATTRS_o_ai 1347 vec_vandc(vector signed long long __a, vector signed long long __b) { 1348 return __a & ~__b; 1349 } 1350 1351 static vector signed long long __ATTRS_o_ai 1352 vec_vandc(vector bool long long __a, vector signed long long __b) { 1353 return (vector signed long long)__a & ~__b; 1354 } 1355 1356 static vector signed long long __ATTRS_o_ai 1357 vec_vandc(vector signed long long __a, vector bool long long __b) { 1358 return __a & ~(vector signed long long)__b; 1359 } 1360 1361 static vector unsigned long long __ATTRS_o_ai 1362 vec_vandc(vector unsigned long long __a, vector unsigned long long __b) { 1363 return __a & ~__b; 1364 } 1365 1366 static vector unsigned long long __ATTRS_o_ai 1367 vec_vandc(vector bool long long __a, vector unsigned long long __b) { 1368 return (vector unsigned long long)__a & ~__b; 1369 } 1370 1371 static vector unsigned long long __ATTRS_o_ai 1372 vec_vandc(vector unsigned long long __a, vector bool long long __b) { 1373 return __a & ~(vector unsigned long long)__b; 1374 } 1375 1376 static vector bool long long __ATTRS_o_ai vec_vandc(vector bool long long __a, 1377 vector bool long long __b) { 1378 return __a & ~__b; 1379 } 1380 #endif 1381 1382 /* vec_avg */ 1383 1384 static vector signed char __ATTRS_o_ai vec_avg(vector signed char __a, 1385 vector signed char __b) { 1386 return __builtin_altivec_vavgsb(__a, __b); 1387 } 1388 1389 static vector unsigned char __ATTRS_o_ai vec_avg(vector unsigned char __a, 1390 vector unsigned char __b) { 1391 return __builtin_altivec_vavgub(__a, __b); 1392 } 1393 1394 static vector short __ATTRS_o_ai vec_avg(vector short __a, vector short __b) { 1395 return __builtin_altivec_vavgsh(__a, __b); 1396 } 1397 1398 static vector unsigned short __ATTRS_o_ai vec_avg(vector unsigned short __a, 1399 vector unsigned short __b) { 1400 return __builtin_altivec_vavguh(__a, __b); 1401 } 1402 1403 static vector int __ATTRS_o_ai vec_avg(vector int __a, vector int __b) { 1404 return __builtin_altivec_vavgsw(__a, __b); 1405 } 1406 1407 static vector unsigned int __ATTRS_o_ai vec_avg(vector unsigned int __a, 1408 vector unsigned int __b) { 1409 return __builtin_altivec_vavguw(__a, __b); 1410 } 1411 1412 /* vec_vavgsb */ 1413 1414 static vector signed char __attribute__((__always_inline__)) 1415 vec_vavgsb(vector signed char __a, vector signed char __b) { 1416 return __builtin_altivec_vavgsb(__a, __b); 1417 } 1418 1419 /* vec_vavgub */ 1420 1421 static vector unsigned char __attribute__((__always_inline__)) 1422 vec_vavgub(vector unsigned char __a, vector unsigned char __b) { 1423 return __builtin_altivec_vavgub(__a, __b); 1424 } 1425 1426 /* vec_vavgsh */ 1427 1428 static vector short __attribute__((__always_inline__)) 1429 vec_vavgsh(vector short __a, vector short __b) { 1430 return __builtin_altivec_vavgsh(__a, __b); 1431 } 1432 1433 /* vec_vavguh */ 1434 1435 static vector unsigned short __attribute__((__always_inline__)) 1436 vec_vavguh(vector unsigned short __a, vector unsigned short __b) { 1437 return __builtin_altivec_vavguh(__a, __b); 1438 } 1439 1440 /* vec_vavgsw */ 1441 1442 static vector int __attribute__((__always_inline__)) 1443 vec_vavgsw(vector int __a, vector int __b) { 1444 return __builtin_altivec_vavgsw(__a, __b); 1445 } 1446 1447 /* vec_vavguw */ 1448 1449 static vector unsigned int __attribute__((__always_inline__)) 1450 vec_vavguw(vector unsigned int __a, vector unsigned int __b) { 1451 return __builtin_altivec_vavguw(__a, __b); 1452 } 1453 1454 /* vec_ceil */ 1455 1456 static vector float __ATTRS_o_ai vec_ceil(vector float __a) { 1457 #ifdef __VSX__ 1458 return __builtin_vsx_xvrspip(__a); 1459 #else 1460 return __builtin_altivec_vrfip(__a); 1461 #endif 1462 } 1463 1464 #ifdef __VSX__ 1465 static vector double __ATTRS_o_ai vec_ceil(vector double __a) { 1466 return __builtin_vsx_xvrdpip(__a); 1467 } 1468 #endif 1469 1470 /* vec_vrfip */ 1471 1472 static vector float __attribute__((__always_inline__)) 1473 vec_vrfip(vector float __a) { 1474 return __builtin_altivec_vrfip(__a); 1475 } 1476 1477 /* vec_cmpb */ 1478 1479 static vector int __attribute__((__always_inline__)) 1480 vec_cmpb(vector float __a, vector float __b) { 1481 return __builtin_altivec_vcmpbfp(__a, __b); 1482 } 1483 1484 /* vec_vcmpbfp */ 1485 1486 static vector int __attribute__((__always_inline__)) 1487 vec_vcmpbfp(vector float __a, vector float __b) { 1488 return __builtin_altivec_vcmpbfp(__a, __b); 1489 } 1490 1491 /* vec_cmpeq */ 1492 1493 static vector bool char __ATTRS_o_ai vec_cmpeq(vector signed char __a, 1494 vector signed char __b) { 1495 return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a, 1496 (vector char)__b); 1497 } 1498 1499 static vector bool char __ATTRS_o_ai vec_cmpeq(vector unsigned char __a, 1500 vector unsigned char __b) { 1501 return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a, 1502 (vector char)__b); 1503 } 1504 1505 static vector bool short __ATTRS_o_ai vec_cmpeq(vector short __a, 1506 vector short __b) { 1507 return (vector bool short)__builtin_altivec_vcmpequh(__a, __b); 1508 } 1509 1510 static vector bool short __ATTRS_o_ai vec_cmpeq(vector unsigned short __a, 1511 vector unsigned short __b) { 1512 return (vector bool short)__builtin_altivec_vcmpequh((vector short)__a, 1513 (vector short)__b); 1514 } 1515 1516 static vector bool int __ATTRS_o_ai vec_cmpeq(vector int __a, vector int __b) { 1517 return (vector bool int)__builtin_altivec_vcmpequw(__a, __b); 1518 } 1519 1520 static vector bool int __ATTRS_o_ai vec_cmpeq(vector unsigned int __a, 1521 vector unsigned int __b) { 1522 return (vector bool int)__builtin_altivec_vcmpequw((vector int)__a, 1523 (vector int)__b); 1524 } 1525 1526 #ifdef __POWER8_VECTOR__ 1527 static vector bool long long __ATTRS_o_ai 1528 vec_cmpeq(vector signed long long __a, vector signed long long __b) { 1529 return (vector bool long long)__builtin_altivec_vcmpequd(__a, __b); 1530 } 1531 1532 static vector bool long long __ATTRS_o_ai 1533 vec_cmpeq(vector unsigned long long __a, vector unsigned long long __b) { 1534 return (vector bool long long)__builtin_altivec_vcmpequd( 1535 (vector long long)__a, (vector long long)__b); 1536 } 1537 #endif 1538 1539 static vector bool int __ATTRS_o_ai vec_cmpeq(vector float __a, 1540 vector float __b) { 1541 #ifdef __VSX__ 1542 return (vector bool int)__builtin_vsx_xvcmpeqsp(__a, __b); 1543 #else 1544 return (vector bool int)__builtin_altivec_vcmpeqfp(__a, __b); 1545 #endif 1546 } 1547 1548 #ifdef __VSX__ 1549 static vector bool long long __ATTRS_o_ai 1550 vec_cmpeq(vector double __a, vector double __b) { 1551 return (vector bool long long)__builtin_vsx_xvcmpeqdp(__a, __b); 1552 } 1553 #endif 1554 1555 1556 /* vec_cmpgt */ 1557 1558 static vector bool char __ATTRS_o_ai vec_cmpgt(vector signed char __a, 1559 vector signed char __b) { 1560 return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b); 1561 } 1562 1563 static vector bool char __ATTRS_o_ai vec_cmpgt(vector unsigned char __a, 1564 vector unsigned char __b) { 1565 return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b); 1566 } 1567 1568 static vector bool short __ATTRS_o_ai vec_cmpgt(vector short __a, 1569 vector short __b) { 1570 return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b); 1571 } 1572 1573 static vector bool short __ATTRS_o_ai vec_cmpgt(vector unsigned short __a, 1574 vector unsigned short __b) { 1575 return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b); 1576 } 1577 1578 static vector bool int __ATTRS_o_ai vec_cmpgt(vector int __a, vector int __b) { 1579 return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b); 1580 } 1581 1582 static vector bool int __ATTRS_o_ai vec_cmpgt(vector unsigned int __a, 1583 vector unsigned int __b) { 1584 return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b); 1585 } 1586 1587 #ifdef __POWER8_VECTOR__ 1588 static vector bool long long __ATTRS_o_ai 1589 vec_cmpgt(vector signed long long __a, vector signed long long __b) { 1590 return (vector bool long long)__builtin_altivec_vcmpgtsd(__a, __b); 1591 } 1592 1593 static vector bool long long __ATTRS_o_ai 1594 vec_cmpgt(vector unsigned long long __a, vector unsigned long long __b) { 1595 return (vector bool long long)__builtin_altivec_vcmpgtud(__a, __b); 1596 } 1597 #endif 1598 1599 static vector bool int __ATTRS_o_ai vec_cmpgt(vector float __a, 1600 vector float __b) { 1601 #ifdef __VSX__ 1602 return (vector bool int)__builtin_vsx_xvcmpgtsp(__a, __b); 1603 #else 1604 return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b); 1605 #endif 1606 } 1607 1608 #ifdef __VSX__ 1609 static vector bool long long __ATTRS_o_ai 1610 vec_cmpgt(vector double __a, vector double __b) { 1611 return (vector bool long long)__builtin_vsx_xvcmpgtdp(__a, __b); 1612 } 1613 #endif 1614 1615 /* vec_cmpge */ 1616 1617 static vector bool char __ATTRS_o_ai 1618 vec_cmpge (vector signed char __a, vector signed char __b) { 1619 return ~(vec_cmpgt(__b, __a)); 1620 } 1621 1622 static vector bool char __ATTRS_o_ai 1623 vec_cmpge (vector unsigned char __a, vector unsigned char __b) { 1624 return ~(vec_cmpgt(__b, __a)); 1625 } 1626 1627 static vector bool short __ATTRS_o_ai 1628 vec_cmpge (vector signed short __a, vector signed short __b) { 1629 return ~(vec_cmpgt(__b, __a)); 1630 } 1631 1632 static vector bool short __ATTRS_o_ai 1633 vec_cmpge (vector unsigned short __a, vector unsigned short __b) { 1634 return ~(vec_cmpgt(__b, __a)); 1635 } 1636 1637 static vector bool int __ATTRS_o_ai 1638 vec_cmpge (vector signed int __a, vector signed int __b) { 1639 return ~(vec_cmpgt(__b, __a)); 1640 } 1641 1642 static vector bool int __ATTRS_o_ai 1643 vec_cmpge (vector unsigned int __a, vector unsigned int __b) { 1644 return ~(vec_cmpgt(__b, __a)); 1645 } 1646 1647 static vector bool int __ATTRS_o_ai 1648 vec_cmpge(vector float __a, vector float __b) { 1649 #ifdef __VSX__ 1650 return (vector bool int)__builtin_vsx_xvcmpgesp(__a, __b); 1651 #else 1652 return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b); 1653 #endif 1654 } 1655 1656 #ifdef __VSX__ 1657 static vector bool long long __ATTRS_o_ai 1658 vec_cmpge(vector double __a, vector double __b) { 1659 return (vector bool long long)__builtin_vsx_xvcmpgedp(__a, __b); 1660 } 1661 #endif 1662 1663 #ifdef __POWER8_VECTOR__ 1664 static vector bool long long __ATTRS_o_ai 1665 vec_cmpge(vector signed long long __a, vector signed long long __b) { 1666 return ~(vec_cmpgt(__b, __a)); 1667 } 1668 1669 static vector bool long long __ATTRS_o_ai 1670 vec_cmpge(vector unsigned long long __a, vector unsigned long long __b) { 1671 return ~(vec_cmpgt(__b, __a)); 1672 } 1673 #endif 1674 1675 /* vec_vcmpgefp */ 1676 1677 static vector bool int __attribute__((__always_inline__)) 1678 vec_vcmpgefp(vector float __a, vector float __b) { 1679 return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b); 1680 } 1681 1682 /* vec_vcmpgtsb */ 1683 1684 static vector bool char __attribute__((__always_inline__)) 1685 vec_vcmpgtsb(vector signed char __a, vector signed char __b) { 1686 return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b); 1687 } 1688 1689 /* vec_vcmpgtub */ 1690 1691 static vector bool char __attribute__((__always_inline__)) 1692 vec_vcmpgtub(vector unsigned char __a, vector unsigned char __b) { 1693 return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b); 1694 } 1695 1696 /* vec_vcmpgtsh */ 1697 1698 static vector bool short __attribute__((__always_inline__)) 1699 vec_vcmpgtsh(vector short __a, vector short __b) { 1700 return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b); 1701 } 1702 1703 /* vec_vcmpgtuh */ 1704 1705 static vector bool short __attribute__((__always_inline__)) 1706 vec_vcmpgtuh(vector unsigned short __a, vector unsigned short __b) { 1707 return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b); 1708 } 1709 1710 /* vec_vcmpgtsw */ 1711 1712 static vector bool int __attribute__((__always_inline__)) 1713 vec_vcmpgtsw(vector int __a, vector int __b) { 1714 return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b); 1715 } 1716 1717 /* vec_vcmpgtuw */ 1718 1719 static vector bool int __attribute__((__always_inline__)) 1720 vec_vcmpgtuw(vector unsigned int __a, vector unsigned int __b) { 1721 return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b); 1722 } 1723 1724 /* vec_vcmpgtfp */ 1725 1726 static vector bool int __attribute__((__always_inline__)) 1727 vec_vcmpgtfp(vector float __a, vector float __b) { 1728 return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b); 1729 } 1730 1731 /* vec_cmple */ 1732 1733 static vector bool char __ATTRS_o_ai 1734 vec_cmple (vector signed char __a, vector signed char __b) { 1735 return vec_cmpge(__b, __a); 1736 } 1737 1738 static vector bool char __ATTRS_o_ai 1739 vec_cmple (vector unsigned char __a, vector unsigned char __b) { 1740 return vec_cmpge(__b, __a); 1741 } 1742 1743 static vector bool short __ATTRS_o_ai 1744 vec_cmple (vector signed short __a, vector signed short __b) { 1745 return vec_cmpge(__b, __a); 1746 } 1747 1748 static vector bool short __ATTRS_o_ai 1749 vec_cmple (vector unsigned short __a, vector unsigned short __b) { 1750 return vec_cmpge(__b, __a); 1751 } 1752 1753 static vector bool int __ATTRS_o_ai 1754 vec_cmple (vector signed int __a, vector signed int __b) { 1755 return vec_cmpge(__b, __a); 1756 } 1757 1758 static vector bool int __ATTRS_o_ai 1759 vec_cmple (vector unsigned int __a, vector unsigned int __b) { 1760 return vec_cmpge(__b, __a); 1761 } 1762 1763 static vector bool int __ATTRS_o_ai 1764 vec_cmple(vector float __a, vector float __b) { 1765 return vec_cmpge(__b, __a); 1766 } 1767 1768 #ifdef __VSX__ 1769 static vector bool long long __ATTRS_o_ai 1770 vec_cmple(vector double __a, vector double __b) { 1771 return vec_cmpge(__b, __a); 1772 } 1773 #endif 1774 1775 #ifdef __POWER8_VECTOR__ 1776 static vector bool long long __ATTRS_o_ai 1777 vec_cmple(vector signed long long __a, vector signed long long __b) { 1778 return vec_cmpge(__b, __a); 1779 } 1780 1781 static vector bool long long __ATTRS_o_ai 1782 vec_cmple(vector unsigned long long __a, vector unsigned long long __b) { 1783 return vec_cmpge(__b, __a); 1784 } 1785 #endif 1786 1787 /* vec_cmplt */ 1788 1789 static vector bool char __ATTRS_o_ai vec_cmplt(vector signed char __a, 1790 vector signed char __b) { 1791 return vec_cmpgt(__b, __a); 1792 } 1793 1794 static vector bool char __ATTRS_o_ai vec_cmplt(vector unsigned char __a, 1795 vector unsigned char __b) { 1796 return vec_cmpgt(__b, __a); 1797 } 1798 1799 static vector bool short __ATTRS_o_ai vec_cmplt(vector short __a, 1800 vector short __b) { 1801 return vec_cmpgt(__b, __a); 1802 } 1803 1804 static vector bool short __ATTRS_o_ai vec_cmplt(vector unsigned short __a, 1805 vector unsigned short __b) { 1806 return vec_cmpgt(__b, __a); 1807 } 1808 1809 static vector bool int __ATTRS_o_ai vec_cmplt(vector int __a, vector int __b) { 1810 return vec_cmpgt(__b, __a); 1811 } 1812 1813 static vector bool int __ATTRS_o_ai vec_cmplt(vector unsigned int __a, 1814 vector unsigned int __b) { 1815 return vec_cmpgt(__b, __a); 1816 } 1817 1818 static vector bool int __ATTRS_o_ai vec_cmplt(vector float __a, 1819 vector float __b) { 1820 return vec_cmpgt(__b, __a); 1821 } 1822 1823 #ifdef __VSX__ 1824 static vector bool long long __ATTRS_o_ai 1825 vec_cmplt(vector double __a, vector double __b) { 1826 return vec_cmpgt(__b, __a); 1827 } 1828 #endif 1829 1830 #ifdef __POWER8_VECTOR__ 1831 static vector bool long long __ATTRS_o_ai 1832 vec_cmplt(vector signed long long __a, vector signed long long __b) { 1833 return vec_cmpgt(__b, __a); 1834 } 1835 1836 static vector bool long long __ATTRS_o_ai 1837 vec_cmplt(vector unsigned long long __a, vector unsigned long long __b) { 1838 return vec_cmpgt(__b, __a); 1839 } 1840 1841 /* vec_cntlz */ 1842 1843 static vector signed char __ATTRS_o_ai vec_cntlz(vector signed char __a) { 1844 return __builtin_altivec_vclzb(__a); 1845 } 1846 static vector unsigned char __ATTRS_o_ai vec_cntlz(vector unsigned char __a) { 1847 return __builtin_altivec_vclzb(__a); 1848 } 1849 static vector signed short __ATTRS_o_ai vec_cntlz(vector signed short __a) { 1850 return __builtin_altivec_vclzh(__a); 1851 } 1852 static vector unsigned short __ATTRS_o_ai vec_cntlz(vector unsigned short __a) { 1853 return __builtin_altivec_vclzh(__a); 1854 } 1855 static vector signed int __ATTRS_o_ai vec_cntlz(vector signed int __a) { 1856 return __builtin_altivec_vclzw(__a); 1857 } 1858 static vector unsigned int __ATTRS_o_ai vec_cntlz(vector unsigned int __a) { 1859 return __builtin_altivec_vclzw(__a); 1860 } 1861 static vector signed long long __ATTRS_o_ai 1862 vec_cntlz(vector signed long long __a) { 1863 return __builtin_altivec_vclzd(__a); 1864 } 1865 static vector unsigned long long __ATTRS_o_ai 1866 vec_cntlz(vector unsigned long long __a) { 1867 return __builtin_altivec_vclzd(__a); 1868 } 1869 #endif 1870 1871 /* vec_cpsgn */ 1872 1873 #ifdef __VSX__ 1874 static vector float __ATTRS_o_ai vec_cpsgn(vector float __a, vector float __b) { 1875 return __builtin_vsx_xvcpsgnsp(__a, __b); 1876 } 1877 1878 static vector double __ATTRS_o_ai vec_cpsgn(vector double __a, 1879 vector double __b) { 1880 return __builtin_vsx_xvcpsgndp(__a, __b); 1881 } 1882 #endif 1883 1884 /* vec_ctf */ 1885 1886 static vector float __ATTRS_o_ai vec_ctf(vector int __a, int __b) { 1887 return __builtin_altivec_vcfsx(__a, __b); 1888 } 1889 1890 static vector float __ATTRS_o_ai vec_ctf(vector unsigned int __a, int __b) { 1891 return __builtin_altivec_vcfux((vector int)__a, __b); 1892 } 1893 1894 /* vec_vcfsx */ 1895 1896 static vector float __attribute__((__always_inline__)) 1897 vec_vcfsx(vector int __a, int __b) { 1898 return __builtin_altivec_vcfsx(__a, __b); 1899 } 1900 1901 /* vec_vcfux */ 1902 1903 static vector float __attribute__((__always_inline__)) 1904 vec_vcfux(vector unsigned int __a, int __b) { 1905 return __builtin_altivec_vcfux((vector int)__a, __b); 1906 } 1907 1908 /* vec_cts */ 1909 1910 static vector int __attribute__((__always_inline__)) 1911 vec_cts(vector float __a, int __b) { 1912 return __builtin_altivec_vctsxs(__a, __b); 1913 } 1914 1915 /* vec_vctsxs */ 1916 1917 static vector int __attribute__((__always_inline__)) 1918 vec_vctsxs(vector float __a, int __b) { 1919 return __builtin_altivec_vctsxs(__a, __b); 1920 } 1921 1922 /* vec_ctu */ 1923 1924 static vector unsigned int __attribute__((__always_inline__)) 1925 vec_ctu(vector float __a, int __b) { 1926 return __builtin_altivec_vctuxs(__a, __b); 1927 } 1928 1929 /* vec_vctuxs */ 1930 1931 static vector unsigned int __attribute__((__always_inline__)) 1932 vec_vctuxs(vector float __a, int __b) { 1933 return __builtin_altivec_vctuxs(__a, __b); 1934 } 1935 1936 /* vec_double */ 1937 1938 #ifdef __VSX__ 1939 static vector double __ATTRS_o_ai vec_double (vector signed long long __a) { 1940 vector double __ret = { __a[0], __a[1] }; 1941 return __ret; 1942 } 1943 1944 static vector double __ATTRS_o_ai vec_double (vector unsigned long long __a) { 1945 vector double __ret = { __a[0], __a[1] }; 1946 return __ret; 1947 } 1948 #endif 1949 1950 /* vec_div */ 1951 1952 /* Integer vector divides (vectors are scalarized, elements divided 1953 and the vectors reassembled). 1954 */ 1955 static vector signed char __ATTRS_o_ai vec_div(vector signed char __a, 1956 vector signed char __b) { 1957 return __a / __b; 1958 } 1959 1960 static vector unsigned char __ATTRS_o_ai vec_div(vector unsigned char __a, 1961 vector unsigned char __b) { 1962 return __a / __b; 1963 } 1964 1965 static vector signed short __ATTRS_o_ai vec_div(vector signed short __a, 1966 vector signed short __b) { 1967 return __a / __b; 1968 } 1969 1970 static vector unsigned short __ATTRS_o_ai vec_div(vector unsigned short __a, 1971 vector unsigned short __b) { 1972 return __a / __b; 1973 } 1974 1975 static vector signed int __ATTRS_o_ai vec_div(vector signed int __a, 1976 vector signed int __b) { 1977 return __a / __b; 1978 } 1979 1980 static vector unsigned int __ATTRS_o_ai vec_div(vector unsigned int __a, 1981 vector unsigned int __b) { 1982 return __a / __b; 1983 } 1984 1985 #ifdef __VSX__ 1986 static vector signed long long __ATTRS_o_ai 1987 vec_div(vector signed long long __a, vector signed long long __b) { 1988 return __a / __b; 1989 } 1990 1991 static vector unsigned long long __ATTRS_o_ai 1992 vec_div(vector unsigned long long __a, vector unsigned long long __b) { 1993 return __a / __b; 1994 } 1995 1996 static vector float __ATTRS_o_ai vec_div(vector float __a, vector float __b) { 1997 return __a / __b; 1998 } 1999 2000 static vector double __ATTRS_o_ai vec_div(vector double __a, 2001 vector double __b) { 2002 return __a / __b; 2003 } 2004 #endif 2005 2006 /* vec_dss */ 2007 2008 static void __attribute__((__always_inline__)) vec_dss(int __a) { 2009 __builtin_altivec_dss(__a); 2010 } 2011 2012 /* vec_dssall */ 2013 2014 static void __attribute__((__always_inline__)) vec_dssall(void) { 2015 __builtin_altivec_dssall(); 2016 } 2017 2018 /* vec_dst */ 2019 2020 static void __attribute__((__always_inline__)) 2021 vec_dst(const void *__a, int __b, int __c) { 2022 __builtin_altivec_dst(__a, __b, __c); 2023 } 2024 2025 /* vec_dstst */ 2026 2027 static void __attribute__((__always_inline__)) 2028 vec_dstst(const void *__a, int __b, int __c) { 2029 __builtin_altivec_dstst(__a, __b, __c); 2030 } 2031 2032 /* vec_dststt */ 2033 2034 static void __attribute__((__always_inline__)) 2035 vec_dststt(const void *__a, int __b, int __c) { 2036 __builtin_altivec_dststt(__a, __b, __c); 2037 } 2038 2039 /* vec_dstt */ 2040 2041 static void __attribute__((__always_inline__)) 2042 vec_dstt(const void *__a, int __b, int __c) { 2043 __builtin_altivec_dstt(__a, __b, __c); 2044 } 2045 2046 /* vec_eqv */ 2047 2048 #ifdef __POWER8_VECTOR__ 2049 static vector signed char __ATTRS_o_ai vec_eqv(vector signed char __a, 2050 vector signed char __b) { 2051 return (vector signed char)__builtin_vsx_xxleqv((vector unsigned int)__a, 2052 (vector unsigned int)__b); 2053 } 2054 2055 static vector unsigned char __ATTRS_o_ai vec_eqv(vector unsigned char __a, 2056 vector unsigned char __b) { 2057 return (vector unsigned char)__builtin_vsx_xxleqv((vector unsigned int)__a, 2058 (vector unsigned int)__b); 2059 } 2060 2061 static vector bool char __ATTRS_o_ai vec_eqv(vector bool char __a, 2062 vector bool char __b) { 2063 return (vector bool char)__builtin_vsx_xxleqv((vector unsigned int)__a, 2064 (vector unsigned int)__b); 2065 } 2066 2067 static vector signed short __ATTRS_o_ai vec_eqv(vector signed short __a, 2068 vector signed short __b) { 2069 return (vector signed short)__builtin_vsx_xxleqv((vector unsigned int)__a, 2070 (vector unsigned int)__b); 2071 } 2072 2073 static vector unsigned short __ATTRS_o_ai vec_eqv(vector unsigned short __a, 2074 vector unsigned short __b) { 2075 return (vector unsigned short)__builtin_vsx_xxleqv((vector unsigned int)__a, 2076 (vector unsigned int)__b); 2077 } 2078 2079 static vector bool short __ATTRS_o_ai vec_eqv(vector bool short __a, 2080 vector bool short __b) { 2081 return (vector bool short)__builtin_vsx_xxleqv((vector unsigned int)__a, 2082 (vector unsigned int)__b); 2083 } 2084 2085 static vector signed int __ATTRS_o_ai vec_eqv(vector signed int __a, 2086 vector signed int __b) { 2087 return (vector signed int)__builtin_vsx_xxleqv((vector unsigned int)__a, 2088 (vector unsigned int)__b); 2089 } 2090 2091 static vector unsigned int __ATTRS_o_ai vec_eqv(vector unsigned int __a, 2092 vector unsigned int __b) { 2093 return __builtin_vsx_xxleqv(__a, __b); 2094 } 2095 2096 static vector bool int __ATTRS_o_ai vec_eqv(vector bool int __a, 2097 vector bool int __b) { 2098 return (vector bool int)__builtin_vsx_xxleqv((vector unsigned int)__a, 2099 (vector unsigned int)__b); 2100 } 2101 2102 static vector signed long long __ATTRS_o_ai 2103 vec_eqv(vector signed long long __a, vector signed long long __b) { 2104 return (vector signed long long) 2105 __builtin_vsx_xxleqv((vector unsigned int)__a, (vector unsigned int)__b); 2106 } 2107 2108 static vector unsigned long long __ATTRS_o_ai 2109 vec_eqv(vector unsigned long long __a, vector unsigned long long __b) { 2110 return (vector unsigned long long) 2111 __builtin_vsx_xxleqv((vector unsigned int)__a, (vector unsigned int)__b); 2112 } 2113 2114 static vector bool long long __ATTRS_o_ai 2115 vec_eqv(vector bool long long __a, vector bool long long __b) { 2116 return (vector bool long long) 2117 __builtin_vsx_xxleqv((vector unsigned int)__a, (vector unsigned int)__b); 2118 } 2119 2120 static vector float __ATTRS_o_ai vec_eqv(vector float __a, vector float __b) { 2121 return (vector float)__builtin_vsx_xxleqv((vector unsigned int)__a, 2122 (vector unsigned int)__b); 2123 } 2124 2125 static vector double __ATTRS_o_ai vec_eqv(vector double __a, 2126 vector double __b) { 2127 return (vector double)__builtin_vsx_xxleqv((vector unsigned int)__a, 2128 (vector unsigned int)__b); 2129 } 2130 #endif 2131 2132 /* vec_expte */ 2133 2134 static vector float __attribute__((__always_inline__)) 2135 vec_expte(vector float __a) { 2136 return __builtin_altivec_vexptefp(__a); 2137 } 2138 2139 /* vec_vexptefp */ 2140 2141 static vector float __attribute__((__always_inline__)) 2142 vec_vexptefp(vector float __a) { 2143 return __builtin_altivec_vexptefp(__a); 2144 } 2145 2146 /* vec_floor */ 2147 2148 static vector float __ATTRS_o_ai vec_floor(vector float __a) { 2149 #ifdef __VSX__ 2150 return __builtin_vsx_xvrspim(__a); 2151 #else 2152 return __builtin_altivec_vrfim(__a); 2153 #endif 2154 } 2155 2156 #ifdef __VSX__ 2157 static vector double __ATTRS_o_ai vec_floor(vector double __a) { 2158 return __builtin_vsx_xvrdpim(__a); 2159 } 2160 #endif 2161 2162 /* vec_vrfim */ 2163 2164 static vector float __attribute__((__always_inline__)) 2165 vec_vrfim(vector float __a) { 2166 return __builtin_altivec_vrfim(__a); 2167 } 2168 2169 /* vec_ld */ 2170 2171 static vector signed char __ATTRS_o_ai vec_ld(int __a, 2172 const vector signed char *__b) { 2173 return (vector signed char)__builtin_altivec_lvx(__a, __b); 2174 } 2175 2176 static vector signed char __ATTRS_o_ai vec_ld(int __a, const signed char *__b) { 2177 return (vector signed char)__builtin_altivec_lvx(__a, __b); 2178 } 2179 2180 static vector unsigned char __ATTRS_o_ai 2181 vec_ld(int __a, const vector unsigned char *__b) { 2182 return (vector unsigned char)__builtin_altivec_lvx(__a, __b); 2183 } 2184 2185 static vector unsigned char __ATTRS_o_ai vec_ld(int __a, 2186 const unsigned char *__b) { 2187 return (vector unsigned char)__builtin_altivec_lvx(__a, __b); 2188 } 2189 2190 static vector bool char __ATTRS_o_ai vec_ld(int __a, 2191 const vector bool char *__b) { 2192 return (vector bool char)__builtin_altivec_lvx(__a, __b); 2193 } 2194 2195 static vector short __ATTRS_o_ai vec_ld(int __a, const vector short *__b) { 2196 return (vector short)__builtin_altivec_lvx(__a, __b); 2197 } 2198 2199 static vector short __ATTRS_o_ai vec_ld(int __a, const short *__b) { 2200 return (vector short)__builtin_altivec_lvx(__a, __b); 2201 } 2202 2203 static vector unsigned short __ATTRS_o_ai 2204 vec_ld(int __a, const vector unsigned short *__b) { 2205 return (vector unsigned short)__builtin_altivec_lvx(__a, __b); 2206 } 2207 2208 static vector unsigned short __ATTRS_o_ai vec_ld(int __a, 2209 const unsigned short *__b) { 2210 return (vector unsigned short)__builtin_altivec_lvx(__a, __b); 2211 } 2212 2213 static vector bool short __ATTRS_o_ai vec_ld(int __a, 2214 const vector bool short *__b) { 2215 return (vector bool short)__builtin_altivec_lvx(__a, __b); 2216 } 2217 2218 static vector pixel __ATTRS_o_ai vec_ld(int __a, const vector pixel *__b) { 2219 return (vector pixel)__builtin_altivec_lvx(__a, __b); 2220 } 2221 2222 static vector int __ATTRS_o_ai vec_ld(int __a, const vector int *__b) { 2223 return (vector int)__builtin_altivec_lvx(__a, __b); 2224 } 2225 2226 static vector int __ATTRS_o_ai vec_ld(int __a, const int *__b) { 2227 return (vector int)__builtin_altivec_lvx(__a, __b); 2228 } 2229 2230 static vector unsigned int __ATTRS_o_ai vec_ld(int __a, 2231 const vector unsigned int *__b) { 2232 return (vector unsigned int)__builtin_altivec_lvx(__a, __b); 2233 } 2234 2235 static vector unsigned int __ATTRS_o_ai vec_ld(int __a, 2236 const unsigned int *__b) { 2237 return (vector unsigned int)__builtin_altivec_lvx(__a, __b); 2238 } 2239 2240 static vector bool int __ATTRS_o_ai vec_ld(int __a, 2241 const vector bool int *__b) { 2242 return (vector bool int)__builtin_altivec_lvx(__a, __b); 2243 } 2244 2245 static vector float __ATTRS_o_ai vec_ld(int __a, const vector float *__b) { 2246 return (vector float)__builtin_altivec_lvx(__a, __b); 2247 } 2248 2249 static vector float __ATTRS_o_ai vec_ld(int __a, const float *__b) { 2250 return (vector float)__builtin_altivec_lvx(__a, __b); 2251 } 2252 2253 /* vec_lvx */ 2254 2255 static vector signed char __ATTRS_o_ai vec_lvx(int __a, 2256 const vector signed char *__b) { 2257 return (vector signed char)__builtin_altivec_lvx(__a, __b); 2258 } 2259 2260 static vector signed char __ATTRS_o_ai vec_lvx(int __a, 2261 const signed char *__b) { 2262 return (vector signed char)__builtin_altivec_lvx(__a, __b); 2263 } 2264 2265 static vector unsigned char __ATTRS_o_ai 2266 vec_lvx(int __a, const vector unsigned char *__b) { 2267 return (vector unsigned char)__builtin_altivec_lvx(__a, __b); 2268 } 2269 2270 static vector unsigned char __ATTRS_o_ai vec_lvx(int __a, 2271 const unsigned char *__b) { 2272 return (vector unsigned char)__builtin_altivec_lvx(__a, __b); 2273 } 2274 2275 static vector bool char __ATTRS_o_ai vec_lvx(int __a, 2276 const vector bool char *__b) { 2277 return (vector bool char)__builtin_altivec_lvx(__a, __b); 2278 } 2279 2280 static vector short __ATTRS_o_ai vec_lvx(int __a, const vector short *__b) { 2281 return (vector short)__builtin_altivec_lvx(__a, __b); 2282 } 2283 2284 static vector short __ATTRS_o_ai vec_lvx(int __a, const short *__b) { 2285 return (vector short)__builtin_altivec_lvx(__a, __b); 2286 } 2287 2288 static vector unsigned short __ATTRS_o_ai 2289 vec_lvx(int __a, const vector unsigned short *__b) { 2290 return (vector unsigned short)__builtin_altivec_lvx(__a, __b); 2291 } 2292 2293 static vector unsigned short __ATTRS_o_ai vec_lvx(int __a, 2294 const unsigned short *__b) { 2295 return (vector unsigned short)__builtin_altivec_lvx(__a, __b); 2296 } 2297 2298 static vector bool short __ATTRS_o_ai vec_lvx(int __a, 2299 const vector bool short *__b) { 2300 return (vector bool short)__builtin_altivec_lvx(__a, __b); 2301 } 2302 2303 static vector pixel __ATTRS_o_ai vec_lvx(int __a, const vector pixel *__b) { 2304 return (vector pixel)__builtin_altivec_lvx(__a, __b); 2305 } 2306 2307 static vector int __ATTRS_o_ai vec_lvx(int __a, const vector int *__b) { 2308 return (vector int)__builtin_altivec_lvx(__a, __b); 2309 } 2310 2311 static vector int __ATTRS_o_ai vec_lvx(int __a, const int *__b) { 2312 return (vector int)__builtin_altivec_lvx(__a, __b); 2313 } 2314 2315 static vector unsigned int __ATTRS_o_ai 2316 vec_lvx(int __a, const vector unsigned int *__b) { 2317 return (vector unsigned int)__builtin_altivec_lvx(__a, __b); 2318 } 2319 2320 static vector unsigned int __ATTRS_o_ai vec_lvx(int __a, 2321 const unsigned int *__b) { 2322 return (vector unsigned int)__builtin_altivec_lvx(__a, __b); 2323 } 2324 2325 static vector bool int __ATTRS_o_ai vec_lvx(int __a, 2326 const vector bool int *__b) { 2327 return (vector bool int)__builtin_altivec_lvx(__a, __b); 2328 } 2329 2330 static vector float __ATTRS_o_ai vec_lvx(int __a, const vector float *__b) { 2331 return (vector float)__builtin_altivec_lvx(__a, __b); 2332 } 2333 2334 static vector float __ATTRS_o_ai vec_lvx(int __a, const float *__b) { 2335 return (vector float)__builtin_altivec_lvx(__a, __b); 2336 } 2337 2338 /* vec_lde */ 2339 2340 static vector signed char __ATTRS_o_ai vec_lde(int __a, 2341 const signed char *__b) { 2342 return (vector signed char)__builtin_altivec_lvebx(__a, __b); 2343 } 2344 2345 static vector unsigned char __ATTRS_o_ai vec_lde(int __a, 2346 const unsigned char *__b) { 2347 return (vector unsigned char)__builtin_altivec_lvebx(__a, __b); 2348 } 2349 2350 static vector short __ATTRS_o_ai vec_lde(int __a, const short *__b) { 2351 return (vector short)__builtin_altivec_lvehx(__a, __b); 2352 } 2353 2354 static vector unsigned short __ATTRS_o_ai vec_lde(int __a, 2355 const unsigned short *__b) { 2356 return (vector unsigned short)__builtin_altivec_lvehx(__a, __b); 2357 } 2358 2359 static vector int __ATTRS_o_ai vec_lde(int __a, const int *__b) { 2360 return (vector int)__builtin_altivec_lvewx(__a, __b); 2361 } 2362 2363 static vector unsigned int __ATTRS_o_ai vec_lde(int __a, 2364 const unsigned int *__b) { 2365 return (vector unsigned int)__builtin_altivec_lvewx(__a, __b); 2366 } 2367 2368 static vector float __ATTRS_o_ai vec_lde(int __a, const float *__b) { 2369 return (vector float)__builtin_altivec_lvewx(__a, __b); 2370 } 2371 2372 /* vec_lvebx */ 2373 2374 static vector signed char __ATTRS_o_ai vec_lvebx(int __a, 2375 const signed char *__b) { 2376 return (vector signed char)__builtin_altivec_lvebx(__a, __b); 2377 } 2378 2379 static vector unsigned char __ATTRS_o_ai vec_lvebx(int __a, 2380 const unsigned char *__b) { 2381 return (vector unsigned char)__builtin_altivec_lvebx(__a, __b); 2382 } 2383 2384 /* vec_lvehx */ 2385 2386 static vector short __ATTRS_o_ai vec_lvehx(int __a, const short *__b) { 2387 return (vector short)__builtin_altivec_lvehx(__a, __b); 2388 } 2389 2390 static vector unsigned short __ATTRS_o_ai vec_lvehx(int __a, 2391 const unsigned short *__b) { 2392 return (vector unsigned short)__builtin_altivec_lvehx(__a, __b); 2393 } 2394 2395 /* vec_lvewx */ 2396 2397 static vector int __ATTRS_o_ai vec_lvewx(int __a, const int *__b) { 2398 return (vector int)__builtin_altivec_lvewx(__a, __b); 2399 } 2400 2401 static vector unsigned int __ATTRS_o_ai vec_lvewx(int __a, 2402 const unsigned int *__b) { 2403 return (vector unsigned int)__builtin_altivec_lvewx(__a, __b); 2404 } 2405 2406 static vector float __ATTRS_o_ai vec_lvewx(int __a, const float *__b) { 2407 return (vector float)__builtin_altivec_lvewx(__a, __b); 2408 } 2409 2410 /* vec_ldl */ 2411 2412 static vector signed char __ATTRS_o_ai vec_ldl(int __a, 2413 const vector signed char *__b) { 2414 return (vector signed char)__builtin_altivec_lvxl(__a, __b); 2415 } 2416 2417 static vector signed char __ATTRS_o_ai vec_ldl(int __a, 2418 const signed char *__b) { 2419 return (vector signed char)__builtin_altivec_lvxl(__a, __b); 2420 } 2421 2422 static vector unsigned char __ATTRS_o_ai 2423 vec_ldl(int __a, const vector unsigned char *__b) { 2424 return (vector unsigned char)__builtin_altivec_lvxl(__a, __b); 2425 } 2426 2427 static vector unsigned char __ATTRS_o_ai vec_ldl(int __a, 2428 const unsigned char *__b) { 2429 return (vector unsigned char)__builtin_altivec_lvxl(__a, __b); 2430 } 2431 2432 static vector bool char __ATTRS_o_ai vec_ldl(int __a, 2433 const vector bool char *__b) { 2434 return (vector bool char)__builtin_altivec_lvxl(__a, __b); 2435 } 2436 2437 static vector short __ATTRS_o_ai vec_ldl(int __a, const vector short *__b) { 2438 return (vector short)__builtin_altivec_lvxl(__a, __b); 2439 } 2440 2441 static vector short __ATTRS_o_ai vec_ldl(int __a, const short *__b) { 2442 return (vector short)__builtin_altivec_lvxl(__a, __b); 2443 } 2444 2445 static vector unsigned short __ATTRS_o_ai 2446 vec_ldl(int __a, const vector unsigned short *__b) { 2447 return (vector unsigned short)__builtin_altivec_lvxl(__a, __b); 2448 } 2449 2450 static vector unsigned short __ATTRS_o_ai vec_ldl(int __a, 2451 const unsigned short *__b) { 2452 return (vector unsigned short)__builtin_altivec_lvxl(__a, __b); 2453 } 2454 2455 static vector bool short __ATTRS_o_ai vec_ldl(int __a, 2456 const vector bool short *__b) { 2457 return (vector bool short)__builtin_altivec_lvxl(__a, __b); 2458 } 2459 2460 static vector pixel __ATTRS_o_ai vec_ldl(int __a, const vector pixel *__b) { 2461 return (vector pixel short)__builtin_altivec_lvxl(__a, __b); 2462 } 2463 2464 static vector int __ATTRS_o_ai vec_ldl(int __a, const vector int *__b) { 2465 return (vector int)__builtin_altivec_lvxl(__a, __b); 2466 } 2467 2468 static vector int __ATTRS_o_ai vec_ldl(int __a, const int *__b) { 2469 return (vector int)__builtin_altivec_lvxl(__a, __b); 2470 } 2471 2472 static vector unsigned int __ATTRS_o_ai 2473 vec_ldl(int __a, const vector unsigned int *__b) { 2474 return (vector unsigned int)__builtin_altivec_lvxl(__a, __b); 2475 } 2476 2477 static vector unsigned int __ATTRS_o_ai vec_ldl(int __a, 2478 const unsigned int *__b) { 2479 return (vector unsigned int)__builtin_altivec_lvxl(__a, __b); 2480 } 2481 2482 static vector bool int __ATTRS_o_ai vec_ldl(int __a, 2483 const vector bool int *__b) { 2484 return (vector bool int)__builtin_altivec_lvxl(__a, __b); 2485 } 2486 2487 static vector float __ATTRS_o_ai vec_ldl(int __a, const vector float *__b) { 2488 return (vector float)__builtin_altivec_lvxl(__a, __b); 2489 } 2490 2491 static vector float __ATTRS_o_ai vec_ldl(int __a, const float *__b) { 2492 return (vector float)__builtin_altivec_lvxl(__a, __b); 2493 } 2494 2495 /* vec_lvxl */ 2496 2497 static vector signed char __ATTRS_o_ai vec_lvxl(int __a, 2498 const vector signed char *__b) { 2499 return (vector signed char)__builtin_altivec_lvxl(__a, __b); 2500 } 2501 2502 static vector signed char __ATTRS_o_ai vec_lvxl(int __a, 2503 const signed char *__b) { 2504 return (vector signed char)__builtin_altivec_lvxl(__a, __b); 2505 } 2506 2507 static vector unsigned char __ATTRS_o_ai 2508 vec_lvxl(int __a, const vector unsigned char *__b) { 2509 return (vector unsigned char)__builtin_altivec_lvxl(__a, __b); 2510 } 2511 2512 static vector unsigned char __ATTRS_o_ai vec_lvxl(int __a, 2513 const unsigned char *__b) { 2514 return (vector unsigned char)__builtin_altivec_lvxl(__a, __b); 2515 } 2516 2517 static vector bool char __ATTRS_o_ai vec_lvxl(int __a, 2518 const vector bool char *__b) { 2519 return (vector bool char)__builtin_altivec_lvxl(__a, __b); 2520 } 2521 2522 static vector short __ATTRS_o_ai vec_lvxl(int __a, const vector short *__b) { 2523 return (vector short)__builtin_altivec_lvxl(__a, __b); 2524 } 2525 2526 static vector short __ATTRS_o_ai vec_lvxl(int __a, const short *__b) { 2527 return (vector short)__builtin_altivec_lvxl(__a, __b); 2528 } 2529 2530 static vector unsigned short __ATTRS_o_ai 2531 vec_lvxl(int __a, const vector unsigned short *__b) { 2532 return (vector unsigned short)__builtin_altivec_lvxl(__a, __b); 2533 } 2534 2535 static vector unsigned short __ATTRS_o_ai vec_lvxl(int __a, 2536 const unsigned short *__b) { 2537 return (vector unsigned short)__builtin_altivec_lvxl(__a, __b); 2538 } 2539 2540 static vector bool short __ATTRS_o_ai vec_lvxl(int __a, 2541 const vector bool short *__b) { 2542 return (vector bool short)__builtin_altivec_lvxl(__a, __b); 2543 } 2544 2545 static vector pixel __ATTRS_o_ai vec_lvxl(int __a, const vector pixel *__b) { 2546 return (vector pixel)__builtin_altivec_lvxl(__a, __b); 2547 } 2548 2549 static vector int __ATTRS_o_ai vec_lvxl(int __a, const vector int *__b) { 2550 return (vector int)__builtin_altivec_lvxl(__a, __b); 2551 } 2552 2553 static vector int __ATTRS_o_ai vec_lvxl(int __a, const int *__b) { 2554 return (vector int)__builtin_altivec_lvxl(__a, __b); 2555 } 2556 2557 static vector unsigned int __ATTRS_o_ai 2558 vec_lvxl(int __a, const vector unsigned int *__b) { 2559 return (vector unsigned int)__builtin_altivec_lvxl(__a, __b); 2560 } 2561 2562 static vector unsigned int __ATTRS_o_ai vec_lvxl(int __a, 2563 const unsigned int *__b) { 2564 return (vector unsigned int)__builtin_altivec_lvxl(__a, __b); 2565 } 2566 2567 static vector bool int __ATTRS_o_ai vec_lvxl(int __a, 2568 const vector bool int *__b) { 2569 return (vector bool int)__builtin_altivec_lvxl(__a, __b); 2570 } 2571 2572 static vector float __ATTRS_o_ai vec_lvxl(int __a, const vector float *__b) { 2573 return (vector float)__builtin_altivec_lvxl(__a, __b); 2574 } 2575 2576 static vector float __ATTRS_o_ai vec_lvxl(int __a, const float *__b) { 2577 return (vector float)__builtin_altivec_lvxl(__a, __b); 2578 } 2579 2580 /* vec_loge */ 2581 2582 static vector float __attribute__((__always_inline__)) 2583 vec_loge(vector float __a) { 2584 return __builtin_altivec_vlogefp(__a); 2585 } 2586 2587 /* vec_vlogefp */ 2588 2589 static vector float __attribute__((__always_inline__)) 2590 vec_vlogefp(vector float __a) { 2591 return __builtin_altivec_vlogefp(__a); 2592 } 2593 2594 /* vec_lvsl */ 2595 2596 #ifdef __LITTLE_ENDIAN__ 2597 static vector unsigned char __ATTRS_o_ai 2598 __attribute__((__deprecated__("use assignment for unaligned little endian \ 2599 loads/stores"))) vec_lvsl(int __a, const signed char *__b) { 2600 vector unsigned char mask = 2601 (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 2602 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8, 2603 7, 6, 5, 4, 3, 2, 1, 0}; 2604 return vec_perm(mask, mask, reverse); 2605 } 2606 #else 2607 static vector unsigned char __ATTRS_o_ai vec_lvsl(int __a, 2608 const signed char *__b) { 2609 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 2610 } 2611 #endif 2612 2613 #ifdef __LITTLE_ENDIAN__ 2614 static vector unsigned char __ATTRS_o_ai 2615 __attribute__((__deprecated__("use assignment for unaligned little endian \ 2616 loads/stores"))) vec_lvsl(int __a, const unsigned char *__b) { 2617 vector unsigned char mask = 2618 (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 2619 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8, 2620 7, 6, 5, 4, 3, 2, 1, 0}; 2621 return vec_perm(mask, mask, reverse); 2622 } 2623 #else 2624 static vector unsigned char __ATTRS_o_ai vec_lvsl(int __a, 2625 const unsigned char *__b) { 2626 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 2627 } 2628 #endif 2629 2630 #ifdef __LITTLE_ENDIAN__ 2631 static vector unsigned char __ATTRS_o_ai 2632 __attribute__((__deprecated__("use assignment for unaligned little endian \ 2633 loads/stores"))) vec_lvsl(int __a, const short *__b) { 2634 vector unsigned char mask = 2635 (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 2636 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8, 2637 7, 6, 5, 4, 3, 2, 1, 0}; 2638 return vec_perm(mask, mask, reverse); 2639 } 2640 #else 2641 static vector unsigned char __ATTRS_o_ai vec_lvsl(int __a, const short *__b) { 2642 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 2643 } 2644 #endif 2645 2646 #ifdef __LITTLE_ENDIAN__ 2647 static vector unsigned char __ATTRS_o_ai 2648 __attribute__((__deprecated__("use assignment for unaligned little endian \ 2649 loads/stores"))) vec_lvsl(int __a, const unsigned short *__b) { 2650 vector unsigned char mask = 2651 (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 2652 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8, 2653 7, 6, 5, 4, 3, 2, 1, 0}; 2654 return vec_perm(mask, mask, reverse); 2655 } 2656 #else 2657 static vector unsigned char __ATTRS_o_ai vec_lvsl(int __a, 2658 const unsigned short *__b) { 2659 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 2660 } 2661 #endif 2662 2663 #ifdef __LITTLE_ENDIAN__ 2664 static vector unsigned char __ATTRS_o_ai 2665 __attribute__((__deprecated__("use assignment for unaligned little endian \ 2666 loads/stores"))) vec_lvsl(int __a, const int *__b) { 2667 vector unsigned char mask = 2668 (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 2669 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8, 2670 7, 6, 5, 4, 3, 2, 1, 0}; 2671 return vec_perm(mask, mask, reverse); 2672 } 2673 #else 2674 static vector unsigned char __ATTRS_o_ai vec_lvsl(int __a, const int *__b) { 2675 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 2676 } 2677 #endif 2678 2679 #ifdef __LITTLE_ENDIAN__ 2680 static vector unsigned char __ATTRS_o_ai 2681 __attribute__((__deprecated__("use assignment for unaligned little endian \ 2682 loads/stores"))) vec_lvsl(int __a, const unsigned int *__b) { 2683 vector unsigned char mask = 2684 (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 2685 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8, 2686 7, 6, 5, 4, 3, 2, 1, 0}; 2687 return vec_perm(mask, mask, reverse); 2688 } 2689 #else 2690 static vector unsigned char __ATTRS_o_ai vec_lvsl(int __a, 2691 const unsigned int *__b) { 2692 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 2693 } 2694 #endif 2695 2696 #ifdef __LITTLE_ENDIAN__ 2697 static vector unsigned char __ATTRS_o_ai 2698 __attribute__((__deprecated__("use assignment for unaligned little endian \ 2699 loads/stores"))) vec_lvsl(int __a, const float *__b) { 2700 vector unsigned char mask = 2701 (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 2702 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8, 2703 7, 6, 5, 4, 3, 2, 1, 0}; 2704 return vec_perm(mask, mask, reverse); 2705 } 2706 #else 2707 static vector unsigned char __ATTRS_o_ai vec_lvsl(int __a, const float *__b) { 2708 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b); 2709 } 2710 #endif 2711 2712 /* vec_lvsr */ 2713 2714 #ifdef __LITTLE_ENDIAN__ 2715 static vector unsigned char __ATTRS_o_ai 2716 __attribute__((__deprecated__("use assignment for unaligned little endian \ 2717 loads/stores"))) vec_lvsr(int __a, const signed char *__b) { 2718 vector unsigned char mask = 2719 (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 2720 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8, 2721 7, 6, 5, 4, 3, 2, 1, 0}; 2722 return vec_perm(mask, mask, reverse); 2723 } 2724 #else 2725 static vector unsigned char __ATTRS_o_ai vec_lvsr(int __a, 2726 const signed char *__b) { 2727 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 2728 } 2729 #endif 2730 2731 #ifdef __LITTLE_ENDIAN__ 2732 static vector unsigned char __ATTRS_o_ai 2733 __attribute__((__deprecated__("use assignment for unaligned little endian \ 2734 loads/stores"))) vec_lvsr(int __a, const unsigned char *__b) { 2735 vector unsigned char mask = 2736 (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 2737 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8, 2738 7, 6, 5, 4, 3, 2, 1, 0}; 2739 return vec_perm(mask, mask, reverse); 2740 } 2741 #else 2742 static vector unsigned char __ATTRS_o_ai vec_lvsr(int __a, 2743 const unsigned char *__b) { 2744 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 2745 } 2746 #endif 2747 2748 #ifdef __LITTLE_ENDIAN__ 2749 static vector unsigned char __ATTRS_o_ai 2750 __attribute__((__deprecated__("use assignment for unaligned little endian \ 2751 loads/stores"))) vec_lvsr(int __a, const short *__b) { 2752 vector unsigned char mask = 2753 (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 2754 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8, 2755 7, 6, 5, 4, 3, 2, 1, 0}; 2756 return vec_perm(mask, mask, reverse); 2757 } 2758 #else 2759 static vector unsigned char __ATTRS_o_ai vec_lvsr(int __a, const short *__b) { 2760 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 2761 } 2762 #endif 2763 2764 #ifdef __LITTLE_ENDIAN__ 2765 static vector unsigned char __ATTRS_o_ai 2766 __attribute__((__deprecated__("use assignment for unaligned little endian \ 2767 loads/stores"))) vec_lvsr(int __a, const unsigned short *__b) { 2768 vector unsigned char mask = 2769 (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 2770 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8, 2771 7, 6, 5, 4, 3, 2, 1, 0}; 2772 return vec_perm(mask, mask, reverse); 2773 } 2774 #else 2775 static vector unsigned char __ATTRS_o_ai vec_lvsr(int __a, 2776 const unsigned short *__b) { 2777 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 2778 } 2779 #endif 2780 2781 #ifdef __LITTLE_ENDIAN__ 2782 static vector unsigned char __ATTRS_o_ai 2783 __attribute__((__deprecated__("use assignment for unaligned little endian \ 2784 loads/stores"))) vec_lvsr(int __a, const int *__b) { 2785 vector unsigned char mask = 2786 (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 2787 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8, 2788 7, 6, 5, 4, 3, 2, 1, 0}; 2789 return vec_perm(mask, mask, reverse); 2790 } 2791 #else 2792 static vector unsigned char __ATTRS_o_ai vec_lvsr(int __a, const int *__b) { 2793 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 2794 } 2795 #endif 2796 2797 #ifdef __LITTLE_ENDIAN__ 2798 static vector unsigned char __ATTRS_o_ai 2799 __attribute__((__deprecated__("use assignment for unaligned little endian \ 2800 loads/stores"))) vec_lvsr(int __a, const unsigned int *__b) { 2801 vector unsigned char mask = 2802 (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 2803 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8, 2804 7, 6, 5, 4, 3, 2, 1, 0}; 2805 return vec_perm(mask, mask, reverse); 2806 } 2807 #else 2808 static vector unsigned char __ATTRS_o_ai vec_lvsr(int __a, 2809 const unsigned int *__b) { 2810 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 2811 } 2812 #endif 2813 2814 #ifdef __LITTLE_ENDIAN__ 2815 static vector unsigned char __ATTRS_o_ai 2816 __attribute__((__deprecated__("use assignment for unaligned little endian \ 2817 loads/stores"))) vec_lvsr(int __a, const float *__b) { 2818 vector unsigned char mask = 2819 (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 2820 vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8, 2821 7, 6, 5, 4, 3, 2, 1, 0}; 2822 return vec_perm(mask, mask, reverse); 2823 } 2824 #else 2825 static vector unsigned char __ATTRS_o_ai vec_lvsr(int __a, const float *__b) { 2826 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b); 2827 } 2828 #endif 2829 2830 /* vec_madd */ 2831 static vector signed short __ATTRS_o_ai 2832 vec_mladd(vector signed short, vector signed short, vector signed short); 2833 static vector signed short __ATTRS_o_ai 2834 vec_mladd(vector signed short, vector unsigned short, vector unsigned short); 2835 static vector signed short __ATTRS_o_ai 2836 vec_mladd(vector unsigned short, vector signed short, vector signed short); 2837 static vector unsigned short __ATTRS_o_ai 2838 vec_mladd(vector unsigned short, vector unsigned short, vector unsigned short); 2839 2840 static vector signed short __ATTRS_o_ai 2841 vec_madd(vector signed short __a, vector signed short __b, 2842 vector signed short __c) { 2843 return vec_mladd(__a, __b, __c); 2844 } 2845 2846 static vector signed short __ATTRS_o_ai 2847 vec_madd(vector signed short __a, vector unsigned short __b, 2848 vector unsigned short __c) { 2849 return vec_mladd(__a, __b, __c); 2850 } 2851 2852 static vector signed short __ATTRS_o_ai 2853 vec_madd(vector unsigned short __a, vector signed short __b, 2854 vector signed short __c) { 2855 return vec_mladd(__a, __b, __c); 2856 } 2857 2858 static vector unsigned short __ATTRS_o_ai 2859 vec_madd(vector unsigned short __a, vector unsigned short __b, 2860 vector unsigned short __c) { 2861 return vec_mladd(__a, __b, __c); 2862 } 2863 2864 static vector float __ATTRS_o_ai 2865 vec_madd(vector float __a, vector float __b, vector float __c) { 2866 #ifdef __VSX__ 2867 return __builtin_vsx_xvmaddasp(__a, __b, __c); 2868 #else 2869 return __builtin_altivec_vmaddfp(__a, __b, __c); 2870 #endif 2871 } 2872 2873 #ifdef __VSX__ 2874 static vector double __ATTRS_o_ai 2875 vec_madd(vector double __a, vector double __b, vector double __c) { 2876 return __builtin_vsx_xvmaddadp(__a, __b, __c); 2877 } 2878 #endif 2879 2880 /* vec_vmaddfp */ 2881 2882 static vector float __attribute__((__always_inline__)) 2883 vec_vmaddfp(vector float __a, vector float __b, vector float __c) { 2884 return __builtin_altivec_vmaddfp(__a, __b, __c); 2885 } 2886 2887 /* vec_madds */ 2888 2889 static vector signed short __attribute__((__always_inline__)) 2890 vec_madds(vector signed short __a, vector signed short __b, 2891 vector signed short __c) { 2892 return __builtin_altivec_vmhaddshs(__a, __b, __c); 2893 } 2894 2895 /* vec_vmhaddshs */ 2896 static vector signed short __attribute__((__always_inline__)) 2897 vec_vmhaddshs(vector signed short __a, vector signed short __b, 2898 vector signed short __c) { 2899 return __builtin_altivec_vmhaddshs(__a, __b, __c); 2900 } 2901 2902 /* vec_msub */ 2903 2904 #ifdef __VSX__ 2905 static vector float __ATTRS_o_ai 2906 vec_msub(vector float __a, vector float __b, vector float __c) { 2907 return __builtin_vsx_xvmsubasp(__a, __b, __c); 2908 } 2909 2910 static vector double __ATTRS_o_ai 2911 vec_msub(vector double __a, vector double __b, vector double __c) { 2912 return __builtin_vsx_xvmsubadp(__a, __b, __c); 2913 } 2914 #endif 2915 2916 /* vec_max */ 2917 2918 static vector signed char __ATTRS_o_ai vec_max(vector signed char __a, 2919 vector signed char __b) { 2920 return __builtin_altivec_vmaxsb(__a, __b); 2921 } 2922 2923 static vector signed char __ATTRS_o_ai vec_max(vector bool char __a, 2924 vector signed char __b) { 2925 return __builtin_altivec_vmaxsb((vector signed char)__a, __b); 2926 } 2927 2928 static vector signed char __ATTRS_o_ai vec_max(vector signed char __a, 2929 vector bool char __b) { 2930 return __builtin_altivec_vmaxsb(__a, (vector signed char)__b); 2931 } 2932 2933 static vector unsigned char __ATTRS_o_ai vec_max(vector unsigned char __a, 2934 vector unsigned char __b) { 2935 return __builtin_altivec_vmaxub(__a, __b); 2936 } 2937 2938 static vector unsigned char __ATTRS_o_ai vec_max(vector bool char __a, 2939 vector unsigned char __b) { 2940 return __builtin_altivec_vmaxub((vector unsigned char)__a, __b); 2941 } 2942 2943 static vector unsigned char __ATTRS_o_ai vec_max(vector unsigned char __a, 2944 vector bool char __b) { 2945 return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b); 2946 } 2947 2948 static vector short __ATTRS_o_ai vec_max(vector short __a, vector short __b) { 2949 return __builtin_altivec_vmaxsh(__a, __b); 2950 } 2951 2952 static vector short __ATTRS_o_ai vec_max(vector bool short __a, 2953 vector short __b) { 2954 return __builtin_altivec_vmaxsh((vector short)__a, __b); 2955 } 2956 2957 static vector short __ATTRS_o_ai vec_max(vector short __a, 2958 vector bool short __b) { 2959 return __builtin_altivec_vmaxsh(__a, (vector short)__b); 2960 } 2961 2962 static vector unsigned short __ATTRS_o_ai vec_max(vector unsigned short __a, 2963 vector unsigned short __b) { 2964 return __builtin_altivec_vmaxuh(__a, __b); 2965 } 2966 2967 static vector unsigned short __ATTRS_o_ai vec_max(vector bool short __a, 2968 vector unsigned short __b) { 2969 return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b); 2970 } 2971 2972 static vector unsigned short __ATTRS_o_ai vec_max(vector unsigned short __a, 2973 vector bool short __b) { 2974 return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b); 2975 } 2976 2977 static vector int __ATTRS_o_ai vec_max(vector int __a, vector int __b) { 2978 return __builtin_altivec_vmaxsw(__a, __b); 2979 } 2980 2981 static vector int __ATTRS_o_ai vec_max(vector bool int __a, vector int __b) { 2982 return __builtin_altivec_vmaxsw((vector int)__a, __b); 2983 } 2984 2985 static vector int __ATTRS_o_ai vec_max(vector int __a, vector bool int __b) { 2986 return __builtin_altivec_vmaxsw(__a, (vector int)__b); 2987 } 2988 2989 static vector unsigned int __ATTRS_o_ai vec_max(vector unsigned int __a, 2990 vector unsigned int __b) { 2991 return __builtin_altivec_vmaxuw(__a, __b); 2992 } 2993 2994 static vector unsigned int __ATTRS_o_ai vec_max(vector bool int __a, 2995 vector unsigned int __b) { 2996 return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b); 2997 } 2998 2999 static vector unsigned int __ATTRS_o_ai vec_max(vector unsigned int __a, 3000 vector bool int __b) { 3001 return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b); 3002 } 3003 3004 #ifdef __POWER8_VECTOR__ 3005 static vector signed long long __ATTRS_o_ai 3006 vec_max(vector signed long long __a, vector signed long long __b) { 3007 return __builtin_altivec_vmaxsd(__a, __b); 3008 } 3009 3010 static vector signed long long __ATTRS_o_ai 3011 vec_max(vector bool long long __a, vector signed long long __b) { 3012 return __builtin_altivec_vmaxsd((vector signed long long)__a, __b); 3013 } 3014 3015 static vector signed long long __ATTRS_o_ai vec_max(vector signed long long __a, 3016 vector bool long long __b) { 3017 return __builtin_altivec_vmaxsd(__a, (vector signed long long)__b); 3018 } 3019 3020 static vector unsigned long long __ATTRS_o_ai 3021 vec_max(vector unsigned long long __a, vector unsigned long long __b) { 3022 return __builtin_altivec_vmaxud(__a, __b); 3023 } 3024 3025 static vector unsigned long long __ATTRS_o_ai 3026 vec_max(vector bool long long __a, vector unsigned long long __b) { 3027 return __builtin_altivec_vmaxud((vector unsigned long long)__a, __b); 3028 } 3029 3030 static vector unsigned long long __ATTRS_o_ai 3031 vec_max(vector unsigned long long __a, vector bool long long __b) { 3032 return __builtin_altivec_vmaxud(__a, (vector unsigned long long)__b); 3033 } 3034 #endif 3035 3036 static vector float __ATTRS_o_ai vec_max(vector float __a, vector float __b) { 3037 #ifdef __VSX__ 3038 return __builtin_vsx_xvmaxsp(__a, __b); 3039 #else 3040 return __builtin_altivec_vmaxfp(__a, __b); 3041 #endif 3042 } 3043 3044 #ifdef __VSX__ 3045 static vector double __ATTRS_o_ai vec_max(vector double __a, 3046 vector double __b) { 3047 return __builtin_vsx_xvmaxdp(__a, __b); 3048 } 3049 #endif 3050 3051 /* vec_vmaxsb */ 3052 3053 static vector signed char __ATTRS_o_ai vec_vmaxsb(vector signed char __a, 3054 vector signed char __b) { 3055 return __builtin_altivec_vmaxsb(__a, __b); 3056 } 3057 3058 static vector signed char __ATTRS_o_ai vec_vmaxsb(vector bool char __a, 3059 vector signed char __b) { 3060 return __builtin_altivec_vmaxsb((vector signed char)__a, __b); 3061 } 3062 3063 static vector signed char __ATTRS_o_ai vec_vmaxsb(vector signed char __a, 3064 vector bool char __b) { 3065 return __builtin_altivec_vmaxsb(__a, (vector signed char)__b); 3066 } 3067 3068 /* vec_vmaxub */ 3069 3070 static vector unsigned char __ATTRS_o_ai vec_vmaxub(vector unsigned char __a, 3071 vector unsigned char __b) { 3072 return __builtin_altivec_vmaxub(__a, __b); 3073 } 3074 3075 static vector unsigned char __ATTRS_o_ai vec_vmaxub(vector bool char __a, 3076 vector unsigned char __b) { 3077 return __builtin_altivec_vmaxub((vector unsigned char)__a, __b); 3078 } 3079 3080 static vector unsigned char __ATTRS_o_ai vec_vmaxub(vector unsigned char __a, 3081 vector bool char __b) { 3082 return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b); 3083 } 3084 3085 /* vec_vmaxsh */ 3086 3087 static vector short __ATTRS_o_ai vec_vmaxsh(vector short __a, 3088 vector short __b) { 3089 return __builtin_altivec_vmaxsh(__a, __b); 3090 } 3091 3092 static vector short __ATTRS_o_ai vec_vmaxsh(vector bool short __a, 3093 vector short __b) { 3094 return __builtin_altivec_vmaxsh((vector short)__a, __b); 3095 } 3096 3097 static vector short __ATTRS_o_ai vec_vmaxsh(vector short __a, 3098 vector bool short __b) { 3099 return __builtin_altivec_vmaxsh(__a, (vector short)__b); 3100 } 3101 3102 /* vec_vmaxuh */ 3103 3104 static vector unsigned short __ATTRS_o_ai 3105 vec_vmaxuh(vector unsigned short __a, vector unsigned short __b) { 3106 return __builtin_altivec_vmaxuh(__a, __b); 3107 } 3108 3109 static vector unsigned short __ATTRS_o_ai 3110 vec_vmaxuh(vector bool short __a, vector unsigned short __b) { 3111 return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b); 3112 } 3113 3114 static vector unsigned short __ATTRS_o_ai vec_vmaxuh(vector unsigned short __a, 3115 vector bool short __b) { 3116 return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b); 3117 } 3118 3119 /* vec_vmaxsw */ 3120 3121 static vector int __ATTRS_o_ai vec_vmaxsw(vector int __a, vector int __b) { 3122 return __builtin_altivec_vmaxsw(__a, __b); 3123 } 3124 3125 static vector int __ATTRS_o_ai vec_vmaxsw(vector bool int __a, vector int __b) { 3126 return __builtin_altivec_vmaxsw((vector int)__a, __b); 3127 } 3128 3129 static vector int __ATTRS_o_ai vec_vmaxsw(vector int __a, vector bool int __b) { 3130 return __builtin_altivec_vmaxsw(__a, (vector int)__b); 3131 } 3132 3133 /* vec_vmaxuw */ 3134 3135 static vector unsigned int __ATTRS_o_ai vec_vmaxuw(vector unsigned int __a, 3136 vector unsigned int __b) { 3137 return __builtin_altivec_vmaxuw(__a, __b); 3138 } 3139 3140 static vector unsigned int __ATTRS_o_ai vec_vmaxuw(vector bool int __a, 3141 vector unsigned int __b) { 3142 return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b); 3143 } 3144 3145 static vector unsigned int __ATTRS_o_ai vec_vmaxuw(vector unsigned int __a, 3146 vector bool int __b) { 3147 return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b); 3148 } 3149 3150 /* vec_vmaxfp */ 3151 3152 static vector float __attribute__((__always_inline__)) 3153 vec_vmaxfp(vector float __a, vector float __b) { 3154 #ifdef __VSX__ 3155 return __builtin_vsx_xvmaxsp(__a, __b); 3156 #else 3157 return __builtin_altivec_vmaxfp(__a, __b); 3158 #endif 3159 } 3160 3161 /* vec_mergeh */ 3162 3163 static vector signed char __ATTRS_o_ai vec_mergeh(vector signed char __a, 3164 vector signed char __b) { 3165 return vec_perm(__a, __b, 3166 (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 3167 0x03, 0x13, 0x04, 0x14, 0x05, 0x15, 3168 0x06, 0x16, 0x07, 0x17)); 3169 } 3170 3171 static vector unsigned char __ATTRS_o_ai vec_mergeh(vector unsigned char __a, 3172 vector unsigned char __b) { 3173 return vec_perm(__a, __b, 3174 (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 3175 0x03, 0x13, 0x04, 0x14, 0x05, 0x15, 3176 0x06, 0x16, 0x07, 0x17)); 3177 } 3178 3179 static vector bool char __ATTRS_o_ai vec_mergeh(vector bool char __a, 3180 vector bool char __b) { 3181 return vec_perm(__a, __b, 3182 (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 3183 0x03, 0x13, 0x04, 0x14, 0x05, 0x15, 3184 0x06, 0x16, 0x07, 0x17)); 3185 } 3186 3187 static vector short __ATTRS_o_ai vec_mergeh(vector short __a, 3188 vector short __b) { 3189 return vec_perm(__a, __b, 3190 (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 3191 0x12, 0x13, 0x04, 0x05, 0x14, 0x15, 3192 0x06, 0x07, 0x16, 0x17)); 3193 } 3194 3195 static vector unsigned short __ATTRS_o_ai 3196 vec_mergeh(vector unsigned short __a, vector unsigned short __b) { 3197 return vec_perm(__a, __b, 3198 (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 3199 0x12, 0x13, 0x04, 0x05, 0x14, 0x15, 3200 0x06, 0x07, 0x16, 0x17)); 3201 } 3202 3203 static vector bool short __ATTRS_o_ai vec_mergeh(vector bool short __a, 3204 vector bool short __b) { 3205 return vec_perm(__a, __b, 3206 (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 3207 0x12, 0x13, 0x04, 0x05, 0x14, 0x15, 3208 0x06, 0x07, 0x16, 0x17)); 3209 } 3210 3211 static vector pixel __ATTRS_o_ai vec_mergeh(vector pixel __a, 3212 vector pixel __b) { 3213 return vec_perm(__a, __b, 3214 (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 3215 0x12, 0x13, 0x04, 0x05, 0x14, 0x15, 3216 0x06, 0x07, 0x16, 0x17)); 3217 } 3218 3219 static vector int __ATTRS_o_ai vec_mergeh(vector int __a, vector int __b) { 3220 return vec_perm(__a, __b, 3221 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 3222 0x12, 0x13, 0x04, 0x05, 0x06, 0x07, 3223 0x14, 0x15, 0x16, 0x17)); 3224 } 3225 3226 static vector unsigned int __ATTRS_o_ai vec_mergeh(vector unsigned int __a, 3227 vector unsigned int __b) { 3228 return vec_perm(__a, __b, 3229 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 3230 0x12, 0x13, 0x04, 0x05, 0x06, 0x07, 3231 0x14, 0x15, 0x16, 0x17)); 3232 } 3233 3234 static vector bool int __ATTRS_o_ai vec_mergeh(vector bool int __a, 3235 vector bool int __b) { 3236 return vec_perm(__a, __b, 3237 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 3238 0x12, 0x13, 0x04, 0x05, 0x06, 0x07, 3239 0x14, 0x15, 0x16, 0x17)); 3240 } 3241 3242 static vector float __ATTRS_o_ai vec_mergeh(vector float __a, 3243 vector float __b) { 3244 return vec_perm(__a, __b, 3245 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 3246 0x12, 0x13, 0x04, 0x05, 0x06, 0x07, 3247 0x14, 0x15, 0x16, 0x17)); 3248 } 3249 3250 #ifdef __VSX__ 3251 static vector signed long long __ATTRS_o_ai 3252 vec_mergeh(vector signed long long __a, vector signed long long __b) { 3253 return vec_perm(__a, __b, 3254 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 3255 0x04, 0x05, 0x06, 0x07, 3256 0x10, 0x11, 0x12, 0x13, 3257 0x14, 0x15, 0x16, 0x17)); 3258 } 3259 3260 static vector signed long long __ATTRS_o_ai 3261 vec_mergeh(vector signed long long __a, vector bool long long __b) { 3262 return vec_perm(__a, (vector signed long long)__b, 3263 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 3264 0x04, 0x05, 0x06, 0x07, 3265 0x10, 0x11, 0x12, 0x13, 3266 0x14, 0x15, 0x16, 0x17)); 3267 } 3268 3269 static vector signed long long __ATTRS_o_ai 3270 vec_mergeh(vector bool long long __a, vector signed long long __b) { 3271 return vec_perm((vector signed long long)__a, __b, 3272 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 3273 0x04, 0x05, 0x06, 0x07, 3274 0x10, 0x11, 0x12, 0x13, 3275 0x14, 0x15, 0x16, 0x17)); 3276 } 3277 3278 static vector unsigned long long __ATTRS_o_ai 3279 vec_mergeh(vector unsigned long long __a, vector unsigned long long __b) { 3280 return vec_perm(__a, __b, 3281 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 3282 0x04, 0x05, 0x06, 0x07, 3283 0x10, 0x11, 0x12, 0x13, 3284 0x14, 0x15, 0x16, 0x17)); 3285 } 3286 3287 static vector unsigned long long __ATTRS_o_ai 3288 vec_mergeh(vector unsigned long long __a, vector bool long long __b) { 3289 return vec_perm(__a, (vector unsigned long long)__b, 3290 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 3291 0x04, 0x05, 0x06, 0x07, 3292 0x10, 0x11, 0x12, 0x13, 3293 0x14, 0x15, 0x16, 0x17)); 3294 } 3295 3296 static vector unsigned long long __ATTRS_o_ai 3297 vec_mergeh(vector bool long long __a, vector unsigned long long __b) { 3298 return vec_perm((vector unsigned long long)__a, __b, 3299 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 3300 0x04, 0x05, 0x06, 0x07, 3301 0x10, 0x11, 0x12, 0x13, 3302 0x14, 0x15, 0x16, 0x17)); 3303 } 3304 3305 static vector bool long long __ATTRS_o_ai 3306 vec_mergeh(vector bool long long __a, vector bool long long __b) { 3307 return vec_perm(__a, __b, 3308 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 3309 0x04, 0x05, 0x06, 0x07, 3310 0x10, 0x11, 0x12, 0x13, 3311 0x14, 0x15, 0x16, 0x17)); 3312 } 3313 3314 static vector double __ATTRS_o_ai vec_mergeh(vector double __a, 3315 vector double __b) { 3316 return vec_perm(__a, __b, 3317 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 3318 0x04, 0x05, 0x06, 0x07, 3319 0x10, 0x11, 0x12, 0x13, 3320 0x14, 0x15, 0x16, 0x17)); 3321 } 3322 static vector double __ATTRS_o_ai vec_mergeh(vector double __a, 3323 vector bool long long __b) { 3324 return vec_perm(__a, (vector double)__b, 3325 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 3326 0x04, 0x05, 0x06, 0x07, 3327 0x10, 0x11, 0x12, 0x13, 3328 0x14, 0x15, 0x16, 0x17)); 3329 } 3330 static vector double __ATTRS_o_ai vec_mergeh(vector bool long long __a, 3331 vector double __b) { 3332 return vec_perm((vector double)__a, __b, 3333 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 3334 0x04, 0x05, 0x06, 0x07, 3335 0x10, 0x11, 0x12, 0x13, 3336 0x14, 0x15, 0x16, 0x17)); 3337 } 3338 #endif 3339 3340 /* vec_vmrghb */ 3341 3342 #define __builtin_altivec_vmrghb vec_vmrghb 3343 3344 static vector signed char __ATTRS_o_ai vec_vmrghb(vector signed char __a, 3345 vector signed char __b) { 3346 return vec_perm(__a, __b, 3347 (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 3348 0x03, 0x13, 0x04, 0x14, 0x05, 0x15, 3349 0x06, 0x16, 0x07, 0x17)); 3350 } 3351 3352 static vector unsigned char __ATTRS_o_ai vec_vmrghb(vector unsigned char __a, 3353 vector unsigned char __b) { 3354 return vec_perm(__a, __b, 3355 (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 3356 0x03, 0x13, 0x04, 0x14, 0x05, 0x15, 3357 0x06, 0x16, 0x07, 0x17)); 3358 } 3359 3360 static vector bool char __ATTRS_o_ai vec_vmrghb(vector bool char __a, 3361 vector bool char __b) { 3362 return vec_perm(__a, __b, 3363 (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 3364 0x03, 0x13, 0x04, 0x14, 0x05, 0x15, 3365 0x06, 0x16, 0x07, 0x17)); 3366 } 3367 3368 /* vec_vmrghh */ 3369 3370 #define __builtin_altivec_vmrghh vec_vmrghh 3371 3372 static vector short __ATTRS_o_ai vec_vmrghh(vector short __a, 3373 vector short __b) { 3374 return vec_perm(__a, __b, 3375 (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 3376 0x12, 0x13, 0x04, 0x05, 0x14, 0x15, 3377 0x06, 0x07, 0x16, 0x17)); 3378 } 3379 3380 static vector unsigned short __ATTRS_o_ai 3381 vec_vmrghh(vector unsigned short __a, vector unsigned short __b) { 3382 return vec_perm(__a, __b, 3383 (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 3384 0x12, 0x13, 0x04, 0x05, 0x14, 0x15, 3385 0x06, 0x07, 0x16, 0x17)); 3386 } 3387 3388 static vector bool short __ATTRS_o_ai vec_vmrghh(vector bool short __a, 3389 vector bool short __b) { 3390 return vec_perm(__a, __b, 3391 (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 3392 0x12, 0x13, 0x04, 0x05, 0x14, 0x15, 3393 0x06, 0x07, 0x16, 0x17)); 3394 } 3395 3396 static vector pixel __ATTRS_o_ai vec_vmrghh(vector pixel __a, 3397 vector pixel __b) { 3398 return vec_perm(__a, __b, 3399 (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 3400 0x12, 0x13, 0x04, 0x05, 0x14, 0x15, 3401 0x06, 0x07, 0x16, 0x17)); 3402 } 3403 3404 /* vec_vmrghw */ 3405 3406 #define __builtin_altivec_vmrghw vec_vmrghw 3407 3408 static vector int __ATTRS_o_ai vec_vmrghw(vector int __a, vector int __b) { 3409 return vec_perm(__a, __b, 3410 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 3411 0x12, 0x13, 0x04, 0x05, 0x06, 0x07, 3412 0x14, 0x15, 0x16, 0x17)); 3413 } 3414 3415 static vector unsigned int __ATTRS_o_ai vec_vmrghw(vector unsigned int __a, 3416 vector unsigned int __b) { 3417 return vec_perm(__a, __b, 3418 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 3419 0x12, 0x13, 0x04, 0x05, 0x06, 0x07, 3420 0x14, 0x15, 0x16, 0x17)); 3421 } 3422 3423 static vector bool int __ATTRS_o_ai vec_vmrghw(vector bool int __a, 3424 vector bool int __b) { 3425 return vec_perm(__a, __b, 3426 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 3427 0x12, 0x13, 0x04, 0x05, 0x06, 0x07, 3428 0x14, 0x15, 0x16, 0x17)); 3429 } 3430 3431 static vector float __ATTRS_o_ai vec_vmrghw(vector float __a, 3432 vector float __b) { 3433 return vec_perm(__a, __b, 3434 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 3435 0x12, 0x13, 0x04, 0x05, 0x06, 0x07, 3436 0x14, 0x15, 0x16, 0x17)); 3437 } 3438 3439 /* vec_mergel */ 3440 3441 static vector signed char __ATTRS_o_ai vec_mergel(vector signed char __a, 3442 vector signed char __b) { 3443 return vec_perm(__a, __b, 3444 (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 3445 0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D, 3446 0x0E, 0x1E, 0x0F, 0x1F)); 3447 } 3448 3449 static vector unsigned char __ATTRS_o_ai vec_mergel(vector unsigned char __a, 3450 vector unsigned char __b) { 3451 return vec_perm(__a, __b, 3452 (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 3453 0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D, 3454 0x0E, 0x1E, 0x0F, 0x1F)); 3455 } 3456 3457 static vector bool char __ATTRS_o_ai vec_mergel(vector bool char __a, 3458 vector bool char __b) { 3459 return vec_perm(__a, __b, 3460 (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 3461 0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D, 3462 0x0E, 0x1E, 0x0F, 0x1F)); 3463 } 3464 3465 static vector short __ATTRS_o_ai vec_mergel(vector short __a, 3466 vector short __b) { 3467 return vec_perm(__a, __b, 3468 (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 3469 0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D, 3470 0x0E, 0x0F, 0x1E, 0x1F)); 3471 } 3472 3473 static vector unsigned short __ATTRS_o_ai 3474 vec_mergel(vector unsigned short __a, vector unsigned short __b) { 3475 return vec_perm(__a, __b, 3476 (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 3477 0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D, 3478 0x0E, 0x0F, 0x1E, 0x1F)); 3479 } 3480 3481 static vector bool short __ATTRS_o_ai vec_mergel(vector bool short __a, 3482 vector bool short __b) { 3483 return vec_perm(__a, __b, 3484 (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 3485 0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D, 3486 0x0E, 0x0F, 0x1E, 0x1F)); 3487 } 3488 3489 static vector pixel __ATTRS_o_ai vec_mergel(vector pixel __a, 3490 vector pixel __b) { 3491 return vec_perm(__a, __b, 3492 (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 3493 0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D, 3494 0x0E, 0x0F, 0x1E, 0x1F)); 3495 } 3496 3497 static vector int __ATTRS_o_ai vec_mergel(vector int __a, vector int __b) { 3498 return vec_perm(__a, __b, 3499 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 3500 0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F, 3501 0x1C, 0x1D, 0x1E, 0x1F)); 3502 } 3503 3504 static vector unsigned int __ATTRS_o_ai vec_mergel(vector unsigned int __a, 3505 vector unsigned int __b) { 3506 return vec_perm(__a, __b, 3507 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 3508 0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F, 3509 0x1C, 0x1D, 0x1E, 0x1F)); 3510 } 3511 3512 static vector bool int __ATTRS_o_ai vec_mergel(vector bool int __a, 3513 vector bool int __b) { 3514 return vec_perm(__a, __b, 3515 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 3516 0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F, 3517 0x1C, 0x1D, 0x1E, 0x1F)); 3518 } 3519 3520 static vector float __ATTRS_o_ai vec_mergel(vector float __a, 3521 vector float __b) { 3522 return vec_perm(__a, __b, 3523 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 3524 0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F, 3525 0x1C, 0x1D, 0x1E, 0x1F)); 3526 } 3527 3528 #ifdef __VSX__ 3529 static vector signed long long __ATTRS_o_ai 3530 vec_mergel(vector signed long long __a, vector signed long long __b) { 3531 return vec_perm(__a, __b, 3532 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 3533 0x0C, 0x0D, 0x0E, 0x0F, 3534 0x18, 0X19, 0x1A, 0x1B, 3535 0x1C, 0x1D, 0x1E, 0x1F)); 3536 } 3537 static vector signed long long __ATTRS_o_ai 3538 vec_mergel(vector signed long long __a, vector bool long long __b) { 3539 return vec_perm(__a, (vector signed long long)__b, 3540 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 3541 0x0C, 0x0D, 0x0E, 0x0F, 3542 0x18, 0X19, 0x1A, 0x1B, 3543 0x1C, 0x1D, 0x1E, 0x1F)); 3544 } 3545 static vector signed long long __ATTRS_o_ai 3546 vec_mergel(vector bool long long __a, vector signed long long __b) { 3547 return vec_perm((vector signed long long)__a, __b, 3548 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 3549 0x0C, 0x0D, 0x0E, 0x0F, 3550 0x18, 0X19, 0x1A, 0x1B, 3551 0x1C, 0x1D, 0x1E, 0x1F)); 3552 } 3553 static vector unsigned long long __ATTRS_o_ai 3554 vec_mergel(vector unsigned long long __a, vector unsigned long long __b) { 3555 return vec_perm(__a, __b, 3556 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 3557 0x0C, 0x0D, 0x0E, 0x0F, 3558 0x18, 0X19, 0x1A, 0x1B, 3559 0x1C, 0x1D, 0x1E, 0x1F)); 3560 } 3561 static vector unsigned long long __ATTRS_o_ai 3562 vec_mergel(vector unsigned long long __a, vector bool long long __b) { 3563 return vec_perm(__a, (vector unsigned long long)__b, 3564 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 3565 0x0C, 0x0D, 0x0E, 0x0F, 3566 0x18, 0X19, 0x1A, 0x1B, 3567 0x1C, 0x1D, 0x1E, 0x1F)); 3568 } 3569 static vector unsigned long long __ATTRS_o_ai 3570 vec_mergel(vector bool long long __a, vector unsigned long long __b) { 3571 return vec_perm((vector unsigned long long)__a, __b, 3572 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 3573 0x0C, 0x0D, 0x0E, 0x0F, 3574 0x18, 0X19, 0x1A, 0x1B, 3575 0x1C, 0x1D, 0x1E, 0x1F)); 3576 } 3577 static vector bool long long __ATTRS_o_ai 3578 vec_mergel(vector bool long long __a, vector bool long long __b) { 3579 return vec_perm(__a, __b, 3580 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 3581 0x0C, 0x0D, 0x0E, 0x0F, 3582 0x18, 0X19, 0x1A, 0x1B, 3583 0x1C, 0x1D, 0x1E, 0x1F)); 3584 } 3585 static vector double __ATTRS_o_ai 3586 vec_mergel(vector double __a, vector double __b) { 3587 return vec_perm(__a, __b, 3588 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 3589 0x0C, 0x0D, 0x0E, 0x0F, 3590 0x18, 0X19, 0x1A, 0x1B, 3591 0x1C, 0x1D, 0x1E, 0x1F)); 3592 } 3593 static vector double __ATTRS_o_ai 3594 vec_mergel(vector double __a, vector bool long long __b) { 3595 return vec_perm(__a, (vector double)__b, 3596 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 3597 0x0C, 0x0D, 0x0E, 0x0F, 3598 0x18, 0X19, 0x1A, 0x1B, 3599 0x1C, 0x1D, 0x1E, 0x1F)); 3600 } 3601 static vector double __ATTRS_o_ai 3602 vec_mergel(vector bool long long __a, vector double __b) { 3603 return vec_perm((vector double)__a, __b, 3604 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 3605 0x0C, 0x0D, 0x0E, 0x0F, 3606 0x18, 0X19, 0x1A, 0x1B, 3607 0x1C, 0x1D, 0x1E, 0x1F)); 3608 } 3609 #endif 3610 3611 /* vec_vmrglb */ 3612 3613 #define __builtin_altivec_vmrglb vec_vmrglb 3614 3615 static vector signed char __ATTRS_o_ai vec_vmrglb(vector signed char __a, 3616 vector signed char __b) { 3617 return vec_perm(__a, __b, 3618 (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 3619 0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D, 3620 0x0E, 0x1E, 0x0F, 0x1F)); 3621 } 3622 3623 static vector unsigned char __ATTRS_o_ai vec_vmrglb(vector unsigned char __a, 3624 vector unsigned char __b) { 3625 return vec_perm(__a, __b, 3626 (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 3627 0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D, 3628 0x0E, 0x1E, 0x0F, 0x1F)); 3629 } 3630 3631 static vector bool char __ATTRS_o_ai vec_vmrglb(vector bool char __a, 3632 vector bool char __b) { 3633 return vec_perm(__a, __b, 3634 (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 3635 0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D, 3636 0x0E, 0x1E, 0x0F, 0x1F)); 3637 } 3638 3639 /* vec_vmrglh */ 3640 3641 #define __builtin_altivec_vmrglh vec_vmrglh 3642 3643 static vector short __ATTRS_o_ai vec_vmrglh(vector short __a, 3644 vector short __b) { 3645 return vec_perm(__a, __b, 3646 (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 3647 0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D, 3648 0x0E, 0x0F, 0x1E, 0x1F)); 3649 } 3650 3651 static vector unsigned short __ATTRS_o_ai 3652 vec_vmrglh(vector unsigned short __a, vector unsigned short __b) { 3653 return vec_perm(__a, __b, 3654 (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 3655 0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D, 3656 0x0E, 0x0F, 0x1E, 0x1F)); 3657 } 3658 3659 static vector bool short __ATTRS_o_ai vec_vmrglh(vector bool short __a, 3660 vector bool short __b) { 3661 return vec_perm(__a, __b, 3662 (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 3663 0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D, 3664 0x0E, 0x0F, 0x1E, 0x1F)); 3665 } 3666 3667 static vector pixel __ATTRS_o_ai vec_vmrglh(vector pixel __a, 3668 vector pixel __b) { 3669 return vec_perm(__a, __b, 3670 (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 3671 0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D, 3672 0x0E, 0x0F, 0x1E, 0x1F)); 3673 } 3674 3675 /* vec_vmrglw */ 3676 3677 #define __builtin_altivec_vmrglw vec_vmrglw 3678 3679 static vector int __ATTRS_o_ai vec_vmrglw(vector int __a, vector int __b) { 3680 return vec_perm(__a, __b, 3681 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 3682 0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F, 3683 0x1C, 0x1D, 0x1E, 0x1F)); 3684 } 3685 3686 static vector unsigned int __ATTRS_o_ai vec_vmrglw(vector unsigned int __a, 3687 vector unsigned int __b) { 3688 return vec_perm(__a, __b, 3689 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 3690 0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F, 3691 0x1C, 0x1D, 0x1E, 0x1F)); 3692 } 3693 3694 static vector bool int __ATTRS_o_ai vec_vmrglw(vector bool int __a, 3695 vector bool int __b) { 3696 return vec_perm(__a, __b, 3697 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 3698 0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F, 3699 0x1C, 0x1D, 0x1E, 0x1F)); 3700 } 3701 3702 static vector float __ATTRS_o_ai vec_vmrglw(vector float __a, 3703 vector float __b) { 3704 return vec_perm(__a, __b, 3705 (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 3706 0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F, 3707 0x1C, 0x1D, 0x1E, 0x1F)); 3708 } 3709 3710 3711 #ifdef __POWER8_VECTOR__ 3712 /* vec_mergee */ 3713 3714 static vector bool int __ATTRS_o_ai 3715 vec_mergee(vector bool int __a, vector bool int __b) { 3716 return vec_perm(__a, __b, (vector unsigned char) 3717 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 3718 0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B)); 3719 } 3720 3721 static vector signed int __ATTRS_o_ai 3722 vec_mergee(vector signed int __a, vector signed int __b) { 3723 return vec_perm(__a, __b, (vector unsigned char) 3724 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 3725 0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B)); 3726 } 3727 3728 static vector unsigned int __ATTRS_o_ai 3729 vec_mergee(vector unsigned int __a, vector unsigned int __b) { 3730 return vec_perm(__a, __b, (vector unsigned char) 3731 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 3732 0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B)); 3733 } 3734 3735 /* vec_mergeo */ 3736 3737 static vector bool int __ATTRS_o_ai 3738 vec_mergeo(vector bool int __a, vector bool int __b) { 3739 return vec_perm(__a, __b, (vector unsigned char) 3740 (0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17, 3741 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 3742 } 3743 3744 static vector signed int __ATTRS_o_ai 3745 vec_mergeo(vector signed int __a, vector signed int __b) { 3746 return vec_perm(__a, __b, (vector unsigned char) 3747 (0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17, 3748 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 3749 } 3750 3751 static vector unsigned int __ATTRS_o_ai 3752 vec_mergeo(vector unsigned int __a, vector unsigned int __b) { 3753 return vec_perm(__a, __b, (vector unsigned char) 3754 (0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17, 3755 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 3756 } 3757 3758 #endif 3759 3760 /* vec_mfvscr */ 3761 3762 static vector unsigned short __attribute__((__always_inline__)) 3763 vec_mfvscr(void) { 3764 return __builtin_altivec_mfvscr(); 3765 } 3766 3767 /* vec_min */ 3768 3769 static vector signed char __ATTRS_o_ai vec_min(vector signed char __a, 3770 vector signed char __b) { 3771 return __builtin_altivec_vminsb(__a, __b); 3772 } 3773 3774 static vector signed char __ATTRS_o_ai vec_min(vector bool char __a, 3775 vector signed char __b) { 3776 return __builtin_altivec_vminsb((vector signed char)__a, __b); 3777 } 3778 3779 static vector signed char __ATTRS_o_ai vec_min(vector signed char __a, 3780 vector bool char __b) { 3781 return __builtin_altivec_vminsb(__a, (vector signed char)__b); 3782 } 3783 3784 static vector unsigned char __ATTRS_o_ai vec_min(vector unsigned char __a, 3785 vector unsigned char __b) { 3786 return __builtin_altivec_vminub(__a, __b); 3787 } 3788 3789 static vector unsigned char __ATTRS_o_ai vec_min(vector bool char __a, 3790 vector unsigned char __b) { 3791 return __builtin_altivec_vminub((vector unsigned char)__a, __b); 3792 } 3793 3794 static vector unsigned char __ATTRS_o_ai vec_min(vector unsigned char __a, 3795 vector bool char __b) { 3796 return __builtin_altivec_vminub(__a, (vector unsigned char)__b); 3797 } 3798 3799 static vector short __ATTRS_o_ai vec_min(vector short __a, vector short __b) { 3800 return __builtin_altivec_vminsh(__a, __b); 3801 } 3802 3803 static vector short __ATTRS_o_ai vec_min(vector bool short __a, 3804 vector short __b) { 3805 return __builtin_altivec_vminsh((vector short)__a, __b); 3806 } 3807 3808 static vector short __ATTRS_o_ai vec_min(vector short __a, 3809 vector bool short __b) { 3810 return __builtin_altivec_vminsh(__a, (vector short)__b); 3811 } 3812 3813 static vector unsigned short __ATTRS_o_ai vec_min(vector unsigned short __a, 3814 vector unsigned short __b) { 3815 return __builtin_altivec_vminuh(__a, __b); 3816 } 3817 3818 static vector unsigned short __ATTRS_o_ai vec_min(vector bool short __a, 3819 vector unsigned short __b) { 3820 return __builtin_altivec_vminuh((vector unsigned short)__a, __b); 3821 } 3822 3823 static vector unsigned short __ATTRS_o_ai vec_min(vector unsigned short __a, 3824 vector bool short __b) { 3825 return __builtin_altivec_vminuh(__a, (vector unsigned short)__b); 3826 } 3827 3828 static vector int __ATTRS_o_ai vec_min(vector int __a, vector int __b) { 3829 return __builtin_altivec_vminsw(__a, __b); 3830 } 3831 3832 static vector int __ATTRS_o_ai vec_min(vector bool int __a, vector int __b) { 3833 return __builtin_altivec_vminsw((vector int)__a, __b); 3834 } 3835 3836 static vector int __ATTRS_o_ai vec_min(vector int __a, vector bool int __b) { 3837 return __builtin_altivec_vminsw(__a, (vector int)__b); 3838 } 3839 3840 static vector unsigned int __ATTRS_o_ai vec_min(vector unsigned int __a, 3841 vector unsigned int __b) { 3842 return __builtin_altivec_vminuw(__a, __b); 3843 } 3844 3845 static vector unsigned int __ATTRS_o_ai vec_min(vector bool int __a, 3846 vector unsigned int __b) { 3847 return __builtin_altivec_vminuw((vector unsigned int)__a, __b); 3848 } 3849 3850 static vector unsigned int __ATTRS_o_ai vec_min(vector unsigned int __a, 3851 vector bool int __b) { 3852 return __builtin_altivec_vminuw(__a, (vector unsigned int)__b); 3853 } 3854 3855 #ifdef __POWER8_VECTOR__ 3856 static vector signed long long __ATTRS_o_ai 3857 vec_min(vector signed long long __a, vector signed long long __b) { 3858 return __builtin_altivec_vminsd(__a, __b); 3859 } 3860 3861 static vector signed long long __ATTRS_o_ai 3862 vec_min(vector bool long long __a, vector signed long long __b) { 3863 return __builtin_altivec_vminsd((vector signed long long)__a, __b); 3864 } 3865 3866 static vector signed long long __ATTRS_o_ai vec_min(vector signed long long __a, 3867 vector bool long long __b) { 3868 return __builtin_altivec_vminsd(__a, (vector signed long long)__b); 3869 } 3870 3871 static vector unsigned long long __ATTRS_o_ai 3872 vec_min(vector unsigned long long __a, vector unsigned long long __b) { 3873 return __builtin_altivec_vminud(__a, __b); 3874 } 3875 3876 static vector unsigned long long __ATTRS_o_ai 3877 vec_min(vector bool long long __a, vector unsigned long long __b) { 3878 return __builtin_altivec_vminud((vector unsigned long long)__a, __b); 3879 } 3880 3881 static vector unsigned long long __ATTRS_o_ai 3882 vec_min(vector unsigned long long __a, vector bool long long __b) { 3883 return __builtin_altivec_vminud(__a, (vector unsigned long long)__b); 3884 } 3885 #endif 3886 3887 static vector float __ATTRS_o_ai vec_min(vector float __a, vector float __b) { 3888 #ifdef __VSX__ 3889 return __builtin_vsx_xvminsp(__a, __b); 3890 #else 3891 return __builtin_altivec_vminfp(__a, __b); 3892 #endif 3893 } 3894 3895 #ifdef __VSX__ 3896 static vector double __ATTRS_o_ai vec_min(vector double __a, 3897 vector double __b) { 3898 return __builtin_vsx_xvmindp(__a, __b); 3899 } 3900 #endif 3901 3902 /* vec_vminsb */ 3903 3904 static vector signed char __ATTRS_o_ai vec_vminsb(vector signed char __a, 3905 vector signed char __b) { 3906 return __builtin_altivec_vminsb(__a, __b); 3907 } 3908 3909 static vector signed char __ATTRS_o_ai vec_vminsb(vector bool char __a, 3910 vector signed char __b) { 3911 return __builtin_altivec_vminsb((vector signed char)__a, __b); 3912 } 3913 3914 static vector signed char __ATTRS_o_ai vec_vminsb(vector signed char __a, 3915 vector bool char __b) { 3916 return __builtin_altivec_vminsb(__a, (vector signed char)__b); 3917 } 3918 3919 /* vec_vminub */ 3920 3921 static vector unsigned char __ATTRS_o_ai vec_vminub(vector unsigned char __a, 3922 vector unsigned char __b) { 3923 return __builtin_altivec_vminub(__a, __b); 3924 } 3925 3926 static vector unsigned char __ATTRS_o_ai vec_vminub(vector bool char __a, 3927 vector unsigned char __b) { 3928 return __builtin_altivec_vminub((vector unsigned char)__a, __b); 3929 } 3930 3931 static vector unsigned char __ATTRS_o_ai vec_vminub(vector unsigned char __a, 3932 vector bool char __b) { 3933 return __builtin_altivec_vminub(__a, (vector unsigned char)__b); 3934 } 3935 3936 /* vec_vminsh */ 3937 3938 static vector short __ATTRS_o_ai vec_vminsh(vector short __a, 3939 vector short __b) { 3940 return __builtin_altivec_vminsh(__a, __b); 3941 } 3942 3943 static vector short __ATTRS_o_ai vec_vminsh(vector bool short __a, 3944 vector short __b) { 3945 return __builtin_altivec_vminsh((vector short)__a, __b); 3946 } 3947 3948 static vector short __ATTRS_o_ai vec_vminsh(vector short __a, 3949 vector bool short __b) { 3950 return __builtin_altivec_vminsh(__a, (vector short)__b); 3951 } 3952 3953 /* vec_vminuh */ 3954 3955 static vector unsigned short __ATTRS_o_ai 3956 vec_vminuh(vector unsigned short __a, vector unsigned short __b) { 3957 return __builtin_altivec_vminuh(__a, __b); 3958 } 3959 3960 static vector unsigned short __ATTRS_o_ai 3961 vec_vminuh(vector bool short __a, vector unsigned short __b) { 3962 return __builtin_altivec_vminuh((vector unsigned short)__a, __b); 3963 } 3964 3965 static vector unsigned short __ATTRS_o_ai vec_vminuh(vector unsigned short __a, 3966 vector bool short __b) { 3967 return __builtin_altivec_vminuh(__a, (vector unsigned short)__b); 3968 } 3969 3970 /* vec_vminsw */ 3971 3972 static vector int __ATTRS_o_ai vec_vminsw(vector int __a, vector int __b) { 3973 return __builtin_altivec_vminsw(__a, __b); 3974 } 3975 3976 static vector int __ATTRS_o_ai vec_vminsw(vector bool int __a, vector int __b) { 3977 return __builtin_altivec_vminsw((vector int)__a, __b); 3978 } 3979 3980 static vector int __ATTRS_o_ai vec_vminsw(vector int __a, vector bool int __b) { 3981 return __builtin_altivec_vminsw(__a, (vector int)__b); 3982 } 3983 3984 /* vec_vminuw */ 3985 3986 static vector unsigned int __ATTRS_o_ai vec_vminuw(vector unsigned int __a, 3987 vector unsigned int __b) { 3988 return __builtin_altivec_vminuw(__a, __b); 3989 } 3990 3991 static vector unsigned int __ATTRS_o_ai vec_vminuw(vector bool int __a, 3992 vector unsigned int __b) { 3993 return __builtin_altivec_vminuw((vector unsigned int)__a, __b); 3994 } 3995 3996 static vector unsigned int __ATTRS_o_ai vec_vminuw(vector unsigned int __a, 3997 vector bool int __b) { 3998 return __builtin_altivec_vminuw(__a, (vector unsigned int)__b); 3999 } 4000 4001 /* vec_vminfp */ 4002 4003 static vector float __attribute__((__always_inline__)) 4004 vec_vminfp(vector float __a, vector float __b) { 4005 #ifdef __VSX__ 4006 return __builtin_vsx_xvminsp(__a, __b); 4007 #else 4008 return __builtin_altivec_vminfp(__a, __b); 4009 #endif 4010 } 4011 4012 /* vec_mladd */ 4013 4014 #define __builtin_altivec_vmladduhm vec_mladd 4015 4016 static vector short __ATTRS_o_ai vec_mladd(vector short __a, vector short __b, 4017 vector short __c) { 4018 return __a * __b + __c; 4019 } 4020 4021 static vector short __ATTRS_o_ai vec_mladd(vector short __a, 4022 vector unsigned short __b, 4023 vector unsigned short __c) { 4024 return __a * (vector short)__b + (vector short)__c; 4025 } 4026 4027 static vector short __ATTRS_o_ai vec_mladd(vector unsigned short __a, 4028 vector short __b, vector short __c) { 4029 return (vector short)__a * __b + __c; 4030 } 4031 4032 static vector unsigned short __ATTRS_o_ai vec_mladd(vector unsigned short __a, 4033 vector unsigned short __b, 4034 vector unsigned short __c) { 4035 return __a * __b + __c; 4036 } 4037 4038 /* vec_vmladduhm */ 4039 4040 static vector short __ATTRS_o_ai vec_vmladduhm(vector short __a, 4041 vector short __b, 4042 vector short __c) { 4043 return __a * __b + __c; 4044 } 4045 4046 static vector short __ATTRS_o_ai vec_vmladduhm(vector short __a, 4047 vector unsigned short __b, 4048 vector unsigned short __c) { 4049 return __a * (vector short)__b + (vector short)__c; 4050 } 4051 4052 static vector short __ATTRS_o_ai vec_vmladduhm(vector unsigned short __a, 4053 vector short __b, 4054 vector short __c) { 4055 return (vector short)__a * __b + __c; 4056 } 4057 4058 static vector unsigned short __ATTRS_o_ai 4059 vec_vmladduhm(vector unsigned short __a, vector unsigned short __b, 4060 vector unsigned short __c) { 4061 return __a * __b + __c; 4062 } 4063 4064 /* vec_mradds */ 4065 4066 static vector short __attribute__((__always_inline__)) 4067 vec_mradds(vector short __a, vector short __b, vector short __c) { 4068 return __builtin_altivec_vmhraddshs(__a, __b, __c); 4069 } 4070 4071 /* vec_vmhraddshs */ 4072 4073 static vector short __attribute__((__always_inline__)) 4074 vec_vmhraddshs(vector short __a, vector short __b, vector short __c) { 4075 return __builtin_altivec_vmhraddshs(__a, __b, __c); 4076 } 4077 4078 /* vec_msum */ 4079 4080 static vector int __ATTRS_o_ai vec_msum(vector signed char __a, 4081 vector unsigned char __b, 4082 vector int __c) { 4083 return __builtin_altivec_vmsummbm(__a, __b, __c); 4084 } 4085 4086 static vector unsigned int __ATTRS_o_ai vec_msum(vector unsigned char __a, 4087 vector unsigned char __b, 4088 vector unsigned int __c) { 4089 return __builtin_altivec_vmsumubm(__a, __b, __c); 4090 } 4091 4092 static vector int __ATTRS_o_ai vec_msum(vector short __a, vector short __b, 4093 vector int __c) { 4094 return __builtin_altivec_vmsumshm(__a, __b, __c); 4095 } 4096 4097 static vector unsigned int __ATTRS_o_ai vec_msum(vector unsigned short __a, 4098 vector unsigned short __b, 4099 vector unsigned int __c) { 4100 return __builtin_altivec_vmsumuhm(__a, __b, __c); 4101 } 4102 4103 /* vec_vmsummbm */ 4104 4105 static vector int __attribute__((__always_inline__)) 4106 vec_vmsummbm(vector signed char __a, vector unsigned char __b, vector int __c) { 4107 return __builtin_altivec_vmsummbm(__a, __b, __c); 4108 } 4109 4110 /* vec_vmsumubm */ 4111 4112 static vector unsigned int __attribute__((__always_inline__)) 4113 vec_vmsumubm(vector unsigned char __a, vector unsigned char __b, 4114 vector unsigned int __c) { 4115 return __builtin_altivec_vmsumubm(__a, __b, __c); 4116 } 4117 4118 /* vec_vmsumshm */ 4119 4120 static vector int __attribute__((__always_inline__)) 4121 vec_vmsumshm(vector short __a, vector short __b, vector int __c) { 4122 return __builtin_altivec_vmsumshm(__a, __b, __c); 4123 } 4124 4125 /* vec_vmsumuhm */ 4126 4127 static vector unsigned int __attribute__((__always_inline__)) 4128 vec_vmsumuhm(vector unsigned short __a, vector unsigned short __b, 4129 vector unsigned int __c) { 4130 return __builtin_altivec_vmsumuhm(__a, __b, __c); 4131 } 4132 4133 /* vec_msums */ 4134 4135 static vector int __ATTRS_o_ai vec_msums(vector short __a, vector short __b, 4136 vector int __c) { 4137 return __builtin_altivec_vmsumshs(__a, __b, __c); 4138 } 4139 4140 static vector unsigned int __ATTRS_o_ai vec_msums(vector unsigned short __a, 4141 vector unsigned short __b, 4142 vector unsigned int __c) { 4143 return __builtin_altivec_vmsumuhs(__a, __b, __c); 4144 } 4145 4146 /* vec_vmsumshs */ 4147 4148 static vector int __attribute__((__always_inline__)) 4149 vec_vmsumshs(vector short __a, vector short __b, vector int __c) { 4150 return __builtin_altivec_vmsumshs(__a, __b, __c); 4151 } 4152 4153 /* vec_vmsumuhs */ 4154 4155 static vector unsigned int __attribute__((__always_inline__)) 4156 vec_vmsumuhs(vector unsigned short __a, vector unsigned short __b, 4157 vector unsigned int __c) { 4158 return __builtin_altivec_vmsumuhs(__a, __b, __c); 4159 } 4160 4161 /* vec_mtvscr */ 4162 4163 static void __ATTRS_o_ai vec_mtvscr(vector signed char __a) { 4164 __builtin_altivec_mtvscr((vector int)__a); 4165 } 4166 4167 static void __ATTRS_o_ai vec_mtvscr(vector unsigned char __a) { 4168 __builtin_altivec_mtvscr((vector int)__a); 4169 } 4170 4171 static void __ATTRS_o_ai vec_mtvscr(vector bool char __a) { 4172 __builtin_altivec_mtvscr((vector int)__a); 4173 } 4174 4175 static void __ATTRS_o_ai vec_mtvscr(vector short __a) { 4176 __builtin_altivec_mtvscr((vector int)__a); 4177 } 4178 4179 static void __ATTRS_o_ai vec_mtvscr(vector unsigned short __a) { 4180 __builtin_altivec_mtvscr((vector int)__a); 4181 } 4182 4183 static void __ATTRS_o_ai vec_mtvscr(vector bool short __a) { 4184 __builtin_altivec_mtvscr((vector int)__a); 4185 } 4186 4187 static void __ATTRS_o_ai vec_mtvscr(vector pixel __a) { 4188 __builtin_altivec_mtvscr((vector int)__a); 4189 } 4190 4191 static void __ATTRS_o_ai vec_mtvscr(vector int __a) { 4192 __builtin_altivec_mtvscr((vector int)__a); 4193 } 4194 4195 static void __ATTRS_o_ai vec_mtvscr(vector unsigned int __a) { 4196 __builtin_altivec_mtvscr((vector int)__a); 4197 } 4198 4199 static void __ATTRS_o_ai vec_mtvscr(vector bool int __a) { 4200 __builtin_altivec_mtvscr((vector int)__a); 4201 } 4202 4203 static void __ATTRS_o_ai vec_mtvscr(vector float __a) { 4204 __builtin_altivec_mtvscr((vector int)__a); 4205 } 4206 4207 /* vec_mul */ 4208 4209 /* Integer vector multiplication will involve multiplication of the odd/even 4210 elements separately, then truncating the results and moving to the 4211 result vector. 4212 */ 4213 static vector signed char __ATTRS_o_ai vec_mul(vector signed char __a, 4214 vector signed char __b) { 4215 return __a * __b; 4216 } 4217 4218 static vector unsigned char __ATTRS_o_ai vec_mul(vector unsigned char __a, 4219 vector unsigned char __b) { 4220 return __a * __b; 4221 } 4222 4223 static vector signed short __ATTRS_o_ai vec_mul(vector signed short __a, 4224 vector signed short __b) { 4225 return __a * __b; 4226 } 4227 4228 static vector unsigned short __ATTRS_o_ai vec_mul(vector unsigned short __a, 4229 vector unsigned short __b) { 4230 return __a * __b; 4231 } 4232 4233 static vector signed int __ATTRS_o_ai vec_mul(vector signed int __a, 4234 vector signed int __b) { 4235 return __a * __b; 4236 } 4237 4238 static vector unsigned int __ATTRS_o_ai vec_mul(vector unsigned int __a, 4239 vector unsigned int __b) { 4240 return __a * __b; 4241 } 4242 4243 #ifdef __VSX__ 4244 static vector signed long long __ATTRS_o_ai 4245 vec_mul(vector signed long long __a, vector signed long long __b) { 4246 return __a * __b; 4247 } 4248 4249 static vector unsigned long long __ATTRS_o_ai 4250 vec_mul(vector unsigned long long __a, vector unsigned long long __b) { 4251 return __a * __b; 4252 } 4253 #endif 4254 4255 static vector float __ATTRS_o_ai vec_mul(vector float __a, vector float __b) { 4256 return __a * __b; 4257 } 4258 4259 #ifdef __VSX__ 4260 static vector double __ATTRS_o_ai 4261 vec_mul(vector double __a, vector double __b) { 4262 return __a * __b; 4263 } 4264 #endif 4265 4266 /* The vmulos* and vmules* instructions have a big endian bias, so 4267 we must reverse the meaning of "even" and "odd" for little endian. */ 4268 4269 /* vec_mule */ 4270 4271 static vector short __ATTRS_o_ai vec_mule(vector signed char __a, 4272 vector signed char __b) { 4273 #ifdef __LITTLE_ENDIAN__ 4274 return __builtin_altivec_vmulosb(__a, __b); 4275 #else 4276 return __builtin_altivec_vmulesb(__a, __b); 4277 #endif 4278 } 4279 4280 static vector unsigned short __ATTRS_o_ai vec_mule(vector unsigned char __a, 4281 vector unsigned char __b) { 4282 #ifdef __LITTLE_ENDIAN__ 4283 return __builtin_altivec_vmuloub(__a, __b); 4284 #else 4285 return __builtin_altivec_vmuleub(__a, __b); 4286 #endif 4287 } 4288 4289 static vector int __ATTRS_o_ai vec_mule(vector short __a, vector short __b) { 4290 #ifdef __LITTLE_ENDIAN__ 4291 return __builtin_altivec_vmulosh(__a, __b); 4292 #else 4293 return __builtin_altivec_vmulesh(__a, __b); 4294 #endif 4295 } 4296 4297 static vector unsigned int __ATTRS_o_ai vec_mule(vector unsigned short __a, 4298 vector unsigned short __b) { 4299 #ifdef __LITTLE_ENDIAN__ 4300 return __builtin_altivec_vmulouh(__a, __b); 4301 #else 4302 return __builtin_altivec_vmuleuh(__a, __b); 4303 #endif 4304 } 4305 4306 #ifdef __POWER8_VECTOR__ 4307 static vector signed long long __ATTRS_o_ai vec_mule(vector signed int __a, 4308 vector signed int __b) { 4309 #ifdef __LITTLE_ENDIAN__ 4310 return __builtin_altivec_vmulosw(__a, __b); 4311 #else 4312 return __builtin_altivec_vmulesw(__a, __b); 4313 #endif 4314 } 4315 4316 static vector unsigned long long __ATTRS_o_ai 4317 vec_mule(vector unsigned int __a, vector unsigned int __b) { 4318 #ifdef __LITTLE_ENDIAN__ 4319 return __builtin_altivec_vmulouw(__a, __b); 4320 #else 4321 return __builtin_altivec_vmuleuw(__a, __b); 4322 #endif 4323 } 4324 #endif 4325 4326 /* vec_vmulesb */ 4327 4328 static vector short __attribute__((__always_inline__)) 4329 vec_vmulesb(vector signed char __a, vector signed char __b) { 4330 #ifdef __LITTLE_ENDIAN__ 4331 return __builtin_altivec_vmulosb(__a, __b); 4332 #else 4333 return __builtin_altivec_vmulesb(__a, __b); 4334 #endif 4335 } 4336 4337 /* vec_vmuleub */ 4338 4339 static vector unsigned short __attribute__((__always_inline__)) 4340 vec_vmuleub(vector unsigned char __a, vector unsigned char __b) { 4341 #ifdef __LITTLE_ENDIAN__ 4342 return __builtin_altivec_vmuloub(__a, __b); 4343 #else 4344 return __builtin_altivec_vmuleub(__a, __b); 4345 #endif 4346 } 4347 4348 /* vec_vmulesh */ 4349 4350 static vector int __attribute__((__always_inline__)) 4351 vec_vmulesh(vector short __a, vector short __b) { 4352 #ifdef __LITTLE_ENDIAN__ 4353 return __builtin_altivec_vmulosh(__a, __b); 4354 #else 4355 return __builtin_altivec_vmulesh(__a, __b); 4356 #endif 4357 } 4358 4359 /* vec_vmuleuh */ 4360 4361 static vector unsigned int __attribute__((__always_inline__)) 4362 vec_vmuleuh(vector unsigned short __a, vector unsigned short __b) { 4363 #ifdef __LITTLE_ENDIAN__ 4364 return __builtin_altivec_vmulouh(__a, __b); 4365 #else 4366 return __builtin_altivec_vmuleuh(__a, __b); 4367 #endif 4368 } 4369 4370 /* vec_mulo */ 4371 4372 static vector short __ATTRS_o_ai vec_mulo(vector signed char __a, 4373 vector signed char __b) { 4374 #ifdef __LITTLE_ENDIAN__ 4375 return __builtin_altivec_vmulesb(__a, __b); 4376 #else 4377 return __builtin_altivec_vmulosb(__a, __b); 4378 #endif 4379 } 4380 4381 static vector unsigned short __ATTRS_o_ai vec_mulo(vector unsigned char __a, 4382 vector unsigned char __b) { 4383 #ifdef __LITTLE_ENDIAN__ 4384 return __builtin_altivec_vmuleub(__a, __b); 4385 #else 4386 return __builtin_altivec_vmuloub(__a, __b); 4387 #endif 4388 } 4389 4390 static vector int __ATTRS_o_ai vec_mulo(vector short __a, vector short __b) { 4391 #ifdef __LITTLE_ENDIAN__ 4392 return __builtin_altivec_vmulesh(__a, __b); 4393 #else 4394 return __builtin_altivec_vmulosh(__a, __b); 4395 #endif 4396 } 4397 4398 static vector unsigned int __ATTRS_o_ai vec_mulo(vector unsigned short __a, 4399 vector unsigned short __b) { 4400 #ifdef __LITTLE_ENDIAN__ 4401 return __builtin_altivec_vmuleuh(__a, __b); 4402 #else 4403 return __builtin_altivec_vmulouh(__a, __b); 4404 #endif 4405 } 4406 4407 #ifdef __POWER8_VECTOR__ 4408 static vector signed long long __ATTRS_o_ai vec_mulo(vector signed int __a, 4409 vector signed int __b) { 4410 #ifdef __LITTLE_ENDIAN__ 4411 return __builtin_altivec_vmulesw(__a, __b); 4412 #else 4413 return __builtin_altivec_vmulosw(__a, __b); 4414 #endif 4415 } 4416 4417 static vector unsigned long long __ATTRS_o_ai 4418 vec_mulo(vector unsigned int __a, vector unsigned int __b) { 4419 #ifdef __LITTLE_ENDIAN__ 4420 return __builtin_altivec_vmuleuw(__a, __b); 4421 #else 4422 return __builtin_altivec_vmulouw(__a, __b); 4423 #endif 4424 } 4425 #endif 4426 4427 /* vec_vmulosb */ 4428 4429 static vector short __attribute__((__always_inline__)) 4430 vec_vmulosb(vector signed char __a, vector signed char __b) { 4431 #ifdef __LITTLE_ENDIAN__ 4432 return __builtin_altivec_vmulesb(__a, __b); 4433 #else 4434 return __builtin_altivec_vmulosb(__a, __b); 4435 #endif 4436 } 4437 4438 /* vec_vmuloub */ 4439 4440 static vector unsigned short __attribute__((__always_inline__)) 4441 vec_vmuloub(vector unsigned char __a, vector unsigned char __b) { 4442 #ifdef __LITTLE_ENDIAN__ 4443 return __builtin_altivec_vmuleub(__a, __b); 4444 #else 4445 return __builtin_altivec_vmuloub(__a, __b); 4446 #endif 4447 } 4448 4449 /* vec_vmulosh */ 4450 4451 static vector int __attribute__((__always_inline__)) 4452 vec_vmulosh(vector short __a, vector short __b) { 4453 #ifdef __LITTLE_ENDIAN__ 4454 return __builtin_altivec_vmulesh(__a, __b); 4455 #else 4456 return __builtin_altivec_vmulosh(__a, __b); 4457 #endif 4458 } 4459 4460 /* vec_vmulouh */ 4461 4462 static vector unsigned int __attribute__((__always_inline__)) 4463 vec_vmulouh(vector unsigned short __a, vector unsigned short __b) { 4464 #ifdef __LITTLE_ENDIAN__ 4465 return __builtin_altivec_vmuleuh(__a, __b); 4466 #else 4467 return __builtin_altivec_vmulouh(__a, __b); 4468 #endif 4469 } 4470 4471 /* vec_nand */ 4472 4473 #ifdef __POWER8_VECTOR__ 4474 static vector signed char __ATTRS_o_ai vec_nand(vector signed char __a, 4475 vector signed char __b) { 4476 return ~(__a & __b); 4477 } 4478 4479 static vector signed char __ATTRS_o_ai vec_nand(vector signed char __a, 4480 vector bool char __b) { 4481 return ~(__a & __b); 4482 } 4483 4484 static vector signed char __ATTRS_o_ai vec_nand(vector bool char __a, 4485 vector signed char __b) { 4486 return ~(__a & __b); 4487 } 4488 4489 static vector unsigned char __ATTRS_o_ai vec_nand(vector unsigned char __a, 4490 vector unsigned char __b) { 4491 return ~(__a & __b); 4492 } 4493 4494 static vector unsigned char __ATTRS_o_ai vec_nand(vector unsigned char __a, 4495 vector bool char __b) { 4496 return ~(__a & __b); 4497 4498 } 4499 4500 static vector unsigned char __ATTRS_o_ai vec_nand(vector bool char __a, 4501 vector unsigned char __b) { 4502 return ~(__a & __b); 4503 } 4504 4505 static vector bool char __ATTRS_o_ai vec_nand(vector bool char __a, 4506 vector bool char __b) { 4507 return ~(__a & __b); 4508 } 4509 4510 static vector signed short __ATTRS_o_ai vec_nand(vector signed short __a, 4511 vector signed short __b) { 4512 return ~(__a & __b); 4513 } 4514 4515 static vector signed short __ATTRS_o_ai vec_nand(vector signed short __a, 4516 vector bool short __b) { 4517 return ~(__a & __b); 4518 } 4519 4520 static vector signed short __ATTRS_o_ai vec_nand(vector bool short __a, 4521 vector signed short __b) { 4522 return ~(__a & __b); 4523 } 4524 4525 static vector unsigned short __ATTRS_o_ai vec_nand(vector unsigned short __a, 4526 vector unsigned short __b) { 4527 return ~(__a & __b); 4528 } 4529 4530 static vector unsigned short __ATTRS_o_ai vec_nand(vector unsigned short __a, 4531 vector bool short __b) { 4532 return ~(__a & __b); 4533 4534 } 4535 4536 static vector bool short __ATTRS_o_ai vec_nand(vector bool short __a, 4537 vector bool short __b) { 4538 return ~(__a & __b); 4539 4540 } 4541 4542 static vector signed int __ATTRS_o_ai vec_nand(vector signed int __a, 4543 vector signed int __b) { 4544 return ~(__a & __b); 4545 } 4546 4547 static vector signed int __ATTRS_o_ai vec_nand(vector signed int __a, 4548 vector bool int __b) { 4549 return ~(__a & __b); 4550 } 4551 4552 static vector signed int __ATTRS_o_ai vec_nand(vector bool int __a, 4553 vector signed int __b) { 4554 return ~(__a & __b); 4555 } 4556 4557 static vector unsigned int __ATTRS_o_ai vec_nand(vector unsigned int __a, 4558 vector unsigned int __b) { 4559 return ~(__a & __b); 4560 } 4561 4562 static vector unsigned int __ATTRS_o_ai vec_nand(vector unsigned int __a, 4563 vector bool int __b) { 4564 return ~(__a & __b); 4565 } 4566 4567 static vector unsigned int __ATTRS_o_ai vec_nand(vector bool int __a, 4568 vector unsigned int __b) { 4569 return ~(__a & __b); 4570 } 4571 4572 static vector bool int __ATTRS_o_ai vec_nand(vector bool int __a, 4573 vector bool int __b) { 4574 return ~(__a & __b); 4575 } 4576 4577 static vector signed long long __ATTRS_o_ai 4578 vec_nand(vector signed long long __a, vector signed long long __b) { 4579 return ~(__a & __b); 4580 } 4581 4582 static vector signed long long __ATTRS_o_ai 4583 vec_nand(vector signed long long __a, vector bool long long __b) { 4584 return ~(__a & __b); 4585 } 4586 4587 static vector signed long long __ATTRS_o_ai 4588 vec_nand(vector bool long long __a, vector signed long long __b) { 4589 return ~(__a & __b); 4590 } 4591 4592 static vector unsigned long long __ATTRS_o_ai 4593 vec_nand(vector unsigned long long __a, vector unsigned long long __b) { 4594 return ~(__a & __b); 4595 } 4596 4597 static vector unsigned long long __ATTRS_o_ai 4598 vec_nand(vector unsigned long long __a, vector bool long long __b) { 4599 return ~(__a & __b); 4600 } 4601 4602 static vector unsigned long long __ATTRS_o_ai 4603 vec_nand(vector bool long long __a, vector unsigned long long __b) { 4604 return ~(__a & __b); 4605 } 4606 4607 static vector bool long long __ATTRS_o_ai 4608 vec_nand(vector bool long long __a, vector bool long long __b) { 4609 return ~(__a & __b); 4610 } 4611 4612 #endif 4613 4614 /* vec_nmadd */ 4615 4616 #ifdef __VSX__ 4617 static vector float __ATTRS_o_ai 4618 vec_nmadd(vector float __a, vector float __b, vector float __c) { 4619 return __builtin_vsx_xvnmaddasp(__a, __b, __c); 4620 } 4621 4622 static vector double __ATTRS_o_ai 4623 vec_nmadd(vector double __a, vector double __b, vector double __c) { 4624 return __builtin_vsx_xvnmaddadp(__a, __b, __c); 4625 } 4626 #endif 4627 4628 /* vec_nmsub */ 4629 4630 static vector float __ATTRS_o_ai 4631 vec_nmsub(vector float __a, vector float __b, vector float __c) { 4632 #ifdef __VSX__ 4633 return __builtin_vsx_xvnmsubasp(__a, __b, __c); 4634 #else 4635 return __builtin_altivec_vnmsubfp(__a, __b, __c); 4636 #endif 4637 } 4638 4639 #ifdef __VSX__ 4640 static vector double __ATTRS_o_ai 4641 vec_nmsub(vector double __a, vector double __b, vector double __c) { 4642 return __builtin_vsx_xvnmsubadp(__a, __b, __c); 4643 } 4644 #endif 4645 4646 /* vec_vnmsubfp */ 4647 4648 static vector float __attribute__((__always_inline__)) 4649 vec_vnmsubfp(vector float __a, vector float __b, vector float __c) { 4650 return __builtin_altivec_vnmsubfp(__a, __b, __c); 4651 } 4652 4653 /* vec_nor */ 4654 4655 #define __builtin_altivec_vnor vec_nor 4656 4657 static vector signed char __ATTRS_o_ai vec_nor(vector signed char __a, 4658 vector signed char __b) { 4659 return ~(__a | __b); 4660 } 4661 4662 static vector unsigned char __ATTRS_o_ai vec_nor(vector unsigned char __a, 4663 vector unsigned char __b) { 4664 return ~(__a | __b); 4665 } 4666 4667 static vector bool char __ATTRS_o_ai vec_nor(vector bool char __a, 4668 vector bool char __b) { 4669 return ~(__a | __b); 4670 } 4671 4672 static vector short __ATTRS_o_ai vec_nor(vector short __a, vector short __b) { 4673 return ~(__a | __b); 4674 } 4675 4676 static vector unsigned short __ATTRS_o_ai vec_nor(vector unsigned short __a, 4677 vector unsigned short __b) { 4678 return ~(__a | __b); 4679 } 4680 4681 static vector bool short __ATTRS_o_ai vec_nor(vector bool short __a, 4682 vector bool short __b) { 4683 return ~(__a | __b); 4684 } 4685 4686 static vector int __ATTRS_o_ai vec_nor(vector int __a, vector int __b) { 4687 return ~(__a | __b); 4688 } 4689 4690 static vector unsigned int __ATTRS_o_ai vec_nor(vector unsigned int __a, 4691 vector unsigned int __b) { 4692 return ~(__a | __b); 4693 } 4694 4695 static vector bool int __ATTRS_o_ai vec_nor(vector bool int __a, 4696 vector bool int __b) { 4697 return ~(__a | __b); 4698 } 4699 4700 static vector float __ATTRS_o_ai vec_nor(vector float __a, vector float __b) { 4701 vector unsigned int __res = 4702 ~((vector unsigned int)__a | (vector unsigned int)__b); 4703 return (vector float)__res; 4704 } 4705 4706 #ifdef __VSX__ 4707 static vector double __ATTRS_o_ai 4708 vec_nor(vector double __a, vector double __b) { 4709 vector unsigned long long __res = 4710 ~((vector unsigned long long)__a | (vector unsigned long long)__b); 4711 return (vector double)__res; 4712 } 4713 #endif 4714 4715 /* vec_vnor */ 4716 4717 static vector signed char __ATTRS_o_ai vec_vnor(vector signed char __a, 4718 vector signed char __b) { 4719 return ~(__a | __b); 4720 } 4721 4722 static vector unsigned char __ATTRS_o_ai vec_vnor(vector unsigned char __a, 4723 vector unsigned char __b) { 4724 return ~(__a | __b); 4725 } 4726 4727 static vector bool char __ATTRS_o_ai vec_vnor(vector bool char __a, 4728 vector bool char __b) { 4729 return ~(__a | __b); 4730 } 4731 4732 static vector short __ATTRS_o_ai vec_vnor(vector short __a, vector short __b) { 4733 return ~(__a | __b); 4734 } 4735 4736 static vector unsigned short __ATTRS_o_ai vec_vnor(vector unsigned short __a, 4737 vector unsigned short __b) { 4738 return ~(__a | __b); 4739 } 4740 4741 static vector bool short __ATTRS_o_ai vec_vnor(vector bool short __a, 4742 vector bool short __b) { 4743 return ~(__a | __b); 4744 } 4745 4746 static vector int __ATTRS_o_ai vec_vnor(vector int __a, vector int __b) { 4747 return ~(__a | __b); 4748 } 4749 4750 static vector unsigned int __ATTRS_o_ai vec_vnor(vector unsigned int __a, 4751 vector unsigned int __b) { 4752 return ~(__a | __b); 4753 } 4754 4755 static vector bool int __ATTRS_o_ai vec_vnor(vector bool int __a, 4756 vector bool int __b) { 4757 return ~(__a | __b); 4758 } 4759 4760 static vector float __ATTRS_o_ai vec_vnor(vector float __a, vector float __b) { 4761 vector unsigned int __res = 4762 ~((vector unsigned int)__a | (vector unsigned int)__b); 4763 return (vector float)__res; 4764 } 4765 4766 #ifdef __VSX__ 4767 static vector signed long long __ATTRS_o_ai 4768 vec_nor(vector signed long long __a, vector signed long long __b) { 4769 return ~(__a | __b); 4770 } 4771 4772 static vector unsigned long long __ATTRS_o_ai 4773 vec_nor(vector unsigned long long __a, vector unsigned long long __b) { 4774 return ~(__a | __b); 4775 } 4776 4777 static vector bool long long __ATTRS_o_ai vec_nor(vector bool long long __a, 4778 vector bool long long __b) { 4779 return ~(__a | __b); 4780 } 4781 #endif 4782 4783 /* vec_or */ 4784 4785 #define __builtin_altivec_vor vec_or 4786 4787 static vector signed char __ATTRS_o_ai vec_or(vector signed char __a, 4788 vector signed char __b) { 4789 return __a | __b; 4790 } 4791 4792 static vector signed char __ATTRS_o_ai vec_or(vector bool char __a, 4793 vector signed char __b) { 4794 return (vector signed char)__a | __b; 4795 } 4796 4797 static vector signed char __ATTRS_o_ai vec_or(vector signed char __a, 4798 vector bool char __b) { 4799 return __a | (vector signed char)__b; 4800 } 4801 4802 static vector unsigned char __ATTRS_o_ai vec_or(vector unsigned char __a, 4803 vector unsigned char __b) { 4804 return __a | __b; 4805 } 4806 4807 static vector unsigned char __ATTRS_o_ai vec_or(vector bool char __a, 4808 vector unsigned char __b) { 4809 return (vector unsigned char)__a | __b; 4810 } 4811 4812 static vector unsigned char __ATTRS_o_ai vec_or(vector unsigned char __a, 4813 vector bool char __b) { 4814 return __a | (vector unsigned char)__b; 4815 } 4816 4817 static vector bool char __ATTRS_o_ai vec_or(vector bool char __a, 4818 vector bool char __b) { 4819 return __a | __b; 4820 } 4821 4822 static vector short __ATTRS_o_ai vec_or(vector short __a, vector short __b) { 4823 return __a | __b; 4824 } 4825 4826 static vector short __ATTRS_o_ai vec_or(vector bool short __a, 4827 vector short __b) { 4828 return (vector short)__a | __b; 4829 } 4830 4831 static vector short __ATTRS_o_ai vec_or(vector short __a, 4832 vector bool short __b) { 4833 return __a | (vector short)__b; 4834 } 4835 4836 static vector unsigned short __ATTRS_o_ai vec_or(vector unsigned short __a, 4837 vector unsigned short __b) { 4838 return __a | __b; 4839 } 4840 4841 static vector unsigned short __ATTRS_o_ai vec_or(vector bool short __a, 4842 vector unsigned short __b) { 4843 return (vector unsigned short)__a | __b; 4844 } 4845 4846 static vector unsigned short __ATTRS_o_ai vec_or(vector unsigned short __a, 4847 vector bool short __b) { 4848 return __a | (vector unsigned short)__b; 4849 } 4850 4851 static vector bool short __ATTRS_o_ai vec_or(vector bool short __a, 4852 vector bool short __b) { 4853 return __a | __b; 4854 } 4855 4856 static vector int __ATTRS_o_ai vec_or(vector int __a, vector int __b) { 4857 return __a | __b; 4858 } 4859 4860 static vector int __ATTRS_o_ai vec_or(vector bool int __a, vector int __b) { 4861 return (vector int)__a | __b; 4862 } 4863 4864 static vector int __ATTRS_o_ai vec_or(vector int __a, vector bool int __b) { 4865 return __a | (vector int)__b; 4866 } 4867 4868 static vector unsigned int __ATTRS_o_ai vec_or(vector unsigned int __a, 4869 vector unsigned int __b) { 4870 return __a | __b; 4871 } 4872 4873 static vector unsigned int __ATTRS_o_ai vec_or(vector bool int __a, 4874 vector unsigned int __b) { 4875 return (vector unsigned int)__a | __b; 4876 } 4877 4878 static vector unsigned int __ATTRS_o_ai vec_or(vector unsigned int __a, 4879 vector bool int __b) { 4880 return __a | (vector unsigned int)__b; 4881 } 4882 4883 static vector bool int __ATTRS_o_ai vec_or(vector bool int __a, 4884 vector bool int __b) { 4885 return __a | __b; 4886 } 4887 4888 static vector float __ATTRS_o_ai vec_or(vector float __a, vector float __b) { 4889 vector unsigned int __res = 4890 (vector unsigned int)__a | (vector unsigned int)__b; 4891 return (vector float)__res; 4892 } 4893 4894 static vector float __ATTRS_o_ai vec_or(vector bool int __a, vector float __b) { 4895 vector unsigned int __res = 4896 (vector unsigned int)__a | (vector unsigned int)__b; 4897 return (vector float)__res; 4898 } 4899 4900 static vector float __ATTRS_o_ai vec_or(vector float __a, vector bool int __b) { 4901 vector unsigned int __res = 4902 (vector unsigned int)__a | (vector unsigned int)__b; 4903 return (vector float)__res; 4904 } 4905 4906 #ifdef __VSX__ 4907 static vector double __ATTRS_o_ai vec_or(vector bool long long __a, 4908 vector double __b) { 4909 return (vector unsigned long long)__a | (vector unsigned long long)__b; 4910 } 4911 4912 static vector double __ATTRS_o_ai vec_or(vector double __a, 4913 vector bool long long __b) { 4914 return (vector unsigned long long)__a | (vector unsigned long long)__b; 4915 } 4916 4917 static vector double __ATTRS_o_ai vec_or(vector double __a, vector double __b) { 4918 vector unsigned long long __res = 4919 (vector unsigned long long)__a | (vector unsigned long long)__b; 4920 return (vector double)__res; 4921 } 4922 4923 static vector signed long long __ATTRS_o_ai 4924 vec_or(vector signed long long __a, vector signed long long __b) { 4925 return __a | __b; 4926 } 4927 4928 static vector signed long long __ATTRS_o_ai 4929 vec_or(vector bool long long __a, vector signed long long __b) { 4930 return (vector signed long long)__a | __b; 4931 } 4932 4933 static vector signed long long __ATTRS_o_ai vec_or(vector signed long long __a, 4934 vector bool long long __b) { 4935 return __a | (vector signed long long)__b; 4936 } 4937 4938 static vector unsigned long long __ATTRS_o_ai 4939 vec_or(vector unsigned long long __a, vector unsigned long long __b) { 4940 return __a | __b; 4941 } 4942 4943 static vector unsigned long long __ATTRS_o_ai 4944 vec_or(vector bool long long __a, vector unsigned long long __b) { 4945 return (vector unsigned long long)__a | __b; 4946 } 4947 4948 static vector unsigned long long __ATTRS_o_ai 4949 vec_or(vector unsigned long long __a, vector bool long long __b) { 4950 return __a | (vector unsigned long long)__b; 4951 } 4952 4953 static vector bool long long __ATTRS_o_ai vec_or(vector bool long long __a, 4954 vector bool long long __b) { 4955 return __a | __b; 4956 } 4957 #endif 4958 4959 #ifdef __POWER8_VECTOR__ 4960 static vector signed char __ATTRS_o_ai vec_orc(vector signed char __a, 4961 vector signed char __b) { 4962 return __a | ~__b; 4963 } 4964 4965 static vector signed char __ATTRS_o_ai vec_orc(vector signed char __a, 4966 vector bool char __b) { 4967 return __a | ~__b; 4968 } 4969 4970 static vector signed char __ATTRS_o_ai vec_orc(vector bool char __a, 4971 vector signed char __b) { 4972 return __a | ~__b; 4973 } 4974 4975 static vector unsigned char __ATTRS_o_ai vec_orc(vector unsigned char __a, 4976 vector unsigned char __b) { 4977 return __a | ~__b; 4978 } 4979 4980 static vector unsigned char __ATTRS_o_ai vec_orc(vector unsigned char __a, 4981 vector bool char __b) { 4982 return __a | ~__b; 4983 } 4984 4985 static vector unsigned char __ATTRS_o_ai vec_orc(vector bool char __a, 4986 vector unsigned char __b) { 4987 return __a | ~__b; 4988 } 4989 4990 static vector bool char __ATTRS_o_ai vec_orc(vector bool char __a, 4991 vector bool char __b) { 4992 return __a | ~__b; 4993 } 4994 4995 static vector signed short __ATTRS_o_ai vec_orc(vector signed short __a, 4996 vector signed short __b) { 4997 return __a | ~__b; 4998 } 4999 5000 static vector signed short __ATTRS_o_ai vec_orc(vector signed short __a, 5001 vector bool short __b) { 5002 return __a | ~__b; 5003 } 5004 5005 static vector signed short __ATTRS_o_ai vec_orc(vector bool short __a, 5006 vector signed short __b) { 5007 return __a | ~__b; 5008 } 5009 5010 static vector unsigned short __ATTRS_o_ai vec_orc(vector unsigned short __a, 5011 vector unsigned short __b) { 5012 return __a | ~__b; 5013 } 5014 5015 static vector unsigned short __ATTRS_o_ai vec_orc(vector unsigned short __a, 5016 vector bool short __b) { 5017 return __a | ~__b; 5018 } 5019 5020 static vector unsigned short __ATTRS_o_ai 5021 vec_orc(vector bool short __a, vector unsigned short __b) { 5022 return __a | ~__b; 5023 } 5024 5025 static vector bool short __ATTRS_o_ai vec_orc(vector bool short __a, 5026 vector bool short __b) { 5027 return __a | ~__b; 5028 } 5029 5030 static vector signed int __ATTRS_o_ai vec_orc(vector signed int __a, 5031 vector signed int __b) { 5032 return __a | ~__b; 5033 } 5034 5035 static vector signed int __ATTRS_o_ai vec_orc(vector signed int __a, 5036 vector bool int __b) { 5037 return __a | ~__b; 5038 } 5039 5040 static vector signed int __ATTRS_o_ai vec_orc(vector bool int __a, 5041 vector signed int __b) { 5042 return __a | ~__b; 5043 } 5044 5045 static vector unsigned int __ATTRS_o_ai vec_orc(vector unsigned int __a, 5046 vector unsigned int __b) { 5047 return __a | ~__b; 5048 } 5049 5050 static vector unsigned int __ATTRS_o_ai vec_orc(vector unsigned int __a, 5051 vector bool int __b) { 5052 return __a | ~__b; 5053 } 5054 5055 static vector unsigned int __ATTRS_o_ai vec_orc(vector bool int __a, 5056 vector unsigned int __b) { 5057 return __a | ~__b; 5058 } 5059 5060 static vector bool int __ATTRS_o_ai vec_orc(vector bool int __a, 5061 vector bool int __b) { 5062 return __a | ~__b; 5063 } 5064 5065 static vector signed long long __ATTRS_o_ai 5066 vec_orc(vector signed long long __a, vector signed long long __b) { 5067 return __a | ~__b; 5068 } 5069 5070 static vector signed long long __ATTRS_o_ai vec_orc(vector signed long long __a, 5071 vector bool long long __b) { 5072 return __a | ~__b; 5073 } 5074 5075 static vector signed long long __ATTRS_o_ai 5076 vec_orc(vector bool long long __a, vector signed long long __b) { 5077 return __a | ~__b; 5078 } 5079 5080 static vector unsigned long long __ATTRS_o_ai 5081 vec_orc(vector unsigned long long __a, vector unsigned long long __b) { 5082 return __a | ~__b; 5083 } 5084 5085 static vector unsigned long long __ATTRS_o_ai 5086 vec_orc(vector unsigned long long __a, vector bool long long __b) { 5087 return __a | ~__b; 5088 } 5089 5090 static vector unsigned long long __ATTRS_o_ai 5091 vec_orc(vector bool long long __a, vector unsigned long long __b) { 5092 return __a | ~__b; 5093 } 5094 5095 static vector bool long long __ATTRS_o_ai 5096 vec_orc(vector bool long long __a, vector bool long long __b) { 5097 return __a | ~__b; 5098 } 5099 #endif 5100 5101 /* vec_vor */ 5102 5103 static vector signed char __ATTRS_o_ai vec_vor(vector signed char __a, 5104 vector signed char __b) { 5105 return __a | __b; 5106 } 5107 5108 static vector signed char __ATTRS_o_ai vec_vor(vector bool char __a, 5109 vector signed char __b) { 5110 return (vector signed char)__a | __b; 5111 } 5112 5113 static vector signed char __ATTRS_o_ai vec_vor(vector signed char __a, 5114 vector bool char __b) { 5115 return __a | (vector signed char)__b; 5116 } 5117 5118 static vector unsigned char __ATTRS_o_ai vec_vor(vector unsigned char __a, 5119 vector unsigned char __b) { 5120 return __a | __b; 5121 } 5122 5123 static vector unsigned char __ATTRS_o_ai vec_vor(vector bool char __a, 5124 vector unsigned char __b) { 5125 return (vector unsigned char)__a | __b; 5126 } 5127 5128 static vector unsigned char __ATTRS_o_ai vec_vor(vector unsigned char __a, 5129 vector bool char __b) { 5130 return __a | (vector unsigned char)__b; 5131 } 5132 5133 static vector bool char __ATTRS_o_ai vec_vor(vector bool char __a, 5134 vector bool char __b) { 5135 return __a | __b; 5136 } 5137 5138 static vector short __ATTRS_o_ai vec_vor(vector short __a, vector short __b) { 5139 return __a | __b; 5140 } 5141 5142 static vector short __ATTRS_o_ai vec_vor(vector bool short __a, 5143 vector short __b) { 5144 return (vector short)__a | __b; 5145 } 5146 5147 static vector short __ATTRS_o_ai vec_vor(vector short __a, 5148 vector bool short __b) { 5149 return __a | (vector short)__b; 5150 } 5151 5152 static vector unsigned short __ATTRS_o_ai vec_vor(vector unsigned short __a, 5153 vector unsigned short __b) { 5154 return __a | __b; 5155 } 5156 5157 static vector unsigned short __ATTRS_o_ai vec_vor(vector bool short __a, 5158 vector unsigned short __b) { 5159 return (vector unsigned short)__a | __b; 5160 } 5161 5162 static vector unsigned short __ATTRS_o_ai vec_vor(vector unsigned short __a, 5163 vector bool short __b) { 5164 return __a | (vector unsigned short)__b; 5165 } 5166 5167 static vector bool short __ATTRS_o_ai vec_vor(vector bool short __a, 5168 vector bool short __b) { 5169 return __a | __b; 5170 } 5171 5172 static vector int __ATTRS_o_ai vec_vor(vector int __a, vector int __b) { 5173 return __a | __b; 5174 } 5175 5176 static vector int __ATTRS_o_ai vec_vor(vector bool int __a, vector int __b) { 5177 return (vector int)__a | __b; 5178 } 5179 5180 static vector int __ATTRS_o_ai vec_vor(vector int __a, vector bool int __b) { 5181 return __a | (vector int)__b; 5182 } 5183 5184 static vector unsigned int __ATTRS_o_ai vec_vor(vector unsigned int __a, 5185 vector unsigned int __b) { 5186 return __a | __b; 5187 } 5188 5189 static vector unsigned int __ATTRS_o_ai vec_vor(vector bool int __a, 5190 vector unsigned int __b) { 5191 return (vector unsigned int)__a | __b; 5192 } 5193 5194 static vector unsigned int __ATTRS_o_ai vec_vor(vector unsigned int __a, 5195 vector bool int __b) { 5196 return __a | (vector unsigned int)__b; 5197 } 5198 5199 static vector bool int __ATTRS_o_ai vec_vor(vector bool int __a, 5200 vector bool int __b) { 5201 return __a | __b; 5202 } 5203 5204 static vector float __ATTRS_o_ai vec_vor(vector float __a, vector float __b) { 5205 vector unsigned int __res = 5206 (vector unsigned int)__a | (vector unsigned int)__b; 5207 return (vector float)__res; 5208 } 5209 5210 static vector float __ATTRS_o_ai vec_vor(vector bool int __a, 5211 vector float __b) { 5212 vector unsigned int __res = 5213 (vector unsigned int)__a | (vector unsigned int)__b; 5214 return (vector float)__res; 5215 } 5216 5217 static vector float __ATTRS_o_ai vec_vor(vector float __a, 5218 vector bool int __b) { 5219 vector unsigned int __res = 5220 (vector unsigned int)__a | (vector unsigned int)__b; 5221 return (vector float)__res; 5222 } 5223 5224 #ifdef __VSX__ 5225 static vector signed long long __ATTRS_o_ai 5226 vec_vor(vector signed long long __a, vector signed long long __b) { 5227 return __a | __b; 5228 } 5229 5230 static vector signed long long __ATTRS_o_ai 5231 vec_vor(vector bool long long __a, vector signed long long __b) { 5232 return (vector signed long long)__a | __b; 5233 } 5234 5235 static vector signed long long __ATTRS_o_ai vec_vor(vector signed long long __a, 5236 vector bool long long __b) { 5237 return __a | (vector signed long long)__b; 5238 } 5239 5240 static vector unsigned long long __ATTRS_o_ai 5241 vec_vor(vector unsigned long long __a, vector unsigned long long __b) { 5242 return __a | __b; 5243 } 5244 5245 static vector unsigned long long __ATTRS_o_ai 5246 vec_vor(vector bool long long __a, vector unsigned long long __b) { 5247 return (vector unsigned long long)__a | __b; 5248 } 5249 5250 static vector unsigned long long __ATTRS_o_ai 5251 vec_vor(vector unsigned long long __a, vector bool long long __b) { 5252 return __a | (vector unsigned long long)__b; 5253 } 5254 5255 static vector bool long long __ATTRS_o_ai vec_vor(vector bool long long __a, 5256 vector bool long long __b) { 5257 return __a | __b; 5258 } 5259 #endif 5260 5261 /* vec_pack */ 5262 5263 /* The various vector pack instructions have a big-endian bias, so for 5264 little endian we must handle reversed element numbering. */ 5265 5266 static vector signed char __ATTRS_o_ai vec_pack(vector signed short __a, 5267 vector signed short __b) { 5268 #ifdef __LITTLE_ENDIAN__ 5269 return (vector signed char)vec_perm( 5270 __a, __b, 5271 (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 5272 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E)); 5273 #else 5274 return (vector signed char)vec_perm( 5275 __a, __b, 5276 (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 5277 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 5278 #endif 5279 } 5280 5281 static vector unsigned char __ATTRS_o_ai vec_pack(vector unsigned short __a, 5282 vector unsigned short __b) { 5283 #ifdef __LITTLE_ENDIAN__ 5284 return (vector unsigned char)vec_perm( 5285 __a, __b, 5286 (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 5287 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E)); 5288 #else 5289 return (vector unsigned char)vec_perm( 5290 __a, __b, 5291 (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 5292 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 5293 #endif 5294 } 5295 5296 static vector bool char __ATTRS_o_ai vec_pack(vector bool short __a, 5297 vector bool short __b) { 5298 #ifdef __LITTLE_ENDIAN__ 5299 return (vector bool char)vec_perm( 5300 __a, __b, 5301 (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 5302 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E)); 5303 #else 5304 return (vector bool char)vec_perm( 5305 __a, __b, 5306 (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 5307 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 5308 #endif 5309 } 5310 5311 static vector short __ATTRS_o_ai vec_pack(vector int __a, vector int __b) { 5312 #ifdef __LITTLE_ENDIAN__ 5313 return (vector short)vec_perm( 5314 __a, __b, 5315 (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D, 5316 0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D)); 5317 #else 5318 return (vector short)vec_perm( 5319 __a, __b, 5320 (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 5321 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 5322 #endif 5323 } 5324 5325 static vector unsigned short __ATTRS_o_ai vec_pack(vector unsigned int __a, 5326 vector unsigned int __b) { 5327 #ifdef __LITTLE_ENDIAN__ 5328 return (vector unsigned short)vec_perm( 5329 __a, __b, 5330 (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D, 5331 0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D)); 5332 #else 5333 return (vector unsigned short)vec_perm( 5334 __a, __b, 5335 (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 5336 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 5337 #endif 5338 } 5339 5340 static vector bool short __ATTRS_o_ai vec_pack(vector bool int __a, 5341 vector bool int __b) { 5342 #ifdef __LITTLE_ENDIAN__ 5343 return (vector bool short)vec_perm( 5344 __a, __b, 5345 (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D, 5346 0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D)); 5347 #else 5348 return (vector bool short)vec_perm( 5349 __a, __b, 5350 (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 5351 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 5352 #endif 5353 } 5354 5355 #ifdef __VSX__ 5356 static vector signed int __ATTRS_o_ai vec_pack(vector signed long long __a, 5357 vector signed long long __b) { 5358 #ifdef __LITTLE_ENDIAN__ 5359 return (vector signed int)vec_perm( 5360 __a, __b, 5361 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B, 5362 0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B)); 5363 #else 5364 return (vector signed int)vec_perm( 5365 __a, __b, 5366 (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F, 5367 0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F)); 5368 #endif 5369 } 5370 static vector unsigned int __ATTRS_o_ai 5371 vec_pack(vector unsigned long long __a, vector unsigned long long __b) { 5372 #ifdef __LITTLE_ENDIAN__ 5373 return (vector unsigned int)vec_perm( 5374 __a, __b, 5375 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B, 5376 0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B)); 5377 #else 5378 return (vector unsigned int)vec_perm( 5379 __a, __b, 5380 (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F, 5381 0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F)); 5382 #endif 5383 } 5384 5385 static vector bool int __ATTRS_o_ai vec_pack(vector bool long long __a, 5386 vector bool long long __b) { 5387 #ifdef __LITTLE_ENDIAN__ 5388 return (vector bool int)vec_perm( 5389 __a, __b, 5390 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B, 5391 0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B)); 5392 #else 5393 return (vector bool int)vec_perm( 5394 __a, __b, 5395 (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F, 5396 0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F)); 5397 #endif 5398 } 5399 5400 #endif 5401 5402 /* vec_vpkuhum */ 5403 5404 #define __builtin_altivec_vpkuhum vec_vpkuhum 5405 5406 static vector signed char __ATTRS_o_ai vec_vpkuhum(vector signed short __a, 5407 vector signed short __b) { 5408 #ifdef __LITTLE_ENDIAN__ 5409 return (vector signed char)vec_perm( 5410 __a, __b, 5411 (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 5412 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E)); 5413 #else 5414 return (vector signed char)vec_perm( 5415 __a, __b, 5416 (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 5417 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 5418 #endif 5419 } 5420 5421 static vector unsigned char __ATTRS_o_ai 5422 vec_vpkuhum(vector unsigned short __a, vector unsigned short __b) { 5423 #ifdef __LITTLE_ENDIAN__ 5424 return (vector unsigned char)vec_perm( 5425 __a, __b, 5426 (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 5427 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E)); 5428 #else 5429 return (vector unsigned char)vec_perm( 5430 __a, __b, 5431 (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 5432 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 5433 #endif 5434 } 5435 5436 static vector bool char __ATTRS_o_ai vec_vpkuhum(vector bool short __a, 5437 vector bool short __b) { 5438 #ifdef __LITTLE_ENDIAN__ 5439 return (vector bool char)vec_perm( 5440 __a, __b, 5441 (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 5442 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E)); 5443 #else 5444 return (vector bool char)vec_perm( 5445 __a, __b, 5446 (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 5447 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 5448 #endif 5449 } 5450 5451 /* vec_vpkuwum */ 5452 5453 #define __builtin_altivec_vpkuwum vec_vpkuwum 5454 5455 static vector short __ATTRS_o_ai vec_vpkuwum(vector int __a, vector int __b) { 5456 #ifdef __LITTLE_ENDIAN__ 5457 return (vector short)vec_perm( 5458 __a, __b, 5459 (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D, 5460 0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D)); 5461 #else 5462 return (vector short)vec_perm( 5463 __a, __b, 5464 (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 5465 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 5466 #endif 5467 } 5468 5469 static vector unsigned short __ATTRS_o_ai vec_vpkuwum(vector unsigned int __a, 5470 vector unsigned int __b) { 5471 #ifdef __LITTLE_ENDIAN__ 5472 return (vector unsigned short)vec_perm( 5473 __a, __b, 5474 (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D, 5475 0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D)); 5476 #else 5477 return (vector unsigned short)vec_perm( 5478 __a, __b, 5479 (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 5480 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 5481 #endif 5482 } 5483 5484 static vector bool short __ATTRS_o_ai vec_vpkuwum(vector bool int __a, 5485 vector bool int __b) { 5486 #ifdef __LITTLE_ENDIAN__ 5487 return (vector bool short)vec_perm( 5488 __a, __b, 5489 (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D, 5490 0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D)); 5491 #else 5492 return (vector bool short)vec_perm( 5493 __a, __b, 5494 (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 5495 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 5496 #endif 5497 } 5498 5499 /* vec_vpkudum */ 5500 5501 #ifdef __POWER8_VECTOR__ 5502 #define __builtin_altivec_vpkudum vec_vpkudum 5503 5504 static vector int __ATTRS_o_ai vec_vpkudum(vector long long __a, 5505 vector long long __b) { 5506 #ifdef __LITTLE_ENDIAN__ 5507 return (vector int)vec_perm( 5508 __a, __b, 5509 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B, 5510 0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B)); 5511 #else 5512 return (vector int)vec_perm( 5513 __a, __b, 5514 (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F, 5515 0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F)); 5516 #endif 5517 } 5518 5519 static vector unsigned int __ATTRS_o_ai 5520 vec_vpkudum(vector unsigned long long __a, vector unsigned long long __b) { 5521 #ifdef __LITTLE_ENDIAN__ 5522 return (vector unsigned int)vec_perm( 5523 __a, __b, 5524 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B, 5525 0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B)); 5526 #else 5527 return (vector unsigned int)vec_perm( 5528 __a, __b, 5529 (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F, 5530 0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F)); 5531 #endif 5532 } 5533 5534 static vector bool int __ATTRS_o_ai vec_vpkudum(vector bool long long __a, 5535 vector bool long long __b) { 5536 #ifdef __LITTLE_ENDIAN__ 5537 return (vector bool int)vec_perm( 5538 (vector long long)__a, (vector long long)__b, 5539 (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B, 5540 0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B)); 5541 #else 5542 return (vector bool int)vec_perm( 5543 (vector long long)__a, (vector long long)__b, 5544 (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F, 5545 0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F)); 5546 #endif 5547 } 5548 #endif 5549 5550 /* vec_packpx */ 5551 5552 static vector pixel __attribute__((__always_inline__)) 5553 vec_packpx(vector unsigned int __a, vector unsigned int __b) { 5554 #ifdef __LITTLE_ENDIAN__ 5555 return (vector pixel)__builtin_altivec_vpkpx(__b, __a); 5556 #else 5557 return (vector pixel)__builtin_altivec_vpkpx(__a, __b); 5558 #endif 5559 } 5560 5561 /* vec_vpkpx */ 5562 5563 static vector pixel __attribute__((__always_inline__)) 5564 vec_vpkpx(vector unsigned int __a, vector unsigned int __b) { 5565 #ifdef __LITTLE_ENDIAN__ 5566 return (vector pixel)__builtin_altivec_vpkpx(__b, __a); 5567 #else 5568 return (vector pixel)__builtin_altivec_vpkpx(__a, __b); 5569 #endif 5570 } 5571 5572 /* vec_packs */ 5573 5574 static vector signed char __ATTRS_o_ai vec_packs(vector short __a, 5575 vector short __b) { 5576 #ifdef __LITTLE_ENDIAN__ 5577 return __builtin_altivec_vpkshss(__b, __a); 5578 #else 5579 return __builtin_altivec_vpkshss(__a, __b); 5580 #endif 5581 } 5582 5583 static vector unsigned char __ATTRS_o_ai vec_packs(vector unsigned short __a, 5584 vector unsigned short __b) { 5585 #ifdef __LITTLE_ENDIAN__ 5586 return __builtin_altivec_vpkuhus(__b, __a); 5587 #else 5588 return __builtin_altivec_vpkuhus(__a, __b); 5589 #endif 5590 } 5591 5592 static vector signed short __ATTRS_o_ai vec_packs(vector int __a, 5593 vector int __b) { 5594 #ifdef __LITTLE_ENDIAN__ 5595 return __builtin_altivec_vpkswss(__b, __a); 5596 #else 5597 return __builtin_altivec_vpkswss(__a, __b); 5598 #endif 5599 } 5600 5601 static vector unsigned short __ATTRS_o_ai vec_packs(vector unsigned int __a, 5602 vector unsigned int __b) { 5603 #ifdef __LITTLE_ENDIAN__ 5604 return __builtin_altivec_vpkuwus(__b, __a); 5605 #else 5606 return __builtin_altivec_vpkuwus(__a, __b); 5607 #endif 5608 } 5609 5610 #ifdef __POWER8_VECTOR__ 5611 static vector int __ATTRS_o_ai vec_packs(vector long long __a, 5612 vector long long __b) { 5613 #ifdef __LITTLE_ENDIAN__ 5614 return __builtin_altivec_vpksdss(__b, __a); 5615 #else 5616 return __builtin_altivec_vpksdss(__a, __b); 5617 #endif 5618 } 5619 5620 static vector unsigned int __ATTRS_o_ai 5621 vec_packs(vector unsigned long long __a, vector unsigned long long __b) { 5622 #ifdef __LITTLE_ENDIAN__ 5623 return __builtin_altivec_vpkudus(__b, __a); 5624 #else 5625 return __builtin_altivec_vpkudus(__a, __b); 5626 #endif 5627 } 5628 #endif 5629 5630 /* vec_vpkshss */ 5631 5632 static vector signed char __attribute__((__always_inline__)) 5633 vec_vpkshss(vector short __a, vector short __b) { 5634 #ifdef __LITTLE_ENDIAN__ 5635 return __builtin_altivec_vpkshss(__b, __a); 5636 #else 5637 return __builtin_altivec_vpkshss(__a, __b); 5638 #endif 5639 } 5640 5641 /* vec_vpksdss */ 5642 5643 #ifdef __POWER8_VECTOR__ 5644 static vector int __ATTRS_o_ai vec_vpksdss(vector long long __a, 5645 vector long long __b) { 5646 #ifdef __LITTLE_ENDIAN__ 5647 return __builtin_altivec_vpksdss(__b, __a); 5648 #else 5649 return __builtin_altivec_vpksdss(__a, __b); 5650 #endif 5651 } 5652 #endif 5653 5654 /* vec_vpkuhus */ 5655 5656 static vector unsigned char __attribute__((__always_inline__)) 5657 vec_vpkuhus(vector unsigned short __a, vector unsigned short __b) { 5658 #ifdef __LITTLE_ENDIAN__ 5659 return __builtin_altivec_vpkuhus(__b, __a); 5660 #else 5661 return __builtin_altivec_vpkuhus(__a, __b); 5662 #endif 5663 } 5664 5665 /* vec_vpkudus */ 5666 5667 #ifdef __POWER8_VECTOR__ 5668 static vector unsigned int __attribute__((__always_inline__)) 5669 vec_vpkudus(vector unsigned long long __a, vector unsigned long long __b) { 5670 #ifdef __LITTLE_ENDIAN__ 5671 return __builtin_altivec_vpkudus(__b, __a); 5672 #else 5673 return __builtin_altivec_vpkudus(__a, __b); 5674 #endif 5675 } 5676 #endif 5677 5678 /* vec_vpkswss */ 5679 5680 static vector signed short __attribute__((__always_inline__)) 5681 vec_vpkswss(vector int __a, vector int __b) { 5682 #ifdef __LITTLE_ENDIAN__ 5683 return __builtin_altivec_vpkswss(__b, __a); 5684 #else 5685 return __builtin_altivec_vpkswss(__a, __b); 5686 #endif 5687 } 5688 5689 /* vec_vpkuwus */ 5690 5691 static vector unsigned short __attribute__((__always_inline__)) 5692 vec_vpkuwus(vector unsigned int __a, vector unsigned int __b) { 5693 #ifdef __LITTLE_ENDIAN__ 5694 return __builtin_altivec_vpkuwus(__b, __a); 5695 #else 5696 return __builtin_altivec_vpkuwus(__a, __b); 5697 #endif 5698 } 5699 5700 /* vec_packsu */ 5701 5702 static vector unsigned char __ATTRS_o_ai vec_packsu(vector short __a, 5703 vector short __b) { 5704 #ifdef __LITTLE_ENDIAN__ 5705 return __builtin_altivec_vpkshus(__b, __a); 5706 #else 5707 return __builtin_altivec_vpkshus(__a, __b); 5708 #endif 5709 } 5710 5711 static vector unsigned char __ATTRS_o_ai vec_packsu(vector unsigned short __a, 5712 vector unsigned short __b) { 5713 #ifdef __LITTLE_ENDIAN__ 5714 return __builtin_altivec_vpkuhus(__b, __a); 5715 #else 5716 return __builtin_altivec_vpkuhus(__a, __b); 5717 #endif 5718 } 5719 5720 static vector unsigned short __ATTRS_o_ai vec_packsu(vector int __a, 5721 vector int __b) { 5722 #ifdef __LITTLE_ENDIAN__ 5723 return __builtin_altivec_vpkswus(__b, __a); 5724 #else 5725 return __builtin_altivec_vpkswus(__a, __b); 5726 #endif 5727 } 5728 5729 static vector unsigned short __ATTRS_o_ai vec_packsu(vector unsigned int __a, 5730 vector unsigned int __b) { 5731 #ifdef __LITTLE_ENDIAN__ 5732 return __builtin_altivec_vpkuwus(__b, __a); 5733 #else 5734 return __builtin_altivec_vpkuwus(__a, __b); 5735 #endif 5736 } 5737 5738 #ifdef __POWER8_VECTOR__ 5739 static vector unsigned int __ATTRS_o_ai vec_packsu(vector long long __a, 5740 vector long long __b) { 5741 #ifdef __LITTLE_ENDIAN__ 5742 return __builtin_altivec_vpksdus(__b, __a); 5743 #else 5744 return __builtin_altivec_vpksdus(__a, __b); 5745 #endif 5746 } 5747 5748 static vector unsigned int __ATTRS_o_ai 5749 vec_packsu(vector unsigned long long __a, vector unsigned long long __b) { 5750 #ifdef __LITTLE_ENDIAN__ 5751 return __builtin_altivec_vpkudus(__b, __a); 5752 #else 5753 return __builtin_altivec_vpkudus(__a, __b); 5754 #endif 5755 } 5756 #endif 5757 5758 /* vec_vpkshus */ 5759 5760 static vector unsigned char __ATTRS_o_ai vec_vpkshus(vector short __a, 5761 vector short __b) { 5762 #ifdef __LITTLE_ENDIAN__ 5763 return __builtin_altivec_vpkshus(__b, __a); 5764 #else 5765 return __builtin_altivec_vpkshus(__a, __b); 5766 #endif 5767 } 5768 5769 static vector unsigned char __ATTRS_o_ai 5770 vec_vpkshus(vector unsigned short __a, vector unsigned short __b) { 5771 #ifdef __LITTLE_ENDIAN__ 5772 return __builtin_altivec_vpkuhus(__b, __a); 5773 #else 5774 return __builtin_altivec_vpkuhus(__a, __b); 5775 #endif 5776 } 5777 5778 /* vec_vpkswus */ 5779 5780 static vector unsigned short __ATTRS_o_ai vec_vpkswus(vector int __a, 5781 vector int __b) { 5782 #ifdef __LITTLE_ENDIAN__ 5783 return __builtin_altivec_vpkswus(__b, __a); 5784 #else 5785 return __builtin_altivec_vpkswus(__a, __b); 5786 #endif 5787 } 5788 5789 static vector unsigned short __ATTRS_o_ai vec_vpkswus(vector unsigned int __a, 5790 vector unsigned int __b) { 5791 #ifdef __LITTLE_ENDIAN__ 5792 return __builtin_altivec_vpkuwus(__b, __a); 5793 #else 5794 return __builtin_altivec_vpkuwus(__a, __b); 5795 #endif 5796 } 5797 5798 /* vec_vpksdus */ 5799 5800 #ifdef __POWER8_VECTOR__ 5801 static vector unsigned int __ATTRS_o_ai vec_vpksdus(vector long long __a, 5802 vector long long __b) { 5803 #ifdef __LITTLE_ENDIAN__ 5804 return __builtin_altivec_vpksdus(__b, __a); 5805 #else 5806 return __builtin_altivec_vpksdus(__a, __b); 5807 #endif 5808 } 5809 #endif 5810 5811 /* vec_perm */ 5812 5813 // The vperm instruction is defined architecturally with a big-endian bias. 5814 // For little endian, we swap the input operands and invert the permute 5815 // control vector. Only the rightmost 5 bits matter, so we could use 5816 // a vector of all 31s instead of all 255s to perform the inversion. 5817 // However, when the PCV is not a constant, using 255 has an advantage 5818 // in that the vec_xor can be recognized as a vec_nor (and for P8 and 5819 // later, possibly a vec_nand). 5820 5821 static vector signed char __ATTRS_o_ai vec_perm(vector signed char __a, 5822 vector signed char __b, 5823 vector unsigned char __c) { 5824 #ifdef __LITTLE_ENDIAN__ 5825 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255, 5826 255, 255, 255, 255, 255, 255, 255, 255}; 5827 __d = vec_xor(__c, __d); 5828 return (vector signed char)__builtin_altivec_vperm_4si((vector int)__b, 5829 (vector int)__a, __d); 5830 #else 5831 return (vector signed char)__builtin_altivec_vperm_4si((vector int)__a, 5832 (vector int)__b, __c); 5833 #endif 5834 } 5835 5836 static vector unsigned char __ATTRS_o_ai vec_perm(vector unsigned char __a, 5837 vector unsigned char __b, 5838 vector unsigned char __c) { 5839 #ifdef __LITTLE_ENDIAN__ 5840 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255, 5841 255, 255, 255, 255, 255, 255, 255, 255}; 5842 __d = vec_xor(__c, __d); 5843 return (vector unsigned char)__builtin_altivec_vperm_4si( 5844 (vector int)__b, (vector int)__a, __d); 5845 #else 5846 return (vector unsigned char)__builtin_altivec_vperm_4si( 5847 (vector int)__a, (vector int)__b, __c); 5848 #endif 5849 } 5850 5851 static vector bool char __ATTRS_o_ai vec_perm(vector bool char __a, 5852 vector bool char __b, 5853 vector unsigned char __c) { 5854 #ifdef __LITTLE_ENDIAN__ 5855 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255, 5856 255, 255, 255, 255, 255, 255, 255, 255}; 5857 __d = vec_xor(__c, __d); 5858 return (vector bool char)__builtin_altivec_vperm_4si((vector int)__b, 5859 (vector int)__a, __d); 5860 #else 5861 return (vector bool char)__builtin_altivec_vperm_4si((vector int)__a, 5862 (vector int)__b, __c); 5863 #endif 5864 } 5865 5866 static vector short __ATTRS_o_ai vec_perm(vector signed short __a, 5867 vector signed short __b, 5868 vector unsigned char __c) { 5869 #ifdef __LITTLE_ENDIAN__ 5870 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255, 5871 255, 255, 255, 255, 255, 255, 255, 255}; 5872 __d = vec_xor(__c, __d); 5873 return (vector signed short)__builtin_altivec_vperm_4si((vector int)__b, 5874 (vector int)__a, __d); 5875 #else 5876 return (vector signed short)__builtin_altivec_vperm_4si((vector int)__a, 5877 (vector int)__b, __c); 5878 #endif 5879 } 5880 5881 static vector unsigned short __ATTRS_o_ai vec_perm(vector unsigned short __a, 5882 vector unsigned short __b, 5883 vector unsigned char __c) { 5884 #ifdef __LITTLE_ENDIAN__ 5885 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255, 5886 255, 255, 255, 255, 255, 255, 255, 255}; 5887 __d = vec_xor(__c, __d); 5888 return (vector unsigned short)__builtin_altivec_vperm_4si( 5889 (vector int)__b, (vector int)__a, __d); 5890 #else 5891 return (vector unsigned short)__builtin_altivec_vperm_4si( 5892 (vector int)__a, (vector int)__b, __c); 5893 #endif 5894 } 5895 5896 static vector bool short __ATTRS_o_ai vec_perm(vector bool short __a, 5897 vector bool short __b, 5898 vector unsigned char __c) { 5899 #ifdef __LITTLE_ENDIAN__ 5900 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255, 5901 255, 255, 255, 255, 255, 255, 255, 255}; 5902 __d = vec_xor(__c, __d); 5903 return (vector bool short)__builtin_altivec_vperm_4si((vector int)__b, 5904 (vector int)__a, __d); 5905 #else 5906 return (vector bool short)__builtin_altivec_vperm_4si((vector int)__a, 5907 (vector int)__b, __c); 5908 #endif 5909 } 5910 5911 static vector pixel __ATTRS_o_ai vec_perm(vector pixel __a, vector pixel __b, 5912 vector unsigned char __c) { 5913 #ifdef __LITTLE_ENDIAN__ 5914 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255, 5915 255, 255, 255, 255, 255, 255, 255, 255}; 5916 __d = vec_xor(__c, __d); 5917 return (vector pixel)__builtin_altivec_vperm_4si((vector int)__b, 5918 (vector int)__a, __d); 5919 #else 5920 return (vector pixel)__builtin_altivec_vperm_4si((vector int)__a, 5921 (vector int)__b, __c); 5922 #endif 5923 } 5924 5925 static vector int __ATTRS_o_ai vec_perm(vector signed int __a, 5926 vector signed int __b, 5927 vector unsigned char __c) { 5928 #ifdef __LITTLE_ENDIAN__ 5929 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255, 5930 255, 255, 255, 255, 255, 255, 255, 255}; 5931 __d = vec_xor(__c, __d); 5932 return (vector signed int)__builtin_altivec_vperm_4si(__b, __a, __d); 5933 #else 5934 return (vector signed int)__builtin_altivec_vperm_4si(__a, __b, __c); 5935 #endif 5936 } 5937 5938 static vector unsigned int __ATTRS_o_ai vec_perm(vector unsigned int __a, 5939 vector unsigned int __b, 5940 vector unsigned char __c) { 5941 #ifdef __LITTLE_ENDIAN__ 5942 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255, 5943 255, 255, 255, 255, 255, 255, 255, 255}; 5944 __d = vec_xor(__c, __d); 5945 return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__b, 5946 (vector int)__a, __d); 5947 #else 5948 return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__a, 5949 (vector int)__b, __c); 5950 #endif 5951 } 5952 5953 static vector bool int __ATTRS_o_ai vec_perm(vector bool int __a, 5954 vector bool int __b, 5955 vector unsigned char __c) { 5956 #ifdef __LITTLE_ENDIAN__ 5957 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255, 5958 255, 255, 255, 255, 255, 255, 255, 255}; 5959 __d = vec_xor(__c, __d); 5960 return (vector bool int)__builtin_altivec_vperm_4si((vector int)__b, 5961 (vector int)__a, __d); 5962 #else 5963 return (vector bool int)__builtin_altivec_vperm_4si((vector int)__a, 5964 (vector int)__b, __c); 5965 #endif 5966 } 5967 5968 static vector float __ATTRS_o_ai vec_perm(vector float __a, vector float __b, 5969 vector unsigned char __c) { 5970 #ifdef __LITTLE_ENDIAN__ 5971 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255, 5972 255, 255, 255, 255, 255, 255, 255, 255}; 5973 __d = vec_xor(__c, __d); 5974 return (vector float)__builtin_altivec_vperm_4si((vector int)__b, 5975 (vector int)__a, __d); 5976 #else 5977 return (vector float)__builtin_altivec_vperm_4si((vector int)__a, 5978 (vector int)__b, __c); 5979 #endif 5980 } 5981 5982 #ifdef __VSX__ 5983 static vector long long __ATTRS_o_ai vec_perm(vector signed long long __a, 5984 vector signed long long __b, 5985 vector unsigned char __c) { 5986 #ifdef __LITTLE_ENDIAN__ 5987 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255, 5988 255, 255, 255, 255, 255, 255, 255, 255}; 5989 __d = vec_xor(__c, __d); 5990 return (vector signed long long)__builtin_altivec_vperm_4si( 5991 (vector int)__b, (vector int)__a, __d); 5992 #else 5993 return (vector signed long long)__builtin_altivec_vperm_4si( 5994 (vector int)__a, (vector int)__b, __c); 5995 #endif 5996 } 5997 5998 static vector unsigned long long __ATTRS_o_ai 5999 vec_perm(vector unsigned long long __a, vector unsigned long long __b, 6000 vector unsigned char __c) { 6001 #ifdef __LITTLE_ENDIAN__ 6002 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255, 6003 255, 255, 255, 255, 255, 255, 255, 255}; 6004 __d = vec_xor(__c, __d); 6005 return (vector unsigned long long)__builtin_altivec_vperm_4si( 6006 (vector int)__b, (vector int)__a, __d); 6007 #else 6008 return (vector unsigned long long)__builtin_altivec_vperm_4si( 6009 (vector int)__a, (vector int)__b, __c); 6010 #endif 6011 } 6012 6013 static vector bool long long __ATTRS_o_ai 6014 vec_perm(vector bool long long __a, vector bool long long __b, 6015 vector unsigned char __c) { 6016 #ifdef __LITTLE_ENDIAN__ 6017 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255, 6018 255, 255, 255, 255, 255, 255, 255, 255}; 6019 __d = vec_xor(__c, __d); 6020 return (vector bool long long)__builtin_altivec_vperm_4si( 6021 (vector int)__b, (vector int)__a, __d); 6022 #else 6023 return (vector bool long long)__builtin_altivec_vperm_4si( 6024 (vector int)__a, (vector int)__b, __c); 6025 #endif 6026 } 6027 6028 static vector double __ATTRS_o_ai vec_perm(vector double __a, vector double __b, 6029 vector unsigned char __c) { 6030 #ifdef __LITTLE_ENDIAN__ 6031 vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255, 6032 255, 255, 255, 255, 255, 255, 255, 255}; 6033 __d = vec_xor(__c, __d); 6034 return (vector double)__builtin_altivec_vperm_4si((vector int)__b, 6035 (vector int)__a, __d); 6036 #else 6037 return (vector double)__builtin_altivec_vperm_4si((vector int)__a, 6038 (vector int)__b, __c); 6039 #endif 6040 } 6041 #endif 6042 6043 /* vec_vperm */ 6044 6045 static vector signed char __ATTRS_o_ai vec_vperm(vector signed char __a, 6046 vector signed char __b, 6047 vector unsigned char __c) { 6048 return vec_perm(__a, __b, __c); 6049 } 6050 6051 static vector unsigned char __ATTRS_o_ai vec_vperm(vector unsigned char __a, 6052 vector unsigned char __b, 6053 vector unsigned char __c) { 6054 return vec_perm(__a, __b, __c); 6055 } 6056 6057 static vector bool char __ATTRS_o_ai vec_vperm(vector bool char __a, 6058 vector bool char __b, 6059 vector unsigned char __c) { 6060 return vec_perm(__a, __b, __c); 6061 } 6062 6063 static vector short __ATTRS_o_ai vec_vperm(vector short __a, vector short __b, 6064 vector unsigned char __c) { 6065 return vec_perm(__a, __b, __c); 6066 } 6067 6068 static vector unsigned short __ATTRS_o_ai vec_vperm(vector unsigned short __a, 6069 vector unsigned short __b, 6070 vector unsigned char __c) { 6071 return vec_perm(__a, __b, __c); 6072 } 6073 6074 static vector bool short __ATTRS_o_ai vec_vperm(vector bool short __a, 6075 vector bool short __b, 6076 vector unsigned char __c) { 6077 return vec_perm(__a, __b, __c); 6078 } 6079 6080 static vector pixel __ATTRS_o_ai vec_vperm(vector pixel __a, vector pixel __b, 6081 vector unsigned char __c) { 6082 return vec_perm(__a, __b, __c); 6083 } 6084 6085 static vector int __ATTRS_o_ai vec_vperm(vector int __a, vector int __b, 6086 vector unsigned char __c) { 6087 return vec_perm(__a, __b, __c); 6088 } 6089 6090 static vector unsigned int __ATTRS_o_ai vec_vperm(vector unsigned int __a, 6091 vector unsigned int __b, 6092 vector unsigned char __c) { 6093 return vec_perm(__a, __b, __c); 6094 } 6095 6096 static vector bool int __ATTRS_o_ai vec_vperm(vector bool int __a, 6097 vector bool int __b, 6098 vector unsigned char __c) { 6099 return vec_perm(__a, __b, __c); 6100 } 6101 6102 static vector float __ATTRS_o_ai vec_vperm(vector float __a, vector float __b, 6103 vector unsigned char __c) { 6104 return vec_perm(__a, __b, __c); 6105 } 6106 6107 #ifdef __VSX__ 6108 static vector long long __ATTRS_o_ai vec_vperm(vector long long __a, 6109 vector long long __b, 6110 vector unsigned char __c) { 6111 return vec_perm(__a, __b, __c); 6112 } 6113 6114 static vector unsigned long long __ATTRS_o_ai 6115 vec_vperm(vector unsigned long long __a, vector unsigned long long __b, 6116 vector unsigned char __c) { 6117 return vec_perm(__a, __b, __c); 6118 } 6119 6120 static vector double __ATTRS_o_ai vec_vperm(vector double __a, 6121 vector double __b, 6122 vector unsigned char __c) { 6123 return vec_perm(__a, __b, __c); 6124 } 6125 #endif 6126 6127 /* vec_re */ 6128 6129 static vector float __ATTRS_o_ai 6130 vec_re(vector float __a) { 6131 #ifdef __VSX__ 6132 return __builtin_vsx_xvresp(__a); 6133 #else 6134 return __builtin_altivec_vrefp(__a); 6135 #endif 6136 } 6137 6138 #ifdef __VSX__ 6139 static vector double __ATTRS_o_ai vec_re(vector double __a) { 6140 return __builtin_vsx_xvredp(__a); 6141 } 6142 #endif 6143 6144 /* vec_vrefp */ 6145 6146 static vector float __attribute__((__always_inline__)) 6147 vec_vrefp(vector float __a) { 6148 return __builtin_altivec_vrefp(__a); 6149 } 6150 6151 /* vec_rl */ 6152 6153 static vector signed char __ATTRS_o_ai vec_rl(vector signed char __a, 6154 vector unsigned char __b) { 6155 return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b); 6156 } 6157 6158 static vector unsigned char __ATTRS_o_ai vec_rl(vector unsigned char __a, 6159 vector unsigned char __b) { 6160 return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b); 6161 } 6162 6163 static vector short __ATTRS_o_ai vec_rl(vector short __a, 6164 vector unsigned short __b) { 6165 return __builtin_altivec_vrlh(__a, __b); 6166 } 6167 6168 static vector unsigned short __ATTRS_o_ai vec_rl(vector unsigned short __a, 6169 vector unsigned short __b) { 6170 return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b); 6171 } 6172 6173 static vector int __ATTRS_o_ai vec_rl(vector int __a, vector unsigned int __b) { 6174 return __builtin_altivec_vrlw(__a, __b); 6175 } 6176 6177 static vector unsigned int __ATTRS_o_ai vec_rl(vector unsigned int __a, 6178 vector unsigned int __b) { 6179 return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b); 6180 } 6181 6182 #ifdef __POWER8_VECTOR__ 6183 static vector signed long long __ATTRS_o_ai 6184 vec_rl(vector signed long long __a, vector unsigned long long __b) { 6185 return __builtin_altivec_vrld(__a, __b); 6186 } 6187 6188 static vector unsigned long long __ATTRS_o_ai 6189 vec_rl(vector unsigned long long __a, vector unsigned long long __b) { 6190 return __builtin_altivec_vrld(__a, __b); 6191 } 6192 #endif 6193 6194 /* vec_vrlb */ 6195 6196 static vector signed char __ATTRS_o_ai vec_vrlb(vector signed char __a, 6197 vector unsigned char __b) { 6198 return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b); 6199 } 6200 6201 static vector unsigned char __ATTRS_o_ai vec_vrlb(vector unsigned char __a, 6202 vector unsigned char __b) { 6203 return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b); 6204 } 6205 6206 /* vec_vrlh */ 6207 6208 static vector short __ATTRS_o_ai vec_vrlh(vector short __a, 6209 vector unsigned short __b) { 6210 return __builtin_altivec_vrlh(__a, __b); 6211 } 6212 6213 static vector unsigned short __ATTRS_o_ai vec_vrlh(vector unsigned short __a, 6214 vector unsigned short __b) { 6215 return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b); 6216 } 6217 6218 /* vec_vrlw */ 6219 6220 static vector int __ATTRS_o_ai vec_vrlw(vector int __a, 6221 vector unsigned int __b) { 6222 return __builtin_altivec_vrlw(__a, __b); 6223 } 6224 6225 static vector unsigned int __ATTRS_o_ai vec_vrlw(vector unsigned int __a, 6226 vector unsigned int __b) { 6227 return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b); 6228 } 6229 6230 /* vec_round */ 6231 6232 static vector float __ATTRS_o_ai vec_round(vector float __a) { 6233 #ifdef __VSX__ 6234 return __builtin_vsx_xvrspi(__a); 6235 #else 6236 return __builtin_altivec_vrfin(__a); 6237 #endif 6238 } 6239 6240 #ifdef __VSX__ 6241 static vector double __ATTRS_o_ai vec_round(vector double __a) { 6242 return __builtin_vsx_xvrdpi(__a); 6243 } 6244 6245 /* vec_rint */ 6246 6247 static vector float __ATTRS_o_ai 6248 vec_rint(vector float __a) { 6249 return __builtin_vsx_xvrspic(__a); 6250 } 6251 6252 static vector double __ATTRS_o_ai 6253 vec_rint(vector double __a) { 6254 return __builtin_vsx_xvrdpic(__a); 6255 } 6256 6257 /* vec_nearbyint */ 6258 6259 static vector float __ATTRS_o_ai vec_nearbyint(vector float __a) { 6260 return __builtin_vsx_xvrspi(__a); 6261 } 6262 6263 static vector double __ATTRS_o_ai vec_nearbyint(vector double __a) { 6264 return __builtin_vsx_xvrdpi(__a); 6265 } 6266 #endif 6267 6268 /* vec_vrfin */ 6269 6270 static vector float __attribute__((__always_inline__)) 6271 vec_vrfin(vector float __a) { 6272 return __builtin_altivec_vrfin(__a); 6273 } 6274 6275 /* vec_sqrt */ 6276 6277 #ifdef __VSX__ 6278 static vector float __ATTRS_o_ai vec_sqrt(vector float __a) { 6279 return __builtin_vsx_xvsqrtsp(__a); 6280 } 6281 6282 static vector double __ATTRS_o_ai vec_sqrt(vector double __a) { 6283 return __builtin_vsx_xvsqrtdp(__a); 6284 } 6285 #endif 6286 6287 /* vec_rsqrte */ 6288 6289 static vector float __ATTRS_o_ai 6290 vec_rsqrte(vector float __a) { 6291 #ifdef __VSX__ 6292 return __builtin_vsx_xvrsqrtesp(__a); 6293 #else 6294 return __builtin_altivec_vrsqrtefp(__a); 6295 #endif 6296 } 6297 6298 #ifdef __VSX__ 6299 static vector double __ATTRS_o_ai vec_rsqrte(vector double __a) { 6300 return __builtin_vsx_xvrsqrtedp(__a); 6301 } 6302 #endif 6303 6304 /* vec_vrsqrtefp */ 6305 6306 static __vector float __attribute__((__always_inline__)) 6307 vec_vrsqrtefp(vector float __a) { 6308 return __builtin_altivec_vrsqrtefp(__a); 6309 } 6310 6311 /* vec_sel */ 6312 6313 #define __builtin_altivec_vsel_4si vec_sel 6314 6315 static vector signed char __ATTRS_o_ai vec_sel(vector signed char __a, 6316 vector signed char __b, 6317 vector unsigned char __c) { 6318 return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c); 6319 } 6320 6321 static vector signed char __ATTRS_o_ai vec_sel(vector signed char __a, 6322 vector signed char __b, 6323 vector bool char __c) { 6324 return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c); 6325 } 6326 6327 static vector unsigned char __ATTRS_o_ai vec_sel(vector unsigned char __a, 6328 vector unsigned char __b, 6329 vector unsigned char __c) { 6330 return (__a & ~__c) | (__b & __c); 6331 } 6332 6333 static vector unsigned char __ATTRS_o_ai vec_sel(vector unsigned char __a, 6334 vector unsigned char __b, 6335 vector bool char __c) { 6336 return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c); 6337 } 6338 6339 static vector bool char __ATTRS_o_ai vec_sel(vector bool char __a, 6340 vector bool char __b, 6341 vector unsigned char __c) { 6342 return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c); 6343 } 6344 6345 static vector bool char __ATTRS_o_ai vec_sel(vector bool char __a, 6346 vector bool char __b, 6347 vector bool char __c) { 6348 return (__a & ~__c) | (__b & __c); 6349 } 6350 6351 static vector short __ATTRS_o_ai vec_sel(vector short __a, vector short __b, 6352 vector unsigned short __c) { 6353 return (__a & ~(vector short)__c) | (__b & (vector short)__c); 6354 } 6355 6356 static vector short __ATTRS_o_ai vec_sel(vector short __a, vector short __b, 6357 vector bool short __c) { 6358 return (__a & ~(vector short)__c) | (__b & (vector short)__c); 6359 } 6360 6361 static vector unsigned short __ATTRS_o_ai vec_sel(vector unsigned short __a, 6362 vector unsigned short __b, 6363 vector unsigned short __c) { 6364 return (__a & ~__c) | (__b & __c); 6365 } 6366 6367 static vector unsigned short __ATTRS_o_ai vec_sel(vector unsigned short __a, 6368 vector unsigned short __b, 6369 vector bool short __c) { 6370 return (__a & ~(vector unsigned short)__c) | 6371 (__b & (vector unsigned short)__c); 6372 } 6373 6374 static vector bool short __ATTRS_o_ai vec_sel(vector bool short __a, 6375 vector bool short __b, 6376 vector unsigned short __c) { 6377 return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c); 6378 } 6379 6380 static vector bool short __ATTRS_o_ai vec_sel(vector bool short __a, 6381 vector bool short __b, 6382 vector bool short __c) { 6383 return (__a & ~__c) | (__b & __c); 6384 } 6385 6386 static vector int __ATTRS_o_ai vec_sel(vector int __a, vector int __b, 6387 vector unsigned int __c) { 6388 return (__a & ~(vector int)__c) | (__b & (vector int)__c); 6389 } 6390 6391 static vector int __ATTRS_o_ai vec_sel(vector int __a, vector int __b, 6392 vector bool int __c) { 6393 return (__a & ~(vector int)__c) | (__b & (vector int)__c); 6394 } 6395 6396 static vector unsigned int __ATTRS_o_ai vec_sel(vector unsigned int __a, 6397 vector unsigned int __b, 6398 vector unsigned int __c) { 6399 return (__a & ~__c) | (__b & __c); 6400 } 6401 6402 static vector unsigned int __ATTRS_o_ai vec_sel(vector unsigned int __a, 6403 vector unsigned int __b, 6404 vector bool int __c) { 6405 return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c); 6406 } 6407 6408 static vector bool int __ATTRS_o_ai vec_sel(vector bool int __a, 6409 vector bool int __b, 6410 vector unsigned int __c) { 6411 return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c); 6412 } 6413 6414 static vector bool int __ATTRS_o_ai vec_sel(vector bool int __a, 6415 vector bool int __b, 6416 vector bool int __c) { 6417 return (__a & ~__c) | (__b & __c); 6418 } 6419 6420 static vector float __ATTRS_o_ai vec_sel(vector float __a, vector float __b, 6421 vector unsigned int __c) { 6422 vector int __res = ((vector int)__a & ~(vector int)__c) | 6423 ((vector int)__b & (vector int)__c); 6424 return (vector float)__res; 6425 } 6426 6427 static vector float __ATTRS_o_ai vec_sel(vector float __a, vector float __b, 6428 vector bool int __c) { 6429 vector int __res = ((vector int)__a & ~(vector int)__c) | 6430 ((vector int)__b & (vector int)__c); 6431 return (vector float)__res; 6432 } 6433 6434 #ifdef __VSX__ 6435 static vector double __ATTRS_o_ai vec_sel(vector double __a, vector double __b, 6436 vector bool long long __c) { 6437 vector long long __res = ((vector long long)__a & ~(vector long long)__c) | 6438 ((vector long long)__b & (vector long long)__c); 6439 return (vector double)__res; 6440 } 6441 6442 static vector double __ATTRS_o_ai vec_sel(vector double __a, vector double __b, 6443 vector unsigned long long __c) { 6444 vector long long __res = ((vector long long)__a & ~(vector long long)__c) | 6445 ((vector long long)__b & (vector long long)__c); 6446 return (vector double)__res; 6447 } 6448 #endif 6449 6450 /* vec_vsel */ 6451 6452 static vector signed char __ATTRS_o_ai vec_vsel(vector signed char __a, 6453 vector signed char __b, 6454 vector unsigned char __c) { 6455 return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c); 6456 } 6457 6458 static vector signed char __ATTRS_o_ai vec_vsel(vector signed char __a, 6459 vector signed char __b, 6460 vector bool char __c) { 6461 return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c); 6462 } 6463 6464 static vector unsigned char __ATTRS_o_ai vec_vsel(vector unsigned char __a, 6465 vector unsigned char __b, 6466 vector unsigned char __c) { 6467 return (__a & ~__c) | (__b & __c); 6468 } 6469 6470 static vector unsigned char __ATTRS_o_ai vec_vsel(vector unsigned char __a, 6471 vector unsigned char __b, 6472 vector bool char __c) { 6473 return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c); 6474 } 6475 6476 static vector bool char __ATTRS_o_ai vec_vsel(vector bool char __a, 6477 vector bool char __b, 6478 vector unsigned char __c) { 6479 return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c); 6480 } 6481 6482 static vector bool char __ATTRS_o_ai vec_vsel(vector bool char __a, 6483 vector bool char __b, 6484 vector bool char __c) { 6485 return (__a & ~__c) | (__b & __c); 6486 } 6487 6488 static vector short __ATTRS_o_ai vec_vsel(vector short __a, vector short __b, 6489 vector unsigned short __c) { 6490 return (__a & ~(vector short)__c) | (__b & (vector short)__c); 6491 } 6492 6493 static vector short __ATTRS_o_ai vec_vsel(vector short __a, vector short __b, 6494 vector bool short __c) { 6495 return (__a & ~(vector short)__c) | (__b & (vector short)__c); 6496 } 6497 6498 static vector unsigned short __ATTRS_o_ai vec_vsel(vector unsigned short __a, 6499 vector unsigned short __b, 6500 vector unsigned short __c) { 6501 return (__a & ~__c) | (__b & __c); 6502 } 6503 6504 static vector unsigned short __ATTRS_o_ai vec_vsel(vector unsigned short __a, 6505 vector unsigned short __b, 6506 vector bool short __c) { 6507 return (__a & ~(vector unsigned short)__c) | 6508 (__b & (vector unsigned short)__c); 6509 } 6510 6511 static vector bool short __ATTRS_o_ai vec_vsel(vector bool short __a, 6512 vector bool short __b, 6513 vector unsigned short __c) { 6514 return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c); 6515 } 6516 6517 static vector bool short __ATTRS_o_ai vec_vsel(vector bool short __a, 6518 vector bool short __b, 6519 vector bool short __c) { 6520 return (__a & ~__c) | (__b & __c); 6521 } 6522 6523 static vector int __ATTRS_o_ai vec_vsel(vector int __a, vector int __b, 6524 vector unsigned int __c) { 6525 return (__a & ~(vector int)__c) | (__b & (vector int)__c); 6526 } 6527 6528 static vector int __ATTRS_o_ai vec_vsel(vector int __a, vector int __b, 6529 vector bool int __c) { 6530 return (__a & ~(vector int)__c) | (__b & (vector int)__c); 6531 } 6532 6533 static vector unsigned int __ATTRS_o_ai vec_vsel(vector unsigned int __a, 6534 vector unsigned int __b, 6535 vector unsigned int __c) { 6536 return (__a & ~__c) | (__b & __c); 6537 } 6538 6539 static vector unsigned int __ATTRS_o_ai vec_vsel(vector unsigned int __a, 6540 vector unsigned int __b, 6541 vector bool int __c) { 6542 return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c); 6543 } 6544 6545 static vector bool int __ATTRS_o_ai vec_vsel(vector bool int __a, 6546 vector bool int __b, 6547 vector unsigned int __c) { 6548 return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c); 6549 } 6550 6551 static vector bool int __ATTRS_o_ai vec_vsel(vector bool int __a, 6552 vector bool int __b, 6553 vector bool int __c) { 6554 return (__a & ~__c) | (__b & __c); 6555 } 6556 6557 static vector float __ATTRS_o_ai vec_vsel(vector float __a, vector float __b, 6558 vector unsigned int __c) { 6559 vector int __res = ((vector int)__a & ~(vector int)__c) | 6560 ((vector int)__b & (vector int)__c); 6561 return (vector float)__res; 6562 } 6563 6564 static vector float __ATTRS_o_ai vec_vsel(vector float __a, vector float __b, 6565 vector bool int __c) { 6566 vector int __res = ((vector int)__a & ~(vector int)__c) | 6567 ((vector int)__b & (vector int)__c); 6568 return (vector float)__res; 6569 } 6570 6571 /* vec_sl */ 6572 6573 static vector signed char __ATTRS_o_ai vec_sl(vector signed char __a, 6574 vector unsigned char __b) { 6575 return __a << (vector signed char)__b; 6576 } 6577 6578 static vector unsigned char __ATTRS_o_ai vec_sl(vector unsigned char __a, 6579 vector unsigned char __b) { 6580 return __a << __b; 6581 } 6582 6583 static vector short __ATTRS_o_ai vec_sl(vector short __a, 6584 vector unsigned short __b) { 6585 return __a << (vector short)__b; 6586 } 6587 6588 static vector unsigned short __ATTRS_o_ai vec_sl(vector unsigned short __a, 6589 vector unsigned short __b) { 6590 return __a << __b; 6591 } 6592 6593 static vector int __ATTRS_o_ai vec_sl(vector int __a, vector unsigned int __b) { 6594 return __a << (vector int)__b; 6595 } 6596 6597 static vector unsigned int __ATTRS_o_ai vec_sl(vector unsigned int __a, 6598 vector unsigned int __b) { 6599 return __a << __b; 6600 } 6601 6602 #ifdef __POWER8_VECTOR__ 6603 static vector signed long long __ATTRS_o_ai 6604 vec_sl(vector signed long long __a, vector unsigned long long __b) { 6605 return __a << (vector long long)__b; 6606 } 6607 6608 static vector unsigned long long __ATTRS_o_ai 6609 vec_sl(vector unsigned long long __a, vector unsigned long long __b) { 6610 return __a << __b; 6611 } 6612 #endif 6613 6614 /* vec_vslb */ 6615 6616 #define __builtin_altivec_vslb vec_vslb 6617 6618 static vector signed char __ATTRS_o_ai vec_vslb(vector signed char __a, 6619 vector unsigned char __b) { 6620 return vec_sl(__a, __b); 6621 } 6622 6623 static vector unsigned char __ATTRS_o_ai vec_vslb(vector unsigned char __a, 6624 vector unsigned char __b) { 6625 return vec_sl(__a, __b); 6626 } 6627 6628 /* vec_vslh */ 6629 6630 #define __builtin_altivec_vslh vec_vslh 6631 6632 static vector short __ATTRS_o_ai vec_vslh(vector short __a, 6633 vector unsigned short __b) { 6634 return vec_sl(__a, __b); 6635 } 6636 6637 static vector unsigned short __ATTRS_o_ai vec_vslh(vector unsigned short __a, 6638 vector unsigned short __b) { 6639 return vec_sl(__a, __b); 6640 } 6641 6642 /* vec_vslw */ 6643 6644 #define __builtin_altivec_vslw vec_vslw 6645 6646 static vector int __ATTRS_o_ai vec_vslw(vector int __a, 6647 vector unsigned int __b) { 6648 return vec_sl(__a, __b); 6649 } 6650 6651 static vector unsigned int __ATTRS_o_ai vec_vslw(vector unsigned int __a, 6652 vector unsigned int __b) { 6653 return vec_sl(__a, __b); 6654 } 6655 6656 /* vec_sld */ 6657 6658 #define __builtin_altivec_vsldoi_4si vec_sld 6659 6660 static vector signed char __ATTRS_o_ai vec_sld(vector signed char __a, 6661 vector signed char __b, 6662 unsigned const int __c) { 6663 unsigned char __d = __c & 0x0F; 6664 #ifdef __LITTLE_ENDIAN__ 6665 return vec_perm( 6666 __b, __a, 6667 (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d, 6668 21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d, 6669 26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d, 6670 31 - __d)); 6671 #else 6672 return vec_perm( 6673 __a, __b, 6674 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5, 6675 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10, 6676 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15)); 6677 #endif 6678 } 6679 6680 static vector unsigned char __ATTRS_o_ai vec_sld(vector unsigned char __a, 6681 vector unsigned char __b, 6682 unsigned const int __c) { 6683 unsigned char __d = __c & 0x0F; 6684 #ifdef __LITTLE_ENDIAN__ 6685 return vec_perm( 6686 __b, __a, 6687 (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d, 6688 21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d, 6689 26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d, 6690 31 - __d)); 6691 #else 6692 return vec_perm( 6693 __a, __b, 6694 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5, 6695 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10, 6696 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15)); 6697 #endif 6698 } 6699 6700 static vector bool char __ATTRS_o_ai vec_sld(vector bool char __a, 6701 vector bool char __b, 6702 unsigned const int __c) { 6703 unsigned char __d = __c & 0x0F; 6704 #ifdef __LITTLE_ENDIAN__ 6705 return vec_perm( 6706 __b, __a, 6707 (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d, 6708 21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d, 6709 26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d, 6710 31 - __d)); 6711 #else 6712 return vec_perm( 6713 __a, __b, 6714 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5, 6715 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10, 6716 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15)); 6717 #endif 6718 } 6719 6720 static vector signed short __ATTRS_o_ai vec_sld(vector signed short __a, 6721 vector signed short __b, 6722 unsigned const int __c) { 6723 unsigned char __d = __c & 0x0F; 6724 #ifdef __LITTLE_ENDIAN__ 6725 return vec_perm( 6726 __b, __a, 6727 (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d, 6728 21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d, 6729 26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d, 6730 31 - __d)); 6731 #else 6732 return vec_perm( 6733 __a, __b, 6734 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5, 6735 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10, 6736 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15)); 6737 #endif 6738 } 6739 6740 static vector unsigned short __ATTRS_o_ai vec_sld(vector unsigned short __a, 6741 vector unsigned short __b, 6742 unsigned const int __c) { 6743 unsigned char __d = __c & 0x0F; 6744 #ifdef __LITTLE_ENDIAN__ 6745 return vec_perm( 6746 __b, __a, 6747 (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d, 6748 21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d, 6749 26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d, 6750 31 - __d)); 6751 #else 6752 return vec_perm( 6753 __a, __b, 6754 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5, 6755 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10, 6756 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15)); 6757 #endif 6758 } 6759 6760 static vector bool short __ATTRS_o_ai vec_sld(vector bool short __a, 6761 vector bool short __b, 6762 unsigned const int __c) { 6763 unsigned char __d = __c & 0x0F; 6764 #ifdef __LITTLE_ENDIAN__ 6765 return vec_perm( 6766 __b, __a, 6767 (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d, 6768 21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d, 6769 26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d, 6770 31 - __d)); 6771 #else 6772 return vec_perm( 6773 __a, __b, 6774 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5, 6775 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10, 6776 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15)); 6777 #endif 6778 } 6779 6780 static vector pixel __ATTRS_o_ai vec_sld(vector pixel __a, vector pixel __b, 6781 unsigned const int __c) { 6782 unsigned char __d = __c & 0x0F; 6783 #ifdef __LITTLE_ENDIAN__ 6784 return vec_perm( 6785 __b, __a, 6786 (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d, 6787 21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d, 6788 26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d, 6789 31 - __d)); 6790 #else 6791 return vec_perm( 6792 __a, __b, 6793 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5, 6794 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10, 6795 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15)); 6796 #endif 6797 } 6798 6799 static vector signed int __ATTRS_o_ai vec_sld(vector signed int __a, 6800 vector signed int __b, 6801 unsigned const int __c) { 6802 unsigned char __d = __c & 0x0F; 6803 #ifdef __LITTLE_ENDIAN__ 6804 return vec_perm( 6805 __b, __a, 6806 (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d, 6807 21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d, 6808 26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d, 6809 31 - __d)); 6810 #else 6811 return vec_perm( 6812 __a, __b, 6813 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5, 6814 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10, 6815 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15)); 6816 #endif 6817 } 6818 6819 static vector unsigned int __ATTRS_o_ai vec_sld(vector unsigned int __a, 6820 vector unsigned int __b, 6821 unsigned const int __c) { 6822 unsigned char __d = __c & 0x0F; 6823 #ifdef __LITTLE_ENDIAN__ 6824 return vec_perm( 6825 __b, __a, 6826 (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d, 6827 21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d, 6828 26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d, 6829 31 - __d)); 6830 #else 6831 return vec_perm( 6832 __a, __b, 6833 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5, 6834 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10, 6835 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15)); 6836 #endif 6837 } 6838 6839 static vector bool int __ATTRS_o_ai vec_sld(vector bool int __a, 6840 vector bool int __b, 6841 unsigned const int __c) { 6842 unsigned char __d = __c & 0x0F; 6843 #ifdef __LITTLE_ENDIAN__ 6844 return vec_perm( 6845 __b, __a, 6846 (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d, 6847 21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d, 6848 26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d, 6849 31 - __d)); 6850 #else 6851 return vec_perm( 6852 __a, __b, 6853 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5, 6854 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10, 6855 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15)); 6856 #endif 6857 } 6858 6859 static vector float __ATTRS_o_ai vec_sld(vector float __a, vector float __b, 6860 unsigned const int __c) { 6861 unsigned char __d = __c & 0x0F; 6862 #ifdef __LITTLE_ENDIAN__ 6863 return vec_perm( 6864 __b, __a, 6865 (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d, 6866 21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d, 6867 26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d, 6868 31 - __d)); 6869 #else 6870 return vec_perm( 6871 __a, __b, 6872 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5, 6873 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10, 6874 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15)); 6875 #endif 6876 } 6877 6878 /* vec_vsldoi */ 6879 6880 static vector signed char __ATTRS_o_ai vec_vsldoi(vector signed char __a, 6881 vector signed char __b, 6882 unsigned char __c) { 6883 unsigned char __d = __c & 0x0F; 6884 #ifdef __LITTLE_ENDIAN__ 6885 return vec_perm( 6886 __b, __a, 6887 (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d, 6888 21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d, 6889 26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d, 6890 31 - __d)); 6891 #else 6892 return vec_perm( 6893 __a, __b, 6894 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5, 6895 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10, 6896 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15)); 6897 #endif 6898 } 6899 6900 static vector unsigned char __ATTRS_o_ai vec_vsldoi(vector unsigned char __a, 6901 vector unsigned char __b, 6902 unsigned char __c) { 6903 unsigned char __d = __c & 0x0F; 6904 #ifdef __LITTLE_ENDIAN__ 6905 return vec_perm( 6906 __b, __a, 6907 (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d, 6908 21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d, 6909 26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d, 6910 31 - __d)); 6911 #else 6912 return vec_perm( 6913 __a, __b, 6914 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5, 6915 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10, 6916 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15)); 6917 #endif 6918 } 6919 6920 static vector short __ATTRS_o_ai vec_vsldoi(vector short __a, vector short __b, 6921 unsigned char __c) { 6922 unsigned char __d = __c & 0x0F; 6923 #ifdef __LITTLE_ENDIAN__ 6924 return vec_perm( 6925 __b, __a, 6926 (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d, 6927 21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d, 6928 26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d, 6929 31 - __d)); 6930 #else 6931 return vec_perm( 6932 __a, __b, 6933 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5, 6934 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10, 6935 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15)); 6936 #endif 6937 } 6938 6939 static vector unsigned short __ATTRS_o_ai vec_vsldoi(vector unsigned short __a, 6940 vector unsigned short __b, 6941 unsigned char __c) { 6942 unsigned char __d = __c & 0x0F; 6943 #ifdef __LITTLE_ENDIAN__ 6944 return vec_perm( 6945 __b, __a, 6946 (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d, 6947 21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d, 6948 26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d, 6949 31 - __d)); 6950 #else 6951 return vec_perm( 6952 __a, __b, 6953 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5, 6954 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10, 6955 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15)); 6956 #endif 6957 } 6958 6959 static vector pixel __ATTRS_o_ai vec_vsldoi(vector pixel __a, vector pixel __b, 6960 unsigned char __c) { 6961 unsigned char __d = __c & 0x0F; 6962 #ifdef __LITTLE_ENDIAN__ 6963 return vec_perm( 6964 __b, __a, 6965 (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d, 6966 21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d, 6967 26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d, 6968 31 - __d)); 6969 #else 6970 return vec_perm( 6971 __a, __b, 6972 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5, 6973 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10, 6974 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15)); 6975 #endif 6976 } 6977 6978 static vector int __ATTRS_o_ai vec_vsldoi(vector int __a, vector int __b, 6979 unsigned char __c) { 6980 unsigned char __d = __c & 0x0F; 6981 #ifdef __LITTLE_ENDIAN__ 6982 return vec_perm( 6983 __b, __a, 6984 (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d, 6985 21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d, 6986 26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d, 6987 31 - __d)); 6988 #else 6989 return vec_perm( 6990 __a, __b, 6991 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5, 6992 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10, 6993 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15)); 6994 #endif 6995 } 6996 6997 static vector unsigned int __ATTRS_o_ai vec_vsldoi(vector unsigned int __a, 6998 vector unsigned int __b, 6999 unsigned char __c) { 7000 unsigned char __d = __c & 0x0F; 7001 #ifdef __LITTLE_ENDIAN__ 7002 return vec_perm( 7003 __b, __a, 7004 (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d, 7005 21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d, 7006 26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d, 7007 31 - __d)); 7008 #else 7009 return vec_perm( 7010 __a, __b, 7011 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5, 7012 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10, 7013 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15)); 7014 #endif 7015 } 7016 7017 static vector float __ATTRS_o_ai vec_vsldoi(vector float __a, vector float __b, 7018 unsigned char __c) { 7019 unsigned char __d = __c & 0x0F; 7020 #ifdef __LITTLE_ENDIAN__ 7021 return vec_perm( 7022 __b, __a, 7023 (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d, 20 - __d, 7024 21 - __d, 22 - __d, 23 - __d, 24 - __d, 25 - __d, 7025 26 - __d, 27 - __d, 28 - __d, 29 - __d, 30 - __d, 7026 31 - __d)); 7027 #else 7028 return vec_perm( 7029 __a, __b, 7030 (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5, 7031 __d + 6, __d + 7, __d + 8, __d + 9, __d + 10, 7032 __d + 11, __d + 12, __d + 13, __d + 14, __d + 15)); 7033 #endif 7034 } 7035 7036 /* vec_sll */ 7037 7038 static vector signed char __ATTRS_o_ai vec_sll(vector signed char __a, 7039 vector unsigned char __b) { 7040 return (vector signed char)__builtin_altivec_vsl((vector int)__a, 7041 (vector int)__b); 7042 } 7043 7044 static vector signed char __ATTRS_o_ai vec_sll(vector signed char __a, 7045 vector unsigned short __b) { 7046 return (vector signed char)__builtin_altivec_vsl((vector int)__a, 7047 (vector int)__b); 7048 } 7049 7050 static vector signed char __ATTRS_o_ai vec_sll(vector signed char __a, 7051 vector unsigned int __b) { 7052 return (vector signed char)__builtin_altivec_vsl((vector int)__a, 7053 (vector int)__b); 7054 } 7055 7056 static vector unsigned char __ATTRS_o_ai vec_sll(vector unsigned char __a, 7057 vector unsigned char __b) { 7058 return (vector unsigned char)__builtin_altivec_vsl((vector int)__a, 7059 (vector int)__b); 7060 } 7061 7062 static vector unsigned char __ATTRS_o_ai vec_sll(vector unsigned char __a, 7063 vector unsigned short __b) { 7064 return (vector unsigned char)__builtin_altivec_vsl((vector int)__a, 7065 (vector int)__b); 7066 } 7067 7068 static vector unsigned char __ATTRS_o_ai vec_sll(vector unsigned char __a, 7069 vector unsigned int __b) { 7070 return (vector unsigned char)__builtin_altivec_vsl((vector int)__a, 7071 (vector int)__b); 7072 } 7073 7074 static vector bool char __ATTRS_o_ai vec_sll(vector bool char __a, 7075 vector unsigned char __b) { 7076 return (vector bool char)__builtin_altivec_vsl((vector int)__a, 7077 (vector int)__b); 7078 } 7079 7080 static vector bool char __ATTRS_o_ai vec_sll(vector bool char __a, 7081 vector unsigned short __b) { 7082 return (vector bool char)__builtin_altivec_vsl((vector int)__a, 7083 (vector int)__b); 7084 } 7085 7086 static vector bool char __ATTRS_o_ai vec_sll(vector bool char __a, 7087 vector unsigned int __b) { 7088 return (vector bool char)__builtin_altivec_vsl((vector int)__a, 7089 (vector int)__b); 7090 } 7091 7092 static vector short __ATTRS_o_ai vec_sll(vector short __a, 7093 vector unsigned char __b) { 7094 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 7095 } 7096 7097 static vector short __ATTRS_o_ai vec_sll(vector short __a, 7098 vector unsigned short __b) { 7099 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 7100 } 7101 7102 static vector short __ATTRS_o_ai vec_sll(vector short __a, 7103 vector unsigned int __b) { 7104 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 7105 } 7106 7107 static vector unsigned short __ATTRS_o_ai vec_sll(vector unsigned short __a, 7108 vector unsigned char __b) { 7109 return (vector unsigned short)__builtin_altivec_vsl((vector int)__a, 7110 (vector int)__b); 7111 } 7112 7113 static vector unsigned short __ATTRS_o_ai vec_sll(vector unsigned short __a, 7114 vector unsigned short __b) { 7115 return (vector unsigned short)__builtin_altivec_vsl((vector int)__a, 7116 (vector int)__b); 7117 } 7118 7119 static vector unsigned short __ATTRS_o_ai vec_sll(vector unsigned short __a, 7120 vector unsigned int __b) { 7121 return (vector unsigned short)__builtin_altivec_vsl((vector int)__a, 7122 (vector int)__b); 7123 } 7124 7125 static vector bool short __ATTRS_o_ai vec_sll(vector bool short __a, 7126 vector unsigned char __b) { 7127 return (vector bool short)__builtin_altivec_vsl((vector int)__a, 7128 (vector int)__b); 7129 } 7130 7131 static vector bool short __ATTRS_o_ai vec_sll(vector bool short __a, 7132 vector unsigned short __b) { 7133 return (vector bool short)__builtin_altivec_vsl((vector int)__a, 7134 (vector int)__b); 7135 } 7136 7137 static vector bool short __ATTRS_o_ai vec_sll(vector bool short __a, 7138 vector unsigned int __b) { 7139 return (vector bool short)__builtin_altivec_vsl((vector int)__a, 7140 (vector int)__b); 7141 } 7142 7143 static vector pixel __ATTRS_o_ai vec_sll(vector pixel __a, 7144 vector unsigned char __b) { 7145 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 7146 } 7147 7148 static vector pixel __ATTRS_o_ai vec_sll(vector pixel __a, 7149 vector unsigned short __b) { 7150 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 7151 } 7152 7153 static vector pixel __ATTRS_o_ai vec_sll(vector pixel __a, 7154 vector unsigned int __b) { 7155 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 7156 } 7157 7158 static vector int __ATTRS_o_ai vec_sll(vector int __a, 7159 vector unsigned char __b) { 7160 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b); 7161 } 7162 7163 static vector int __ATTRS_o_ai vec_sll(vector int __a, 7164 vector unsigned short __b) { 7165 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b); 7166 } 7167 7168 static vector int __ATTRS_o_ai vec_sll(vector int __a, 7169 vector unsigned int __b) { 7170 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b); 7171 } 7172 7173 static vector unsigned int __ATTRS_o_ai vec_sll(vector unsigned int __a, 7174 vector unsigned char __b) { 7175 return (vector unsigned int)__builtin_altivec_vsl((vector int)__a, 7176 (vector int)__b); 7177 } 7178 7179 static vector unsigned int __ATTRS_o_ai vec_sll(vector unsigned int __a, 7180 vector unsigned short __b) { 7181 return (vector unsigned int)__builtin_altivec_vsl((vector int)__a, 7182 (vector int)__b); 7183 } 7184 7185 static vector unsigned int __ATTRS_o_ai vec_sll(vector unsigned int __a, 7186 vector unsigned int __b) { 7187 return (vector unsigned int)__builtin_altivec_vsl((vector int)__a, 7188 (vector int)__b); 7189 } 7190 7191 static vector bool int __ATTRS_o_ai vec_sll(vector bool int __a, 7192 vector unsigned char __b) { 7193 return (vector bool int)__builtin_altivec_vsl((vector int)__a, 7194 (vector int)__b); 7195 } 7196 7197 static vector bool int __ATTRS_o_ai vec_sll(vector bool int __a, 7198 vector unsigned short __b) { 7199 return (vector bool int)__builtin_altivec_vsl((vector int)__a, 7200 (vector int)__b); 7201 } 7202 7203 static vector bool int __ATTRS_o_ai vec_sll(vector bool int __a, 7204 vector unsigned int __b) { 7205 return (vector bool int)__builtin_altivec_vsl((vector int)__a, 7206 (vector int)__b); 7207 } 7208 7209 /* vec_vsl */ 7210 7211 static vector signed char __ATTRS_o_ai vec_vsl(vector signed char __a, 7212 vector unsigned char __b) { 7213 return (vector signed char)__builtin_altivec_vsl((vector int)__a, 7214 (vector int)__b); 7215 } 7216 7217 static vector signed char __ATTRS_o_ai vec_vsl(vector signed char __a, 7218 vector unsigned short __b) { 7219 return (vector signed char)__builtin_altivec_vsl((vector int)__a, 7220 (vector int)__b); 7221 } 7222 7223 static vector signed char __ATTRS_o_ai vec_vsl(vector signed char __a, 7224 vector unsigned int __b) { 7225 return (vector signed char)__builtin_altivec_vsl((vector int)__a, 7226 (vector int)__b); 7227 } 7228 7229 static vector unsigned char __ATTRS_o_ai vec_vsl(vector unsigned char __a, 7230 vector unsigned char __b) { 7231 return (vector unsigned char)__builtin_altivec_vsl((vector int)__a, 7232 (vector int)__b); 7233 } 7234 7235 static vector unsigned char __ATTRS_o_ai vec_vsl(vector unsigned char __a, 7236 vector unsigned short __b) { 7237 return (vector unsigned char)__builtin_altivec_vsl((vector int)__a, 7238 (vector int)__b); 7239 } 7240 7241 static vector unsigned char __ATTRS_o_ai vec_vsl(vector unsigned char __a, 7242 vector unsigned int __b) { 7243 return (vector unsigned char)__builtin_altivec_vsl((vector int)__a, 7244 (vector int)__b); 7245 } 7246 7247 static vector bool char __ATTRS_o_ai vec_vsl(vector bool char __a, 7248 vector unsigned char __b) { 7249 return (vector bool char)__builtin_altivec_vsl((vector int)__a, 7250 (vector int)__b); 7251 } 7252 7253 static vector bool char __ATTRS_o_ai vec_vsl(vector bool char __a, 7254 vector unsigned short __b) { 7255 return (vector bool char)__builtin_altivec_vsl((vector int)__a, 7256 (vector int)__b); 7257 } 7258 7259 static vector bool char __ATTRS_o_ai vec_vsl(vector bool char __a, 7260 vector unsigned int __b) { 7261 return (vector bool char)__builtin_altivec_vsl((vector int)__a, 7262 (vector int)__b); 7263 } 7264 7265 static vector short __ATTRS_o_ai vec_vsl(vector short __a, 7266 vector unsigned char __b) { 7267 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 7268 } 7269 7270 static vector short __ATTRS_o_ai vec_vsl(vector short __a, 7271 vector unsigned short __b) { 7272 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 7273 } 7274 7275 static vector short __ATTRS_o_ai vec_vsl(vector short __a, 7276 vector unsigned int __b) { 7277 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 7278 } 7279 7280 static vector unsigned short __ATTRS_o_ai vec_vsl(vector unsigned short __a, 7281 vector unsigned char __b) { 7282 return (vector unsigned short)__builtin_altivec_vsl((vector int)__a, 7283 (vector int)__b); 7284 } 7285 7286 static vector unsigned short __ATTRS_o_ai vec_vsl(vector unsigned short __a, 7287 vector unsigned short __b) { 7288 return (vector unsigned short)__builtin_altivec_vsl((vector int)__a, 7289 (vector int)__b); 7290 } 7291 7292 static vector unsigned short __ATTRS_o_ai vec_vsl(vector unsigned short __a, 7293 vector unsigned int __b) { 7294 return (vector unsigned short)__builtin_altivec_vsl((vector int)__a, 7295 (vector int)__b); 7296 } 7297 7298 static vector bool short __ATTRS_o_ai vec_vsl(vector bool short __a, 7299 vector unsigned char __b) { 7300 return (vector bool short)__builtin_altivec_vsl((vector int)__a, 7301 (vector int)__b); 7302 } 7303 7304 static vector bool short __ATTRS_o_ai vec_vsl(vector bool short __a, 7305 vector unsigned short __b) { 7306 return (vector bool short)__builtin_altivec_vsl((vector int)__a, 7307 (vector int)__b); 7308 } 7309 7310 static vector bool short __ATTRS_o_ai vec_vsl(vector bool short __a, 7311 vector unsigned int __b) { 7312 return (vector bool short)__builtin_altivec_vsl((vector int)__a, 7313 (vector int)__b); 7314 } 7315 7316 static vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a, 7317 vector unsigned char __b) { 7318 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 7319 } 7320 7321 static vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a, 7322 vector unsigned short __b) { 7323 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 7324 } 7325 7326 static vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a, 7327 vector unsigned int __b) { 7328 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b); 7329 } 7330 7331 static vector int __ATTRS_o_ai vec_vsl(vector int __a, 7332 vector unsigned char __b) { 7333 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b); 7334 } 7335 7336 static vector int __ATTRS_o_ai vec_vsl(vector int __a, 7337 vector unsigned short __b) { 7338 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b); 7339 } 7340 7341 static vector int __ATTRS_o_ai vec_vsl(vector int __a, 7342 vector unsigned int __b) { 7343 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b); 7344 } 7345 7346 static vector unsigned int __ATTRS_o_ai vec_vsl(vector unsigned int __a, 7347 vector unsigned char __b) { 7348 return (vector unsigned int)__builtin_altivec_vsl((vector int)__a, 7349 (vector int)__b); 7350 } 7351 7352 static vector unsigned int __ATTRS_o_ai vec_vsl(vector unsigned int __a, 7353 vector unsigned short __b) { 7354 return (vector unsigned int)__builtin_altivec_vsl((vector int)__a, 7355 (vector int)__b); 7356 } 7357 7358 static vector unsigned int __ATTRS_o_ai vec_vsl(vector unsigned int __a, 7359 vector unsigned int __b) { 7360 return (vector unsigned int)__builtin_altivec_vsl((vector int)__a, 7361 (vector int)__b); 7362 } 7363 7364 static vector bool int __ATTRS_o_ai vec_vsl(vector bool int __a, 7365 vector unsigned char __b) { 7366 return (vector bool int)__builtin_altivec_vsl((vector int)__a, 7367 (vector int)__b); 7368 } 7369 7370 static vector bool int __ATTRS_o_ai vec_vsl(vector bool int __a, 7371 vector unsigned short __b) { 7372 return (vector bool int)__builtin_altivec_vsl((vector int)__a, 7373 (vector int)__b); 7374 } 7375 7376 static vector bool int __ATTRS_o_ai vec_vsl(vector bool int __a, 7377 vector unsigned int __b) { 7378 return (vector bool int)__builtin_altivec_vsl((vector int)__a, 7379 (vector int)__b); 7380 } 7381 7382 /* vec_slo */ 7383 7384 static vector signed char __ATTRS_o_ai vec_slo(vector signed char __a, 7385 vector signed char __b) { 7386 return (vector signed char)__builtin_altivec_vslo((vector int)__a, 7387 (vector int)__b); 7388 } 7389 7390 static vector signed char __ATTRS_o_ai vec_slo(vector signed char __a, 7391 vector unsigned char __b) { 7392 return (vector signed char)__builtin_altivec_vslo((vector int)__a, 7393 (vector int)__b); 7394 } 7395 7396 static vector unsigned char __ATTRS_o_ai vec_slo(vector unsigned char __a, 7397 vector signed char __b) { 7398 return (vector unsigned char)__builtin_altivec_vslo((vector int)__a, 7399 (vector int)__b); 7400 } 7401 7402 static vector unsigned char __ATTRS_o_ai vec_slo(vector unsigned char __a, 7403 vector unsigned char __b) { 7404 return (vector unsigned char)__builtin_altivec_vslo((vector int)__a, 7405 (vector int)__b); 7406 } 7407 7408 static vector short __ATTRS_o_ai vec_slo(vector short __a, 7409 vector signed char __b) { 7410 return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 7411 } 7412 7413 static vector short __ATTRS_o_ai vec_slo(vector short __a, 7414 vector unsigned char __b) { 7415 return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 7416 } 7417 7418 static vector unsigned short __ATTRS_o_ai vec_slo(vector unsigned short __a, 7419 vector signed char __b) { 7420 return (vector unsigned short)__builtin_altivec_vslo((vector int)__a, 7421 (vector int)__b); 7422 } 7423 7424 static vector unsigned short __ATTRS_o_ai vec_slo(vector unsigned short __a, 7425 vector unsigned char __b) { 7426 return (vector unsigned short)__builtin_altivec_vslo((vector int)__a, 7427 (vector int)__b); 7428 } 7429 7430 static vector pixel __ATTRS_o_ai vec_slo(vector pixel __a, 7431 vector signed char __b) { 7432 return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 7433 } 7434 7435 static vector pixel __ATTRS_o_ai vec_slo(vector pixel __a, 7436 vector unsigned char __b) { 7437 return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 7438 } 7439 7440 static vector int __ATTRS_o_ai vec_slo(vector int __a, vector signed char __b) { 7441 return (vector int)__builtin_altivec_vslo(__a, (vector int)__b); 7442 } 7443 7444 static vector int __ATTRS_o_ai vec_slo(vector int __a, 7445 vector unsigned char __b) { 7446 return (vector int)__builtin_altivec_vslo(__a, (vector int)__b); 7447 } 7448 7449 static vector unsigned int __ATTRS_o_ai vec_slo(vector unsigned int __a, 7450 vector signed char __b) { 7451 return (vector unsigned int)__builtin_altivec_vslo((vector int)__a, 7452 (vector int)__b); 7453 } 7454 7455 static vector unsigned int __ATTRS_o_ai vec_slo(vector unsigned int __a, 7456 vector unsigned char __b) { 7457 return (vector unsigned int)__builtin_altivec_vslo((vector int)__a, 7458 (vector int)__b); 7459 } 7460 7461 static vector float __ATTRS_o_ai vec_slo(vector float __a, 7462 vector signed char __b) { 7463 return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 7464 } 7465 7466 static vector float __ATTRS_o_ai vec_slo(vector float __a, 7467 vector unsigned char __b) { 7468 return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 7469 } 7470 7471 /* vec_vslo */ 7472 7473 static vector signed char __ATTRS_o_ai vec_vslo(vector signed char __a, 7474 vector signed char __b) { 7475 return (vector signed char)__builtin_altivec_vslo((vector int)__a, 7476 (vector int)__b); 7477 } 7478 7479 static vector signed char __ATTRS_o_ai vec_vslo(vector signed char __a, 7480 vector unsigned char __b) { 7481 return (vector signed char)__builtin_altivec_vslo((vector int)__a, 7482 (vector int)__b); 7483 } 7484 7485 static vector unsigned char __ATTRS_o_ai vec_vslo(vector unsigned char __a, 7486 vector signed char __b) { 7487 return (vector unsigned char)__builtin_altivec_vslo((vector int)__a, 7488 (vector int)__b); 7489 } 7490 7491 static vector unsigned char __ATTRS_o_ai vec_vslo(vector unsigned char __a, 7492 vector unsigned char __b) { 7493 return (vector unsigned char)__builtin_altivec_vslo((vector int)__a, 7494 (vector int)__b); 7495 } 7496 7497 static vector short __ATTRS_o_ai vec_vslo(vector short __a, 7498 vector signed char __b) { 7499 return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 7500 } 7501 7502 static vector short __ATTRS_o_ai vec_vslo(vector short __a, 7503 vector unsigned char __b) { 7504 return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 7505 } 7506 7507 static vector unsigned short __ATTRS_o_ai vec_vslo(vector unsigned short __a, 7508 vector signed char __b) { 7509 return (vector unsigned short)__builtin_altivec_vslo((vector int)__a, 7510 (vector int)__b); 7511 } 7512 7513 static vector unsigned short __ATTRS_o_ai vec_vslo(vector unsigned short __a, 7514 vector unsigned char __b) { 7515 return (vector unsigned short)__builtin_altivec_vslo((vector int)__a, 7516 (vector int)__b); 7517 } 7518 7519 static vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a, 7520 vector signed char __b) { 7521 return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 7522 } 7523 7524 static vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a, 7525 vector unsigned char __b) { 7526 return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 7527 } 7528 7529 static vector int __ATTRS_o_ai vec_vslo(vector int __a, 7530 vector signed char __b) { 7531 return (vector int)__builtin_altivec_vslo(__a, (vector int)__b); 7532 } 7533 7534 static vector int __ATTRS_o_ai vec_vslo(vector int __a, 7535 vector unsigned char __b) { 7536 return (vector int)__builtin_altivec_vslo(__a, (vector int)__b); 7537 } 7538 7539 static vector unsigned int __ATTRS_o_ai vec_vslo(vector unsigned int __a, 7540 vector signed char __b) { 7541 return (vector unsigned int)__builtin_altivec_vslo((vector int)__a, 7542 (vector int)__b); 7543 } 7544 7545 static vector unsigned int __ATTRS_o_ai vec_vslo(vector unsigned int __a, 7546 vector unsigned char __b) { 7547 return (vector unsigned int)__builtin_altivec_vslo((vector int)__a, 7548 (vector int)__b); 7549 } 7550 7551 static vector float __ATTRS_o_ai vec_vslo(vector float __a, 7552 vector signed char __b) { 7553 return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 7554 } 7555 7556 static vector float __ATTRS_o_ai vec_vslo(vector float __a, 7557 vector unsigned char __b) { 7558 return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b); 7559 } 7560 7561 /* vec_splat */ 7562 7563 static vector signed char __ATTRS_o_ai vec_splat(vector signed char __a, 7564 unsigned const int __b) { 7565 return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F)); 7566 } 7567 7568 static vector unsigned char __ATTRS_o_ai vec_splat(vector unsigned char __a, 7569 unsigned const int __b) { 7570 return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F)); 7571 } 7572 7573 static vector bool char __ATTRS_o_ai vec_splat(vector bool char __a, 7574 unsigned const int __b) { 7575 return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F)); 7576 } 7577 7578 static vector signed short __ATTRS_o_ai vec_splat(vector signed short __a, 7579 unsigned const int __b) { 7580 unsigned char b0 = (__b & 0x07) * 2; 7581 unsigned char b1 = b0 + 1; 7582 return vec_perm(__a, __a, 7583 (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, 7584 b0, b1, b0, b1, b0, b1, b0, b1)); 7585 } 7586 7587 static vector unsigned short __ATTRS_o_ai vec_splat(vector unsigned short __a, 7588 unsigned const int __b) { 7589 unsigned char b0 = (__b & 0x07) * 2; 7590 unsigned char b1 = b0 + 1; 7591 return vec_perm(__a, __a, 7592 (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, 7593 b0, b1, b0, b1, b0, b1, b0, b1)); 7594 } 7595 7596 static vector bool short __ATTRS_o_ai vec_splat(vector bool short __a, 7597 unsigned const int __b) { 7598 unsigned char b0 = (__b & 0x07) * 2; 7599 unsigned char b1 = b0 + 1; 7600 return vec_perm(__a, __a, 7601 (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, 7602 b0, b1, b0, b1, b0, b1, b0, b1)); 7603 } 7604 7605 static vector pixel __ATTRS_o_ai vec_splat(vector pixel __a, 7606 unsigned const int __b) { 7607 unsigned char b0 = (__b & 0x07) * 2; 7608 unsigned char b1 = b0 + 1; 7609 return vec_perm(__a, __a, 7610 (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, 7611 b0, b1, b0, b1, b0, b1, b0, b1)); 7612 } 7613 7614 static vector signed int __ATTRS_o_ai vec_splat(vector signed int __a, 7615 unsigned const int __b) { 7616 unsigned char b0 = (__b & 0x03) * 4; 7617 unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3; 7618 return vec_perm(__a, __a, 7619 (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, 7620 b1, b2, b3, b0, b1, b2, b3)); 7621 } 7622 7623 static vector unsigned int __ATTRS_o_ai vec_splat(vector unsigned int __a, 7624 unsigned const int __b) { 7625 unsigned char b0 = (__b & 0x03) * 4; 7626 unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3; 7627 return vec_perm(__a, __a, 7628 (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, 7629 b1, b2, b3, b0, b1, b2, b3)); 7630 } 7631 7632 static vector bool int __ATTRS_o_ai vec_splat(vector bool int __a, 7633 unsigned const int __b) { 7634 unsigned char b0 = (__b & 0x03) * 4; 7635 unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3; 7636 return vec_perm(__a, __a, 7637 (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, 7638 b1, b2, b3, b0, b1, b2, b3)); 7639 } 7640 7641 static vector float __ATTRS_o_ai vec_splat(vector float __a, 7642 unsigned const int __b) { 7643 unsigned char b0 = (__b & 0x03) * 4; 7644 unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3; 7645 return vec_perm(__a, __a, 7646 (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, 7647 b1, b2, b3, b0, b1, b2, b3)); 7648 } 7649 7650 #ifdef __VSX__ 7651 static vector double __ATTRS_o_ai vec_splat(vector double __a, 7652 unsigned const int __b) { 7653 unsigned char b0 = (__b & 0x01) * 8; 7654 unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, 7655 b5 = b0 + 5, b6 = b0 + 6, b7 = b0 + 7; 7656 return vec_perm(__a, __a, 7657 (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, 7658 b0, b1, b2, b3, b4, b5, b6, b7)); 7659 } 7660 static vector bool long long __ATTRS_o_ai vec_splat(vector bool long long __a, 7661 unsigned const int __b) { 7662 unsigned char b0 = (__b & 0x01) * 8; 7663 unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, 7664 b5 = b0 + 5, b6 = b0 + 6, b7 = b0 + 7; 7665 return vec_perm(__a, __a, 7666 (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, 7667 b0, b1, b2, b3, b4, b5, b6, b7)); 7668 } 7669 static vector signed long long __ATTRS_o_ai 7670 vec_splat(vector signed long long __a, unsigned const int __b) { 7671 unsigned char b0 = (__b & 0x01) * 8; 7672 unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, 7673 b5 = b0 + 5, b6 = b0 + 6, b7 = b0 + 7; 7674 return vec_perm(__a, __a, 7675 (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, 7676 b0, b1, b2, b3, b4, b5, b6, b7)); 7677 } 7678 static vector unsigned long long __ATTRS_o_ai 7679 vec_splat(vector unsigned long long __a, unsigned const int __b) { 7680 unsigned char b0 = (__b & 0x01) * 8; 7681 unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, 7682 b5 = b0 + 5, b6 = b0 + 6, b7 = b0 + 7; 7683 return vec_perm(__a, __a, 7684 (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, 7685 b0, b1, b2, b3, b4, b5, b6, b7)); 7686 } 7687 #endif 7688 7689 /* vec_vspltb */ 7690 7691 #define __builtin_altivec_vspltb vec_vspltb 7692 7693 static vector signed char __ATTRS_o_ai vec_vspltb(vector signed char __a, 7694 unsigned char __b) { 7695 return vec_perm(__a, __a, (vector unsigned char)(__b)); 7696 } 7697 7698 static vector unsigned char __ATTRS_o_ai vec_vspltb(vector unsigned char __a, 7699 unsigned char __b) { 7700 return vec_perm(__a, __a, (vector unsigned char)(__b)); 7701 } 7702 7703 static vector bool char __ATTRS_o_ai vec_vspltb(vector bool char __a, 7704 unsigned char __b) { 7705 return vec_perm(__a, __a, (vector unsigned char)(__b)); 7706 } 7707 7708 /* vec_vsplth */ 7709 7710 #define __builtin_altivec_vsplth vec_vsplth 7711 7712 static vector short __ATTRS_o_ai vec_vsplth(vector short __a, 7713 unsigned char __b) { 7714 __b *= 2; 7715 unsigned char b1 = __b + 1; 7716 return vec_perm(__a, __a, 7717 (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1, 7718 __b, b1, __b, b1, __b, b1, __b, b1)); 7719 } 7720 7721 static vector unsigned short __ATTRS_o_ai vec_vsplth(vector unsigned short __a, 7722 unsigned char __b) { 7723 __b *= 2; 7724 unsigned char b1 = __b + 1; 7725 return vec_perm(__a, __a, 7726 (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1, 7727 __b, b1, __b, b1, __b, b1, __b, b1)); 7728 } 7729 7730 static vector bool short __ATTRS_o_ai vec_vsplth(vector bool short __a, 7731 unsigned char __b) { 7732 __b *= 2; 7733 unsigned char b1 = __b + 1; 7734 return vec_perm(__a, __a, 7735 (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1, 7736 __b, b1, __b, b1, __b, b1, __b, b1)); 7737 } 7738 7739 static vector pixel __ATTRS_o_ai vec_vsplth(vector pixel __a, 7740 unsigned char __b) { 7741 __b *= 2; 7742 unsigned char b1 = __b + 1; 7743 return vec_perm(__a, __a, 7744 (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1, 7745 __b, b1, __b, b1, __b, b1, __b, b1)); 7746 } 7747 7748 /* vec_vspltw */ 7749 7750 #define __builtin_altivec_vspltw vec_vspltw 7751 7752 static vector int __ATTRS_o_ai vec_vspltw(vector int __a, unsigned char __b) { 7753 __b *= 4; 7754 unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3; 7755 return vec_perm(__a, __a, 7756 (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b, 7757 b1, b2, b3, __b, b1, b2, b3)); 7758 } 7759 7760 static vector unsigned int __ATTRS_o_ai vec_vspltw(vector unsigned int __a, 7761 unsigned char __b) { 7762 __b *= 4; 7763 unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3; 7764 return vec_perm(__a, __a, 7765 (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b, 7766 b1, b2, b3, __b, b1, b2, b3)); 7767 } 7768 7769 static vector bool int __ATTRS_o_ai vec_vspltw(vector bool int __a, 7770 unsigned char __b) { 7771 __b *= 4; 7772 unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3; 7773 return vec_perm(__a, __a, 7774 (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b, 7775 b1, b2, b3, __b, b1, b2, b3)); 7776 } 7777 7778 static vector float __ATTRS_o_ai vec_vspltw(vector float __a, 7779 unsigned char __b) { 7780 __b *= 4; 7781 unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3; 7782 return vec_perm(__a, __a, 7783 (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b, 7784 b1, b2, b3, __b, b1, b2, b3)); 7785 } 7786 7787 /* vec_splat_s8 */ 7788 7789 #define __builtin_altivec_vspltisb vec_splat_s8 7790 7791 // FIXME: parameter should be treated as 5-bit signed literal 7792 static vector signed char __ATTRS_o_ai vec_splat_s8(signed char __a) { 7793 return (vector signed char)(__a); 7794 } 7795 7796 /* vec_vspltisb */ 7797 7798 // FIXME: parameter should be treated as 5-bit signed literal 7799 static vector signed char __ATTRS_o_ai vec_vspltisb(signed char __a) { 7800 return (vector signed char)(__a); 7801 } 7802 7803 /* vec_splat_s16 */ 7804 7805 #define __builtin_altivec_vspltish vec_splat_s16 7806 7807 // FIXME: parameter should be treated as 5-bit signed literal 7808 static vector short __ATTRS_o_ai vec_splat_s16(signed char __a) { 7809 return (vector short)(__a); 7810 } 7811 7812 /* vec_vspltish */ 7813 7814 // FIXME: parameter should be treated as 5-bit signed literal 7815 static vector short __ATTRS_o_ai vec_vspltish(signed char __a) { 7816 return (vector short)(__a); 7817 } 7818 7819 /* vec_splat_s32 */ 7820 7821 #define __builtin_altivec_vspltisw vec_splat_s32 7822 7823 // FIXME: parameter should be treated as 5-bit signed literal 7824 static vector int __ATTRS_o_ai vec_splat_s32(signed char __a) { 7825 return (vector int)(__a); 7826 } 7827 7828 /* vec_vspltisw */ 7829 7830 // FIXME: parameter should be treated as 5-bit signed literal 7831 static vector int __ATTRS_o_ai vec_vspltisw(signed char __a) { 7832 return (vector int)(__a); 7833 } 7834 7835 /* vec_splat_u8 */ 7836 7837 // FIXME: parameter should be treated as 5-bit signed literal 7838 static vector unsigned char __ATTRS_o_ai vec_splat_u8(unsigned char __a) { 7839 return (vector unsigned char)(__a); 7840 } 7841 7842 /* vec_splat_u16 */ 7843 7844 // FIXME: parameter should be treated as 5-bit signed literal 7845 static vector unsigned short __ATTRS_o_ai vec_splat_u16(signed char __a) { 7846 return (vector unsigned short)(__a); 7847 } 7848 7849 /* vec_splat_u32 */ 7850 7851 // FIXME: parameter should be treated as 5-bit signed literal 7852 static vector unsigned int __ATTRS_o_ai vec_splat_u32(signed char __a) { 7853 return (vector unsigned int)(__a); 7854 } 7855 7856 /* vec_sr */ 7857 7858 static vector signed char __ATTRS_o_ai vec_sr(vector signed char __a, 7859 vector unsigned char __b) { 7860 vector unsigned char __res = (vector unsigned char)__a >> __b; 7861 return (vector signed char)__res; 7862 } 7863 7864 static vector unsigned char __ATTRS_o_ai vec_sr(vector unsigned char __a, 7865 vector unsigned char __b) { 7866 return __a >> __b; 7867 } 7868 7869 static vector signed short __ATTRS_o_ai vec_sr(vector signed short __a, 7870 vector unsigned short __b) { 7871 vector unsigned short __res = (vector unsigned short)__a >> __b; 7872 return (vector signed short)__res; 7873 } 7874 7875 static vector unsigned short __ATTRS_o_ai vec_sr(vector unsigned short __a, 7876 vector unsigned short __b) { 7877 return __a >> __b; 7878 } 7879 7880 static vector signed int __ATTRS_o_ai vec_sr(vector signed int __a, 7881 vector unsigned int __b) { 7882 vector unsigned int __res = (vector unsigned int)__a >> __b; 7883 return (vector signed int)__res; 7884 } 7885 7886 static vector unsigned int __ATTRS_o_ai vec_sr(vector unsigned int __a, 7887 vector unsigned int __b) { 7888 return __a >> __b; 7889 } 7890 7891 #ifdef __POWER8_VECTOR__ 7892 static vector signed long long __ATTRS_o_ai 7893 vec_sr(vector signed long long __a, vector unsigned long long __b) { 7894 vector unsigned long long __res = (vector unsigned long long)__a >> __b; 7895 return (vector signed long long)__res; 7896 } 7897 7898 static vector unsigned long long __ATTRS_o_ai 7899 vec_sr(vector unsigned long long __a, vector unsigned long long __b) { 7900 return __a >> __b; 7901 } 7902 #endif 7903 7904 /* vec_vsrb */ 7905 7906 #define __builtin_altivec_vsrb vec_vsrb 7907 7908 static vector signed char __ATTRS_o_ai vec_vsrb(vector signed char __a, 7909 vector unsigned char __b) { 7910 return __a >> (vector signed char)__b; 7911 } 7912 7913 static vector unsigned char __ATTRS_o_ai vec_vsrb(vector unsigned char __a, 7914 vector unsigned char __b) { 7915 return __a >> __b; 7916 } 7917 7918 /* vec_vsrh */ 7919 7920 #define __builtin_altivec_vsrh vec_vsrh 7921 7922 static vector short __ATTRS_o_ai vec_vsrh(vector short __a, 7923 vector unsigned short __b) { 7924 return __a >> (vector short)__b; 7925 } 7926 7927 static vector unsigned short __ATTRS_o_ai vec_vsrh(vector unsigned short __a, 7928 vector unsigned short __b) { 7929 return __a >> __b; 7930 } 7931 7932 /* vec_vsrw */ 7933 7934 #define __builtin_altivec_vsrw vec_vsrw 7935 7936 static vector int __ATTRS_o_ai vec_vsrw(vector int __a, 7937 vector unsigned int __b) { 7938 return __a >> (vector int)__b; 7939 } 7940 7941 static vector unsigned int __ATTRS_o_ai vec_vsrw(vector unsigned int __a, 7942 vector unsigned int __b) { 7943 return __a >> __b; 7944 } 7945 7946 /* vec_sra */ 7947 7948 static vector signed char __ATTRS_o_ai vec_sra(vector signed char __a, 7949 vector unsigned char __b) { 7950 return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b); 7951 } 7952 7953 static vector unsigned char __ATTRS_o_ai vec_sra(vector unsigned char __a, 7954 vector unsigned char __b) { 7955 return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b); 7956 } 7957 7958 static vector short __ATTRS_o_ai vec_sra(vector short __a, 7959 vector unsigned short __b) { 7960 return __builtin_altivec_vsrah(__a, (vector unsigned short)__b); 7961 } 7962 7963 static vector unsigned short __ATTRS_o_ai vec_sra(vector unsigned short __a, 7964 vector unsigned short __b) { 7965 return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b); 7966 } 7967 7968 static vector int __ATTRS_o_ai vec_sra(vector int __a, 7969 vector unsigned int __b) { 7970 return __builtin_altivec_vsraw(__a, __b); 7971 } 7972 7973 static vector unsigned int __ATTRS_o_ai vec_sra(vector unsigned int __a, 7974 vector unsigned int __b) { 7975 return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b); 7976 } 7977 7978 #ifdef __POWER8_VECTOR__ 7979 static vector signed long long __ATTRS_o_ai 7980 vec_sra(vector signed long long __a, vector unsigned long long __b) { 7981 return __a >> __b; 7982 } 7983 7984 static vector unsigned long long __ATTRS_o_ai 7985 vec_sra(vector unsigned long long __a, vector unsigned long long __b) { 7986 return (vector unsigned long long)((vector signed long long)__a >> __b); 7987 } 7988 #endif 7989 7990 /* vec_vsrab */ 7991 7992 static vector signed char __ATTRS_o_ai vec_vsrab(vector signed char __a, 7993 vector unsigned char __b) { 7994 return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b); 7995 } 7996 7997 static vector unsigned char __ATTRS_o_ai vec_vsrab(vector unsigned char __a, 7998 vector unsigned char __b) { 7999 return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b); 8000 } 8001 8002 /* vec_vsrah */ 8003 8004 static vector short __ATTRS_o_ai vec_vsrah(vector short __a, 8005 vector unsigned short __b) { 8006 return __builtin_altivec_vsrah(__a, (vector unsigned short)__b); 8007 } 8008 8009 static vector unsigned short __ATTRS_o_ai vec_vsrah(vector unsigned short __a, 8010 vector unsigned short __b) { 8011 return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b); 8012 } 8013 8014 /* vec_vsraw */ 8015 8016 static vector int __ATTRS_o_ai vec_vsraw(vector int __a, 8017 vector unsigned int __b) { 8018 return __builtin_altivec_vsraw(__a, __b); 8019 } 8020 8021 static vector unsigned int __ATTRS_o_ai vec_vsraw(vector unsigned int __a, 8022 vector unsigned int __b) { 8023 return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b); 8024 } 8025 8026 /* vec_srl */ 8027 8028 static vector signed char __ATTRS_o_ai vec_srl(vector signed char __a, 8029 vector unsigned char __b) { 8030 return (vector signed char)__builtin_altivec_vsr((vector int)__a, 8031 (vector int)__b); 8032 } 8033 8034 static vector signed char __ATTRS_o_ai vec_srl(vector signed char __a, 8035 vector unsigned short __b) { 8036 return (vector signed char)__builtin_altivec_vsr((vector int)__a, 8037 (vector int)__b); 8038 } 8039 8040 static vector signed char __ATTRS_o_ai vec_srl(vector signed char __a, 8041 vector unsigned int __b) { 8042 return (vector signed char)__builtin_altivec_vsr((vector int)__a, 8043 (vector int)__b); 8044 } 8045 8046 static vector unsigned char __ATTRS_o_ai vec_srl(vector unsigned char __a, 8047 vector unsigned char __b) { 8048 return (vector unsigned char)__builtin_altivec_vsr((vector int)__a, 8049 (vector int)__b); 8050 } 8051 8052 static vector unsigned char __ATTRS_o_ai vec_srl(vector unsigned char __a, 8053 vector unsigned short __b) { 8054 return (vector unsigned char)__builtin_altivec_vsr((vector int)__a, 8055 (vector int)__b); 8056 } 8057 8058 static vector unsigned char __ATTRS_o_ai vec_srl(vector unsigned char __a, 8059 vector unsigned int __b) { 8060 return (vector unsigned char)__builtin_altivec_vsr((vector int)__a, 8061 (vector int)__b); 8062 } 8063 8064 static vector bool char __ATTRS_o_ai vec_srl(vector bool char __a, 8065 vector unsigned char __b) { 8066 return (vector bool char)__builtin_altivec_vsr((vector int)__a, 8067 (vector int)__b); 8068 } 8069 8070 static vector bool char __ATTRS_o_ai vec_srl(vector bool char __a, 8071 vector unsigned short __b) { 8072 return (vector bool char)__builtin_altivec_vsr((vector int)__a, 8073 (vector int)__b); 8074 } 8075 8076 static vector bool char __ATTRS_o_ai vec_srl(vector bool char __a, 8077 vector unsigned int __b) { 8078 return (vector bool char)__builtin_altivec_vsr((vector int)__a, 8079 (vector int)__b); 8080 } 8081 8082 static vector short __ATTRS_o_ai vec_srl(vector short __a, 8083 vector unsigned char __b) { 8084 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 8085 } 8086 8087 static vector short __ATTRS_o_ai vec_srl(vector short __a, 8088 vector unsigned short __b) { 8089 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 8090 } 8091 8092 static vector short __ATTRS_o_ai vec_srl(vector short __a, 8093 vector unsigned int __b) { 8094 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 8095 } 8096 8097 static vector unsigned short __ATTRS_o_ai vec_srl(vector unsigned short __a, 8098 vector unsigned char __b) { 8099 return (vector unsigned short)__builtin_altivec_vsr((vector int)__a, 8100 (vector int)__b); 8101 } 8102 8103 static vector unsigned short __ATTRS_o_ai vec_srl(vector unsigned short __a, 8104 vector unsigned short __b) { 8105 return (vector unsigned short)__builtin_altivec_vsr((vector int)__a, 8106 (vector int)__b); 8107 } 8108 8109 static vector unsigned short __ATTRS_o_ai vec_srl(vector unsigned short __a, 8110 vector unsigned int __b) { 8111 return (vector unsigned short)__builtin_altivec_vsr((vector int)__a, 8112 (vector int)__b); 8113 } 8114 8115 static vector bool short __ATTRS_o_ai vec_srl(vector bool short __a, 8116 vector unsigned char __b) { 8117 return (vector bool short)__builtin_altivec_vsr((vector int)__a, 8118 (vector int)__b); 8119 } 8120 8121 static vector bool short __ATTRS_o_ai vec_srl(vector bool short __a, 8122 vector unsigned short __b) { 8123 return (vector bool short)__builtin_altivec_vsr((vector int)__a, 8124 (vector int)__b); 8125 } 8126 8127 static vector bool short __ATTRS_o_ai vec_srl(vector bool short __a, 8128 vector unsigned int __b) { 8129 return (vector bool short)__builtin_altivec_vsr((vector int)__a, 8130 (vector int)__b); 8131 } 8132 8133 static vector pixel __ATTRS_o_ai vec_srl(vector pixel __a, 8134 vector unsigned char __b) { 8135 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 8136 } 8137 8138 static vector pixel __ATTRS_o_ai vec_srl(vector pixel __a, 8139 vector unsigned short __b) { 8140 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 8141 } 8142 8143 static vector pixel __ATTRS_o_ai vec_srl(vector pixel __a, 8144 vector unsigned int __b) { 8145 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 8146 } 8147 8148 static vector int __ATTRS_o_ai vec_srl(vector int __a, 8149 vector unsigned char __b) { 8150 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b); 8151 } 8152 8153 static vector int __ATTRS_o_ai vec_srl(vector int __a, 8154 vector unsigned short __b) { 8155 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b); 8156 } 8157 8158 static vector int __ATTRS_o_ai vec_srl(vector int __a, 8159 vector unsigned int __b) { 8160 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b); 8161 } 8162 8163 static vector unsigned int __ATTRS_o_ai vec_srl(vector unsigned int __a, 8164 vector unsigned char __b) { 8165 return (vector unsigned int)__builtin_altivec_vsr((vector int)__a, 8166 (vector int)__b); 8167 } 8168 8169 static vector unsigned int __ATTRS_o_ai vec_srl(vector unsigned int __a, 8170 vector unsigned short __b) { 8171 return (vector unsigned int)__builtin_altivec_vsr((vector int)__a, 8172 (vector int)__b); 8173 } 8174 8175 static vector unsigned int __ATTRS_o_ai vec_srl(vector unsigned int __a, 8176 vector unsigned int __b) { 8177 return (vector unsigned int)__builtin_altivec_vsr((vector int)__a, 8178 (vector int)__b); 8179 } 8180 8181 static vector bool int __ATTRS_o_ai vec_srl(vector bool int __a, 8182 vector unsigned char __b) { 8183 return (vector bool int)__builtin_altivec_vsr((vector int)__a, 8184 (vector int)__b); 8185 } 8186 8187 static vector bool int __ATTRS_o_ai vec_srl(vector bool int __a, 8188 vector unsigned short __b) { 8189 return (vector bool int)__builtin_altivec_vsr((vector int)__a, 8190 (vector int)__b); 8191 } 8192 8193 static vector bool int __ATTRS_o_ai vec_srl(vector bool int __a, 8194 vector unsigned int __b) { 8195 return (vector bool int)__builtin_altivec_vsr((vector int)__a, 8196 (vector int)__b); 8197 } 8198 8199 /* vec_vsr */ 8200 8201 static vector signed char __ATTRS_o_ai vec_vsr(vector signed char __a, 8202 vector unsigned char __b) { 8203 return (vector signed char)__builtin_altivec_vsr((vector int)__a, 8204 (vector int)__b); 8205 } 8206 8207 static vector signed char __ATTRS_o_ai vec_vsr(vector signed char __a, 8208 vector unsigned short __b) { 8209 return (vector signed char)__builtin_altivec_vsr((vector int)__a, 8210 (vector int)__b); 8211 } 8212 8213 static vector signed char __ATTRS_o_ai vec_vsr(vector signed char __a, 8214 vector unsigned int __b) { 8215 return (vector signed char)__builtin_altivec_vsr((vector int)__a, 8216 (vector int)__b); 8217 } 8218 8219 static vector unsigned char __ATTRS_o_ai vec_vsr(vector unsigned char __a, 8220 vector unsigned char __b) { 8221 return (vector unsigned char)__builtin_altivec_vsr((vector int)__a, 8222 (vector int)__b); 8223 } 8224 8225 static vector unsigned char __ATTRS_o_ai vec_vsr(vector unsigned char __a, 8226 vector unsigned short __b) { 8227 return (vector unsigned char)__builtin_altivec_vsr((vector int)__a, 8228 (vector int)__b); 8229 } 8230 8231 static vector unsigned char __ATTRS_o_ai vec_vsr(vector unsigned char __a, 8232 vector unsigned int __b) { 8233 return (vector unsigned char)__builtin_altivec_vsr((vector int)__a, 8234 (vector int)__b); 8235 } 8236 8237 static vector bool char __ATTRS_o_ai vec_vsr(vector bool char __a, 8238 vector unsigned char __b) { 8239 return (vector bool char)__builtin_altivec_vsr((vector int)__a, 8240 (vector int)__b); 8241 } 8242 8243 static vector bool char __ATTRS_o_ai vec_vsr(vector bool char __a, 8244 vector unsigned short __b) { 8245 return (vector bool char)__builtin_altivec_vsr((vector int)__a, 8246 (vector int)__b); 8247 } 8248 8249 static vector bool char __ATTRS_o_ai vec_vsr(vector bool char __a, 8250 vector unsigned int __b) { 8251 return (vector bool char)__builtin_altivec_vsr((vector int)__a, 8252 (vector int)__b); 8253 } 8254 8255 static vector short __ATTRS_o_ai vec_vsr(vector short __a, 8256 vector unsigned char __b) { 8257 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 8258 } 8259 8260 static vector short __ATTRS_o_ai vec_vsr(vector short __a, 8261 vector unsigned short __b) { 8262 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 8263 } 8264 8265 static vector short __ATTRS_o_ai vec_vsr(vector short __a, 8266 vector unsigned int __b) { 8267 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 8268 } 8269 8270 static vector unsigned short __ATTRS_o_ai vec_vsr(vector unsigned short __a, 8271 vector unsigned char __b) { 8272 return (vector unsigned short)__builtin_altivec_vsr((vector int)__a, 8273 (vector int)__b); 8274 } 8275 8276 static vector unsigned short __ATTRS_o_ai vec_vsr(vector unsigned short __a, 8277 vector unsigned short __b) { 8278 return (vector unsigned short)__builtin_altivec_vsr((vector int)__a, 8279 (vector int)__b); 8280 } 8281 8282 static vector unsigned short __ATTRS_o_ai vec_vsr(vector unsigned short __a, 8283 vector unsigned int __b) { 8284 return (vector unsigned short)__builtin_altivec_vsr((vector int)__a, 8285 (vector int)__b); 8286 } 8287 8288 static vector bool short __ATTRS_o_ai vec_vsr(vector bool short __a, 8289 vector unsigned char __b) { 8290 return (vector bool short)__builtin_altivec_vsr((vector int)__a, 8291 (vector int)__b); 8292 } 8293 8294 static vector bool short __ATTRS_o_ai vec_vsr(vector bool short __a, 8295 vector unsigned short __b) { 8296 return (vector bool short)__builtin_altivec_vsr((vector int)__a, 8297 (vector int)__b); 8298 } 8299 8300 static vector bool short __ATTRS_o_ai vec_vsr(vector bool short __a, 8301 vector unsigned int __b) { 8302 return (vector bool short)__builtin_altivec_vsr((vector int)__a, 8303 (vector int)__b); 8304 } 8305 8306 static vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a, 8307 vector unsigned char __b) { 8308 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 8309 } 8310 8311 static vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a, 8312 vector unsigned short __b) { 8313 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 8314 } 8315 8316 static vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a, 8317 vector unsigned int __b) { 8318 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b); 8319 } 8320 8321 static vector int __ATTRS_o_ai vec_vsr(vector int __a, 8322 vector unsigned char __b) { 8323 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b); 8324 } 8325 8326 static vector int __ATTRS_o_ai vec_vsr(vector int __a, 8327 vector unsigned short __b) { 8328 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b); 8329 } 8330 8331 static vector int __ATTRS_o_ai vec_vsr(vector int __a, 8332 vector unsigned int __b) { 8333 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b); 8334 } 8335 8336 static vector unsigned int __ATTRS_o_ai vec_vsr(vector unsigned int __a, 8337 vector unsigned char __b) { 8338 return (vector unsigned int)__builtin_altivec_vsr((vector int)__a, 8339 (vector int)__b); 8340 } 8341 8342 static vector unsigned int __ATTRS_o_ai vec_vsr(vector unsigned int __a, 8343 vector unsigned short __b) { 8344 return (vector unsigned int)__builtin_altivec_vsr((vector int)__a, 8345 (vector int)__b); 8346 } 8347 8348 static vector unsigned int __ATTRS_o_ai vec_vsr(vector unsigned int __a, 8349 vector unsigned int __b) { 8350 return (vector unsigned int)__builtin_altivec_vsr((vector int)__a, 8351 (vector int)__b); 8352 } 8353 8354 static vector bool int __ATTRS_o_ai vec_vsr(vector bool int __a, 8355 vector unsigned char __b) { 8356 return (vector bool int)__builtin_altivec_vsr((vector int)__a, 8357 (vector int)__b); 8358 } 8359 8360 static vector bool int __ATTRS_o_ai vec_vsr(vector bool int __a, 8361 vector unsigned short __b) { 8362 return (vector bool int)__builtin_altivec_vsr((vector int)__a, 8363 (vector int)__b); 8364 } 8365 8366 static vector bool int __ATTRS_o_ai vec_vsr(vector bool int __a, 8367 vector unsigned int __b) { 8368 return (vector bool int)__builtin_altivec_vsr((vector int)__a, 8369 (vector int)__b); 8370 } 8371 8372 /* vec_sro */ 8373 8374 static vector signed char __ATTRS_o_ai vec_sro(vector signed char __a, 8375 vector signed char __b) { 8376 return (vector signed char)__builtin_altivec_vsro((vector int)__a, 8377 (vector int)__b); 8378 } 8379 8380 static vector signed char __ATTRS_o_ai vec_sro(vector signed char __a, 8381 vector unsigned char __b) { 8382 return (vector signed char)__builtin_altivec_vsro((vector int)__a, 8383 (vector int)__b); 8384 } 8385 8386 static vector unsigned char __ATTRS_o_ai vec_sro(vector unsigned char __a, 8387 vector signed char __b) { 8388 return (vector unsigned char)__builtin_altivec_vsro((vector int)__a, 8389 (vector int)__b); 8390 } 8391 8392 static vector unsigned char __ATTRS_o_ai vec_sro(vector unsigned char __a, 8393 vector unsigned char __b) { 8394 return (vector unsigned char)__builtin_altivec_vsro((vector int)__a, 8395 (vector int)__b); 8396 } 8397 8398 static vector short __ATTRS_o_ai vec_sro(vector short __a, 8399 vector signed char __b) { 8400 return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 8401 } 8402 8403 static vector short __ATTRS_o_ai vec_sro(vector short __a, 8404 vector unsigned char __b) { 8405 return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 8406 } 8407 8408 static vector unsigned short __ATTRS_o_ai vec_sro(vector unsigned short __a, 8409 vector signed char __b) { 8410 return (vector unsigned short)__builtin_altivec_vsro((vector int)__a, 8411 (vector int)__b); 8412 } 8413 8414 static vector unsigned short __ATTRS_o_ai vec_sro(vector unsigned short __a, 8415 vector unsigned char __b) { 8416 return (vector unsigned short)__builtin_altivec_vsro((vector int)__a, 8417 (vector int)__b); 8418 } 8419 8420 static vector pixel __ATTRS_o_ai vec_sro(vector pixel __a, 8421 vector signed char __b) { 8422 return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 8423 } 8424 8425 static vector pixel __ATTRS_o_ai vec_sro(vector pixel __a, 8426 vector unsigned char __b) { 8427 return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 8428 } 8429 8430 static vector int __ATTRS_o_ai vec_sro(vector int __a, vector signed char __b) { 8431 return (vector int)__builtin_altivec_vsro(__a, (vector int)__b); 8432 } 8433 8434 static vector int __ATTRS_o_ai vec_sro(vector int __a, 8435 vector unsigned char __b) { 8436 return (vector int)__builtin_altivec_vsro(__a, (vector int)__b); 8437 } 8438 8439 static vector unsigned int __ATTRS_o_ai vec_sro(vector unsigned int __a, 8440 vector signed char __b) { 8441 return (vector unsigned int)__builtin_altivec_vsro((vector int)__a, 8442 (vector int)__b); 8443 } 8444 8445 static vector unsigned int __ATTRS_o_ai vec_sro(vector unsigned int __a, 8446 vector unsigned char __b) { 8447 return (vector unsigned int)__builtin_altivec_vsro((vector int)__a, 8448 (vector int)__b); 8449 } 8450 8451 static vector float __ATTRS_o_ai vec_sro(vector float __a, 8452 vector signed char __b) { 8453 return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 8454 } 8455 8456 static vector float __ATTRS_o_ai vec_sro(vector float __a, 8457 vector unsigned char __b) { 8458 return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 8459 } 8460 8461 /* vec_vsro */ 8462 8463 static vector signed char __ATTRS_o_ai vec_vsro(vector signed char __a, 8464 vector signed char __b) { 8465 return (vector signed char)__builtin_altivec_vsro((vector int)__a, 8466 (vector int)__b); 8467 } 8468 8469 static vector signed char __ATTRS_o_ai vec_vsro(vector signed char __a, 8470 vector unsigned char __b) { 8471 return (vector signed char)__builtin_altivec_vsro((vector int)__a, 8472 (vector int)__b); 8473 } 8474 8475 static vector unsigned char __ATTRS_o_ai vec_vsro(vector unsigned char __a, 8476 vector signed char __b) { 8477 return (vector unsigned char)__builtin_altivec_vsro((vector int)__a, 8478 (vector int)__b); 8479 } 8480 8481 static vector unsigned char __ATTRS_o_ai vec_vsro(vector unsigned char __a, 8482 vector unsigned char __b) { 8483 return (vector unsigned char)__builtin_altivec_vsro((vector int)__a, 8484 (vector int)__b); 8485 } 8486 8487 static vector short __ATTRS_o_ai vec_vsro(vector short __a, 8488 vector signed char __b) { 8489 return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 8490 } 8491 8492 static vector short __ATTRS_o_ai vec_vsro(vector short __a, 8493 vector unsigned char __b) { 8494 return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 8495 } 8496 8497 static vector unsigned short __ATTRS_o_ai vec_vsro(vector unsigned short __a, 8498 vector signed char __b) { 8499 return (vector unsigned short)__builtin_altivec_vsro((vector int)__a, 8500 (vector int)__b); 8501 } 8502 8503 static vector unsigned short __ATTRS_o_ai vec_vsro(vector unsigned short __a, 8504 vector unsigned char __b) { 8505 return (vector unsigned short)__builtin_altivec_vsro((vector int)__a, 8506 (vector int)__b); 8507 } 8508 8509 static vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a, 8510 vector signed char __b) { 8511 return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 8512 } 8513 8514 static vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a, 8515 vector unsigned char __b) { 8516 return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 8517 } 8518 8519 static vector int __ATTRS_o_ai vec_vsro(vector int __a, 8520 vector signed char __b) { 8521 return (vector int)__builtin_altivec_vsro(__a, (vector int)__b); 8522 } 8523 8524 static vector int __ATTRS_o_ai vec_vsro(vector int __a, 8525 vector unsigned char __b) { 8526 return (vector int)__builtin_altivec_vsro(__a, (vector int)__b); 8527 } 8528 8529 static vector unsigned int __ATTRS_o_ai vec_vsro(vector unsigned int __a, 8530 vector signed char __b) { 8531 return (vector unsigned int)__builtin_altivec_vsro((vector int)__a, 8532 (vector int)__b); 8533 } 8534 8535 static vector unsigned int __ATTRS_o_ai vec_vsro(vector unsigned int __a, 8536 vector unsigned char __b) { 8537 return (vector unsigned int)__builtin_altivec_vsro((vector int)__a, 8538 (vector int)__b); 8539 } 8540 8541 static vector float __ATTRS_o_ai vec_vsro(vector float __a, 8542 vector signed char __b) { 8543 return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 8544 } 8545 8546 static vector float __ATTRS_o_ai vec_vsro(vector float __a, 8547 vector unsigned char __b) { 8548 return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b); 8549 } 8550 8551 /* vec_st */ 8552 8553 static void __ATTRS_o_ai vec_st(vector signed char __a, int __b, 8554 vector signed char *__c) { 8555 __builtin_altivec_stvx((vector int)__a, __b, __c); 8556 } 8557 8558 static void __ATTRS_o_ai vec_st(vector signed char __a, int __b, 8559 signed char *__c) { 8560 __builtin_altivec_stvx((vector int)__a, __b, __c); 8561 } 8562 8563 static void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b, 8564 vector unsigned char *__c) { 8565 __builtin_altivec_stvx((vector int)__a, __b, __c); 8566 } 8567 8568 static void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b, 8569 unsigned char *__c) { 8570 __builtin_altivec_stvx((vector int)__a, __b, __c); 8571 } 8572 8573 static void __ATTRS_o_ai vec_st(vector bool char __a, int __b, 8574 signed char *__c) { 8575 __builtin_altivec_stvx((vector int)__a, __b, __c); 8576 } 8577 8578 static void __ATTRS_o_ai vec_st(vector bool char __a, int __b, 8579 unsigned char *__c) { 8580 __builtin_altivec_stvx((vector int)__a, __b, __c); 8581 } 8582 8583 static void __ATTRS_o_ai vec_st(vector bool char __a, int __b, 8584 vector bool char *__c) { 8585 __builtin_altivec_stvx((vector int)__a, __b, __c); 8586 } 8587 8588 static void __ATTRS_o_ai vec_st(vector short __a, int __b, vector short *__c) { 8589 __builtin_altivec_stvx((vector int)__a, __b, __c); 8590 } 8591 8592 static void __ATTRS_o_ai vec_st(vector short __a, int __b, short *__c) { 8593 __builtin_altivec_stvx((vector int)__a, __b, __c); 8594 } 8595 8596 static void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b, 8597 vector unsigned short *__c) { 8598 __builtin_altivec_stvx((vector int)__a, __b, __c); 8599 } 8600 8601 static void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b, 8602 unsigned short *__c) { 8603 __builtin_altivec_stvx((vector int)__a, __b, __c); 8604 } 8605 8606 static void __ATTRS_o_ai vec_st(vector bool short __a, int __b, short *__c) { 8607 __builtin_altivec_stvx((vector int)__a, __b, __c); 8608 } 8609 8610 static void __ATTRS_o_ai vec_st(vector bool short __a, int __b, 8611 unsigned short *__c) { 8612 __builtin_altivec_stvx((vector int)__a, __b, __c); 8613 } 8614 8615 static void __ATTRS_o_ai vec_st(vector bool short __a, int __b, 8616 vector bool short *__c) { 8617 __builtin_altivec_stvx((vector int)__a, __b, __c); 8618 } 8619 8620 static void __ATTRS_o_ai vec_st(vector pixel __a, int __b, short *__c) { 8621 __builtin_altivec_stvx((vector int)__a, __b, __c); 8622 } 8623 8624 static void __ATTRS_o_ai vec_st(vector pixel __a, int __b, 8625 unsigned short *__c) { 8626 __builtin_altivec_stvx((vector int)__a, __b, __c); 8627 } 8628 8629 static void __ATTRS_o_ai vec_st(vector pixel __a, int __b, vector pixel *__c) { 8630 __builtin_altivec_stvx((vector int)__a, __b, __c); 8631 } 8632 8633 static void __ATTRS_o_ai vec_st(vector int __a, int __b, vector int *__c) { 8634 __builtin_altivec_stvx(__a, __b, __c); 8635 } 8636 8637 static void __ATTRS_o_ai vec_st(vector int __a, int __b, int *__c) { 8638 __builtin_altivec_stvx(__a, __b, __c); 8639 } 8640 8641 static void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b, 8642 vector unsigned int *__c) { 8643 __builtin_altivec_stvx((vector int)__a, __b, __c); 8644 } 8645 8646 static void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b, 8647 unsigned int *__c) { 8648 __builtin_altivec_stvx((vector int)__a, __b, __c); 8649 } 8650 8651 static void __ATTRS_o_ai vec_st(vector bool int __a, int __b, int *__c) { 8652 __builtin_altivec_stvx((vector int)__a, __b, __c); 8653 } 8654 8655 static void __ATTRS_o_ai vec_st(vector bool int __a, int __b, 8656 unsigned int *__c) { 8657 __builtin_altivec_stvx((vector int)__a, __b, __c); 8658 } 8659 8660 static void __ATTRS_o_ai vec_st(vector bool int __a, int __b, 8661 vector bool int *__c) { 8662 __builtin_altivec_stvx((vector int)__a, __b, __c); 8663 } 8664 8665 static void __ATTRS_o_ai vec_st(vector float __a, int __b, vector float *__c) { 8666 __builtin_altivec_stvx((vector int)__a, __b, __c); 8667 } 8668 8669 static void __ATTRS_o_ai vec_st(vector float __a, int __b, float *__c) { 8670 __builtin_altivec_stvx((vector int)__a, __b, __c); 8671 } 8672 8673 /* vec_stvx */ 8674 8675 static void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b, 8676 vector signed char *__c) { 8677 __builtin_altivec_stvx((vector int)__a, __b, __c); 8678 } 8679 8680 static void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b, 8681 signed char *__c) { 8682 __builtin_altivec_stvx((vector int)__a, __b, __c); 8683 } 8684 8685 static void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b, 8686 vector unsigned char *__c) { 8687 __builtin_altivec_stvx((vector int)__a, __b, __c); 8688 } 8689 8690 static void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b, 8691 unsigned char *__c) { 8692 __builtin_altivec_stvx((vector int)__a, __b, __c); 8693 } 8694 8695 static void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b, 8696 signed char *__c) { 8697 __builtin_altivec_stvx((vector int)__a, __b, __c); 8698 } 8699 8700 static void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b, 8701 unsigned char *__c) { 8702 __builtin_altivec_stvx((vector int)__a, __b, __c); 8703 } 8704 8705 static void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b, 8706 vector bool char *__c) { 8707 __builtin_altivec_stvx((vector int)__a, __b, __c); 8708 } 8709 8710 static void __ATTRS_o_ai vec_stvx(vector short __a, int __b, 8711 vector short *__c) { 8712 __builtin_altivec_stvx((vector int)__a, __b, __c); 8713 } 8714 8715 static void __ATTRS_o_ai vec_stvx(vector short __a, int __b, short *__c) { 8716 __builtin_altivec_stvx((vector int)__a, __b, __c); 8717 } 8718 8719 static void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b, 8720 vector unsigned short *__c) { 8721 __builtin_altivec_stvx((vector int)__a, __b, __c); 8722 } 8723 8724 static void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b, 8725 unsigned short *__c) { 8726 __builtin_altivec_stvx((vector int)__a, __b, __c); 8727 } 8728 8729 static void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b, short *__c) { 8730 __builtin_altivec_stvx((vector int)__a, __b, __c); 8731 } 8732 8733 static void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b, 8734 unsigned short *__c) { 8735 __builtin_altivec_stvx((vector int)__a, __b, __c); 8736 } 8737 8738 static void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b, 8739 vector bool short *__c) { 8740 __builtin_altivec_stvx((vector int)__a, __b, __c); 8741 } 8742 8743 static void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b, short *__c) { 8744 __builtin_altivec_stvx((vector int)__a, __b, __c); 8745 } 8746 8747 static void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b, 8748 unsigned short *__c) { 8749 __builtin_altivec_stvx((vector int)__a, __b, __c); 8750 } 8751 8752 static void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b, 8753 vector pixel *__c) { 8754 __builtin_altivec_stvx((vector int)__a, __b, __c); 8755 } 8756 8757 static void __ATTRS_o_ai vec_stvx(vector int __a, int __b, vector int *__c) { 8758 __builtin_altivec_stvx(__a, __b, __c); 8759 } 8760 8761 static void __ATTRS_o_ai vec_stvx(vector int __a, int __b, int *__c) { 8762 __builtin_altivec_stvx(__a, __b, __c); 8763 } 8764 8765 static void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b, 8766 vector unsigned int *__c) { 8767 __builtin_altivec_stvx((vector int)__a, __b, __c); 8768 } 8769 8770 static void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b, 8771 unsigned int *__c) { 8772 __builtin_altivec_stvx((vector int)__a, __b, __c); 8773 } 8774 8775 static void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b, int *__c) { 8776 __builtin_altivec_stvx((vector int)__a, __b, __c); 8777 } 8778 8779 static void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b, 8780 unsigned int *__c) { 8781 __builtin_altivec_stvx((vector int)__a, __b, __c); 8782 } 8783 8784 static void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b, 8785 vector bool int *__c) { 8786 __builtin_altivec_stvx((vector int)__a, __b, __c); 8787 } 8788 8789 static void __ATTRS_o_ai vec_stvx(vector float __a, int __b, 8790 vector float *__c) { 8791 __builtin_altivec_stvx((vector int)__a, __b, __c); 8792 } 8793 8794 static void __ATTRS_o_ai vec_stvx(vector float __a, int __b, float *__c) { 8795 __builtin_altivec_stvx((vector int)__a, __b, __c); 8796 } 8797 8798 /* vec_ste */ 8799 8800 static void __ATTRS_o_ai vec_ste(vector signed char __a, int __b, 8801 signed char *__c) { 8802 __builtin_altivec_stvebx((vector char)__a, __b, __c); 8803 } 8804 8805 static void __ATTRS_o_ai vec_ste(vector unsigned char __a, int __b, 8806 unsigned char *__c) { 8807 __builtin_altivec_stvebx((vector char)__a, __b, __c); 8808 } 8809 8810 static void __ATTRS_o_ai vec_ste(vector bool char __a, int __b, 8811 signed char *__c) { 8812 __builtin_altivec_stvebx((vector char)__a, __b, __c); 8813 } 8814 8815 static void __ATTRS_o_ai vec_ste(vector bool char __a, int __b, 8816 unsigned char *__c) { 8817 __builtin_altivec_stvebx((vector char)__a, __b, __c); 8818 } 8819 8820 static void __ATTRS_o_ai vec_ste(vector short __a, int __b, short *__c) { 8821 __builtin_altivec_stvehx(__a, __b, __c); 8822 } 8823 8824 static void __ATTRS_o_ai vec_ste(vector unsigned short __a, int __b, 8825 unsigned short *__c) { 8826 __builtin_altivec_stvehx((vector short)__a, __b, __c); 8827 } 8828 8829 static void __ATTRS_o_ai vec_ste(vector bool short __a, int __b, short *__c) { 8830 __builtin_altivec_stvehx((vector short)__a, __b, __c); 8831 } 8832 8833 static void __ATTRS_o_ai vec_ste(vector bool short __a, int __b, 8834 unsigned short *__c) { 8835 __builtin_altivec_stvehx((vector short)__a, __b, __c); 8836 } 8837 8838 static void __ATTRS_o_ai vec_ste(vector pixel __a, int __b, short *__c) { 8839 __builtin_altivec_stvehx((vector short)__a, __b, __c); 8840 } 8841 8842 static void __ATTRS_o_ai vec_ste(vector pixel __a, int __b, 8843 unsigned short *__c) { 8844 __builtin_altivec_stvehx((vector short)__a, __b, __c); 8845 } 8846 8847 static void __ATTRS_o_ai vec_ste(vector int __a, int __b, int *__c) { 8848 __builtin_altivec_stvewx(__a, __b, __c); 8849 } 8850 8851 static void __ATTRS_o_ai vec_ste(vector unsigned int __a, int __b, 8852 unsigned int *__c) { 8853 __builtin_altivec_stvewx((vector int)__a, __b, __c); 8854 } 8855 8856 static void __ATTRS_o_ai vec_ste(vector bool int __a, int __b, int *__c) { 8857 __builtin_altivec_stvewx((vector int)__a, __b, __c); 8858 } 8859 8860 static void __ATTRS_o_ai vec_ste(vector bool int __a, int __b, 8861 unsigned int *__c) { 8862 __builtin_altivec_stvewx((vector int)__a, __b, __c); 8863 } 8864 8865 static void __ATTRS_o_ai vec_ste(vector float __a, int __b, float *__c) { 8866 __builtin_altivec_stvewx((vector int)__a, __b, __c); 8867 } 8868 8869 /* vec_stvebx */ 8870 8871 static void __ATTRS_o_ai vec_stvebx(vector signed char __a, int __b, 8872 signed char *__c) { 8873 __builtin_altivec_stvebx((vector char)__a, __b, __c); 8874 } 8875 8876 static void __ATTRS_o_ai vec_stvebx(vector unsigned char __a, int __b, 8877 unsigned char *__c) { 8878 __builtin_altivec_stvebx((vector char)__a, __b, __c); 8879 } 8880 8881 static void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b, 8882 signed char *__c) { 8883 __builtin_altivec_stvebx((vector char)__a, __b, __c); 8884 } 8885 8886 static void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b, 8887 unsigned char *__c) { 8888 __builtin_altivec_stvebx((vector char)__a, __b, __c); 8889 } 8890 8891 /* vec_stvehx */ 8892 8893 static void __ATTRS_o_ai vec_stvehx(vector short __a, int __b, short *__c) { 8894 __builtin_altivec_stvehx(__a, __b, __c); 8895 } 8896 8897 static void __ATTRS_o_ai vec_stvehx(vector unsigned short __a, int __b, 8898 unsigned short *__c) { 8899 __builtin_altivec_stvehx((vector short)__a, __b, __c); 8900 } 8901 8902 static void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b, 8903 short *__c) { 8904 __builtin_altivec_stvehx((vector short)__a, __b, __c); 8905 } 8906 8907 static void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b, 8908 unsigned short *__c) { 8909 __builtin_altivec_stvehx((vector short)__a, __b, __c); 8910 } 8911 8912 static void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b, short *__c) { 8913 __builtin_altivec_stvehx((vector short)__a, __b, __c); 8914 } 8915 8916 static void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b, 8917 unsigned short *__c) { 8918 __builtin_altivec_stvehx((vector short)__a, __b, __c); 8919 } 8920 8921 /* vec_stvewx */ 8922 8923 static void __ATTRS_o_ai vec_stvewx(vector int __a, int __b, int *__c) { 8924 __builtin_altivec_stvewx(__a, __b, __c); 8925 } 8926 8927 static void __ATTRS_o_ai vec_stvewx(vector unsigned int __a, int __b, 8928 unsigned int *__c) { 8929 __builtin_altivec_stvewx((vector int)__a, __b, __c); 8930 } 8931 8932 static void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b, int *__c) { 8933 __builtin_altivec_stvewx((vector int)__a, __b, __c); 8934 } 8935 8936 static void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b, 8937 unsigned int *__c) { 8938 __builtin_altivec_stvewx((vector int)__a, __b, __c); 8939 } 8940 8941 static void __ATTRS_o_ai vec_stvewx(vector float __a, int __b, float *__c) { 8942 __builtin_altivec_stvewx((vector int)__a, __b, __c); 8943 } 8944 8945 /* vec_stl */ 8946 8947 static void __ATTRS_o_ai vec_stl(vector signed char __a, int __b, 8948 vector signed char *__c) { 8949 __builtin_altivec_stvxl((vector int)__a, __b, __c); 8950 } 8951 8952 static void __ATTRS_o_ai vec_stl(vector signed char __a, int __b, 8953 signed char *__c) { 8954 __builtin_altivec_stvxl((vector int)__a, __b, __c); 8955 } 8956 8957 static void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b, 8958 vector unsigned char *__c) { 8959 __builtin_altivec_stvxl((vector int)__a, __b, __c); 8960 } 8961 8962 static void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b, 8963 unsigned char *__c) { 8964 __builtin_altivec_stvxl((vector int)__a, __b, __c); 8965 } 8966 8967 static void __ATTRS_o_ai vec_stl(vector bool char __a, int __b, 8968 signed char *__c) { 8969 __builtin_altivec_stvxl((vector int)__a, __b, __c); 8970 } 8971 8972 static void __ATTRS_o_ai vec_stl(vector bool char __a, int __b, 8973 unsigned char *__c) { 8974 __builtin_altivec_stvxl((vector int)__a, __b, __c); 8975 } 8976 8977 static void __ATTRS_o_ai vec_stl(vector bool char __a, int __b, 8978 vector bool char *__c) { 8979 __builtin_altivec_stvxl((vector int)__a, __b, __c); 8980 } 8981 8982 static void __ATTRS_o_ai vec_stl(vector short __a, int __b, vector short *__c) { 8983 __builtin_altivec_stvxl((vector int)__a, __b, __c); 8984 } 8985 8986 static void __ATTRS_o_ai vec_stl(vector short __a, int __b, short *__c) { 8987 __builtin_altivec_stvxl((vector int)__a, __b, __c); 8988 } 8989 8990 static void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b, 8991 vector unsigned short *__c) { 8992 __builtin_altivec_stvxl((vector int)__a, __b, __c); 8993 } 8994 8995 static void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b, 8996 unsigned short *__c) { 8997 __builtin_altivec_stvxl((vector int)__a, __b, __c); 8998 } 8999 9000 static void __ATTRS_o_ai vec_stl(vector bool short __a, int __b, short *__c) { 9001 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9002 } 9003 9004 static void __ATTRS_o_ai vec_stl(vector bool short __a, int __b, 9005 unsigned short *__c) { 9006 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9007 } 9008 9009 static void __ATTRS_o_ai vec_stl(vector bool short __a, int __b, 9010 vector bool short *__c) { 9011 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9012 } 9013 9014 static void __ATTRS_o_ai vec_stl(vector pixel __a, int __b, short *__c) { 9015 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9016 } 9017 9018 static void __ATTRS_o_ai vec_stl(vector pixel __a, int __b, 9019 unsigned short *__c) { 9020 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9021 } 9022 9023 static void __ATTRS_o_ai vec_stl(vector pixel __a, int __b, vector pixel *__c) { 9024 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9025 } 9026 9027 static void __ATTRS_o_ai vec_stl(vector int __a, int __b, vector int *__c) { 9028 __builtin_altivec_stvxl(__a, __b, __c); 9029 } 9030 9031 static void __ATTRS_o_ai vec_stl(vector int __a, int __b, int *__c) { 9032 __builtin_altivec_stvxl(__a, __b, __c); 9033 } 9034 9035 static void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b, 9036 vector unsigned int *__c) { 9037 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9038 } 9039 9040 static void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b, 9041 unsigned int *__c) { 9042 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9043 } 9044 9045 static void __ATTRS_o_ai vec_stl(vector bool int __a, int __b, int *__c) { 9046 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9047 } 9048 9049 static void __ATTRS_o_ai vec_stl(vector bool int __a, int __b, 9050 unsigned int *__c) { 9051 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9052 } 9053 9054 static void __ATTRS_o_ai vec_stl(vector bool int __a, int __b, 9055 vector bool int *__c) { 9056 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9057 } 9058 9059 static void __ATTRS_o_ai vec_stl(vector float __a, int __b, vector float *__c) { 9060 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9061 } 9062 9063 static void __ATTRS_o_ai vec_stl(vector float __a, int __b, float *__c) { 9064 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9065 } 9066 9067 /* vec_stvxl */ 9068 9069 static void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b, 9070 vector signed char *__c) { 9071 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9072 } 9073 9074 static void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b, 9075 signed char *__c) { 9076 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9077 } 9078 9079 static void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b, 9080 vector unsigned char *__c) { 9081 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9082 } 9083 9084 static void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b, 9085 unsigned char *__c) { 9086 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9087 } 9088 9089 static void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b, 9090 signed char *__c) { 9091 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9092 } 9093 9094 static void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b, 9095 unsigned char *__c) { 9096 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9097 } 9098 9099 static void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b, 9100 vector bool char *__c) { 9101 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9102 } 9103 9104 static void __ATTRS_o_ai vec_stvxl(vector short __a, int __b, 9105 vector short *__c) { 9106 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9107 } 9108 9109 static void __ATTRS_o_ai vec_stvxl(vector short __a, int __b, short *__c) { 9110 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9111 } 9112 9113 static void __ATTRS_o_ai vec_stvxl(vector unsigned short __a, int __b, 9114 vector unsigned short *__c) { 9115 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9116 } 9117 9118 static void __ATTRS_o_ai vec_stvxl(vector unsigned short __a, int __b, 9119 unsigned short *__c) { 9120 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9121 } 9122 9123 static void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b, short *__c) { 9124 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9125 } 9126 9127 static void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b, 9128 unsigned short *__c) { 9129 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9130 } 9131 9132 static void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b, 9133 vector bool short *__c) { 9134 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9135 } 9136 9137 static void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b, short *__c) { 9138 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9139 } 9140 9141 static void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b, 9142 unsigned short *__c) { 9143 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9144 } 9145 9146 static void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b, 9147 vector pixel *__c) { 9148 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9149 } 9150 9151 static void __ATTRS_o_ai vec_stvxl(vector int __a, int __b, vector int *__c) { 9152 __builtin_altivec_stvxl(__a, __b, __c); 9153 } 9154 9155 static void __ATTRS_o_ai vec_stvxl(vector int __a, int __b, int *__c) { 9156 __builtin_altivec_stvxl(__a, __b, __c); 9157 } 9158 9159 static void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b, 9160 vector unsigned int *__c) { 9161 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9162 } 9163 9164 static void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b, 9165 unsigned int *__c) { 9166 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9167 } 9168 9169 static void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b, int *__c) { 9170 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9171 } 9172 9173 static void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b, 9174 unsigned int *__c) { 9175 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9176 } 9177 9178 static void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b, 9179 vector bool int *__c) { 9180 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9181 } 9182 9183 static void __ATTRS_o_ai vec_stvxl(vector float __a, int __b, 9184 vector float *__c) { 9185 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9186 } 9187 9188 static void __ATTRS_o_ai vec_stvxl(vector float __a, int __b, float *__c) { 9189 __builtin_altivec_stvxl((vector int)__a, __b, __c); 9190 } 9191 9192 /* vec_sub */ 9193 9194 static vector signed char __ATTRS_o_ai vec_sub(vector signed char __a, 9195 vector signed char __b) { 9196 return __a - __b; 9197 } 9198 9199 static vector signed char __ATTRS_o_ai vec_sub(vector bool char __a, 9200 vector signed char __b) { 9201 return (vector signed char)__a - __b; 9202 } 9203 9204 static vector signed char __ATTRS_o_ai vec_sub(vector signed char __a, 9205 vector bool char __b) { 9206 return __a - (vector signed char)__b; 9207 } 9208 9209 static vector unsigned char __ATTRS_o_ai vec_sub(vector unsigned char __a, 9210 vector unsigned char __b) { 9211 return __a - __b; 9212 } 9213 9214 static vector unsigned char __ATTRS_o_ai vec_sub(vector bool char __a, 9215 vector unsigned char __b) { 9216 return (vector unsigned char)__a - __b; 9217 } 9218 9219 static vector unsigned char __ATTRS_o_ai vec_sub(vector unsigned char __a, 9220 vector bool char __b) { 9221 return __a - (vector unsigned char)__b; 9222 } 9223 9224 static vector short __ATTRS_o_ai vec_sub(vector short __a, vector short __b) { 9225 return __a - __b; 9226 } 9227 9228 static vector short __ATTRS_o_ai vec_sub(vector bool short __a, 9229 vector short __b) { 9230 return (vector short)__a - __b; 9231 } 9232 9233 static vector short __ATTRS_o_ai vec_sub(vector short __a, 9234 vector bool short __b) { 9235 return __a - (vector short)__b; 9236 } 9237 9238 static vector unsigned short __ATTRS_o_ai vec_sub(vector unsigned short __a, 9239 vector unsigned short __b) { 9240 return __a - __b; 9241 } 9242 9243 static vector unsigned short __ATTRS_o_ai vec_sub(vector bool short __a, 9244 vector unsigned short __b) { 9245 return (vector unsigned short)__a - __b; 9246 } 9247 9248 static vector unsigned short __ATTRS_o_ai vec_sub(vector unsigned short __a, 9249 vector bool short __b) { 9250 return __a - (vector unsigned short)__b; 9251 } 9252 9253 static vector int __ATTRS_o_ai vec_sub(vector int __a, vector int __b) { 9254 return __a - __b; 9255 } 9256 9257 static vector int __ATTRS_o_ai vec_sub(vector bool int __a, vector int __b) { 9258 return (vector int)__a - __b; 9259 } 9260 9261 static vector int __ATTRS_o_ai vec_sub(vector int __a, vector bool int __b) { 9262 return __a - (vector int)__b; 9263 } 9264 9265 static vector unsigned int __ATTRS_o_ai vec_sub(vector unsigned int __a, 9266 vector unsigned int __b) { 9267 return __a - __b; 9268 } 9269 9270 static vector unsigned int __ATTRS_o_ai vec_sub(vector bool int __a, 9271 vector unsigned int __b) { 9272 return (vector unsigned int)__a - __b; 9273 } 9274 9275 static vector unsigned int __ATTRS_o_ai vec_sub(vector unsigned int __a, 9276 vector bool int __b) { 9277 return __a - (vector unsigned int)__b; 9278 } 9279 9280 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__) 9281 static vector signed __int128 __ATTRS_o_ai vec_sub(vector signed __int128 __a, 9282 vector signed __int128 __b) { 9283 return __a - __b; 9284 } 9285 9286 static vector unsigned __int128 __ATTRS_o_ai 9287 vec_sub(vector unsigned __int128 __a, vector unsigned __int128 __b) { 9288 return __a - __b; 9289 } 9290 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__) 9291 9292 #ifdef __VSX__ 9293 static vector signed long long __ATTRS_o_ai 9294 vec_sub(vector signed long long __a, vector signed long long __b) { 9295 return __a - __b; 9296 } 9297 9298 static vector unsigned long long __ATTRS_o_ai 9299 vec_sub(vector unsigned long long __a, vector unsigned long long __b) { 9300 return __a - __b; 9301 } 9302 9303 static vector double __ATTRS_o_ai 9304 vec_sub(vector double __a, vector double __b) { 9305 return __a - __b; 9306 } 9307 #endif 9308 9309 static vector float __ATTRS_o_ai vec_sub(vector float __a, vector float __b) { 9310 return __a - __b; 9311 } 9312 9313 /* vec_vsububm */ 9314 9315 #define __builtin_altivec_vsububm vec_vsububm 9316 9317 static vector signed char __ATTRS_o_ai vec_vsububm(vector signed char __a, 9318 vector signed char __b) { 9319 return __a - __b; 9320 } 9321 9322 static vector signed char __ATTRS_o_ai vec_vsububm(vector bool char __a, 9323 vector signed char __b) { 9324 return (vector signed char)__a - __b; 9325 } 9326 9327 static vector signed char __ATTRS_o_ai vec_vsububm(vector signed char __a, 9328 vector bool char __b) { 9329 return __a - (vector signed char)__b; 9330 } 9331 9332 static vector unsigned char __ATTRS_o_ai vec_vsububm(vector unsigned char __a, 9333 vector unsigned char __b) { 9334 return __a - __b; 9335 } 9336 9337 static vector unsigned char __ATTRS_o_ai vec_vsububm(vector bool char __a, 9338 vector unsigned char __b) { 9339 return (vector unsigned char)__a - __b; 9340 } 9341 9342 static vector unsigned char __ATTRS_o_ai vec_vsububm(vector unsigned char __a, 9343 vector bool char __b) { 9344 return __a - (vector unsigned char)__b; 9345 } 9346 9347 /* vec_vsubuhm */ 9348 9349 #define __builtin_altivec_vsubuhm vec_vsubuhm 9350 9351 static vector short __ATTRS_o_ai vec_vsubuhm(vector short __a, 9352 vector short __b) { 9353 return __a - __b; 9354 } 9355 9356 static vector short __ATTRS_o_ai vec_vsubuhm(vector bool short __a, 9357 vector short __b) { 9358 return (vector short)__a - __b; 9359 } 9360 9361 static vector short __ATTRS_o_ai vec_vsubuhm(vector short __a, 9362 vector bool short __b) { 9363 return __a - (vector short)__b; 9364 } 9365 9366 static vector unsigned short __ATTRS_o_ai 9367 vec_vsubuhm(vector unsigned short __a, vector unsigned short __b) { 9368 return __a - __b; 9369 } 9370 9371 static vector unsigned short __ATTRS_o_ai 9372 vec_vsubuhm(vector bool short __a, vector unsigned short __b) { 9373 return (vector unsigned short)__a - __b; 9374 } 9375 9376 static vector unsigned short __ATTRS_o_ai vec_vsubuhm(vector unsigned short __a, 9377 vector bool short __b) { 9378 return __a - (vector unsigned short)__b; 9379 } 9380 9381 /* vec_vsubuwm */ 9382 9383 #define __builtin_altivec_vsubuwm vec_vsubuwm 9384 9385 static vector int __ATTRS_o_ai vec_vsubuwm(vector int __a, vector int __b) { 9386 return __a - __b; 9387 } 9388 9389 static vector int __ATTRS_o_ai vec_vsubuwm(vector bool int __a, 9390 vector int __b) { 9391 return (vector int)__a - __b; 9392 } 9393 9394 static vector int __ATTRS_o_ai vec_vsubuwm(vector int __a, 9395 vector bool int __b) { 9396 return __a - (vector int)__b; 9397 } 9398 9399 static vector unsigned int __ATTRS_o_ai vec_vsubuwm(vector unsigned int __a, 9400 vector unsigned int __b) { 9401 return __a - __b; 9402 } 9403 9404 static vector unsigned int __ATTRS_o_ai vec_vsubuwm(vector bool int __a, 9405 vector unsigned int __b) { 9406 return (vector unsigned int)__a - __b; 9407 } 9408 9409 static vector unsigned int __ATTRS_o_ai vec_vsubuwm(vector unsigned int __a, 9410 vector bool int __b) { 9411 return __a - (vector unsigned int)__b; 9412 } 9413 9414 /* vec_vsubfp */ 9415 9416 #define __builtin_altivec_vsubfp vec_vsubfp 9417 9418 static vector float __attribute__((__always_inline__)) 9419 vec_vsubfp(vector float __a, vector float __b) { 9420 return __a - __b; 9421 } 9422 9423 /* vec_subc */ 9424 9425 static vector unsigned int __ATTRS_o_ai vec_subc(vector unsigned int __a, 9426 vector unsigned int __b) { 9427 return __builtin_altivec_vsubcuw(__a, __b); 9428 } 9429 9430 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__) 9431 static vector unsigned __int128 __ATTRS_o_ai 9432 vec_subc(vector unsigned __int128 __a, vector unsigned __int128 __b) { 9433 return __builtin_altivec_vsubcuq(__a, __b); 9434 } 9435 9436 static vector signed __int128 __ATTRS_o_ai 9437 vec_subc(vector signed __int128 __a, vector signed __int128 __b) { 9438 return __builtin_altivec_vsubcuq(__a, __b); 9439 } 9440 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__) 9441 9442 /* vec_vsubcuw */ 9443 9444 static vector unsigned int __attribute__((__always_inline__)) 9445 vec_vsubcuw(vector unsigned int __a, vector unsigned int __b) { 9446 return __builtin_altivec_vsubcuw(__a, __b); 9447 } 9448 9449 /* vec_subs */ 9450 9451 static vector signed char __ATTRS_o_ai vec_subs(vector signed char __a, 9452 vector signed char __b) { 9453 return __builtin_altivec_vsubsbs(__a, __b); 9454 } 9455 9456 static vector signed char __ATTRS_o_ai vec_subs(vector bool char __a, 9457 vector signed char __b) { 9458 return __builtin_altivec_vsubsbs((vector signed char)__a, __b); 9459 } 9460 9461 static vector signed char __ATTRS_o_ai vec_subs(vector signed char __a, 9462 vector bool char __b) { 9463 return __builtin_altivec_vsubsbs(__a, (vector signed char)__b); 9464 } 9465 9466 static vector unsigned char __ATTRS_o_ai vec_subs(vector unsigned char __a, 9467 vector unsigned char __b) { 9468 return __builtin_altivec_vsububs(__a, __b); 9469 } 9470 9471 static vector unsigned char __ATTRS_o_ai vec_subs(vector bool char __a, 9472 vector unsigned char __b) { 9473 return __builtin_altivec_vsububs((vector unsigned char)__a, __b); 9474 } 9475 9476 static vector unsigned char __ATTRS_o_ai vec_subs(vector unsigned char __a, 9477 vector bool char __b) { 9478 return __builtin_altivec_vsububs(__a, (vector unsigned char)__b); 9479 } 9480 9481 static vector short __ATTRS_o_ai vec_subs(vector short __a, vector short __b) { 9482 return __builtin_altivec_vsubshs(__a, __b); 9483 } 9484 9485 static vector short __ATTRS_o_ai vec_subs(vector bool short __a, 9486 vector short __b) { 9487 return __builtin_altivec_vsubshs((vector short)__a, __b); 9488 } 9489 9490 static vector short __ATTRS_o_ai vec_subs(vector short __a, 9491 vector bool short __b) { 9492 return __builtin_altivec_vsubshs(__a, (vector short)__b); 9493 } 9494 9495 static vector unsigned short __ATTRS_o_ai vec_subs(vector unsigned short __a, 9496 vector unsigned short __b) { 9497 return __builtin_altivec_vsubuhs(__a, __b); 9498 } 9499 9500 static vector unsigned short __ATTRS_o_ai vec_subs(vector bool short __a, 9501 vector unsigned short __b) { 9502 return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b); 9503 } 9504 9505 static vector unsigned short __ATTRS_o_ai vec_subs(vector unsigned short __a, 9506 vector bool short __b) { 9507 return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b); 9508 } 9509 9510 static vector int __ATTRS_o_ai vec_subs(vector int __a, vector int __b) { 9511 return __builtin_altivec_vsubsws(__a, __b); 9512 } 9513 9514 static vector int __ATTRS_o_ai vec_subs(vector bool int __a, vector int __b) { 9515 return __builtin_altivec_vsubsws((vector int)__a, __b); 9516 } 9517 9518 static vector int __ATTRS_o_ai vec_subs(vector int __a, vector bool int __b) { 9519 return __builtin_altivec_vsubsws(__a, (vector int)__b); 9520 } 9521 9522 static vector unsigned int __ATTRS_o_ai vec_subs(vector unsigned int __a, 9523 vector unsigned int __b) { 9524 return __builtin_altivec_vsubuws(__a, __b); 9525 } 9526 9527 static vector unsigned int __ATTRS_o_ai vec_subs(vector bool int __a, 9528 vector unsigned int __b) { 9529 return __builtin_altivec_vsubuws((vector unsigned int)__a, __b); 9530 } 9531 9532 static vector unsigned int __ATTRS_o_ai vec_subs(vector unsigned int __a, 9533 vector bool int __b) { 9534 return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b); 9535 } 9536 9537 /* vec_vsubsbs */ 9538 9539 static vector signed char __ATTRS_o_ai vec_vsubsbs(vector signed char __a, 9540 vector signed char __b) { 9541 return __builtin_altivec_vsubsbs(__a, __b); 9542 } 9543 9544 static vector signed char __ATTRS_o_ai vec_vsubsbs(vector bool char __a, 9545 vector signed char __b) { 9546 return __builtin_altivec_vsubsbs((vector signed char)__a, __b); 9547 } 9548 9549 static vector signed char __ATTRS_o_ai vec_vsubsbs(vector signed char __a, 9550 vector bool char __b) { 9551 return __builtin_altivec_vsubsbs(__a, (vector signed char)__b); 9552 } 9553 9554 /* vec_vsububs */ 9555 9556 static vector unsigned char __ATTRS_o_ai vec_vsububs(vector unsigned char __a, 9557 vector unsigned char __b) { 9558 return __builtin_altivec_vsububs(__a, __b); 9559 } 9560 9561 static vector unsigned char __ATTRS_o_ai vec_vsububs(vector bool char __a, 9562 vector unsigned char __b) { 9563 return __builtin_altivec_vsububs((vector unsigned char)__a, __b); 9564 } 9565 9566 static vector unsigned char __ATTRS_o_ai vec_vsububs(vector unsigned char __a, 9567 vector bool char __b) { 9568 return __builtin_altivec_vsububs(__a, (vector unsigned char)__b); 9569 } 9570 9571 /* vec_vsubshs */ 9572 9573 static vector short __ATTRS_o_ai vec_vsubshs(vector short __a, 9574 vector short __b) { 9575 return __builtin_altivec_vsubshs(__a, __b); 9576 } 9577 9578 static vector short __ATTRS_o_ai vec_vsubshs(vector bool short __a, 9579 vector short __b) { 9580 return __builtin_altivec_vsubshs((vector short)__a, __b); 9581 } 9582 9583 static vector short __ATTRS_o_ai vec_vsubshs(vector short __a, 9584 vector bool short __b) { 9585 return __builtin_altivec_vsubshs(__a, (vector short)__b); 9586 } 9587 9588 /* vec_vsubuhs */ 9589 9590 static vector unsigned short __ATTRS_o_ai 9591 vec_vsubuhs(vector unsigned short __a, vector unsigned short __b) { 9592 return __builtin_altivec_vsubuhs(__a, __b); 9593 } 9594 9595 static vector unsigned short __ATTRS_o_ai 9596 vec_vsubuhs(vector bool short __a, vector unsigned short __b) { 9597 return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b); 9598 } 9599 9600 static vector unsigned short __ATTRS_o_ai vec_vsubuhs(vector unsigned short __a, 9601 vector bool short __b) { 9602 return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b); 9603 } 9604 9605 /* vec_vsubsws */ 9606 9607 static vector int __ATTRS_o_ai vec_vsubsws(vector int __a, vector int __b) { 9608 return __builtin_altivec_vsubsws(__a, __b); 9609 } 9610 9611 static vector int __ATTRS_o_ai vec_vsubsws(vector bool int __a, 9612 vector int __b) { 9613 return __builtin_altivec_vsubsws((vector int)__a, __b); 9614 } 9615 9616 static vector int __ATTRS_o_ai vec_vsubsws(vector int __a, 9617 vector bool int __b) { 9618 return __builtin_altivec_vsubsws(__a, (vector int)__b); 9619 } 9620 9621 /* vec_vsubuws */ 9622 9623 static vector unsigned int __ATTRS_o_ai vec_vsubuws(vector unsigned int __a, 9624 vector unsigned int __b) { 9625 return __builtin_altivec_vsubuws(__a, __b); 9626 } 9627 9628 static vector unsigned int __ATTRS_o_ai vec_vsubuws(vector bool int __a, 9629 vector unsigned int __b) { 9630 return __builtin_altivec_vsubuws((vector unsigned int)__a, __b); 9631 } 9632 9633 static vector unsigned int __ATTRS_o_ai vec_vsubuws(vector unsigned int __a, 9634 vector bool int __b) { 9635 return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b); 9636 } 9637 9638 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__) 9639 /* vec_vsubuqm */ 9640 9641 static vector signed __int128 __ATTRS_o_ai 9642 vec_vsubuqm(vector signed __int128 __a, vector signed __int128 __b) { 9643 return __a - __b; 9644 } 9645 9646 static vector unsigned __int128 __ATTRS_o_ai 9647 vec_vsubuqm(vector unsigned __int128 __a, vector unsigned __int128 __b) { 9648 return __a - __b; 9649 } 9650 9651 /* vec_vsubeuqm */ 9652 9653 static vector signed __int128 __ATTRS_o_ai 9654 vec_vsubeuqm(vector signed __int128 __a, vector signed __int128 __b, 9655 vector signed __int128 __c) { 9656 return __builtin_altivec_vsubeuqm(__a, __b, __c); 9657 } 9658 9659 static vector unsigned __int128 __ATTRS_o_ai 9660 vec_vsubeuqm(vector unsigned __int128 __a, vector unsigned __int128 __b, 9661 vector unsigned __int128 __c) { 9662 return __builtin_altivec_vsubeuqm(__a, __b, __c); 9663 } 9664 9665 /* vec_vsubcuq */ 9666 9667 static vector signed __int128 __ATTRS_o_ai 9668 vec_vsubcuq(vector signed __int128 __a, vector signed __int128 __b) { 9669 return __builtin_altivec_vsubcuq(__a, __b); 9670 } 9671 9672 static vector unsigned __int128 __ATTRS_o_ai 9673 vec_vsubcuq(vector unsigned __int128 __a, vector unsigned __int128 __b) { 9674 return __builtin_altivec_vsubcuq(__a, __b); 9675 } 9676 9677 /* vec_vsubecuq */ 9678 9679 static vector signed __int128 __ATTRS_o_ai 9680 vec_vsubecuq(vector signed __int128 __a, vector signed __int128 __b, 9681 vector signed __int128 __c) { 9682 return __builtin_altivec_vsubecuq(__a, __b, __c); 9683 } 9684 9685 static vector unsigned __int128 __ATTRS_o_ai 9686 vec_vsubecuq(vector unsigned __int128 __a, vector unsigned __int128 __b, 9687 vector unsigned __int128 __c) { 9688 return __builtin_altivec_vsubecuq(__a, __b, __c); 9689 } 9690 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__) 9691 9692 /* vec_sum4s */ 9693 9694 static vector int __ATTRS_o_ai vec_sum4s(vector signed char __a, 9695 vector int __b) { 9696 return __builtin_altivec_vsum4sbs(__a, __b); 9697 } 9698 9699 static vector unsigned int __ATTRS_o_ai vec_sum4s(vector unsigned char __a, 9700 vector unsigned int __b) { 9701 return __builtin_altivec_vsum4ubs(__a, __b); 9702 } 9703 9704 static vector int __ATTRS_o_ai vec_sum4s(vector signed short __a, 9705 vector int __b) { 9706 return __builtin_altivec_vsum4shs(__a, __b); 9707 } 9708 9709 /* vec_vsum4sbs */ 9710 9711 static vector int __attribute__((__always_inline__)) 9712 vec_vsum4sbs(vector signed char __a, vector int __b) { 9713 return __builtin_altivec_vsum4sbs(__a, __b); 9714 } 9715 9716 /* vec_vsum4ubs */ 9717 9718 static vector unsigned int __attribute__((__always_inline__)) 9719 vec_vsum4ubs(vector unsigned char __a, vector unsigned int __b) { 9720 return __builtin_altivec_vsum4ubs(__a, __b); 9721 } 9722 9723 /* vec_vsum4shs */ 9724 9725 static vector int __attribute__((__always_inline__)) 9726 vec_vsum4shs(vector signed short __a, vector int __b) { 9727 return __builtin_altivec_vsum4shs(__a, __b); 9728 } 9729 9730 /* vec_sum2s */ 9731 9732 /* The vsum2sws instruction has a big-endian bias, so that the second 9733 input vector and the result always reference big-endian elements 9734 1 and 3 (little-endian element 0 and 2). For ease of porting the 9735 programmer wants elements 1 and 3 in both cases, so for little 9736 endian we must perform some permutes. */ 9737 9738 static vector signed int __attribute__((__always_inline__)) 9739 vec_sum2s(vector int __a, vector int __b) { 9740 #ifdef __LITTLE_ENDIAN__ 9741 vector int __c = (vector signed int)vec_perm( 9742 __b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15, 9743 8, 9, 10, 11)); 9744 __c = __builtin_altivec_vsum2sws(__a, __c); 9745 return (vector signed int)vec_perm( 9746 __c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15, 9747 8, 9, 10, 11)); 9748 #else 9749 return __builtin_altivec_vsum2sws(__a, __b); 9750 #endif 9751 } 9752 9753 /* vec_vsum2sws */ 9754 9755 static vector signed int __attribute__((__always_inline__)) 9756 vec_vsum2sws(vector int __a, vector int __b) { 9757 #ifdef __LITTLE_ENDIAN__ 9758 vector int __c = (vector signed int)vec_perm( 9759 __b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15, 9760 8, 9, 10, 11)); 9761 __c = __builtin_altivec_vsum2sws(__a, __c); 9762 return (vector signed int)vec_perm( 9763 __c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15, 9764 8, 9, 10, 11)); 9765 #else 9766 return __builtin_altivec_vsum2sws(__a, __b); 9767 #endif 9768 } 9769 9770 /* vec_sums */ 9771 9772 /* The vsumsws instruction has a big-endian bias, so that the second 9773 input vector and the result always reference big-endian element 3 9774 (little-endian element 0). For ease of porting the programmer 9775 wants element 3 in both cases, so for little endian we must perform 9776 some permutes. */ 9777 9778 static vector signed int __attribute__((__always_inline__)) 9779 vec_sums(vector signed int __a, vector signed int __b) { 9780 #ifdef __LITTLE_ENDIAN__ 9781 __b = (vector signed int)vec_splat(__b, 3); 9782 __b = __builtin_altivec_vsumsws(__a, __b); 9783 return (vector signed int)(0, 0, 0, __b[0]); 9784 #else 9785 return __builtin_altivec_vsumsws(__a, __b); 9786 #endif 9787 } 9788 9789 /* vec_vsumsws */ 9790 9791 static vector signed int __attribute__((__always_inline__)) 9792 vec_vsumsws(vector signed int __a, vector signed int __b) { 9793 #ifdef __LITTLE_ENDIAN__ 9794 __b = (vector signed int)vec_splat(__b, 3); 9795 __b = __builtin_altivec_vsumsws(__a, __b); 9796 return (vector signed int)(0, 0, 0, __b[0]); 9797 #else 9798 return __builtin_altivec_vsumsws(__a, __b); 9799 #endif 9800 } 9801 9802 /* vec_trunc */ 9803 9804 static vector float __ATTRS_o_ai 9805 vec_trunc(vector float __a) { 9806 #ifdef __VSX__ 9807 return __builtin_vsx_xvrspiz(__a); 9808 #else 9809 return __builtin_altivec_vrfiz(__a); 9810 #endif 9811 } 9812 9813 #ifdef __VSX__ 9814 static vector double __ATTRS_o_ai vec_trunc(vector double __a) { 9815 return __builtin_vsx_xvrdpiz(__a); 9816 } 9817 #endif 9818 9819 /* vec_vrfiz */ 9820 9821 static vector float __attribute__((__always_inline__)) 9822 vec_vrfiz(vector float __a) { 9823 return __builtin_altivec_vrfiz(__a); 9824 } 9825 9826 /* vec_unpackh */ 9827 9828 /* The vector unpack instructions all have a big-endian bias, so for 9829 little endian we must reverse the meanings of "high" and "low." */ 9830 9831 static vector short __ATTRS_o_ai vec_unpackh(vector signed char __a) { 9832 #ifdef __LITTLE_ENDIAN__ 9833 return __builtin_altivec_vupklsb((vector char)__a); 9834 #else 9835 return __builtin_altivec_vupkhsb((vector char)__a); 9836 #endif 9837 } 9838 9839 static vector bool short __ATTRS_o_ai vec_unpackh(vector bool char __a) { 9840 #ifdef __LITTLE_ENDIAN__ 9841 return (vector bool short)__builtin_altivec_vupklsb((vector char)__a); 9842 #else 9843 return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a); 9844 #endif 9845 } 9846 9847 static vector int __ATTRS_o_ai vec_unpackh(vector short __a) { 9848 #ifdef __LITTLE_ENDIAN__ 9849 return __builtin_altivec_vupklsh(__a); 9850 #else 9851 return __builtin_altivec_vupkhsh(__a); 9852 #endif 9853 } 9854 9855 static vector bool int __ATTRS_o_ai vec_unpackh(vector bool short __a) { 9856 #ifdef __LITTLE_ENDIAN__ 9857 return (vector bool int)__builtin_altivec_vupklsh((vector short)__a); 9858 #else 9859 return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a); 9860 #endif 9861 } 9862 9863 static vector unsigned int __ATTRS_o_ai vec_unpackh(vector pixel __a) { 9864 #ifdef __LITTLE_ENDIAN__ 9865 return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a); 9866 #else 9867 return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a); 9868 #endif 9869 } 9870 9871 #ifdef __POWER8_VECTOR__ 9872 static vector long long __ATTRS_o_ai vec_unpackh(vector int __a) { 9873 #ifdef __LITTLE_ENDIAN__ 9874 return __builtin_altivec_vupklsw(__a); 9875 #else 9876 return __builtin_altivec_vupkhsw(__a); 9877 #endif 9878 } 9879 9880 static vector bool long long __ATTRS_o_ai vec_unpackh(vector bool int __a) { 9881 #ifdef __LITTLE_ENDIAN__ 9882 return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a); 9883 #else 9884 return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a); 9885 #endif 9886 } 9887 #endif 9888 9889 /* vec_vupkhsb */ 9890 9891 static vector short __ATTRS_o_ai vec_vupkhsb(vector signed char __a) { 9892 #ifdef __LITTLE_ENDIAN__ 9893 return __builtin_altivec_vupklsb((vector char)__a); 9894 #else 9895 return __builtin_altivec_vupkhsb((vector char)__a); 9896 #endif 9897 } 9898 9899 static vector bool short __ATTRS_o_ai vec_vupkhsb(vector bool char __a) { 9900 #ifdef __LITTLE_ENDIAN__ 9901 return (vector bool short)__builtin_altivec_vupklsb((vector char)__a); 9902 #else 9903 return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a); 9904 #endif 9905 } 9906 9907 /* vec_vupkhsh */ 9908 9909 static vector int __ATTRS_o_ai vec_vupkhsh(vector short __a) { 9910 #ifdef __LITTLE_ENDIAN__ 9911 return __builtin_altivec_vupklsh(__a); 9912 #else 9913 return __builtin_altivec_vupkhsh(__a); 9914 #endif 9915 } 9916 9917 static vector bool int __ATTRS_o_ai vec_vupkhsh(vector bool short __a) { 9918 #ifdef __LITTLE_ENDIAN__ 9919 return (vector bool int)__builtin_altivec_vupklsh((vector short)__a); 9920 #else 9921 return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a); 9922 #endif 9923 } 9924 9925 static vector unsigned int __ATTRS_o_ai vec_vupkhsh(vector pixel __a) { 9926 #ifdef __LITTLE_ENDIAN__ 9927 return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a); 9928 #else 9929 return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a); 9930 #endif 9931 } 9932 9933 /* vec_vupkhsw */ 9934 9935 #ifdef __POWER8_VECTOR__ 9936 static vector long long __ATTRS_o_ai vec_vupkhsw(vector int __a) { 9937 #ifdef __LITTLE_ENDIAN__ 9938 return __builtin_altivec_vupklsw(__a); 9939 #else 9940 return __builtin_altivec_vupkhsw(__a); 9941 #endif 9942 } 9943 9944 static vector bool long long __ATTRS_o_ai vec_vupkhsw(vector bool int __a) { 9945 #ifdef __LITTLE_ENDIAN__ 9946 return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a); 9947 #else 9948 return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a); 9949 #endif 9950 } 9951 #endif 9952 9953 /* vec_unpackl */ 9954 9955 static vector short __ATTRS_o_ai vec_unpackl(vector signed char __a) { 9956 #ifdef __LITTLE_ENDIAN__ 9957 return __builtin_altivec_vupkhsb((vector char)__a); 9958 #else 9959 return __builtin_altivec_vupklsb((vector char)__a); 9960 #endif 9961 } 9962 9963 static vector bool short __ATTRS_o_ai vec_unpackl(vector bool char __a) { 9964 #ifdef __LITTLE_ENDIAN__ 9965 return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a); 9966 #else 9967 return (vector bool short)__builtin_altivec_vupklsb((vector char)__a); 9968 #endif 9969 } 9970 9971 static vector int __ATTRS_o_ai vec_unpackl(vector short __a) { 9972 #ifdef __LITTLE_ENDIAN__ 9973 return __builtin_altivec_vupkhsh(__a); 9974 #else 9975 return __builtin_altivec_vupklsh(__a); 9976 #endif 9977 } 9978 9979 static vector bool int __ATTRS_o_ai vec_unpackl(vector bool short __a) { 9980 #ifdef __LITTLE_ENDIAN__ 9981 return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a); 9982 #else 9983 return (vector bool int)__builtin_altivec_vupklsh((vector short)__a); 9984 #endif 9985 } 9986 9987 static vector unsigned int __ATTRS_o_ai vec_unpackl(vector pixel __a) { 9988 #ifdef __LITTLE_ENDIAN__ 9989 return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a); 9990 #else 9991 return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a); 9992 #endif 9993 } 9994 9995 #ifdef __POWER8_VECTOR__ 9996 static vector long long __ATTRS_o_ai vec_unpackl(vector int __a) { 9997 #ifdef __LITTLE_ENDIAN__ 9998 return __builtin_altivec_vupkhsw(__a); 9999 #else 10000 return __builtin_altivec_vupklsw(__a); 10001 #endif 10002 } 10003 10004 static vector bool long long __ATTRS_o_ai vec_unpackl(vector bool int __a) { 10005 #ifdef __LITTLE_ENDIAN__ 10006 return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a); 10007 #else 10008 return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a); 10009 #endif 10010 } 10011 #endif 10012 10013 /* vec_vupklsb */ 10014 10015 static vector short __ATTRS_o_ai vec_vupklsb(vector signed char __a) { 10016 #ifdef __LITTLE_ENDIAN__ 10017 return __builtin_altivec_vupkhsb((vector char)__a); 10018 #else 10019 return __builtin_altivec_vupklsb((vector char)__a); 10020 #endif 10021 } 10022 10023 static vector bool short __ATTRS_o_ai vec_vupklsb(vector bool char __a) { 10024 #ifdef __LITTLE_ENDIAN__ 10025 return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a); 10026 #else 10027 return (vector bool short)__builtin_altivec_vupklsb((vector char)__a); 10028 #endif 10029 } 10030 10031 /* vec_vupklsh */ 10032 10033 static vector int __ATTRS_o_ai vec_vupklsh(vector short __a) { 10034 #ifdef __LITTLE_ENDIAN__ 10035 return __builtin_altivec_vupkhsh(__a); 10036 #else 10037 return __builtin_altivec_vupklsh(__a); 10038 #endif 10039 } 10040 10041 static vector bool int __ATTRS_o_ai vec_vupklsh(vector bool short __a) { 10042 #ifdef __LITTLE_ENDIAN__ 10043 return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a); 10044 #else 10045 return (vector bool int)__builtin_altivec_vupklsh((vector short)__a); 10046 #endif 10047 } 10048 10049 static vector unsigned int __ATTRS_o_ai vec_vupklsh(vector pixel __a) { 10050 #ifdef __LITTLE_ENDIAN__ 10051 return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a); 10052 #else 10053 return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a); 10054 #endif 10055 } 10056 10057 /* vec_vupklsw */ 10058 10059 #ifdef __POWER8_VECTOR__ 10060 static vector long long __ATTRS_o_ai vec_vupklsw(vector int __a) { 10061 #ifdef __LITTLE_ENDIAN__ 10062 return __builtin_altivec_vupkhsw(__a); 10063 #else 10064 return __builtin_altivec_vupklsw(__a); 10065 #endif 10066 } 10067 10068 static vector bool long long __ATTRS_o_ai vec_vupklsw(vector bool int __a) { 10069 #ifdef __LITTLE_ENDIAN__ 10070 return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a); 10071 #else 10072 return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a); 10073 #endif 10074 } 10075 #endif 10076 10077 /* vec_vsx_ld */ 10078 10079 #ifdef __VSX__ 10080 10081 static vector signed int __ATTRS_o_ai vec_vsx_ld(int __a, 10082 const vector signed int *__b) { 10083 return (vector signed int)__builtin_vsx_lxvw4x(__a, __b); 10084 } 10085 10086 static vector unsigned int __ATTRS_o_ai 10087 vec_vsx_ld(int __a, const vector unsigned int *__b) { 10088 return (vector unsigned int)__builtin_vsx_lxvw4x(__a, __b); 10089 } 10090 10091 static vector float __ATTRS_o_ai vec_vsx_ld(int __a, const vector float *__b) { 10092 return (vector float)__builtin_vsx_lxvw4x(__a, __b); 10093 } 10094 10095 static vector signed long long __ATTRS_o_ai 10096 vec_vsx_ld(int __a, const vector signed long long *__b) { 10097 return (vector signed long long)__builtin_vsx_lxvd2x(__a, __b); 10098 } 10099 10100 static vector unsigned long long __ATTRS_o_ai 10101 vec_vsx_ld(int __a, const vector unsigned long long *__b) { 10102 return (vector unsigned long long)__builtin_vsx_lxvd2x(__a, __b); 10103 } 10104 10105 static vector double __ATTRS_o_ai vec_vsx_ld(int __a, 10106 const vector double *__b) { 10107 return (vector double)__builtin_vsx_lxvd2x(__a, __b); 10108 } 10109 10110 #endif 10111 10112 /* vec_vsx_st */ 10113 10114 #ifdef __VSX__ 10115 10116 static void __ATTRS_o_ai vec_vsx_st(vector signed int __a, int __b, 10117 vector signed int *__c) { 10118 __builtin_vsx_stxvw4x((vector int)__a, __b, __c); 10119 } 10120 10121 static void __ATTRS_o_ai vec_vsx_st(vector unsigned int __a, int __b, 10122 vector unsigned int *__c) { 10123 __builtin_vsx_stxvw4x((vector int)__a, __b, __c); 10124 } 10125 10126 static void __ATTRS_o_ai vec_vsx_st(vector float __a, int __b, 10127 vector float *__c) { 10128 __builtin_vsx_stxvw4x((vector int)__a, __b, __c); 10129 } 10130 10131 static void __ATTRS_o_ai vec_vsx_st(vector signed long long __a, int __b, 10132 vector signed long long *__c) { 10133 __builtin_vsx_stxvd2x((vector double)__a, __b, __c); 10134 } 10135 10136 static void __ATTRS_o_ai vec_vsx_st(vector unsigned long long __a, int __b, 10137 vector unsigned long long *__c) { 10138 __builtin_vsx_stxvd2x((vector double)__a, __b, __c); 10139 } 10140 10141 static void __ATTRS_o_ai vec_vsx_st(vector double __a, int __b, 10142 vector double *__c) { 10143 __builtin_vsx_stxvd2x((vector double)__a, __b, __c); 10144 } 10145 10146 #endif 10147 10148 /* vec_xor */ 10149 10150 #define __builtin_altivec_vxor vec_xor 10151 10152 static vector signed char __ATTRS_o_ai vec_xor(vector signed char __a, 10153 vector signed char __b) { 10154 return __a ^ __b; 10155 } 10156 10157 static vector signed char __ATTRS_o_ai vec_xor(vector bool char __a, 10158 vector signed char __b) { 10159 return (vector signed char)__a ^ __b; 10160 } 10161 10162 static vector signed char __ATTRS_o_ai vec_xor(vector signed char __a, 10163 vector bool char __b) { 10164 return __a ^ (vector signed char)__b; 10165 } 10166 10167 static vector unsigned char __ATTRS_o_ai vec_xor(vector unsigned char __a, 10168 vector unsigned char __b) { 10169 return __a ^ __b; 10170 } 10171 10172 static vector unsigned char __ATTRS_o_ai vec_xor(vector bool char __a, 10173 vector unsigned char __b) { 10174 return (vector unsigned char)__a ^ __b; 10175 } 10176 10177 static vector unsigned char __ATTRS_o_ai vec_xor(vector unsigned char __a, 10178 vector bool char __b) { 10179 return __a ^ (vector unsigned char)__b; 10180 } 10181 10182 static vector bool char __ATTRS_o_ai vec_xor(vector bool char __a, 10183 vector bool char __b) { 10184 return __a ^ __b; 10185 } 10186 10187 static vector short __ATTRS_o_ai vec_xor(vector short __a, vector short __b) { 10188 return __a ^ __b; 10189 } 10190 10191 static vector short __ATTRS_o_ai vec_xor(vector bool short __a, 10192 vector short __b) { 10193 return (vector short)__a ^ __b; 10194 } 10195 10196 static vector short __ATTRS_o_ai vec_xor(vector short __a, 10197 vector bool short __b) { 10198 return __a ^ (vector short)__b; 10199 } 10200 10201 static vector unsigned short __ATTRS_o_ai vec_xor(vector unsigned short __a, 10202 vector unsigned short __b) { 10203 return __a ^ __b; 10204 } 10205 10206 static vector unsigned short __ATTRS_o_ai vec_xor(vector bool short __a, 10207 vector unsigned short __b) { 10208 return (vector unsigned short)__a ^ __b; 10209 } 10210 10211 static vector unsigned short __ATTRS_o_ai vec_xor(vector unsigned short __a, 10212 vector bool short __b) { 10213 return __a ^ (vector unsigned short)__b; 10214 } 10215 10216 static vector bool short __ATTRS_o_ai vec_xor(vector bool short __a, 10217 vector bool short __b) { 10218 return __a ^ __b; 10219 } 10220 10221 static vector int __ATTRS_o_ai vec_xor(vector int __a, vector int __b) { 10222 return __a ^ __b; 10223 } 10224 10225 static vector int __ATTRS_o_ai vec_xor(vector bool int __a, vector int __b) { 10226 return (vector int)__a ^ __b; 10227 } 10228 10229 static vector int __ATTRS_o_ai vec_xor(vector int __a, vector bool int __b) { 10230 return __a ^ (vector int)__b; 10231 } 10232 10233 static vector unsigned int __ATTRS_o_ai vec_xor(vector unsigned int __a, 10234 vector unsigned int __b) { 10235 return __a ^ __b; 10236 } 10237 10238 static vector unsigned int __ATTRS_o_ai vec_xor(vector bool int __a, 10239 vector unsigned int __b) { 10240 return (vector unsigned int)__a ^ __b; 10241 } 10242 10243 static vector unsigned int __ATTRS_o_ai vec_xor(vector unsigned int __a, 10244 vector bool int __b) { 10245 return __a ^ (vector unsigned int)__b; 10246 } 10247 10248 static vector bool int __ATTRS_o_ai vec_xor(vector bool int __a, 10249 vector bool int __b) { 10250 return __a ^ __b; 10251 } 10252 10253 static vector float __ATTRS_o_ai vec_xor(vector float __a, vector float __b) { 10254 vector unsigned int __res = 10255 (vector unsigned int)__a ^ (vector unsigned int)__b; 10256 return (vector float)__res; 10257 } 10258 10259 static vector float __ATTRS_o_ai vec_xor(vector bool int __a, 10260 vector float __b) { 10261 vector unsigned int __res = 10262 (vector unsigned int)__a ^ (vector unsigned int)__b; 10263 return (vector float)__res; 10264 } 10265 10266 static vector float __ATTRS_o_ai vec_xor(vector float __a, 10267 vector bool int __b) { 10268 vector unsigned int __res = 10269 (vector unsigned int)__a ^ (vector unsigned int)__b; 10270 return (vector float)__res; 10271 } 10272 10273 #ifdef __VSX__ 10274 static vector signed long long __ATTRS_o_ai 10275 vec_xor(vector signed long long __a, vector signed long long __b) { 10276 return __a ^ __b; 10277 } 10278 10279 static vector signed long long __ATTRS_o_ai 10280 vec_xor(vector bool long long __a, vector signed long long __b) { 10281 return (vector signed long long)__a ^ __b; 10282 } 10283 10284 static vector signed long long __ATTRS_o_ai vec_xor(vector signed long long __a, 10285 vector bool long long __b) { 10286 return __a ^ (vector signed long long)__b; 10287 } 10288 10289 static vector unsigned long long __ATTRS_o_ai 10290 vec_xor(vector unsigned long long __a, vector unsigned long long __b) { 10291 return __a ^ __b; 10292 } 10293 10294 static vector unsigned long long __ATTRS_o_ai 10295 vec_xor(vector bool long long __a, vector unsigned long long __b) { 10296 return (vector unsigned long long)__a ^ __b; 10297 } 10298 10299 static vector unsigned long long __ATTRS_o_ai 10300 vec_xor(vector unsigned long long __a, vector bool long long __b) { 10301 return __a ^ (vector unsigned long long)__b; 10302 } 10303 10304 static vector bool long long __ATTRS_o_ai vec_xor(vector bool long long __a, 10305 vector bool long long __b) { 10306 return __a ^ __b; 10307 } 10308 10309 static vector double __ATTRS_o_ai 10310 vec_xor(vector double __a, vector double __b) { 10311 return (vector double)((vector unsigned long long)__a ^ 10312 (vector unsigned long long)__b); 10313 } 10314 10315 static vector double __ATTRS_o_ai 10316 vec_xor(vector double __a, vector bool long long __b) { 10317 return (vector double)((vector unsigned long long)__a ^ 10318 (vector unsigned long long) __b); 10319 } 10320 10321 static vector double __ATTRS_o_ai 10322 vec_xor(vector bool long long __a, vector double __b) { 10323 return (vector double)((vector unsigned long long)__a ^ 10324 (vector unsigned long long)__b); 10325 } 10326 #endif 10327 10328 /* vec_vxor */ 10329 10330 static vector signed char __ATTRS_o_ai vec_vxor(vector signed char __a, 10331 vector signed char __b) { 10332 return __a ^ __b; 10333 } 10334 10335 static vector signed char __ATTRS_o_ai vec_vxor(vector bool char __a, 10336 vector signed char __b) { 10337 return (vector signed char)__a ^ __b; 10338 } 10339 10340 static vector signed char __ATTRS_o_ai vec_vxor(vector signed char __a, 10341 vector bool char __b) { 10342 return __a ^ (vector signed char)__b; 10343 } 10344 10345 static vector unsigned char __ATTRS_o_ai vec_vxor(vector unsigned char __a, 10346 vector unsigned char __b) { 10347 return __a ^ __b; 10348 } 10349 10350 static vector unsigned char __ATTRS_o_ai vec_vxor(vector bool char __a, 10351 vector unsigned char __b) { 10352 return (vector unsigned char)__a ^ __b; 10353 } 10354 10355 static vector unsigned char __ATTRS_o_ai vec_vxor(vector unsigned char __a, 10356 vector bool char __b) { 10357 return __a ^ (vector unsigned char)__b; 10358 } 10359 10360 static vector bool char __ATTRS_o_ai vec_vxor(vector bool char __a, 10361 vector bool char __b) { 10362 return __a ^ __b; 10363 } 10364 10365 static vector short __ATTRS_o_ai vec_vxor(vector short __a, vector short __b) { 10366 return __a ^ __b; 10367 } 10368 10369 static vector short __ATTRS_o_ai vec_vxor(vector bool short __a, 10370 vector short __b) { 10371 return (vector short)__a ^ __b; 10372 } 10373 10374 static vector short __ATTRS_o_ai vec_vxor(vector short __a, 10375 vector bool short __b) { 10376 return __a ^ (vector short)__b; 10377 } 10378 10379 static vector unsigned short __ATTRS_o_ai vec_vxor(vector unsigned short __a, 10380 vector unsigned short __b) { 10381 return __a ^ __b; 10382 } 10383 10384 static vector unsigned short __ATTRS_o_ai vec_vxor(vector bool short __a, 10385 vector unsigned short __b) { 10386 return (vector unsigned short)__a ^ __b; 10387 } 10388 10389 static vector unsigned short __ATTRS_o_ai vec_vxor(vector unsigned short __a, 10390 vector bool short __b) { 10391 return __a ^ (vector unsigned short)__b; 10392 } 10393 10394 static vector bool short __ATTRS_o_ai vec_vxor(vector bool short __a, 10395 vector bool short __b) { 10396 return __a ^ __b; 10397 } 10398 10399 static vector int __ATTRS_o_ai vec_vxor(vector int __a, vector int __b) { 10400 return __a ^ __b; 10401 } 10402 10403 static vector int __ATTRS_o_ai vec_vxor(vector bool int __a, vector int __b) { 10404 return (vector int)__a ^ __b; 10405 } 10406 10407 static vector int __ATTRS_o_ai vec_vxor(vector int __a, vector bool int __b) { 10408 return __a ^ (vector int)__b; 10409 } 10410 10411 static vector unsigned int __ATTRS_o_ai vec_vxor(vector unsigned int __a, 10412 vector unsigned int __b) { 10413 return __a ^ __b; 10414 } 10415 10416 static vector unsigned int __ATTRS_o_ai vec_vxor(vector bool int __a, 10417 vector unsigned int __b) { 10418 return (vector unsigned int)__a ^ __b; 10419 } 10420 10421 static vector unsigned int __ATTRS_o_ai vec_vxor(vector unsigned int __a, 10422 vector bool int __b) { 10423 return __a ^ (vector unsigned int)__b; 10424 } 10425 10426 static vector bool int __ATTRS_o_ai vec_vxor(vector bool int __a, 10427 vector bool int __b) { 10428 return __a ^ __b; 10429 } 10430 10431 static vector float __ATTRS_o_ai vec_vxor(vector float __a, vector float __b) { 10432 vector unsigned int __res = 10433 (vector unsigned int)__a ^ (vector unsigned int)__b; 10434 return (vector float)__res; 10435 } 10436 10437 static vector float __ATTRS_o_ai vec_vxor(vector bool int __a, 10438 vector float __b) { 10439 vector unsigned int __res = 10440 (vector unsigned int)__a ^ (vector unsigned int)__b; 10441 return (vector float)__res; 10442 } 10443 10444 static vector float __ATTRS_o_ai vec_vxor(vector float __a, 10445 vector bool int __b) { 10446 vector unsigned int __res = 10447 (vector unsigned int)__a ^ (vector unsigned int)__b; 10448 return (vector float)__res; 10449 } 10450 10451 #ifdef __VSX__ 10452 static vector signed long long __ATTRS_o_ai 10453 vec_vxor(vector signed long long __a, vector signed long long __b) { 10454 return __a ^ __b; 10455 } 10456 10457 static vector signed long long __ATTRS_o_ai 10458 vec_vxor(vector bool long long __a, vector signed long long __b) { 10459 return (vector signed long long)__a ^ __b; 10460 } 10461 10462 static vector signed long long __ATTRS_o_ai 10463 vec_vxor(vector signed long long __a, vector bool long long __b) { 10464 return __a ^ (vector signed long long)__b; 10465 } 10466 10467 static vector unsigned long long __ATTRS_o_ai 10468 vec_vxor(vector unsigned long long __a, vector unsigned long long __b) { 10469 return __a ^ __b; 10470 } 10471 10472 static vector unsigned long long __ATTRS_o_ai 10473 vec_vxor(vector bool long long __a, vector unsigned long long __b) { 10474 return (vector unsigned long long)__a ^ __b; 10475 } 10476 10477 static vector unsigned long long __ATTRS_o_ai 10478 vec_vxor(vector unsigned long long __a, vector bool long long __b) { 10479 return __a ^ (vector unsigned long long)__b; 10480 } 10481 10482 static vector bool long long __ATTRS_o_ai vec_vxor(vector bool long long __a, 10483 vector bool long long __b) { 10484 return __a ^ __b; 10485 } 10486 #endif 10487 10488 /* ------------------------ extensions for CBEA ----------------------------- */ 10489 10490 /* vec_extract */ 10491 10492 static signed char __ATTRS_o_ai vec_extract(vector signed char __a, int __b) { 10493 return __a[__b]; 10494 } 10495 10496 static unsigned char __ATTRS_o_ai vec_extract(vector unsigned char __a, 10497 int __b) { 10498 return __a[__b]; 10499 } 10500 10501 static unsigned char __ATTRS_o_ai vec_extract(vector bool char __a, 10502 int __b) { 10503 return __a[__b]; 10504 } 10505 10506 static signed short __ATTRS_o_ai vec_extract(vector signed short __a, int __b) { 10507 return __a[__b]; 10508 } 10509 10510 static unsigned short __ATTRS_o_ai vec_extract(vector unsigned short __a, 10511 int __b) { 10512 return __a[__b]; 10513 } 10514 10515 static unsigned short __ATTRS_o_ai vec_extract(vector bool short __a, 10516 int __b) { 10517 return __a[__b]; 10518 } 10519 10520 static signed int __ATTRS_o_ai vec_extract(vector signed int __a, int __b) { 10521 return __a[__b]; 10522 } 10523 10524 static unsigned int __ATTRS_o_ai vec_extract(vector unsigned int __a, int __b) { 10525 return __a[__b]; 10526 } 10527 10528 static unsigned int __ATTRS_o_ai vec_extract(vector bool int __a, int __b) { 10529 return __a[__b]; 10530 } 10531 10532 #ifdef __VSX__ 10533 static signed long long __ATTRS_o_ai vec_extract(vector signed long long __a, 10534 int __b) { 10535 return __a[__b]; 10536 } 10537 10538 static unsigned long long __ATTRS_o_ai 10539 vec_extract(vector unsigned long long __a, int __b) { 10540 return __a[__b]; 10541 } 10542 10543 static unsigned long long __ATTRS_o_ai vec_extract(vector bool long long __a, 10544 int __b) { 10545 return __a[__b]; 10546 } 10547 10548 static double __ATTRS_o_ai vec_extract(vector double __a, int __b) { 10549 return __a[__b]; 10550 } 10551 #endif 10552 10553 static float __ATTRS_o_ai vec_extract(vector float __a, int __b) { 10554 return __a[__b]; 10555 } 10556 10557 /* vec_insert */ 10558 10559 static vector signed char __ATTRS_o_ai vec_insert(signed char __a, 10560 vector signed char __b, 10561 int __c) { 10562 __b[__c] = __a; 10563 return __b; 10564 } 10565 10566 static vector unsigned char __ATTRS_o_ai vec_insert(unsigned char __a, 10567 vector unsigned char __b, 10568 int __c) { 10569 __b[__c] = __a; 10570 return __b; 10571 } 10572 10573 static vector bool char __ATTRS_o_ai vec_insert(unsigned char __a, 10574 vector bool char __b, 10575 int __c) { 10576 __b[__c] = __a; 10577 return __b; 10578 } 10579 10580 static vector signed short __ATTRS_o_ai vec_insert(signed short __a, 10581 vector signed short __b, 10582 int __c) { 10583 __b[__c] = __a; 10584 return __b; 10585 } 10586 10587 static vector unsigned short __ATTRS_o_ai vec_insert(unsigned short __a, 10588 vector unsigned short __b, 10589 int __c) { 10590 __b[__c] = __a; 10591 return __b; 10592 } 10593 10594 static vector bool short __ATTRS_o_ai vec_insert(unsigned short __a, 10595 vector bool short __b, 10596 int __c) { 10597 __b[__c] = __a; 10598 return __b; 10599 } 10600 10601 static vector signed int __ATTRS_o_ai vec_insert(signed int __a, 10602 vector signed int __b, 10603 int __c) { 10604 __b[__c] = __a; 10605 return __b; 10606 } 10607 10608 static vector unsigned int __ATTRS_o_ai vec_insert(unsigned int __a, 10609 vector unsigned int __b, 10610 int __c) { 10611 __b[__c] = __a; 10612 return __b; 10613 } 10614 10615 static vector bool int __ATTRS_o_ai vec_insert(unsigned int __a, 10616 vector bool int __b, 10617 int __c) { 10618 __b[__c] = __a; 10619 return __b; 10620 } 10621 10622 #ifdef __VSX__ 10623 static vector signed long long __ATTRS_o_ai 10624 vec_insert(signed long long __a, vector signed long long __b, int __c) { 10625 __b[__c] = __a; 10626 return __b; 10627 } 10628 10629 static vector unsigned long long __ATTRS_o_ai 10630 vec_insert(unsigned long long __a, vector unsigned long long __b, int __c) { 10631 __b[__c] = __a; 10632 return __b; 10633 } 10634 10635 static vector bool long long __ATTRS_o_ai 10636 vec_insert(unsigned long long __a, vector bool long long __b, int __c) { 10637 __b[__c] = __a; 10638 return __b; 10639 } 10640 static vector double __ATTRS_o_ai vec_insert(double __a, vector double __b, 10641 int __c) { 10642 __b[__c] = __a; 10643 return __b; 10644 } 10645 #endif 10646 10647 static vector float __ATTRS_o_ai vec_insert(float __a, vector float __b, 10648 int __c) { 10649 __b[__c] = __a; 10650 return __b; 10651 } 10652 10653 /* vec_lvlx */ 10654 10655 static vector signed char __ATTRS_o_ai vec_lvlx(int __a, 10656 const signed char *__b) { 10657 return vec_perm(vec_ld(__a, __b), (vector signed char)(0), 10658 vec_lvsl(__a, __b)); 10659 } 10660 10661 static vector signed char __ATTRS_o_ai vec_lvlx(int __a, 10662 const vector signed char *__b) { 10663 return vec_perm(vec_ld(__a, __b), (vector signed char)(0), 10664 vec_lvsl(__a, (unsigned char *)__b)); 10665 } 10666 10667 static vector unsigned char __ATTRS_o_ai vec_lvlx(int __a, 10668 const unsigned char *__b) { 10669 return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0), 10670 vec_lvsl(__a, __b)); 10671 } 10672 10673 static vector unsigned char __ATTRS_o_ai 10674 vec_lvlx(int __a, const vector unsigned char *__b) { 10675 return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0), 10676 vec_lvsl(__a, (unsigned char *)__b)); 10677 } 10678 10679 static vector bool char __ATTRS_o_ai vec_lvlx(int __a, 10680 const vector bool char *__b) { 10681 return vec_perm(vec_ld(__a, __b), (vector bool char)(0), 10682 vec_lvsl(__a, (unsigned char *)__b)); 10683 } 10684 10685 static vector short __ATTRS_o_ai vec_lvlx(int __a, const short *__b) { 10686 return vec_perm(vec_ld(__a, __b), (vector short)(0), vec_lvsl(__a, __b)); 10687 } 10688 10689 static vector short __ATTRS_o_ai vec_lvlx(int __a, const vector short *__b) { 10690 return vec_perm(vec_ld(__a, __b), (vector short)(0), 10691 vec_lvsl(__a, (unsigned char *)__b)); 10692 } 10693 10694 static vector unsigned short __ATTRS_o_ai vec_lvlx(int __a, 10695 const unsigned short *__b) { 10696 return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0), 10697 vec_lvsl(__a, __b)); 10698 } 10699 10700 static vector unsigned short __ATTRS_o_ai 10701 vec_lvlx(int __a, const vector unsigned short *__b) { 10702 return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0), 10703 vec_lvsl(__a, (unsigned char *)__b)); 10704 } 10705 10706 static vector bool short __ATTRS_o_ai vec_lvlx(int __a, 10707 const vector bool short *__b) { 10708 return vec_perm(vec_ld(__a, __b), (vector bool short)(0), 10709 vec_lvsl(__a, (unsigned char *)__b)); 10710 } 10711 10712 static vector pixel __ATTRS_o_ai vec_lvlx(int __a, const vector pixel *__b) { 10713 return vec_perm(vec_ld(__a, __b), (vector pixel)(0), 10714 vec_lvsl(__a, (unsigned char *)__b)); 10715 } 10716 10717 static vector int __ATTRS_o_ai vec_lvlx(int __a, const int *__b) { 10718 return vec_perm(vec_ld(__a, __b), (vector int)(0), vec_lvsl(__a, __b)); 10719 } 10720 10721 static vector int __ATTRS_o_ai vec_lvlx(int __a, const vector int *__b) { 10722 return vec_perm(vec_ld(__a, __b), (vector int)(0), 10723 vec_lvsl(__a, (unsigned char *)__b)); 10724 } 10725 10726 static vector unsigned int __ATTRS_o_ai vec_lvlx(int __a, 10727 const unsigned int *__b) { 10728 return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0), 10729 vec_lvsl(__a, __b)); 10730 } 10731 10732 static vector unsigned int __ATTRS_o_ai 10733 vec_lvlx(int __a, const vector unsigned int *__b) { 10734 return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0), 10735 vec_lvsl(__a, (unsigned char *)__b)); 10736 } 10737 10738 static vector bool int __ATTRS_o_ai vec_lvlx(int __a, 10739 const vector bool int *__b) { 10740 return vec_perm(vec_ld(__a, __b), (vector bool int)(0), 10741 vec_lvsl(__a, (unsigned char *)__b)); 10742 } 10743 10744 static vector float __ATTRS_o_ai vec_lvlx(int __a, const float *__b) { 10745 return vec_perm(vec_ld(__a, __b), (vector float)(0), vec_lvsl(__a, __b)); 10746 } 10747 10748 static vector float __ATTRS_o_ai vec_lvlx(int __a, const vector float *__b) { 10749 return vec_perm(vec_ld(__a, __b), (vector float)(0), 10750 vec_lvsl(__a, (unsigned char *)__b)); 10751 } 10752 10753 /* vec_lvlxl */ 10754 10755 static vector signed char __ATTRS_o_ai vec_lvlxl(int __a, 10756 const signed char *__b) { 10757 return vec_perm(vec_ldl(__a, __b), (vector signed char)(0), 10758 vec_lvsl(__a, __b)); 10759 } 10760 10761 static vector signed char __ATTRS_o_ai 10762 vec_lvlxl(int __a, const vector signed char *__b) { 10763 return vec_perm(vec_ldl(__a, __b), (vector signed char)(0), 10764 vec_lvsl(__a, (unsigned char *)__b)); 10765 } 10766 10767 static vector unsigned char __ATTRS_o_ai vec_lvlxl(int __a, 10768 const unsigned char *__b) { 10769 return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0), 10770 vec_lvsl(__a, __b)); 10771 } 10772 10773 static vector unsigned char __ATTRS_o_ai 10774 vec_lvlxl(int __a, const vector unsigned char *__b) { 10775 return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0), 10776 vec_lvsl(__a, (unsigned char *)__b)); 10777 } 10778 10779 static vector bool char __ATTRS_o_ai vec_lvlxl(int __a, 10780 const vector bool char *__b) { 10781 return vec_perm(vec_ldl(__a, __b), (vector bool char)(0), 10782 vec_lvsl(__a, (unsigned char *)__b)); 10783 } 10784 10785 static vector short __ATTRS_o_ai vec_lvlxl(int __a, const short *__b) { 10786 return vec_perm(vec_ldl(__a, __b), (vector short)(0), vec_lvsl(__a, __b)); 10787 } 10788 10789 static vector short __ATTRS_o_ai vec_lvlxl(int __a, const vector short *__b) { 10790 return vec_perm(vec_ldl(__a, __b), (vector short)(0), 10791 vec_lvsl(__a, (unsigned char *)__b)); 10792 } 10793 10794 static vector unsigned short __ATTRS_o_ai vec_lvlxl(int __a, 10795 const unsigned short *__b) { 10796 return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0), 10797 vec_lvsl(__a, __b)); 10798 } 10799 10800 static vector unsigned short __ATTRS_o_ai 10801 vec_lvlxl(int __a, const vector unsigned short *__b) { 10802 return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0), 10803 vec_lvsl(__a, (unsigned char *)__b)); 10804 } 10805 10806 static vector bool short __ATTRS_o_ai vec_lvlxl(int __a, 10807 const vector bool short *__b) { 10808 return vec_perm(vec_ldl(__a, __b), (vector bool short)(0), 10809 vec_lvsl(__a, (unsigned char *)__b)); 10810 } 10811 10812 static vector pixel __ATTRS_o_ai vec_lvlxl(int __a, const vector pixel *__b) { 10813 return vec_perm(vec_ldl(__a, __b), (vector pixel)(0), 10814 vec_lvsl(__a, (unsigned char *)__b)); 10815 } 10816 10817 static vector int __ATTRS_o_ai vec_lvlxl(int __a, const int *__b) { 10818 return vec_perm(vec_ldl(__a, __b), (vector int)(0), vec_lvsl(__a, __b)); 10819 } 10820 10821 static vector int __ATTRS_o_ai vec_lvlxl(int __a, const vector int *__b) { 10822 return vec_perm(vec_ldl(__a, __b), (vector int)(0), 10823 vec_lvsl(__a, (unsigned char *)__b)); 10824 } 10825 10826 static vector unsigned int __ATTRS_o_ai vec_lvlxl(int __a, 10827 const unsigned int *__b) { 10828 return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0), 10829 vec_lvsl(__a, __b)); 10830 } 10831 10832 static vector unsigned int __ATTRS_o_ai 10833 vec_lvlxl(int __a, const vector unsigned int *__b) { 10834 return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0), 10835 vec_lvsl(__a, (unsigned char *)__b)); 10836 } 10837 10838 static vector bool int __ATTRS_o_ai vec_lvlxl(int __a, 10839 const vector bool int *__b) { 10840 return vec_perm(vec_ldl(__a, __b), (vector bool int)(0), 10841 vec_lvsl(__a, (unsigned char *)__b)); 10842 } 10843 10844 static vector float __ATTRS_o_ai vec_lvlxl(int __a, const float *__b) { 10845 return vec_perm(vec_ldl(__a, __b), (vector float)(0), vec_lvsl(__a, __b)); 10846 } 10847 10848 static vector float __ATTRS_o_ai vec_lvlxl(int __a, vector float *__b) { 10849 return vec_perm(vec_ldl(__a, __b), (vector float)(0), 10850 vec_lvsl(__a, (unsigned char *)__b)); 10851 } 10852 10853 /* vec_lvrx */ 10854 10855 static vector signed char __ATTRS_o_ai vec_lvrx(int __a, 10856 const signed char *__b) { 10857 return vec_perm((vector signed char)(0), vec_ld(__a, __b), 10858 vec_lvsl(__a, __b)); 10859 } 10860 10861 static vector signed char __ATTRS_o_ai vec_lvrx(int __a, 10862 const vector signed char *__b) { 10863 return vec_perm((vector signed char)(0), vec_ld(__a, __b), 10864 vec_lvsl(__a, (unsigned char *)__b)); 10865 } 10866 10867 static vector unsigned char __ATTRS_o_ai vec_lvrx(int __a, 10868 const unsigned char *__b) { 10869 return vec_perm((vector unsigned char)(0), vec_ld(__a, __b), 10870 vec_lvsl(__a, __b)); 10871 } 10872 10873 static vector unsigned char __ATTRS_o_ai 10874 vec_lvrx(int __a, const vector unsigned char *__b) { 10875 return vec_perm((vector unsigned char)(0), vec_ld(__a, __b), 10876 vec_lvsl(__a, (unsigned char *)__b)); 10877 } 10878 10879 static vector bool char __ATTRS_o_ai vec_lvrx(int __a, 10880 const vector bool char *__b) { 10881 return vec_perm((vector bool char)(0), vec_ld(__a, __b), 10882 vec_lvsl(__a, (unsigned char *)__b)); 10883 } 10884 10885 static vector short __ATTRS_o_ai vec_lvrx(int __a, const short *__b) { 10886 return vec_perm((vector short)(0), vec_ld(__a, __b), vec_lvsl(__a, __b)); 10887 } 10888 10889 static vector short __ATTRS_o_ai vec_lvrx(int __a, const vector short *__b) { 10890 return vec_perm((vector short)(0), vec_ld(__a, __b), 10891 vec_lvsl(__a, (unsigned char *)__b)); 10892 } 10893 10894 static vector unsigned short __ATTRS_o_ai vec_lvrx(int __a, 10895 const unsigned short *__b) { 10896 return vec_perm((vector unsigned short)(0), vec_ld(__a, __b), 10897 vec_lvsl(__a, __b)); 10898 } 10899 10900 static vector unsigned short __ATTRS_o_ai 10901 vec_lvrx(int __a, const vector unsigned short *__b) { 10902 return vec_perm((vector unsigned short)(0), vec_ld(__a, __b), 10903 vec_lvsl(__a, (unsigned char *)__b)); 10904 } 10905 10906 static vector bool short __ATTRS_o_ai vec_lvrx(int __a, 10907 const vector bool short *__b) { 10908 return vec_perm((vector bool short)(0), vec_ld(__a, __b), 10909 vec_lvsl(__a, (unsigned char *)__b)); 10910 } 10911 10912 static vector pixel __ATTRS_o_ai vec_lvrx(int __a, const vector pixel *__b) { 10913 return vec_perm((vector pixel)(0), vec_ld(__a, __b), 10914 vec_lvsl(__a, (unsigned char *)__b)); 10915 } 10916 10917 static vector int __ATTRS_o_ai vec_lvrx(int __a, const int *__b) { 10918 return vec_perm((vector int)(0), vec_ld(__a, __b), vec_lvsl(__a, __b)); 10919 } 10920 10921 static vector int __ATTRS_o_ai vec_lvrx(int __a, const vector int *__b) { 10922 return vec_perm((vector int)(0), vec_ld(__a, __b), 10923 vec_lvsl(__a, (unsigned char *)__b)); 10924 } 10925 10926 static vector unsigned int __ATTRS_o_ai vec_lvrx(int __a, 10927 const unsigned int *__b) { 10928 return vec_perm((vector unsigned int)(0), vec_ld(__a, __b), 10929 vec_lvsl(__a, __b)); 10930 } 10931 10932 static vector unsigned int __ATTRS_o_ai 10933 vec_lvrx(int __a, const vector unsigned int *__b) { 10934 return vec_perm((vector unsigned int)(0), vec_ld(__a, __b), 10935 vec_lvsl(__a, (unsigned char *)__b)); 10936 } 10937 10938 static vector bool int __ATTRS_o_ai vec_lvrx(int __a, 10939 const vector bool int *__b) { 10940 return vec_perm((vector bool int)(0), vec_ld(__a, __b), 10941 vec_lvsl(__a, (unsigned char *)__b)); 10942 } 10943 10944 static vector float __ATTRS_o_ai vec_lvrx(int __a, const float *__b) { 10945 return vec_perm((vector float)(0), vec_ld(__a, __b), vec_lvsl(__a, __b)); 10946 } 10947 10948 static vector float __ATTRS_o_ai vec_lvrx(int __a, const vector float *__b) { 10949 return vec_perm((vector float)(0), vec_ld(__a, __b), 10950 vec_lvsl(__a, (unsigned char *)__b)); 10951 } 10952 10953 /* vec_lvrxl */ 10954 10955 static vector signed char __ATTRS_o_ai vec_lvrxl(int __a, 10956 const signed char *__b) { 10957 return vec_perm((vector signed char)(0), vec_ldl(__a, __b), 10958 vec_lvsl(__a, __b)); 10959 } 10960 10961 static vector signed char __ATTRS_o_ai 10962 vec_lvrxl(int __a, const vector signed char *__b) { 10963 return vec_perm((vector signed char)(0), vec_ldl(__a, __b), 10964 vec_lvsl(__a, (unsigned char *)__b)); 10965 } 10966 10967 static vector unsigned char __ATTRS_o_ai vec_lvrxl(int __a, 10968 const unsigned char *__b) { 10969 return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b), 10970 vec_lvsl(__a, __b)); 10971 } 10972 10973 static vector unsigned char __ATTRS_o_ai 10974 vec_lvrxl(int __a, const vector unsigned char *__b) { 10975 return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b), 10976 vec_lvsl(__a, (unsigned char *)__b)); 10977 } 10978 10979 static vector bool char __ATTRS_o_ai vec_lvrxl(int __a, 10980 const vector bool char *__b) { 10981 return vec_perm((vector bool char)(0), vec_ldl(__a, __b), 10982 vec_lvsl(__a, (unsigned char *)__b)); 10983 } 10984 10985 static vector short __ATTRS_o_ai vec_lvrxl(int __a, const short *__b) { 10986 return vec_perm((vector short)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b)); 10987 } 10988 10989 static vector short __ATTRS_o_ai vec_lvrxl(int __a, const vector short *__b) { 10990 return vec_perm((vector short)(0), vec_ldl(__a, __b), 10991 vec_lvsl(__a, (unsigned char *)__b)); 10992 } 10993 10994 static vector unsigned short __ATTRS_o_ai vec_lvrxl(int __a, 10995 const unsigned short *__b) { 10996 return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b), 10997 vec_lvsl(__a, __b)); 10998 } 10999 11000 static vector unsigned short __ATTRS_o_ai 11001 vec_lvrxl(int __a, const vector unsigned short *__b) { 11002 return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b), 11003 vec_lvsl(__a, (unsigned char *)__b)); 11004 } 11005 11006 static vector bool short __ATTRS_o_ai vec_lvrxl(int __a, 11007 const vector bool short *__b) { 11008 return vec_perm((vector bool short)(0), vec_ldl(__a, __b), 11009 vec_lvsl(__a, (unsigned char *)__b)); 11010 } 11011 11012 static vector pixel __ATTRS_o_ai vec_lvrxl(int __a, const vector pixel *__b) { 11013 return vec_perm((vector pixel)(0), vec_ldl(__a, __b), 11014 vec_lvsl(__a, (unsigned char *)__b)); 11015 } 11016 11017 static vector int __ATTRS_o_ai vec_lvrxl(int __a, const int *__b) { 11018 return vec_perm((vector int)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b)); 11019 } 11020 11021 static vector int __ATTRS_o_ai vec_lvrxl(int __a, const vector int *__b) { 11022 return vec_perm((vector int)(0), vec_ldl(__a, __b), 11023 vec_lvsl(__a, (unsigned char *)__b)); 11024 } 11025 11026 static vector unsigned int __ATTRS_o_ai vec_lvrxl(int __a, 11027 const unsigned int *__b) { 11028 return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b), 11029 vec_lvsl(__a, __b)); 11030 } 11031 11032 static vector unsigned int __ATTRS_o_ai 11033 vec_lvrxl(int __a, const vector unsigned int *__b) { 11034 return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b), 11035 vec_lvsl(__a, (unsigned char *)__b)); 11036 } 11037 11038 static vector bool int __ATTRS_o_ai vec_lvrxl(int __a, 11039 const vector bool int *__b) { 11040 return vec_perm((vector bool int)(0), vec_ldl(__a, __b), 11041 vec_lvsl(__a, (unsigned char *)__b)); 11042 } 11043 11044 static vector float __ATTRS_o_ai vec_lvrxl(int __a, const float *__b) { 11045 return vec_perm((vector float)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b)); 11046 } 11047 11048 static vector float __ATTRS_o_ai vec_lvrxl(int __a, const vector float *__b) { 11049 return vec_perm((vector float)(0), vec_ldl(__a, __b), 11050 vec_lvsl(__a, (unsigned char *)__b)); 11051 } 11052 11053 /* vec_stvlx */ 11054 11055 static void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b, 11056 signed char *__c) { 11057 return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b, 11058 __c); 11059 } 11060 11061 static void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b, 11062 vector signed char *__c) { 11063 return vec_st( 11064 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11065 __b, __c); 11066 } 11067 11068 static void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b, 11069 unsigned char *__c) { 11070 return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b, 11071 __c); 11072 } 11073 11074 static void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b, 11075 vector unsigned char *__c) { 11076 return vec_st( 11077 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11078 __b, __c); 11079 } 11080 11081 static void __ATTRS_o_ai vec_stvlx(vector bool char __a, int __b, 11082 vector bool char *__c) { 11083 return vec_st( 11084 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11085 __b, __c); 11086 } 11087 11088 static void __ATTRS_o_ai vec_stvlx(vector short __a, int __b, short *__c) { 11089 return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b, 11090 __c); 11091 } 11092 11093 static void __ATTRS_o_ai vec_stvlx(vector short __a, int __b, 11094 vector short *__c) { 11095 return vec_st( 11096 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11097 __b, __c); 11098 } 11099 11100 static void __ATTRS_o_ai vec_stvlx(vector unsigned short __a, int __b, 11101 unsigned short *__c) { 11102 return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b, 11103 __c); 11104 } 11105 11106 static void __ATTRS_o_ai vec_stvlx(vector unsigned short __a, int __b, 11107 vector unsigned short *__c) { 11108 return vec_st( 11109 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11110 __b, __c); 11111 } 11112 11113 static void __ATTRS_o_ai vec_stvlx(vector bool short __a, int __b, 11114 vector bool short *__c) { 11115 return vec_st( 11116 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11117 __b, __c); 11118 } 11119 11120 static void __ATTRS_o_ai vec_stvlx(vector pixel __a, int __b, 11121 vector pixel *__c) { 11122 return vec_st( 11123 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11124 __b, __c); 11125 } 11126 11127 static void __ATTRS_o_ai vec_stvlx(vector int __a, int __b, int *__c) { 11128 return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b, 11129 __c); 11130 } 11131 11132 static void __ATTRS_o_ai vec_stvlx(vector int __a, int __b, vector int *__c) { 11133 return vec_st( 11134 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11135 __b, __c); 11136 } 11137 11138 static void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b, 11139 unsigned int *__c) { 11140 return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b, 11141 __c); 11142 } 11143 11144 static void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b, 11145 vector unsigned int *__c) { 11146 return vec_st( 11147 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11148 __b, __c); 11149 } 11150 11151 static void __ATTRS_o_ai vec_stvlx(vector bool int __a, int __b, 11152 vector bool int *__c) { 11153 return vec_st( 11154 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11155 __b, __c); 11156 } 11157 11158 static void __ATTRS_o_ai vec_stvlx(vector float __a, int __b, 11159 vector float *__c) { 11160 return vec_st( 11161 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11162 __b, __c); 11163 } 11164 11165 /* vec_stvlxl */ 11166 11167 static void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b, 11168 signed char *__c) { 11169 return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b, 11170 __c); 11171 } 11172 11173 static void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b, 11174 vector signed char *__c) { 11175 return vec_stl( 11176 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11177 __b, __c); 11178 } 11179 11180 static void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a, int __b, 11181 unsigned char *__c) { 11182 return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b, 11183 __c); 11184 } 11185 11186 static void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a, int __b, 11187 vector unsigned char *__c) { 11188 return vec_stl( 11189 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11190 __b, __c); 11191 } 11192 11193 static void __ATTRS_o_ai vec_stvlxl(vector bool char __a, int __b, 11194 vector bool char *__c) { 11195 return vec_stl( 11196 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11197 __b, __c); 11198 } 11199 11200 static void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b, short *__c) { 11201 return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b, 11202 __c); 11203 } 11204 11205 static void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b, 11206 vector short *__c) { 11207 return vec_stl( 11208 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11209 __b, __c); 11210 } 11211 11212 static void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a, int __b, 11213 unsigned short *__c) { 11214 return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b, 11215 __c); 11216 } 11217 11218 static void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a, int __b, 11219 vector unsigned short *__c) { 11220 return vec_stl( 11221 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11222 __b, __c); 11223 } 11224 11225 static void __ATTRS_o_ai vec_stvlxl(vector bool short __a, int __b, 11226 vector bool short *__c) { 11227 return vec_stl( 11228 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11229 __b, __c); 11230 } 11231 11232 static void __ATTRS_o_ai vec_stvlxl(vector pixel __a, int __b, 11233 vector pixel *__c) { 11234 return vec_stl( 11235 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11236 __b, __c); 11237 } 11238 11239 static void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b, int *__c) { 11240 return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b, 11241 __c); 11242 } 11243 11244 static void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b, vector int *__c) { 11245 return vec_stl( 11246 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11247 __b, __c); 11248 } 11249 11250 static void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b, 11251 unsigned int *__c) { 11252 return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b, 11253 __c); 11254 } 11255 11256 static void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b, 11257 vector unsigned int *__c) { 11258 return vec_stl( 11259 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11260 __b, __c); 11261 } 11262 11263 static void __ATTRS_o_ai vec_stvlxl(vector bool int __a, int __b, 11264 vector bool int *__c) { 11265 return vec_stl( 11266 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11267 __b, __c); 11268 } 11269 11270 static void __ATTRS_o_ai vec_stvlxl(vector float __a, int __b, 11271 vector float *__c) { 11272 return vec_stl( 11273 vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)), 11274 __b, __c); 11275 } 11276 11277 /* vec_stvrx */ 11278 11279 static void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b, 11280 signed char *__c) { 11281 return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b, 11282 __c); 11283 } 11284 11285 static void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b, 11286 vector signed char *__c) { 11287 return vec_st( 11288 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11289 __b, __c); 11290 } 11291 11292 static void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b, 11293 unsigned char *__c) { 11294 return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b, 11295 __c); 11296 } 11297 11298 static void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b, 11299 vector unsigned char *__c) { 11300 return vec_st( 11301 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11302 __b, __c); 11303 } 11304 11305 static void __ATTRS_o_ai vec_stvrx(vector bool char __a, int __b, 11306 vector bool char *__c) { 11307 return vec_st( 11308 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11309 __b, __c); 11310 } 11311 11312 static void __ATTRS_o_ai vec_stvrx(vector short __a, int __b, short *__c) { 11313 return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b, 11314 __c); 11315 } 11316 11317 static void __ATTRS_o_ai vec_stvrx(vector short __a, int __b, 11318 vector short *__c) { 11319 return vec_st( 11320 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11321 __b, __c); 11322 } 11323 11324 static void __ATTRS_o_ai vec_stvrx(vector unsigned short __a, int __b, 11325 unsigned short *__c) { 11326 return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b, 11327 __c); 11328 } 11329 11330 static void __ATTRS_o_ai vec_stvrx(vector unsigned short __a, int __b, 11331 vector unsigned short *__c) { 11332 return vec_st( 11333 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11334 __b, __c); 11335 } 11336 11337 static void __ATTRS_o_ai vec_stvrx(vector bool short __a, int __b, 11338 vector bool short *__c) { 11339 return vec_st( 11340 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11341 __b, __c); 11342 } 11343 11344 static void __ATTRS_o_ai vec_stvrx(vector pixel __a, int __b, 11345 vector pixel *__c) { 11346 return vec_st( 11347 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11348 __b, __c); 11349 } 11350 11351 static void __ATTRS_o_ai vec_stvrx(vector int __a, int __b, int *__c) { 11352 return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b, 11353 __c); 11354 } 11355 11356 static void __ATTRS_o_ai vec_stvrx(vector int __a, int __b, vector int *__c) { 11357 return vec_st( 11358 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11359 __b, __c); 11360 } 11361 11362 static void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b, 11363 unsigned int *__c) { 11364 return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b, 11365 __c); 11366 } 11367 11368 static void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b, 11369 vector unsigned int *__c) { 11370 return vec_st( 11371 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11372 __b, __c); 11373 } 11374 11375 static void __ATTRS_o_ai vec_stvrx(vector bool int __a, int __b, 11376 vector bool int *__c) { 11377 return vec_st( 11378 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11379 __b, __c); 11380 } 11381 11382 static void __ATTRS_o_ai vec_stvrx(vector float __a, int __b, 11383 vector float *__c) { 11384 return vec_st( 11385 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11386 __b, __c); 11387 } 11388 11389 /* vec_stvrxl */ 11390 11391 static void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b, 11392 signed char *__c) { 11393 return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b, 11394 __c); 11395 } 11396 11397 static void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b, 11398 vector signed char *__c) { 11399 return vec_stl( 11400 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11401 __b, __c); 11402 } 11403 11404 static void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a, int __b, 11405 unsigned char *__c) { 11406 return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b, 11407 __c); 11408 } 11409 11410 static void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a, int __b, 11411 vector unsigned char *__c) { 11412 return vec_stl( 11413 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11414 __b, __c); 11415 } 11416 11417 static void __ATTRS_o_ai vec_stvrxl(vector bool char __a, int __b, 11418 vector bool char *__c) { 11419 return vec_stl( 11420 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11421 __b, __c); 11422 } 11423 11424 static void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b, short *__c) { 11425 return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b, 11426 __c); 11427 } 11428 11429 static void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b, 11430 vector short *__c) { 11431 return vec_stl( 11432 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11433 __b, __c); 11434 } 11435 11436 static void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a, int __b, 11437 unsigned short *__c) { 11438 return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b, 11439 __c); 11440 } 11441 11442 static void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a, int __b, 11443 vector unsigned short *__c) { 11444 return vec_stl( 11445 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11446 __b, __c); 11447 } 11448 11449 static void __ATTRS_o_ai vec_stvrxl(vector bool short __a, int __b, 11450 vector bool short *__c) { 11451 return vec_stl( 11452 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11453 __b, __c); 11454 } 11455 11456 static void __ATTRS_o_ai vec_stvrxl(vector pixel __a, int __b, 11457 vector pixel *__c) { 11458 return vec_stl( 11459 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11460 __b, __c); 11461 } 11462 11463 static void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b, int *__c) { 11464 return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b, 11465 __c); 11466 } 11467 11468 static void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b, vector int *__c) { 11469 return vec_stl( 11470 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11471 __b, __c); 11472 } 11473 11474 static void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b, 11475 unsigned int *__c) { 11476 return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b, 11477 __c); 11478 } 11479 11480 static void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b, 11481 vector unsigned int *__c) { 11482 return vec_stl( 11483 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11484 __b, __c); 11485 } 11486 11487 static void __ATTRS_o_ai vec_stvrxl(vector bool int __a, int __b, 11488 vector bool int *__c) { 11489 return vec_stl( 11490 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11491 __b, __c); 11492 } 11493 11494 static void __ATTRS_o_ai vec_stvrxl(vector float __a, int __b, 11495 vector float *__c) { 11496 return vec_stl( 11497 vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)), 11498 __b, __c); 11499 } 11500 11501 /* vec_promote */ 11502 11503 static vector signed char __ATTRS_o_ai vec_promote(signed char __a, int __b) { 11504 vector signed char __res = (vector signed char)(0); 11505 __res[__b] = __a; 11506 return __res; 11507 } 11508 11509 static vector unsigned char __ATTRS_o_ai vec_promote(unsigned char __a, 11510 int __b) { 11511 vector unsigned char __res = (vector unsigned char)(0); 11512 __res[__b] = __a; 11513 return __res; 11514 } 11515 11516 static vector short __ATTRS_o_ai vec_promote(short __a, int __b) { 11517 vector short __res = (vector short)(0); 11518 __res[__b] = __a; 11519 return __res; 11520 } 11521 11522 static vector unsigned short __ATTRS_o_ai vec_promote(unsigned short __a, 11523 int __b) { 11524 vector unsigned short __res = (vector unsigned short)(0); 11525 __res[__b] = __a; 11526 return __res; 11527 } 11528 11529 static vector int __ATTRS_o_ai vec_promote(int __a, int __b) { 11530 vector int __res = (vector int)(0); 11531 __res[__b] = __a; 11532 return __res; 11533 } 11534 11535 static vector unsigned int __ATTRS_o_ai vec_promote(unsigned int __a, int __b) { 11536 vector unsigned int __res = (vector unsigned int)(0); 11537 __res[__b] = __a; 11538 return __res; 11539 } 11540 11541 static vector float __ATTRS_o_ai vec_promote(float __a, int __b) { 11542 vector float __res = (vector float)(0); 11543 __res[__b] = __a; 11544 return __res; 11545 } 11546 11547 /* vec_splats */ 11548 11549 static vector signed char __ATTRS_o_ai vec_splats(signed char __a) { 11550 return (vector signed char)(__a); 11551 } 11552 11553 static vector unsigned char __ATTRS_o_ai vec_splats(unsigned char __a) { 11554 return (vector unsigned char)(__a); 11555 } 11556 11557 static vector short __ATTRS_o_ai vec_splats(short __a) { 11558 return (vector short)(__a); 11559 } 11560 11561 static vector unsigned short __ATTRS_o_ai vec_splats(unsigned short __a) { 11562 return (vector unsigned short)(__a); 11563 } 11564 11565 static vector int __ATTRS_o_ai vec_splats(int __a) { return (vector int)(__a); } 11566 11567 static vector unsigned int __ATTRS_o_ai vec_splats(unsigned int __a) { 11568 return (vector unsigned int)(__a); 11569 } 11570 11571 #ifdef __VSX__ 11572 static vector signed long long __ATTRS_o_ai vec_splats(signed long long __a) { 11573 return (vector signed long long)(__a); 11574 } 11575 11576 static vector unsigned long long __ATTRS_o_ai 11577 vec_splats(unsigned long long __a) { 11578 return (vector unsigned long long)(__a); 11579 } 11580 11581 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__) 11582 static vector signed __int128 __ATTRS_o_ai vec_splats(signed __int128 __a) { 11583 return (vector signed __int128)(__a); 11584 } 11585 11586 static vector unsigned __int128 __ATTRS_o_ai 11587 vec_splats(unsigned __int128 __a) { 11588 return (vector unsigned __int128)(__a); 11589 } 11590 11591 #endif 11592 11593 static vector double __ATTRS_o_ai vec_splats(double __a) { 11594 return (vector double)(__a); 11595 } 11596 #endif 11597 11598 static vector float __ATTRS_o_ai vec_splats(float __a) { 11599 return (vector float)(__a); 11600 } 11601 11602 /* ----------------------------- predicates --------------------------------- */ 11603 11604 /* vec_all_eq */ 11605 11606 static int __ATTRS_o_ai vec_all_eq(vector signed char __a, 11607 vector signed char __b) { 11608 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, 11609 (vector char)__b); 11610 } 11611 11612 static int __ATTRS_o_ai vec_all_eq(vector signed char __a, 11613 vector bool char __b) { 11614 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, 11615 (vector char)__b); 11616 } 11617 11618 static int __ATTRS_o_ai vec_all_eq(vector unsigned char __a, 11619 vector unsigned char __b) { 11620 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, 11621 (vector char)__b); 11622 } 11623 11624 static int __ATTRS_o_ai vec_all_eq(vector unsigned char __a, 11625 vector bool char __b) { 11626 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, 11627 (vector char)__b); 11628 } 11629 11630 static int __ATTRS_o_ai vec_all_eq(vector bool char __a, 11631 vector signed char __b) { 11632 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, 11633 (vector char)__b); 11634 } 11635 11636 static int __ATTRS_o_ai vec_all_eq(vector bool char __a, 11637 vector unsigned char __b) { 11638 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, 11639 (vector char)__b); 11640 } 11641 11642 static int __ATTRS_o_ai vec_all_eq(vector bool char __a, vector bool char __b) { 11643 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, 11644 (vector char)__b); 11645 } 11646 11647 static int __ATTRS_o_ai vec_all_eq(vector short __a, vector short __b) { 11648 return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, __b); 11649 } 11650 11651 static int __ATTRS_o_ai vec_all_eq(vector short __a, vector bool short __b) { 11652 return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, (vector short)__b); 11653 } 11654 11655 static int __ATTRS_o_ai vec_all_eq(vector unsigned short __a, 11656 vector unsigned short __b) { 11657 return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, 11658 (vector short)__b); 11659 } 11660 11661 static int __ATTRS_o_ai vec_all_eq(vector unsigned short __a, 11662 vector bool short __b) { 11663 return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, 11664 (vector short)__b); 11665 } 11666 11667 static int __ATTRS_o_ai vec_all_eq(vector bool short __a, vector short __b) { 11668 return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, 11669 (vector short)__b); 11670 } 11671 11672 static int __ATTRS_o_ai vec_all_eq(vector bool short __a, 11673 vector unsigned short __b) { 11674 return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, 11675 (vector short)__b); 11676 } 11677 11678 static int __ATTRS_o_ai vec_all_eq(vector bool short __a, 11679 vector bool short __b) { 11680 return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, 11681 (vector short)__b); 11682 } 11683 11684 static int __ATTRS_o_ai vec_all_eq(vector pixel __a, vector pixel __b) { 11685 return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, 11686 (vector short)__b); 11687 } 11688 11689 static int __ATTRS_o_ai vec_all_eq(vector int __a, vector int __b) { 11690 return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, __b); 11691 } 11692 11693 static int __ATTRS_o_ai vec_all_eq(vector int __a, vector bool int __b) { 11694 return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, (vector int)__b); 11695 } 11696 11697 static int __ATTRS_o_ai vec_all_eq(vector unsigned int __a, 11698 vector unsigned int __b) { 11699 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, 11700 (vector int)__b); 11701 } 11702 11703 static int __ATTRS_o_ai vec_all_eq(vector unsigned int __a, 11704 vector bool int __b) { 11705 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, 11706 (vector int)__b); 11707 } 11708 11709 static int __ATTRS_o_ai vec_all_eq(vector bool int __a, vector int __b) { 11710 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, 11711 (vector int)__b); 11712 } 11713 11714 static int __ATTRS_o_ai vec_all_eq(vector bool int __a, 11715 vector unsigned int __b) { 11716 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, 11717 (vector int)__b); 11718 } 11719 11720 static int __ATTRS_o_ai vec_all_eq(vector bool int __a, vector bool int __b) { 11721 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, 11722 (vector int)__b); 11723 } 11724 11725 #ifdef __POWER8_VECTOR__ 11726 static int __ATTRS_o_ai vec_all_eq(vector signed long long __a, 11727 vector signed long long __b) { 11728 return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, __b); 11729 } 11730 11731 static int __ATTRS_o_ai vec_all_eq(vector long long __a, 11732 vector bool long long __b) { 11733 return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, (vector long long)__b); 11734 } 11735 11736 static int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a, 11737 vector unsigned long long __b) { 11738 return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a, 11739 (vector long long)__b); 11740 } 11741 11742 static int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a, 11743 vector bool long long __b) { 11744 return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a, 11745 (vector long long)__b); 11746 } 11747 11748 static int __ATTRS_o_ai vec_all_eq(vector bool long long __a, 11749 vector long long __b) { 11750 return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a, 11751 (vector long long)__b); 11752 } 11753 11754 static int __ATTRS_o_ai vec_all_eq(vector bool long long __a, 11755 vector unsigned long long __b) { 11756 return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a, 11757 (vector long long)__b); 11758 } 11759 11760 static int __ATTRS_o_ai vec_all_eq(vector bool long long __a, 11761 vector bool long long __b) { 11762 return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a, 11763 (vector long long)__b); 11764 } 11765 #endif 11766 11767 static int __ATTRS_o_ai vec_all_eq(vector float __a, vector float __b) { 11768 #ifdef __VSX__ 11769 return __builtin_vsx_xvcmpeqsp_p(__CR6_LT, __a, __b); 11770 #else 11771 return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __b); 11772 #endif 11773 } 11774 11775 #ifdef __VSX__ 11776 static int __ATTRS_o_ai vec_all_eq(vector double __a, vector double __b) { 11777 return __builtin_vsx_xvcmpeqdp_p(__CR6_LT, __a, __b); 11778 } 11779 #endif 11780 11781 /* vec_all_ge */ 11782 11783 static int __ATTRS_o_ai vec_all_ge(vector signed char __a, 11784 vector signed char __b) { 11785 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __b, __a); 11786 } 11787 11788 static int __ATTRS_o_ai vec_all_ge(vector signed char __a, 11789 vector bool char __b) { 11790 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, (vector signed char)__b, __a); 11791 } 11792 11793 static int __ATTRS_o_ai vec_all_ge(vector unsigned char __a, 11794 vector unsigned char __b) { 11795 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, __a); 11796 } 11797 11798 static int __ATTRS_o_ai vec_all_ge(vector unsigned char __a, 11799 vector bool char __b) { 11800 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b, __a); 11801 } 11802 11803 static int __ATTRS_o_ai vec_all_ge(vector bool char __a, 11804 vector signed char __b) { 11805 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b, 11806 (vector unsigned char)__a); 11807 } 11808 11809 static int __ATTRS_o_ai vec_all_ge(vector bool char __a, 11810 vector unsigned char __b) { 11811 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, (vector unsigned char)__a); 11812 } 11813 11814 static int __ATTRS_o_ai vec_all_ge(vector bool char __a, vector bool char __b) { 11815 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b, 11816 (vector unsigned char)__a); 11817 } 11818 11819 static int __ATTRS_o_ai vec_all_ge(vector short __a, vector short __b) { 11820 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __b, __a); 11821 } 11822 11823 static int __ATTRS_o_ai vec_all_ge(vector short __a, vector bool short __b) { 11824 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, (vector short)__b, __a); 11825 } 11826 11827 static int __ATTRS_o_ai vec_all_ge(vector unsigned short __a, 11828 vector unsigned short __b) { 11829 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b, __a); 11830 } 11831 11832 static int __ATTRS_o_ai vec_all_ge(vector unsigned short __a, 11833 vector bool short __b) { 11834 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b, 11835 __a); 11836 } 11837 11838 static int __ATTRS_o_ai vec_all_ge(vector bool short __a, vector short __b) { 11839 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b, 11840 (vector unsigned short)__a); 11841 } 11842 11843 static int __ATTRS_o_ai vec_all_ge(vector bool short __a, 11844 vector unsigned short __b) { 11845 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b, 11846 (vector unsigned short)__a); 11847 } 11848 11849 static int __ATTRS_o_ai vec_all_ge(vector bool short __a, 11850 vector bool short __b) { 11851 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b, 11852 (vector unsigned short)__a); 11853 } 11854 11855 static int __ATTRS_o_ai vec_all_ge(vector int __a, vector int __b) { 11856 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __b, __a); 11857 } 11858 11859 static int __ATTRS_o_ai vec_all_ge(vector int __a, vector bool int __b) { 11860 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, (vector int)__b, __a); 11861 } 11862 11863 static int __ATTRS_o_ai vec_all_ge(vector unsigned int __a, 11864 vector unsigned int __b) { 11865 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, __a); 11866 } 11867 11868 static int __ATTRS_o_ai vec_all_ge(vector unsigned int __a, 11869 vector bool int __b) { 11870 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b, __a); 11871 } 11872 11873 static int __ATTRS_o_ai vec_all_ge(vector bool int __a, vector int __b) { 11874 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b, 11875 (vector unsigned int)__a); 11876 } 11877 11878 static int __ATTRS_o_ai vec_all_ge(vector bool int __a, 11879 vector unsigned int __b) { 11880 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, (vector unsigned int)__a); 11881 } 11882 11883 static int __ATTRS_o_ai vec_all_ge(vector bool int __a, vector bool int __b) { 11884 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b, 11885 (vector unsigned int)__a); 11886 } 11887 11888 #ifdef __POWER8_VECTOR__ 11889 static int __ATTRS_o_ai vec_all_ge(vector signed long long __a, 11890 vector signed long long __b) { 11891 return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __b, __a); 11892 } 11893 static int __ATTRS_o_ai vec_all_ge(vector signed long long __a, 11894 vector bool long long __b) { 11895 return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, (vector signed long long)__b, 11896 __a); 11897 } 11898 11899 static int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a, 11900 vector unsigned long long __b) { 11901 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b, __a); 11902 } 11903 11904 static int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a, 11905 vector bool long long __b) { 11906 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b, 11907 __a); 11908 } 11909 11910 static int __ATTRS_o_ai vec_all_ge(vector bool long long __a, 11911 vector signed long long __b) { 11912 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b, 11913 (vector unsigned long long)__a); 11914 } 11915 11916 static int __ATTRS_o_ai vec_all_ge(vector bool long long __a, 11917 vector unsigned long long __b) { 11918 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b, 11919 (vector unsigned long long)__a); 11920 } 11921 11922 static int __ATTRS_o_ai vec_all_ge(vector bool long long __a, 11923 vector bool long long __b) { 11924 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b, 11925 (vector unsigned long long)__a); 11926 } 11927 #endif 11928 11929 static int __ATTRS_o_ai vec_all_ge(vector float __a, vector float __b) { 11930 #ifdef __VSX__ 11931 return __builtin_vsx_xvcmpgesp_p(__CR6_LT, __a, __b); 11932 #else 11933 return __builtin_altivec_vcmpgefp_p(__CR6_LT, __a, __b); 11934 #endif 11935 } 11936 11937 #ifdef __VSX__ 11938 static int __ATTRS_o_ai vec_all_ge(vector double __a, vector double __b) { 11939 return __builtin_vsx_xvcmpgedp_p(__CR6_LT, __a, __b); 11940 } 11941 #endif 11942 11943 /* vec_all_gt */ 11944 11945 static int __ATTRS_o_ai vec_all_gt(vector signed char __a, 11946 vector signed char __b) { 11947 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, __b); 11948 } 11949 11950 static int __ATTRS_o_ai vec_all_gt(vector signed char __a, 11951 vector bool char __b) { 11952 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, (vector signed char)__b); 11953 } 11954 11955 static int __ATTRS_o_ai vec_all_gt(vector unsigned char __a, 11956 vector unsigned char __b) { 11957 return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, __b); 11958 } 11959 11960 static int __ATTRS_o_ai vec_all_gt(vector unsigned char __a, 11961 vector bool char __b) { 11962 return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, (vector unsigned char)__b); 11963 } 11964 11965 static int __ATTRS_o_ai vec_all_gt(vector bool char __a, 11966 vector signed char __b) { 11967 return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a, 11968 (vector unsigned char)__b); 11969 } 11970 11971 static int __ATTRS_o_ai vec_all_gt(vector bool char __a, 11972 vector unsigned char __b) { 11973 return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a, __b); 11974 } 11975 11976 static int __ATTRS_o_ai vec_all_gt(vector bool char __a, vector bool char __b) { 11977 return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a, 11978 (vector unsigned char)__b); 11979 } 11980 11981 static int __ATTRS_o_ai vec_all_gt(vector short __a, vector short __b) { 11982 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, __b); 11983 } 11984 11985 static int __ATTRS_o_ai vec_all_gt(vector short __a, vector bool short __b) { 11986 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, (vector short)__b); 11987 } 11988 11989 static int __ATTRS_o_ai vec_all_gt(vector unsigned short __a, 11990 vector unsigned short __b) { 11991 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a, __b); 11992 } 11993 11994 static int __ATTRS_o_ai vec_all_gt(vector unsigned short __a, 11995 vector bool short __b) { 11996 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a, 11997 (vector unsigned short)__b); 11998 } 11999 12000 static int __ATTRS_o_ai vec_all_gt(vector bool short __a, vector short __b) { 12001 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a, 12002 (vector unsigned short)__b); 12003 } 12004 12005 static int __ATTRS_o_ai vec_all_gt(vector bool short __a, 12006 vector unsigned short __b) { 12007 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a, 12008 __b); 12009 } 12010 12011 static int __ATTRS_o_ai vec_all_gt(vector bool short __a, 12012 vector bool short __b) { 12013 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a, 12014 (vector unsigned short)__b); 12015 } 12016 12017 static int __ATTRS_o_ai vec_all_gt(vector int __a, vector int __b) { 12018 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, __b); 12019 } 12020 12021 static int __ATTRS_o_ai vec_all_gt(vector int __a, vector bool int __b) { 12022 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, (vector int)__b); 12023 } 12024 12025 static int __ATTRS_o_ai vec_all_gt(vector unsigned int __a, 12026 vector unsigned int __b) { 12027 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, __b); 12028 } 12029 12030 static int __ATTRS_o_ai vec_all_gt(vector unsigned int __a, 12031 vector bool int __b) { 12032 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, (vector unsigned int)__b); 12033 } 12034 12035 static int __ATTRS_o_ai vec_all_gt(vector bool int __a, vector int __b) { 12036 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a, 12037 (vector unsigned int)__b); 12038 } 12039 12040 static int __ATTRS_o_ai vec_all_gt(vector bool int __a, 12041 vector unsigned int __b) { 12042 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a, __b); 12043 } 12044 12045 static int __ATTRS_o_ai vec_all_gt(vector bool int __a, vector bool int __b) { 12046 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a, 12047 (vector unsigned int)__b); 12048 } 12049 12050 #ifdef __POWER8_VECTOR__ 12051 static int __ATTRS_o_ai vec_all_gt(vector signed long long __a, 12052 vector signed long long __b) { 12053 return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a, __b); 12054 } 12055 static int __ATTRS_o_ai vec_all_gt(vector signed long long __a, 12056 vector bool long long __b) { 12057 return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a, 12058 (vector signed long long)__b); 12059 } 12060 12061 static int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a, 12062 vector unsigned long long __b) { 12063 return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a, __b); 12064 } 12065 12066 static int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a, 12067 vector bool long long __b) { 12068 return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a, 12069 (vector unsigned long long)__b); 12070 } 12071 12072 static int __ATTRS_o_ai vec_all_gt(vector bool long long __a, 12073 vector signed long long __b) { 12074 return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a, 12075 (vector unsigned long long)__b); 12076 } 12077 12078 static int __ATTRS_o_ai vec_all_gt(vector bool long long __a, 12079 vector unsigned long long __b) { 12080 return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a, 12081 __b); 12082 } 12083 12084 static int __ATTRS_o_ai vec_all_gt(vector bool long long __a, 12085 vector bool long long __b) { 12086 return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a, 12087 (vector unsigned long long)__b); 12088 } 12089 #endif 12090 12091 static int __ATTRS_o_ai vec_all_gt(vector float __a, vector float __b) { 12092 #ifdef __VSX__ 12093 return __builtin_vsx_xvcmpgtsp_p(__CR6_LT, __a, __b); 12094 #else 12095 return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __a, __b); 12096 #endif 12097 } 12098 12099 #ifdef __VSX__ 12100 static int __ATTRS_o_ai vec_all_gt(vector double __a, vector double __b) { 12101 return __builtin_vsx_xvcmpgtdp_p(__CR6_LT, __a, __b); 12102 } 12103 #endif 12104 12105 /* vec_all_in */ 12106 12107 static int __attribute__((__always_inline__)) 12108 vec_all_in(vector float __a, vector float __b) { 12109 return __builtin_altivec_vcmpbfp_p(__CR6_EQ, __a, __b); 12110 } 12111 12112 /* vec_all_le */ 12113 12114 static int __ATTRS_o_ai vec_all_le(vector signed char __a, 12115 vector signed char __b) { 12116 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, __b); 12117 } 12118 12119 static int __ATTRS_o_ai vec_all_le(vector signed char __a, 12120 vector bool char __b) { 12121 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, (vector signed char)__b); 12122 } 12123 12124 static int __ATTRS_o_ai vec_all_le(vector unsigned char __a, 12125 vector unsigned char __b) { 12126 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, __b); 12127 } 12128 12129 static int __ATTRS_o_ai vec_all_le(vector unsigned char __a, 12130 vector bool char __b) { 12131 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, (vector unsigned char)__b); 12132 } 12133 12134 static int __ATTRS_o_ai vec_all_le(vector bool char __a, 12135 vector signed char __b) { 12136 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a, 12137 (vector unsigned char)__b); 12138 } 12139 12140 static int __ATTRS_o_ai vec_all_le(vector bool char __a, 12141 vector unsigned char __b) { 12142 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a, __b); 12143 } 12144 12145 static int __ATTRS_o_ai vec_all_le(vector bool char __a, vector bool char __b) { 12146 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a, 12147 (vector unsigned char)__b); 12148 } 12149 12150 static int __ATTRS_o_ai vec_all_le(vector short __a, vector short __b) { 12151 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, __b); 12152 } 12153 12154 static int __ATTRS_o_ai vec_all_le(vector short __a, vector bool short __b) { 12155 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, (vector short)__b); 12156 } 12157 12158 static int __ATTRS_o_ai vec_all_le(vector unsigned short __a, 12159 vector unsigned short __b) { 12160 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a, __b); 12161 } 12162 12163 static int __ATTRS_o_ai vec_all_le(vector unsigned short __a, 12164 vector bool short __b) { 12165 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a, 12166 (vector unsigned short)__b); 12167 } 12168 12169 static int __ATTRS_o_ai vec_all_le(vector bool short __a, vector short __b) { 12170 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a, 12171 (vector unsigned short)__b); 12172 } 12173 12174 static int __ATTRS_o_ai vec_all_le(vector bool short __a, 12175 vector unsigned short __b) { 12176 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a, 12177 __b); 12178 } 12179 12180 static int __ATTRS_o_ai vec_all_le(vector bool short __a, 12181 vector bool short __b) { 12182 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a, 12183 (vector unsigned short)__b); 12184 } 12185 12186 static int __ATTRS_o_ai vec_all_le(vector int __a, vector int __b) { 12187 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, __b); 12188 } 12189 12190 static int __ATTRS_o_ai vec_all_le(vector int __a, vector bool int __b) { 12191 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, (vector int)__b); 12192 } 12193 12194 static int __ATTRS_o_ai vec_all_le(vector unsigned int __a, 12195 vector unsigned int __b) { 12196 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, __b); 12197 } 12198 12199 static int __ATTRS_o_ai vec_all_le(vector unsigned int __a, 12200 vector bool int __b) { 12201 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, (vector unsigned int)__b); 12202 } 12203 12204 static int __ATTRS_o_ai vec_all_le(vector bool int __a, vector int __b) { 12205 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a, 12206 (vector unsigned int)__b); 12207 } 12208 12209 static int __ATTRS_o_ai vec_all_le(vector bool int __a, 12210 vector unsigned int __b) { 12211 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a, __b); 12212 } 12213 12214 static int __ATTRS_o_ai vec_all_le(vector bool int __a, vector bool int __b) { 12215 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a, 12216 (vector unsigned int)__b); 12217 } 12218 12219 #ifdef __POWER8_VECTOR__ 12220 static int __ATTRS_o_ai vec_all_le(vector signed long long __a, 12221 vector signed long long __b) { 12222 return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a, __b); 12223 } 12224 12225 static int __ATTRS_o_ai vec_all_le(vector unsigned long long __a, 12226 vector unsigned long long __b) { 12227 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a, __b); 12228 } 12229 12230 static int __ATTRS_o_ai vec_all_le(vector signed long long __a, 12231 vector bool long long __b) { 12232 return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a, 12233 (vector signed long long)__b); 12234 } 12235 12236 static int __ATTRS_o_ai vec_all_le(vector unsigned long long __a, 12237 vector bool long long __b) { 12238 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a, 12239 (vector unsigned long long)__b); 12240 } 12241 12242 static int __ATTRS_o_ai vec_all_le(vector bool long long __a, 12243 vector signed long long __b) { 12244 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a, 12245 (vector unsigned long long)__b); 12246 } 12247 12248 static int __ATTRS_o_ai vec_all_le(vector bool long long __a, 12249 vector unsigned long long __b) { 12250 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a, 12251 __b); 12252 } 12253 12254 static int __ATTRS_o_ai vec_all_le(vector bool long long __a, 12255 vector bool long long __b) { 12256 return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a, 12257 (vector unsigned long long)__b); 12258 } 12259 #endif 12260 12261 static int __ATTRS_o_ai vec_all_le(vector float __a, vector float __b) { 12262 #ifdef __VSX__ 12263 return __builtin_vsx_xvcmpgesp_p(__CR6_LT, __b, __a); 12264 #else 12265 return __builtin_altivec_vcmpgefp_p(__CR6_LT, __b, __a); 12266 #endif 12267 } 12268 12269 #ifdef __VSX__ 12270 static int __ATTRS_o_ai vec_all_le(vector double __a, vector double __b) { 12271 return __builtin_vsx_xvcmpgedp_p(__CR6_LT, __b, __a); 12272 } 12273 #endif 12274 12275 /* vec_all_lt */ 12276 12277 static int __ATTRS_o_ai vec_all_lt(vector signed char __a, 12278 vector signed char __b) { 12279 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __b, __a); 12280 } 12281 12282 static int __ATTRS_o_ai vec_all_lt(vector signed char __a, 12283 vector bool char __b) { 12284 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, (vector signed char)__b, __a); 12285 } 12286 12287 static int __ATTRS_o_ai vec_all_lt(vector unsigned char __a, 12288 vector unsigned char __b) { 12289 return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, __a); 12290 } 12291 12292 static int __ATTRS_o_ai vec_all_lt(vector unsigned char __a, 12293 vector bool char __b) { 12294 return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b, __a); 12295 } 12296 12297 static int __ATTRS_o_ai vec_all_lt(vector bool char __a, 12298 vector signed char __b) { 12299 return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b, 12300 (vector unsigned char)__a); 12301 } 12302 12303 static int __ATTRS_o_ai vec_all_lt(vector bool char __a, 12304 vector unsigned char __b) { 12305 return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, (vector unsigned char)__a); 12306 } 12307 12308 static int __ATTRS_o_ai vec_all_lt(vector bool char __a, vector bool char __b) { 12309 return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b, 12310 (vector unsigned char)__a); 12311 } 12312 12313 static int __ATTRS_o_ai vec_all_lt(vector short __a, vector short __b) { 12314 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __b, __a); 12315 } 12316 12317 static int __ATTRS_o_ai vec_all_lt(vector short __a, vector bool short __b) { 12318 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, (vector short)__b, __a); 12319 } 12320 12321 static int __ATTRS_o_ai vec_all_lt(vector unsigned short __a, 12322 vector unsigned short __b) { 12323 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b, __a); 12324 } 12325 12326 static int __ATTRS_o_ai vec_all_lt(vector unsigned short __a, 12327 vector bool short __b) { 12328 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b, 12329 __a); 12330 } 12331 12332 static int __ATTRS_o_ai vec_all_lt(vector bool short __a, vector short __b) { 12333 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b, 12334 (vector unsigned short)__a); 12335 } 12336 12337 static int __ATTRS_o_ai vec_all_lt(vector bool short __a, 12338 vector unsigned short __b) { 12339 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b, 12340 (vector unsigned short)__a); 12341 } 12342 12343 static int __ATTRS_o_ai vec_all_lt(vector bool short __a, 12344 vector bool short __b) { 12345 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b, 12346 (vector unsigned short)__a); 12347 } 12348 12349 static int __ATTRS_o_ai vec_all_lt(vector int __a, vector int __b) { 12350 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __b, __a); 12351 } 12352 12353 static int __ATTRS_o_ai vec_all_lt(vector int __a, vector bool int __b) { 12354 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, (vector int)__b, __a); 12355 } 12356 12357 static int __ATTRS_o_ai vec_all_lt(vector unsigned int __a, 12358 vector unsigned int __b) { 12359 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, __a); 12360 } 12361 12362 static int __ATTRS_o_ai vec_all_lt(vector unsigned int __a, 12363 vector bool int __b) { 12364 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b, __a); 12365 } 12366 12367 static int __ATTRS_o_ai vec_all_lt(vector bool int __a, vector int __b) { 12368 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b, 12369 (vector unsigned int)__a); 12370 } 12371 12372 static int __ATTRS_o_ai vec_all_lt(vector bool int __a, 12373 vector unsigned int __b) { 12374 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, (vector unsigned int)__a); 12375 } 12376 12377 static int __ATTRS_o_ai vec_all_lt(vector bool int __a, vector bool int __b) { 12378 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b, 12379 (vector unsigned int)__a); 12380 } 12381 12382 #ifdef __POWER8_VECTOR__ 12383 static int __ATTRS_o_ai vec_all_lt(vector signed long long __a, 12384 vector signed long long __b) { 12385 return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __b, __a); 12386 } 12387 12388 static int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a, 12389 vector unsigned long long __b) { 12390 return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b, __a); 12391 } 12392 12393 static int __ATTRS_o_ai vec_all_lt(vector signed long long __a, 12394 vector bool long long __b) { 12395 return __builtin_altivec_vcmpgtsd_p(__CR6_LT, (vector signed long long)__b, 12396 __a); 12397 } 12398 12399 static int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a, 12400 vector bool long long __b) { 12401 return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b, 12402 __a); 12403 } 12404 12405 static int __ATTRS_o_ai vec_all_lt(vector bool long long __a, 12406 vector signed long long __b) { 12407 return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b, 12408 (vector unsigned long long)__a); 12409 } 12410 12411 static int __ATTRS_o_ai vec_all_lt(vector bool long long __a, 12412 vector unsigned long long __b) { 12413 return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b, 12414 (vector unsigned long long)__a); 12415 } 12416 12417 static int __ATTRS_o_ai vec_all_lt(vector bool long long __a, 12418 vector bool long long __b) { 12419 return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b, 12420 (vector unsigned long long)__a); 12421 } 12422 #endif 12423 12424 static int __ATTRS_o_ai vec_all_lt(vector float __a, vector float __b) { 12425 #ifdef __VSX__ 12426 return __builtin_vsx_xvcmpgtsp_p(__CR6_LT, __b, __a); 12427 #else 12428 return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __b, __a); 12429 #endif 12430 } 12431 12432 #ifdef __VSX__ 12433 static int __ATTRS_o_ai vec_all_lt(vector double __a, vector double __b) { 12434 return __builtin_vsx_xvcmpgtdp_p(__CR6_LT, __b, __a); 12435 } 12436 #endif 12437 12438 /* vec_all_nan */ 12439 12440 static int __ATTRS_o_ai vec_all_nan(vector float __a) { 12441 #ifdef __VSX__ 12442 return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ, __a, __a); 12443 #else 12444 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __a); 12445 #endif 12446 } 12447 12448 #ifdef __VSX__ 12449 static int __ATTRS_o_ai vec_all_nan(vector double __a) { 12450 return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __a); 12451 } 12452 #endif 12453 12454 /* vec_all_ne */ 12455 12456 static int __ATTRS_o_ai vec_all_ne(vector signed char __a, 12457 vector signed char __b) { 12458 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, 12459 (vector char)__b); 12460 } 12461 12462 static int __ATTRS_o_ai vec_all_ne(vector signed char __a, 12463 vector bool char __b) { 12464 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, 12465 (vector char)__b); 12466 } 12467 12468 static int __ATTRS_o_ai vec_all_ne(vector unsigned char __a, 12469 vector unsigned char __b) { 12470 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, 12471 (vector char)__b); 12472 } 12473 12474 static int __ATTRS_o_ai vec_all_ne(vector unsigned char __a, 12475 vector bool char __b) { 12476 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, 12477 (vector char)__b); 12478 } 12479 12480 static int __ATTRS_o_ai vec_all_ne(vector bool char __a, 12481 vector signed char __b) { 12482 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, 12483 (vector char)__b); 12484 } 12485 12486 static int __ATTRS_o_ai vec_all_ne(vector bool char __a, 12487 vector unsigned char __b) { 12488 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, 12489 (vector char)__b); 12490 } 12491 12492 static int __ATTRS_o_ai vec_all_ne(vector bool char __a, vector bool char __b) { 12493 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, 12494 (vector char)__b); 12495 } 12496 12497 static int __ATTRS_o_ai vec_all_ne(vector short __a, vector short __b) { 12498 return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, __b); 12499 } 12500 12501 static int __ATTRS_o_ai vec_all_ne(vector short __a, vector bool short __b) { 12502 return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, (vector short)__b); 12503 } 12504 12505 static int __ATTRS_o_ai vec_all_ne(vector unsigned short __a, 12506 vector unsigned short __b) { 12507 return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, 12508 (vector short)__b); 12509 } 12510 12511 static int __ATTRS_o_ai vec_all_ne(vector unsigned short __a, 12512 vector bool short __b) { 12513 return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, 12514 (vector short)__b); 12515 } 12516 12517 static int __ATTRS_o_ai vec_all_ne(vector bool short __a, vector short __b) { 12518 return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, 12519 (vector short)__b); 12520 } 12521 12522 static int __ATTRS_o_ai vec_all_ne(vector bool short __a, 12523 vector unsigned short __b) { 12524 return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, 12525 (vector short)__b); 12526 } 12527 12528 static int __ATTRS_o_ai vec_all_ne(vector bool short __a, 12529 vector bool short __b) { 12530 return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, 12531 (vector short)__b); 12532 } 12533 12534 static int __ATTRS_o_ai vec_all_ne(vector pixel __a, vector pixel __b) { 12535 return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, 12536 (vector short)__b); 12537 } 12538 12539 static int __ATTRS_o_ai vec_all_ne(vector int __a, vector int __b) { 12540 return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, __b); 12541 } 12542 12543 static int __ATTRS_o_ai vec_all_ne(vector int __a, vector bool int __b) { 12544 return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, (vector int)__b); 12545 } 12546 12547 static int __ATTRS_o_ai vec_all_ne(vector unsigned int __a, 12548 vector unsigned int __b) { 12549 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, 12550 (vector int)__b); 12551 } 12552 12553 static int __ATTRS_o_ai vec_all_ne(vector unsigned int __a, 12554 vector bool int __b) { 12555 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, 12556 (vector int)__b); 12557 } 12558 12559 static int __ATTRS_o_ai vec_all_ne(vector bool int __a, vector int __b) { 12560 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, 12561 (vector int)__b); 12562 } 12563 12564 static int __ATTRS_o_ai vec_all_ne(vector bool int __a, 12565 vector unsigned int __b) { 12566 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, 12567 (vector int)__b); 12568 } 12569 12570 static int __ATTRS_o_ai vec_all_ne(vector bool int __a, vector bool int __b) { 12571 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, 12572 (vector int)__b); 12573 } 12574 12575 #ifdef __POWER8_VECTOR__ 12576 static int __ATTRS_o_ai vec_all_ne(vector signed long long __a, 12577 vector signed long long __b) { 12578 return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a, __b); 12579 } 12580 12581 static int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a, 12582 vector unsigned long long __b) { 12583 return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector long long)__a, 12584 (vector long long)__b); 12585 } 12586 12587 static int __ATTRS_o_ai vec_all_ne(vector signed long long __a, 12588 vector bool long long __b) { 12589 return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a, 12590 (vector signed long long)__b); 12591 } 12592 12593 static int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a, 12594 vector bool long long __b) { 12595 return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a, 12596 (vector signed long long)__b); 12597 } 12598 12599 static int __ATTRS_o_ai vec_all_ne(vector bool long long __a, 12600 vector signed long long __b) { 12601 return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a, 12602 (vector signed long long)__b); 12603 } 12604 12605 static int __ATTRS_o_ai vec_all_ne(vector bool long long __a, 12606 vector unsigned long long __b) { 12607 return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a, 12608 (vector signed long long)__b); 12609 } 12610 12611 static int __ATTRS_o_ai vec_all_ne(vector bool long long __a, 12612 vector bool long long __b) { 12613 return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a, 12614 (vector signed long long)__b); 12615 } 12616 #endif 12617 12618 static int __ATTRS_o_ai vec_all_ne(vector float __a, vector float __b) { 12619 #ifdef __VSX__ 12620 return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __b); 12621 #else 12622 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __b); 12623 #endif 12624 } 12625 12626 #ifdef __VSX__ 12627 static int __ATTRS_o_ai vec_all_ne(vector double __a, vector double __b) { 12628 return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __b); 12629 } 12630 #endif 12631 12632 /* vec_all_nge */ 12633 12634 static int __ATTRS_o_ai 12635 vec_all_nge(vector float __a, vector float __b) { 12636 #ifdef __VSX__ 12637 return __builtin_vsx_xvcmpgesp_p(__CR6_EQ, __a, __b); 12638 #else 12639 return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __a, __b); 12640 #endif 12641 } 12642 12643 #ifdef __VSX__ 12644 static int __ATTRS_o_ai 12645 vec_all_nge(vector double __a, vector double __b) { 12646 return __builtin_vsx_xvcmpgedp_p(__CR6_EQ, __a, __b); 12647 } 12648 #endif 12649 12650 /* vec_all_ngt */ 12651 12652 static int __ATTRS_o_ai 12653 vec_all_ngt(vector float __a, vector float __b) { 12654 #ifdef __VSX__ 12655 return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ, __a, __b); 12656 #else 12657 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __a, __b); 12658 #endif 12659 } 12660 12661 #ifdef __VSX__ 12662 static int __ATTRS_o_ai 12663 vec_all_ngt(vector double __a, vector double __b) { 12664 return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ, __a, __b); 12665 } 12666 #endif 12667 12668 /* vec_all_nle */ 12669 12670 static int __attribute__((__always_inline__)) 12671 vec_all_nle(vector float __a, vector float __b) { 12672 return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __b, __a); 12673 } 12674 12675 /* vec_all_nlt */ 12676 12677 static int __attribute__((__always_inline__)) 12678 vec_all_nlt(vector float __a, vector float __b) { 12679 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __b, __a); 12680 } 12681 12682 /* vec_all_numeric */ 12683 12684 static int __attribute__((__always_inline__)) 12685 vec_all_numeric(vector float __a) { 12686 return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __a); 12687 } 12688 12689 /* vec_any_eq */ 12690 12691 static int __ATTRS_o_ai vec_any_eq(vector signed char __a, 12692 vector signed char __b) { 12693 return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, 12694 (vector char)__b); 12695 } 12696 12697 static int __ATTRS_o_ai vec_any_eq(vector signed char __a, 12698 vector bool char __b) { 12699 return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, 12700 (vector char)__b); 12701 } 12702 12703 static int __ATTRS_o_ai vec_any_eq(vector unsigned char __a, 12704 vector unsigned char __b) { 12705 return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, 12706 (vector char)__b); 12707 } 12708 12709 static int __ATTRS_o_ai vec_any_eq(vector unsigned char __a, 12710 vector bool char __b) { 12711 return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, 12712 (vector char)__b); 12713 } 12714 12715 static int __ATTRS_o_ai vec_any_eq(vector bool char __a, 12716 vector signed char __b) { 12717 return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, 12718 (vector char)__b); 12719 } 12720 12721 static int __ATTRS_o_ai vec_any_eq(vector bool char __a, 12722 vector unsigned char __b) { 12723 return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, 12724 (vector char)__b); 12725 } 12726 12727 static int __ATTRS_o_ai vec_any_eq(vector bool char __a, vector bool char __b) { 12728 return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, 12729 (vector char)__b); 12730 } 12731 12732 static int __ATTRS_o_ai vec_any_eq(vector short __a, vector short __b) { 12733 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, __b); 12734 } 12735 12736 static int __ATTRS_o_ai vec_any_eq(vector short __a, vector bool short __b) { 12737 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, (vector short)__b); 12738 } 12739 12740 static int __ATTRS_o_ai vec_any_eq(vector unsigned short __a, 12741 vector unsigned short __b) { 12742 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a, 12743 (vector short)__b); 12744 } 12745 12746 static int __ATTRS_o_ai vec_any_eq(vector unsigned short __a, 12747 vector bool short __b) { 12748 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a, 12749 (vector short)__b); 12750 } 12751 12752 static int __ATTRS_o_ai vec_any_eq(vector bool short __a, vector short __b) { 12753 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a, 12754 (vector short)__b); 12755 } 12756 12757 static int __ATTRS_o_ai vec_any_eq(vector bool short __a, 12758 vector unsigned short __b) { 12759 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a, 12760 (vector short)__b); 12761 } 12762 12763 static int __ATTRS_o_ai vec_any_eq(vector bool short __a, 12764 vector bool short __b) { 12765 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a, 12766 (vector short)__b); 12767 } 12768 12769 static int __ATTRS_o_ai vec_any_eq(vector pixel __a, vector pixel __b) { 12770 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a, 12771 (vector short)__b); 12772 } 12773 12774 static int __ATTRS_o_ai vec_any_eq(vector int __a, vector int __b) { 12775 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, __b); 12776 } 12777 12778 static int __ATTRS_o_ai vec_any_eq(vector int __a, vector bool int __b) { 12779 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, (vector int)__b); 12780 } 12781 12782 static int __ATTRS_o_ai vec_any_eq(vector unsigned int __a, 12783 vector unsigned int __b) { 12784 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, 12785 (vector int)__b); 12786 } 12787 12788 static int __ATTRS_o_ai vec_any_eq(vector unsigned int __a, 12789 vector bool int __b) { 12790 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, 12791 (vector int)__b); 12792 } 12793 12794 static int __ATTRS_o_ai vec_any_eq(vector bool int __a, vector int __b) { 12795 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, 12796 (vector int)__b); 12797 } 12798 12799 static int __ATTRS_o_ai vec_any_eq(vector bool int __a, 12800 vector unsigned int __b) { 12801 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, 12802 (vector int)__b); 12803 } 12804 12805 static int __ATTRS_o_ai vec_any_eq(vector bool int __a, vector bool int __b) { 12806 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, 12807 (vector int)__b); 12808 } 12809 12810 #ifdef __POWER8_VECTOR__ 12811 static int __ATTRS_o_ai vec_any_eq(vector signed long long __a, 12812 vector signed long long __b) { 12813 return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a, __b); 12814 } 12815 12816 static int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a, 12817 vector unsigned long long __b) { 12818 return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, (vector long long)__a, 12819 (vector long long)__b); 12820 } 12821 12822 static int __ATTRS_o_ai vec_any_eq(vector signed long long __a, 12823 vector bool long long __b) { 12824 return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a, 12825 (vector signed long long)__b); 12826 } 12827 12828 static int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a, 12829 vector bool long long __b) { 12830 return __builtin_altivec_vcmpequd_p( 12831 __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b); 12832 } 12833 12834 static int __ATTRS_o_ai vec_any_eq(vector bool long long __a, 12835 vector signed long long __b) { 12836 return __builtin_altivec_vcmpequd_p( 12837 __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b); 12838 } 12839 12840 static int __ATTRS_o_ai vec_any_eq(vector bool long long __a, 12841 vector unsigned long long __b) { 12842 return __builtin_altivec_vcmpequd_p( 12843 __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b); 12844 } 12845 12846 static int __ATTRS_o_ai vec_any_eq(vector bool long long __a, 12847 vector bool long long __b) { 12848 return __builtin_altivec_vcmpequd_p( 12849 __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b); 12850 } 12851 #endif 12852 12853 static int __ATTRS_o_ai vec_any_eq(vector float __a, vector float __b) { 12854 #ifdef __VSX__ 12855 return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ_REV, __a, __b); 12856 #else 12857 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __b); 12858 #endif 12859 } 12860 12861 #ifdef __VSX__ 12862 static int __ATTRS_o_ai vec_any_eq(vector double __a, vector double __b) { 12863 return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ_REV, __a, __b); 12864 } 12865 #endif 12866 12867 /* vec_any_ge */ 12868 12869 static int __ATTRS_o_ai vec_any_ge(vector signed char __a, 12870 vector signed char __b) { 12871 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __b, __a); 12872 } 12873 12874 static int __ATTRS_o_ai vec_any_ge(vector signed char __a, 12875 vector bool char __b) { 12876 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, (vector signed char)__b, 12877 __a); 12878 } 12879 12880 static int __ATTRS_o_ai vec_any_ge(vector unsigned char __a, 12881 vector unsigned char __b) { 12882 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b, __a); 12883 } 12884 12885 static int __ATTRS_o_ai vec_any_ge(vector unsigned char __a, 12886 vector bool char __b) { 12887 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b, 12888 __a); 12889 } 12890 12891 static int __ATTRS_o_ai vec_any_ge(vector bool char __a, 12892 vector signed char __b) { 12893 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b, 12894 (vector unsigned char)__a); 12895 } 12896 12897 static int __ATTRS_o_ai vec_any_ge(vector bool char __a, 12898 vector unsigned char __b) { 12899 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b, 12900 (vector unsigned char)__a); 12901 } 12902 12903 static int __ATTRS_o_ai vec_any_ge(vector bool char __a, vector bool char __b) { 12904 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b, 12905 (vector unsigned char)__a); 12906 } 12907 12908 static int __ATTRS_o_ai vec_any_ge(vector short __a, vector short __b) { 12909 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __b, __a); 12910 } 12911 12912 static int __ATTRS_o_ai vec_any_ge(vector short __a, vector bool short __b) { 12913 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, (vector short)__b, __a); 12914 } 12915 12916 static int __ATTRS_o_ai vec_any_ge(vector unsigned short __a, 12917 vector unsigned short __b) { 12918 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b, __a); 12919 } 12920 12921 static int __ATTRS_o_ai vec_any_ge(vector unsigned short __a, 12922 vector bool short __b) { 12923 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b, 12924 __a); 12925 } 12926 12927 static int __ATTRS_o_ai vec_any_ge(vector bool short __a, vector short __b) { 12928 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b, 12929 (vector unsigned short)__a); 12930 } 12931 12932 static int __ATTRS_o_ai vec_any_ge(vector bool short __a, 12933 vector unsigned short __b) { 12934 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b, 12935 (vector unsigned short)__a); 12936 } 12937 12938 static int __ATTRS_o_ai vec_any_ge(vector bool short __a, 12939 vector bool short __b) { 12940 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b, 12941 (vector unsigned short)__a); 12942 } 12943 12944 static int __ATTRS_o_ai vec_any_ge(vector int __a, vector int __b) { 12945 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __b, __a); 12946 } 12947 12948 static int __ATTRS_o_ai vec_any_ge(vector int __a, vector bool int __b) { 12949 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, (vector int)__b, __a); 12950 } 12951 12952 static int __ATTRS_o_ai vec_any_ge(vector unsigned int __a, 12953 vector unsigned int __b) { 12954 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b, __a); 12955 } 12956 12957 static int __ATTRS_o_ai vec_any_ge(vector unsigned int __a, 12958 vector bool int __b) { 12959 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b, 12960 __a); 12961 } 12962 12963 static int __ATTRS_o_ai vec_any_ge(vector bool int __a, vector int __b) { 12964 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b, 12965 (vector unsigned int)__a); 12966 } 12967 12968 static int __ATTRS_o_ai vec_any_ge(vector bool int __a, 12969 vector unsigned int __b) { 12970 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b, 12971 (vector unsigned int)__a); 12972 } 12973 12974 static int __ATTRS_o_ai vec_any_ge(vector bool int __a, vector bool int __b) { 12975 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b, 12976 (vector unsigned int)__a); 12977 } 12978 12979 #ifdef __POWER8_VECTOR__ 12980 static int __ATTRS_o_ai vec_any_ge(vector signed long long __a, 12981 vector signed long long __b) { 12982 return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __b, __a); 12983 } 12984 12985 static int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a, 12986 vector unsigned long long __b) { 12987 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b, __a); 12988 } 12989 12990 static int __ATTRS_o_ai vec_any_ge(vector signed long long __a, 12991 vector bool long long __b) { 12992 return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, 12993 (vector signed long long)__b, __a); 12994 } 12995 12996 static int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a, 12997 vector bool long long __b) { 12998 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, 12999 (vector unsigned long long)__b, __a); 13000 } 13001 13002 static int __ATTRS_o_ai vec_any_ge(vector bool long long __a, 13003 vector signed long long __b) { 13004 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, 13005 (vector unsigned long long)__b, 13006 (vector unsigned long long)__a); 13007 } 13008 13009 static int __ATTRS_o_ai vec_any_ge(vector bool long long __a, 13010 vector unsigned long long __b) { 13011 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b, 13012 (vector unsigned long long)__a); 13013 } 13014 13015 static int __ATTRS_o_ai vec_any_ge(vector bool long long __a, 13016 vector bool long long __b) { 13017 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, 13018 (vector unsigned long long)__b, 13019 (vector unsigned long long)__a); 13020 } 13021 #endif 13022 13023 static int __ATTRS_o_ai vec_any_ge(vector float __a, vector float __b) { 13024 #ifdef __VSX__ 13025 return __builtin_vsx_xvcmpgesp_p(__CR6_EQ_REV, __a, __b); 13026 #else 13027 return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __a, __b); 13028 #endif 13029 } 13030 13031 #ifdef __VSX__ 13032 static int __ATTRS_o_ai vec_any_ge(vector double __a, vector double __b) { 13033 return __builtin_vsx_xvcmpgedp_p(__CR6_EQ_REV, __a, __b); 13034 } 13035 #endif 13036 13037 /* vec_any_gt */ 13038 13039 static int __ATTRS_o_ai vec_any_gt(vector signed char __a, 13040 vector signed char __b) { 13041 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a, __b); 13042 } 13043 13044 static int __ATTRS_o_ai vec_any_gt(vector signed char __a, 13045 vector bool char __b) { 13046 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a, 13047 (vector signed char)__b); 13048 } 13049 13050 static int __ATTRS_o_ai vec_any_gt(vector unsigned char __a, 13051 vector unsigned char __b) { 13052 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a, __b); 13053 } 13054 13055 static int __ATTRS_o_ai vec_any_gt(vector unsigned char __a, 13056 vector bool char __b) { 13057 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a, 13058 (vector unsigned char)__b); 13059 } 13060 13061 static int __ATTRS_o_ai vec_any_gt(vector bool char __a, 13062 vector signed char __b) { 13063 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a, 13064 (vector unsigned char)__b); 13065 } 13066 13067 static int __ATTRS_o_ai vec_any_gt(vector bool char __a, 13068 vector unsigned char __b) { 13069 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a, 13070 __b); 13071 } 13072 13073 static int __ATTRS_o_ai vec_any_gt(vector bool char __a, vector bool char __b) { 13074 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a, 13075 (vector unsigned char)__b); 13076 } 13077 13078 static int __ATTRS_o_ai vec_any_gt(vector short __a, vector short __b) { 13079 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, __b); 13080 } 13081 13082 static int __ATTRS_o_ai vec_any_gt(vector short __a, vector bool short __b) { 13083 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, (vector short)__b); 13084 } 13085 13086 static int __ATTRS_o_ai vec_any_gt(vector unsigned short __a, 13087 vector unsigned short __b) { 13088 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a, __b); 13089 } 13090 13091 static int __ATTRS_o_ai vec_any_gt(vector unsigned short __a, 13092 vector bool short __b) { 13093 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a, 13094 (vector unsigned short)__b); 13095 } 13096 13097 static int __ATTRS_o_ai vec_any_gt(vector bool short __a, vector short __b) { 13098 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a, 13099 (vector unsigned short)__b); 13100 } 13101 13102 static int __ATTRS_o_ai vec_any_gt(vector bool short __a, 13103 vector unsigned short __b) { 13104 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a, 13105 __b); 13106 } 13107 13108 static int __ATTRS_o_ai vec_any_gt(vector bool short __a, 13109 vector bool short __b) { 13110 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a, 13111 (vector unsigned short)__b); 13112 } 13113 13114 static int __ATTRS_o_ai vec_any_gt(vector int __a, vector int __b) { 13115 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, __b); 13116 } 13117 13118 static int __ATTRS_o_ai vec_any_gt(vector int __a, vector bool int __b) { 13119 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, (vector int)__b); 13120 } 13121 13122 static int __ATTRS_o_ai vec_any_gt(vector unsigned int __a, 13123 vector unsigned int __b) { 13124 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a, __b); 13125 } 13126 13127 static int __ATTRS_o_ai vec_any_gt(vector unsigned int __a, 13128 vector bool int __b) { 13129 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a, 13130 (vector unsigned int)__b); 13131 } 13132 13133 static int __ATTRS_o_ai vec_any_gt(vector bool int __a, vector int __b) { 13134 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a, 13135 (vector unsigned int)__b); 13136 } 13137 13138 static int __ATTRS_o_ai vec_any_gt(vector bool int __a, 13139 vector unsigned int __b) { 13140 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a, 13141 __b); 13142 } 13143 13144 static int __ATTRS_o_ai vec_any_gt(vector bool int __a, vector bool int __b) { 13145 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a, 13146 (vector unsigned int)__b); 13147 } 13148 13149 #ifdef __POWER8_VECTOR__ 13150 static int __ATTRS_o_ai vec_any_gt(vector signed long long __a, 13151 vector signed long long __b) { 13152 return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a, __b); 13153 } 13154 13155 static int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a, 13156 vector unsigned long long __b) { 13157 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a, __b); 13158 } 13159 13160 static int __ATTRS_o_ai vec_any_gt(vector signed long long __a, 13161 vector bool long long __b) { 13162 return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a, 13163 (vector signed long long)__b); 13164 } 13165 13166 static int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a, 13167 vector bool long long __b) { 13168 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a, 13169 (vector unsigned long long)__b); 13170 } 13171 13172 static int __ATTRS_o_ai vec_any_gt(vector bool long long __a, 13173 vector signed long long __b) { 13174 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, 13175 (vector unsigned long long)__a, 13176 (vector unsigned long long)__b); 13177 } 13178 13179 static int __ATTRS_o_ai vec_any_gt(vector bool long long __a, 13180 vector unsigned long long __b) { 13181 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, 13182 (vector unsigned long long)__a, __b); 13183 } 13184 13185 static int __ATTRS_o_ai vec_any_gt(vector bool long long __a, 13186 vector bool long long __b) { 13187 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, 13188 (vector unsigned long long)__a, 13189 (vector unsigned long long)__b); 13190 } 13191 #endif 13192 13193 static int __ATTRS_o_ai vec_any_gt(vector float __a, vector float __b) { 13194 #ifdef __VSX__ 13195 return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ_REV, __a, __b); 13196 #else 13197 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __a, __b); 13198 #endif 13199 } 13200 13201 #ifdef __VSX__ 13202 static int __ATTRS_o_ai vec_any_gt(vector double __a, vector double __b) { 13203 return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ_REV, __a, __b); 13204 } 13205 #endif 13206 13207 /* vec_any_le */ 13208 13209 static int __ATTRS_o_ai vec_any_le(vector signed char __a, 13210 vector signed char __b) { 13211 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a, __b); 13212 } 13213 13214 static int __ATTRS_o_ai vec_any_le(vector signed char __a, 13215 vector bool char __b) { 13216 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a, 13217 (vector signed char)__b); 13218 } 13219 13220 static int __ATTRS_o_ai vec_any_le(vector unsigned char __a, 13221 vector unsigned char __b) { 13222 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a, __b); 13223 } 13224 13225 static int __ATTRS_o_ai vec_any_le(vector unsigned char __a, 13226 vector bool char __b) { 13227 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a, 13228 (vector unsigned char)__b); 13229 } 13230 13231 static int __ATTRS_o_ai vec_any_le(vector bool char __a, 13232 vector signed char __b) { 13233 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a, 13234 (vector unsigned char)__b); 13235 } 13236 13237 static int __ATTRS_o_ai vec_any_le(vector bool char __a, 13238 vector unsigned char __b) { 13239 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a, 13240 __b); 13241 } 13242 13243 static int __ATTRS_o_ai vec_any_le(vector bool char __a, vector bool char __b) { 13244 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a, 13245 (vector unsigned char)__b); 13246 } 13247 13248 static int __ATTRS_o_ai vec_any_le(vector short __a, vector short __b) { 13249 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, __b); 13250 } 13251 13252 static int __ATTRS_o_ai vec_any_le(vector short __a, vector bool short __b) { 13253 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, (vector short)__b); 13254 } 13255 13256 static int __ATTRS_o_ai vec_any_le(vector unsigned short __a, 13257 vector unsigned short __b) { 13258 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a, __b); 13259 } 13260 13261 static int __ATTRS_o_ai vec_any_le(vector unsigned short __a, 13262 vector bool short __b) { 13263 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a, 13264 (vector unsigned short)__b); 13265 } 13266 13267 static int __ATTRS_o_ai vec_any_le(vector bool short __a, vector short __b) { 13268 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a, 13269 (vector unsigned short)__b); 13270 } 13271 13272 static int __ATTRS_o_ai vec_any_le(vector bool short __a, 13273 vector unsigned short __b) { 13274 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a, 13275 __b); 13276 } 13277 13278 static int __ATTRS_o_ai vec_any_le(vector bool short __a, 13279 vector bool short __b) { 13280 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a, 13281 (vector unsigned short)__b); 13282 } 13283 13284 static int __ATTRS_o_ai vec_any_le(vector int __a, vector int __b) { 13285 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, __b); 13286 } 13287 13288 static int __ATTRS_o_ai vec_any_le(vector int __a, vector bool int __b) { 13289 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, (vector int)__b); 13290 } 13291 13292 static int __ATTRS_o_ai vec_any_le(vector unsigned int __a, 13293 vector unsigned int __b) { 13294 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a, __b); 13295 } 13296 13297 static int __ATTRS_o_ai vec_any_le(vector unsigned int __a, 13298 vector bool int __b) { 13299 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a, 13300 (vector unsigned int)__b); 13301 } 13302 13303 static int __ATTRS_o_ai vec_any_le(vector bool int __a, vector int __b) { 13304 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a, 13305 (vector unsigned int)__b); 13306 } 13307 13308 static int __ATTRS_o_ai vec_any_le(vector bool int __a, 13309 vector unsigned int __b) { 13310 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a, 13311 __b); 13312 } 13313 13314 static int __ATTRS_o_ai vec_any_le(vector bool int __a, vector bool int __b) { 13315 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a, 13316 (vector unsigned int)__b); 13317 } 13318 13319 #ifdef __POWER8_VECTOR__ 13320 static int __ATTRS_o_ai vec_any_le(vector signed long long __a, 13321 vector signed long long __b) { 13322 return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a, __b); 13323 } 13324 13325 static int __ATTRS_o_ai vec_any_le(vector unsigned long long __a, 13326 vector unsigned long long __b) { 13327 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a, __b); 13328 } 13329 13330 static int __ATTRS_o_ai vec_any_le(vector signed long long __a, 13331 vector bool long long __b) { 13332 return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a, 13333 (vector signed long long)__b); 13334 } 13335 13336 static int __ATTRS_o_ai vec_any_le(vector unsigned long long __a, 13337 vector bool long long __b) { 13338 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a, 13339 (vector unsigned long long)__b); 13340 } 13341 13342 static int __ATTRS_o_ai vec_any_le(vector bool long long __a, 13343 vector signed long long __b) { 13344 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, 13345 (vector unsigned long long)__a, 13346 (vector unsigned long long)__b); 13347 } 13348 13349 static int __ATTRS_o_ai vec_any_le(vector bool long long __a, 13350 vector unsigned long long __b) { 13351 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, 13352 (vector unsigned long long)__a, __b); 13353 } 13354 13355 static int __ATTRS_o_ai vec_any_le(vector bool long long __a, 13356 vector bool long long __b) { 13357 return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, 13358 (vector unsigned long long)__a, 13359 (vector unsigned long long)__b); 13360 } 13361 #endif 13362 13363 static int __ATTRS_o_ai vec_any_le(vector float __a, vector float __b) { 13364 #ifdef __VSX__ 13365 return __builtin_vsx_xvcmpgesp_p(__CR6_EQ_REV, __b, __a); 13366 #else 13367 return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __b, __a); 13368 #endif 13369 } 13370 13371 #ifdef __VSX__ 13372 static int __ATTRS_o_ai vec_any_le(vector double __a, vector double __b) { 13373 return __builtin_vsx_xvcmpgedp_p(__CR6_EQ_REV, __b, __a); 13374 } 13375 #endif 13376 13377 /* vec_any_lt */ 13378 13379 static int __ATTRS_o_ai vec_any_lt(vector signed char __a, 13380 vector signed char __b) { 13381 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __b, __a); 13382 } 13383 13384 static int __ATTRS_o_ai vec_any_lt(vector signed char __a, 13385 vector bool char __b) { 13386 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, (vector signed char)__b, 13387 __a); 13388 } 13389 13390 static int __ATTRS_o_ai vec_any_lt(vector unsigned char __a, 13391 vector unsigned char __b) { 13392 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b, __a); 13393 } 13394 13395 static int __ATTRS_o_ai vec_any_lt(vector unsigned char __a, 13396 vector bool char __b) { 13397 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b, 13398 __a); 13399 } 13400 13401 static int __ATTRS_o_ai vec_any_lt(vector bool char __a, 13402 vector signed char __b) { 13403 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b, 13404 (vector unsigned char)__a); 13405 } 13406 13407 static int __ATTRS_o_ai vec_any_lt(vector bool char __a, 13408 vector unsigned char __b) { 13409 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b, 13410 (vector unsigned char)__a); 13411 } 13412 13413 static int __ATTRS_o_ai vec_any_lt(vector bool char __a, vector bool char __b) { 13414 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b, 13415 (vector unsigned char)__a); 13416 } 13417 13418 static int __ATTRS_o_ai vec_any_lt(vector short __a, vector short __b) { 13419 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __b, __a); 13420 } 13421 13422 static int __ATTRS_o_ai vec_any_lt(vector short __a, vector bool short __b) { 13423 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, (vector short)__b, __a); 13424 } 13425 13426 static int __ATTRS_o_ai vec_any_lt(vector unsigned short __a, 13427 vector unsigned short __b) { 13428 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b, __a); 13429 } 13430 13431 static int __ATTRS_o_ai vec_any_lt(vector unsigned short __a, 13432 vector bool short __b) { 13433 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b, 13434 __a); 13435 } 13436 13437 static int __ATTRS_o_ai vec_any_lt(vector bool short __a, vector short __b) { 13438 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b, 13439 (vector unsigned short)__a); 13440 } 13441 13442 static int __ATTRS_o_ai vec_any_lt(vector bool short __a, 13443 vector unsigned short __b) { 13444 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b, 13445 (vector unsigned short)__a); 13446 } 13447 13448 static int __ATTRS_o_ai vec_any_lt(vector bool short __a, 13449 vector bool short __b) { 13450 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b, 13451 (vector unsigned short)__a); 13452 } 13453 13454 static int __ATTRS_o_ai vec_any_lt(vector int __a, vector int __b) { 13455 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __b, __a); 13456 } 13457 13458 static int __ATTRS_o_ai vec_any_lt(vector int __a, vector bool int __b) { 13459 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, (vector int)__b, __a); 13460 } 13461 13462 static int __ATTRS_o_ai vec_any_lt(vector unsigned int __a, 13463 vector unsigned int __b) { 13464 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b, __a); 13465 } 13466 13467 static int __ATTRS_o_ai vec_any_lt(vector unsigned int __a, 13468 vector bool int __b) { 13469 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b, 13470 __a); 13471 } 13472 13473 static int __ATTRS_o_ai vec_any_lt(vector bool int __a, vector int __b) { 13474 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b, 13475 (vector unsigned int)__a); 13476 } 13477 13478 static int __ATTRS_o_ai vec_any_lt(vector bool int __a, 13479 vector unsigned int __b) { 13480 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b, 13481 (vector unsigned int)__a); 13482 } 13483 13484 static int __ATTRS_o_ai vec_any_lt(vector bool int __a, vector bool int __b) { 13485 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b, 13486 (vector unsigned int)__a); 13487 } 13488 13489 #ifdef __POWER8_VECTOR__ 13490 static int __ATTRS_o_ai vec_any_lt(vector signed long long __a, 13491 vector signed long long __b) { 13492 return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __b, __a); 13493 } 13494 13495 static int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a, 13496 vector unsigned long long __b) { 13497 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b, __a); 13498 } 13499 13500 static int __ATTRS_o_ai vec_any_lt(vector signed long long __a, 13501 vector bool long long __b) { 13502 return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, 13503 (vector signed long long)__b, __a); 13504 } 13505 13506 static int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a, 13507 vector bool long long __b) { 13508 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, 13509 (vector unsigned long long)__b, __a); 13510 } 13511 13512 static int __ATTRS_o_ai vec_any_lt(vector bool long long __a, 13513 vector signed long long __b) { 13514 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, 13515 (vector unsigned long long)__b, 13516 (vector unsigned long long)__a); 13517 } 13518 13519 static int __ATTRS_o_ai vec_any_lt(vector bool long long __a, 13520 vector unsigned long long __b) { 13521 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b, 13522 (vector unsigned long long)__a); 13523 } 13524 13525 static int __ATTRS_o_ai vec_any_lt(vector bool long long __a, 13526 vector bool long long __b) { 13527 return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, 13528 (vector unsigned long long)__b, 13529 (vector unsigned long long)__a); 13530 } 13531 #endif 13532 13533 static int __ATTRS_o_ai vec_any_lt(vector float __a, vector float __b) { 13534 #ifdef __VSX__ 13535 return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ_REV, __b, __a); 13536 #else 13537 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __b, __a); 13538 #endif 13539 } 13540 13541 #ifdef __VSX__ 13542 static int __ATTRS_o_ai vec_any_lt(vector double __a, vector double __b) { 13543 return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ_REV, __b, __a); 13544 } 13545 #endif 13546 13547 /* vec_any_nan */ 13548 13549 static int __attribute__((__always_inline__)) vec_any_nan(vector float __a) { 13550 return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __a); 13551 } 13552 13553 /* vec_any_ne */ 13554 13555 static int __ATTRS_o_ai vec_any_ne(vector signed char __a, 13556 vector signed char __b) { 13557 return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, 13558 (vector char)__b); 13559 } 13560 13561 static int __ATTRS_o_ai vec_any_ne(vector signed char __a, 13562 vector bool char __b) { 13563 return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, 13564 (vector char)__b); 13565 } 13566 13567 static int __ATTRS_o_ai vec_any_ne(vector unsigned char __a, 13568 vector unsigned char __b) { 13569 return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, 13570 (vector char)__b); 13571 } 13572 13573 static int __ATTRS_o_ai vec_any_ne(vector unsigned char __a, 13574 vector bool char __b) { 13575 return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, 13576 (vector char)__b); 13577 } 13578 13579 static int __ATTRS_o_ai vec_any_ne(vector bool char __a, 13580 vector signed char __b) { 13581 return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, 13582 (vector char)__b); 13583 } 13584 13585 static int __ATTRS_o_ai vec_any_ne(vector bool char __a, 13586 vector unsigned char __b) { 13587 return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, 13588 (vector char)__b); 13589 } 13590 13591 static int __ATTRS_o_ai vec_any_ne(vector bool char __a, vector bool char __b) { 13592 return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, 13593 (vector char)__b); 13594 } 13595 13596 static int __ATTRS_o_ai vec_any_ne(vector short __a, vector short __b) { 13597 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, __b); 13598 } 13599 13600 static int __ATTRS_o_ai vec_any_ne(vector short __a, vector bool short __b) { 13601 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, (vector short)__b); 13602 } 13603 13604 static int __ATTRS_o_ai vec_any_ne(vector unsigned short __a, 13605 vector unsigned short __b) { 13606 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a, 13607 (vector short)__b); 13608 } 13609 13610 static int __ATTRS_o_ai vec_any_ne(vector unsigned short __a, 13611 vector bool short __b) { 13612 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a, 13613 (vector short)__b); 13614 } 13615 13616 static int __ATTRS_o_ai vec_any_ne(vector bool short __a, vector short __b) { 13617 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a, 13618 (vector short)__b); 13619 } 13620 13621 static int __ATTRS_o_ai vec_any_ne(vector bool short __a, 13622 vector unsigned short __b) { 13623 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a, 13624 (vector short)__b); 13625 } 13626 13627 static int __ATTRS_o_ai vec_any_ne(vector bool short __a, 13628 vector bool short __b) { 13629 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a, 13630 (vector short)__b); 13631 } 13632 13633 static int __ATTRS_o_ai vec_any_ne(vector pixel __a, vector pixel __b) { 13634 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a, 13635 (vector short)__b); 13636 } 13637 13638 static int __ATTRS_o_ai vec_any_ne(vector int __a, vector int __b) { 13639 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, __b); 13640 } 13641 13642 static int __ATTRS_o_ai vec_any_ne(vector int __a, vector bool int __b) { 13643 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, (vector int)__b); 13644 } 13645 13646 static int __ATTRS_o_ai vec_any_ne(vector unsigned int __a, 13647 vector unsigned int __b) { 13648 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, 13649 (vector int)__b); 13650 } 13651 13652 static int __ATTRS_o_ai vec_any_ne(vector unsigned int __a, 13653 vector bool int __b) { 13654 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, 13655 (vector int)__b); 13656 } 13657 13658 static int __ATTRS_o_ai vec_any_ne(vector bool int __a, vector int __b) { 13659 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, 13660 (vector int)__b); 13661 } 13662 13663 static int __ATTRS_o_ai vec_any_ne(vector bool int __a, 13664 vector unsigned int __b) { 13665 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, 13666 (vector int)__b); 13667 } 13668 13669 static int __ATTRS_o_ai vec_any_ne(vector bool int __a, vector bool int __b) { 13670 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, 13671 (vector int)__b); 13672 } 13673 13674 #ifdef __POWER8_VECTOR__ 13675 static int __ATTRS_o_ai vec_any_ne(vector signed long long __a, 13676 vector signed long long __b) { 13677 return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a, __b); 13678 } 13679 13680 static int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a, 13681 vector unsigned long long __b) { 13682 return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, (vector long long)__a, 13683 (vector long long)__b); 13684 } 13685 13686 static int __ATTRS_o_ai vec_any_ne(vector signed long long __a, 13687 vector bool long long __b) { 13688 return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a, 13689 (vector signed long long)__b); 13690 } 13691 13692 static int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a, 13693 vector bool long long __b) { 13694 return __builtin_altivec_vcmpequd_p( 13695 __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b); 13696 } 13697 13698 static int __ATTRS_o_ai vec_any_ne(vector bool long long __a, 13699 vector signed long long __b) { 13700 return __builtin_altivec_vcmpequd_p( 13701 __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b); 13702 } 13703 13704 static int __ATTRS_o_ai vec_any_ne(vector bool long long __a, 13705 vector unsigned long long __b) { 13706 return __builtin_altivec_vcmpequd_p( 13707 __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b); 13708 } 13709 13710 static int __ATTRS_o_ai vec_any_ne(vector bool long long __a, 13711 vector bool long long __b) { 13712 return __builtin_altivec_vcmpequd_p( 13713 __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b); 13714 } 13715 #endif 13716 13717 static int __ATTRS_o_ai vec_any_ne(vector float __a, vector float __b) { 13718 #ifdef __VSX__ 13719 return __builtin_vsx_xvcmpeqsp_p(__CR6_LT_REV, __a, __b); 13720 #else 13721 return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __b); 13722 #endif 13723 } 13724 13725 #ifdef __VSX__ 13726 static int __ATTRS_o_ai vec_any_ne(vector double __a, vector double __b) { 13727 return __builtin_vsx_xvcmpeqdp_p(__CR6_LT_REV, __a, __b); 13728 } 13729 #endif 13730 13731 /* vec_any_nge */ 13732 13733 static int __attribute__((__always_inline__)) 13734 vec_any_nge(vector float __a, vector float __b) { 13735 return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __a, __b); 13736 } 13737 13738 /* vec_any_ngt */ 13739 13740 static int __attribute__((__always_inline__)) 13741 vec_any_ngt(vector float __a, vector float __b) { 13742 return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __a, __b); 13743 } 13744 13745 /* vec_any_nle */ 13746 13747 static int __attribute__((__always_inline__)) 13748 vec_any_nle(vector float __a, vector float __b) { 13749 return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __b, __a); 13750 } 13751 13752 /* vec_any_nlt */ 13753 13754 static int __attribute__((__always_inline__)) 13755 vec_any_nlt(vector float __a, vector float __b) { 13756 return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __b, __a); 13757 } 13758 13759 /* vec_any_numeric */ 13760 13761 static int __attribute__((__always_inline__)) 13762 vec_any_numeric(vector float __a) { 13763 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __a); 13764 } 13765 13766 /* vec_any_out */ 13767 13768 static int __attribute__((__always_inline__)) 13769 vec_any_out(vector float __a, vector float __b) { 13770 return __builtin_altivec_vcmpbfp_p(__CR6_EQ_REV, __a, __b); 13771 } 13772 13773 /* Power 8 Crypto functions 13774 Note: We diverge from the current GCC implementation with regard 13775 to cryptography and related functions as follows: 13776 - Only the SHA and AES instructions and builtins are disabled by -mno-crypto 13777 - The remaining ones are only available on Power8 and up so 13778 require -mpower8-vector 13779 The justification for this is that export requirements require that 13780 Category:Vector.Crypto is optional (i.e. compliant hardware may not provide 13781 support). As a result, we need to be able to turn off support for those. 13782 The remaining ones (currently controlled by -mcrypto for GCC) still 13783 need to be provided on compliant hardware even if Vector.Crypto is not 13784 provided. 13785 */ 13786 #ifdef __CRYPTO__ 13787 #define vec_sbox_be __builtin_altivec_crypto_vsbox 13788 #define vec_cipher_be __builtin_altivec_crypto_vcipher 13789 #define vec_cipherlast_be __builtin_altivec_crypto_vcipherlast 13790 #define vec_ncipher_be __builtin_altivec_crypto_vncipher 13791 #define vec_ncipherlast_be __builtin_altivec_crypto_vncipherlast 13792 13793 static vector unsigned long long __attribute__((__always_inline__)) 13794 __builtin_crypto_vsbox(vector unsigned long long __a) { 13795 return __builtin_altivec_crypto_vsbox(__a); 13796 } 13797 13798 static vector unsigned long long __attribute__((__always_inline__)) 13799 __builtin_crypto_vcipher(vector unsigned long long __a, 13800 vector unsigned long long __b) { 13801 return __builtin_altivec_crypto_vcipher(__a, __b); 13802 } 13803 13804 static vector unsigned long long __attribute__((__always_inline__)) 13805 __builtin_crypto_vcipherlast(vector unsigned long long __a, 13806 vector unsigned long long __b) { 13807 return __builtin_altivec_crypto_vcipherlast(__a, __b); 13808 } 13809 13810 static vector unsigned long long __attribute__((__always_inline__)) 13811 __builtin_crypto_vncipher(vector unsigned long long __a, 13812 vector unsigned long long __b) { 13813 return __builtin_altivec_crypto_vncipher(__a, __b); 13814 } 13815 13816 static vector unsigned long long __attribute__((__always_inline__)) 13817 __builtin_crypto_vncipherlast(vector unsigned long long __a, 13818 vector unsigned long long __b) { 13819 return __builtin_altivec_crypto_vncipherlast(__a, __b); 13820 } 13821 13822 #define __builtin_crypto_vshasigmad __builtin_altivec_crypto_vshasigmad 13823 #define __builtin_crypto_vshasigmaw __builtin_altivec_crypto_vshasigmaw 13824 13825 #define vec_shasigma_be(X, Y, Z) \ 13826 _Generic((X), vector unsigned int: __builtin_crypto_vshasigmaw, \ 13827 vector unsigned long long: __builtin_crypto_vshasigmad) \ 13828 ((X), (Y), (Z)) 13829 #endif 13830 13831 #ifdef __POWER8_VECTOR__ 13832 static vector unsigned char __ATTRS_o_ai 13833 __builtin_crypto_vpermxor(vector unsigned char __a, vector unsigned char __b, 13834 vector unsigned char __c) { 13835 return __builtin_altivec_crypto_vpermxor(__a, __b, __c); 13836 } 13837 13838 static vector unsigned short __ATTRS_o_ai 13839 __builtin_crypto_vpermxor(vector unsigned short __a, vector unsigned short __b, 13840 vector unsigned short __c) { 13841 return (vector unsigned short)__builtin_altivec_crypto_vpermxor( 13842 (vector unsigned char)__a, (vector unsigned char)__b, 13843 (vector unsigned char)__c); 13844 } 13845 13846 static vector unsigned int __ATTRS_o_ai __builtin_crypto_vpermxor( 13847 vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) { 13848 return (vector unsigned int)__builtin_altivec_crypto_vpermxor( 13849 (vector unsigned char)__a, (vector unsigned char)__b, 13850 (vector unsigned char)__c); 13851 } 13852 13853 static vector unsigned long long __ATTRS_o_ai __builtin_crypto_vpermxor( 13854 vector unsigned long long __a, vector unsigned long long __b, 13855 vector unsigned long long __c) { 13856 return (vector unsigned long long)__builtin_altivec_crypto_vpermxor( 13857 (vector unsigned char)__a, (vector unsigned char)__b, 13858 (vector unsigned char)__c); 13859 } 13860 13861 static vector unsigned char __ATTRS_o_ai 13862 __builtin_crypto_vpmsumb(vector unsigned char __a, vector unsigned char __b) { 13863 return __builtin_altivec_crypto_vpmsumb(__a, __b); 13864 } 13865 13866 static vector unsigned short __ATTRS_o_ai 13867 __builtin_crypto_vpmsumb(vector unsigned short __a, vector unsigned short __b) { 13868 return __builtin_altivec_crypto_vpmsumh(__a, __b); 13869 } 13870 13871 static vector unsigned int __ATTRS_o_ai 13872 __builtin_crypto_vpmsumb(vector unsigned int __a, vector unsigned int __b) { 13873 return __builtin_altivec_crypto_vpmsumw(__a, __b); 13874 } 13875 13876 static vector unsigned long long __ATTRS_o_ai 13877 __builtin_crypto_vpmsumb(vector unsigned long long __a, 13878 vector unsigned long long __b) { 13879 return __builtin_altivec_crypto_vpmsumd(__a, __b); 13880 } 13881 13882 static vector signed char __ATTRS_o_ai vec_vgbbd (vector signed char __a) 13883 { 13884 return __builtin_altivec_vgbbd((vector unsigned char) __a); 13885 } 13886 13887 #define vec_pmsum_be __builtin_crypto_vpmsumb 13888 #define vec_gb __builtin_altivec_vgbbd 13889 13890 static vector unsigned char __ATTRS_o_ai vec_vgbbd (vector unsigned char __a) 13891 { 13892 return __builtin_altivec_vgbbd(__a); 13893 } 13894 13895 static vector long long __ATTRS_o_ai 13896 vec_vbpermq (vector signed char __a, vector signed char __b) 13897 { 13898 return __builtin_altivec_vbpermq((vector unsigned char) __a, 13899 (vector unsigned char) __b); 13900 } 13901 13902 static vector long long __ATTRS_o_ai 13903 vec_vbpermq (vector unsigned char __a, vector unsigned char __b) 13904 { 13905 return __builtin_altivec_vbpermq(__a, __b); 13906 } 13907 13908 #ifdef __powerpc64__ 13909 static vector unsigned long long __attribute__((__always_inline__)) 13910 vec_bperm (vector unsigned __int128 __a, vector unsigned char __b) { 13911 return __builtin_altivec_vbpermq((vector unsigned char) __a, 13912 (vector unsigned char) __b); 13913 } 13914 #endif 13915 #endif 13916 13917 #undef __ATTRS_o_ai 13918 13919 #endif /* __ALTIVEC_H */ 13920