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