altivec.h revision a2fc0f54d69461795433d42c46de337850be15cd
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// TODO: add functions for 'vector bool ..' and 'vector pixel' argument types according to 24// the 'AltiVec Technology Programming Interface Manual' 25 26#ifndef __ALTIVEC_H 27#define __ALTIVEC_H 28 29#ifndef __ALTIVEC__ 30#error "AltiVec support not enabled" 31#endif 32 33/* constants for mapping CR6 bits to predicate result. */ 34 35#define __CR6_EQ 0 36#define __CR6_EQ_REV 1 37#define __CR6_LT 2 38#define __CR6_LT_REV 3 39 40#define __ATTRS_o_ai __attribute__((__overloadable__, __always_inline__)) 41 42static vector signed char __ATTRS_o_ai 43vec_perm(vector signed char a, vector signed char b, vector unsigned char c); 44 45static vector unsigned char __ATTRS_o_ai 46vec_perm(vector unsigned char a, vector unsigned char b, vector unsigned char c); 47 48static vector bool char __ATTRS_o_ai 49vec_perm(vector bool char a, vector bool char b, vector unsigned char c); 50 51static vector short __ATTRS_o_ai 52vec_perm(vector short a, vector short b, vector unsigned char c); 53 54static vector unsigned short __ATTRS_o_ai 55vec_perm(vector unsigned short a, vector unsigned short b, vector unsigned char c); 56 57static vector bool short __ATTRS_o_ai 58vec_perm(vector bool short a, vector bool short b, vector unsigned char c); 59 60static vector pixel __ATTRS_o_ai 61vec_perm(vector pixel a, vector pixel b, vector unsigned char c); 62 63static vector int __ATTRS_o_ai 64vec_perm(vector int a, vector int b, vector unsigned char c); 65 66static vector unsigned int __ATTRS_o_ai 67vec_perm(vector unsigned int a, vector unsigned int b, vector unsigned char c); 68 69static vector bool int __ATTRS_o_ai 70vec_perm(vector bool int a, vector bool int b, vector unsigned char c); 71 72static vector float __ATTRS_o_ai 73vec_perm(vector float a, vector float b, vector unsigned char c); 74 75/* vec_abs */ 76 77#define __builtin_altivec_abs_v16qi vec_abs 78#define __builtin_altivec_abs_v8hi vec_abs 79#define __builtin_altivec_abs_v4si vec_abs 80 81static vector signed char __ATTRS_o_ai 82vec_abs(vector signed char a) 83{ 84 return __builtin_altivec_vmaxsb(a, -a); 85} 86 87static vector signed short __ATTRS_o_ai 88vec_abs(vector signed short a) 89{ 90 return __builtin_altivec_vmaxsh(a, -a); 91} 92 93static vector signed int __ATTRS_o_ai 94vec_abs(vector signed int a) 95{ 96 return __builtin_altivec_vmaxsw(a, -a); 97} 98 99static vector float __ATTRS_o_ai 100vec_abs(vector float a) 101{ 102 vector unsigned int res = (vector unsigned int)a & (vector unsigned int)(0x7FFFFFFF); 103 return (vector float)res; 104} 105 106/* vec_abss */ 107 108#define __builtin_altivec_abss_v16qi vec_abss 109#define __builtin_altivec_abss_v8hi vec_abss 110#define __builtin_altivec_abss_v4si vec_abss 111 112static vector signed char __ATTRS_o_ai 113vec_abss(vector signed char a) 114{ 115 return __builtin_altivec_vmaxsb(a, __builtin_altivec_vsubsbs((vector signed char)(0), a)); 116} 117 118static vector signed short __ATTRS_o_ai 119vec_abss(vector signed short a) 120{ 121 return __builtin_altivec_vmaxsh(a, __builtin_altivec_vsubshs((vector signed short)(0), a)); 122} 123 124static vector signed int __ATTRS_o_ai 125vec_abss(vector signed int a) 126{ 127 return __builtin_altivec_vmaxsw(a, __builtin_altivec_vsubsws((vector signed int)(0), a)); 128} 129 130/* vec_add */ 131 132static vector signed char __ATTRS_o_ai 133vec_add(vector signed char a, vector signed char b) 134{ 135 return a + b; 136} 137 138static vector signed char __ATTRS_o_ai 139vec_add(vector bool char a, vector signed char b) 140{ 141 return (vector signed char)a + b; 142} 143 144static vector signed char __ATTRS_o_ai 145vec_add(vector signed char a, vector bool char b) 146{ 147 return a + (vector signed char)b; 148} 149 150static vector unsigned char __ATTRS_o_ai 151vec_add(vector unsigned char a, vector unsigned char b) 152{ 153 return a + b; 154} 155 156static vector unsigned char __ATTRS_o_ai 157vec_add(vector bool char a, vector unsigned char b) 158{ 159 return (vector unsigned char)a + b; 160} 161 162static vector unsigned char __ATTRS_o_ai 163vec_add(vector unsigned char a, vector bool char b) 164{ 165 return a + (vector unsigned char)b; 166} 167 168static vector short __ATTRS_o_ai 169vec_add(vector short a, vector short b) 170{ 171 return a + b; 172} 173 174static vector short __ATTRS_o_ai 175vec_add(vector bool short a, vector short b) 176{ 177 return (vector short)a + b; 178} 179 180static vector short __ATTRS_o_ai 181vec_add(vector short a, vector bool short b) 182{ 183 return a + (vector short)b; 184} 185 186static vector unsigned short __ATTRS_o_ai 187vec_add(vector unsigned short a, vector unsigned short b) 188{ 189 return a + b; 190} 191 192static vector unsigned short __ATTRS_o_ai 193vec_add(vector bool short a, vector unsigned short b) 194{ 195 return (vector unsigned short)a + b; 196} 197 198static vector unsigned short __ATTRS_o_ai 199vec_add(vector unsigned short a, vector bool short b) 200{ 201 return a + (vector unsigned short)b; 202} 203 204static vector int __ATTRS_o_ai 205vec_add(vector int a, vector int b) 206{ 207 return a + b; 208} 209 210static vector int __ATTRS_o_ai 211vec_add(vector bool int a, vector int b) 212{ 213 return (vector int)a + b; 214} 215 216static vector int __ATTRS_o_ai 217vec_add(vector int a, vector bool int b) 218{ 219 return a + (vector int)b; 220} 221 222static vector unsigned int __ATTRS_o_ai 223vec_add(vector unsigned int a, vector unsigned int b) 224{ 225 return a + b; 226} 227 228static vector unsigned int __ATTRS_o_ai 229vec_add(vector bool int a, vector unsigned int b) 230{ 231 return (vector unsigned int)a + b; 232} 233 234static vector unsigned int __ATTRS_o_ai 235vec_add(vector unsigned int a, vector bool int b) 236{ 237 return a + (vector unsigned int)b; 238} 239 240static vector float __ATTRS_o_ai 241vec_add(vector float a, vector float b) 242{ 243 return a + b; 244} 245 246/* vec_vaddubm */ 247 248#define __builtin_altivec_vaddubm vec_vaddubm 249 250static vector signed char __ATTRS_o_ai 251vec_vaddubm(vector signed char a, vector signed char b) 252{ 253 return a + b; 254} 255 256static vector signed char __ATTRS_o_ai 257vec_vaddubm(vector bool char a, vector signed char b) 258{ 259 return (vector signed char)a + b; 260} 261 262static vector signed char __ATTRS_o_ai 263vec_vaddubm(vector signed char a, vector bool char b) 264{ 265 return a + (vector signed char)b; 266} 267 268static vector unsigned char __ATTRS_o_ai 269vec_vaddubm(vector unsigned char a, vector unsigned char b) 270{ 271 return a + b; 272} 273 274static vector unsigned char __ATTRS_o_ai 275vec_vaddubm(vector bool char a, vector unsigned char b) 276{ 277 return (vector unsigned char)a + b; 278} 279 280static vector unsigned char __ATTRS_o_ai 281vec_vaddubm(vector unsigned char a, vector bool char b) 282{ 283 return a + (vector unsigned char)b; 284} 285 286/* vec_vadduhm */ 287 288#define __builtin_altivec_vadduhm vec_vadduhm 289 290static vector short __ATTRS_o_ai 291vec_vadduhm(vector short a, vector short b) 292{ 293 return a + b; 294} 295 296static vector short __ATTRS_o_ai 297vec_vadduhm(vector bool short a, vector short b) 298{ 299 return (vector short)a + b; 300} 301 302static vector short __ATTRS_o_ai 303vec_vadduhm(vector short a, vector bool short b) 304{ 305 return a + (vector short)b; 306} 307 308static vector unsigned short __ATTRS_o_ai 309vec_vadduhm(vector unsigned short a, vector unsigned short b) 310{ 311 return a + b; 312} 313 314static vector unsigned short __ATTRS_o_ai 315vec_vadduhm(vector bool short a, vector unsigned short b) 316{ 317 return (vector unsigned short)a + b; 318} 319 320static vector unsigned short __ATTRS_o_ai 321vec_vadduhm(vector unsigned short a, vector bool short b) 322{ 323 return a + (vector unsigned short)b; 324} 325 326/* vec_vadduwm */ 327 328#define __builtin_altivec_vadduwm vec_vadduwm 329 330static vector int __ATTRS_o_ai 331vec_vadduwm(vector int a, vector int b) 332{ 333 return a + b; 334} 335 336static vector int __ATTRS_o_ai 337vec_vadduwm(vector bool int a, vector int b) 338{ 339 return (vector int)a + b; 340} 341 342static vector int __ATTRS_o_ai 343vec_vadduwm(vector int a, vector bool int b) 344{ 345 return a + (vector int)b; 346} 347 348static vector unsigned int __ATTRS_o_ai 349vec_vadduwm(vector unsigned int a, vector unsigned int b) 350{ 351 return a + b; 352} 353 354static vector unsigned int __ATTRS_o_ai 355vec_vadduwm(vector bool int a, vector unsigned int b) 356{ 357 return (vector unsigned int)a + b; 358} 359 360static vector unsigned int __ATTRS_o_ai 361vec_vadduwm(vector unsigned int a, vector bool int b) 362{ 363 return a + (vector unsigned int)b; 364} 365 366/* vec_vaddfp */ 367 368#define __builtin_altivec_vaddfp vec_vaddfp 369 370static vector float __attribute__((__always_inline__)) 371vec_vaddfp(vector float a, vector float b) 372{ 373 return a + b; 374} 375 376/* vec_addc */ 377 378static vector unsigned int __attribute__((__always_inline__)) 379vec_addc(vector unsigned int a, vector unsigned int b) 380{ 381 return __builtin_altivec_vaddcuw(a, b); 382} 383 384/* vec_vaddcuw */ 385 386static vector unsigned int __attribute__((__always_inline__)) 387vec_vaddcuw(vector unsigned int a, vector unsigned int b) 388{ 389 return __builtin_altivec_vaddcuw(a, b); 390} 391 392/* vec_adds */ 393 394static vector signed char __ATTRS_o_ai 395vec_adds(vector signed char a, vector signed char b) 396{ 397 return __builtin_altivec_vaddsbs(a, b); 398} 399 400static vector signed char __ATTRS_o_ai 401vec_adds(vector bool char a, vector signed char b) 402{ 403 return __builtin_altivec_vaddsbs((vector signed char)a, b); 404} 405 406static vector signed char __ATTRS_o_ai 407vec_adds(vector signed char a, vector bool char b) 408{ 409 return __builtin_altivec_vaddsbs(a, (vector signed char)b); 410} 411 412static vector unsigned char __ATTRS_o_ai 413vec_adds(vector unsigned char a, vector unsigned char b) 414{ 415 return __builtin_altivec_vaddubs(a, b); 416} 417 418static vector unsigned char __ATTRS_o_ai 419vec_adds(vector bool char a, vector unsigned char b) 420{ 421 return __builtin_altivec_vaddubs((vector unsigned char)a, b); 422} 423 424static vector unsigned char __ATTRS_o_ai 425vec_adds(vector unsigned char a, vector bool char b) 426{ 427 return __builtin_altivec_vaddubs(a, (vector unsigned char)b); 428} 429 430static vector short __ATTRS_o_ai 431vec_adds(vector short a, vector short b) 432{ 433 return __builtin_altivec_vaddshs(a, b); 434} 435 436static vector short __ATTRS_o_ai 437vec_adds(vector bool short a, vector short b) 438{ 439 return __builtin_altivec_vaddshs((vector short)a, b); 440} 441 442static vector short __ATTRS_o_ai 443vec_adds(vector short a, vector bool short b) 444{ 445 return __builtin_altivec_vaddshs(a, (vector short)b); 446} 447 448static vector unsigned short __ATTRS_o_ai 449vec_adds(vector unsigned short a, vector unsigned short b) 450{ 451 return __builtin_altivec_vadduhs(a, b); 452} 453 454static vector unsigned short __ATTRS_o_ai 455vec_adds(vector bool short a, vector unsigned short b) 456{ 457 return __builtin_altivec_vadduhs((vector unsigned short)a, b); 458} 459 460static vector unsigned short __ATTRS_o_ai 461vec_adds(vector unsigned short a, vector bool short b) 462{ 463 return __builtin_altivec_vadduhs(a, (vector unsigned short)b); 464} 465 466static vector int __ATTRS_o_ai 467vec_adds(vector int a, vector int b) 468{ 469 return __builtin_altivec_vaddsws(a, b); 470} 471 472static vector int __ATTRS_o_ai 473vec_adds(vector bool int a, vector int b) 474{ 475 return __builtin_altivec_vaddsws((vector int)a, b); 476} 477 478static vector int __ATTRS_o_ai 479vec_adds(vector int a, vector bool int b) 480{ 481 return __builtin_altivec_vaddsws(a, (vector int)b); 482} 483 484static vector unsigned int __ATTRS_o_ai 485vec_adds(vector unsigned int a, vector unsigned int b) 486{ 487 return __builtin_altivec_vadduws(a, b); 488} 489 490static vector unsigned int __ATTRS_o_ai 491vec_adds(vector bool int a, vector unsigned int b) 492{ 493 return __builtin_altivec_vadduws((vector unsigned int)a, b); 494} 495 496static vector unsigned int __ATTRS_o_ai 497vec_adds(vector unsigned int a, vector bool int b) 498{ 499 return __builtin_altivec_vadduws(a, (vector unsigned int)b); 500} 501 502/* vec_vaddsbs */ 503 504static vector signed char __ATTRS_o_ai 505vec_vaddsbs(vector signed char a, vector signed char b) 506{ 507 return __builtin_altivec_vaddsbs(a, b); 508} 509 510static vector signed char __ATTRS_o_ai 511vec_vaddsbs(vector bool char a, vector signed char b) 512{ 513 return __builtin_altivec_vaddsbs((vector signed char)a, b); 514} 515 516static vector signed char __ATTRS_o_ai 517vec_vaddsbs(vector signed char a, vector bool char b) 518{ 519 return __builtin_altivec_vaddsbs(a, (vector signed char)b); 520} 521 522/* vec_vaddubs */ 523 524static vector unsigned char __ATTRS_o_ai 525vec_vaddubs(vector unsigned char a, vector unsigned char b) 526{ 527 return __builtin_altivec_vaddubs(a, b); 528} 529 530static vector unsigned char __ATTRS_o_ai 531vec_vaddubs(vector bool char a, vector unsigned char b) 532{ 533 return __builtin_altivec_vaddubs((vector unsigned char)a, b); 534} 535 536static vector unsigned char __ATTRS_o_ai 537vec_vaddubs(vector unsigned char a, vector bool char b) 538{ 539 return __builtin_altivec_vaddubs(a, (vector unsigned char)b); 540} 541 542/* vec_vaddshs */ 543 544static vector short __ATTRS_o_ai 545vec_vaddshs(vector short a, vector short b) 546{ 547 return __builtin_altivec_vaddshs(a, b); 548} 549 550static vector short __ATTRS_o_ai 551vec_vaddshs(vector bool short a, vector short b) 552{ 553 return __builtin_altivec_vaddshs((vector short)a, b); 554} 555 556static vector short __ATTRS_o_ai 557vec_vaddshs(vector short a, vector bool short b) 558{ 559 return __builtin_altivec_vaddshs(a, (vector short)b); 560} 561 562/* vec_vadduhs */ 563 564static vector unsigned short __ATTRS_o_ai 565vec_vadduhs(vector unsigned short a, vector unsigned short b) 566{ 567 return __builtin_altivec_vadduhs(a, b); 568} 569 570static vector unsigned short __ATTRS_o_ai 571vec_vadduhs(vector bool short a, vector unsigned short b) 572{ 573 return __builtin_altivec_vadduhs((vector unsigned short)a, b); 574} 575 576static vector unsigned short __ATTRS_o_ai 577vec_vadduhs(vector unsigned short a, vector bool short b) 578{ 579 return __builtin_altivec_vadduhs(a, (vector unsigned short)b); 580} 581 582/* vec_vaddsws */ 583 584static vector int __ATTRS_o_ai 585vec_vaddsws(vector int a, vector int b) 586{ 587 return __builtin_altivec_vaddsws(a, b); 588} 589 590static vector int __ATTRS_o_ai 591vec_vaddsws(vector bool int a, vector int b) 592{ 593 return __builtin_altivec_vaddsws((vector int)a, b); 594} 595 596static vector int __ATTRS_o_ai 597vec_vaddsws(vector int a, vector bool int b) 598{ 599 return __builtin_altivec_vaddsws(a, (vector int)b); 600} 601 602/* vec_vadduws */ 603 604static vector unsigned int __ATTRS_o_ai 605vec_vadduws(vector unsigned int a, vector unsigned int b) 606{ 607 return __builtin_altivec_vadduws(a, b); 608} 609 610static vector unsigned int __ATTRS_o_ai 611vec_vadduws(vector bool int a, vector unsigned int b) 612{ 613 return __builtin_altivec_vadduws((vector unsigned int)a, b); 614} 615 616static vector unsigned int __ATTRS_o_ai 617vec_vadduws(vector unsigned int a, vector bool int b) 618{ 619 return __builtin_altivec_vadduws(a, (vector unsigned int)b); 620} 621 622/* vec_and */ 623 624#define __builtin_altivec_vand vec_and 625 626static vector signed char __ATTRS_o_ai 627vec_and(vector signed char a, vector signed char b) 628{ 629 return a & b; 630} 631 632static vector signed char __ATTRS_o_ai 633vec_and(vector bool char a, vector signed char b) 634{ 635 return (vector signed char)a & b; 636} 637 638static vector signed char __ATTRS_o_ai 639vec_and(vector signed char a, vector bool char b) 640{ 641 return a & (vector signed char)b; 642} 643 644static vector unsigned char __ATTRS_o_ai 645vec_and(vector unsigned char a, vector unsigned char b) 646{ 647 return a & b; 648} 649 650static vector unsigned char __ATTRS_o_ai 651vec_and(vector bool char a, vector unsigned char b) 652{ 653 return (vector unsigned char)a & b; 654} 655 656static vector unsigned char __ATTRS_o_ai 657vec_and(vector unsigned char a, vector bool char b) 658{ 659 return a & (vector unsigned char)b; 660} 661 662static vector bool char __ATTRS_o_ai 663vec_and(vector bool char a, vector bool char b) 664{ 665 return a & b; 666} 667 668static vector short __ATTRS_o_ai 669vec_and(vector short a, vector short b) 670{ 671 return a & b; 672} 673 674static vector short __ATTRS_o_ai 675vec_and(vector bool short a, vector short b) 676{ 677 return (vector short)a & b; 678} 679 680static vector short __ATTRS_o_ai 681vec_and(vector short a, vector bool short b) 682{ 683 return a & (vector short)b; 684} 685 686static vector unsigned short __ATTRS_o_ai 687vec_and(vector unsigned short a, vector unsigned short b) 688{ 689 return a & b; 690} 691 692static vector unsigned short __ATTRS_o_ai 693vec_and(vector bool short a, vector unsigned short b) 694{ 695 return (vector unsigned short)a & b; 696} 697 698static vector unsigned short __ATTRS_o_ai 699vec_and(vector unsigned short a, vector bool short b) 700{ 701 return a & (vector unsigned short)b; 702} 703 704static vector bool short __ATTRS_o_ai 705vec_and(vector bool short a, vector bool short b) 706{ 707 return a & b; 708} 709 710static vector int __ATTRS_o_ai 711vec_and(vector int a, vector int b) 712{ 713 return a & b; 714} 715 716static vector int __ATTRS_o_ai 717vec_and(vector bool int a, vector int b) 718{ 719 return (vector int)a & b; 720} 721 722static vector int __ATTRS_o_ai 723vec_and(vector int a, vector bool int b) 724{ 725 return a & (vector int)b; 726} 727 728static vector unsigned int __ATTRS_o_ai 729vec_and(vector unsigned int a, vector unsigned int b) 730{ 731 return a & b; 732} 733 734static vector unsigned int __ATTRS_o_ai 735vec_and(vector bool int a, vector unsigned int b) 736{ 737 return (vector unsigned int)a & b; 738} 739 740static vector unsigned int __ATTRS_o_ai 741vec_and(vector unsigned int a, vector bool int b) 742{ 743 return a & (vector unsigned int)b; 744} 745 746static vector bool int __ATTRS_o_ai 747vec_and(vector bool int a, vector bool int b) 748{ 749 return a & b; 750} 751 752static vector float __ATTRS_o_ai 753vec_and(vector float a, vector float b) 754{ 755 vector unsigned int res = (vector unsigned int)a & (vector unsigned int)b; 756 return (vector float)res; 757} 758 759static vector float __ATTRS_o_ai 760vec_and(vector bool int a, vector float b) 761{ 762 vector unsigned int res = (vector unsigned int)a & (vector unsigned int)b; 763 return (vector float)res; 764} 765 766static vector float __ATTRS_o_ai 767vec_and(vector float a, vector bool int b) 768{ 769 vector unsigned int res = (vector unsigned int)a & (vector unsigned int)b; 770 return (vector float)res; 771} 772 773/* vec_vand */ 774 775static vector signed char __ATTRS_o_ai 776vec_vand(vector signed char a, vector signed char b) 777{ 778 return a & b; 779} 780 781static vector signed char __ATTRS_o_ai 782vec_vand(vector bool char a, vector signed char b) 783{ 784 return (vector signed char)a & b; 785} 786 787static vector signed char __ATTRS_o_ai 788vec_vand(vector signed char a, vector bool char b) 789{ 790 return a & (vector signed char)b; 791} 792 793static vector unsigned char __ATTRS_o_ai 794vec_vand(vector unsigned char a, vector unsigned char b) 795{ 796 return a & b; 797} 798 799static vector unsigned char __ATTRS_o_ai 800vec_vand(vector bool char a, vector unsigned char b) 801{ 802 return (vector unsigned char)a & b; 803} 804 805static vector unsigned char __ATTRS_o_ai 806vec_vand(vector unsigned char a, vector bool char b) 807{ 808 return a & (vector unsigned char)b; 809} 810 811static vector bool char __ATTRS_o_ai 812vec_vand(vector bool char a, vector bool char b) 813{ 814 return a & b; 815} 816 817static vector short __ATTRS_o_ai 818vec_vand(vector short a, vector short b) 819{ 820 return a & b; 821} 822 823static vector short __ATTRS_o_ai 824vec_vand(vector bool short a, vector short b) 825{ 826 return (vector short)a & b; 827} 828 829static vector short __ATTRS_o_ai 830vec_vand(vector short a, vector bool short b) 831{ 832 return a & (vector short)b; 833} 834 835static vector unsigned short __ATTRS_o_ai 836vec_vand(vector unsigned short a, vector unsigned short b) 837{ 838 return a & b; 839} 840 841static vector unsigned short __ATTRS_o_ai 842vec_vand(vector bool short a, vector unsigned short b) 843{ 844 return (vector unsigned short)a & b; 845} 846 847static vector unsigned short __ATTRS_o_ai 848vec_vand(vector unsigned short a, vector bool short b) 849{ 850 return a & (vector unsigned short)b; 851} 852 853static vector bool short __ATTRS_o_ai 854vec_vand(vector bool short a, vector bool short b) 855{ 856 return a & b; 857} 858 859static vector int __ATTRS_o_ai 860vec_vand(vector int a, vector int b) 861{ 862 return a & b; 863} 864 865static vector int __ATTRS_o_ai 866vec_vand(vector bool int a, vector int b) 867{ 868 return (vector int)a & b; 869} 870 871static vector int __ATTRS_o_ai 872vec_vand(vector int a, vector bool int b) 873{ 874 return a & (vector int)b; 875} 876 877static vector unsigned int __ATTRS_o_ai 878vec_vand(vector unsigned int a, vector unsigned int b) 879{ 880 return a & b; 881} 882 883static vector unsigned int __ATTRS_o_ai 884vec_vand(vector bool int a, vector unsigned int b) 885{ 886 return (vector unsigned int)a & b; 887} 888 889static vector unsigned int __ATTRS_o_ai 890vec_vand(vector unsigned int a, vector bool int b) 891{ 892 return a & (vector unsigned int)b; 893} 894 895static vector bool int __ATTRS_o_ai 896vec_vand(vector bool int a, vector bool int b) 897{ 898 return a & b; 899} 900 901static vector float __ATTRS_o_ai 902vec_vand(vector float a, vector float b) 903{ 904 vector unsigned int res = (vector unsigned int)a & (vector unsigned int)b; 905 return (vector float)res; 906} 907 908static vector float __ATTRS_o_ai 909vec_vand(vector bool int a, vector float b) 910{ 911 vector unsigned int res = (vector unsigned int)a & (vector unsigned int)b; 912 return (vector float)res; 913} 914 915static vector float __ATTRS_o_ai 916vec_vand(vector float a, vector bool int b) 917{ 918 vector unsigned int res = (vector unsigned int)a & (vector unsigned int)b; 919 return (vector float)res; 920} 921 922/* vec_andc */ 923 924#define __builtin_altivec_vandc vec_andc 925 926static vector signed char __ATTRS_o_ai 927vec_andc(vector signed char a, vector signed char b) 928{ 929 return a & ~b; 930} 931 932static vector signed char __ATTRS_o_ai 933vec_andc(vector bool char a, vector signed char b) 934{ 935 return (vector signed char)a & ~b; 936} 937 938static vector signed char __ATTRS_o_ai 939vec_andc(vector signed char a, vector bool char b) 940{ 941 return a & ~(vector signed char)b; 942} 943 944static vector unsigned char __ATTRS_o_ai 945vec_andc(vector unsigned char a, vector unsigned char b) 946{ 947 return a & ~b; 948} 949 950static vector unsigned char __ATTRS_o_ai 951vec_andc(vector bool char a, vector unsigned char b) 952{ 953 return (vector unsigned char)a & ~b; 954} 955 956static vector unsigned char __ATTRS_o_ai 957vec_andc(vector unsigned char a, vector bool char b) 958{ 959 return a & ~(vector unsigned char)b; 960} 961 962static vector bool char __ATTRS_o_ai 963vec_andc(vector bool char a, vector bool char b) 964{ 965 return a & ~b; 966} 967 968static vector short __ATTRS_o_ai 969vec_andc(vector short a, vector short b) 970{ 971 return a & ~b; 972} 973 974static vector short __ATTRS_o_ai 975vec_andc(vector bool short a, vector short b) 976{ 977 return (vector short)a & ~b; 978} 979 980static vector short __ATTRS_o_ai 981vec_andc(vector short a, vector bool short b) 982{ 983 return a & ~(vector short)b; 984} 985 986static vector unsigned short __ATTRS_o_ai 987vec_andc(vector unsigned short a, vector unsigned short b) 988{ 989 return a & ~b; 990} 991 992static vector unsigned short __ATTRS_o_ai 993vec_andc(vector bool short a, vector unsigned short b) 994{ 995 return (vector unsigned short)a & ~b; 996} 997 998static vector unsigned short __ATTRS_o_ai 999vec_andc(vector unsigned short a, vector bool short b) 1000{ 1001 return a & ~(vector unsigned short)b; 1002} 1003 1004static vector bool short __ATTRS_o_ai 1005vec_andc(vector bool short a, vector bool short b) 1006{ 1007 return a & ~b; 1008} 1009 1010static vector int __ATTRS_o_ai 1011vec_andc(vector int a, vector int b) 1012{ 1013 return a & ~b; 1014} 1015 1016static vector int __ATTRS_o_ai 1017vec_andc(vector bool int a, vector int b) 1018{ 1019 return (vector int)a & ~b; 1020} 1021 1022static vector int __ATTRS_o_ai 1023vec_andc(vector int a, vector bool int b) 1024{ 1025 return a & ~(vector int)b; 1026} 1027 1028static vector unsigned int __ATTRS_o_ai 1029vec_andc(vector unsigned int a, vector unsigned int b) 1030{ 1031 return a & ~b; 1032} 1033 1034static vector unsigned int __ATTRS_o_ai 1035vec_andc(vector bool int a, vector unsigned int b) 1036{ 1037 return (vector unsigned int)a & ~b; 1038} 1039 1040static vector unsigned int __ATTRS_o_ai 1041vec_andc(vector unsigned int a, vector bool int b) 1042{ 1043 return a & ~(vector unsigned int)b; 1044} 1045 1046static vector bool int __ATTRS_o_ai 1047vec_andc(vector bool int a, vector bool int b) 1048{ 1049 return a & ~b; 1050} 1051 1052static vector float __ATTRS_o_ai 1053vec_andc(vector float a, vector float b) 1054{ 1055 vector unsigned int res = (vector unsigned int)a & ~(vector unsigned int)b; 1056 return (vector float)res; 1057} 1058 1059static vector float __ATTRS_o_ai 1060vec_andc(vector bool int a, vector float b) 1061{ 1062 vector unsigned int res = (vector unsigned int)a & ~(vector unsigned int)b; 1063 return (vector float)res; 1064} 1065 1066static vector float __ATTRS_o_ai 1067vec_andc(vector float a, vector bool int b) 1068{ 1069 vector unsigned int res = (vector unsigned int)a & ~(vector unsigned int)b; 1070 return (vector float)res; 1071} 1072 1073/* vec_vandc */ 1074 1075static vector signed char __ATTRS_o_ai 1076vec_vandc(vector signed char a, vector signed char b) 1077{ 1078 return a & ~b; 1079} 1080 1081static vector signed char __ATTRS_o_ai 1082vec_vandc(vector bool char a, vector signed char b) 1083{ 1084 return (vector signed char)a & ~b; 1085} 1086 1087static vector signed char __ATTRS_o_ai 1088vec_vandc(vector signed char a, vector bool char b) 1089{ 1090 return a & ~(vector signed char)b; 1091} 1092 1093static vector unsigned char __ATTRS_o_ai 1094vec_vandc(vector unsigned char a, vector unsigned char b) 1095{ 1096 return a & ~b; 1097} 1098 1099static vector unsigned char __ATTRS_o_ai 1100vec_vandc(vector bool char a, vector unsigned char b) 1101{ 1102 return (vector unsigned char)a & ~b; 1103} 1104 1105static vector unsigned char __ATTRS_o_ai 1106vec_vandc(vector unsigned char a, vector bool char b) 1107{ 1108 return a & ~(vector unsigned char)b; 1109} 1110 1111static vector bool char __ATTRS_o_ai 1112vec_vandc(vector bool char a, vector bool char b) 1113{ 1114 return a & ~b; 1115} 1116 1117static vector short __ATTRS_o_ai 1118vec_vandc(vector short a, vector short b) 1119{ 1120 return a & ~b; 1121} 1122 1123static vector short __ATTRS_o_ai 1124vec_vandc(vector bool short a, vector short b) 1125{ 1126 return (vector short)a & ~b; 1127} 1128 1129static vector short __ATTRS_o_ai 1130vec_vandc(vector short a, vector bool short b) 1131{ 1132 return a & ~(vector short)b; 1133} 1134 1135static vector unsigned short __ATTRS_o_ai 1136vec_vandc(vector unsigned short a, vector unsigned short b) 1137{ 1138 return a & ~b; 1139} 1140 1141static vector unsigned short __ATTRS_o_ai 1142vec_vandc(vector bool short a, vector unsigned short b) 1143{ 1144 return (vector unsigned short)a & ~b; 1145} 1146 1147static vector unsigned short __ATTRS_o_ai 1148vec_vandc(vector unsigned short a, vector bool short b) 1149{ 1150 return a & ~(vector unsigned short)b; 1151} 1152 1153static vector bool short __ATTRS_o_ai 1154vec_vandc(vector bool short a, vector bool short b) 1155{ 1156 return a & ~b; 1157} 1158 1159static vector int __ATTRS_o_ai 1160vec_vandc(vector int a, vector int b) 1161{ 1162 return a & ~b; 1163} 1164 1165static vector int __ATTRS_o_ai 1166vec_vandc(vector bool int a, vector int b) 1167{ 1168 return (vector int)a & ~b; 1169} 1170 1171static vector int __ATTRS_o_ai 1172vec_vandc(vector int a, vector bool int b) 1173{ 1174 return a & ~(vector int)b; 1175} 1176 1177static vector unsigned int __ATTRS_o_ai 1178vec_vandc(vector unsigned int a, vector unsigned int b) 1179{ 1180 return a & ~b; 1181} 1182 1183static vector unsigned int __ATTRS_o_ai 1184vec_vandc(vector bool int a, vector unsigned int b) 1185{ 1186 return (vector unsigned int)a & ~b; 1187} 1188 1189static vector unsigned int __ATTRS_o_ai 1190vec_vandc(vector unsigned int a, vector bool int b) 1191{ 1192 return a & ~(vector unsigned int)b; 1193} 1194 1195static vector bool int __ATTRS_o_ai 1196vec_vandc(vector bool int a, vector bool int b) 1197{ 1198 return a & ~b; 1199} 1200 1201static vector float __ATTRS_o_ai 1202vec_vandc(vector float a, vector float b) 1203{ 1204 vector unsigned int res = (vector unsigned int)a & ~(vector unsigned int)b; 1205 return (vector float)res; 1206} 1207 1208static vector float __ATTRS_o_ai 1209vec_vandc(vector bool int a, vector float b) 1210{ 1211 vector unsigned int res = (vector unsigned int)a & ~(vector unsigned int)b; 1212 return (vector float)res; 1213} 1214 1215static vector float __ATTRS_o_ai 1216vec_vandc(vector float a, vector bool int b) 1217{ 1218 vector unsigned int res = (vector unsigned int)a & ~(vector unsigned int)b; 1219 return (vector float)res; 1220} 1221 1222/* vec_avg */ 1223 1224static vector signed char __ATTRS_o_ai 1225vec_avg(vector signed char a, vector signed char b) 1226{ 1227 return __builtin_altivec_vavgsb(a, b); 1228} 1229 1230static vector unsigned char __ATTRS_o_ai 1231vec_avg(vector unsigned char a, vector unsigned char b) 1232{ 1233 return __builtin_altivec_vavgub(a, b); 1234} 1235 1236static vector short __ATTRS_o_ai 1237vec_avg(vector short a, vector short b) 1238{ 1239 return __builtin_altivec_vavgsh(a, b); 1240} 1241 1242static vector unsigned short __ATTRS_o_ai 1243vec_avg(vector unsigned short a, vector unsigned short b) 1244{ 1245 return __builtin_altivec_vavguh(a, b); 1246} 1247 1248static vector int __ATTRS_o_ai 1249vec_avg(vector int a, vector int b) 1250{ 1251 return __builtin_altivec_vavgsw(a, b); 1252} 1253 1254static vector unsigned int __ATTRS_o_ai 1255vec_avg(vector unsigned int a, vector unsigned int b) 1256{ 1257 return __builtin_altivec_vavguw(a, b); 1258} 1259 1260/* vec_vavgsb */ 1261 1262static vector signed char __attribute__((__always_inline__)) 1263vec_vavgsb(vector signed char a, vector signed char b) 1264{ 1265 return __builtin_altivec_vavgsb(a, b); 1266} 1267 1268/* vec_vavgub */ 1269 1270static vector unsigned char __attribute__((__always_inline__)) 1271vec_vavgub(vector unsigned char a, vector unsigned char b) 1272{ 1273 return __builtin_altivec_vavgub(a, b); 1274} 1275 1276/* vec_vavgsh */ 1277 1278static vector short __attribute__((__always_inline__)) 1279vec_vavgsh(vector short a, vector short b) 1280{ 1281 return __builtin_altivec_vavgsh(a, b); 1282} 1283 1284/* vec_vavguh */ 1285 1286static vector unsigned short __attribute__((__always_inline__)) 1287vec_vavguh(vector unsigned short a, vector unsigned short b) 1288{ 1289 return __builtin_altivec_vavguh(a, b); 1290} 1291 1292/* vec_vavgsw */ 1293 1294static vector int __attribute__((__always_inline__)) 1295vec_vavgsw(vector int a, vector int b) 1296{ 1297 return __builtin_altivec_vavgsw(a, b); 1298} 1299 1300/* vec_vavguw */ 1301 1302static vector unsigned int __attribute__((__always_inline__)) 1303vec_vavguw(vector unsigned int a, vector unsigned int b) 1304{ 1305 return __builtin_altivec_vavguw(a, b); 1306} 1307 1308/* vec_ceil */ 1309 1310static vector float __attribute__((__always_inline__)) 1311vec_ceil(vector float a) 1312{ 1313 return __builtin_altivec_vrfip(a); 1314} 1315 1316/* vec_vrfip */ 1317 1318static vector float __attribute__((__always_inline__)) 1319vec_vrfip(vector float a) 1320{ 1321 return __builtin_altivec_vrfip(a); 1322} 1323 1324/* vec_cmpb */ 1325 1326static vector int __attribute__((__always_inline__)) 1327vec_cmpb(vector float a, vector float b) 1328{ 1329 return __builtin_altivec_vcmpbfp(a, b); 1330} 1331 1332/* vec_vcmpbfp */ 1333 1334static vector int __attribute__((__always_inline__)) 1335vec_vcmpbfp(vector float a, vector float b) 1336{ 1337 return __builtin_altivec_vcmpbfp(a, b); 1338} 1339 1340/* vec_cmpeq */ 1341 1342static vector bool char __ATTRS_o_ai 1343vec_cmpeq(vector signed char a, vector signed char b) 1344{ 1345 return (vector bool char) 1346 __builtin_altivec_vcmpequb((vector char)a, (vector char)b); 1347} 1348 1349static vector bool char __ATTRS_o_ai 1350vec_cmpeq(vector unsigned char a, vector unsigned char b) 1351{ 1352 return (vector bool char) 1353 __builtin_altivec_vcmpequb((vector char)a, (vector char)b); 1354} 1355 1356static vector bool short __ATTRS_o_ai 1357vec_cmpeq(vector short a, vector short b) 1358{ 1359 return (vector bool short)__builtin_altivec_vcmpequh(a, b); 1360} 1361 1362static vector bool short __ATTRS_o_ai 1363vec_cmpeq(vector unsigned short a, vector unsigned short b) 1364{ 1365 return (vector bool short) 1366 __builtin_altivec_vcmpequh((vector short)a, (vector short)b); 1367} 1368 1369static vector bool int __ATTRS_o_ai 1370vec_cmpeq(vector int a, vector int b) 1371{ 1372 return (vector bool int)__builtin_altivec_vcmpequw(a, b); 1373} 1374 1375static vector bool int __ATTRS_o_ai 1376vec_cmpeq(vector unsigned int a, vector unsigned int b) 1377{ 1378 return (vector bool int) 1379 __builtin_altivec_vcmpequw((vector int)a, (vector int)b); 1380} 1381 1382static vector bool int __ATTRS_o_ai 1383vec_cmpeq(vector float a, vector float b) 1384{ 1385 return (vector bool int)__builtin_altivec_vcmpeqfp(a, b); 1386} 1387 1388/* vec_cmpge */ 1389 1390static vector bool int __attribute__((__always_inline__)) 1391vec_cmpge(vector float a, vector float b) 1392{ 1393 return (vector bool int)__builtin_altivec_vcmpgefp(a, b); 1394} 1395 1396/* vec_vcmpgefp */ 1397 1398static vector bool int __attribute__((__always_inline__)) 1399vec_vcmpgefp(vector float a, vector float b) 1400{ 1401 return (vector bool int)__builtin_altivec_vcmpgefp(a, b); 1402} 1403 1404/* vec_cmpgt */ 1405 1406static vector bool char __ATTRS_o_ai 1407vec_cmpgt(vector signed char a, vector signed char b) 1408{ 1409 return (vector bool char)__builtin_altivec_vcmpgtsb(a, b); 1410} 1411 1412static vector bool char __ATTRS_o_ai 1413vec_cmpgt(vector unsigned char a, vector unsigned char b) 1414{ 1415 return (vector bool char)__builtin_altivec_vcmpgtub(a, b); 1416} 1417 1418static vector bool short __ATTRS_o_ai 1419vec_cmpgt(vector short a, vector short b) 1420{ 1421 return (vector bool short)__builtin_altivec_vcmpgtsh(a, b); 1422} 1423 1424static vector bool short __ATTRS_o_ai 1425vec_cmpgt(vector unsigned short a, vector unsigned short b) 1426{ 1427 return (vector bool short)__builtin_altivec_vcmpgtuh(a, b); 1428} 1429 1430static vector bool int __ATTRS_o_ai 1431vec_cmpgt(vector int a, vector int b) 1432{ 1433 return (vector bool int)__builtin_altivec_vcmpgtsw(a, b); 1434} 1435 1436static vector bool int __ATTRS_o_ai 1437vec_cmpgt(vector unsigned int a, vector unsigned int b) 1438{ 1439 return (vector bool int)__builtin_altivec_vcmpgtuw(a, b); 1440} 1441 1442static vector bool int __ATTRS_o_ai 1443vec_cmpgt(vector float a, vector float b) 1444{ 1445 return (vector bool int)__builtin_altivec_vcmpgtfp(a, b); 1446} 1447 1448/* vec_vcmpgtsb */ 1449 1450static vector bool char __attribute__((__always_inline__)) 1451vec_vcmpgtsb(vector signed char a, vector signed char b) 1452{ 1453 return (vector bool char)__builtin_altivec_vcmpgtsb(a, b); 1454} 1455 1456/* vec_vcmpgtub */ 1457 1458static vector bool char __attribute__((__always_inline__)) 1459vec_vcmpgtub(vector unsigned char a, vector unsigned char b) 1460{ 1461 return (vector bool char)__builtin_altivec_vcmpgtub(a, b); 1462} 1463 1464/* vec_vcmpgtsh */ 1465 1466static vector bool short __attribute__((__always_inline__)) 1467vec_vcmpgtsh(vector short a, vector short b) 1468{ 1469 return (vector bool short)__builtin_altivec_vcmpgtsh(a, b); 1470} 1471 1472/* vec_vcmpgtuh */ 1473 1474static vector bool short __attribute__((__always_inline__)) 1475vec_vcmpgtuh(vector unsigned short a, vector unsigned short b) 1476{ 1477 return (vector bool short)__builtin_altivec_vcmpgtuh(a, b); 1478} 1479 1480/* vec_vcmpgtsw */ 1481 1482static vector bool int __attribute__((__always_inline__)) 1483vec_vcmpgtsw(vector int a, vector int b) 1484{ 1485 return (vector bool int)__builtin_altivec_vcmpgtsw(a, b); 1486} 1487 1488/* vec_vcmpgtuw */ 1489 1490static vector bool int __attribute__((__always_inline__)) 1491vec_vcmpgtuw(vector unsigned int a, vector unsigned int b) 1492{ 1493 return (vector bool int)__builtin_altivec_vcmpgtuw(a, b); 1494} 1495 1496/* vec_vcmpgtfp */ 1497 1498static vector bool int __attribute__((__always_inline__)) 1499vec_vcmpgtfp(vector float a, vector float b) 1500{ 1501 return (vector bool int)__builtin_altivec_vcmpgtfp(a, b); 1502} 1503 1504/* vec_cmple */ 1505 1506static vector bool int __attribute__((__always_inline__)) 1507vec_cmple(vector float a, vector float b) 1508{ 1509 return (vector bool int)__builtin_altivec_vcmpgefp(b, a); 1510} 1511 1512/* vec_cmplt */ 1513 1514static vector bool char __ATTRS_o_ai 1515vec_cmplt(vector signed char a, vector signed char b) 1516{ 1517 return (vector bool char)__builtin_altivec_vcmpgtsb(b, a); 1518} 1519 1520static vector bool char __ATTRS_o_ai 1521vec_cmplt(vector unsigned char a, vector unsigned char b) 1522{ 1523 return (vector bool char)__builtin_altivec_vcmpgtub(b, a); 1524} 1525 1526static vector bool short __ATTRS_o_ai 1527vec_cmplt(vector short a, vector short b) 1528{ 1529 return (vector bool short)__builtin_altivec_vcmpgtsh(b, a); 1530} 1531 1532static vector bool short __ATTRS_o_ai 1533vec_cmplt(vector unsigned short a, vector unsigned short b) 1534{ 1535 return (vector bool short)__builtin_altivec_vcmpgtuh(b, a); 1536} 1537 1538static vector bool int __ATTRS_o_ai 1539vec_cmplt(vector int a, vector int b) 1540{ 1541 return (vector bool int)__builtin_altivec_vcmpgtsw(b, a); 1542} 1543 1544static vector bool int __ATTRS_o_ai 1545vec_cmplt(vector unsigned int a, vector unsigned int b) 1546{ 1547 return (vector bool int)__builtin_altivec_vcmpgtuw(b, a); 1548} 1549 1550static vector bool int __ATTRS_o_ai 1551vec_cmplt(vector float a, vector float b) 1552{ 1553 return (vector bool int)__builtin_altivec_vcmpgtfp(b, a); 1554} 1555 1556/* vec_ctf */ 1557 1558static vector float __ATTRS_o_ai 1559vec_ctf(vector int a, int b) 1560{ 1561 return __builtin_altivec_vcfsx(a, b); 1562} 1563 1564static vector float __ATTRS_o_ai 1565vec_ctf(vector unsigned int a, int b) 1566{ 1567 return __builtin_altivec_vcfux((vector int)a, b); 1568} 1569 1570/* vec_vcfsx */ 1571 1572static vector float __attribute__((__always_inline__)) 1573vec_vcfsx(vector int a, int b) 1574{ 1575 return __builtin_altivec_vcfsx(a, b); 1576} 1577 1578/* vec_vcfux */ 1579 1580static vector float __attribute__((__always_inline__)) 1581vec_vcfux(vector unsigned int a, int b) 1582{ 1583 return __builtin_altivec_vcfux((vector int)a, b); 1584} 1585 1586/* vec_cts */ 1587 1588static vector int __attribute__((__always_inline__)) 1589vec_cts(vector float a, int b) 1590{ 1591 return __builtin_altivec_vctsxs(a, b); 1592} 1593 1594/* vec_vctsxs */ 1595 1596static vector int __attribute__((__always_inline__)) 1597vec_vctsxs(vector float a, int b) 1598{ 1599 return __builtin_altivec_vctsxs(a, b); 1600} 1601 1602/* vec_ctu */ 1603 1604static vector unsigned int __attribute__((__always_inline__)) 1605vec_ctu(vector float a, int b) 1606{ 1607 return __builtin_altivec_vctuxs(a, b); 1608} 1609 1610/* vec_vctuxs */ 1611 1612static vector unsigned int __attribute__((__always_inline__)) 1613vec_vctuxs(vector float a, int b) 1614{ 1615 return __builtin_altivec_vctuxs(a, b); 1616} 1617 1618/* vec_dss */ 1619 1620static void __attribute__((__always_inline__)) 1621vec_dss(int a) 1622{ 1623 __builtin_altivec_dss(a); 1624} 1625 1626/* vec_dssall */ 1627 1628static void __attribute__((__always_inline__)) 1629vec_dssall(void) 1630{ 1631 __builtin_altivec_dssall(); 1632} 1633 1634/* vec_dst */ 1635 1636static void __attribute__((__always_inline__)) 1637vec_dst(void *a, int b, int c) 1638{ 1639 __builtin_altivec_dst(a, b, c); 1640} 1641 1642/* vec_dstst */ 1643 1644static void __attribute__((__always_inline__)) 1645vec_dstst(void *a, int b, int c) 1646{ 1647 __builtin_altivec_dstst(a, b, c); 1648} 1649 1650/* vec_dststt */ 1651 1652static void __attribute__((__always_inline__)) 1653vec_dststt(void *a, int b, int c) 1654{ 1655 __builtin_altivec_dststt(a, b, c); 1656} 1657 1658/* vec_dstt */ 1659 1660static void __attribute__((__always_inline__)) 1661vec_dstt(void *a, int b, int c) 1662{ 1663 __builtin_altivec_dstt(a, b, c); 1664} 1665 1666/* vec_expte */ 1667 1668static vector float __attribute__((__always_inline__)) 1669vec_expte(vector float a) 1670{ 1671 return __builtin_altivec_vexptefp(a); 1672} 1673 1674/* vec_vexptefp */ 1675 1676static vector float __attribute__((__always_inline__)) 1677vec_vexptefp(vector float a) 1678{ 1679 return __builtin_altivec_vexptefp(a); 1680} 1681 1682/* vec_floor */ 1683 1684static vector float __attribute__((__always_inline__)) 1685vec_floor(vector float a) 1686{ 1687 return __builtin_altivec_vrfim(a); 1688} 1689 1690/* vec_vrfim */ 1691 1692static vector float __attribute__((__always_inline__)) 1693vec_vrfim(vector float a) 1694{ 1695 return __builtin_altivec_vrfim(a); 1696} 1697 1698/* vec_ld */ 1699 1700static vector signed char __ATTRS_o_ai 1701vec_ld(int a, vector signed char *b) 1702{ 1703 return (vector signed char)__builtin_altivec_lvx(a, b); 1704} 1705 1706static vector signed char __ATTRS_o_ai 1707vec_ld(int a, signed char *b) 1708{ 1709 return (vector signed char)__builtin_altivec_lvx(a, b); 1710} 1711 1712static vector unsigned char __ATTRS_o_ai 1713vec_ld(int a, vector unsigned char *b) 1714{ 1715 return (vector unsigned char)__builtin_altivec_lvx(a, b); 1716} 1717 1718static vector unsigned char __ATTRS_o_ai 1719vec_ld(int a, unsigned char *b) 1720{ 1721 return (vector unsigned char)__builtin_altivec_lvx(a, b); 1722} 1723 1724static vector bool char __ATTRS_o_ai 1725vec_ld(int a, vector bool char *b) 1726{ 1727 return (vector bool char)__builtin_altivec_lvx(a, b); 1728} 1729 1730static vector short __ATTRS_o_ai 1731vec_ld(int a, vector short *b) 1732{ 1733 return (vector short)__builtin_altivec_lvx(a, b); 1734} 1735 1736static vector short __ATTRS_o_ai 1737vec_ld(int a, short *b) 1738{ 1739 return (vector short)__builtin_altivec_lvx(a, b); 1740} 1741 1742static vector unsigned short __ATTRS_o_ai 1743vec_ld(int a, vector unsigned short *b) 1744{ 1745 return (vector unsigned short)__builtin_altivec_lvx(a, b); 1746} 1747 1748static vector unsigned short __ATTRS_o_ai 1749vec_ld(int a, unsigned short *b) 1750{ 1751 return (vector unsigned short)__builtin_altivec_lvx(a, b); 1752} 1753 1754static vector bool short __ATTRS_o_ai 1755vec_ld(int a, vector bool short *b) 1756{ 1757 return (vector bool short)__builtin_altivec_lvx(a, b); 1758} 1759 1760static vector pixel __ATTRS_o_ai 1761vec_ld(int a, vector pixel *b) 1762{ 1763 return (vector pixel)__builtin_altivec_lvx(a, b); 1764} 1765 1766static vector int __ATTRS_o_ai 1767vec_ld(int a, vector int *b) 1768{ 1769 return (vector int)__builtin_altivec_lvx(a, b); 1770} 1771 1772static vector int __ATTRS_o_ai 1773vec_ld(int a, int *b) 1774{ 1775 return (vector int)__builtin_altivec_lvx(a, b); 1776} 1777 1778static vector unsigned int __ATTRS_o_ai 1779vec_ld(int a, vector unsigned int *b) 1780{ 1781 return (vector unsigned int)__builtin_altivec_lvx(a, b); 1782} 1783 1784static vector unsigned int __ATTRS_o_ai 1785vec_ld(int a, unsigned int *b) 1786{ 1787 return (vector unsigned int)__builtin_altivec_lvx(a, b); 1788} 1789 1790static vector bool int __ATTRS_o_ai 1791vec_ld(int a, vector bool int *b) 1792{ 1793 return (vector bool int)__builtin_altivec_lvx(a, b); 1794} 1795 1796static vector float __ATTRS_o_ai 1797vec_ld(int a, vector float *b) 1798{ 1799 return (vector float)__builtin_altivec_lvx(a, b); 1800} 1801 1802static vector float __ATTRS_o_ai 1803vec_ld(int a, float *b) 1804{ 1805 return (vector float)__builtin_altivec_lvx(a, b); 1806} 1807 1808/* vec_lvx */ 1809 1810static vector signed char __ATTRS_o_ai 1811vec_lvx(int a, vector signed char *b) 1812{ 1813 return (vector signed char)__builtin_altivec_lvx(a, b); 1814} 1815 1816static vector signed char __ATTRS_o_ai 1817vec_lvx(int a, signed char *b) 1818{ 1819 return (vector signed char)__builtin_altivec_lvx(a, b); 1820} 1821 1822static vector unsigned char __ATTRS_o_ai 1823vec_lvx(int a, vector unsigned char *b) 1824{ 1825 return (vector unsigned char)__builtin_altivec_lvx(a, b); 1826} 1827 1828static vector unsigned char __ATTRS_o_ai 1829vec_lvx(int a, unsigned char *b) 1830{ 1831 return (vector unsigned char)__builtin_altivec_lvx(a, b); 1832} 1833 1834static vector bool char __ATTRS_o_ai 1835vec_lvx(int a, vector bool char *b) 1836{ 1837 return (vector bool char)__builtin_altivec_lvx(a, b); 1838} 1839 1840static vector short __ATTRS_o_ai 1841vec_lvx(int a, vector short *b) 1842{ 1843 return (vector short)__builtin_altivec_lvx(a, b); 1844} 1845 1846static vector short __ATTRS_o_ai 1847vec_lvx(int a, short *b) 1848{ 1849 return (vector short)__builtin_altivec_lvx(a, b); 1850} 1851 1852static vector unsigned short __ATTRS_o_ai 1853vec_lvx(int a, vector unsigned short *b) 1854{ 1855 return (vector unsigned short)__builtin_altivec_lvx(a, b); 1856} 1857 1858static vector unsigned short __ATTRS_o_ai 1859vec_lvx(int a, unsigned short *b) 1860{ 1861 return (vector unsigned short)__builtin_altivec_lvx(a, b); 1862} 1863 1864static vector bool short __ATTRS_o_ai 1865vec_lvx(int a, vector bool short *b) 1866{ 1867 return (vector bool short)__builtin_altivec_lvx(a, b); 1868} 1869 1870static vector pixel __ATTRS_o_ai 1871vec_lvx(int a, vector pixel *b) 1872{ 1873 return (vector pixel)__builtin_altivec_lvx(a, b); 1874} 1875 1876static vector int __ATTRS_o_ai 1877vec_lvx(int a, vector int *b) 1878{ 1879 return (vector int)__builtin_altivec_lvx(a, b); 1880} 1881 1882static vector int __ATTRS_o_ai 1883vec_lvx(int a, int *b) 1884{ 1885 return (vector int)__builtin_altivec_lvx(a, b); 1886} 1887 1888static vector unsigned int __ATTRS_o_ai 1889vec_lvx(int a, vector unsigned int *b) 1890{ 1891 return (vector unsigned int)__builtin_altivec_lvx(a, b); 1892} 1893 1894static vector unsigned int __ATTRS_o_ai 1895vec_lvx(int a, unsigned int *b) 1896{ 1897 return (vector unsigned int)__builtin_altivec_lvx(a, b); 1898} 1899 1900static vector bool int __ATTRS_o_ai 1901vec_lvx(int a, vector bool int *b) 1902{ 1903 return (vector bool int)__builtin_altivec_lvx(a, b); 1904} 1905 1906static vector float __ATTRS_o_ai 1907vec_lvx(int a, vector float *b) 1908{ 1909 return (vector float)__builtin_altivec_lvx(a, b); 1910} 1911 1912static vector float __ATTRS_o_ai 1913vec_lvx(int a, float *b) 1914{ 1915 return (vector float)__builtin_altivec_lvx(a, b); 1916} 1917 1918/* vec_lde */ 1919 1920static vector signed char __ATTRS_o_ai 1921vec_lde(int a, vector signed char *b) 1922{ 1923 return (vector signed char)__builtin_altivec_lvebx(a, b); 1924} 1925 1926static vector unsigned char __ATTRS_o_ai 1927vec_lde(int a, vector unsigned char *b) 1928{ 1929 return (vector unsigned char)__builtin_altivec_lvebx(a, b); 1930} 1931 1932static vector short __ATTRS_o_ai 1933vec_lde(int a, vector short *b) 1934{ 1935 return (vector short)__builtin_altivec_lvehx(a, b); 1936} 1937 1938static vector unsigned short __ATTRS_o_ai 1939vec_lde(int a, vector unsigned short *b) 1940{ 1941 return (vector unsigned short)__builtin_altivec_lvehx(a, b); 1942} 1943 1944static vector int __ATTRS_o_ai 1945vec_lde(int a, vector int *b) 1946{ 1947 return (vector int)__builtin_altivec_lvewx(a, b); 1948} 1949 1950static vector unsigned int __ATTRS_o_ai 1951vec_lde(int a, vector unsigned int *b) 1952{ 1953 return (vector unsigned int)__builtin_altivec_lvewx(a, b); 1954} 1955 1956static vector float __ATTRS_o_ai 1957vec_lde(int a, vector float *b) 1958{ 1959 return (vector float)__builtin_altivec_lvewx(a, b); 1960} 1961 1962/* vec_lvebx */ 1963 1964static vector signed char __ATTRS_o_ai 1965vec_lvebx(int a, vector signed char *b) 1966{ 1967 return (vector signed char)__builtin_altivec_lvebx(a, b); 1968} 1969 1970static vector unsigned char __ATTRS_o_ai 1971vec_lvebx(int a, vector unsigned char *b) 1972{ 1973 return (vector unsigned char)__builtin_altivec_lvebx(a, b); 1974} 1975 1976/* vec_lvehx */ 1977 1978static vector short __ATTRS_o_ai 1979vec_lvehx(int a, vector short *b) 1980{ 1981 return (vector short)__builtin_altivec_lvehx(a, b); 1982} 1983 1984static vector unsigned short __ATTRS_o_ai 1985vec_lvehx(int a, vector unsigned short *b) 1986{ 1987 return (vector unsigned short)__builtin_altivec_lvehx(a, b); 1988} 1989 1990/* vec_lvewx */ 1991 1992static vector int __ATTRS_o_ai 1993vec_lvewx(int a, vector int *b) 1994{ 1995 return (vector int)__builtin_altivec_lvewx(a, b); 1996} 1997 1998static vector unsigned int __ATTRS_o_ai 1999vec_lvewx(int a, vector unsigned int *b) 2000{ 2001 return (vector unsigned int)__builtin_altivec_lvewx(a, b); 2002} 2003 2004static vector float __ATTRS_o_ai 2005vec_lvewx(int a, vector float *b) 2006{ 2007 return (vector float)__builtin_altivec_lvewx(a, b); 2008} 2009 2010/* vec_ldl */ 2011 2012static vector signed char __ATTRS_o_ai 2013vec_ldl(int a, vector signed char *b) 2014{ 2015 return (vector signed char)__builtin_altivec_lvxl(a, b); 2016} 2017 2018static vector signed char __ATTRS_o_ai 2019vec_ldl(int a, signed char *b) 2020{ 2021 return (vector signed char)__builtin_altivec_lvxl(a, b); 2022} 2023 2024static vector unsigned char __ATTRS_o_ai 2025vec_ldl(int a, vector unsigned char *b) 2026{ 2027 return (vector unsigned char)__builtin_altivec_lvxl(a, b); 2028} 2029 2030static vector unsigned char __ATTRS_o_ai 2031vec_ldl(int a, unsigned char *b) 2032{ 2033 return (vector unsigned char)__builtin_altivec_lvxl(a, b); 2034} 2035 2036static vector bool char __ATTRS_o_ai 2037vec_ldl(int a, vector bool char *b) 2038{ 2039 return (vector bool char)__builtin_altivec_lvxl(a, b); 2040} 2041 2042static vector short __ATTRS_o_ai 2043vec_ldl(int a, vector short *b) 2044{ 2045 return (vector short)__builtin_altivec_lvxl(a, b); 2046} 2047 2048static vector short __ATTRS_o_ai 2049vec_ldl(int a, short *b) 2050{ 2051 return (vector short)__builtin_altivec_lvxl(a, b); 2052} 2053 2054static vector unsigned short __ATTRS_o_ai 2055vec_ldl(int a, vector unsigned short *b) 2056{ 2057 return (vector unsigned short)__builtin_altivec_lvxl(a, b); 2058} 2059 2060static vector unsigned short __ATTRS_o_ai 2061vec_ldl(int a, unsigned short *b) 2062{ 2063 return (vector unsigned short)__builtin_altivec_lvxl(a, b); 2064} 2065 2066static vector bool short __ATTRS_o_ai 2067vec_ldl(int a, vector bool short *b) 2068{ 2069 return (vector bool short)__builtin_altivec_lvxl(a, b); 2070} 2071 2072static vector pixel __ATTRS_o_ai 2073vec_ldl(int a, vector pixel *b) 2074{ 2075 return (vector pixel short)__builtin_altivec_lvxl(a, b); 2076} 2077 2078static vector int __ATTRS_o_ai 2079vec_ldl(int a, vector int *b) 2080{ 2081 return (vector int)__builtin_altivec_lvxl(a, b); 2082} 2083 2084static vector int __ATTRS_o_ai 2085vec_ldl(int a, int *b) 2086{ 2087 return (vector int)__builtin_altivec_lvxl(a, b); 2088} 2089 2090static vector unsigned int __ATTRS_o_ai 2091vec_ldl(int a, vector unsigned int *b) 2092{ 2093 return (vector unsigned int)__builtin_altivec_lvxl(a, b); 2094} 2095 2096static vector unsigned int __ATTRS_o_ai 2097vec_ldl(int a, unsigned int *b) 2098{ 2099 return (vector unsigned int)__builtin_altivec_lvxl(a, b); 2100} 2101 2102static vector bool int __ATTRS_o_ai 2103vec_ldl(int a, vector bool int *b) 2104{ 2105 return (vector bool int)__builtin_altivec_lvxl(a, b); 2106} 2107 2108static vector float __ATTRS_o_ai 2109vec_ldl(int a, vector float *b) 2110{ 2111 return (vector float)__builtin_altivec_lvxl(a, b); 2112} 2113 2114static vector float __ATTRS_o_ai 2115vec_ldl(int a, float *b) 2116{ 2117 return (vector float)__builtin_altivec_lvxl(a, b); 2118} 2119 2120/* vec_lvxl */ 2121 2122static vector signed char __ATTRS_o_ai 2123vec_lvxl(int a, vector signed char *b) 2124{ 2125 return (vector signed char)__builtin_altivec_lvxl(a, b); 2126} 2127 2128static vector signed char __ATTRS_o_ai 2129vec_lvxl(int a, signed char *b) 2130{ 2131 return (vector signed char)__builtin_altivec_lvxl(a, b); 2132} 2133 2134static vector unsigned char __ATTRS_o_ai 2135vec_lvxl(int a, vector unsigned char *b) 2136{ 2137 return (vector unsigned char)__builtin_altivec_lvxl(a, b); 2138} 2139 2140static vector unsigned char __ATTRS_o_ai 2141vec_lvxl(int a, unsigned char *b) 2142{ 2143 return (vector unsigned char)__builtin_altivec_lvxl(a, b); 2144} 2145 2146static vector bool char __ATTRS_o_ai 2147vec_lvxl(int a, vector bool char *b) 2148{ 2149 return (vector bool char)__builtin_altivec_lvxl(a, b); 2150} 2151 2152static vector short __ATTRS_o_ai 2153vec_lvxl(int a, vector short *b) 2154{ 2155 return (vector short)__builtin_altivec_lvxl(a, b); 2156} 2157 2158static vector short __ATTRS_o_ai 2159vec_lvxl(int a, short *b) 2160{ 2161 return (vector short)__builtin_altivec_lvxl(a, b); 2162} 2163 2164static vector unsigned short __ATTRS_o_ai 2165vec_lvxl(int a, vector unsigned short *b) 2166{ 2167 return (vector unsigned short)__builtin_altivec_lvxl(a, b); 2168} 2169 2170static vector unsigned short __ATTRS_o_ai 2171vec_lvxl(int a, unsigned short *b) 2172{ 2173 return (vector unsigned short)__builtin_altivec_lvxl(a, b); 2174} 2175 2176static vector bool short __ATTRS_o_ai 2177vec_lvxl(int a, vector bool short *b) 2178{ 2179 return (vector bool short)__builtin_altivec_lvxl(a, b); 2180} 2181 2182static vector pixel __ATTRS_o_ai 2183vec_lvxl(int a, vector pixel *b) 2184{ 2185 return (vector pixel)__builtin_altivec_lvxl(a, b); 2186} 2187 2188static vector int __ATTRS_o_ai 2189vec_lvxl(int a, vector int *b) 2190{ 2191 return (vector int)__builtin_altivec_lvxl(a, b); 2192} 2193 2194static vector int __ATTRS_o_ai 2195vec_lvxl(int a, int *b) 2196{ 2197 return (vector int)__builtin_altivec_lvxl(a, b); 2198} 2199 2200static vector unsigned int __ATTRS_o_ai 2201vec_lvxl(int a, vector unsigned int *b) 2202{ 2203 return (vector unsigned int)__builtin_altivec_lvxl(a, b); 2204} 2205 2206static vector unsigned int __ATTRS_o_ai 2207vec_lvxl(int a, unsigned int *b) 2208{ 2209 return (vector unsigned int)__builtin_altivec_lvxl(a, b); 2210} 2211 2212static vector bool int __ATTRS_o_ai 2213vec_lvxl(int a, vector bool int *b) 2214{ 2215 return (vector bool int)__builtin_altivec_lvxl(a, b); 2216} 2217 2218static vector float __ATTRS_o_ai 2219vec_lvxl(int a, vector float *b) 2220{ 2221 return (vector float)__builtin_altivec_lvxl(a, b); 2222} 2223 2224static vector float __ATTRS_o_ai 2225vec_lvxl(int a, float *b) 2226{ 2227 return (vector float)__builtin_altivec_lvxl(a, b); 2228} 2229 2230/* vec_loge */ 2231 2232static vector float __attribute__((__always_inline__)) 2233vec_loge(vector float a) 2234{ 2235 return __builtin_altivec_vlogefp(a); 2236} 2237 2238/* vec_vlogefp */ 2239 2240static vector float __attribute__((__always_inline__)) 2241vec_vlogefp(vector float a) 2242{ 2243 return __builtin_altivec_vlogefp(a); 2244} 2245 2246/* vec_lvsl */ 2247 2248static vector unsigned char __ATTRS_o_ai 2249vec_lvsl(int a, signed char *b) 2250{ 2251 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2252} 2253 2254static vector unsigned char __ATTRS_o_ai 2255vec_lvsl(int a, unsigned char *b) 2256{ 2257 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2258} 2259 2260static vector unsigned char __ATTRS_o_ai 2261vec_lvsl(int a, short *b) 2262{ 2263 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2264} 2265 2266static vector unsigned char __ATTRS_o_ai 2267vec_lvsl(int a, unsigned short *b) 2268{ 2269 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2270} 2271 2272static vector unsigned char __ATTRS_o_ai 2273vec_lvsl(int a, int *b) 2274{ 2275 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2276} 2277 2278static vector unsigned char __ATTRS_o_ai 2279vec_lvsl(int a, unsigned int *b) 2280{ 2281 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2282} 2283 2284static vector unsigned char __ATTRS_o_ai 2285vec_lvsl(int a, float *b) 2286{ 2287 return (vector unsigned char)__builtin_altivec_lvsl(a, b); 2288} 2289 2290/* vec_lvsr */ 2291 2292static vector unsigned char __ATTRS_o_ai 2293vec_lvsr(int a, signed char *b) 2294{ 2295 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2296} 2297 2298static vector unsigned char __ATTRS_o_ai 2299vec_lvsr(int a, unsigned char *b) 2300{ 2301 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2302} 2303 2304static vector unsigned char __ATTRS_o_ai 2305vec_lvsr(int a, short *b) 2306{ 2307 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2308} 2309 2310static vector unsigned char __ATTRS_o_ai 2311vec_lvsr(int a, unsigned short *b) 2312{ 2313 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2314} 2315 2316static vector unsigned char __ATTRS_o_ai 2317vec_lvsr(int a, int *b) 2318{ 2319 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2320} 2321 2322static vector unsigned char __ATTRS_o_ai 2323vec_lvsr(int a, unsigned int *b) 2324{ 2325 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2326} 2327 2328static vector unsigned char __ATTRS_o_ai 2329vec_lvsr(int a, float *b) 2330{ 2331 return (vector unsigned char)__builtin_altivec_lvsr(a, b); 2332} 2333 2334/* vec_madd */ 2335 2336static vector float __attribute__((__always_inline__)) 2337vec_madd(vector float a, vector float b, vector float c) 2338{ 2339 return __builtin_altivec_vmaddfp(a, b, c); 2340} 2341 2342/* vec_vmaddfp */ 2343 2344static vector float __attribute__((__always_inline__)) 2345vec_vmaddfp(vector float a, vector float b, vector float c) 2346{ 2347 return __builtin_altivec_vmaddfp(a, b, c); 2348} 2349 2350/* vec_madds */ 2351 2352static vector signed short __attribute__((__always_inline__)) 2353vec_madds(vector signed short a, vector signed short b, vector signed short c) 2354{ 2355 return __builtin_altivec_vmhaddshs(a, b, c); 2356} 2357 2358/* vec_vmhaddshs */ 2359static vector signed short __attribute__((__always_inline__)) 2360vec_vmhaddshs(vector signed short a, vector signed short b, vector signed short c) 2361{ 2362 return __builtin_altivec_vmhaddshs(a, b, c); 2363} 2364 2365/* vec_max */ 2366 2367static vector signed char __ATTRS_o_ai 2368vec_max(vector signed char a, vector signed char b) 2369{ 2370 return __builtin_altivec_vmaxsb(a, b); 2371} 2372 2373static vector signed char __ATTRS_o_ai 2374vec_max(vector bool char a, vector signed char b) 2375{ 2376 return __builtin_altivec_vmaxsb((vector signed char)a, b); 2377} 2378 2379static vector signed char __ATTRS_o_ai 2380vec_max(vector signed char a, vector bool char b) 2381{ 2382 return __builtin_altivec_vmaxsb(a, (vector signed char)b); 2383} 2384 2385static vector unsigned char __ATTRS_o_ai 2386vec_max(vector unsigned char a, vector unsigned char b) 2387{ 2388 return __builtin_altivec_vmaxub(a, b); 2389} 2390 2391static vector unsigned char __ATTRS_o_ai 2392vec_max(vector bool char a, vector unsigned char b) 2393{ 2394 return __builtin_altivec_vmaxub((vector unsigned char)a, b); 2395} 2396 2397static vector unsigned char __ATTRS_o_ai 2398vec_max(vector unsigned char a, vector bool char b) 2399{ 2400 return __builtin_altivec_vmaxub(a, (vector unsigned char)b); 2401} 2402 2403static vector short __ATTRS_o_ai 2404vec_max(vector short a, vector short b) 2405{ 2406 return __builtin_altivec_vmaxsh(a, b); 2407} 2408 2409static vector short __ATTRS_o_ai 2410vec_max(vector bool short a, vector short b) 2411{ 2412 return __builtin_altivec_vmaxsh((vector short)a, b); 2413} 2414 2415static vector short __ATTRS_o_ai 2416vec_max(vector short a, vector bool short b) 2417{ 2418 return __builtin_altivec_vmaxsh(a, (vector short)b); 2419} 2420 2421static vector unsigned short __ATTRS_o_ai 2422vec_max(vector unsigned short a, vector unsigned short b) 2423{ 2424 return __builtin_altivec_vmaxuh(a, b); 2425} 2426 2427static vector unsigned short __ATTRS_o_ai 2428vec_max(vector bool short a, vector unsigned short b) 2429{ 2430 return __builtin_altivec_vmaxuh((vector unsigned short)a, b); 2431} 2432 2433static vector unsigned short __ATTRS_o_ai 2434vec_max(vector unsigned short a, vector bool short b) 2435{ 2436 return __builtin_altivec_vmaxuh(a, (vector unsigned short)b); 2437} 2438 2439static vector int __ATTRS_o_ai 2440vec_max(vector int a, vector int b) 2441{ 2442 return __builtin_altivec_vmaxsw(a, b); 2443} 2444 2445static vector int __ATTRS_o_ai 2446vec_max(vector bool int a, vector int b) 2447{ 2448 return __builtin_altivec_vmaxsw((vector int)a, b); 2449} 2450 2451static vector int __ATTRS_o_ai 2452vec_max(vector int a, vector bool int b) 2453{ 2454 return __builtin_altivec_vmaxsw(a, (vector int)b); 2455} 2456 2457static vector unsigned int __ATTRS_o_ai 2458vec_max(vector unsigned int a, vector unsigned int b) 2459{ 2460 return __builtin_altivec_vmaxuw(a, b); 2461} 2462 2463static vector unsigned int __ATTRS_o_ai 2464vec_max(vector bool int a, vector unsigned int b) 2465{ 2466 return __builtin_altivec_vmaxuw((vector unsigned int)a, b); 2467} 2468 2469static vector unsigned int __ATTRS_o_ai 2470vec_max(vector unsigned int a, vector bool int b) 2471{ 2472 return __builtin_altivec_vmaxuw(a, (vector unsigned int)b); 2473} 2474 2475static vector float __ATTRS_o_ai 2476vec_max(vector float a, vector float b) 2477{ 2478 return __builtin_altivec_vmaxfp(a, b); 2479} 2480 2481/* vec_vmaxsb */ 2482 2483static vector signed char __ATTRS_o_ai 2484vec_vmaxsb(vector signed char a, vector signed char b) 2485{ 2486 return __builtin_altivec_vmaxsb(a, b); 2487} 2488 2489static vector signed char __ATTRS_o_ai 2490vec_vmaxsb(vector bool char a, vector signed char b) 2491{ 2492 return __builtin_altivec_vmaxsb((vector signed char)a, b); 2493} 2494 2495static vector signed char __ATTRS_o_ai 2496vec_vmaxsb(vector signed char a, vector bool char b) 2497{ 2498 return __builtin_altivec_vmaxsb(a, (vector signed char)b); 2499} 2500 2501/* vec_vmaxub */ 2502 2503static vector unsigned char __ATTRS_o_ai 2504vec_vmaxub(vector unsigned char a, vector unsigned char b) 2505{ 2506 return __builtin_altivec_vmaxub(a, b); 2507} 2508 2509static vector unsigned char __ATTRS_o_ai 2510vec_vmaxub(vector bool char a, vector unsigned char b) 2511{ 2512 return __builtin_altivec_vmaxub((vector unsigned char)a, b); 2513} 2514 2515static vector unsigned char __ATTRS_o_ai 2516vec_vmaxub(vector unsigned char a, vector bool char b) 2517{ 2518 return __builtin_altivec_vmaxub(a, (vector unsigned char)b); 2519} 2520 2521/* vec_vmaxsh */ 2522 2523static vector short __ATTRS_o_ai 2524vec_vmaxsh(vector short a, vector short b) 2525{ 2526 return __builtin_altivec_vmaxsh(a, b); 2527} 2528 2529static vector short __ATTRS_o_ai 2530vec_vmaxsh(vector bool short a, vector short b) 2531{ 2532 return __builtin_altivec_vmaxsh((vector short)a, b); 2533} 2534 2535static vector short __ATTRS_o_ai 2536vec_vmaxsh(vector short a, vector bool short b) 2537{ 2538 return __builtin_altivec_vmaxsh(a, (vector short)b); 2539} 2540 2541/* vec_vmaxuh */ 2542 2543static vector unsigned short __ATTRS_o_ai 2544vec_vmaxuh(vector unsigned short a, vector unsigned short b) 2545{ 2546 return __builtin_altivec_vmaxuh(a, b); 2547} 2548 2549static vector unsigned short __ATTRS_o_ai 2550vec_vmaxuh(vector bool short a, vector unsigned short b) 2551{ 2552 return __builtin_altivec_vmaxuh((vector unsigned short)a, b); 2553} 2554 2555static vector unsigned short __ATTRS_o_ai 2556vec_vmaxuh(vector unsigned short a, vector bool short b) 2557{ 2558 return __builtin_altivec_vmaxuh(a, (vector unsigned short)b); 2559} 2560 2561/* vec_vmaxsw */ 2562 2563static vector int __ATTRS_o_ai 2564vec_vmaxsw(vector int a, vector int b) 2565{ 2566 return __builtin_altivec_vmaxsw(a, b); 2567} 2568 2569static vector int __ATTRS_o_ai 2570vec_vmaxsw(vector bool int a, vector int b) 2571{ 2572 return __builtin_altivec_vmaxsw((vector int)a, b); 2573} 2574 2575static vector int __ATTRS_o_ai 2576vec_vmaxsw(vector int a, vector bool int b) 2577{ 2578 return __builtin_altivec_vmaxsw(a, (vector int)b); 2579} 2580 2581/* vec_vmaxuw */ 2582 2583static vector unsigned int __ATTRS_o_ai 2584vec_vmaxuw(vector unsigned int a, vector unsigned int b) 2585{ 2586 return __builtin_altivec_vmaxuw(a, b); 2587} 2588 2589static vector unsigned int __ATTRS_o_ai 2590vec_vmaxuw(vector bool int a, vector unsigned int b) 2591{ 2592 return __builtin_altivec_vmaxuw((vector unsigned int)a, b); 2593} 2594 2595static vector unsigned int __ATTRS_o_ai 2596vec_vmaxuw(vector unsigned int a, vector bool int b) 2597{ 2598 return __builtin_altivec_vmaxuw(a, (vector unsigned int)b); 2599} 2600 2601/* vec_vmaxfp */ 2602 2603static vector float __attribute__((__always_inline__)) 2604vec_vmaxfp(vector float a, vector float b) 2605{ 2606 return __builtin_altivec_vmaxfp(a, b); 2607} 2608 2609/* vec_mergeh */ 2610 2611static vector signed char __ATTRS_o_ai 2612vec_mergeh(vector signed char a, vector signed char b) 2613{ 2614 return vec_perm(a, b, (vector unsigned char) 2615 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, 2616 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); 2617} 2618 2619static vector unsigned char __ATTRS_o_ai 2620vec_mergeh(vector unsigned char a, vector unsigned char b) 2621{ 2622 return vec_perm(a, b, (vector unsigned char) 2623 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, 2624 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); 2625} 2626 2627static vector bool char __ATTRS_o_ai 2628vec_mergeh(vector bool char a, vector bool char b) 2629{ 2630 return vec_perm(a, b, (vector unsigned char) 2631 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, 2632 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); 2633} 2634 2635static vector short __ATTRS_o_ai 2636vec_mergeh(vector short a, vector short b) 2637{ 2638 return vec_perm(a, b, (vector unsigned char) 2639 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 2640 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 2641} 2642 2643static vector unsigned short __ATTRS_o_ai 2644vec_mergeh(vector unsigned short a, vector unsigned short b) 2645{ 2646 return vec_perm(a, b, (vector unsigned char) 2647 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 2648 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 2649} 2650 2651static vector bool short __ATTRS_o_ai 2652vec_mergeh(vector bool short a, vector bool short b) 2653{ 2654 return vec_perm(a, b, (vector unsigned char) 2655 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 2656 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 2657} 2658 2659static vector pixel __ATTRS_o_ai 2660vec_mergeh(vector pixel a, vector pixel b) 2661{ 2662 return vec_perm(a, b, (vector unsigned char) 2663 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 2664 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 2665} 2666 2667static vector int __ATTRS_o_ai 2668vec_mergeh(vector int a, vector int b) 2669{ 2670 return vec_perm(a, b, (vector unsigned char) 2671 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 2672 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 2673} 2674 2675static vector unsigned int __ATTRS_o_ai 2676vec_mergeh(vector unsigned int a, vector unsigned int b) 2677{ 2678 return vec_perm(a, b, (vector unsigned char) 2679 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 2680 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 2681} 2682 2683static vector bool int __ATTRS_o_ai 2684vec_mergeh(vector bool int a, vector bool int b) 2685{ 2686 return vec_perm(a, b, (vector unsigned char) 2687 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 2688 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 2689} 2690 2691static vector float __ATTRS_o_ai 2692vec_mergeh(vector float a, vector float b) 2693{ 2694 return vec_perm(a, b, (vector unsigned char) 2695 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 2696 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 2697} 2698 2699/* vec_vmrghb */ 2700 2701#define __builtin_altivec_vmrghb vec_vmrghb 2702 2703static vector signed char __ATTRS_o_ai 2704vec_vmrghb(vector signed char a, vector signed char b) 2705{ 2706 return vec_perm(a, b, (vector unsigned char) 2707 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, 2708 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); 2709} 2710 2711static vector unsigned char __ATTRS_o_ai 2712vec_vmrghb(vector unsigned char a, vector unsigned char b) 2713{ 2714 return vec_perm(a, b, (vector unsigned char) 2715 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, 2716 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); 2717} 2718 2719static vector bool char __ATTRS_o_ai 2720vec_vmrghb(vector bool char a, vector bool char b) 2721{ 2722 return vec_perm(a, b, (vector unsigned char) 2723 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13, 2724 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17)); 2725} 2726 2727/* vec_vmrghh */ 2728 2729#define __builtin_altivec_vmrghh vec_vmrghh 2730 2731static vector short __ATTRS_o_ai 2732vec_vmrghh(vector short a, vector short b) 2733{ 2734 return vec_perm(a, b, (vector unsigned char) 2735 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 2736 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 2737} 2738 2739static vector unsigned short __ATTRS_o_ai 2740vec_vmrghh(vector unsigned short a, vector unsigned short b) 2741{ 2742 return vec_perm(a, b, (vector unsigned char) 2743 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 2744 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 2745} 2746 2747static vector bool short __ATTRS_o_ai 2748vec_vmrghh(vector bool short a, vector bool short b) 2749{ 2750 return vec_perm(a, b, (vector unsigned char) 2751 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 2752 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 2753} 2754 2755static vector pixel __ATTRS_o_ai 2756vec_vmrghh(vector pixel a, vector pixel b) 2757{ 2758 return vec_perm(a, b, (vector unsigned char) 2759 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13, 2760 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17)); 2761} 2762 2763/* vec_vmrghw */ 2764 2765#define __builtin_altivec_vmrghw vec_vmrghw 2766 2767static vector int __ATTRS_o_ai 2768vec_vmrghw(vector int a, vector int b) 2769{ 2770 return vec_perm(a, b, (vector unsigned char) 2771 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 2772 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 2773} 2774 2775static vector unsigned int __ATTRS_o_ai 2776vec_vmrghw(vector unsigned int a, vector unsigned int b) 2777{ 2778 return vec_perm(a, b, (vector unsigned char) 2779 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 2780 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 2781} 2782 2783static vector bool int __ATTRS_o_ai 2784vec_vmrghw(vector bool int a, vector bool int b) 2785{ 2786 return vec_perm(a, b, (vector unsigned char) 2787 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 2788 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 2789} 2790 2791static vector float __ATTRS_o_ai 2792vec_vmrghw(vector float a, vector float b) 2793{ 2794 return vec_perm(a, b, (vector unsigned char) 2795 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13, 2796 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17)); 2797} 2798 2799/* vec_mergel */ 2800 2801static vector signed char __ATTRS_o_ai 2802vec_mergel(vector signed char a, vector signed char b) 2803{ 2804 return vec_perm(a, b, (vector unsigned char) 2805 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, 2806 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); 2807} 2808 2809static vector unsigned char __ATTRS_o_ai 2810vec_mergel(vector unsigned char a, vector unsigned char b) 2811{ 2812 return vec_perm(a, b, (vector unsigned char) 2813 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, 2814 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); 2815} 2816 2817static vector bool char __ATTRS_o_ai 2818vec_mergel(vector bool char a, vector bool char b) 2819{ 2820 return vec_perm(a, b, (vector unsigned char) 2821 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, 2822 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); 2823} 2824 2825static vector short __ATTRS_o_ai 2826vec_mergel(vector short a, vector short b) 2827{ 2828 return vec_perm(a, b, (vector unsigned char) 2829 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 2830 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 2831} 2832 2833static vector unsigned short __ATTRS_o_ai 2834vec_mergel(vector unsigned short a, vector unsigned short b) 2835{ 2836 return vec_perm(a, b, (vector unsigned char) 2837 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 2838 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 2839} 2840 2841static vector bool short __ATTRS_o_ai 2842vec_mergel(vector bool short a, vector bool short b) 2843{ 2844 return vec_perm(a, b, (vector unsigned char) 2845 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 2846 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 2847} 2848 2849static vector pixel __ATTRS_o_ai 2850vec_mergel(vector pixel a, vector pixel b) 2851{ 2852 return vec_perm(a, b, (vector unsigned char) 2853 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 2854 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 2855} 2856 2857static vector int __ATTRS_o_ai 2858vec_mergel(vector int a, vector int b) 2859{ 2860 return vec_perm(a, b, (vector unsigned char) 2861 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 2862 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 2863} 2864 2865static vector unsigned int __ATTRS_o_ai 2866vec_mergel(vector unsigned int a, vector unsigned int b) 2867{ 2868 return vec_perm(a, b, (vector unsigned char) 2869 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 2870 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 2871} 2872 2873static vector bool int __ATTRS_o_ai 2874vec_mergel(vector bool int a, vector bool int b) 2875{ 2876 return vec_perm(a, b, (vector unsigned char) 2877 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 2878 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 2879} 2880 2881static vector float __ATTRS_o_ai 2882vec_mergel(vector float a, vector float b) 2883{ 2884 return vec_perm(a, b, (vector unsigned char) 2885 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 2886 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 2887} 2888 2889/* vec_vmrglb */ 2890 2891#define __builtin_altivec_vmrglb vec_vmrglb 2892 2893static vector signed char __ATTRS_o_ai 2894vec_vmrglb(vector signed char a, vector signed char b) 2895{ 2896 return vec_perm(a, b, (vector unsigned char) 2897 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, 2898 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); 2899} 2900 2901static vector unsigned char __ATTRS_o_ai 2902vec_vmrglb(vector unsigned char a, vector unsigned char b) 2903{ 2904 return vec_perm(a, b, (vector unsigned char) 2905 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, 2906 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); 2907} 2908 2909static vector bool char __ATTRS_o_ai 2910vec_vmrglb(vector bool char a, vector bool char b) 2911{ 2912 return vec_perm(a, b, (vector unsigned char) 2913 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B, 2914 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F)); 2915} 2916 2917/* vec_vmrglh */ 2918 2919#define __builtin_altivec_vmrglh vec_vmrglh 2920 2921static vector short __ATTRS_o_ai 2922vec_vmrglh(vector short a, vector short b) 2923{ 2924 return vec_perm(a, b, (vector unsigned char) 2925 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 2926 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 2927} 2928 2929static vector unsigned short __ATTRS_o_ai 2930vec_vmrglh(vector unsigned short a, vector unsigned short b) 2931{ 2932 return vec_perm(a, b, (vector unsigned char) 2933 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 2934 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 2935} 2936 2937static vector bool short __ATTRS_o_ai 2938vec_vmrglh(vector bool short a, vector bool short b) 2939{ 2940 return vec_perm(a, b, (vector unsigned char) 2941 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 2942 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 2943} 2944 2945static vector pixel __ATTRS_o_ai 2946vec_vmrglh(vector pixel a, vector pixel b) 2947{ 2948 return vec_perm(a, b, (vector unsigned char) 2949 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B, 2950 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F)); 2951} 2952 2953/* vec_vmrglw */ 2954 2955#define __builtin_altivec_vmrglw vec_vmrglw 2956 2957static vector int __ATTRS_o_ai 2958vec_vmrglw(vector int a, vector int b) 2959{ 2960 return vec_perm(a, b, (vector unsigned char) 2961 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 2962 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 2963} 2964 2965static vector unsigned int __ATTRS_o_ai 2966vec_vmrglw(vector unsigned int a, vector unsigned int b) 2967{ 2968 return vec_perm(a, b, (vector unsigned char) 2969 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 2970 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 2971} 2972 2973static vector bool int __ATTRS_o_ai 2974vec_vmrglw(vector bool int a, vector bool int b) 2975{ 2976 return vec_perm(a, b, (vector unsigned char) 2977 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 2978 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 2979} 2980 2981static vector float __ATTRS_o_ai 2982vec_vmrglw(vector float a, vector float b) 2983{ 2984 return vec_perm(a, b, (vector unsigned char) 2985 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B, 2986 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F)); 2987} 2988 2989/* vec_mfvscr */ 2990 2991static vector unsigned short __attribute__((__always_inline__)) 2992vec_mfvscr(void) 2993{ 2994 return __builtin_altivec_mfvscr(); 2995} 2996 2997/* vec_min */ 2998 2999static vector signed char __ATTRS_o_ai 3000vec_min(vector signed char a, vector signed char b) 3001{ 3002 return __builtin_altivec_vminsb(a, b); 3003} 3004 3005static vector signed char __ATTRS_o_ai 3006vec_min(vector bool char a, vector signed char b) 3007{ 3008 return __builtin_altivec_vminsb((vector signed char)a, b); 3009} 3010 3011static vector signed char __ATTRS_o_ai 3012vec_min(vector signed char a, vector bool char b) 3013{ 3014 return __builtin_altivec_vminsb(a, (vector signed char)b); 3015} 3016 3017static vector unsigned char __ATTRS_o_ai 3018vec_min(vector unsigned char a, vector unsigned char b) 3019{ 3020 return __builtin_altivec_vminub(a, b); 3021} 3022 3023static vector unsigned char __ATTRS_o_ai 3024vec_min(vector bool char a, vector unsigned char b) 3025{ 3026 return __builtin_altivec_vminub((vector unsigned char)a, b); 3027} 3028 3029static vector unsigned char __ATTRS_o_ai 3030vec_min(vector unsigned char a, vector bool char b) 3031{ 3032 return __builtin_altivec_vminub(a, (vector unsigned char)b); 3033} 3034 3035static vector short __ATTRS_o_ai 3036vec_min(vector short a, vector short b) 3037{ 3038 return __builtin_altivec_vminsh(a, b); 3039} 3040 3041static vector short __ATTRS_o_ai 3042vec_min(vector bool short a, vector short b) 3043{ 3044 return __builtin_altivec_vminsh((vector short)a, b); 3045} 3046 3047static vector short __ATTRS_o_ai 3048vec_min(vector short a, vector bool short b) 3049{ 3050 return __builtin_altivec_vminsh(a, (vector short)b); 3051} 3052 3053static vector unsigned short __ATTRS_o_ai 3054vec_min(vector unsigned short a, vector unsigned short b) 3055{ 3056 return __builtin_altivec_vminuh(a, b); 3057} 3058 3059static vector unsigned short __ATTRS_o_ai 3060vec_min(vector bool short a, vector unsigned short b) 3061{ 3062 return __builtin_altivec_vminuh((vector unsigned short)a, b); 3063} 3064 3065static vector unsigned short __ATTRS_o_ai 3066vec_min(vector unsigned short a, vector bool short b) 3067{ 3068 return __builtin_altivec_vminuh(a, (vector unsigned short)b); 3069} 3070 3071static vector int __ATTRS_o_ai 3072vec_min(vector int a, vector int b) 3073{ 3074 return __builtin_altivec_vminsw(a, b); 3075} 3076 3077static vector int __ATTRS_o_ai 3078vec_min(vector bool int a, vector int b) 3079{ 3080 return __builtin_altivec_vminsw((vector int)a, b); 3081} 3082 3083static vector int __ATTRS_o_ai 3084vec_min(vector int a, vector bool int b) 3085{ 3086 return __builtin_altivec_vminsw(a, (vector int)b); 3087} 3088 3089static vector unsigned int __ATTRS_o_ai 3090vec_min(vector unsigned int a, vector unsigned int b) 3091{ 3092 return __builtin_altivec_vminuw(a, b); 3093} 3094 3095static vector unsigned int __ATTRS_o_ai 3096vec_min(vector bool int a, vector unsigned int b) 3097{ 3098 return __builtin_altivec_vminuw((vector unsigned int)a, b); 3099} 3100 3101static vector unsigned int __ATTRS_o_ai 3102vec_min(vector unsigned int a, vector bool int b) 3103{ 3104 return __builtin_altivec_vminuw(a, (vector unsigned int)b); 3105} 3106 3107static vector float __ATTRS_o_ai 3108vec_min(vector float a, vector float b) 3109{ 3110 return __builtin_altivec_vminfp(a, b); 3111} 3112 3113/* vec_vminsb */ 3114 3115static vector signed char __ATTRS_o_ai 3116vec_vminsb(vector signed char a, vector signed char b) 3117{ 3118 return __builtin_altivec_vminsb(a, b); 3119} 3120 3121static vector signed char __ATTRS_o_ai 3122vec_vminsb(vector bool char a, vector signed char b) 3123{ 3124 return __builtin_altivec_vminsb((vector signed char)a, b); 3125} 3126 3127static vector signed char __ATTRS_o_ai 3128vec_vminsb(vector signed char a, vector bool char b) 3129{ 3130 return __builtin_altivec_vminsb(a, (vector signed char)b); 3131} 3132 3133/* vec_vminub */ 3134 3135static vector unsigned char __ATTRS_o_ai 3136vec_vminub(vector unsigned char a, vector unsigned char b) 3137{ 3138 return __builtin_altivec_vminub(a, b); 3139} 3140 3141static vector unsigned char __ATTRS_o_ai 3142vec_vminub(vector bool char a, vector unsigned char b) 3143{ 3144 return __builtin_altivec_vminub((vector unsigned char)a, b); 3145} 3146 3147static vector unsigned char __ATTRS_o_ai 3148vec_vminub(vector unsigned char a, vector bool char b) 3149{ 3150 return __builtin_altivec_vminub(a, (vector unsigned char)b); 3151} 3152 3153/* vec_vminsh */ 3154 3155static vector short __ATTRS_o_ai 3156vec_vminsh(vector short a, vector short b) 3157{ 3158 return __builtin_altivec_vminsh(a, b); 3159} 3160 3161static vector short __ATTRS_o_ai 3162vec_vminsh(vector bool short a, vector short b) 3163{ 3164 return __builtin_altivec_vminsh((vector short)a, b); 3165} 3166 3167static vector short __ATTRS_o_ai 3168vec_vminsh(vector short a, vector bool short b) 3169{ 3170 return __builtin_altivec_vminsh(a, (vector short)b); 3171} 3172 3173/* vec_vminuh */ 3174 3175static vector unsigned short __ATTRS_o_ai 3176vec_vminuh(vector unsigned short a, vector unsigned short b) 3177{ 3178 return __builtin_altivec_vminuh(a, b); 3179} 3180 3181static vector unsigned short __ATTRS_o_ai 3182vec_vminuh(vector bool short a, vector unsigned short b) 3183{ 3184 return __builtin_altivec_vminuh((vector unsigned short)a, b); 3185} 3186 3187static vector unsigned short __ATTRS_o_ai 3188vec_vminuh(vector unsigned short a, vector bool short b) 3189{ 3190 return __builtin_altivec_vminuh(a, (vector unsigned short)b); 3191} 3192 3193/* vec_vminsw */ 3194 3195static vector int __ATTRS_o_ai 3196vec_vminsw(vector int a, vector int b) 3197{ 3198 return __builtin_altivec_vminsw(a, b); 3199} 3200 3201static vector int __ATTRS_o_ai 3202vec_vminsw(vector bool int a, vector int b) 3203{ 3204 return __builtin_altivec_vminsw((vector int)a, b); 3205} 3206 3207static vector int __ATTRS_o_ai 3208vec_vminsw(vector int a, vector bool int b) 3209{ 3210 return __builtin_altivec_vminsw(a, (vector int)b); 3211} 3212 3213/* vec_vminuw */ 3214 3215static vector unsigned int __ATTRS_o_ai 3216vec_vminuw(vector unsigned int a, vector unsigned int b) 3217{ 3218 return __builtin_altivec_vminuw(a, b); 3219} 3220 3221static vector unsigned int __ATTRS_o_ai 3222vec_vminuw(vector bool int a, vector unsigned int b) 3223{ 3224 return __builtin_altivec_vminuw((vector unsigned int)a, b); 3225} 3226 3227static vector unsigned int __ATTRS_o_ai 3228vec_vminuw(vector unsigned int a, vector bool int b) 3229{ 3230 return __builtin_altivec_vminuw(a, (vector unsigned int)b); 3231} 3232 3233/* vec_vminfp */ 3234 3235static vector float __attribute__((__always_inline__)) 3236vec_vminfp(vector float a, vector float b) 3237{ 3238 return __builtin_altivec_vminfp(a, b); 3239} 3240 3241/* vec_mladd */ 3242 3243#define __builtin_altivec_vmladduhm vec_mladd 3244 3245static vector short __ATTRS_o_ai 3246vec_mladd(vector short a, vector short b, vector short c) 3247{ 3248 return a * b + c; 3249} 3250 3251static vector short __ATTRS_o_ai 3252vec_mladd(vector short a, vector unsigned short b, vector unsigned short c) 3253{ 3254 return a * (vector short)b + (vector short)c; 3255} 3256 3257static vector short __ATTRS_o_ai 3258vec_mladd(vector unsigned short a, vector short b, vector short c) 3259{ 3260 return (vector short)a * b + c; 3261} 3262 3263static vector unsigned short __ATTRS_o_ai 3264vec_mladd(vector unsigned short a, vector unsigned short b, vector unsigned short c) 3265{ 3266 return a * b + c; 3267} 3268 3269/* vec_vmladduhm */ 3270 3271static vector short __ATTRS_o_ai 3272vec_vmladduhm(vector short a, vector short b, vector short c) 3273{ 3274 return a * b + c; 3275} 3276 3277static vector short __ATTRS_o_ai 3278vec_vmladduhm(vector short a, vector unsigned short b, vector unsigned short c) 3279{ 3280 return a * (vector short)b + (vector short)c; 3281} 3282 3283static vector short __ATTRS_o_ai 3284vec_vmladduhm(vector unsigned short a, vector short b, vector short c) 3285{ 3286 return (vector short)a * b + c; 3287} 3288 3289static vector unsigned short __ATTRS_o_ai 3290vec_vmladduhm(vector unsigned short a, vector unsigned short b, vector unsigned short c) 3291{ 3292 return a * b + c; 3293} 3294 3295/* vec_mradds */ 3296 3297static vector short __attribute__((__always_inline__)) 3298vec_mradds(vector short a, vector short b, vector short c) 3299{ 3300 return __builtin_altivec_vmhraddshs(a, b, c); 3301} 3302 3303/* vec_vmhraddshs */ 3304 3305static vector short __attribute__((__always_inline__)) 3306vec_vmhraddshs(vector short a, vector short b, vector short c) 3307{ 3308 return __builtin_altivec_vmhraddshs(a, b, c); 3309} 3310 3311/* vec_msum */ 3312 3313static vector int __ATTRS_o_ai 3314vec_msum(vector signed char a, vector unsigned char b, vector int c) 3315{ 3316 return __builtin_altivec_vmsummbm(a, b, c); 3317} 3318 3319static vector unsigned int __ATTRS_o_ai 3320vec_msum(vector unsigned char a, vector unsigned char b, vector unsigned int c) 3321{ 3322 return __builtin_altivec_vmsumubm(a, b, c); 3323} 3324 3325static vector int __ATTRS_o_ai 3326vec_msum(vector short a, vector short b, vector int c) 3327{ 3328 return __builtin_altivec_vmsumshm(a, b, c); 3329} 3330 3331static vector unsigned int __ATTRS_o_ai 3332vec_msum(vector unsigned short a, vector unsigned short b, vector unsigned int c) 3333{ 3334 return __builtin_altivec_vmsumuhm(a, b, c); 3335} 3336 3337/* vec_vmsummbm */ 3338 3339static vector int __attribute__((__always_inline__)) 3340vec_vmsummbm(vector signed char a, vector unsigned char b, vector int c) 3341{ 3342 return __builtin_altivec_vmsummbm(a, b, c); 3343} 3344 3345/* vec_vmsumubm */ 3346 3347static vector unsigned int __attribute__((__always_inline__)) 3348vec_vmsumubm(vector unsigned char a, vector unsigned char b, vector unsigned int c) 3349{ 3350 return __builtin_altivec_vmsumubm(a, b, c); 3351} 3352 3353/* vec_vmsumshm */ 3354 3355static vector int __attribute__((__always_inline__)) 3356vec_vmsumshm(vector short a, vector short b, vector int c) 3357{ 3358 return __builtin_altivec_vmsumshm(a, b, c); 3359} 3360 3361/* vec_vmsumuhm */ 3362 3363static vector unsigned int __attribute__((__always_inline__)) 3364vec_vmsumuhm(vector unsigned short a, vector unsigned short b, vector unsigned int c) 3365{ 3366 return __builtin_altivec_vmsumuhm(a, b, c); 3367} 3368 3369/* vec_msums */ 3370 3371static vector int __ATTRS_o_ai 3372vec_msums(vector short a, vector short b, vector int c) 3373{ 3374 return __builtin_altivec_vmsumshs(a, b, c); 3375} 3376 3377static vector unsigned int __ATTRS_o_ai 3378vec_msums(vector unsigned short a, vector unsigned short b, vector unsigned int c) 3379{ 3380 return __builtin_altivec_vmsumuhs(a, b, c); 3381} 3382 3383/* vec_vmsumshs */ 3384 3385static vector int __attribute__((__always_inline__)) 3386vec_vmsumshs(vector short a, vector short b, vector int c) 3387{ 3388 return __builtin_altivec_vmsumshs(a, b, c); 3389} 3390 3391/* vec_vmsumuhs */ 3392 3393static vector unsigned int __attribute__((__always_inline__)) 3394vec_vmsumuhs(vector unsigned short a, vector unsigned short b, vector unsigned int c) 3395{ 3396 return __builtin_altivec_vmsumuhs(a, b, c); 3397} 3398 3399/* vec_mtvscr */ 3400 3401static void __ATTRS_o_ai 3402vec_mtvscr(vector signed char a) 3403{ 3404 __builtin_altivec_mtvscr((vector int)a); 3405} 3406 3407static void __ATTRS_o_ai 3408vec_mtvscr(vector unsigned char a) 3409{ 3410 __builtin_altivec_mtvscr((vector int)a); 3411} 3412 3413static void __ATTRS_o_ai 3414vec_mtvscr(vector bool char a) 3415{ 3416 __builtin_altivec_mtvscr((vector int)a); 3417} 3418 3419static void __ATTRS_o_ai 3420vec_mtvscr(vector short a) 3421{ 3422 __builtin_altivec_mtvscr((vector int)a); 3423} 3424 3425static void __ATTRS_o_ai 3426vec_mtvscr(vector unsigned short a) 3427{ 3428 __builtin_altivec_mtvscr((vector int)a); 3429} 3430 3431static void __ATTRS_o_ai 3432vec_mtvscr(vector bool short a) 3433{ 3434 __builtin_altivec_mtvscr((vector int)a); 3435} 3436 3437static void __ATTRS_o_ai 3438vec_mtvscr(vector pixel a) 3439{ 3440 __builtin_altivec_mtvscr((vector int)a); 3441} 3442 3443static void __ATTRS_o_ai 3444vec_mtvscr(vector int a) 3445{ 3446 __builtin_altivec_mtvscr((vector int)a); 3447} 3448 3449static void __ATTRS_o_ai 3450vec_mtvscr(vector unsigned int a) 3451{ 3452 __builtin_altivec_mtvscr((vector int)a); 3453} 3454 3455static void __ATTRS_o_ai 3456vec_mtvscr(vector bool int a) 3457{ 3458 __builtin_altivec_mtvscr((vector int)a); 3459} 3460 3461static void __ATTRS_o_ai 3462vec_mtvscr(vector float a) 3463{ 3464 __builtin_altivec_mtvscr((vector int)a); 3465} 3466 3467/* vec_mule */ 3468 3469static vector short __ATTRS_o_ai 3470vec_mule(vector signed char a, vector signed char b) 3471{ 3472 return __builtin_altivec_vmulesb(a, b); 3473} 3474 3475static vector unsigned short __ATTRS_o_ai 3476vec_mule(vector unsigned char a, vector unsigned char b) 3477{ 3478 return __builtin_altivec_vmuleub(a, b); 3479} 3480 3481static vector int __ATTRS_o_ai 3482vec_mule(vector short a, vector short b) 3483{ 3484 return __builtin_altivec_vmulesh(a, b); 3485} 3486 3487static vector unsigned int __ATTRS_o_ai 3488vec_mule(vector unsigned short a, vector unsigned short b) 3489{ 3490 return __builtin_altivec_vmuleuh(a, b); 3491} 3492 3493/* vec_vmulesb */ 3494 3495static vector short __attribute__((__always_inline__)) 3496vec_vmulesb(vector signed char a, vector signed char b) 3497{ 3498 return __builtin_altivec_vmulesb(a, b); 3499} 3500 3501/* vec_vmuleub */ 3502 3503static vector unsigned short __attribute__((__always_inline__)) 3504vec_vmuleub(vector unsigned char a, vector unsigned char b) 3505{ 3506 return __builtin_altivec_vmuleub(a, b); 3507} 3508 3509/* vec_vmulesh */ 3510 3511static vector int __attribute__((__always_inline__)) 3512vec_vmulesh(vector short a, vector short b) 3513{ 3514 return __builtin_altivec_vmulesh(a, b); 3515} 3516 3517/* vec_vmuleuh */ 3518 3519static vector unsigned int __attribute__((__always_inline__)) 3520vec_vmuleuh(vector unsigned short a, vector unsigned short b) 3521{ 3522 return __builtin_altivec_vmuleuh(a, b); 3523} 3524 3525/* vec_mulo */ 3526 3527static vector short __ATTRS_o_ai 3528vec_mulo(vector signed char a, vector signed char b) 3529{ 3530 return __builtin_altivec_vmulosb(a, b); 3531} 3532 3533static vector unsigned short __ATTRS_o_ai 3534vec_mulo(vector unsigned char a, vector unsigned char b) 3535{ 3536 return __builtin_altivec_vmuloub(a, b); 3537} 3538 3539static vector int __ATTRS_o_ai 3540vec_mulo(vector short a, vector short b) 3541{ 3542 return __builtin_altivec_vmulosh(a, b); 3543} 3544 3545static vector unsigned int __ATTRS_o_ai 3546vec_mulo(vector unsigned short a, vector unsigned short b) 3547{ 3548 return __builtin_altivec_vmulouh(a, b); 3549} 3550 3551/* vec_vmulosb */ 3552 3553static vector short __attribute__((__always_inline__)) 3554vec_vmulosb(vector signed char a, vector signed char b) 3555{ 3556 return __builtin_altivec_vmulosb(a, b); 3557} 3558 3559/* vec_vmuloub */ 3560 3561static vector unsigned short __attribute__((__always_inline__)) 3562vec_vmuloub(vector unsigned char a, vector unsigned char b) 3563{ 3564 return __builtin_altivec_vmuloub(a, b); 3565} 3566 3567/* vec_vmulosh */ 3568 3569static vector int __attribute__((__always_inline__)) 3570vec_vmulosh(vector short a, vector short b) 3571{ 3572 return __builtin_altivec_vmulosh(a, b); 3573} 3574 3575/* vec_vmulouh */ 3576 3577static vector unsigned int __attribute__((__always_inline__)) 3578vec_vmulouh(vector unsigned short a, vector unsigned short b) 3579{ 3580 return __builtin_altivec_vmulouh(a, b); 3581} 3582 3583/* vec_nmsub */ 3584 3585static vector float __attribute__((__always_inline__)) 3586vec_nmsub(vector float a, vector float b, vector float c) 3587{ 3588 return __builtin_altivec_vnmsubfp(a, b, c); 3589} 3590 3591/* vec_vnmsubfp */ 3592 3593static vector float __attribute__((__always_inline__)) 3594vec_vnmsubfp(vector float a, vector float b, vector float c) 3595{ 3596 return __builtin_altivec_vnmsubfp(a, b, c); 3597} 3598 3599/* vec_nor */ 3600 3601#define __builtin_altivec_vnor vec_nor 3602 3603static vector signed char __ATTRS_o_ai 3604vec_nor(vector signed char a, vector signed char b) 3605{ 3606 return ~(a | b); 3607} 3608 3609static vector unsigned char __ATTRS_o_ai 3610vec_nor(vector unsigned char a, vector unsigned char b) 3611{ 3612 return ~(a | b); 3613} 3614 3615static vector bool char __ATTRS_o_ai 3616vec_nor(vector bool char a, vector bool char b) 3617{ 3618 return ~(a | b); 3619} 3620 3621static vector short __ATTRS_o_ai 3622vec_nor(vector short a, vector short b) 3623{ 3624 return ~(a | b); 3625} 3626 3627static vector unsigned short __ATTRS_o_ai 3628vec_nor(vector unsigned short a, vector unsigned short b) 3629{ 3630 return ~(a | b); 3631} 3632 3633static vector bool short __ATTRS_o_ai 3634vec_nor(vector bool short a, vector bool short b) 3635{ 3636 return ~(a | b); 3637} 3638 3639static vector int __ATTRS_o_ai 3640vec_nor(vector int a, vector int b) 3641{ 3642 return ~(a | b); 3643} 3644 3645static vector unsigned int __ATTRS_o_ai 3646vec_nor(vector unsigned int a, vector unsigned int b) 3647{ 3648 return ~(a | b); 3649} 3650 3651static vector bool int __ATTRS_o_ai 3652vec_nor(vector bool int a, vector bool int b) 3653{ 3654 return ~(a | b); 3655} 3656 3657static vector float __ATTRS_o_ai 3658vec_nor(vector float a, vector float b) 3659{ 3660 vector unsigned int res = ~((vector unsigned int)a | (vector unsigned int)b); 3661 return (vector float)res; 3662} 3663 3664/* vec_vnor */ 3665 3666static vector signed char __ATTRS_o_ai 3667vec_vnor(vector signed char a, vector signed char b) 3668{ 3669 return ~(a | b); 3670} 3671 3672static vector unsigned char __ATTRS_o_ai 3673vec_vnor(vector unsigned char a, vector unsigned char b) 3674{ 3675 return ~(a | b); 3676} 3677 3678static vector bool char __ATTRS_o_ai 3679vec_vnor(vector bool char a, vector bool char b) 3680{ 3681 return ~(a | b); 3682} 3683 3684static vector short __ATTRS_o_ai 3685vec_vnor(vector short a, vector short b) 3686{ 3687 return ~(a | b); 3688} 3689 3690static vector unsigned short __ATTRS_o_ai 3691vec_vnor(vector unsigned short a, vector unsigned short b) 3692{ 3693 return ~(a | b); 3694} 3695 3696static vector bool short __ATTRS_o_ai 3697vec_vnor(vector bool short a, vector bool short b) 3698{ 3699 return ~(a | b); 3700} 3701 3702static vector int __ATTRS_o_ai 3703vec_vnor(vector int a, vector int b) 3704{ 3705 return ~(a | b); 3706} 3707 3708static vector unsigned int __ATTRS_o_ai 3709vec_vnor(vector unsigned int a, vector unsigned int b) 3710{ 3711 return ~(a | b); 3712} 3713 3714static vector bool int __ATTRS_o_ai 3715vec_vnor(vector bool int a, vector bool int b) 3716{ 3717 return ~(a | b); 3718} 3719 3720static vector float __ATTRS_o_ai 3721vec_vnor(vector float a, vector float b) 3722{ 3723 vector unsigned int res = ~((vector unsigned int)a | (vector unsigned int)b); 3724 return (vector float)res; 3725} 3726 3727/* vec_or */ 3728 3729#define __builtin_altivec_vor vec_or 3730 3731static vector signed char __ATTRS_o_ai 3732vec_or(vector signed char a, vector signed char b) 3733{ 3734 return a | b; 3735} 3736 3737static vector signed char __ATTRS_o_ai 3738vec_or(vector bool char a, vector signed char b) 3739{ 3740 return (vector signed char)a | b; 3741} 3742 3743static vector signed char __ATTRS_o_ai 3744vec_or(vector signed char a, vector bool char b) 3745{ 3746 return a | (vector signed char)b; 3747} 3748 3749static vector unsigned char __ATTRS_o_ai 3750vec_or(vector unsigned char a, vector unsigned char b) 3751{ 3752 return a | b; 3753} 3754 3755static vector unsigned char __ATTRS_o_ai 3756vec_or(vector bool char a, vector unsigned char b) 3757{ 3758 return (vector unsigned char)a | b; 3759} 3760 3761static vector unsigned char __ATTRS_o_ai 3762vec_or(vector unsigned char a, vector bool char b) 3763{ 3764 return a | (vector unsigned char)b; 3765} 3766 3767static vector bool char __ATTRS_o_ai 3768vec_or(vector bool char a, vector bool char b) 3769{ 3770 return a | b; 3771} 3772 3773static vector short __ATTRS_o_ai 3774vec_or(vector short a, vector short b) 3775{ 3776 return a | b; 3777} 3778 3779static vector short __ATTRS_o_ai 3780vec_or(vector bool short a, vector short b) 3781{ 3782 return (vector short)a | b; 3783} 3784 3785static vector short __ATTRS_o_ai 3786vec_or(vector short a, vector bool short b) 3787{ 3788 return a | (vector short)b; 3789} 3790 3791static vector unsigned short __ATTRS_o_ai 3792vec_or(vector unsigned short a, vector unsigned short b) 3793{ 3794 return a | b; 3795} 3796 3797static vector unsigned short __ATTRS_o_ai 3798vec_or(vector bool short a, vector unsigned short b) 3799{ 3800 return (vector unsigned short)a | b; 3801} 3802 3803static vector unsigned short __ATTRS_o_ai 3804vec_or(vector unsigned short a, vector bool short b) 3805{ 3806 return a | (vector unsigned short)b; 3807} 3808 3809static vector bool short __ATTRS_o_ai 3810vec_or(vector bool short a, vector bool short b) 3811{ 3812 return a | b; 3813} 3814 3815static vector int __ATTRS_o_ai 3816vec_or(vector int a, vector int b) 3817{ 3818 return a | b; 3819} 3820 3821static vector int __ATTRS_o_ai 3822vec_or(vector bool int a, vector int b) 3823{ 3824 return (vector int)a | b; 3825} 3826 3827static vector int __ATTRS_o_ai 3828vec_or(vector int a, vector bool int b) 3829{ 3830 return a | (vector int)b; 3831} 3832 3833static vector unsigned int __ATTRS_o_ai 3834vec_or(vector unsigned int a, vector unsigned int b) 3835{ 3836 return a | b; 3837} 3838 3839static vector unsigned int __ATTRS_o_ai 3840vec_or(vector bool int a, vector unsigned int b) 3841{ 3842 return (vector unsigned int)a | b; 3843} 3844 3845static vector unsigned int __ATTRS_o_ai 3846vec_or(vector unsigned int a, vector bool int b) 3847{ 3848 return a | (vector unsigned int)b; 3849} 3850 3851static vector bool int __ATTRS_o_ai 3852vec_or(vector bool int a, vector bool int b) 3853{ 3854 return a | b; 3855} 3856 3857static vector float __ATTRS_o_ai 3858vec_or(vector float a, vector float b) 3859{ 3860 vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b; 3861 return (vector float)res; 3862} 3863 3864static vector float __ATTRS_o_ai 3865vec_or(vector bool int a, vector float b) 3866{ 3867 vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b; 3868 return (vector float)res; 3869} 3870 3871static vector float __ATTRS_o_ai 3872vec_or(vector float a, vector bool int b) 3873{ 3874 vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b; 3875 return (vector float)res; 3876} 3877 3878/* vec_vor */ 3879 3880static vector signed char __ATTRS_o_ai 3881vec_vor(vector signed char a, vector signed char b) 3882{ 3883 return a | b; 3884} 3885 3886static vector signed char __ATTRS_o_ai 3887vec_vor(vector bool char a, vector signed char b) 3888{ 3889 return (vector signed char)a | b; 3890} 3891 3892static vector signed char __ATTRS_o_ai 3893vec_vor(vector signed char a, vector bool char b) 3894{ 3895 return a | (vector signed char)b; 3896} 3897 3898static vector unsigned char __ATTRS_o_ai 3899vec_vor(vector unsigned char a, vector unsigned char b) 3900{ 3901 return a | b; 3902} 3903 3904static vector unsigned char __ATTRS_o_ai 3905vec_vor(vector bool char a, vector unsigned char b) 3906{ 3907 return (vector unsigned char)a | b; 3908} 3909 3910static vector unsigned char __ATTRS_o_ai 3911vec_vor(vector unsigned char a, vector bool char b) 3912{ 3913 return a | (vector unsigned char)b; 3914} 3915 3916static vector bool char __ATTRS_o_ai 3917vec_vor(vector bool char a, vector bool char b) 3918{ 3919 return a | b; 3920} 3921 3922static vector short __ATTRS_o_ai 3923vec_vor(vector short a, vector short b) 3924{ 3925 return a | b; 3926} 3927 3928static vector short __ATTRS_o_ai 3929vec_vor(vector bool short a, vector short b) 3930{ 3931 return (vector short)a | b; 3932} 3933 3934static vector short __ATTRS_o_ai 3935vec_vor(vector short a, vector bool short b) 3936{ 3937 return a | (vector short)b; 3938} 3939 3940static vector unsigned short __ATTRS_o_ai 3941vec_vor(vector unsigned short a, vector unsigned short b) 3942{ 3943 return a | b; 3944} 3945 3946static vector unsigned short __ATTRS_o_ai 3947vec_vor(vector bool short a, vector unsigned short b) 3948{ 3949 return (vector unsigned short)a | b; 3950} 3951 3952static vector unsigned short __ATTRS_o_ai 3953vec_vor(vector unsigned short a, vector bool short b) 3954{ 3955 return a | (vector unsigned short)b; 3956} 3957 3958static vector bool short __ATTRS_o_ai 3959vec_vor(vector bool short a, vector bool short b) 3960{ 3961 return a | b; 3962} 3963 3964static vector int __ATTRS_o_ai 3965vec_vor(vector int a, vector int b) 3966{ 3967 return a | b; 3968} 3969 3970static vector int __ATTRS_o_ai 3971vec_vor(vector bool int a, vector int b) 3972{ 3973 return (vector int)a | b; 3974} 3975 3976static vector int __ATTRS_o_ai 3977vec_vor(vector int a, vector bool int b) 3978{ 3979 return a | (vector int)b; 3980} 3981 3982static vector unsigned int __ATTRS_o_ai 3983vec_vor(vector unsigned int a, vector unsigned int b) 3984{ 3985 return a | b; 3986} 3987 3988static vector unsigned int __ATTRS_o_ai 3989vec_vor(vector bool int a, vector unsigned int b) 3990{ 3991 return (vector unsigned int)a | b; 3992} 3993 3994static vector unsigned int __ATTRS_o_ai 3995vec_vor(vector unsigned int a, vector bool int b) 3996{ 3997 return a | (vector unsigned int)b; 3998} 3999 4000static vector bool int __ATTRS_o_ai 4001vec_vor(vector bool int a, vector bool int b) 4002{ 4003 return a | b; 4004} 4005 4006static vector float __ATTRS_o_ai 4007vec_vor(vector float a, vector float b) 4008{ 4009 vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b; 4010 return (vector float)res; 4011} 4012 4013static vector float __ATTRS_o_ai 4014vec_vor(vector bool int a, vector float b) 4015{ 4016 vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b; 4017 return (vector float)res; 4018} 4019 4020static vector float __ATTRS_o_ai 4021vec_vor(vector float a, vector bool int b) 4022{ 4023 vector unsigned int res = (vector unsigned int)a | (vector unsigned int)b; 4024 return (vector float)res; 4025} 4026 4027/* vec_pack */ 4028 4029static vector signed char __ATTRS_o_ai 4030vec_pack(vector signed short a, vector signed short b) 4031{ 4032 return (vector signed char)vec_perm(a, b, (vector unsigned char) 4033 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 4034 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 4035} 4036 4037static vector unsigned char __ATTRS_o_ai 4038vec_pack(vector unsigned short a, vector unsigned short b) 4039{ 4040 return (vector unsigned char)vec_perm(a, b, (vector unsigned char) 4041 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 4042 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 4043} 4044 4045static vector bool char __ATTRS_o_ai 4046vec_pack(vector bool short a, vector bool short b) 4047{ 4048 return (vector bool char)vec_perm(a, b, (vector unsigned char) 4049 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 4050 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 4051} 4052 4053static vector short __ATTRS_o_ai 4054vec_pack(vector int a, vector int b) 4055{ 4056 return (vector short)vec_perm(a, b, (vector unsigned char) 4057 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 4058 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 4059} 4060 4061static vector unsigned short __ATTRS_o_ai 4062vec_pack(vector unsigned int a, vector unsigned int b) 4063{ 4064 return (vector unsigned short)vec_perm(a, b, (vector unsigned char) 4065 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 4066 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 4067} 4068 4069static vector bool short __ATTRS_o_ai 4070vec_pack(vector bool int a, vector bool int b) 4071{ 4072 return (vector bool short)vec_perm(a, b, (vector unsigned char) 4073 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 4074 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 4075} 4076 4077/* vec_vpkuhum */ 4078 4079#define __builtin_altivec_vpkuhum vec_vpkuhum 4080 4081static vector signed char __ATTRS_o_ai 4082vec_vpkuhum(vector signed short a, vector signed short b) 4083{ 4084 return (vector signed char)vec_perm(a, b, (vector unsigned char) 4085 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 4086 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 4087} 4088 4089static vector unsigned char __ATTRS_o_ai 4090vec_vpkuhum(vector unsigned short a, vector unsigned short b) 4091{ 4092 return (vector unsigned char)vec_perm(a, b, (vector unsigned char) 4093 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 4094 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 4095} 4096 4097static vector bool char __ATTRS_o_ai 4098vec_vpkuhum(vector bool short a, vector bool short b) 4099{ 4100 return (vector bool char)vec_perm(a, b, (vector unsigned char) 4101 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 4102 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F)); 4103} 4104 4105/* vec_vpkuwum */ 4106 4107#define __builtin_altivec_vpkuwum vec_vpkuwum 4108 4109static vector short __ATTRS_o_ai 4110vec_vpkuwum(vector int a, vector int b) 4111{ 4112 return (vector short)vec_perm(a, b, (vector unsigned char) 4113 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 4114 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 4115} 4116 4117static vector unsigned short __ATTRS_o_ai 4118vec_vpkuwum(vector unsigned int a, vector unsigned int b) 4119{ 4120 return (vector unsigned short)vec_perm(a, b, (vector unsigned char) 4121 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 4122 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 4123} 4124 4125static vector bool short __ATTRS_o_ai 4126vec_vpkuwum(vector bool int a, vector bool int b) 4127{ 4128 return (vector bool short)vec_perm(a, b, (vector unsigned char) 4129 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F, 4130 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F)); 4131} 4132 4133/* vec_packpx */ 4134 4135static vector pixel __attribute__((__always_inline__)) 4136vec_packpx(vector unsigned int a, vector unsigned int b) 4137{ 4138 return (vector pixel)__builtin_altivec_vpkpx(a, b); 4139} 4140 4141/* vec_vpkpx */ 4142 4143static vector pixel __attribute__((__always_inline__)) 4144vec_vpkpx(vector unsigned int a, vector unsigned int b) 4145{ 4146 return (vector pixel)__builtin_altivec_vpkpx(a, b); 4147} 4148 4149/* vec_packs */ 4150 4151static vector signed char __ATTRS_o_ai 4152vec_packs(vector short a, vector short b) 4153{ 4154 return __builtin_altivec_vpkshss(a, b); 4155} 4156 4157static vector unsigned char __ATTRS_o_ai 4158vec_packs(vector unsigned short a, vector unsigned short b) 4159{ 4160 return __builtin_altivec_vpkuhus(a, b); 4161} 4162 4163static vector signed short __ATTRS_o_ai 4164vec_packs(vector int a, vector int b) 4165{ 4166 return __builtin_altivec_vpkswss(a, b); 4167} 4168 4169static vector unsigned short __ATTRS_o_ai 4170vec_packs(vector unsigned int a, vector unsigned int b) 4171{ 4172 return __builtin_altivec_vpkuwus(a, b); 4173} 4174 4175/* vec_vpkshss */ 4176 4177static vector signed char __attribute__((__always_inline__)) 4178vec_vpkshss(vector short a, vector short b) 4179{ 4180 return __builtin_altivec_vpkshss(a, b); 4181} 4182 4183/* vec_vpkuhus */ 4184 4185static vector unsigned char __attribute__((__always_inline__)) 4186vec_vpkuhus(vector unsigned short a, vector unsigned short b) 4187{ 4188 return __builtin_altivec_vpkuhus(a, b); 4189} 4190 4191/* vec_vpkswss */ 4192 4193static vector signed short __attribute__((__always_inline__)) 4194vec_vpkswss(vector int a, vector int b) 4195{ 4196 return __builtin_altivec_vpkswss(a, b); 4197} 4198 4199/* vec_vpkuwus */ 4200 4201static vector unsigned short __attribute__((__always_inline__)) 4202vec_vpkuwus(vector unsigned int a, vector unsigned int b) 4203{ 4204 return __builtin_altivec_vpkuwus(a, b); 4205} 4206 4207/* vec_packsu */ 4208 4209static vector unsigned char __ATTRS_o_ai 4210vec_packsu(vector short a, vector short b) 4211{ 4212 return __builtin_altivec_vpkshus(a, b); 4213} 4214 4215static vector unsigned char __ATTRS_o_ai 4216vec_packsu(vector unsigned short a, vector unsigned short b) 4217{ 4218 return __builtin_altivec_vpkuhus(a, b); 4219} 4220 4221static vector unsigned short __ATTRS_o_ai 4222vec_packsu(vector int a, vector int b) 4223{ 4224 return __builtin_altivec_vpkswus(a, b); 4225} 4226 4227static vector unsigned short __ATTRS_o_ai 4228vec_packsu(vector unsigned int a, vector unsigned int b) 4229{ 4230 return __builtin_altivec_vpkuwus(a, b); 4231} 4232 4233/* vec_vpkshus */ 4234 4235static vector unsigned char __ATTRS_o_ai 4236vec_vpkshus(vector short a, vector short b) 4237{ 4238 return __builtin_altivec_vpkshus(a, b); 4239} 4240 4241static vector unsigned char __ATTRS_o_ai 4242vec_vpkshus(vector unsigned short a, vector unsigned short b) 4243{ 4244 return __builtin_altivec_vpkuhus(a, b); 4245} 4246 4247/* vec_vpkswus */ 4248 4249static vector unsigned short __ATTRS_o_ai 4250vec_vpkswus(vector int a, vector int b) 4251{ 4252 return __builtin_altivec_vpkswus(a, b); 4253} 4254 4255static vector unsigned short __ATTRS_o_ai 4256vec_vpkswus(vector unsigned int a, vector unsigned int b) 4257{ 4258 return __builtin_altivec_vpkuwus(a, b); 4259} 4260 4261/* vec_perm */ 4262 4263vector signed char __ATTRS_o_ai 4264vec_perm(vector signed char a, vector signed char b, vector unsigned char c) 4265{ 4266 return (vector signed char)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4267} 4268 4269vector unsigned char __ATTRS_o_ai 4270vec_perm(vector unsigned char a, vector unsigned char b, vector unsigned char c) 4271{ 4272 return (vector unsigned char)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4273} 4274 4275vector bool char __ATTRS_o_ai 4276vec_perm(vector bool char a, vector bool char b, vector unsigned char c) 4277{ 4278 return (vector bool char)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4279} 4280 4281vector short __ATTRS_o_ai 4282vec_perm(vector short a, vector short b, vector unsigned char c) 4283{ 4284 return (vector short)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4285} 4286 4287vector unsigned short __ATTRS_o_ai 4288vec_perm(vector unsigned short a, vector unsigned short b, vector unsigned char c) 4289{ 4290 return (vector unsigned short)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4291} 4292 4293vector bool short __ATTRS_o_ai 4294vec_perm(vector bool short a, vector bool short b, vector unsigned char c) 4295{ 4296 return (vector bool short)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4297} 4298 4299vector pixel __ATTRS_o_ai 4300vec_perm(vector pixel a, vector pixel b, vector unsigned char c) 4301{ 4302 return (vector pixel)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4303} 4304 4305vector int __ATTRS_o_ai 4306vec_perm(vector int a, vector int b, vector unsigned char c) 4307{ 4308 return (vector int)__builtin_altivec_vperm_4si(a, b, c); 4309} 4310 4311vector unsigned int __ATTRS_o_ai 4312vec_perm(vector unsigned int a, vector unsigned int b, vector unsigned char c) 4313{ 4314 return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4315} 4316 4317vector bool int __ATTRS_o_ai 4318vec_perm(vector bool int a, vector bool int b, vector unsigned char c) 4319{ 4320 return (vector bool int)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4321} 4322 4323vector float __ATTRS_o_ai 4324vec_perm(vector float a, vector float b, vector unsigned char c) 4325{ 4326 return (vector float)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4327} 4328 4329/* vec_vperm */ 4330 4331vector signed char __ATTRS_o_ai 4332vec_vperm(vector signed char a, vector signed char b, vector unsigned char c) 4333{ 4334 return (vector signed char)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4335} 4336 4337vector unsigned char __ATTRS_o_ai 4338vec_vperm(vector unsigned char a, vector unsigned char b, vector unsigned char c) 4339{ 4340 return (vector unsigned char)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4341} 4342 4343vector bool char __ATTRS_o_ai 4344vec_vperm(vector bool char a, vector bool char b, vector unsigned char c) 4345{ 4346 return (vector bool char)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4347} 4348 4349vector short __ATTRS_o_ai 4350vec_vperm(vector short a, vector short b, vector unsigned char c) 4351{ 4352 return (vector short)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4353} 4354 4355vector unsigned short __ATTRS_o_ai 4356vec_vperm(vector unsigned short a, vector unsigned short b, vector unsigned char c) 4357{ 4358 return (vector unsigned short)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4359} 4360 4361vector bool short __ATTRS_o_ai 4362vec_vperm(vector bool short a, vector bool short b, vector unsigned char c) 4363{ 4364 return (vector bool short)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4365} 4366 4367vector pixel __ATTRS_o_ai 4368vec_vperm(vector pixel a, vector pixel b, vector unsigned char c) 4369{ 4370 return (vector pixel)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4371} 4372 4373vector int __ATTRS_o_ai 4374vec_vperm(vector int a, vector int b, vector unsigned char c) 4375{ 4376 return (vector int)__builtin_altivec_vperm_4si(a, b, c); 4377} 4378 4379vector unsigned int __ATTRS_o_ai 4380vec_vperm(vector unsigned int a, vector unsigned int b, vector unsigned char c) 4381{ 4382 return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4383} 4384 4385vector bool int __ATTRS_o_ai 4386vec_vperm(vector bool int a, vector bool int b, vector unsigned char c) 4387{ 4388 return (vector bool int)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4389} 4390 4391vector float __ATTRS_o_ai 4392vec_vperm(vector float a, vector float b, vector unsigned char c) 4393{ 4394 return (vector float)__builtin_altivec_vperm_4si((vector int)a, (vector int)b, c); 4395} 4396 4397/* vec_re */ 4398 4399vector float __attribute__((__always_inline__)) 4400vec_re(vector float a) 4401{ 4402 return __builtin_altivec_vrefp(a); 4403} 4404 4405/* vec_vrefp */ 4406 4407vector float __attribute__((__always_inline__)) 4408vec_vrefp(vector float a) 4409{ 4410 return __builtin_altivec_vrefp(a); 4411} 4412 4413/* vec_rl */ 4414 4415static vector signed char __ATTRS_o_ai 4416vec_rl(vector signed char a, vector unsigned char b) 4417{ 4418 return (vector signed char)__builtin_altivec_vrlb((vector char)a, b); 4419} 4420 4421static vector unsigned char __ATTRS_o_ai 4422vec_rl(vector unsigned char a, vector unsigned char b) 4423{ 4424 return (vector unsigned char)__builtin_altivec_vrlb((vector char)a, b); 4425} 4426 4427static vector short __ATTRS_o_ai 4428vec_rl(vector short a, vector unsigned short b) 4429{ 4430 return __builtin_altivec_vrlh(a, b); 4431} 4432 4433static vector unsigned short __ATTRS_o_ai 4434vec_rl(vector unsigned short a, vector unsigned short b) 4435{ 4436 return (vector unsigned short)__builtin_altivec_vrlh((vector short)a, b); 4437} 4438 4439static vector int __ATTRS_o_ai 4440vec_rl(vector int a, vector unsigned int b) 4441{ 4442 return __builtin_altivec_vrlw(a, b); 4443} 4444 4445static vector unsigned int __ATTRS_o_ai 4446vec_rl(vector unsigned int a, vector unsigned int b) 4447{ 4448 return (vector unsigned int)__builtin_altivec_vrlw((vector int)a, b); 4449} 4450 4451/* vec_vrlb */ 4452 4453static vector signed char __ATTRS_o_ai 4454vec_vrlb(vector signed char a, vector unsigned char b) 4455{ 4456 return (vector signed char)__builtin_altivec_vrlb((vector char)a, b); 4457} 4458 4459static vector unsigned char __ATTRS_o_ai 4460vec_vrlb(vector unsigned char a, vector unsigned char b) 4461{ 4462 return (vector unsigned char)__builtin_altivec_vrlb((vector char)a, b); 4463} 4464 4465/* vec_vrlh */ 4466 4467static vector short __ATTRS_o_ai 4468vec_vrlh(vector short a, vector unsigned short b) 4469{ 4470 return __builtin_altivec_vrlh(a, b); 4471} 4472 4473static vector unsigned short __ATTRS_o_ai 4474vec_vrlh(vector unsigned short a, vector unsigned short b) 4475{ 4476 return (vector unsigned short)__builtin_altivec_vrlh((vector short)a, b); 4477} 4478 4479/* vec_vrlw */ 4480 4481static vector int __ATTRS_o_ai 4482vec_vrlw(vector int a, vector unsigned int b) 4483{ 4484 return __builtin_altivec_vrlw(a, b); 4485} 4486 4487static vector unsigned int __ATTRS_o_ai 4488vec_vrlw(vector unsigned int a, vector unsigned int b) 4489{ 4490 return (vector unsigned int)__builtin_altivec_vrlw((vector int)a, b); 4491} 4492 4493/* vec_round */ 4494 4495static vector float __attribute__((__always_inline__)) 4496vec_round(vector float a) 4497{ 4498 return __builtin_altivec_vrfin(a); 4499} 4500 4501/* vec_vrfin */ 4502 4503static vector float __attribute__((__always_inline__)) 4504vec_vrfin(vector float a) 4505{ 4506 return __builtin_altivec_vrfin(a); 4507} 4508 4509/* vec_rsqrte */ 4510 4511static __vector float __attribute__((__always_inline__)) 4512vec_rsqrte(vector float a) 4513{ 4514 return __builtin_altivec_vrsqrtefp(a); 4515} 4516 4517/* vec_vrsqrtefp */ 4518 4519static __vector float __attribute__((__always_inline__)) 4520vec_vrsqrtefp(vector float a) 4521{ 4522 return __builtin_altivec_vrsqrtefp(a); 4523} 4524 4525/* vec_sel */ 4526 4527#define __builtin_altivec_vsel_4si vec_sel 4528 4529static vector signed char __ATTRS_o_ai 4530vec_sel(vector signed char a, vector signed char b, vector unsigned char c) 4531{ 4532 return (a & ~(vector signed char)c) | (b & (vector signed char)c); 4533} 4534 4535static vector signed char __ATTRS_o_ai 4536vec_sel(vector signed char a, vector signed char b, vector bool char c) 4537{ 4538 return (a & ~(vector signed char)c) | (b & (vector signed char)c); 4539} 4540 4541static vector unsigned char __ATTRS_o_ai 4542vec_sel(vector unsigned char a, vector unsigned char b, vector unsigned char c) 4543{ 4544 return (a & ~c) | (b & c); 4545} 4546 4547static vector unsigned char __ATTRS_o_ai 4548vec_sel(vector unsigned char a, vector unsigned char b, vector bool char c) 4549{ 4550 return (a & ~(vector unsigned char)c) | (b & (vector unsigned char)c); 4551} 4552 4553static vector bool char __ATTRS_o_ai 4554vec_sel(vector bool char a, vector bool char b, vector unsigned char c) 4555{ 4556 return (a & ~(vector bool char)c) | (b & (vector bool char)c); 4557} 4558 4559static vector bool char __ATTRS_o_ai 4560vec_sel(vector bool char a, vector bool char b, vector bool char c) 4561{ 4562 return (a & ~c) | (b & c); 4563} 4564 4565static vector short __ATTRS_o_ai 4566vec_sel(vector short a, vector short b, vector unsigned short c) 4567{ 4568 return (a & ~(vector short)c) | (b & (vector short)c); 4569} 4570 4571static vector short __ATTRS_o_ai 4572vec_sel(vector short a, vector short b, vector bool short c) 4573{ 4574 return (a & ~(vector short)c) | (b & (vector short)c); 4575} 4576 4577static vector unsigned short __ATTRS_o_ai 4578vec_sel(vector unsigned short a, vector unsigned short b, vector unsigned short c) 4579{ 4580 return (a & ~c) | (b & c); 4581} 4582 4583static vector unsigned short __ATTRS_o_ai 4584vec_sel(vector unsigned short a, vector unsigned short b, vector bool short c) 4585{ 4586 return (a & ~(vector unsigned short)c) | (b & (vector unsigned short)c); 4587} 4588 4589static vector bool short __ATTRS_o_ai 4590vec_sel(vector bool short a, vector bool short b, vector unsigned short c) 4591{ 4592 return (a & ~(vector bool short)c) | (b & (vector bool short)c); 4593} 4594 4595static vector bool short __ATTRS_o_ai 4596vec_sel(vector bool short a, vector bool short b, vector bool short c) 4597{ 4598 return (a & ~c) | (b & c); 4599} 4600 4601static vector int __ATTRS_o_ai 4602vec_sel(vector int a, vector int b, vector unsigned int c) 4603{ 4604 return (a & ~(vector int)c) | (b & (vector int)c); 4605} 4606 4607static vector int __ATTRS_o_ai 4608vec_sel(vector int a, vector int b, vector bool int c) 4609{ 4610 return (a & ~(vector int)c) | (b & (vector int)c); 4611} 4612 4613static vector unsigned int __ATTRS_o_ai 4614vec_sel(vector unsigned int a, vector unsigned int b, vector unsigned int c) 4615{ 4616 return (a & ~c) | (b & c); 4617} 4618 4619static vector unsigned int __ATTRS_o_ai 4620vec_sel(vector unsigned int a, vector unsigned int b, vector bool int c) 4621{ 4622 return (a & ~(vector unsigned int)c) | (b & (vector unsigned int)c); 4623} 4624 4625static vector bool int __ATTRS_o_ai 4626vec_sel(vector bool int a, vector bool int b, vector unsigned int c) 4627{ 4628 return (a & ~(vector bool int)c) | (b & (vector bool int)c); 4629} 4630 4631static vector bool int __ATTRS_o_ai 4632vec_sel(vector bool int a, vector bool int b, vector bool int c) 4633{ 4634 return (a & ~c) | (b & c); 4635} 4636 4637static vector float __ATTRS_o_ai 4638vec_sel(vector float a, vector float b, vector unsigned int c) 4639{ 4640 vector int res = ((vector int)a & ~(vector int)c) | ((vector int)b & (vector int)c); 4641 return (vector float)res; 4642} 4643 4644static vector float __ATTRS_o_ai 4645vec_sel(vector float a, vector float b, vector bool int c) 4646{ 4647 vector int res = ((vector int)a & ~(vector int)c) | ((vector int)b & (vector int)c); 4648 return (vector float)res; 4649} 4650 4651/* vec_vsel */ 4652 4653static vector signed char __ATTRS_o_ai 4654vec_vsel(vector signed char a, vector signed char b, vector unsigned char c) 4655{ 4656 return (a & ~(vector signed char)c) | (b & (vector signed char)c); 4657} 4658 4659static vector signed char __ATTRS_o_ai 4660vec_vsel(vector signed char a, vector signed char b, vector bool char c) 4661{ 4662 return (a & ~(vector signed char)c) | (b & (vector signed char)c); 4663} 4664 4665static vector unsigned char __ATTRS_o_ai 4666vec_vsel(vector unsigned char a, vector unsigned char b, vector unsigned char c) 4667{ 4668 return (a & ~c) | (b & c); 4669} 4670 4671static vector unsigned char __ATTRS_o_ai 4672vec_vsel(vector unsigned char a, vector unsigned char b, vector bool char c) 4673{ 4674 return (a & ~(vector unsigned char)c) | (b & (vector unsigned char)c); 4675} 4676 4677static vector bool char __ATTRS_o_ai 4678vec_vsel(vector bool char a, vector bool char b, vector unsigned char c) 4679{ 4680 return (a & ~(vector bool char)c) | (b & (vector bool char)c); 4681} 4682 4683static vector bool char __ATTRS_o_ai 4684vec_vsel(vector bool char a, vector bool char b, vector bool char c) 4685{ 4686 return (a & ~c) | (b & c); 4687} 4688 4689static vector short __ATTRS_o_ai 4690vec_vsel(vector short a, vector short b, vector unsigned short c) 4691{ 4692 return (a & ~(vector short)c) | (b & (vector short)c); 4693} 4694 4695static vector short __ATTRS_o_ai 4696vec_vsel(vector short a, vector short b, vector bool short c) 4697{ 4698 return (a & ~(vector short)c) | (b & (vector short)c); 4699} 4700 4701static vector unsigned short __ATTRS_o_ai 4702vec_vsel(vector unsigned short a, vector unsigned short b, vector unsigned short c) 4703{ 4704 return (a & ~c) | (b & c); 4705} 4706 4707static vector unsigned short __ATTRS_o_ai 4708vec_vsel(vector unsigned short a, vector unsigned short b, vector bool short c) 4709{ 4710 return (a & ~(vector unsigned short)c) | (b & (vector unsigned short)c); 4711} 4712 4713static vector bool short __ATTRS_o_ai 4714vec_vsel(vector bool short a, vector bool short b, vector unsigned short c) 4715{ 4716 return (a & ~(vector bool short)c) | (b & (vector bool short)c); 4717} 4718 4719static vector bool short __ATTRS_o_ai 4720vec_vsel(vector bool short a, vector bool short b, vector bool short c) 4721{ 4722 return (a & ~c) | (b & c); 4723} 4724 4725static vector int __ATTRS_o_ai 4726vec_vsel(vector int a, vector int b, vector unsigned int c) 4727{ 4728 return (a & ~(vector int)c) | (b & (vector int)c); 4729} 4730 4731static vector int __ATTRS_o_ai 4732vec_vsel(vector int a, vector int b, vector bool int c) 4733{ 4734 return (a & ~(vector int)c) | (b & (vector int)c); 4735} 4736 4737static vector unsigned int __ATTRS_o_ai 4738vec_vsel(vector unsigned int a, vector unsigned int b, vector unsigned int c) 4739{ 4740 return (a & ~c) | (b & c); 4741} 4742 4743static vector unsigned int __ATTRS_o_ai 4744vec_vsel(vector unsigned int a, vector unsigned int b, vector bool int c) 4745{ 4746 return (a & ~(vector unsigned int)c) | (b & (vector unsigned int)c); 4747} 4748 4749static vector bool int __ATTRS_o_ai 4750vec_vsel(vector bool int a, vector bool int b, vector unsigned int c) 4751{ 4752 return (a & ~(vector bool int)c) | (b & (vector bool int)c); 4753} 4754 4755static vector bool int __ATTRS_o_ai 4756vec_vsel(vector bool int a, vector bool int b, vector bool int c) 4757{ 4758 return (a & ~c) | (b & c); 4759} 4760 4761static vector float __ATTRS_o_ai 4762vec_vsel(vector float a, vector float b, vector unsigned int c) 4763{ 4764 vector int res = ((vector int)a & ~(vector int)c) | ((vector int)b & (vector int)c); 4765 return (vector float)res; 4766} 4767 4768static vector float __ATTRS_o_ai 4769vec_vsel(vector float a, vector float b, vector bool int c) 4770{ 4771 vector int res = ((vector int)a & ~(vector int)c) | ((vector int)b & (vector int)c); 4772 return (vector float)res; 4773} 4774 4775/* vec_sl */ 4776 4777static vector signed char __ATTRS_o_ai 4778vec_sl(vector signed char a, vector unsigned char b) 4779{ 4780 return a << (vector signed char)b; 4781} 4782 4783static vector unsigned char __ATTRS_o_ai 4784vec_sl(vector unsigned char a, vector unsigned char b) 4785{ 4786 return a << b; 4787} 4788 4789static vector short __ATTRS_o_ai 4790vec_sl(vector short a, vector unsigned short b) 4791{ 4792 return a << (vector short)b; 4793} 4794 4795static vector unsigned short __ATTRS_o_ai 4796vec_sl(vector unsigned short a, vector unsigned short b) 4797{ 4798 return a << b; 4799} 4800 4801static vector int __ATTRS_o_ai 4802vec_sl(vector int a, vector unsigned int b) 4803{ 4804 return a << (vector int)b; 4805} 4806 4807static vector unsigned int __ATTRS_o_ai 4808vec_sl(vector unsigned int a, vector unsigned int b) 4809{ 4810 return a << b; 4811} 4812 4813/* vec_vslb */ 4814 4815#define __builtin_altivec_vslb vec_vslb 4816 4817static vector signed char __ATTRS_o_ai 4818vec_vslb(vector signed char a, vector unsigned char b) 4819{ 4820 return vec_sl(a, b); 4821} 4822 4823static vector unsigned char __ATTRS_o_ai 4824vec_vslb(vector unsigned char a, vector unsigned char b) 4825{ 4826 return vec_sl(a, b); 4827} 4828 4829/* vec_vslh */ 4830 4831#define __builtin_altivec_vslh vec_vslh 4832 4833static vector short __ATTRS_o_ai 4834vec_vslh(vector short a, vector unsigned short b) 4835{ 4836 return vec_sl(a, b); 4837} 4838 4839static vector unsigned short __ATTRS_o_ai 4840vec_vslh(vector unsigned short a, vector unsigned short b) 4841{ 4842 return vec_sl(a, b); 4843} 4844 4845/* vec_vslw */ 4846 4847#define __builtin_altivec_vslw vec_vslw 4848 4849static vector int __ATTRS_o_ai 4850vec_vslw(vector int a, vector unsigned int b) 4851{ 4852 return vec_sl(a, b); 4853} 4854 4855static vector unsigned int __ATTRS_o_ai 4856vec_vslw(vector unsigned int a, vector unsigned int b) 4857{ 4858 return vec_sl(a, b); 4859} 4860 4861/* vec_sld */ 4862 4863#define __builtin_altivec_vsldoi_4si vec_sld 4864 4865static vector signed char __ATTRS_o_ai 4866vec_sld(vector signed char a, vector signed char b, unsigned char c) 4867{ 4868 return vec_perm(a, b, (vector unsigned char) 4869 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4870 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4871} 4872 4873static vector unsigned char __ATTRS_o_ai 4874vec_sld(vector unsigned char a, vector unsigned char b, unsigned char c) 4875{ 4876 return vec_perm(a, b, (vector unsigned char) 4877 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4878 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4879} 4880 4881static vector short __ATTRS_o_ai 4882vec_sld(vector short a, vector short b, unsigned char c) 4883{ 4884 return vec_perm(a, b, (vector unsigned char) 4885 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4886 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4887} 4888 4889static vector unsigned short __ATTRS_o_ai 4890vec_sld(vector unsigned short a, vector unsigned short b, unsigned char c) 4891{ 4892 return vec_perm(a, b, (vector unsigned char) 4893 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4894 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4895} 4896 4897static vector pixel __ATTRS_o_ai 4898vec_sld(vector pixel a, vector pixel b, unsigned char c) 4899{ 4900 return vec_perm(a, b, (vector unsigned char) 4901 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4902 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4903} 4904 4905static vector int __ATTRS_o_ai 4906vec_sld(vector int a, vector int b, unsigned char c) 4907{ 4908 return vec_perm(a, b, (vector unsigned char) 4909 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4910 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4911} 4912 4913static vector unsigned int __ATTRS_o_ai 4914vec_sld(vector unsigned int a, vector unsigned int b, unsigned char c) 4915{ 4916 return vec_perm(a, b, (vector unsigned char) 4917 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4918 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4919} 4920 4921static vector float __ATTRS_o_ai 4922vec_sld(vector float a, vector float b, unsigned char c) 4923{ 4924 return vec_perm(a, b, (vector unsigned char) 4925 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4926 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4927} 4928 4929/* vec_vsldoi */ 4930 4931static vector signed char __ATTRS_o_ai 4932vec_vsldoi(vector signed char a, vector signed char b, unsigned char c) 4933{ 4934 return vec_perm(a, b, (vector unsigned char) 4935 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4936 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4937} 4938 4939static vector unsigned char __ATTRS_o_ai 4940vec_vsldoi(vector unsigned char a, vector unsigned char b, unsigned char c) 4941{ 4942 return vec_perm(a, b, (vector unsigned char) 4943 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4944 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4945} 4946 4947static vector short __ATTRS_o_ai 4948vec_vsldoi(vector short a, vector short b, unsigned char c) 4949{ 4950 return vec_perm(a, b, (vector unsigned char) 4951 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4952 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4953} 4954 4955static vector unsigned short __ATTRS_o_ai 4956vec_vsldoi(vector unsigned short a, vector unsigned short b, unsigned char c) 4957{ 4958 return vec_perm(a, b, (vector unsigned char) 4959 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4960 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4961} 4962 4963static vector pixel __ATTRS_o_ai 4964vec_vsldoi(vector pixel a, vector pixel b, unsigned char c) 4965{ 4966 return vec_perm(a, b, (vector unsigned char) 4967 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4968 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4969} 4970 4971static vector int __ATTRS_o_ai 4972vec_vsldoi(vector int a, vector int b, unsigned char c) 4973{ 4974 return vec_perm(a, b, (vector unsigned char) 4975 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4976 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4977} 4978 4979static vector unsigned int __ATTRS_o_ai 4980vec_vsldoi(vector unsigned int a, vector unsigned int b, unsigned char c) 4981{ 4982 return vec_perm(a, b, (vector unsigned char) 4983 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4984 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4985} 4986 4987static vector float __ATTRS_o_ai 4988vec_vsldoi(vector float a, vector float b, unsigned char c) 4989{ 4990 return vec_perm(a, b, (vector unsigned char) 4991 (c, c+1, c+2, c+3, c+4, c+5, c+6, c+7, 4992 c+8, c+9, c+10, c+11, c+12, c+13, c+14, c+15)); 4993} 4994 4995/* vec_sll */ 4996 4997static vector signed char __ATTRS_o_ai 4998vec_sll(vector signed char a, vector unsigned char b) 4999{ 5000 return (vector signed char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5001} 5002 5003static vector signed char __ATTRS_o_ai 5004vec_sll(vector signed char a, vector unsigned short b) 5005{ 5006 return (vector signed char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5007} 5008 5009static vector signed char __ATTRS_o_ai 5010vec_sll(vector signed char a, vector unsigned int b) 5011{ 5012 return (vector signed char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5013} 5014 5015static vector unsigned char __ATTRS_o_ai 5016vec_sll(vector unsigned char a, vector unsigned char b) 5017{ 5018 return (vector unsigned char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5019} 5020 5021static vector unsigned char __ATTRS_o_ai 5022vec_sll(vector unsigned char a, vector unsigned short b) 5023{ 5024 return (vector unsigned char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5025} 5026 5027static vector unsigned char __ATTRS_o_ai 5028vec_sll(vector unsigned char a, vector unsigned int b) 5029{ 5030 return (vector unsigned char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5031} 5032 5033static vector bool char __ATTRS_o_ai 5034vec_sll(vector bool char a, vector unsigned char b) 5035{ 5036 return (vector bool char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5037} 5038 5039static vector bool char __ATTRS_o_ai 5040vec_sll(vector bool char a, vector unsigned short b) 5041{ 5042 return (vector bool char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5043} 5044 5045static vector bool char __ATTRS_o_ai 5046vec_sll(vector bool char a, vector unsigned int b) 5047{ 5048 return (vector bool char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5049} 5050 5051static vector short __ATTRS_o_ai 5052vec_sll(vector short a, vector unsigned char b) 5053{ 5054 return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5055} 5056 5057static vector short __ATTRS_o_ai 5058vec_sll(vector short a, vector unsigned short b) 5059{ 5060 return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5061} 5062 5063static vector short __ATTRS_o_ai 5064vec_sll(vector short a, vector unsigned int b) 5065{ 5066 return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5067} 5068 5069static vector unsigned short __ATTRS_o_ai 5070vec_sll(vector unsigned short a, vector unsigned char b) 5071{ 5072 return (vector unsigned short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5073} 5074 5075static vector unsigned short __ATTRS_o_ai 5076vec_sll(vector unsigned short a, vector unsigned short b) 5077{ 5078 return (vector unsigned short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5079} 5080 5081static vector unsigned short __ATTRS_o_ai 5082vec_sll(vector unsigned short a, vector unsigned int b) 5083{ 5084 return (vector unsigned short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5085} 5086 5087static vector bool short __ATTRS_o_ai 5088vec_sll(vector bool short a, vector unsigned char b) 5089{ 5090 return (vector bool short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5091} 5092 5093static vector bool short __ATTRS_o_ai 5094vec_sll(vector bool short a, vector unsigned short b) 5095{ 5096 return (vector bool short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5097} 5098 5099static vector bool short __ATTRS_o_ai 5100vec_sll(vector bool short a, vector unsigned int b) 5101{ 5102 return (vector bool short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5103} 5104 5105static vector pixel __ATTRS_o_ai 5106vec_sll(vector pixel a, vector unsigned char b) 5107{ 5108 return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b); 5109} 5110 5111static vector pixel __ATTRS_o_ai 5112vec_sll(vector pixel a, vector unsigned short b) 5113{ 5114 return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b); 5115} 5116 5117static vector pixel __ATTRS_o_ai 5118vec_sll(vector pixel a, vector unsigned int b) 5119{ 5120 return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b); 5121} 5122 5123static vector int __ATTRS_o_ai 5124vec_sll(vector int a, vector unsigned char b) 5125{ 5126 return (vector int)__builtin_altivec_vsl(a, (vector int)b); 5127} 5128 5129static vector int __ATTRS_o_ai 5130vec_sll(vector int a, vector unsigned short b) 5131{ 5132 return (vector int)__builtin_altivec_vsl(a, (vector int)b); 5133} 5134 5135static vector int __ATTRS_o_ai 5136vec_sll(vector int a, vector unsigned int b) 5137{ 5138 return (vector int)__builtin_altivec_vsl(a, (vector int)b); 5139} 5140 5141static vector unsigned int __ATTRS_o_ai 5142vec_sll(vector unsigned int a, vector unsigned char b) 5143{ 5144 return (vector unsigned int)__builtin_altivec_vsl((vector int)a, (vector int)b); 5145} 5146 5147static vector unsigned int __ATTRS_o_ai 5148vec_sll(vector unsigned int a, vector unsigned short b) 5149{ 5150 return (vector unsigned int)__builtin_altivec_vsl((vector int)a, (vector int)b); 5151} 5152 5153static vector unsigned int __ATTRS_o_ai 5154vec_sll(vector unsigned int a, vector unsigned int b) 5155{ 5156 return (vector unsigned int)__builtin_altivec_vsl((vector int)a, (vector int)b); 5157} 5158 5159static vector bool int __ATTRS_o_ai 5160vec_sll(vector bool int a, vector unsigned char b) 5161{ 5162 return (vector bool int)__builtin_altivec_vsl((vector int)a, (vector int)b); 5163} 5164 5165static vector bool int __ATTRS_o_ai 5166vec_sll(vector bool int a, vector unsigned short b) 5167{ 5168 return (vector bool int)__builtin_altivec_vsl((vector int)a, (vector int)b); 5169} 5170 5171static vector bool int __ATTRS_o_ai 5172vec_sll(vector bool int a, vector unsigned int b) 5173{ 5174 return (vector bool int)__builtin_altivec_vsl((vector int)a, (vector int)b); 5175} 5176 5177/* vec_vsl */ 5178 5179static vector signed char __ATTRS_o_ai 5180vec_vsl(vector signed char a, vector unsigned char b) 5181{ 5182 return (vector signed char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5183} 5184 5185static vector signed char __ATTRS_o_ai 5186vec_vsl(vector signed char a, vector unsigned short b) 5187{ 5188 return (vector signed char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5189} 5190 5191static vector signed char __ATTRS_o_ai 5192vec_vsl(vector signed char a, vector unsigned int b) 5193{ 5194 return (vector signed char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5195} 5196 5197static vector unsigned char __ATTRS_o_ai 5198vec_vsl(vector unsigned char a, vector unsigned char b) 5199{ 5200 return (vector unsigned char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5201} 5202 5203static vector unsigned char __ATTRS_o_ai 5204vec_vsl(vector unsigned char a, vector unsigned short b) 5205{ 5206 return (vector unsigned char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5207} 5208 5209static vector unsigned char __ATTRS_o_ai 5210vec_vsl(vector unsigned char a, vector unsigned int b) 5211{ 5212 return (vector unsigned char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5213} 5214 5215static vector bool char __ATTRS_o_ai 5216vec_vsl(vector bool char a, vector unsigned char b) 5217{ 5218 return (vector bool char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5219} 5220 5221static vector bool char __ATTRS_o_ai 5222vec_vsl(vector bool char a, vector unsigned short b) 5223{ 5224 return (vector bool char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5225} 5226 5227static vector bool char __ATTRS_o_ai 5228vec_vsl(vector bool char a, vector unsigned int b) 5229{ 5230 return (vector bool char)__builtin_altivec_vsl((vector int)a, (vector int)b); 5231} 5232 5233static vector short __ATTRS_o_ai 5234vec_vsl(vector short a, vector unsigned char b) 5235{ 5236 return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5237} 5238 5239static vector short __ATTRS_o_ai 5240vec_vsl(vector short a, vector unsigned short b) 5241{ 5242 return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5243} 5244 5245static vector short __ATTRS_o_ai 5246vec_vsl(vector short a, vector unsigned int b) 5247{ 5248 return (vector short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5249} 5250 5251static vector unsigned short __ATTRS_o_ai 5252vec_vsl(vector unsigned short a, vector unsigned char b) 5253{ 5254 return (vector unsigned short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5255} 5256 5257static vector unsigned short __ATTRS_o_ai 5258vec_vsl(vector unsigned short a, vector unsigned short b) 5259{ 5260 return (vector unsigned short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5261} 5262 5263static vector unsigned short __ATTRS_o_ai 5264vec_vsl(vector unsigned short a, vector unsigned int b) 5265{ 5266 return (vector unsigned short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5267} 5268 5269static vector bool short __ATTRS_o_ai 5270vec_vsl(vector bool short a, vector unsigned char b) 5271{ 5272 return (vector bool short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5273} 5274 5275static vector bool short __ATTRS_o_ai 5276vec_vsl(vector bool short a, vector unsigned short b) 5277{ 5278 return (vector bool short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5279} 5280 5281static vector bool short __ATTRS_o_ai 5282vec_vsl(vector bool short a, vector unsigned int b) 5283{ 5284 return (vector bool short)__builtin_altivec_vsl((vector int)a, (vector int)b); 5285} 5286 5287static vector pixel __ATTRS_o_ai 5288vec_vsl(vector pixel a, vector unsigned char b) 5289{ 5290 return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b); 5291} 5292 5293static vector pixel __ATTRS_o_ai 5294vec_vsl(vector pixel a, vector unsigned short b) 5295{ 5296 return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b); 5297} 5298 5299static vector pixel __ATTRS_o_ai 5300vec_vsl(vector pixel a, vector unsigned int b) 5301{ 5302 return (vector pixel)__builtin_altivec_vsl((vector int)a, (vector int)b); 5303} 5304 5305static vector int __ATTRS_o_ai 5306vec_vsl(vector int a, vector unsigned char b) 5307{ 5308 return (vector int)__builtin_altivec_vsl(a, (vector int)b); 5309} 5310 5311static vector int __ATTRS_o_ai 5312vec_vsl(vector int a, vector unsigned short b) 5313{ 5314 return (vector int)__builtin_altivec_vsl(a, (vector int)b); 5315} 5316 5317static vector int __ATTRS_o_ai 5318vec_vsl(vector int a, vector unsigned int b) 5319{ 5320 return (vector int)__builtin_altivec_vsl(a, (vector int)b); 5321} 5322 5323static vector unsigned int __ATTRS_o_ai 5324vec_vsl(vector unsigned int a, vector unsigned char b) 5325{ 5326 return (vector unsigned int)__builtin_altivec_vsl((vector int)a, (vector int)b); 5327} 5328 5329static vector unsigned int __ATTRS_o_ai 5330vec_vsl(vector unsigned int a, vector unsigned short b) 5331{ 5332 return (vector unsigned int)__builtin_altivec_vsl((vector int)a, (vector int)b); 5333} 5334 5335static vector unsigned int __ATTRS_o_ai 5336vec_vsl(vector unsigned int a, vector unsigned int b) 5337{ 5338 return (vector unsigned int)__builtin_altivec_vsl((vector int)a, (vector int)b); 5339} 5340 5341static vector bool int __ATTRS_o_ai 5342vec_vsl(vector bool int a, vector unsigned char b) 5343{ 5344 return (vector bool int)__builtin_altivec_vsl((vector int)a, (vector int)b); 5345} 5346 5347static vector bool int __ATTRS_o_ai 5348vec_vsl(vector bool int a, vector unsigned short b) 5349{ 5350 return (vector bool int)__builtin_altivec_vsl((vector int)a, (vector int)b); 5351} 5352 5353static vector bool int __ATTRS_o_ai 5354vec_vsl(vector bool int a, vector unsigned int b) 5355{ 5356 return (vector bool int)__builtin_altivec_vsl((vector int)a, (vector int)b); 5357} 5358 5359/* vec_slo */ 5360 5361static vector signed char __ATTRS_o_ai 5362vec_slo(vector signed char a, vector signed char b) 5363{ 5364 return (vector signed char)__builtin_altivec_vslo((vector int)a, (vector int)b); 5365} 5366 5367static vector signed char __ATTRS_o_ai 5368vec_slo(vector signed char a, vector unsigned char b) 5369{ 5370 return (vector signed char)__builtin_altivec_vslo((vector int)a, (vector int)b); 5371} 5372 5373static vector unsigned char __ATTRS_o_ai 5374vec_slo(vector unsigned char a, vector signed char b) 5375{ 5376 return (vector unsigned char)__builtin_altivec_vslo((vector int)a, (vector int)b); 5377} 5378 5379static vector unsigned char __ATTRS_o_ai 5380vec_slo(vector unsigned char a, vector unsigned char b) 5381{ 5382 return (vector unsigned char)__builtin_altivec_vslo((vector int)a, (vector int)b); 5383} 5384 5385static vector short __ATTRS_o_ai 5386vec_slo(vector short a, vector signed char b) 5387{ 5388 return (vector short)__builtin_altivec_vslo((vector int)a, (vector int)b); 5389} 5390 5391static vector short __ATTRS_o_ai 5392vec_slo(vector short a, vector unsigned char b) 5393{ 5394 return (vector short)__builtin_altivec_vslo((vector int)a, (vector int)b); 5395} 5396 5397static vector unsigned short __ATTRS_o_ai 5398vec_slo(vector unsigned short a, vector signed char b) 5399{ 5400 return (vector unsigned short)__builtin_altivec_vslo((vector int)a, (vector int)b); 5401} 5402 5403static vector unsigned short __ATTRS_o_ai 5404vec_slo(vector unsigned short a, vector unsigned char b) 5405{ 5406 return (vector unsigned short)__builtin_altivec_vslo((vector int)a, (vector int)b); 5407} 5408 5409static vector pixel __ATTRS_o_ai 5410vec_slo(vector pixel a, vector signed char b) 5411{ 5412 return (vector pixel)__builtin_altivec_vslo((vector int)a, (vector int)b); 5413} 5414 5415static vector pixel __ATTRS_o_ai 5416vec_slo(vector pixel a, vector unsigned char b) 5417{ 5418 return (vector pixel)__builtin_altivec_vslo((vector int)a, (vector int)b); 5419} 5420 5421static vector int __ATTRS_o_ai 5422vec_slo(vector int a, vector signed char b) 5423{ 5424 return (vector int)__builtin_altivec_vslo(a, (vector int)b); 5425} 5426 5427static vector int __ATTRS_o_ai 5428vec_slo(vector int a, vector unsigned char b) 5429{ 5430 return (vector int)__builtin_altivec_vslo(a, (vector int)b); 5431} 5432 5433static vector unsigned int __ATTRS_o_ai 5434vec_slo(vector unsigned int a, vector signed char b) 5435{ 5436 return (vector unsigned int)__builtin_altivec_vslo((vector int)a, (vector int)b); 5437} 5438 5439static vector unsigned int __ATTRS_o_ai 5440vec_slo(vector unsigned int a, vector unsigned char b) 5441{ 5442 return (vector unsigned int)__builtin_altivec_vslo((vector int)a, (vector int)b); 5443} 5444 5445static vector float __ATTRS_o_ai 5446vec_slo(vector float a, vector signed char b) 5447{ 5448 return (vector float)__builtin_altivec_vslo((vector int)a, (vector int)b); 5449} 5450 5451static vector float __ATTRS_o_ai 5452vec_slo(vector float a, vector unsigned char b) 5453{ 5454 return (vector float)__builtin_altivec_vslo((vector int)a, (vector int)b); 5455} 5456 5457/* vec_vslo */ 5458 5459static vector signed char __ATTRS_o_ai 5460vec_vslo(vector signed char a, vector signed char b) 5461{ 5462 return (vector signed char)__builtin_altivec_vslo((vector int)a, (vector int)b); 5463} 5464 5465static vector signed char __ATTRS_o_ai 5466vec_vslo(vector signed char a, vector unsigned char b) 5467{ 5468 return (vector signed char)__builtin_altivec_vslo((vector int)a, (vector int)b); 5469} 5470 5471static vector unsigned char __ATTRS_o_ai 5472vec_vslo(vector unsigned char a, vector signed char b) 5473{ 5474 return (vector unsigned char)__builtin_altivec_vslo((vector int)a, (vector int)b); 5475} 5476 5477static vector unsigned char __ATTRS_o_ai 5478vec_vslo(vector unsigned char a, vector unsigned char b) 5479{ 5480 return (vector unsigned char)__builtin_altivec_vslo((vector int)a, (vector int)b); 5481} 5482 5483static vector short __ATTRS_o_ai 5484vec_vslo(vector short a, vector signed char b) 5485{ 5486 return (vector short)__builtin_altivec_vslo((vector int)a, (vector int)b); 5487} 5488 5489static vector short __ATTRS_o_ai 5490vec_vslo(vector short a, vector unsigned char b) 5491{ 5492 return (vector short)__builtin_altivec_vslo((vector int)a, (vector int)b); 5493} 5494 5495static vector unsigned short __ATTRS_o_ai 5496vec_vslo(vector unsigned short a, vector signed char b) 5497{ 5498 return (vector unsigned short)__builtin_altivec_vslo((vector int)a, (vector int)b); 5499} 5500 5501static vector unsigned short __ATTRS_o_ai 5502vec_vslo(vector unsigned short a, vector unsigned char b) 5503{ 5504 return (vector unsigned short)__builtin_altivec_vslo((vector int)a, (vector int)b); 5505} 5506 5507static vector pixel __ATTRS_o_ai 5508vec_vslo(vector pixel a, vector signed char b) 5509{ 5510 return (vector pixel)__builtin_altivec_vslo((vector int)a, (vector int)b); 5511} 5512 5513static vector pixel __ATTRS_o_ai 5514vec_vslo(vector pixel a, vector unsigned char b) 5515{ 5516 return (vector pixel)__builtin_altivec_vslo((vector int)a, (vector int)b); 5517} 5518 5519static vector int __ATTRS_o_ai 5520vec_vslo(vector int a, vector signed char b) 5521{ 5522 return (vector int)__builtin_altivec_vslo(a, (vector int)b); 5523} 5524 5525static vector int __ATTRS_o_ai 5526vec_vslo(vector int a, vector unsigned char b) 5527{ 5528 return (vector int)__builtin_altivec_vslo(a, (vector int)b); 5529} 5530 5531static vector unsigned int __ATTRS_o_ai 5532vec_vslo(vector unsigned int a, vector signed char b) 5533{ 5534 return (vector unsigned int)__builtin_altivec_vslo((vector int)a, (vector int)b); 5535} 5536 5537static vector unsigned int __ATTRS_o_ai 5538vec_vslo(vector unsigned int a, vector unsigned char b) 5539{ 5540 return (vector unsigned int)__builtin_altivec_vslo((vector int)a, (vector int)b); 5541} 5542 5543static vector float __ATTRS_o_ai 5544vec_vslo(vector float a, vector signed char b) 5545{ 5546 return (vector float)__builtin_altivec_vslo((vector int)a, (vector int)b); 5547} 5548 5549static vector float __ATTRS_o_ai 5550vec_vslo(vector float a, vector unsigned char b) 5551{ 5552 return (vector float)__builtin_altivec_vslo((vector int)a, (vector int)b); 5553} 5554 5555/* vec_splat */ 5556 5557static vector signed char __ATTRS_o_ai 5558vec_splat(vector signed char a, unsigned char b) 5559{ 5560 return vec_perm(a, a, (vector unsigned char)(b)); 5561} 5562 5563static vector unsigned char __ATTRS_o_ai 5564vec_splat(vector unsigned char a, unsigned char b) 5565{ 5566 return vec_perm(a, a, (vector unsigned char)(b)); 5567} 5568 5569static vector bool char __ATTRS_o_ai 5570vec_splat(vector bool char a, unsigned char b) 5571{ 5572 return vec_perm(a, a, (vector unsigned char)(b)); 5573} 5574 5575static vector short __ATTRS_o_ai 5576vec_splat(vector short a, unsigned char b) 5577{ 5578 b *= 2; 5579 return vec_perm(a, a, (vector unsigned char) 5580 (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1)); 5581} 5582 5583static vector unsigned short __ATTRS_o_ai 5584vec_splat(vector unsigned short a, unsigned char b) 5585{ 5586 b *= 2; 5587 return vec_perm(a, a, (vector unsigned char) 5588 (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1)); 5589} 5590 5591static vector bool short __ATTRS_o_ai 5592vec_splat(vector bool short a, unsigned char b) 5593{ 5594 b *= 2; 5595 return vec_perm(a, a, (vector unsigned char) 5596 (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1)); 5597} 5598 5599static vector pixel __ATTRS_o_ai 5600vec_splat(vector pixel a, unsigned char b) 5601{ 5602 b *= 2; 5603 return vec_perm(a, a, (vector unsigned char) 5604 (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1)); 5605} 5606 5607static vector int __ATTRS_o_ai 5608vec_splat(vector int a, unsigned char b) 5609{ 5610 b *= 4; 5611 return vec_perm(a, a, (vector unsigned char) 5612 (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)); 5613} 5614 5615static vector unsigned int __ATTRS_o_ai 5616vec_splat(vector unsigned int a, unsigned char b) 5617{ 5618 b *= 4; 5619 return vec_perm(a, a, (vector unsigned char) 5620 (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)); 5621} 5622 5623static vector bool int __ATTRS_o_ai 5624vec_splat(vector bool int a, unsigned char b) 5625{ 5626 b *= 4; 5627 return vec_perm(a, a, (vector unsigned char) 5628 (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)); 5629} 5630 5631static vector float __ATTRS_o_ai 5632vec_splat(vector float a, unsigned char b) 5633{ 5634 b *= 4; 5635 return vec_perm(a, a, (vector unsigned char) 5636 (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)); 5637} 5638 5639/* vec_vspltb */ 5640 5641#define __builtin_altivec_vspltb vec_vspltb 5642 5643static vector signed char __ATTRS_o_ai 5644vec_vspltb(vector signed char a, unsigned char b) 5645{ 5646 return vec_perm(a, a, (vector unsigned char)(b)); 5647} 5648 5649static vector unsigned char __ATTRS_o_ai 5650vec_vspltb(vector unsigned char a, unsigned char b) 5651{ 5652 return vec_perm(a, a, (vector unsigned char)(b)); 5653} 5654 5655static vector bool char __ATTRS_o_ai 5656vec_vspltb(vector bool char a, unsigned char b) 5657{ 5658 return vec_perm(a, a, (vector unsigned char)(b)); 5659} 5660 5661/* vec_vsplth */ 5662 5663#define __builtin_altivec_vsplth vec_vsplth 5664 5665static vector short __ATTRS_o_ai 5666vec_vsplth(vector short a, unsigned char b) 5667{ 5668 b *= 2; 5669 return vec_perm(a, a, (vector unsigned char) 5670 (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1)); 5671} 5672 5673static vector unsigned short __ATTRS_o_ai 5674vec_vsplth(vector unsigned short a, unsigned char b) 5675{ 5676 b *= 2; 5677 return vec_perm(a, a, (vector unsigned char) 5678 (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1)); 5679} 5680 5681static vector bool short __ATTRS_o_ai 5682vec_vsplth(vector bool short a, unsigned char b) 5683{ 5684 b *= 2; 5685 return vec_perm(a, a, (vector unsigned char) 5686 (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1)); 5687} 5688 5689static vector pixel __ATTRS_o_ai 5690vec_vsplth(vector pixel a, unsigned char b) 5691{ 5692 b *= 2; 5693 return vec_perm(a, a, (vector unsigned char) 5694 (b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1, b, b+1)); 5695} 5696 5697/* vec_vspltw */ 5698 5699#define __builtin_altivec_vspltw vec_vspltw 5700 5701static vector int __ATTRS_o_ai 5702vec_vspltw(vector int a, unsigned char b) 5703{ 5704 b *= 4; 5705 return vec_perm(a, a, (vector unsigned char) 5706 (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)); 5707} 5708 5709static vector unsigned int __ATTRS_o_ai 5710vec_vspltw(vector unsigned int a, unsigned char b) 5711{ 5712 b *= 4; 5713 return vec_perm(a, a, (vector unsigned char) 5714 (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)); 5715} 5716 5717static vector bool int __ATTRS_o_ai 5718vec_vspltw(vector bool int a, unsigned char b) 5719{ 5720 b *= 4; 5721 return vec_perm(a, a, (vector unsigned char) 5722 (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)); 5723} 5724 5725static vector float __ATTRS_o_ai 5726vec_vspltw(vector float a, unsigned char b) 5727{ 5728 b *= 4; 5729 return vec_perm(a, a, (vector unsigned char) 5730 (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)); 5731} 5732 5733/* vec_splat_s8 */ 5734 5735#define __builtin_altivec_vspltisb vec_splat_s8 5736 5737// FIXME: parameter should be treated as 5-bit signed literal 5738static vector signed char __ATTRS_o_ai 5739vec_splat_s8(signed char a) 5740{ 5741 return (vector signed char)(a); 5742} 5743 5744/* vec_vspltisb */ 5745 5746// FIXME: parameter should be treated as 5-bit signed literal 5747static vector signed char __ATTRS_o_ai 5748vec_vspltisb(signed char a) 5749{ 5750 return (vector signed char)(a); 5751} 5752 5753/* vec_splat_s16 */ 5754 5755#define __builtin_altivec_vspltish vec_splat_s16 5756 5757// FIXME: parameter should be treated as 5-bit signed literal 5758static vector short __ATTRS_o_ai 5759vec_splat_s16(signed char a) 5760{ 5761 return (vector short)(a); 5762} 5763 5764/* vec_vspltish */ 5765 5766// FIXME: parameter should be treated as 5-bit signed literal 5767static vector short __ATTRS_o_ai 5768vec_vspltish(signed char a) 5769{ 5770 return (vector short)(a); 5771} 5772 5773/* vec_splat_s32 */ 5774 5775#define __builtin_altivec_vspltisw vec_splat_s32 5776 5777// FIXME: parameter should be treated as 5-bit signed literal 5778static vector int __ATTRS_o_ai 5779vec_splat_s32(signed char a) 5780{ 5781 return (vector int)(a); 5782} 5783 5784/* vec_vspltisw */ 5785 5786// FIXME: parameter should be treated as 5-bit signed literal 5787static vector int __ATTRS_o_ai 5788vec_vspltisw(signed char a) 5789{ 5790 return (vector int)(a); 5791} 5792 5793/* vec_splat_u8 */ 5794 5795// FIXME: parameter should be treated as 5-bit signed literal 5796static vector unsigned char __ATTRS_o_ai 5797vec_splat_u8(unsigned char a) 5798{ 5799 return (vector unsigned char)(a); 5800} 5801 5802/* vec_splat_u16 */ 5803 5804// FIXME: parameter should be treated as 5-bit signed literal 5805static vector unsigned short __ATTRS_o_ai 5806vec_splat_u16(signed char a) 5807{ 5808 return (vector unsigned short)(a); 5809} 5810 5811/* vec_splat_u32 */ 5812 5813// FIXME: parameter should be treated as 5-bit signed literal 5814static vector unsigned int __ATTRS_o_ai 5815vec_splat_u32(signed char a) 5816{ 5817 return (vector unsigned int)(a); 5818} 5819 5820/* vec_sr */ 5821 5822static vector signed char __ATTRS_o_ai 5823vec_sr(vector signed char a, vector unsigned char b) 5824{ 5825 return a >> (vector signed char)b; 5826} 5827 5828static vector unsigned char __ATTRS_o_ai 5829vec_sr(vector unsigned char a, vector unsigned char b) 5830{ 5831 return a >> b; 5832} 5833 5834static vector short __ATTRS_o_ai 5835vec_sr(vector short a, vector unsigned short b) 5836{ 5837 return a >> (vector short)b; 5838} 5839 5840static vector unsigned short __ATTRS_o_ai 5841vec_sr(vector unsigned short a, vector unsigned short b) 5842{ 5843 return a >> b; 5844} 5845 5846static vector int __ATTRS_o_ai 5847vec_sr(vector int a, vector unsigned int b) 5848{ 5849 return a >> (vector int)b; 5850} 5851 5852static vector unsigned int __ATTRS_o_ai 5853vec_sr(vector unsigned int a, vector unsigned int b) 5854{ 5855 return a >> b; 5856} 5857 5858/* vec_vsrb */ 5859 5860#define __builtin_altivec_vsrb vec_vsrb 5861 5862static vector signed char __ATTRS_o_ai 5863vec_vsrb(vector signed char a, vector unsigned char b) 5864{ 5865 return a >> (vector signed char)b; 5866} 5867 5868static vector unsigned char __ATTRS_o_ai 5869vec_vsrb(vector unsigned char a, vector unsigned char b) 5870{ 5871 return a >> b; 5872} 5873 5874/* vec_vsrh */ 5875 5876#define __builtin_altivec_vsrh vec_vsrh 5877 5878static vector short __ATTRS_o_ai 5879vec_vsrh(vector short a, vector unsigned short b) 5880{ 5881 return a >> (vector short)b; 5882} 5883 5884static vector unsigned short __ATTRS_o_ai 5885vec_vsrh(vector unsigned short a, vector unsigned short b) 5886{ 5887 return a >> b; 5888} 5889 5890/* vec_vsrw */ 5891 5892#define __builtin_altivec_vsrw vec_vsrw 5893 5894static vector int __ATTRS_o_ai 5895vec_vsrw(vector int a, vector unsigned int b) 5896{ 5897 return a >> (vector int)b; 5898} 5899 5900static vector unsigned int __ATTRS_o_ai 5901vec_vsrw(vector unsigned int a, vector unsigned int b) 5902{ 5903 return a >> b; 5904} 5905 5906/* vec_sra */ 5907 5908static vector signed char __ATTRS_o_ai 5909vec_sra(vector signed char a, vector unsigned char b) 5910{ 5911 return (vector signed char)__builtin_altivec_vsrab((vector char)a, b); 5912} 5913 5914static vector unsigned char __ATTRS_o_ai 5915vec_sra(vector unsigned char a, vector unsigned char b) 5916{ 5917 return (vector unsigned char)__builtin_altivec_vsrab((vector char)a, b); 5918} 5919 5920static vector short __ATTRS_o_ai 5921vec_sra(vector short a, vector unsigned short b) 5922{ 5923 return __builtin_altivec_vsrah(a, (vector unsigned short)b); 5924} 5925 5926static vector unsigned short __ATTRS_o_ai 5927vec_sra(vector unsigned short a, vector unsigned short b) 5928{ 5929 return (vector unsigned short)__builtin_altivec_vsrah((vector short)a, b); 5930} 5931 5932static vector int __ATTRS_o_ai 5933vec_sra(vector int a, vector unsigned int b) 5934{ 5935 return __builtin_altivec_vsraw(a, b); 5936} 5937 5938static vector unsigned int __ATTRS_o_ai 5939vec_sra(vector unsigned int a, vector unsigned int b) 5940{ 5941 return (vector unsigned int)__builtin_altivec_vsraw((vector int)a, b); 5942} 5943 5944/* vec_vsrab */ 5945 5946static vector signed char __ATTRS_o_ai 5947vec_vsrab(vector signed char a, vector unsigned char b) 5948{ 5949 return (vector signed char)__builtin_altivec_vsrab((vector char)a, b); 5950} 5951 5952static vector unsigned char __ATTRS_o_ai 5953vec_vsrab(vector unsigned char a, vector unsigned char b) 5954{ 5955 return (vector unsigned char)__builtin_altivec_vsrab((vector char)a, b); 5956} 5957 5958/* vec_vsrah */ 5959 5960static vector short __ATTRS_o_ai 5961vec_vsrah(vector short a, vector unsigned short b) 5962{ 5963 return __builtin_altivec_vsrah(a, (vector unsigned short)b); 5964} 5965 5966static vector unsigned short __ATTRS_o_ai 5967vec_vsrah(vector unsigned short a, vector unsigned short b) 5968{ 5969 return (vector unsigned short)__builtin_altivec_vsrah((vector short)a, b); 5970} 5971 5972/* vec_vsraw */ 5973 5974static vector int __ATTRS_o_ai 5975vec_vsraw(vector int a, vector unsigned int b) 5976{ 5977 return __builtin_altivec_vsraw(a, b); 5978} 5979 5980static vector unsigned int __ATTRS_o_ai 5981vec_vsraw(vector unsigned int a, vector unsigned int b) 5982{ 5983 return (vector unsigned int)__builtin_altivec_vsraw((vector int)a, b); 5984} 5985 5986/* vec_srl */ 5987 5988static vector signed char __ATTRS_o_ai 5989vec_srl(vector signed char a, vector unsigned char b) 5990{ 5991 return (vector signed char)__builtin_altivec_vsr((vector int)a, (vector int)b); 5992} 5993 5994static vector signed char __ATTRS_o_ai 5995vec_srl(vector signed char a, vector unsigned short b) 5996{ 5997 return (vector signed char)__builtin_altivec_vsr((vector int)a, (vector int)b); 5998} 5999 6000static vector signed char __ATTRS_o_ai 6001vec_srl(vector signed char a, vector unsigned int b) 6002{ 6003 return (vector signed char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6004} 6005 6006static vector unsigned char __ATTRS_o_ai 6007vec_srl(vector unsigned char a, vector unsigned char b) 6008{ 6009 return (vector unsigned char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6010} 6011 6012static vector unsigned char __ATTRS_o_ai 6013vec_srl(vector unsigned char a, vector unsigned short b) 6014{ 6015 return (vector unsigned char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6016} 6017 6018static vector unsigned char __ATTRS_o_ai 6019vec_srl(vector unsigned char a, vector unsigned int b) 6020{ 6021 return (vector unsigned char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6022} 6023 6024static vector bool char __ATTRS_o_ai 6025vec_srl(vector bool char a, vector unsigned char b) 6026{ 6027 return (vector bool char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6028} 6029 6030static vector bool char __ATTRS_o_ai 6031vec_srl(vector bool char a, vector unsigned short b) 6032{ 6033 return (vector bool char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6034} 6035 6036static vector bool char __ATTRS_o_ai 6037vec_srl(vector bool char a, vector unsigned int b) 6038{ 6039 return (vector bool char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6040} 6041 6042static vector short __ATTRS_o_ai 6043vec_srl(vector short a, vector unsigned char b) 6044{ 6045 return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6046} 6047 6048static vector short __ATTRS_o_ai 6049vec_srl(vector short a, vector unsigned short b) 6050{ 6051 return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6052} 6053 6054static vector short __ATTRS_o_ai 6055vec_srl(vector short a, vector unsigned int b) 6056{ 6057 return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6058} 6059 6060static vector unsigned short __ATTRS_o_ai 6061vec_srl(vector unsigned short a, vector unsigned char b) 6062{ 6063 return (vector unsigned short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6064} 6065 6066static vector unsigned short __ATTRS_o_ai 6067vec_srl(vector unsigned short a, vector unsigned short b) 6068{ 6069 return (vector unsigned short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6070} 6071 6072static vector unsigned short __ATTRS_o_ai 6073vec_srl(vector unsigned short a, vector unsigned int b) 6074{ 6075 return (vector unsigned short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6076} 6077 6078static vector bool short __ATTRS_o_ai 6079vec_srl(vector bool short a, vector unsigned char b) 6080{ 6081 return (vector bool short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6082} 6083 6084static vector bool short __ATTRS_o_ai 6085vec_srl(vector bool short a, vector unsigned short b) 6086{ 6087 return (vector bool short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6088} 6089 6090static vector bool short __ATTRS_o_ai 6091vec_srl(vector bool short a, vector unsigned int b) 6092{ 6093 return (vector bool short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6094} 6095 6096static vector pixel __ATTRS_o_ai 6097vec_srl(vector pixel a, vector unsigned char b) 6098{ 6099 return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b); 6100} 6101 6102static vector pixel __ATTRS_o_ai 6103vec_srl(vector pixel a, vector unsigned short b) 6104{ 6105 return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b); 6106} 6107 6108static vector pixel __ATTRS_o_ai 6109vec_srl(vector pixel a, vector unsigned int b) 6110{ 6111 return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b); 6112} 6113 6114static vector int __ATTRS_o_ai 6115vec_srl(vector int a, vector unsigned char b) 6116{ 6117 return (vector int)__builtin_altivec_vsr(a, (vector int)b); 6118} 6119 6120static vector int __ATTRS_o_ai 6121vec_srl(vector int a, vector unsigned short b) 6122{ 6123 return (vector int)__builtin_altivec_vsr(a, (vector int)b); 6124} 6125 6126static vector int __ATTRS_o_ai 6127vec_srl(vector int a, vector unsigned int b) 6128{ 6129 return (vector int)__builtin_altivec_vsr(a, (vector int)b); 6130} 6131 6132static vector unsigned int __ATTRS_o_ai 6133vec_srl(vector unsigned int a, vector unsigned char b) 6134{ 6135 return (vector unsigned int)__builtin_altivec_vsr((vector int)a, (vector int)b); 6136} 6137 6138static vector unsigned int __ATTRS_o_ai 6139vec_srl(vector unsigned int a, vector unsigned short b) 6140{ 6141 return (vector unsigned int)__builtin_altivec_vsr((vector int)a, (vector int)b); 6142} 6143 6144static vector unsigned int __ATTRS_o_ai 6145vec_srl(vector unsigned int a, vector unsigned int b) 6146{ 6147 return (vector unsigned int)__builtin_altivec_vsr((vector int)a, (vector int)b); 6148} 6149 6150static vector bool int __ATTRS_o_ai 6151vec_srl(vector bool int a, vector unsigned char b) 6152{ 6153 return (vector bool int)__builtin_altivec_vsr((vector int)a, (vector int)b); 6154} 6155 6156static vector bool int __ATTRS_o_ai 6157vec_srl(vector bool int a, vector unsigned short b) 6158{ 6159 return (vector bool int)__builtin_altivec_vsr((vector int)a, (vector int)b); 6160} 6161 6162static vector bool int __ATTRS_o_ai 6163vec_srl(vector bool int a, vector unsigned int b) 6164{ 6165 return (vector bool int)__builtin_altivec_vsr((vector int)a, (vector int)b); 6166} 6167 6168/* vec_vsr */ 6169 6170static vector signed char __ATTRS_o_ai 6171vec_vsr(vector signed char a, vector unsigned char b) 6172{ 6173 return (vector signed char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6174} 6175 6176static vector signed char __ATTRS_o_ai 6177vec_vsr(vector signed char a, vector unsigned short b) 6178{ 6179 return (vector signed char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6180} 6181 6182static vector signed char __ATTRS_o_ai 6183vec_vsr(vector signed char a, vector unsigned int b) 6184{ 6185 return (vector signed char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6186} 6187 6188static vector unsigned char __ATTRS_o_ai 6189vec_vsr(vector unsigned char a, vector unsigned char b) 6190{ 6191 return (vector unsigned char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6192} 6193 6194static vector unsigned char __ATTRS_o_ai 6195vec_vsr(vector unsigned char a, vector unsigned short b) 6196{ 6197 return (vector unsigned char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6198} 6199 6200static vector unsigned char __ATTRS_o_ai 6201vec_vsr(vector unsigned char a, vector unsigned int b) 6202{ 6203 return (vector unsigned char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6204} 6205 6206static vector bool char __ATTRS_o_ai 6207vec_vsr(vector bool char a, vector unsigned char b) 6208{ 6209 return (vector bool char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6210} 6211 6212static vector bool char __ATTRS_o_ai 6213vec_vsr(vector bool char a, vector unsigned short b) 6214{ 6215 return (vector bool char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6216} 6217 6218static vector bool char __ATTRS_o_ai 6219vec_vsr(vector bool char a, vector unsigned int b) 6220{ 6221 return (vector bool char)__builtin_altivec_vsr((vector int)a, (vector int)b); 6222} 6223 6224static vector short __ATTRS_o_ai 6225vec_vsr(vector short a, vector unsigned char b) 6226{ 6227 return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6228} 6229 6230static vector short __ATTRS_o_ai 6231vec_vsr(vector short a, vector unsigned short b) 6232{ 6233 return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6234} 6235 6236static vector short __ATTRS_o_ai 6237vec_vsr(vector short a, vector unsigned int b) 6238{ 6239 return (vector short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6240} 6241 6242static vector unsigned short __ATTRS_o_ai 6243vec_vsr(vector unsigned short a, vector unsigned char b) 6244{ 6245 return (vector unsigned short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6246} 6247 6248static vector unsigned short __ATTRS_o_ai 6249vec_vsr(vector unsigned short a, vector unsigned short b) 6250{ 6251 return (vector unsigned short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6252} 6253 6254static vector unsigned short __ATTRS_o_ai 6255vec_vsr(vector unsigned short a, vector unsigned int b) 6256{ 6257 return (vector unsigned short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6258} 6259 6260static vector bool short __ATTRS_o_ai 6261vec_vsr(vector bool short a, vector unsigned char b) 6262{ 6263 return (vector bool short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6264} 6265 6266static vector bool short __ATTRS_o_ai 6267vec_vsr(vector bool short a, vector unsigned short b) 6268{ 6269 return (vector bool short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6270} 6271 6272static vector bool short __ATTRS_o_ai 6273vec_vsr(vector bool short a, vector unsigned int b) 6274{ 6275 return (vector bool short)__builtin_altivec_vsr((vector int)a, (vector int)b); 6276} 6277 6278static vector pixel __ATTRS_o_ai 6279vec_vsr(vector pixel a, vector unsigned char b) 6280{ 6281 return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b); 6282} 6283 6284static vector pixel __ATTRS_o_ai 6285vec_vsr(vector pixel a, vector unsigned short b) 6286{ 6287 return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b); 6288} 6289 6290static vector pixel __ATTRS_o_ai 6291vec_vsr(vector pixel a, vector unsigned int b) 6292{ 6293 return (vector pixel)__builtin_altivec_vsr((vector int)a, (vector int)b); 6294} 6295 6296static vector int __ATTRS_o_ai 6297vec_vsr(vector int a, vector unsigned char b) 6298{ 6299 return (vector int)__builtin_altivec_vsr(a, (vector int)b); 6300} 6301 6302static vector int __ATTRS_o_ai 6303vec_vsr(vector int a, vector unsigned short b) 6304{ 6305 return (vector int)__builtin_altivec_vsr(a, (vector int)b); 6306} 6307 6308static vector int __ATTRS_o_ai 6309vec_vsr(vector int a, vector unsigned int b) 6310{ 6311 return (vector int)__builtin_altivec_vsr(a, (vector int)b); 6312} 6313 6314static vector unsigned int __ATTRS_o_ai 6315vec_vsr(vector unsigned int a, vector unsigned char b) 6316{ 6317 return (vector unsigned int)__builtin_altivec_vsr((vector int)a, (vector int)b); 6318} 6319 6320static vector unsigned int __ATTRS_o_ai 6321vec_vsr(vector unsigned int a, vector unsigned short b) 6322{ 6323 return (vector unsigned int)__builtin_altivec_vsr((vector int)a, (vector int)b); 6324} 6325 6326static vector unsigned int __ATTRS_o_ai 6327vec_vsr(vector unsigned int a, vector unsigned int b) 6328{ 6329 return (vector unsigned int)__builtin_altivec_vsr((vector int)a, (vector int)b); 6330} 6331 6332static vector bool int __ATTRS_o_ai 6333vec_vsr(vector bool int a, vector unsigned char b) 6334{ 6335 return (vector bool int)__builtin_altivec_vsr((vector int)a, (vector int)b); 6336} 6337 6338static vector bool int __ATTRS_o_ai 6339vec_vsr(vector bool int a, vector unsigned short b) 6340{ 6341 return (vector bool int)__builtin_altivec_vsr((vector int)a, (vector int)b); 6342} 6343 6344static vector bool int __ATTRS_o_ai 6345vec_vsr(vector bool int a, vector unsigned int b) 6346{ 6347 return (vector bool int)__builtin_altivec_vsr((vector int)a, (vector int)b); 6348} 6349 6350/* vec_sro */ 6351 6352static vector signed char __ATTRS_o_ai 6353vec_sro(vector signed char a, vector signed char b) 6354{ 6355 return (vector signed char)__builtin_altivec_vsro((vector int)a, (vector int)b); 6356} 6357 6358static vector signed char __ATTRS_o_ai 6359vec_sro(vector signed char a, vector unsigned char b) 6360{ 6361 return (vector signed char)__builtin_altivec_vsro((vector int)a, (vector int)b); 6362} 6363 6364static vector unsigned char __ATTRS_o_ai 6365vec_sro(vector unsigned char a, vector signed char b) 6366{ 6367 return (vector unsigned char)__builtin_altivec_vsro((vector int)a, (vector int)b); 6368} 6369 6370static vector unsigned char __ATTRS_o_ai 6371vec_sro(vector unsigned char a, vector unsigned char b) 6372{ 6373 return (vector unsigned char)__builtin_altivec_vsro((vector int)a, (vector int)b); 6374} 6375 6376static vector short __ATTRS_o_ai 6377vec_sro(vector short a, vector signed char b) 6378{ 6379 return (vector short)__builtin_altivec_vsro((vector int)a, (vector int)b); 6380} 6381 6382static vector short __ATTRS_o_ai 6383vec_sro(vector short a, vector unsigned char b) 6384{ 6385 return (vector short)__builtin_altivec_vsro((vector int)a, (vector int)b); 6386} 6387 6388static vector unsigned short __ATTRS_o_ai 6389vec_sro(vector unsigned short a, vector signed char b) 6390{ 6391 return (vector unsigned short)__builtin_altivec_vsro((vector int)a, (vector int)b); 6392} 6393 6394static vector unsigned short __ATTRS_o_ai 6395vec_sro(vector unsigned short a, vector unsigned char b) 6396{ 6397 return (vector unsigned short)__builtin_altivec_vsro((vector int)a, (vector int)b); 6398} 6399 6400static vector pixel __ATTRS_o_ai 6401vec_sro(vector pixel a, vector signed char b) 6402{ 6403 return (vector pixel)__builtin_altivec_vsro((vector int)a, (vector int)b); 6404} 6405 6406static vector pixel __ATTRS_o_ai 6407vec_sro(vector pixel a, vector unsigned char b) 6408{ 6409 return (vector pixel)__builtin_altivec_vsro((vector int)a, (vector int)b); 6410} 6411 6412static vector int __ATTRS_o_ai 6413vec_sro(vector int a, vector signed char b) 6414{ 6415 return (vector int)__builtin_altivec_vsro(a, (vector int)b); 6416} 6417 6418static vector int __ATTRS_o_ai 6419vec_sro(vector int a, vector unsigned char b) 6420{ 6421 return (vector int)__builtin_altivec_vsro(a, (vector int)b); 6422} 6423 6424static vector unsigned int __ATTRS_o_ai 6425vec_sro(vector unsigned int a, vector signed char b) 6426{ 6427 return (vector unsigned int)__builtin_altivec_vsro((vector int)a, (vector int)b); 6428} 6429 6430static vector unsigned int __ATTRS_o_ai 6431vec_sro(vector unsigned int a, vector unsigned char b) 6432{ 6433 return (vector unsigned int)__builtin_altivec_vsro((vector int)a, (vector int)b); 6434} 6435 6436static vector float __ATTRS_o_ai 6437vec_sro(vector float a, vector signed char b) 6438{ 6439 return (vector float)__builtin_altivec_vsro((vector int)a, (vector int)b); 6440} 6441 6442static vector float __ATTRS_o_ai 6443vec_sro(vector float a, vector unsigned char b) 6444{ 6445 return (vector float)__builtin_altivec_vsro((vector int)a, (vector int)b); 6446} 6447 6448/* vec_vsro */ 6449 6450static vector signed char __ATTRS_o_ai 6451vec_vsro(vector signed char a, vector signed char b) 6452{ 6453 return (vector signed char)__builtin_altivec_vsro((vector int)a, (vector int)b); 6454} 6455 6456static vector signed char __ATTRS_o_ai 6457vec_vsro(vector signed char a, vector unsigned char b) 6458{ 6459 return (vector signed char)__builtin_altivec_vsro((vector int)a, (vector int)b); 6460} 6461 6462static vector unsigned char __ATTRS_o_ai 6463vec_vsro(vector unsigned char a, vector signed char b) 6464{ 6465 return (vector unsigned char)__builtin_altivec_vsro((vector int)a, (vector int)b); 6466} 6467 6468static vector unsigned char __ATTRS_o_ai 6469vec_vsro(vector unsigned char a, vector unsigned char b) 6470{ 6471 return (vector unsigned char)__builtin_altivec_vsro((vector int)a, (vector int)b); 6472} 6473 6474static vector short __ATTRS_o_ai 6475vec_vsro(vector short a, vector signed char b) 6476{ 6477 return (vector short)__builtin_altivec_vsro((vector int)a, (vector int)b); 6478} 6479 6480static vector short __ATTRS_o_ai 6481vec_vsro(vector short a, vector unsigned char b) 6482{ 6483 return (vector short)__builtin_altivec_vsro((vector int)a, (vector int)b); 6484} 6485 6486static vector unsigned short __ATTRS_o_ai 6487vec_vsro(vector unsigned short a, vector signed char b) 6488{ 6489 return (vector unsigned short)__builtin_altivec_vsro((vector int)a, (vector int)b); 6490} 6491 6492static vector unsigned short __ATTRS_o_ai 6493vec_vsro(vector unsigned short a, vector unsigned char b) 6494{ 6495 return (vector unsigned short)__builtin_altivec_vsro((vector int)a, (vector int)b); 6496} 6497 6498static vector pixel __ATTRS_o_ai 6499vec_vsro(vector pixel a, vector signed char b) 6500{ 6501 return (vector pixel)__builtin_altivec_vsro((vector int)a, (vector int)b); 6502} 6503 6504static vector pixel __ATTRS_o_ai 6505vec_vsro(vector pixel a, vector unsigned char b) 6506{ 6507 return (vector pixel)__builtin_altivec_vsro((vector int)a, (vector int)b); 6508} 6509 6510static vector int __ATTRS_o_ai 6511vec_vsro(vector int a, vector signed char b) 6512{ 6513 return (vector int)__builtin_altivec_vsro(a, (vector int)b); 6514} 6515 6516static vector int __ATTRS_o_ai 6517vec_vsro(vector int a, vector unsigned char b) 6518{ 6519 return (vector int)__builtin_altivec_vsro(a, (vector int)b); 6520} 6521 6522static vector unsigned int __ATTRS_o_ai 6523vec_vsro(vector unsigned int a, vector signed char b) 6524{ 6525 return (vector unsigned int)__builtin_altivec_vsro((vector int)a, (vector int)b); 6526} 6527 6528static vector unsigned int __ATTRS_o_ai 6529vec_vsro(vector unsigned int a, vector unsigned char b) 6530{ 6531 return (vector unsigned int)__builtin_altivec_vsro((vector int)a, (vector int)b); 6532} 6533 6534static vector float __ATTRS_o_ai 6535vec_vsro(vector float a, vector signed char b) 6536{ 6537 return (vector float)__builtin_altivec_vsro((vector int)a, (vector int)b); 6538} 6539 6540static vector float __ATTRS_o_ai 6541vec_vsro(vector float a, vector unsigned char b) 6542{ 6543 return (vector float)__builtin_altivec_vsro((vector int)a, (vector int)b); 6544} 6545 6546/* vec_st */ 6547 6548static void __ATTRS_o_ai 6549vec_st(vector signed char a, int b, vector signed char *c) 6550{ 6551 __builtin_altivec_stvx((vector int)a, b, c); 6552} 6553 6554static void __ATTRS_o_ai 6555vec_st(vector signed char a, int b, signed char *c) 6556{ 6557 __builtin_altivec_stvx((vector int)a, b, c); 6558} 6559 6560static void __ATTRS_o_ai 6561vec_st(vector unsigned char a, int b, vector unsigned char *c) 6562{ 6563 __builtin_altivec_stvx((vector int)a, b, c); 6564} 6565 6566static void __ATTRS_o_ai 6567vec_st(vector unsigned char a, int b, unsigned char *c) 6568{ 6569 __builtin_altivec_stvx((vector int)a, b, c); 6570} 6571 6572static void __ATTRS_o_ai 6573vec_st(vector bool char a, int b, signed char *c) 6574{ 6575 __builtin_altivec_stvx((vector int)a, b, c); 6576} 6577 6578static void __ATTRS_o_ai 6579vec_st(vector bool char a, int b, unsigned char *c) 6580{ 6581 __builtin_altivec_stvx((vector int)a, b, c); 6582} 6583 6584static void __ATTRS_o_ai 6585vec_st(vector bool char a, int b, vector bool char *c) 6586{ 6587 __builtin_altivec_stvx((vector int)a, b, c); 6588} 6589 6590static void __ATTRS_o_ai 6591vec_st(vector short a, int b, vector short *c) 6592{ 6593 __builtin_altivec_stvx((vector int)a, b, c); 6594} 6595 6596static void __ATTRS_o_ai 6597vec_st(vector short a, int b, short *c) 6598{ 6599 __builtin_altivec_stvx((vector int)a, b, c); 6600} 6601 6602static void __ATTRS_o_ai 6603vec_st(vector unsigned short a, int b, vector unsigned short *c) 6604{ 6605 __builtin_altivec_stvx((vector int)a, b, c); 6606} 6607 6608static void __ATTRS_o_ai 6609vec_st(vector unsigned short a, int b, unsigned short *c) 6610{ 6611 __builtin_altivec_stvx((vector int)a, b, c); 6612} 6613 6614static void __ATTRS_o_ai 6615vec_st(vector bool short a, int b, short *c) 6616{ 6617 __builtin_altivec_stvx((vector int)a, b, c); 6618} 6619 6620static void __ATTRS_o_ai 6621vec_st(vector bool short a, int b, unsigned short *c) 6622{ 6623 __builtin_altivec_stvx((vector int)a, b, c); 6624} 6625 6626static void __ATTRS_o_ai 6627vec_st(vector bool short a, int b, vector bool short *c) 6628{ 6629 __builtin_altivec_stvx((vector int)a, b, c); 6630} 6631 6632static void __ATTRS_o_ai 6633vec_st(vector pixel a, int b, short *c) 6634{ 6635 __builtin_altivec_stvx((vector int)a, b, c); 6636} 6637 6638static void __ATTRS_o_ai 6639vec_st(vector pixel a, int b, unsigned short *c) 6640{ 6641 __builtin_altivec_stvx((vector int)a, b, c); 6642} 6643 6644static void __ATTRS_o_ai 6645vec_st(vector pixel a, int b, vector pixel *c) 6646{ 6647 __builtin_altivec_stvx((vector int)a, b, c); 6648} 6649 6650static void __ATTRS_o_ai 6651vec_st(vector int a, int b, vector int *c) 6652{ 6653 __builtin_altivec_stvx(a, b, c); 6654} 6655 6656static void __ATTRS_o_ai 6657vec_st(vector int a, int b, int *c) 6658{ 6659 __builtin_altivec_stvx(a, b, c); 6660} 6661 6662static void __ATTRS_o_ai 6663vec_st(vector unsigned int a, int b, vector unsigned int *c) 6664{ 6665 __builtin_altivec_stvx((vector int)a, b, c); 6666} 6667 6668static void __ATTRS_o_ai 6669vec_st(vector unsigned int a, int b, unsigned int *c) 6670{ 6671 __builtin_altivec_stvx((vector int)a, b, c); 6672} 6673 6674static void __ATTRS_o_ai 6675vec_st(vector bool int a, int b, int *c) 6676{ 6677 __builtin_altivec_stvx((vector int)a, b, c); 6678} 6679 6680static void __ATTRS_o_ai 6681vec_st(vector bool int a, int b, unsigned int *c) 6682{ 6683 __builtin_altivec_stvx((vector int)a, b, c); 6684} 6685 6686static void __ATTRS_o_ai 6687vec_st(vector bool int a, int b, vector bool int *c) 6688{ 6689 __builtin_altivec_stvx((vector int)a, b, c); 6690} 6691 6692static void __ATTRS_o_ai 6693vec_st(vector float a, int b, vector float *c) 6694{ 6695 __builtin_altivec_stvx((vector int)a, b, c); 6696} 6697 6698static void __ATTRS_o_ai 6699vec_st(vector float a, int b, float *c) 6700{ 6701 __builtin_altivec_stvx((vector int)a, b, c); 6702} 6703 6704/* vec_stvx */ 6705 6706static void __ATTRS_o_ai 6707vec_stvx(vector signed char a, int b, vector signed char *c) 6708{ 6709 __builtin_altivec_stvx((vector int)a, b, c); 6710} 6711 6712static void __ATTRS_o_ai 6713vec_stvx(vector signed char a, int b, signed char *c) 6714{ 6715 __builtin_altivec_stvx((vector int)a, b, c); 6716} 6717 6718static void __ATTRS_o_ai 6719vec_stvx(vector unsigned char a, int b, vector unsigned char *c) 6720{ 6721 __builtin_altivec_stvx((vector int)a, b, c); 6722} 6723 6724static void __ATTRS_o_ai 6725vec_stvx(vector unsigned char a, int b, unsigned char *c) 6726{ 6727 __builtin_altivec_stvx((vector int)a, b, c); 6728} 6729 6730static void __ATTRS_o_ai 6731vec_stvx(vector bool char a, int b, signed char *c) 6732{ 6733 __builtin_altivec_stvx((vector int)a, b, c); 6734} 6735 6736static void __ATTRS_o_ai 6737vec_stvx(vector bool char a, int b, unsigned char *c) 6738{ 6739 __builtin_altivec_stvx((vector int)a, b, c); 6740} 6741 6742static void __ATTRS_o_ai 6743vec_stvx(vector bool char a, int b, vector bool char *c) 6744{ 6745 __builtin_altivec_stvx((vector int)a, b, c); 6746} 6747 6748static void __ATTRS_o_ai 6749vec_stvx(vector short a, int b, vector short *c) 6750{ 6751 __builtin_altivec_stvx((vector int)a, b, c); 6752} 6753 6754static void __ATTRS_o_ai 6755vec_stvx(vector short a, int b, short *c) 6756{ 6757 __builtin_altivec_stvx((vector int)a, b, c); 6758} 6759 6760static void __ATTRS_o_ai 6761vec_stvx(vector unsigned short a, int b, vector unsigned short *c) 6762{ 6763 __builtin_altivec_stvx((vector int)a, b, c); 6764} 6765 6766static void __ATTRS_o_ai 6767vec_stvx(vector unsigned short a, int b, unsigned short *c) 6768{ 6769 __builtin_altivec_stvx((vector int)a, b, c); 6770} 6771 6772static void __ATTRS_o_ai 6773vec_stvx(vector bool short a, int b, short *c) 6774{ 6775 __builtin_altivec_stvx((vector int)a, b, c); 6776} 6777 6778static void __ATTRS_o_ai 6779vec_stvx(vector bool short a, int b, unsigned short *c) 6780{ 6781 __builtin_altivec_stvx((vector int)a, b, c); 6782} 6783 6784static void __ATTRS_o_ai 6785vec_stvx(vector bool short a, int b, vector bool short *c) 6786{ 6787 __builtin_altivec_stvx((vector int)a, b, c); 6788} 6789 6790static void __ATTRS_o_ai 6791vec_stvx(vector pixel a, int b, short *c) 6792{ 6793 __builtin_altivec_stvx((vector int)a, b, c); 6794} 6795 6796static void __ATTRS_o_ai 6797vec_stvx(vector pixel a, int b, unsigned short *c) 6798{ 6799 __builtin_altivec_stvx((vector int)a, b, c); 6800} 6801 6802static void __ATTRS_o_ai 6803vec_stvx(vector pixel a, int b, vector pixel *c) 6804{ 6805 __builtin_altivec_stvx((vector int)a, b, c); 6806} 6807 6808static void __ATTRS_o_ai 6809vec_stvx(vector int a, int b, vector int *c) 6810{ 6811 __builtin_altivec_stvx(a, b, c); 6812} 6813 6814static void __ATTRS_o_ai 6815vec_stvx(vector int a, int b, int *c) 6816{ 6817 __builtin_altivec_stvx(a, b, c); 6818} 6819 6820static void __ATTRS_o_ai 6821vec_stvx(vector unsigned int a, int b, vector unsigned int *c) 6822{ 6823 __builtin_altivec_stvx((vector int)a, b, c); 6824} 6825 6826static void __ATTRS_o_ai 6827vec_stvx(vector unsigned int a, int b, unsigned int *c) 6828{ 6829 __builtin_altivec_stvx((vector int)a, b, c); 6830} 6831 6832static void __ATTRS_o_ai 6833vec_stvx(vector bool int a, int b, int *c) 6834{ 6835 __builtin_altivec_stvx((vector int)a, b, c); 6836} 6837 6838static void __ATTRS_o_ai 6839vec_stvx(vector bool int a, int b, unsigned int *c) 6840{ 6841 __builtin_altivec_stvx((vector int)a, b, c); 6842} 6843 6844static void __ATTRS_o_ai 6845vec_stvx(vector bool int a, int b, vector bool int *c) 6846{ 6847 __builtin_altivec_stvx((vector int)a, b, c); 6848} 6849 6850static void __ATTRS_o_ai 6851vec_stvx(vector float a, int b, vector float *c) 6852{ 6853 __builtin_altivec_stvx((vector int)a, b, c); 6854} 6855 6856static void __ATTRS_o_ai 6857vec_stvx(vector float a, int b, float *c) 6858{ 6859 __builtin_altivec_stvx((vector int)a, b, c); 6860} 6861 6862/* vec_ste */ 6863 6864static void __ATTRS_o_ai 6865vec_ste(vector signed char a, int b, signed char *c) 6866{ 6867 __builtin_altivec_stvebx((vector char)a, b, c); 6868} 6869 6870static void __ATTRS_o_ai 6871vec_ste(vector unsigned char a, int b, unsigned char *c) 6872{ 6873 __builtin_altivec_stvebx((vector char)a, b, c); 6874} 6875 6876static void __ATTRS_o_ai 6877vec_ste(vector bool char a, int b, signed char *c) 6878{ 6879 __builtin_altivec_stvebx((vector char)a, b, c); 6880} 6881 6882static void __ATTRS_o_ai 6883vec_ste(vector bool char a, int b, unsigned char *c) 6884{ 6885 __builtin_altivec_stvebx((vector char)a, b, c); 6886} 6887 6888static void __ATTRS_o_ai 6889vec_ste(vector short a, int b, short *c) 6890{ 6891 __builtin_altivec_stvehx(a, b, c); 6892} 6893 6894static void __ATTRS_o_ai 6895vec_ste(vector unsigned short a, int b, unsigned short *c) 6896{ 6897 __builtin_altivec_stvehx((vector short)a, b, c); 6898} 6899 6900static void __ATTRS_o_ai 6901vec_ste(vector bool short a, int b, short *c) 6902{ 6903 __builtin_altivec_stvehx((vector short)a, b, c); 6904} 6905 6906static void __ATTRS_o_ai 6907vec_ste(vector bool short a, int b, unsigned short *c) 6908{ 6909 __builtin_altivec_stvehx((vector short)a, b, c); 6910} 6911 6912static void __ATTRS_o_ai 6913vec_ste(vector pixel a, int b, short *c) 6914{ 6915 __builtin_altivec_stvehx((vector short)a, b, c); 6916} 6917 6918static void __ATTRS_o_ai 6919vec_ste(vector pixel a, int b, unsigned short *c) 6920{ 6921 __builtin_altivec_stvehx((vector short)a, b, c); 6922} 6923 6924static void __ATTRS_o_ai 6925vec_ste(vector int a, int b, int *c) 6926{ 6927 __builtin_altivec_stvewx(a, b, c); 6928} 6929 6930static void __ATTRS_o_ai 6931vec_ste(vector unsigned int a, int b, unsigned int *c) 6932{ 6933 __builtin_altivec_stvewx((vector int)a, b, c); 6934} 6935 6936static void __ATTRS_o_ai 6937vec_ste(vector bool int a, int b, int *c) 6938{ 6939 __builtin_altivec_stvewx((vector int)a, b, c); 6940} 6941 6942static void __ATTRS_o_ai 6943vec_ste(vector bool int a, int b, unsigned int *c) 6944{ 6945 __builtin_altivec_stvewx((vector int)a, b, c); 6946} 6947 6948static void __ATTRS_o_ai 6949vec_ste(vector float a, int b, float *c) 6950{ 6951 __builtin_altivec_stvewx((vector int)a, b, c); 6952} 6953 6954/* vec_stvebx */ 6955 6956static void __ATTRS_o_ai 6957vec_stvebx(vector signed char a, int b, signed char *c) 6958{ 6959 __builtin_altivec_stvebx((vector char)a, b, c); 6960} 6961 6962static void __ATTRS_o_ai 6963vec_stvebx(vector unsigned char a, int b, unsigned char *c) 6964{ 6965 __builtin_altivec_stvebx((vector char)a, b, c); 6966} 6967 6968static void __ATTRS_o_ai 6969vec_stvebx(vector bool char a, int b, signed char *c) 6970{ 6971 __builtin_altivec_stvebx((vector char)a, b, c); 6972} 6973 6974static void __ATTRS_o_ai 6975vec_stvebx(vector bool char a, int b, unsigned char *c) 6976{ 6977 __builtin_altivec_stvebx((vector char)a, b, c); 6978} 6979 6980/* vec_stvehx */ 6981 6982static void __ATTRS_o_ai 6983vec_stvehx(vector short a, int b, short *c) 6984{ 6985 __builtin_altivec_stvehx(a, b, c); 6986} 6987 6988static void __ATTRS_o_ai 6989vec_stvehx(vector unsigned short a, int b, unsigned short *c) 6990{ 6991 __builtin_altivec_stvehx((vector short)a, b, c); 6992} 6993 6994static void __ATTRS_o_ai 6995vec_stvehx(vector bool short a, int b, short *c) 6996{ 6997 __builtin_altivec_stvehx((vector short)a, b, c); 6998} 6999 7000static void __ATTRS_o_ai 7001vec_stvehx(vector bool short a, int b, unsigned short *c) 7002{ 7003 __builtin_altivec_stvehx((vector short)a, b, c); 7004} 7005 7006static void __ATTRS_o_ai 7007vec_stvehx(vector pixel a, int b, short *c) 7008{ 7009 __builtin_altivec_stvehx((vector short)a, b, c); 7010} 7011 7012static void __ATTRS_o_ai 7013vec_stvehx(vector pixel a, int b, unsigned short *c) 7014{ 7015 __builtin_altivec_stvehx((vector short)a, b, c); 7016} 7017 7018/* vec_stvewx */ 7019 7020static void __ATTRS_o_ai 7021vec_stvewx(vector int a, int b, int *c) 7022{ 7023 __builtin_altivec_stvewx(a, b, c); 7024} 7025 7026static void __ATTRS_o_ai 7027vec_stvewx(vector unsigned int a, int b, unsigned int *c) 7028{ 7029 __builtin_altivec_stvewx((vector int)a, b, c); 7030} 7031 7032static void __ATTRS_o_ai 7033vec_stvewx(vector bool int a, int b, int *c) 7034{ 7035 __builtin_altivec_stvewx((vector int)a, b, c); 7036} 7037 7038static void __ATTRS_o_ai 7039vec_stvewx(vector bool int a, int b, unsigned int *c) 7040{ 7041 __builtin_altivec_stvewx((vector int)a, b, c); 7042} 7043 7044static void __ATTRS_o_ai 7045vec_stvewx(vector float a, int b, float *c) 7046{ 7047 __builtin_altivec_stvewx((vector int)a, b, c); 7048} 7049 7050/* vec_stl */ 7051 7052static void __ATTRS_o_ai 7053vec_stl(vector signed char a, int b, vector signed char *c) 7054{ 7055 __builtin_altivec_stvxl((vector int)a, b, c); 7056} 7057 7058static void __ATTRS_o_ai 7059vec_stl(vector signed char a, int b, signed char *c) 7060{ 7061 __builtin_altivec_stvxl((vector int)a, b, c); 7062} 7063 7064static void __ATTRS_o_ai 7065vec_stl(vector unsigned char a, int b, vector unsigned char *c) 7066{ 7067 __builtin_altivec_stvxl((vector int)a, b, c); 7068} 7069 7070static void __ATTRS_o_ai 7071vec_stl(vector unsigned char a, int b, unsigned char *c) 7072{ 7073 __builtin_altivec_stvxl((vector int)a, b, c); 7074} 7075 7076static void __ATTRS_o_ai 7077vec_stl(vector bool char a, int b, signed char *c) 7078{ 7079 __builtin_altivec_stvxl((vector int)a, b, c); 7080} 7081 7082static void __ATTRS_o_ai 7083vec_stl(vector bool char a, int b, unsigned char *c) 7084{ 7085 __builtin_altivec_stvxl((vector int)a, b, c); 7086} 7087 7088static void __ATTRS_o_ai 7089vec_stl(vector bool char a, int b, vector bool char *c) 7090{ 7091 __builtin_altivec_stvxl((vector int)a, b, c); 7092} 7093 7094static void __ATTRS_o_ai 7095vec_stl(vector short a, int b, vector short *c) 7096{ 7097 __builtin_altivec_stvxl((vector int)a, b, c); 7098} 7099 7100static void __ATTRS_o_ai 7101vec_stl(vector short a, int b, short *c) 7102{ 7103 __builtin_altivec_stvxl((vector int)a, b, c); 7104} 7105 7106static void __ATTRS_o_ai 7107vec_stl(vector unsigned short a, int b, vector unsigned short *c) 7108{ 7109 __builtin_altivec_stvxl((vector int)a, b, c); 7110} 7111 7112static void __ATTRS_o_ai 7113vec_stl(vector unsigned short a, int b, unsigned short *c) 7114{ 7115 __builtin_altivec_stvxl((vector int)a, b, c); 7116} 7117 7118static void __ATTRS_o_ai 7119vec_stl(vector bool short a, int b, short *c) 7120{ 7121 __builtin_altivec_stvxl((vector int)a, b, c); 7122} 7123 7124static void __ATTRS_o_ai 7125vec_stl(vector bool short a, int b, unsigned short *c) 7126{ 7127 __builtin_altivec_stvxl((vector int)a, b, c); 7128} 7129 7130static void __ATTRS_o_ai 7131vec_stl(vector bool short a, int b, vector bool short *c) 7132{ 7133 __builtin_altivec_stvxl((vector int)a, b, c); 7134} 7135 7136static void __ATTRS_o_ai 7137vec_stl(vector pixel a, int b, short *c) 7138{ 7139 __builtin_altivec_stvxl((vector int)a, b, c); 7140} 7141 7142static void __ATTRS_o_ai 7143vec_stl(vector pixel a, int b, unsigned short *c) 7144{ 7145 __builtin_altivec_stvxl((vector int)a, b, c); 7146} 7147 7148static void __ATTRS_o_ai 7149vec_stl(vector pixel a, int b, vector pixel *c) 7150{ 7151 __builtin_altivec_stvxl((vector int)a, b, c); 7152} 7153 7154static void __ATTRS_o_ai 7155vec_stl(vector int a, int b, vector int *c) 7156{ 7157 __builtin_altivec_stvxl(a, b, c); 7158} 7159 7160static void __ATTRS_o_ai 7161vec_stl(vector int a, int b, int *c) 7162{ 7163 __builtin_altivec_stvxl(a, b, c); 7164} 7165 7166static void __ATTRS_o_ai 7167vec_stl(vector unsigned int a, int b, vector unsigned int *c) 7168{ 7169 __builtin_altivec_stvxl((vector int)a, b, c); 7170} 7171 7172static void __ATTRS_o_ai 7173vec_stl(vector unsigned int a, int b, unsigned int *c) 7174{ 7175 __builtin_altivec_stvxl((vector int)a, b, c); 7176} 7177 7178static void __ATTRS_o_ai 7179vec_stl(vector bool int a, int b, int *c) 7180{ 7181 __builtin_altivec_stvxl((vector int)a, b, c); 7182} 7183 7184static void __ATTRS_o_ai 7185vec_stl(vector bool int a, int b, unsigned int *c) 7186{ 7187 __builtin_altivec_stvxl((vector int)a, b, c); 7188} 7189 7190static void __ATTRS_o_ai 7191vec_stl(vector bool int a, int b, vector bool int *c) 7192{ 7193 __builtin_altivec_stvxl((vector int)a, b, c); 7194} 7195 7196static void __ATTRS_o_ai 7197vec_stl(vector float a, int b, vector float *c) 7198{ 7199 __builtin_altivec_stvxl((vector int)a, b, c); 7200} 7201 7202static void __ATTRS_o_ai 7203vec_stl(vector float a, int b, float *c) 7204{ 7205 __builtin_altivec_stvxl((vector int)a, b, c); 7206} 7207 7208/* vec_stvxl */ 7209 7210static void __ATTRS_o_ai 7211vec_stvxl(vector signed char a, int b, vector signed char *c) 7212{ 7213 __builtin_altivec_stvxl((vector int)a, b, c); 7214} 7215 7216static void __ATTRS_o_ai 7217vec_stvxl(vector signed char a, int b, signed char *c) 7218{ 7219 __builtin_altivec_stvxl((vector int)a, b, c); 7220} 7221 7222static void __ATTRS_o_ai 7223vec_stvxl(vector unsigned char a, int b, vector unsigned char *c) 7224{ 7225 __builtin_altivec_stvxl((vector int)a, b, c); 7226} 7227 7228static void __ATTRS_o_ai 7229vec_stvxl(vector unsigned char a, int b, unsigned char *c) 7230{ 7231 __builtin_altivec_stvxl((vector int)a, b, c); 7232} 7233 7234static void __ATTRS_o_ai 7235vec_stvxl(vector bool char a, int b, signed char *c) 7236{ 7237 __builtin_altivec_stvxl((vector int)a, b, c); 7238} 7239 7240static void __ATTRS_o_ai 7241vec_stvxl(vector bool char a, int b, unsigned char *c) 7242{ 7243 __builtin_altivec_stvxl((vector int)a, b, c); 7244} 7245 7246static void __ATTRS_o_ai 7247vec_stvxl(vector bool char a, int b, vector bool char *c) 7248{ 7249 __builtin_altivec_stvxl((vector int)a, b, c); 7250} 7251 7252static void __ATTRS_o_ai 7253vec_stvxl(vector short a, int b, vector short *c) 7254{ 7255 __builtin_altivec_stvxl((vector int)a, b, c); 7256} 7257 7258static void __ATTRS_o_ai 7259vec_stvxl(vector short a, int b, short *c) 7260{ 7261 __builtin_altivec_stvxl((vector int)a, b, c); 7262} 7263 7264static void __ATTRS_o_ai 7265vec_stvxl(vector unsigned short a, int b, vector unsigned short *c) 7266{ 7267 __builtin_altivec_stvxl((vector int)a, b, c); 7268} 7269 7270static void __ATTRS_o_ai 7271vec_stvxl(vector unsigned short a, int b, unsigned short *c) 7272{ 7273 __builtin_altivec_stvxl((vector int)a, b, c); 7274} 7275 7276static void __ATTRS_o_ai 7277vec_stvxl(vector bool short a, int b, short *c) 7278{ 7279 __builtin_altivec_stvxl((vector int)a, b, c); 7280} 7281 7282static void __ATTRS_o_ai 7283vec_stvxl(vector bool short a, int b, unsigned short *c) 7284{ 7285 __builtin_altivec_stvxl((vector int)a, b, c); 7286} 7287 7288static void __ATTRS_o_ai 7289vec_stvxl(vector bool short a, int b, vector bool short *c) 7290{ 7291 __builtin_altivec_stvxl((vector int)a, b, c); 7292} 7293 7294static void __ATTRS_o_ai 7295vec_stvxl(vector pixel a, int b, short *c) 7296{ 7297 __builtin_altivec_stvxl((vector int)a, b, c); 7298} 7299 7300static void __ATTRS_o_ai 7301vec_stvxl(vector pixel a, int b, unsigned short *c) 7302{ 7303 __builtin_altivec_stvxl((vector int)a, b, c); 7304} 7305 7306static void __ATTRS_o_ai 7307vec_stvxl(vector pixel a, int b, vector pixel *c) 7308{ 7309 __builtin_altivec_stvxl((vector int)a, b, c); 7310} 7311 7312static void __ATTRS_o_ai 7313vec_stvxl(vector int a, int b, vector int *c) 7314{ 7315 __builtin_altivec_stvxl(a, b, c); 7316} 7317 7318static void __ATTRS_o_ai 7319vec_stvxl(vector int a, int b, int *c) 7320{ 7321 __builtin_altivec_stvxl(a, b, c); 7322} 7323 7324static void __ATTRS_o_ai 7325vec_stvxl(vector unsigned int a, int b, vector unsigned int *c) 7326{ 7327 __builtin_altivec_stvxl((vector int)a, b, c); 7328} 7329 7330static void __ATTRS_o_ai 7331vec_stvxl(vector unsigned int a, int b, unsigned int *c) 7332{ 7333 __builtin_altivec_stvxl((vector int)a, b, c); 7334} 7335 7336static void __ATTRS_o_ai 7337vec_stvxl(vector bool int a, int b, int *c) 7338{ 7339 __builtin_altivec_stvxl((vector int)a, b, c); 7340} 7341 7342static void __ATTRS_o_ai 7343vec_stvxl(vector bool int a, int b, unsigned int *c) 7344{ 7345 __builtin_altivec_stvxl((vector int)a, b, c); 7346} 7347 7348static void __ATTRS_o_ai 7349vec_stvxl(vector bool int a, int b, vector bool int *c) 7350{ 7351 __builtin_altivec_stvxl((vector int)a, b, c); 7352} 7353 7354static void __ATTRS_o_ai 7355vec_stvxl(vector float a, int b, vector float *c) 7356{ 7357 __builtin_altivec_stvxl((vector int)a, b, c); 7358} 7359 7360static void __ATTRS_o_ai 7361vec_stvxl(vector float a, int b, float *c) 7362{ 7363 __builtin_altivec_stvxl((vector int)a, b, c); 7364} 7365 7366/* vec_sub */ 7367 7368static vector signed char __ATTRS_o_ai 7369vec_sub(vector signed char a, vector signed char b) 7370{ 7371 return a - b; 7372} 7373 7374static vector signed char __ATTRS_o_ai 7375vec_sub(vector bool char a, vector signed char b) 7376{ 7377 return (vector signed char)a - b; 7378} 7379 7380static vector signed char __ATTRS_o_ai 7381vec_sub(vector signed char a, vector bool char b) 7382{ 7383 return a - (vector signed char)b; 7384} 7385 7386static vector unsigned char __ATTRS_o_ai 7387vec_sub(vector unsigned char a, vector unsigned char b) 7388{ 7389 return a - b; 7390} 7391 7392static vector unsigned char __ATTRS_o_ai 7393vec_sub(vector bool char a, vector unsigned char b) 7394{ 7395 return (vector unsigned char)a - b; 7396} 7397 7398static vector unsigned char __ATTRS_o_ai 7399vec_sub(vector unsigned char a, vector bool char b) 7400{ 7401 return a - (vector unsigned char)b; 7402} 7403 7404static vector short __ATTRS_o_ai 7405vec_sub(vector short a, vector short b) 7406{ 7407 return a - b; 7408} 7409 7410static vector short __ATTRS_o_ai 7411vec_sub(vector bool short a, vector short b) 7412{ 7413 return (vector short)a - b; 7414} 7415 7416static vector short __ATTRS_o_ai 7417vec_sub(vector short a, vector bool short b) 7418{ 7419 return a - (vector short)b; 7420} 7421 7422static vector unsigned short __ATTRS_o_ai 7423vec_sub(vector unsigned short a, vector unsigned short b) 7424{ 7425 return a - b; 7426} 7427 7428static vector unsigned short __ATTRS_o_ai 7429vec_sub(vector bool short a, vector unsigned short b) 7430{ 7431 return (vector unsigned short)a - b; 7432} 7433 7434static vector unsigned short __ATTRS_o_ai 7435vec_sub(vector unsigned short a, vector bool short b) 7436{ 7437 return a - (vector unsigned short)b; 7438} 7439 7440static vector int __ATTRS_o_ai 7441vec_sub(vector int a, vector int b) 7442{ 7443 return a - b; 7444} 7445 7446static vector int __ATTRS_o_ai 7447vec_sub(vector bool int a, vector int b) 7448{ 7449 return (vector int)a - b; 7450} 7451 7452static vector int __ATTRS_o_ai 7453vec_sub(vector int a, vector bool int b) 7454{ 7455 return a - (vector int)b; 7456} 7457 7458static vector unsigned int __ATTRS_o_ai 7459vec_sub(vector unsigned int a, vector unsigned int b) 7460{ 7461 return a - b; 7462} 7463 7464static vector unsigned int __ATTRS_o_ai 7465vec_sub(vector bool int a, vector unsigned int b) 7466{ 7467 return (vector unsigned int)a - b; 7468} 7469 7470static vector unsigned int __ATTRS_o_ai 7471vec_sub(vector unsigned int a, vector bool int b) 7472{ 7473 return a - (vector unsigned int)b; 7474} 7475 7476static vector float __ATTRS_o_ai 7477vec_sub(vector float a, vector float b) 7478{ 7479 return a - b; 7480} 7481 7482/* vec_vsububm */ 7483 7484#define __builtin_altivec_vsububm vec_vsububm 7485 7486static vector signed char __ATTRS_o_ai 7487vec_vsububm(vector signed char a, vector signed char b) 7488{ 7489 return a - b; 7490} 7491 7492static vector signed char __ATTRS_o_ai 7493vec_vsububm(vector bool char a, vector signed char b) 7494{ 7495 return (vector signed char)a - b; 7496} 7497 7498static vector signed char __ATTRS_o_ai 7499vec_vsububm(vector signed char a, vector bool char b) 7500{ 7501 return a - (vector signed char)b; 7502} 7503 7504static vector unsigned char __ATTRS_o_ai 7505vec_vsububm(vector unsigned char a, vector unsigned char b) 7506{ 7507 return a - b; 7508} 7509 7510static vector unsigned char __ATTRS_o_ai 7511vec_vsububm(vector bool char a, vector unsigned char b) 7512{ 7513 return (vector unsigned char)a - b; 7514} 7515 7516static vector unsigned char __ATTRS_o_ai 7517vec_vsububm(vector unsigned char a, vector bool char b) 7518{ 7519 return a - (vector unsigned char)b; 7520} 7521 7522/* vec_vsubuhm */ 7523 7524#define __builtin_altivec_vsubuhm vec_vsubuhm 7525 7526static vector short __ATTRS_o_ai 7527vec_vsubuhm(vector short a, vector short b) 7528{ 7529 return a - b; 7530} 7531 7532static vector short __ATTRS_o_ai 7533vec_vsubuhm(vector bool short a, vector short b) 7534{ 7535 return (vector short)a - b; 7536} 7537 7538static vector short __ATTRS_o_ai 7539vec_vsubuhm(vector short a, vector bool short b) 7540{ 7541 return a - (vector short)b; 7542} 7543 7544static vector unsigned short __ATTRS_o_ai 7545vec_vsubuhm(vector unsigned short a, vector unsigned short b) 7546{ 7547 return a - b; 7548} 7549 7550static vector unsigned short __ATTRS_o_ai 7551vec_vsubuhm(vector bool short a, vector unsigned short b) 7552{ 7553 return (vector unsigned short)a - b; 7554} 7555 7556static vector unsigned short __ATTRS_o_ai 7557vec_vsubuhm(vector unsigned short a, vector bool short b) 7558{ 7559 return a - (vector unsigned short)b; 7560} 7561 7562/* vec_vsubuwm */ 7563 7564#define __builtin_altivec_vsubuwm vec_vsubuwm 7565 7566static vector int __ATTRS_o_ai 7567vec_vsubuwm(vector int a, vector int b) 7568{ 7569 return a - b; 7570} 7571 7572static vector int __ATTRS_o_ai 7573vec_vsubuwm(vector bool int a, vector int b) 7574{ 7575 return (vector int)a - b; 7576} 7577 7578static vector int __ATTRS_o_ai 7579vec_vsubuwm(vector int a, vector bool int b) 7580{ 7581 return a - (vector int)b; 7582} 7583 7584static vector unsigned int __ATTRS_o_ai 7585vec_vsubuwm(vector unsigned int a, vector unsigned int b) 7586{ 7587 return a - b; 7588} 7589 7590static vector unsigned int __ATTRS_o_ai 7591vec_vsubuwm(vector bool int a, vector unsigned int b) 7592{ 7593 return (vector unsigned int)a - b; 7594} 7595 7596static vector unsigned int __ATTRS_o_ai 7597vec_vsubuwm(vector unsigned int a, vector bool int b) 7598{ 7599 return a - (vector unsigned int)b; 7600} 7601 7602/* vec_vsubfp */ 7603 7604#define __builtin_altivec_vsubfp vec_vsubfp 7605 7606static vector float __attribute__((__always_inline__)) 7607vec_vsubfp(vector float a, vector float b) 7608{ 7609 return a - b; 7610} 7611 7612/* vec_subc */ 7613 7614static vector unsigned int __attribute__((__always_inline__)) 7615vec_subc(vector unsigned int a, vector unsigned int b) 7616{ 7617 return __builtin_altivec_vsubcuw(a, b); 7618} 7619 7620/* vec_vsubcuw */ 7621 7622static vector unsigned int __attribute__((__always_inline__)) 7623vec_vsubcuw(vector unsigned int a, vector unsigned int b) 7624{ 7625 return __builtin_altivec_vsubcuw(a, b); 7626} 7627 7628/* vec_subs */ 7629 7630static vector signed char __ATTRS_o_ai 7631vec_subs(vector signed char a, vector signed char b) 7632{ 7633 return __builtin_altivec_vsubsbs(a, b); 7634} 7635 7636static vector signed char __ATTRS_o_ai 7637vec_subs(vector bool char a, vector signed char b) 7638{ 7639 return __builtin_altivec_vsubsbs((vector signed char)a, b); 7640} 7641 7642static vector signed char __ATTRS_o_ai 7643vec_subs(vector signed char a, vector bool char b) 7644{ 7645 return __builtin_altivec_vsubsbs(a, (vector signed char)b); 7646} 7647 7648static vector unsigned char __ATTRS_o_ai 7649vec_subs(vector unsigned char a, vector unsigned char b) 7650{ 7651 return __builtin_altivec_vsububs(a, b); 7652} 7653 7654static vector unsigned char __ATTRS_o_ai 7655vec_subs(vector bool char a, vector unsigned char b) 7656{ 7657 return __builtin_altivec_vsububs((vector unsigned char)a, b); 7658} 7659 7660static vector unsigned char __ATTRS_o_ai 7661vec_subs(vector unsigned char a, vector bool char b) 7662{ 7663 return __builtin_altivec_vsububs(a, (vector unsigned char)b); 7664} 7665 7666static vector short __ATTRS_o_ai 7667vec_subs(vector short a, vector short b) 7668{ 7669 return __builtin_altivec_vsubshs(a, b); 7670} 7671 7672static vector short __ATTRS_o_ai 7673vec_subs(vector bool short a, vector short b) 7674{ 7675 return __builtin_altivec_vsubshs((vector short)a, b); 7676} 7677 7678static vector short __ATTRS_o_ai 7679vec_subs(vector short a, vector bool short b) 7680{ 7681 return __builtin_altivec_vsubshs(a, (vector short)b); 7682} 7683 7684static vector unsigned short __ATTRS_o_ai 7685vec_subs(vector unsigned short a, vector unsigned short b) 7686{ 7687 return __builtin_altivec_vsubuhs(a, b); 7688} 7689 7690static vector unsigned short __ATTRS_o_ai 7691vec_subs(vector bool short a, vector unsigned short b) 7692{ 7693 return __builtin_altivec_vsubuhs((vector unsigned short)a, b); 7694} 7695 7696static vector unsigned short __ATTRS_o_ai 7697vec_subs(vector unsigned short a, vector bool short b) 7698{ 7699 return __builtin_altivec_vsubuhs(a, (vector unsigned short)b); 7700} 7701 7702static vector int __ATTRS_o_ai 7703vec_subs(vector int a, vector int b) 7704{ 7705 return __builtin_altivec_vsubsws(a, b); 7706} 7707 7708static vector int __ATTRS_o_ai 7709vec_subs(vector bool int a, vector int b) 7710{ 7711 return __builtin_altivec_vsubsws((vector int)a, b); 7712} 7713 7714static vector int __ATTRS_o_ai 7715vec_subs(vector int a, vector bool int b) 7716{ 7717 return __builtin_altivec_vsubsws(a, (vector int)b); 7718} 7719 7720static vector unsigned int __ATTRS_o_ai 7721vec_subs(vector unsigned int a, vector unsigned int b) 7722{ 7723 return __builtin_altivec_vsubuws(a, b); 7724} 7725 7726static vector unsigned int __ATTRS_o_ai 7727vec_subs(vector bool int a, vector unsigned int b) 7728{ 7729 return __builtin_altivec_vsubuws((vector unsigned int)a, b); 7730} 7731 7732static vector unsigned int __ATTRS_o_ai 7733vec_subs(vector unsigned int a, vector bool int b) 7734{ 7735 return __builtin_altivec_vsubuws(a, (vector unsigned int)b); 7736} 7737 7738/* vec_vsubsbs */ 7739 7740static vector signed char __ATTRS_o_ai 7741vec_vsubsbs(vector signed char a, vector signed char b) 7742{ 7743 return __builtin_altivec_vsubsbs(a, b); 7744} 7745 7746static vector signed char __ATTRS_o_ai 7747vec_vsubsbs(vector bool char a, vector signed char b) 7748{ 7749 return __builtin_altivec_vsubsbs((vector signed char)a, b); 7750} 7751 7752static vector signed char __ATTRS_o_ai 7753vec_vsubsbs(vector signed char a, vector bool char b) 7754{ 7755 return __builtin_altivec_vsubsbs(a, (vector signed char)b); 7756} 7757 7758/* vec_vsububs */ 7759 7760static vector unsigned char __ATTRS_o_ai 7761vec_vsububs(vector unsigned char a, vector unsigned char b) 7762{ 7763 return __builtin_altivec_vsububs(a, b); 7764} 7765 7766static vector unsigned char __ATTRS_o_ai 7767vec_vsububs(vector bool char a, vector unsigned char b) 7768{ 7769 return __builtin_altivec_vsububs((vector unsigned char)a, b); 7770} 7771 7772static vector unsigned char __ATTRS_o_ai 7773vec_vsububs(vector unsigned char a, vector bool char b) 7774{ 7775 return __builtin_altivec_vsububs(a, (vector unsigned char)b); 7776} 7777 7778/* vec_vsubshs */ 7779 7780static vector short __ATTRS_o_ai 7781vec_vsubshs(vector short a, vector short b) 7782{ 7783 return __builtin_altivec_vsubshs(a, b); 7784} 7785 7786static vector short __ATTRS_o_ai 7787vec_vsubshs(vector bool short a, vector short b) 7788{ 7789 return __builtin_altivec_vsubshs((vector short)a, b); 7790} 7791 7792static vector short __ATTRS_o_ai 7793vec_vsubshs(vector short a, vector bool short b) 7794{ 7795 return __builtin_altivec_vsubshs(a, (vector short)b); 7796} 7797 7798/* vec_vsubuhs */ 7799 7800static vector unsigned short __ATTRS_o_ai 7801vec_vsubuhs(vector unsigned short a, vector unsigned short b) 7802{ 7803 return __builtin_altivec_vsubuhs(a, b); 7804} 7805 7806static vector unsigned short __ATTRS_o_ai 7807vec_vsubuhs(vector bool short a, vector unsigned short b) 7808{ 7809 return __builtin_altivec_vsubuhs((vector unsigned short)a, b); 7810} 7811 7812static vector unsigned short __ATTRS_o_ai 7813vec_vsubuhs(vector unsigned short a, vector bool short b) 7814{ 7815 return __builtin_altivec_vsubuhs(a, (vector unsigned short)b); 7816} 7817 7818/* vec_vsubsws */ 7819 7820static vector int __ATTRS_o_ai 7821vec_vsubsws(vector int a, vector int b) 7822{ 7823 return __builtin_altivec_vsubsws(a, b); 7824} 7825 7826static vector int __ATTRS_o_ai 7827vec_vsubsws(vector bool int a, vector int b) 7828{ 7829 return __builtin_altivec_vsubsws((vector int)a, b); 7830} 7831 7832static vector int __ATTRS_o_ai 7833vec_vsubsws(vector int a, vector bool int b) 7834{ 7835 return __builtin_altivec_vsubsws(a, (vector int)b); 7836} 7837 7838/* vec_vsubuws */ 7839 7840static vector unsigned int __ATTRS_o_ai 7841vec_vsubuws(vector unsigned int a, vector unsigned int b) 7842{ 7843 return __builtin_altivec_vsubuws(a, b); 7844} 7845 7846static vector unsigned int __ATTRS_o_ai 7847vec_vsubuws(vector bool int a, vector unsigned int b) 7848{ 7849 return __builtin_altivec_vsubuws((vector unsigned int)a, b); 7850} 7851 7852static vector unsigned int __ATTRS_o_ai 7853vec_vsubuws(vector unsigned int a, vector bool int b) 7854{ 7855 return __builtin_altivec_vsubuws(a, (vector unsigned int)b); 7856} 7857 7858/* vec_sum4s */ 7859 7860static vector int __ATTRS_o_ai 7861vec_sum4s(vector signed char a, vector int b) 7862{ 7863 return __builtin_altivec_vsum4sbs(a, b); 7864} 7865 7866static vector unsigned int __ATTRS_o_ai 7867vec_sum4s(vector unsigned char a, vector unsigned int b) 7868{ 7869 return __builtin_altivec_vsum4ubs(a, b); 7870} 7871 7872static vector int __ATTRS_o_ai 7873vec_sum4s(vector signed short a, vector int b) 7874{ 7875 return __builtin_altivec_vsum4shs(a, b); 7876} 7877 7878/* vec_vsum4sbs */ 7879 7880static vector int __attribute__((__always_inline__)) 7881vec_vsum4sbs(vector signed char a, vector int b) 7882{ 7883 return __builtin_altivec_vsum4sbs(a, b); 7884} 7885 7886/* vec_vsum4ubs */ 7887 7888static vector unsigned int __attribute__((__always_inline__)) 7889vec_vsum4ubs(vector unsigned char a, vector unsigned int b) 7890{ 7891 return __builtin_altivec_vsum4ubs(a, b); 7892} 7893 7894/* vec_vsum4shs */ 7895 7896static vector int __attribute__((__always_inline__)) 7897vec_vsum4shs(vector signed short a, vector int b) 7898{ 7899 return __builtin_altivec_vsum4shs(a, b); 7900} 7901 7902/* vec_sum2s */ 7903 7904static vector signed int __attribute__((__always_inline__)) 7905vec_sum2s(vector int a, vector int b) 7906{ 7907 return __builtin_altivec_vsum2sws(a, b); 7908} 7909 7910/* vec_vsum2sws */ 7911 7912static vector signed int __attribute__((__always_inline__)) 7913vec_vsum2sws(vector int a, vector int b) 7914{ 7915 return __builtin_altivec_vsum2sws(a, b); 7916} 7917 7918/* vec_sums */ 7919 7920static vector signed int __attribute__((__always_inline__)) 7921vec_sums(vector signed int a, vector signed int b) 7922{ 7923 return __builtin_altivec_vsumsws(a, b); 7924} 7925 7926/* vec_vsumsws */ 7927 7928static vector signed int __attribute__((__always_inline__)) 7929vec_vsumsws(vector signed int a, vector signed int b) 7930{ 7931 return __builtin_altivec_vsumsws(a, b); 7932} 7933 7934/* vec_trunc */ 7935 7936static vector float __attribute__((__always_inline__)) 7937vec_trunc(vector float a) 7938{ 7939 return __builtin_altivec_vrfiz(a); 7940} 7941 7942/* vec_vrfiz */ 7943 7944static vector float __attribute__((__always_inline__)) 7945vec_vrfiz(vector float a) 7946{ 7947 return __builtin_altivec_vrfiz(a); 7948} 7949 7950/* vec_unpackh */ 7951 7952static vector short __ATTRS_o_ai 7953vec_unpackh(vector signed char a) 7954{ 7955 return __builtin_altivec_vupkhsb((vector char)a); 7956} 7957 7958static vector bool short __ATTRS_o_ai 7959vec_unpackh(vector bool char a) 7960{ 7961 return (vector bool short)__builtin_altivec_vupkhsb((vector char)a); 7962} 7963 7964static vector int __ATTRS_o_ai 7965vec_unpackh(vector short a) 7966{ 7967 return __builtin_altivec_vupkhsh(a); 7968} 7969 7970static vector bool int __ATTRS_o_ai 7971vec_unpackh(vector bool short a) 7972{ 7973 return (vector bool int)__builtin_altivec_vupkhsh((vector short)a); 7974} 7975 7976static vector unsigned int __ATTRS_o_ai 7977vec_unpackh(vector pixel a) 7978{ 7979 return (vector unsigned int)__builtin_altivec_vupkhsh((vector short)a); 7980} 7981 7982/* vec_vupkhsb */ 7983 7984static vector short __ATTRS_o_ai 7985vec_vupkhsb(vector signed char a) 7986{ 7987 return __builtin_altivec_vupkhsb((vector char)a); 7988} 7989 7990static vector bool short __ATTRS_o_ai 7991vec_vupkhsb(vector bool char a) 7992{ 7993 return (vector bool short)__builtin_altivec_vupkhsb((vector char)a); 7994} 7995 7996/* vec_vupkhsh */ 7997 7998static vector int __ATTRS_o_ai 7999vec_vupkhsh(vector short a) 8000{ 8001 return __builtin_altivec_vupkhsh(a); 8002} 8003 8004static vector bool int __ATTRS_o_ai 8005vec_vupkhsh(vector bool short a) 8006{ 8007 return (vector bool int)__builtin_altivec_vupkhsh((vector short)a); 8008} 8009 8010static vector unsigned int __ATTRS_o_ai 8011vec_vupkhsh(vector pixel a) 8012{ 8013 return (vector unsigned int)__builtin_altivec_vupkhsh((vector short)a); 8014} 8015 8016/* vec_unpackl */ 8017 8018static vector short __ATTRS_o_ai 8019vec_unpackl(vector signed char a) 8020{ 8021 return __builtin_altivec_vupklsb((vector char)a); 8022} 8023 8024static vector bool short __ATTRS_o_ai 8025vec_unpackl(vector bool char a) 8026{ 8027 return (vector bool short)__builtin_altivec_vupklsb((vector char)a); 8028} 8029 8030static vector int __ATTRS_o_ai 8031vec_unpackl(vector short a) 8032{ 8033 return __builtin_altivec_vupklsh(a); 8034} 8035 8036static vector bool int __ATTRS_o_ai 8037vec_unpackl(vector bool short a) 8038{ 8039 return (vector bool int)__builtin_altivec_vupklsh((vector short)a); 8040} 8041 8042static vector unsigned int __ATTRS_o_ai 8043vec_unpackl(vector pixel a) 8044{ 8045 return (vector unsigned int)__builtin_altivec_vupklsh((vector short)a); 8046} 8047 8048/* vec_vupklsb */ 8049 8050static vector short __ATTRS_o_ai 8051vec_vupklsb(vector signed char a) 8052{ 8053 return __builtin_altivec_vupklsb((vector char)a); 8054} 8055 8056static vector bool short __ATTRS_o_ai 8057vec_vupklsb(vector bool char a) 8058{ 8059 return (vector bool short)__builtin_altivec_vupklsb((vector char)a); 8060} 8061 8062/* vec_vupklsh */ 8063 8064static vector int __ATTRS_o_ai 8065vec_vupklsh(vector short a) 8066{ 8067 return __builtin_altivec_vupklsh(a); 8068} 8069 8070static vector bool int __ATTRS_o_ai 8071vec_vupklsh(vector bool short a) 8072{ 8073 return (vector bool int)__builtin_altivec_vupklsh((vector short)a); 8074} 8075 8076static vector unsigned int __ATTRS_o_ai 8077vec_vupklsh(vector pixel a) 8078{ 8079 return (vector unsigned int)__builtin_altivec_vupklsh((vector short)a); 8080} 8081 8082/* vec_xor */ 8083 8084#define __builtin_altivec_vxor vec_xor 8085 8086static vector signed char __ATTRS_o_ai 8087vec_xor(vector signed char a, vector signed char b) 8088{ 8089 return a ^ b; 8090} 8091 8092static vector signed char __ATTRS_o_ai 8093vec_xor(vector bool char a, vector signed char b) 8094{ 8095 return (vector signed char)a ^ b; 8096} 8097 8098static vector signed char __ATTRS_o_ai 8099vec_xor(vector signed char a, vector bool char b) 8100{ 8101 return a ^ (vector signed char)b; 8102} 8103 8104static vector unsigned char __ATTRS_o_ai 8105vec_xor(vector unsigned char a, vector unsigned char b) 8106{ 8107 return a ^ b; 8108} 8109 8110static vector unsigned char __ATTRS_o_ai 8111vec_xor(vector bool char a, vector unsigned char b) 8112{ 8113 return (vector unsigned char)a ^ b; 8114} 8115 8116static vector unsigned char __ATTRS_o_ai 8117vec_xor(vector unsigned char a, vector bool char b) 8118{ 8119 return a ^ (vector unsigned char)b; 8120} 8121 8122static vector bool char __ATTRS_o_ai 8123vec_xor(vector bool char a, vector bool char b) 8124{ 8125 return a ^ b; 8126} 8127 8128static vector short __ATTRS_o_ai 8129vec_xor(vector short a, vector short b) 8130{ 8131 return a ^ b; 8132} 8133 8134static vector short __ATTRS_o_ai 8135vec_xor(vector bool short a, vector short b) 8136{ 8137 return (vector short)a ^ b; 8138} 8139 8140static vector short __ATTRS_o_ai 8141vec_xor(vector short a, vector bool short b) 8142{ 8143 return a ^ (vector short)b; 8144} 8145 8146static vector unsigned short __ATTRS_o_ai 8147vec_xor(vector unsigned short a, vector unsigned short b) 8148{ 8149 return a ^ b; 8150} 8151 8152static vector unsigned short __ATTRS_o_ai 8153vec_xor(vector bool short a, vector unsigned short b) 8154{ 8155 return (vector unsigned short)a ^ b; 8156} 8157 8158static vector unsigned short __ATTRS_o_ai 8159vec_xor(vector unsigned short a, vector bool short b) 8160{ 8161 return a ^ (vector unsigned short)b; 8162} 8163 8164static vector bool short __ATTRS_o_ai 8165vec_xor(vector bool short a, vector bool short b) 8166{ 8167 return a ^ b; 8168} 8169 8170static vector int __ATTRS_o_ai 8171vec_xor(vector int a, vector int b) 8172{ 8173 return a ^ b; 8174} 8175 8176static vector int __ATTRS_o_ai 8177vec_xor(vector bool int a, vector int b) 8178{ 8179 return (vector int)a ^ b; 8180} 8181 8182static vector int __ATTRS_o_ai 8183vec_xor(vector int a, vector bool int b) 8184{ 8185 return a ^ (vector int)b; 8186} 8187 8188static vector unsigned int __ATTRS_o_ai 8189vec_xor(vector unsigned int a, vector unsigned int b) 8190{ 8191 return a ^ b; 8192} 8193 8194static vector unsigned int __ATTRS_o_ai 8195vec_xor(vector bool int a, vector unsigned int b) 8196{ 8197 return (vector unsigned int)a ^ b; 8198} 8199 8200static vector unsigned int __ATTRS_o_ai 8201vec_xor(vector unsigned int a, vector bool int b) 8202{ 8203 return a ^ (vector unsigned int)b; 8204} 8205 8206static vector bool int __ATTRS_o_ai 8207vec_xor(vector bool int a, vector bool int b) 8208{ 8209 return a ^ b; 8210} 8211 8212static vector float __ATTRS_o_ai 8213vec_xor(vector float a, vector float b) 8214{ 8215 vector unsigned int res = (vector unsigned int)a ^ (vector unsigned int)b; 8216 return (vector float)res; 8217} 8218 8219static vector float __ATTRS_o_ai 8220vec_xor(vector bool int a, vector float b) 8221{ 8222 vector unsigned int res = (vector unsigned int)a ^ (vector unsigned int)b; 8223 return (vector float)res; 8224} 8225 8226static vector float __ATTRS_o_ai 8227vec_xor(vector float a, vector bool int b) 8228{ 8229 vector unsigned int res = (vector unsigned int)a ^ (vector unsigned int)b; 8230 return (vector float)res; 8231} 8232 8233/* vec_vxor */ 8234 8235static vector signed char __ATTRS_o_ai 8236vec_vxor(vector signed char a, vector signed char b) 8237{ 8238 return a ^ b; 8239} 8240 8241static vector signed char __ATTRS_o_ai 8242vec_vxor(vector bool char a, vector signed char b) 8243{ 8244 return (vector signed char)a ^ b; 8245} 8246 8247static vector signed char __ATTRS_o_ai 8248vec_vxor(vector signed char a, vector bool char b) 8249{ 8250 return a ^ (vector signed char)b; 8251} 8252 8253static vector unsigned char __ATTRS_o_ai 8254vec_vxor(vector unsigned char a, vector unsigned char b) 8255{ 8256 return a ^ b; 8257} 8258 8259static vector unsigned char __ATTRS_o_ai 8260vec_vxor(vector bool char a, vector unsigned char b) 8261{ 8262 return (vector unsigned char)a ^ b; 8263} 8264 8265static vector unsigned char __ATTRS_o_ai 8266vec_vxor(vector unsigned char a, vector bool char b) 8267{ 8268 return a ^ (vector unsigned char)b; 8269} 8270 8271static vector bool char __ATTRS_o_ai 8272vec_vxor(vector bool char a, vector bool char b) 8273{ 8274 return a ^ b; 8275} 8276 8277static vector short __ATTRS_o_ai 8278vec_vxor(vector short a, vector short b) 8279{ 8280 return a ^ b; 8281} 8282 8283static vector short __ATTRS_o_ai 8284vec_vxor(vector bool short a, vector short b) 8285{ 8286 return (vector short)a ^ b; 8287} 8288 8289static vector short __ATTRS_o_ai 8290vec_vxor(vector short a, vector bool short b) 8291{ 8292 return a ^ (vector short)b; 8293} 8294 8295static vector unsigned short __ATTRS_o_ai 8296vec_vxor(vector unsigned short a, vector unsigned short b) 8297{ 8298 return a ^ b; 8299} 8300 8301static vector unsigned short __ATTRS_o_ai 8302vec_vxor(vector bool short a, vector unsigned short b) 8303{ 8304 return (vector unsigned short)a ^ b; 8305} 8306 8307static vector unsigned short __ATTRS_o_ai 8308vec_vxor(vector unsigned short a, vector bool short b) 8309{ 8310 return a ^ (vector unsigned short)b; 8311} 8312 8313static vector bool short __ATTRS_o_ai 8314vec_vxor(vector bool short a, vector bool short b) 8315{ 8316 return a ^ b; 8317} 8318 8319static vector int __ATTRS_o_ai 8320vec_vxor(vector int a, vector int b) 8321{ 8322 return a ^ b; 8323} 8324 8325static vector int __ATTRS_o_ai 8326vec_vxor(vector bool int a, vector int b) 8327{ 8328 return (vector int)a ^ b; 8329} 8330 8331static vector int __ATTRS_o_ai 8332vec_vxor(vector int a, vector bool int b) 8333{ 8334 return a ^ (vector int)b; 8335} 8336 8337static vector unsigned int __ATTRS_o_ai 8338vec_vxor(vector unsigned int a, vector unsigned int b) 8339{ 8340 return a ^ b; 8341} 8342 8343static vector unsigned int __ATTRS_o_ai 8344vec_vxor(vector bool int a, vector unsigned int b) 8345{ 8346 return (vector unsigned int)a ^ b; 8347} 8348 8349static vector unsigned int __ATTRS_o_ai 8350vec_vxor(vector unsigned int a, vector bool int b) 8351{ 8352 return a ^ (vector unsigned int)b; 8353} 8354 8355static vector bool int __ATTRS_o_ai 8356vec_vxor(vector bool int a, vector bool int b) 8357{ 8358 return a ^ b; 8359} 8360 8361static vector float __ATTRS_o_ai 8362vec_vxor(vector float a, vector float b) 8363{ 8364 vector unsigned int res = (vector unsigned int)a ^ (vector unsigned int)b; 8365 return (vector float)res; 8366} 8367 8368static vector float __ATTRS_o_ai 8369vec_vxor(vector bool int a, vector float b) 8370{ 8371 vector unsigned int res = (vector unsigned int)a ^ (vector unsigned int)b; 8372 return (vector float)res; 8373} 8374 8375static vector float __ATTRS_o_ai 8376vec_vxor(vector float a, vector bool int b) 8377{ 8378 vector unsigned int res = (vector unsigned int)a ^ (vector unsigned int)b; 8379 return (vector float)res; 8380} 8381 8382/* ------------------------------ predicates ------------------------------------ */ 8383 8384/* vec_all_eq */ 8385 8386static int __ATTRS_o_ai 8387vec_all_eq(vector signed char a, vector signed char b) 8388{ 8389 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)a, (vector char)b); 8390} 8391 8392static int __ATTRS_o_ai 8393vec_all_eq(vector unsigned char a, vector unsigned char b) 8394{ 8395 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)a, (vector char)b); 8396} 8397 8398static int __ATTRS_o_ai 8399vec_all_eq(vector short a, vector short b) 8400{ 8401 return __builtin_altivec_vcmpequh_p(__CR6_LT, a, b); 8402} 8403 8404static int __ATTRS_o_ai 8405vec_all_eq(vector unsigned short a, vector unsigned short b) 8406{ 8407 return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)a, (vector short)b); 8408} 8409 8410static int __ATTRS_o_ai 8411vec_all_eq(vector int a, vector int b) 8412{ 8413 return __builtin_altivec_vcmpequw_p(__CR6_LT, a, b); 8414} 8415 8416static int __ATTRS_o_ai 8417vec_all_eq(vector unsigned int a, vector unsigned int b) 8418{ 8419 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)a, (vector int)b); 8420} 8421 8422static int __ATTRS_o_ai 8423vec_all_eq(vector float a, vector float b) 8424{ 8425 return __builtin_altivec_vcmpeqfp_p(__CR6_LT, a, b); 8426} 8427 8428/* vec_all_ge */ 8429 8430static int __ATTRS_o_ai 8431vec_all_ge(vector signed char a, vector signed char b) 8432{ 8433 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, b, a); 8434} 8435 8436static int __ATTRS_o_ai 8437vec_all_ge(vector unsigned char a, vector unsigned char b) 8438{ 8439 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, b, a); 8440} 8441 8442static int __ATTRS_o_ai 8443vec_all_ge(vector short a, vector short b) 8444{ 8445 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, b, a); 8446} 8447 8448static int __ATTRS_o_ai 8449vec_all_ge(vector unsigned short a, vector unsigned short b) 8450{ 8451 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, b, a); 8452} 8453 8454static int __ATTRS_o_ai 8455vec_all_ge(vector int a, vector int b) 8456{ 8457 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, b, a); 8458} 8459 8460static int __ATTRS_o_ai 8461vec_all_ge(vector unsigned int a, vector unsigned int b) 8462{ 8463 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, b, a); 8464} 8465 8466static int __ATTRS_o_ai 8467vec_all_ge(vector float a, vector float b) 8468{ 8469 return __builtin_altivec_vcmpgefp_p(__CR6_LT, a, b); 8470} 8471 8472/* vec_all_gt */ 8473 8474static int __ATTRS_o_ai 8475vec_all_gt(vector signed char a, vector signed char b) 8476{ 8477 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, a, b); 8478} 8479 8480static int __ATTRS_o_ai 8481vec_all_gt(vector unsigned char a, vector unsigned char b) 8482{ 8483 return __builtin_altivec_vcmpgtub_p(__CR6_LT, a, b); 8484} 8485 8486static int __ATTRS_o_ai 8487vec_all_gt(vector short a, vector short b) 8488{ 8489 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, a, b); 8490} 8491 8492static int __ATTRS_o_ai 8493vec_all_gt(vector unsigned short a, vector unsigned short b) 8494{ 8495 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, a, b); 8496} 8497 8498static int __ATTRS_o_ai 8499vec_all_gt(vector int a, vector int b) 8500{ 8501 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, a, b); 8502} 8503 8504static int __ATTRS_o_ai 8505vec_all_gt(vector unsigned int a, vector unsigned int b) 8506{ 8507 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, a, b); 8508} 8509 8510static int __ATTRS_o_ai 8511vec_all_gt(vector float a, vector float b) 8512{ 8513 return __builtin_altivec_vcmpgtfp_p(__CR6_LT, a, b); 8514} 8515 8516/* vec_all_in */ 8517 8518static int __attribute__((__always_inline__)) 8519vec_all_in(vector float a, vector float b) 8520{ 8521 return __builtin_altivec_vcmpbfp_p(__CR6_EQ, a, b); 8522} 8523 8524/* vec_all_le */ 8525 8526static int __ATTRS_o_ai 8527vec_all_le(vector signed char a, vector signed char b) 8528{ 8529 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, a, b); 8530} 8531 8532static int __ATTRS_o_ai 8533vec_all_le(vector unsigned char a, vector unsigned char b) 8534{ 8535 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, a, b); 8536} 8537 8538static int __ATTRS_o_ai 8539vec_all_le(vector short a, vector short b) 8540{ 8541 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, a, b); 8542} 8543 8544static int __ATTRS_o_ai 8545vec_all_le(vector unsigned short a, vector unsigned short b) 8546{ 8547 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, a, b); 8548} 8549 8550static int __ATTRS_o_ai 8551vec_all_le(vector int a, vector int b) 8552{ 8553 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, a, b); 8554} 8555 8556static int __ATTRS_o_ai 8557vec_all_le(vector unsigned int a, vector unsigned int b) 8558{ 8559 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, a, b); 8560} 8561 8562static int __ATTRS_o_ai 8563vec_all_le(vector float a, vector float b) 8564{ 8565 return __builtin_altivec_vcmpgefp_p(__CR6_LT, b, a); 8566} 8567 8568/* vec_all_lt */ 8569 8570static int __ATTRS_o_ai 8571vec_all_lt(vector signed char a, vector signed char b) 8572{ 8573 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, b, a); 8574} 8575 8576static int __ATTRS_o_ai 8577vec_all_lt(vector unsigned char a, vector unsigned char b) 8578{ 8579 return __builtin_altivec_vcmpgtub_p(__CR6_LT, b, a); 8580} 8581 8582static int __ATTRS_o_ai 8583vec_all_lt(vector short a, vector short b) 8584{ 8585 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, b, a); 8586} 8587 8588static int __ATTRS_o_ai 8589vec_all_lt(vector unsigned short a, vector unsigned short b) 8590{ 8591 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, b, a); 8592} 8593 8594static int __ATTRS_o_ai 8595vec_all_lt(vector int a, vector int b) 8596{ 8597 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, b, a); 8598} 8599 8600static int __ATTRS_o_ai 8601vec_all_lt(vector unsigned int a, vector unsigned int b) 8602{ 8603 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, b, a); 8604} 8605 8606static int __ATTRS_o_ai 8607vec_all_lt(vector float a, vector float b) 8608{ 8609 return __builtin_altivec_vcmpgtfp_p(__CR6_LT, b, a); 8610} 8611 8612/* vec_all_nan */ 8613 8614static int __attribute__((__always_inline__)) 8615vec_all_nan(vector float a) 8616{ 8617 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, a, a); 8618} 8619 8620/* vec_all_ne */ 8621 8622static int __ATTRS_o_ai 8623vec_all_ne(vector signed char a, vector signed char b) 8624{ 8625 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)a, (vector char)b); 8626} 8627 8628static int __ATTRS_o_ai 8629vec_all_ne(vector unsigned char a, vector unsigned char b) 8630{ 8631 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)a, (vector char)b); 8632} 8633 8634static int __ATTRS_o_ai 8635vec_all_ne(vector short a, vector short b) 8636{ 8637 return __builtin_altivec_vcmpequh_p(__CR6_EQ, a, b); 8638} 8639 8640static int __ATTRS_o_ai 8641vec_all_ne(vector unsigned short a, vector unsigned short b) 8642{ 8643 return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)a, (vector short)b); 8644} 8645 8646static int __ATTRS_o_ai 8647vec_all_ne(vector int a, vector int b) 8648{ 8649 return __builtin_altivec_vcmpequw_p(__CR6_EQ, a, b); 8650} 8651 8652static int __ATTRS_o_ai 8653vec_all_ne(vector unsigned int a, vector unsigned int b) 8654{ 8655 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)a, (vector int)b); 8656} 8657 8658static int __ATTRS_o_ai 8659vec_all_ne(vector float a, vector float b) 8660{ 8661 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, a, b); 8662} 8663 8664/* vec_all_nge */ 8665 8666static int __attribute__((__always_inline__)) 8667vec_all_nge(vector float a, vector float b) 8668{ 8669 return __builtin_altivec_vcmpgefp_p(__CR6_EQ, a, b); 8670} 8671 8672/* vec_all_ngt */ 8673 8674static int __attribute__((__always_inline__)) 8675vec_all_ngt(vector float a, vector float b) 8676{ 8677 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, a, b); 8678} 8679 8680/* vec_all_nle */ 8681 8682static int __attribute__((__always_inline__)) 8683vec_all_nle(vector float a, vector float b) 8684{ 8685 return __builtin_altivec_vcmpgefp_p(__CR6_EQ, b, a); 8686} 8687 8688/* vec_all_nlt */ 8689 8690static int __attribute__((__always_inline__)) 8691vec_all_nlt(vector float a, vector float b) 8692{ 8693 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, b, a); 8694} 8695 8696/* vec_all_numeric */ 8697 8698static int __attribute__((__always_inline__)) 8699vec_all_numeric(vector float a) 8700{ 8701 return __builtin_altivec_vcmpeqfp_p(__CR6_LT, a, a); 8702} 8703 8704/* vec_any_eq */ 8705 8706static int __ATTRS_o_ai 8707vec_any_eq(vector signed char a, vector signed char b) 8708{ 8709 return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)a, (vector char)b); 8710} 8711 8712static int __ATTRS_o_ai 8713vec_any_eq(vector unsigned char a, vector unsigned char b) 8714{ 8715 return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)a, (vector char)b); 8716} 8717 8718static int __ATTRS_o_ai 8719vec_any_eq(vector short a, vector short b) 8720{ 8721 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, a, b); 8722} 8723 8724static int __ATTRS_o_ai 8725vec_any_eq(vector unsigned short a, vector unsigned short b) 8726{ 8727 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)a, (vector short)b); 8728} 8729 8730static int __ATTRS_o_ai 8731vec_any_eq(vector int a, vector int b) 8732{ 8733 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, a, b); 8734} 8735 8736static int __ATTRS_o_ai 8737vec_any_eq(vector unsigned int a, vector unsigned int b) 8738{ 8739 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)a, (vector int)b); 8740} 8741 8742static int __ATTRS_o_ai 8743vec_any_eq(vector float a, vector float b) 8744{ 8745 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, a, b); 8746} 8747 8748/* vec_any_ge */ 8749 8750static int __ATTRS_o_ai 8751vec_any_ge(vector signed char a, vector signed char b) 8752{ 8753 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, b, a); 8754} 8755 8756static int __ATTRS_o_ai 8757vec_any_ge(vector unsigned char a, vector unsigned char b) 8758{ 8759 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, b, a); 8760} 8761 8762static int __ATTRS_o_ai 8763vec_any_ge(vector short a, vector short b) 8764{ 8765 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, b, a); 8766} 8767 8768static int __ATTRS_o_ai 8769vec_any_ge(vector unsigned short a, vector unsigned short b) 8770{ 8771 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, b, a); 8772} 8773 8774static int __ATTRS_o_ai 8775vec_any_ge(vector int a, vector int b) 8776{ 8777 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, b, a); 8778} 8779 8780static int __ATTRS_o_ai 8781vec_any_ge(vector unsigned int a, vector unsigned int b) 8782{ 8783 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, b, a); 8784} 8785 8786static int __ATTRS_o_ai 8787vec_any_ge(vector float a, vector float b) 8788{ 8789 return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, a, b); 8790} 8791 8792/* vec_any_gt */ 8793 8794static int __ATTRS_o_ai 8795vec_any_gt(vector signed char a, vector signed char b) 8796{ 8797 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, a, b); 8798} 8799 8800static int __ATTRS_o_ai 8801vec_any_gt(vector unsigned char a, vector unsigned char b) 8802{ 8803 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, a, b); 8804} 8805 8806static int __ATTRS_o_ai 8807vec_any_gt(vector short a, vector short b) 8808{ 8809 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, a, b); 8810} 8811 8812static int __ATTRS_o_ai 8813vec_any_gt(vector unsigned short a, vector unsigned short b) 8814{ 8815 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, a, b); 8816} 8817 8818static int __ATTRS_o_ai 8819vec_any_gt(vector int a, vector int b) 8820{ 8821 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, a, b); 8822} 8823 8824static int __ATTRS_o_ai 8825vec_any_gt(vector unsigned int a, vector unsigned int b) 8826{ 8827 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, a, b); 8828} 8829 8830static int __ATTRS_o_ai 8831vec_any_gt(vector float a, vector float b) 8832{ 8833 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, a, b); 8834} 8835 8836/* vec_any_le */ 8837 8838static int __ATTRS_o_ai 8839vec_any_le(vector signed char a, vector signed char b) 8840{ 8841 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, a, b); 8842} 8843 8844static int __ATTRS_o_ai 8845vec_any_le(vector unsigned char a, vector unsigned char b) 8846{ 8847 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, a, b); 8848} 8849 8850static int __ATTRS_o_ai 8851vec_any_le(vector short a, vector short b) 8852{ 8853 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, a, b); 8854} 8855 8856static int __ATTRS_o_ai 8857vec_any_le(vector unsigned short a, vector unsigned short b) 8858{ 8859 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, a, b); 8860} 8861 8862static int __ATTRS_o_ai 8863vec_any_le(vector int a, vector int b) 8864{ 8865 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, a, b); 8866} 8867 8868static int __ATTRS_o_ai 8869vec_any_le(vector unsigned int a, vector unsigned int b) 8870{ 8871 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, a, b); 8872} 8873 8874static int __ATTRS_o_ai 8875vec_any_le(vector float a, vector float b) 8876{ 8877 return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, b, a); 8878} 8879 8880/* vec_any_lt */ 8881 8882static int __ATTRS_o_ai 8883vec_any_lt(vector signed char a, vector signed char b) 8884{ 8885 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, b, a); 8886} 8887 8888static int __ATTRS_o_ai 8889vec_any_lt(vector unsigned char a, vector unsigned char b) 8890{ 8891 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, b, a); 8892} 8893 8894static int __ATTRS_o_ai 8895vec_any_lt(vector short a, vector short b) 8896{ 8897 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, b, a); 8898} 8899 8900static int __ATTRS_o_ai 8901vec_any_lt(vector unsigned short a, vector unsigned short b) 8902{ 8903 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, b, a); 8904} 8905 8906static int __ATTRS_o_ai 8907vec_any_lt(vector int a, vector int b) 8908{ 8909 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, b, a); 8910} 8911 8912static int __ATTRS_o_ai 8913vec_any_lt(vector unsigned int a, vector unsigned int b) 8914{ 8915 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, b, a); 8916} 8917 8918static int __ATTRS_o_ai 8919vec_any_lt(vector float a, vector float b) 8920{ 8921 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, b, a); 8922} 8923 8924/* vec_any_nan */ 8925 8926static int __attribute__((__always_inline__)) 8927vec_any_nan(vector float a) 8928{ 8929 return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, a, a); 8930} 8931 8932/* vec_any_ne */ 8933 8934static int __ATTRS_o_ai 8935vec_any_ne(vector signed char a, vector signed char b) 8936{ 8937 return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)a, (vector char)b); 8938} 8939 8940static int __ATTRS_o_ai 8941vec_any_ne(vector unsigned char a, vector unsigned char b) 8942{ 8943 return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)a, (vector char)b); 8944} 8945 8946static int __ATTRS_o_ai 8947vec_any_ne(vector short a, vector short b) 8948{ 8949 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, a, b); 8950} 8951 8952static int __ATTRS_o_ai 8953vec_any_ne(vector unsigned short a, vector unsigned short b) 8954{ 8955 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)a, (vector short)b); 8956} 8957 8958static int __ATTRS_o_ai 8959vec_any_ne(vector int a, vector int b) 8960{ 8961 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, a, b); 8962} 8963 8964static int __ATTRS_o_ai 8965vec_any_ne(vector unsigned int a, vector unsigned int b) 8966{ 8967 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)a, (vector int)b); 8968} 8969 8970static int __ATTRS_o_ai 8971vec_any_ne(vector float a, vector float b) 8972{ 8973 return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, a, b); 8974} 8975 8976/* vec_any_nge */ 8977 8978static int __attribute__((__always_inline__)) 8979vec_any_nge(vector float a, vector float b) 8980{ 8981 return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, a, b); 8982} 8983 8984/* vec_any_ngt */ 8985 8986static int __attribute__((__always_inline__)) 8987vec_any_ngt(vector float a, vector float b) 8988{ 8989 return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, a, b); 8990} 8991 8992/* vec_any_nle */ 8993 8994static int __attribute__((__always_inline__)) 8995vec_any_nle(vector float a, vector float b) 8996{ 8997 return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, b, a); 8998} 8999 9000/* vec_any_nlt */ 9001 9002static int __attribute__((__always_inline__)) 9003vec_any_nlt(vector float a, vector float b) 9004{ 9005 return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, b, a); 9006} 9007 9008/* vec_any_numeric */ 9009 9010static int __attribute__((__always_inline__)) 9011vec_any_numeric(vector float a) 9012{ 9013 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, a, a); 9014} 9015 9016/* vec_any_out */ 9017 9018static int __attribute__((__always_inline__)) 9019vec_any_out(vector float a, vector float b) 9020{ 9021 return __builtin_altivec_vcmpbfp_p(__CR6_EQ_REV, a, b); 9022} 9023 9024#undef __ATTRS_o_ai 9025 9026#endif /* __ALTIVEC_H */ 9027