altivec.h revision e19df1839992d54d37624e617f410ac7dda87f07
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 39static vector signed char __ATTRS_o_ai 40vec_perm(vector signed char a, vector signed char b, vector unsigned char c); 41 42static vector unsigned char __ATTRS_o_ai 43vec_perm(vector unsigned char a, 44 vector unsigned char b, 45 vector unsigned char c); 46 47static vector bool char __ATTRS_o_ai 48vec_perm(vector bool char a, vector bool char b, vector unsigned char c); 49 50static vector short __ATTRS_o_ai 51vec_perm(vector short a, vector short b, vector unsigned char c); 52 53static vector unsigned short __ATTRS_o_ai 54vec_perm(vector unsigned short a, 55 vector unsigned short b, 56 vector unsigned char c); 57 58static vector bool short __ATTRS_o_ai 59vec_perm(vector bool short a, vector bool short b, vector unsigned char c); 60 61static vector pixel __ATTRS_o_ai 62vec_perm(vector pixel a, vector pixel b, vector unsigned char c); 63 64static vector int __ATTRS_o_ai 65vec_perm(vector int a, vector int b, vector unsigned char c); 66 67static vector unsigned int __ATTRS_o_ai 68vec_perm(vector unsigned int a, vector unsigned int b, vector unsigned char c); 69 70static vector bool int __ATTRS_o_ai 71vec_perm(vector bool int a, vector bool int b, vector unsigned char c); 72 73static vector float __ATTRS_o_ai 74vec_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 82static vector signed char __ATTRS_o_ai 83vec_abs(vector signed char a) 84{ 85 return __builtin_altivec_vmaxsb(a, -a); 86} 87 88static vector signed short __ATTRS_o_ai 89vec_abs(vector signed short a) 90{ 91 return __builtin_altivec_vmaxsh(a, -a); 92} 93 94static vector signed int __ATTRS_o_ai 95vec_abs(vector signed int a) 96{ 97 return __builtin_altivec_vmaxsw(a, -a); 98} 99 100static vector float __ATTRS_o_ai 101vec_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 114static vector signed char __ATTRS_o_ai 115vec_abss(vector signed char a) 116{ 117 return __builtin_altivec_vmaxsb 118 (a, __builtin_altivec_vsubsbs((vector signed char)(0), a)); 119} 120 121static vector signed short __ATTRS_o_ai 122vec_abss(vector signed short a) 123{ 124 return __builtin_altivec_vmaxsh 125 (a, __builtin_altivec_vsubshs((vector signed short)(0), a)); 126} 127 128static vector signed int __ATTRS_o_ai 129vec_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 137static vector signed char __ATTRS_o_ai 138vec_add(vector signed char a, vector signed char b) 139{ 140 return a + b; 141} 142 143static vector signed char __ATTRS_o_ai 144vec_add(vector bool char a, vector signed char b) 145{ 146 return (vector signed char)a + b; 147} 148 149static vector signed char __ATTRS_o_ai 150vec_add(vector signed char a, vector bool char b) 151{ 152 return a + (vector signed char)b; 153} 154 155static vector unsigned char __ATTRS_o_ai 156vec_add(vector unsigned char a, vector unsigned char b) 157{ 158 return a + b; 159} 160 161static vector unsigned char __ATTRS_o_ai 162vec_add(vector bool char a, vector unsigned char b) 163{ 164 return (vector unsigned char)a + b; 165} 166 167static vector unsigned char __ATTRS_o_ai 168vec_add(vector unsigned char a, vector bool char b) 169{ 170 return a + (vector unsigned char)b; 171} 172 173static vector short __ATTRS_o_ai 174vec_add(vector short a, vector short b) 175{ 176 return a + b; 177} 178 179static vector short __ATTRS_o_ai 180vec_add(vector bool short a, vector short b) 181{ 182 return (vector short)a + b; 183} 184 185static vector short __ATTRS_o_ai 186vec_add(vector short a, vector bool short b) 187{ 188 return a + (vector short)b; 189} 190 191static vector unsigned short __ATTRS_o_ai 192vec_add(vector unsigned short a, vector unsigned short b) 193{ 194 return a + b; 195} 196 197static vector unsigned short __ATTRS_o_ai 198vec_add(vector bool short a, vector unsigned short b) 199{ 200 return (vector unsigned short)a + b; 201} 202 203static vector unsigned short __ATTRS_o_ai 204vec_add(vector unsigned short a, vector bool short b) 205{ 206 return a + (vector unsigned short)b; 207} 208 209static vector int __ATTRS_o_ai 210vec_add(vector int a, vector int b) 211{ 212 return a + b; 213} 214 215static vector int __ATTRS_o_ai 216vec_add(vector bool int a, vector int b) 217{ 218 return (vector int)a + b; 219} 220 221static vector int __ATTRS_o_ai 222vec_add(vector int a, vector bool int b) 223{ 224 return a + (vector int)b; 225} 226 227static vector unsigned int __ATTRS_o_ai 228vec_add(vector unsigned int a, vector unsigned int b) 229{ 230 return a + b; 231} 232 233static vector unsigned int __ATTRS_o_ai 234vec_add(vector bool int a, vector unsigned int b) 235{ 236 return (vector unsigned int)a + b; 237} 238 239static vector unsigned int __ATTRS_o_ai 240vec_add(vector unsigned int a, vector bool int b) 241{ 242 return a + (vector unsigned int)b; 243} 244 245static vector float __ATTRS_o_ai 246vec_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 255static vector signed char __ATTRS_o_ai 256vec_vaddubm(vector signed char a, vector signed char b) 257{ 258 return a + b; 259} 260 261static vector signed char __ATTRS_o_ai 262vec_vaddubm(vector bool char a, vector signed char b) 263{ 264 return (vector signed char)a + b; 265} 266 267static vector signed char __ATTRS_o_ai 268vec_vaddubm(vector signed char a, vector bool char b) 269{ 270 return a + (vector signed char)b; 271} 272 273static vector unsigned char __ATTRS_o_ai 274vec_vaddubm(vector unsigned char a, vector unsigned char b) 275{ 276 return a + b; 277} 278 279static vector unsigned char __ATTRS_o_ai 280vec_vaddubm(vector bool char a, vector unsigned char b) 281{ 282 return (vector unsigned char)a + b; 283} 284 285static vector unsigned char __ATTRS_o_ai 286vec_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 295static vector short __ATTRS_o_ai 296vec_vadduhm(vector short a, vector short b) 297{ 298 return a + b; 299} 300 301static vector short __ATTRS_o_ai 302vec_vadduhm(vector bool short a, vector short b) 303{ 304 return (vector short)a + b; 305} 306 307static vector short __ATTRS_o_ai 308vec_vadduhm(vector short a, vector bool short b) 309{ 310 return a + (vector short)b; 311} 312 313static vector unsigned short __ATTRS_o_ai 314vec_vadduhm(vector unsigned short a, vector unsigned short b) 315{ 316 return a + b; 317} 318 319static vector unsigned short __ATTRS_o_ai 320vec_vadduhm(vector bool short a, vector unsigned short b) 321{ 322 return (vector unsigned short)a + b; 323} 324 325static vector unsigned short __ATTRS_o_ai 326vec_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 335static vector int __ATTRS_o_ai 336vec_vadduwm(vector int a, vector int b) 337{ 338 return a + b; 339} 340 341static vector int __ATTRS_o_ai 342vec_vadduwm(vector bool int a, vector int b) 343{ 344 return (vector int)a + b; 345} 346 347static vector int __ATTRS_o_ai 348vec_vadduwm(vector int a, vector bool int b) 349{ 350 return a + (vector int)b; 351} 352 353static vector unsigned int __ATTRS_o_ai 354vec_vadduwm(vector unsigned int a, vector unsigned int b) 355{ 356 return a + b; 357} 358 359static vector unsigned int __ATTRS_o_ai 360vec_vadduwm(vector bool int a, vector unsigned int b) 361{ 362 return (vector unsigned int)a + b; 363} 364 365static vector unsigned int __ATTRS_o_ai 366vec_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 375static vector float __attribute__((__always_inline__)) 376vec_vaddfp(vector float a, vector float b) 377{ 378 return a + b; 379} 380 381/* vec_addc */ 382 383static vector unsigned int __attribute__((__always_inline__)) 384vec_addc(vector unsigned int a, vector unsigned int b) 385{ 386 return __builtin_altivec_vaddcuw(a, b); 387} 388 389/* vec_vaddcuw */ 390 391static vector unsigned int __attribute__((__always_inline__)) 392vec_vaddcuw(vector unsigned int a, vector unsigned int b) 393{ 394 return __builtin_altivec_vaddcuw(a, b); 395} 396 397/* vec_adds */ 398 399static vector signed char __ATTRS_o_ai 400vec_adds(vector signed char a, vector signed char b) 401{ 402 return __builtin_altivec_vaddsbs(a, b); 403} 404 405static vector signed char __ATTRS_o_ai 406vec_adds(vector bool char a, vector signed char b) 407{ 408 return __builtin_altivec_vaddsbs((vector signed char)a, b); 409} 410 411static vector signed char __ATTRS_o_ai 412vec_adds(vector signed char a, vector bool char b) 413{ 414 return __builtin_altivec_vaddsbs(a, (vector signed char)b); 415} 416 417static vector unsigned char __ATTRS_o_ai 418vec_adds(vector unsigned char a, vector unsigned char b) 419{ 420 return __builtin_altivec_vaddubs(a, b); 421} 422 423static vector unsigned char __ATTRS_o_ai 424vec_adds(vector bool char a, vector unsigned char b) 425{ 426 return __builtin_altivec_vaddubs((vector unsigned char)a, b); 427} 428 429static vector unsigned char __ATTRS_o_ai 430vec_adds(vector unsigned char a, vector bool char b) 431{ 432 return __builtin_altivec_vaddubs(a, (vector unsigned char)b); 433} 434 435static vector short __ATTRS_o_ai 436vec_adds(vector short a, vector short b) 437{ 438 return __builtin_altivec_vaddshs(a, b); 439} 440 441static vector short __ATTRS_o_ai 442vec_adds(vector bool short a, vector short b) 443{ 444 return __builtin_altivec_vaddshs((vector short)a, b); 445} 446 447static vector short __ATTRS_o_ai 448vec_adds(vector short a, vector bool short b) 449{ 450 return __builtin_altivec_vaddshs(a, (vector short)b); 451} 452 453static vector unsigned short __ATTRS_o_ai 454vec_adds(vector unsigned short a, vector unsigned short b) 455{ 456 return __builtin_altivec_vadduhs(a, b); 457} 458 459static vector unsigned short __ATTRS_o_ai 460vec_adds(vector bool short a, vector unsigned short b) 461{ 462 return __builtin_altivec_vadduhs((vector unsigned short)a, b); 463} 464 465static vector unsigned short __ATTRS_o_ai 466vec_adds(vector unsigned short a, vector bool short b) 467{ 468 return __builtin_altivec_vadduhs(a, (vector unsigned short)b); 469} 470 471static vector int __ATTRS_o_ai 472vec_adds(vector int a, vector int b) 473{ 474 return __builtin_altivec_vaddsws(a, b); 475} 476 477static vector int __ATTRS_o_ai 478vec_adds(vector bool int a, vector int b) 479{ 480 return __builtin_altivec_vaddsws((vector int)a, b); 481} 482 483static vector int __ATTRS_o_ai 484vec_adds(vector int a, vector bool int b) 485{ 486 return __builtin_altivec_vaddsws(a, (vector int)b); 487} 488 489static vector unsigned int __ATTRS_o_ai 490vec_adds(vector unsigned int a, vector unsigned int b) 491{ 492 return __builtin_altivec_vadduws(a, b); 493} 494 495static vector unsigned int __ATTRS_o_ai 496vec_adds(vector bool int a, vector unsigned int b) 497{ 498 return __builtin_altivec_vadduws((vector unsigned int)a, b); 499} 500 501static vector unsigned int __ATTRS_o_ai 502vec_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 509static vector signed char __ATTRS_o_ai 510vec_vaddsbs(vector signed char a, vector signed char b) 511{ 512 return __builtin_altivec_vaddsbs(a, b); 513} 514 515static vector signed char __ATTRS_o_ai 516vec_vaddsbs(vector bool char a, vector signed char b) 517{ 518 return __builtin_altivec_vaddsbs((vector signed char)a, b); 519} 520 521static vector signed char __ATTRS_o_ai 522vec_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 529static vector unsigned char __ATTRS_o_ai 530vec_vaddubs(vector unsigned char a, vector unsigned char b) 531{ 532 return __builtin_altivec_vaddubs(a, b); 533} 534 535static vector unsigned char __ATTRS_o_ai 536vec_vaddubs(vector bool char a, vector unsigned char b) 537{ 538 return __builtin_altivec_vaddubs((vector unsigned char)a, b); 539} 540 541static vector unsigned char __ATTRS_o_ai 542vec_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 549static vector short __ATTRS_o_ai 550vec_vaddshs(vector short a, vector short b) 551{ 552 return __builtin_altivec_vaddshs(a, b); 553} 554 555static vector short __ATTRS_o_ai 556vec_vaddshs(vector bool short a, vector short b) 557{ 558 return __builtin_altivec_vaddshs((vector short)a, b); 559} 560 561static vector short __ATTRS_o_ai 562vec_vaddshs(vector short a, vector bool short b) 563{ 564 return __builtin_altivec_vaddshs(a, (vector short)b); 565} 566 567/* vec_vadduhs */ 568 569static vector unsigned short __ATTRS_o_ai 570vec_vadduhs(vector unsigned short a, vector unsigned short b) 571{ 572 return __builtin_altivec_vadduhs(a, b); 573} 574 575static vector unsigned short __ATTRS_o_ai 576vec_vadduhs(vector bool short a, vector unsigned short b) 577{ 578 return __builtin_altivec_vadduhs((vector unsigned short)a, b); 579} 580 581static vector unsigned short __ATTRS_o_ai 582vec_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 589static vector int __ATTRS_o_ai 590vec_vaddsws(vector int a, vector int b) 591{ 592 return __builtin_altivec_vaddsws(a, b); 593} 594 595static vector int __ATTRS_o_ai 596vec_vaddsws(vector bool int a, vector int b) 597{ 598 return __builtin_altivec_vaddsws((vector int)a, b); 599} 600 601static vector int __ATTRS_o_ai 602vec_vaddsws(vector int a, vector bool int b) 603{ 604 return __builtin_altivec_vaddsws(a, (vector int)b); 605} 606 607/* vec_vadduws */ 608 609static vector unsigned int __ATTRS_o_ai 610vec_vadduws(vector unsigned int a, vector unsigned int b) 611{ 612 return __builtin_altivec_vadduws(a, b); 613} 614 615static vector unsigned int __ATTRS_o_ai 616vec_vadduws(vector bool int a, vector unsigned int b) 617{ 618 return __builtin_altivec_vadduws((vector unsigned int)a, b); 619} 620 621static vector unsigned int __ATTRS_o_ai 622vec_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 631static vector signed char __ATTRS_o_ai 632vec_and(vector signed char a, vector signed char b) 633{ 634 return a & b; 635} 636 637static vector signed char __ATTRS_o_ai 638vec_and(vector bool char a, vector signed char b) 639{ 640 return (vector signed char)a & b; 641} 642 643static vector signed char __ATTRS_o_ai 644vec_and(vector signed char a, vector bool char b) 645{ 646 return a & (vector signed char)b; 647} 648 649static vector unsigned char __ATTRS_o_ai 650vec_and(vector unsigned char a, vector unsigned char b) 651{ 652 return a & b; 653} 654 655static vector unsigned char __ATTRS_o_ai 656vec_and(vector bool char a, vector unsigned char b) 657{ 658 return (vector unsigned char)a & b; 659} 660 661static vector unsigned char __ATTRS_o_ai 662vec_and(vector unsigned char a, vector bool char b) 663{ 664 return a & (vector unsigned char)b; 665} 666 667static vector bool char __ATTRS_o_ai 668vec_and(vector bool char a, vector bool char b) 669{ 670 return a & b; 671} 672 673static vector short __ATTRS_o_ai 674vec_and(vector short a, vector short b) 675{ 676 return a & b; 677} 678 679static vector short __ATTRS_o_ai 680vec_and(vector bool short a, vector short b) 681{ 682 return (vector short)a & b; 683} 684 685static vector short __ATTRS_o_ai 686vec_and(vector short a, vector bool short b) 687{ 688 return a & (vector short)b; 689} 690 691static vector unsigned short __ATTRS_o_ai 692vec_and(vector unsigned short a, vector unsigned short b) 693{ 694 return a & b; 695} 696 697static vector unsigned short __ATTRS_o_ai 698vec_and(vector bool short a, vector unsigned short b) 699{ 700 return (vector unsigned short)a & b; 701} 702 703static vector unsigned short __ATTRS_o_ai 704vec_and(vector unsigned short a, vector bool short b) 705{ 706 return a & (vector unsigned short)b; 707} 708 709static vector bool short __ATTRS_o_ai 710vec_and(vector bool short a, vector bool short b) 711{ 712 return a & b; 713} 714 715static vector int __ATTRS_o_ai 716vec_and(vector int a, vector int b) 717{ 718 return a & b; 719} 720 721static vector int __ATTRS_o_ai 722vec_and(vector bool int a, vector int b) 723{ 724 return (vector int)a & b; 725} 726 727static vector int __ATTRS_o_ai 728vec_and(vector int a, vector bool int b) 729{ 730 return a & (vector int)b; 731} 732 733static vector unsigned int __ATTRS_o_ai 734vec_and(vector unsigned int a, vector unsigned int b) 735{ 736 return a & b; 737} 738 739static vector unsigned int __ATTRS_o_ai 740vec_and(vector bool int a, vector unsigned int b) 741{ 742 return (vector unsigned int)a & b; 743} 744 745static vector unsigned int __ATTRS_o_ai 746vec_and(vector unsigned int a, vector bool int b) 747{ 748 return a & (vector unsigned int)b; 749} 750 751static vector bool int __ATTRS_o_ai 752vec_and(vector bool int a, vector bool int b) 753{ 754 return a & b; 755} 756 757static vector float __ATTRS_o_ai 758vec_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 764static vector float __ATTRS_o_ai 765vec_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 771static vector float __ATTRS_o_ai 772vec_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 780static vector signed char __ATTRS_o_ai 781vec_vand(vector signed char a, vector signed char b) 782{ 783 return a & b; 784} 785 786static vector signed char __ATTRS_o_ai 787vec_vand(vector bool char a, vector signed char b) 788{ 789 return (vector signed char)a & b; 790} 791 792static vector signed char __ATTRS_o_ai 793vec_vand(vector signed char a, vector bool char b) 794{ 795 return a & (vector signed char)b; 796} 797 798static vector unsigned char __ATTRS_o_ai 799vec_vand(vector unsigned char a, vector unsigned char b) 800{ 801 return a & b; 802} 803 804static vector unsigned char __ATTRS_o_ai 805vec_vand(vector bool char a, vector unsigned char b) 806{ 807 return (vector unsigned char)a & b; 808} 809 810static vector unsigned char __ATTRS_o_ai 811vec_vand(vector unsigned char a, vector bool char b) 812{ 813 return a & (vector unsigned char)b; 814} 815 816static vector bool char __ATTRS_o_ai 817vec_vand(vector bool char a, vector bool char b) 818{ 819 return a & b; 820} 821 822static vector short __ATTRS_o_ai 823vec_vand(vector short a, vector short b) 824{ 825 return a & b; 826} 827 828static vector short __ATTRS_o_ai 829vec_vand(vector bool short a, vector short b) 830{ 831 return (vector short)a & b; 832} 833 834static vector short __ATTRS_o_ai 835vec_vand(vector short a, vector bool short b) 836{ 837 return a & (vector short)b; 838} 839 840static vector unsigned short __ATTRS_o_ai 841vec_vand(vector unsigned short a, vector unsigned short b) 842{ 843 return a & b; 844} 845 846static vector unsigned short __ATTRS_o_ai 847vec_vand(vector bool short a, vector unsigned short b) 848{ 849 return (vector unsigned short)a & b; 850} 851 852static vector unsigned short __ATTRS_o_ai 853vec_vand(vector unsigned short a, vector bool short b) 854{ 855 return a & (vector unsigned short)b; 856} 857 858static vector bool short __ATTRS_o_ai 859vec_vand(vector bool short a, vector bool short b) 860{ 861 return a & b; 862} 863 864static vector int __ATTRS_o_ai 865vec_vand(vector int a, vector int b) 866{ 867 return a & b; 868} 869 870static vector int __ATTRS_o_ai 871vec_vand(vector bool int a, vector int b) 872{ 873 return (vector int)a & b; 874} 875 876static vector int __ATTRS_o_ai 877vec_vand(vector int a, vector bool int b) 878{ 879 return a & (vector int)b; 880} 881 882static vector unsigned int __ATTRS_o_ai 883vec_vand(vector unsigned int a, vector unsigned int b) 884{ 885 return a & b; 886} 887 888static vector unsigned int __ATTRS_o_ai 889vec_vand(vector bool int a, vector unsigned int b) 890{ 891 return (vector unsigned int)a & b; 892} 893 894static vector unsigned int __ATTRS_o_ai 895vec_vand(vector unsigned int a, vector bool int b) 896{ 897 return a & (vector unsigned int)b; 898} 899 900static vector bool int __ATTRS_o_ai 901vec_vand(vector bool int a, vector bool int b) 902{ 903 return a & b; 904} 905 906static vector float __ATTRS_o_ai 907vec_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 913static vector float __ATTRS_o_ai 914vec_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 920static vector float __ATTRS_o_ai 921vec_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 931static vector signed char __ATTRS_o_ai 932vec_andc(vector signed char a, vector signed char b) 933{ 934 return a & ~b; 935} 936 937static vector signed char __ATTRS_o_ai 938vec_andc(vector bool char a, vector signed char b) 939{ 940 return (vector signed char)a & ~b; 941} 942 943static vector signed char __ATTRS_o_ai 944vec_andc(vector signed char a, vector bool char b) 945{ 946 return a & ~(vector signed char)b; 947} 948 949static vector unsigned char __ATTRS_o_ai 950vec_andc(vector unsigned char a, vector unsigned char b) 951{ 952 return a & ~b; 953} 954 955static vector unsigned char __ATTRS_o_ai 956vec_andc(vector bool char a, vector unsigned char b) 957{ 958 return (vector unsigned char)a & ~b; 959} 960 961static vector unsigned char __ATTRS_o_ai 962vec_andc(vector unsigned char a, vector bool char b) 963{ 964 return a & ~(vector unsigned char)b; 965} 966 967static vector bool char __ATTRS_o_ai 968vec_andc(vector bool char a, vector bool char b) 969{ 970 return a & ~b; 971} 972 973static vector short __ATTRS_o_ai 974vec_andc(vector short a, vector short b) 975{ 976 return a & ~b; 977} 978 979static vector short __ATTRS_o_ai 980vec_andc(vector bool short a, vector short b) 981{ 982 return (vector short)a & ~b; 983} 984 985static vector short __ATTRS_o_ai 986vec_andc(vector short a, vector bool short b) 987{ 988 return a & ~(vector short)b; 989} 990 991static vector unsigned short __ATTRS_o_ai 992vec_andc(vector unsigned short a, vector unsigned short b) 993{ 994 return a & ~b; 995} 996 997static vector unsigned short __ATTRS_o_ai 998vec_andc(vector bool short a, vector unsigned short b) 999{ 1000 return (vector unsigned short)a & ~b; 1001} 1002 1003static vector unsigned short __ATTRS_o_ai 1004vec_andc(vector unsigned short a, vector bool short b) 1005{ 1006 return a & ~(vector unsigned short)b; 1007} 1008 1009static vector bool short __ATTRS_o_ai 1010vec_andc(vector bool short a, vector bool short b) 1011{ 1012 return a & ~b; 1013} 1014 1015static vector int __ATTRS_o_ai 1016vec_andc(vector int a, vector int b) 1017{ 1018 return a & ~b; 1019} 1020 1021static vector int __ATTRS_o_ai 1022vec_andc(vector bool int a, vector int b) 1023{ 1024 return (vector int)a & ~b; 1025} 1026 1027static vector int __ATTRS_o_ai 1028vec_andc(vector int a, vector bool int b) 1029{ 1030 return a & ~(vector int)b; 1031} 1032 1033static vector unsigned int __ATTRS_o_ai 1034vec_andc(vector unsigned int a, vector unsigned int b) 1035{ 1036 return a & ~b; 1037} 1038 1039static vector unsigned int __ATTRS_o_ai 1040vec_andc(vector bool int a, vector unsigned int b) 1041{ 1042 return (vector unsigned int)a & ~b; 1043} 1044 1045static vector unsigned int __ATTRS_o_ai 1046vec_andc(vector unsigned int a, vector bool int b) 1047{ 1048 return a & ~(vector unsigned int)b; 1049} 1050 1051static vector bool int __ATTRS_o_ai 1052vec_andc(vector bool int a, vector bool int b) 1053{ 1054 return a & ~b; 1055} 1056 1057static vector float __ATTRS_o_ai 1058vec_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 1064static vector float __ATTRS_o_ai 1065vec_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 1071static vector float __ATTRS_o_ai 1072vec_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 1080static vector signed char __ATTRS_o_ai 1081vec_vandc(vector signed char a, vector signed char b) 1082{ 1083 return a & ~b; 1084} 1085 1086static vector signed char __ATTRS_o_ai 1087vec_vandc(vector bool char a, vector signed char b) 1088{ 1089 return (vector signed char)a & ~b; 1090} 1091 1092static vector signed char __ATTRS_o_ai 1093vec_vandc(vector signed char a, vector bool char b) 1094{ 1095 return a & ~(vector signed char)b; 1096} 1097 1098static vector unsigned char __ATTRS_o_ai 1099vec_vandc(vector unsigned char a, vector unsigned char b) 1100{ 1101 return a & ~b; 1102} 1103 1104static vector unsigned char __ATTRS_o_ai 1105vec_vandc(vector bool char a, vector unsigned char b) 1106{ 1107 return (vector unsigned char)a & ~b; 1108} 1109 1110static vector unsigned char __ATTRS_o_ai 1111vec_vandc(vector unsigned char a, vector bool char b) 1112{ 1113 return a & ~(vector unsigned char)b; 1114} 1115 1116static vector bool char __ATTRS_o_ai 1117vec_vandc(vector bool char a, vector bool char b) 1118{ 1119 return a & ~b; 1120} 1121 1122static vector short __ATTRS_o_ai 1123vec_vandc(vector short a, vector short b) 1124{ 1125 return a & ~b; 1126} 1127 1128static vector short __ATTRS_o_ai 1129vec_vandc(vector bool short a, vector short b) 1130{ 1131 return (vector short)a & ~b; 1132} 1133 1134static vector short __ATTRS_o_ai 1135vec_vandc(vector short a, vector bool short b) 1136{ 1137 return a & ~(vector short)b; 1138} 1139 1140static vector unsigned short __ATTRS_o_ai 1141vec_vandc(vector unsigned short a, vector unsigned short b) 1142{ 1143 return a & ~b; 1144} 1145 1146static vector unsigned short __ATTRS_o_ai 1147vec_vandc(vector bool short a, vector unsigned short b) 1148{ 1149 return (vector unsigned short)a & ~b; 1150} 1151 1152static vector unsigned short __ATTRS_o_ai 1153vec_vandc(vector unsigned short a, vector bool short b) 1154{ 1155 return a & ~(vector unsigned short)b; 1156} 1157 1158static vector bool short __ATTRS_o_ai 1159vec_vandc(vector bool short a, vector bool short b) 1160{ 1161 return a & ~b; 1162} 1163 1164static vector int __ATTRS_o_ai 1165vec_vandc(vector int a, vector int b) 1166{ 1167 return a & ~b; 1168} 1169 1170static vector int __ATTRS_o_ai 1171vec_vandc(vector bool int a, vector int b) 1172{ 1173 return (vector int)a & ~b; 1174} 1175 1176static vector int __ATTRS_o_ai 1177vec_vandc(vector int a, vector bool int b) 1178{ 1179 return a & ~(vector int)b; 1180} 1181 1182static vector unsigned int __ATTRS_o_ai 1183vec_vandc(vector unsigned int a, vector unsigned int b) 1184{ 1185 return a & ~b; 1186} 1187 1188static vector unsigned int __ATTRS_o_ai 1189vec_vandc(vector bool int a, vector unsigned int b) 1190{ 1191 return (vector unsigned int)a & ~b; 1192} 1193 1194static vector unsigned int __ATTRS_o_ai 1195vec_vandc(vector unsigned int a, vector bool int b) 1196{ 1197 return a & ~(vector unsigned int)b; 1198} 1199 1200static vector bool int __ATTRS_o_ai 1201vec_vandc(vector bool int a, vector bool int b) 1202{ 1203 return a & ~b; 1204} 1205 1206static vector float __ATTRS_o_ai 1207vec_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 1213static vector float __ATTRS_o_ai 1214vec_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 1220static vector float __ATTRS_o_ai 1221vec_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 1229static vector signed char __ATTRS_o_ai 1230vec_avg(vector signed char a, vector signed char b) 1231{ 1232 return __builtin_altivec_vavgsb(a, b); 1233} 1234 1235static vector unsigned char __ATTRS_o_ai 1236vec_avg(vector unsigned char a, vector unsigned char b) 1237{ 1238 return __builtin_altivec_vavgub(a, b); 1239} 1240 1241static vector short __ATTRS_o_ai 1242vec_avg(vector short a, vector short b) 1243{ 1244 return __builtin_altivec_vavgsh(a, b); 1245} 1246 1247static vector unsigned short __ATTRS_o_ai 1248vec_avg(vector unsigned short a, vector unsigned short b) 1249{ 1250 return __builtin_altivec_vavguh(a, b); 1251} 1252 1253static vector int __ATTRS_o_ai 1254vec_avg(vector int a, vector int b) 1255{ 1256 return __builtin_altivec_vavgsw(a, b); 1257} 1258 1259static vector unsigned int __ATTRS_o_ai 1260vec_avg(vector unsigned int a, vector unsigned int b) 1261{ 1262 return __builtin_altivec_vavguw(a, b); 1263} 1264 1265/* vec_vavgsb */ 1266 1267static vector signed char __attribute__((__always_inline__)) 1268vec_vavgsb(vector signed char a, vector signed char b) 1269{ 1270 return __builtin_altivec_vavgsb(a, b); 1271} 1272 1273/* vec_vavgub */ 1274 1275static vector unsigned char __attribute__((__always_inline__)) 1276vec_vavgub(vector unsigned char a, vector unsigned char b) 1277{ 1278 return __builtin_altivec_vavgub(a, b); 1279} 1280 1281/* vec_vavgsh */ 1282 1283static vector short __attribute__((__always_inline__)) 1284vec_vavgsh(vector short a, vector short b) 1285{ 1286 return __builtin_altivec_vavgsh(a, b); 1287} 1288 1289/* vec_vavguh */ 1290 1291static vector unsigned short __attribute__((__always_inline__)) 1292vec_vavguh(vector unsigned short a, vector unsigned short b) 1293{ 1294 return __builtin_altivec_vavguh(a, b); 1295} 1296 1297/* vec_vavgsw */ 1298 1299static vector int __attribute__((__always_inline__)) 1300vec_vavgsw(vector int a, vector int b) 1301{ 1302 return __builtin_altivec_vavgsw(a, b); 1303} 1304 1305/* vec_vavguw */ 1306 1307static vector unsigned int __attribute__((__always_inline__)) 1308vec_vavguw(vector unsigned int a, vector unsigned int b) 1309{ 1310 return __builtin_altivec_vavguw(a, b); 1311} 1312 1313/* vec_ceil */ 1314 1315static vector float __attribute__((__always_inline__)) 1316vec_ceil(vector float a) 1317{ 1318 return __builtin_altivec_vrfip(a); 1319} 1320 1321/* vec_vrfip */ 1322 1323static vector float __attribute__((__always_inline__)) 1324vec_vrfip(vector float a) 1325{ 1326 return __builtin_altivec_vrfip(a); 1327} 1328 1329/* vec_cmpb */ 1330 1331static vector int __attribute__((__always_inline__)) 1332vec_cmpb(vector float a, vector float b) 1333{ 1334 return __builtin_altivec_vcmpbfp(a, b); 1335} 1336 1337/* vec_vcmpbfp */ 1338 1339static vector int __attribute__((__always_inline__)) 1340vec_vcmpbfp(vector float a, vector float b) 1341{ 1342 return __builtin_altivec_vcmpbfp(a, b); 1343} 1344 1345/* vec_cmpeq */ 1346 1347static vector bool char __ATTRS_o_ai 1348vec_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 1354static vector bool char __ATTRS_o_ai 1355vec_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 1361static vector bool short __ATTRS_o_ai 1362vec_cmpeq(vector short a, vector short b) 1363{ 1364 return (vector bool short)__builtin_altivec_vcmpequh(a, b); 1365} 1366 1367static vector bool short __ATTRS_o_ai 1368vec_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 1374static vector bool int __ATTRS_o_ai 1375vec_cmpeq(vector int a, vector int b) 1376{ 1377 return (vector bool int)__builtin_altivec_vcmpequw(a, b); 1378} 1379 1380static vector bool int __ATTRS_o_ai 1381vec_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 1387static vector bool int __ATTRS_o_ai 1388vec_cmpeq(vector float a, vector float b) 1389{ 1390 return (vector bool int)__builtin_altivec_vcmpeqfp(a, b); 1391} 1392 1393/* vec_cmpge */ 1394 1395static vector bool int __attribute__((__always_inline__)) 1396vec_cmpge(vector float a, vector float b) 1397{ 1398 return (vector bool int)__builtin_altivec_vcmpgefp(a, b); 1399} 1400 1401/* vec_vcmpgefp */ 1402 1403static vector bool int __attribute__((__always_inline__)) 1404vec_vcmpgefp(vector float a, vector float b) 1405{ 1406 return (vector bool int)__builtin_altivec_vcmpgefp(a, b); 1407} 1408 1409/* vec_cmpgt */ 1410 1411static vector bool char __ATTRS_o_ai 1412vec_cmpgt(vector signed char a, vector signed char b) 1413{ 1414 return (vector bool char)__builtin_altivec_vcmpgtsb(a, b); 1415} 1416 1417static vector bool char __ATTRS_o_ai 1418vec_cmpgt(vector unsigned char a, vector unsigned char b) 1419{ 1420 return (vector bool char)__builtin_altivec_vcmpgtub(a, b); 1421} 1422 1423static vector bool short __ATTRS_o_ai 1424vec_cmpgt(vector short a, vector short b) 1425{ 1426 return (vector bool short)__builtin_altivec_vcmpgtsh(a, b); 1427} 1428 1429static vector bool short __ATTRS_o_ai 1430vec_cmpgt(vector unsigned short a, vector unsigned short b) 1431{ 1432 return (vector bool short)__builtin_altivec_vcmpgtuh(a, b); 1433} 1434 1435static vector bool int __ATTRS_o_ai 1436vec_cmpgt(vector int a, vector int b) 1437{ 1438 return (vector bool int)__builtin_altivec_vcmpgtsw(a, b); 1439} 1440 1441static vector bool int __ATTRS_o_ai 1442vec_cmpgt(vector unsigned int a, vector unsigned int b) 1443{ 1444 return (vector bool int)__builtin_altivec_vcmpgtuw(a, b); 1445} 1446 1447static vector bool int __ATTRS_o_ai 1448vec_cmpgt(vector float a, vector float b) 1449{ 1450 return (vector bool int)__builtin_altivec_vcmpgtfp(a, b); 1451} 1452 1453/* vec_vcmpgtsb */ 1454 1455static vector bool char __attribute__((__always_inline__)) 1456vec_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 1463static vector bool char __attribute__((__always_inline__)) 1464vec_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 1471static vector bool short __attribute__((__always_inline__)) 1472vec_vcmpgtsh(vector short a, vector short b) 1473{ 1474 return (vector bool short)__builtin_altivec_vcmpgtsh(a, b); 1475} 1476 1477/* vec_vcmpgtuh */ 1478 1479static vector bool short __attribute__((__always_inline__)) 1480vec_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 1487static vector bool int __attribute__((__always_inline__)) 1488vec_vcmpgtsw(vector int a, vector int b) 1489{ 1490 return (vector bool int)__builtin_altivec_vcmpgtsw(a, b); 1491} 1492 1493/* vec_vcmpgtuw */ 1494 1495static vector bool int __attribute__((__always_inline__)) 1496vec_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 1503static vector bool int __attribute__((__always_inline__)) 1504vec_vcmpgtfp(vector float a, vector float b) 1505{ 1506 return (vector bool int)__builtin_altivec_vcmpgtfp(a, b); 1507} 1508 1509/* vec_cmple */ 1510 1511static vector bool int __attribute__((__always_inline__)) 1512vec_cmple(vector float a, vector float b) 1513{ 1514 return (vector bool int)__builtin_altivec_vcmpgefp(b, a); 1515} 1516 1517/* vec_cmplt */ 1518 1519static vector bool char __ATTRS_o_ai 1520vec_cmplt(vector signed char a, vector signed char b) 1521{ 1522 return (vector bool char)__builtin_altivec_vcmpgtsb(b, a); 1523} 1524 1525static vector bool char __ATTRS_o_ai 1526vec_cmplt(vector unsigned char a, vector unsigned char b) 1527{ 1528 return (vector bool char)__builtin_altivec_vcmpgtub(b, a); 1529} 1530 1531static vector bool short __ATTRS_o_ai 1532vec_cmplt(vector short a, vector short b) 1533{ 1534 return (vector bool short)__builtin_altivec_vcmpgtsh(b, a); 1535} 1536 1537static vector bool short __ATTRS_o_ai 1538vec_cmplt(vector unsigned short a, vector unsigned short b) 1539{ 1540 return (vector bool short)__builtin_altivec_vcmpgtuh(b, a); 1541} 1542 1543static vector bool int __ATTRS_o_ai 1544vec_cmplt(vector int a, vector int b) 1545{ 1546 return (vector bool int)__builtin_altivec_vcmpgtsw(b, a); 1547} 1548 1549static vector bool int __ATTRS_o_ai 1550vec_cmplt(vector unsigned int a, vector unsigned int b) 1551{ 1552 return (vector bool int)__builtin_altivec_vcmpgtuw(b, a); 1553} 1554 1555static vector bool int __ATTRS_o_ai 1556vec_cmplt(vector float a, vector float b) 1557{ 1558 return (vector bool int)__builtin_altivec_vcmpgtfp(b, a); 1559} 1560 1561/* vec_ctf */ 1562 1563static vector float __ATTRS_o_ai 1564vec_ctf(vector int a, int b) 1565{ 1566 return __builtin_altivec_vcfsx(a, b); 1567} 1568 1569static vector float __ATTRS_o_ai 1570vec_ctf(vector unsigned int a, int b) 1571{ 1572 return __builtin_altivec_vcfux((vector int)a, b); 1573} 1574 1575/* vec_vcfsx */ 1576 1577static vector float __attribute__((__always_inline__)) 1578vec_vcfsx(vector int a, int b) 1579{ 1580 return __builtin_altivec_vcfsx(a, b); 1581} 1582 1583/* vec_vcfux */ 1584 1585static vector float __attribute__((__always_inline__)) 1586vec_vcfux(vector unsigned int a, int b) 1587{ 1588 return __builtin_altivec_vcfux((vector int)a, b); 1589} 1590 1591/* vec_cts */ 1592 1593static vector int __attribute__((__always_inline__)) 1594vec_cts(vector float a, int b) 1595{ 1596 return __builtin_altivec_vctsxs(a, b); 1597} 1598 1599/* vec_vctsxs */ 1600 1601static vector int __attribute__((__always_inline__)) 1602vec_vctsxs(vector float a, int b) 1603{ 1604 return __builtin_altivec_vctsxs(a, b); 1605} 1606 1607/* vec_ctu */ 1608 1609static vector unsigned int __attribute__((__always_inline__)) 1610vec_ctu(vector float a, int b) 1611{ 1612 return __builtin_altivec_vctuxs(a, b); 1613} 1614 1615/* vec_vctuxs */ 1616 1617static vector unsigned int __attribute__((__always_inline__)) 1618vec_vctuxs(vector float a, int b) 1619{ 1620 return __builtin_altivec_vctuxs(a, b); 1621} 1622 1623/* vec_dss */ 1624 1625static void __attribute__((__always_inline__)) 1626vec_dss(int a) 1627{ 1628 __builtin_altivec_dss(a); 1629} 1630 1631/* vec_dssall */ 1632 1633static void __attribute__((__always_inline__)) 1634vec_dssall(void) 1635{ 1636 __builtin_altivec_dssall(); 1637} 1638 1639/* vec_dst */ 1640 1641static void __attribute__((__always_inline__)) 1642vec_dst(const void *a, int b, int c) 1643{ 1644 __builtin_altivec_dst(a, b, c); 1645} 1646 1647/* vec_dstst */ 1648 1649static void __attribute__((__always_inline__)) 1650vec_dstst(const void *a, int b, int c) 1651{ 1652 __builtin_altivec_dstst(a, b, c); 1653} 1654 1655/* vec_dststt */ 1656 1657static void __attribute__((__always_inline__)) 1658vec_dststt(const void *a, int b, int c) 1659{ 1660 __builtin_altivec_dststt(a, b, c); 1661} 1662 1663/* vec_dstt */ 1664 1665static void __attribute__((__always_inline__)) 1666vec_dstt(const void *a, int b, int c) 1667{ 1668 __builtin_altivec_dstt(a, b, c); 1669} 1670 1671/* vec_expte */ 1672 1673static vector float __attribute__((__always_inline__)) 1674vec_expte(vector float a) 1675{ 1676 return __builtin_altivec_vexptefp(a); 1677} 1678 1679/* vec_vexptefp */ 1680 1681static vector float __attribute__((__always_inline__)) 1682vec_vexptefp(vector float a) 1683{ 1684 return __builtin_altivec_vexptefp(a); 1685} 1686 1687/* vec_floor */ 1688 1689static vector float __attribute__((__always_inline__)) 1690vec_floor(vector float a) 1691{ 1692 return __builtin_altivec_vrfim(a); 1693} 1694 1695/* vec_vrfim */ 1696 1697static vector float __attribute__((__always_inline__)) 1698vec_vrfim(vector float a) 1699{ 1700 return __builtin_altivec_vrfim(a); 1701} 1702 1703/* vec_ld */ 1704 1705static vector signed char __ATTRS_o_ai 1706vec_ld(int a, const vector signed char *b) 1707{ 1708 return (vector signed char)__builtin_altivec_lvx(a, b); 1709} 1710 1711static vector signed char __ATTRS_o_ai 1712vec_ld(int a, const signed char *b) 1713{ 1714 return (vector signed char)__builtin_altivec_lvx(a, b); 1715} 1716 1717static vector unsigned char __ATTRS_o_ai 1718vec_ld(int a, const vector unsigned char *b) 1719{ 1720 return (vector unsigned char)__builtin_altivec_lvx(a, b); 1721} 1722 1723static vector unsigned char __ATTRS_o_ai 1724vec_ld(int a, const unsigned char *b) 1725{ 1726 return (vector unsigned char)__builtin_altivec_lvx(a, b); 1727} 1728 1729static vector bool char __ATTRS_o_ai 1730vec_ld(int a, const vector bool char *b) 1731{ 1732 return (vector bool char)__builtin_altivec_lvx(a, b); 1733} 1734 1735static vector short __ATTRS_o_ai 1736vec_ld(int a, const vector short *b) 1737{ 1738 return (vector short)__builtin_altivec_lvx(a, b); 1739} 1740 1741static vector short __ATTRS_o_ai 1742vec_ld(int a, const short *b) 1743{ 1744 return (vector short)__builtin_altivec_lvx(a, b); 1745} 1746 1747static vector unsigned short __ATTRS_o_ai 1748vec_ld(int a, const vector unsigned short *b) 1749{ 1750 return (vector unsigned short)__builtin_altivec_lvx(a, b); 1751} 1752 1753static vector unsigned short __ATTRS_o_ai 1754vec_ld(int a, const unsigned short *b) 1755{ 1756 return (vector unsigned short)__builtin_altivec_lvx(a, b); 1757} 1758 1759static vector bool short __ATTRS_o_ai 1760vec_ld(int a, const vector bool short *b) 1761{ 1762 return (vector bool short)__builtin_altivec_lvx(a, b); 1763} 1764 1765static vector pixel __ATTRS_o_ai 1766vec_ld(int a, const vector pixel *b) 1767{ 1768 return (vector pixel)__builtin_altivec_lvx(a, b); 1769} 1770 1771static vector int __ATTRS_o_ai 1772vec_ld(int a, const vector int *b) 1773{ 1774 return (vector int)__builtin_altivec_lvx(a, b); 1775} 1776 1777static vector int __ATTRS_o_ai 1778vec_ld(int a, const int *b) 1779{ 1780 return (vector int)__builtin_altivec_lvx(a, b); 1781} 1782 1783static vector unsigned int __ATTRS_o_ai 1784vec_ld(int a, const vector unsigned int *b) 1785{ 1786 return (vector unsigned int)__builtin_altivec_lvx(a, b); 1787} 1788 1789static vector unsigned int __ATTRS_o_ai 1790vec_ld(int a, const unsigned int *b) 1791{ 1792 return (vector unsigned int)__builtin_altivec_lvx(a, b); 1793} 1794 1795static vector bool int __ATTRS_o_ai 1796vec_ld(int a, const vector bool int *b) 1797{ 1798 return (vector bool int)__builtin_altivec_lvx(a, b); 1799} 1800 1801static vector float __ATTRS_o_ai 1802vec_ld(int a, const vector float *b) 1803{ 1804 return (vector float)__builtin_altivec_lvx(a, b); 1805} 1806 1807static vector float __ATTRS_o_ai 1808vec_ld(int a, const float *b) 1809{ 1810 return (vector float)__builtin_altivec_lvx(a, b); 1811} 1812 1813/* vec_lvx */ 1814 1815static vector signed char __ATTRS_o_ai 1816vec_lvx(int a, const vector signed char *b) 1817{ 1818 return (vector signed char)__builtin_altivec_lvx(a, b); 1819} 1820 1821static vector signed char __ATTRS_o_ai 1822vec_lvx(int a, const signed char *b) 1823{ 1824 return (vector signed char)__builtin_altivec_lvx(a, b); 1825} 1826 1827static vector unsigned char __ATTRS_o_ai 1828vec_lvx(int a, const vector unsigned char *b) 1829{ 1830 return (vector unsigned char)__builtin_altivec_lvx(a, b); 1831} 1832 1833static vector unsigned char __ATTRS_o_ai 1834vec_lvx(int a, const unsigned char *b) 1835{ 1836 return (vector unsigned char)__builtin_altivec_lvx(a, b); 1837} 1838 1839static vector bool char __ATTRS_o_ai 1840vec_lvx(int a, const vector bool char *b) 1841{ 1842 return (vector bool char)__builtin_altivec_lvx(a, b); 1843} 1844 1845static vector short __ATTRS_o_ai 1846vec_lvx(int a, const vector short *b) 1847{ 1848 return (vector short)__builtin_altivec_lvx(a, b); 1849} 1850 1851static vector short __ATTRS_o_ai 1852vec_lvx(int a, const short *b) 1853{ 1854 return (vector short)__builtin_altivec_lvx(a, b); 1855} 1856 1857static vector unsigned short __ATTRS_o_ai 1858vec_lvx(int a, const vector unsigned short *b) 1859{ 1860 return (vector unsigned short)__builtin_altivec_lvx(a, b); 1861} 1862 1863static vector unsigned short __ATTRS_o_ai 1864vec_lvx(int a, const unsigned short *b) 1865{ 1866 return (vector unsigned short)__builtin_altivec_lvx(a, b); 1867} 1868 1869static vector bool short __ATTRS_o_ai 1870vec_lvx(int a, const vector bool short *b) 1871{ 1872 return (vector bool short)__builtin_altivec_lvx(a, b); 1873} 1874 1875static vector pixel __ATTRS_o_ai 1876vec_lvx(int a, const vector pixel *b) 1877{ 1878 return (vector pixel)__builtin_altivec_lvx(a, b); 1879} 1880 1881static vector int __ATTRS_o_ai 1882vec_lvx(int a, const vector int *b) 1883{ 1884 return (vector int)__builtin_altivec_lvx(a, b); 1885} 1886 1887static vector int __ATTRS_o_ai 1888vec_lvx(int a, const int *b) 1889{ 1890 return (vector int)__builtin_altivec_lvx(a, b); 1891} 1892 1893static vector unsigned int __ATTRS_o_ai 1894vec_lvx(int a, const vector unsigned int *b) 1895{ 1896 return (vector unsigned int)__builtin_altivec_lvx(a, b); 1897} 1898 1899static vector unsigned int __ATTRS_o_ai 1900vec_lvx(int a, const unsigned int *b) 1901{ 1902 return (vector unsigned int)__builtin_altivec_lvx(a, b); 1903} 1904 1905static vector bool int __ATTRS_o_ai 1906vec_lvx(int a, const vector bool int *b) 1907{ 1908 return (vector bool int)__builtin_altivec_lvx(a, b); 1909} 1910 1911static vector float __ATTRS_o_ai 1912vec_lvx(int a, const vector float *b) 1913{ 1914 return (vector float)__builtin_altivec_lvx(a, b); 1915} 1916 1917static vector float __ATTRS_o_ai 1918vec_lvx(int a, const float *b) 1919{ 1920 return (vector float)__builtin_altivec_lvx(a, b); 1921} 1922 1923/* vec_lde */ 1924 1925static vector signed char __ATTRS_o_ai 1926vec_lde(int a, const vector signed char *b) 1927{ 1928 return (vector signed char)__builtin_altivec_lvebx(a, b); 1929} 1930 1931static vector unsigned char __ATTRS_o_ai 1932vec_lde(int a, const vector unsigned char *b) 1933{ 1934 return (vector unsigned char)__builtin_altivec_lvebx(a, b); 1935} 1936 1937static vector short __ATTRS_o_ai 1938vec_lde(int a, const vector short *b) 1939{ 1940 return (vector short)__builtin_altivec_lvehx(a, b); 1941} 1942 1943static vector unsigned short __ATTRS_o_ai 1944vec_lde(int a, const vector unsigned short *b) 1945{ 1946 return (vector unsigned short)__builtin_altivec_lvehx(a, b); 1947} 1948 1949static vector int __ATTRS_o_ai 1950vec_lde(int a, const vector int *b) 1951{ 1952 return (vector int)__builtin_altivec_lvewx(a, b); 1953} 1954 1955static vector unsigned int __ATTRS_o_ai 1956vec_lde(int a, const vector unsigned int *b) 1957{ 1958 return (vector unsigned int)__builtin_altivec_lvewx(a, b); 1959} 1960 1961static vector float __ATTRS_o_ai 1962vec_lde(int a, const vector float *b) 1963{ 1964 return (vector float)__builtin_altivec_lvewx(a, b); 1965} 1966 1967/* vec_lvebx */ 1968 1969static vector signed char __ATTRS_o_ai 1970vec_lvebx(int a, const vector signed char *b) 1971{ 1972 return (vector signed char)__builtin_altivec_lvebx(a, b); 1973} 1974 1975static vector unsigned char __ATTRS_o_ai 1976vec_lvebx(int a, const vector unsigned char *b) 1977{ 1978 return (vector unsigned char)__builtin_altivec_lvebx(a, b); 1979} 1980 1981/* vec_lvehx */ 1982 1983static vector short __ATTRS_o_ai 1984vec_lvehx(int a, const vector short *b) 1985{ 1986 return (vector short)__builtin_altivec_lvehx(a, b); 1987} 1988 1989static vector unsigned short __ATTRS_o_ai 1990vec_lvehx(int a, const vector unsigned short *b) 1991{ 1992 return (vector unsigned short)__builtin_altivec_lvehx(a, b); 1993} 1994 1995/* vec_lvewx */ 1996 1997static vector int __ATTRS_o_ai 1998vec_lvewx(int a, const vector int *b) 1999{ 2000 return (vector int)__builtin_altivec_lvewx(a, b); 2001} 2002 2003static vector unsigned int __ATTRS_o_ai 2004vec_lvewx(int a, const vector unsigned int *b) 2005{ 2006 return (vector unsigned int)__builtin_altivec_lvewx(a, b); 2007} 2008 2009static vector float __ATTRS_o_ai 2010vec_lvewx(int a, const vector float *b) 2011{ 2012 return (vector float)__builtin_altivec_lvewx(a, b); 2013} 2014 2015/* vec_ldl */ 2016 2017static vector signed char __ATTRS_o_ai 2018vec_ldl(int a, const vector signed char *b) 2019{ 2020 return (vector signed char)__builtin_altivec_lvxl(a, b); 2021} 2022 2023static vector signed char __ATTRS_o_ai 2024vec_ldl(int a, const signed char *b) 2025{ 2026 return (vector signed char)__builtin_altivec_lvxl(a, b); 2027} 2028 2029static vector unsigned char __ATTRS_o_ai 2030vec_ldl(int a, const vector unsigned char *b) 2031{ 2032 return (vector unsigned char)__builtin_altivec_lvxl(a, b); 2033} 2034 2035static vector unsigned char __ATTRS_o_ai 2036vec_ldl(int a, const unsigned char *b) 2037{ 2038 return (vector unsigned char)__builtin_altivec_lvxl(a, b); 2039} 2040 2041static vector bool char __ATTRS_o_ai 2042vec_ldl(int a, const vector bool char *b) 2043{ 2044 return (vector bool char)__builtin_altivec_lvxl(a, b); 2045} 2046 2047static vector short __ATTRS_o_ai 2048vec_ldl(int a, const vector short *b) 2049{ 2050 return (vector short)__builtin_altivec_lvxl(a, b); 2051} 2052 2053static vector short __ATTRS_o_ai 2054vec_ldl(int a, const short *b) 2055{ 2056 return (vector short)__builtin_altivec_lvxl(a, b); 2057} 2058 2059static vector unsigned short __ATTRS_o_ai 2060vec_ldl(int a, const vector unsigned short *b) 2061{ 2062 return (vector unsigned short)__builtin_altivec_lvxl(a, b); 2063} 2064 2065static vector unsigned short __ATTRS_o_ai 2066vec_ldl(int a, const unsigned short *b) 2067{ 2068 return (vector unsigned short)__builtin_altivec_lvxl(a, b); 2069} 2070 2071static vector bool short __ATTRS_o_ai 2072vec_ldl(int a, const vector bool short *b) 2073{ 2074 return (vector bool short)__builtin_altivec_lvxl(a, b); 2075} 2076 2077static vector pixel __ATTRS_o_ai 2078vec_ldl(int a, const vector pixel *b) 2079{ 2080 return (vector pixel short)__builtin_altivec_lvxl(a, b); 2081} 2082 2083static vector int __ATTRS_o_ai 2084vec_ldl(int a, const vector int *b) 2085{ 2086 return (vector int)__builtin_altivec_lvxl(a, b); 2087} 2088 2089static vector int __ATTRS_o_ai 2090vec_ldl(int a, const int *b) 2091{ 2092 return (vector int)__builtin_altivec_lvxl(a, b); 2093} 2094 2095static vector unsigned int __ATTRS_o_ai 2096vec_ldl(int a, const vector unsigned int *b) 2097{ 2098 return (vector unsigned int)__builtin_altivec_lvxl(a, b); 2099} 2100 2101static vector unsigned int __ATTRS_o_ai 2102vec_ldl(int a, const unsigned int *b) 2103{ 2104 return (vector unsigned int)__builtin_altivec_lvxl(a, b); 2105} 2106 2107static vector bool int __ATTRS_o_ai 2108vec_ldl(int a, const vector bool int *b) 2109{ 2110 return (vector bool int)__builtin_altivec_lvxl(a, b); 2111} 2112 2113static vector float __ATTRS_o_ai 2114vec_ldl(int a, const vector float *b) 2115{ 2116 return (vector float)__builtin_altivec_lvxl(a, b); 2117} 2118 2119static vector float __ATTRS_o_ai 2120vec_ldl(int a, const float *b) 2121{ 2122 return (vector float)__builtin_altivec_lvxl(a, b); 2123} 2124 2125/* vec_lvxl */ 2126 2127static vector signed char __ATTRS_o_ai 2128vec_lvxl(int a, const vector signed char *b) 2129{ 2130 return (vector signed char)__builtin_altivec_lvxl(a, b); 2131} 2132 2133static vector signed char __ATTRS_o_ai 2134vec_lvxl(int a, const signed char *b) 2135{ 2136 return (vector signed char)__builtin_altivec_lvxl(a, b); 2137} 2138 2139static vector unsigned char __ATTRS_o_ai 2140vec_lvxl(int a, const vector unsigned char *b) 2141{ 2142 return (vector unsigned char)__builtin_altivec_lvxl(a, b); 2143} 2144 2145static vector unsigned char __ATTRS_o_ai 2146vec_lvxl(int a, const unsigned char *b) 2147{ 2148 return (vector unsigned char)__builtin_altivec_lvxl(a, b); 2149} 2150 2151static vector bool char __ATTRS_o_ai 2152vec_lvxl(int a, const vector bool char *b) 2153{ 2154 return (vector bool char)__builtin_altivec_lvxl(a, b); 2155} 2156 2157static vector short __ATTRS_o_ai 2158vec_lvxl(int a, const vector short *b) 2159{ 2160 return (vector short)__builtin_altivec_lvxl(a, b); 2161} 2162 2163static vector short __ATTRS_o_ai 2164vec_lvxl(int a, const short *b) 2165{ 2166 return (vector short)__builtin_altivec_lvxl(a, b); 2167} 2168 2169static vector unsigned short __ATTRS_o_ai 2170vec_lvxl(int a, const vector unsigned short *b) 2171{ 2172 return (vector unsigned short)__builtin_altivec_lvxl(a, b); 2173} 2174 2175static vector unsigned short __ATTRS_o_ai 2176vec_lvxl(int a, const unsigned short *b) 2177{ 2178 return (vector unsigned short)__builtin_altivec_lvxl(a, b); 2179} 2180 2181static vector bool short __ATTRS_o_ai 2182vec_lvxl(int a, const vector bool short *b) 2183{ 2184 return (vector bool short)__builtin_altivec_lvxl(a, b); 2185} 2186 2187static vector pixel __ATTRS_o_ai 2188vec_lvxl(int a, const vector pixel *b) 2189{ 2190 return (vector pixel)__builtin_altivec_lvxl(a, b); 2191} 2192 2193static vector int __ATTRS_o_ai 2194vec_lvxl(int a, const vector int *b) 2195{ 2196 return (vector int)__builtin_altivec_lvxl(a, b); 2197} 2198 2199static vector int __ATTRS_o_ai 2200vec_lvxl(int a, const int *b) 2201{ 2202 return (vector int)__builtin_altivec_lvxl(a, b); 2203} 2204 2205static vector unsigned int __ATTRS_o_ai 2206vec_lvxl(int a, const vector unsigned int *b) 2207{ 2208 return (vector unsigned int)__builtin_altivec_lvxl(a, b); 2209} 2210 2211static vector unsigned int __ATTRS_o_ai 2212vec_lvxl(int a, const unsigned int *b) 2213{ 2214 return (vector unsigned int)__builtin_altivec_lvxl(a, b); 2215} 2216 2217static vector bool int __ATTRS_o_ai 2218vec_lvxl(int a, const vector bool int *b) 2219{ 2220 return (vector bool int)__builtin_altivec_lvxl(a, b); 2221} 2222 2223static vector float __ATTRS_o_ai 2224vec_lvxl(int a, const vector float *b) 2225{ 2226 return (vector float)__builtin_altivec_lvxl(a, b); 2227} 2228 2229static vector float __ATTRS_o_ai 2230vec_lvxl(int a, const float *b) 2231{ 2232 return (vector float)__builtin_altivec_lvxl(a, b); 2233} 2234 2235/* vec_loge */ 2236 2237static vector float __attribute__((__always_inline__)) 2238vec_loge(vector float a) 2239{ 2240 return __builtin_altivec_vlogefp(a); 2241} 2242 2243/* vec_vlogefp */ 2244 2245static vector float __attribute__((__always_inline__)) 2246vec_vlogefp(vector float a) 2247{ 2248 return __builtin_altivec_vlogefp(a); 2249} 2250 2251/* vec_lvsl */ 2252 2253static vector unsigned char __ATTRS_o_ai 2254vec_lvsl(int a, const signed char *b) 2255{ 2256 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2257} 2258 2259static vector unsigned char __ATTRS_o_ai 2260vec_lvsl(int a, const unsigned char *b) 2261{ 2262 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2263} 2264 2265static vector unsigned char __ATTRS_o_ai 2266vec_lvsl(int a, const short *b) 2267{ 2268 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2269} 2270 2271static vector unsigned char __ATTRS_o_ai 2272vec_lvsl(int a, const unsigned short *b) 2273{ 2274 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2275} 2276 2277static vector unsigned char __ATTRS_o_ai 2278vec_lvsl(int a, const int *b) 2279{ 2280 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2281} 2282 2283static vector unsigned char __ATTRS_o_ai 2284vec_lvsl(int a, const unsigned int *b) 2285{ 2286 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2287} 2288 2289static vector unsigned char __ATTRS_o_ai 2290vec_lvsl(int a, const float *b) 2291{ 2292 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2293} 2294 2295/* vec_lvsr */ 2296 2297static vector unsigned char __ATTRS_o_ai 2298vec_lvsr(int a, const signed char *b) 2299{ 2300 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2301} 2302 2303static vector unsigned char __ATTRS_o_ai 2304vec_lvsr(int a, const unsigned char *b) 2305{ 2306 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2307} 2308 2309static vector unsigned char __ATTRS_o_ai 2310vec_lvsr(int a, const short *b) 2311{ 2312 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2313} 2314 2315static vector unsigned char __ATTRS_o_ai 2316vec_lvsr(int a, const unsigned short *b) 2317{ 2318 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2319} 2320 2321static vector unsigned char __ATTRS_o_ai 2322vec_lvsr(int a, const int *b) 2323{ 2324 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2325} 2326 2327static vector unsigned char __ATTRS_o_ai 2328vec_lvsr(int a, const unsigned int *b) 2329{ 2330 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2331} 2332 2333static vector unsigned char __ATTRS_o_ai 2334vec_lvsr(int a, const float *b) 2335{ 2336 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2337} 2338 2339/* vec_madd */ 2340 2341static vector float __attribute__((__always_inline__)) 2342vec_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 2349static vector float __attribute__((__always_inline__)) 2350vec_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 2357static vector signed short __attribute__((__always_inline__)) 2358vec_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 */ 2364static vector signed short __attribute__((__always_inline__)) 2365vec_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 2374static vector signed char __ATTRS_o_ai 2375vec_max(vector signed char a, vector signed char b) 2376{ 2377 return __builtin_altivec_vmaxsb(a, b); 2378} 2379 2380static vector signed char __ATTRS_o_ai 2381vec_max(vector bool char a, vector signed char b) 2382{ 2383 return __builtin_altivec_vmaxsb((vector signed char)a, b); 2384} 2385 2386static vector signed char __ATTRS_o_ai 2387vec_max(vector signed char a, vector bool char b) 2388{ 2389 return __builtin_altivec_vmaxsb(a, (vector signed char)b); 2390} 2391 2392static vector unsigned char __ATTRS_o_ai 2393vec_max(vector unsigned char a, vector unsigned char b) 2394{ 2395 return __builtin_altivec_vmaxub(a, b); 2396} 2397 2398static vector unsigned char __ATTRS_o_ai 2399vec_max(vector bool char a, vector unsigned char b) 2400{ 2401 return __builtin_altivec_vmaxub((vector unsigned char)a, b); 2402} 2403 2404static vector unsigned char __ATTRS_o_ai 2405vec_max(vector unsigned char a, vector bool char b) 2406{ 2407 return __builtin_altivec_vmaxub(a, (vector unsigned char)b); 2408} 2409 2410static vector short __ATTRS_o_ai 2411vec_max(vector short a, vector short b) 2412{ 2413 return __builtin_altivec_vmaxsh(a, b); 2414} 2415 2416static vector short __ATTRS_o_ai 2417vec_max(vector bool short a, vector short b) 2418{ 2419 return __builtin_altivec_vmaxsh((vector short)a, b); 2420} 2421 2422static vector short __ATTRS_o_ai 2423vec_max(vector short a, vector bool short b) 2424{ 2425 return __builtin_altivec_vmaxsh(a, (vector short)b); 2426} 2427 2428static vector unsigned short __ATTRS_o_ai 2429vec_max(vector unsigned short a, vector unsigned short b) 2430{ 2431 return __builtin_altivec_vmaxuh(a, b); 2432} 2433 2434static vector unsigned short __ATTRS_o_ai 2435vec_max(vector bool short a, vector unsigned short b) 2436{ 2437 return __builtin_altivec_vmaxuh((vector unsigned short)a, b); 2438} 2439 2440static vector unsigned short __ATTRS_o_ai 2441vec_max(vector unsigned short a, vector bool short b) 2442{ 2443 return __builtin_altivec_vmaxuh(a, (vector unsigned short)b); 2444} 2445 2446static vector int __ATTRS_o_ai 2447vec_max(vector int a, vector int b) 2448{ 2449 return __builtin_altivec_vmaxsw(a, b); 2450} 2451 2452static vector int __ATTRS_o_ai 2453vec_max(vector bool int a, vector int b) 2454{ 2455 return __builtin_altivec_vmaxsw((vector int)a, b); 2456} 2457 2458static vector int __ATTRS_o_ai 2459vec_max(vector int a, vector bool int b) 2460{ 2461 return __builtin_altivec_vmaxsw(a, (vector int)b); 2462} 2463 2464static vector unsigned int __ATTRS_o_ai 2465vec_max(vector unsigned int a, vector unsigned int b) 2466{ 2467 return __builtin_altivec_vmaxuw(a, b); 2468} 2469 2470static vector unsigned int __ATTRS_o_ai 2471vec_max(vector bool int a, vector unsigned int b) 2472{ 2473 return __builtin_altivec_vmaxuw((vector unsigned int)a, b); 2474} 2475 2476static vector unsigned int __ATTRS_o_ai 2477vec_max(vector unsigned int a, vector bool int b) 2478{ 2479 return __builtin_altivec_vmaxuw(a, (vector unsigned int)b); 2480} 2481 2482static vector float __ATTRS_o_ai 2483vec_max(vector float a, vector float b) 2484{ 2485 return __builtin_altivec_vmaxfp(a, b); 2486} 2487 2488/* vec_vmaxsb */ 2489 2490static vector signed char __ATTRS_o_ai 2491vec_vmaxsb(vector signed char a, vector signed char b) 2492{ 2493 return __builtin_altivec_vmaxsb(a, b); 2494} 2495 2496static vector signed char __ATTRS_o_ai 2497vec_vmaxsb(vector bool char a, vector signed char b) 2498{ 2499 return __builtin_altivec_vmaxsb((vector signed char)a, b); 2500} 2501 2502static vector signed char __ATTRS_o_ai 2503vec_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 2510static vector unsigned char __ATTRS_o_ai 2511vec_vmaxub(vector unsigned char a, vector unsigned char b) 2512{ 2513 return __builtin_altivec_vmaxub(a, b); 2514} 2515 2516static vector unsigned char __ATTRS_o_ai 2517vec_vmaxub(vector bool char a, vector unsigned char b) 2518{ 2519 return __builtin_altivec_vmaxub((vector unsigned char)a, b); 2520} 2521 2522static vector unsigned char __ATTRS_o_ai 2523vec_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 2530static vector short __ATTRS_o_ai 2531vec_vmaxsh(vector short a, vector short b) 2532{ 2533 return __builtin_altivec_vmaxsh(a, b); 2534} 2535 2536static vector short __ATTRS_o_ai 2537vec_vmaxsh(vector bool short a, vector short b) 2538{ 2539 return __builtin_altivec_vmaxsh((vector short)a, b); 2540} 2541 2542static vector short __ATTRS_o_ai 2543vec_vmaxsh(vector short a, vector bool short b) 2544{ 2545 return __builtin_altivec_vmaxsh(a, (vector short)b); 2546} 2547 2548/* vec_vmaxuh */ 2549 2550static vector unsigned short __ATTRS_o_ai 2551vec_vmaxuh(vector unsigned short a, vector unsigned short b) 2552{ 2553 return __builtin_altivec_vmaxuh(a, b); 2554} 2555 2556static vector unsigned short __ATTRS_o_ai 2557vec_vmaxuh(vector bool short a, vector unsigned short b) 2558{ 2559 return __builtin_altivec_vmaxuh((vector unsigned short)a, b); 2560} 2561 2562static vector unsigned short __ATTRS_o_ai 2563vec_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 2570static vector int __ATTRS_o_ai 2571vec_vmaxsw(vector int a, vector int b) 2572{ 2573 return __builtin_altivec_vmaxsw(a, b); 2574} 2575 2576static vector int __ATTRS_o_ai 2577vec_vmaxsw(vector bool int a, vector int b) 2578{ 2579 return __builtin_altivec_vmaxsw((vector int)a, b); 2580} 2581 2582static vector int __ATTRS_o_ai 2583vec_vmaxsw(vector int a, vector bool int b) 2584{ 2585 return __builtin_altivec_vmaxsw(a, (vector int)b); 2586} 2587 2588/* vec_vmaxuw */ 2589 2590static vector unsigned int __ATTRS_o_ai 2591vec_vmaxuw(vector unsigned int a, vector unsigned int b) 2592{ 2593 return __builtin_altivec_vmaxuw(a, b); 2594} 2595 2596static vector unsigned int __ATTRS_o_ai 2597vec_vmaxuw(vector bool int a, vector unsigned int b) 2598{ 2599 return __builtin_altivec_vmaxuw((vector unsigned int)a, b); 2600} 2601 2602static vector unsigned int __ATTRS_o_ai 2603vec_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 2610static vector float __attribute__((__always_inline__)) 2611vec_vmaxfp(vector float a, vector float b) 2612{ 2613 return __builtin_altivec_vmaxfp(a, b); 2614} 2615 2616/* vec_mergeh */ 2617 2618static vector signed char __ATTRS_o_ai 2619vec_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 2626static vector unsigned char __ATTRS_o_ai 2627vec_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 2634static vector bool char __ATTRS_o_ai 2635vec_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 2642static vector short __ATTRS_o_ai 2643vec_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 2650static vector unsigned short __ATTRS_o_ai 2651vec_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 2658static vector bool short __ATTRS_o_ai 2659vec_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 2666static vector pixel __ATTRS_o_ai 2667vec_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 2674static vector int __ATTRS_o_ai 2675vec_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 2682static vector unsigned int __ATTRS_o_ai 2683vec_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 2690static vector bool int __ATTRS_o_ai 2691vec_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 2698static vector float __ATTRS_o_ai 2699vec_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 2710static vector signed char __ATTRS_o_ai 2711vec_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 2718static vector unsigned char __ATTRS_o_ai 2719vec_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 2726static vector bool char __ATTRS_o_ai 2727vec_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 2738static vector short __ATTRS_o_ai 2739vec_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 2746static vector unsigned short __ATTRS_o_ai 2747vec_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 2754static vector bool short __ATTRS_o_ai 2755vec_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 2762static vector pixel __ATTRS_o_ai 2763vec_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 2774static vector int __ATTRS_o_ai 2775vec_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 2782static vector unsigned int __ATTRS_o_ai 2783vec_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 2790static vector bool int __ATTRS_o_ai 2791vec_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 2798static vector float __ATTRS_o_ai 2799vec_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 2808static vector signed char __ATTRS_o_ai 2809vec_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 2816static vector unsigned char __ATTRS_o_ai 2817vec_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 2824static vector bool char __ATTRS_o_ai 2825vec_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 2832static vector short __ATTRS_o_ai 2833vec_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 2840static vector unsigned short __ATTRS_o_ai 2841vec_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 2848static vector bool short __ATTRS_o_ai 2849vec_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 2856static vector pixel __ATTRS_o_ai 2857vec_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 2864static vector int __ATTRS_o_ai 2865vec_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 2872static vector unsigned int __ATTRS_o_ai 2873vec_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 2880static vector bool int __ATTRS_o_ai 2881vec_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 2888static vector float __ATTRS_o_ai 2889vec_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 2900static vector signed char __ATTRS_o_ai 2901vec_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 2908static vector unsigned char __ATTRS_o_ai 2909vec_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 2916static vector bool char __ATTRS_o_ai 2917vec_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 2928static vector short __ATTRS_o_ai 2929vec_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 2936static vector unsigned short __ATTRS_o_ai 2937vec_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 2944static vector bool short __ATTRS_o_ai 2945vec_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 2952static vector pixel __ATTRS_o_ai 2953vec_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 2964static vector int __ATTRS_o_ai 2965vec_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 2972static vector unsigned int __ATTRS_o_ai 2973vec_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 2980static vector bool int __ATTRS_o_ai 2981vec_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 2988static vector float __ATTRS_o_ai 2989vec_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 2998static vector unsigned short __attribute__((__always_inline__)) 2999vec_mfvscr(void) 3000{ 3001 return __builtin_altivec_mfvscr(); 3002} 3003 3004/* vec_min */ 3005 3006static vector signed char __ATTRS_o_ai 3007vec_min(vector signed char a, vector signed char b) 3008{ 3009 return __builtin_altivec_vminsb(a, b); 3010} 3011 3012static vector signed char __ATTRS_o_ai 3013vec_min(vector bool char a, vector signed char b) 3014{ 3015 return __builtin_altivec_vminsb((vector signed char)a, b); 3016} 3017 3018static vector signed char __ATTRS_o_ai 3019vec_min(vector signed char a, vector bool char b) 3020{ 3021 return __builtin_altivec_vminsb(a, (vector signed char)b); 3022} 3023 3024static vector unsigned char __ATTRS_o_ai 3025vec_min(vector unsigned char a, vector unsigned char b) 3026{ 3027 return __builtin_altivec_vminub(a, b); 3028} 3029 3030static vector unsigned char __ATTRS_o_ai 3031vec_min(vector bool char a, vector unsigned char b) 3032{ 3033 return __builtin_altivec_vminub((vector unsigned char)a, b); 3034} 3035 3036static vector unsigned char __ATTRS_o_ai 3037vec_min(vector unsigned char a, vector bool char b) 3038{ 3039 return __builtin_altivec_vminub(a, (vector unsigned char)b); 3040} 3041 3042static vector short __ATTRS_o_ai 3043vec_min(vector short a, vector short b) 3044{ 3045 return __builtin_altivec_vminsh(a, b); 3046} 3047 3048static vector short __ATTRS_o_ai 3049vec_min(vector bool short a, vector short b) 3050{ 3051 return __builtin_altivec_vminsh((vector short)a, b); 3052} 3053 3054static vector short __ATTRS_o_ai 3055vec_min(vector short a, vector bool short b) 3056{ 3057 return __builtin_altivec_vminsh(a, (vector short)b); 3058} 3059 3060static vector unsigned short __ATTRS_o_ai 3061vec_min(vector unsigned short a, vector unsigned short b) 3062{ 3063 return __builtin_altivec_vminuh(a, b); 3064} 3065 3066static vector unsigned short __ATTRS_o_ai 3067vec_min(vector bool short a, vector unsigned short b) 3068{ 3069 return __builtin_altivec_vminuh((vector unsigned short)a, b); 3070} 3071 3072static vector unsigned short __ATTRS_o_ai 3073vec_min(vector unsigned short a, vector bool short b) 3074{ 3075 return __builtin_altivec_vminuh(a, (vector unsigned short)b); 3076} 3077 3078static vector int __ATTRS_o_ai 3079vec_min(vector int a, vector int b) 3080{ 3081 return __builtin_altivec_vminsw(a, b); 3082} 3083 3084static vector int __ATTRS_o_ai 3085vec_min(vector bool int a, vector int b) 3086{ 3087 return __builtin_altivec_vminsw((vector int)a, b); 3088} 3089 3090static vector int __ATTRS_o_ai 3091vec_min(vector int a, vector bool int b) 3092{ 3093 return __builtin_altivec_vminsw(a, (vector int)b); 3094} 3095 3096static vector unsigned int __ATTRS_o_ai 3097vec_min(vector unsigned int a, vector unsigned int b) 3098{ 3099 return __builtin_altivec_vminuw(a, b); 3100} 3101 3102static vector unsigned int __ATTRS_o_ai 3103vec_min(vector bool int a, vector unsigned int b) 3104{ 3105 return __builtin_altivec_vminuw((vector unsigned int)a, b); 3106} 3107 3108static vector unsigned int __ATTRS_o_ai 3109vec_min(vector unsigned int a, vector bool int b) 3110{ 3111 return __builtin_altivec_vminuw(a, (vector unsigned int)b); 3112} 3113 3114static vector float __ATTRS_o_ai 3115vec_min(vector float a, vector float b) 3116{ 3117 return __builtin_altivec_vminfp(a, b); 3118} 3119 3120/* vec_vminsb */ 3121 3122static vector signed char __ATTRS_o_ai 3123vec_vminsb(vector signed char a, vector signed char b) 3124{ 3125 return __builtin_altivec_vminsb(a, b); 3126} 3127 3128static vector signed char __ATTRS_o_ai 3129vec_vminsb(vector bool char a, vector signed char b) 3130{ 3131 return __builtin_altivec_vminsb((vector signed char)a, b); 3132} 3133 3134static vector signed char __ATTRS_o_ai 3135vec_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 3142static vector unsigned char __ATTRS_o_ai 3143vec_vminub(vector unsigned char a, vector unsigned char b) 3144{ 3145 return __builtin_altivec_vminub(a, b); 3146} 3147 3148static vector unsigned char __ATTRS_o_ai 3149vec_vminub(vector bool char a, vector unsigned char b) 3150{ 3151 return __builtin_altivec_vminub((vector unsigned char)a, b); 3152} 3153 3154static vector unsigned char __ATTRS_o_ai 3155vec_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 3162static vector short __ATTRS_o_ai 3163vec_vminsh(vector short a, vector short b) 3164{ 3165 return __builtin_altivec_vminsh(a, b); 3166} 3167 3168static vector short __ATTRS_o_ai 3169vec_vminsh(vector bool short a, vector short b) 3170{ 3171 return __builtin_altivec_vminsh((vector short)a, b); 3172} 3173 3174static vector short __ATTRS_o_ai 3175vec_vminsh(vector short a, vector bool short b) 3176{ 3177 return __builtin_altivec_vminsh(a, (vector short)b); 3178} 3179 3180/* vec_vminuh */ 3181 3182static vector unsigned short __ATTRS_o_ai 3183vec_vminuh(vector unsigned short a, vector unsigned short b) 3184{ 3185 return __builtin_altivec_vminuh(a, b); 3186} 3187 3188static vector unsigned short __ATTRS_o_ai 3189vec_vminuh(vector bool short a, vector unsigned short b) 3190{ 3191 return __builtin_altivec_vminuh((vector unsigned short)a, b); 3192} 3193 3194static vector unsigned short __ATTRS_o_ai 3195vec_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 3202static vector int __ATTRS_o_ai 3203vec_vminsw(vector int a, vector int b) 3204{ 3205 return __builtin_altivec_vminsw(a, b); 3206} 3207 3208static vector int __ATTRS_o_ai 3209vec_vminsw(vector bool int a, vector int b) 3210{ 3211 return __builtin_altivec_vminsw((vector int)a, b); 3212} 3213 3214static vector int __ATTRS_o_ai 3215vec_vminsw(vector int a, vector bool int b) 3216{ 3217 return __builtin_altivec_vminsw(a, (vector int)b); 3218} 3219 3220/* vec_vminuw */ 3221 3222static vector unsigned int __ATTRS_o_ai 3223vec_vminuw(vector unsigned int a, vector unsigned int b) 3224{ 3225 return __builtin_altivec_vminuw(a, b); 3226} 3227 3228static vector unsigned int __ATTRS_o_ai 3229vec_vminuw(vector bool int a, vector unsigned int b) 3230{ 3231 return __builtin_altivec_vminuw((vector unsigned int)a, b); 3232} 3233 3234static vector unsigned int __ATTRS_o_ai 3235vec_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 3242static vector float __attribute__((__always_inline__)) 3243vec_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 3252static vector short __ATTRS_o_ai 3253vec_mladd(vector short a, vector short b, vector short c) 3254{ 3255 return a * b + c; 3256} 3257 3258static vector short __ATTRS_o_ai 3259vec_mladd(vector short a, vector unsigned short b, vector unsigned short c) 3260{ 3261 return a * (vector short)b + (vector short)c; 3262} 3263 3264static vector short __ATTRS_o_ai 3265vec_mladd(vector unsigned short a, vector short b, vector short c) 3266{ 3267 return (vector short)a * b + c; 3268} 3269 3270static vector unsigned short __ATTRS_o_ai 3271vec_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 3280static vector short __ATTRS_o_ai 3281vec_vmladduhm(vector short a, vector short b, vector short c) 3282{ 3283 return a * b + c; 3284} 3285 3286static vector short __ATTRS_o_ai 3287vec_vmladduhm(vector short a, vector unsigned short b, vector unsigned short c) 3288{ 3289 return a * (vector short)b + (vector short)c; 3290} 3291 3292static vector short __ATTRS_o_ai 3293vec_vmladduhm(vector unsigned short a, vector short b, vector short c) 3294{ 3295 return (vector short)a * b + c; 3296} 3297 3298static vector unsigned short __ATTRS_o_ai 3299vec_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 3308static vector short __attribute__((__always_inline__)) 3309vec_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 3316static vector short __attribute__((__always_inline__)) 3317vec_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 3324static vector int __ATTRS_o_ai 3325vec_msum(vector signed char a, vector unsigned char b, vector int c) 3326{ 3327 return __builtin_altivec_vmsummbm(a, b, c); 3328} 3329 3330static vector unsigned int __ATTRS_o_ai 3331vec_msum(vector unsigned char a, vector unsigned char b, vector unsigned int c) 3332{ 3333 return __builtin_altivec_vmsumubm(a, b, c); 3334} 3335 3336static vector int __ATTRS_o_ai 3337vec_msum(vector short a, vector short b, vector int c) 3338{ 3339 return __builtin_altivec_vmsumshm(a, b, c); 3340} 3341 3342static vector unsigned int __ATTRS_o_ai 3343vec_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 3352static vector int __attribute__((__always_inline__)) 3353vec_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 3360static vector unsigned int __attribute__((__always_inline__)) 3361vec_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 3370static vector int __attribute__((__always_inline__)) 3371vec_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 3378static vector unsigned int __attribute__((__always_inline__)) 3379vec_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 3388static vector int __ATTRS_o_ai 3389vec_msums(vector short a, vector short b, vector int c) 3390{ 3391 return __builtin_altivec_vmsumshs(a, b, c); 3392} 3393 3394static vector unsigned int __ATTRS_o_ai 3395vec_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 3404static vector int __attribute__((__always_inline__)) 3405vec_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 3412static vector unsigned int __attribute__((__always_inline__)) 3413vec_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 3422static void __ATTRS_o_ai 3423vec_mtvscr(vector signed char a) 3424{ 3425 __builtin_altivec_mtvscr((vector int)a); 3426} 3427 3428static void __ATTRS_o_ai 3429vec_mtvscr(vector unsigned char a) 3430{ 3431 __builtin_altivec_mtvscr((vector int)a); 3432} 3433 3434static void __ATTRS_o_ai 3435vec_mtvscr(vector bool char a) 3436{ 3437 __builtin_altivec_mtvscr((vector int)a); 3438} 3439 3440static void __ATTRS_o_ai 3441vec_mtvscr(vector short a) 3442{ 3443 __builtin_altivec_mtvscr((vector int)a); 3444} 3445 3446static void __ATTRS_o_ai 3447vec_mtvscr(vector unsigned short a) 3448{ 3449 __builtin_altivec_mtvscr((vector int)a); 3450} 3451 3452static void __ATTRS_o_ai 3453vec_mtvscr(vector bool short a) 3454{ 3455 __builtin_altivec_mtvscr((vector int)a); 3456} 3457 3458static void __ATTRS_o_ai 3459vec_mtvscr(vector pixel a) 3460{ 3461 __builtin_altivec_mtvscr((vector int)a); 3462} 3463 3464static void __ATTRS_o_ai 3465vec_mtvscr(vector int a) 3466{ 3467 __builtin_altivec_mtvscr((vector int)a); 3468} 3469 3470static void __ATTRS_o_ai 3471vec_mtvscr(vector unsigned int a) 3472{ 3473 __builtin_altivec_mtvscr((vector int)a); 3474} 3475 3476static void __ATTRS_o_ai 3477vec_mtvscr(vector bool int a) 3478{ 3479 __builtin_altivec_mtvscr((vector int)a); 3480} 3481 3482static void __ATTRS_o_ai 3483vec_mtvscr(vector float a) 3484{ 3485 __builtin_altivec_mtvscr((vector int)a); 3486} 3487 3488/* vec_mule */ 3489 3490static vector short __ATTRS_o_ai 3491vec_mule(vector signed char a, vector signed char b) 3492{ 3493 return __builtin_altivec_vmulesb(a, b); 3494} 3495 3496static vector unsigned short __ATTRS_o_ai 3497vec_mule(vector unsigned char a, vector unsigned char b) 3498{ 3499 return __builtin_altivec_vmuleub(a, b); 3500} 3501 3502static vector int __ATTRS_o_ai 3503vec_mule(vector short a, vector short b) 3504{ 3505 return __builtin_altivec_vmulesh(a, b); 3506} 3507 3508static vector unsigned int __ATTRS_o_ai 3509vec_mule(vector unsigned short a, vector unsigned short b) 3510{ 3511 return __builtin_altivec_vmuleuh(a, b); 3512} 3513 3514/* vec_vmulesb */ 3515 3516static vector short __attribute__((__always_inline__)) 3517vec_vmulesb(vector signed char a, vector signed char b) 3518{ 3519 return __builtin_altivec_vmulesb(a, b); 3520} 3521 3522/* vec_vmuleub */ 3523 3524static vector unsigned short __attribute__((__always_inline__)) 3525vec_vmuleub(vector unsigned char a, vector unsigned char b) 3526{ 3527 return __builtin_altivec_vmuleub(a, b); 3528} 3529 3530/* vec_vmulesh */ 3531 3532static vector int __attribute__((__always_inline__)) 3533vec_vmulesh(vector short a, vector short b) 3534{ 3535 return __builtin_altivec_vmulesh(a, b); 3536} 3537 3538/* vec_vmuleuh */ 3539 3540static vector unsigned int __attribute__((__always_inline__)) 3541vec_vmuleuh(vector unsigned short a, vector unsigned short b) 3542{ 3543 return __builtin_altivec_vmuleuh(a, b); 3544} 3545 3546/* vec_mulo */ 3547 3548static vector short __ATTRS_o_ai 3549vec_mulo(vector signed char a, vector signed char b) 3550{ 3551 return __builtin_altivec_vmulosb(a, b); 3552} 3553 3554static vector unsigned short __ATTRS_o_ai 3555vec_mulo(vector unsigned char a, vector unsigned char b) 3556{ 3557 return __builtin_altivec_vmuloub(a, b); 3558} 3559 3560static vector int __ATTRS_o_ai 3561vec_mulo(vector short a, vector short b) 3562{ 3563 return __builtin_altivec_vmulosh(a, b); 3564} 3565 3566static vector unsigned int __ATTRS_o_ai 3567vec_mulo(vector unsigned short a, vector unsigned short b) 3568{ 3569 return __builtin_altivec_vmulouh(a, b); 3570} 3571 3572/* vec_vmulosb */ 3573 3574static vector short __attribute__((__always_inline__)) 3575vec_vmulosb(vector signed char a, vector signed char b) 3576{ 3577 return __builtin_altivec_vmulosb(a, b); 3578} 3579 3580/* vec_vmuloub */ 3581 3582static vector unsigned short __attribute__((__always_inline__)) 3583vec_vmuloub(vector unsigned char a, vector unsigned char b) 3584{ 3585 return __builtin_altivec_vmuloub(a, b); 3586} 3587 3588/* vec_vmulosh */ 3589 3590static vector int __attribute__((__always_inline__)) 3591vec_vmulosh(vector short a, vector short b) 3592{ 3593 return __builtin_altivec_vmulosh(a, b); 3594} 3595 3596/* vec_vmulouh */ 3597 3598static vector unsigned int __attribute__((__always_inline__)) 3599vec_vmulouh(vector unsigned short a, vector unsigned short b) 3600{ 3601 return __builtin_altivec_vmulouh(a, b); 3602} 3603 3604/* vec_nmsub */ 3605 3606static vector float __attribute__((__always_inline__)) 3607vec_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 3614static vector float __attribute__((__always_inline__)) 3615vec_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 3624static vector signed char __ATTRS_o_ai 3625vec_nor(vector signed char a, vector signed char b) 3626{ 3627 return ~(a | b); 3628} 3629 3630static vector unsigned char __ATTRS_o_ai 3631vec_nor(vector unsigned char a, vector unsigned char b) 3632{ 3633 return ~(a | b); 3634} 3635 3636static vector bool char __ATTRS_o_ai 3637vec_nor(vector bool char a, vector bool char b) 3638{ 3639 return ~(a | b); 3640} 3641 3642static vector short __ATTRS_o_ai 3643vec_nor(vector short a, vector short b) 3644{ 3645 return ~(a | b); 3646} 3647 3648static vector unsigned short __ATTRS_o_ai 3649vec_nor(vector unsigned short a, vector unsigned short b) 3650{ 3651 return ~(a | b); 3652} 3653 3654static vector bool short __ATTRS_o_ai 3655vec_nor(vector bool short a, vector bool short b) 3656{ 3657 return ~(a | b); 3658} 3659 3660static vector int __ATTRS_o_ai 3661vec_nor(vector int a, vector int b) 3662{ 3663 return ~(a | b); 3664} 3665 3666static vector unsigned int __ATTRS_o_ai 3667vec_nor(vector unsigned int a, vector unsigned int b) 3668{ 3669 return ~(a | b); 3670} 3671 3672static vector bool int __ATTRS_o_ai 3673vec_nor(vector bool int a, vector bool int b) 3674{ 3675 return ~(a | b); 3676} 3677 3678static vector float __ATTRS_o_ai 3679vec_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 3687static vector signed char __ATTRS_o_ai 3688vec_vnor(vector signed char a, vector signed char b) 3689{ 3690 return ~(a | b); 3691} 3692 3693static vector unsigned char __ATTRS_o_ai 3694vec_vnor(vector unsigned char a, vector unsigned char b) 3695{ 3696 return ~(a | b); 3697} 3698 3699static vector bool char __ATTRS_o_ai 3700vec_vnor(vector bool char a, vector bool char b) 3701{ 3702 return ~(a | b); 3703} 3704 3705static vector short __ATTRS_o_ai 3706vec_vnor(vector short a, vector short b) 3707{ 3708 return ~(a | b); 3709} 3710 3711static vector unsigned short __ATTRS_o_ai 3712vec_vnor(vector unsigned short a, vector unsigned short b) 3713{ 3714 return ~(a | b); 3715} 3716 3717static vector bool short __ATTRS_o_ai 3718vec_vnor(vector bool short a, vector bool short b) 3719{ 3720 return ~(a | b); 3721} 3722 3723static vector int __ATTRS_o_ai 3724vec_vnor(vector int a, vector int b) 3725{ 3726 return ~(a | b); 3727} 3728 3729static vector unsigned int __ATTRS_o_ai 3730vec_vnor(vector unsigned int a, vector unsigned int b) 3731{ 3732 return ~(a | b); 3733} 3734 3735static vector bool int __ATTRS_o_ai 3736vec_vnor(vector bool int a, vector bool int b) 3737{ 3738 return ~(a | b); 3739} 3740 3741static vector float __ATTRS_o_ai 3742vec_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 3752static vector signed char __ATTRS_o_ai 3753vec_or(vector signed char a, vector signed char b) 3754{ 3755 return a | b; 3756} 3757 3758static vector signed char __ATTRS_o_ai 3759vec_or(vector bool char a, vector signed char b) 3760{ 3761 return (vector signed char)a | b; 3762} 3763 3764static vector signed char __ATTRS_o_ai 3765vec_or(vector signed char a, vector bool char b) 3766{ 3767 return a | (vector signed char)b; 3768} 3769 3770static vector unsigned char __ATTRS_o_ai 3771vec_or(vector unsigned char a, vector unsigned char b) 3772{ 3773 return a | b; 3774} 3775 3776static vector unsigned char __ATTRS_o_ai 3777vec_or(vector bool char a, vector unsigned char b) 3778{ 3779 return (vector unsigned char)a | b; 3780} 3781 3782static vector unsigned char __ATTRS_o_ai 3783vec_or(vector unsigned char a, vector bool char b) 3784{ 3785 return a | (vector unsigned char)b; 3786} 3787 3788static vector bool char __ATTRS_o_ai 3789vec_or(vector bool char a, vector bool char b) 3790{ 3791 return a | b; 3792} 3793 3794static vector short __ATTRS_o_ai 3795vec_or(vector short a, vector short b) 3796{ 3797 return a | b; 3798} 3799 3800static vector short __ATTRS_o_ai 3801vec_or(vector bool short a, vector short b) 3802{ 3803 return (vector short)a | b; 3804} 3805 3806static vector short __ATTRS_o_ai 3807vec_or(vector short a, vector bool short b) 3808{ 3809 return a | (vector short)b; 3810} 3811 3812static vector unsigned short __ATTRS_o_ai 3813vec_or(vector unsigned short a, vector unsigned short b) 3814{ 3815 return a | b; 3816} 3817 3818static vector unsigned short __ATTRS_o_ai 3819vec_or(vector bool short a, vector unsigned short b) 3820{ 3821 return (vector unsigned short)a | b; 3822} 3823 3824static vector unsigned short __ATTRS_o_ai 3825vec_or(vector unsigned short a, vector bool short b) 3826{ 3827 return a | (vector unsigned short)b; 3828} 3829 3830static vector bool short __ATTRS_o_ai 3831vec_or(vector bool short a, vector bool short b) 3832{ 3833 return a | b; 3834} 3835 3836static vector int __ATTRS_o_ai 3837vec_or(vector int a, vector int b) 3838{ 3839 return a | b; 3840} 3841 3842static vector int __ATTRS_o_ai 3843vec_or(vector bool int a, vector int b) 3844{ 3845 return (vector int)a | b; 3846} 3847 3848static vector int __ATTRS_o_ai 3849vec_or(vector int a, vector bool int b) 3850{ 3851 return a | (vector int)b; 3852} 3853 3854static vector unsigned int __ATTRS_o_ai 3855vec_or(vector unsigned int a, vector unsigned int b) 3856{ 3857 return a | b; 3858} 3859 3860static vector unsigned int __ATTRS_o_ai 3861vec_or(vector bool int a, vector unsigned int b) 3862{ 3863 return (vector unsigned int)a | b; 3864} 3865 3866static vector unsigned int __ATTRS_o_ai 3867vec_or(vector unsigned int a, vector bool int b) 3868{ 3869 return a | (vector unsigned int)b; 3870} 3871 3872static vector bool int __ATTRS_o_ai 3873vec_or(vector bool int a, vector bool int b) 3874{ 3875 return a | b; 3876} 3877 3878static vector float __ATTRS_o_ai 3879vec_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 3885static vector float __ATTRS_o_ai 3886vec_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 3892static vector float __ATTRS_o_ai 3893vec_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 3901static vector signed char __ATTRS_o_ai 3902vec_vor(vector signed char a, vector signed char b) 3903{ 3904 return a | b; 3905} 3906 3907static vector signed char __ATTRS_o_ai 3908vec_vor(vector bool char a, vector signed char b) 3909{ 3910 return (vector signed char)a | b; 3911} 3912 3913static vector signed char __ATTRS_o_ai 3914vec_vor(vector signed char a, vector bool char b) 3915{ 3916 return a | (vector signed char)b; 3917} 3918 3919static vector unsigned char __ATTRS_o_ai 3920vec_vor(vector unsigned char a, vector unsigned char b) 3921{ 3922 return a | b; 3923} 3924 3925static vector unsigned char __ATTRS_o_ai 3926vec_vor(vector bool char a, vector unsigned char b) 3927{ 3928 return (vector unsigned char)a | b; 3929} 3930 3931static vector unsigned char __ATTRS_o_ai 3932vec_vor(vector unsigned char a, vector bool char b) 3933{ 3934 return a | (vector unsigned char)b; 3935} 3936 3937static vector bool char __ATTRS_o_ai 3938vec_vor(vector bool char a, vector bool char b) 3939{ 3940 return a | b; 3941} 3942 3943static vector short __ATTRS_o_ai 3944vec_vor(vector short a, vector short b) 3945{ 3946 return a | b; 3947} 3948 3949static vector short __ATTRS_o_ai 3950vec_vor(vector bool short a, vector short b) 3951{ 3952 return (vector short)a | b; 3953} 3954 3955static vector short __ATTRS_o_ai 3956vec_vor(vector short a, vector bool short b) 3957{ 3958 return a | (vector short)b; 3959} 3960 3961static vector unsigned short __ATTRS_o_ai 3962vec_vor(vector unsigned short a, vector unsigned short b) 3963{ 3964 return a | b; 3965} 3966 3967static vector unsigned short __ATTRS_o_ai 3968vec_vor(vector bool short a, vector unsigned short b) 3969{ 3970 return (vector unsigned short)a | b; 3971} 3972 3973static vector unsigned short __ATTRS_o_ai 3974vec_vor(vector unsigned short a, vector bool short b) 3975{ 3976 return a | (vector unsigned short)b; 3977} 3978 3979static vector bool short __ATTRS_o_ai 3980vec_vor(vector bool short a, vector bool short b) 3981{ 3982 return a | b; 3983} 3984 3985static vector int __ATTRS_o_ai 3986vec_vor(vector int a, vector int b) 3987{ 3988 return a | b; 3989} 3990 3991static vector int __ATTRS_o_ai 3992vec_vor(vector bool int a, vector int b) 3993{ 3994 return (vector int)a | b; 3995} 3996 3997static vector int __ATTRS_o_ai 3998vec_vor(vector int a, vector bool int b) 3999{ 4000 return a | (vector int)b; 4001} 4002 4003static vector unsigned int __ATTRS_o_ai 4004vec_vor(vector unsigned int a, vector unsigned int b) 4005{ 4006 return a | b; 4007} 4008 4009static vector unsigned int __ATTRS_o_ai 4010vec_vor(vector bool int a, vector unsigned int b) 4011{ 4012 return (vector unsigned int)a | b; 4013} 4014 4015static vector unsigned int __ATTRS_o_ai 4016vec_vor(vector unsigned int a, vector bool int b) 4017{ 4018 return a | (vector unsigned int)b; 4019} 4020 4021static vector bool int __ATTRS_o_ai 4022vec_vor(vector bool int a, vector bool int b) 4023{ 4024 return a | b; 4025} 4026 4027static vector float __ATTRS_o_ai 4028vec_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 4034static vector float __ATTRS_o_ai 4035vec_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 4041static vector float __ATTRS_o_ai 4042vec_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 4050static vector signed char __ATTRS_o_ai 4051vec_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 4058static vector unsigned char __ATTRS_o_ai 4059vec_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 4066static vector bool char __ATTRS_o_ai 4067vec_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 4074static vector short __ATTRS_o_ai 4075vec_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 4082static vector unsigned short __ATTRS_o_ai 4083vec_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 4090static vector bool short __ATTRS_o_ai 4091vec_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 4102static vector signed char __ATTRS_o_ai 4103vec_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 4110static vector unsigned char __ATTRS_o_ai 4111vec_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 4118static vector bool char __ATTRS_o_ai 4119vec_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 4130static vector short __ATTRS_o_ai 4131vec_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 4138static vector unsigned short __ATTRS_o_ai 4139vec_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 4146static vector bool short __ATTRS_o_ai 4147vec_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 4156static vector pixel __attribute__((__always_inline__)) 4157vec_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 4164static vector pixel __attribute__((__always_inline__)) 4165vec_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 4172static vector signed char __ATTRS_o_ai 4173vec_packs(vector short a, vector short b) 4174{ 4175 return __builtin_altivec_vpkshss(a, b); 4176} 4177 4178static vector unsigned char __ATTRS_o_ai 4179vec_packs(vector unsigned short a, vector unsigned short b) 4180{ 4181 return __builtin_altivec_vpkuhus(a, b); 4182} 4183 4184static vector signed short __ATTRS_o_ai 4185vec_packs(vector int a, vector int b) 4186{ 4187 return __builtin_altivec_vpkswss(a, b); 4188} 4189 4190static vector unsigned short __ATTRS_o_ai 4191vec_packs(vector unsigned int a, vector unsigned int b) 4192{ 4193 return __builtin_altivec_vpkuwus(a, b); 4194} 4195 4196/* vec_vpkshss */ 4197 4198static vector signed char __attribute__((__always_inline__)) 4199vec_vpkshss(vector short a, vector short b) 4200{ 4201 return __builtin_altivec_vpkshss(a, b); 4202} 4203 4204/* vec_vpkuhus */ 4205 4206static vector unsigned char __attribute__((__always_inline__)) 4207vec_vpkuhus(vector unsigned short a, vector unsigned short b) 4208{ 4209 return __builtin_altivec_vpkuhus(a, b); 4210} 4211 4212/* vec_vpkswss */ 4213 4214static vector signed short __attribute__((__always_inline__)) 4215vec_vpkswss(vector int a, vector int b) 4216{ 4217 return __builtin_altivec_vpkswss(a, b); 4218} 4219 4220/* vec_vpkuwus */ 4221 4222static vector unsigned short __attribute__((__always_inline__)) 4223vec_vpkuwus(vector unsigned int a, vector unsigned int b) 4224{ 4225 return __builtin_altivec_vpkuwus(a, b); 4226} 4227 4228/* vec_packsu */ 4229 4230static vector unsigned char __ATTRS_o_ai 4231vec_packsu(vector short a, vector short b) 4232{ 4233 return __builtin_altivec_vpkshus(a, b); 4234} 4235 4236static vector unsigned char __ATTRS_o_ai 4237vec_packsu(vector unsigned short a, vector unsigned short b) 4238{ 4239 return __builtin_altivec_vpkuhus(a, b); 4240} 4241 4242static vector unsigned short __ATTRS_o_ai 4243vec_packsu(vector int a, vector int b) 4244{ 4245 return __builtin_altivec_vpkswus(a, b); 4246} 4247 4248static vector unsigned short __ATTRS_o_ai 4249vec_packsu(vector unsigned int a, vector unsigned int b) 4250{ 4251 return __builtin_altivec_vpkuwus(a, b); 4252} 4253 4254/* vec_vpkshus */ 4255 4256static vector unsigned char __ATTRS_o_ai 4257vec_vpkshus(vector short a, vector short b) 4258{ 4259 return __builtin_altivec_vpkshus(a, b); 4260} 4261 4262static vector unsigned char __ATTRS_o_ai 4263vec_vpkshus(vector unsigned short a, vector unsigned short b) 4264{ 4265 return __builtin_altivec_vpkuhus(a, b); 4266} 4267 4268/* vec_vpkswus */ 4269 4270static vector unsigned short __ATTRS_o_ai 4271vec_vpkswus(vector int a, vector int b) 4272{ 4273 return __builtin_altivec_vpkswus(a, b); 4274} 4275 4276static vector unsigned short __ATTRS_o_ai 4277vec_vpkswus(vector unsigned int a, vector unsigned int b) 4278{ 4279 return __builtin_altivec_vpkuwus(a, b); 4280} 4281 4282/* vec_perm */ 4283 4284vector signed char __ATTRS_o_ai 4285vec_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 4291vector unsigned char __ATTRS_o_ai 4292vec_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 4300vector bool char __ATTRS_o_ai 4301vec_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 4307vector short __ATTRS_o_ai 4308vec_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 4314vector unsigned short __ATTRS_o_ai 4315vec_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 4323vector bool short __ATTRS_o_ai 4324vec_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 4330vector pixel __ATTRS_o_ai 4331vec_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 4337vector int __ATTRS_o_ai 4338vec_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 4343vector unsigned int __ATTRS_o_ai 4344vec_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 4350vector bool int __ATTRS_o_ai 4351vec_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 4357vector float __ATTRS_o_ai 4358vec_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 4366vector signed char __ATTRS_o_ai 4367vec_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 4373vector unsigned char __ATTRS_o_ai 4374vec_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 4382vector bool char __ATTRS_o_ai 4383vec_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 4389vector short __ATTRS_o_ai 4390vec_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 4396vector unsigned short __ATTRS_o_ai 4397vec_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 4405vector bool short __ATTRS_o_ai 4406vec_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 4412vector pixel __ATTRS_o_ai 4413vec_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 4419vector int __ATTRS_o_ai 4420vec_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 4425vector unsigned int __ATTRS_o_ai 4426vec_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 4432vector bool int __ATTRS_o_ai 4433vec_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 4439vector float __ATTRS_o_ai 4440vec_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 4448vector float __attribute__((__always_inline__)) 4449vec_re(vector float a) 4450{ 4451 return __builtin_altivec_vrefp(a); 4452} 4453 4454/* vec_vrefp */ 4455 4456vector float __attribute__((__always_inline__)) 4457vec_vrefp(vector float a) 4458{ 4459 return __builtin_altivec_vrefp(a); 4460} 4461 4462/* vec_rl */ 4463 4464static vector signed char __ATTRS_o_ai 4465vec_rl(vector signed char a, vector unsigned char b) 4466{ 4467 return (vector signed char)__builtin_altivec_vrlb((vector char)a, b); 4468} 4469 4470static vector unsigned char __ATTRS_o_ai 4471vec_rl(vector unsigned char a, vector unsigned char b) 4472{ 4473 return (vector unsigned char)__builtin_altivec_vrlb((vector char)a, b); 4474} 4475 4476static vector short __ATTRS_o_ai 4477vec_rl(vector short a, vector unsigned short b) 4478{ 4479 return __builtin_altivec_vrlh(a, b); 4480} 4481 4482static vector unsigned short __ATTRS_o_ai 4483vec_rl(vector unsigned short a, vector unsigned short b) 4484{ 4485 return (vector unsigned short)__builtin_altivec_vrlh((vector short)a, b); 4486} 4487 4488static vector int __ATTRS_o_ai 4489vec_rl(vector int a, vector unsigned int b) 4490{ 4491 return __builtin_altivec_vrlw(a, b); 4492} 4493 4494static vector unsigned int __ATTRS_o_ai 4495vec_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 4502static vector signed char __ATTRS_o_ai 4503vec_vrlb(vector signed char a, vector unsigned char b) 4504{ 4505 return (vector signed char)__builtin_altivec_vrlb((vector char)a, b); 4506} 4507 4508static vector unsigned char __ATTRS_o_ai 4509vec_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 4516static vector short __ATTRS_o_ai 4517vec_vrlh(vector short a, vector unsigned short b) 4518{ 4519 return __builtin_altivec_vrlh(a, b); 4520} 4521 4522static vector unsigned short __ATTRS_o_ai 4523vec_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 4530static vector int __ATTRS_o_ai 4531vec_vrlw(vector int a, vector unsigned int b) 4532{ 4533 return __builtin_altivec_vrlw(a, b); 4534} 4535 4536static vector unsigned int __ATTRS_o_ai 4537vec_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 4544static vector float __attribute__((__always_inline__)) 4545vec_round(vector float a) 4546{ 4547 return __builtin_altivec_vrfin(a); 4548} 4549 4550/* vec_vrfin */ 4551 4552static vector float __attribute__((__always_inline__)) 4553vec_vrfin(vector float a) 4554{ 4555 return __builtin_altivec_vrfin(a); 4556} 4557 4558/* vec_rsqrte */ 4559 4560static __vector float __attribute__((__always_inline__)) 4561vec_rsqrte(vector float a) 4562{ 4563 return __builtin_altivec_vrsqrtefp(a); 4564} 4565 4566/* vec_vrsqrtefp */ 4567 4568static __vector float __attribute__((__always_inline__)) 4569vec_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 4578static vector signed char __ATTRS_o_ai 4579vec_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 4584static vector signed char __ATTRS_o_ai 4585vec_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 4590static vector unsigned char __ATTRS_o_ai 4591vec_sel(vector unsigned char a, vector unsigned char b, vector unsigned char c) 4592{ 4593 return (a & ~c) | (b & c); 4594} 4595 4596static vector unsigned char __ATTRS_o_ai 4597vec_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 4602static vector bool char __ATTRS_o_ai 4603vec_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 4608static vector bool char __ATTRS_o_ai 4609vec_sel(vector bool char a, vector bool char b, vector bool char c) 4610{ 4611 return (a & ~c) | (b & c); 4612} 4613 4614static vector short __ATTRS_o_ai 4615vec_sel(vector short a, vector short b, vector unsigned short c) 4616{ 4617 return (a & ~(vector short)c) | (b & (vector short)c); 4618} 4619 4620static vector short __ATTRS_o_ai 4621vec_sel(vector short a, vector short b, vector bool short c) 4622{ 4623 return (a & ~(vector short)c) | (b & (vector short)c); 4624} 4625 4626static vector unsigned short __ATTRS_o_ai 4627vec_sel(vector unsigned short a, 4628 vector unsigned short b, 4629 vector unsigned short c) 4630{ 4631 return (a & ~c) | (b & c); 4632} 4633 4634static vector unsigned short __ATTRS_o_ai 4635vec_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 4640static vector bool short __ATTRS_o_ai 4641vec_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 4646static vector bool short __ATTRS_o_ai 4647vec_sel(vector bool short a, vector bool short b, vector bool short c) 4648{ 4649 return (a & ~c) | (b & c); 4650} 4651 4652static vector int __ATTRS_o_ai 4653vec_sel(vector int a, vector int b, vector unsigned int c) 4654{ 4655 return (a & ~(vector int)c) | (b & (vector int)c); 4656} 4657 4658static vector int __ATTRS_o_ai 4659vec_sel(vector int a, vector int b, vector bool int c) 4660{ 4661 return (a & ~(vector int)c) | (b & (vector int)c); 4662} 4663 4664static vector unsigned int __ATTRS_o_ai 4665vec_sel(vector unsigned int a, vector unsigned int b, vector unsigned int c) 4666{ 4667 return (a & ~c) | (b & c); 4668} 4669 4670static vector unsigned int __ATTRS_o_ai 4671vec_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 4676static vector bool int __ATTRS_o_ai 4677vec_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 4682static vector bool int __ATTRS_o_ai 4683vec_sel(vector bool int a, vector bool int b, vector bool int c) 4684{ 4685 return (a & ~c) | (b & c); 4686} 4687 4688static vector float __ATTRS_o_ai 4689vec_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 4696static vector float __ATTRS_o_ai 4697vec_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 4706static vector signed char __ATTRS_o_ai 4707vec_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 4712static vector signed char __ATTRS_o_ai 4713vec_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 4718static vector unsigned char __ATTRS_o_ai 4719vec_vsel(vector unsigned char a, vector unsigned char b, vector unsigned char c) 4720{ 4721 return (a & ~c) | (b & c); 4722} 4723 4724static vector unsigned char __ATTRS_o_ai 4725vec_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 4730static vector bool char __ATTRS_o_ai 4731vec_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 4736static vector bool char __ATTRS_o_ai 4737vec_vsel(vector bool char a, vector bool char b, vector bool char c) 4738{ 4739 return (a & ~c) | (b & c); 4740} 4741 4742static vector short __ATTRS_o_ai 4743vec_vsel(vector short a, vector short b, vector unsigned short c) 4744{ 4745 return (a & ~(vector short)c) | (b & (vector short)c); 4746} 4747 4748static vector short __ATTRS_o_ai 4749vec_vsel(vector short a, vector short b, vector bool short c) 4750{ 4751 return (a & ~(vector short)c) | (b & (vector short)c); 4752} 4753 4754static vector unsigned short __ATTRS_o_ai 4755vec_vsel(vector unsigned short a, 4756 vector unsigned short b, 4757 vector unsigned short c) 4758{ 4759 return (a & ~c) | (b & c); 4760} 4761 4762static vector unsigned short __ATTRS_o_ai 4763vec_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 4768static vector bool short __ATTRS_o_ai 4769vec_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 4774static vector bool short __ATTRS_o_ai 4775vec_vsel(vector bool short a, vector bool short b, vector bool short c) 4776{ 4777 return (a & ~c) | (b & c); 4778} 4779 4780static vector int __ATTRS_o_ai 4781vec_vsel(vector int a, vector int b, vector unsigned int c) 4782{ 4783 return (a & ~(vector int)c) | (b & (vector int)c); 4784} 4785 4786static vector int __ATTRS_o_ai 4787vec_vsel(vector int a, vector int b, vector bool int c) 4788{ 4789 return (a & ~(vector int)c) | (b & (vector int)c); 4790} 4791 4792static vector unsigned int __ATTRS_o_ai 4793vec_vsel(vector unsigned int a, vector unsigned int b, vector unsigned int c) 4794{ 4795 return (a & ~c) | (b & c); 4796} 4797 4798static vector unsigned int __ATTRS_o_ai 4799vec_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 4804static vector bool int __ATTRS_o_ai 4805vec_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 4810static vector bool int __ATTRS_o_ai 4811vec_vsel(vector bool int a, vector bool int b, vector bool int c) 4812{ 4813 return (a & ~c) | (b & c); 4814} 4815 4816static vector float __ATTRS_o_ai 4817vec_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 4824static vector float __ATTRS_o_ai 4825vec_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 4834static vector signed char __ATTRS_o_ai 4835vec_sl(vector signed char a, vector unsigned char b) 4836{ 4837 return a << (vector signed char)b; 4838} 4839 4840static vector unsigned char __ATTRS_o_ai 4841vec_sl(vector unsigned char a, vector unsigned char b) 4842{ 4843 return a << b; 4844} 4845 4846static vector short __ATTRS_o_ai 4847vec_sl(vector short a, vector unsigned short b) 4848{ 4849 return a << (vector short)b; 4850} 4851 4852static vector unsigned short __ATTRS_o_ai 4853vec_sl(vector unsigned short a, vector unsigned short b) 4854{ 4855 return a << b; 4856} 4857 4858static vector int __ATTRS_o_ai 4859vec_sl(vector int a, vector unsigned int b) 4860{ 4861 return a << (vector int)b; 4862} 4863 4864static vector unsigned int __ATTRS_o_ai 4865vec_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 4874static vector signed char __ATTRS_o_ai 4875vec_vslb(vector signed char a, vector unsigned char b) 4876{ 4877 return vec_sl(a, b); 4878} 4879 4880static vector unsigned char __ATTRS_o_ai 4881vec_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 4890static vector short __ATTRS_o_ai 4891vec_vslh(vector short a, vector unsigned short b) 4892{ 4893 return vec_sl(a, b); 4894} 4895 4896static vector unsigned short __ATTRS_o_ai 4897vec_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 4906static vector int __ATTRS_o_ai 4907vec_vslw(vector int a, vector unsigned int b) 4908{ 4909 return vec_sl(a, b); 4910} 4911 4912static vector unsigned int __ATTRS_o_ai 4913vec_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 4922static vector signed char __ATTRS_o_ai 4923vec_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 4930static vector unsigned char __ATTRS_o_ai 4931vec_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 4938static vector short __ATTRS_o_ai 4939vec_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 4946static vector unsigned short __ATTRS_o_ai 4947vec_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 4954static vector pixel __ATTRS_o_ai 4955vec_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 4962static vector int __ATTRS_o_ai 4963vec_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 4970static vector unsigned int __ATTRS_o_ai 4971vec_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 4978static vector float __ATTRS_o_ai 4979vec_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 4988static vector signed char __ATTRS_o_ai 4989vec_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 4996static vector unsigned char __ATTRS_o_ai 4997vec_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 5004static vector short __ATTRS_o_ai 5005vec_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 5012static vector unsigned short __ATTRS_o_ai 5013vec_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 5020static vector pixel __ATTRS_o_ai 5021vec_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 5028static vector int __ATTRS_o_ai 5029vec_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 5036static vector unsigned int __ATTRS_o_ai 5037vec_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 5044static vector float __ATTRS_o_ai 5045vec_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 5054static vector signed char __ATTRS_o_ai 5055vec_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 5061static vector signed char __ATTRS_o_ai 5062vec_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 5068static vector signed char __ATTRS_o_ai 5069vec_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 5075static vector unsigned char __ATTRS_o_ai 5076vec_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 5082static vector unsigned char __ATTRS_o_ai 5083vec_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 5089static vector unsigned char __ATTRS_o_ai 5090vec_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 5096static vector bool char __ATTRS_o_ai 5097vec_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 5102static vector bool char __ATTRS_o_ai 5103vec_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 5108static vector bool char __ATTRS_o_ai 5109vec_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 5114static vector short __ATTRS_o_ai 5115vec_sll(vector short a, vector unsigned char b) 5116{ 5117 return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5118} 5119 5120static vector short __ATTRS_o_ai 5121vec_sll(vector short a, vector unsigned short b) 5122{ 5123 return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5124} 5125 5126static vector short __ATTRS_o_ai 5127vec_sll(vector short a, vector unsigned int b) 5128{ 5129 return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5130} 5131 5132static vector unsigned short __ATTRS_o_ai 5133vec_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 5139static vector unsigned short __ATTRS_o_ai 5140vec_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 5146static vector unsigned short __ATTRS_o_ai 5147vec_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 5153static vector bool short __ATTRS_o_ai 5154vec_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 5159static vector bool short __ATTRS_o_ai 5160vec_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 5165static vector bool short __ATTRS_o_ai 5166vec_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 5171static vector pixel __ATTRS_o_ai 5172vec_sll(vector pixel a, vector unsigned char b) 5173{ 5174 return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b); 5175} 5176 5177static vector pixel __ATTRS_o_ai 5178vec_sll(vector pixel a, vector unsigned short b) 5179{ 5180 return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b); 5181} 5182 5183static vector pixel __ATTRS_o_ai 5184vec_sll(vector pixel a, vector unsigned int b) 5185{ 5186 return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b); 5187} 5188 5189static vector int __ATTRS_o_ai 5190vec_sll(vector int a, vector unsigned char b) 5191{ 5192 return (vector int)__builtin_altivec_vsl(a, (vector int)b); 5193} 5194 5195static vector int __ATTRS_o_ai 5196vec_sll(vector int a, vector unsigned short b) 5197{ 5198 return (vector int)__builtin_altivec_vsl(a, (vector int)b); 5199} 5200 5201static vector int __ATTRS_o_ai 5202vec_sll(vector int a, vector unsigned int b) 5203{ 5204 return (vector int)__builtin_altivec_vsl(a, (vector int)b); 5205} 5206 5207static vector unsigned int __ATTRS_o_ai 5208vec_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 5214static vector unsigned int __ATTRS_o_ai 5215vec_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 5221static vector unsigned int __ATTRS_o_ai 5222vec_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 5228static vector bool int __ATTRS_o_ai 5229vec_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 5234static vector bool int __ATTRS_o_ai 5235vec_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 5240static vector bool int __ATTRS_o_ai 5241vec_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 5248static vector signed char __ATTRS_o_ai 5249vec_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 5255static vector signed char __ATTRS_o_ai 5256vec_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 5262static vector signed char __ATTRS_o_ai 5263vec_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 5269static vector unsigned char __ATTRS_o_ai 5270vec_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 5276static vector unsigned char __ATTRS_o_ai 5277vec_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 5283static vector unsigned char __ATTRS_o_ai 5284vec_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 5290static vector bool char __ATTRS_o_ai 5291vec_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 5296static vector bool char __ATTRS_o_ai 5297vec_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 5302static vector bool char __ATTRS_o_ai 5303vec_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 5308static vector short __ATTRS_o_ai 5309vec_vsl(vector short a, vector unsigned char b) 5310{ 5311 return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5312} 5313 5314static vector short __ATTRS_o_ai 5315vec_vsl(vector short a, vector unsigned short b) 5316{ 5317 return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5318} 5319 5320static vector short __ATTRS_o_ai 5321vec_vsl(vector short a, vector unsigned int b) 5322{ 5323 return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5324} 5325 5326static vector unsigned short __ATTRS_o_ai 5327vec_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 5333static vector unsigned short __ATTRS_o_ai 5334vec_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 5340static vector unsigned short __ATTRS_o_ai 5341vec_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 5347static vector bool short __ATTRS_o_ai 5348vec_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 5353static vector bool short __ATTRS_o_ai 5354vec_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 5359static vector bool short __ATTRS_o_ai 5360vec_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 5365static vector pixel __ATTRS_o_ai 5366vec_vsl(vector pixel a, vector unsigned char b) 5367{ 5368 return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b); 5369} 5370 5371static vector pixel __ATTRS_o_ai 5372vec_vsl(vector pixel a, vector unsigned short b) 5373{ 5374 return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b); 5375} 5376 5377static vector pixel __ATTRS_o_ai 5378vec_vsl(vector pixel a, vector unsigned int b) 5379{ 5380 return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b); 5381} 5382 5383static vector int __ATTRS_o_ai 5384vec_vsl(vector int a, vector unsigned char b) 5385{ 5386 return (vector int)__builtin_altivec_vsl(a, (vector int)b); 5387} 5388 5389static vector int __ATTRS_o_ai 5390vec_vsl(vector int a, vector unsigned short b) 5391{ 5392 return (vector int)__builtin_altivec_vsl(a, (vector int)b); 5393} 5394 5395static vector int __ATTRS_o_ai 5396vec_vsl(vector int a, vector unsigned int b) 5397{ 5398 return (vector int)__builtin_altivec_vsl(a, (vector int)b); 5399} 5400 5401static vector unsigned int __ATTRS_o_ai 5402vec_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 5408static vector unsigned int __ATTRS_o_ai 5409vec_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 5415static vector unsigned int __ATTRS_o_ai 5416vec_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 5422static vector bool int __ATTRS_o_ai 5423vec_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 5428static vector bool int __ATTRS_o_ai 5429vec_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 5434static vector bool int __ATTRS_o_ai 5435vec_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 5442static vector signed char __ATTRS_o_ai 5443vec_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 5449static vector signed char __ATTRS_o_ai 5450vec_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 5456static vector unsigned char __ATTRS_o_ai 5457vec_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 5463static vector unsigned char __ATTRS_o_ai 5464vec_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 5470static vector short __ATTRS_o_ai 5471vec_slo(vector short a, vector signed char b) 5472{ 5473 return (vector short)__builtin_altivec_vslo((vector int)a, (vector int)b); 5474} 5475 5476static vector short __ATTRS_o_ai 5477vec_slo(vector short a, vector unsigned char b) 5478{ 5479 return (vector short)__builtin_altivec_vslo((vector int)a, (vector int)b); 5480} 5481 5482static vector unsigned short __ATTRS_o_ai 5483vec_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 5489static vector unsigned short __ATTRS_o_ai 5490vec_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 5496static vector pixel __ATTRS_o_ai 5497vec_slo(vector pixel a, vector signed char b) 5498{ 5499 return (vector pixel)__builtin_altivec_vslo((vector int)a, (vector int)b); 5500} 5501 5502static vector pixel __ATTRS_o_ai 5503vec_slo(vector pixel a, vector unsigned char b) 5504{ 5505 return (vector pixel)__builtin_altivec_vslo((vector int)a, (vector int)b); 5506} 5507 5508static vector int __ATTRS_o_ai 5509vec_slo(vector int a, vector signed char b) 5510{ 5511 return (vector int)__builtin_altivec_vslo(a, (vector int)b); 5512} 5513 5514static vector int __ATTRS_o_ai 5515vec_slo(vector int a, vector unsigned char b) 5516{ 5517 return (vector int)__builtin_altivec_vslo(a, (vector int)b); 5518} 5519 5520static vector unsigned int __ATTRS_o_ai 5521vec_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 5527static vector unsigned int __ATTRS_o_ai 5528vec_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 5534static vector float __ATTRS_o_ai 5535vec_slo(vector float a, vector signed char b) 5536{ 5537 return (vector float)__builtin_altivec_vslo((vector int)a, (vector int)b); 5538} 5539 5540static vector float __ATTRS_o_ai 5541vec_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 5548static vector signed char __ATTRS_o_ai 5549vec_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 5555static vector signed char __ATTRS_o_ai 5556vec_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 5562static vector unsigned char __ATTRS_o_ai 5563vec_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 5569static vector unsigned char __ATTRS_o_ai 5570vec_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 5576static vector short __ATTRS_o_ai 5577vec_vslo(vector short a, vector signed char b) 5578{ 5579 return (vector short)__builtin_altivec_vslo((vector int)a, (vector int)b); 5580} 5581 5582static vector short __ATTRS_o_ai 5583vec_vslo(vector short a, vector unsigned char b) 5584{ 5585 return (vector short)__builtin_altivec_vslo((vector int)a, (vector int)b); 5586} 5587 5588static vector unsigned short __ATTRS_o_ai 5589vec_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 5595static vector unsigned short __ATTRS_o_ai 5596vec_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 5602static vector pixel __ATTRS_o_ai 5603vec_vslo(vector pixel a, vector signed char b) 5604{ 5605 return (vector pixel)__builtin_altivec_vslo((vector int)a, (vector int)b); 5606} 5607 5608static vector pixel __ATTRS_o_ai 5609vec_vslo(vector pixel a, vector unsigned char b) 5610{ 5611 return (vector pixel)__builtin_altivec_vslo((vector int)a, (vector int)b); 5612} 5613 5614static vector int __ATTRS_o_ai 5615vec_vslo(vector int a, vector signed char b) 5616{ 5617 return (vector int)__builtin_altivec_vslo(a, (vector int)b); 5618} 5619 5620static vector int __ATTRS_o_ai 5621vec_vslo(vector int a, vector unsigned char b) 5622{ 5623 return (vector int)__builtin_altivec_vslo(a, (vector int)b); 5624} 5625 5626static vector unsigned int __ATTRS_o_ai 5627vec_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 5633static vector unsigned int __ATTRS_o_ai 5634vec_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 5640static vector float __ATTRS_o_ai 5641vec_vslo(vector float a, vector signed char b) 5642{ 5643 return (vector float)__builtin_altivec_vslo((vector int)a, (vector int)b); 5644} 5645 5646static vector float __ATTRS_o_ai 5647vec_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 5654static vector signed char __ATTRS_o_ai 5655vec_splat(vector signed char a, unsigned char b) 5656{ 5657 return vec_perm(a, a, (vector unsigned char)(b)); 5658} 5659 5660static vector unsigned char __ATTRS_o_ai 5661vec_splat(vector unsigned char a, unsigned char b) 5662{ 5663 return vec_perm(a, a, (vector unsigned char)(b)); 5664} 5665 5666static vector bool char __ATTRS_o_ai 5667vec_splat(vector bool char a, unsigned char b) 5668{ 5669 return vec_perm(a, a, (vector unsigned char)(b)); 5670} 5671 5672static vector short __ATTRS_o_ai 5673vec_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 5680static vector unsigned short __ATTRS_o_ai 5681vec_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 5688static vector bool short __ATTRS_o_ai 5689vec_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 5696static vector pixel __ATTRS_o_ai 5697vec_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 5704static vector int __ATTRS_o_ai 5705vec_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 5712static vector unsigned int __ATTRS_o_ai 5713vec_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 5720static vector bool int __ATTRS_o_ai 5721vec_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 5728static vector float __ATTRS_o_ai 5729vec_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 5740static vector signed char __ATTRS_o_ai 5741vec_vspltb(vector signed char a, unsigned char b) 5742{ 5743 return vec_perm(a, a, (vector unsigned char)(b)); 5744} 5745 5746static vector unsigned char __ATTRS_o_ai 5747vec_vspltb(vector unsigned char a, unsigned char b) 5748{ 5749 return vec_perm(a, a, (vector unsigned char)(b)); 5750} 5751 5752static vector bool char __ATTRS_o_ai 5753vec_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 5762static vector short __ATTRS_o_ai 5763vec_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 5770static vector unsigned short __ATTRS_o_ai 5771vec_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 5778static vector bool short __ATTRS_o_ai 5779vec_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 5786static vector pixel __ATTRS_o_ai 5787vec_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 5798static vector int __ATTRS_o_ai 5799vec_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 5806static vector unsigned int __ATTRS_o_ai 5807vec_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 5814static vector bool int __ATTRS_o_ai 5815vec_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 5822static vector float __ATTRS_o_ai 5823vec_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 5835static vector signed char __ATTRS_o_ai 5836vec_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 5844static vector signed char __ATTRS_o_ai 5845vec_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 5855static vector short __ATTRS_o_ai 5856vec_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 5864static vector short __ATTRS_o_ai 5865vec_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 5875static vector int __ATTRS_o_ai 5876vec_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 5884static vector int __ATTRS_o_ai 5885vec_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 5893static vector unsigned char __ATTRS_o_ai 5894vec_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 5902static vector unsigned short __ATTRS_o_ai 5903vec_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 5911static vector unsigned int __ATTRS_o_ai 5912vec_splat_u32(signed char a) 5913{ 5914 return (vector unsigned int)(a); 5915} 5916 5917/* vec_sr */ 5918 5919static vector signed char __ATTRS_o_ai 5920vec_sr(vector signed char a, vector unsigned char b) 5921{ 5922 return a >> (vector signed char)b; 5923} 5924 5925static vector unsigned char __ATTRS_o_ai 5926vec_sr(vector unsigned char a, vector unsigned char b) 5927{ 5928 return a >> b; 5929} 5930 5931static vector short __ATTRS_o_ai 5932vec_sr(vector short a, vector unsigned short b) 5933{ 5934 return a >> (vector short)b; 5935} 5936 5937static vector unsigned short __ATTRS_o_ai 5938vec_sr(vector unsigned short a, vector unsigned short b) 5939{ 5940 return a >> b; 5941} 5942 5943static vector int __ATTRS_o_ai 5944vec_sr(vector int a, vector unsigned int b) 5945{ 5946 return a >> (vector int)b; 5947} 5948 5949static vector unsigned int __ATTRS_o_ai 5950vec_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 5959static vector signed char __ATTRS_o_ai 5960vec_vsrb(vector signed char a, vector unsigned char b) 5961{ 5962 return a >> (vector signed char)b; 5963} 5964 5965static vector unsigned char __ATTRS_o_ai 5966vec_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 5975static vector short __ATTRS_o_ai 5976vec_vsrh(vector short a, vector unsigned short b) 5977{ 5978 return a >> (vector short)b; 5979} 5980 5981static vector unsigned short __ATTRS_o_ai 5982vec_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 5991static vector int __ATTRS_o_ai 5992vec_vsrw(vector int a, vector unsigned int b) 5993{ 5994 return a >> (vector int)b; 5995} 5996 5997static vector unsigned int __ATTRS_o_ai 5998vec_vsrw(vector unsigned int a, vector unsigned int b) 5999{ 6000 return a >> b; 6001} 6002 6003/* vec_sra */ 6004 6005static vector signed char __ATTRS_o_ai 6006vec_sra(vector signed char a, vector unsigned char b) 6007{ 6008 return (vector signed char)__builtin_altivec_vsrab((vector char)a, b); 6009} 6010 6011static vector unsigned char __ATTRS_o_ai 6012vec_sra(vector unsigned char a, vector unsigned char b) 6013{ 6014 return (vector unsigned char)__builtin_altivec_vsrab((vector char)a, b); 6015} 6016 6017static vector short __ATTRS_o_ai 6018vec_sra(vector short a, vector unsigned short b) 6019{ 6020 return __builtin_altivec_vsrah(a, (vector unsigned short)b); 6021} 6022 6023static vector unsigned short __ATTRS_o_ai 6024vec_sra(vector unsigned short a, vector unsigned short b) 6025{ 6026 return (vector unsigned short)__builtin_altivec_vsrah((vector short)a, b); 6027} 6028 6029static vector int __ATTRS_o_ai 6030vec_sra(vector int a, vector unsigned int b) 6031{ 6032 return __builtin_altivec_vsraw(a, b); 6033} 6034 6035static vector unsigned int __ATTRS_o_ai 6036vec_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 6043static vector signed char __ATTRS_o_ai 6044vec_vsrab(vector signed char a, vector unsigned char b) 6045{ 6046 return (vector signed char)__builtin_altivec_vsrab((vector char)a, b); 6047} 6048 6049static vector unsigned char __ATTRS_o_ai 6050vec_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 6057static vector short __ATTRS_o_ai 6058vec_vsrah(vector short a, vector unsigned short b) 6059{ 6060 return __builtin_altivec_vsrah(a, (vector unsigned short)b); 6061} 6062 6063static vector unsigned short __ATTRS_o_ai 6064vec_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 6071static vector int __ATTRS_o_ai 6072vec_vsraw(vector int a, vector unsigned int b) 6073{ 6074 return __builtin_altivec_vsraw(a, b); 6075} 6076 6077static vector unsigned int __ATTRS_o_ai 6078vec_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 6085static vector signed char __ATTRS_o_ai 6086vec_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 6092static vector signed char __ATTRS_o_ai 6093vec_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 6099static vector signed char __ATTRS_o_ai 6100vec_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 6106static vector unsigned char __ATTRS_o_ai 6107vec_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 6113static vector unsigned char __ATTRS_o_ai 6114vec_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 6120static vector unsigned char __ATTRS_o_ai 6121vec_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 6127static vector bool char __ATTRS_o_ai 6128vec_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 6133static vector bool char __ATTRS_o_ai 6134vec_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 6139static vector bool char __ATTRS_o_ai 6140vec_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 6145static vector short __ATTRS_o_ai 6146vec_srl(vector short a, vector unsigned char b) 6147{ 6148 return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6149} 6150 6151static vector short __ATTRS_o_ai 6152vec_srl(vector short a, vector unsigned short b) 6153{ 6154 return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6155} 6156 6157static vector short __ATTRS_o_ai 6158vec_srl(vector short a, vector unsigned int b) 6159{ 6160 return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6161} 6162 6163static vector unsigned short __ATTRS_o_ai 6164vec_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 6170static vector unsigned short __ATTRS_o_ai 6171vec_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 6177static vector unsigned short __ATTRS_o_ai 6178vec_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 6184static vector bool short __ATTRS_o_ai 6185vec_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 6190static vector bool short __ATTRS_o_ai 6191vec_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 6196static vector bool short __ATTRS_o_ai 6197vec_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 6202static vector pixel __ATTRS_o_ai 6203vec_srl(vector pixel a, vector unsigned char b) 6204{ 6205 return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b); 6206} 6207 6208static vector pixel __ATTRS_o_ai 6209vec_srl(vector pixel a, vector unsigned short b) 6210{ 6211 return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b); 6212} 6213 6214static vector pixel __ATTRS_o_ai 6215vec_srl(vector pixel a, vector unsigned int b) 6216{ 6217 return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b); 6218} 6219 6220static vector int __ATTRS_o_ai 6221vec_srl(vector int a, vector unsigned char b) 6222{ 6223 return (vector int)__builtin_altivec_vsr(a, (vector int)b); 6224} 6225 6226static vector int __ATTRS_o_ai 6227vec_srl(vector int a, vector unsigned short b) 6228{ 6229 return (vector int)__builtin_altivec_vsr(a, (vector int)b); 6230} 6231 6232static vector int __ATTRS_o_ai 6233vec_srl(vector int a, vector unsigned int b) 6234{ 6235 return (vector int)__builtin_altivec_vsr(a, (vector int)b); 6236} 6237 6238static vector unsigned int __ATTRS_o_ai 6239vec_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 6245static vector unsigned int __ATTRS_o_ai 6246vec_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 6252static vector unsigned int __ATTRS_o_ai 6253vec_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 6259static vector bool int __ATTRS_o_ai 6260vec_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 6265static vector bool int __ATTRS_o_ai 6266vec_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 6271static vector bool int __ATTRS_o_ai 6272vec_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 6279static vector signed char __ATTRS_o_ai 6280vec_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 6286static vector signed char __ATTRS_o_ai 6287vec_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 6293static vector signed char __ATTRS_o_ai 6294vec_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 6300static vector unsigned char __ATTRS_o_ai 6301vec_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 6307static vector unsigned char __ATTRS_o_ai 6308vec_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 6314static vector unsigned char __ATTRS_o_ai 6315vec_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 6321static vector bool char __ATTRS_o_ai 6322vec_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 6327static vector bool char __ATTRS_o_ai 6328vec_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 6333static vector bool char __ATTRS_o_ai 6334vec_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 6339static vector short __ATTRS_o_ai 6340vec_vsr(vector short a, vector unsigned char b) 6341{ 6342 return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6343} 6344 6345static vector short __ATTRS_o_ai 6346vec_vsr(vector short a, vector unsigned short b) 6347{ 6348 return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6349} 6350 6351static vector short __ATTRS_o_ai 6352vec_vsr(vector short a, vector unsigned int b) 6353{ 6354 return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6355} 6356 6357static vector unsigned short __ATTRS_o_ai 6358vec_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 6364static vector unsigned short __ATTRS_o_ai 6365vec_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 6371static vector unsigned short __ATTRS_o_ai 6372vec_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 6378static vector bool short __ATTRS_o_ai 6379vec_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 6384static vector bool short __ATTRS_o_ai 6385vec_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 6390static vector bool short __ATTRS_o_ai 6391vec_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 6396static vector pixel __ATTRS_o_ai 6397vec_vsr(vector pixel a, vector unsigned char b) 6398{ 6399 return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b); 6400} 6401 6402static vector pixel __ATTRS_o_ai 6403vec_vsr(vector pixel a, vector unsigned short b) 6404{ 6405 return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b); 6406} 6407 6408static vector pixel __ATTRS_o_ai 6409vec_vsr(vector pixel a, vector unsigned int b) 6410{ 6411 return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b); 6412} 6413 6414static vector int __ATTRS_o_ai 6415vec_vsr(vector int a, vector unsigned char b) 6416{ 6417 return (vector int)__builtin_altivec_vsr(a, (vector int)b); 6418} 6419 6420static vector int __ATTRS_o_ai 6421vec_vsr(vector int a, vector unsigned short b) 6422{ 6423 return (vector int)__builtin_altivec_vsr(a, (vector int)b); 6424} 6425 6426static vector int __ATTRS_o_ai 6427vec_vsr(vector int a, vector unsigned int b) 6428{ 6429 return (vector int)__builtin_altivec_vsr(a, (vector int)b); 6430} 6431 6432static vector unsigned int __ATTRS_o_ai 6433vec_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 6439static vector unsigned int __ATTRS_o_ai 6440vec_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 6446static vector unsigned int __ATTRS_o_ai 6447vec_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 6453static vector bool int __ATTRS_o_ai 6454vec_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 6459static vector bool int __ATTRS_o_ai 6460vec_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 6465static vector bool int __ATTRS_o_ai 6466vec_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 6473static vector signed char __ATTRS_o_ai 6474vec_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 6480static vector signed char __ATTRS_o_ai 6481vec_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 6487static vector unsigned char __ATTRS_o_ai 6488vec_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 6494static vector unsigned char __ATTRS_o_ai 6495vec_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 6501static vector short __ATTRS_o_ai 6502vec_sro(vector short a, vector signed char b) 6503{ 6504 return (vector short)__builtin_altivec_vsro((vector int)a, (vector int)b); 6505} 6506 6507static vector short __ATTRS_o_ai 6508vec_sro(vector short a, vector unsigned char b) 6509{ 6510 return (vector short)__builtin_altivec_vsro((vector int)a, (vector int)b); 6511} 6512 6513static vector unsigned short __ATTRS_o_ai 6514vec_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 6520static vector unsigned short __ATTRS_o_ai 6521vec_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 6527static vector pixel __ATTRS_o_ai 6528vec_sro(vector pixel a, vector signed char b) 6529{ 6530 return (vector pixel)__builtin_altivec_vsro((vector int)a, (vector int)b); 6531} 6532 6533static vector pixel __ATTRS_o_ai 6534vec_sro(vector pixel a, vector unsigned char b) 6535{ 6536 return (vector pixel)__builtin_altivec_vsro((vector int)a, (vector int)b); 6537} 6538 6539static vector int __ATTRS_o_ai 6540vec_sro(vector int a, vector signed char b) 6541{ 6542 return (vector int)__builtin_altivec_vsro(a, (vector int)b); 6543} 6544 6545static vector int __ATTRS_o_ai 6546vec_sro(vector int a, vector unsigned char b) 6547{ 6548 return (vector int)__builtin_altivec_vsro(a, (vector int)b); 6549} 6550 6551static vector unsigned int __ATTRS_o_ai 6552vec_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 6558static vector unsigned int __ATTRS_o_ai 6559vec_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 6565static vector float __ATTRS_o_ai 6566vec_sro(vector float a, vector signed char b) 6567{ 6568 return (vector float)__builtin_altivec_vsro((vector int)a, (vector int)b); 6569} 6570 6571static vector float __ATTRS_o_ai 6572vec_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 6579static vector signed char __ATTRS_o_ai 6580vec_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 6586static vector signed char __ATTRS_o_ai 6587vec_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 6593static vector unsigned char __ATTRS_o_ai 6594vec_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 6600static vector unsigned char __ATTRS_o_ai 6601vec_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 6607static vector short __ATTRS_o_ai 6608vec_vsro(vector short a, vector signed char b) 6609{ 6610 return (vector short)__builtin_altivec_vsro((vector int)a, (vector int)b); 6611} 6612 6613static vector short __ATTRS_o_ai 6614vec_vsro(vector short a, vector unsigned char b) 6615{ 6616 return (vector short)__builtin_altivec_vsro((vector int)a, (vector int)b); 6617} 6618 6619static vector unsigned short __ATTRS_o_ai 6620vec_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 6626static vector unsigned short __ATTRS_o_ai 6627vec_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 6633static vector pixel __ATTRS_o_ai 6634vec_vsro(vector pixel a, vector signed char b) 6635{ 6636 return (vector pixel)__builtin_altivec_vsro((vector int)a, (vector int)b); 6637} 6638 6639static vector pixel __ATTRS_o_ai 6640vec_vsro(vector pixel a, vector unsigned char b) 6641{ 6642 return (vector pixel)__builtin_altivec_vsro((vector int)a, (vector int)b); 6643} 6644 6645static vector int __ATTRS_o_ai 6646vec_vsro(vector int a, vector signed char b) 6647{ 6648 return (vector int)__builtin_altivec_vsro(a, (vector int)b); 6649} 6650 6651static vector int __ATTRS_o_ai 6652vec_vsro(vector int a, vector unsigned char b) 6653{ 6654 return (vector int)__builtin_altivec_vsro(a, (vector int)b); 6655} 6656 6657static vector unsigned int __ATTRS_o_ai 6658vec_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 6664static vector unsigned int __ATTRS_o_ai 6665vec_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 6671static vector float __ATTRS_o_ai 6672vec_vsro(vector float a, vector signed char b) 6673{ 6674 return (vector float)__builtin_altivec_vsro((vector int)a, (vector int)b); 6675} 6676 6677static vector float __ATTRS_o_ai 6678vec_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 6685static void __ATTRS_o_ai 6686vec_st(vector signed char a, int b, vector signed char *c) 6687{ 6688 __builtin_altivec_stvx((vector int)a, b, c); 6689} 6690 6691static void __ATTRS_o_ai 6692vec_st(vector signed char a, int b, signed char *c) 6693{ 6694 __builtin_altivec_stvx((vector int)a, b, c); 6695} 6696 6697static void __ATTRS_o_ai 6698vec_st(vector unsigned char a, int b, vector unsigned char *c) 6699{ 6700 __builtin_altivec_stvx((vector int)a, b, c); 6701} 6702 6703static void __ATTRS_o_ai 6704vec_st(vector unsigned char a, int b, unsigned char *c) 6705{ 6706 __builtin_altivec_stvx((vector int)a, b, c); 6707} 6708 6709static void __ATTRS_o_ai 6710vec_st(vector bool char a, int b, signed char *c) 6711{ 6712 __builtin_altivec_stvx((vector int)a, b, c); 6713} 6714 6715static void __ATTRS_o_ai 6716vec_st(vector bool char a, int b, unsigned char *c) 6717{ 6718 __builtin_altivec_stvx((vector int)a, b, c); 6719} 6720 6721static void __ATTRS_o_ai 6722vec_st(vector bool char a, int b, vector bool char *c) 6723{ 6724 __builtin_altivec_stvx((vector int)a, b, c); 6725} 6726 6727static void __ATTRS_o_ai 6728vec_st(vector short a, int b, vector short *c) 6729{ 6730 __builtin_altivec_stvx((vector int)a, b, c); 6731} 6732 6733static void __ATTRS_o_ai 6734vec_st(vector short a, int b, short *c) 6735{ 6736 __builtin_altivec_stvx((vector int)a, b, c); 6737} 6738 6739static void __ATTRS_o_ai 6740vec_st(vector unsigned short a, int b, vector unsigned short *c) 6741{ 6742 __builtin_altivec_stvx((vector int)a, b, c); 6743} 6744 6745static void __ATTRS_o_ai 6746vec_st(vector unsigned short a, int b, unsigned short *c) 6747{ 6748 __builtin_altivec_stvx((vector int)a, b, c); 6749} 6750 6751static void __ATTRS_o_ai 6752vec_st(vector bool short a, int b, short *c) 6753{ 6754 __builtin_altivec_stvx((vector int)a, b, c); 6755} 6756 6757static void __ATTRS_o_ai 6758vec_st(vector bool short a, int b, unsigned short *c) 6759{ 6760 __builtin_altivec_stvx((vector int)a, b, c); 6761} 6762 6763static void __ATTRS_o_ai 6764vec_st(vector bool short a, int b, vector bool short *c) 6765{ 6766 __builtin_altivec_stvx((vector int)a, b, c); 6767} 6768 6769static void __ATTRS_o_ai 6770vec_st(vector pixel a, int b, short *c) 6771{ 6772 __builtin_altivec_stvx((vector int)a, b, c); 6773} 6774 6775static void __ATTRS_o_ai 6776vec_st(vector pixel a, int b, unsigned short *c) 6777{ 6778 __builtin_altivec_stvx((vector int)a, b, c); 6779} 6780 6781static void __ATTRS_o_ai 6782vec_st(vector pixel a, int b, vector pixel *c) 6783{ 6784 __builtin_altivec_stvx((vector int)a, b, c); 6785} 6786 6787static void __ATTRS_o_ai 6788vec_st(vector int a, int b, vector int *c) 6789{ 6790 __builtin_altivec_stvx(a, b, c); 6791} 6792 6793static void __ATTRS_o_ai 6794vec_st(vector int a, int b, int *c) 6795{ 6796 __builtin_altivec_stvx(a, b, c); 6797} 6798 6799static void __ATTRS_o_ai 6800vec_st(vector unsigned int a, int b, vector unsigned int *c) 6801{ 6802 __builtin_altivec_stvx((vector int)a, b, c); 6803} 6804 6805static void __ATTRS_o_ai 6806vec_st(vector unsigned int a, int b, unsigned int *c) 6807{ 6808 __builtin_altivec_stvx((vector int)a, b, c); 6809} 6810 6811static void __ATTRS_o_ai 6812vec_st(vector bool int a, int b, int *c) 6813{ 6814 __builtin_altivec_stvx((vector int)a, b, c); 6815} 6816 6817static void __ATTRS_o_ai 6818vec_st(vector bool int a, int b, unsigned int *c) 6819{ 6820 __builtin_altivec_stvx((vector int)a, b, c); 6821} 6822 6823static void __ATTRS_o_ai 6824vec_st(vector bool int a, int b, vector bool int *c) 6825{ 6826 __builtin_altivec_stvx((vector int)a, b, c); 6827} 6828 6829static void __ATTRS_o_ai 6830vec_st(vector float a, int b, vector float *c) 6831{ 6832 __builtin_altivec_stvx((vector int)a, b, c); 6833} 6834 6835static void __ATTRS_o_ai 6836vec_st(vector float a, int b, float *c) 6837{ 6838 __builtin_altivec_stvx((vector int)a, b, c); 6839} 6840 6841/* vec_stvx */ 6842 6843static void __ATTRS_o_ai 6844vec_stvx(vector signed char a, int b, vector signed char *c) 6845{ 6846 __builtin_altivec_stvx((vector int)a, b, c); 6847} 6848 6849static void __ATTRS_o_ai 6850vec_stvx(vector signed char a, int b, signed char *c) 6851{ 6852 __builtin_altivec_stvx((vector int)a, b, c); 6853} 6854 6855static void __ATTRS_o_ai 6856vec_stvx(vector unsigned char a, int b, vector unsigned char *c) 6857{ 6858 __builtin_altivec_stvx((vector int)a, b, c); 6859} 6860 6861static void __ATTRS_o_ai 6862vec_stvx(vector unsigned char a, int b, unsigned char *c) 6863{ 6864 __builtin_altivec_stvx((vector int)a, b, c); 6865} 6866 6867static void __ATTRS_o_ai 6868vec_stvx(vector bool char a, int b, signed char *c) 6869{ 6870 __builtin_altivec_stvx((vector int)a, b, c); 6871} 6872 6873static void __ATTRS_o_ai 6874vec_stvx(vector bool char a, int b, unsigned char *c) 6875{ 6876 __builtin_altivec_stvx((vector int)a, b, c); 6877} 6878 6879static void __ATTRS_o_ai 6880vec_stvx(vector bool char a, int b, vector bool char *c) 6881{ 6882 __builtin_altivec_stvx((vector int)a, b, c); 6883} 6884 6885static void __ATTRS_o_ai 6886vec_stvx(vector short a, int b, vector short *c) 6887{ 6888 __builtin_altivec_stvx((vector int)a, b, c); 6889} 6890 6891static void __ATTRS_o_ai 6892vec_stvx(vector short a, int b, short *c) 6893{ 6894 __builtin_altivec_stvx((vector int)a, b, c); 6895} 6896 6897static void __ATTRS_o_ai 6898vec_stvx(vector unsigned short a, int b, vector unsigned short *c) 6899{ 6900 __builtin_altivec_stvx((vector int)a, b, c); 6901} 6902 6903static void __ATTRS_o_ai 6904vec_stvx(vector unsigned short a, int b, unsigned short *c) 6905{ 6906 __builtin_altivec_stvx((vector int)a, b, c); 6907} 6908 6909static void __ATTRS_o_ai 6910vec_stvx(vector bool short a, int b, short *c) 6911{ 6912 __builtin_altivec_stvx((vector int)a, b, c); 6913} 6914 6915static void __ATTRS_o_ai 6916vec_stvx(vector bool short a, int b, unsigned short *c) 6917{ 6918 __builtin_altivec_stvx((vector int)a, b, c); 6919} 6920 6921static void __ATTRS_o_ai 6922vec_stvx(vector bool short a, int b, vector bool short *c) 6923{ 6924 __builtin_altivec_stvx((vector int)a, b, c); 6925} 6926 6927static void __ATTRS_o_ai 6928vec_stvx(vector pixel a, int b, short *c) 6929{ 6930 __builtin_altivec_stvx((vector int)a, b, c); 6931} 6932 6933static void __ATTRS_o_ai 6934vec_stvx(vector pixel a, int b, unsigned short *c) 6935{ 6936 __builtin_altivec_stvx((vector int)a, b, c); 6937} 6938 6939static void __ATTRS_o_ai 6940vec_stvx(vector pixel a, int b, vector pixel *c) 6941{ 6942 __builtin_altivec_stvx((vector int)a, b, c); 6943} 6944 6945static void __ATTRS_o_ai 6946vec_stvx(vector int a, int b, vector int *c) 6947{ 6948 __builtin_altivec_stvx(a, b, c); 6949} 6950 6951static void __ATTRS_o_ai 6952vec_stvx(vector int a, int b, int *c) 6953{ 6954 __builtin_altivec_stvx(a, b, c); 6955} 6956 6957static void __ATTRS_o_ai 6958vec_stvx(vector unsigned int a, int b, vector unsigned int *c) 6959{ 6960 __builtin_altivec_stvx((vector int)a, b, c); 6961} 6962 6963static void __ATTRS_o_ai 6964vec_stvx(vector unsigned int a, int b, unsigned int *c) 6965{ 6966 __builtin_altivec_stvx((vector int)a, b, c); 6967} 6968 6969static void __ATTRS_o_ai 6970vec_stvx(vector bool int a, int b, int *c) 6971{ 6972 __builtin_altivec_stvx((vector int)a, b, c); 6973} 6974 6975static void __ATTRS_o_ai 6976vec_stvx(vector bool int a, int b, unsigned int *c) 6977{ 6978 __builtin_altivec_stvx((vector int)a, b, c); 6979} 6980 6981static void __ATTRS_o_ai 6982vec_stvx(vector bool int a, int b, vector bool int *c) 6983{ 6984 __builtin_altivec_stvx((vector int)a, b, c); 6985} 6986 6987static void __ATTRS_o_ai 6988vec_stvx(vector float a, int b, vector float *c) 6989{ 6990 __builtin_altivec_stvx((vector int)a, b, c); 6991} 6992 6993static void __ATTRS_o_ai 6994vec_stvx(vector float a, int b, float *c) 6995{ 6996 __builtin_altivec_stvx((vector int)a, b, c); 6997} 6998 6999/* vec_ste */ 7000 7001static void __ATTRS_o_ai 7002vec_ste(vector signed char a, int b, signed char *c) 7003{ 7004 __builtin_altivec_stvebx((vector char)a, b, c); 7005} 7006 7007static void __ATTRS_o_ai 7008vec_ste(vector unsigned char a, int b, unsigned char *c) 7009{ 7010 __builtin_altivec_stvebx((vector char)a, b, c); 7011} 7012 7013static void __ATTRS_o_ai 7014vec_ste(vector bool char a, int b, signed char *c) 7015{ 7016 __builtin_altivec_stvebx((vector char)a, b, c); 7017} 7018 7019static void __ATTRS_o_ai 7020vec_ste(vector bool char a, int b, unsigned char *c) 7021{ 7022 __builtin_altivec_stvebx((vector char)a, b, c); 7023} 7024 7025static void __ATTRS_o_ai 7026vec_ste(vector short a, int b, short *c) 7027{ 7028 __builtin_altivec_stvehx(a, b, c); 7029} 7030 7031static void __ATTRS_o_ai 7032vec_ste(vector unsigned short a, int b, unsigned short *c) 7033{ 7034 __builtin_altivec_stvehx((vector short)a, b, c); 7035} 7036 7037static void __ATTRS_o_ai 7038vec_ste(vector bool short a, int b, short *c) 7039{ 7040 __builtin_altivec_stvehx((vector short)a, b, c); 7041} 7042 7043static void __ATTRS_o_ai 7044vec_ste(vector bool short a, int b, unsigned short *c) 7045{ 7046 __builtin_altivec_stvehx((vector short)a, b, c); 7047} 7048 7049static void __ATTRS_o_ai 7050vec_ste(vector pixel a, int b, short *c) 7051{ 7052 __builtin_altivec_stvehx((vector short)a, b, c); 7053} 7054 7055static void __ATTRS_o_ai 7056vec_ste(vector pixel a, int b, unsigned short *c) 7057{ 7058 __builtin_altivec_stvehx((vector short)a, b, c); 7059} 7060 7061static void __ATTRS_o_ai 7062vec_ste(vector int a, int b, int *c) 7063{ 7064 __builtin_altivec_stvewx(a, b, c); 7065} 7066 7067static void __ATTRS_o_ai 7068vec_ste(vector unsigned int a, int b, unsigned int *c) 7069{ 7070 __builtin_altivec_stvewx((vector int)a, b, c); 7071} 7072 7073static void __ATTRS_o_ai 7074vec_ste(vector bool int a, int b, int *c) 7075{ 7076 __builtin_altivec_stvewx((vector int)a, b, c); 7077} 7078 7079static void __ATTRS_o_ai 7080vec_ste(vector bool int a, int b, unsigned int *c) 7081{ 7082 __builtin_altivec_stvewx((vector int)a, b, c); 7083} 7084 7085static void __ATTRS_o_ai 7086vec_ste(vector float a, int b, float *c) 7087{ 7088 __builtin_altivec_stvewx((vector int)a, b, c); 7089} 7090 7091/* vec_stvebx */ 7092 7093static void __ATTRS_o_ai 7094vec_stvebx(vector signed char a, int b, signed char *c) 7095{ 7096 __builtin_altivec_stvebx((vector char)a, b, c); 7097} 7098 7099static void __ATTRS_o_ai 7100vec_stvebx(vector unsigned char a, int b, unsigned char *c) 7101{ 7102 __builtin_altivec_stvebx((vector char)a, b, c); 7103} 7104 7105static void __ATTRS_o_ai 7106vec_stvebx(vector bool char a, int b, signed char *c) 7107{ 7108 __builtin_altivec_stvebx((vector char)a, b, c); 7109} 7110 7111static void __ATTRS_o_ai 7112vec_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 7119static void __ATTRS_o_ai 7120vec_stvehx(vector short a, int b, short *c) 7121{ 7122 __builtin_altivec_stvehx(a, b, c); 7123} 7124 7125static void __ATTRS_o_ai 7126vec_stvehx(vector unsigned short a, int b, unsigned short *c) 7127{ 7128 __builtin_altivec_stvehx((vector short)a, b, c); 7129} 7130 7131static void __ATTRS_o_ai 7132vec_stvehx(vector bool short a, int b, short *c) 7133{ 7134 __builtin_altivec_stvehx((vector short)a, b, c); 7135} 7136 7137static void __ATTRS_o_ai 7138vec_stvehx(vector bool short a, int b, unsigned short *c) 7139{ 7140 __builtin_altivec_stvehx((vector short)a, b, c); 7141} 7142 7143static void __ATTRS_o_ai 7144vec_stvehx(vector pixel a, int b, short *c) 7145{ 7146 __builtin_altivec_stvehx((vector short)a, b, c); 7147} 7148 7149static void __ATTRS_o_ai 7150vec_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 7157static void __ATTRS_o_ai 7158vec_stvewx(vector int a, int b, int *c) 7159{ 7160 __builtin_altivec_stvewx(a, b, c); 7161} 7162 7163static void __ATTRS_o_ai 7164vec_stvewx(vector unsigned int a, int b, unsigned int *c) 7165{ 7166 __builtin_altivec_stvewx((vector int)a, b, c); 7167} 7168 7169static void __ATTRS_o_ai 7170vec_stvewx(vector bool int a, int b, int *c) 7171{ 7172 __builtin_altivec_stvewx((vector int)a, b, c); 7173} 7174 7175static void __ATTRS_o_ai 7176vec_stvewx(vector bool int a, int b, unsigned int *c) 7177{ 7178 __builtin_altivec_stvewx((vector int)a, b, c); 7179} 7180 7181static void __ATTRS_o_ai 7182vec_stvewx(vector float a, int b, float *c) 7183{ 7184 __builtin_altivec_stvewx((vector int)a, b, c); 7185} 7186 7187/* vec_stl */ 7188 7189static void __ATTRS_o_ai 7190vec_stl(vector signed char a, int b, vector signed char *c) 7191{ 7192 __builtin_altivec_stvxl((vector int)a, b, c); 7193} 7194 7195static void __ATTRS_o_ai 7196vec_stl(vector signed char a, int b, signed char *c) 7197{ 7198 __builtin_altivec_stvxl((vector int)a, b, c); 7199} 7200 7201static void __ATTRS_o_ai 7202vec_stl(vector unsigned char a, int b, vector unsigned char *c) 7203{ 7204 __builtin_altivec_stvxl((vector int)a, b, c); 7205} 7206 7207static void __ATTRS_o_ai 7208vec_stl(vector unsigned char a, int b, unsigned char *c) 7209{ 7210 __builtin_altivec_stvxl((vector int)a, b, c); 7211} 7212 7213static void __ATTRS_o_ai 7214vec_stl(vector bool char a, int b, signed char *c) 7215{ 7216 __builtin_altivec_stvxl((vector int)a, b, c); 7217} 7218 7219static void __ATTRS_o_ai 7220vec_stl(vector bool char a, int b, unsigned char *c) 7221{ 7222 __builtin_altivec_stvxl((vector int)a, b, c); 7223} 7224 7225static void __ATTRS_o_ai 7226vec_stl(vector bool char a, int b, vector bool char *c) 7227{ 7228 __builtin_altivec_stvxl((vector int)a, b, c); 7229} 7230 7231static void __ATTRS_o_ai 7232vec_stl(vector short a, int b, vector short *c) 7233{ 7234 __builtin_altivec_stvxl((vector int)a, b, c); 7235} 7236 7237static void __ATTRS_o_ai 7238vec_stl(vector short a, int b, short *c) 7239{ 7240 __builtin_altivec_stvxl((vector int)a, b, c); 7241} 7242 7243static void __ATTRS_o_ai 7244vec_stl(vector unsigned short a, int b, vector unsigned short *c) 7245{ 7246 __builtin_altivec_stvxl((vector int)a, b, c); 7247} 7248 7249static void __ATTRS_o_ai 7250vec_stl(vector unsigned short a, int b, unsigned short *c) 7251{ 7252 __builtin_altivec_stvxl((vector int)a, b, c); 7253} 7254 7255static void __ATTRS_o_ai 7256vec_stl(vector bool short a, int b, short *c) 7257{ 7258 __builtin_altivec_stvxl((vector int)a, b, c); 7259} 7260 7261static void __ATTRS_o_ai 7262vec_stl(vector bool short a, int b, unsigned short *c) 7263{ 7264 __builtin_altivec_stvxl((vector int)a, b, c); 7265} 7266 7267static void __ATTRS_o_ai 7268vec_stl(vector bool short a, int b, vector bool short *c) 7269{ 7270 __builtin_altivec_stvxl((vector int)a, b, c); 7271} 7272 7273static void __ATTRS_o_ai 7274vec_stl(vector pixel a, int b, short *c) 7275{ 7276 __builtin_altivec_stvxl((vector int)a, b, c); 7277} 7278 7279static void __ATTRS_o_ai 7280vec_stl(vector pixel a, int b, unsigned short *c) 7281{ 7282 __builtin_altivec_stvxl((vector int)a, b, c); 7283} 7284 7285static void __ATTRS_o_ai 7286vec_stl(vector pixel a, int b, vector pixel *c) 7287{ 7288 __builtin_altivec_stvxl((vector int)a, b, c); 7289} 7290 7291static void __ATTRS_o_ai 7292vec_stl(vector int a, int b, vector int *c) 7293{ 7294 __builtin_altivec_stvxl(a, b, c); 7295} 7296 7297static void __ATTRS_o_ai 7298vec_stl(vector int a, int b, int *c) 7299{ 7300 __builtin_altivec_stvxl(a, b, c); 7301} 7302 7303static void __ATTRS_o_ai 7304vec_stl(vector unsigned int a, int b, vector unsigned int *c) 7305{ 7306 __builtin_altivec_stvxl((vector int)a, b, c); 7307} 7308 7309static void __ATTRS_o_ai 7310vec_stl(vector unsigned int a, int b, unsigned int *c) 7311{ 7312 __builtin_altivec_stvxl((vector int)a, b, c); 7313} 7314 7315static void __ATTRS_o_ai 7316vec_stl(vector bool int a, int b, int *c) 7317{ 7318 __builtin_altivec_stvxl((vector int)a, b, c); 7319} 7320 7321static void __ATTRS_o_ai 7322vec_stl(vector bool int a, int b, unsigned int *c) 7323{ 7324 __builtin_altivec_stvxl((vector int)a, b, c); 7325} 7326 7327static void __ATTRS_o_ai 7328vec_stl(vector bool int a, int b, vector bool int *c) 7329{ 7330 __builtin_altivec_stvxl((vector int)a, b, c); 7331} 7332 7333static void __ATTRS_o_ai 7334vec_stl(vector float a, int b, vector float *c) 7335{ 7336 __builtin_altivec_stvxl((vector int)a, b, c); 7337} 7338 7339static void __ATTRS_o_ai 7340vec_stl(vector float a, int b, float *c) 7341{ 7342 __builtin_altivec_stvxl((vector int)a, b, c); 7343} 7344 7345/* vec_stvxl */ 7346 7347static void __ATTRS_o_ai 7348vec_stvxl(vector signed char a, int b, vector signed char *c) 7349{ 7350 __builtin_altivec_stvxl((vector int)a, b, c); 7351} 7352 7353static void __ATTRS_o_ai 7354vec_stvxl(vector signed char a, int b, signed char *c) 7355{ 7356 __builtin_altivec_stvxl((vector int)a, b, c); 7357} 7358 7359static void __ATTRS_o_ai 7360vec_stvxl(vector unsigned char a, int b, vector unsigned char *c) 7361{ 7362 __builtin_altivec_stvxl((vector int)a, b, c); 7363} 7364 7365static void __ATTRS_o_ai 7366vec_stvxl(vector unsigned char a, int b, unsigned char *c) 7367{ 7368 __builtin_altivec_stvxl((vector int)a, b, c); 7369} 7370 7371static void __ATTRS_o_ai 7372vec_stvxl(vector bool char a, int b, signed char *c) 7373{ 7374 __builtin_altivec_stvxl((vector int)a, b, c); 7375} 7376 7377static void __ATTRS_o_ai 7378vec_stvxl(vector bool char a, int b, unsigned char *c) 7379{ 7380 __builtin_altivec_stvxl((vector int)a, b, c); 7381} 7382 7383static void __ATTRS_o_ai 7384vec_stvxl(vector bool char a, int b, vector bool char *c) 7385{ 7386 __builtin_altivec_stvxl((vector int)a, b, c); 7387} 7388 7389static void __ATTRS_o_ai 7390vec_stvxl(vector short a, int b, vector short *c) 7391{ 7392 __builtin_altivec_stvxl((vector int)a, b, c); 7393} 7394 7395static void __ATTRS_o_ai 7396vec_stvxl(vector short a, int b, short *c) 7397{ 7398 __builtin_altivec_stvxl((vector int)a, b, c); 7399} 7400 7401static void __ATTRS_o_ai 7402vec_stvxl(vector unsigned short a, int b, vector unsigned short *c) 7403{ 7404 __builtin_altivec_stvxl((vector int)a, b, c); 7405} 7406 7407static void __ATTRS_o_ai 7408vec_stvxl(vector unsigned short a, int b, unsigned short *c) 7409{ 7410 __builtin_altivec_stvxl((vector int)a, b, c); 7411} 7412 7413static void __ATTRS_o_ai 7414vec_stvxl(vector bool short a, int b, short *c) 7415{ 7416 __builtin_altivec_stvxl((vector int)a, b, c); 7417} 7418 7419static void __ATTRS_o_ai 7420vec_stvxl(vector bool short a, int b, unsigned short *c) 7421{ 7422 __builtin_altivec_stvxl((vector int)a, b, c); 7423} 7424 7425static void __ATTRS_o_ai 7426vec_stvxl(vector bool short a, int b, vector bool short *c) 7427{ 7428 __builtin_altivec_stvxl((vector int)a, b, c); 7429} 7430 7431static void __ATTRS_o_ai 7432vec_stvxl(vector pixel a, int b, short *c) 7433{ 7434 __builtin_altivec_stvxl((vector int)a, b, c); 7435} 7436 7437static void __ATTRS_o_ai 7438vec_stvxl(vector pixel a, int b, unsigned short *c) 7439{ 7440 __builtin_altivec_stvxl((vector int)a, b, c); 7441} 7442 7443static void __ATTRS_o_ai 7444vec_stvxl(vector pixel a, int b, vector pixel *c) 7445{ 7446 __builtin_altivec_stvxl((vector int)a, b, c); 7447} 7448 7449static void __ATTRS_o_ai 7450vec_stvxl(vector int a, int b, vector int *c) 7451{ 7452 __builtin_altivec_stvxl(a, b, c); 7453} 7454 7455static void __ATTRS_o_ai 7456vec_stvxl(vector int a, int b, int *c) 7457{ 7458 __builtin_altivec_stvxl(a, b, c); 7459} 7460 7461static void __ATTRS_o_ai 7462vec_stvxl(vector unsigned int a, int b, vector unsigned int *c) 7463{ 7464 __builtin_altivec_stvxl((vector int)a, b, c); 7465} 7466 7467static void __ATTRS_o_ai 7468vec_stvxl(vector unsigned int a, int b, unsigned int *c) 7469{ 7470 __builtin_altivec_stvxl((vector int)a, b, c); 7471} 7472 7473static void __ATTRS_o_ai 7474vec_stvxl(vector bool int a, int b, int *c) 7475{ 7476 __builtin_altivec_stvxl((vector int)a, b, c); 7477} 7478 7479static void __ATTRS_o_ai 7480vec_stvxl(vector bool int a, int b, unsigned int *c) 7481{ 7482 __builtin_altivec_stvxl((vector int)a, b, c); 7483} 7484 7485static void __ATTRS_o_ai 7486vec_stvxl(vector bool int a, int b, vector bool int *c) 7487{ 7488 __builtin_altivec_stvxl((vector int)a, b, c); 7489} 7490 7491static void __ATTRS_o_ai 7492vec_stvxl(vector float a, int b, vector float *c) 7493{ 7494 __builtin_altivec_stvxl((vector int)a, b, c); 7495} 7496 7497static void __ATTRS_o_ai 7498vec_stvxl(vector float a, int b, float *c) 7499{ 7500 __builtin_altivec_stvxl((vector int)a, b, c); 7501} 7502 7503/* vec_sub */ 7504 7505static vector signed char __ATTRS_o_ai 7506vec_sub(vector signed char a, vector signed char b) 7507{ 7508 return a - b; 7509} 7510 7511static vector signed char __ATTRS_o_ai 7512vec_sub(vector bool char a, vector signed char b) 7513{ 7514 return (vector signed char)a - b; 7515} 7516 7517static vector signed char __ATTRS_o_ai 7518vec_sub(vector signed char a, vector bool char b) 7519{ 7520 return a - (vector signed char)b; 7521} 7522 7523static vector unsigned char __ATTRS_o_ai 7524vec_sub(vector unsigned char a, vector unsigned char b) 7525{ 7526 return a - b; 7527} 7528 7529static vector unsigned char __ATTRS_o_ai 7530vec_sub(vector bool char a, vector unsigned char b) 7531{ 7532 return (vector unsigned char)a - b; 7533} 7534 7535static vector unsigned char __ATTRS_o_ai 7536vec_sub(vector unsigned char a, vector bool char b) 7537{ 7538 return a - (vector unsigned char)b; 7539} 7540 7541static vector short __ATTRS_o_ai 7542vec_sub(vector short a, vector short b) 7543{ 7544 return a - b; 7545} 7546 7547static vector short __ATTRS_o_ai 7548vec_sub(vector bool short a, vector short b) 7549{ 7550 return (vector short)a - b; 7551} 7552 7553static vector short __ATTRS_o_ai 7554vec_sub(vector short a, vector bool short b) 7555{ 7556 return a - (vector short)b; 7557} 7558 7559static vector unsigned short __ATTRS_o_ai 7560vec_sub(vector unsigned short a, vector unsigned short b) 7561{ 7562 return a - b; 7563} 7564 7565static vector unsigned short __ATTRS_o_ai 7566vec_sub(vector bool short a, vector unsigned short b) 7567{ 7568 return (vector unsigned short)a - b; 7569} 7570 7571static vector unsigned short __ATTRS_o_ai 7572vec_sub(vector unsigned short a, vector bool short b) 7573{ 7574 return a - (vector unsigned short)b; 7575} 7576 7577static vector int __ATTRS_o_ai 7578vec_sub(vector int a, vector int b) 7579{ 7580 return a - b; 7581} 7582 7583static vector int __ATTRS_o_ai 7584vec_sub(vector bool int a, vector int b) 7585{ 7586 return (vector int)a - b; 7587} 7588 7589static vector int __ATTRS_o_ai 7590vec_sub(vector int a, vector bool int b) 7591{ 7592 return a - (vector int)b; 7593} 7594 7595static vector unsigned int __ATTRS_o_ai 7596vec_sub(vector unsigned int a, vector unsigned int b) 7597{ 7598 return a - b; 7599} 7600 7601static vector unsigned int __ATTRS_o_ai 7602vec_sub(vector bool int a, vector unsigned int b) 7603{ 7604 return (vector unsigned int)a - b; 7605} 7606 7607static vector unsigned int __ATTRS_o_ai 7608vec_sub(vector unsigned int a, vector bool int b) 7609{ 7610 return a - (vector unsigned int)b; 7611} 7612 7613static vector float __ATTRS_o_ai 7614vec_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 7623static vector signed char __ATTRS_o_ai 7624vec_vsububm(vector signed char a, vector signed char b) 7625{ 7626 return a - b; 7627} 7628 7629static vector signed char __ATTRS_o_ai 7630vec_vsububm(vector bool char a, vector signed char b) 7631{ 7632 return (vector signed char)a - b; 7633} 7634 7635static vector signed char __ATTRS_o_ai 7636vec_vsububm(vector signed char a, vector bool char b) 7637{ 7638 return a - (vector signed char)b; 7639} 7640 7641static vector unsigned char __ATTRS_o_ai 7642vec_vsububm(vector unsigned char a, vector unsigned char b) 7643{ 7644 return a - b; 7645} 7646 7647static vector unsigned char __ATTRS_o_ai 7648vec_vsububm(vector bool char a, vector unsigned char b) 7649{ 7650 return (vector unsigned char)a - b; 7651} 7652 7653static vector unsigned char __ATTRS_o_ai 7654vec_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 7663static vector short __ATTRS_o_ai 7664vec_vsubuhm(vector short a, vector short b) 7665{ 7666 return a - b; 7667} 7668 7669static vector short __ATTRS_o_ai 7670vec_vsubuhm(vector bool short a, vector short b) 7671{ 7672 return (vector short)a - b; 7673} 7674 7675static vector short __ATTRS_o_ai 7676vec_vsubuhm(vector short a, vector bool short b) 7677{ 7678 return a - (vector short)b; 7679} 7680 7681static vector unsigned short __ATTRS_o_ai 7682vec_vsubuhm(vector unsigned short a, vector unsigned short b) 7683{ 7684 return a - b; 7685} 7686 7687static vector unsigned short __ATTRS_o_ai 7688vec_vsubuhm(vector bool short a, vector unsigned short b) 7689{ 7690 return (vector unsigned short)a - b; 7691} 7692 7693static vector unsigned short __ATTRS_o_ai 7694vec_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 7703static vector int __ATTRS_o_ai 7704vec_vsubuwm(vector int a, vector int b) 7705{ 7706 return a - b; 7707} 7708 7709static vector int __ATTRS_o_ai 7710vec_vsubuwm(vector bool int a, vector int b) 7711{ 7712 return (vector int)a - b; 7713} 7714 7715static vector int __ATTRS_o_ai 7716vec_vsubuwm(vector int a, vector bool int b) 7717{ 7718 return a - (vector int)b; 7719} 7720 7721static vector unsigned int __ATTRS_o_ai 7722vec_vsubuwm(vector unsigned int a, vector unsigned int b) 7723{ 7724 return a - b; 7725} 7726 7727static vector unsigned int __ATTRS_o_ai 7728vec_vsubuwm(vector bool int a, vector unsigned int b) 7729{ 7730 return (vector unsigned int)a - b; 7731} 7732 7733static vector unsigned int __ATTRS_o_ai 7734vec_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 7743static vector float __attribute__((__always_inline__)) 7744vec_vsubfp(vector float a, vector float b) 7745{ 7746 return a - b; 7747} 7748 7749/* vec_subc */ 7750 7751static vector unsigned int __attribute__((__always_inline__)) 7752vec_subc(vector unsigned int a, vector unsigned int b) 7753{ 7754 return __builtin_altivec_vsubcuw(a, b); 7755} 7756 7757/* vec_vsubcuw */ 7758 7759static vector unsigned int __attribute__((__always_inline__)) 7760vec_vsubcuw(vector unsigned int a, vector unsigned int b) 7761{ 7762 return __builtin_altivec_vsubcuw(a, b); 7763} 7764 7765/* vec_subs */ 7766 7767static vector signed char __ATTRS_o_ai 7768vec_subs(vector signed char a, vector signed char b) 7769{ 7770 return __builtin_altivec_vsubsbs(a, b); 7771} 7772 7773static vector signed char __ATTRS_o_ai 7774vec_subs(vector bool char a, vector signed char b) 7775{ 7776 return __builtin_altivec_vsubsbs((vector signed char)a, b); 7777} 7778 7779static vector signed char __ATTRS_o_ai 7780vec_subs(vector signed char a, vector bool char b) 7781{ 7782 return __builtin_altivec_vsubsbs(a, (vector signed char)b); 7783} 7784 7785static vector unsigned char __ATTRS_o_ai 7786vec_subs(vector unsigned char a, vector unsigned char b) 7787{ 7788 return __builtin_altivec_vsububs(a, b); 7789} 7790 7791static vector unsigned char __ATTRS_o_ai 7792vec_subs(vector bool char a, vector unsigned char b) 7793{ 7794 return __builtin_altivec_vsububs((vector unsigned char)a, b); 7795} 7796 7797static vector unsigned char __ATTRS_o_ai 7798vec_subs(vector unsigned char a, vector bool char b) 7799{ 7800 return __builtin_altivec_vsububs(a, (vector unsigned char)b); 7801} 7802 7803static vector short __ATTRS_o_ai 7804vec_subs(vector short a, vector short b) 7805{ 7806 return __builtin_altivec_vsubshs(a, b); 7807} 7808 7809static vector short __ATTRS_o_ai 7810vec_subs(vector bool short a, vector short b) 7811{ 7812 return __builtin_altivec_vsubshs((vector short)a, b); 7813} 7814 7815static vector short __ATTRS_o_ai 7816vec_subs(vector short a, vector bool short b) 7817{ 7818 return __builtin_altivec_vsubshs(a, (vector short)b); 7819} 7820 7821static vector unsigned short __ATTRS_o_ai 7822vec_subs(vector unsigned short a, vector unsigned short b) 7823{ 7824 return __builtin_altivec_vsubuhs(a, b); 7825} 7826 7827static vector unsigned short __ATTRS_o_ai 7828vec_subs(vector bool short a, vector unsigned short b) 7829{ 7830 return __builtin_altivec_vsubuhs((vector unsigned short)a, b); 7831} 7832 7833static vector unsigned short __ATTRS_o_ai 7834vec_subs(vector unsigned short a, vector bool short b) 7835{ 7836 return __builtin_altivec_vsubuhs(a, (vector unsigned short)b); 7837} 7838 7839static vector int __ATTRS_o_ai 7840vec_subs(vector int a, vector int b) 7841{ 7842 return __builtin_altivec_vsubsws(a, b); 7843} 7844 7845static vector int __ATTRS_o_ai 7846vec_subs(vector bool int a, vector int b) 7847{ 7848 return __builtin_altivec_vsubsws((vector int)a, b); 7849} 7850 7851static vector int __ATTRS_o_ai 7852vec_subs(vector int a, vector bool int b) 7853{ 7854 return __builtin_altivec_vsubsws(a, (vector int)b); 7855} 7856 7857static vector unsigned int __ATTRS_o_ai 7858vec_subs(vector unsigned int a, vector unsigned int b) 7859{ 7860 return __builtin_altivec_vsubuws(a, b); 7861} 7862 7863static vector unsigned int __ATTRS_o_ai 7864vec_subs(vector bool int a, vector unsigned int b) 7865{ 7866 return __builtin_altivec_vsubuws((vector unsigned int)a, b); 7867} 7868 7869static vector unsigned int __ATTRS_o_ai 7870vec_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 7877static vector signed char __ATTRS_o_ai 7878vec_vsubsbs(vector signed char a, vector signed char b) 7879{ 7880 return __builtin_altivec_vsubsbs(a, b); 7881} 7882 7883static vector signed char __ATTRS_o_ai 7884vec_vsubsbs(vector bool char a, vector signed char b) 7885{ 7886 return __builtin_altivec_vsubsbs((vector signed char)a, b); 7887} 7888 7889static vector signed char __ATTRS_o_ai 7890vec_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 7897static vector unsigned char __ATTRS_o_ai 7898vec_vsububs(vector unsigned char a, vector unsigned char b) 7899{ 7900 return __builtin_altivec_vsububs(a, b); 7901} 7902 7903static vector unsigned char __ATTRS_o_ai 7904vec_vsububs(vector bool char a, vector unsigned char b) 7905{ 7906 return __builtin_altivec_vsububs((vector unsigned char)a, b); 7907} 7908 7909static vector unsigned char __ATTRS_o_ai 7910vec_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 7917static vector short __ATTRS_o_ai 7918vec_vsubshs(vector short a, vector short b) 7919{ 7920 return __builtin_altivec_vsubshs(a, b); 7921} 7922 7923static vector short __ATTRS_o_ai 7924vec_vsubshs(vector bool short a, vector short b) 7925{ 7926 return __builtin_altivec_vsubshs((vector short)a, b); 7927} 7928 7929static vector short __ATTRS_o_ai 7930vec_vsubshs(vector short a, vector bool short b) 7931{ 7932 return __builtin_altivec_vsubshs(a, (vector short)b); 7933} 7934 7935/* vec_vsubuhs */ 7936 7937static vector unsigned short __ATTRS_o_ai 7938vec_vsubuhs(vector unsigned short a, vector unsigned short b) 7939{ 7940 return __builtin_altivec_vsubuhs(a, b); 7941} 7942 7943static vector unsigned short __ATTRS_o_ai 7944vec_vsubuhs(vector bool short a, vector unsigned short b) 7945{ 7946 return __builtin_altivec_vsubuhs((vector unsigned short)a, b); 7947} 7948 7949static vector unsigned short __ATTRS_o_ai 7950vec_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 7957static vector int __ATTRS_o_ai 7958vec_vsubsws(vector int a, vector int b) 7959{ 7960 return __builtin_altivec_vsubsws(a, b); 7961} 7962 7963static vector int __ATTRS_o_ai 7964vec_vsubsws(vector bool int a, vector int b) 7965{ 7966 return __builtin_altivec_vsubsws((vector int)a, b); 7967} 7968 7969static vector int __ATTRS_o_ai 7970vec_vsubsws(vector int a, vector bool int b) 7971{ 7972 return __builtin_altivec_vsubsws(a, (vector int)b); 7973} 7974 7975/* vec_vsubuws */ 7976 7977static vector unsigned int __ATTRS_o_ai 7978vec_vsubuws(vector unsigned int a, vector unsigned int b) 7979{ 7980 return __builtin_altivec_vsubuws(a, b); 7981} 7982 7983static vector unsigned int __ATTRS_o_ai 7984vec_vsubuws(vector bool int a, vector unsigned int b) 7985{ 7986 return __builtin_altivec_vsubuws((vector unsigned int)a, b); 7987} 7988 7989static vector unsigned int __ATTRS_o_ai 7990vec_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 7997static vector int __ATTRS_o_ai 7998vec_sum4s(vector signed char a, vector int b) 7999{ 8000 return __builtin_altivec_vsum4sbs(a, b); 8001} 8002 8003static vector unsigned int __ATTRS_o_ai 8004vec_sum4s(vector unsigned char a, vector unsigned int b) 8005{ 8006 return __builtin_altivec_vsum4ubs(a, b); 8007} 8008 8009static vector int __ATTRS_o_ai 8010vec_sum4s(vector signed short a, vector int b) 8011{ 8012 return __builtin_altivec_vsum4shs(a, b); 8013} 8014 8015/* vec_vsum4sbs */ 8016 8017static vector int __attribute__((__always_inline__)) 8018vec_vsum4sbs(vector signed char a, vector int b) 8019{ 8020 return __builtin_altivec_vsum4sbs(a, b); 8021} 8022 8023/* vec_vsum4ubs */ 8024 8025static vector unsigned int __attribute__((__always_inline__)) 8026vec_vsum4ubs(vector unsigned char a, vector unsigned int b) 8027{ 8028 return __builtin_altivec_vsum4ubs(a, b); 8029} 8030 8031/* vec_vsum4shs */ 8032 8033static vector int __attribute__((__always_inline__)) 8034vec_vsum4shs(vector signed short a, vector int b) 8035{ 8036 return __builtin_altivec_vsum4shs(a, b); 8037} 8038 8039/* vec_sum2s */ 8040 8041static vector signed int __attribute__((__always_inline__)) 8042vec_sum2s(vector int a, vector int b) 8043{ 8044 return __builtin_altivec_vsum2sws(a, b); 8045} 8046 8047/* vec_vsum2sws */ 8048 8049static vector signed int __attribute__((__always_inline__)) 8050vec_vsum2sws(vector int a, vector int b) 8051{ 8052 return __builtin_altivec_vsum2sws(a, b); 8053} 8054 8055/* vec_sums */ 8056 8057static vector signed int __attribute__((__always_inline__)) 8058vec_sums(vector signed int a, vector signed int b) 8059{ 8060 return __builtin_altivec_vsumsws(a, b); 8061} 8062 8063/* vec_vsumsws */ 8064 8065static vector signed int __attribute__((__always_inline__)) 8066vec_vsumsws(vector signed int a, vector signed int b) 8067{ 8068 return __builtin_altivec_vsumsws(a, b); 8069} 8070 8071/* vec_trunc */ 8072 8073static vector float __attribute__((__always_inline__)) 8074vec_trunc(vector float a) 8075{ 8076 return __builtin_altivec_vrfiz(a); 8077} 8078 8079/* vec_vrfiz */ 8080 8081static vector float __attribute__((__always_inline__)) 8082vec_vrfiz(vector float a) 8083{ 8084 return __builtin_altivec_vrfiz(a); 8085} 8086 8087/* vec_unpackh */ 8088 8089static vector short __ATTRS_o_ai 8090vec_unpackh(vector signed char a) 8091{ 8092 return __builtin_altivec_vupkhsb((vector char)a); 8093} 8094 8095static vector bool short __ATTRS_o_ai 8096vec_unpackh(vector bool char a) 8097{ 8098 return (vector bool short)__builtin_altivec_vupkhsb((vector char)a); 8099} 8100 8101static vector int __ATTRS_o_ai 8102vec_unpackh(vector short a) 8103{ 8104 return __builtin_altivec_vupkhsh(a); 8105} 8106 8107static vector bool int __ATTRS_o_ai 8108vec_unpackh(vector bool short a) 8109{ 8110 return (vector bool int)__builtin_altivec_vupkhsh((vector short)a); 8111} 8112 8113static vector unsigned int __ATTRS_o_ai 8114vec_unpackh(vector pixel a) 8115{ 8116 return (vector unsigned int)__builtin_altivec_vupkhsh((vector short)a); 8117} 8118 8119/* vec_vupkhsb */ 8120 8121static vector short __ATTRS_o_ai 8122vec_vupkhsb(vector signed char a) 8123{ 8124 return __builtin_altivec_vupkhsb((vector char)a); 8125} 8126 8127static vector bool short __ATTRS_o_ai 8128vec_vupkhsb(vector bool char a) 8129{ 8130 return (vector bool short)__builtin_altivec_vupkhsb((vector char)a); 8131} 8132 8133/* vec_vupkhsh */ 8134 8135static vector int __ATTRS_o_ai 8136vec_vupkhsh(vector short a) 8137{ 8138 return __builtin_altivec_vupkhsh(a); 8139} 8140 8141static vector bool int __ATTRS_o_ai 8142vec_vupkhsh(vector bool short a) 8143{ 8144 return (vector bool int)__builtin_altivec_vupkhsh((vector short)a); 8145} 8146 8147static vector unsigned int __ATTRS_o_ai 8148vec_vupkhsh(vector pixel a) 8149{ 8150 return (vector unsigned int)__builtin_altivec_vupkhsh((vector short)a); 8151} 8152 8153/* vec_unpackl */ 8154 8155static vector short __ATTRS_o_ai 8156vec_unpackl(vector signed char a) 8157{ 8158 return __builtin_altivec_vupklsb((vector char)a); 8159} 8160 8161static vector bool short __ATTRS_o_ai 8162vec_unpackl(vector bool char a) 8163{ 8164 return (vector bool short)__builtin_altivec_vupklsb((vector char)a); 8165} 8166 8167static vector int __ATTRS_o_ai 8168vec_unpackl(vector short a) 8169{ 8170 return __builtin_altivec_vupklsh(a); 8171} 8172 8173static vector bool int __ATTRS_o_ai 8174vec_unpackl(vector bool short a) 8175{ 8176 return (vector bool int)__builtin_altivec_vupklsh((vector short)a); 8177} 8178 8179static vector unsigned int __ATTRS_o_ai 8180vec_unpackl(vector pixel a) 8181{ 8182 return (vector unsigned int)__builtin_altivec_vupklsh((vector short)a); 8183} 8184 8185/* vec_vupklsb */ 8186 8187static vector short __ATTRS_o_ai 8188vec_vupklsb(vector signed char a) 8189{ 8190 return __builtin_altivec_vupklsb((vector char)a); 8191} 8192 8193static vector bool short __ATTRS_o_ai 8194vec_vupklsb(vector bool char a) 8195{ 8196 return (vector bool short)__builtin_altivec_vupklsb((vector char)a); 8197} 8198 8199/* vec_vupklsh */ 8200 8201static vector int __ATTRS_o_ai 8202vec_vupklsh(vector short a) 8203{ 8204 return __builtin_altivec_vupklsh(a); 8205} 8206 8207static vector bool int __ATTRS_o_ai 8208vec_vupklsh(vector bool short a) 8209{ 8210 return (vector bool int)__builtin_altivec_vupklsh((vector short)a); 8211} 8212 8213static vector unsigned int __ATTRS_o_ai 8214vec_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 8223static vector signed char __ATTRS_o_ai 8224vec_xor(vector signed char a, vector signed char b) 8225{ 8226 return a ^ b; 8227} 8228 8229static vector signed char __ATTRS_o_ai 8230vec_xor(vector bool char a, vector signed char b) 8231{ 8232 return (vector signed char)a ^ b; 8233} 8234 8235static vector signed char __ATTRS_o_ai 8236vec_xor(vector signed char a, vector bool char b) 8237{ 8238 return a ^ (vector signed char)b; 8239} 8240 8241static vector unsigned char __ATTRS_o_ai 8242vec_xor(vector unsigned char a, vector unsigned char b) 8243{ 8244 return a ^ b; 8245} 8246 8247static vector unsigned char __ATTRS_o_ai 8248vec_xor(vector bool char a, vector unsigned char b) 8249{ 8250 return (vector unsigned char)a ^ b; 8251} 8252 8253static vector unsigned char __ATTRS_o_ai 8254vec_xor(vector unsigned char a, vector bool char b) 8255{ 8256 return a ^ (vector unsigned char)b; 8257} 8258 8259static vector bool char __ATTRS_o_ai 8260vec_xor(vector bool char a, vector bool char b) 8261{ 8262 return a ^ b; 8263} 8264 8265static vector short __ATTRS_o_ai 8266vec_xor(vector short a, vector short b) 8267{ 8268 return a ^ b; 8269} 8270 8271static vector short __ATTRS_o_ai 8272vec_xor(vector bool short a, vector short b) 8273{ 8274 return (vector short)a ^ b; 8275} 8276 8277static vector short __ATTRS_o_ai 8278vec_xor(vector short a, vector bool short b) 8279{ 8280 return a ^ (vector short)b; 8281} 8282 8283static vector unsigned short __ATTRS_o_ai 8284vec_xor(vector unsigned short a, vector unsigned short b) 8285{ 8286 return a ^ b; 8287} 8288 8289static vector unsigned short __ATTRS_o_ai 8290vec_xor(vector bool short a, vector unsigned short b) 8291{ 8292 return (vector unsigned short)a ^ b; 8293} 8294 8295static vector unsigned short __ATTRS_o_ai 8296vec_xor(vector unsigned short a, vector bool short b) 8297{ 8298 return a ^ (vector unsigned short)b; 8299} 8300 8301static vector bool short __ATTRS_o_ai 8302vec_xor(vector bool short a, vector bool short b) 8303{ 8304 return a ^ b; 8305} 8306 8307static vector int __ATTRS_o_ai 8308vec_xor(vector int a, vector int b) 8309{ 8310 return a ^ b; 8311} 8312 8313static vector int __ATTRS_o_ai 8314vec_xor(vector bool int a, vector int b) 8315{ 8316 return (vector int)a ^ b; 8317} 8318 8319static vector int __ATTRS_o_ai 8320vec_xor(vector int a, vector bool int b) 8321{ 8322 return a ^ (vector int)b; 8323} 8324 8325static vector unsigned int __ATTRS_o_ai 8326vec_xor(vector unsigned int a, vector unsigned int b) 8327{ 8328 return a ^ b; 8329} 8330 8331static vector unsigned int __ATTRS_o_ai 8332vec_xor(vector bool int a, vector unsigned int b) 8333{ 8334 return (vector unsigned int)a ^ b; 8335} 8336 8337static vector unsigned int __ATTRS_o_ai 8338vec_xor(vector unsigned int a, vector bool int b) 8339{ 8340 return a ^ (vector unsigned int)b; 8341} 8342 8343static vector bool int __ATTRS_o_ai 8344vec_xor(vector bool int a, vector bool int b) 8345{ 8346 return a ^ b; 8347} 8348 8349static vector float __ATTRS_o_ai 8350vec_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 8356static vector float __ATTRS_o_ai 8357vec_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 8363static vector float __ATTRS_o_ai 8364vec_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 8372static vector signed char __ATTRS_o_ai 8373vec_vxor(vector signed char a, vector signed char b) 8374{ 8375 return a ^ b; 8376} 8377 8378static vector signed char __ATTRS_o_ai 8379vec_vxor(vector bool char a, vector signed char b) 8380{ 8381 return (vector signed char)a ^ b; 8382} 8383 8384static vector signed char __ATTRS_o_ai 8385vec_vxor(vector signed char a, vector bool char b) 8386{ 8387 return a ^ (vector signed char)b; 8388} 8389 8390static vector unsigned char __ATTRS_o_ai 8391vec_vxor(vector unsigned char a, vector unsigned char b) 8392{ 8393 return a ^ b; 8394} 8395 8396static vector unsigned char __ATTRS_o_ai 8397vec_vxor(vector bool char a, vector unsigned char b) 8398{ 8399 return (vector unsigned char)a ^ b; 8400} 8401 8402static vector unsigned char __ATTRS_o_ai 8403vec_vxor(vector unsigned char a, vector bool char b) 8404{ 8405 return a ^ (vector unsigned char)b; 8406} 8407 8408static vector bool char __ATTRS_o_ai 8409vec_vxor(vector bool char a, vector bool char b) 8410{ 8411 return a ^ b; 8412} 8413 8414static vector short __ATTRS_o_ai 8415vec_vxor(vector short a, vector short b) 8416{ 8417 return a ^ b; 8418} 8419 8420static vector short __ATTRS_o_ai 8421vec_vxor(vector bool short a, vector short b) 8422{ 8423 return (vector short)a ^ b; 8424} 8425 8426static vector short __ATTRS_o_ai 8427vec_vxor(vector short a, vector bool short b) 8428{ 8429 return a ^ (vector short)b; 8430} 8431 8432static vector unsigned short __ATTRS_o_ai 8433vec_vxor(vector unsigned short a, vector unsigned short b) 8434{ 8435 return a ^ b; 8436} 8437 8438static vector unsigned short __ATTRS_o_ai 8439vec_vxor(vector bool short a, vector unsigned short b) 8440{ 8441 return (vector unsigned short)a ^ b; 8442} 8443 8444static vector unsigned short __ATTRS_o_ai 8445vec_vxor(vector unsigned short a, vector bool short b) 8446{ 8447 return a ^ (vector unsigned short)b; 8448} 8449 8450static vector bool short __ATTRS_o_ai 8451vec_vxor(vector bool short a, vector bool short b) 8452{ 8453 return a ^ b; 8454} 8455 8456static vector int __ATTRS_o_ai 8457vec_vxor(vector int a, vector int b) 8458{ 8459 return a ^ b; 8460} 8461 8462static vector int __ATTRS_o_ai 8463vec_vxor(vector bool int a, vector int b) 8464{ 8465 return (vector int)a ^ b; 8466} 8467 8468static vector int __ATTRS_o_ai 8469vec_vxor(vector int a, vector bool int b) 8470{ 8471 return a ^ (vector int)b; 8472} 8473 8474static vector unsigned int __ATTRS_o_ai 8475vec_vxor(vector unsigned int a, vector unsigned int b) 8476{ 8477 return a ^ b; 8478} 8479 8480static vector unsigned int __ATTRS_o_ai 8481vec_vxor(vector bool int a, vector unsigned int b) 8482{ 8483 return (vector unsigned int)a ^ b; 8484} 8485 8486static vector unsigned int __ATTRS_o_ai 8487vec_vxor(vector unsigned int a, vector bool int b) 8488{ 8489 return a ^ (vector unsigned int)b; 8490} 8491 8492static vector bool int __ATTRS_o_ai 8493vec_vxor(vector bool int a, vector bool int b) 8494{ 8495 return a ^ b; 8496} 8497 8498static vector float __ATTRS_o_ai 8499vec_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 8505static vector float __ATTRS_o_ai 8506vec_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 8512static vector float __ATTRS_o_ai 8513vec_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 8523static signed char __ATTRS_o_ai 8524vec_extract(vector signed char a, int b) 8525{ 8526 return a[b]; 8527} 8528 8529static unsigned char __ATTRS_o_ai 8530vec_extract(vector unsigned char a, int b) 8531{ 8532 return a[b]; 8533} 8534 8535static short __ATTRS_o_ai 8536vec_extract(vector short a, int b) 8537{ 8538 return a[b]; 8539} 8540 8541static unsigned short __ATTRS_o_ai 8542vec_extract(vector unsigned short a, int b) 8543{ 8544 return a[b]; 8545} 8546 8547static int __ATTRS_o_ai 8548vec_extract(vector int a, int b) 8549{ 8550 return a[b]; 8551} 8552 8553static unsigned int __ATTRS_o_ai 8554vec_extract(vector unsigned int a, int b) 8555{ 8556 return a[b]; 8557} 8558 8559static float __ATTRS_o_ai 8560vec_extract(vector float a, int b) 8561{ 8562 return a[b]; 8563} 8564 8565/* vec_insert */ 8566 8567static vector signed char __ATTRS_o_ai 8568vec_insert(signed char a, vector signed char b, int c) 8569{ 8570 b[c] = a; 8571 return b; 8572} 8573 8574static vector unsigned char __ATTRS_o_ai 8575vec_insert(unsigned char a, vector unsigned char b, int c) 8576{ 8577 b[c] = a; 8578 return b; 8579} 8580 8581static vector short __ATTRS_o_ai 8582vec_insert(short a, vector short b, int c) 8583{ 8584 b[c] = a; 8585 return b; 8586} 8587 8588static vector unsigned short __ATTRS_o_ai 8589vec_insert(unsigned short a, vector unsigned short b, int c) 8590{ 8591 b[c] = a; 8592 return b; 8593} 8594 8595static vector int __ATTRS_o_ai 8596vec_insert(int a, vector int b, int c) 8597{ 8598 b[c] = a; 8599 return b; 8600} 8601 8602static vector unsigned int __ATTRS_o_ai 8603vec_insert(unsigned int a, vector unsigned int b, int c) 8604{ 8605 b[c] = a; 8606 return b; 8607} 8608 8609static vector float __ATTRS_o_ai 8610vec_insert(float a, vector float b, int c) 8611{ 8612 b[c] = a; 8613 return b; 8614} 8615 8616/* vec_lvlx */ 8617 8618static vector signed char __ATTRS_o_ai 8619vec_lvlx(int a, const signed char *b) 8620{ 8621 return vec_perm(vec_ld(a, b), 8622 (vector signed char)(0), 8623 vec_lvsl(a, b)); 8624} 8625 8626static vector signed char __ATTRS_o_ai 8627vec_lvlx(int a, const 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 8634static vector unsigned char __ATTRS_o_ai 8635vec_lvlx(int a, const unsigned char *b) 8636{ 8637 return vec_perm(vec_ld(a, b), 8638 (vector unsigned char)(0), 8639 vec_lvsl(a, b)); 8640} 8641 8642static vector unsigned char __ATTRS_o_ai 8643vec_lvlx(int a, const 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 8650static vector bool char __ATTRS_o_ai 8651vec_lvlx(int a, const 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 8658static vector short __ATTRS_o_ai 8659vec_lvlx(int a, const short *b) 8660{ 8661 return vec_perm(vec_ld(a, b), 8662 (vector short)(0), 8663 vec_lvsl(a, b)); 8664} 8665 8666static vector short __ATTRS_o_ai 8667vec_lvlx(int a, const 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 8674static vector unsigned short __ATTRS_o_ai 8675vec_lvlx(int a, const unsigned short *b) 8676{ 8677 return vec_perm(vec_ld(a, b), 8678 (vector unsigned short)(0), 8679 vec_lvsl(a, b)); 8680} 8681 8682static vector unsigned short __ATTRS_o_ai 8683vec_lvlx(int a, const 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 8690static vector bool short __ATTRS_o_ai 8691vec_lvlx(int a, const 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 8698static vector pixel __ATTRS_o_ai 8699vec_lvlx(int a, const 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 8706static vector int __ATTRS_o_ai 8707vec_lvlx(int a, const int *b) 8708{ 8709 return vec_perm(vec_ld(a, b), 8710 (vector int)(0), 8711 vec_lvsl(a, b)); 8712} 8713 8714static vector int __ATTRS_o_ai 8715vec_lvlx(int a, const 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 8722static vector unsigned int __ATTRS_o_ai 8723vec_lvlx(int a, const unsigned int *b) 8724{ 8725 return vec_perm(vec_ld(a, b), 8726 (vector unsigned int)(0), 8727 vec_lvsl(a, b)); 8728} 8729 8730static vector unsigned int __ATTRS_o_ai 8731vec_lvlx(int a, const 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 8738static vector bool int __ATTRS_o_ai 8739vec_lvlx(int a, const 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 8746static vector float __ATTRS_o_ai 8747vec_lvlx(int a, const float *b) 8748{ 8749 return vec_perm(vec_ld(a, b), 8750 (vector float)(0), 8751 vec_lvsl(a, b)); 8752} 8753 8754static vector float __ATTRS_o_ai 8755vec_lvlx(int a, const 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 8764static vector signed char __ATTRS_o_ai 8765vec_lvlxl(int a, const signed char *b) 8766{ 8767 return vec_perm(vec_ldl(a, b), 8768 (vector signed char)(0), 8769 vec_lvsl(a, b)); 8770} 8771 8772static vector signed char __ATTRS_o_ai 8773vec_lvlxl(int a, const 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 8780static vector unsigned char __ATTRS_o_ai 8781vec_lvlxl(int a, const unsigned char *b) 8782{ 8783 return vec_perm(vec_ldl(a, b), 8784 (vector unsigned char)(0), 8785 vec_lvsl(a, b)); 8786} 8787 8788static vector unsigned char __ATTRS_o_ai 8789vec_lvlxl(int a, const 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 8796static vector bool char __ATTRS_o_ai 8797vec_lvlxl(int a, const 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 8804static vector short __ATTRS_o_ai 8805vec_lvlxl(int a, const short *b) 8806{ 8807 return vec_perm(vec_ldl(a, b), 8808 (vector short)(0), 8809 vec_lvsl(a, b)); 8810} 8811 8812static vector short __ATTRS_o_ai 8813vec_lvlxl(int a, const 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 8820static vector unsigned short __ATTRS_o_ai 8821vec_lvlxl(int a, const unsigned short *b) 8822{ 8823 return vec_perm(vec_ldl(a, b), 8824 (vector unsigned short)(0), 8825 vec_lvsl(a, b)); 8826} 8827 8828static vector unsigned short __ATTRS_o_ai 8829vec_lvlxl(int a, const 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 8836static vector bool short __ATTRS_o_ai 8837vec_lvlxl(int a, const 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 8844static vector pixel __ATTRS_o_ai 8845vec_lvlxl(int a, const 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 8852static vector int __ATTRS_o_ai 8853vec_lvlxl(int a, const int *b) 8854{ 8855 return vec_perm(vec_ldl(a, b), 8856 (vector int)(0), 8857 vec_lvsl(a, b)); 8858} 8859 8860static vector int __ATTRS_o_ai 8861vec_lvlxl(int a, const 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 8868static vector unsigned int __ATTRS_o_ai 8869vec_lvlxl(int a, const unsigned int *b) 8870{ 8871 return vec_perm(vec_ldl(a, b), 8872 (vector unsigned int)(0), 8873 vec_lvsl(a, b)); 8874} 8875 8876static vector unsigned int __ATTRS_o_ai 8877vec_lvlxl(int a, const 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 8884static vector bool int __ATTRS_o_ai 8885vec_lvlxl(int a, const 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 8892static vector float __ATTRS_o_ai 8893vec_lvlxl(int a, const float *b) 8894{ 8895 return vec_perm(vec_ldl(a, b), 8896 (vector float)(0), 8897 vec_lvsl(a, b)); 8898} 8899 8900static vector float __ATTRS_o_ai 8901vec_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 8910static vector signed char __ATTRS_o_ai 8911vec_lvrx(int a, const signed char *b) 8912{ 8913 return vec_perm((vector signed char)(0), 8914 vec_ld(a, b), 8915 vec_lvsl(a, b)); 8916} 8917 8918static vector signed char __ATTRS_o_ai 8919vec_lvrx(int a, const 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 8926static vector unsigned char __ATTRS_o_ai 8927vec_lvrx(int a, const unsigned char *b) 8928{ 8929 return vec_perm((vector unsigned char)(0), 8930 vec_ld(a, b), 8931 vec_lvsl(a, b)); 8932} 8933 8934static vector unsigned char __ATTRS_o_ai 8935vec_lvrx(int a, const 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 8942static vector bool char __ATTRS_o_ai 8943vec_lvrx(int a, const 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 8950static vector short __ATTRS_o_ai 8951vec_lvrx(int a, const short *b) 8952{ 8953 return vec_perm((vector short)(0), 8954 vec_ld(a, b), 8955 vec_lvsl(a, b)); 8956} 8957 8958static vector short __ATTRS_o_ai 8959vec_lvrx(int a, const 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 8966static vector unsigned short __ATTRS_o_ai 8967vec_lvrx(int a, const unsigned short *b) 8968{ 8969 return vec_perm((vector unsigned short)(0), 8970 vec_ld(a, b), 8971 vec_lvsl(a, b)); 8972} 8973 8974static vector unsigned short __ATTRS_o_ai 8975vec_lvrx(int a, const 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 8982static vector bool short __ATTRS_o_ai 8983vec_lvrx(int a, const 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 8990static vector pixel __ATTRS_o_ai 8991vec_lvrx(int a, const 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 8998static vector int __ATTRS_o_ai 8999vec_lvrx(int a, const int *b) 9000{ 9001 return vec_perm((vector int)(0), 9002 vec_ld(a, b), 9003 vec_lvsl(a, b)); 9004} 9005 9006static vector int __ATTRS_o_ai 9007vec_lvrx(int a, const 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 9014static vector unsigned int __ATTRS_o_ai 9015vec_lvrx(int a, const unsigned int *b) 9016{ 9017 return vec_perm((vector unsigned int)(0), 9018 vec_ld(a, b), 9019 vec_lvsl(a, b)); 9020} 9021 9022static vector unsigned int __ATTRS_o_ai 9023vec_lvrx(int a, const 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 9030static vector bool int __ATTRS_o_ai 9031vec_lvrx(int a, const 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 9038static vector float __ATTRS_o_ai 9039vec_lvrx(int a, const float *b) 9040{ 9041 return vec_perm((vector float)(0), 9042 vec_ld(a, b), 9043 vec_lvsl(a, b)); 9044} 9045 9046static vector float __ATTRS_o_ai 9047vec_lvrx(int a, const 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 9056static vector signed char __ATTRS_o_ai 9057vec_lvrxl(int a, const signed char *b) 9058{ 9059 return vec_perm((vector signed char)(0), 9060 vec_ldl(a, b), 9061 vec_lvsl(a, b)); 9062} 9063 9064static vector signed char __ATTRS_o_ai 9065vec_lvrxl(int a, const 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 9072static vector unsigned char __ATTRS_o_ai 9073vec_lvrxl(int a, const unsigned char *b) 9074{ 9075 return vec_perm((vector unsigned char)(0), 9076 vec_ldl(a, b), 9077 vec_lvsl(a, b)); 9078} 9079 9080static vector unsigned char __ATTRS_o_ai 9081vec_lvrxl(int a, const 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 9088static vector bool char __ATTRS_o_ai 9089vec_lvrxl(int a, const 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 9096static vector short __ATTRS_o_ai 9097vec_lvrxl(int a, const short *b) 9098{ 9099 return vec_perm((vector short)(0), 9100 vec_ldl(a, b), 9101 vec_lvsl(a, b)); 9102} 9103 9104static vector short __ATTRS_o_ai 9105vec_lvrxl(int a, const 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 9112static vector unsigned short __ATTRS_o_ai 9113vec_lvrxl(int a, const unsigned short *b) 9114{ 9115 return vec_perm((vector unsigned short)(0), 9116 vec_ldl(a, b), 9117 vec_lvsl(a, b)); 9118} 9119 9120static vector unsigned short __ATTRS_o_ai 9121vec_lvrxl(int a, const 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 9128static vector bool short __ATTRS_o_ai 9129vec_lvrxl(int a, const 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 9136static vector pixel __ATTRS_o_ai 9137vec_lvrxl(int a, const 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 9144static vector int __ATTRS_o_ai 9145vec_lvrxl(int a, const int *b) 9146{ 9147 return vec_perm((vector int)(0), 9148 vec_ldl(a, b), 9149 vec_lvsl(a, b)); 9150} 9151 9152static vector int __ATTRS_o_ai 9153vec_lvrxl(int a, const 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 9160static vector unsigned int __ATTRS_o_ai 9161vec_lvrxl(int a, const unsigned int *b) 9162{ 9163 return vec_perm((vector unsigned int)(0), 9164 vec_ldl(a, b), 9165 vec_lvsl(a, b)); 9166} 9167 9168static vector unsigned int __ATTRS_o_ai 9169vec_lvrxl(int a, const 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 9176static vector bool int __ATTRS_o_ai 9177vec_lvrxl(int a, const 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 9184static vector float __ATTRS_o_ai 9185vec_lvrxl(int a, const float *b) 9186{ 9187 return vec_perm((vector float)(0), 9188 vec_ldl(a, b), 9189 vec_lvsl(a, b)); 9190} 9191 9192static vector float __ATTRS_o_ai 9193vec_lvrxl(int a, const 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 9202static void __ATTRS_o_ai 9203vec_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 9211static void __ATTRS_o_ai 9212vec_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 9220static void __ATTRS_o_ai 9221vec_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 9229static void __ATTRS_o_ai 9230vec_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 9238static void __ATTRS_o_ai 9239vec_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 9247static void __ATTRS_o_ai 9248vec_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 9256static void __ATTRS_o_ai 9257vec_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 9265static void __ATTRS_o_ai 9266vec_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 9274static void __ATTRS_o_ai 9275vec_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 9283static void __ATTRS_o_ai 9284vec_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 9292static void __ATTRS_o_ai 9293vec_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 9301static void __ATTRS_o_ai 9302vec_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 9310static void __ATTRS_o_ai 9311vec_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 9319static void __ATTRS_o_ai 9320vec_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 9328static void __ATTRS_o_ai 9329vec_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 9337static void __ATTRS_o_ai 9338vec_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 9346static void __ATTRS_o_ai 9347vec_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 9357static void __ATTRS_o_ai 9358vec_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 9366static void __ATTRS_o_ai 9367vec_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 9375static void __ATTRS_o_ai 9376vec_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 9384static void __ATTRS_o_ai 9385vec_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 9393static void __ATTRS_o_ai 9394vec_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 9402static void __ATTRS_o_ai 9403vec_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 9411static void __ATTRS_o_ai 9412vec_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 9420static void __ATTRS_o_ai 9421vec_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 9429static void __ATTRS_o_ai 9430vec_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 9438static void __ATTRS_o_ai 9439vec_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 9447static void __ATTRS_o_ai 9448vec_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 9456static void __ATTRS_o_ai 9457vec_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 9465static void __ATTRS_o_ai 9466vec_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 9474static void __ATTRS_o_ai 9475vec_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 9483static void __ATTRS_o_ai 9484vec_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 9492static void __ATTRS_o_ai 9493vec_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 9501static void __ATTRS_o_ai 9502vec_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 9512static void __ATTRS_o_ai 9513vec_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 9521static void __ATTRS_o_ai 9522vec_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 9530static void __ATTRS_o_ai 9531vec_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 9539static void __ATTRS_o_ai 9540vec_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 9548static void __ATTRS_o_ai 9549vec_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 9557static void __ATTRS_o_ai 9558vec_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 9566static void __ATTRS_o_ai 9567vec_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 9575static void __ATTRS_o_ai 9576vec_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 9584static void __ATTRS_o_ai 9585vec_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 9593static void __ATTRS_o_ai 9594vec_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 9602static void __ATTRS_o_ai 9603vec_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 9611static void __ATTRS_o_ai 9612vec_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 9620static void __ATTRS_o_ai 9621vec_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 9629static void __ATTRS_o_ai 9630vec_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 9638static void __ATTRS_o_ai 9639vec_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 9647static void __ATTRS_o_ai 9648vec_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 9656static void __ATTRS_o_ai 9657vec_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 9667static void __ATTRS_o_ai 9668vec_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 9676static void __ATTRS_o_ai 9677vec_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 9685static void __ATTRS_o_ai 9686vec_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 9694static void __ATTRS_o_ai 9695vec_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 9703static void __ATTRS_o_ai 9704vec_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 9712static void __ATTRS_o_ai 9713vec_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 9721static void __ATTRS_o_ai 9722vec_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 9730static void __ATTRS_o_ai 9731vec_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 9739static void __ATTRS_o_ai 9740vec_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 9748static void __ATTRS_o_ai 9749vec_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 9757static void __ATTRS_o_ai 9758vec_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 9766static void __ATTRS_o_ai 9767vec_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 9775static void __ATTRS_o_ai 9776vec_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 9784static void __ATTRS_o_ai 9785vec_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 9793static void __ATTRS_o_ai 9794vec_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 9802static void __ATTRS_o_ai 9803vec_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 9811static void __ATTRS_o_ai 9812vec_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 9822static vector signed char __ATTRS_o_ai 9823vec_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 9830static vector unsigned char __ATTRS_o_ai 9831vec_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 9838static vector short __ATTRS_o_ai 9839vec_promote(short a, int b) 9840{ 9841 vector short res = (vector short)(0); 9842 res[b] = a; 9843 return res; 9844} 9845 9846static vector unsigned short __ATTRS_o_ai 9847vec_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 9854static vector int __ATTRS_o_ai 9855vec_promote(int a, int b) 9856{ 9857 vector int res = (vector int)(0); 9858 res[b] = a; 9859 return res; 9860} 9861 9862static vector unsigned int __ATTRS_o_ai 9863vec_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 9870static vector float __ATTRS_o_ai 9871vec_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 9880static vector signed char __ATTRS_o_ai 9881vec_splats(signed char a) 9882{ 9883 return (vector signed char)(a); 9884} 9885 9886static vector unsigned char __ATTRS_o_ai 9887vec_splats(unsigned char a) 9888{ 9889 return (vector unsigned char)(a); 9890} 9891 9892static vector short __ATTRS_o_ai 9893vec_splats(short a) 9894{ 9895 return (vector short)(a); 9896} 9897 9898static vector unsigned short __ATTRS_o_ai 9899vec_splats(unsigned short a) 9900{ 9901 return (vector unsigned short)(a); 9902} 9903 9904static vector int __ATTRS_o_ai 9905vec_splats(int a) 9906{ 9907 return (vector int)(a); 9908} 9909 9910static vector unsigned int __ATTRS_o_ai 9911vec_splats(unsigned int a) 9912{ 9913 return (vector unsigned int)(a); 9914} 9915 9916static vector float __ATTRS_o_ai 9917vec_splats(float a) 9918{ 9919 return (vector float)(a); 9920} 9921 9922/* ----------------------------- predicates --------------------------------- */ 9923 9924/* vec_all_eq */ 9925 9926static int __ATTRS_o_ai 9927vec_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 9932static int __ATTRS_o_ai 9933vec_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 9938static int __ATTRS_o_ai 9939vec_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 9944static int __ATTRS_o_ai 9945vec_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 9950static int __ATTRS_o_ai 9951vec_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 9956static int __ATTRS_o_ai 9957vec_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 9962static int __ATTRS_o_ai 9963vec_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 9968static int __ATTRS_o_ai 9969vec_all_eq(vector short a, vector short b) 9970{ 9971 return __builtin_altivec_vcmpequh_p(__CR6_LT, a, b); 9972} 9973 9974static int __ATTRS_o_ai 9975vec_all_eq(vector short a, vector bool short b) 9976{ 9977 return __builtin_altivec_vcmpequh_p(__CR6_LT, a, (vector short)b); 9978} 9979 9980static int __ATTRS_o_ai 9981vec_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 9987static int __ATTRS_o_ai 9988vec_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 9994static int __ATTRS_o_ai 9995vec_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 10001static int __ATTRS_o_ai 10002vec_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 10008static int __ATTRS_o_ai 10009vec_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 10015static int __ATTRS_o_ai 10016vec_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 10022static int __ATTRS_o_ai 10023vec_all_eq(vector int a, vector int b) 10024{ 10025 return __builtin_altivec_vcmpequw_p(__CR6_LT, a, b); 10026} 10027 10028static int __ATTRS_o_ai 10029vec_all_eq(vector int a, vector bool int b) 10030{ 10031 return __builtin_altivec_vcmpequw_p(__CR6_LT, a, (vector int)b); 10032} 10033 10034static int __ATTRS_o_ai 10035vec_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 10040static int __ATTRS_o_ai 10041vec_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 10046static int __ATTRS_o_ai 10047vec_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 10052static int __ATTRS_o_ai 10053vec_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 10058static int __ATTRS_o_ai 10059vec_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 10064static int __ATTRS_o_ai 10065vec_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 10072static int __ATTRS_o_ai 10073vec_all_ge(vector signed char a, vector signed char b) 10074{ 10075 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, b, a); 10076} 10077 10078static int __ATTRS_o_ai 10079vec_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 10084static int __ATTRS_o_ai 10085vec_all_ge(vector unsigned char a, vector unsigned char b) 10086{ 10087 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, b, a); 10088} 10089 10090static int __ATTRS_o_ai 10091vec_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 10096static int __ATTRS_o_ai 10097vec_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 10104static int __ATTRS_o_ai 10105vec_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 10110static int __ATTRS_o_ai 10111vec_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 10118static int __ATTRS_o_ai 10119vec_all_ge(vector short a, vector short b) 10120{ 10121 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, b, a); 10122} 10123 10124static int __ATTRS_o_ai 10125vec_all_ge(vector short a, vector bool short b) 10126{ 10127 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, (vector short)b, a); 10128} 10129 10130static int __ATTRS_o_ai 10131vec_all_ge(vector unsigned short a, vector unsigned short b) 10132{ 10133 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, b, a); 10134} 10135 10136static int __ATTRS_o_ai 10137vec_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 10142static int __ATTRS_o_ai 10143vec_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 10150static int __ATTRS_o_ai 10151vec_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 10156static int __ATTRS_o_ai 10157vec_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 10164static int __ATTRS_o_ai 10165vec_all_ge(vector int a, vector int b) 10166{ 10167 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, b, a); 10168} 10169 10170static int __ATTRS_o_ai 10171vec_all_ge(vector int a, vector bool int b) 10172{ 10173 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, (vector int)b, a); 10174} 10175 10176static int __ATTRS_o_ai 10177vec_all_ge(vector unsigned int a, vector unsigned int b) 10178{ 10179 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, b, a); 10180} 10181 10182static int __ATTRS_o_ai 10183vec_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 10188static int __ATTRS_o_ai 10189vec_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 10196static int __ATTRS_o_ai 10197vec_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 10202static int __ATTRS_o_ai 10203vec_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 10210static int __ATTRS_o_ai 10211vec_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 10218static int __ATTRS_o_ai 10219vec_all_gt(vector signed char a, vector signed char b) 10220{ 10221 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, a, b); 10222} 10223 10224static int __ATTRS_o_ai 10225vec_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 10230static int __ATTRS_o_ai 10231vec_all_gt(vector unsigned char a, vector unsigned char b) 10232{ 10233 return __builtin_altivec_vcmpgtub_p(__CR6_LT, a, b); 10234} 10235 10236static int __ATTRS_o_ai 10237vec_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 10242static int __ATTRS_o_ai 10243vec_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 10250static int __ATTRS_o_ai 10251vec_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 10256static int __ATTRS_o_ai 10257vec_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 10264static int __ATTRS_o_ai 10265vec_all_gt(vector short a, vector short b) 10266{ 10267 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, a, b); 10268} 10269 10270static int __ATTRS_o_ai 10271vec_all_gt(vector short a, vector bool short b) 10272{ 10273 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, a, (vector short)b); 10274} 10275 10276static int __ATTRS_o_ai 10277vec_all_gt(vector unsigned short a, vector unsigned short b) 10278{ 10279 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, a, b); 10280} 10281 10282static int __ATTRS_o_ai 10283vec_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 10288static int __ATTRS_o_ai 10289vec_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 10296static int __ATTRS_o_ai 10297vec_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 10302static int __ATTRS_o_ai 10303vec_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 10310static int __ATTRS_o_ai 10311vec_all_gt(vector int a, vector int b) 10312{ 10313 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, a, b); 10314} 10315 10316static int __ATTRS_o_ai 10317vec_all_gt(vector int a, vector bool int b) 10318{ 10319 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, a, (vector int)b); 10320} 10321 10322static int __ATTRS_o_ai 10323vec_all_gt(vector unsigned int a, vector unsigned int b) 10324{ 10325 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, a, b); 10326} 10327 10328static int __ATTRS_o_ai 10329vec_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 10334static int __ATTRS_o_ai 10335vec_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 10342static int __ATTRS_o_ai 10343vec_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 10348static int __ATTRS_o_ai 10349vec_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 10356static int __ATTRS_o_ai 10357vec_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 10364static int __attribute__((__always_inline__)) 10365vec_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 10372static int __ATTRS_o_ai 10373vec_all_le(vector signed char a, vector signed char b) 10374{ 10375 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, a, b); 10376} 10377 10378static int __ATTRS_o_ai 10379vec_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 10384static int __ATTRS_o_ai 10385vec_all_le(vector unsigned char a, vector unsigned char b) 10386{ 10387 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, a, b); 10388} 10389 10390static int __ATTRS_o_ai 10391vec_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 10396static int __ATTRS_o_ai 10397vec_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 10404static int __ATTRS_o_ai 10405vec_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 10410static int __ATTRS_o_ai 10411vec_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 10418static int __ATTRS_o_ai 10419vec_all_le(vector short a, vector short b) 10420{ 10421 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, a, b); 10422} 10423 10424static int __ATTRS_o_ai 10425vec_all_le(vector short a, vector bool short b) 10426{ 10427 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, a, (vector short)b); 10428} 10429 10430static int __ATTRS_o_ai 10431vec_all_le(vector unsigned short a, vector unsigned short b) 10432{ 10433 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, a, b); 10434} 10435 10436static int __ATTRS_o_ai 10437vec_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 10442static int __ATTRS_o_ai 10443vec_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 10450static int __ATTRS_o_ai 10451vec_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 10456static int __ATTRS_o_ai 10457vec_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 10464static int __ATTRS_o_ai 10465vec_all_le(vector int a, vector int b) 10466{ 10467 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, a, b); 10468} 10469 10470static int __ATTRS_o_ai 10471vec_all_le(vector int a, vector bool int b) 10472{ 10473 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, a, (vector int)b); 10474} 10475 10476static int __ATTRS_o_ai 10477vec_all_le(vector unsigned int a, vector unsigned int b) 10478{ 10479 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, a, b); 10480} 10481 10482static int __ATTRS_o_ai 10483vec_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 10488static int __ATTRS_o_ai 10489vec_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 10496static int __ATTRS_o_ai 10497vec_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 10502static int __ATTRS_o_ai 10503vec_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 10510static int __ATTRS_o_ai 10511vec_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 10518static int __ATTRS_o_ai 10519vec_all_lt(vector signed char a, vector signed char b) 10520{ 10521 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, b, a); 10522} 10523 10524static int __ATTRS_o_ai 10525vec_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 10530static int __ATTRS_o_ai 10531vec_all_lt(vector unsigned char a, vector unsigned char b) 10532{ 10533 return __builtin_altivec_vcmpgtub_p(__CR6_LT, b, a); 10534} 10535 10536static int __ATTRS_o_ai 10537vec_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 10542static int __ATTRS_o_ai 10543vec_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 10550static int __ATTRS_o_ai 10551vec_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 10556static int __ATTRS_o_ai 10557vec_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 10564static int __ATTRS_o_ai 10565vec_all_lt(vector short a, vector short b) 10566{ 10567 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, b, a); 10568} 10569 10570static int __ATTRS_o_ai 10571vec_all_lt(vector short a, vector bool short b) 10572{ 10573 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, (vector short)b, a); 10574} 10575 10576static int __ATTRS_o_ai 10577vec_all_lt(vector unsigned short a, vector unsigned short b) 10578{ 10579 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, b, a); 10580} 10581 10582static int __ATTRS_o_ai 10583vec_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 10588static int __ATTRS_o_ai 10589vec_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 10596static int __ATTRS_o_ai 10597vec_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 10602static int __ATTRS_o_ai 10603vec_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 10610static int __ATTRS_o_ai 10611vec_all_lt(vector int a, vector int b) 10612{ 10613 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, b, a); 10614} 10615 10616static int __ATTRS_o_ai 10617vec_all_lt(vector int a, vector bool int b) 10618{ 10619 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, (vector int)b, a); 10620} 10621 10622static int __ATTRS_o_ai 10623vec_all_lt(vector unsigned int a, vector unsigned int b) 10624{ 10625 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, b, a); 10626} 10627 10628static int __ATTRS_o_ai 10629vec_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 10634static int __ATTRS_o_ai 10635vec_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 10642static int __ATTRS_o_ai 10643vec_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 10648static int __ATTRS_o_ai 10649vec_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 10656static int __ATTRS_o_ai 10657vec_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 10664static int __attribute__((__always_inline__)) 10665vec_all_nan(vector float a) 10666{ 10667 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, a, a); 10668} 10669 10670/* vec_all_ne */ 10671 10672static int __ATTRS_o_ai 10673vec_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 10678static int __ATTRS_o_ai 10679vec_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 10684static int __ATTRS_o_ai 10685vec_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 10690static int __ATTRS_o_ai 10691vec_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 10696static int __ATTRS_o_ai 10697vec_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 10702static int __ATTRS_o_ai 10703vec_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 10708static int __ATTRS_o_ai 10709vec_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 10714static int __ATTRS_o_ai 10715vec_all_ne(vector short a, vector short b) 10716{ 10717 return __builtin_altivec_vcmpequh_p(__CR6_EQ, a, b); 10718} 10719 10720static int __ATTRS_o_ai 10721vec_all_ne(vector short a, vector bool short b) 10722{ 10723 return __builtin_altivec_vcmpequh_p(__CR6_EQ, a, (vector short)b); 10724} 10725 10726static int __ATTRS_o_ai 10727vec_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 10733static int __ATTRS_o_ai 10734vec_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 10740static int __ATTRS_o_ai 10741vec_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 10747static int __ATTRS_o_ai 10748vec_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 10754static int __ATTRS_o_ai 10755vec_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 10761static int __ATTRS_o_ai 10762vec_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 10768static int __ATTRS_o_ai 10769vec_all_ne(vector int a, vector int b) 10770{ 10771 return __builtin_altivec_vcmpequw_p(__CR6_EQ, a, b); 10772} 10773 10774static int __ATTRS_o_ai 10775vec_all_ne(vector int a, vector bool int b) 10776{ 10777 return __builtin_altivec_vcmpequw_p(__CR6_EQ, a, (vector int)b); 10778} 10779 10780static int __ATTRS_o_ai 10781vec_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 10786static int __ATTRS_o_ai 10787vec_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 10792static int __ATTRS_o_ai 10793vec_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 10798static int __ATTRS_o_ai 10799vec_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 10804static int __ATTRS_o_ai 10805vec_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 10810static int __ATTRS_o_ai 10811vec_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 10818static int __attribute__((__always_inline__)) 10819vec_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 10826static int __attribute__((__always_inline__)) 10827vec_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 10834static int __attribute__((__always_inline__)) 10835vec_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 10842static int __attribute__((__always_inline__)) 10843vec_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 10850static int __attribute__((__always_inline__)) 10851vec_all_numeric(vector float a) 10852{ 10853 return __builtin_altivec_vcmpeqfp_p(__CR6_LT, a, a); 10854} 10855 10856/* vec_any_eq */ 10857 10858static int __ATTRS_o_ai 10859vec_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 10865static int __ATTRS_o_ai 10866vec_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 10872static int __ATTRS_o_ai 10873vec_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 10879static int __ATTRS_o_ai 10880vec_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 10886static int __ATTRS_o_ai 10887vec_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 10893static int __ATTRS_o_ai 10894vec_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 10900static int __ATTRS_o_ai 10901vec_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 10907static int __ATTRS_o_ai 10908vec_any_eq(vector short a, vector short b) 10909{ 10910 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, a, b); 10911} 10912 10913static int __ATTRS_o_ai 10914vec_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 10919static int __ATTRS_o_ai 10920vec_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 10927static int __ATTRS_o_ai 10928vec_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 10935static int __ATTRS_o_ai 10936vec_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 10943static int __ATTRS_o_ai 10944vec_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 10951static int __ATTRS_o_ai 10952vec_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 10959static int __ATTRS_o_ai 10960vec_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 10967static int __ATTRS_o_ai 10968vec_any_eq(vector int a, vector int b) 10969{ 10970 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, a, b); 10971} 10972 10973static int __ATTRS_o_ai 10974vec_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 10979static int __ATTRS_o_ai 10980vec_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 10986static int __ATTRS_o_ai 10987vec_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 10993static int __ATTRS_o_ai 10994vec_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 11000static int __ATTRS_o_ai 11001vec_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 11007static int __ATTRS_o_ai 11008vec_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 11014static int __ATTRS_o_ai 11015vec_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 11022static int __ATTRS_o_ai 11023vec_any_ge(vector signed char a, vector signed char b) 11024{ 11025 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, b, a); 11026} 11027 11028static int __ATTRS_o_ai 11029vec_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 11034static int __ATTRS_o_ai 11035vec_any_ge(vector unsigned char a, vector unsigned char b) 11036{ 11037 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, b, a); 11038} 11039 11040static int __ATTRS_o_ai 11041vec_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 11046static int __ATTRS_o_ai 11047vec_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 11054static int __ATTRS_o_ai 11055vec_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 11060static int __ATTRS_o_ai 11061vec_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 11068static int __ATTRS_o_ai 11069vec_any_ge(vector short a, vector short b) 11070{ 11071 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, b, a); 11072} 11073 11074static int __ATTRS_o_ai 11075vec_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 11080static int __ATTRS_o_ai 11081vec_any_ge(vector unsigned short a, vector unsigned short b) 11082{ 11083 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, b, a); 11084} 11085 11086static int __ATTRS_o_ai 11087vec_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 11093static int __ATTRS_o_ai 11094vec_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 11101static int __ATTRS_o_ai 11102vec_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 11108static int __ATTRS_o_ai 11109vec_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 11116static int __ATTRS_o_ai 11117vec_any_ge(vector int a, vector int b) 11118{ 11119 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, b, a); 11120} 11121 11122static int __ATTRS_o_ai 11123vec_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 11128static int __ATTRS_o_ai 11129vec_any_ge(vector unsigned int a, vector unsigned int b) 11130{ 11131 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, b, a); 11132} 11133 11134static int __ATTRS_o_ai 11135vec_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 11140static int __ATTRS_o_ai 11141vec_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 11148static int __ATTRS_o_ai 11149vec_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 11154static int __ATTRS_o_ai 11155vec_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 11162static int __ATTRS_o_ai 11163vec_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 11170static int __ATTRS_o_ai 11171vec_any_gt(vector signed char a, vector signed char b) 11172{ 11173 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, a, b); 11174} 11175 11176static int __ATTRS_o_ai 11177vec_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 11182static int __ATTRS_o_ai 11183vec_any_gt(vector unsigned char a, vector unsigned char b) 11184{ 11185 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, a, b); 11186} 11187 11188static int __ATTRS_o_ai 11189vec_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 11195static int __ATTRS_o_ai 11196vec_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 11203static int __ATTRS_o_ai 11204vec_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 11210static int __ATTRS_o_ai 11211vec_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 11218static int __ATTRS_o_ai 11219vec_any_gt(vector short a, vector short b) 11220{ 11221 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, a, b); 11222} 11223 11224static int __ATTRS_o_ai 11225vec_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 11230static int __ATTRS_o_ai 11231vec_any_gt(vector unsigned short a, vector unsigned short b) 11232{ 11233 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, a, b); 11234} 11235 11236static int __ATTRS_o_ai 11237vec_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 11243static int __ATTRS_o_ai 11244vec_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 11251static int __ATTRS_o_ai 11252vec_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 11258static int __ATTRS_o_ai 11259vec_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 11266static int __ATTRS_o_ai 11267vec_any_gt(vector int a, vector int b) 11268{ 11269 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, a, b); 11270} 11271 11272static int __ATTRS_o_ai 11273vec_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 11278static int __ATTRS_o_ai 11279vec_any_gt(vector unsigned int a, vector unsigned int b) 11280{ 11281 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, a, b); 11282} 11283 11284static int __ATTRS_o_ai 11285vec_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 11290static int __ATTRS_o_ai 11291vec_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 11298static int __ATTRS_o_ai 11299vec_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 11304static int __ATTRS_o_ai 11305vec_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 11312static int __ATTRS_o_ai 11313vec_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 11320static int __ATTRS_o_ai 11321vec_any_le(vector signed char a, vector signed char b) 11322{ 11323 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, a, b); 11324} 11325 11326static int __ATTRS_o_ai 11327vec_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 11332static int __ATTRS_o_ai 11333vec_any_le(vector unsigned char a, vector unsigned char b) 11334{ 11335 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, a, b); 11336} 11337 11338static int __ATTRS_o_ai 11339vec_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 11345static int __ATTRS_o_ai 11346vec_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 11353static int __ATTRS_o_ai 11354vec_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 11360static int __ATTRS_o_ai 11361vec_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 11368static int __ATTRS_o_ai 11369vec_any_le(vector short a, vector short b) 11370{ 11371 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, a, b); 11372} 11373 11374static int __ATTRS_o_ai 11375vec_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 11380static int __ATTRS_o_ai 11381vec_any_le(vector unsigned short a, vector unsigned short b) 11382{ 11383 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, a, b); 11384} 11385 11386static int __ATTRS_o_ai 11387vec_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 11393static int __ATTRS_o_ai 11394vec_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 11401static int __ATTRS_o_ai 11402vec_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 11408static int __ATTRS_o_ai 11409vec_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 11416static int __ATTRS_o_ai 11417vec_any_le(vector int a, vector int b) 11418{ 11419 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, a, b); 11420} 11421 11422static int __ATTRS_o_ai 11423vec_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 11428static int __ATTRS_o_ai 11429vec_any_le(vector unsigned int a, vector unsigned int b) 11430{ 11431 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, a, b); 11432} 11433 11434static int __ATTRS_o_ai 11435vec_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 11440static int __ATTRS_o_ai 11441vec_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 11448static int __ATTRS_o_ai 11449vec_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 11454static int __ATTRS_o_ai 11455vec_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 11462static int __ATTRS_o_ai 11463vec_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 11470static int __ATTRS_o_ai 11471vec_any_lt(vector signed char a, vector signed char b) 11472{ 11473 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, b, a); 11474} 11475 11476static int __ATTRS_o_ai 11477vec_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 11482static int __ATTRS_o_ai 11483vec_any_lt(vector unsigned char a, vector unsigned char b) 11484{ 11485 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, b, a); 11486} 11487 11488static int __ATTRS_o_ai 11489vec_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 11495static int __ATTRS_o_ai 11496vec_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 11503static int __ATTRS_o_ai 11504vec_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 11510static int __ATTRS_o_ai 11511vec_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 11518static int __ATTRS_o_ai 11519vec_any_lt(vector short a, vector short b) 11520{ 11521 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, b, a); 11522} 11523 11524static int __ATTRS_o_ai 11525vec_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 11530static int __ATTRS_o_ai 11531vec_any_lt(vector unsigned short a, vector unsigned short b) 11532{ 11533 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, b, a); 11534} 11535 11536static int __ATTRS_o_ai 11537vec_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 11543static int __ATTRS_o_ai 11544vec_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 11551static int __ATTRS_o_ai 11552vec_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 11558static int __ATTRS_o_ai 11559vec_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 11566static int __ATTRS_o_ai 11567vec_any_lt(vector int a, vector int b) 11568{ 11569 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, b, a); 11570} 11571 11572static int __ATTRS_o_ai 11573vec_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 11578static int __ATTRS_o_ai 11579vec_any_lt(vector unsigned int a, vector unsigned int b) 11580{ 11581 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, b, a); 11582} 11583 11584static int __ATTRS_o_ai 11585vec_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 11590static int __ATTRS_o_ai 11591vec_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 11598static int __ATTRS_o_ai 11599vec_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 11604static int __ATTRS_o_ai 11605vec_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 11612static int __ATTRS_o_ai 11613vec_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 11620static int __attribute__((__always_inline__)) 11621vec_any_nan(vector float a) 11622{ 11623 return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, a, a); 11624} 11625 11626/* vec_any_ne */ 11627 11628static int __ATTRS_o_ai 11629vec_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 11635static int __ATTRS_o_ai 11636vec_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 11642static int __ATTRS_o_ai 11643vec_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 11649static int __ATTRS_o_ai 11650vec_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 11656static int __ATTRS_o_ai 11657vec_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 11663static int __ATTRS_o_ai 11664vec_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 11670static int __ATTRS_o_ai 11671vec_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 11677static int __ATTRS_o_ai 11678vec_any_ne(vector short a, vector short b) 11679{ 11680 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, a, b); 11681} 11682 11683static int __ATTRS_o_ai 11684vec_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 11689static int __ATTRS_o_ai 11690vec_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 11697static int __ATTRS_o_ai 11698vec_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 11705static int __ATTRS_o_ai 11706vec_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 11713static int __ATTRS_o_ai 11714vec_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 11721static int __ATTRS_o_ai 11722vec_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 11729static int __ATTRS_o_ai 11730vec_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 11737static int __ATTRS_o_ai 11738vec_any_ne(vector int a, vector int b) 11739{ 11740 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, a, b); 11741} 11742 11743static int __ATTRS_o_ai 11744vec_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 11749static int __ATTRS_o_ai 11750vec_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 11756static int __ATTRS_o_ai 11757vec_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 11763static int __ATTRS_o_ai 11764vec_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 11770static int __ATTRS_o_ai 11771vec_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 11777static int __ATTRS_o_ai 11778vec_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 11784static int __ATTRS_o_ai 11785vec_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 11792static int __attribute__((__always_inline__)) 11793vec_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 11800static int __attribute__((__always_inline__)) 11801vec_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 11808static int __attribute__((__always_inline__)) 11809vec_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 11816static int __attribute__((__always_inline__)) 11817vec_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 11824static int __attribute__((__always_inline__)) 11825vec_any_numeric(vector float a) 11826{ 11827 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, a, a); 11828} 11829 11830/* vec_any_out */ 11831 11832static int __attribute__((__always_inline__)) 11833vec_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