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 40 vec_perm(vector signed char a, vector signed char b, vector unsigned char c); 41 42 static vector unsigned char __ATTRS_o_ai 43 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 48 vec_perm(vector bool char a, vector bool char b, vector unsigned char c); 49 50 static vector short __ATTRS_o_ai 51 vec_perm(vector short a, vector short b, vector unsigned char c); 52 53 static vector unsigned short __ATTRS_o_ai 54 vec_perm(vector unsigned short a, 55 vector unsigned short b, 56 vector unsigned char c); 57 58 static vector bool short __ATTRS_o_ai 59 vec_perm(vector bool short a, vector bool short b, vector unsigned char c); 60 61 static vector pixel __ATTRS_o_ai 62 vec_perm(vector pixel a, vector pixel b, vector unsigned char c); 63 64 static vector int __ATTRS_o_ai 65 vec_perm(vector int a, vector int b, vector unsigned char c); 66 67 static vector unsigned int __ATTRS_o_ai 68 vec_perm(vector unsigned int a, vector unsigned int b, vector unsigned char c); 69 70 static vector bool int __ATTRS_o_ai 71 vec_perm(vector bool int a, vector bool int b, vector unsigned char c); 72 73 static vector float __ATTRS_o_ai 74 vec_perm(vector float a, vector float b, vector unsigned char c); 75 76 /* vec_abs */ 77 78 #define __builtin_altivec_abs_v16qi vec_abs 79 #define __builtin_altivec_abs_v8hi vec_abs 80 #define __builtin_altivec_abs_v4si vec_abs 81 82 static vector signed char __ATTRS_o_ai 83 vec_abs(vector signed char a) 84 { 85 return __builtin_altivec_vmaxsb(a, -a); 86 } 87 88 static vector signed short __ATTRS_o_ai 89 vec_abs(vector signed short a) 90 { 91 return __builtin_altivec_vmaxsh(a, -a); 92 } 93 94 static vector signed int __ATTRS_o_ai 95 vec_abs(vector signed int a) 96 { 97 return __builtin_altivec_vmaxsw(a, -a); 98 } 99 100 static vector float __ATTRS_o_ai 101 vec_abs(vector float a) 102 { 103 vector unsigned int res = (vector unsigned int)a 104 & (vector unsigned int)(0x7FFFFFFF); 105 return (vector float)res; 106 } 107 108 /* vec_abss */ 109 110 #define __builtin_altivec_abss_v16qi vec_abss 111 #define __builtin_altivec_abss_v8hi vec_abss 112 #define __builtin_altivec_abss_v4si vec_abss 113 114 static vector signed char __ATTRS_o_ai 115 vec_abss(vector signed char a) 116 { 117 return __builtin_altivec_vmaxsb 118 (a, __builtin_altivec_vsubsbs((vector signed char)(0), a)); 119 } 120 121 static vector signed short __ATTRS_o_ai 122 vec_abss(vector signed short a) 123 { 124 return __builtin_altivec_vmaxsh 125 (a, __builtin_altivec_vsubshs((vector signed short)(0), a)); 126 } 127 128 static vector signed int __ATTRS_o_ai 129 vec_abss(vector signed int a) 130 { 131 return __builtin_altivec_vmaxsw 132 (a, __builtin_altivec_vsubsws((vector signed int)(0), a)); 133 } 134 135 /* vec_add */ 136 137 static vector signed char __ATTRS_o_ai 138 vec_add(vector signed char a, vector signed char b) 139 { 140 return a + b; 141 } 142 143 static vector signed char __ATTRS_o_ai 144 vec_add(vector bool char a, vector signed char b) 145 { 146 return (vector signed char)a + b; 147 } 148 149 static vector signed char __ATTRS_o_ai 150 vec_add(vector signed char a, vector bool char b) 151 { 152 return a + (vector signed char)b; 153 } 154 155 static vector unsigned char __ATTRS_o_ai 156 vec_add(vector unsigned char a, vector unsigned char b) 157 { 158 return a + b; 159 } 160 161 static vector unsigned char __ATTRS_o_ai 162 vec_add(vector bool char a, vector unsigned char b) 163 { 164 return (vector unsigned char)a + b; 165 } 166 167 static vector unsigned char __ATTRS_o_ai 168 vec_add(vector unsigned char a, vector bool char b) 169 { 170 return a + (vector unsigned char)b; 171 } 172 173 static vector short __ATTRS_o_ai 174 vec_add(vector short a, vector short b) 175 { 176 return a + b; 177 } 178 179 static vector short __ATTRS_o_ai 180 vec_add(vector bool short a, vector short b) 181 { 182 return (vector short)a + b; 183 } 184 185 static vector short __ATTRS_o_ai 186 vec_add(vector short a, vector bool short b) 187 { 188 return a + (vector short)b; 189 } 190 191 static vector unsigned short __ATTRS_o_ai 192 vec_add(vector unsigned short a, vector unsigned short b) 193 { 194 return a + b; 195 } 196 197 static vector unsigned short __ATTRS_o_ai 198 vec_add(vector bool short a, vector unsigned short b) 199 { 200 return (vector unsigned short)a + b; 201 } 202 203 static vector unsigned short __ATTRS_o_ai 204 vec_add(vector unsigned short a, vector bool short b) 205 { 206 return a + (vector unsigned short)b; 207 } 208 209 static vector int __ATTRS_o_ai 210 vec_add(vector int a, vector int b) 211 { 212 return a + b; 213 } 214 215 static vector int __ATTRS_o_ai 216 vec_add(vector bool int a, vector int b) 217 { 218 return (vector int)a + b; 219 } 220 221 static vector int __ATTRS_o_ai 222 vec_add(vector int a, vector bool int b) 223 { 224 return a + (vector int)b; 225 } 226 227 static vector unsigned int __ATTRS_o_ai 228 vec_add(vector unsigned int a, vector unsigned int b) 229 { 230 return a + b; 231 } 232 233 static vector unsigned int __ATTRS_o_ai 234 vec_add(vector bool int a, vector unsigned int b) 235 { 236 return (vector unsigned int)a + b; 237 } 238 239 static vector unsigned int __ATTRS_o_ai 240 vec_add(vector unsigned int a, vector bool int b) 241 { 242 return a + (vector unsigned int)b; 243 } 244 245 static vector float __ATTRS_o_ai 246 vec_add(vector float a, vector float b) 247 { 248 return a + b; 249 } 250 251 /* vec_vaddubm */ 252 253 #define __builtin_altivec_vaddubm vec_vaddubm 254 255 static vector signed char __ATTRS_o_ai 256 vec_vaddubm(vector signed char a, vector signed char b) 257 { 258 return a + b; 259 } 260 261 static vector signed char __ATTRS_o_ai 262 vec_vaddubm(vector bool char a, vector signed char b) 263 { 264 return (vector signed char)a + b; 265 } 266 267 static vector signed char __ATTRS_o_ai 268 vec_vaddubm(vector signed char a, vector bool char b) 269 { 270 return a + (vector signed char)b; 271 } 272 273 static vector unsigned char __ATTRS_o_ai 274 vec_vaddubm(vector unsigned char a, vector unsigned char b) 275 { 276 return a + b; 277 } 278 279 static vector unsigned char __ATTRS_o_ai 280 vec_vaddubm(vector bool char a, vector unsigned char b) 281 { 282 return (vector unsigned char)a + b; 283 } 284 285 static vector unsigned char __ATTRS_o_ai 286 vec_vaddubm(vector unsigned char a, vector bool char b) 287 { 288 return a + (vector unsigned char)b; 289 } 290 291 /* vec_vadduhm */ 292 293 #define __builtin_altivec_vadduhm vec_vadduhm 294 295 static vector short __ATTRS_o_ai 296 vec_vadduhm(vector short a, vector short b) 297 { 298 return a + b; 299 } 300 301 static vector short __ATTRS_o_ai 302 vec_vadduhm(vector bool short a, vector short b) 303 { 304 return (vector short)a + b; 305 } 306 307 static vector short __ATTRS_o_ai 308 vec_vadduhm(vector short a, vector bool short b) 309 { 310 return a + (vector short)b; 311 } 312 313 static vector unsigned short __ATTRS_o_ai 314 vec_vadduhm(vector unsigned short a, vector unsigned short b) 315 { 316 return a + b; 317 } 318 319 static vector unsigned short __ATTRS_o_ai 320 vec_vadduhm(vector bool short a, vector unsigned short b) 321 { 322 return (vector unsigned short)a + b; 323 } 324 325 static vector unsigned short __ATTRS_o_ai 326 vec_vadduhm(vector unsigned short a, vector bool short b) 327 { 328 return a + (vector unsigned short)b; 329 } 330 331 /* vec_vadduwm */ 332 333 #define __builtin_altivec_vadduwm vec_vadduwm 334 335 static vector int __ATTRS_o_ai 336 vec_vadduwm(vector int a, vector int b) 337 { 338 return a + b; 339 } 340 341 static vector int __ATTRS_o_ai 342 vec_vadduwm(vector bool int a, vector int b) 343 { 344 return (vector int)a + b; 345 } 346 347 static vector int __ATTRS_o_ai 348 vec_vadduwm(vector int a, vector bool int b) 349 { 350 return a + (vector int)b; 351 } 352 353 static vector unsigned int __ATTRS_o_ai 354 vec_vadduwm(vector unsigned int a, vector unsigned int b) 355 { 356 return a + b; 357 } 358 359 static vector unsigned int __ATTRS_o_ai 360 vec_vadduwm(vector bool int a, vector unsigned int b) 361 { 362 return (vector unsigned int)a + b; 363 } 364 365 static vector unsigned int __ATTRS_o_ai 366 vec_vadduwm(vector unsigned int a, vector bool int b) 367 { 368 return a + (vector unsigned int)b; 369 } 370 371 /* vec_vaddfp */ 372 373 #define __builtin_altivec_vaddfp vec_vaddfp 374 375 static vector float __attribute__((__always_inline__)) 376 vec_vaddfp(vector float a, vector float b) 377 { 378 return a + b; 379 } 380 381 /* vec_addc */ 382 383 static vector unsigned int __attribute__((__always_inline__)) 384 vec_addc(vector unsigned int a, vector unsigned int b) 385 { 386 return __builtin_altivec_vaddcuw(a, b); 387 } 388 389 /* vec_vaddcuw */ 390 391 static vector unsigned int __attribute__((__always_inline__)) 392 vec_vaddcuw(vector unsigned int a, vector unsigned int b) 393 { 394 return __builtin_altivec_vaddcuw(a, b); 395 } 396 397 /* vec_adds */ 398 399 static vector signed char __ATTRS_o_ai 400 vec_adds(vector signed char a, vector signed char b) 401 { 402 return __builtin_altivec_vaddsbs(a, b); 403 } 404 405 static vector signed char __ATTRS_o_ai 406 vec_adds(vector bool char a, vector signed char b) 407 { 408 return __builtin_altivec_vaddsbs((vector signed char)a, b); 409 } 410 411 static vector signed char __ATTRS_o_ai 412 vec_adds(vector signed char a, vector bool char b) 413 { 414 return __builtin_altivec_vaddsbs(a, (vector signed char)b); 415 } 416 417 static vector unsigned char __ATTRS_o_ai 418 vec_adds(vector unsigned char a, vector unsigned char b) 419 { 420 return __builtin_altivec_vaddubs(a, b); 421 } 422 423 static vector unsigned char __ATTRS_o_ai 424 vec_adds(vector bool char a, vector unsigned char b) 425 { 426 return __builtin_altivec_vaddubs((vector unsigned char)a, b); 427 } 428 429 static vector unsigned char __ATTRS_o_ai 430 vec_adds(vector unsigned char a, vector bool char b) 431 { 432 return __builtin_altivec_vaddubs(a, (vector unsigned char)b); 433 } 434 435 static vector short __ATTRS_o_ai 436 vec_adds(vector short a, vector short b) 437 { 438 return __builtin_altivec_vaddshs(a, b); 439 } 440 441 static vector short __ATTRS_o_ai 442 vec_adds(vector bool short a, vector short b) 443 { 444 return __builtin_altivec_vaddshs((vector short)a, b); 445 } 446 447 static vector short __ATTRS_o_ai 448 vec_adds(vector short a, vector bool short b) 449 { 450 return __builtin_altivec_vaddshs(a, (vector short)b); 451 } 452 453 static vector unsigned short __ATTRS_o_ai 454 vec_adds(vector unsigned short a, vector unsigned short b) 455 { 456 return __builtin_altivec_vadduhs(a, b); 457 } 458 459 static vector unsigned short __ATTRS_o_ai 460 vec_adds(vector bool short a, vector unsigned short b) 461 { 462 return __builtin_altivec_vadduhs((vector unsigned short)a, b); 463 } 464 465 static vector unsigned short __ATTRS_o_ai 466 vec_adds(vector unsigned short a, vector bool short b) 467 { 468 return __builtin_altivec_vadduhs(a, (vector unsigned short)b); 469 } 470 471 static vector int __ATTRS_o_ai 472 vec_adds(vector int a, vector int b) 473 { 474 return __builtin_altivec_vaddsws(a, b); 475 } 476 477 static vector int __ATTRS_o_ai 478 vec_adds(vector bool int a, vector int b) 479 { 480 return __builtin_altivec_vaddsws((vector int)a, b); 481 } 482 483 static vector int __ATTRS_o_ai 484 vec_adds(vector int a, vector bool int b) 485 { 486 return __builtin_altivec_vaddsws(a, (vector int)b); 487 } 488 489 static vector unsigned int __ATTRS_o_ai 490 vec_adds(vector unsigned int a, vector unsigned int b) 491 { 492 return __builtin_altivec_vadduws(a, b); 493 } 494 495 static vector unsigned int __ATTRS_o_ai 496 vec_adds(vector bool int a, vector unsigned int b) 497 { 498 return __builtin_altivec_vadduws((vector unsigned int)a, b); 499 } 500 501 static vector unsigned int __ATTRS_o_ai 502 vec_adds(vector unsigned int a, vector bool int b) 503 { 504 return __builtin_altivec_vadduws(a, (vector unsigned int)b); 505 } 506 507 /* vec_vaddsbs */ 508 509 static vector signed char __ATTRS_o_ai 510 vec_vaddsbs(vector signed char a, vector signed char b) 511 { 512 return __builtin_altivec_vaddsbs(a, b); 513 } 514 515 static vector signed char __ATTRS_o_ai 516 vec_vaddsbs(vector bool char a, vector signed char b) 517 { 518 return __builtin_altivec_vaddsbs((vector signed char)a, b); 519 } 520 521 static vector signed char __ATTRS_o_ai 522 vec_vaddsbs(vector signed char a, vector bool char b) 523 { 524 return __builtin_altivec_vaddsbs(a, (vector signed char)b); 525 } 526 527 /* vec_vaddubs */ 528 529 static vector unsigned char __ATTRS_o_ai 530 vec_vaddubs(vector unsigned char a, vector unsigned char b) 531 { 532 return __builtin_altivec_vaddubs(a, b); 533 } 534 535 static vector unsigned char __ATTRS_o_ai 536 vec_vaddubs(vector bool char a, vector unsigned char b) 537 { 538 return __builtin_altivec_vaddubs((vector unsigned char)a, b); 539 } 540 541 static vector unsigned char __ATTRS_o_ai 542 vec_vaddubs(vector unsigned char a, vector bool char b) 543 { 544 return __builtin_altivec_vaddubs(a, (vector unsigned char)b); 545 } 546 547 /* vec_vaddshs */ 548 549 static vector short __ATTRS_o_ai 550 vec_vaddshs(vector short a, vector short b) 551 { 552 return __builtin_altivec_vaddshs(a, b); 553 } 554 555 static vector short __ATTRS_o_ai 556 vec_vaddshs(vector bool short a, vector short b) 557 { 558 return __builtin_altivec_vaddshs((vector short)a, b); 559 } 560 561 static vector short __ATTRS_o_ai 562 vec_vaddshs(vector short a, vector bool short b) 563 { 564 return __builtin_altivec_vaddshs(a, (vector short)b); 565 } 566 567 /* vec_vadduhs */ 568 569 static vector unsigned short __ATTRS_o_ai 570 vec_vadduhs(vector unsigned short a, vector unsigned short b) 571 { 572 return __builtin_altivec_vadduhs(a, b); 573 } 574 575 static vector unsigned short __ATTRS_o_ai 576 vec_vadduhs(vector bool short a, vector unsigned short b) 577 { 578 return __builtin_altivec_vadduhs((vector unsigned short)a, b); 579 } 580 581 static vector unsigned short __ATTRS_o_ai 582 vec_vadduhs(vector unsigned short a, vector bool short b) 583 { 584 return __builtin_altivec_vadduhs(a, (vector unsigned short)b); 585 } 586 587 /* vec_vaddsws */ 588 589 static vector int __ATTRS_o_ai 590 vec_vaddsws(vector int a, vector int b) 591 { 592 return __builtin_altivec_vaddsws(a, b); 593 } 594 595 static vector int __ATTRS_o_ai 596 vec_vaddsws(vector bool int a, vector int b) 597 { 598 return __builtin_altivec_vaddsws((vector int)a, b); 599 } 600 601 static vector int __ATTRS_o_ai 602 vec_vaddsws(vector int a, vector bool int b) 603 { 604 return __builtin_altivec_vaddsws(a, (vector int)b); 605 } 606 607 /* vec_vadduws */ 608 609 static vector unsigned int __ATTRS_o_ai 610 vec_vadduws(vector unsigned int a, vector unsigned int b) 611 { 612 return __builtin_altivec_vadduws(a, b); 613 } 614 615 static vector unsigned int __ATTRS_o_ai 616 vec_vadduws(vector bool int a, vector unsigned int b) 617 { 618 return __builtin_altivec_vadduws((vector unsigned int)a, b); 619 } 620 621 static vector unsigned int __ATTRS_o_ai 622 vec_vadduws(vector unsigned int a, vector bool int b) 623 { 624 return __builtin_altivec_vadduws(a, (vector unsigned int)b); 625 } 626 627 /* vec_and */ 628 629 #define __builtin_altivec_vand vec_and 630 631 static vector signed char __ATTRS_o_ai 632 vec_and(vector signed char a, vector signed char b) 633 { 634 return a & b; 635 } 636 637 static vector signed char __ATTRS_o_ai 638 vec_and(vector bool char a, vector signed char b) 639 { 640 return (vector signed char)a & b; 641 } 642 643 static vector signed char __ATTRS_o_ai 644 vec_and(vector signed char a, vector bool char b) 645 { 646 return a & (vector signed char)b; 647 } 648 649 static vector unsigned char __ATTRS_o_ai 650 vec_and(vector unsigned char a, vector unsigned char b) 651 { 652 return a & b; 653 } 654 655 static vector unsigned char __ATTRS_o_ai 656 vec_and(vector bool char a, vector unsigned char b) 657 { 658 return (vector unsigned char)a & b; 659 } 660 661 static vector unsigned char __ATTRS_o_ai 662 vec_and(vector unsigned char a, vector bool char b) 663 { 664 return a & (vector unsigned char)b; 665 } 666 667 static vector bool char __ATTRS_o_ai 668 vec_and(vector bool char a, vector bool char b) 669 { 670 return a & b; 671 } 672 673 static vector short __ATTRS_o_ai 674 vec_and(vector short a, vector short b) 675 { 676 return a & b; 677 } 678 679 static vector short __ATTRS_o_ai 680 vec_and(vector bool short a, vector short b) 681 { 682 return (vector short)a & b; 683 } 684 685 static vector short __ATTRS_o_ai 686 vec_and(vector short a, vector bool short b) 687 { 688 return a & (vector short)b; 689 } 690 691 static vector unsigned short __ATTRS_o_ai 692 vec_and(vector unsigned short a, vector unsigned short b) 693 { 694 return a & b; 695 } 696 697 static vector unsigned short __ATTRS_o_ai 698 vec_and(vector bool short a, vector unsigned short b) 699 { 700 return (vector unsigned short)a & b; 701 } 702 703 static vector unsigned short __ATTRS_o_ai 704 vec_and(vector unsigned short a, vector bool short b) 705 { 706 return a & (vector unsigned short)b; 707 } 708 709 static vector bool short __ATTRS_o_ai 710 vec_and(vector bool short a, vector bool short b) 711 { 712 return a & b; 713 } 714 715 static vector int __ATTRS_o_ai 716 vec_and(vector int a, vector int b) 717 { 718 return a & b; 719 } 720 721 static vector int __ATTRS_o_ai 722 vec_and(vector bool int a, vector int b) 723 { 724 return (vector int)a & b; 725 } 726 727 static vector int __ATTRS_o_ai 728 vec_and(vector int a, vector bool int b) 729 { 730 return a & (vector int)b; 731 } 732 733 static vector unsigned int __ATTRS_o_ai 734 vec_and(vector unsigned int a, vector unsigned int b) 735 { 736 return a & b; 737 } 738 739 static vector unsigned int __ATTRS_o_ai 740 vec_and(vector bool int a, vector unsigned int b) 741 { 742 return (vector unsigned int)a & b; 743 } 744 745 static vector unsigned int __ATTRS_o_ai 746 vec_and(vector unsigned int a, vector bool int b) 747 { 748 return a & (vector unsigned int)b; 749 } 750 751 static vector bool int __ATTRS_o_ai 752 vec_and(vector bool int a, vector bool int b) 753 { 754 return a & b; 755 } 756 757 static vector float __ATTRS_o_ai 758 vec_and(vector float a, vector float b) 759 { 760 vector unsigned int res = (vector unsigned int)a & (vector unsigned int)b; 761 return (vector float)res; 762 } 763 764 static vector float __ATTRS_o_ai 765 vec_and(vector bool int a, vector float b) 766 { 767 vector unsigned int res = (vector unsigned int)a & (vector unsigned int)b; 768 return (vector float)res; 769 } 770 771 static vector float __ATTRS_o_ai 772 vec_and(vector float a, vector bool int b) 773 { 774 vector unsigned int res = (vector unsigned int)a & (vector unsigned int)b; 775 return (vector float)res; 776 } 777 778 /* vec_vand */ 779 780 static vector signed char __ATTRS_o_ai 781 vec_vand(vector signed char a, vector signed char b) 782 { 783 return a & b; 784 } 785 786 static vector signed char __ATTRS_o_ai 787 vec_vand(vector bool char a, vector signed char b) 788 { 789 return (vector signed char)a & b; 790 } 791 792 static vector signed char __ATTRS_o_ai 793 vec_vand(vector signed char a, vector bool char b) 794 { 795 return a & (vector signed char)b; 796 } 797 798 static vector unsigned char __ATTRS_o_ai 799 vec_vand(vector unsigned char a, vector unsigned char b) 800 { 801 return a & b; 802 } 803 804 static vector unsigned char __ATTRS_o_ai 805 vec_vand(vector bool char a, vector unsigned char b) 806 { 807 return (vector unsigned char)a & b; 808 } 809 810 static vector unsigned char __ATTRS_o_ai 811 vec_vand(vector unsigned char a, vector bool char b) 812 { 813 return a & (vector unsigned char)b; 814 } 815 816 static vector bool char __ATTRS_o_ai 817 vec_vand(vector bool char a, vector bool char b) 818 { 819 return a & b; 820 } 821 822 static vector short __ATTRS_o_ai 823 vec_vand(vector short a, vector short b) 824 { 825 return a & b; 826 } 827 828 static vector short __ATTRS_o_ai 829 vec_vand(vector bool short a, vector short b) 830 { 831 return (vector short)a & b; 832 } 833 834 static vector short __ATTRS_o_ai 835 vec_vand(vector short a, vector bool short b) 836 { 837 return a & (vector short)b; 838 } 839 840 static vector unsigned short __ATTRS_o_ai 841 vec_vand(vector unsigned short a, vector unsigned short b) 842 { 843 return a & b; 844 } 845 846 static vector unsigned short __ATTRS_o_ai 847 vec_vand(vector bool short a, vector unsigned short b) 848 { 849 return (vector unsigned short)a & b; 850 } 851 852 static vector unsigned short __ATTRS_o_ai 853 vec_vand(vector unsigned short a, vector bool short b) 854 { 855 return a & (vector unsigned short)b; 856 } 857 858 static vector bool short __ATTRS_o_ai 859 vec_vand(vector bool short a, vector bool short b) 860 { 861 return a & b; 862 } 863 864 static vector int __ATTRS_o_ai 865 vec_vand(vector int a, vector int b) 866 { 867 return a & b; 868 } 869 870 static vector int __ATTRS_o_ai 871 vec_vand(vector bool int a, vector int b) 872 { 873 return (vector int)a & b; 874 } 875 876 static vector int __ATTRS_o_ai 877 vec_vand(vector int a, vector bool int b) 878 { 879 return a & (vector int)b; 880 } 881 882 static vector unsigned int __ATTRS_o_ai 883 vec_vand(vector unsigned int a, vector unsigned int b) 884 { 885 return a & b; 886 } 887 888 static vector unsigned int __ATTRS_o_ai 889 vec_vand(vector bool int a, vector unsigned int b) 890 { 891 return (vector unsigned int)a & b; 892 } 893 894 static vector unsigned int __ATTRS_o_ai 895 vec_vand(vector unsigned int a, vector bool int b) 896 { 897 return a & (vector unsigned int)b; 898 } 899 900 static vector bool int __ATTRS_o_ai 901 vec_vand(vector bool int a, vector bool int b) 902 { 903 return a & b; 904 } 905 906 static vector float __ATTRS_o_ai 907 vec_vand(vector float a, vector float b) 908 { 909 vector unsigned int res = (vector unsigned int)a & (vector unsigned int)b; 910 return (vector float)res; 911 } 912 913 static vector float __ATTRS_o_ai 914 vec_vand(vector bool int a, vector float b) 915 { 916 vector unsigned int res = (vector unsigned int)a & (vector unsigned int)b; 917 return (vector float)res; 918 } 919 920 static vector float __ATTRS_o_ai 921 vec_vand(vector float a, vector bool int b) 922 { 923 vector unsigned int res = (vector unsigned int)a & (vector unsigned int)b; 924 return (vector float)res; 925 } 926 927 /* vec_andc */ 928 929 #define __builtin_altivec_vandc vec_andc 930 931 static vector signed char __ATTRS_o_ai 932 vec_andc(vector signed char a, vector signed char b) 933 { 934 return a & ~b; 935 } 936 937 static vector signed char __ATTRS_o_ai 938 vec_andc(vector bool char a, vector signed char b) 939 { 940 return (vector signed char)a & ~b; 941 } 942 943 static vector signed char __ATTRS_o_ai 944 vec_andc(vector signed char a, vector bool char b) 945 { 946 return a & ~(vector signed char)b; 947 } 948 949 static vector unsigned char __ATTRS_o_ai 950 vec_andc(vector unsigned char a, vector unsigned char b) 951 { 952 return a & ~b; 953 } 954 955 static vector unsigned char __ATTRS_o_ai 956 vec_andc(vector bool char a, vector unsigned char b) 957 { 958 return (vector unsigned char)a & ~b; 959 } 960 961 static vector unsigned char __ATTRS_o_ai 962 vec_andc(vector unsigned char a, vector bool char b) 963 { 964 return a & ~(vector unsigned char)b; 965 } 966 967 static vector bool char __ATTRS_o_ai 968 vec_andc(vector bool char a, vector bool char b) 969 { 970 return a & ~b; 971 } 972 973 static vector short __ATTRS_o_ai 974 vec_andc(vector short a, vector short b) 975 { 976 return a & ~b; 977 } 978 979 static vector short __ATTRS_o_ai 980 vec_andc(vector bool short a, vector short b) 981 { 982 return (vector short)a & ~b; 983 } 984 985 static vector short __ATTRS_o_ai 986 vec_andc(vector short a, vector bool short b) 987 { 988 return a & ~(vector short)b; 989 } 990 991 static vector unsigned short __ATTRS_o_ai 992 vec_andc(vector unsigned short a, vector unsigned short b) 993 { 994 return a & ~b; 995 } 996 997 static vector unsigned short __ATTRS_o_ai 998 vec_andc(vector bool short a, vector unsigned short b) 999 { 1000 return (vector unsigned short)a & ~b; 1001 } 1002 1003 static vector unsigned short __ATTRS_o_ai 1004 vec_andc(vector unsigned short a, vector bool short b) 1005 { 1006 return a & ~(vector unsigned short)b; 1007 } 1008 1009 static vector bool short __ATTRS_o_ai 1010 vec_andc(vector bool short a, vector bool short b) 1011 { 1012 return a & ~b; 1013 } 1014 1015 static vector int __ATTRS_o_ai 1016 vec_andc(vector int a, vector int b) 1017 { 1018 return a & ~b; 1019 } 1020 1021 static vector int __ATTRS_o_ai 1022 vec_andc(vector bool int a, vector int b) 1023 { 1024 return (vector int)a & ~b; 1025 } 1026 1027 static vector int __ATTRS_o_ai 1028 vec_andc(vector int a, vector bool int b) 1029 { 1030 return a & ~(vector int)b; 1031 } 1032 1033 static vector unsigned int __ATTRS_o_ai 1034 vec_andc(vector unsigned int a, vector unsigned int b) 1035 { 1036 return a & ~b; 1037 } 1038 1039 static vector unsigned int __ATTRS_o_ai 1040 vec_andc(vector bool int a, vector unsigned int b) 1041 { 1042 return (vector unsigned int)a & ~b; 1043 } 1044 1045 static vector unsigned int __ATTRS_o_ai 1046 vec_andc(vector unsigned int a, vector bool int b) 1047 { 1048 return a & ~(vector unsigned int)b; 1049 } 1050 1051 static vector bool int __ATTRS_o_ai 1052 vec_andc(vector bool int a, vector bool int b) 1053 { 1054 return a & ~b; 1055 } 1056 1057 static vector float __ATTRS_o_ai 1058 vec_andc(vector float a, vector float b) 1059 { 1060 vector unsigned int res = (vector unsigned int)a & ~(vector unsigned int)b; 1061 return (vector float)res; 1062 } 1063 1064 static vector float __ATTRS_o_ai 1065 vec_andc(vector bool int a, vector float b) 1066 { 1067 vector unsigned int res = (vector unsigned int)a & ~(vector unsigned int)b; 1068 return (vector float)res; 1069 } 1070 1071 static vector float __ATTRS_o_ai 1072 vec_andc(vector float a, vector bool int b) 1073 { 1074 vector unsigned int res = (vector unsigned int)a & ~(vector unsigned int)b; 1075 return (vector float)res; 1076 } 1077 1078 /* vec_vandc */ 1079 1080 static vector signed char __ATTRS_o_ai 1081 vec_vandc(vector signed char a, vector signed char b) 1082 { 1083 return a & ~b; 1084 } 1085 1086 static vector signed char __ATTRS_o_ai 1087 vec_vandc(vector bool char a, vector signed char b) 1088 { 1089 return (vector signed char)a & ~b; 1090 } 1091 1092 static vector signed char __ATTRS_o_ai 1093 vec_vandc(vector signed char a, vector bool char b) 1094 { 1095 return a & ~(vector signed char)b; 1096 } 1097 1098 static vector unsigned char __ATTRS_o_ai 1099 vec_vandc(vector unsigned char a, vector unsigned char b) 1100 { 1101 return a & ~b; 1102 } 1103 1104 static vector unsigned char __ATTRS_o_ai 1105 vec_vandc(vector bool char a, vector unsigned char b) 1106 { 1107 return (vector unsigned char)a & ~b; 1108 } 1109 1110 static vector unsigned char __ATTRS_o_ai 1111 vec_vandc(vector unsigned char a, vector bool char b) 1112 { 1113 return a & ~(vector unsigned char)b; 1114 } 1115 1116 static vector bool char __ATTRS_o_ai 1117 vec_vandc(vector bool char a, vector bool char b) 1118 { 1119 return a & ~b; 1120 } 1121 1122 static vector short __ATTRS_o_ai 1123 vec_vandc(vector short a, vector short b) 1124 { 1125 return a & ~b; 1126 } 1127 1128 static vector short __ATTRS_o_ai 1129 vec_vandc(vector bool short a, vector short b) 1130 { 1131 return (vector short)a & ~b; 1132 } 1133 1134 static vector short __ATTRS_o_ai 1135 vec_vandc(vector short a, vector bool short b) 1136 { 1137 return a & ~(vector short)b; 1138 } 1139 1140 static vector unsigned short __ATTRS_o_ai 1141 vec_vandc(vector unsigned short a, vector unsigned short b) 1142 { 1143 return a & ~b; 1144 } 1145 1146 static vector unsigned short __ATTRS_o_ai 1147 vec_vandc(vector bool short a, vector unsigned short b) 1148 { 1149 return (vector unsigned short)a & ~b; 1150 } 1151 1152 static vector unsigned short __ATTRS_o_ai 1153 vec_vandc(vector unsigned short a, vector bool short b) 1154 { 1155 return a & ~(vector unsigned short)b; 1156 } 1157 1158 static vector bool short __ATTRS_o_ai 1159 vec_vandc(vector bool short a, vector bool short b) 1160 { 1161 return a & ~b; 1162 } 1163 1164 static vector int __ATTRS_o_ai 1165 vec_vandc(vector int a, vector int b) 1166 { 1167 return a & ~b; 1168 } 1169 1170 static vector int __ATTRS_o_ai 1171 vec_vandc(vector bool int a, vector int b) 1172 { 1173 return (vector int)a & ~b; 1174 } 1175 1176 static vector int __ATTRS_o_ai 1177 vec_vandc(vector int a, vector bool int b) 1178 { 1179 return a & ~(vector int)b; 1180 } 1181 1182 static vector unsigned int __ATTRS_o_ai 1183 vec_vandc(vector unsigned int a, vector unsigned int b) 1184 { 1185 return a & ~b; 1186 } 1187 1188 static vector unsigned int __ATTRS_o_ai 1189 vec_vandc(vector bool int a, vector unsigned int b) 1190 { 1191 return (vector unsigned int)a & ~b; 1192 } 1193 1194 static vector unsigned int __ATTRS_o_ai 1195 vec_vandc(vector unsigned int a, vector bool int b) 1196 { 1197 return a & ~(vector unsigned int)b; 1198 } 1199 1200 static vector bool int __ATTRS_o_ai 1201 vec_vandc(vector bool int a, vector bool int b) 1202 { 1203 return a & ~b; 1204 } 1205 1206 static vector float __ATTRS_o_ai 1207 vec_vandc(vector float a, vector float b) 1208 { 1209 vector unsigned int res = (vector unsigned int)a & ~(vector unsigned int)b; 1210 return (vector float)res; 1211 } 1212 1213 static vector float __ATTRS_o_ai 1214 vec_vandc(vector bool int a, vector float b) 1215 { 1216 vector unsigned int res = (vector unsigned int)a & ~(vector unsigned int)b; 1217 return (vector float)res; 1218 } 1219 1220 static vector float __ATTRS_o_ai 1221 vec_vandc(vector float a, vector bool int b) 1222 { 1223 vector unsigned int res = (vector unsigned int)a & ~(vector unsigned int)b; 1224 return (vector float)res; 1225 } 1226 1227 /* vec_avg */ 1228 1229 static vector signed char __ATTRS_o_ai 1230 vec_avg(vector signed char a, vector signed char b) 1231 { 1232 return __builtin_altivec_vavgsb(a, b); 1233 } 1234 1235 static vector unsigned char __ATTRS_o_ai 1236 vec_avg(vector unsigned char a, vector unsigned char b) 1237 { 1238 return __builtin_altivec_vavgub(a, b); 1239 } 1240 1241 static vector short __ATTRS_o_ai 1242 vec_avg(vector short a, vector short b) 1243 { 1244 return __builtin_altivec_vavgsh(a, b); 1245 } 1246 1247 static vector unsigned short __ATTRS_o_ai 1248 vec_avg(vector unsigned short a, vector unsigned short b) 1249 { 1250 return __builtin_altivec_vavguh(a, b); 1251 } 1252 1253 static vector int __ATTRS_o_ai 1254 vec_avg(vector int a, vector int b) 1255 { 1256 return __builtin_altivec_vavgsw(a, b); 1257 } 1258 1259 static vector unsigned int __ATTRS_o_ai 1260 vec_avg(vector unsigned int a, vector unsigned int b) 1261 { 1262 return __builtin_altivec_vavguw(a, b); 1263 } 1264 1265 /* vec_vavgsb */ 1266 1267 static vector signed char __attribute__((__always_inline__)) 1268 vec_vavgsb(vector signed char a, vector signed char b) 1269 { 1270 return __builtin_altivec_vavgsb(a, b); 1271 } 1272 1273 /* vec_vavgub */ 1274 1275 static vector unsigned char __attribute__((__always_inline__)) 1276 vec_vavgub(vector unsigned char a, vector unsigned char b) 1277 { 1278 return __builtin_altivec_vavgub(a, b); 1279 } 1280 1281 /* vec_vavgsh */ 1282 1283 static vector short __attribute__((__always_inline__)) 1284 vec_vavgsh(vector short a, vector short b) 1285 { 1286 return __builtin_altivec_vavgsh(a, b); 1287 } 1288 1289 /* vec_vavguh */ 1290 1291 static vector unsigned short __attribute__((__always_inline__)) 1292 vec_vavguh(vector unsigned short a, vector unsigned short b) 1293 { 1294 return __builtin_altivec_vavguh(a, b); 1295 } 1296 1297 /* vec_vavgsw */ 1298 1299 static vector int __attribute__((__always_inline__)) 1300 vec_vavgsw(vector int a, vector int b) 1301 { 1302 return __builtin_altivec_vavgsw(a, b); 1303 } 1304 1305 /* vec_vavguw */ 1306 1307 static vector unsigned int __attribute__((__always_inline__)) 1308 vec_vavguw(vector unsigned int a, vector unsigned int b) 1309 { 1310 return __builtin_altivec_vavguw(a, b); 1311 } 1312 1313 /* vec_ceil */ 1314 1315 static vector float __attribute__((__always_inline__)) 1316 vec_ceil(vector float a) 1317 { 1318 return __builtin_altivec_vrfip(a); 1319 } 1320 1321 /* vec_vrfip */ 1322 1323 static vector float __attribute__((__always_inline__)) 1324 vec_vrfip(vector float a) 1325 { 1326 return __builtin_altivec_vrfip(a); 1327 } 1328 1329 /* vec_cmpb */ 1330 1331 static vector int __attribute__((__always_inline__)) 1332 vec_cmpb(vector float a, vector float b) 1333 { 1334 return __builtin_altivec_vcmpbfp(a, b); 1335 } 1336 1337 /* vec_vcmpbfp */ 1338 1339 static vector int __attribute__((__always_inline__)) 1340 vec_vcmpbfp(vector float a, vector float b) 1341 { 1342 return __builtin_altivec_vcmpbfp(a, b); 1343 } 1344 1345 /* vec_cmpeq */ 1346 1347 static vector bool char __ATTRS_o_ai 1348 vec_cmpeq(vector signed char a, vector signed char b) 1349 { 1350 return (vector bool char) 1351 __builtin_altivec_vcmpequb((vector char)a, (vector char)b); 1352 } 1353 1354 static vector bool char __ATTRS_o_ai 1355 vec_cmpeq(vector unsigned char a, vector unsigned char b) 1356 { 1357 return (vector bool char) 1358 __builtin_altivec_vcmpequb((vector char)a, (vector char)b); 1359 } 1360 1361 static vector bool short __ATTRS_o_ai 1362 vec_cmpeq(vector short a, vector short b) 1363 { 1364 return (vector bool short)__builtin_altivec_vcmpequh(a, b); 1365 } 1366 1367 static vector bool short __ATTRS_o_ai 1368 vec_cmpeq(vector unsigned short a, vector unsigned short b) 1369 { 1370 return (vector bool short) 1371 __builtin_altivec_vcmpequh((vector short)a, (vector short)b); 1372 } 1373 1374 static vector bool int __ATTRS_o_ai 1375 vec_cmpeq(vector int a, vector int b) 1376 { 1377 return (vector bool int)__builtin_altivec_vcmpequw(a, b); 1378 } 1379 1380 static vector bool int __ATTRS_o_ai 1381 vec_cmpeq(vector unsigned int a, vector unsigned int b) 1382 { 1383 return (vector bool int) 1384 __builtin_altivec_vcmpequw((vector int)a, (vector int)b); 1385 } 1386 1387 static vector bool int __ATTRS_o_ai 1388 vec_cmpeq(vector float a, vector float b) 1389 { 1390 return (vector bool int)__builtin_altivec_vcmpeqfp(a, b); 1391 } 1392 1393 /* vec_cmpge */ 1394 1395 static vector bool int __attribute__((__always_inline__)) 1396 vec_cmpge(vector float a, vector float b) 1397 { 1398 return (vector bool int)__builtin_altivec_vcmpgefp(a, b); 1399 } 1400 1401 /* vec_vcmpgefp */ 1402 1403 static vector bool int __attribute__((__always_inline__)) 1404 vec_vcmpgefp(vector float a, vector float b) 1405 { 1406 return (vector bool int)__builtin_altivec_vcmpgefp(a, b); 1407 } 1408 1409 /* vec_cmpgt */ 1410 1411 static vector bool char __ATTRS_o_ai 1412 vec_cmpgt(vector signed char a, vector signed char b) 1413 { 1414 return (vector bool char)__builtin_altivec_vcmpgtsb(a, b); 1415 } 1416 1417 static vector bool char __ATTRS_o_ai 1418 vec_cmpgt(vector unsigned char a, vector unsigned char b) 1419 { 1420 return (vector bool char)__builtin_altivec_vcmpgtub(a, b); 1421 } 1422 1423 static vector bool short __ATTRS_o_ai 1424 vec_cmpgt(vector short a, vector short b) 1425 { 1426 return (vector bool short)__builtin_altivec_vcmpgtsh(a, b); 1427 } 1428 1429 static vector bool short __ATTRS_o_ai 1430 vec_cmpgt(vector unsigned short a, vector unsigned short b) 1431 { 1432 return (vector bool short)__builtin_altivec_vcmpgtuh(a, b); 1433 } 1434 1435 static vector bool int __ATTRS_o_ai 1436 vec_cmpgt(vector int a, vector int b) 1437 { 1438 return (vector bool int)__builtin_altivec_vcmpgtsw(a, b); 1439 } 1440 1441 static vector bool int __ATTRS_o_ai 1442 vec_cmpgt(vector unsigned int a, vector unsigned int b) 1443 { 1444 return (vector bool int)__builtin_altivec_vcmpgtuw(a, b); 1445 } 1446 1447 static vector bool int __ATTRS_o_ai 1448 vec_cmpgt(vector float a, vector float b) 1449 { 1450 return (vector bool int)__builtin_altivec_vcmpgtfp(a, b); 1451 } 1452 1453 /* vec_vcmpgtsb */ 1454 1455 static vector bool char __attribute__((__always_inline__)) 1456 vec_vcmpgtsb(vector signed char a, vector signed char b) 1457 { 1458 return (vector bool char)__builtin_altivec_vcmpgtsb(a, b); 1459 } 1460 1461 /* vec_vcmpgtub */ 1462 1463 static vector bool char __attribute__((__always_inline__)) 1464 vec_vcmpgtub(vector unsigned char a, vector unsigned char b) 1465 { 1466 return (vector bool char)__builtin_altivec_vcmpgtub(a, b); 1467 } 1468 1469 /* vec_vcmpgtsh */ 1470 1471 static vector bool short __attribute__((__always_inline__)) 1472 vec_vcmpgtsh(vector short a, vector short b) 1473 { 1474 return (vector bool short)__builtin_altivec_vcmpgtsh(a, b); 1475 } 1476 1477 /* vec_vcmpgtuh */ 1478 1479 static vector bool short __attribute__((__always_inline__)) 1480 vec_vcmpgtuh(vector unsigned short a, vector unsigned short b) 1481 { 1482 return (vector bool short)__builtin_altivec_vcmpgtuh(a, b); 1483 } 1484 1485 /* vec_vcmpgtsw */ 1486 1487 static vector bool int __attribute__((__always_inline__)) 1488 vec_vcmpgtsw(vector int a, vector int b) 1489 { 1490 return (vector bool int)__builtin_altivec_vcmpgtsw(a, b); 1491 } 1492 1493 /* vec_vcmpgtuw */ 1494 1495 static vector bool int __attribute__((__always_inline__)) 1496 vec_vcmpgtuw(vector unsigned int a, vector unsigned int b) 1497 { 1498 return (vector bool int)__builtin_altivec_vcmpgtuw(a, b); 1499 } 1500 1501 /* vec_vcmpgtfp */ 1502 1503 static vector bool int __attribute__((__always_inline__)) 1504 vec_vcmpgtfp(vector float a, vector float b) 1505 { 1506 return (vector bool int)__builtin_altivec_vcmpgtfp(a, b); 1507 } 1508 1509 /* vec_cmple */ 1510 1511 static vector bool int __attribute__((__always_inline__)) 1512 vec_cmple(vector float a, vector float b) 1513 { 1514 return (vector bool int)__builtin_altivec_vcmpgefp(b, a); 1515 } 1516 1517 /* vec_cmplt */ 1518 1519 static vector bool char __ATTRS_o_ai 1520 vec_cmplt(vector signed char a, vector signed char b) 1521 { 1522 return (vector bool char)__builtin_altivec_vcmpgtsb(b, a); 1523 } 1524 1525 static vector bool char __ATTRS_o_ai 1526 vec_cmplt(vector unsigned char a, vector unsigned char b) 1527 { 1528 return (vector bool char)__builtin_altivec_vcmpgtub(b, a); 1529 } 1530 1531 static vector bool short __ATTRS_o_ai 1532 vec_cmplt(vector short a, vector short b) 1533 { 1534 return (vector bool short)__builtin_altivec_vcmpgtsh(b, a); 1535 } 1536 1537 static vector bool short __ATTRS_o_ai 1538 vec_cmplt(vector unsigned short a, vector unsigned short b) 1539 { 1540 return (vector bool short)__builtin_altivec_vcmpgtuh(b, a); 1541 } 1542 1543 static vector bool int __ATTRS_o_ai 1544 vec_cmplt(vector int a, vector int b) 1545 { 1546 return (vector bool int)__builtin_altivec_vcmpgtsw(b, a); 1547 } 1548 1549 static vector bool int __ATTRS_o_ai 1550 vec_cmplt(vector unsigned int a, vector unsigned int b) 1551 { 1552 return (vector bool int)__builtin_altivec_vcmpgtuw(b, a); 1553 } 1554 1555 static vector bool int __ATTRS_o_ai 1556 vec_cmplt(vector float a, vector float b) 1557 { 1558 return (vector bool int)__builtin_altivec_vcmpgtfp(b, a); 1559 } 1560 1561 /* vec_ctf */ 1562 1563 static vector float __ATTRS_o_ai 1564 vec_ctf(vector int a, int b) 1565 { 1566 return __builtin_altivec_vcfsx(a, b); 1567 } 1568 1569 static vector float __ATTRS_o_ai 1570 vec_ctf(vector unsigned int a, int b) 1571 { 1572 return __builtin_altivec_vcfux((vector int)a, b); 1573 } 1574 1575 /* vec_vcfsx */ 1576 1577 static vector float __attribute__((__always_inline__)) 1578 vec_vcfsx(vector int a, int b) 1579 { 1580 return __builtin_altivec_vcfsx(a, b); 1581 } 1582 1583 /* vec_vcfux */ 1584 1585 static vector float __attribute__((__always_inline__)) 1586 vec_vcfux(vector unsigned int a, int b) 1587 { 1588 return __builtin_altivec_vcfux((vector int)a, b); 1589 } 1590 1591 /* vec_cts */ 1592 1593 static vector int __attribute__((__always_inline__)) 1594 vec_cts(vector float a, int b) 1595 { 1596 return __builtin_altivec_vctsxs(a, b); 1597 } 1598 1599 /* vec_vctsxs */ 1600 1601 static vector int __attribute__((__always_inline__)) 1602 vec_vctsxs(vector float a, int b) 1603 { 1604 return __builtin_altivec_vctsxs(a, b); 1605 } 1606 1607 /* vec_ctu */ 1608 1609 static vector unsigned int __attribute__((__always_inline__)) 1610 vec_ctu(vector float a, int b) 1611 { 1612 return __builtin_altivec_vctuxs(a, b); 1613 } 1614 1615 /* vec_vctuxs */ 1616 1617 static vector unsigned int __attribute__((__always_inline__)) 1618 vec_vctuxs(vector float a, int b) 1619 { 1620 return __builtin_altivec_vctuxs(a, b); 1621 } 1622 1623 /* vec_dss */ 1624 1625 static void __attribute__((__always_inline__)) 1626 vec_dss(int a) 1627 { 1628 __builtin_altivec_dss(a); 1629 } 1630 1631 /* vec_dssall */ 1632 1633 static void __attribute__((__always_inline__)) 1634 vec_dssall(void) 1635 { 1636 __builtin_altivec_dssall(); 1637 } 1638 1639 /* vec_dst */ 1640 1641 static void __attribute__((__always_inline__)) 1642 vec_dst(void *a, int b, int c) 1643 { 1644 __builtin_altivec_dst(a, b, c); 1645 } 1646 1647 /* vec_dstst */ 1648 1649 static void __attribute__((__always_inline__)) 1650 vec_dstst(void *a, int b, int c) 1651 { 1652 __builtin_altivec_dstst(a, b, c); 1653 } 1654 1655 /* vec_dststt */ 1656 1657 static void __attribute__((__always_inline__)) 1658 vec_dststt(void *a, int b, int c) 1659 { 1660 __builtin_altivec_dststt(a, b, c); 1661 } 1662 1663 /* vec_dstt */ 1664 1665 static void __attribute__((__always_inline__)) 1666 vec_dstt(void *a, int b, int c) 1667 { 1668 __builtin_altivec_dstt(a, b, c); 1669 } 1670 1671 /* vec_expte */ 1672 1673 static vector float __attribute__((__always_inline__)) 1674 vec_expte(vector float a) 1675 { 1676 return __builtin_altivec_vexptefp(a); 1677 } 1678 1679 /* vec_vexptefp */ 1680 1681 static vector float __attribute__((__always_inline__)) 1682 vec_vexptefp(vector float a) 1683 { 1684 return __builtin_altivec_vexptefp(a); 1685 } 1686 1687 /* vec_floor */ 1688 1689 static vector float __attribute__((__always_inline__)) 1690 vec_floor(vector float a) 1691 { 1692 return __builtin_altivec_vrfim(a); 1693 } 1694 1695 /* vec_vrfim */ 1696 1697 static vector float __attribute__((__always_inline__)) 1698 vec_vrfim(vector float a) 1699 { 1700 return __builtin_altivec_vrfim(a); 1701 } 1702 1703 /* vec_ld */ 1704 1705 static vector signed char __ATTRS_o_ai 1706 vec_ld(int a, vector signed char *b) 1707 { 1708 return (vector signed char)__builtin_altivec_lvx(a, b); 1709 } 1710 1711 static vector signed char __ATTRS_o_ai 1712 vec_ld(int a, signed char *b) 1713 { 1714 return (vector signed char)__builtin_altivec_lvx(a, b); 1715 } 1716 1717 static vector unsigned char __ATTRS_o_ai 1718 vec_ld(int a, vector unsigned char *b) 1719 { 1720 return (vector unsigned char)__builtin_altivec_lvx(a, b); 1721 } 1722 1723 static vector unsigned char __ATTRS_o_ai 1724 vec_ld(int a, unsigned char *b) 1725 { 1726 return (vector unsigned char)__builtin_altivec_lvx(a, b); 1727 } 1728 1729 static vector bool char __ATTRS_o_ai 1730 vec_ld(int a, vector bool char *b) 1731 { 1732 return (vector bool char)__builtin_altivec_lvx(a, b); 1733 } 1734 1735 static vector short __ATTRS_o_ai 1736 vec_ld(int a, vector short *b) 1737 { 1738 return (vector short)__builtin_altivec_lvx(a, b); 1739 } 1740 1741 static vector short __ATTRS_o_ai 1742 vec_ld(int a, short *b) 1743 { 1744 return (vector short)__builtin_altivec_lvx(a, b); 1745 } 1746 1747 static vector unsigned short __ATTRS_o_ai 1748 vec_ld(int a, vector unsigned short *b) 1749 { 1750 return (vector unsigned short)__builtin_altivec_lvx(a, b); 1751 } 1752 1753 static vector unsigned short __ATTRS_o_ai 1754 vec_ld(int a, unsigned short *b) 1755 { 1756 return (vector unsigned short)__builtin_altivec_lvx(a, b); 1757 } 1758 1759 static vector bool short __ATTRS_o_ai 1760 vec_ld(int a, vector bool short *b) 1761 { 1762 return (vector bool short)__builtin_altivec_lvx(a, b); 1763 } 1764 1765 static vector pixel __ATTRS_o_ai 1766 vec_ld(int a, vector pixel *b) 1767 { 1768 return (vector pixel)__builtin_altivec_lvx(a, b); 1769 } 1770 1771 static vector int __ATTRS_o_ai 1772 vec_ld(int a, vector int *b) 1773 { 1774 return (vector int)__builtin_altivec_lvx(a, b); 1775 } 1776 1777 static vector int __ATTRS_o_ai 1778 vec_ld(int a, int *b) 1779 { 1780 return (vector int)__builtin_altivec_lvx(a, b); 1781 } 1782 1783 static vector unsigned int __ATTRS_o_ai 1784 vec_ld(int a, vector unsigned int *b) 1785 { 1786 return (vector unsigned int)__builtin_altivec_lvx(a, b); 1787 } 1788 1789 static vector unsigned int __ATTRS_o_ai 1790 vec_ld(int a, unsigned int *b) 1791 { 1792 return (vector unsigned int)__builtin_altivec_lvx(a, b); 1793 } 1794 1795 static vector bool int __ATTRS_o_ai 1796 vec_ld(int a, vector bool int *b) 1797 { 1798 return (vector bool int)__builtin_altivec_lvx(a, b); 1799 } 1800 1801 static vector float __ATTRS_o_ai 1802 vec_ld(int a, vector float *b) 1803 { 1804 return (vector float)__builtin_altivec_lvx(a, b); 1805 } 1806 1807 static vector float __ATTRS_o_ai 1808 vec_ld(int a, float *b) 1809 { 1810 return (vector float)__builtin_altivec_lvx(a, b); 1811 } 1812 1813 /* vec_lvx */ 1814 1815 static vector signed char __ATTRS_o_ai 1816 vec_lvx(int a, vector signed char *b) 1817 { 1818 return (vector signed char)__builtin_altivec_lvx(a, b); 1819 } 1820 1821 static vector signed char __ATTRS_o_ai 1822 vec_lvx(int a, signed char *b) 1823 { 1824 return (vector signed char)__builtin_altivec_lvx(a, b); 1825 } 1826 1827 static vector unsigned char __ATTRS_o_ai 1828 vec_lvx(int a, vector unsigned char *b) 1829 { 1830 return (vector unsigned char)__builtin_altivec_lvx(a, b); 1831 } 1832 1833 static vector unsigned char __ATTRS_o_ai 1834 vec_lvx(int a, unsigned char *b) 1835 { 1836 return (vector unsigned char)__builtin_altivec_lvx(a, b); 1837 } 1838 1839 static vector bool char __ATTRS_o_ai 1840 vec_lvx(int a, vector bool char *b) 1841 { 1842 return (vector bool char)__builtin_altivec_lvx(a, b); 1843 } 1844 1845 static vector short __ATTRS_o_ai 1846 vec_lvx(int a, vector short *b) 1847 { 1848 return (vector short)__builtin_altivec_lvx(a, b); 1849 } 1850 1851 static vector short __ATTRS_o_ai 1852 vec_lvx(int a, short *b) 1853 { 1854 return (vector short)__builtin_altivec_lvx(a, b); 1855 } 1856 1857 static vector unsigned short __ATTRS_o_ai 1858 vec_lvx(int a, vector unsigned short *b) 1859 { 1860 return (vector unsigned short)__builtin_altivec_lvx(a, b); 1861 } 1862 1863 static vector unsigned short __ATTRS_o_ai 1864 vec_lvx(int a, unsigned short *b) 1865 { 1866 return (vector unsigned short)__builtin_altivec_lvx(a, b); 1867 } 1868 1869 static vector bool short __ATTRS_o_ai 1870 vec_lvx(int a, vector bool short *b) 1871 { 1872 return (vector bool short)__builtin_altivec_lvx(a, b); 1873 } 1874 1875 static vector pixel __ATTRS_o_ai 1876 vec_lvx(int a, vector pixel *b) 1877 { 1878 return (vector pixel)__builtin_altivec_lvx(a, b); 1879 } 1880 1881 static vector int __ATTRS_o_ai 1882 vec_lvx(int a, vector int *b) 1883 { 1884 return (vector int)__builtin_altivec_lvx(a, b); 1885 } 1886 1887 static vector int __ATTRS_o_ai 1888 vec_lvx(int a, int *b) 1889 { 1890 return (vector int)__builtin_altivec_lvx(a, b); 1891 } 1892 1893 static vector unsigned int __ATTRS_o_ai 1894 vec_lvx(int a, vector unsigned int *b) 1895 { 1896 return (vector unsigned int)__builtin_altivec_lvx(a, b); 1897 } 1898 1899 static vector unsigned int __ATTRS_o_ai 1900 vec_lvx(int a, unsigned int *b) 1901 { 1902 return (vector unsigned int)__builtin_altivec_lvx(a, b); 1903 } 1904 1905 static vector bool int __ATTRS_o_ai 1906 vec_lvx(int a, vector bool int *b) 1907 { 1908 return (vector bool int)__builtin_altivec_lvx(a, b); 1909 } 1910 1911 static vector float __ATTRS_o_ai 1912 vec_lvx(int a, vector float *b) 1913 { 1914 return (vector float)__builtin_altivec_lvx(a, b); 1915 } 1916 1917 static vector float __ATTRS_o_ai 1918 vec_lvx(int a, float *b) 1919 { 1920 return (vector float)__builtin_altivec_lvx(a, b); 1921 } 1922 1923 /* vec_lde */ 1924 1925 static vector signed char __ATTRS_o_ai 1926 vec_lde(int a, vector signed char *b) 1927 { 1928 return (vector signed char)__builtin_altivec_lvebx(a, b); 1929 } 1930 1931 static vector unsigned char __ATTRS_o_ai 1932 vec_lde(int a, vector unsigned char *b) 1933 { 1934 return (vector unsigned char)__builtin_altivec_lvebx(a, b); 1935 } 1936 1937 static vector short __ATTRS_o_ai 1938 vec_lde(int a, vector short *b) 1939 { 1940 return (vector short)__builtin_altivec_lvehx(a, b); 1941 } 1942 1943 static vector unsigned short __ATTRS_o_ai 1944 vec_lde(int a, vector unsigned short *b) 1945 { 1946 return (vector unsigned short)__builtin_altivec_lvehx(a, b); 1947 } 1948 1949 static vector int __ATTRS_o_ai 1950 vec_lde(int a, vector int *b) 1951 { 1952 return (vector int)__builtin_altivec_lvewx(a, b); 1953 } 1954 1955 static vector unsigned int __ATTRS_o_ai 1956 vec_lde(int a, vector unsigned int *b) 1957 { 1958 return (vector unsigned int)__builtin_altivec_lvewx(a, b); 1959 } 1960 1961 static vector float __ATTRS_o_ai 1962 vec_lde(int a, vector float *b) 1963 { 1964 return (vector float)__builtin_altivec_lvewx(a, b); 1965 } 1966 1967 /* vec_lvebx */ 1968 1969 static vector signed char __ATTRS_o_ai 1970 vec_lvebx(int a, vector signed char *b) 1971 { 1972 return (vector signed char)__builtin_altivec_lvebx(a, b); 1973 } 1974 1975 static vector unsigned char __ATTRS_o_ai 1976 vec_lvebx(int a, vector unsigned char *b) 1977 { 1978 return (vector unsigned char)__builtin_altivec_lvebx(a, b); 1979 } 1980 1981 /* vec_lvehx */ 1982 1983 static vector short __ATTRS_o_ai 1984 vec_lvehx(int a, vector short *b) 1985 { 1986 return (vector short)__builtin_altivec_lvehx(a, b); 1987 } 1988 1989 static vector unsigned short __ATTRS_o_ai 1990 vec_lvehx(int a, vector unsigned short *b) 1991 { 1992 return (vector unsigned short)__builtin_altivec_lvehx(a, b); 1993 } 1994 1995 /* vec_lvewx */ 1996 1997 static vector int __ATTRS_o_ai 1998 vec_lvewx(int a, vector int *b) 1999 { 2000 return (vector int)__builtin_altivec_lvewx(a, b); 2001 } 2002 2003 static vector unsigned int __ATTRS_o_ai 2004 vec_lvewx(int a, vector unsigned int *b) 2005 { 2006 return (vector unsigned int)__builtin_altivec_lvewx(a, b); 2007 } 2008 2009 static vector float __ATTRS_o_ai 2010 vec_lvewx(int a, vector float *b) 2011 { 2012 return (vector float)__builtin_altivec_lvewx(a, b); 2013 } 2014 2015 /* vec_ldl */ 2016 2017 static vector signed char __ATTRS_o_ai 2018 vec_ldl(int a, vector signed char *b) 2019 { 2020 return (vector signed char)__builtin_altivec_lvxl(a, b); 2021 } 2022 2023 static vector signed char __ATTRS_o_ai 2024 vec_ldl(int a, signed char *b) 2025 { 2026 return (vector signed char)__builtin_altivec_lvxl(a, b); 2027 } 2028 2029 static vector unsigned char __ATTRS_o_ai 2030 vec_ldl(int a, vector unsigned char *b) 2031 { 2032 return (vector unsigned char)__builtin_altivec_lvxl(a, b); 2033 } 2034 2035 static vector unsigned char __ATTRS_o_ai 2036 vec_ldl(int a, unsigned char *b) 2037 { 2038 return (vector unsigned char)__builtin_altivec_lvxl(a, b); 2039 } 2040 2041 static vector bool char __ATTRS_o_ai 2042 vec_ldl(int a, vector bool char *b) 2043 { 2044 return (vector bool char)__builtin_altivec_lvxl(a, b); 2045 } 2046 2047 static vector short __ATTRS_o_ai 2048 vec_ldl(int a, vector short *b) 2049 { 2050 return (vector short)__builtin_altivec_lvxl(a, b); 2051 } 2052 2053 static vector short __ATTRS_o_ai 2054 vec_ldl(int a, short *b) 2055 { 2056 return (vector short)__builtin_altivec_lvxl(a, b); 2057 } 2058 2059 static vector unsigned short __ATTRS_o_ai 2060 vec_ldl(int a, vector unsigned short *b) 2061 { 2062 return (vector unsigned short)__builtin_altivec_lvxl(a, b); 2063 } 2064 2065 static vector unsigned short __ATTRS_o_ai 2066 vec_ldl(int a, unsigned short *b) 2067 { 2068 return (vector unsigned short)__builtin_altivec_lvxl(a, b); 2069 } 2070 2071 static vector bool short __ATTRS_o_ai 2072 vec_ldl(int a, vector bool short *b) 2073 { 2074 return (vector bool short)__builtin_altivec_lvxl(a, b); 2075 } 2076 2077 static vector pixel __ATTRS_o_ai 2078 vec_ldl(int a, vector pixel *b) 2079 { 2080 return (vector pixel short)__builtin_altivec_lvxl(a, b); 2081 } 2082 2083 static vector int __ATTRS_o_ai 2084 vec_ldl(int a, vector int *b) 2085 { 2086 return (vector int)__builtin_altivec_lvxl(a, b); 2087 } 2088 2089 static vector int __ATTRS_o_ai 2090 vec_ldl(int a, int *b) 2091 { 2092 return (vector int)__builtin_altivec_lvxl(a, b); 2093 } 2094 2095 static vector unsigned int __ATTRS_o_ai 2096 vec_ldl(int a, vector unsigned int *b) 2097 { 2098 return (vector unsigned int)__builtin_altivec_lvxl(a, b); 2099 } 2100 2101 static vector unsigned int __ATTRS_o_ai 2102 vec_ldl(int a, unsigned int *b) 2103 { 2104 return (vector unsigned int)__builtin_altivec_lvxl(a, b); 2105 } 2106 2107 static vector bool int __ATTRS_o_ai 2108 vec_ldl(int a, vector bool int *b) 2109 { 2110 return (vector bool int)__builtin_altivec_lvxl(a, b); 2111 } 2112 2113 static vector float __ATTRS_o_ai 2114 vec_ldl(int a, vector float *b) 2115 { 2116 return (vector float)__builtin_altivec_lvxl(a, b); 2117 } 2118 2119 static vector float __ATTRS_o_ai 2120 vec_ldl(int a, float *b) 2121 { 2122 return (vector float)__builtin_altivec_lvxl(a, b); 2123 } 2124 2125 /* vec_lvxl */ 2126 2127 static vector signed char __ATTRS_o_ai 2128 vec_lvxl(int a, vector signed char *b) 2129 { 2130 return (vector signed char)__builtin_altivec_lvxl(a, b); 2131 } 2132 2133 static vector signed char __ATTRS_o_ai 2134 vec_lvxl(int a, signed char *b) 2135 { 2136 return (vector signed char)__builtin_altivec_lvxl(a, b); 2137 } 2138 2139 static vector unsigned char __ATTRS_o_ai 2140 vec_lvxl(int a, vector unsigned char *b) 2141 { 2142 return (vector unsigned char)__builtin_altivec_lvxl(a, b); 2143 } 2144 2145 static vector unsigned char __ATTRS_o_ai 2146 vec_lvxl(int a, unsigned char *b) 2147 { 2148 return (vector unsigned char)__builtin_altivec_lvxl(a, b); 2149 } 2150 2151 static vector bool char __ATTRS_o_ai 2152 vec_lvxl(int a, vector bool char *b) 2153 { 2154 return (vector bool char)__builtin_altivec_lvxl(a, b); 2155 } 2156 2157 static vector short __ATTRS_o_ai 2158 vec_lvxl(int a, vector short *b) 2159 { 2160 return (vector short)__builtin_altivec_lvxl(a, b); 2161 } 2162 2163 static vector short __ATTRS_o_ai 2164 vec_lvxl(int a, short *b) 2165 { 2166 return (vector short)__builtin_altivec_lvxl(a, b); 2167 } 2168 2169 static vector unsigned short __ATTRS_o_ai 2170 vec_lvxl(int a, vector unsigned short *b) 2171 { 2172 return (vector unsigned short)__builtin_altivec_lvxl(a, b); 2173 } 2174 2175 static vector unsigned short __ATTRS_o_ai 2176 vec_lvxl(int a, unsigned short *b) 2177 { 2178 return (vector unsigned short)__builtin_altivec_lvxl(a, b); 2179 } 2180 2181 static vector bool short __ATTRS_o_ai 2182 vec_lvxl(int a, vector bool short *b) 2183 { 2184 return (vector bool short)__builtin_altivec_lvxl(a, b); 2185 } 2186 2187 static vector pixel __ATTRS_o_ai 2188 vec_lvxl(int a, vector pixel *b) 2189 { 2190 return (vector pixel)__builtin_altivec_lvxl(a, b); 2191 } 2192 2193 static vector int __ATTRS_o_ai 2194 vec_lvxl(int a, vector int *b) 2195 { 2196 return (vector int)__builtin_altivec_lvxl(a, b); 2197 } 2198 2199 static vector int __ATTRS_o_ai 2200 vec_lvxl(int a, int *b) 2201 { 2202 return (vector int)__builtin_altivec_lvxl(a, b); 2203 } 2204 2205 static vector unsigned int __ATTRS_o_ai 2206 vec_lvxl(int a, vector unsigned int *b) 2207 { 2208 return (vector unsigned int)__builtin_altivec_lvxl(a, b); 2209 } 2210 2211 static vector unsigned int __ATTRS_o_ai 2212 vec_lvxl(int a, unsigned int *b) 2213 { 2214 return (vector unsigned int)__builtin_altivec_lvxl(a, b); 2215 } 2216 2217 static vector bool int __ATTRS_o_ai 2218 vec_lvxl(int a, vector bool int *b) 2219 { 2220 return (vector bool int)__builtin_altivec_lvxl(a, b); 2221 } 2222 2223 static vector float __ATTRS_o_ai 2224 vec_lvxl(int a, vector float *b) 2225 { 2226 return (vector float)__builtin_altivec_lvxl(a, b); 2227 } 2228 2229 static vector float __ATTRS_o_ai 2230 vec_lvxl(int a, float *b) 2231 { 2232 return (vector float)__builtin_altivec_lvxl(a, b); 2233 } 2234 2235 /* vec_loge */ 2236 2237 static vector float __attribute__((__always_inline__)) 2238 vec_loge(vector float a) 2239 { 2240 return __builtin_altivec_vlogefp(a); 2241 } 2242 2243 /* vec_vlogefp */ 2244 2245 static vector float __attribute__((__always_inline__)) 2246 vec_vlogefp(vector float a) 2247 { 2248 return __builtin_altivec_vlogefp(a); 2249 } 2250 2251 /* vec_lvsl */ 2252 2253 static vector unsigned char __ATTRS_o_ai 2254 vec_lvsl(int a, signed char *b) 2255 { 2256 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2257 } 2258 2259 static vector unsigned char __ATTRS_o_ai 2260 vec_lvsl(int a, unsigned char *b) 2261 { 2262 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2263 } 2264 2265 static vector unsigned char __ATTRS_o_ai 2266 vec_lvsl(int a, short *b) 2267 { 2268 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2269 } 2270 2271 static vector unsigned char __ATTRS_o_ai 2272 vec_lvsl(int a, unsigned short *b) 2273 { 2274 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2275 } 2276 2277 static vector unsigned char __ATTRS_o_ai 2278 vec_lvsl(int a, int *b) 2279 { 2280 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2281 } 2282 2283 static vector unsigned char __ATTRS_o_ai 2284 vec_lvsl(int a, unsigned int *b) 2285 { 2286 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2287 } 2288 2289 static vector unsigned char __ATTRS_o_ai 2290 vec_lvsl(int a, float *b) 2291 { 2292 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2293 } 2294 2295 /* vec_lvsr */ 2296 2297 static vector unsigned char __ATTRS_o_ai 2298 vec_lvsr(int a, signed char *b) 2299 { 2300 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2301 } 2302 2303 static vector unsigned char __ATTRS_o_ai 2304 vec_lvsr(int a, unsigned char *b) 2305 { 2306 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2307 } 2308 2309 static vector unsigned char __ATTRS_o_ai 2310 vec_lvsr(int a, short *b) 2311 { 2312 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2313 } 2314 2315 static vector unsigned char __ATTRS_o_ai 2316 vec_lvsr(int a, unsigned short *b) 2317 { 2318 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2319 } 2320 2321 static vector unsigned char __ATTRS_o_ai 2322 vec_lvsr(int a, int *b) 2323 { 2324 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2325 } 2326 2327 static vector unsigned char __ATTRS_o_ai 2328 vec_lvsr(int a, unsigned int *b) 2329 { 2330 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2331 } 2332 2333 static vector unsigned char __ATTRS_o_ai 2334 vec_lvsr(int a, float *b) 2335 { 2336 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2337 } 2338 2339 /* vec_madd */ 2340 2341 static vector float __attribute__((__always_inline__)) 2342 vec_madd(vector float a, vector float b, vector float c) 2343 { 2344 return __builtin_altivec_vmaddfp(a, b, c); 2345 } 2346 2347 /* vec_vmaddfp */ 2348 2349 static vector float __attribute__((__always_inline__)) 2350 vec_vmaddfp(vector float a, vector float b, vector float c) 2351 { 2352 return __builtin_altivec_vmaddfp(a, b, c); 2353 } 2354 2355 /* vec_madds */ 2356 2357 static vector signed short __attribute__((__always_inline__)) 2358 vec_madds(vector signed short a, vector signed short b, vector signed short c) 2359 { 2360 return __builtin_altivec_vmhaddshs(a, b, c); 2361 } 2362 2363 /* vec_vmhaddshs */ 2364 static vector signed short __attribute__((__always_inline__)) 2365 vec_vmhaddshs(vector signed short a, 2366 vector signed short b, 2367 vector signed short c) 2368 { 2369 return __builtin_altivec_vmhaddshs(a, b, c); 2370 } 2371 2372 /* vec_max */ 2373 2374 static vector signed char __ATTRS_o_ai 2375 vec_max(vector signed char a, vector signed char b) 2376 { 2377 return __builtin_altivec_vmaxsb(a, b); 2378 } 2379 2380 static vector signed char __ATTRS_o_ai 2381 vec_max(vector bool char a, vector signed char b) 2382 { 2383 return __builtin_altivec_vmaxsb((vector signed char)a, b); 2384 } 2385 2386 static vector signed char __ATTRS_o_ai 2387 vec_max(vector signed char a, vector bool char b) 2388 { 2389 return __builtin_altivec_vmaxsb(a, (vector signed char)b); 2390 } 2391 2392 static vector unsigned char __ATTRS_o_ai 2393 vec_max(vector unsigned char a, vector unsigned char b) 2394 { 2395 return __builtin_altivec_vmaxub(a, b); 2396 } 2397 2398 static vector unsigned char __ATTRS_o_ai 2399 vec_max(vector bool char a, vector unsigned char b) 2400 { 2401 return __builtin_altivec_vmaxub((vector unsigned char)a, b); 2402 } 2403 2404 static vector unsigned char __ATTRS_o_ai 2405 vec_max(vector unsigned char a, vector bool char b) 2406 { 2407 return __builtin_altivec_vmaxub(a, (vector unsigned char)b); 2408 } 2409 2410 static vector short __ATTRS_o_ai 2411 vec_max(vector short a, vector short b) 2412 { 2413 return __builtin_altivec_vmaxsh(a, b); 2414 } 2415 2416 static vector short __ATTRS_o_ai 2417 vec_max(vector bool short a, vector short b) 2418 { 2419 return __builtin_altivec_vmaxsh((vector short)a, b); 2420 } 2421 2422 static vector short __ATTRS_o_ai 2423 vec_max(vector short a, vector bool short b) 2424 { 2425 return __builtin_altivec_vmaxsh(a, (vector short)b); 2426 } 2427 2428 static vector unsigned short __ATTRS_o_ai 2429 vec_max(vector unsigned short a, vector unsigned short b) 2430 { 2431 return __builtin_altivec_vmaxuh(a, b); 2432 } 2433 2434 static vector unsigned short __ATTRS_o_ai 2435 vec_max(vector bool short a, vector unsigned short b) 2436 { 2437 return __builtin_altivec_vmaxuh((vector unsigned short)a, b); 2438 } 2439 2440 static vector unsigned short __ATTRS_o_ai 2441 vec_max(vector unsigned short a, vector bool short b) 2442 { 2443 return __builtin_altivec_vmaxuh(a, (vector unsigned short)b); 2444 } 2445 2446 static vector int __ATTRS_o_ai 2447 vec_max(vector int a, vector int b) 2448 { 2449 return __builtin_altivec_vmaxsw(a, b); 2450 } 2451 2452 static vector int __ATTRS_o_ai 2453 vec_max(vector bool int a, vector int b) 2454 { 2455 return __builtin_altivec_vmaxsw((vector int)a, b); 2456 } 2457 2458 static vector int __ATTRS_o_ai 2459 vec_max(vector int a, vector bool int b) 2460 { 2461 return __builtin_altivec_vmaxsw(a, (vector int)b); 2462 } 2463 2464 static vector unsigned int __ATTRS_o_ai 2465 vec_max(vector unsigned int a, vector unsigned int b) 2466 { 2467 return __builtin_altivec_vmaxuw(a, b); 2468 } 2469 2470 static vector unsigned int __ATTRS_o_ai 2471 vec_max(vector bool int a, vector unsigned int b) 2472 { 2473 return __builtin_altivec_vmaxuw((vector unsigned int)a, b); 2474 } 2475 2476 static vector unsigned int __ATTRS_o_ai 2477 vec_max(vector unsigned int a, vector bool int b) 2478 { 2479 return __builtin_altivec_vmaxuw(a, (vector unsigned int)b); 2480 } 2481 2482 static vector float __ATTRS_o_ai 2483 vec_max(vector float a, vector float b) 2484 { 2485 return __builtin_altivec_vmaxfp(a, b); 2486 } 2487 2488 /* vec_vmaxsb */ 2489 2490 static vector signed char __ATTRS_o_ai 2491 vec_vmaxsb(vector signed char a, vector signed char b) 2492 { 2493 return __builtin_altivec_vmaxsb(a, b); 2494 } 2495 2496 static vector signed char __ATTRS_o_ai 2497 vec_vmaxsb(vector bool char a, vector signed char b) 2498 { 2499 return __builtin_altivec_vmaxsb((vector signed char)a, b); 2500 } 2501 2502 static vector signed char __ATTRS_o_ai 2503 vec_vmaxsb(vector signed char a, vector bool char b) 2504 { 2505 return __builtin_altivec_vmaxsb(a, (vector signed char)b); 2506 } 2507 2508 /* vec_vmaxub */ 2509 2510 static vector unsigned char __ATTRS_o_ai 2511 vec_vmaxub(vector unsigned char a, vector unsigned char b) 2512 { 2513 return __builtin_altivec_vmaxub(a, b); 2514 } 2515 2516 static vector unsigned char __ATTRS_o_ai 2517 vec_vmaxub(vector bool char a, vector unsigned char b) 2518 { 2519 return __builtin_altivec_vmaxub((vector unsigned char)a, b); 2520 } 2521 2522 static vector unsigned char __ATTRS_o_ai 2523 vec_vmaxub(vector unsigned char a, vector bool char b) 2524 { 2525 return __builtin_altivec_vmaxub(a, (vector unsigned char)b); 2526 } 2527 2528 /* vec_vmaxsh */ 2529 2530 static vector short __ATTRS_o_ai 2531 vec_vmaxsh(vector short a, vector short b) 2532 { 2533 return __builtin_altivec_vmaxsh(a, b); 2534 } 2535 2536 static vector short __ATTRS_o_ai 2537 vec_vmaxsh(vector bool short a, vector short b) 2538 { 2539 return __builtin_altivec_vmaxsh((vector short)a, b); 2540 } 2541 2542 static vector short __ATTRS_o_ai 2543 vec_vmaxsh(vector short a, vector bool short b) 2544 { 2545 return __builtin_altivec_vmaxsh(a, (vector short)b); 2546 } 2547 2548 /* vec_vmaxuh */ 2549 2550 static vector unsigned short __ATTRS_o_ai 2551 vec_vmaxuh(vector unsigned short a, vector unsigned short b) 2552 { 2553 return __builtin_altivec_vmaxuh(a, b); 2554 } 2555 2556 static vector unsigned short __ATTRS_o_ai 2557 vec_vmaxuh(vector bool short a, vector unsigned short b) 2558 { 2559 return __builtin_altivec_vmaxuh((vector unsigned short)a, b); 2560 } 2561 2562 static vector unsigned short __ATTRS_o_ai 2563 vec_vmaxuh(vector unsigned short a, vector bool short b) 2564 { 2565 return __builtin_altivec_vmaxuh(a, (vector unsigned short)b); 2566 } 2567 2568 /* vec_vmaxsw */ 2569 2570 static vector int __ATTRS_o_ai 2571 vec_vmaxsw(vector int a, vector int b) 2572 { 2573 return __builtin_altivec_vmaxsw(a, b); 2574 } 2575 2576 static vector int __ATTRS_o_ai 2577 vec_vmaxsw(vector bool int a, vector int b) 2578 { 2579 return __builtin_altivec_vmaxsw((vector int)a, b); 2580 } 2581 2582 static vector int __ATTRS_o_ai 2583 vec_vmaxsw(vector int a, vector bool int b) 2584 { 2585 return __builtin_altivec_vmaxsw(a, (vector int)b); 2586 } 2587 2588 /* vec_vmaxuw */ 2589 2590 static vector unsigned int __ATTRS_o_ai 2591 vec_vmaxuw(vector unsigned int a, vector unsigned int b) 2592 { 2593 return __builtin_altivec_vmaxuw(a, b); 2594 } 2595 2596 static vector unsigned int __ATTRS_o_ai 2597 vec_vmaxuw(vector bool int a, vector unsigned int b) 2598 { 2599 return __builtin_altivec_vmaxuw((vector unsigned int)a, b); 2600 } 2601 2602 static vector unsigned int __ATTRS_o_ai 2603 vec_vmaxuw(vector unsigned int a, vector bool int b) 2604 { 2605 return __builtin_altivec_vmaxuw(a, (vector unsigned int)b); 2606 } 2607 2608 /* vec_vmaxfp */ 2609 2610 static vector float __attribute__((__always_inline__)) 2611 vec_vmaxfp(vector float a, vector float b) 2612 { 2613 return __builtin_altivec_vmaxfp(a, b); 2614 } 2615 2616 /* vec_mergeh */ 2617 2618 static vector signed char __ATTRS_o_ai 2619 vec_mergeh(vector signed char a, vector signed char b) 2620 { 2621 return vec_perm(a, b, (vector unsigned char) 2622 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, 2623 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); 2624 } 2625 2626 static vector unsigned char __ATTRS_o_ai 2627 vec_mergeh(vector unsigned char a, vector unsigned char b) 2628 { 2629 return vec_perm(a, b, (vector unsigned char) 2630 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, 2631 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); 2632 } 2633 2634 static vector bool char __ATTRS_o_ai 2635 vec_mergeh(vector bool char a, vector bool char b) 2636 { 2637 return vec_perm(a, b, (vector unsigned char) 2638 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, 2639 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); 2640 } 2641 2642 static vector short __ATTRS_o_ai 2643 vec_mergeh(vector short a, vector short b) 2644 { 2645 return vec_perm(a, b, (vector unsigned char) 2646 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 2647 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 2648 } 2649 2650 static vector unsigned short __ATTRS_o_ai 2651 vec_mergeh(vector unsigned short a, vector unsigned short b) 2652 { 2653 return vec_perm(a, b, (vector unsigned char) 2654 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 2655 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 2656 } 2657 2658 static vector bool short __ATTRS_o_ai 2659 vec_mergeh(vector bool short a, vector bool short b) 2660 { 2661 return vec_perm(a, b, (vector unsigned char) 2662 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 2663 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 2664 } 2665 2666 static vector pixel __ATTRS_o_ai 2667 vec_mergeh(vector pixel a, vector pixel b) 2668 { 2669 return vec_perm(a, b, (vector unsigned char) 2670 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 2671 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 2672 } 2673 2674 static vector int __ATTRS_o_ai 2675 vec_mergeh(vector int a, vector int b) 2676 { 2677 return vec_perm(a, b, (vector unsigned char) 2678 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 2679 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 2680 } 2681 2682 static vector unsigned int __ATTRS_o_ai 2683 vec_mergeh(vector unsigned int a, vector unsigned int b) 2684 { 2685 return vec_perm(a, b, (vector unsigned char) 2686 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 2687 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 2688 } 2689 2690 static vector bool int __ATTRS_o_ai 2691 vec_mergeh(vector bool int a, vector bool int b) 2692 { 2693 return vec_perm(a, b, (vector unsigned char) 2694 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 2695 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 2696 } 2697 2698 static vector float __ATTRS_o_ai 2699 vec_mergeh(vector float a, vector float b) 2700 { 2701 return vec_perm(a, b, (vector unsigned char) 2702 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 2703 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 2704 } 2705 2706 /* vec_vmrghb */ 2707 2708 #define __builtin_altivec_vmrghb vec_vmrghb 2709 2710 static vector signed char __ATTRS_o_ai 2711 vec_vmrghb(vector signed char a, vector signed char b) 2712 { 2713 return vec_perm(a, b, (vector unsigned char) 2714 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, 2715 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); 2716 } 2717 2718 static vector unsigned char __ATTRS_o_ai 2719 vec_vmrghb(vector unsigned char a, vector unsigned char b) 2720 { 2721 return vec_perm(a, b, (vector unsigned char) 2722 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, 2723 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); 2724 } 2725 2726 static vector bool char __ATTRS_o_ai 2727 vec_vmrghb(vector bool char a, vector bool char b) 2728 { 2729 return vec_perm(a, b, (vector unsigned char) 2730 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, 2731 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); 2732 } 2733 2734 /* vec_vmrghh */ 2735 2736 #define __builtin_altivec_vmrghh vec_vmrghh 2737 2738 static vector short __ATTRS_o_ai 2739 vec_vmrghh(vector short a, vector short b) 2740 { 2741 return vec_perm(a, b, (vector unsigned char) 2742 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 2743 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 2744 } 2745 2746 static vector unsigned short __ATTRS_o_ai 2747 vec_vmrghh(vector unsigned short a, vector unsigned short b) 2748 { 2749 return vec_perm(a, b, (vector unsigned char) 2750 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 2751 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 2752 } 2753 2754 static vector bool short __ATTRS_o_ai 2755 vec_vmrghh(vector bool short a, vector bool short b) 2756 { 2757 return vec_perm(a, b, (vector unsigned char) 2758 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 2759 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 2760 } 2761 2762 static vector pixel __ATTRS_o_ai 2763 vec_vmrghh(vector pixel a, vector pixel b) 2764 { 2765 return vec_perm(a, b, (vector unsigned char) 2766 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 2767 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 2768 } 2769 2770 /* vec_vmrghw */ 2771 2772 #define __builtin_altivec_vmrghw vec_vmrghw 2773 2774 static vector int __ATTRS_o_ai 2775 vec_vmrghw(vector int a, vector int b) 2776 { 2777 return vec_perm(a, b, (vector unsigned char) 2778 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 2779 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 2780 } 2781 2782 static vector unsigned int __ATTRS_o_ai 2783 vec_vmrghw(vector unsigned int a, vector unsigned int b) 2784 { 2785 return vec_perm(a, b, (vector unsigned char) 2786 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 2787 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 2788 } 2789 2790 static vector bool int __ATTRS_o_ai 2791 vec_vmrghw(vector bool int a, vector bool int b) 2792 { 2793 return vec_perm(a, b, (vector unsigned char) 2794 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 2795 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 2796 } 2797 2798 static vector float __ATTRS_o_ai 2799 vec_vmrghw(vector float a, vector float b) 2800 { 2801 return vec_perm(a, b, (vector unsigned char) 2802 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 2803 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 2804 } 2805 2806 /* vec_mergel */ 2807 2808 static vector signed char __ATTRS_o_ai 2809 vec_mergel(vector signed char a, vector signed char b) 2810 { 2811 return vec_perm(a, b, (vector unsigned char) 2812 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, 2813 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); 2814 } 2815 2816 static vector unsigned char __ATTRS_o_ai 2817 vec_mergel(vector unsigned char a, vector unsigned char b) 2818 { 2819 return vec_perm(a, b, (vector unsigned char) 2820 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, 2821 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); 2822 } 2823 2824 static vector bool char __ATTRS_o_ai 2825 vec_mergel(vector bool char a, vector bool char b) 2826 { 2827 return vec_perm(a, b, (vector unsigned char) 2828 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, 2829 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); 2830 } 2831 2832 static vector short __ATTRS_o_ai 2833 vec_mergel(vector short a, vector short b) 2834 { 2835 return vec_perm(a, b, (vector unsigned char) 2836 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 2837 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 2838 } 2839 2840 static vector unsigned short __ATTRS_o_ai 2841 vec_mergel(vector unsigned short a, vector unsigned short b) 2842 { 2843 return vec_perm(a, b, (vector unsigned char) 2844 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 2845 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 2846 } 2847 2848 static vector bool short __ATTRS_o_ai 2849 vec_mergel(vector bool short a, vector bool short b) 2850 { 2851 return vec_perm(a, b, (vector unsigned char) 2852 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 2853 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 2854 } 2855 2856 static vector pixel __ATTRS_o_ai 2857 vec_mergel(vector pixel a, vector pixel b) 2858 { 2859 return vec_perm(a, b, (vector unsigned char) 2860 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 2861 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 2862 } 2863 2864 static vector int __ATTRS_o_ai 2865 vec_mergel(vector int a, vector int b) 2866 { 2867 return vec_perm(a, b, (vector unsigned char) 2868 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 2869 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 2870 } 2871 2872 static vector unsigned int __ATTRS_o_ai 2873 vec_mergel(vector unsigned int a, vector unsigned int b) 2874 { 2875 return vec_perm(a, b, (vector unsigned char) 2876 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 2877 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 2878 } 2879 2880 static vector bool int __ATTRS_o_ai 2881 vec_mergel(vector bool int a, vector bool int b) 2882 { 2883 return vec_perm(a, b, (vector unsigned char) 2884 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 2885 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 2886 } 2887 2888 static vector float __ATTRS_o_ai 2889 vec_mergel(vector float a, vector float b) 2890 { 2891 return vec_perm(a, b, (vector unsigned char) 2892 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 2893 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 2894 } 2895 2896 /* vec_vmrglb */ 2897 2898 #define __builtin_altivec_vmrglb vec_vmrglb 2899 2900 static vector signed char __ATTRS_o_ai 2901 vec_vmrglb(vector signed char a, vector signed char b) 2902 { 2903 return vec_perm(a, b, (vector unsigned char) 2904 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, 2905 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); 2906 } 2907 2908 static vector unsigned char __ATTRS_o_ai 2909 vec_vmrglb(vector unsigned char a, vector unsigned char b) 2910 { 2911 return vec_perm(a, b, (vector unsigned char) 2912 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, 2913 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); 2914 } 2915 2916 static vector bool char __ATTRS_o_ai 2917 vec_vmrglb(vector bool char a, vector bool char b) 2918 { 2919 return vec_perm(a, b, (vector unsigned char) 2920 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, 2921 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); 2922 } 2923 2924 /* vec_vmrglh */ 2925 2926 #define __builtin_altivec_vmrglh vec_vmrglh 2927 2928 static vector short __ATTRS_o_ai 2929 vec_vmrglh(vector short a, vector short b) 2930 { 2931 return vec_perm(a, b, (vector unsigned char) 2932 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 2933 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 2934 } 2935 2936 static vector unsigned short __ATTRS_o_ai 2937 vec_vmrglh(vector unsigned short a, vector unsigned short b) 2938 { 2939 return vec_perm(a, b, (vector unsigned char) 2940 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 2941 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 2942 } 2943 2944 static vector bool short __ATTRS_o_ai 2945 vec_vmrglh(vector bool short a, vector bool short b) 2946 { 2947 return vec_perm(a, b, (vector unsigned char) 2948 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 2949 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 2950 } 2951 2952 static vector pixel __ATTRS_o_ai 2953 vec_vmrglh(vector pixel a, vector pixel b) 2954 { 2955 return vec_perm(a, b, (vector unsigned char) 2956 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 2957 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 2958 } 2959 2960 /* vec_vmrglw */ 2961 2962 #define __builtin_altivec_vmrglw vec_vmrglw 2963 2964 static vector int __ATTRS_o_ai 2965 vec_vmrglw(vector int a, vector int b) 2966 { 2967 return vec_perm(a, b, (vector unsigned char) 2968 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 2969 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 2970 } 2971 2972 static vector unsigned int __ATTRS_o_ai 2973 vec_vmrglw(vector unsigned int a, vector unsigned int b) 2974 { 2975 return vec_perm(a, b, (vector unsigned char) 2976 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 2977 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 2978 } 2979 2980 static vector bool int __ATTRS_o_ai 2981 vec_vmrglw(vector bool int a, vector bool int b) 2982 { 2983 return vec_perm(a, b, (vector unsigned char) 2984 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 2985 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 2986 } 2987 2988 static vector float __ATTRS_o_ai 2989 vec_vmrglw(vector float a, vector float b) 2990 { 2991 return vec_perm(a, b, (vector unsigned char) 2992 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 2993 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 2994 } 2995 2996 /* vec_mfvscr */ 2997 2998 static vector unsigned short __attribute__((__always_inline__)) 2999 vec_mfvscr(void) 3000 { 3001 return __builtin_altivec_mfvscr(); 3002 } 3003 3004 /* vec_min */ 3005 3006 static vector signed char __ATTRS_o_ai 3007 vec_min(vector signed char a, vector signed char b) 3008 { 3009 return __builtin_altivec_vminsb(a, b); 3010 } 3011 3012 static vector signed char __ATTRS_o_ai 3013 vec_min(vector bool char a, vector signed char b) 3014 { 3015 return __builtin_altivec_vminsb((vector signed char)a, b); 3016 } 3017 3018 static vector signed char __ATTRS_o_ai 3019 vec_min(vector signed char a, vector bool char b) 3020 { 3021 return __builtin_altivec_vminsb(a, (vector signed char)b); 3022 } 3023 3024 static vector unsigned char __ATTRS_o_ai 3025 vec_min(vector unsigned char a, vector unsigned char b) 3026 { 3027 return __builtin_altivec_vminub(a, b); 3028 } 3029 3030 static vector unsigned char __ATTRS_o_ai 3031 vec_min(vector bool char a, vector unsigned char b) 3032 { 3033 return __builtin_altivec_vminub((vector unsigned char)a, b); 3034 } 3035 3036 static vector unsigned char __ATTRS_o_ai 3037 vec_min(vector unsigned char a, vector bool char b) 3038 { 3039 return __builtin_altivec_vminub(a, (vector unsigned char)b); 3040 } 3041 3042 static vector short __ATTRS_o_ai 3043 vec_min(vector short a, vector short b) 3044 { 3045 return __builtin_altivec_vminsh(a, b); 3046 } 3047 3048 static vector short __ATTRS_o_ai 3049 vec_min(vector bool short a, vector short b) 3050 { 3051 return __builtin_altivec_vminsh((vector short)a, b); 3052 } 3053 3054 static vector short __ATTRS_o_ai 3055 vec_min(vector short a, vector bool short b) 3056 { 3057 return __builtin_altivec_vminsh(a, (vector short)b); 3058 } 3059 3060 static vector unsigned short __ATTRS_o_ai 3061 vec_min(vector unsigned short a, vector unsigned short b) 3062 { 3063 return __builtin_altivec_vminuh(a, b); 3064 } 3065 3066 static vector unsigned short __ATTRS_o_ai 3067 vec_min(vector bool short a, vector unsigned short b) 3068 { 3069 return __builtin_altivec_vminuh((vector unsigned short)a, b); 3070 } 3071 3072 static vector unsigned short __ATTRS_o_ai 3073 vec_min(vector unsigned short a, vector bool short b) 3074 { 3075 return __builtin_altivec_vminuh(a, (vector unsigned short)b); 3076 } 3077 3078 static vector int __ATTRS_o_ai 3079 vec_min(vector int a, vector int b) 3080 { 3081 return __builtin_altivec_vminsw(a, b); 3082 } 3083 3084 static vector int __ATTRS_o_ai 3085 vec_min(vector bool int a, vector int b) 3086 { 3087 return __builtin_altivec_vminsw((vector int)a, b); 3088 } 3089 3090 static vector int __ATTRS_o_ai 3091 vec_min(vector int a, vector bool int b) 3092 { 3093 return __builtin_altivec_vminsw(a, (vector int)b); 3094 } 3095 3096 static vector unsigned int __ATTRS_o_ai 3097 vec_min(vector unsigned int a, vector unsigned int b) 3098 { 3099 return __builtin_altivec_vminuw(a, b); 3100 } 3101 3102 static vector unsigned int __ATTRS_o_ai 3103 vec_min(vector bool int a, vector unsigned int b) 3104 { 3105 return __builtin_altivec_vminuw((vector unsigned int)a, b); 3106 } 3107 3108 static vector unsigned int __ATTRS_o_ai 3109 vec_min(vector unsigned int a, vector bool int b) 3110 { 3111 return __builtin_altivec_vminuw(a, (vector unsigned int)b); 3112 } 3113 3114 static vector float __ATTRS_o_ai 3115 vec_min(vector float a, vector float b) 3116 { 3117 return __builtin_altivec_vminfp(a, b); 3118 } 3119 3120 /* vec_vminsb */ 3121 3122 static vector signed char __ATTRS_o_ai 3123 vec_vminsb(vector signed char a, vector signed char b) 3124 { 3125 return __builtin_altivec_vminsb(a, b); 3126 } 3127 3128 static vector signed char __ATTRS_o_ai 3129 vec_vminsb(vector bool char a, vector signed char b) 3130 { 3131 return __builtin_altivec_vminsb((vector signed char)a, b); 3132 } 3133 3134 static vector signed char __ATTRS_o_ai 3135 vec_vminsb(vector signed char a, vector bool char b) 3136 { 3137 return __builtin_altivec_vminsb(a, (vector signed char)b); 3138 } 3139 3140 /* vec_vminub */ 3141 3142 static vector unsigned char __ATTRS_o_ai 3143 vec_vminub(vector unsigned char a, vector unsigned char b) 3144 { 3145 return __builtin_altivec_vminub(a, b); 3146 } 3147 3148 static vector unsigned char __ATTRS_o_ai 3149 vec_vminub(vector bool char a, vector unsigned char b) 3150 { 3151 return __builtin_altivec_vminub((vector unsigned char)a, b); 3152 } 3153 3154 static vector unsigned char __ATTRS_o_ai 3155 vec_vminub(vector unsigned char a, vector bool char b) 3156 { 3157 return __builtin_altivec_vminub(a, (vector unsigned char)b); 3158 } 3159 3160 /* vec_vminsh */ 3161 3162 static vector short __ATTRS_o_ai 3163 vec_vminsh(vector short a, vector short b) 3164 { 3165 return __builtin_altivec_vminsh(a, b); 3166 } 3167 3168 static vector short __ATTRS_o_ai 3169 vec_vminsh(vector bool short a, vector short b) 3170 { 3171 return __builtin_altivec_vminsh((vector short)a, b); 3172 } 3173 3174 static vector short __ATTRS_o_ai 3175 vec_vminsh(vector short a, vector bool short b) 3176 { 3177 return __builtin_altivec_vminsh(a, (vector short)b); 3178 } 3179 3180 /* vec_vminuh */ 3181 3182 static vector unsigned short __ATTRS_o_ai 3183 vec_vminuh(vector unsigned short a, vector unsigned short b) 3184 { 3185 return __builtin_altivec_vminuh(a, b); 3186 } 3187 3188 static vector unsigned short __ATTRS_o_ai 3189 vec_vminuh(vector bool short a, vector unsigned short b) 3190 { 3191 return __builtin_altivec_vminuh((vector unsigned short)a, b); 3192 } 3193 3194 static vector unsigned short __ATTRS_o_ai 3195 vec_vminuh(vector unsigned short a, vector bool short b) 3196 { 3197 return __builtin_altivec_vminuh(a, (vector unsigned short)b); 3198 } 3199 3200 /* vec_vminsw */ 3201 3202 static vector int __ATTRS_o_ai 3203 vec_vminsw(vector int a, vector int b) 3204 { 3205 return __builtin_altivec_vminsw(a, b); 3206 } 3207 3208 static vector int __ATTRS_o_ai 3209 vec_vminsw(vector bool int a, vector int b) 3210 { 3211 return __builtin_altivec_vminsw((vector int)a, b); 3212 } 3213 3214 static vector int __ATTRS_o_ai 3215 vec_vminsw(vector int a, vector bool int b) 3216 { 3217 return __builtin_altivec_vminsw(a, (vector int)b); 3218 } 3219 3220 /* vec_vminuw */ 3221 3222 static vector unsigned int __ATTRS_o_ai 3223 vec_vminuw(vector unsigned int a, vector unsigned int b) 3224 { 3225 return __builtin_altivec_vminuw(a, b); 3226 } 3227 3228 static vector unsigned int __ATTRS_o_ai 3229 vec_vminuw(vector bool int a, vector unsigned int b) 3230 { 3231 return __builtin_altivec_vminuw((vector unsigned int)a, b); 3232 } 3233 3234 static vector unsigned int __ATTRS_o_ai 3235 vec_vminuw(vector unsigned int a, vector bool int b) 3236 { 3237 return __builtin_altivec_vminuw(a, (vector unsigned int)b); 3238 } 3239 3240 /* vec_vminfp */ 3241 3242 static vector float __attribute__((__always_inline__)) 3243 vec_vminfp(vector float a, vector float b) 3244 { 3245 return __builtin_altivec_vminfp(a, b); 3246 } 3247 3248 /* vec_mladd */ 3249 3250 #define __builtin_altivec_vmladduhm vec_mladd 3251 3252 static vector short __ATTRS_o_ai 3253 vec_mladd(vector short a, vector short b, vector short c) 3254 { 3255 return a * b + c; 3256 } 3257 3258 static vector short __ATTRS_o_ai 3259 vec_mladd(vector short a, vector unsigned short b, vector unsigned short c) 3260 { 3261 return a * (vector short)b + (vector short)c; 3262 } 3263 3264 static vector short __ATTRS_o_ai 3265 vec_mladd(vector unsigned short a, vector short b, vector short c) 3266 { 3267 return (vector short)a * b + c; 3268 } 3269 3270 static vector unsigned short __ATTRS_o_ai 3271 vec_mladd(vector unsigned short a, 3272 vector unsigned short b, 3273 vector unsigned short c) 3274 { 3275 return a * b + c; 3276 } 3277 3278 /* vec_vmladduhm */ 3279 3280 static vector short __ATTRS_o_ai 3281 vec_vmladduhm(vector short a, vector short b, vector short c) 3282 { 3283 return a * b + c; 3284 } 3285 3286 static vector short __ATTRS_o_ai 3287 vec_vmladduhm(vector short a, vector unsigned short b, vector unsigned short c) 3288 { 3289 return a * (vector short)b + (vector short)c; 3290 } 3291 3292 static vector short __ATTRS_o_ai 3293 vec_vmladduhm(vector unsigned short a, vector short b, vector short c) 3294 { 3295 return (vector short)a * b + c; 3296 } 3297 3298 static vector unsigned short __ATTRS_o_ai 3299 vec_vmladduhm(vector unsigned short a, 3300 vector unsigned short b, 3301 vector unsigned short c) 3302 { 3303 return a * b + c; 3304 } 3305 3306 /* vec_mradds */ 3307 3308 static vector short __attribute__((__always_inline__)) 3309 vec_mradds(vector short a, vector short b, vector short c) 3310 { 3311 return __builtin_altivec_vmhraddshs(a, b, c); 3312 } 3313 3314 /* vec_vmhraddshs */ 3315 3316 static vector short __attribute__((__always_inline__)) 3317 vec_vmhraddshs(vector short a, vector short b, vector short c) 3318 { 3319 return __builtin_altivec_vmhraddshs(a, b, c); 3320 } 3321 3322 /* vec_msum */ 3323 3324 static vector int __ATTRS_o_ai 3325 vec_msum(vector signed char a, vector unsigned char b, vector int c) 3326 { 3327 return __builtin_altivec_vmsummbm(a, b, c); 3328 } 3329 3330 static vector unsigned int __ATTRS_o_ai 3331 vec_msum(vector unsigned char a, vector unsigned char b, vector unsigned int c) 3332 { 3333 return __builtin_altivec_vmsumubm(a, b, c); 3334 } 3335 3336 static vector int __ATTRS_o_ai 3337 vec_msum(vector short a, vector short b, vector int c) 3338 { 3339 return __builtin_altivec_vmsumshm(a, b, c); 3340 } 3341 3342 static vector unsigned int __ATTRS_o_ai 3343 vec_msum(vector unsigned short a, 3344 vector unsigned short b, 3345 vector unsigned int c) 3346 { 3347 return __builtin_altivec_vmsumuhm(a, b, c); 3348 } 3349 3350 /* vec_vmsummbm */ 3351 3352 static vector int __attribute__((__always_inline__)) 3353 vec_vmsummbm(vector signed char a, vector unsigned char b, vector int c) 3354 { 3355 return __builtin_altivec_vmsummbm(a, b, c); 3356 } 3357 3358 /* vec_vmsumubm */ 3359 3360 static vector unsigned int __attribute__((__always_inline__)) 3361 vec_vmsumubm(vector unsigned char a, 3362 vector unsigned char b, 3363 vector unsigned int c) 3364 { 3365 return __builtin_altivec_vmsumubm(a, b, c); 3366 } 3367 3368 /* vec_vmsumshm */ 3369 3370 static vector int __attribute__((__always_inline__)) 3371 vec_vmsumshm(vector short a, vector short b, vector int c) 3372 { 3373 return __builtin_altivec_vmsumshm(a, b, c); 3374 } 3375 3376 /* vec_vmsumuhm */ 3377 3378 static vector unsigned int __attribute__((__always_inline__)) 3379 vec_vmsumuhm(vector unsigned short a, 3380 vector unsigned short b, 3381 vector unsigned int c) 3382 { 3383 return __builtin_altivec_vmsumuhm(a, b, c); 3384 } 3385 3386 /* vec_msums */ 3387 3388 static vector int __ATTRS_o_ai 3389 vec_msums(vector short a, vector short b, vector int c) 3390 { 3391 return __builtin_altivec_vmsumshs(a, b, c); 3392 } 3393 3394 static vector unsigned int __ATTRS_o_ai 3395 vec_msums(vector unsigned short a, 3396 vector unsigned short b, 3397 vector unsigned int c) 3398 { 3399 return __builtin_altivec_vmsumuhs(a, b, c); 3400 } 3401 3402 /* vec_vmsumshs */ 3403 3404 static vector int __attribute__((__always_inline__)) 3405 vec_vmsumshs(vector short a, vector short b, vector int c) 3406 { 3407 return __builtin_altivec_vmsumshs(a, b, c); 3408 } 3409 3410 /* vec_vmsumuhs */ 3411 3412 static vector unsigned int __attribute__((__always_inline__)) 3413 vec_vmsumuhs(vector unsigned short a, 3414 vector unsigned short b, 3415 vector unsigned int c) 3416 { 3417 return __builtin_altivec_vmsumuhs(a, b, c); 3418 } 3419 3420 /* vec_mtvscr */ 3421 3422 static void __ATTRS_o_ai 3423 vec_mtvscr(vector signed char a) 3424 { 3425 __builtin_altivec_mtvscr((vector int)a); 3426 } 3427 3428 static void __ATTRS_o_ai 3429 vec_mtvscr(vector unsigned char a) 3430 { 3431 __builtin_altivec_mtvscr((vector int)a); 3432 } 3433 3434 static void __ATTRS_o_ai 3435 vec_mtvscr(vector bool char a) 3436 { 3437 __builtin_altivec_mtvscr((vector int)a); 3438 } 3439 3440 static void __ATTRS_o_ai 3441 vec_mtvscr(vector short a) 3442 { 3443 __builtin_altivec_mtvscr((vector int)a); 3444 } 3445 3446 static void __ATTRS_o_ai 3447 vec_mtvscr(vector unsigned short a) 3448 { 3449 __builtin_altivec_mtvscr((vector int)a); 3450 } 3451 3452 static void __ATTRS_o_ai 3453 vec_mtvscr(vector bool short a) 3454 { 3455 __builtin_altivec_mtvscr((vector int)a); 3456 } 3457 3458 static void __ATTRS_o_ai 3459 vec_mtvscr(vector pixel a) 3460 { 3461 __builtin_altivec_mtvscr((vector int)a); 3462 } 3463 3464 static void __ATTRS_o_ai 3465 vec_mtvscr(vector int a) 3466 { 3467 __builtin_altivec_mtvscr((vector int)a); 3468 } 3469 3470 static void __ATTRS_o_ai 3471 vec_mtvscr(vector unsigned int a) 3472 { 3473 __builtin_altivec_mtvscr((vector int)a); 3474 } 3475 3476 static void __ATTRS_o_ai 3477 vec_mtvscr(vector bool int a) 3478 { 3479 __builtin_altivec_mtvscr((vector int)a); 3480 } 3481 3482 static void __ATTRS_o_ai 3483 vec_mtvscr(vector float a) 3484 { 3485 __builtin_altivec_mtvscr((vector int)a); 3486 } 3487 3488 /* vec_mule */ 3489 3490 static vector short __ATTRS_o_ai 3491 vec_mule(vector signed char a, vector signed char b) 3492 { 3493 return __builtin_altivec_vmulesb(a, b); 3494 } 3495 3496 static vector unsigned short __ATTRS_o_ai 3497 vec_mule(vector unsigned char a, vector unsigned char b) 3498 { 3499 return __builtin_altivec_vmuleub(a, b); 3500 } 3501 3502 static vector int __ATTRS_o_ai 3503 vec_mule(vector short a, vector short b) 3504 { 3505 return __builtin_altivec_vmulesh(a, b); 3506 } 3507 3508 static vector unsigned int __ATTRS_o_ai 3509 vec_mule(vector unsigned short a, vector unsigned short b) 3510 { 3511 return __builtin_altivec_vmuleuh(a, b); 3512 } 3513 3514 /* vec_vmulesb */ 3515 3516 static vector short __attribute__((__always_inline__)) 3517 vec_vmulesb(vector signed char a, vector signed char b) 3518 { 3519 return __builtin_altivec_vmulesb(a, b); 3520 } 3521 3522 /* vec_vmuleub */ 3523 3524 static vector unsigned short __attribute__((__always_inline__)) 3525 vec_vmuleub(vector unsigned char a, vector unsigned char b) 3526 { 3527 return __builtin_altivec_vmuleub(a, b); 3528 } 3529 3530 /* vec_vmulesh */ 3531 3532 static vector int __attribute__((__always_inline__)) 3533 vec_vmulesh(vector short a, vector short b) 3534 { 3535 return __builtin_altivec_vmulesh(a, b); 3536 } 3537 3538 /* vec_vmuleuh */ 3539 3540 static vector unsigned int __attribute__((__always_inline__)) 3541 vec_vmuleuh(vector unsigned short a, vector unsigned short b) 3542 { 3543 return __builtin_altivec_vmuleuh(a, b); 3544 } 3545 3546 /* vec_mulo */ 3547 3548 static vector short __ATTRS_o_ai 3549 vec_mulo(vector signed char a, vector signed char b) 3550 { 3551 return __builtin_altivec_vmulosb(a, b); 3552 } 3553 3554 static vector unsigned short __ATTRS_o_ai 3555 vec_mulo(vector unsigned char a, vector unsigned char b) 3556 { 3557 return __builtin_altivec_vmuloub(a, b); 3558 } 3559 3560 static vector int __ATTRS_o_ai 3561 vec_mulo(vector short a, vector short b) 3562 { 3563 return __builtin_altivec_vmulosh(a, b); 3564 } 3565 3566 static vector unsigned int __ATTRS_o_ai 3567 vec_mulo(vector unsigned short a, vector unsigned short b) 3568 { 3569 return __builtin_altivec_vmulouh(a, b); 3570 } 3571 3572 /* vec_vmulosb */ 3573 3574 static vector short __attribute__((__always_inline__)) 3575 vec_vmulosb(vector signed char a, vector signed char b) 3576 { 3577 return __builtin_altivec_vmulosb(a, b); 3578 } 3579 3580 /* vec_vmuloub */ 3581 3582 static vector unsigned short __attribute__((__always_inline__)) 3583 vec_vmuloub(vector unsigned char a, vector unsigned char b) 3584 { 3585 return __builtin_altivec_vmuloub(a, b); 3586 } 3587 3588 /* vec_vmulosh */ 3589 3590 static vector int __attribute__((__always_inline__)) 3591 vec_vmulosh(vector short a, vector short b) 3592 { 3593 return __builtin_altivec_vmulosh(a, b); 3594 } 3595 3596 /* vec_vmulouh */ 3597 3598 static vector unsigned int __attribute__((__always_inline__)) 3599 vec_vmulouh(vector unsigned short a, vector unsigned short b) 3600 { 3601 return __builtin_altivec_vmulouh(a, b); 3602 } 3603 3604 /* vec_nmsub */ 3605 3606 static vector float __attribute__((__always_inline__)) 3607 vec_nmsub(vector float a, vector float b, vector float c) 3608 { 3609 return __builtin_altivec_vnmsubfp(a, b, c); 3610 } 3611 3612 /* vec_vnmsubfp */ 3613 3614 static vector float __attribute__((__always_inline__)) 3615 vec_vnmsubfp(vector float a, vector float b, vector float c) 3616 { 3617 return __builtin_altivec_vnmsubfp(a, b, c); 3618 } 3619 3620 /* vec_nor */ 3621 3622 #define __builtin_altivec_vnor vec_nor 3623 3624 static vector signed char __ATTRS_o_ai 3625 vec_nor(vector signed char a, vector signed char b) 3626 { 3627 return ~(a | b); 3628 } 3629 3630 static vector unsigned char __ATTRS_o_ai 3631 vec_nor(vector unsigned char a, vector unsigned char b) 3632 { 3633 return ~(a | b); 3634 } 3635 3636 static vector bool char __ATTRS_o_ai 3637 vec_nor(vector bool char a, vector bool char b) 3638 { 3639 return ~(a | b); 3640 } 3641 3642 static vector short __ATTRS_o_ai 3643 vec_nor(vector short a, vector short b) 3644 { 3645 return ~(a | b); 3646 } 3647 3648 static vector unsigned short __ATTRS_o_ai 3649 vec_nor(vector unsigned short a, vector unsigned short b) 3650 { 3651 return ~(a | b); 3652 } 3653 3654 static vector bool short __ATTRS_o_ai 3655 vec_nor(vector bool short a, vector bool short b) 3656 { 3657 return ~(a | b); 3658 } 3659 3660 static vector int __ATTRS_o_ai 3661 vec_nor(vector int a, vector int b) 3662 { 3663 return ~(a | b); 3664 } 3665 3666 static vector unsigned int __ATTRS_o_ai 3667 vec_nor(vector unsigned int a, vector unsigned int b) 3668 { 3669 return ~(a | b); 3670 } 3671 3672 static vector bool int __ATTRS_o_ai 3673 vec_nor(vector bool int a, vector bool int b) 3674 { 3675 return ~(a | b); 3676 } 3677 3678 static vector float __ATTRS_o_ai 3679 vec_nor(vector float a, vector float b) 3680 { 3681 vector unsigned int res = ~((vector unsigned int)a | (vector unsigned int)b); 3682 return (vector float)res; 3683 } 3684 3685 /* vec_vnor */ 3686 3687 static vector signed char __ATTRS_o_ai 3688 vec_vnor(vector signed char a, vector signed char b) 3689 { 3690 return ~(a | b); 3691 } 3692 3693 static vector unsigned char __ATTRS_o_ai 3694 vec_vnor(vector unsigned char a, vector unsigned char b) 3695 { 3696 return ~(a | b); 3697 } 3698 3699 static vector bool char __ATTRS_o_ai 3700 vec_vnor(vector bool char a, vector bool char b) 3701 { 3702 return ~(a | b); 3703 } 3704 3705 static vector short __ATTRS_o_ai 3706 vec_vnor(vector short a, vector short b) 3707 { 3708 return ~(a | b); 3709 } 3710 3711 static vector unsigned short __ATTRS_o_ai 3712 vec_vnor(vector unsigned short a, vector unsigned short b) 3713 { 3714 return ~(a | b); 3715 } 3716 3717 static vector bool short __ATTRS_o_ai 3718 vec_vnor(vector bool short a, vector bool short b) 3719 { 3720 return ~(a | b); 3721 } 3722 3723 static vector int __ATTRS_o_ai 3724 vec_vnor(vector int a, vector int b) 3725 { 3726 return ~(a | b); 3727 } 3728 3729 static vector unsigned int __ATTRS_o_ai 3730 vec_vnor(vector unsigned int a, vector unsigned int b) 3731 { 3732 return ~(a | b); 3733 } 3734 3735 static vector bool int __ATTRS_o_ai 3736 vec_vnor(vector bool int a, vector bool int b) 3737 { 3738 return ~(a | b); 3739 } 3740 3741 static vector float __ATTRS_o_ai 3742 vec_vnor(vector float a, vector float b) 3743 { 3744 vector unsigned int res = ~((vector unsigned int)a | (vector unsigned int)b); 3745 return (vector float)res; 3746 } 3747 3748 /* vec_or */ 3749 3750 #define __builtin_altivec_vor vec_or 3751 3752 static vector signed char __ATTRS_o_ai 3753 vec_or(vector signed char a, vector signed char b) 3754 { 3755 return a | b; 3756 } 3757 3758 static vector signed char __ATTRS_o_ai 3759 vec_or(vector bool char a, vector signed char b) 3760 { 3761 return (vector signed char)a | b; 3762 } 3763 3764 static vector signed char __ATTRS_o_ai 3765 vec_or(vector signed char a, vector bool char b) 3766 { 3767 return a | (vector signed char)b; 3768 } 3769 3770 static vector unsigned char __ATTRS_o_ai 3771 vec_or(vector unsigned char a, vector unsigned char b) 3772 { 3773 return a | b; 3774 } 3775 3776 static vector unsigned char __ATTRS_o_ai 3777 vec_or(vector bool char a, vector unsigned char b) 3778 { 3779 return (vector unsigned char)a | b; 3780 } 3781 3782 static vector unsigned char __ATTRS_o_ai 3783 vec_or(vector unsigned char a, vector bool char b) 3784 { 3785 return a | (vector unsigned char)b; 3786 } 3787 3788 static vector bool char __ATTRS_o_ai 3789 vec_or(vector bool char a, vector bool char b) 3790 { 3791 return a | b; 3792 } 3793 3794 static vector short __ATTRS_o_ai 3795 vec_or(vector short a, vector short b) 3796 { 3797 return a | b; 3798 } 3799 3800 static vector short __ATTRS_o_ai 3801 vec_or(vector bool short a, vector short b) 3802 { 3803 return (vector short)a | b; 3804 } 3805 3806 static vector short __ATTRS_o_ai 3807 vec_or(vector short a, vector bool short b) 3808 { 3809 return a | (vector short)b; 3810 } 3811 3812 static vector unsigned short __ATTRS_o_ai 3813 vec_or(vector unsigned short a, vector unsigned short b) 3814 { 3815 return a | b; 3816 } 3817 3818 static vector unsigned short __ATTRS_o_ai 3819 vec_or(vector bool short a, vector unsigned short b) 3820 { 3821 return (vector unsigned short)a | b; 3822 } 3823 3824 static vector unsigned short __ATTRS_o_ai 3825 vec_or(vector unsigned short a, vector bool short b) 3826 { 3827 return a | (vector unsigned short)b; 3828 } 3829 3830 static vector bool short __ATTRS_o_ai 3831 vec_or(vector bool short a, vector bool short b) 3832 { 3833 return a | b; 3834 } 3835 3836 static vector int __ATTRS_o_ai 3837 vec_or(vector int a, vector int b) 3838 { 3839 return a | b; 3840 } 3841 3842 static vector int __ATTRS_o_ai 3843 vec_or(vector bool int a, vector int b) 3844 { 3845 return (vector int)a | b; 3846 } 3847 3848 static vector int __ATTRS_o_ai 3849 vec_or(vector int a, vector bool int b) 3850 { 3851 return a | (vector int)b; 3852 } 3853 3854 static vector unsigned int __ATTRS_o_ai 3855 vec_or(vector unsigned int a, vector unsigned int b) 3856 { 3857 return a | b; 3858 } 3859 3860 static vector unsigned int __ATTRS_o_ai 3861 vec_or(vector bool int a, vector unsigned int b) 3862 { 3863 return (vector unsigned int)a | b; 3864 } 3865 3866 static vector unsigned int __ATTRS_o_ai 3867 vec_or(vector unsigned int a, vector bool int b) 3868 { 3869 return a | (vector unsigned int)b; 3870 } 3871 3872 static vector bool int __ATTRS_o_ai 3873 vec_or(vector bool int a, vector bool int b) 3874 { 3875 return a | b; 3876 } 3877 3878 static vector float __ATTRS_o_ai 3879 vec_or(vector float a, vector float b) 3880 { 3881 vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b; 3882 return (vector float)res; 3883 } 3884 3885 static vector float __ATTRS_o_ai 3886 vec_or(vector bool int a, vector float b) 3887 { 3888 vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b; 3889 return (vector float)res; 3890 } 3891 3892 static vector float __ATTRS_o_ai 3893 vec_or(vector float a, vector bool int b) 3894 { 3895 vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b; 3896 return (vector float)res; 3897 } 3898 3899 /* vec_vor */ 3900 3901 static vector signed char __ATTRS_o_ai 3902 vec_vor(vector signed char a, vector signed char b) 3903 { 3904 return a | b; 3905 } 3906 3907 static vector signed char __ATTRS_o_ai 3908 vec_vor(vector bool char a, vector signed char b) 3909 { 3910 return (vector signed char)a | b; 3911 } 3912 3913 static vector signed char __ATTRS_o_ai 3914 vec_vor(vector signed char a, vector bool char b) 3915 { 3916 return a | (vector signed char)b; 3917 } 3918 3919 static vector unsigned char __ATTRS_o_ai 3920 vec_vor(vector unsigned char a, vector unsigned char b) 3921 { 3922 return a | b; 3923 } 3924 3925 static vector unsigned char __ATTRS_o_ai 3926 vec_vor(vector bool char a, vector unsigned char b) 3927 { 3928 return (vector unsigned char)a | b; 3929 } 3930 3931 static vector unsigned char __ATTRS_o_ai 3932 vec_vor(vector unsigned char a, vector bool char b) 3933 { 3934 return a | (vector unsigned char)b; 3935 } 3936 3937 static vector bool char __ATTRS_o_ai 3938 vec_vor(vector bool char a, vector bool char b) 3939 { 3940 return a | b; 3941 } 3942 3943 static vector short __ATTRS_o_ai 3944 vec_vor(vector short a, vector short b) 3945 { 3946 return a | b; 3947 } 3948 3949 static vector short __ATTRS_o_ai 3950 vec_vor(vector bool short a, vector short b) 3951 { 3952 return (vector short)a | b; 3953 } 3954 3955 static vector short __ATTRS_o_ai 3956 vec_vor(vector short a, vector bool short b) 3957 { 3958 return a | (vector short)b; 3959 } 3960 3961 static vector unsigned short __ATTRS_o_ai 3962 vec_vor(vector unsigned short a, vector unsigned short b) 3963 { 3964 return a | b; 3965 } 3966 3967 static vector unsigned short __ATTRS_o_ai 3968 vec_vor(vector bool short a, vector unsigned short b) 3969 { 3970 return (vector unsigned short)a | b; 3971 } 3972 3973 static vector unsigned short __ATTRS_o_ai 3974 vec_vor(vector unsigned short a, vector bool short b) 3975 { 3976 return a | (vector unsigned short)b; 3977 } 3978 3979 static vector bool short __ATTRS_o_ai 3980 vec_vor(vector bool short a, vector bool short b) 3981 { 3982 return a | b; 3983 } 3984 3985 static vector int __ATTRS_o_ai 3986 vec_vor(vector int a, vector int b) 3987 { 3988 return a | b; 3989 } 3990 3991 static vector int __ATTRS_o_ai 3992 vec_vor(vector bool int a, vector int b) 3993 { 3994 return (vector int)a | b; 3995 } 3996 3997 static vector int __ATTRS_o_ai 3998 vec_vor(vector int a, vector bool int b) 3999 { 4000 return a | (vector int)b; 4001 } 4002 4003 static vector unsigned int __ATTRS_o_ai 4004 vec_vor(vector unsigned int a, vector unsigned int b) 4005 { 4006 return a | b; 4007 } 4008 4009 static vector unsigned int __ATTRS_o_ai 4010 vec_vor(vector bool int a, vector unsigned int b) 4011 { 4012 return (vector unsigned int)a | b; 4013 } 4014 4015 static vector unsigned int __ATTRS_o_ai 4016 vec_vor(vector unsigned int a, vector bool int b) 4017 { 4018 return a | (vector unsigned int)b; 4019 } 4020 4021 static vector bool int __ATTRS_o_ai 4022 vec_vor(vector bool int a, vector bool int b) 4023 { 4024 return a | b; 4025 } 4026 4027 static vector float __ATTRS_o_ai 4028 vec_vor(vector float a, vector float b) 4029 { 4030 vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b; 4031 return (vector float)res; 4032 } 4033 4034 static vector float __ATTRS_o_ai 4035 vec_vor(vector bool int a, vector float b) 4036 { 4037 vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b; 4038 return (vector float)res; 4039 } 4040 4041 static vector float __ATTRS_o_ai 4042 vec_vor(vector float a, vector bool int b) 4043 { 4044 vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b; 4045 return (vector float)res; 4046 } 4047 4048 /* vec_pack */ 4049 4050 static vector signed char __ATTRS_o_ai 4051 vec_pack(vector signed short a, vector signed short b) 4052 { 4053 return (vector signed char)vec_perm(a, b, (vector unsigned char) 4054 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 4055 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 4056 } 4057 4058 static vector unsigned char __ATTRS_o_ai 4059 vec_pack(vector unsigned short a, vector unsigned short b) 4060 { 4061 return (vector unsigned char)vec_perm(a, b, (vector unsigned char) 4062 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 4063 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 4064 } 4065 4066 static vector bool char __ATTRS_o_ai 4067 vec_pack(vector bool short a, vector bool short b) 4068 { 4069 return (vector bool char)vec_perm(a, b, (vector unsigned char) 4070 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 4071 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 4072 } 4073 4074 static vector short __ATTRS_o_ai 4075 vec_pack(vector int a, vector int b) 4076 { 4077 return (vector short)vec_perm(a, b, (vector unsigned char) 4078 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 4079 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 4080 } 4081 4082 static vector unsigned short __ATTRS_o_ai 4083 vec_pack(vector unsigned int a, vector unsigned int b) 4084 { 4085 return (vector unsigned short)vec_perm(a, b, (vector unsigned char) 4086 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 4087 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 4088 } 4089 4090 static vector bool short __ATTRS_o_ai 4091 vec_pack(vector bool int a, vector bool int b) 4092 { 4093 return (vector bool short)vec_perm(a, b, (vector unsigned char) 4094 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 4095 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 4096 } 4097 4098 /* vec_vpkuhum */ 4099 4100 #define __builtin_altivec_vpkuhum vec_vpkuhum 4101 4102 static vector signed char __ATTRS_o_ai 4103 vec_vpkuhum(vector signed short a, vector signed short b) 4104 { 4105 return (vector signed char)vec_perm(a, b, (vector unsigned char) 4106 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 4107 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 4108 } 4109 4110 static vector unsigned char __ATTRS_o_ai 4111 vec_vpkuhum(vector unsigned short a, vector unsigned short b) 4112 { 4113 return (vector unsigned char)vec_perm(a, b, (vector unsigned char) 4114 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 4115 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 4116 } 4117 4118 static vector bool char __ATTRS_o_ai 4119 vec_vpkuhum(vector bool short a, vector bool short b) 4120 { 4121 return (vector bool char)vec_perm(a, b, (vector unsigned char) 4122 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 4123 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 4124 } 4125 4126 /* vec_vpkuwum */ 4127 4128 #define __builtin_altivec_vpkuwum vec_vpkuwum 4129 4130 static vector short __ATTRS_o_ai 4131 vec_vpkuwum(vector int a, vector int b) 4132 { 4133 return (vector short)vec_perm(a, b, (vector unsigned char) 4134 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 4135 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 4136 } 4137 4138 static vector unsigned short __ATTRS_o_ai 4139 vec_vpkuwum(vector unsigned int a, vector unsigned int b) 4140 { 4141 return (vector unsigned short)vec_perm(a, b, (vector unsigned char) 4142 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 4143 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 4144 } 4145 4146 static vector bool short __ATTRS_o_ai 4147 vec_vpkuwum(vector bool int a, vector bool int b) 4148 { 4149 return (vector bool short)vec_perm(a, b, (vector unsigned char) 4150 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 4151 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 4152 } 4153 4154 /* vec_packpx */ 4155 4156 static vector pixel __attribute__((__always_inline__)) 4157 vec_packpx(vector unsigned int a, vector unsigned int b) 4158 { 4159 return (vector pixel)__builtin_altivec_vpkpx(a, b); 4160 } 4161 4162 /* vec_vpkpx */ 4163 4164 static vector pixel __attribute__((__always_inline__)) 4165 vec_vpkpx(vector unsigned int a, vector unsigned int b) 4166 { 4167 return (vector pixel)__builtin_altivec_vpkpx(a, b); 4168 } 4169 4170 /* vec_packs */ 4171 4172 static vector signed char __ATTRS_o_ai 4173 vec_packs(vector short a, vector short b) 4174 { 4175 return __builtin_altivec_vpkshss(a, b); 4176 } 4177 4178 static vector unsigned char __ATTRS_o_ai 4179 vec_packs(vector unsigned short a, vector unsigned short b) 4180 { 4181 return __builtin_altivec_vpkuhus(a, b); 4182 } 4183 4184 static vector signed short __ATTRS_o_ai 4185 vec_packs(vector int a, vector int b) 4186 { 4187 return __builtin_altivec_vpkswss(a, b); 4188 } 4189 4190 static vector unsigned short __ATTRS_o_ai 4191 vec_packs(vector unsigned int a, vector unsigned int b) 4192 { 4193 return __builtin_altivec_vpkuwus(a, b); 4194 } 4195 4196 /* vec_vpkshss */ 4197 4198 static vector signed char __attribute__((__always_inline__)) 4199 vec_vpkshss(vector short a, vector short b) 4200 { 4201 return __builtin_altivec_vpkshss(a, b); 4202 } 4203 4204 /* vec_vpkuhus */ 4205 4206 static vector unsigned char __attribute__((__always_inline__)) 4207 vec_vpkuhus(vector unsigned short a, vector unsigned short b) 4208 { 4209 return __builtin_altivec_vpkuhus(a, b); 4210 } 4211 4212 /* vec_vpkswss */ 4213 4214 static vector signed short __attribute__((__always_inline__)) 4215 vec_vpkswss(vector int a, vector int b) 4216 { 4217 return __builtin_altivec_vpkswss(a, b); 4218 } 4219 4220 /* vec_vpkuwus */ 4221 4222 static vector unsigned short __attribute__((__always_inline__)) 4223 vec_vpkuwus(vector unsigned int a, vector unsigned int b) 4224 { 4225 return __builtin_altivec_vpkuwus(a, b); 4226 } 4227 4228 /* vec_packsu */ 4229 4230 static vector unsigned char __ATTRS_o_ai 4231 vec_packsu(vector short a, vector short b) 4232 { 4233 return __builtin_altivec_vpkshus(a, b); 4234 } 4235 4236 static vector unsigned char __ATTRS_o_ai 4237 vec_packsu(vector unsigned short a, vector unsigned short b) 4238 { 4239 return __builtin_altivec_vpkuhus(a, b); 4240 } 4241 4242 static vector unsigned short __ATTRS_o_ai 4243 vec_packsu(vector int a, vector int b) 4244 { 4245 return __builtin_altivec_vpkswus(a, b); 4246 } 4247 4248 static vector unsigned short __ATTRS_o_ai 4249 vec_packsu(vector unsigned int a, vector unsigned int b) 4250 { 4251 return __builtin_altivec_vpkuwus(a, b); 4252 } 4253 4254 /* vec_vpkshus */ 4255 4256 static vector unsigned char __ATTRS_o_ai 4257 vec_vpkshus(vector short a, vector short b) 4258 { 4259 return __builtin_altivec_vpkshus(a, b); 4260 } 4261 4262 static vector unsigned char __ATTRS_o_ai 4263 vec_vpkshus(vector unsigned short a, vector unsigned short b) 4264 { 4265 return __builtin_altivec_vpkuhus(a, b); 4266 } 4267 4268 /* vec_vpkswus */ 4269 4270 static vector unsigned short __ATTRS_o_ai 4271 vec_vpkswus(vector int a, vector int b) 4272 { 4273 return __builtin_altivec_vpkswus(a, b); 4274 } 4275 4276 static vector unsigned short __ATTRS_o_ai 4277 vec_vpkswus(vector unsigned int a, vector unsigned int b) 4278 { 4279 return __builtin_altivec_vpkuwus(a, b); 4280 } 4281 4282 /* vec_perm */ 4283 4284 vector signed char __ATTRS_o_ai 4285 vec_perm(vector signed char a, vector signed char b, vector unsigned char c) 4286 { 4287 return (vector signed char) 4288 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4289 } 4290 4291 vector unsigned char __ATTRS_o_ai 4292 vec_perm(vector unsigned char a, 4293 vector unsigned char b, 4294 vector unsigned char c) 4295 { 4296 return (vector unsigned char) 4297 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4298 } 4299 4300 vector bool char __ATTRS_o_ai 4301 vec_perm(vector bool char a, vector bool char b, vector unsigned char c) 4302 { 4303 return (vector bool char) 4304 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4305 } 4306 4307 vector short __ATTRS_o_ai 4308 vec_perm(vector short a, vector short b, vector unsigned char c) 4309 { 4310 return (vector short) 4311 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4312 } 4313 4314 vector unsigned short __ATTRS_o_ai 4315 vec_perm(vector unsigned short a, 4316 vector unsigned short b, 4317 vector unsigned char c) 4318 { 4319 return (vector unsigned short) 4320 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4321 } 4322 4323 vector bool short __ATTRS_o_ai 4324 vec_perm(vector bool short a, vector bool short b, vector unsigned char c) 4325 { 4326 return (vector bool short) 4327 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4328 } 4329 4330 vector pixel __ATTRS_o_ai 4331 vec_perm(vector pixel a, vector pixel b, vector unsigned char c) 4332 { 4333 return (vector pixel) 4334 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4335 } 4336 4337 vector int __ATTRS_o_ai 4338 vec_perm(vector int a, vector int b, vector unsigned char c) 4339 { 4340 return (vector int)__builtin_altivec_vperm_4si(a, b, c); 4341 } 4342 4343 vector unsigned int __ATTRS_o_ai 4344 vec_perm(vector unsigned int a, vector unsigned int b, vector unsigned char c) 4345 { 4346 return (vector unsigned int) 4347 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4348 } 4349 4350 vector bool int __ATTRS_o_ai 4351 vec_perm(vector bool int a, vector bool int b, vector unsigned char c) 4352 { 4353 return (vector bool int) 4354 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4355 } 4356 4357 vector float __ATTRS_o_ai 4358 vec_perm(vector float a, vector float b, vector unsigned char c) 4359 { 4360 return (vector float) 4361 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4362 } 4363 4364 /* vec_vperm */ 4365 4366 vector signed char __ATTRS_o_ai 4367 vec_vperm(vector signed char a, vector signed char b, vector unsigned char c) 4368 { 4369 return (vector signed char) 4370 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4371 } 4372 4373 vector unsigned char __ATTRS_o_ai 4374 vec_vperm(vector unsigned char a, 4375 vector unsigned char b, 4376 vector unsigned char c) 4377 { 4378 return (vector unsigned char) 4379 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4380 } 4381 4382 vector bool char __ATTRS_o_ai 4383 vec_vperm(vector bool char a, vector bool char b, vector unsigned char c) 4384 { 4385 return (vector bool char) 4386 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4387 } 4388 4389 vector short __ATTRS_o_ai 4390 vec_vperm(vector short a, vector short b, vector unsigned char c) 4391 { 4392 return (vector short) 4393 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4394 } 4395 4396 vector unsigned short __ATTRS_o_ai 4397 vec_vperm(vector unsigned short a, 4398 vector unsigned short b, 4399 vector unsigned char c) 4400 { 4401 return (vector unsigned short) 4402 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4403 } 4404 4405 vector bool short __ATTRS_o_ai 4406 vec_vperm(vector bool short a, vector bool short b, vector unsigned char c) 4407 { 4408 return (vector bool short) 4409 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4410 } 4411 4412 vector pixel __ATTRS_o_ai 4413 vec_vperm(vector pixel a, vector pixel b, vector unsigned char c) 4414 { 4415 return (vector pixel) 4416 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4417 } 4418 4419 vector int __ATTRS_o_ai 4420 vec_vperm(vector int a, vector int b, vector unsigned char c) 4421 { 4422 return (vector int)__builtin_altivec_vperm_4si(a, b, c); 4423 } 4424 4425 vector unsigned int __ATTRS_o_ai 4426 vec_vperm(vector unsigned int a, vector unsigned int b, vector unsigned char c) 4427 { 4428 return (vector unsigned int) 4429 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4430 } 4431 4432 vector bool int __ATTRS_o_ai 4433 vec_vperm(vector bool int a, vector bool int b, vector unsigned char c) 4434 { 4435 return (vector bool int) 4436 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4437 } 4438 4439 vector float __ATTRS_o_ai 4440 vec_vperm(vector float a, vector float b, vector unsigned char c) 4441 { 4442 return (vector float) 4443 __builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4444 } 4445 4446 /* vec_re */ 4447 4448 vector float __attribute__((__always_inline__)) 4449 vec_re(vector float a) 4450 { 4451 return __builtin_altivec_vrefp(a); 4452 } 4453 4454 /* vec_vrefp */ 4455 4456 vector float __attribute__((__always_inline__)) 4457 vec_vrefp(vector float a) 4458 { 4459 return __builtin_altivec_vrefp(a); 4460 } 4461 4462 /* vec_rl */ 4463 4464 static vector signed char __ATTRS_o_ai 4465 vec_rl(vector signed char a, vector unsigned char b) 4466 { 4467 return (vector signed char)__builtin_altivec_vrlb((vector char)a, b); 4468 } 4469 4470 static vector unsigned char __ATTRS_o_ai 4471 vec_rl(vector unsigned char a, vector unsigned char b) 4472 { 4473 return (vector unsigned char)__builtin_altivec_vrlb((vector char)a, b); 4474 } 4475 4476 static vector short __ATTRS_o_ai 4477 vec_rl(vector short a, vector unsigned short b) 4478 { 4479 return __builtin_altivec_vrlh(a, b); 4480 } 4481 4482 static vector unsigned short __ATTRS_o_ai 4483 vec_rl(vector unsigned short a, vector unsigned short b) 4484 { 4485 return (vector unsigned short)__builtin_altivec_vrlh((vector short)a, b); 4486 } 4487 4488 static vector int __ATTRS_o_ai 4489 vec_rl(vector int a, vector unsigned int b) 4490 { 4491 return __builtin_altivec_vrlw(a, b); 4492 } 4493 4494 static vector unsigned int __ATTRS_o_ai 4495 vec_rl(vector unsigned int a, vector unsigned int b) 4496 { 4497 return (vector unsigned int)__builtin_altivec_vrlw((vector int)a, b); 4498 } 4499 4500 /* vec_vrlb */ 4501 4502 static vector signed char __ATTRS_o_ai 4503 vec_vrlb(vector signed char a, vector unsigned char b) 4504 { 4505 return (vector signed char)__builtin_altivec_vrlb((vector char)a, b); 4506 } 4507 4508 static vector unsigned char __ATTRS_o_ai 4509 vec_vrlb(vector unsigned char a, vector unsigned char b) 4510 { 4511 return (vector unsigned char)__builtin_altivec_vrlb((vector char)a, b); 4512 } 4513 4514 /* vec_vrlh */ 4515 4516 static vector short __ATTRS_o_ai 4517 vec_vrlh(vector short a, vector unsigned short b) 4518 { 4519 return __builtin_altivec_vrlh(a, b); 4520 } 4521 4522 static vector unsigned short __ATTRS_o_ai 4523 vec_vrlh(vector unsigned short a, vector unsigned short b) 4524 { 4525 return (vector unsigned short)__builtin_altivec_vrlh((vector short)a, b); 4526 } 4527 4528 /* vec_vrlw */ 4529 4530 static vector int __ATTRS_o_ai 4531 vec_vrlw(vector int a, vector unsigned int b) 4532 { 4533 return __builtin_altivec_vrlw(a, b); 4534 } 4535 4536 static vector unsigned int __ATTRS_o_ai 4537 vec_vrlw(vector unsigned int a, vector unsigned int b) 4538 { 4539 return (vector unsigned int)__builtin_altivec_vrlw((vector int)a, b); 4540 } 4541 4542 /* vec_round */ 4543 4544 static vector float __attribute__((__always_inline__)) 4545 vec_round(vector float a) 4546 { 4547 return __builtin_altivec_vrfin(a); 4548 } 4549 4550 /* vec_vrfin */ 4551 4552 static vector float __attribute__((__always_inline__)) 4553 vec_vrfin(vector float a) 4554 { 4555 return __builtin_altivec_vrfin(a); 4556 } 4557 4558 /* vec_rsqrte */ 4559 4560 static __vector float __attribute__((__always_inline__)) 4561 vec_rsqrte(vector float a) 4562 { 4563 return __builtin_altivec_vrsqrtefp(a); 4564 } 4565 4566 /* vec_vrsqrtefp */ 4567 4568 static __vector float __attribute__((__always_inline__)) 4569 vec_vrsqrtefp(vector float a) 4570 { 4571 return __builtin_altivec_vrsqrtefp(a); 4572 } 4573 4574 /* vec_sel */ 4575 4576 #define __builtin_altivec_vsel_4si vec_sel 4577 4578 static vector signed char __ATTRS_o_ai 4579 vec_sel(vector signed char a, vector signed char b, vector unsigned char c) 4580 { 4581 return (a & ~(vector signed char)c) | (b & (vector signed char)c); 4582 } 4583 4584 static vector signed char __ATTRS_o_ai 4585 vec_sel(vector signed char a, vector signed char b, vector bool char c) 4586 { 4587 return (a & ~(vector signed char)c) | (b & (vector signed char)c); 4588 } 4589 4590 static vector unsigned char __ATTRS_o_ai 4591 vec_sel(vector unsigned char a, vector unsigned char b, vector unsigned char c) 4592 { 4593 return (a & ~c) | (b & c); 4594 } 4595 4596 static vector unsigned char __ATTRS_o_ai 4597 vec_sel(vector unsigned char a, vector unsigned char b, vector bool char c) 4598 { 4599 return (a & ~(vector unsigned char)c) | (b & (vector unsigned char)c); 4600 } 4601 4602 static vector bool char __ATTRS_o_ai 4603 vec_sel(vector bool char a, vector bool char b, vector unsigned char c) 4604 { 4605 return (a & ~(vector bool char)c) | (b & (vector bool char)c); 4606 } 4607 4608 static vector bool char __ATTRS_o_ai 4609 vec_sel(vector bool char a, vector bool char b, vector bool char c) 4610 { 4611 return (a & ~c) | (b & c); 4612 } 4613 4614 static vector short __ATTRS_o_ai 4615 vec_sel(vector short a, vector short b, vector unsigned short c) 4616 { 4617 return (a & ~(vector short)c) | (b & (vector short)c); 4618 } 4619 4620 static vector short __ATTRS_o_ai 4621 vec_sel(vector short a, vector short b, vector bool short c) 4622 { 4623 return (a & ~(vector short)c) | (b & (vector short)c); 4624 } 4625 4626 static vector unsigned short __ATTRS_o_ai 4627 vec_sel(vector unsigned short a, 4628 vector unsigned short b, 4629 vector unsigned short c) 4630 { 4631 return (a & ~c) | (b & c); 4632 } 4633 4634 static vector unsigned short __ATTRS_o_ai 4635 vec_sel(vector unsigned short a, vector unsigned short b, vector bool short c) 4636 { 4637 return (a & ~(vector unsigned short)c) | (b & (vector unsigned short)c); 4638 } 4639 4640 static vector bool short __ATTRS_o_ai 4641 vec_sel(vector bool short a, vector bool short b, vector unsigned short c) 4642 { 4643 return (a & ~(vector bool short)c) | (b & (vector bool short)c); 4644 } 4645 4646 static vector bool short __ATTRS_o_ai 4647 vec_sel(vector bool short a, vector bool short b, vector bool short c) 4648 { 4649 return (a & ~c) | (b & c); 4650 } 4651 4652 static vector int __ATTRS_o_ai 4653 vec_sel(vector int a, vector int b, vector unsigned int c) 4654 { 4655 return (a & ~(vector int)c) | (b & (vector int)c); 4656 } 4657 4658 static vector int __ATTRS_o_ai 4659 vec_sel(vector int a, vector int b, vector bool int c) 4660 { 4661 return (a & ~(vector int)c) | (b & (vector int)c); 4662 } 4663 4664 static vector unsigned int __ATTRS_o_ai 4665 vec_sel(vector unsigned int a, vector unsigned int b, vector unsigned int c) 4666 { 4667 return (a & ~c) | (b & c); 4668 } 4669 4670 static vector unsigned int __ATTRS_o_ai 4671 vec_sel(vector unsigned int a, vector unsigned int b, vector bool int c) 4672 { 4673 return (a & ~(vector unsigned int)c) | (b & (vector unsigned int)c); 4674 } 4675 4676 static vector bool int __ATTRS_o_ai 4677 vec_sel(vector bool int a, vector bool int b, vector unsigned int c) 4678 { 4679 return (a & ~(vector bool int)c) | (b & (vector bool int)c); 4680 } 4681 4682 static vector bool int __ATTRS_o_ai 4683 vec_sel(vector bool int a, vector bool int b, vector bool int c) 4684 { 4685 return (a & ~c) | (b & c); 4686 } 4687 4688 static vector float __ATTRS_o_ai 4689 vec_sel(vector float a, vector float b, vector unsigned int c) 4690 { 4691 vector int res = ((vector int)a & ~(vector int)c) 4692 | ((vector int)b & (vector int)c); 4693 return (vector float)res; 4694 } 4695 4696 static vector float __ATTRS_o_ai 4697 vec_sel(vector float a, vector float b, vector bool int c) 4698 { 4699 vector int res = ((vector int)a & ~(vector int)c) 4700 | ((vector int)b & (vector int)c); 4701 return (vector float)res; 4702 } 4703 4704 /* vec_vsel */ 4705 4706 static vector signed char __ATTRS_o_ai 4707 vec_vsel(vector signed char a, vector signed char b, vector unsigned char c) 4708 { 4709 return (a & ~(vector signed char)c) | (b & (vector signed char)c); 4710 } 4711 4712 static vector signed char __ATTRS_o_ai 4713 vec_vsel(vector signed char a, vector signed char b, vector bool char c) 4714 { 4715 return (a & ~(vector signed char)c) | (b & (vector signed char)c); 4716 } 4717 4718 static vector unsigned char __ATTRS_o_ai 4719 vec_vsel(vector unsigned char a, vector unsigned char b, vector unsigned char c) 4720 { 4721 return (a & ~c) | (b & c); 4722 } 4723 4724 static vector unsigned char __ATTRS_o_ai 4725 vec_vsel(vector unsigned char a, vector unsigned char b, vector bool char c) 4726 { 4727 return (a & ~(vector unsigned char)c) | (b & (vector unsigned char)c); 4728 } 4729 4730 static vector bool char __ATTRS_o_ai 4731 vec_vsel(vector bool char a, vector bool char b, vector unsigned char c) 4732 { 4733 return (a & ~(vector bool char)c) | (b & (vector bool char)c); 4734 } 4735 4736 static vector bool char __ATTRS_o_ai 4737 vec_vsel(vector bool char a, vector bool char b, vector bool char c) 4738 { 4739 return (a & ~c) | (b & c); 4740 } 4741 4742 static vector short __ATTRS_o_ai 4743 vec_vsel(vector short a, vector short b, vector unsigned short c) 4744 { 4745 return (a & ~(vector short)c) | (b & (vector short)c); 4746 } 4747 4748 static vector short __ATTRS_o_ai 4749 vec_vsel(vector short a, vector short b, vector bool short c) 4750 { 4751 return (a & ~(vector short)c) | (b & (vector short)c); 4752 } 4753 4754 static vector unsigned short __ATTRS_o_ai 4755 vec_vsel(vector unsigned short a, 4756 vector unsigned short b, 4757 vector unsigned short c) 4758 { 4759 return (a & ~c) | (b & c); 4760 } 4761 4762 static vector unsigned short __ATTRS_o_ai 4763 vec_vsel(vector unsigned short a, vector unsigned short b, vector bool short c) 4764 { 4765 return (a & ~(vector unsigned short)c) | (b & (vector unsigned short)c); 4766 } 4767 4768 static vector bool short __ATTRS_o_ai 4769 vec_vsel(vector bool short a, vector bool short b, vector unsigned short c) 4770 { 4771 return (a & ~(vector bool short)c) | (b & (vector bool short)c); 4772 } 4773 4774 static vector bool short __ATTRS_o_ai 4775 vec_vsel(vector bool short a, vector bool short b, vector bool short c) 4776 { 4777 return (a & ~c) | (b & c); 4778 } 4779 4780 static vector int __ATTRS_o_ai 4781 vec_vsel(vector int a, vector int b, vector unsigned int c) 4782 { 4783 return (a & ~(vector int)c) | (b & (vector int)c); 4784 } 4785 4786 static vector int __ATTRS_o_ai 4787 vec_vsel(vector int a, vector int b, vector bool int c) 4788 { 4789 return (a & ~(vector int)c) | (b & (vector int)c); 4790 } 4791 4792 static vector unsigned int __ATTRS_o_ai 4793 vec_vsel(vector unsigned int a, vector unsigned int b, vector unsigned int c) 4794 { 4795 return (a & ~c) | (b & c); 4796 } 4797 4798 static vector unsigned int __ATTRS_o_ai 4799 vec_vsel(vector unsigned int a, vector unsigned int b, vector bool int c) 4800 { 4801 return (a & ~(vector unsigned int)c) | (b & (vector unsigned int)c); 4802 } 4803 4804 static vector bool int __ATTRS_o_ai 4805 vec_vsel(vector bool int a, vector bool int b, vector unsigned int c) 4806 { 4807 return (a & ~(vector bool int)c) | (b & (vector bool int)c); 4808 } 4809 4810 static vector bool int __ATTRS_o_ai 4811 vec_vsel(vector bool int a, vector bool int b, vector bool int c) 4812 { 4813 return (a & ~c) | (b & c); 4814 } 4815 4816 static vector float __ATTRS_o_ai 4817 vec_vsel(vector float a, vector float b, vector unsigned int c) 4818 { 4819 vector int res = ((vector int)a & ~(vector int)c) 4820 | ((vector int)b & (vector int)c); 4821 return (vector float)res; 4822 } 4823 4824 static vector float __ATTRS_o_ai 4825 vec_vsel(vector float a, vector float b, vector bool int c) 4826 { 4827 vector int res = ((vector int)a & ~(vector int)c) 4828 | ((vector int)b & (vector int)c); 4829 return (vector float)res; 4830 } 4831 4832 /* vec_sl */ 4833 4834 static vector signed char __ATTRS_o_ai 4835 vec_sl(vector signed char a, vector unsigned char b) 4836 { 4837 return a << (vector signed char)b; 4838 } 4839 4840 static vector unsigned char __ATTRS_o_ai 4841 vec_sl(vector unsigned char a, vector unsigned char b) 4842 { 4843 return a << b; 4844 } 4845 4846 static vector short __ATTRS_o_ai 4847 vec_sl(vector short a, vector unsigned short b) 4848 { 4849 return a << (vector short)b; 4850 } 4851 4852 static vector unsigned short __ATTRS_o_ai 4853 vec_sl(vector unsigned short a, vector unsigned short b) 4854 { 4855 return a << b; 4856 } 4857 4858 static vector int __ATTRS_o_ai 4859 vec_sl(vector int a, vector unsigned int b) 4860 { 4861 return a << (vector int)b; 4862 } 4863 4864 static vector unsigned int __ATTRS_o_ai 4865 vec_sl(vector unsigned int a, vector unsigned int b) 4866 { 4867 return a << b; 4868 } 4869 4870 /* vec_vslb */ 4871 4872 #define __builtin_altivec_vslb vec_vslb 4873 4874 static vector signed char __ATTRS_o_ai 4875 vec_vslb(vector signed char a, vector unsigned char b) 4876 { 4877 return vec_sl(a, b); 4878 } 4879 4880 static vector unsigned char __ATTRS_o_ai 4881 vec_vslb(vector unsigned char a, vector unsigned char b) 4882 { 4883 return vec_sl(a, b); 4884 } 4885 4886 /* vec_vslh */ 4887 4888 #define __builtin_altivec_vslh vec_vslh 4889 4890 static vector short __ATTRS_o_ai 4891 vec_vslh(vector short a, vector unsigned short b) 4892 { 4893 return vec_sl(a, b); 4894 } 4895 4896 static vector unsigned short __ATTRS_o_ai 4897 vec_vslh(vector unsigned short a, vector unsigned short b) 4898 { 4899 return vec_sl(a, b); 4900 } 4901 4902 /* vec_vslw */ 4903 4904 #define __builtin_altivec_vslw vec_vslw 4905 4906 static vector int __ATTRS_o_ai 4907 vec_vslw(vector int a, vector unsigned int b) 4908 { 4909 return vec_sl(a, b); 4910 } 4911 4912 static vector unsigned int __ATTRS_o_ai 4913 vec_vslw(vector unsigned int a, vector unsigned int b) 4914 { 4915 return vec_sl(a, b); 4916 } 4917 4918 /* vec_sld */ 4919 4920 #define __builtin_altivec_vsldoi_4si vec_sld 4921 4922 static vector signed char __ATTRS_o_ai 4923 vec_sld(vector signed char a, vector signed char b, unsigned char c) 4924 { 4925 return vec_perm(a, b, (vector unsigned char) 4926 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4927 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4928 } 4929 4930 static vector unsigned char __ATTRS_o_ai 4931 vec_sld(vector unsigned char a, vector unsigned char b, unsigned char c) 4932 { 4933 return vec_perm(a, b, (vector unsigned char) 4934 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4935 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4936 } 4937 4938 static vector short __ATTRS_o_ai 4939 vec_sld(vector short a, vector short b, unsigned char c) 4940 { 4941 return vec_perm(a, b, (vector unsigned char) 4942 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4943 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4944 } 4945 4946 static vector unsigned short __ATTRS_o_ai 4947 vec_sld(vector unsigned short a, vector unsigned short b, unsigned char c) 4948 { 4949 return vec_perm(a, b, (vector unsigned char) 4950 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4951 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4952 } 4953 4954 static vector pixel __ATTRS_o_ai 4955 vec_sld(vector pixel a, vector pixel b, unsigned char c) 4956 { 4957 return vec_perm(a, b, (vector unsigned char) 4958 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4959 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4960 } 4961 4962 static vector int __ATTRS_o_ai 4963 vec_sld(vector int a, vector int b, unsigned char c) 4964 { 4965 return vec_perm(a, b, (vector unsigned char) 4966 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4967 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4968 } 4969 4970 static vector unsigned int __ATTRS_o_ai 4971 vec_sld(vector unsigned int a, vector unsigned int b, unsigned char c) 4972 { 4973 return vec_perm(a, b, (vector unsigned char) 4974 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4975 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4976 } 4977 4978 static vector float __ATTRS_o_ai 4979 vec_sld(vector float a, vector float b, unsigned char c) 4980 { 4981 return vec_perm(a, b, (vector unsigned char) 4982 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4983 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4984 } 4985 4986 /* vec_vsldoi */ 4987 4988 static vector signed char __ATTRS_o_ai 4989 vec_vsldoi(vector signed char a, vector signed char b, unsigned char c) 4990 { 4991 return vec_perm(a, b, (vector unsigned char) 4992 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4993 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4994 } 4995 4996 static vector unsigned char __ATTRS_o_ai 4997 vec_vsldoi(vector unsigned char a, vector unsigned char b, unsigned char c) 4998 { 4999 return vec_perm(a, b, (vector unsigned char) 5000 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 5001 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 5002 } 5003 5004 static vector short __ATTRS_o_ai 5005 vec_vsldoi(vector short a, vector short b, unsigned char c) 5006 { 5007 return vec_perm(a, b, (vector unsigned char) 5008 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 5009 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 5010 } 5011 5012 static vector unsigned short __ATTRS_o_ai 5013 vec_vsldoi(vector unsigned short a, vector unsigned short b, unsigned char c) 5014 { 5015 return vec_perm(a, b, (vector unsigned char) 5016 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 5017 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 5018 } 5019 5020 static vector pixel __ATTRS_o_ai 5021 vec_vsldoi(vector pixel a, vector pixel b, unsigned char c) 5022 { 5023 return vec_perm(a, b, (vector unsigned char) 5024 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 5025 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 5026 } 5027 5028 static vector int __ATTRS_o_ai 5029 vec_vsldoi(vector int a, vector int b, unsigned char c) 5030 { 5031 return vec_perm(a, b, (vector unsigned char) 5032 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 5033 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 5034 } 5035 5036 static vector unsigned int __ATTRS_o_ai 5037 vec_vsldoi(vector unsigned int a, vector unsigned int b, unsigned char c) 5038 { 5039 return vec_perm(a, b, (vector unsigned char) 5040 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 5041 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 5042 } 5043 5044 static vector float __ATTRS_o_ai 5045 vec_vsldoi(vector float a, vector float b, unsigned char c) 5046 { 5047 return vec_perm(a, b, (vector unsigned char) 5048 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 5049 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 5050 } 5051 5052 /* vec_sll */ 5053 5054 static vector signed char __ATTRS_o_ai 5055 vec_sll(vector signed char a, vector unsigned char b) 5056 { 5057 return (vector signed char) 5058 __builtin_altivec_vsl((vector int)a, (vector int)b); 5059 } 5060 5061 static vector signed char __ATTRS_o_ai 5062 vec_sll(vector signed char a, vector unsigned short b) 5063 { 5064 return (vector signed char) 5065 __builtin_altivec_vsl((vector int)a, (vector int)b); 5066 } 5067 5068 static vector signed char __ATTRS_o_ai 5069 vec_sll(vector signed char a, vector unsigned int b) 5070 { 5071 return (vector signed char) 5072 __builtin_altivec_vsl((vector int)a, (vector int)b); 5073 } 5074 5075 static vector unsigned char __ATTRS_o_ai 5076 vec_sll(vector unsigned char a, vector unsigned char b) 5077 { 5078 return (vector unsigned char) 5079 __builtin_altivec_vsl((vector int)a, (vector int)b); 5080 } 5081 5082 static vector unsigned char __ATTRS_o_ai 5083 vec_sll(vector unsigned char a, vector unsigned short b) 5084 { 5085 return (vector unsigned char) 5086 __builtin_altivec_vsl((vector int)a, (vector int)b); 5087 } 5088 5089 static vector unsigned char __ATTRS_o_ai 5090 vec_sll(vector unsigned char a, vector unsigned int b) 5091 { 5092 return (vector unsigned char) 5093 __builtin_altivec_vsl((vector int)a, (vector int)b); 5094 } 5095 5096 static vector bool char __ATTRS_o_ai 5097 vec_sll(vector bool char a, vector unsigned char b) 5098 { 5099 return (vector bool char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5100 } 5101 5102 static vector bool char __ATTRS_o_ai 5103 vec_sll(vector bool char a, vector unsigned short b) 5104 { 5105 return (vector bool char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5106 } 5107 5108 static vector bool char __ATTRS_o_ai 5109 vec_sll(vector bool char a, vector unsigned int b) 5110 { 5111 return (vector bool char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5112 } 5113 5114 static vector short __ATTRS_o_ai 5115 vec_sll(vector short a, vector unsigned char b) 5116 { 5117 return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5118 } 5119 5120 static vector short __ATTRS_o_ai 5121 vec_sll(vector short a, vector unsigned short b) 5122 { 5123 return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5124 } 5125 5126 static vector short __ATTRS_o_ai 5127 vec_sll(vector short a, vector unsigned int b) 5128 { 5129 return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5130 } 5131 5132 static vector unsigned short __ATTRS_o_ai 5133 vec_sll(vector unsigned short a, vector unsigned char b) 5134 { 5135 return (vector unsigned short) 5136 __builtin_altivec_vsl((vector int)a, (vector int)b); 5137 } 5138 5139 static vector unsigned short __ATTRS_o_ai 5140 vec_sll(vector unsigned short a, vector unsigned short b) 5141 { 5142 return (vector unsigned short) 5143 __builtin_altivec_vsl((vector int)a, (vector int)b); 5144 } 5145 5146 static vector unsigned short __ATTRS_o_ai 5147 vec_sll(vector unsigned short a, vector unsigned int b) 5148 { 5149 return (vector unsigned short) 5150 __builtin_altivec_vsl((vector int)a, (vector int)b); 5151 } 5152 5153 static vector bool short __ATTRS_o_ai 5154 vec_sll(vector bool short a, vector unsigned char b) 5155 { 5156 return (vector bool short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5157 } 5158 5159 static vector bool short __ATTRS_o_ai 5160 vec_sll(vector bool short a, vector unsigned short b) 5161 { 5162 return (vector bool short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5163 } 5164 5165 static vector bool short __ATTRS_o_ai 5166 vec_sll(vector bool short a, vector unsigned int b) 5167 { 5168 return (vector bool short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5169 } 5170 5171 static vector pixel __ATTRS_o_ai 5172 vec_sll(vector pixel a, vector unsigned char b) 5173 { 5174 return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b); 5175 } 5176 5177 static vector pixel __ATTRS_o_ai 5178 vec_sll(vector pixel a, vector unsigned short b) 5179 { 5180 return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b); 5181 } 5182 5183 static vector pixel __ATTRS_o_ai 5184 vec_sll(vector pixel a, vector unsigned int b) 5185 { 5186 return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b); 5187 } 5188 5189 static vector int __ATTRS_o_ai 5190 vec_sll(vector int a, vector unsigned char b) 5191 { 5192 return (vector int)__builtin_altivec_vsl(a, (vector int)b); 5193 } 5194 5195 static vector int __ATTRS_o_ai 5196 vec_sll(vector int a, vector unsigned short b) 5197 { 5198 return (vector int)__builtin_altivec_vsl(a, (vector int)b); 5199 } 5200 5201 static vector int __ATTRS_o_ai 5202 vec_sll(vector int a, vector unsigned int b) 5203 { 5204 return (vector int)__builtin_altivec_vsl(a, (vector int)b); 5205 } 5206 5207 static vector unsigned int __ATTRS_o_ai 5208 vec_sll(vector unsigned int a, vector unsigned char b) 5209 { 5210 return (vector unsigned int) 5211 __builtin_altivec_vsl((vector int)a, (vector int)b); 5212 } 5213 5214 static vector unsigned int __ATTRS_o_ai 5215 vec_sll(vector unsigned int a, vector unsigned short b) 5216 { 5217 return (vector unsigned int) 5218 __builtin_altivec_vsl((vector int)a, (vector int)b); 5219 } 5220 5221 static vector unsigned int __ATTRS_o_ai 5222 vec_sll(vector unsigned int a, vector unsigned int b) 5223 { 5224 return (vector unsigned int) 5225 __builtin_altivec_vsl((vector int)a, (vector int)b); 5226 } 5227 5228 static vector bool int __ATTRS_o_ai 5229 vec_sll(vector bool int a, vector unsigned char b) 5230 { 5231 return (vector bool int)__builtin_altivec_vsl((vector int)a, (vector int)b); 5232 } 5233 5234 static vector bool int __ATTRS_o_ai 5235 vec_sll(vector bool int a, vector unsigned short b) 5236 { 5237 return (vector bool int)__builtin_altivec_vsl((vector int)a, (vector int)b); 5238 } 5239 5240 static vector bool int __ATTRS_o_ai 5241 vec_sll(vector bool int a, vector unsigned int b) 5242 { 5243 return (vector bool int)__builtin_altivec_vsl((vector int)a, (vector int)b); 5244 } 5245 5246 /* vec_vsl */ 5247 5248 static vector signed char __ATTRS_o_ai 5249 vec_vsl(vector signed char a, vector unsigned char b) 5250 { 5251 return (vector signed char) 5252 __builtin_altivec_vsl((vector int)a, (vector int)b); 5253 } 5254 5255 static vector signed char __ATTRS_o_ai 5256 vec_vsl(vector signed char a, vector unsigned short b) 5257 { 5258 return (vector signed char) 5259 __builtin_altivec_vsl((vector int)a, (vector int)b); 5260 } 5261 5262 static vector signed char __ATTRS_o_ai 5263 vec_vsl(vector signed char a, vector unsigned int b) 5264 { 5265 return (vector signed char) 5266 __builtin_altivec_vsl((vector int)a, (vector int)b); 5267 } 5268 5269 static vector unsigned char __ATTRS_o_ai 5270 vec_vsl(vector unsigned char a, vector unsigned char b) 5271 { 5272 return (vector unsigned char) 5273 __builtin_altivec_vsl((vector int)a, (vector int)b); 5274 } 5275 5276 static vector unsigned char __ATTRS_o_ai 5277 vec_vsl(vector unsigned char a, vector unsigned short b) 5278 { 5279 return (vector unsigned char) 5280 __builtin_altivec_vsl((vector int)a, (vector int)b); 5281 } 5282 5283 static vector unsigned char __ATTRS_o_ai 5284 vec_vsl(vector unsigned char a, vector unsigned int b) 5285 { 5286 return (vector unsigned char) 5287 __builtin_altivec_vsl((vector int)a, (vector int)b); 5288 } 5289 5290 static vector bool char __ATTRS_o_ai 5291 vec_vsl(vector bool char a, vector unsigned char b) 5292 { 5293 return (vector bool char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5294 } 5295 5296 static vector bool char __ATTRS_o_ai 5297 vec_vsl(vector bool char a, vector unsigned short b) 5298 { 5299 return (vector bool char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5300 } 5301 5302 static vector bool char __ATTRS_o_ai 5303 vec_vsl(vector bool char a, vector unsigned int b) 5304 { 5305 return (vector bool char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5306 } 5307 5308 static vector short __ATTRS_o_ai 5309 vec_vsl(vector short a, vector unsigned char b) 5310 { 5311 return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5312 } 5313 5314 static vector short __ATTRS_o_ai 5315 vec_vsl(vector short a, vector unsigned short b) 5316 { 5317 return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5318 } 5319 5320 static vector short __ATTRS_o_ai 5321 vec_vsl(vector short a, vector unsigned int b) 5322 { 5323 return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5324 } 5325 5326 static vector unsigned short __ATTRS_o_ai 5327 vec_vsl(vector unsigned short a, vector unsigned char b) 5328 { 5329 return (vector unsigned short) 5330 __builtin_altivec_vsl((vector int)a, (vector int)b); 5331 } 5332 5333 static vector unsigned short __ATTRS_o_ai 5334 vec_vsl(vector unsigned short a, vector unsigned short b) 5335 { 5336 return (vector unsigned short) 5337 __builtin_altivec_vsl((vector int)a, (vector int)b); 5338 } 5339 5340 static vector unsigned short __ATTRS_o_ai 5341 vec_vsl(vector unsigned short a, vector unsigned int b) 5342 { 5343 return (vector unsigned short) 5344 __builtin_altivec_vsl((vector int)a, (vector int)b); 5345 } 5346 5347 static vector bool short __ATTRS_o_ai 5348 vec_vsl(vector bool short a, vector unsigned char b) 5349 { 5350 return (vector bool short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5351 } 5352 5353 static vector bool short __ATTRS_o_ai 5354 vec_vsl(vector bool short a, vector unsigned short b) 5355 { 5356 return (vector bool short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5357 } 5358 5359 static vector bool short __ATTRS_o_ai 5360 vec_vsl(vector bool short a, vector unsigned int b) 5361 { 5362 return (vector bool short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5363 } 5364 5365 static vector pixel __ATTRS_o_ai 5366 vec_vsl(vector pixel a, vector unsigned char b) 5367 { 5368 return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b); 5369 } 5370 5371 static vector pixel __ATTRS_o_ai 5372 vec_vsl(vector pixel a, vector unsigned short b) 5373 { 5374 return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b); 5375 } 5376 5377 static vector pixel __ATTRS_o_ai 5378 vec_vsl(vector pixel a, vector unsigned int b) 5379 { 5380 return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b); 5381 } 5382 5383 static vector int __ATTRS_o_ai 5384 vec_vsl(vector int a, vector unsigned char b) 5385 { 5386 return (vector int)__builtin_altivec_vsl(a, (vector int)b); 5387 } 5388 5389 static vector int __ATTRS_o_ai 5390 vec_vsl(vector int a, vector unsigned short b) 5391 { 5392 return (vector int)__builtin_altivec_vsl(a, (vector int)b); 5393 } 5394 5395 static vector int __ATTRS_o_ai 5396 vec_vsl(vector int a, vector unsigned int b) 5397 { 5398 return (vector int)__builtin_altivec_vsl(a, (vector int)b); 5399 } 5400 5401 static vector unsigned int __ATTRS_o_ai 5402 vec_vsl(vector unsigned int a, vector unsigned char b) 5403 { 5404 return (vector unsigned int) 5405 __builtin_altivec_vsl((vector int)a, (vector int)b); 5406 } 5407 5408 static vector unsigned int __ATTRS_o_ai 5409 vec_vsl(vector unsigned int a, vector unsigned short b) 5410 { 5411 return (vector unsigned int) 5412 __builtin_altivec_vsl((vector int)a, (vector int)b); 5413 } 5414 5415 static vector unsigned int __ATTRS_o_ai 5416 vec_vsl(vector unsigned int a, vector unsigned int b) 5417 { 5418 return (vector unsigned int) 5419 __builtin_altivec_vsl((vector int)a, (vector int)b); 5420 } 5421 5422 static vector bool int __ATTRS_o_ai 5423 vec_vsl(vector bool int a, vector unsigned char b) 5424 { 5425 return (vector bool int)__builtin_altivec_vsl((vector int)a, (vector int)b); 5426 } 5427 5428 static vector bool int __ATTRS_o_ai 5429 vec_vsl(vector bool int a, vector unsigned short b) 5430 { 5431 return (vector bool int)__builtin_altivec_vsl((vector int)a, (vector int)b); 5432 } 5433 5434 static vector bool int __ATTRS_o_ai 5435 vec_vsl(vector bool int a, vector unsigned int b) 5436 { 5437 return (vector bool int)__builtin_altivec_vsl((vector int)a, (vector int)b); 5438 } 5439 5440 /* vec_slo */ 5441 5442 static vector signed char __ATTRS_o_ai 5443 vec_slo(vector signed char a, vector signed char b) 5444 { 5445 return (vector signed char) 5446 __builtin_altivec_vslo((vector int)a, (vector int)b); 5447 } 5448 5449 static vector signed char __ATTRS_o_ai 5450 vec_slo(vector signed char a, vector unsigned char b) 5451 { 5452 return (vector signed char) 5453 __builtin_altivec_vslo((vector int)a, (vector int)b); 5454 } 5455 5456 static vector unsigned char __ATTRS_o_ai 5457 vec_slo(vector unsigned char a, vector signed char b) 5458 { 5459 return (vector unsigned char) 5460 __builtin_altivec_vslo((vector int)a, (vector int)b); 5461 } 5462 5463 static vector unsigned char __ATTRS_o_ai 5464 vec_slo(vector unsigned char a, vector unsigned char b) 5465 { 5466 return (vector unsigned char) 5467 __builtin_altivec_vslo((vector int)a, (vector int)b); 5468 } 5469 5470 static vector short __ATTRS_o_ai 5471 vec_slo(vector short a, vector signed char b) 5472 { 5473 return (vector short)__builtin_altivec_vslo((vector int)a, (vector int)b); 5474 } 5475 5476 static vector short __ATTRS_o_ai 5477 vec_slo(vector short a, vector unsigned char b) 5478 { 5479 return (vector short)__builtin_altivec_vslo((vector int)a, (vector int)b); 5480 } 5481 5482 static vector unsigned short __ATTRS_o_ai 5483 vec_slo(vector unsigned short a, vector signed char b) 5484 { 5485 return (vector unsigned short) 5486 __builtin_altivec_vslo((vector int)a, (vector int)b); 5487 } 5488 5489 static vector unsigned short __ATTRS_o_ai 5490 vec_slo(vector unsigned short a, vector unsigned char b) 5491 { 5492 return (vector unsigned short) 5493 __builtin_altivec_vslo((vector int)a, (vector int)b); 5494 } 5495 5496 static vector pixel __ATTRS_o_ai 5497 vec_slo(vector pixel a, vector signed char b) 5498 { 5499 return (vector pixel)__builtin_altivec_vslo((vector int)a, (vector int)b); 5500 } 5501 5502 static vector pixel __ATTRS_o_ai 5503 vec_slo(vector pixel a, vector unsigned char b) 5504 { 5505 return (vector pixel)__builtin_altivec_vslo((vector int)a, (vector int)b); 5506 } 5507 5508 static vector int __ATTRS_o_ai 5509 vec_slo(vector int a, vector signed char b) 5510 { 5511 return (vector int)__builtin_altivec_vslo(a, (vector int)b); 5512 } 5513 5514 static vector int __ATTRS_o_ai 5515 vec_slo(vector int a, vector unsigned char b) 5516 { 5517 return (vector int)__builtin_altivec_vslo(a, (vector int)b); 5518 } 5519 5520 static vector unsigned int __ATTRS_o_ai 5521 vec_slo(vector unsigned int a, vector signed char b) 5522 { 5523 return (vector unsigned int) 5524 __builtin_altivec_vslo((vector int)a, (vector int)b); 5525 } 5526 5527 static vector unsigned int __ATTRS_o_ai 5528 vec_slo(vector unsigned int a, vector unsigned char b) 5529 { 5530 return (vector unsigned int) 5531 __builtin_altivec_vslo((vector int)a, (vector int)b); 5532 } 5533 5534 static vector float __ATTRS_o_ai 5535 vec_slo(vector float a, vector signed char b) 5536 { 5537 return (vector float)__builtin_altivec_vslo((vector int)a, (vector int)b); 5538 } 5539 5540 static vector float __ATTRS_o_ai 5541 vec_slo(vector float a, vector unsigned char b) 5542 { 5543 return (vector float)__builtin_altivec_vslo((vector int)a, (vector int)b); 5544 } 5545 5546 /* vec_vslo */ 5547 5548 static vector signed char __ATTRS_o_ai 5549 vec_vslo(vector signed char a, vector signed char b) 5550 { 5551 return (vector signed char) 5552 __builtin_altivec_vslo((vector int)a, (vector int)b); 5553 } 5554 5555 static vector signed char __ATTRS_o_ai 5556 vec_vslo(vector signed char a, vector unsigned char b) 5557 { 5558 return (vector signed char) 5559 __builtin_altivec_vslo((vector int)a, (vector int)b); 5560 } 5561 5562 static vector unsigned char __ATTRS_o_ai 5563 vec_vslo(vector unsigned char a, vector signed char b) 5564 { 5565 return (vector unsigned char) 5566 __builtin_altivec_vslo((vector int)a, (vector int)b); 5567 } 5568 5569 static vector unsigned char __ATTRS_o_ai 5570 vec_vslo(vector unsigned char a, vector unsigned char b) 5571 { 5572 return (vector unsigned char) 5573 __builtin_altivec_vslo((vector int)a, (vector int)b); 5574 } 5575 5576 static vector short __ATTRS_o_ai 5577 vec_vslo(vector short a, vector signed char b) 5578 { 5579 return (vector short)__builtin_altivec_vslo((vector int)a, (vector int)b); 5580 } 5581 5582 static vector short __ATTRS_o_ai 5583 vec_vslo(vector short a, vector unsigned char b) 5584 { 5585 return (vector short)__builtin_altivec_vslo((vector int)a, (vector int)b); 5586 } 5587 5588 static vector unsigned short __ATTRS_o_ai 5589 vec_vslo(vector unsigned short a, vector signed char b) 5590 { 5591 return (vector unsigned short) 5592 __builtin_altivec_vslo((vector int)a, (vector int)b); 5593 } 5594 5595 static vector unsigned short __ATTRS_o_ai 5596 vec_vslo(vector unsigned short a, vector unsigned char b) 5597 { 5598 return (vector unsigned short) 5599 __builtin_altivec_vslo((vector int)a, (vector int)b); 5600 } 5601 5602 static vector pixel __ATTRS_o_ai 5603 vec_vslo(vector pixel a, vector signed char b) 5604 { 5605 return (vector pixel)__builtin_altivec_vslo((vector int)a, (vector int)b); 5606 } 5607 5608 static vector pixel __ATTRS_o_ai 5609 vec_vslo(vector pixel a, vector unsigned char b) 5610 { 5611 return (vector pixel)__builtin_altivec_vslo((vector int)a, (vector int)b); 5612 } 5613 5614 static vector int __ATTRS_o_ai 5615 vec_vslo(vector int a, vector signed char b) 5616 { 5617 return (vector int)__builtin_altivec_vslo(a, (vector int)b); 5618 } 5619 5620 static vector int __ATTRS_o_ai 5621 vec_vslo(vector int a, vector unsigned char b) 5622 { 5623 return (vector int)__builtin_altivec_vslo(a, (vector int)b); 5624 } 5625 5626 static vector unsigned int __ATTRS_o_ai 5627 vec_vslo(vector unsigned int a, vector signed char b) 5628 { 5629 return (vector unsigned int) 5630 __builtin_altivec_vslo((vector int)a, (vector int)b); 5631 } 5632 5633 static vector unsigned int __ATTRS_o_ai 5634 vec_vslo(vector unsigned int a, vector unsigned char b) 5635 { 5636 return (vector unsigned int) 5637 __builtin_altivec_vslo((vector int)a, (vector int)b); 5638 } 5639 5640 static vector float __ATTRS_o_ai 5641 vec_vslo(vector float a, vector signed char b) 5642 { 5643 return (vector float)__builtin_altivec_vslo((vector int)a, (vector int)b); 5644 } 5645 5646 static vector float __ATTRS_o_ai 5647 vec_vslo(vector float a, vector unsigned char b) 5648 { 5649 return (vector float)__builtin_altivec_vslo((vector int)a, (vector int)b); 5650 } 5651 5652 /* vec_splat */ 5653 5654 static vector signed char __ATTRS_o_ai 5655 vec_splat(vector signed char a, unsigned char b) 5656 { 5657 return vec_perm(a, a, (vector unsigned char)(b)); 5658 } 5659 5660 static vector unsigned char __ATTRS_o_ai 5661 vec_splat(vector unsigned char a, unsigned char b) 5662 { 5663 return vec_perm(a, a, (vector unsigned char)(b)); 5664 } 5665 5666 static vector bool char __ATTRS_o_ai 5667 vec_splat(vector bool char a, unsigned char b) 5668 { 5669 return vec_perm(a, a, (vector unsigned char)(b)); 5670 } 5671 5672 static vector short __ATTRS_o_ai 5673 vec_splat(vector short a, unsigned char b) 5674 { 5675 b *= 2; 5676 return vec_perm(a, a, (vector unsigned char) 5677 (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1)); 5678 } 5679 5680 static vector unsigned short __ATTRS_o_ai 5681 vec_splat(vector unsigned short a, unsigned char b) 5682 { 5683 b *= 2; 5684 return vec_perm(a, a, (vector unsigned char) 5685 (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1)); 5686 } 5687 5688 static vector bool short __ATTRS_o_ai 5689 vec_splat(vector bool short a, unsigned char b) 5690 { 5691 b *= 2; 5692 return vec_perm(a, a, (vector unsigned char) 5693 (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1)); 5694 } 5695 5696 static vector pixel __ATTRS_o_ai 5697 vec_splat(vector pixel a, unsigned char b) 5698 { 5699 b *= 2; 5700 return vec_perm(a, a, (vector unsigned char) 5701 (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1)); 5702 } 5703 5704 static vector int __ATTRS_o_ai 5705 vec_splat(vector int a, unsigned char b) 5706 { 5707 b *= 4; 5708 return vec_perm(a, a, (vector unsigned char) 5709 (b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3)); 5710 } 5711 5712 static vector unsigned int __ATTRS_o_ai 5713 vec_splat(vector unsigned int a, unsigned char b) 5714 { 5715 b *= 4; 5716 return vec_perm(a, a, (vector unsigned char) 5717 (b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3)); 5718 } 5719 5720 static vector bool int __ATTRS_o_ai 5721 vec_splat(vector bool int a, unsigned char b) 5722 { 5723 b *= 4; 5724 return vec_perm(a, a, (vector unsigned char) 5725 (b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3)); 5726 } 5727 5728 static vector float __ATTRS_o_ai 5729 vec_splat(vector float a, unsigned char b) 5730 { 5731 b *= 4; 5732 return vec_perm(a, a, (vector unsigned char) 5733 (b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3)); 5734 } 5735 5736 /* vec_vspltb */ 5737 5738 #define __builtin_altivec_vspltb vec_vspltb 5739 5740 static vector signed char __ATTRS_o_ai 5741 vec_vspltb(vector signed char a, unsigned char b) 5742 { 5743 return vec_perm(a, a, (vector unsigned char)(b)); 5744 } 5745 5746 static vector unsigned char __ATTRS_o_ai 5747 vec_vspltb(vector unsigned char a, unsigned char b) 5748 { 5749 return vec_perm(a, a, (vector unsigned char)(b)); 5750 } 5751 5752 static vector bool char __ATTRS_o_ai 5753 vec_vspltb(vector bool char a, unsigned char b) 5754 { 5755 return vec_perm(a, a, (vector unsigned char)(b)); 5756 } 5757 5758 /* vec_vsplth */ 5759 5760 #define __builtin_altivec_vsplth vec_vsplth 5761 5762 static vector short __ATTRS_o_ai 5763 vec_vsplth(vector short a, unsigned char b) 5764 { 5765 b *= 2; 5766 return vec_perm(a, a, (vector unsigned char) 5767 (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1)); 5768 } 5769 5770 static vector unsigned short __ATTRS_o_ai 5771 vec_vsplth(vector unsigned short a, unsigned char b) 5772 { 5773 b *= 2; 5774 return vec_perm(a, a, (vector unsigned char) 5775 (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1)); 5776 } 5777 5778 static vector bool short __ATTRS_o_ai 5779 vec_vsplth(vector bool short a, unsigned char b) 5780 { 5781 b *= 2; 5782 return vec_perm(a, a, (vector unsigned char) 5783 (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1)); 5784 } 5785 5786 static vector pixel __ATTRS_o_ai 5787 vec_vsplth(vector pixel a, unsigned char b) 5788 { 5789 b *= 2; 5790 return vec_perm(a, a, (vector unsigned char) 5791 (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1)); 5792 } 5793 5794 /* vec_vspltw */ 5795 5796 #define __builtin_altivec_vspltw vec_vspltw 5797 5798 static vector int __ATTRS_o_ai 5799 vec_vspltw(vector int a, unsigned char b) 5800 { 5801 b *= 4; 5802 return vec_perm(a, a, (vector unsigned char) 5803 (b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3)); 5804 } 5805 5806 static vector unsigned int __ATTRS_o_ai 5807 vec_vspltw(vector unsigned int a, unsigned char b) 5808 { 5809 b *= 4; 5810 return vec_perm(a, a, (vector unsigned char) 5811 (b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3)); 5812 } 5813 5814 static vector bool int __ATTRS_o_ai 5815 vec_vspltw(vector bool int a, unsigned char b) 5816 { 5817 b *= 4; 5818 return vec_perm(a, a, (vector unsigned char) 5819 (b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3)); 5820 } 5821 5822 static vector float __ATTRS_o_ai 5823 vec_vspltw(vector float a, unsigned char b) 5824 { 5825 b *= 4; 5826 return vec_perm(a, a, (vector unsigned char) 5827 (b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3, b, b+1, b+2, b+3)); 5828 } 5829 5830 /* vec_splat_s8 */ 5831 5832 #define __builtin_altivec_vspltisb vec_splat_s8 5833 5834 // FIXME: parameter should be treated as 5-bit signed literal 5835 static vector signed char __ATTRS_o_ai 5836 vec_splat_s8(signed char a) 5837 { 5838 return (vector signed char)(a); 5839 } 5840 5841 /* vec_vspltisb */ 5842 5843 // FIXME: parameter should be treated as 5-bit signed literal 5844 static vector signed char __ATTRS_o_ai 5845 vec_vspltisb(signed char a) 5846 { 5847 return (vector signed char)(a); 5848 } 5849 5850 /* vec_splat_s16 */ 5851 5852 #define __builtin_altivec_vspltish vec_splat_s16 5853 5854 // FIXME: parameter should be treated as 5-bit signed literal 5855 static vector short __ATTRS_o_ai 5856 vec_splat_s16(signed char a) 5857 { 5858 return (vector short)(a); 5859 } 5860 5861 /* vec_vspltish */ 5862 5863 // FIXME: parameter should be treated as 5-bit signed literal 5864 static vector short __ATTRS_o_ai 5865 vec_vspltish(signed char a) 5866 { 5867 return (vector short)(a); 5868 } 5869 5870 /* vec_splat_s32 */ 5871 5872 #define __builtin_altivec_vspltisw vec_splat_s32 5873 5874 // FIXME: parameter should be treated as 5-bit signed literal 5875 static vector int __ATTRS_o_ai 5876 vec_splat_s32(signed char a) 5877 { 5878 return (vector int)(a); 5879 } 5880 5881 /* vec_vspltisw */ 5882 5883 // FIXME: parameter should be treated as 5-bit signed literal 5884 static vector int __ATTRS_o_ai 5885 vec_vspltisw(signed char a) 5886 { 5887 return (vector int)(a); 5888 } 5889 5890 /* vec_splat_u8 */ 5891 5892 // FIXME: parameter should be treated as 5-bit signed literal 5893 static vector unsigned char __ATTRS_o_ai 5894 vec_splat_u8(unsigned char a) 5895 { 5896 return (vector unsigned char)(a); 5897 } 5898 5899 /* vec_splat_u16 */ 5900 5901 // FIXME: parameter should be treated as 5-bit signed literal 5902 static vector unsigned short __ATTRS_o_ai 5903 vec_splat_u16(signed char a) 5904 { 5905 return (vector unsigned short)(a); 5906 } 5907 5908 /* vec_splat_u32 */ 5909 5910 // FIXME: parameter should be treated as 5-bit signed literal 5911 static vector unsigned int __ATTRS_o_ai 5912 vec_splat_u32(signed char a) 5913 { 5914 return (vector unsigned int)(a); 5915 } 5916 5917 /* vec_sr */ 5918 5919 static vector signed char __ATTRS_o_ai 5920 vec_sr(vector signed char a, vector unsigned char b) 5921 { 5922 return a >> (vector signed char)b; 5923 } 5924 5925 static vector unsigned char __ATTRS_o_ai 5926 vec_sr(vector unsigned char a, vector unsigned char b) 5927 { 5928 return a >> b; 5929 } 5930 5931 static vector short __ATTRS_o_ai 5932 vec_sr(vector short a, vector unsigned short b) 5933 { 5934 return a >> (vector short)b; 5935 } 5936 5937 static vector unsigned short __ATTRS_o_ai 5938 vec_sr(vector unsigned short a, vector unsigned short b) 5939 { 5940 return a >> b; 5941 } 5942 5943 static vector int __ATTRS_o_ai 5944 vec_sr(vector int a, vector unsigned int b) 5945 { 5946 return a >> (vector int)b; 5947 } 5948 5949 static vector unsigned int __ATTRS_o_ai 5950 vec_sr(vector unsigned int a, vector unsigned int b) 5951 { 5952 return a >> b; 5953 } 5954 5955 /* vec_vsrb */ 5956 5957 #define __builtin_altivec_vsrb vec_vsrb 5958 5959 static vector signed char __ATTRS_o_ai 5960 vec_vsrb(vector signed char a, vector unsigned char b) 5961 { 5962 return a >> (vector signed char)b; 5963 } 5964 5965 static vector unsigned char __ATTRS_o_ai 5966 vec_vsrb(vector unsigned char a, vector unsigned char b) 5967 { 5968 return a >> b; 5969 } 5970 5971 /* vec_vsrh */ 5972 5973 #define __builtin_altivec_vsrh vec_vsrh 5974 5975 static vector short __ATTRS_o_ai 5976 vec_vsrh(vector short a, vector unsigned short b) 5977 { 5978 return a >> (vector short)b; 5979 } 5980 5981 static vector unsigned short __ATTRS_o_ai 5982 vec_vsrh(vector unsigned short a, vector unsigned short b) 5983 { 5984 return a >> b; 5985 } 5986 5987 /* vec_vsrw */ 5988 5989 #define __builtin_altivec_vsrw vec_vsrw 5990 5991 static vector int __ATTRS_o_ai 5992 vec_vsrw(vector int a, vector unsigned int b) 5993 { 5994 return a >> (vector int)b; 5995 } 5996 5997 static vector unsigned int __ATTRS_o_ai 5998 vec_vsrw(vector unsigned int a, vector unsigned int b) 5999 { 6000 return a >> b; 6001 } 6002 6003 /* vec_sra */ 6004 6005 static vector signed char __ATTRS_o_ai 6006 vec_sra(vector signed char a, vector unsigned char b) 6007 { 6008 return (vector signed char)__builtin_altivec_vsrab((vector char)a, b); 6009 } 6010 6011 static vector unsigned char __ATTRS_o_ai 6012 vec_sra(vector unsigned char a, vector unsigned char b) 6013 { 6014 return (vector unsigned char)__builtin_altivec_vsrab((vector char)a, b); 6015 } 6016 6017 static vector short __ATTRS_o_ai 6018 vec_sra(vector short a, vector unsigned short b) 6019 { 6020 return __builtin_altivec_vsrah(a, (vector unsigned short)b); 6021 } 6022 6023 static vector unsigned short __ATTRS_o_ai 6024 vec_sra(vector unsigned short a, vector unsigned short b) 6025 { 6026 return (vector unsigned short)__builtin_altivec_vsrah((vector short)a, b); 6027 } 6028 6029 static vector int __ATTRS_o_ai 6030 vec_sra(vector int a, vector unsigned int b) 6031 { 6032 return __builtin_altivec_vsraw(a, b); 6033 } 6034 6035 static vector unsigned int __ATTRS_o_ai 6036 vec_sra(vector unsigned int a, vector unsigned int b) 6037 { 6038 return (vector unsigned int)__builtin_altivec_vsraw((vector int)a, b); 6039 } 6040 6041 /* vec_vsrab */ 6042 6043 static vector signed char __ATTRS_o_ai 6044 vec_vsrab(vector signed char a, vector unsigned char b) 6045 { 6046 return (vector signed char)__builtin_altivec_vsrab((vector char)a, b); 6047 } 6048 6049 static vector unsigned char __ATTRS_o_ai 6050 vec_vsrab(vector unsigned char a, vector unsigned char b) 6051 { 6052 return (vector unsigned char)__builtin_altivec_vsrab((vector char)a, b); 6053 } 6054 6055 /* vec_vsrah */ 6056 6057 static vector short __ATTRS_o_ai 6058 vec_vsrah(vector short a, vector unsigned short b) 6059 { 6060 return __builtin_altivec_vsrah(a, (vector unsigned short)b); 6061 } 6062 6063 static vector unsigned short __ATTRS_o_ai 6064 vec_vsrah(vector unsigned short a, vector unsigned short b) 6065 { 6066 return (vector unsigned short)__builtin_altivec_vsrah((vector short)a, b); 6067 } 6068 6069 /* vec_vsraw */ 6070 6071 static vector int __ATTRS_o_ai 6072 vec_vsraw(vector int a, vector unsigned int b) 6073 { 6074 return __builtin_altivec_vsraw(a, b); 6075 } 6076 6077 static vector unsigned int __ATTRS_o_ai 6078 vec_vsraw(vector unsigned int a, vector unsigned int b) 6079 { 6080 return (vector unsigned int)__builtin_altivec_vsraw((vector int)a, b); 6081 } 6082 6083 /* vec_srl */ 6084 6085 static vector signed char __ATTRS_o_ai 6086 vec_srl(vector signed char a, vector unsigned char b) 6087 { 6088 return (vector signed char) 6089 __builtin_altivec_vsr((vector int)a, (vector int)b); 6090 } 6091 6092 static vector signed char __ATTRS_o_ai 6093 vec_srl(vector signed char a, vector unsigned short b) 6094 { 6095 return (vector signed char) 6096 __builtin_altivec_vsr((vector int)a, (vector int)b); 6097 } 6098 6099 static vector signed char __ATTRS_o_ai 6100 vec_srl(vector signed char a, vector unsigned int b) 6101 { 6102 return (vector signed char) 6103 __builtin_altivec_vsr((vector int)a, (vector int)b); 6104 } 6105 6106 static vector unsigned char __ATTRS_o_ai 6107 vec_srl(vector unsigned char a, vector unsigned char b) 6108 { 6109 return (vector unsigned char) 6110 __builtin_altivec_vsr((vector int)a, (vector int)b); 6111 } 6112 6113 static vector unsigned char __ATTRS_o_ai 6114 vec_srl(vector unsigned char a, vector unsigned short b) 6115 { 6116 return (vector unsigned char) 6117 __builtin_altivec_vsr((vector int)a, (vector int)b); 6118 } 6119 6120 static vector unsigned char __ATTRS_o_ai 6121 vec_srl(vector unsigned char a, vector unsigned int b) 6122 { 6123 return (vector unsigned char) 6124 __builtin_altivec_vsr((vector int)a, (vector int)b); 6125 } 6126 6127 static vector bool char __ATTRS_o_ai 6128 vec_srl(vector bool char a, vector unsigned char b) 6129 { 6130 return (vector bool char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6131 } 6132 6133 static vector bool char __ATTRS_o_ai 6134 vec_srl(vector bool char a, vector unsigned short b) 6135 { 6136 return (vector bool char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6137 } 6138 6139 static vector bool char __ATTRS_o_ai 6140 vec_srl(vector bool char a, vector unsigned int b) 6141 { 6142 return (vector bool char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6143 } 6144 6145 static vector short __ATTRS_o_ai 6146 vec_srl(vector short a, vector unsigned char b) 6147 { 6148 return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6149 } 6150 6151 static vector short __ATTRS_o_ai 6152 vec_srl(vector short a, vector unsigned short b) 6153 { 6154 return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6155 } 6156 6157 static vector short __ATTRS_o_ai 6158 vec_srl(vector short a, vector unsigned int b) 6159 { 6160 return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6161 } 6162 6163 static vector unsigned short __ATTRS_o_ai 6164 vec_srl(vector unsigned short a, vector unsigned char b) 6165 { 6166 return (vector unsigned short) 6167 __builtin_altivec_vsr((vector int)a, (vector int)b); 6168 } 6169 6170 static vector unsigned short __ATTRS_o_ai 6171 vec_srl(vector unsigned short a, vector unsigned short b) 6172 { 6173 return (vector unsigned short) 6174 __builtin_altivec_vsr((vector int)a, (vector int)b); 6175 } 6176 6177 static vector unsigned short __ATTRS_o_ai 6178 vec_srl(vector unsigned short a, vector unsigned int b) 6179 { 6180 return (vector unsigned short) 6181 __builtin_altivec_vsr((vector int)a, (vector int)b); 6182 } 6183 6184 static vector bool short __ATTRS_o_ai 6185 vec_srl(vector bool short a, vector unsigned char b) 6186 { 6187 return (vector bool short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6188 } 6189 6190 static vector bool short __ATTRS_o_ai 6191 vec_srl(vector bool short a, vector unsigned short b) 6192 { 6193 return (vector bool short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6194 } 6195 6196 static vector bool short __ATTRS_o_ai 6197 vec_srl(vector bool short a, vector unsigned int b) 6198 { 6199 return (vector bool short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6200 } 6201 6202 static vector pixel __ATTRS_o_ai 6203 vec_srl(vector pixel a, vector unsigned char b) 6204 { 6205 return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b); 6206 } 6207 6208 static vector pixel __ATTRS_o_ai 6209 vec_srl(vector pixel a, vector unsigned short b) 6210 { 6211 return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b); 6212 } 6213 6214 static vector pixel __ATTRS_o_ai 6215 vec_srl(vector pixel a, vector unsigned int b) 6216 { 6217 return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b); 6218 } 6219 6220 static vector int __ATTRS_o_ai 6221 vec_srl(vector int a, vector unsigned char b) 6222 { 6223 return (vector int)__builtin_altivec_vsr(a, (vector int)b); 6224 } 6225 6226 static vector int __ATTRS_o_ai 6227 vec_srl(vector int a, vector unsigned short b) 6228 { 6229 return (vector int)__builtin_altivec_vsr(a, (vector int)b); 6230 } 6231 6232 static vector int __ATTRS_o_ai 6233 vec_srl(vector int a, vector unsigned int b) 6234 { 6235 return (vector int)__builtin_altivec_vsr(a, (vector int)b); 6236 } 6237 6238 static vector unsigned int __ATTRS_o_ai 6239 vec_srl(vector unsigned int a, vector unsigned char b) 6240 { 6241 return (vector unsigned int) 6242 __builtin_altivec_vsr((vector int)a, (vector int)b); 6243 } 6244 6245 static vector unsigned int __ATTRS_o_ai 6246 vec_srl(vector unsigned int a, vector unsigned short b) 6247 { 6248 return (vector unsigned int) 6249 __builtin_altivec_vsr((vector int)a, (vector int)b); 6250 } 6251 6252 static vector unsigned int __ATTRS_o_ai 6253 vec_srl(vector unsigned int a, vector unsigned int b) 6254 { 6255 return (vector unsigned int) 6256 __builtin_altivec_vsr((vector int)a, (vector int)b); 6257 } 6258 6259 static vector bool int __ATTRS_o_ai 6260 vec_srl(vector bool int a, vector unsigned char b) 6261 { 6262 return (vector bool int)__builtin_altivec_vsr((vector int)a, (vector int)b); 6263 } 6264 6265 static vector bool int __ATTRS_o_ai 6266 vec_srl(vector bool int a, vector unsigned short b) 6267 { 6268 return (vector bool int)__builtin_altivec_vsr((vector int)a, (vector int)b); 6269 } 6270 6271 static vector bool int __ATTRS_o_ai 6272 vec_srl(vector bool int a, vector unsigned int b) 6273 { 6274 return (vector bool int)__builtin_altivec_vsr((vector int)a, (vector int)b); 6275 } 6276 6277 /* vec_vsr */ 6278 6279 static vector signed char __ATTRS_o_ai 6280 vec_vsr(vector signed char a, vector unsigned char b) 6281 { 6282 return (vector signed char) 6283 __builtin_altivec_vsr((vector int)a, (vector int)b); 6284 } 6285 6286 static vector signed char __ATTRS_o_ai 6287 vec_vsr(vector signed char a, vector unsigned short b) 6288 { 6289 return (vector signed char) 6290 __builtin_altivec_vsr((vector int)a, (vector int)b); 6291 } 6292 6293 static vector signed char __ATTRS_o_ai 6294 vec_vsr(vector signed char a, vector unsigned int b) 6295 { 6296 return (vector signed char) 6297 __builtin_altivec_vsr((vector int)a, (vector int)b); 6298 } 6299 6300 static vector unsigned char __ATTRS_o_ai 6301 vec_vsr(vector unsigned char a, vector unsigned char b) 6302 { 6303 return (vector unsigned char) 6304 __builtin_altivec_vsr((vector int)a, (vector int)b); 6305 } 6306 6307 static vector unsigned char __ATTRS_o_ai 6308 vec_vsr(vector unsigned char a, vector unsigned short b) 6309 { 6310 return (vector unsigned char) 6311 __builtin_altivec_vsr((vector int)a, (vector int)b); 6312 } 6313 6314 static vector unsigned char __ATTRS_o_ai 6315 vec_vsr(vector unsigned char a, vector unsigned int b) 6316 { 6317 return (vector unsigned char) 6318 __builtin_altivec_vsr((vector int)a, (vector int)b); 6319 } 6320 6321 static vector bool char __ATTRS_o_ai 6322 vec_vsr(vector bool char a, vector unsigned char b) 6323 { 6324 return (vector bool char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6325 } 6326 6327 static vector bool char __ATTRS_o_ai 6328 vec_vsr(vector bool char a, vector unsigned short b) 6329 { 6330 return (vector bool char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6331 } 6332 6333 static vector bool char __ATTRS_o_ai 6334 vec_vsr(vector bool char a, vector unsigned int b) 6335 { 6336 return (vector bool char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6337 } 6338 6339 static vector short __ATTRS_o_ai 6340 vec_vsr(vector short a, vector unsigned char b) 6341 { 6342 return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6343 } 6344 6345 static vector short __ATTRS_o_ai 6346 vec_vsr(vector short a, vector unsigned short b) 6347 { 6348 return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6349 } 6350 6351 static vector short __ATTRS_o_ai 6352 vec_vsr(vector short a, vector unsigned int b) 6353 { 6354 return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6355 } 6356 6357 static vector unsigned short __ATTRS_o_ai 6358 vec_vsr(vector unsigned short a, vector unsigned char b) 6359 { 6360 return (vector unsigned short) 6361 __builtin_altivec_vsr((vector int)a, (vector int)b); 6362 } 6363 6364 static vector unsigned short __ATTRS_o_ai 6365 vec_vsr(vector unsigned short a, vector unsigned short b) 6366 { 6367 return (vector unsigned short) 6368 __builtin_altivec_vsr((vector int)a, (vector int)b); 6369 } 6370 6371 static vector unsigned short __ATTRS_o_ai 6372 vec_vsr(vector unsigned short a, vector unsigned int b) 6373 { 6374 return (vector unsigned short) 6375 __builtin_altivec_vsr((vector int)a, (vector int)b); 6376 } 6377 6378 static vector bool short __ATTRS_o_ai 6379 vec_vsr(vector bool short a, vector unsigned char b) 6380 { 6381 return (vector bool short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6382 } 6383 6384 static vector bool short __ATTRS_o_ai 6385 vec_vsr(vector bool short a, vector unsigned short b) 6386 { 6387 return (vector bool short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6388 } 6389 6390 static vector bool short __ATTRS_o_ai 6391 vec_vsr(vector bool short a, vector unsigned int b) 6392 { 6393 return (vector bool short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6394 } 6395 6396 static vector pixel __ATTRS_o_ai 6397 vec_vsr(vector pixel a, vector unsigned char b) 6398 { 6399 return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b); 6400 } 6401 6402 static vector pixel __ATTRS_o_ai 6403 vec_vsr(vector pixel a, vector unsigned short b) 6404 { 6405 return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b); 6406 } 6407 6408 static vector pixel __ATTRS_o_ai 6409 vec_vsr(vector pixel a, vector unsigned int b) 6410 { 6411 return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b); 6412 } 6413 6414 static vector int __ATTRS_o_ai 6415 vec_vsr(vector int a, vector unsigned char b) 6416 { 6417 return (vector int)__builtin_altivec_vsr(a, (vector int)b); 6418 } 6419 6420 static vector int __ATTRS_o_ai 6421 vec_vsr(vector int a, vector unsigned short b) 6422 { 6423 return (vector int)__builtin_altivec_vsr(a, (vector int)b); 6424 } 6425 6426 static vector int __ATTRS_o_ai 6427 vec_vsr(vector int a, vector unsigned int b) 6428 { 6429 return (vector int)__builtin_altivec_vsr(a, (vector int)b); 6430 } 6431 6432 static vector unsigned int __ATTRS_o_ai 6433 vec_vsr(vector unsigned int a, vector unsigned char b) 6434 { 6435 return (vector unsigned int) 6436 __builtin_altivec_vsr((vector int)a, (vector int)b); 6437 } 6438 6439 static vector unsigned int __ATTRS_o_ai 6440 vec_vsr(vector unsigned int a, vector unsigned short b) 6441 { 6442 return (vector unsigned int) 6443 __builtin_altivec_vsr((vector int)a, (vector int)b); 6444 } 6445 6446 static vector unsigned int __ATTRS_o_ai 6447 vec_vsr(vector unsigned int a, vector unsigned int b) 6448 { 6449 return (vector unsigned int) 6450 __builtin_altivec_vsr((vector int)a, (vector int)b); 6451 } 6452 6453 static vector bool int __ATTRS_o_ai 6454 vec_vsr(vector bool int a, vector unsigned char b) 6455 { 6456 return (vector bool int)__builtin_altivec_vsr((vector int)a, (vector int)b); 6457 } 6458 6459 static vector bool int __ATTRS_o_ai 6460 vec_vsr(vector bool int a, vector unsigned short b) 6461 { 6462 return (vector bool int)__builtin_altivec_vsr((vector int)a, (vector int)b); 6463 } 6464 6465 static vector bool int __ATTRS_o_ai 6466 vec_vsr(vector bool int a, vector unsigned int b) 6467 { 6468 return (vector bool int)__builtin_altivec_vsr((vector int)a, (vector int)b); 6469 } 6470 6471 /* vec_sro */ 6472 6473 static vector signed char __ATTRS_o_ai 6474 vec_sro(vector signed char a, vector signed char b) 6475 { 6476 return (vector signed char) 6477 __builtin_altivec_vsro((vector int)a, (vector int)b); 6478 } 6479 6480 static vector signed char __ATTRS_o_ai 6481 vec_sro(vector signed char a, vector unsigned char b) 6482 { 6483 return (vector signed char) 6484 __builtin_altivec_vsro((vector int)a, (vector int)b); 6485 } 6486 6487 static vector unsigned char __ATTRS_o_ai 6488 vec_sro(vector unsigned char a, vector signed char b) 6489 { 6490 return (vector unsigned char) 6491 __builtin_altivec_vsro((vector int)a, (vector int)b); 6492 } 6493 6494 static vector unsigned char __ATTRS_o_ai 6495 vec_sro(vector unsigned char a, vector unsigned char b) 6496 { 6497 return (vector unsigned char) 6498 __builtin_altivec_vsro((vector int)a, (vector int)b); 6499 } 6500 6501 static vector short __ATTRS_o_ai 6502 vec_sro(vector short a, vector signed char b) 6503 { 6504 return (vector short)__builtin_altivec_vsro((vector int)a, (vector int)b); 6505 } 6506 6507 static vector short __ATTRS_o_ai 6508 vec_sro(vector short a, vector unsigned char b) 6509 { 6510 return (vector short)__builtin_altivec_vsro((vector int)a, (vector int)b); 6511 } 6512 6513 static vector unsigned short __ATTRS_o_ai 6514 vec_sro(vector unsigned short a, vector signed char b) 6515 { 6516 return (vector unsigned short) 6517 __builtin_altivec_vsro((vector int)a, (vector int)b); 6518 } 6519 6520 static vector unsigned short __ATTRS_o_ai 6521 vec_sro(vector unsigned short a, vector unsigned char b) 6522 { 6523 return (vector unsigned short) 6524 __builtin_altivec_vsro((vector int)a, (vector int)b); 6525 } 6526 6527 static vector pixel __ATTRS_o_ai 6528 vec_sro(vector pixel a, vector signed char b) 6529 { 6530 return (vector pixel)__builtin_altivec_vsro((vector int)a, (vector int)b); 6531 } 6532 6533 static vector pixel __ATTRS_o_ai 6534 vec_sro(vector pixel a, vector unsigned char b) 6535 { 6536 return (vector pixel)__builtin_altivec_vsro((vector int)a, (vector int)b); 6537 } 6538 6539 static vector int __ATTRS_o_ai 6540 vec_sro(vector int a, vector signed char b) 6541 { 6542 return (vector int)__builtin_altivec_vsro(a, (vector int)b); 6543 } 6544 6545 static vector int __ATTRS_o_ai 6546 vec_sro(vector int a, vector unsigned char b) 6547 { 6548 return (vector int)__builtin_altivec_vsro(a, (vector int)b); 6549 } 6550 6551 static vector unsigned int __ATTRS_o_ai 6552 vec_sro(vector unsigned int a, vector signed char b) 6553 { 6554 return (vector unsigned int) 6555 __builtin_altivec_vsro((vector int)a, (vector int)b); 6556 } 6557 6558 static vector unsigned int __ATTRS_o_ai 6559 vec_sro(vector unsigned int a, vector unsigned char b) 6560 { 6561 return (vector unsigned int) 6562 __builtin_altivec_vsro((vector int)a, (vector int)b); 6563 } 6564 6565 static vector float __ATTRS_o_ai 6566 vec_sro(vector float a, vector signed char b) 6567 { 6568 return (vector float)__builtin_altivec_vsro((vector int)a, (vector int)b); 6569 } 6570 6571 static vector float __ATTRS_o_ai 6572 vec_sro(vector float a, vector unsigned char b) 6573 { 6574 return (vector float)__builtin_altivec_vsro((vector int)a, (vector int)b); 6575 } 6576 6577 /* vec_vsro */ 6578 6579 static vector signed char __ATTRS_o_ai 6580 vec_vsro(vector signed char a, vector signed char b) 6581 { 6582 return (vector signed char) 6583 __builtin_altivec_vsro((vector int)a, (vector int)b); 6584 } 6585 6586 static vector signed char __ATTRS_o_ai 6587 vec_vsro(vector signed char a, vector unsigned char b) 6588 { 6589 return (vector signed char) 6590 __builtin_altivec_vsro((vector int)a, (vector int)b); 6591 } 6592 6593 static vector unsigned char __ATTRS_o_ai 6594 vec_vsro(vector unsigned char a, vector signed char b) 6595 { 6596 return (vector unsigned char) 6597 __builtin_altivec_vsro((vector int)a, (vector int)b); 6598 } 6599 6600 static vector unsigned char __ATTRS_o_ai 6601 vec_vsro(vector unsigned char a, vector unsigned char b) 6602 { 6603 return (vector unsigned char) 6604 __builtin_altivec_vsro((vector int)a, (vector int)b); 6605 } 6606 6607 static vector short __ATTRS_o_ai 6608 vec_vsro(vector short a, vector signed char b) 6609 { 6610 return (vector short)__builtin_altivec_vsro((vector int)a, (vector int)b); 6611 } 6612 6613 static vector short __ATTRS_o_ai 6614 vec_vsro(vector short a, vector unsigned char b) 6615 { 6616 return (vector short)__builtin_altivec_vsro((vector int)a, (vector int)b); 6617 } 6618 6619 static vector unsigned short __ATTRS_o_ai 6620 vec_vsro(vector unsigned short a, vector signed char b) 6621 { 6622 return (vector unsigned short) 6623 __builtin_altivec_vsro((vector int)a, (vector int)b); 6624 } 6625 6626 static vector unsigned short __ATTRS_o_ai 6627 vec_vsro(vector unsigned short a, vector unsigned char b) 6628 { 6629 return (vector unsigned short) 6630 __builtin_altivec_vsro((vector int)a, (vector int)b); 6631 } 6632 6633 static vector pixel __ATTRS_o_ai 6634 vec_vsro(vector pixel a, vector signed char b) 6635 { 6636 return (vector pixel)__builtin_altivec_vsro((vector int)a, (vector int)b); 6637 } 6638 6639 static vector pixel __ATTRS_o_ai 6640 vec_vsro(vector pixel a, vector unsigned char b) 6641 { 6642 return (vector pixel)__builtin_altivec_vsro((vector int)a, (vector int)b); 6643 } 6644 6645 static vector int __ATTRS_o_ai 6646 vec_vsro(vector int a, vector signed char b) 6647 { 6648 return (vector int)__builtin_altivec_vsro(a, (vector int)b); 6649 } 6650 6651 static vector int __ATTRS_o_ai 6652 vec_vsro(vector int a, vector unsigned char b) 6653 { 6654 return (vector int)__builtin_altivec_vsro(a, (vector int)b); 6655 } 6656 6657 static vector unsigned int __ATTRS_o_ai 6658 vec_vsro(vector unsigned int a, vector signed char b) 6659 { 6660 return (vector unsigned int) 6661 __builtin_altivec_vsro((vector int)a, (vector int)b); 6662 } 6663 6664 static vector unsigned int __ATTRS_o_ai 6665 vec_vsro(vector unsigned int a, vector unsigned char b) 6666 { 6667 return (vector unsigned int) 6668 __builtin_altivec_vsro((vector int)a, (vector int)b); 6669 } 6670 6671 static vector float __ATTRS_o_ai 6672 vec_vsro(vector float a, vector signed char b) 6673 { 6674 return (vector float)__builtin_altivec_vsro((vector int)a, (vector int)b); 6675 } 6676 6677 static vector float __ATTRS_o_ai 6678 vec_vsro(vector float a, vector unsigned char b) 6679 { 6680 return (vector float)__builtin_altivec_vsro((vector int)a, (vector int)b); 6681 } 6682 6683 /* vec_st */ 6684 6685 static void __ATTRS_o_ai 6686 vec_st(vector signed char a, int b, vector signed char *c) 6687 { 6688 __builtin_altivec_stvx((vector int)a, b, c); 6689 } 6690 6691 static void __ATTRS_o_ai 6692 vec_st(vector signed char a, int b, signed char *c) 6693 { 6694 __builtin_altivec_stvx((vector int)a, b, c); 6695 } 6696 6697 static void __ATTRS_o_ai 6698 vec_st(vector unsigned char a, int b, vector unsigned char *c) 6699 { 6700 __builtin_altivec_stvx((vector int)a, b, c); 6701 } 6702 6703 static void __ATTRS_o_ai 6704 vec_st(vector unsigned char a, int b, unsigned char *c) 6705 { 6706 __builtin_altivec_stvx((vector int)a, b, c); 6707 } 6708 6709 static void __ATTRS_o_ai 6710 vec_st(vector bool char a, int b, signed char *c) 6711 { 6712 __builtin_altivec_stvx((vector int)a, b, c); 6713 } 6714 6715 static void __ATTRS_o_ai 6716 vec_st(vector bool char a, int b, unsigned char *c) 6717 { 6718 __builtin_altivec_stvx((vector int)a, b, c); 6719 } 6720 6721 static void __ATTRS_o_ai 6722 vec_st(vector bool char a, int b, vector bool char *c) 6723 { 6724 __builtin_altivec_stvx((vector int)a, b, c); 6725 } 6726 6727 static void __ATTRS_o_ai 6728 vec_st(vector short a, int b, vector short *c) 6729 { 6730 __builtin_altivec_stvx((vector int)a, b, c); 6731 } 6732 6733 static void __ATTRS_o_ai 6734 vec_st(vector short a, int b, short *c) 6735 { 6736 __builtin_altivec_stvx((vector int)a, b, c); 6737 } 6738 6739 static void __ATTRS_o_ai 6740 vec_st(vector unsigned short a, int b, vector unsigned short *c) 6741 { 6742 __builtin_altivec_stvx((vector int)a, b, c); 6743 } 6744 6745 static void __ATTRS_o_ai 6746 vec_st(vector unsigned short a, int b, unsigned short *c) 6747 { 6748 __builtin_altivec_stvx((vector int)a, b, c); 6749 } 6750 6751 static void __ATTRS_o_ai 6752 vec_st(vector bool short a, int b, short *c) 6753 { 6754 __builtin_altivec_stvx((vector int)a, b, c); 6755 } 6756 6757 static void __ATTRS_o_ai 6758 vec_st(vector bool short a, int b, unsigned short *c) 6759 { 6760 __builtin_altivec_stvx((vector int)a, b, c); 6761 } 6762 6763 static void __ATTRS_o_ai 6764 vec_st(vector bool short a, int b, vector bool short *c) 6765 { 6766 __builtin_altivec_stvx((vector int)a, b, c); 6767 } 6768 6769 static void __ATTRS_o_ai 6770 vec_st(vector pixel a, int b, short *c) 6771 { 6772 __builtin_altivec_stvx((vector int)a, b, c); 6773 } 6774 6775 static void __ATTRS_o_ai 6776 vec_st(vector pixel a, int b, unsigned short *c) 6777 { 6778 __builtin_altivec_stvx((vector int)a, b, c); 6779 } 6780 6781 static void __ATTRS_o_ai 6782 vec_st(vector pixel a, int b, vector pixel *c) 6783 { 6784 __builtin_altivec_stvx((vector int)a, b, c); 6785 } 6786 6787 static void __ATTRS_o_ai 6788 vec_st(vector int a, int b, vector int *c) 6789 { 6790 __builtin_altivec_stvx(a, b, c); 6791 } 6792 6793 static void __ATTRS_o_ai 6794 vec_st(vector int a, int b, int *c) 6795 { 6796 __builtin_altivec_stvx(a, b, c); 6797 } 6798 6799 static void __ATTRS_o_ai 6800 vec_st(vector unsigned int a, int b, vector unsigned int *c) 6801 { 6802 __builtin_altivec_stvx((vector int)a, b, c); 6803 } 6804 6805 static void __ATTRS_o_ai 6806 vec_st(vector unsigned int a, int b, unsigned int *c) 6807 { 6808 __builtin_altivec_stvx((vector int)a, b, c); 6809 } 6810 6811 static void __ATTRS_o_ai 6812 vec_st(vector bool int a, int b, int *c) 6813 { 6814 __builtin_altivec_stvx((vector int)a, b, c); 6815 } 6816 6817 static void __ATTRS_o_ai 6818 vec_st(vector bool int a, int b, unsigned int *c) 6819 { 6820 __builtin_altivec_stvx((vector int)a, b, c); 6821 } 6822 6823 static void __ATTRS_o_ai 6824 vec_st(vector bool int a, int b, vector bool int *c) 6825 { 6826 __builtin_altivec_stvx((vector int)a, b, c); 6827 } 6828 6829 static void __ATTRS_o_ai 6830 vec_st(vector float a, int b, vector float *c) 6831 { 6832 __builtin_altivec_stvx((vector int)a, b, c); 6833 } 6834 6835 static void __ATTRS_o_ai 6836 vec_st(vector float a, int b, float *c) 6837 { 6838 __builtin_altivec_stvx((vector int)a, b, c); 6839 } 6840 6841 /* vec_stvx */ 6842 6843 static void __ATTRS_o_ai 6844 vec_stvx(vector signed char a, int b, vector signed char *c) 6845 { 6846 __builtin_altivec_stvx((vector int)a, b, c); 6847 } 6848 6849 static void __ATTRS_o_ai 6850 vec_stvx(vector signed char a, int b, signed char *c) 6851 { 6852 __builtin_altivec_stvx((vector int)a, b, c); 6853 } 6854 6855 static void __ATTRS_o_ai 6856 vec_stvx(vector unsigned char a, int b, vector unsigned char *c) 6857 { 6858 __builtin_altivec_stvx((vector int)a, b, c); 6859 } 6860 6861 static void __ATTRS_o_ai 6862 vec_stvx(vector unsigned char a, int b, unsigned char *c) 6863 { 6864 __builtin_altivec_stvx((vector int)a, b, c); 6865 } 6866 6867 static void __ATTRS_o_ai 6868 vec_stvx(vector bool char a, int b, signed char *c) 6869 { 6870 __builtin_altivec_stvx((vector int)a, b, c); 6871 } 6872 6873 static void __ATTRS_o_ai 6874 vec_stvx(vector bool char a, int b, unsigned char *c) 6875 { 6876 __builtin_altivec_stvx((vector int)a, b, c); 6877 } 6878 6879 static void __ATTRS_o_ai 6880 vec_stvx(vector bool char a, int b, vector bool char *c) 6881 { 6882 __builtin_altivec_stvx((vector int)a, b, c); 6883 } 6884 6885 static void __ATTRS_o_ai 6886 vec_stvx(vector short a, int b, vector short *c) 6887 { 6888 __builtin_altivec_stvx((vector int)a, b, c); 6889 } 6890 6891 static void __ATTRS_o_ai 6892 vec_stvx(vector short a, int b, short *c) 6893 { 6894 __builtin_altivec_stvx((vector int)a, b, c); 6895 } 6896 6897 static void __ATTRS_o_ai 6898 vec_stvx(vector unsigned short a, int b, vector unsigned short *c) 6899 { 6900 __builtin_altivec_stvx((vector int)a, b, c); 6901 } 6902 6903 static void __ATTRS_o_ai 6904 vec_stvx(vector unsigned short a, int b, unsigned short *c) 6905 { 6906 __builtin_altivec_stvx((vector int)a, b, c); 6907 } 6908 6909 static void __ATTRS_o_ai 6910 vec_stvx(vector bool short a, int b, short *c) 6911 { 6912 __builtin_altivec_stvx((vector int)a, b, c); 6913 } 6914 6915 static void __ATTRS_o_ai 6916 vec_stvx(vector bool short a, int b, unsigned short *c) 6917 { 6918 __builtin_altivec_stvx((vector int)a, b, c); 6919 } 6920 6921 static void __ATTRS_o_ai 6922 vec_stvx(vector bool short a, int b, vector bool short *c) 6923 { 6924 __builtin_altivec_stvx((vector int)a, b, c); 6925 } 6926 6927 static void __ATTRS_o_ai 6928 vec_stvx(vector pixel a, int b, short *c) 6929 { 6930 __builtin_altivec_stvx((vector int)a, b, c); 6931 } 6932 6933 static void __ATTRS_o_ai 6934 vec_stvx(vector pixel a, int b, unsigned short *c) 6935 { 6936 __builtin_altivec_stvx((vector int)a, b, c); 6937 } 6938 6939 static void __ATTRS_o_ai 6940 vec_stvx(vector pixel a, int b, vector pixel *c) 6941 { 6942 __builtin_altivec_stvx((vector int)a, b, c); 6943 } 6944 6945 static void __ATTRS_o_ai 6946 vec_stvx(vector int a, int b, vector int *c) 6947 { 6948 __builtin_altivec_stvx(a, b, c); 6949 } 6950 6951 static void __ATTRS_o_ai 6952 vec_stvx(vector int a, int b, int *c) 6953 { 6954 __builtin_altivec_stvx(a, b, c); 6955 } 6956 6957 static void __ATTRS_o_ai 6958 vec_stvx(vector unsigned int a, int b, vector unsigned int *c) 6959 { 6960 __builtin_altivec_stvx((vector int)a, b, c); 6961 } 6962 6963 static void __ATTRS_o_ai 6964 vec_stvx(vector unsigned int a, int b, unsigned int *c) 6965 { 6966 __builtin_altivec_stvx((vector int)a, b, c); 6967 } 6968 6969 static void __ATTRS_o_ai 6970 vec_stvx(vector bool int a, int b, int *c) 6971 { 6972 __builtin_altivec_stvx((vector int)a, b, c); 6973 } 6974 6975 static void __ATTRS_o_ai 6976 vec_stvx(vector bool int a, int b, unsigned int *c) 6977 { 6978 __builtin_altivec_stvx((vector int)a, b, c); 6979 } 6980 6981 static void __ATTRS_o_ai 6982 vec_stvx(vector bool int a, int b, vector bool int *c) 6983 { 6984 __builtin_altivec_stvx((vector int)a, b, c); 6985 } 6986 6987 static void __ATTRS_o_ai 6988 vec_stvx(vector float a, int b, vector float *c) 6989 { 6990 __builtin_altivec_stvx((vector int)a, b, c); 6991 } 6992 6993 static void __ATTRS_o_ai 6994 vec_stvx(vector float a, int b, float *c) 6995 { 6996 __builtin_altivec_stvx((vector int)a, b, c); 6997 } 6998 6999 /* vec_ste */ 7000 7001 static void __ATTRS_o_ai 7002 vec_ste(vector signed char a, int b, signed char *c) 7003 { 7004 __builtin_altivec_stvebx((vector char)a, b, c); 7005 } 7006 7007 static void __ATTRS_o_ai 7008 vec_ste(vector unsigned char a, int b, unsigned char *c) 7009 { 7010 __builtin_altivec_stvebx((vector char)a, b, c); 7011 } 7012 7013 static void __ATTRS_o_ai 7014 vec_ste(vector bool char a, int b, signed char *c) 7015 { 7016 __builtin_altivec_stvebx((vector char)a, b, c); 7017 } 7018 7019 static void __ATTRS_o_ai 7020 vec_ste(vector bool char a, int b, unsigned char *c) 7021 { 7022 __builtin_altivec_stvebx((vector char)a, b, c); 7023 } 7024 7025 static void __ATTRS_o_ai 7026 vec_ste(vector short a, int b, short *c) 7027 { 7028 __builtin_altivec_stvehx(a, b, c); 7029 } 7030 7031 static void __ATTRS_o_ai 7032 vec_ste(vector unsigned short a, int b, unsigned short *c) 7033 { 7034 __builtin_altivec_stvehx((vector short)a, b, c); 7035 } 7036 7037 static void __ATTRS_o_ai 7038 vec_ste(vector bool short a, int b, short *c) 7039 { 7040 __builtin_altivec_stvehx((vector short)a, b, c); 7041 } 7042 7043 static void __ATTRS_o_ai 7044 vec_ste(vector bool short a, int b, unsigned short *c) 7045 { 7046 __builtin_altivec_stvehx((vector short)a, b, c); 7047 } 7048 7049 static void __ATTRS_o_ai 7050 vec_ste(vector pixel a, int b, short *c) 7051 { 7052 __builtin_altivec_stvehx((vector short)a, b, c); 7053 } 7054 7055 static void __ATTRS_o_ai 7056 vec_ste(vector pixel a, int b, unsigned short *c) 7057 { 7058 __builtin_altivec_stvehx((vector short)a, b, c); 7059 } 7060 7061 static void __ATTRS_o_ai 7062 vec_ste(vector int a, int b, int *c) 7063 { 7064 __builtin_altivec_stvewx(a, b, c); 7065 } 7066 7067 static void __ATTRS_o_ai 7068 vec_ste(vector unsigned int a, int b, unsigned int *c) 7069 { 7070 __builtin_altivec_stvewx((vector int)a, b, c); 7071 } 7072 7073 static void __ATTRS_o_ai 7074 vec_ste(vector bool int a, int b, int *c) 7075 { 7076 __builtin_altivec_stvewx((vector int)a, b, c); 7077 } 7078 7079 static void __ATTRS_o_ai 7080 vec_ste(vector bool int a, int b, unsigned int *c) 7081 { 7082 __builtin_altivec_stvewx((vector int)a, b, c); 7083 } 7084 7085 static void __ATTRS_o_ai 7086 vec_ste(vector float a, int b, float *c) 7087 { 7088 __builtin_altivec_stvewx((vector int)a, b, c); 7089 } 7090 7091 /* vec_stvebx */ 7092 7093 static void __ATTRS_o_ai 7094 vec_stvebx(vector signed char a, int b, signed char *c) 7095 { 7096 __builtin_altivec_stvebx((vector char)a, b, c); 7097 } 7098 7099 static void __ATTRS_o_ai 7100 vec_stvebx(vector unsigned char a, int b, unsigned char *c) 7101 { 7102 __builtin_altivec_stvebx((vector char)a, b, c); 7103 } 7104 7105 static void __ATTRS_o_ai 7106 vec_stvebx(vector bool char a, int b, signed char *c) 7107 { 7108 __builtin_altivec_stvebx((vector char)a, b, c); 7109 } 7110 7111 static void __ATTRS_o_ai 7112 vec_stvebx(vector bool char a, int b, unsigned char *c) 7113 { 7114 __builtin_altivec_stvebx((vector char)a, b, c); 7115 } 7116 7117 /* vec_stvehx */ 7118 7119 static void __ATTRS_o_ai 7120 vec_stvehx(vector short a, int b, short *c) 7121 { 7122 __builtin_altivec_stvehx(a, b, c); 7123 } 7124 7125 static void __ATTRS_o_ai 7126 vec_stvehx(vector unsigned short a, int b, unsigned short *c) 7127 { 7128 __builtin_altivec_stvehx((vector short)a, b, c); 7129 } 7130 7131 static void __ATTRS_o_ai 7132 vec_stvehx(vector bool short a, int b, short *c) 7133 { 7134 __builtin_altivec_stvehx((vector short)a, b, c); 7135 } 7136 7137 static void __ATTRS_o_ai 7138 vec_stvehx(vector bool short a, int b, unsigned short *c) 7139 { 7140 __builtin_altivec_stvehx((vector short)a, b, c); 7141 } 7142 7143 static void __ATTRS_o_ai 7144 vec_stvehx(vector pixel a, int b, short *c) 7145 { 7146 __builtin_altivec_stvehx((vector short)a, b, c); 7147 } 7148 7149 static void __ATTRS_o_ai 7150 vec_stvehx(vector pixel a, int b, unsigned short *c) 7151 { 7152 __builtin_altivec_stvehx((vector short)a, b, c); 7153 } 7154 7155 /* vec_stvewx */ 7156 7157 static void __ATTRS_o_ai 7158 vec_stvewx(vector int a, int b, int *c) 7159 { 7160 __builtin_altivec_stvewx(a, b, c); 7161 } 7162 7163 static void __ATTRS_o_ai 7164 vec_stvewx(vector unsigned int a, int b, unsigned int *c) 7165 { 7166 __builtin_altivec_stvewx((vector int)a, b, c); 7167 } 7168 7169 static void __ATTRS_o_ai 7170 vec_stvewx(vector bool int a, int b, int *c) 7171 { 7172 __builtin_altivec_stvewx((vector int)a, b, c); 7173 } 7174 7175 static void __ATTRS_o_ai 7176 vec_stvewx(vector bool int a, int b, unsigned int *c) 7177 { 7178 __builtin_altivec_stvewx((vector int)a, b, c); 7179 } 7180 7181 static void __ATTRS_o_ai 7182 vec_stvewx(vector float a, int b, float *c) 7183 { 7184 __builtin_altivec_stvewx((vector int)a, b, c); 7185 } 7186 7187 /* vec_stl */ 7188 7189 static void __ATTRS_o_ai 7190 vec_stl(vector signed char a, int b, vector signed char *c) 7191 { 7192 __builtin_altivec_stvxl((vector int)a, b, c); 7193 } 7194 7195 static void __ATTRS_o_ai 7196 vec_stl(vector signed char a, int b, signed char *c) 7197 { 7198 __builtin_altivec_stvxl((vector int)a, b, c); 7199 } 7200 7201 static void __ATTRS_o_ai 7202 vec_stl(vector unsigned char a, int b, vector unsigned char *c) 7203 { 7204 __builtin_altivec_stvxl((vector int)a, b, c); 7205 } 7206 7207 static void __ATTRS_o_ai 7208 vec_stl(vector unsigned char a, int b, unsigned char *c) 7209 { 7210 __builtin_altivec_stvxl((vector int)a, b, c); 7211 } 7212 7213 static void __ATTRS_o_ai 7214 vec_stl(vector bool char a, int b, signed char *c) 7215 { 7216 __builtin_altivec_stvxl((vector int)a, b, c); 7217 } 7218 7219 static void __ATTRS_o_ai 7220 vec_stl(vector bool char a, int b, unsigned char *c) 7221 { 7222 __builtin_altivec_stvxl((vector int)a, b, c); 7223 } 7224 7225 static void __ATTRS_o_ai 7226 vec_stl(vector bool char a, int b, vector bool char *c) 7227 { 7228 __builtin_altivec_stvxl((vector int)a, b, c); 7229 } 7230 7231 static void __ATTRS_o_ai 7232 vec_stl(vector short a, int b, vector short *c) 7233 { 7234 __builtin_altivec_stvxl((vector int)a, b, c); 7235 } 7236 7237 static void __ATTRS_o_ai 7238 vec_stl(vector short a, int b, short *c) 7239 { 7240 __builtin_altivec_stvxl((vector int)a, b, c); 7241 } 7242 7243 static void __ATTRS_o_ai 7244 vec_stl(vector unsigned short a, int b, vector unsigned short *c) 7245 { 7246 __builtin_altivec_stvxl((vector int)a, b, c); 7247 } 7248 7249 static void __ATTRS_o_ai 7250 vec_stl(vector unsigned short a, int b, unsigned short *c) 7251 { 7252 __builtin_altivec_stvxl((vector int)a, b, c); 7253 } 7254 7255 static void __ATTRS_o_ai 7256 vec_stl(vector bool short a, int b, short *c) 7257 { 7258 __builtin_altivec_stvxl((vector int)a, b, c); 7259 } 7260 7261 static void __ATTRS_o_ai 7262 vec_stl(vector bool short a, int b, unsigned short *c) 7263 { 7264 __builtin_altivec_stvxl((vector int)a, b, c); 7265 } 7266 7267 static void __ATTRS_o_ai 7268 vec_stl(vector bool short a, int b, vector bool short *c) 7269 { 7270 __builtin_altivec_stvxl((vector int)a, b, c); 7271 } 7272 7273 static void __ATTRS_o_ai 7274 vec_stl(vector pixel a, int b, short *c) 7275 { 7276 __builtin_altivec_stvxl((vector int)a, b, c); 7277 } 7278 7279 static void __ATTRS_o_ai 7280 vec_stl(vector pixel a, int b, unsigned short *c) 7281 { 7282 __builtin_altivec_stvxl((vector int)a, b, c); 7283 } 7284 7285 static void __ATTRS_o_ai 7286 vec_stl(vector pixel a, int b, vector pixel *c) 7287 { 7288 __builtin_altivec_stvxl((vector int)a, b, c); 7289 } 7290 7291 static void __ATTRS_o_ai 7292 vec_stl(vector int a, int b, vector int *c) 7293 { 7294 __builtin_altivec_stvxl(a, b, c); 7295 } 7296 7297 static void __ATTRS_o_ai 7298 vec_stl(vector int a, int b, int *c) 7299 { 7300 __builtin_altivec_stvxl(a, b, c); 7301 } 7302 7303 static void __ATTRS_o_ai 7304 vec_stl(vector unsigned int a, int b, vector unsigned int *c) 7305 { 7306 __builtin_altivec_stvxl((vector int)a, b, c); 7307 } 7308 7309 static void __ATTRS_o_ai 7310 vec_stl(vector unsigned int a, int b, unsigned int *c) 7311 { 7312 __builtin_altivec_stvxl((vector int)a, b, c); 7313 } 7314 7315 static void __ATTRS_o_ai 7316 vec_stl(vector bool int a, int b, int *c) 7317 { 7318 __builtin_altivec_stvxl((vector int)a, b, c); 7319 } 7320 7321 static void __ATTRS_o_ai 7322 vec_stl(vector bool int a, int b, unsigned int *c) 7323 { 7324 __builtin_altivec_stvxl((vector int)a, b, c); 7325 } 7326 7327 static void __ATTRS_o_ai 7328 vec_stl(vector bool int a, int b, vector bool int *c) 7329 { 7330 __builtin_altivec_stvxl((vector int)a, b, c); 7331 } 7332 7333 static void __ATTRS_o_ai 7334 vec_stl(vector float a, int b, vector float *c) 7335 { 7336 __builtin_altivec_stvxl((vector int)a, b, c); 7337 } 7338 7339 static void __ATTRS_o_ai 7340 vec_stl(vector float a, int b, float *c) 7341 { 7342 __builtin_altivec_stvxl((vector int)a, b, c); 7343 } 7344 7345 /* vec_stvxl */ 7346 7347 static void __ATTRS_o_ai 7348 vec_stvxl(vector signed char a, int b, vector signed char *c) 7349 { 7350 __builtin_altivec_stvxl((vector int)a, b, c); 7351 } 7352 7353 static void __ATTRS_o_ai 7354 vec_stvxl(vector signed char a, int b, signed char *c) 7355 { 7356 __builtin_altivec_stvxl((vector int)a, b, c); 7357 } 7358 7359 static void __ATTRS_o_ai 7360 vec_stvxl(vector unsigned char a, int b, vector unsigned char *c) 7361 { 7362 __builtin_altivec_stvxl((vector int)a, b, c); 7363 } 7364 7365 static void __ATTRS_o_ai 7366 vec_stvxl(vector unsigned char a, int b, unsigned char *c) 7367 { 7368 __builtin_altivec_stvxl((vector int)a, b, c); 7369 } 7370 7371 static void __ATTRS_o_ai 7372 vec_stvxl(vector bool char a, int b, signed char *c) 7373 { 7374 __builtin_altivec_stvxl((vector int)a, b, c); 7375 } 7376 7377 static void __ATTRS_o_ai 7378 vec_stvxl(vector bool char a, int b, unsigned char *c) 7379 { 7380 __builtin_altivec_stvxl((vector int)a, b, c); 7381 } 7382 7383 static void __ATTRS_o_ai 7384 vec_stvxl(vector bool char a, int b, vector bool char *c) 7385 { 7386 __builtin_altivec_stvxl((vector int)a, b, c); 7387 } 7388 7389 static void __ATTRS_o_ai 7390 vec_stvxl(vector short a, int b, vector short *c) 7391 { 7392 __builtin_altivec_stvxl((vector int)a, b, c); 7393 } 7394 7395 static void __ATTRS_o_ai 7396 vec_stvxl(vector short a, int b, short *c) 7397 { 7398 __builtin_altivec_stvxl((vector int)a, b, c); 7399 } 7400 7401 static void __ATTRS_o_ai 7402 vec_stvxl(vector unsigned short a, int b, vector unsigned short *c) 7403 { 7404 __builtin_altivec_stvxl((vector int)a, b, c); 7405 } 7406 7407 static void __ATTRS_o_ai 7408 vec_stvxl(vector unsigned short a, int b, unsigned short *c) 7409 { 7410 __builtin_altivec_stvxl((vector int)a, b, c); 7411 } 7412 7413 static void __ATTRS_o_ai 7414 vec_stvxl(vector bool short a, int b, short *c) 7415 { 7416 __builtin_altivec_stvxl((vector int)a, b, c); 7417 } 7418 7419 static void __ATTRS_o_ai 7420 vec_stvxl(vector bool short a, int b, unsigned short *c) 7421 { 7422 __builtin_altivec_stvxl((vector int)a, b, c); 7423 } 7424 7425 static void __ATTRS_o_ai 7426 vec_stvxl(vector bool short a, int b, vector bool short *c) 7427 { 7428 __builtin_altivec_stvxl((vector int)a, b, c); 7429 } 7430 7431 static void __ATTRS_o_ai 7432 vec_stvxl(vector pixel a, int b, short *c) 7433 { 7434 __builtin_altivec_stvxl((vector int)a, b, c); 7435 } 7436 7437 static void __ATTRS_o_ai 7438 vec_stvxl(vector pixel a, int b, unsigned short *c) 7439 { 7440 __builtin_altivec_stvxl((vector int)a, b, c); 7441 } 7442 7443 static void __ATTRS_o_ai 7444 vec_stvxl(vector pixel a, int b, vector pixel *c) 7445 { 7446 __builtin_altivec_stvxl((vector int)a, b, c); 7447 } 7448 7449 static void __ATTRS_o_ai 7450 vec_stvxl(vector int a, int b, vector int *c) 7451 { 7452 __builtin_altivec_stvxl(a, b, c); 7453 } 7454 7455 static void __ATTRS_o_ai 7456 vec_stvxl(vector int a, int b, int *c) 7457 { 7458 __builtin_altivec_stvxl(a, b, c); 7459 } 7460 7461 static void __ATTRS_o_ai 7462 vec_stvxl(vector unsigned int a, int b, vector unsigned int *c) 7463 { 7464 __builtin_altivec_stvxl((vector int)a, b, c); 7465 } 7466 7467 static void __ATTRS_o_ai 7468 vec_stvxl(vector unsigned int a, int b, unsigned int *c) 7469 { 7470 __builtin_altivec_stvxl((vector int)a, b, c); 7471 } 7472 7473 static void __ATTRS_o_ai 7474 vec_stvxl(vector bool int a, int b, int *c) 7475 { 7476 __builtin_altivec_stvxl((vector int)a, b, c); 7477 } 7478 7479 static void __ATTRS_o_ai 7480 vec_stvxl(vector bool int a, int b, unsigned int *c) 7481 { 7482 __builtin_altivec_stvxl((vector int)a, b, c); 7483 } 7484 7485 static void __ATTRS_o_ai 7486 vec_stvxl(vector bool int a, int b, vector bool int *c) 7487 { 7488 __builtin_altivec_stvxl((vector int)a, b, c); 7489 } 7490 7491 static void __ATTRS_o_ai 7492 vec_stvxl(vector float a, int b, vector float *c) 7493 { 7494 __builtin_altivec_stvxl((vector int)a, b, c); 7495 } 7496 7497 static void __ATTRS_o_ai 7498 vec_stvxl(vector float a, int b, float *c) 7499 { 7500 __builtin_altivec_stvxl((vector int)a, b, c); 7501 } 7502 7503 /* vec_sub */ 7504 7505 static vector signed char __ATTRS_o_ai 7506 vec_sub(vector signed char a, vector signed char b) 7507 { 7508 return a - b; 7509 } 7510 7511 static vector signed char __ATTRS_o_ai 7512 vec_sub(vector bool char a, vector signed char b) 7513 { 7514 return (vector signed char)a - b; 7515 } 7516 7517 static vector signed char __ATTRS_o_ai 7518 vec_sub(vector signed char a, vector bool char b) 7519 { 7520 return a - (vector signed char)b; 7521 } 7522 7523 static vector unsigned char __ATTRS_o_ai 7524 vec_sub(vector unsigned char a, vector unsigned char b) 7525 { 7526 return a - b; 7527 } 7528 7529 static vector unsigned char __ATTRS_o_ai 7530 vec_sub(vector bool char a, vector unsigned char b) 7531 { 7532 return (vector unsigned char)a - b; 7533 } 7534 7535 static vector unsigned char __ATTRS_o_ai 7536 vec_sub(vector unsigned char a, vector bool char b) 7537 { 7538 return a - (vector unsigned char)b; 7539 } 7540 7541 static vector short __ATTRS_o_ai 7542 vec_sub(vector short a, vector short b) 7543 { 7544 return a - b; 7545 } 7546 7547 static vector short __ATTRS_o_ai 7548 vec_sub(vector bool short a, vector short b) 7549 { 7550 return (vector short)a - b; 7551 } 7552 7553 static vector short __ATTRS_o_ai 7554 vec_sub(vector short a, vector bool short b) 7555 { 7556 return a - (vector short)b; 7557 } 7558 7559 static vector unsigned short __ATTRS_o_ai 7560 vec_sub(vector unsigned short a, vector unsigned short b) 7561 { 7562 return a - b; 7563 } 7564 7565 static vector unsigned short __ATTRS_o_ai 7566 vec_sub(vector bool short a, vector unsigned short b) 7567 { 7568 return (vector unsigned short)a - b; 7569 } 7570 7571 static vector unsigned short __ATTRS_o_ai 7572 vec_sub(vector unsigned short a, vector bool short b) 7573 { 7574 return a - (vector unsigned short)b; 7575 } 7576 7577 static vector int __ATTRS_o_ai 7578 vec_sub(vector int a, vector int b) 7579 { 7580 return a - b; 7581 } 7582 7583 static vector int __ATTRS_o_ai 7584 vec_sub(vector bool int a, vector int b) 7585 { 7586 return (vector int)a - b; 7587 } 7588 7589 static vector int __ATTRS_o_ai 7590 vec_sub(vector int a, vector bool int b) 7591 { 7592 return a - (vector int)b; 7593 } 7594 7595 static vector unsigned int __ATTRS_o_ai 7596 vec_sub(vector unsigned int a, vector unsigned int b) 7597 { 7598 return a - b; 7599 } 7600 7601 static vector unsigned int __ATTRS_o_ai 7602 vec_sub(vector bool int a, vector unsigned int b) 7603 { 7604 return (vector unsigned int)a - b; 7605 } 7606 7607 static vector unsigned int __ATTRS_o_ai 7608 vec_sub(vector unsigned int a, vector bool int b) 7609 { 7610 return a - (vector unsigned int)b; 7611 } 7612 7613 static vector float __ATTRS_o_ai 7614 vec_sub(vector float a, vector float b) 7615 { 7616 return a - b; 7617 } 7618 7619 /* vec_vsububm */ 7620 7621 #define __builtin_altivec_vsububm vec_vsububm 7622 7623 static vector signed char __ATTRS_o_ai 7624 vec_vsububm(vector signed char a, vector signed char b) 7625 { 7626 return a - b; 7627 } 7628 7629 static vector signed char __ATTRS_o_ai 7630 vec_vsububm(vector bool char a, vector signed char b) 7631 { 7632 return (vector signed char)a - b; 7633 } 7634 7635 static vector signed char __ATTRS_o_ai 7636 vec_vsububm(vector signed char a, vector bool char b) 7637 { 7638 return a - (vector signed char)b; 7639 } 7640 7641 static vector unsigned char __ATTRS_o_ai 7642 vec_vsububm(vector unsigned char a, vector unsigned char b) 7643 { 7644 return a - b; 7645 } 7646 7647 static vector unsigned char __ATTRS_o_ai 7648 vec_vsububm(vector bool char a, vector unsigned char b) 7649 { 7650 return (vector unsigned char)a - b; 7651 } 7652 7653 static vector unsigned char __ATTRS_o_ai 7654 vec_vsububm(vector unsigned char a, vector bool char b) 7655 { 7656 return a - (vector unsigned char)b; 7657 } 7658 7659 /* vec_vsubuhm */ 7660 7661 #define __builtin_altivec_vsubuhm vec_vsubuhm 7662 7663 static vector short __ATTRS_o_ai 7664 vec_vsubuhm(vector short a, vector short b) 7665 { 7666 return a - b; 7667 } 7668 7669 static vector short __ATTRS_o_ai 7670 vec_vsubuhm(vector bool short a, vector short b) 7671 { 7672 return (vector short)a - b; 7673 } 7674 7675 static vector short __ATTRS_o_ai 7676 vec_vsubuhm(vector short a, vector bool short b) 7677 { 7678 return a - (vector short)b; 7679 } 7680 7681 static vector unsigned short __ATTRS_o_ai 7682 vec_vsubuhm(vector unsigned short a, vector unsigned short b) 7683 { 7684 return a - b; 7685 } 7686 7687 static vector unsigned short __ATTRS_o_ai 7688 vec_vsubuhm(vector bool short a, vector unsigned short b) 7689 { 7690 return (vector unsigned short)a - b; 7691 } 7692 7693 static vector unsigned short __ATTRS_o_ai 7694 vec_vsubuhm(vector unsigned short a, vector bool short b) 7695 { 7696 return a - (vector unsigned short)b; 7697 } 7698 7699 /* vec_vsubuwm */ 7700 7701 #define __builtin_altivec_vsubuwm vec_vsubuwm 7702 7703 static vector int __ATTRS_o_ai 7704 vec_vsubuwm(vector int a, vector int b) 7705 { 7706 return a - b; 7707 } 7708 7709 static vector int __ATTRS_o_ai 7710 vec_vsubuwm(vector bool int a, vector int b) 7711 { 7712 return (vector int)a - b; 7713 } 7714 7715 static vector int __ATTRS_o_ai 7716 vec_vsubuwm(vector int a, vector bool int b) 7717 { 7718 return a - (vector int)b; 7719 } 7720 7721 static vector unsigned int __ATTRS_o_ai 7722 vec_vsubuwm(vector unsigned int a, vector unsigned int b) 7723 { 7724 return a - b; 7725 } 7726 7727 static vector unsigned int __ATTRS_o_ai 7728 vec_vsubuwm(vector bool int a, vector unsigned int b) 7729 { 7730 return (vector unsigned int)a - b; 7731 } 7732 7733 static vector unsigned int __ATTRS_o_ai 7734 vec_vsubuwm(vector unsigned int a, vector bool int b) 7735 { 7736 return a - (vector unsigned int)b; 7737 } 7738 7739 /* vec_vsubfp */ 7740 7741 #define __builtin_altivec_vsubfp vec_vsubfp 7742 7743 static vector float __attribute__((__always_inline__)) 7744 vec_vsubfp(vector float a, vector float b) 7745 { 7746 return a - b; 7747 } 7748 7749 /* vec_subc */ 7750 7751 static vector unsigned int __attribute__((__always_inline__)) 7752 vec_subc(vector unsigned int a, vector unsigned int b) 7753 { 7754 return __builtin_altivec_vsubcuw(a, b); 7755 } 7756 7757 /* vec_vsubcuw */ 7758 7759 static vector unsigned int __attribute__((__always_inline__)) 7760 vec_vsubcuw(vector unsigned int a, vector unsigned int b) 7761 { 7762 return __builtin_altivec_vsubcuw(a, b); 7763 } 7764 7765 /* vec_subs */ 7766 7767 static vector signed char __ATTRS_o_ai 7768 vec_subs(vector signed char a, vector signed char b) 7769 { 7770 return __builtin_altivec_vsubsbs(a, b); 7771 } 7772 7773 static vector signed char __ATTRS_o_ai 7774 vec_subs(vector bool char a, vector signed char b) 7775 { 7776 return __builtin_altivec_vsubsbs((vector signed char)a, b); 7777 } 7778 7779 static vector signed char __ATTRS_o_ai 7780 vec_subs(vector signed char a, vector bool char b) 7781 { 7782 return __builtin_altivec_vsubsbs(a, (vector signed char)b); 7783 } 7784 7785 static vector unsigned char __ATTRS_o_ai 7786 vec_subs(vector unsigned char a, vector unsigned char b) 7787 { 7788 return __builtin_altivec_vsububs(a, b); 7789 } 7790 7791 static vector unsigned char __ATTRS_o_ai 7792 vec_subs(vector bool char a, vector unsigned char b) 7793 { 7794 return __builtin_altivec_vsububs((vector unsigned char)a, b); 7795 } 7796 7797 static vector unsigned char __ATTRS_o_ai 7798 vec_subs(vector unsigned char a, vector bool char b) 7799 { 7800 return __builtin_altivec_vsububs(a, (vector unsigned char)b); 7801 } 7802 7803 static vector short __ATTRS_o_ai 7804 vec_subs(vector short a, vector short b) 7805 { 7806 return __builtin_altivec_vsubshs(a, b); 7807 } 7808 7809 static vector short __ATTRS_o_ai 7810 vec_subs(vector bool short a, vector short b) 7811 { 7812 return __builtin_altivec_vsubshs((vector short)a, b); 7813 } 7814 7815 static vector short __ATTRS_o_ai 7816 vec_subs(vector short a, vector bool short b) 7817 { 7818 return __builtin_altivec_vsubshs(a, (vector short)b); 7819 } 7820 7821 static vector unsigned short __ATTRS_o_ai 7822 vec_subs(vector unsigned short a, vector unsigned short b) 7823 { 7824 return __builtin_altivec_vsubuhs(a, b); 7825 } 7826 7827 static vector unsigned short __ATTRS_o_ai 7828 vec_subs(vector bool short a, vector unsigned short b) 7829 { 7830 return __builtin_altivec_vsubuhs((vector unsigned short)a, b); 7831 } 7832 7833 static vector unsigned short __ATTRS_o_ai 7834 vec_subs(vector unsigned short a, vector bool short b) 7835 { 7836 return __builtin_altivec_vsubuhs(a, (vector unsigned short)b); 7837 } 7838 7839 static vector int __ATTRS_o_ai 7840 vec_subs(vector int a, vector int b) 7841 { 7842 return __builtin_altivec_vsubsws(a, b); 7843 } 7844 7845 static vector int __ATTRS_o_ai 7846 vec_subs(vector bool int a, vector int b) 7847 { 7848 return __builtin_altivec_vsubsws((vector int)a, b); 7849 } 7850 7851 static vector int __ATTRS_o_ai 7852 vec_subs(vector int a, vector bool int b) 7853 { 7854 return __builtin_altivec_vsubsws(a, (vector int)b); 7855 } 7856 7857 static vector unsigned int __ATTRS_o_ai 7858 vec_subs(vector unsigned int a, vector unsigned int b) 7859 { 7860 return __builtin_altivec_vsubuws(a, b); 7861 } 7862 7863 static vector unsigned int __ATTRS_o_ai 7864 vec_subs(vector bool int a, vector unsigned int b) 7865 { 7866 return __builtin_altivec_vsubuws((vector unsigned int)a, b); 7867 } 7868 7869 static vector unsigned int __ATTRS_o_ai 7870 vec_subs(vector unsigned int a, vector bool int b) 7871 { 7872 return __builtin_altivec_vsubuws(a, (vector unsigned int)b); 7873 } 7874 7875 /* vec_vsubsbs */ 7876 7877 static vector signed char __ATTRS_o_ai 7878 vec_vsubsbs(vector signed char a, vector signed char b) 7879 { 7880 return __builtin_altivec_vsubsbs(a, b); 7881 } 7882 7883 static vector signed char __ATTRS_o_ai 7884 vec_vsubsbs(vector bool char a, vector signed char b) 7885 { 7886 return __builtin_altivec_vsubsbs((vector signed char)a, b); 7887 } 7888 7889 static vector signed char __ATTRS_o_ai 7890 vec_vsubsbs(vector signed char a, vector bool char b) 7891 { 7892 return __builtin_altivec_vsubsbs(a, (vector signed char)b); 7893 } 7894 7895 /* vec_vsububs */ 7896 7897 static vector unsigned char __ATTRS_o_ai 7898 vec_vsububs(vector unsigned char a, vector unsigned char b) 7899 { 7900 return __builtin_altivec_vsububs(a, b); 7901 } 7902 7903 static vector unsigned char __ATTRS_o_ai 7904 vec_vsububs(vector bool char a, vector unsigned char b) 7905 { 7906 return __builtin_altivec_vsububs((vector unsigned char)a, b); 7907 } 7908 7909 static vector unsigned char __ATTRS_o_ai 7910 vec_vsububs(vector unsigned char a, vector bool char b) 7911 { 7912 return __builtin_altivec_vsububs(a, (vector unsigned char)b); 7913 } 7914 7915 /* vec_vsubshs */ 7916 7917 static vector short __ATTRS_o_ai 7918 vec_vsubshs(vector short a, vector short b) 7919 { 7920 return __builtin_altivec_vsubshs(a, b); 7921 } 7922 7923 static vector short __ATTRS_o_ai 7924 vec_vsubshs(vector bool short a, vector short b) 7925 { 7926 return __builtin_altivec_vsubshs((vector short)a, b); 7927 } 7928 7929 static vector short __ATTRS_o_ai 7930 vec_vsubshs(vector short a, vector bool short b) 7931 { 7932 return __builtin_altivec_vsubshs(a, (vector short)b); 7933 } 7934 7935 /* vec_vsubuhs */ 7936 7937 static vector unsigned short __ATTRS_o_ai 7938 vec_vsubuhs(vector unsigned short a, vector unsigned short b) 7939 { 7940 return __builtin_altivec_vsubuhs(a, b); 7941 } 7942 7943 static vector unsigned short __ATTRS_o_ai 7944 vec_vsubuhs(vector bool short a, vector unsigned short b) 7945 { 7946 return __builtin_altivec_vsubuhs((vector unsigned short)a, b); 7947 } 7948 7949 static vector unsigned short __ATTRS_o_ai 7950 vec_vsubuhs(vector unsigned short a, vector bool short b) 7951 { 7952 return __builtin_altivec_vsubuhs(a, (vector unsigned short)b); 7953 } 7954 7955 /* vec_vsubsws */ 7956 7957 static vector int __ATTRS_o_ai 7958 vec_vsubsws(vector int a, vector int b) 7959 { 7960 return __builtin_altivec_vsubsws(a, b); 7961 } 7962 7963 static vector int __ATTRS_o_ai 7964 vec_vsubsws(vector bool int a, vector int b) 7965 { 7966 return __builtin_altivec_vsubsws((vector int)a, b); 7967 } 7968 7969 static vector int __ATTRS_o_ai 7970 vec_vsubsws(vector int a, vector bool int b) 7971 { 7972 return __builtin_altivec_vsubsws(a, (vector int)b); 7973 } 7974 7975 /* vec_vsubuws */ 7976 7977 static vector unsigned int __ATTRS_o_ai 7978 vec_vsubuws(vector unsigned int a, vector unsigned int b) 7979 { 7980 return __builtin_altivec_vsubuws(a, b); 7981 } 7982 7983 static vector unsigned int __ATTRS_o_ai 7984 vec_vsubuws(vector bool int a, vector unsigned int b) 7985 { 7986 return __builtin_altivec_vsubuws((vector unsigned int)a, b); 7987 } 7988 7989 static vector unsigned int __ATTRS_o_ai 7990 vec_vsubuws(vector unsigned int a, vector bool int b) 7991 { 7992 return __builtin_altivec_vsubuws(a, (vector unsigned int)b); 7993 } 7994 7995 /* vec_sum4s */ 7996 7997 static vector int __ATTRS_o_ai 7998 vec_sum4s(vector signed char a, vector int b) 7999 { 8000 return __builtin_altivec_vsum4sbs(a, b); 8001 } 8002 8003 static vector unsigned int __ATTRS_o_ai 8004 vec_sum4s(vector unsigned char a, vector unsigned int b) 8005 { 8006 return __builtin_altivec_vsum4ubs(a, b); 8007 } 8008 8009 static vector int __ATTRS_o_ai 8010 vec_sum4s(vector signed short a, vector int b) 8011 { 8012 return __builtin_altivec_vsum4shs(a, b); 8013 } 8014 8015 /* vec_vsum4sbs */ 8016 8017 static vector int __attribute__((__always_inline__)) 8018 vec_vsum4sbs(vector signed char a, vector int b) 8019 { 8020 return __builtin_altivec_vsum4sbs(a, b); 8021 } 8022 8023 /* vec_vsum4ubs */ 8024 8025 static vector unsigned int __attribute__((__always_inline__)) 8026 vec_vsum4ubs(vector unsigned char a, vector unsigned int b) 8027 { 8028 return __builtin_altivec_vsum4ubs(a, b); 8029 } 8030 8031 /* vec_vsum4shs */ 8032 8033 static vector int __attribute__((__always_inline__)) 8034 vec_vsum4shs(vector signed short a, vector int b) 8035 { 8036 return __builtin_altivec_vsum4shs(a, b); 8037 } 8038 8039 /* vec_sum2s */ 8040 8041 static vector signed int __attribute__((__always_inline__)) 8042 vec_sum2s(vector int a, vector int b) 8043 { 8044 return __builtin_altivec_vsum2sws(a, b); 8045 } 8046 8047 /* vec_vsum2sws */ 8048 8049 static vector signed int __attribute__((__always_inline__)) 8050 vec_vsum2sws(vector int a, vector int b) 8051 { 8052 return __builtin_altivec_vsum2sws(a, b); 8053 } 8054 8055 /* vec_sums */ 8056 8057 static vector signed int __attribute__((__always_inline__)) 8058 vec_sums(vector signed int a, vector signed int b) 8059 { 8060 return __builtin_altivec_vsumsws(a, b); 8061 } 8062 8063 /* vec_vsumsws */ 8064 8065 static vector signed int __attribute__((__always_inline__)) 8066 vec_vsumsws(vector signed int a, vector signed int b) 8067 { 8068 return __builtin_altivec_vsumsws(a, b); 8069 } 8070 8071 /* vec_trunc */ 8072 8073 static vector float __attribute__((__always_inline__)) 8074 vec_trunc(vector float a) 8075 { 8076 return __builtin_altivec_vrfiz(a); 8077 } 8078 8079 /* vec_vrfiz */ 8080 8081 static vector float __attribute__((__always_inline__)) 8082 vec_vrfiz(vector float a) 8083 { 8084 return __builtin_altivec_vrfiz(a); 8085 } 8086 8087 /* vec_unpackh */ 8088 8089 static vector short __ATTRS_o_ai 8090 vec_unpackh(vector signed char a) 8091 { 8092 return __builtin_altivec_vupkhsb((vector char)a); 8093 } 8094 8095 static vector bool short __ATTRS_o_ai 8096 vec_unpackh(vector bool char a) 8097 { 8098 return (vector bool short)__builtin_altivec_vupkhsb((vector char)a); 8099 } 8100 8101 static vector int __ATTRS_o_ai 8102 vec_unpackh(vector short a) 8103 { 8104 return __builtin_altivec_vupkhsh(a); 8105 } 8106 8107 static vector bool int __ATTRS_o_ai 8108 vec_unpackh(vector bool short a) 8109 { 8110 return (vector bool int)__builtin_altivec_vupkhsh((vector short)a); 8111 } 8112 8113 static vector unsigned int __ATTRS_o_ai 8114 vec_unpackh(vector pixel a) 8115 { 8116 return (vector unsigned int)__builtin_altivec_vupkhsh((vector short)a); 8117 } 8118 8119 /* vec_vupkhsb */ 8120 8121 static vector short __ATTRS_o_ai 8122 vec_vupkhsb(vector signed char a) 8123 { 8124 return __builtin_altivec_vupkhsb((vector char)a); 8125 } 8126 8127 static vector bool short __ATTRS_o_ai 8128 vec_vupkhsb(vector bool char a) 8129 { 8130 return (vector bool short)__builtin_altivec_vupkhsb((vector char)a); 8131 } 8132 8133 /* vec_vupkhsh */ 8134 8135 static vector int __ATTRS_o_ai 8136 vec_vupkhsh(vector short a) 8137 { 8138 return __builtin_altivec_vupkhsh(a); 8139 } 8140 8141 static vector bool int __ATTRS_o_ai 8142 vec_vupkhsh(vector bool short a) 8143 { 8144 return (vector bool int)__builtin_altivec_vupkhsh((vector short)a); 8145 } 8146 8147 static vector unsigned int __ATTRS_o_ai 8148 vec_vupkhsh(vector pixel a) 8149 { 8150 return (vector unsigned int)__builtin_altivec_vupkhsh((vector short)a); 8151 } 8152 8153 /* vec_unpackl */ 8154 8155 static vector short __ATTRS_o_ai 8156 vec_unpackl(vector signed char a) 8157 { 8158 return __builtin_altivec_vupklsb((vector char)a); 8159 } 8160 8161 static vector bool short __ATTRS_o_ai 8162 vec_unpackl(vector bool char a) 8163 { 8164 return (vector bool short)__builtin_altivec_vupklsb((vector char)a); 8165 } 8166 8167 static vector int __ATTRS_o_ai 8168 vec_unpackl(vector short a) 8169 { 8170 return __builtin_altivec_vupklsh(a); 8171 } 8172 8173 static vector bool int __ATTRS_o_ai 8174 vec_unpackl(vector bool short a) 8175 { 8176 return (vector bool int)__builtin_altivec_vupklsh((vector short)a); 8177 } 8178 8179 static vector unsigned int __ATTRS_o_ai 8180 vec_unpackl(vector pixel a) 8181 { 8182 return (vector unsigned int)__builtin_altivec_vupklsh((vector short)a); 8183 } 8184 8185 /* vec_vupklsb */ 8186 8187 static vector short __ATTRS_o_ai 8188 vec_vupklsb(vector signed char a) 8189 { 8190 return __builtin_altivec_vupklsb((vector char)a); 8191 } 8192 8193 static vector bool short __ATTRS_o_ai 8194 vec_vupklsb(vector bool char a) 8195 { 8196 return (vector bool short)__builtin_altivec_vupklsb((vector char)a); 8197 } 8198 8199 /* vec_vupklsh */ 8200 8201 static vector int __ATTRS_o_ai 8202 vec_vupklsh(vector short a) 8203 { 8204 return __builtin_altivec_vupklsh(a); 8205 } 8206 8207 static vector bool int __ATTRS_o_ai 8208 vec_vupklsh(vector bool short a) 8209 { 8210 return (vector bool int)__builtin_altivec_vupklsh((vector short)a); 8211 } 8212 8213 static vector unsigned int __ATTRS_o_ai 8214 vec_vupklsh(vector pixel a) 8215 { 8216 return (vector unsigned int)__builtin_altivec_vupklsh((vector short)a); 8217 } 8218 8219 /* vec_xor */ 8220 8221 #define __builtin_altivec_vxor vec_xor 8222 8223 static vector signed char __ATTRS_o_ai 8224 vec_xor(vector signed char a, vector signed char b) 8225 { 8226 return a ^ b; 8227 } 8228 8229 static vector signed char __ATTRS_o_ai 8230 vec_xor(vector bool char a, vector signed char b) 8231 { 8232 return (vector signed char)a ^ b; 8233 } 8234 8235 static vector signed char __ATTRS_o_ai 8236 vec_xor(vector signed char a, vector bool char b) 8237 { 8238 return a ^ (vector signed char)b; 8239 } 8240 8241 static vector unsigned char __ATTRS_o_ai 8242 vec_xor(vector unsigned char a, vector unsigned char b) 8243 { 8244 return a ^ b; 8245 } 8246 8247 static vector unsigned char __ATTRS_o_ai 8248 vec_xor(vector bool char a, vector unsigned char b) 8249 { 8250 return (vector unsigned char)a ^ b; 8251 } 8252 8253 static vector unsigned char __ATTRS_o_ai 8254 vec_xor(vector unsigned char a, vector bool char b) 8255 { 8256 return a ^ (vector unsigned char)b; 8257 } 8258 8259 static vector bool char __ATTRS_o_ai 8260 vec_xor(vector bool char a, vector bool char b) 8261 { 8262 return a ^ b; 8263 } 8264 8265 static vector short __ATTRS_o_ai 8266 vec_xor(vector short a, vector short b) 8267 { 8268 return a ^ b; 8269 } 8270 8271 static vector short __ATTRS_o_ai 8272 vec_xor(vector bool short a, vector short b) 8273 { 8274 return (vector short)a ^ b; 8275 } 8276 8277 static vector short __ATTRS_o_ai 8278 vec_xor(vector short a, vector bool short b) 8279 { 8280 return a ^ (vector short)b; 8281 } 8282 8283 static vector unsigned short __ATTRS_o_ai 8284 vec_xor(vector unsigned short a, vector unsigned short b) 8285 { 8286 return a ^ b; 8287 } 8288 8289 static vector unsigned short __ATTRS_o_ai 8290 vec_xor(vector bool short a, vector unsigned short b) 8291 { 8292 return (vector unsigned short)a ^ b; 8293 } 8294 8295 static vector unsigned short __ATTRS_o_ai 8296 vec_xor(vector unsigned short a, vector bool short b) 8297 { 8298 return a ^ (vector unsigned short)b; 8299 } 8300 8301 static vector bool short __ATTRS_o_ai 8302 vec_xor(vector bool short a, vector bool short b) 8303 { 8304 return a ^ b; 8305 } 8306 8307 static vector int __ATTRS_o_ai 8308 vec_xor(vector int a, vector int b) 8309 { 8310 return a ^ b; 8311 } 8312 8313 static vector int __ATTRS_o_ai 8314 vec_xor(vector bool int a, vector int b) 8315 { 8316 return (vector int)a ^ b; 8317 } 8318 8319 static vector int __ATTRS_o_ai 8320 vec_xor(vector int a, vector bool int b) 8321 { 8322 return a ^ (vector int)b; 8323 } 8324 8325 static vector unsigned int __ATTRS_o_ai 8326 vec_xor(vector unsigned int a, vector unsigned int b) 8327 { 8328 return a ^ b; 8329 } 8330 8331 static vector unsigned int __ATTRS_o_ai 8332 vec_xor(vector bool int a, vector unsigned int b) 8333 { 8334 return (vector unsigned int)a ^ b; 8335 } 8336 8337 static vector unsigned int __ATTRS_o_ai 8338 vec_xor(vector unsigned int a, vector bool int b) 8339 { 8340 return a ^ (vector unsigned int)b; 8341 } 8342 8343 static vector bool int __ATTRS_o_ai 8344 vec_xor(vector bool int a, vector bool int b) 8345 { 8346 return a ^ b; 8347 } 8348 8349 static vector float __ATTRS_o_ai 8350 vec_xor(vector float a, vector float b) 8351 { 8352 vector unsigned int res = (vector unsigned int)a ^ (vector unsigned int)b; 8353 return (vector float)res; 8354 } 8355 8356 static vector float __ATTRS_o_ai 8357 vec_xor(vector bool int a, vector float b) 8358 { 8359 vector unsigned int res = (vector unsigned int)a ^ (vector unsigned int)b; 8360 return (vector float)res; 8361 } 8362 8363 static vector float __ATTRS_o_ai 8364 vec_xor(vector float a, vector bool int b) 8365 { 8366 vector unsigned int res = (vector unsigned int)a ^ (vector unsigned int)b; 8367 return (vector float)res; 8368 } 8369 8370 /* vec_vxor */ 8371 8372 static vector signed char __ATTRS_o_ai 8373 vec_vxor(vector signed char a, vector signed char b) 8374 { 8375 return a ^ b; 8376 } 8377 8378 static vector signed char __ATTRS_o_ai 8379 vec_vxor(vector bool char a, vector signed char b) 8380 { 8381 return (vector signed char)a ^ b; 8382 } 8383 8384 static vector signed char __ATTRS_o_ai 8385 vec_vxor(vector signed char a, vector bool char b) 8386 { 8387 return a ^ (vector signed char)b; 8388 } 8389 8390 static vector unsigned char __ATTRS_o_ai 8391 vec_vxor(vector unsigned char a, vector unsigned char b) 8392 { 8393 return a ^ b; 8394 } 8395 8396 static vector unsigned char __ATTRS_o_ai 8397 vec_vxor(vector bool char a, vector unsigned char b) 8398 { 8399 return (vector unsigned char)a ^ b; 8400 } 8401 8402 static vector unsigned char __ATTRS_o_ai 8403 vec_vxor(vector unsigned char a, vector bool char b) 8404 { 8405 return a ^ (vector unsigned char)b; 8406 } 8407 8408 static vector bool char __ATTRS_o_ai 8409 vec_vxor(vector bool char a, vector bool char b) 8410 { 8411 return a ^ b; 8412 } 8413 8414 static vector short __ATTRS_o_ai 8415 vec_vxor(vector short a, vector short b) 8416 { 8417 return a ^ b; 8418 } 8419 8420 static vector short __ATTRS_o_ai 8421 vec_vxor(vector bool short a, vector short b) 8422 { 8423 return (vector short)a ^ b; 8424 } 8425 8426 static vector short __ATTRS_o_ai 8427 vec_vxor(vector short a, vector bool short b) 8428 { 8429 return a ^ (vector short)b; 8430 } 8431 8432 static vector unsigned short __ATTRS_o_ai 8433 vec_vxor(vector unsigned short a, vector unsigned short b) 8434 { 8435 return a ^ b; 8436 } 8437 8438 static vector unsigned short __ATTRS_o_ai 8439 vec_vxor(vector bool short a, vector unsigned short b) 8440 { 8441 return (vector unsigned short)a ^ b; 8442 } 8443 8444 static vector unsigned short __ATTRS_o_ai 8445 vec_vxor(vector unsigned short a, vector bool short b) 8446 { 8447 return a ^ (vector unsigned short)b; 8448 } 8449 8450 static vector bool short __ATTRS_o_ai 8451 vec_vxor(vector bool short a, vector bool short b) 8452 { 8453 return a ^ b; 8454 } 8455 8456 static vector int __ATTRS_o_ai 8457 vec_vxor(vector int a, vector int b) 8458 { 8459 return a ^ b; 8460 } 8461 8462 static vector int __ATTRS_o_ai 8463 vec_vxor(vector bool int a, vector int b) 8464 { 8465 return (vector int)a ^ b; 8466 } 8467 8468 static vector int __ATTRS_o_ai 8469 vec_vxor(vector int a, vector bool int b) 8470 { 8471 return a ^ (vector int)b; 8472 } 8473 8474 static vector unsigned int __ATTRS_o_ai 8475 vec_vxor(vector unsigned int a, vector unsigned int b) 8476 { 8477 return a ^ b; 8478 } 8479 8480 static vector unsigned int __ATTRS_o_ai 8481 vec_vxor(vector bool int a, vector unsigned int b) 8482 { 8483 return (vector unsigned int)a ^ b; 8484 } 8485 8486 static vector unsigned int __ATTRS_o_ai 8487 vec_vxor(vector unsigned int a, vector bool int b) 8488 { 8489 return a ^ (vector unsigned int)b; 8490 } 8491 8492 static vector bool int __ATTRS_o_ai 8493 vec_vxor(vector bool int a, vector bool int b) 8494 { 8495 return a ^ b; 8496 } 8497 8498 static vector float __ATTRS_o_ai 8499 vec_vxor(vector float a, vector float b) 8500 { 8501 vector unsigned int res = (vector unsigned int)a ^ (vector unsigned int)b; 8502 return (vector float)res; 8503 } 8504 8505 static vector float __ATTRS_o_ai 8506 vec_vxor(vector bool int a, vector float b) 8507 { 8508 vector unsigned int res = (vector unsigned int)a ^ (vector unsigned int)b; 8509 return (vector float)res; 8510 } 8511 8512 static vector float __ATTRS_o_ai 8513 vec_vxor(vector float a, vector bool int b) 8514 { 8515 vector unsigned int res = (vector unsigned int)a ^ (vector unsigned int)b; 8516 return (vector float)res; 8517 } 8518 8519 /* ------------------------ extensions for CBEA ----------------------------- */ 8520 8521 /* vec_extract */ 8522 8523 static signed char __ATTRS_o_ai 8524 vec_extract(vector signed char a, int b) 8525 { 8526 return a[b]; 8527 } 8528 8529 static unsigned char __ATTRS_o_ai 8530 vec_extract(vector unsigned char a, int b) 8531 { 8532 return a[b]; 8533 } 8534 8535 static short __ATTRS_o_ai 8536 vec_extract(vector short a, int b) 8537 { 8538 return a[b]; 8539 } 8540 8541 static unsigned short __ATTRS_o_ai 8542 vec_extract(vector unsigned short a, int b) 8543 { 8544 return a[b]; 8545 } 8546 8547 static int __ATTRS_o_ai 8548 vec_extract(vector int a, int b) 8549 { 8550 return a[b]; 8551 } 8552 8553 static unsigned int __ATTRS_o_ai 8554 vec_extract(vector unsigned int a, int b) 8555 { 8556 return a[b]; 8557 } 8558 8559 static float __ATTRS_o_ai 8560 vec_extract(vector float a, int b) 8561 { 8562 return a[b]; 8563 } 8564 8565 /* vec_insert */ 8566 8567 static vector signed char __ATTRS_o_ai 8568 vec_insert(signed char a, vector signed char b, int c) 8569 { 8570 b[c] = a; 8571 return b; 8572 } 8573 8574 static vector unsigned char __ATTRS_o_ai 8575 vec_insert(unsigned char a, vector unsigned char b, int c) 8576 { 8577 b[c] = a; 8578 return b; 8579 } 8580 8581 static vector short __ATTRS_o_ai 8582 vec_insert(short a, vector short b, int c) 8583 { 8584 b[c] = a; 8585 return b; 8586 } 8587 8588 static vector unsigned short __ATTRS_o_ai 8589 vec_insert(unsigned short a, vector unsigned short b, int c) 8590 { 8591 b[c] = a; 8592 return b; 8593 } 8594 8595 static vector int __ATTRS_o_ai 8596 vec_insert(int a, vector int b, int c) 8597 { 8598 b[c] = a; 8599 return b; 8600 } 8601 8602 static vector unsigned int __ATTRS_o_ai 8603 vec_insert(unsigned int a, vector unsigned int b, int c) 8604 { 8605 b[c] = a; 8606 return b; 8607 } 8608 8609 static vector float __ATTRS_o_ai 8610 vec_insert(float a, vector float b, int c) 8611 { 8612 b[c] = a; 8613 return b; 8614 } 8615 8616 /* vec_lvlx */ 8617 8618 static vector signed char __ATTRS_o_ai 8619 vec_lvlx(int a, signed char *b) 8620 { 8621 return vec_perm(vec_ld(a, b), 8622 (vector signed char)(0), 8623 vec_lvsl(a, b)); 8624 } 8625 8626 static vector signed char __ATTRS_o_ai 8627 vec_lvlx(int a, vector signed char *b) 8628 { 8629 return vec_perm(vec_ld(a, b), 8630 (vector signed char)(0), 8631 vec_lvsl(a, (unsigned char *)b)); 8632 } 8633 8634 static vector unsigned char __ATTRS_o_ai 8635 vec_lvlx(int a, unsigned char *b) 8636 { 8637 return vec_perm(vec_ld(a, b), 8638 (vector unsigned char)(0), 8639 vec_lvsl(a, b)); 8640 } 8641 8642 static vector unsigned char __ATTRS_o_ai 8643 vec_lvlx(int a, vector unsigned char *b) 8644 { 8645 return vec_perm(vec_ld(a, b), 8646 (vector unsigned char)(0), 8647 vec_lvsl(a, (unsigned char *)b)); 8648 } 8649 8650 static vector bool char __ATTRS_o_ai 8651 vec_lvlx(int a, vector bool char *b) 8652 { 8653 return vec_perm(vec_ld(a, b), 8654 (vector bool char)(0), 8655 vec_lvsl(a, (unsigned char *)b)); 8656 } 8657 8658 static vector short __ATTRS_o_ai 8659 vec_lvlx(int a, short *b) 8660 { 8661 return vec_perm(vec_ld(a, b), 8662 (vector short)(0), 8663 vec_lvsl(a, b)); 8664 } 8665 8666 static vector short __ATTRS_o_ai 8667 vec_lvlx(int a, vector short *b) 8668 { 8669 return vec_perm(vec_ld(a, b), 8670 (vector short)(0), 8671 vec_lvsl(a, (unsigned char *)b)); 8672 } 8673 8674 static vector unsigned short __ATTRS_o_ai 8675 vec_lvlx(int a, unsigned short *b) 8676 { 8677 return vec_perm(vec_ld(a, b), 8678 (vector unsigned short)(0), 8679 vec_lvsl(a, b)); 8680 } 8681 8682 static vector unsigned short __ATTRS_o_ai 8683 vec_lvlx(int a, vector unsigned short *b) 8684 { 8685 return vec_perm(vec_ld(a, b), 8686 (vector unsigned short)(0), 8687 vec_lvsl(a, (unsigned char *)b)); 8688 } 8689 8690 static vector bool short __ATTRS_o_ai 8691 vec_lvlx(int a, vector bool short *b) 8692 { 8693 return vec_perm(vec_ld(a, b), 8694 (vector bool short)(0), 8695 vec_lvsl(a, (unsigned char *)b)); 8696 } 8697 8698 static vector pixel __ATTRS_o_ai 8699 vec_lvlx(int a, vector pixel *b) 8700 { 8701 return vec_perm(vec_ld(a, b), 8702 (vector pixel)(0), 8703 vec_lvsl(a, (unsigned char *)b)); 8704 } 8705 8706 static vector int __ATTRS_o_ai 8707 vec_lvlx(int a, int *b) 8708 { 8709 return vec_perm(vec_ld(a, b), 8710 (vector int)(0), 8711 vec_lvsl(a, b)); 8712 } 8713 8714 static vector int __ATTRS_o_ai 8715 vec_lvlx(int a, vector int *b) 8716 { 8717 return vec_perm(vec_ld(a, b), 8718 (vector int)(0), 8719 vec_lvsl(a, (unsigned char *)b)); 8720 } 8721 8722 static vector unsigned int __ATTRS_o_ai 8723 vec_lvlx(int a, unsigned int *b) 8724 { 8725 return vec_perm(vec_ld(a, b), 8726 (vector unsigned int)(0), 8727 vec_lvsl(a, b)); 8728 } 8729 8730 static vector unsigned int __ATTRS_o_ai 8731 vec_lvlx(int a, vector unsigned int *b) 8732 { 8733 return vec_perm(vec_ld(a, b), 8734 (vector unsigned int)(0), 8735 vec_lvsl(a, (unsigned char *)b)); 8736 } 8737 8738 static vector bool int __ATTRS_o_ai 8739 vec_lvlx(int a, vector bool int *b) 8740 { 8741 return vec_perm(vec_ld(a, b), 8742 (vector bool int)(0), 8743 vec_lvsl(a, (unsigned char *)b)); 8744 } 8745 8746 static vector float __ATTRS_o_ai 8747 vec_lvlx(int a, float *b) 8748 { 8749 return vec_perm(vec_ld(a, b), 8750 (vector float)(0), 8751 vec_lvsl(a, b)); 8752 } 8753 8754 static vector float __ATTRS_o_ai 8755 vec_lvlx(int a, vector float *b) 8756 { 8757 return vec_perm(vec_ld(a, b), 8758 (vector float)(0), 8759 vec_lvsl(a, (unsigned char *)b)); 8760 } 8761 8762 /* vec_lvlxl */ 8763 8764 static vector signed char __ATTRS_o_ai 8765 vec_lvlxl(int a, signed char *b) 8766 { 8767 return vec_perm(vec_ldl(a, b), 8768 (vector signed char)(0), 8769 vec_lvsl(a, b)); 8770 } 8771 8772 static vector signed char __ATTRS_o_ai 8773 vec_lvlxl(int a, vector signed char *b) 8774 { 8775 return vec_perm(vec_ldl(a, b), 8776 (vector signed char)(0), 8777 vec_lvsl(a, (unsigned char *)b)); 8778 } 8779 8780 static vector unsigned char __ATTRS_o_ai 8781 vec_lvlxl(int a, unsigned char *b) 8782 { 8783 return vec_perm(vec_ldl(a, b), 8784 (vector unsigned char)(0), 8785 vec_lvsl(a, b)); 8786 } 8787 8788 static vector unsigned char __ATTRS_o_ai 8789 vec_lvlxl(int a, vector unsigned char *b) 8790 { 8791 return vec_perm(vec_ldl(a, b), 8792 (vector unsigned char)(0), 8793 vec_lvsl(a, (unsigned char *)b)); 8794 } 8795 8796 static vector bool char __ATTRS_o_ai 8797 vec_lvlxl(int a, vector bool char *b) 8798 { 8799 return vec_perm(vec_ldl(a, b), 8800 (vector bool char)(0), 8801 vec_lvsl(a, (unsigned char *)b)); 8802 } 8803 8804 static vector short __ATTRS_o_ai 8805 vec_lvlxl(int a, short *b) 8806 { 8807 return vec_perm(vec_ldl(a, b), 8808 (vector short)(0), 8809 vec_lvsl(a, b)); 8810 } 8811 8812 static vector short __ATTRS_o_ai 8813 vec_lvlxl(int a, vector short *b) 8814 { 8815 return vec_perm(vec_ldl(a, b), 8816 (vector short)(0), 8817 vec_lvsl(a, (unsigned char *)b)); 8818 } 8819 8820 static vector unsigned short __ATTRS_o_ai 8821 vec_lvlxl(int a, unsigned short *b) 8822 { 8823 return vec_perm(vec_ldl(a, b), 8824 (vector unsigned short)(0), 8825 vec_lvsl(a, b)); 8826 } 8827 8828 static vector unsigned short __ATTRS_o_ai 8829 vec_lvlxl(int a, vector unsigned short *b) 8830 { 8831 return vec_perm(vec_ldl(a, b), 8832 (vector unsigned short)(0), 8833 vec_lvsl(a, (unsigned char *)b)); 8834 } 8835 8836 static vector bool short __ATTRS_o_ai 8837 vec_lvlxl(int a, vector bool short *b) 8838 { 8839 return vec_perm(vec_ldl(a, b), 8840 (vector bool short)(0), 8841 vec_lvsl(a, (unsigned char *)b)); 8842 } 8843 8844 static vector pixel __ATTRS_o_ai 8845 vec_lvlxl(int a, vector pixel *b) 8846 { 8847 return vec_perm(vec_ldl(a, b), 8848 (vector pixel)(0), 8849 vec_lvsl(a, (unsigned char *)b)); 8850 } 8851 8852 static vector int __ATTRS_o_ai 8853 vec_lvlxl(int a, int *b) 8854 { 8855 return vec_perm(vec_ldl(a, b), 8856 (vector int)(0), 8857 vec_lvsl(a, b)); 8858 } 8859 8860 static vector int __ATTRS_o_ai 8861 vec_lvlxl(int a, vector int *b) 8862 { 8863 return vec_perm(vec_ldl(a, b), 8864 (vector int)(0), 8865 vec_lvsl(a, (unsigned char *)b)); 8866 } 8867 8868 static vector unsigned int __ATTRS_o_ai 8869 vec_lvlxl(int a, unsigned int *b) 8870 { 8871 return vec_perm(vec_ldl(a, b), 8872 (vector unsigned int)(0), 8873 vec_lvsl(a, b)); 8874 } 8875 8876 static vector unsigned int __ATTRS_o_ai 8877 vec_lvlxl(int a, vector unsigned int *b) 8878 { 8879 return vec_perm(vec_ldl(a, b), 8880 (vector unsigned int)(0), 8881 vec_lvsl(a, (unsigned char *)b)); 8882 } 8883 8884 static vector bool int __ATTRS_o_ai 8885 vec_lvlxl(int a, vector bool int *b) 8886 { 8887 return vec_perm(vec_ldl(a, b), 8888 (vector bool int)(0), 8889 vec_lvsl(a, (unsigned char *)b)); 8890 } 8891 8892 static vector float __ATTRS_o_ai 8893 vec_lvlxl(int a, float *b) 8894 { 8895 return vec_perm(vec_ldl(a, b), 8896 (vector float)(0), 8897 vec_lvsl(a, b)); 8898 } 8899 8900 static vector float __ATTRS_o_ai 8901 vec_lvlxl(int a, vector float *b) 8902 { 8903 return vec_perm(vec_ldl(a, b), 8904 (vector float)(0), 8905 vec_lvsl(a, (unsigned char *)b)); 8906 } 8907 8908 /* vec_lvrx */ 8909 8910 static vector signed char __ATTRS_o_ai 8911 vec_lvrx(int a, signed char *b) 8912 { 8913 return vec_perm((vector signed char)(0), 8914 vec_ld(a, b), 8915 vec_lvsl(a, b)); 8916 } 8917 8918 static vector signed char __ATTRS_o_ai 8919 vec_lvrx(int a, vector signed char *b) 8920 { 8921 return vec_perm((vector signed char)(0), 8922 vec_ld(a, b), 8923 vec_lvsl(a, (unsigned char *)b)); 8924 } 8925 8926 static vector unsigned char __ATTRS_o_ai 8927 vec_lvrx(int a, unsigned char *b) 8928 { 8929 return vec_perm((vector unsigned char)(0), 8930 vec_ld(a, b), 8931 vec_lvsl(a, b)); 8932 } 8933 8934 static vector unsigned char __ATTRS_o_ai 8935 vec_lvrx(int a, vector unsigned char *b) 8936 { 8937 return vec_perm((vector unsigned char)(0), 8938 vec_ld(a, b), 8939 vec_lvsl(a, (unsigned char *)b)); 8940 } 8941 8942 static vector bool char __ATTRS_o_ai 8943 vec_lvrx(int a, vector bool char *b) 8944 { 8945 return vec_perm((vector bool char)(0), 8946 vec_ld(a, b), 8947 vec_lvsl(a, (unsigned char *)b)); 8948 } 8949 8950 static vector short __ATTRS_o_ai 8951 vec_lvrx(int a, short *b) 8952 { 8953 return vec_perm((vector short)(0), 8954 vec_ld(a, b), 8955 vec_lvsl(a, b)); 8956 } 8957 8958 static vector short __ATTRS_o_ai 8959 vec_lvrx(int a, vector short *b) 8960 { 8961 return vec_perm((vector short)(0), 8962 vec_ld(a, b), 8963 vec_lvsl(a, (unsigned char *)b)); 8964 } 8965 8966 static vector unsigned short __ATTRS_o_ai 8967 vec_lvrx(int a, unsigned short *b) 8968 { 8969 return vec_perm((vector unsigned short)(0), 8970 vec_ld(a, b), 8971 vec_lvsl(a, b)); 8972 } 8973 8974 static vector unsigned short __ATTRS_o_ai 8975 vec_lvrx(int a, vector unsigned short *b) 8976 { 8977 return vec_perm((vector unsigned short)(0), 8978 vec_ld(a, b), 8979 vec_lvsl(a, (unsigned char *)b)); 8980 } 8981 8982 static vector bool short __ATTRS_o_ai 8983 vec_lvrx(int a, vector bool short *b) 8984 { 8985 return vec_perm((vector bool short)(0), 8986 vec_ld(a, b), 8987 vec_lvsl(a, (unsigned char *)b)); 8988 } 8989 8990 static vector pixel __ATTRS_o_ai 8991 vec_lvrx(int a, vector pixel *b) 8992 { 8993 return vec_perm((vector pixel)(0), 8994 vec_ld(a, b), 8995 vec_lvsl(a, (unsigned char *)b)); 8996 } 8997 8998 static vector int __ATTRS_o_ai 8999 vec_lvrx(int a, int *b) 9000 { 9001 return vec_perm((vector int)(0), 9002 vec_ld(a, b), 9003 vec_lvsl(a, b)); 9004 } 9005 9006 static vector int __ATTRS_o_ai 9007 vec_lvrx(int a, vector int *b) 9008 { 9009 return vec_perm((vector int)(0), 9010 vec_ld(a, b), 9011 vec_lvsl(a, (unsigned char *)b)); 9012 } 9013 9014 static vector unsigned int __ATTRS_o_ai 9015 vec_lvrx(int a, unsigned int *b) 9016 { 9017 return vec_perm((vector unsigned int)(0), 9018 vec_ld(a, b), 9019 vec_lvsl(a, b)); 9020 } 9021 9022 static vector unsigned int __ATTRS_o_ai 9023 vec_lvrx(int a, vector unsigned int *b) 9024 { 9025 return vec_perm((vector unsigned int)(0), 9026 vec_ld(a, b), 9027 vec_lvsl(a, (unsigned char *)b)); 9028 } 9029 9030 static vector bool int __ATTRS_o_ai 9031 vec_lvrx(int a, vector bool int *b) 9032 { 9033 return vec_perm((vector bool int)(0), 9034 vec_ld(a, b), 9035 vec_lvsl(a, (unsigned char *)b)); 9036 } 9037 9038 static vector float __ATTRS_o_ai 9039 vec_lvrx(int a, float *b) 9040 { 9041 return vec_perm((vector float)(0), 9042 vec_ld(a, b), 9043 vec_lvsl(a, b)); 9044 } 9045 9046 static vector float __ATTRS_o_ai 9047 vec_lvrx(int a, vector float *b) 9048 { 9049 return vec_perm((vector float)(0), 9050 vec_ld(a, b), 9051 vec_lvsl(a, (unsigned char *)b)); 9052 } 9053 9054 /* vec_lvrxl */ 9055 9056 static vector signed char __ATTRS_o_ai 9057 vec_lvrxl(int a, signed char *b) 9058 { 9059 return vec_perm((vector signed char)(0), 9060 vec_ldl(a, b), 9061 vec_lvsl(a, b)); 9062 } 9063 9064 static vector signed char __ATTRS_o_ai 9065 vec_lvrxl(int a, vector signed char *b) 9066 { 9067 return vec_perm((vector signed char)(0), 9068 vec_ldl(a, b), 9069 vec_lvsl(a, (unsigned char *)b)); 9070 } 9071 9072 static vector unsigned char __ATTRS_o_ai 9073 vec_lvrxl(int a, unsigned char *b) 9074 { 9075 return vec_perm((vector unsigned char)(0), 9076 vec_ldl(a, b), 9077 vec_lvsl(a, b)); 9078 } 9079 9080 static vector unsigned char __ATTRS_o_ai 9081 vec_lvrxl(int a, vector unsigned char *b) 9082 { 9083 return vec_perm((vector unsigned char)(0), 9084 vec_ldl(a, b), 9085 vec_lvsl(a, (unsigned char *)b)); 9086 } 9087 9088 static vector bool char __ATTRS_o_ai 9089 vec_lvrxl(int a, vector bool char *b) 9090 { 9091 return vec_perm((vector bool char)(0), 9092 vec_ldl(a, b), 9093 vec_lvsl(a, (unsigned char *)b)); 9094 } 9095 9096 static vector short __ATTRS_o_ai 9097 vec_lvrxl(int a, short *b) 9098 { 9099 return vec_perm((vector short)(0), 9100 vec_ldl(a, b), 9101 vec_lvsl(a, b)); 9102 } 9103 9104 static vector short __ATTRS_o_ai 9105 vec_lvrxl(int a, vector short *b) 9106 { 9107 return vec_perm((vector short)(0), 9108 vec_ldl(a, b), 9109 vec_lvsl(a, (unsigned char *)b)); 9110 } 9111 9112 static vector unsigned short __ATTRS_o_ai 9113 vec_lvrxl(int a, unsigned short *b) 9114 { 9115 return vec_perm((vector unsigned short)(0), 9116 vec_ldl(a, b), 9117 vec_lvsl(a, b)); 9118 } 9119 9120 static vector unsigned short __ATTRS_o_ai 9121 vec_lvrxl(int a, vector unsigned short *b) 9122 { 9123 return vec_perm((vector unsigned short)(0), 9124 vec_ldl(a, b), 9125 vec_lvsl(a, (unsigned char *)b)); 9126 } 9127 9128 static vector bool short __ATTRS_o_ai 9129 vec_lvrxl(int a, vector bool short *b) 9130 { 9131 return vec_perm((vector bool short)(0), 9132 vec_ldl(a, b), 9133 vec_lvsl(a, (unsigned char *)b)); 9134 } 9135 9136 static vector pixel __ATTRS_o_ai 9137 vec_lvrxl(int a, vector pixel *b) 9138 { 9139 return vec_perm((vector pixel)(0), 9140 vec_ldl(a, b), 9141 vec_lvsl(a, (unsigned char *)b)); 9142 } 9143 9144 static vector int __ATTRS_o_ai 9145 vec_lvrxl(int a, int *b) 9146 { 9147 return vec_perm((vector int)(0), 9148 vec_ldl(a, b), 9149 vec_lvsl(a, b)); 9150 } 9151 9152 static vector int __ATTRS_o_ai 9153 vec_lvrxl(int a, vector int *b) 9154 { 9155 return vec_perm((vector int)(0), 9156 vec_ldl(a, b), 9157 vec_lvsl(a, (unsigned char *)b)); 9158 } 9159 9160 static vector unsigned int __ATTRS_o_ai 9161 vec_lvrxl(int a, unsigned int *b) 9162 { 9163 return vec_perm((vector unsigned int)(0), 9164 vec_ldl(a, b), 9165 vec_lvsl(a, b)); 9166 } 9167 9168 static vector unsigned int __ATTRS_o_ai 9169 vec_lvrxl(int a, vector unsigned int *b) 9170 { 9171 return vec_perm((vector unsigned int)(0), 9172 vec_ldl(a, b), 9173 vec_lvsl(a, (unsigned char *)b)); 9174 } 9175 9176 static vector bool int __ATTRS_o_ai 9177 vec_lvrxl(int a, vector bool int *b) 9178 { 9179 return vec_perm((vector bool int)(0), 9180 vec_ldl(a, b), 9181 vec_lvsl(a, (unsigned char *)b)); 9182 } 9183 9184 static vector float __ATTRS_o_ai 9185 vec_lvrxl(int a, float *b) 9186 { 9187 return vec_perm((vector float)(0), 9188 vec_ldl(a, b), 9189 vec_lvsl(a, b)); 9190 } 9191 9192 static vector float __ATTRS_o_ai 9193 vec_lvrxl(int a, vector float *b) 9194 { 9195 return vec_perm((vector float)(0), 9196 vec_ldl(a, b), 9197 vec_lvsl(a, (unsigned char *)b)); 9198 } 9199 9200 /* vec_stvlx */ 9201 9202 static void __ATTRS_o_ai 9203 vec_stvlx(vector signed char a, int b, signed char *c) 9204 { 9205 return vec_st(vec_perm(vec_lvrx(b, c), 9206 a, 9207 vec_lvsr(b, c)), 9208 b, c); 9209 } 9210 9211 static void __ATTRS_o_ai 9212 vec_stvlx(vector signed char a, int b, vector signed char *c) 9213 { 9214 return vec_st(vec_perm(vec_lvrx(b, c), 9215 a, 9216 vec_lvsr(b, (unsigned char *)c)), 9217 b, c); 9218 } 9219 9220 static void __ATTRS_o_ai 9221 vec_stvlx(vector unsigned char a, int b, unsigned char *c) 9222 { 9223 return vec_st(vec_perm(vec_lvrx(b, c), 9224 a, 9225 vec_lvsr(b, c)), 9226 b, c); 9227 } 9228 9229 static void __ATTRS_o_ai 9230 vec_stvlx(vector unsigned char a, int b, vector unsigned char *c) 9231 { 9232 return vec_st(vec_perm(vec_lvrx(b, c), 9233 a, 9234 vec_lvsr(b, (unsigned char *)c)), 9235 b, c); 9236 } 9237 9238 static void __ATTRS_o_ai 9239 vec_stvlx(vector bool char a, int b, vector bool char *c) 9240 { 9241 return vec_st(vec_perm(vec_lvrx(b, c), 9242 a, 9243 vec_lvsr(b, (unsigned char *)c)), 9244 b, c); 9245 } 9246 9247 static void __ATTRS_o_ai 9248 vec_stvlx(vector short a, int b, short *c) 9249 { 9250 return vec_st(vec_perm(vec_lvrx(b, c), 9251 a, 9252 vec_lvsr(b, c)), 9253 b, c); 9254 } 9255 9256 static void __ATTRS_o_ai 9257 vec_stvlx(vector short a, int b, vector short *c) 9258 { 9259 return vec_st(vec_perm(vec_lvrx(b, c), 9260 a, 9261 vec_lvsr(b, (unsigned char *)c)), 9262 b, c); 9263 } 9264 9265 static void __ATTRS_o_ai 9266 vec_stvlx(vector unsigned short a, int b, unsigned short *c) 9267 { 9268 return vec_st(vec_perm(vec_lvrx(b, c), 9269 a, 9270 vec_lvsr(b, c)), 9271 b, c); 9272 } 9273 9274 static void __ATTRS_o_ai 9275 vec_stvlx(vector unsigned short a, int b, vector unsigned short *c) 9276 { 9277 return vec_st(vec_perm(vec_lvrx(b, c), 9278 a, 9279 vec_lvsr(b, (unsigned char *)c)), 9280 b, c); 9281 } 9282 9283 static void __ATTRS_o_ai 9284 vec_stvlx(vector bool short a, int b, vector bool short *c) 9285 { 9286 return vec_st(vec_perm(vec_lvrx(b, c), 9287 a, 9288 vec_lvsr(b, (unsigned char *)c)), 9289 b, c); 9290 } 9291 9292 static void __ATTRS_o_ai 9293 vec_stvlx(vector pixel a, int b, vector pixel *c) 9294 { 9295 return vec_st(vec_perm(vec_lvrx(b, c), 9296 a, 9297 vec_lvsr(b, (unsigned char *)c)), 9298 b, c); 9299 } 9300 9301 static void __ATTRS_o_ai 9302 vec_stvlx(vector int a, int b, int *c) 9303 { 9304 return vec_st(vec_perm(vec_lvrx(b, c), 9305 a, 9306 vec_lvsr(b, c)), 9307 b, c); 9308 } 9309 9310 static void __ATTRS_o_ai 9311 vec_stvlx(vector int a, int b, vector int *c) 9312 { 9313 return vec_st(vec_perm(vec_lvrx(b, c), 9314 a, 9315 vec_lvsr(b, (unsigned char *)c)), 9316 b, c); 9317 } 9318 9319 static void __ATTRS_o_ai 9320 vec_stvlx(vector unsigned int a, int b, unsigned int *c) 9321 { 9322 return vec_st(vec_perm(vec_lvrx(b, c), 9323 a, 9324 vec_lvsr(b, c)), 9325 b, c); 9326 } 9327 9328 static void __ATTRS_o_ai 9329 vec_stvlx(vector unsigned int a, int b, vector unsigned int *c) 9330 { 9331 return vec_st(vec_perm(vec_lvrx(b, c), 9332 a, 9333 vec_lvsr(b, (unsigned char *)c)), 9334 b, c); 9335 } 9336 9337 static void __ATTRS_o_ai 9338 vec_stvlx(vector bool int a, int b, vector bool int *c) 9339 { 9340 return vec_st(vec_perm(vec_lvrx(b, c), 9341 a, 9342 vec_lvsr(b, (unsigned char *)c)), 9343 b, c); 9344 } 9345 9346 static void __ATTRS_o_ai 9347 vec_stvlx(vector float a, int b, vector float *c) 9348 { 9349 return vec_st(vec_perm(vec_lvrx(b, c), 9350 a, 9351 vec_lvsr(b, (unsigned char *)c)), 9352 b, c); 9353 } 9354 9355 /* vec_stvlxl */ 9356 9357 static void __ATTRS_o_ai 9358 vec_stvlxl(vector signed char a, int b, signed char *c) 9359 { 9360 return vec_stl(vec_perm(vec_lvrx(b, c), 9361 a, 9362 vec_lvsr(b, c)), 9363 b, c); 9364 } 9365 9366 static void __ATTRS_o_ai 9367 vec_stvlxl(vector signed char a, int b, vector signed char *c) 9368 { 9369 return vec_stl(vec_perm(vec_lvrx(b, c), 9370 a, 9371 vec_lvsr(b, (unsigned char *)c)), 9372 b, c); 9373 } 9374 9375 static void __ATTRS_o_ai 9376 vec_stvlxl(vector unsigned char a, int b, unsigned char *c) 9377 { 9378 return vec_stl(vec_perm(vec_lvrx(b, c), 9379 a, 9380 vec_lvsr(b, c)), 9381 b, c); 9382 } 9383 9384 static void __ATTRS_o_ai 9385 vec_stvlxl(vector unsigned char a, int b, vector unsigned char *c) 9386 { 9387 return vec_stl(vec_perm(vec_lvrx(b, c), 9388 a, 9389 vec_lvsr(b, (unsigned char *)c)), 9390 b, c); 9391 } 9392 9393 static void __ATTRS_o_ai 9394 vec_stvlxl(vector bool char a, int b, vector bool char *c) 9395 { 9396 return vec_stl(vec_perm(vec_lvrx(b, c), 9397 a, 9398 vec_lvsr(b, (unsigned char *)c)), 9399 b, c); 9400 } 9401 9402 static void __ATTRS_o_ai 9403 vec_stvlxl(vector short a, int b, short *c) 9404 { 9405 return vec_stl(vec_perm(vec_lvrx(b, c), 9406 a, 9407 vec_lvsr(b, c)), 9408 b, c); 9409 } 9410 9411 static void __ATTRS_o_ai 9412 vec_stvlxl(vector short a, int b, vector short *c) 9413 { 9414 return vec_stl(vec_perm(vec_lvrx(b, c), 9415 a, 9416 vec_lvsr(b, (unsigned char *)c)), 9417 b, c); 9418 } 9419 9420 static void __ATTRS_o_ai 9421 vec_stvlxl(vector unsigned short a, int b, unsigned short *c) 9422 { 9423 return vec_stl(vec_perm(vec_lvrx(b, c), 9424 a, 9425 vec_lvsr(b, c)), 9426 b, c); 9427 } 9428 9429 static void __ATTRS_o_ai 9430 vec_stvlxl(vector unsigned short a, int b, vector unsigned short *c) 9431 { 9432 return vec_stl(vec_perm(vec_lvrx(b, c), 9433 a, 9434 vec_lvsr(b, (unsigned char *)c)), 9435 b, c); 9436 } 9437 9438 static void __ATTRS_o_ai 9439 vec_stvlxl(vector bool short a, int b, vector bool short *c) 9440 { 9441 return vec_stl(vec_perm(vec_lvrx(b, c), 9442 a, 9443 vec_lvsr(b, (unsigned char *)c)), 9444 b, c); 9445 } 9446 9447 static void __ATTRS_o_ai 9448 vec_stvlxl(vector pixel a, int b, vector pixel *c) 9449 { 9450 return vec_stl(vec_perm(vec_lvrx(b, c), 9451 a, 9452 vec_lvsr(b, (unsigned char *)c)), 9453 b, c); 9454 } 9455 9456 static void __ATTRS_o_ai 9457 vec_stvlxl(vector int a, int b, int *c) 9458 { 9459 return vec_stl(vec_perm(vec_lvrx(b, c), 9460 a, 9461 vec_lvsr(b, c)), 9462 b, c); 9463 } 9464 9465 static void __ATTRS_o_ai 9466 vec_stvlxl(vector int a, int b, vector int *c) 9467 { 9468 return vec_stl(vec_perm(vec_lvrx(b, c), 9469 a, 9470 vec_lvsr(b, (unsigned char *)c)), 9471 b, c); 9472 } 9473 9474 static void __ATTRS_o_ai 9475 vec_stvlxl(vector unsigned int a, int b, unsigned int *c) 9476 { 9477 return vec_stl(vec_perm(vec_lvrx(b, c), 9478 a, 9479 vec_lvsr(b, c)), 9480 b, c); 9481 } 9482 9483 static void __ATTRS_o_ai 9484 vec_stvlxl(vector unsigned int a, int b, vector unsigned int *c) 9485 { 9486 return vec_stl(vec_perm(vec_lvrx(b, c), 9487 a, 9488 vec_lvsr(b, (unsigned char *)c)), 9489 b, c); 9490 } 9491 9492 static void __ATTRS_o_ai 9493 vec_stvlxl(vector bool int a, int b, vector bool int *c) 9494 { 9495 return vec_stl(vec_perm(vec_lvrx(b, c), 9496 a, 9497 vec_lvsr(b, (unsigned char *)c)), 9498 b, c); 9499 } 9500 9501 static void __ATTRS_o_ai 9502 vec_stvlxl(vector float a, int b, vector float *c) 9503 { 9504 return vec_stl(vec_perm(vec_lvrx(b, c), 9505 a, 9506 vec_lvsr(b, (unsigned char *)c)), 9507 b, c); 9508 } 9509 9510 /* vec_stvrx */ 9511 9512 static void __ATTRS_o_ai 9513 vec_stvrx(vector signed char a, int b, signed char *c) 9514 { 9515 return vec_st(vec_perm(a, 9516 vec_lvlx(b, c), 9517 vec_lvsr(b, c)), 9518 b, c); 9519 } 9520 9521 static void __ATTRS_o_ai 9522 vec_stvrx(vector signed char a, int b, vector signed char *c) 9523 { 9524 return vec_st(vec_perm(a, 9525 vec_lvlx(b, c), 9526 vec_lvsr(b, (unsigned char *)c)), 9527 b, c); 9528 } 9529 9530 static void __ATTRS_o_ai 9531 vec_stvrx(vector unsigned char a, int b, unsigned char *c) 9532 { 9533 return vec_st(vec_perm(a, 9534 vec_lvlx(b, c), 9535 vec_lvsr(b, c)), 9536 b, c); 9537 } 9538 9539 static void __ATTRS_o_ai 9540 vec_stvrx(vector unsigned char a, int b, vector unsigned char *c) 9541 { 9542 return vec_st(vec_perm(a, 9543 vec_lvlx(b, c), 9544 vec_lvsr(b, (unsigned char *)c)), 9545 b, c); 9546 } 9547 9548 static void __ATTRS_o_ai 9549 vec_stvrx(vector bool char a, int b, vector bool char *c) 9550 { 9551 return vec_st(vec_perm(a, 9552 vec_lvlx(b, c), 9553 vec_lvsr(b, (unsigned char *)c)), 9554 b, c); 9555 } 9556 9557 static void __ATTRS_o_ai 9558 vec_stvrx(vector short a, int b, short *c) 9559 { 9560 return vec_st(vec_perm(a, 9561 vec_lvlx(b, c), 9562 vec_lvsr(b, c)), 9563 b, c); 9564 } 9565 9566 static void __ATTRS_o_ai 9567 vec_stvrx(vector short a, int b, vector short *c) 9568 { 9569 return vec_st(vec_perm(a, 9570 vec_lvlx(b, c), 9571 vec_lvsr(b, (unsigned char *)c)), 9572 b, c); 9573 } 9574 9575 static void __ATTRS_o_ai 9576 vec_stvrx(vector unsigned short a, int b, unsigned short *c) 9577 { 9578 return vec_st(vec_perm(a, 9579 vec_lvlx(b, c), 9580 vec_lvsr(b, c)), 9581 b, c); 9582 } 9583 9584 static void __ATTRS_o_ai 9585 vec_stvrx(vector unsigned short a, int b, vector unsigned short *c) 9586 { 9587 return vec_st(vec_perm(a, 9588 vec_lvlx(b, c), 9589 vec_lvsr(b, (unsigned char *)c)), 9590 b, c); 9591 } 9592 9593 static void __ATTRS_o_ai 9594 vec_stvrx(vector bool short a, int b, vector bool short *c) 9595 { 9596 return vec_st(vec_perm(a, 9597 vec_lvlx(b, c), 9598 vec_lvsr(b, (unsigned char *)c)), 9599 b, c); 9600 } 9601 9602 static void __ATTRS_o_ai 9603 vec_stvrx(vector pixel a, int b, vector pixel *c) 9604 { 9605 return vec_st(vec_perm(a, 9606 vec_lvlx(b, c), 9607 vec_lvsr(b, (unsigned char *)c)), 9608 b, c); 9609 } 9610 9611 static void __ATTRS_o_ai 9612 vec_stvrx(vector int a, int b, int *c) 9613 { 9614 return vec_st(vec_perm(a, 9615 vec_lvlx(b, c), 9616 vec_lvsr(b, c)), 9617 b, c); 9618 } 9619 9620 static void __ATTRS_o_ai 9621 vec_stvrx(vector int a, int b, vector int *c) 9622 { 9623 return vec_st(vec_perm(a, 9624 vec_lvlx(b, c), 9625 vec_lvsr(b, (unsigned char *)c)), 9626 b, c); 9627 } 9628 9629 static void __ATTRS_o_ai 9630 vec_stvrx(vector unsigned int a, int b, unsigned int *c) 9631 { 9632 return vec_st(vec_perm(a, 9633 vec_lvlx(b, c), 9634 vec_lvsr(b, c)), 9635 b, c); 9636 } 9637 9638 static void __ATTRS_o_ai 9639 vec_stvrx(vector unsigned int a, int b, vector unsigned int *c) 9640 { 9641 return vec_st(vec_perm(a, 9642 vec_lvlx(b, c), 9643 vec_lvsr(b, (unsigned char *)c)), 9644 b, c); 9645 } 9646 9647 static void __ATTRS_o_ai 9648 vec_stvrx(vector bool int a, int b, vector bool int *c) 9649 { 9650 return vec_st(vec_perm(a, 9651 vec_lvlx(b, c), 9652 vec_lvsr(b, (unsigned char *)c)), 9653 b, c); 9654 } 9655 9656 static void __ATTRS_o_ai 9657 vec_stvrx(vector float a, int b, vector float *c) 9658 { 9659 return vec_st(vec_perm(a, 9660 vec_lvlx(b, c), 9661 vec_lvsr(b, (unsigned char *)c)), 9662 b, c); 9663 } 9664 9665 /* vec_stvrxl */ 9666 9667 static void __ATTRS_o_ai 9668 vec_stvrxl(vector signed char a, int b, signed char *c) 9669 { 9670 return vec_stl(vec_perm(a, 9671 vec_lvlx(b, c), 9672 vec_lvsr(b, c)), 9673 b, c); 9674 } 9675 9676 static void __ATTRS_o_ai 9677 vec_stvrxl(vector signed char a, int b, vector signed char *c) 9678 { 9679 return vec_stl(vec_perm(a, 9680 vec_lvlx(b, c), 9681 vec_lvsr(b, (unsigned char *)c)), 9682 b, c); 9683 } 9684 9685 static void __ATTRS_o_ai 9686 vec_stvrxl(vector unsigned char a, int b, unsigned char *c) 9687 { 9688 return vec_stl(vec_perm(a, 9689 vec_lvlx(b, c), 9690 vec_lvsr(b, c)), 9691 b, c); 9692 } 9693 9694 static void __ATTRS_o_ai 9695 vec_stvrxl(vector unsigned char a, int b, vector unsigned char *c) 9696 { 9697 return vec_stl(vec_perm(a, 9698 vec_lvlx(b, c), 9699 vec_lvsr(b, (unsigned char *)c)), 9700 b, c); 9701 } 9702 9703 static void __ATTRS_o_ai 9704 vec_stvrxl(vector bool char a, int b, vector bool char *c) 9705 { 9706 return vec_stl(vec_perm(a, 9707 vec_lvlx(b, c), 9708 vec_lvsr(b, (unsigned char *)c)), 9709 b, c); 9710 } 9711 9712 static void __ATTRS_o_ai 9713 vec_stvrxl(vector short a, int b, short *c) 9714 { 9715 return vec_stl(vec_perm(a, 9716 vec_lvlx(b, c), 9717 vec_lvsr(b, c)), 9718 b, c); 9719 } 9720 9721 static void __ATTRS_o_ai 9722 vec_stvrxl(vector short a, int b, vector short *c) 9723 { 9724 return vec_stl(vec_perm(a, 9725 vec_lvlx(b, c), 9726 vec_lvsr(b, (unsigned char *)c)), 9727 b, c); 9728 } 9729 9730 static void __ATTRS_o_ai 9731 vec_stvrxl(vector unsigned short a, int b, unsigned short *c) 9732 { 9733 return vec_stl(vec_perm(a, 9734 vec_lvlx(b, c), 9735 vec_lvsr(b, c)), 9736 b, c); 9737 } 9738 9739 static void __ATTRS_o_ai 9740 vec_stvrxl(vector unsigned short a, int b, vector unsigned short *c) 9741 { 9742 return vec_stl(vec_perm(a, 9743 vec_lvlx(b, c), 9744 vec_lvsr(b, (unsigned char *)c)), 9745 b, c); 9746 } 9747 9748 static void __ATTRS_o_ai 9749 vec_stvrxl(vector bool short a, int b, vector bool short *c) 9750 { 9751 return vec_stl(vec_perm(a, 9752 vec_lvlx(b, c), 9753 vec_lvsr(b, (unsigned char *)c)), 9754 b, c); 9755 } 9756 9757 static void __ATTRS_o_ai 9758 vec_stvrxl(vector pixel a, int b, vector pixel *c) 9759 { 9760 return vec_stl(vec_perm(a, 9761 vec_lvlx(b, c), 9762 vec_lvsr(b, (unsigned char *)c)), 9763 b, c); 9764 } 9765 9766 static void __ATTRS_o_ai 9767 vec_stvrxl(vector int a, int b, int *c) 9768 { 9769 return vec_stl(vec_perm(a, 9770 vec_lvlx(b, c), 9771 vec_lvsr(b, c)), 9772 b, c); 9773 } 9774 9775 static void __ATTRS_o_ai 9776 vec_stvrxl(vector int a, int b, vector int *c) 9777 { 9778 return vec_stl(vec_perm(a, 9779 vec_lvlx(b, c), 9780 vec_lvsr(b, (unsigned char *)c)), 9781 b, c); 9782 } 9783 9784 static void __ATTRS_o_ai 9785 vec_stvrxl(vector unsigned int a, int b, unsigned int *c) 9786 { 9787 return vec_stl(vec_perm(a, 9788 vec_lvlx(b, c), 9789 vec_lvsr(b, c)), 9790 b, c); 9791 } 9792 9793 static void __ATTRS_o_ai 9794 vec_stvrxl(vector unsigned int a, int b, vector unsigned int *c) 9795 { 9796 return vec_stl(vec_perm(a, 9797 vec_lvlx(b, c), 9798 vec_lvsr(b, (unsigned char *)c)), 9799 b, c); 9800 } 9801 9802 static void __ATTRS_o_ai 9803 vec_stvrxl(vector bool int a, int b, vector bool int *c) 9804 { 9805 return vec_stl(vec_perm(a, 9806 vec_lvlx(b, c), 9807 vec_lvsr(b, (unsigned char *)c)), 9808 b, c); 9809 } 9810 9811 static void __ATTRS_o_ai 9812 vec_stvrxl(vector float a, int b, vector float *c) 9813 { 9814 return vec_stl(vec_perm(a, 9815 vec_lvlx(b, c), 9816 vec_lvsr(b, (unsigned char *)c)), 9817 b, c); 9818 } 9819 9820 /* vec_promote */ 9821 9822 static vector signed char __ATTRS_o_ai 9823 vec_promote(signed char a, int b) 9824 { 9825 vector signed char res = (vector signed char)(0); 9826 res[b] = a; 9827 return res; 9828 } 9829 9830 static vector unsigned char __ATTRS_o_ai 9831 vec_promote(unsigned char a, int b) 9832 { 9833 vector unsigned char res = (vector unsigned char)(0); 9834 res[b] = a; 9835 return res; 9836 } 9837 9838 static vector short __ATTRS_o_ai 9839 vec_promote(short a, int b) 9840 { 9841 vector short res = (vector short)(0); 9842 res[b] = a; 9843 return res; 9844 } 9845 9846 static vector unsigned short __ATTRS_o_ai 9847 vec_promote(unsigned short a, int b) 9848 { 9849 vector unsigned short res = (vector unsigned short)(0); 9850 res[b] = a; 9851 return res; 9852 } 9853 9854 static vector int __ATTRS_o_ai 9855 vec_promote(int a, int b) 9856 { 9857 vector int res = (vector int)(0); 9858 res[b] = a; 9859 return res; 9860 } 9861 9862 static vector unsigned int __ATTRS_o_ai 9863 vec_promote(unsigned int a, int b) 9864 { 9865 vector unsigned int res = (vector unsigned int)(0); 9866 res[b] = a; 9867 return res; 9868 } 9869 9870 static vector float __ATTRS_o_ai 9871 vec_promote(float a, int b) 9872 { 9873 vector float res = (vector float)(0); 9874 res[b] = a; 9875 return res; 9876 } 9877 9878 /* vec_splats */ 9879 9880 static vector signed char __ATTRS_o_ai 9881 vec_splats(signed char a) 9882 { 9883 return (vector signed char)(a); 9884 } 9885 9886 static vector unsigned char __ATTRS_o_ai 9887 vec_splats(unsigned char a) 9888 { 9889 return (vector unsigned char)(a); 9890 } 9891 9892 static vector short __ATTRS_o_ai 9893 vec_splats(short a) 9894 { 9895 return (vector short)(a); 9896 } 9897 9898 static vector unsigned short __ATTRS_o_ai 9899 vec_splats(unsigned short a) 9900 { 9901 return (vector unsigned short)(a); 9902 } 9903 9904 static vector int __ATTRS_o_ai 9905 vec_splats(int a) 9906 { 9907 return (vector int)(a); 9908 } 9909 9910 static vector unsigned int __ATTRS_o_ai 9911 vec_splats(unsigned int a) 9912 { 9913 return (vector unsigned int)(a); 9914 } 9915 9916 static vector float __ATTRS_o_ai 9917 vec_splats(float a) 9918 { 9919 return (vector float)(a); 9920 } 9921 9922 /* ----------------------------- predicates --------------------------------- */ 9923 9924 /* vec_all_eq */ 9925 9926 static int __ATTRS_o_ai 9927 vec_all_eq(vector signed char a, vector signed char b) 9928 { 9929 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)a, (vector char)b); 9930 } 9931 9932 static int __ATTRS_o_ai 9933 vec_all_eq(vector signed char a, vector bool char b) 9934 { 9935 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)a, (vector char)b); 9936 } 9937 9938 static int __ATTRS_o_ai 9939 vec_all_eq(vector unsigned char a, vector unsigned char b) 9940 { 9941 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)a, (vector char)b); 9942 } 9943 9944 static int __ATTRS_o_ai 9945 vec_all_eq(vector unsigned char a, vector bool char b) 9946 { 9947 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)a, (vector char)b); 9948 } 9949 9950 static int __ATTRS_o_ai 9951 vec_all_eq(vector bool char a, vector signed char b) 9952 { 9953 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)a, (vector char)b); 9954 } 9955 9956 static int __ATTRS_o_ai 9957 vec_all_eq(vector bool char a, vector unsigned char b) 9958 { 9959 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)a, (vector char)b); 9960 } 9961 9962 static int __ATTRS_o_ai 9963 vec_all_eq(vector bool char a, vector bool char b) 9964 { 9965 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)a, (vector char)b); 9966 } 9967 9968 static int __ATTRS_o_ai 9969 vec_all_eq(vector short a, vector short b) 9970 { 9971 return __builtin_altivec_vcmpequh_p(__CR6_LT, a, b); 9972 } 9973 9974 static int __ATTRS_o_ai 9975 vec_all_eq(vector short a, vector bool short b) 9976 { 9977 return __builtin_altivec_vcmpequh_p(__CR6_LT, a, (vector short)b); 9978 } 9979 9980 static int __ATTRS_o_ai 9981 vec_all_eq(vector unsigned short a, vector unsigned short b) 9982 { 9983 return 9984 __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)a, (vector short)b); 9985 } 9986 9987 static int __ATTRS_o_ai 9988 vec_all_eq(vector unsigned short a, vector bool short b) 9989 { 9990 return 9991 __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)a, (vector short)b); 9992 } 9993 9994 static int __ATTRS_o_ai 9995 vec_all_eq(vector bool short a, vector short b) 9996 { 9997 return 9998 __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)a, (vector short)b); 9999 } 10000 10001 static int __ATTRS_o_ai 10002 vec_all_eq(vector bool short a, vector unsigned short b) 10003 { 10004 return 10005 __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)a, (vector short)b); 10006 } 10007 10008 static int __ATTRS_o_ai 10009 vec_all_eq(vector bool short a, vector bool short b) 10010 { 10011 return 10012 __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)a, (vector short)b); 10013 } 10014 10015 static int __ATTRS_o_ai 10016 vec_all_eq(vector pixel a, vector pixel b) 10017 { 10018 return 10019 __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)a, (vector short)b); 10020 } 10021 10022 static int __ATTRS_o_ai 10023 vec_all_eq(vector int a, vector int b) 10024 { 10025 return __builtin_altivec_vcmpequw_p(__CR6_LT, a, b); 10026 } 10027 10028 static int __ATTRS_o_ai 10029 vec_all_eq(vector int a, vector bool int b) 10030 { 10031 return __builtin_altivec_vcmpequw_p(__CR6_LT, a, (vector int)b); 10032 } 10033 10034 static int __ATTRS_o_ai 10035 vec_all_eq(vector unsigned int a, vector unsigned int b) 10036 { 10037 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)a, (vector int)b); 10038 } 10039 10040 static int __ATTRS_o_ai 10041 vec_all_eq(vector unsigned int a, vector bool int b) 10042 { 10043 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)a, (vector int)b); 10044 } 10045 10046 static int __ATTRS_o_ai 10047 vec_all_eq(vector bool int a, vector int b) 10048 { 10049 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)a, (vector int)b); 10050 } 10051 10052 static int __ATTRS_o_ai 10053 vec_all_eq(vector bool int a, vector unsigned int b) 10054 { 10055 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)a, (vector int)b); 10056 } 10057 10058 static int __ATTRS_o_ai 10059 vec_all_eq(vector bool int a, vector bool int b) 10060 { 10061 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)a, (vector int)b); 10062 } 10063 10064 static int __ATTRS_o_ai 10065 vec_all_eq(vector float a, vector float b) 10066 { 10067 return __builtin_altivec_vcmpeqfp_p(__CR6_LT, a, b); 10068 } 10069 10070 /* vec_all_ge */ 10071 10072 static int __ATTRS_o_ai 10073 vec_all_ge(vector signed char a, vector signed char b) 10074 { 10075 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, b, a); 10076 } 10077 10078 static int __ATTRS_o_ai 10079 vec_all_ge(vector signed char a, vector bool char b) 10080 { 10081 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, (vector signed char)b, a); 10082 } 10083 10084 static int __ATTRS_o_ai 10085 vec_all_ge(vector unsigned char a, vector unsigned char b) 10086 { 10087 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, b, a); 10088 } 10089 10090 static int __ATTRS_o_ai 10091 vec_all_ge(vector unsigned char a, vector bool char b) 10092 { 10093 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)b, a); 10094 } 10095 10096 static int __ATTRS_o_ai 10097 vec_all_ge(vector bool char a, vector signed char b) 10098 { 10099 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, 10100 (vector unsigned char)b, 10101 (vector unsigned char)a); 10102 } 10103 10104 static int __ATTRS_o_ai 10105 vec_all_ge(vector bool char a, vector unsigned char b) 10106 { 10107 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, b, (vector unsigned char)a); 10108 } 10109 10110 static int __ATTRS_o_ai 10111 vec_all_ge(vector bool char a, vector bool char b) 10112 { 10113 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, 10114 (vector unsigned char)b, 10115 (vector unsigned char)a); 10116 } 10117 10118 static int __ATTRS_o_ai 10119 vec_all_ge(vector short a, vector short b) 10120 { 10121 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, b, a); 10122 } 10123 10124 static int __ATTRS_o_ai 10125 vec_all_ge(vector short a, vector bool short b) 10126 { 10127 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, (vector short)b, a); 10128 } 10129 10130 static int __ATTRS_o_ai 10131 vec_all_ge(vector unsigned short a, vector unsigned short b) 10132 { 10133 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, b, a); 10134 } 10135 10136 static int __ATTRS_o_ai 10137 vec_all_ge(vector unsigned short a, vector bool short b) 10138 { 10139 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)b, a); 10140 } 10141 10142 static int __ATTRS_o_ai 10143 vec_all_ge(vector bool short a, vector short b) 10144 { 10145 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, 10146 (vector unsigned short)b, 10147 (vector unsigned short)a); 10148 } 10149 10150 static int __ATTRS_o_ai 10151 vec_all_ge(vector bool short a, vector unsigned short b) 10152 { 10153 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, b, (vector unsigned short)a); 10154 } 10155 10156 static int __ATTRS_o_ai 10157 vec_all_ge(vector bool short a, vector bool short b) 10158 { 10159 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, 10160 (vector unsigned short)b, 10161 (vector unsigned short)a); 10162 } 10163 10164 static int __ATTRS_o_ai 10165 vec_all_ge(vector int a, vector int b) 10166 { 10167 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, b, a); 10168 } 10169 10170 static int __ATTRS_o_ai 10171 vec_all_ge(vector int a, vector bool int b) 10172 { 10173 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, (vector int)b, a); 10174 } 10175 10176 static int __ATTRS_o_ai 10177 vec_all_ge(vector unsigned int a, vector unsigned int b) 10178 { 10179 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, b, a); 10180 } 10181 10182 static int __ATTRS_o_ai 10183 vec_all_ge(vector unsigned int a, vector bool int b) 10184 { 10185 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)b, a); 10186 } 10187 10188 static int __ATTRS_o_ai 10189 vec_all_ge(vector bool int a, vector int b) 10190 { 10191 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, 10192 (vector unsigned int)b, 10193 (vector unsigned int)a); 10194 } 10195 10196 static int __ATTRS_o_ai 10197 vec_all_ge(vector bool int a, vector unsigned int b) 10198 { 10199 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, b, (vector unsigned int)a); 10200 } 10201 10202 static int __ATTRS_o_ai 10203 vec_all_ge(vector bool int a, vector bool int b) 10204 { 10205 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, 10206 (vector unsigned int)b, 10207 (vector unsigned int)a); 10208 } 10209 10210 static int __ATTRS_o_ai 10211 vec_all_ge(vector float a, vector float b) 10212 { 10213 return __builtin_altivec_vcmpgefp_p(__CR6_LT, a, b); 10214 } 10215 10216 /* vec_all_gt */ 10217 10218 static int __ATTRS_o_ai 10219 vec_all_gt(vector signed char a, vector signed char b) 10220 { 10221 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, a, b); 10222 } 10223 10224 static int __ATTRS_o_ai 10225 vec_all_gt(vector signed char a, vector bool char b) 10226 { 10227 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, a, (vector signed char)b); 10228 } 10229 10230 static int __ATTRS_o_ai 10231 vec_all_gt(vector unsigned char a, vector unsigned char b) 10232 { 10233 return __builtin_altivec_vcmpgtub_p(__CR6_LT, a, b); 10234 } 10235 10236 static int __ATTRS_o_ai 10237 vec_all_gt(vector unsigned char a, vector bool char b) 10238 { 10239 return __builtin_altivec_vcmpgtub_p(__CR6_LT, a, (vector unsigned char)b); 10240 } 10241 10242 static int __ATTRS_o_ai 10243 vec_all_gt(vector bool char a, vector signed char b) 10244 { 10245 return __builtin_altivec_vcmpgtub_p(__CR6_LT, 10246 (vector unsigned char)a, 10247 (vector unsigned char)b); 10248 } 10249 10250 static int __ATTRS_o_ai 10251 vec_all_gt(vector bool char a, vector unsigned char b) 10252 { 10253 return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)a, b); 10254 } 10255 10256 static int __ATTRS_o_ai 10257 vec_all_gt(vector bool char a, vector bool char b) 10258 { 10259 return __builtin_altivec_vcmpgtub_p(__CR6_LT, 10260 (vector unsigned char)a, 10261 (vector unsigned char)b); 10262 } 10263 10264 static int __ATTRS_o_ai 10265 vec_all_gt(vector short a, vector short b) 10266 { 10267 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, a, b); 10268 } 10269 10270 static int __ATTRS_o_ai 10271 vec_all_gt(vector short a, vector bool short b) 10272 { 10273 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, a, (vector short)b); 10274 } 10275 10276 static int __ATTRS_o_ai 10277 vec_all_gt(vector unsigned short a, vector unsigned short b) 10278 { 10279 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, a, b); 10280 } 10281 10282 static int __ATTRS_o_ai 10283 vec_all_gt(vector unsigned short a, vector bool short b) 10284 { 10285 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, a, (vector unsigned short)b); 10286 } 10287 10288 static int __ATTRS_o_ai 10289 vec_all_gt(vector bool short a, vector short b) 10290 { 10291 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, 10292 (vector unsigned short)a, 10293 (vector unsigned short)b); 10294 } 10295 10296 static int __ATTRS_o_ai 10297 vec_all_gt(vector bool short a, vector unsigned short b) 10298 { 10299 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)a, b); 10300 } 10301 10302 static int __ATTRS_o_ai 10303 vec_all_gt(vector bool short a, vector bool short b) 10304 { 10305 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, 10306 (vector unsigned short)a, 10307 (vector unsigned short)b); 10308 } 10309 10310 static int __ATTRS_o_ai 10311 vec_all_gt(vector int a, vector int b) 10312 { 10313 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, a, b); 10314 } 10315 10316 static int __ATTRS_o_ai 10317 vec_all_gt(vector int a, vector bool int b) 10318 { 10319 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, a, (vector int)b); 10320 } 10321 10322 static int __ATTRS_o_ai 10323 vec_all_gt(vector unsigned int a, vector unsigned int b) 10324 { 10325 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, a, b); 10326 } 10327 10328 static int __ATTRS_o_ai 10329 vec_all_gt(vector unsigned int a, vector bool int b) 10330 { 10331 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, a, (vector unsigned int)b); 10332 } 10333 10334 static int __ATTRS_o_ai 10335 vec_all_gt(vector bool int a, vector int b) 10336 { 10337 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, 10338 (vector unsigned int)a, 10339 (vector unsigned int)b); 10340 } 10341 10342 static int __ATTRS_o_ai 10343 vec_all_gt(vector bool int a, vector unsigned int b) 10344 { 10345 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)a, b); 10346 } 10347 10348 static int __ATTRS_o_ai 10349 vec_all_gt(vector bool int a, vector bool int b) 10350 { 10351 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, 10352 (vector unsigned int)a, 10353 (vector unsigned int)b); 10354 } 10355 10356 static int __ATTRS_o_ai 10357 vec_all_gt(vector float a, vector float b) 10358 { 10359 return __builtin_altivec_vcmpgtfp_p(__CR6_LT, a, b); 10360 } 10361 10362 /* vec_all_in */ 10363 10364 static int __attribute__((__always_inline__)) 10365 vec_all_in(vector float a, vector float b) 10366 { 10367 return __builtin_altivec_vcmpbfp_p(__CR6_EQ, a, b); 10368 } 10369 10370 /* vec_all_le */ 10371 10372 static int __ATTRS_o_ai 10373 vec_all_le(vector signed char a, vector signed char b) 10374 { 10375 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, a, b); 10376 } 10377 10378 static int __ATTRS_o_ai 10379 vec_all_le(vector signed char a, vector bool char b) 10380 { 10381 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, a, (vector signed char)b); 10382 } 10383 10384 static int __ATTRS_o_ai 10385 vec_all_le(vector unsigned char a, vector unsigned char b) 10386 { 10387 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, a, b); 10388 } 10389 10390 static int __ATTRS_o_ai 10391 vec_all_le(vector unsigned char a, vector bool char b) 10392 { 10393 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, a, (vector unsigned char)b); 10394 } 10395 10396 static int __ATTRS_o_ai 10397 vec_all_le(vector bool char a, vector signed char b) 10398 { 10399 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, 10400 (vector unsigned char)a, 10401 (vector unsigned char)b); 10402 } 10403 10404 static int __ATTRS_o_ai 10405 vec_all_le(vector bool char a, vector unsigned char b) 10406 { 10407 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)a, b); 10408 } 10409 10410 static int __ATTRS_o_ai 10411 vec_all_le(vector bool char a, vector bool char b) 10412 { 10413 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, 10414 (vector unsigned char)a, 10415 (vector unsigned char)b); 10416 } 10417 10418 static int __ATTRS_o_ai 10419 vec_all_le(vector short a, vector short b) 10420 { 10421 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, a, b); 10422 } 10423 10424 static int __ATTRS_o_ai 10425 vec_all_le(vector short a, vector bool short b) 10426 { 10427 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, a, (vector short)b); 10428 } 10429 10430 static int __ATTRS_o_ai 10431 vec_all_le(vector unsigned short a, vector unsigned short b) 10432 { 10433 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, a, b); 10434 } 10435 10436 static int __ATTRS_o_ai 10437 vec_all_le(vector unsigned short a, vector bool short b) 10438 { 10439 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, a, (vector unsigned short)b); 10440 } 10441 10442 static int __ATTRS_o_ai 10443 vec_all_le(vector bool short a, vector short b) 10444 { 10445 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, 10446 (vector unsigned short)a, 10447 (vector unsigned short)b); 10448 } 10449 10450 static int __ATTRS_o_ai 10451 vec_all_le(vector bool short a, vector unsigned short b) 10452 { 10453 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)a, b); 10454 } 10455 10456 static int __ATTRS_o_ai 10457 vec_all_le(vector bool short a, vector bool short b) 10458 { 10459 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, 10460 (vector unsigned short)a, 10461 (vector unsigned short)b); 10462 } 10463 10464 static int __ATTRS_o_ai 10465 vec_all_le(vector int a, vector int b) 10466 { 10467 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, a, b); 10468 } 10469 10470 static int __ATTRS_o_ai 10471 vec_all_le(vector int a, vector bool int b) 10472 { 10473 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, a, (vector int)b); 10474 } 10475 10476 static int __ATTRS_o_ai 10477 vec_all_le(vector unsigned int a, vector unsigned int b) 10478 { 10479 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, a, b); 10480 } 10481 10482 static int __ATTRS_o_ai 10483 vec_all_le(vector unsigned int a, vector bool int b) 10484 { 10485 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, a, (vector unsigned int)b); 10486 } 10487 10488 static int __ATTRS_o_ai 10489 vec_all_le(vector bool int a, vector int b) 10490 { 10491 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, 10492 (vector unsigned int)a, 10493 (vector unsigned int)b); 10494 } 10495 10496 static int __ATTRS_o_ai 10497 vec_all_le(vector bool int a, vector unsigned int b) 10498 { 10499 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)a, b); 10500 } 10501 10502 static int __ATTRS_o_ai 10503 vec_all_le(vector bool int a, vector bool int b) 10504 { 10505 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, 10506 (vector unsigned int)a, 10507 (vector unsigned int)b); 10508 } 10509 10510 static int __ATTRS_o_ai 10511 vec_all_le(vector float a, vector float b) 10512 { 10513 return __builtin_altivec_vcmpgefp_p(__CR6_LT, b, a); 10514 } 10515 10516 /* vec_all_lt */ 10517 10518 static int __ATTRS_o_ai 10519 vec_all_lt(vector signed char a, vector signed char b) 10520 { 10521 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, b, a); 10522 } 10523 10524 static int __ATTRS_o_ai 10525 vec_all_lt(vector signed char a, vector bool char b) 10526 { 10527 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, (vector signed char)b, a); 10528 } 10529 10530 static int __ATTRS_o_ai 10531 vec_all_lt(vector unsigned char a, vector unsigned char b) 10532 { 10533 return __builtin_altivec_vcmpgtub_p(__CR6_LT, b, a); 10534 } 10535 10536 static int __ATTRS_o_ai 10537 vec_all_lt(vector unsigned char a, vector bool char b) 10538 { 10539 return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)b, a); 10540 } 10541 10542 static int __ATTRS_o_ai 10543 vec_all_lt(vector bool char a, vector signed char b) 10544 { 10545 return __builtin_altivec_vcmpgtub_p(__CR6_LT, 10546 (vector unsigned char)b, 10547 (vector unsigned char)a); 10548 } 10549 10550 static int __ATTRS_o_ai 10551 vec_all_lt(vector bool char a, vector unsigned char b) 10552 { 10553 return __builtin_altivec_vcmpgtub_p(__CR6_LT, b, (vector unsigned char)a); 10554 } 10555 10556 static int __ATTRS_o_ai 10557 vec_all_lt(vector bool char a, vector bool char b) 10558 { 10559 return __builtin_altivec_vcmpgtub_p(__CR6_LT, 10560 (vector unsigned char)b, 10561 (vector unsigned char)a); 10562 } 10563 10564 static int __ATTRS_o_ai 10565 vec_all_lt(vector short a, vector short b) 10566 { 10567 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, b, a); 10568 } 10569 10570 static int __ATTRS_o_ai 10571 vec_all_lt(vector short a, vector bool short b) 10572 { 10573 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, (vector short)b, a); 10574 } 10575 10576 static int __ATTRS_o_ai 10577 vec_all_lt(vector unsigned short a, vector unsigned short b) 10578 { 10579 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, b, a); 10580 } 10581 10582 static int __ATTRS_o_ai 10583 vec_all_lt(vector unsigned short a, vector bool short b) 10584 { 10585 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)b, a); 10586 } 10587 10588 static int __ATTRS_o_ai 10589 vec_all_lt(vector bool short a, vector short b) 10590 { 10591 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, 10592 (vector unsigned short)b, 10593 (vector unsigned short)a); 10594 } 10595 10596 static int __ATTRS_o_ai 10597 vec_all_lt(vector bool short a, vector unsigned short b) 10598 { 10599 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, b, (vector unsigned short)a); 10600 } 10601 10602 static int __ATTRS_o_ai 10603 vec_all_lt(vector bool short a, vector bool short b) 10604 { 10605 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, 10606 (vector unsigned short)b, 10607 (vector unsigned short)a); 10608 } 10609 10610 static int __ATTRS_o_ai 10611 vec_all_lt(vector int a, vector int b) 10612 { 10613 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, b, a); 10614 } 10615 10616 static int __ATTRS_o_ai 10617 vec_all_lt(vector int a, vector bool int b) 10618 { 10619 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, (vector int)b, a); 10620 } 10621 10622 static int __ATTRS_o_ai 10623 vec_all_lt(vector unsigned int a, vector unsigned int b) 10624 { 10625 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, b, a); 10626 } 10627 10628 static int __ATTRS_o_ai 10629 vec_all_lt(vector unsigned int a, vector bool int b) 10630 { 10631 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)b, a); 10632 } 10633 10634 static int __ATTRS_o_ai 10635 vec_all_lt(vector bool int a, vector int b) 10636 { 10637 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, 10638 (vector unsigned int)b, 10639 (vector unsigned int)a); 10640 } 10641 10642 static int __ATTRS_o_ai 10643 vec_all_lt(vector bool int a, vector unsigned int b) 10644 { 10645 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, b, (vector unsigned int)a); 10646 } 10647 10648 static int __ATTRS_o_ai 10649 vec_all_lt(vector bool int a, vector bool int b) 10650 { 10651 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, 10652 (vector unsigned int)b, 10653 (vector unsigned int)a); 10654 } 10655 10656 static int __ATTRS_o_ai 10657 vec_all_lt(vector float a, vector float b) 10658 { 10659 return __builtin_altivec_vcmpgtfp_p(__CR6_LT, b, a); 10660 } 10661 10662 /* vec_all_nan */ 10663 10664 static int __attribute__((__always_inline__)) 10665 vec_all_nan(vector float a) 10666 { 10667 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, a, a); 10668 } 10669 10670 /* vec_all_ne */ 10671 10672 static int __ATTRS_o_ai 10673 vec_all_ne(vector signed char a, vector signed char b) 10674 { 10675 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)a, (vector char)b); 10676 } 10677 10678 static int __ATTRS_o_ai 10679 vec_all_ne(vector signed char a, vector bool char b) 10680 { 10681 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)a, (vector char)b); 10682 } 10683 10684 static int __ATTRS_o_ai 10685 vec_all_ne(vector unsigned char a, vector unsigned char b) 10686 { 10687 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)a, (vector char)b); 10688 } 10689 10690 static int __ATTRS_o_ai 10691 vec_all_ne(vector unsigned char a, vector bool char b) 10692 { 10693 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)a, (vector char)b); 10694 } 10695 10696 static int __ATTRS_o_ai 10697 vec_all_ne(vector bool char a, vector signed char b) 10698 { 10699 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)a, (vector char)b); 10700 } 10701 10702 static int __ATTRS_o_ai 10703 vec_all_ne(vector bool char a, vector unsigned char b) 10704 { 10705 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)a, (vector char)b); 10706 } 10707 10708 static int __ATTRS_o_ai 10709 vec_all_ne(vector bool char a, vector bool char b) 10710 { 10711 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)a, (vector char)b); 10712 } 10713 10714 static int __ATTRS_o_ai 10715 vec_all_ne(vector short a, vector short b) 10716 { 10717 return __builtin_altivec_vcmpequh_p(__CR6_EQ, a, b); 10718 } 10719 10720 static int __ATTRS_o_ai 10721 vec_all_ne(vector short a, vector bool short b) 10722 { 10723 return __builtin_altivec_vcmpequh_p(__CR6_EQ, a, (vector short)b); 10724 } 10725 10726 static int __ATTRS_o_ai 10727 vec_all_ne(vector unsigned short a, vector unsigned short b) 10728 { 10729 return 10730 __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)a, (vector short)b); 10731 } 10732 10733 static int __ATTRS_o_ai 10734 vec_all_ne(vector unsigned short a, vector bool short b) 10735 { 10736 return 10737 __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)a, (vector short)b); 10738 } 10739 10740 static int __ATTRS_o_ai 10741 vec_all_ne(vector bool short a, vector short b) 10742 { 10743 return 10744 __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)a, (vector short)b); 10745 } 10746 10747 static int __ATTRS_o_ai 10748 vec_all_ne(vector bool short a, vector unsigned short b) 10749 { 10750 return 10751 __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)a, (vector short)b); 10752 } 10753 10754 static int __ATTRS_o_ai 10755 vec_all_ne(vector bool short a, vector bool short b) 10756 { 10757 return 10758 __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)a, (vector short)b); 10759 } 10760 10761 static int __ATTRS_o_ai 10762 vec_all_ne(vector pixel a, vector pixel b) 10763 { 10764 return 10765 __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)a, (vector short)b); 10766 } 10767 10768 static int __ATTRS_o_ai 10769 vec_all_ne(vector int a, vector int b) 10770 { 10771 return __builtin_altivec_vcmpequw_p(__CR6_EQ, a, b); 10772 } 10773 10774 static int __ATTRS_o_ai 10775 vec_all_ne(vector int a, vector bool int b) 10776 { 10777 return __builtin_altivec_vcmpequw_p(__CR6_EQ, a, (vector int)b); 10778 } 10779 10780 static int __ATTRS_o_ai 10781 vec_all_ne(vector unsigned int a, vector unsigned int b) 10782 { 10783 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)a, (vector int)b); 10784 } 10785 10786 static int __ATTRS_o_ai 10787 vec_all_ne(vector unsigned int a, vector bool int b) 10788 { 10789 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)a, (vector int)b); 10790 } 10791 10792 static int __ATTRS_o_ai 10793 vec_all_ne(vector bool int a, vector int b) 10794 { 10795 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)a, (vector int)b); 10796 } 10797 10798 static int __ATTRS_o_ai 10799 vec_all_ne(vector bool int a, vector unsigned int b) 10800 { 10801 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)a, (vector int)b); 10802 } 10803 10804 static int __ATTRS_o_ai 10805 vec_all_ne(vector bool int a, vector bool int b) 10806 { 10807 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)a, (vector int)b); 10808 } 10809 10810 static int __ATTRS_o_ai 10811 vec_all_ne(vector float a, vector float b) 10812 { 10813 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, a, b); 10814 } 10815 10816 /* vec_all_nge */ 10817 10818 static int __attribute__((__always_inline__)) 10819 vec_all_nge(vector float a, vector float b) 10820 { 10821 return __builtin_altivec_vcmpgefp_p(__CR6_EQ, a, b); 10822 } 10823 10824 /* vec_all_ngt */ 10825 10826 static int __attribute__((__always_inline__)) 10827 vec_all_ngt(vector float a, vector float b) 10828 { 10829 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, a, b); 10830 } 10831 10832 /* vec_all_nle */ 10833 10834 static int __attribute__((__always_inline__)) 10835 vec_all_nle(vector float a, vector float b) 10836 { 10837 return __builtin_altivec_vcmpgefp_p(__CR6_EQ, b, a); 10838 } 10839 10840 /* vec_all_nlt */ 10841 10842 static int __attribute__((__always_inline__)) 10843 vec_all_nlt(vector float a, vector float b) 10844 { 10845 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, b, a); 10846 } 10847 10848 /* vec_all_numeric */ 10849 10850 static int __attribute__((__always_inline__)) 10851 vec_all_numeric(vector float a) 10852 { 10853 return __builtin_altivec_vcmpeqfp_p(__CR6_LT, a, a); 10854 } 10855 10856 /* vec_any_eq */ 10857 10858 static int __ATTRS_o_ai 10859 vec_any_eq(vector signed char a, vector signed char b) 10860 { 10861 return 10862 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)a, (vector char)b); 10863 } 10864 10865 static int __ATTRS_o_ai 10866 vec_any_eq(vector signed char a, vector bool char b) 10867 { 10868 return 10869 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)a, (vector char)b); 10870 } 10871 10872 static int __ATTRS_o_ai 10873 vec_any_eq(vector unsigned char a, vector unsigned char b) 10874 { 10875 return 10876 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)a, (vector char)b); 10877 } 10878 10879 static int __ATTRS_o_ai 10880 vec_any_eq(vector unsigned char a, vector bool char b) 10881 { 10882 return 10883 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)a, (vector char)b); 10884 } 10885 10886 static int __ATTRS_o_ai 10887 vec_any_eq(vector bool char a, vector signed char b) 10888 { 10889 return 10890 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)a, (vector char)b); 10891 } 10892 10893 static int __ATTRS_o_ai 10894 vec_any_eq(vector bool char a, vector unsigned char b) 10895 { 10896 return 10897 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)a, (vector char)b); 10898 } 10899 10900 static int __ATTRS_o_ai 10901 vec_any_eq(vector bool char a, vector bool char b) 10902 { 10903 return 10904 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)a, (vector char)b); 10905 } 10906 10907 static int __ATTRS_o_ai 10908 vec_any_eq(vector short a, vector short b) 10909 { 10910 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, a, b); 10911 } 10912 10913 static int __ATTRS_o_ai 10914 vec_any_eq(vector short a, vector bool short b) 10915 { 10916 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, a, (vector short)b); 10917 } 10918 10919 static int __ATTRS_o_ai 10920 vec_any_eq(vector unsigned short a, vector unsigned short b) 10921 { 10922 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, 10923 (vector short)a, 10924 (vector short)b); 10925 } 10926 10927 static int __ATTRS_o_ai 10928 vec_any_eq(vector unsigned short a, vector bool short b) 10929 { 10930 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, 10931 (vector short)a, 10932 (vector short)b); 10933 } 10934 10935 static int __ATTRS_o_ai 10936 vec_any_eq(vector bool short a, vector short b) 10937 { 10938 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, 10939 (vector short)a, 10940 (vector short)b); 10941 } 10942 10943 static int __ATTRS_o_ai 10944 vec_any_eq(vector bool short a, vector unsigned short b) 10945 { 10946 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, 10947 (vector short)a, 10948 (vector short)b); 10949 } 10950 10951 static int __ATTRS_o_ai 10952 vec_any_eq(vector bool short a, vector bool short b) 10953 { 10954 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, 10955 (vector short)a, 10956 (vector short)b); 10957 } 10958 10959 static int __ATTRS_o_ai 10960 vec_any_eq(vector pixel a, vector pixel b) 10961 { 10962 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, 10963 (vector short)a, 10964 (vector short)b); 10965 } 10966 10967 static int __ATTRS_o_ai 10968 vec_any_eq(vector int a, vector int b) 10969 { 10970 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, a, b); 10971 } 10972 10973 static int __ATTRS_o_ai 10974 vec_any_eq(vector int a, vector bool int b) 10975 { 10976 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, a, (vector int)b); 10977 } 10978 10979 static int __ATTRS_o_ai 10980 vec_any_eq(vector unsigned int a, vector unsigned int b) 10981 { 10982 return 10983 __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)a, (vector int)b); 10984 } 10985 10986 static int __ATTRS_o_ai 10987 vec_any_eq(vector unsigned int a, vector bool int b) 10988 { 10989 return 10990 __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)a, (vector int)b); 10991 } 10992 10993 static int __ATTRS_o_ai 10994 vec_any_eq(vector bool int a, vector int b) 10995 { 10996 return 10997 __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)a, (vector int)b); 10998 } 10999 11000 static int __ATTRS_o_ai 11001 vec_any_eq(vector bool int a, vector unsigned int b) 11002 { 11003 return 11004 __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)a, (vector int)b); 11005 } 11006 11007 static int __ATTRS_o_ai 11008 vec_any_eq(vector bool int a, vector bool int b) 11009 { 11010 return 11011 __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)a, (vector int)b); 11012 } 11013 11014 static int __ATTRS_o_ai 11015 vec_any_eq(vector float a, vector float b) 11016 { 11017 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, a, b); 11018 } 11019 11020 /* vec_any_ge */ 11021 11022 static int __ATTRS_o_ai 11023 vec_any_ge(vector signed char a, vector signed char b) 11024 { 11025 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, b, a); 11026 } 11027 11028 static int __ATTRS_o_ai 11029 vec_any_ge(vector signed char a, vector bool char b) 11030 { 11031 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, (vector signed char)b, a); 11032 } 11033 11034 static int __ATTRS_o_ai 11035 vec_any_ge(vector unsigned char a, vector unsigned char b) 11036 { 11037 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, b, a); 11038 } 11039 11040 static int __ATTRS_o_ai 11041 vec_any_ge(vector unsigned char a, vector bool char b) 11042 { 11043 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)b, a); 11044 } 11045 11046 static int __ATTRS_o_ai 11047 vec_any_ge(vector bool char a, vector signed char b) 11048 { 11049 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, 11050 (vector unsigned char)b, 11051 (vector unsigned char)a); 11052 } 11053 11054 static int __ATTRS_o_ai 11055 vec_any_ge(vector bool char a, vector unsigned char b) 11056 { 11057 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, b, (vector unsigned char)a); 11058 } 11059 11060 static int __ATTRS_o_ai 11061 vec_any_ge(vector bool char a, vector bool char b) 11062 { 11063 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, 11064 (vector unsigned char)b, 11065 (vector unsigned char)a); 11066 } 11067 11068 static int __ATTRS_o_ai 11069 vec_any_ge(vector short a, vector short b) 11070 { 11071 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, b, a); 11072 } 11073 11074 static int __ATTRS_o_ai 11075 vec_any_ge(vector short a, vector bool short b) 11076 { 11077 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, (vector short)b, a); 11078 } 11079 11080 static int __ATTRS_o_ai 11081 vec_any_ge(vector unsigned short a, vector unsigned short b) 11082 { 11083 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, b, a); 11084 } 11085 11086 static int __ATTRS_o_ai 11087 vec_any_ge(vector unsigned short a, vector bool short b) 11088 { 11089 return 11090 __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)b, a); 11091 } 11092 11093 static int __ATTRS_o_ai 11094 vec_any_ge(vector bool short a, vector short b) 11095 { 11096 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, 11097 (vector unsigned short)b, 11098 (vector unsigned short)a); 11099 } 11100 11101 static int __ATTRS_o_ai 11102 vec_any_ge(vector bool short a, vector unsigned short b) 11103 { 11104 return 11105 __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, b, (vector unsigned short)a); 11106 } 11107 11108 static int __ATTRS_o_ai 11109 vec_any_ge(vector bool short a, vector bool short b) 11110 { 11111 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, 11112 (vector unsigned short)b, 11113 (vector unsigned short)a); 11114 } 11115 11116 static int __ATTRS_o_ai 11117 vec_any_ge(vector int a, vector int b) 11118 { 11119 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, b, a); 11120 } 11121 11122 static int __ATTRS_o_ai 11123 vec_any_ge(vector int a, vector bool int b) 11124 { 11125 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, (vector int)b, a); 11126 } 11127 11128 static int __ATTRS_o_ai 11129 vec_any_ge(vector unsigned int a, vector unsigned int b) 11130 { 11131 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, b, a); 11132 } 11133 11134 static int __ATTRS_o_ai 11135 vec_any_ge(vector unsigned int a, vector bool int b) 11136 { 11137 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)b, a); 11138 } 11139 11140 static int __ATTRS_o_ai 11141 vec_any_ge(vector bool int a, vector int b) 11142 { 11143 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, 11144 (vector unsigned int)b, 11145 (vector unsigned int)a); 11146 } 11147 11148 static int __ATTRS_o_ai 11149 vec_any_ge(vector bool int a, vector unsigned int b) 11150 { 11151 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, b, (vector unsigned int)a); 11152 } 11153 11154 static int __ATTRS_o_ai 11155 vec_any_ge(vector bool int a, vector bool int b) 11156 { 11157 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, 11158 (vector unsigned int)b, 11159 (vector unsigned int)a); 11160 } 11161 11162 static int __ATTRS_o_ai 11163 vec_any_ge(vector float a, vector float b) 11164 { 11165 return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, a, b); 11166 } 11167 11168 /* vec_any_gt */ 11169 11170 static int __ATTRS_o_ai 11171 vec_any_gt(vector signed char a, vector signed char b) 11172 { 11173 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, a, b); 11174 } 11175 11176 static int __ATTRS_o_ai 11177 vec_any_gt(vector signed char a, vector bool char b) 11178 { 11179 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, a, (vector signed char)b); 11180 } 11181 11182 static int __ATTRS_o_ai 11183 vec_any_gt(vector unsigned char a, vector unsigned char b) 11184 { 11185 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, a, b); 11186 } 11187 11188 static int __ATTRS_o_ai 11189 vec_any_gt(vector unsigned char a, vector bool char b) 11190 { 11191 return 11192 __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, a, (vector unsigned char)b); 11193 } 11194 11195 static int __ATTRS_o_ai 11196 vec_any_gt(vector bool char a, vector signed char b) 11197 { 11198 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, 11199 (vector unsigned char)a, 11200 (vector unsigned char)b); 11201 } 11202 11203 static int __ATTRS_o_ai 11204 vec_any_gt(vector bool char a, vector unsigned char b) 11205 { 11206 return 11207 __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)a, b); 11208 } 11209 11210 static int __ATTRS_o_ai 11211 vec_any_gt(vector bool char a, vector bool char b) 11212 { 11213 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, 11214 (vector unsigned char)a, 11215 (vector unsigned char)b); 11216 } 11217 11218 static int __ATTRS_o_ai 11219 vec_any_gt(vector short a, vector short b) 11220 { 11221 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, a, b); 11222 } 11223 11224 static int __ATTRS_o_ai 11225 vec_any_gt(vector short a, vector bool short b) 11226 { 11227 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, a, (vector short)b); 11228 } 11229 11230 static int __ATTRS_o_ai 11231 vec_any_gt(vector unsigned short a, vector unsigned short b) 11232 { 11233 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, a, b); 11234 } 11235 11236 static int __ATTRS_o_ai 11237 vec_any_gt(vector unsigned short a, vector bool short b) 11238 { 11239 return 11240 __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, a, (vector unsigned short)b); 11241 } 11242 11243 static int __ATTRS_o_ai 11244 vec_any_gt(vector bool short a, vector short b) 11245 { 11246 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, 11247 (vector unsigned short)a, 11248 (vector unsigned short)b); 11249 } 11250 11251 static int __ATTRS_o_ai 11252 vec_any_gt(vector bool short a, vector unsigned short b) 11253 { 11254 return 11255 __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)a, b); 11256 } 11257 11258 static int __ATTRS_o_ai 11259 vec_any_gt(vector bool short a, vector bool short b) 11260 { 11261 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, 11262 (vector unsigned short)a, 11263 (vector unsigned short)b); 11264 } 11265 11266 static int __ATTRS_o_ai 11267 vec_any_gt(vector int a, vector int b) 11268 { 11269 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, a, b); 11270 } 11271 11272 static int __ATTRS_o_ai 11273 vec_any_gt(vector int a, vector bool int b) 11274 { 11275 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, a, (vector int)b); 11276 } 11277 11278 static int __ATTRS_o_ai 11279 vec_any_gt(vector unsigned int a, vector unsigned int b) 11280 { 11281 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, a, b); 11282 } 11283 11284 static int __ATTRS_o_ai 11285 vec_any_gt(vector unsigned int a, vector bool int b) 11286 { 11287 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, a, (vector unsigned int)b); 11288 } 11289 11290 static int __ATTRS_o_ai 11291 vec_any_gt(vector bool int a, vector int b) 11292 { 11293 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, 11294 (vector unsigned int)a, 11295 (vector unsigned int)b); 11296 } 11297 11298 static int __ATTRS_o_ai 11299 vec_any_gt(vector bool int a, vector unsigned int b) 11300 { 11301 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)a, b); 11302 } 11303 11304 static int __ATTRS_o_ai 11305 vec_any_gt(vector bool int a, vector bool int b) 11306 { 11307 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, 11308 (vector unsigned int)a, 11309 (vector unsigned int)b); 11310 } 11311 11312 static int __ATTRS_o_ai 11313 vec_any_gt(vector float a, vector float b) 11314 { 11315 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, a, b); 11316 } 11317 11318 /* vec_any_le */ 11319 11320 static int __ATTRS_o_ai 11321 vec_any_le(vector signed char a, vector signed char b) 11322 { 11323 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, a, b); 11324 } 11325 11326 static int __ATTRS_o_ai 11327 vec_any_le(vector signed char a, vector bool char b) 11328 { 11329 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, a, (vector signed char)b); 11330 } 11331 11332 static int __ATTRS_o_ai 11333 vec_any_le(vector unsigned char a, vector unsigned char b) 11334 { 11335 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, a, b); 11336 } 11337 11338 static int __ATTRS_o_ai 11339 vec_any_le(vector unsigned char a, vector bool char b) 11340 { 11341 return 11342 __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, a, (vector unsigned char)b); 11343 } 11344 11345 static int __ATTRS_o_ai 11346 vec_any_le(vector bool char a, vector signed char b) 11347 { 11348 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, 11349 (vector unsigned char)a, 11350 (vector unsigned char)b); 11351 } 11352 11353 static int __ATTRS_o_ai 11354 vec_any_le(vector bool char a, vector unsigned char b) 11355 { 11356 return 11357 __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)a, b); 11358 } 11359 11360 static int __ATTRS_o_ai 11361 vec_any_le(vector bool char a, vector bool char b) 11362 { 11363 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, 11364 (vector unsigned char)a, 11365 (vector unsigned char)b); 11366 } 11367 11368 static int __ATTRS_o_ai 11369 vec_any_le(vector short a, vector short b) 11370 { 11371 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, a, b); 11372 } 11373 11374 static int __ATTRS_o_ai 11375 vec_any_le(vector short a, vector bool short b) 11376 { 11377 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, a, (vector short)b); 11378 } 11379 11380 static int __ATTRS_o_ai 11381 vec_any_le(vector unsigned short a, vector unsigned short b) 11382 { 11383 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, a, b); 11384 } 11385 11386 static int __ATTRS_o_ai 11387 vec_any_le(vector unsigned short a, vector bool short b) 11388 { 11389 return 11390 __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, a, (vector unsigned short)b); 11391 } 11392 11393 static int __ATTRS_o_ai 11394 vec_any_le(vector bool short a, vector short b) 11395 { 11396 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, 11397 (vector unsigned short)a, 11398 (vector unsigned short)b); 11399 } 11400 11401 static int __ATTRS_o_ai 11402 vec_any_le(vector bool short a, vector unsigned short b) 11403 { 11404 return 11405 __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)a, b); 11406 } 11407 11408 static int __ATTRS_o_ai 11409 vec_any_le(vector bool short a, vector bool short b) 11410 { 11411 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, 11412 (vector unsigned short)a, 11413 (vector unsigned short)b); 11414 } 11415 11416 static int __ATTRS_o_ai 11417 vec_any_le(vector int a, vector int b) 11418 { 11419 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, a, b); 11420 } 11421 11422 static int __ATTRS_o_ai 11423 vec_any_le(vector int a, vector bool int b) 11424 { 11425 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, a, (vector int)b); 11426 } 11427 11428 static int __ATTRS_o_ai 11429 vec_any_le(vector unsigned int a, vector unsigned int b) 11430 { 11431 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, a, b); 11432 } 11433 11434 static int __ATTRS_o_ai 11435 vec_any_le(vector unsigned int a, vector bool int b) 11436 { 11437 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, a, (vector unsigned int)b); 11438 } 11439 11440 static int __ATTRS_o_ai 11441 vec_any_le(vector bool int a, vector int b) 11442 { 11443 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, 11444 (vector unsigned int)a, 11445 (vector unsigned int)b); 11446 } 11447 11448 static int __ATTRS_o_ai 11449 vec_any_le(vector bool int a, vector unsigned int b) 11450 { 11451 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)a, b); 11452 } 11453 11454 static int __ATTRS_o_ai 11455 vec_any_le(vector bool int a, vector bool int b) 11456 { 11457 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, 11458 (vector unsigned int)a, 11459 (vector unsigned int)b); 11460 } 11461 11462 static int __ATTRS_o_ai 11463 vec_any_le(vector float a, vector float b) 11464 { 11465 return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, b, a); 11466 } 11467 11468 /* vec_any_lt */ 11469 11470 static int __ATTRS_o_ai 11471 vec_any_lt(vector signed char a, vector signed char b) 11472 { 11473 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, b, a); 11474 } 11475 11476 static int __ATTRS_o_ai 11477 vec_any_lt(vector signed char a, vector bool char b) 11478 { 11479 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, (vector signed char)b, a); 11480 } 11481 11482 static int __ATTRS_o_ai 11483 vec_any_lt(vector unsigned char a, vector unsigned char b) 11484 { 11485 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, b, a); 11486 } 11487 11488 static int __ATTRS_o_ai 11489 vec_any_lt(vector unsigned char a, vector bool char b) 11490 { 11491 return 11492 __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)b, a); 11493 } 11494 11495 static int __ATTRS_o_ai 11496 vec_any_lt(vector bool char a, vector signed char b) 11497 { 11498 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, 11499 (vector unsigned char)b, 11500 (vector unsigned char)a); 11501 } 11502 11503 static int __ATTRS_o_ai 11504 vec_any_lt(vector bool char a, vector unsigned char b) 11505 { 11506 return 11507 __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, b, (vector unsigned char)a); 11508 } 11509 11510 static int __ATTRS_o_ai 11511 vec_any_lt(vector bool char a, vector bool char b) 11512 { 11513 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, 11514 (vector unsigned char)b, 11515 (vector unsigned char)a); 11516 } 11517 11518 static int __ATTRS_o_ai 11519 vec_any_lt(vector short a, vector short b) 11520 { 11521 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, b, a); 11522 } 11523 11524 static int __ATTRS_o_ai 11525 vec_any_lt(vector short a, vector bool short b) 11526 { 11527 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, (vector short)b, a); 11528 } 11529 11530 static int __ATTRS_o_ai 11531 vec_any_lt(vector unsigned short a, vector unsigned short b) 11532 { 11533 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, b, a); 11534 } 11535 11536 static int __ATTRS_o_ai 11537 vec_any_lt(vector unsigned short a, vector bool short b) 11538 { 11539 return 11540 __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)b, a); 11541 } 11542 11543 static int __ATTRS_o_ai 11544 vec_any_lt(vector bool short a, vector short b) 11545 { 11546 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, 11547 (vector unsigned short)b, 11548 (vector unsigned short)a); 11549 } 11550 11551 static int __ATTRS_o_ai 11552 vec_any_lt(vector bool short a, vector unsigned short b) 11553 { 11554 return 11555 __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, b, (vector unsigned short)a); 11556 } 11557 11558 static int __ATTRS_o_ai 11559 vec_any_lt(vector bool short a, vector bool short b) 11560 { 11561 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, 11562 (vector unsigned short)b, 11563 (vector unsigned short)a); 11564 } 11565 11566 static int __ATTRS_o_ai 11567 vec_any_lt(vector int a, vector int b) 11568 { 11569 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, b, a); 11570 } 11571 11572 static int __ATTRS_o_ai 11573 vec_any_lt(vector int a, vector bool int b) 11574 { 11575 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, (vector int)b, a); 11576 } 11577 11578 static int __ATTRS_o_ai 11579 vec_any_lt(vector unsigned int a, vector unsigned int b) 11580 { 11581 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, b, a); 11582 } 11583 11584 static int __ATTRS_o_ai 11585 vec_any_lt(vector unsigned int a, vector bool int b) 11586 { 11587 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)b, a); 11588 } 11589 11590 static int __ATTRS_o_ai 11591 vec_any_lt(vector bool int a, vector int b) 11592 { 11593 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, 11594 (vector unsigned int)b, 11595 (vector unsigned int)a); 11596 } 11597 11598 static int __ATTRS_o_ai 11599 vec_any_lt(vector bool int a, vector unsigned int b) 11600 { 11601 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, b, (vector unsigned int)a); 11602 } 11603 11604 static int __ATTRS_o_ai 11605 vec_any_lt(vector bool int a, vector bool int b) 11606 { 11607 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, 11608 (vector unsigned int)b, 11609 (vector unsigned int)a); 11610 } 11611 11612 static int __ATTRS_o_ai 11613 vec_any_lt(vector float a, vector float b) 11614 { 11615 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, b, a); 11616 } 11617 11618 /* vec_any_nan */ 11619 11620 static int __attribute__((__always_inline__)) 11621 vec_any_nan(vector float a) 11622 { 11623 return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, a, a); 11624 } 11625 11626 /* vec_any_ne */ 11627 11628 static int __ATTRS_o_ai 11629 vec_any_ne(vector signed char a, vector signed char b) 11630 { 11631 return 11632 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)a, (vector char)b); 11633 } 11634 11635 static int __ATTRS_o_ai 11636 vec_any_ne(vector signed char a, vector bool char b) 11637 { 11638 return 11639 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)a, (vector char)b); 11640 } 11641 11642 static int __ATTRS_o_ai 11643 vec_any_ne(vector unsigned char a, vector unsigned char b) 11644 { 11645 return 11646 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)a, (vector char)b); 11647 } 11648 11649 static int __ATTRS_o_ai 11650 vec_any_ne(vector unsigned char a, vector bool char b) 11651 { 11652 return 11653 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)a, (vector char)b); 11654 } 11655 11656 static int __ATTRS_o_ai 11657 vec_any_ne(vector bool char a, vector signed char b) 11658 { 11659 return 11660 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)a, (vector char)b); 11661 } 11662 11663 static int __ATTRS_o_ai 11664 vec_any_ne(vector bool char a, vector unsigned char b) 11665 { 11666 return 11667 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)a, (vector char)b); 11668 } 11669 11670 static int __ATTRS_o_ai 11671 vec_any_ne(vector bool char a, vector bool char b) 11672 { 11673 return 11674 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)a, (vector char)b); 11675 } 11676 11677 static int __ATTRS_o_ai 11678 vec_any_ne(vector short a, vector short b) 11679 { 11680 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, a, b); 11681 } 11682 11683 static int __ATTRS_o_ai 11684 vec_any_ne(vector short a, vector bool short b) 11685 { 11686 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, a, (vector short)b); 11687 } 11688 11689 static int __ATTRS_o_ai 11690 vec_any_ne(vector unsigned short a, vector unsigned short b) 11691 { 11692 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, 11693 (vector short)a, 11694 (vector short)b); 11695 } 11696 11697 static int __ATTRS_o_ai 11698 vec_any_ne(vector unsigned short a, vector bool short b) 11699 { 11700 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, 11701 (vector short)a, 11702 (vector short)b); 11703 } 11704 11705 static int __ATTRS_o_ai 11706 vec_any_ne(vector bool short a, vector short b) 11707 { 11708 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, 11709 (vector short)a, 11710 (vector short)b); 11711 } 11712 11713 static int __ATTRS_o_ai 11714 vec_any_ne(vector bool short a, vector unsigned short b) 11715 { 11716 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, 11717 (vector short)a, 11718 (vector short)b); 11719 } 11720 11721 static int __ATTRS_o_ai 11722 vec_any_ne(vector bool short a, vector bool short b) 11723 { 11724 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, 11725 (vector short)a, 11726 (vector short)b); 11727 } 11728 11729 static int __ATTRS_o_ai 11730 vec_any_ne(vector pixel a, vector pixel b) 11731 { 11732 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, 11733 (vector short)a, 11734 (vector short)b); 11735 } 11736 11737 static int __ATTRS_o_ai 11738 vec_any_ne(vector int a, vector int b) 11739 { 11740 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, a, b); 11741 } 11742 11743 static int __ATTRS_o_ai 11744 vec_any_ne(vector int a, vector bool int b) 11745 { 11746 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, a, (vector int)b); 11747 } 11748 11749 static int __ATTRS_o_ai 11750 vec_any_ne(vector unsigned int a, vector unsigned int b) 11751 { 11752 return 11753 __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)a, (vector int)b); 11754 } 11755 11756 static int __ATTRS_o_ai 11757 vec_any_ne(vector unsigned int a, vector bool int b) 11758 { 11759 return 11760 __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)a, (vector int)b); 11761 } 11762 11763 static int __ATTRS_o_ai 11764 vec_any_ne(vector bool int a, vector int b) 11765 { 11766 return 11767 __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)a, (vector int)b); 11768 } 11769 11770 static int __ATTRS_o_ai 11771 vec_any_ne(vector bool int a, vector unsigned int b) 11772 { 11773 return 11774 __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)a, (vector int)b); 11775 } 11776 11777 static int __ATTRS_o_ai 11778 vec_any_ne(vector bool int a, vector bool int b) 11779 { 11780 return 11781 __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)a, (vector int)b); 11782 } 11783 11784 static int __ATTRS_o_ai 11785 vec_any_ne(vector float a, vector float b) 11786 { 11787 return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, a, b); 11788 } 11789 11790 /* vec_any_nge */ 11791 11792 static int __attribute__((__always_inline__)) 11793 vec_any_nge(vector float a, vector float b) 11794 { 11795 return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, a, b); 11796 } 11797 11798 /* vec_any_ngt */ 11799 11800 static int __attribute__((__always_inline__)) 11801 vec_any_ngt(vector float a, vector float b) 11802 { 11803 return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, a, b); 11804 } 11805 11806 /* vec_any_nle */ 11807 11808 static int __attribute__((__always_inline__)) 11809 vec_any_nle(vector float a, vector float b) 11810 { 11811 return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, b, a); 11812 } 11813 11814 /* vec_any_nlt */ 11815 11816 static int __attribute__((__always_inline__)) 11817 vec_any_nlt(vector float a, vector float b) 11818 { 11819 return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, b, a); 11820 } 11821 11822 /* vec_any_numeric */ 11823 11824 static int __attribute__((__always_inline__)) 11825 vec_any_numeric(vector float a) 11826 { 11827 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, a, a); 11828 } 11829 11830 /* vec_any_out */ 11831 11832 static int __attribute__((__always_inline__)) 11833 vec_any_out(vector float a, vector float b) 11834 { 11835 return __builtin_altivec_vcmpbfp_p(__CR6_EQ_REV, a, b); 11836 } 11837 11838 #undef __ATTRS_o_ai 11839 11840 #endif /* __ALTIVEC_H */ 11841