Home | History | Annotate | Download | only in Headers
      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 __inline__ vector signed char __ATTRS_o_ai vec_perm(
     40     vector signed char __a, vector signed char __b, vector unsigned char __c);
     41 
     42 static __inline__ vector unsigned char __ATTRS_o_ai
     43 vec_perm(vector unsigned char __a, vector unsigned char __b,
     44          vector unsigned char __c);
     45 
     46 static __inline__ vector bool char __ATTRS_o_ai
     47 vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c);
     48 
     49 static __inline__ vector short __ATTRS_o_ai vec_perm(vector signed short __a,
     50                                                      vector signed short __b,
     51                                                      vector unsigned char __c);
     52 
     53 static __inline__ vector unsigned short __ATTRS_o_ai
     54 vec_perm(vector unsigned short __a, vector unsigned short __b,
     55          vector unsigned char __c);
     56 
     57 static __inline__ vector bool short __ATTRS_o_ai vec_perm(
     58     vector bool short __a, vector bool short __b, vector unsigned char __c);
     59 
     60 static __inline__ vector pixel __ATTRS_o_ai vec_perm(vector pixel __a,
     61                                                      vector pixel __b,
     62                                                      vector unsigned char __c);
     63 
     64 static __inline__ vector int __ATTRS_o_ai vec_perm(vector signed int __a,
     65                                                    vector signed int __b,
     66                                                    vector unsigned char __c);
     67 
     68 static __inline__ vector unsigned int __ATTRS_o_ai vec_perm(
     69     vector unsigned int __a, vector unsigned int __b, vector unsigned char __c);
     70 
     71 static __inline__ vector bool int __ATTRS_o_ai
     72 vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c);
     73 
     74 static __inline__ vector float __ATTRS_o_ai vec_perm(vector float __a,
     75                                                      vector float __b,
     76                                                      vector unsigned char __c);
     77 
     78 #ifdef __VSX__
     79 static __inline__ vector long long __ATTRS_o_ai
     80 vec_perm(vector signed long long __a, vector signed long long __b,
     81          vector unsigned char __c);
     82 
     83 static __inline__ vector unsigned long long __ATTRS_o_ai
     84 vec_perm(vector unsigned long long __a, vector unsigned long long __b,
     85          vector unsigned char __c);
     86 
     87 static __inline__ vector bool long long __ATTRS_o_ai
     88 vec_perm(vector bool long long __a, vector bool long long __b,
     89          vector unsigned char __c);
     90 
     91 static __inline__ vector double __ATTRS_o_ai vec_perm(vector double __a,
     92                                                       vector double __b,
     93                                                       vector unsigned char __c);
     94 #endif
     95 
     96 static __inline__ vector unsigned char __ATTRS_o_ai
     97 vec_xor(vector unsigned char __a, vector unsigned char __b);
     98 
     99 /* vec_abs */
    100 
    101 #define __builtin_altivec_abs_v16qi vec_abs
    102 #define __builtin_altivec_abs_v8hi vec_abs
    103 #define __builtin_altivec_abs_v4si vec_abs
    104 
    105 static __inline__ vector signed char __ATTRS_o_ai
    106 vec_abs(vector signed char __a) {
    107   return __builtin_altivec_vmaxsb(__a, -__a);
    108 }
    109 
    110 static __inline__ vector signed short __ATTRS_o_ai
    111 vec_abs(vector signed short __a) {
    112   return __builtin_altivec_vmaxsh(__a, -__a);
    113 }
    114 
    115 static __inline__ vector signed int __ATTRS_o_ai
    116 vec_abs(vector signed int __a) {
    117   return __builtin_altivec_vmaxsw(__a, -__a);
    118 }
    119 
    120 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
    121 static __inline__ vector signed long long __ATTRS_o_ai
    122 vec_abs(vector signed long long __a) {
    123   return __builtin_altivec_vmaxsd(__a, -__a);
    124 }
    125 #endif
    126 
    127 static __inline__ vector float __ATTRS_o_ai vec_abs(vector float __a) {
    128 #ifdef __VSX__
    129   return __builtin_vsx_xvabssp(__a);
    130 #else
    131   vector unsigned int __res =
    132       (vector unsigned int)__a & (vector unsigned int)(0x7FFFFFFF);
    133   return (vector float)__res;
    134 #endif
    135 }
    136 
    137 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
    138 static __inline__ vector double __ATTRS_o_ai vec_abs(vector double __a) {
    139   return __builtin_vsx_xvabsdp(__a);
    140 }
    141 #endif
    142 
    143 /* vec_abss */
    144 #define __builtin_altivec_abss_v16qi vec_abss
    145 #define __builtin_altivec_abss_v8hi vec_abss
    146 #define __builtin_altivec_abss_v4si vec_abss
    147 
    148 static __inline__ vector signed char __ATTRS_o_ai
    149 vec_abss(vector signed char __a) {
    150   return __builtin_altivec_vmaxsb(
    151       __a, __builtin_altivec_vsubsbs((vector signed char)(0), __a));
    152 }
    153 
    154 static __inline__ vector signed short __ATTRS_o_ai
    155 vec_abss(vector signed short __a) {
    156   return __builtin_altivec_vmaxsh(
    157       __a, __builtin_altivec_vsubshs((vector signed short)(0), __a));
    158 }
    159 
    160 static __inline__ vector signed int __ATTRS_o_ai
    161 vec_abss(vector signed int __a) {
    162   return __builtin_altivec_vmaxsw(
    163       __a, __builtin_altivec_vsubsws((vector signed int)(0), __a));
    164 }
    165 
    166 /* vec_add */
    167 
    168 static __inline__ vector signed char __ATTRS_o_ai
    169 vec_add(vector signed char __a, vector signed char __b) {
    170   return __a + __b;
    171 }
    172 
    173 static __inline__ vector signed char __ATTRS_o_ai
    174 vec_add(vector bool char __a, vector signed char __b) {
    175   return (vector signed char)__a + __b;
    176 }
    177 
    178 static __inline__ vector signed char __ATTRS_o_ai
    179 vec_add(vector signed char __a, vector bool char __b) {
    180   return __a + (vector signed char)__b;
    181 }
    182 
    183 static __inline__ vector unsigned char __ATTRS_o_ai
    184 vec_add(vector unsigned char __a, vector unsigned char __b) {
    185   return __a + __b;
    186 }
    187 
    188 static __inline__ vector unsigned char __ATTRS_o_ai
    189 vec_add(vector bool char __a, vector unsigned char __b) {
    190   return (vector unsigned char)__a + __b;
    191 }
    192 
    193 static __inline__ vector unsigned char __ATTRS_o_ai
    194 vec_add(vector unsigned char __a, vector bool char __b) {
    195   return __a + (vector unsigned char)__b;
    196 }
    197 
    198 static __inline__ vector short __ATTRS_o_ai vec_add(vector short __a,
    199                                                     vector short __b) {
    200   return __a + __b;
    201 }
    202 
    203 static __inline__ vector short __ATTRS_o_ai vec_add(vector bool short __a,
    204                                                     vector short __b) {
    205   return (vector short)__a + __b;
    206 }
    207 
    208 static __inline__ vector short __ATTRS_o_ai vec_add(vector short __a,
    209                                                     vector bool short __b) {
    210   return __a + (vector short)__b;
    211 }
    212 
    213 static __inline__ vector unsigned short __ATTRS_o_ai
    214 vec_add(vector unsigned short __a, vector unsigned short __b) {
    215   return __a + __b;
    216 }
    217 
    218 static __inline__ vector unsigned short __ATTRS_o_ai
    219 vec_add(vector bool short __a, vector unsigned short __b) {
    220   return (vector unsigned short)__a + __b;
    221 }
    222 
    223 static __inline__ vector unsigned short __ATTRS_o_ai
    224 vec_add(vector unsigned short __a, vector bool short __b) {
    225   return __a + (vector unsigned short)__b;
    226 }
    227 
    228 static __inline__ vector int __ATTRS_o_ai vec_add(vector int __a,
    229                                                   vector int __b) {
    230   return __a + __b;
    231 }
    232 
    233 static __inline__ vector int __ATTRS_o_ai vec_add(vector bool int __a,
    234                                                   vector int __b) {
    235   return (vector int)__a + __b;
    236 }
    237 
    238 static __inline__ vector int __ATTRS_o_ai vec_add(vector int __a,
    239                                                   vector bool int __b) {
    240   return __a + (vector int)__b;
    241 }
    242 
    243 static __inline__ vector unsigned int __ATTRS_o_ai
    244 vec_add(vector unsigned int __a, vector unsigned int __b) {
    245   return __a + __b;
    246 }
    247 
    248 static __inline__ vector unsigned int __ATTRS_o_ai
    249 vec_add(vector bool int __a, vector unsigned int __b) {
    250   return (vector unsigned int)__a + __b;
    251 }
    252 
    253 static __inline__ vector unsigned int __ATTRS_o_ai
    254 vec_add(vector unsigned int __a, vector bool int __b) {
    255   return __a + (vector unsigned int)__b;
    256 }
    257 
    258 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
    259 static __inline__ vector signed long long __ATTRS_o_ai
    260 vec_add(vector signed long long __a, vector signed long long __b) {
    261   return __a + __b;
    262 }
    263 
    264 static __inline__ vector unsigned long long __ATTRS_o_ai
    265 vec_add(vector unsigned long long __a, vector unsigned long long __b) {
    266   return __a + __b;
    267 }
    268 
    269 static __inline__ vector signed __int128 __ATTRS_o_ai
    270 vec_add(vector signed __int128 __a, vector signed __int128 __b) {
    271   return __a + __b;
    272 }
    273 
    274 static __inline__ vector unsigned __int128 __ATTRS_o_ai
    275 vec_add(vector unsigned __int128 __a, vector unsigned __int128 __b) {
    276   return __a + __b;
    277 }
    278 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
    279 
    280 static __inline__ vector float __ATTRS_o_ai vec_add(vector float __a,
    281                                                     vector float __b) {
    282   return __a + __b;
    283 }
    284 
    285 #ifdef __VSX__
    286 static __inline__ vector double __ATTRS_o_ai vec_add(vector double __a,
    287                                                      vector double __b) {
    288   return __a + __b;
    289 }
    290 #endif // __VSX__
    291 
    292 /* vec_adde */
    293 
    294 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
    295 static __inline__ vector signed __int128 __ATTRS_o_ai
    296 vec_adde(vector signed __int128 __a, vector signed __int128 __b,
    297          vector signed __int128 __c) {
    298   return __builtin_altivec_vaddeuqm(__a, __b, __c);
    299 }
    300 
    301 static __inline__ vector unsigned __int128 __ATTRS_o_ai
    302 vec_adde(vector unsigned __int128 __a, vector unsigned __int128 __b,
    303          vector unsigned __int128 __c) {
    304   return __builtin_altivec_vaddeuqm(__a, __b, __c);
    305 }
    306 #endif
    307 
    308 /* vec_addec */
    309 
    310 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
    311 static __inline__ vector signed __int128 __ATTRS_o_ai
    312 vec_addec(vector signed __int128 __a, vector signed __int128 __b,
    313           vector signed __int128 __c) {
    314   return __builtin_altivec_vaddecuq(__a, __b, __c);
    315 }
    316 
    317 static __inline__ vector unsigned __int128 __ATTRS_o_ai
    318 vec_addec(vector unsigned __int128 __a, vector unsigned __int128 __b,
    319           vector unsigned __int128 __c) {
    320   return __builtin_altivec_vaddecuq(__a, __b, __c);
    321 }
    322 #endif
    323 
    324 /* vec_vaddubm */
    325 
    326 #define __builtin_altivec_vaddubm vec_vaddubm
    327 
    328 static __inline__ vector signed char __ATTRS_o_ai
    329 vec_vaddubm(vector signed char __a, vector signed char __b) {
    330   return __a + __b;
    331 }
    332 
    333 static __inline__ vector signed char __ATTRS_o_ai
    334 vec_vaddubm(vector bool char __a, vector signed char __b) {
    335   return (vector signed char)__a + __b;
    336 }
    337 
    338 static __inline__ vector signed char __ATTRS_o_ai
    339 vec_vaddubm(vector signed char __a, vector bool char __b) {
    340   return __a + (vector signed char)__b;
    341 }
    342 
    343 static __inline__ vector unsigned char __ATTRS_o_ai
    344 vec_vaddubm(vector unsigned char __a, vector unsigned char __b) {
    345   return __a + __b;
    346 }
    347 
    348 static __inline__ vector unsigned char __ATTRS_o_ai
    349 vec_vaddubm(vector bool char __a, vector unsigned char __b) {
    350   return (vector unsigned char)__a + __b;
    351 }
    352 
    353 static __inline__ vector unsigned char __ATTRS_o_ai
    354 vec_vaddubm(vector unsigned char __a, vector bool char __b) {
    355   return __a + (vector unsigned char)__b;
    356 }
    357 
    358 /* vec_vadduhm */
    359 
    360 #define __builtin_altivec_vadduhm vec_vadduhm
    361 
    362 static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector short __a,
    363                                                         vector short __b) {
    364   return __a + __b;
    365 }
    366 
    367 static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector bool short __a,
    368                                                         vector short __b) {
    369   return (vector short)__a + __b;
    370 }
    371 
    372 static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector short __a,
    373                                                         vector bool short __b) {
    374   return __a + (vector short)__b;
    375 }
    376 
    377 static __inline__ vector unsigned short __ATTRS_o_ai
    378 vec_vadduhm(vector unsigned short __a, vector unsigned short __b) {
    379   return __a + __b;
    380 }
    381 
    382 static __inline__ vector unsigned short __ATTRS_o_ai
    383 vec_vadduhm(vector bool short __a, vector unsigned short __b) {
    384   return (vector unsigned short)__a + __b;
    385 }
    386 
    387 static __inline__ vector unsigned short __ATTRS_o_ai
    388 vec_vadduhm(vector unsigned short __a, vector bool short __b) {
    389   return __a + (vector unsigned short)__b;
    390 }
    391 
    392 /* vec_vadduwm */
    393 
    394 #define __builtin_altivec_vadduwm vec_vadduwm
    395 
    396 static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector int __a,
    397                                                       vector int __b) {
    398   return __a + __b;
    399 }
    400 
    401 static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector bool int __a,
    402                                                       vector int __b) {
    403   return (vector int)__a + __b;
    404 }
    405 
    406 static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector int __a,
    407                                                       vector bool int __b) {
    408   return __a + (vector int)__b;
    409 }
    410 
    411 static __inline__ vector unsigned int __ATTRS_o_ai
    412 vec_vadduwm(vector unsigned int __a, vector unsigned int __b) {
    413   return __a + __b;
    414 }
    415 
    416 static __inline__ vector unsigned int __ATTRS_o_ai
    417 vec_vadduwm(vector bool int __a, vector unsigned int __b) {
    418   return (vector unsigned int)__a + __b;
    419 }
    420 
    421 static __inline__ vector unsigned int __ATTRS_o_ai
    422 vec_vadduwm(vector unsigned int __a, vector bool int __b) {
    423   return __a + (vector unsigned int)__b;
    424 }
    425 
    426 /* vec_vaddfp */
    427 
    428 #define __builtin_altivec_vaddfp vec_vaddfp
    429 
    430 static __inline__ vector float __attribute__((__always_inline__))
    431 vec_vaddfp(vector float __a, vector float __b) {
    432   return __a + __b;
    433 }
    434 
    435 /* vec_addc */
    436 
    437 static __inline__ vector signed int __ATTRS_o_ai
    438 vec_addc(vector signed int __a, vector signed int __b) {
    439   return (vector signed int)__builtin_altivec_vaddcuw((vector unsigned int)__a,
    440                                                       (vector unsigned int)__b);
    441 }
    442 
    443 static __inline__ vector unsigned int __ATTRS_o_ai
    444 vec_addc(vector unsigned int __a, vector unsigned int __b) {
    445   return __builtin_altivec_vaddcuw(__a, __b);
    446 }
    447 
    448 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
    449 static __inline__ vector signed __int128 __ATTRS_o_ai
    450 vec_addc(vector signed __int128 __a, vector signed __int128 __b) {
    451   return (vector signed __int128)__builtin_altivec_vaddcuq(
    452       (vector unsigned __int128)__a, (vector unsigned __int128)__b);
    453 }
    454 
    455 static __inline__ vector unsigned __int128 __ATTRS_o_ai
    456 vec_addc(vector unsigned __int128 __a, vector unsigned __int128 __b) {
    457   return __builtin_altivec_vaddcuq(__a, __b);
    458 }
    459 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
    460 
    461 /* vec_vaddcuw */
    462 
    463 static __inline__ vector unsigned int __attribute__((__always_inline__))
    464 vec_vaddcuw(vector unsigned int __a, vector unsigned int __b) {
    465   return __builtin_altivec_vaddcuw(__a, __b);
    466 }
    467 
    468 /* vec_adds */
    469 
    470 static __inline__ vector signed char __ATTRS_o_ai
    471 vec_adds(vector signed char __a, vector signed char __b) {
    472   return __builtin_altivec_vaddsbs(__a, __b);
    473 }
    474 
    475 static __inline__ vector signed char __ATTRS_o_ai
    476 vec_adds(vector bool char __a, vector signed char __b) {
    477   return __builtin_altivec_vaddsbs((vector signed char)__a, __b);
    478 }
    479 
    480 static __inline__ vector signed char __ATTRS_o_ai
    481 vec_adds(vector signed char __a, vector bool char __b) {
    482   return __builtin_altivec_vaddsbs(__a, (vector signed char)__b);
    483 }
    484 
    485 static __inline__ vector unsigned char __ATTRS_o_ai
    486 vec_adds(vector unsigned char __a, vector unsigned char __b) {
    487   return __builtin_altivec_vaddubs(__a, __b);
    488 }
    489 
    490 static __inline__ vector unsigned char __ATTRS_o_ai
    491 vec_adds(vector bool char __a, vector unsigned char __b) {
    492   return __builtin_altivec_vaddubs((vector unsigned char)__a, __b);
    493 }
    494 
    495 static __inline__ vector unsigned char __ATTRS_o_ai
    496 vec_adds(vector unsigned char __a, vector bool char __b) {
    497   return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b);
    498 }
    499 
    500 static __inline__ vector short __ATTRS_o_ai vec_adds(vector short __a,
    501                                                      vector short __b) {
    502   return __builtin_altivec_vaddshs(__a, __b);
    503 }
    504 
    505 static __inline__ vector short __ATTRS_o_ai vec_adds(vector bool short __a,
    506                                                      vector short __b) {
    507   return __builtin_altivec_vaddshs((vector short)__a, __b);
    508 }
    509 
    510 static __inline__ vector short __ATTRS_o_ai vec_adds(vector short __a,
    511                                                      vector bool short __b) {
    512   return __builtin_altivec_vaddshs(__a, (vector short)__b);
    513 }
    514 
    515 static __inline__ vector unsigned short __ATTRS_o_ai
    516 vec_adds(vector unsigned short __a, vector unsigned short __b) {
    517   return __builtin_altivec_vadduhs(__a, __b);
    518 }
    519 
    520 static __inline__ vector unsigned short __ATTRS_o_ai
    521 vec_adds(vector bool short __a, vector unsigned short __b) {
    522   return __builtin_altivec_vadduhs((vector unsigned short)__a, __b);
    523 }
    524 
    525 static __inline__ vector unsigned short __ATTRS_o_ai
    526 vec_adds(vector unsigned short __a, vector bool short __b) {
    527   return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b);
    528 }
    529 
    530 static __inline__ vector int __ATTRS_o_ai vec_adds(vector int __a,
    531                                                    vector int __b) {
    532   return __builtin_altivec_vaddsws(__a, __b);
    533 }
    534 
    535 static __inline__ vector int __ATTRS_o_ai vec_adds(vector bool int __a,
    536                                                    vector int __b) {
    537   return __builtin_altivec_vaddsws((vector int)__a, __b);
    538 }
    539 
    540 static __inline__ vector int __ATTRS_o_ai vec_adds(vector int __a,
    541                                                    vector bool int __b) {
    542   return __builtin_altivec_vaddsws(__a, (vector int)__b);
    543 }
    544 
    545 static __inline__ vector unsigned int __ATTRS_o_ai
    546 vec_adds(vector unsigned int __a, vector unsigned int __b) {
    547   return __builtin_altivec_vadduws(__a, __b);
    548 }
    549 
    550 static __inline__ vector unsigned int __ATTRS_o_ai
    551 vec_adds(vector bool int __a, vector unsigned int __b) {
    552   return __builtin_altivec_vadduws((vector unsigned int)__a, __b);
    553 }
    554 
    555 static __inline__ vector unsigned int __ATTRS_o_ai
    556 vec_adds(vector unsigned int __a, vector bool int __b) {
    557   return __builtin_altivec_vadduws(__a, (vector unsigned int)__b);
    558 }
    559 
    560 /* vec_vaddsbs */
    561 
    562 static __inline__ vector signed char __ATTRS_o_ai
    563 vec_vaddsbs(vector signed char __a, vector signed char __b) {
    564   return __builtin_altivec_vaddsbs(__a, __b);
    565 }
    566 
    567 static __inline__ vector signed char __ATTRS_o_ai
    568 vec_vaddsbs(vector bool char __a, vector signed char __b) {
    569   return __builtin_altivec_vaddsbs((vector signed char)__a, __b);
    570 }
    571 
    572 static __inline__ vector signed char __ATTRS_o_ai
    573 vec_vaddsbs(vector signed char __a, vector bool char __b) {
    574   return __builtin_altivec_vaddsbs(__a, (vector signed char)__b);
    575 }
    576 
    577 /* vec_vaddubs */
    578 
    579 static __inline__ vector unsigned char __ATTRS_o_ai
    580 vec_vaddubs(vector unsigned char __a, vector unsigned char __b) {
    581   return __builtin_altivec_vaddubs(__a, __b);
    582 }
    583 
    584 static __inline__ vector unsigned char __ATTRS_o_ai
    585 vec_vaddubs(vector bool char __a, vector unsigned char __b) {
    586   return __builtin_altivec_vaddubs((vector unsigned char)__a, __b);
    587 }
    588 
    589 static __inline__ vector unsigned char __ATTRS_o_ai
    590 vec_vaddubs(vector unsigned char __a, vector bool char __b) {
    591   return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b);
    592 }
    593 
    594 /* vec_vaddshs */
    595 
    596 static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector short __a,
    597                                                         vector short __b) {
    598   return __builtin_altivec_vaddshs(__a, __b);
    599 }
    600 
    601 static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector bool short __a,
    602                                                         vector short __b) {
    603   return __builtin_altivec_vaddshs((vector short)__a, __b);
    604 }
    605 
    606 static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector short __a,
    607                                                         vector bool short __b) {
    608   return __builtin_altivec_vaddshs(__a, (vector short)__b);
    609 }
    610 
    611 /* vec_vadduhs */
    612 
    613 static __inline__ vector unsigned short __ATTRS_o_ai
    614 vec_vadduhs(vector unsigned short __a, vector unsigned short __b) {
    615   return __builtin_altivec_vadduhs(__a, __b);
    616 }
    617 
    618 static __inline__ vector unsigned short __ATTRS_o_ai
    619 vec_vadduhs(vector bool short __a, vector unsigned short __b) {
    620   return __builtin_altivec_vadduhs((vector unsigned short)__a, __b);
    621 }
    622 
    623 static __inline__ vector unsigned short __ATTRS_o_ai
    624 vec_vadduhs(vector unsigned short __a, vector bool short __b) {
    625   return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b);
    626 }
    627 
    628 /* vec_vaddsws */
    629 
    630 static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector int __a,
    631                                                       vector int __b) {
    632   return __builtin_altivec_vaddsws(__a, __b);
    633 }
    634 
    635 static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector bool int __a,
    636                                                       vector int __b) {
    637   return __builtin_altivec_vaddsws((vector int)__a, __b);
    638 }
    639 
    640 static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector int __a,
    641                                                       vector bool int __b) {
    642   return __builtin_altivec_vaddsws(__a, (vector int)__b);
    643 }
    644 
    645 /* vec_vadduws */
    646 
    647 static __inline__ vector unsigned int __ATTRS_o_ai
    648 vec_vadduws(vector unsigned int __a, vector unsigned int __b) {
    649   return __builtin_altivec_vadduws(__a, __b);
    650 }
    651 
    652 static __inline__ vector unsigned int __ATTRS_o_ai
    653 vec_vadduws(vector bool int __a, vector unsigned int __b) {
    654   return __builtin_altivec_vadduws((vector unsigned int)__a, __b);
    655 }
    656 
    657 static __inline__ vector unsigned int __ATTRS_o_ai
    658 vec_vadduws(vector unsigned int __a, vector bool int __b) {
    659   return __builtin_altivec_vadduws(__a, (vector unsigned int)__b);
    660 }
    661 
    662 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
    663 /* vec_vadduqm */
    664 
    665 static __inline__ vector signed __int128 __ATTRS_o_ai
    666 vec_vadduqm(vector signed __int128 __a, vector signed __int128 __b) {
    667   return __a + __b;
    668 }
    669 
    670 static __inline__ vector unsigned __int128 __ATTRS_o_ai
    671 vec_vadduqm(vector unsigned __int128 __a, vector unsigned __int128 __b) {
    672   return __a + __b;
    673 }
    674 
    675 /* vec_vaddeuqm */
    676 
    677 static __inline__ vector signed __int128 __ATTRS_o_ai
    678 vec_vaddeuqm(vector signed __int128 __a, vector signed __int128 __b,
    679              vector signed __int128 __c) {
    680   return __builtin_altivec_vaddeuqm(__a, __b, __c);
    681 }
    682 
    683 static __inline__ vector unsigned __int128 __ATTRS_o_ai
    684 vec_vaddeuqm(vector unsigned __int128 __a, vector unsigned __int128 __b,
    685              vector unsigned __int128 __c) {
    686   return __builtin_altivec_vaddeuqm(__a, __b, __c);
    687 }
    688 
    689 /* vec_vaddcuq */
    690 
    691 static __inline__ vector signed __int128 __ATTRS_o_ai
    692 vec_vaddcuq(vector signed __int128 __a, vector signed __int128 __b) {
    693   return __builtin_altivec_vaddcuq(__a, __b);
    694 }
    695 
    696 static __inline__ vector unsigned __int128 __ATTRS_o_ai
    697 vec_vaddcuq(vector unsigned __int128 __a, vector unsigned __int128 __b) {
    698   return __builtin_altivec_vaddcuq(__a, __b);
    699 }
    700 
    701 /* vec_vaddecuq */
    702 
    703 static __inline__ vector signed __int128 __ATTRS_o_ai
    704 vec_vaddecuq(vector signed __int128 __a, vector signed __int128 __b,
    705              vector signed __int128 __c) {
    706   return __builtin_altivec_vaddecuq(__a, __b, __c);
    707 }
    708 
    709 static __inline__ vector unsigned __int128 __ATTRS_o_ai
    710 vec_vaddecuq(vector unsigned __int128 __a, vector unsigned __int128 __b,
    711              vector unsigned __int128 __c) {
    712   return __builtin_altivec_vaddecuq(__a, __b, __c);
    713 }
    714 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
    715 
    716 /* vec_and */
    717 
    718 #define __builtin_altivec_vand vec_and
    719 
    720 static __inline__ vector signed char __ATTRS_o_ai
    721 vec_and(vector signed char __a, vector signed char __b) {
    722   return __a & __b;
    723 }
    724 
    725 static __inline__ vector signed char __ATTRS_o_ai
    726 vec_and(vector bool char __a, vector signed char __b) {
    727   return (vector signed char)__a & __b;
    728 }
    729 
    730 static __inline__ vector signed char __ATTRS_o_ai
    731 vec_and(vector signed char __a, vector bool char __b) {
    732   return __a & (vector signed char)__b;
    733 }
    734 
    735 static __inline__ vector unsigned char __ATTRS_o_ai
    736 vec_and(vector unsigned char __a, vector unsigned char __b) {
    737   return __a & __b;
    738 }
    739 
    740 static __inline__ vector unsigned char __ATTRS_o_ai
    741 vec_and(vector bool char __a, vector unsigned char __b) {
    742   return (vector unsigned char)__a & __b;
    743 }
    744 
    745 static __inline__ vector unsigned char __ATTRS_o_ai
    746 vec_and(vector unsigned char __a, vector bool char __b) {
    747   return __a & (vector unsigned char)__b;
    748 }
    749 
    750 static __inline__ vector bool char __ATTRS_o_ai vec_and(vector bool char __a,
    751                                                         vector bool char __b) {
    752   return __a & __b;
    753 }
    754 
    755 static __inline__ vector short __ATTRS_o_ai vec_and(vector short __a,
    756                                                     vector short __b) {
    757   return __a & __b;
    758 }
    759 
    760 static __inline__ vector short __ATTRS_o_ai vec_and(vector bool short __a,
    761                                                     vector short __b) {
    762   return (vector short)__a & __b;
    763 }
    764 
    765 static __inline__ vector short __ATTRS_o_ai vec_and(vector short __a,
    766                                                     vector bool short __b) {
    767   return __a & (vector short)__b;
    768 }
    769 
    770 static __inline__ vector unsigned short __ATTRS_o_ai
    771 vec_and(vector unsigned short __a, vector unsigned short __b) {
    772   return __a & __b;
    773 }
    774 
    775 static __inline__ vector unsigned short __ATTRS_o_ai
    776 vec_and(vector bool short __a, vector unsigned short __b) {
    777   return (vector unsigned short)__a & __b;
    778 }
    779 
    780 static __inline__ vector unsigned short __ATTRS_o_ai
    781 vec_and(vector unsigned short __a, vector bool short __b) {
    782   return __a & (vector unsigned short)__b;
    783 }
    784 
    785 static __inline__ vector bool short __ATTRS_o_ai
    786 vec_and(vector bool short __a, vector bool short __b) {
    787   return __a & __b;
    788 }
    789 
    790 static __inline__ vector int __ATTRS_o_ai vec_and(vector int __a,
    791                                                   vector int __b) {
    792   return __a & __b;
    793 }
    794 
    795 static __inline__ vector int __ATTRS_o_ai vec_and(vector bool int __a,
    796                                                   vector int __b) {
    797   return (vector int)__a & __b;
    798 }
    799 
    800 static __inline__ vector int __ATTRS_o_ai vec_and(vector int __a,
    801                                                   vector bool int __b) {
    802   return __a & (vector int)__b;
    803 }
    804 
    805 static __inline__ vector unsigned int __ATTRS_o_ai
    806 vec_and(vector unsigned int __a, vector unsigned int __b) {
    807   return __a & __b;
    808 }
    809 
    810 static __inline__ vector unsigned int __ATTRS_o_ai
    811 vec_and(vector bool int __a, vector unsigned int __b) {
    812   return (vector unsigned int)__a & __b;
    813 }
    814 
    815 static __inline__ vector unsigned int __ATTRS_o_ai
    816 vec_and(vector unsigned int __a, vector bool int __b) {
    817   return __a & (vector unsigned int)__b;
    818 }
    819 
    820 static __inline__ vector bool int __ATTRS_o_ai vec_and(vector bool int __a,
    821                                                        vector bool int __b) {
    822   return __a & __b;
    823 }
    824 
    825 static __inline__ vector float __ATTRS_o_ai vec_and(vector float __a,
    826                                                     vector float __b) {
    827   vector unsigned int __res =
    828       (vector unsigned int)__a & (vector unsigned int)__b;
    829   return (vector float)__res;
    830 }
    831 
    832 static __inline__ vector float __ATTRS_o_ai vec_and(vector bool int __a,
    833                                                     vector float __b) {
    834   vector unsigned int __res =
    835       (vector unsigned int)__a & (vector unsigned int)__b;
    836   return (vector float)__res;
    837 }
    838 
    839 static __inline__ vector float __ATTRS_o_ai vec_and(vector float __a,
    840                                                     vector bool int __b) {
    841   vector unsigned int __res =
    842       (vector unsigned int)__a & (vector unsigned int)__b;
    843   return (vector float)__res;
    844 }
    845 
    846 #ifdef __VSX__
    847 static __inline__ vector double __ATTRS_o_ai vec_and(vector bool long long __a,
    848                                                      vector double __b) {
    849   vector unsigned long long __res =
    850       (vector unsigned long long)__a & (vector unsigned long long)__b;
    851   return (vector double)__res;
    852 }
    853 
    854 static __inline__ vector double __ATTRS_o_ai
    855 vec_and(vector double __a, vector bool long long __b) {
    856   vector unsigned long long __res =
    857       (vector unsigned long long)__a & (vector unsigned long long)__b;
    858   return (vector double)__res;
    859 }
    860 
    861 static __inline__ vector double __ATTRS_o_ai vec_and(vector double __a,
    862                                                      vector double __b) {
    863   vector unsigned long long __res =
    864       (vector unsigned long long)__a & (vector unsigned long long)__b;
    865   return (vector double)__res;
    866 }
    867 
    868 static __inline__ vector signed long long __ATTRS_o_ai
    869 vec_and(vector signed long long __a, vector signed long long __b) {
    870   return __a & __b;
    871 }
    872 
    873 static __inline__ vector signed long long __ATTRS_o_ai
    874 vec_and(vector bool long long __a, vector signed long long __b) {
    875   return (vector signed long long)__a & __b;
    876 }
    877 
    878 static __inline__ vector signed long long __ATTRS_o_ai
    879 vec_and(vector signed long long __a, vector bool long long __b) {
    880   return __a & (vector signed long long)__b;
    881 }
    882 
    883 static __inline__ vector unsigned long long __ATTRS_o_ai
    884 vec_and(vector unsigned long long __a, vector unsigned long long __b) {
    885   return __a & __b;
    886 }
    887 
    888 static __inline__ vector unsigned long long __ATTRS_o_ai
    889 vec_and(vector bool long long __a, vector unsigned long long __b) {
    890   return (vector unsigned long long)__a & __b;
    891 }
    892 
    893 static __inline__ vector unsigned long long __ATTRS_o_ai
    894 vec_and(vector unsigned long long __a, vector bool long long __b) {
    895   return __a & (vector unsigned long long)__b;
    896 }
    897 
    898 static __inline__ vector bool long long __ATTRS_o_ai
    899 vec_and(vector bool long long __a, vector bool long long __b) {
    900   return __a & __b;
    901 }
    902 #endif
    903 
    904 /* vec_vand */
    905 
    906 static __inline__ vector signed char __ATTRS_o_ai
    907 vec_vand(vector signed char __a, vector signed char __b) {
    908   return __a & __b;
    909 }
    910 
    911 static __inline__ vector signed char __ATTRS_o_ai
    912 vec_vand(vector bool char __a, vector signed char __b) {
    913   return (vector signed char)__a & __b;
    914 }
    915 
    916 static __inline__ vector signed char __ATTRS_o_ai
    917 vec_vand(vector signed char __a, vector bool char __b) {
    918   return __a & (vector signed char)__b;
    919 }
    920 
    921 static __inline__ vector unsigned char __ATTRS_o_ai
    922 vec_vand(vector unsigned char __a, vector unsigned char __b) {
    923   return __a & __b;
    924 }
    925 
    926 static __inline__ vector unsigned char __ATTRS_o_ai
    927 vec_vand(vector bool char __a, vector unsigned char __b) {
    928   return (vector unsigned char)__a & __b;
    929 }
    930 
    931 static __inline__ vector unsigned char __ATTRS_o_ai
    932 vec_vand(vector unsigned char __a, vector bool char __b) {
    933   return __a & (vector unsigned char)__b;
    934 }
    935 
    936 static __inline__ vector bool char __ATTRS_o_ai vec_vand(vector bool char __a,
    937                                                          vector bool char __b) {
    938   return __a & __b;
    939 }
    940 
    941 static __inline__ vector short __ATTRS_o_ai vec_vand(vector short __a,
    942                                                      vector short __b) {
    943   return __a & __b;
    944 }
    945 
    946 static __inline__ vector short __ATTRS_o_ai vec_vand(vector bool short __a,
    947                                                      vector short __b) {
    948   return (vector short)__a & __b;
    949 }
    950 
    951 static __inline__ vector short __ATTRS_o_ai vec_vand(vector short __a,
    952                                                      vector bool short __b) {
    953   return __a & (vector short)__b;
    954 }
    955 
    956 static __inline__ vector unsigned short __ATTRS_o_ai
    957 vec_vand(vector unsigned short __a, vector unsigned short __b) {
    958   return __a & __b;
    959 }
    960 
    961 static __inline__ vector unsigned short __ATTRS_o_ai
    962 vec_vand(vector bool short __a, vector unsigned short __b) {
    963   return (vector unsigned short)__a & __b;
    964 }
    965 
    966 static __inline__ vector unsigned short __ATTRS_o_ai
    967 vec_vand(vector unsigned short __a, vector bool short __b) {
    968   return __a & (vector unsigned short)__b;
    969 }
    970 
    971 static __inline__ vector bool short __ATTRS_o_ai
    972 vec_vand(vector bool short __a, vector bool short __b) {
    973   return __a & __b;
    974 }
    975 
    976 static __inline__ vector int __ATTRS_o_ai vec_vand(vector int __a,
    977                                                    vector int __b) {
    978   return __a & __b;
    979 }
    980 
    981 static __inline__ vector int __ATTRS_o_ai vec_vand(vector bool int __a,
    982                                                    vector int __b) {
    983   return (vector int)__a & __b;
    984 }
    985 
    986 static __inline__ vector int __ATTRS_o_ai vec_vand(vector int __a,
    987                                                    vector bool int __b) {
    988   return __a & (vector int)__b;
    989 }
    990 
    991 static __inline__ vector unsigned int __ATTRS_o_ai
    992 vec_vand(vector unsigned int __a, vector unsigned int __b) {
    993   return __a & __b;
    994 }
    995 
    996 static __inline__ vector unsigned int __ATTRS_o_ai
    997 vec_vand(vector bool int __a, vector unsigned int __b) {
    998   return (vector unsigned int)__a & __b;
    999 }
   1000 
   1001 static __inline__ vector unsigned int __ATTRS_o_ai
   1002 vec_vand(vector unsigned int __a, vector bool int __b) {
   1003   return __a & (vector unsigned int)__b;
   1004 }
   1005 
   1006 static __inline__ vector bool int __ATTRS_o_ai vec_vand(vector bool int __a,
   1007                                                         vector bool int __b) {
   1008   return __a & __b;
   1009 }
   1010 
   1011 static __inline__ vector float __ATTRS_o_ai vec_vand(vector float __a,
   1012                                                      vector float __b) {
   1013   vector unsigned int __res =
   1014       (vector unsigned int)__a & (vector unsigned int)__b;
   1015   return (vector float)__res;
   1016 }
   1017 
   1018 static __inline__ vector float __ATTRS_o_ai vec_vand(vector bool int __a,
   1019                                                      vector float __b) {
   1020   vector unsigned int __res =
   1021       (vector unsigned int)__a & (vector unsigned int)__b;
   1022   return (vector float)__res;
   1023 }
   1024 
   1025 static __inline__ vector float __ATTRS_o_ai vec_vand(vector float __a,
   1026                                                      vector bool int __b) {
   1027   vector unsigned int __res =
   1028       (vector unsigned int)__a & (vector unsigned int)__b;
   1029   return (vector float)__res;
   1030 }
   1031 
   1032 #ifdef __VSX__
   1033 static __inline__ vector signed long long __ATTRS_o_ai
   1034 vec_vand(vector signed long long __a, vector signed long long __b) {
   1035   return __a & __b;
   1036 }
   1037 
   1038 static __inline__ vector signed long long __ATTRS_o_ai
   1039 vec_vand(vector bool long long __a, vector signed long long __b) {
   1040   return (vector signed long long)__a & __b;
   1041 }
   1042 
   1043 static __inline__ vector signed long long __ATTRS_o_ai
   1044 vec_vand(vector signed long long __a, vector bool long long __b) {
   1045   return __a & (vector signed long long)__b;
   1046 }
   1047 
   1048 static __inline__ vector unsigned long long __ATTRS_o_ai
   1049 vec_vand(vector unsigned long long __a, vector unsigned long long __b) {
   1050   return __a & __b;
   1051 }
   1052 
   1053 static __inline__ vector unsigned long long __ATTRS_o_ai
   1054 vec_vand(vector bool long long __a, vector unsigned long long __b) {
   1055   return (vector unsigned long long)__a & __b;
   1056 }
   1057 
   1058 static __inline__ vector unsigned long long __ATTRS_o_ai
   1059 vec_vand(vector unsigned long long __a, vector bool long long __b) {
   1060   return __a & (vector unsigned long long)__b;
   1061 }
   1062 
   1063 static __inline__ vector bool long long __ATTRS_o_ai
   1064 vec_vand(vector bool long long __a, vector bool long long __b) {
   1065   return __a & __b;
   1066 }
   1067 #endif
   1068 
   1069 /* vec_andc */
   1070 
   1071 #define __builtin_altivec_vandc vec_andc
   1072 
   1073 static __inline__ vector signed char __ATTRS_o_ai
   1074 vec_andc(vector signed char __a, vector signed char __b) {
   1075   return __a & ~__b;
   1076 }
   1077 
   1078 static __inline__ vector signed char __ATTRS_o_ai
   1079 vec_andc(vector bool char __a, vector signed char __b) {
   1080   return (vector signed char)__a & ~__b;
   1081 }
   1082 
   1083 static __inline__ vector signed char __ATTRS_o_ai
   1084 vec_andc(vector signed char __a, vector bool char __b) {
   1085   return __a & ~(vector signed char)__b;
   1086 }
   1087 
   1088 static __inline__ vector unsigned char __ATTRS_o_ai
   1089 vec_andc(vector unsigned char __a, vector unsigned char __b) {
   1090   return __a & ~__b;
   1091 }
   1092 
   1093 static __inline__ vector unsigned char __ATTRS_o_ai
   1094 vec_andc(vector bool char __a, vector unsigned char __b) {
   1095   return (vector unsigned char)__a & ~__b;
   1096 }
   1097 
   1098 static __inline__ vector unsigned char __ATTRS_o_ai
   1099 vec_andc(vector unsigned char __a, vector bool char __b) {
   1100   return __a & ~(vector unsigned char)__b;
   1101 }
   1102 
   1103 static __inline__ vector bool char __ATTRS_o_ai vec_andc(vector bool char __a,
   1104                                                          vector bool char __b) {
   1105   return __a & ~__b;
   1106 }
   1107 
   1108 static __inline__ vector short __ATTRS_o_ai vec_andc(vector short __a,
   1109                                                      vector short __b) {
   1110   return __a & ~__b;
   1111 }
   1112 
   1113 static __inline__ vector short __ATTRS_o_ai vec_andc(vector bool short __a,
   1114                                                      vector short __b) {
   1115   return (vector short)__a & ~__b;
   1116 }
   1117 
   1118 static __inline__ vector short __ATTRS_o_ai vec_andc(vector short __a,
   1119                                                      vector bool short __b) {
   1120   return __a & ~(vector short)__b;
   1121 }
   1122 
   1123 static __inline__ vector unsigned short __ATTRS_o_ai
   1124 vec_andc(vector unsigned short __a, vector unsigned short __b) {
   1125   return __a & ~__b;
   1126 }
   1127 
   1128 static __inline__ vector unsigned short __ATTRS_o_ai
   1129 vec_andc(vector bool short __a, vector unsigned short __b) {
   1130   return (vector unsigned short)__a & ~__b;
   1131 }
   1132 
   1133 static __inline__ vector unsigned short __ATTRS_o_ai
   1134 vec_andc(vector unsigned short __a, vector bool short __b) {
   1135   return __a & ~(vector unsigned short)__b;
   1136 }
   1137 
   1138 static __inline__ vector bool short __ATTRS_o_ai
   1139 vec_andc(vector bool short __a, vector bool short __b) {
   1140   return __a & ~__b;
   1141 }
   1142 
   1143 static __inline__ vector int __ATTRS_o_ai vec_andc(vector int __a,
   1144                                                    vector int __b) {
   1145   return __a & ~__b;
   1146 }
   1147 
   1148 static __inline__ vector int __ATTRS_o_ai vec_andc(vector bool int __a,
   1149                                                    vector int __b) {
   1150   return (vector int)__a & ~__b;
   1151 }
   1152 
   1153 static __inline__ vector int __ATTRS_o_ai vec_andc(vector int __a,
   1154                                                    vector bool int __b) {
   1155   return __a & ~(vector int)__b;
   1156 }
   1157 
   1158 static __inline__ vector unsigned int __ATTRS_o_ai
   1159 vec_andc(vector unsigned int __a, vector unsigned int __b) {
   1160   return __a & ~__b;
   1161 }
   1162 
   1163 static __inline__ vector unsigned int __ATTRS_o_ai
   1164 vec_andc(vector bool int __a, vector unsigned int __b) {
   1165   return (vector unsigned int)__a & ~__b;
   1166 }
   1167 
   1168 static __inline__ vector unsigned int __ATTRS_o_ai
   1169 vec_andc(vector unsigned int __a, vector bool int __b) {
   1170   return __a & ~(vector unsigned int)__b;
   1171 }
   1172 
   1173 static __inline__ vector bool int __ATTRS_o_ai vec_andc(vector bool int __a,
   1174                                                         vector bool int __b) {
   1175   return __a & ~__b;
   1176 }
   1177 
   1178 static __inline__ vector float __ATTRS_o_ai vec_andc(vector float __a,
   1179                                                      vector float __b) {
   1180   vector unsigned int __res =
   1181       (vector unsigned int)__a & ~(vector unsigned int)__b;
   1182   return (vector float)__res;
   1183 }
   1184 
   1185 static __inline__ vector float __ATTRS_o_ai vec_andc(vector bool int __a,
   1186                                                      vector float __b) {
   1187   vector unsigned int __res =
   1188       (vector unsigned int)__a & ~(vector unsigned int)__b;
   1189   return (vector float)__res;
   1190 }
   1191 
   1192 static __inline__ vector float __ATTRS_o_ai vec_andc(vector float __a,
   1193                                                      vector bool int __b) {
   1194   vector unsigned int __res =
   1195       (vector unsigned int)__a & ~(vector unsigned int)__b;
   1196   return (vector float)__res;
   1197 }
   1198 
   1199 #ifdef __VSX__
   1200 static __inline__ vector double __ATTRS_o_ai vec_andc(vector bool long long __a,
   1201                                                       vector double __b) {
   1202   vector unsigned long long __res =
   1203       (vector unsigned long long)__a & ~(vector unsigned long long)__b;
   1204   return (vector double)__res;
   1205 }
   1206 
   1207 static __inline__ vector double __ATTRS_o_ai
   1208 vec_andc(vector double __a, vector bool long long __b) {
   1209   vector unsigned long long __res =
   1210       (vector unsigned long long)__a & ~(vector unsigned long long)__b;
   1211   return (vector double)__res;
   1212 }
   1213 
   1214 static __inline__ vector double __ATTRS_o_ai vec_andc(vector double __a,
   1215                                                       vector double __b) {
   1216   vector unsigned long long __res =
   1217       (vector unsigned long long)__a & ~(vector unsigned long long)__b;
   1218   return (vector double)__res;
   1219 }
   1220 
   1221 static __inline__ vector signed long long __ATTRS_o_ai
   1222 vec_andc(vector signed long long __a, vector signed long long __b) {
   1223   return __a & ~__b;
   1224 }
   1225 
   1226 static __inline__ vector signed long long __ATTRS_o_ai
   1227 vec_andc(vector bool long long __a, vector signed long long __b) {
   1228   return (vector signed long long)__a & ~__b;
   1229 }
   1230 
   1231 static __inline__ vector signed long long __ATTRS_o_ai
   1232 vec_andc(vector signed long long __a, vector bool long long __b) {
   1233   return __a & ~(vector signed long long)__b;
   1234 }
   1235 
   1236 static __inline__ vector unsigned long long __ATTRS_o_ai
   1237 vec_andc(vector unsigned long long __a, vector unsigned long long __b) {
   1238   return __a & ~__b;
   1239 }
   1240 
   1241 static __inline__ vector unsigned long long __ATTRS_o_ai
   1242 vec_andc(vector bool long long __a, vector unsigned long long __b) {
   1243   return (vector unsigned long long)__a & ~__b;
   1244 }
   1245 
   1246 static __inline__ vector unsigned long long __ATTRS_o_ai
   1247 vec_andc(vector unsigned long long __a, vector bool long long __b) {
   1248   return __a & ~(vector unsigned long long)__b;
   1249 }
   1250 
   1251 static __inline__ vector bool long long __ATTRS_o_ai
   1252 vec_andc(vector bool long long __a, vector bool long long __b) {
   1253   return __a & ~__b;
   1254 }
   1255 #endif
   1256 
   1257 /* vec_vandc */
   1258 
   1259 static __inline__ vector signed char __ATTRS_o_ai
   1260 vec_vandc(vector signed char __a, vector signed char __b) {
   1261   return __a & ~__b;
   1262 }
   1263 
   1264 static __inline__ vector signed char __ATTRS_o_ai
   1265 vec_vandc(vector bool char __a, vector signed char __b) {
   1266   return (vector signed char)__a & ~__b;
   1267 }
   1268 
   1269 static __inline__ vector signed char __ATTRS_o_ai
   1270 vec_vandc(vector signed char __a, vector bool char __b) {
   1271   return __a & ~(vector signed char)__b;
   1272 }
   1273 
   1274 static __inline__ vector unsigned char __ATTRS_o_ai
   1275 vec_vandc(vector unsigned char __a, vector unsigned char __b) {
   1276   return __a & ~__b;
   1277 }
   1278 
   1279 static __inline__ vector unsigned char __ATTRS_o_ai
   1280 vec_vandc(vector bool char __a, vector unsigned char __b) {
   1281   return (vector unsigned char)__a & ~__b;
   1282 }
   1283 
   1284 static __inline__ vector unsigned char __ATTRS_o_ai
   1285 vec_vandc(vector unsigned char __a, vector bool char __b) {
   1286   return __a & ~(vector unsigned char)__b;
   1287 }
   1288 
   1289 static __inline__ vector bool char __ATTRS_o_ai
   1290 vec_vandc(vector bool char __a, vector bool char __b) {
   1291   return __a & ~__b;
   1292 }
   1293 
   1294 static __inline__ vector short __ATTRS_o_ai vec_vandc(vector short __a,
   1295                                                       vector short __b) {
   1296   return __a & ~__b;
   1297 }
   1298 
   1299 static __inline__ vector short __ATTRS_o_ai vec_vandc(vector bool short __a,
   1300                                                       vector short __b) {
   1301   return (vector short)__a & ~__b;
   1302 }
   1303 
   1304 static __inline__ vector short __ATTRS_o_ai vec_vandc(vector short __a,
   1305                                                       vector bool short __b) {
   1306   return __a & ~(vector short)__b;
   1307 }
   1308 
   1309 static __inline__ vector unsigned short __ATTRS_o_ai
   1310 vec_vandc(vector unsigned short __a, vector unsigned short __b) {
   1311   return __a & ~__b;
   1312 }
   1313 
   1314 static __inline__ vector unsigned short __ATTRS_o_ai
   1315 vec_vandc(vector bool short __a, vector unsigned short __b) {
   1316   return (vector unsigned short)__a & ~__b;
   1317 }
   1318 
   1319 static __inline__ vector unsigned short __ATTRS_o_ai
   1320 vec_vandc(vector unsigned short __a, vector bool short __b) {
   1321   return __a & ~(vector unsigned short)__b;
   1322 }
   1323 
   1324 static __inline__ vector bool short __ATTRS_o_ai
   1325 vec_vandc(vector bool short __a, vector bool short __b) {
   1326   return __a & ~__b;
   1327 }
   1328 
   1329 static __inline__ vector int __ATTRS_o_ai vec_vandc(vector int __a,
   1330                                                     vector int __b) {
   1331   return __a & ~__b;
   1332 }
   1333 
   1334 static __inline__ vector int __ATTRS_o_ai vec_vandc(vector bool int __a,
   1335                                                     vector int __b) {
   1336   return (vector int)__a & ~__b;
   1337 }
   1338 
   1339 static __inline__ vector int __ATTRS_o_ai vec_vandc(vector int __a,
   1340                                                     vector bool int __b) {
   1341   return __a & ~(vector int)__b;
   1342 }
   1343 
   1344 static __inline__ vector unsigned int __ATTRS_o_ai
   1345 vec_vandc(vector unsigned int __a, vector unsigned int __b) {
   1346   return __a & ~__b;
   1347 }
   1348 
   1349 static __inline__ vector unsigned int __ATTRS_o_ai
   1350 vec_vandc(vector bool int __a, vector unsigned int __b) {
   1351   return (vector unsigned int)__a & ~__b;
   1352 }
   1353 
   1354 static __inline__ vector unsigned int __ATTRS_o_ai
   1355 vec_vandc(vector unsigned int __a, vector bool int __b) {
   1356   return __a & ~(vector unsigned int)__b;
   1357 }
   1358 
   1359 static __inline__ vector bool int __ATTRS_o_ai vec_vandc(vector bool int __a,
   1360                                                          vector bool int __b) {
   1361   return __a & ~__b;
   1362 }
   1363 
   1364 static __inline__ vector float __ATTRS_o_ai vec_vandc(vector float __a,
   1365                                                       vector float __b) {
   1366   vector unsigned int __res =
   1367       (vector unsigned int)__a & ~(vector unsigned int)__b;
   1368   return (vector float)__res;
   1369 }
   1370 
   1371 static __inline__ vector float __ATTRS_o_ai vec_vandc(vector bool int __a,
   1372                                                       vector float __b) {
   1373   vector unsigned int __res =
   1374       (vector unsigned int)__a & ~(vector unsigned int)__b;
   1375   return (vector float)__res;
   1376 }
   1377 
   1378 static __inline__ vector float __ATTRS_o_ai vec_vandc(vector float __a,
   1379                                                       vector bool int __b) {
   1380   vector unsigned int __res =
   1381       (vector unsigned int)__a & ~(vector unsigned int)__b;
   1382   return (vector float)__res;
   1383 }
   1384 
   1385 #ifdef __VSX__
   1386 static __inline__ vector signed long long __ATTRS_o_ai
   1387 vec_vandc(vector signed long long __a, vector signed long long __b) {
   1388   return __a & ~__b;
   1389 }
   1390 
   1391 static __inline__ vector signed long long __ATTRS_o_ai
   1392 vec_vandc(vector bool long long __a, vector signed long long __b) {
   1393   return (vector signed long long)__a & ~__b;
   1394 }
   1395 
   1396 static __inline__ vector signed long long __ATTRS_o_ai
   1397 vec_vandc(vector signed long long __a, vector bool long long __b) {
   1398   return __a & ~(vector signed long long)__b;
   1399 }
   1400 
   1401 static __inline__ vector unsigned long long __ATTRS_o_ai
   1402 vec_vandc(vector unsigned long long __a, vector unsigned long long __b) {
   1403   return __a & ~__b;
   1404 }
   1405 
   1406 static __inline__ vector unsigned long long __ATTRS_o_ai
   1407 vec_vandc(vector bool long long __a, vector unsigned long long __b) {
   1408   return (vector unsigned long long)__a & ~__b;
   1409 }
   1410 
   1411 static __inline__ vector unsigned long long __ATTRS_o_ai
   1412 vec_vandc(vector unsigned long long __a, vector bool long long __b) {
   1413   return __a & ~(vector unsigned long long)__b;
   1414 }
   1415 
   1416 static __inline__ vector bool long long __ATTRS_o_ai
   1417 vec_vandc(vector bool long long __a, vector bool long long __b) {
   1418   return __a & ~__b;
   1419 }
   1420 #endif
   1421 
   1422 /* vec_avg */
   1423 
   1424 static __inline__ vector signed char __ATTRS_o_ai
   1425 vec_avg(vector signed char __a, vector signed char __b) {
   1426   return __builtin_altivec_vavgsb(__a, __b);
   1427 }
   1428 
   1429 static __inline__ vector unsigned char __ATTRS_o_ai
   1430 vec_avg(vector unsigned char __a, vector unsigned char __b) {
   1431   return __builtin_altivec_vavgub(__a, __b);
   1432 }
   1433 
   1434 static __inline__ vector short __ATTRS_o_ai vec_avg(vector short __a,
   1435                                                     vector short __b) {
   1436   return __builtin_altivec_vavgsh(__a, __b);
   1437 }
   1438 
   1439 static __inline__ vector unsigned short __ATTRS_o_ai
   1440 vec_avg(vector unsigned short __a, vector unsigned short __b) {
   1441   return __builtin_altivec_vavguh(__a, __b);
   1442 }
   1443 
   1444 static __inline__ vector int __ATTRS_o_ai vec_avg(vector int __a,
   1445                                                   vector int __b) {
   1446   return __builtin_altivec_vavgsw(__a, __b);
   1447 }
   1448 
   1449 static __inline__ vector unsigned int __ATTRS_o_ai
   1450 vec_avg(vector unsigned int __a, vector unsigned int __b) {
   1451   return __builtin_altivec_vavguw(__a, __b);
   1452 }
   1453 
   1454 /* vec_vavgsb */
   1455 
   1456 static __inline__ vector signed char __attribute__((__always_inline__))
   1457 vec_vavgsb(vector signed char __a, vector signed char __b) {
   1458   return __builtin_altivec_vavgsb(__a, __b);
   1459 }
   1460 
   1461 /* vec_vavgub */
   1462 
   1463 static __inline__ vector unsigned char __attribute__((__always_inline__))
   1464 vec_vavgub(vector unsigned char __a, vector unsigned char __b) {
   1465   return __builtin_altivec_vavgub(__a, __b);
   1466 }
   1467 
   1468 /* vec_vavgsh */
   1469 
   1470 static __inline__ vector short __attribute__((__always_inline__))
   1471 vec_vavgsh(vector short __a, vector short __b) {
   1472   return __builtin_altivec_vavgsh(__a, __b);
   1473 }
   1474 
   1475 /* vec_vavguh */
   1476 
   1477 static __inline__ vector unsigned short __attribute__((__always_inline__))
   1478 vec_vavguh(vector unsigned short __a, vector unsigned short __b) {
   1479   return __builtin_altivec_vavguh(__a, __b);
   1480 }
   1481 
   1482 /* vec_vavgsw */
   1483 
   1484 static __inline__ vector int __attribute__((__always_inline__))
   1485 vec_vavgsw(vector int __a, vector int __b) {
   1486   return __builtin_altivec_vavgsw(__a, __b);
   1487 }
   1488 
   1489 /* vec_vavguw */
   1490 
   1491 static __inline__ vector unsigned int __attribute__((__always_inline__))
   1492 vec_vavguw(vector unsigned int __a, vector unsigned int __b) {
   1493   return __builtin_altivec_vavguw(__a, __b);
   1494 }
   1495 
   1496 /* vec_ceil */
   1497 
   1498 static __inline__ vector float __ATTRS_o_ai vec_ceil(vector float __a) {
   1499 #ifdef __VSX__
   1500   return __builtin_vsx_xvrspip(__a);
   1501 #else
   1502   return __builtin_altivec_vrfip(__a);
   1503 #endif
   1504 }
   1505 
   1506 #ifdef __VSX__
   1507 static __inline__ vector double __ATTRS_o_ai vec_ceil(vector double __a) {
   1508   return __builtin_vsx_xvrdpip(__a);
   1509 }
   1510 #endif
   1511 
   1512 /* vec_vrfip */
   1513 
   1514 static __inline__ vector float __attribute__((__always_inline__))
   1515 vec_vrfip(vector float __a) {
   1516   return __builtin_altivec_vrfip(__a);
   1517 }
   1518 
   1519 /* vec_cmpb */
   1520 
   1521 static __inline__ vector int __attribute__((__always_inline__))
   1522 vec_cmpb(vector float __a, vector float __b) {
   1523   return __builtin_altivec_vcmpbfp(__a, __b);
   1524 }
   1525 
   1526 /* vec_vcmpbfp */
   1527 
   1528 static __inline__ vector int __attribute__((__always_inline__))
   1529 vec_vcmpbfp(vector float __a, vector float __b) {
   1530   return __builtin_altivec_vcmpbfp(__a, __b);
   1531 }
   1532 
   1533 /* vec_cmpeq */
   1534 
   1535 static __inline__ vector bool char __ATTRS_o_ai
   1536 vec_cmpeq(vector signed char __a, vector signed char __b) {
   1537   return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a,
   1538                                                       (vector char)__b);
   1539 }
   1540 
   1541 static __inline__ vector bool char __ATTRS_o_ai
   1542 vec_cmpeq(vector unsigned char __a, vector unsigned char __b) {
   1543   return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a,
   1544                                                       (vector char)__b);
   1545 }
   1546 
   1547 static __inline__ vector bool short __ATTRS_o_ai vec_cmpeq(vector short __a,
   1548                                                            vector short __b) {
   1549   return (vector bool short)__builtin_altivec_vcmpequh(__a, __b);
   1550 }
   1551 
   1552 static __inline__ vector bool short __ATTRS_o_ai
   1553 vec_cmpeq(vector unsigned short __a, vector unsigned short __b) {
   1554   return (vector bool short)__builtin_altivec_vcmpequh((vector short)__a,
   1555                                                        (vector short)__b);
   1556 }
   1557 
   1558 static __inline__ vector bool int __ATTRS_o_ai vec_cmpeq(vector int __a,
   1559                                                          vector int __b) {
   1560   return (vector bool int)__builtin_altivec_vcmpequw(__a, __b);
   1561 }
   1562 
   1563 static __inline__ vector bool int __ATTRS_o_ai
   1564 vec_cmpeq(vector unsigned int __a, vector unsigned int __b) {
   1565   return (vector bool int)__builtin_altivec_vcmpequw((vector int)__a,
   1566                                                      (vector int)__b);
   1567 }
   1568 
   1569 #ifdef __POWER8_VECTOR__
   1570 static __inline__ vector bool long long __ATTRS_o_ai
   1571 vec_cmpeq(vector signed long long __a, vector signed long long __b) {
   1572   return (vector bool long long)__builtin_altivec_vcmpequd(__a, __b);
   1573 }
   1574 
   1575 static __inline__ vector bool long long __ATTRS_o_ai
   1576 vec_cmpeq(vector unsigned long long __a, vector unsigned long long __b) {
   1577   return (vector bool long long)__builtin_altivec_vcmpequd(
   1578       (vector long long)__a, (vector long long)__b);
   1579 }
   1580 #endif
   1581 
   1582 static __inline__ vector bool int __ATTRS_o_ai vec_cmpeq(vector float __a,
   1583                                                          vector float __b) {
   1584 #ifdef __VSX__
   1585   return (vector bool int)__builtin_vsx_xvcmpeqsp(__a, __b);
   1586 #else
   1587   return (vector bool int)__builtin_altivec_vcmpeqfp(__a, __b);
   1588 #endif
   1589 }
   1590 
   1591 #ifdef __VSX__
   1592 static __inline__ vector bool long long __ATTRS_o_ai
   1593 vec_cmpeq(vector double __a, vector double __b) {
   1594   return (vector bool long long)__builtin_vsx_xvcmpeqdp(__a, __b);
   1595 }
   1596 #endif
   1597 
   1598 /* vec_cmpgt */
   1599 
   1600 static __inline__ vector bool char __ATTRS_o_ai
   1601 vec_cmpgt(vector signed char __a, vector signed char __b) {
   1602   return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
   1603 }
   1604 
   1605 static __inline__ vector bool char __ATTRS_o_ai
   1606 vec_cmpgt(vector unsigned char __a, vector unsigned char __b) {
   1607   return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
   1608 }
   1609 
   1610 static __inline__ vector bool short __ATTRS_o_ai vec_cmpgt(vector short __a,
   1611                                                            vector short __b) {
   1612   return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
   1613 }
   1614 
   1615 static __inline__ vector bool short __ATTRS_o_ai
   1616 vec_cmpgt(vector unsigned short __a, vector unsigned short __b) {
   1617   return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
   1618 }
   1619 
   1620 static __inline__ vector bool int __ATTRS_o_ai vec_cmpgt(vector int __a,
   1621                                                          vector int __b) {
   1622   return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
   1623 }
   1624 
   1625 static __inline__ vector bool int __ATTRS_o_ai
   1626 vec_cmpgt(vector unsigned int __a, vector unsigned int __b) {
   1627   return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
   1628 }
   1629 
   1630 #ifdef __POWER8_VECTOR__
   1631 static __inline__ vector bool long long __ATTRS_o_ai
   1632 vec_cmpgt(vector signed long long __a, vector signed long long __b) {
   1633   return (vector bool long long)__builtin_altivec_vcmpgtsd(__a, __b);
   1634 }
   1635 
   1636 static __inline__ vector bool long long __ATTRS_o_ai
   1637 vec_cmpgt(vector unsigned long long __a, vector unsigned long long __b) {
   1638   return (vector bool long long)__builtin_altivec_vcmpgtud(__a, __b);
   1639 }
   1640 #endif
   1641 
   1642 static __inline__ vector bool int __ATTRS_o_ai vec_cmpgt(vector float __a,
   1643                                                          vector float __b) {
   1644 #ifdef __VSX__
   1645   return (vector bool int)__builtin_vsx_xvcmpgtsp(__a, __b);
   1646 #else
   1647   return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
   1648 #endif
   1649 }
   1650 
   1651 #ifdef __VSX__
   1652 static __inline__ vector bool long long __ATTRS_o_ai
   1653 vec_cmpgt(vector double __a, vector double __b) {
   1654   return (vector bool long long)__builtin_vsx_xvcmpgtdp(__a, __b);
   1655 }
   1656 #endif
   1657 
   1658 /* vec_cmpge */
   1659 
   1660 static __inline__ vector bool char __ATTRS_o_ai
   1661 vec_cmpge(vector signed char __a, vector signed char __b) {
   1662   return ~(vec_cmpgt(__b, __a));
   1663 }
   1664 
   1665 static __inline__ vector bool char __ATTRS_o_ai
   1666 vec_cmpge(vector unsigned char __a, vector unsigned char __b) {
   1667   return ~(vec_cmpgt(__b, __a));
   1668 }
   1669 
   1670 static __inline__ vector bool short __ATTRS_o_ai
   1671 vec_cmpge(vector signed short __a, vector signed short __b) {
   1672   return ~(vec_cmpgt(__b, __a));
   1673 }
   1674 
   1675 static __inline__ vector bool short __ATTRS_o_ai
   1676 vec_cmpge(vector unsigned short __a, vector unsigned short __b) {
   1677   return ~(vec_cmpgt(__b, __a));
   1678 }
   1679 
   1680 static __inline__ vector bool int __ATTRS_o_ai
   1681 vec_cmpge(vector signed int __a, vector signed int __b) {
   1682   return ~(vec_cmpgt(__b, __a));
   1683 }
   1684 
   1685 static __inline__ vector bool int __ATTRS_o_ai
   1686 vec_cmpge(vector unsigned int __a, vector unsigned int __b) {
   1687   return ~(vec_cmpgt(__b, __a));
   1688 }
   1689 
   1690 static __inline__ vector bool int __ATTRS_o_ai vec_cmpge(vector float __a,
   1691                                                          vector float __b) {
   1692 #ifdef __VSX__
   1693   return (vector bool int)__builtin_vsx_xvcmpgesp(__a, __b);
   1694 #else
   1695   return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
   1696 #endif
   1697 }
   1698 
   1699 #ifdef __VSX__
   1700 static __inline__ vector bool long long __ATTRS_o_ai
   1701 vec_cmpge(vector double __a, vector double __b) {
   1702   return (vector bool long long)__builtin_vsx_xvcmpgedp(__a, __b);
   1703 }
   1704 #endif
   1705 
   1706 #ifdef __POWER8_VECTOR__
   1707 static __inline__ vector bool long long __ATTRS_o_ai
   1708 vec_cmpge(vector signed long long __a, vector signed long long __b) {
   1709   return ~(vec_cmpgt(__b, __a));
   1710 }
   1711 
   1712 static __inline__ vector bool long long __ATTRS_o_ai
   1713 vec_cmpge(vector unsigned long long __a, vector unsigned long long __b) {
   1714   return ~(vec_cmpgt(__b, __a));
   1715 }
   1716 #endif
   1717 
   1718 /* vec_vcmpgefp */
   1719 
   1720 static __inline__ vector bool int __attribute__((__always_inline__))
   1721 vec_vcmpgefp(vector float __a, vector float __b) {
   1722   return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
   1723 }
   1724 
   1725 /* vec_vcmpgtsb */
   1726 
   1727 static __inline__ vector bool char __attribute__((__always_inline__))
   1728 vec_vcmpgtsb(vector signed char __a, vector signed char __b) {
   1729   return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
   1730 }
   1731 
   1732 /* vec_vcmpgtub */
   1733 
   1734 static __inline__ vector bool char __attribute__((__always_inline__))
   1735 vec_vcmpgtub(vector unsigned char __a, vector unsigned char __b) {
   1736   return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
   1737 }
   1738 
   1739 /* vec_vcmpgtsh */
   1740 
   1741 static __inline__ vector bool short __attribute__((__always_inline__))
   1742 vec_vcmpgtsh(vector short __a, vector short __b) {
   1743   return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
   1744 }
   1745 
   1746 /* vec_vcmpgtuh */
   1747 
   1748 static __inline__ vector bool short __attribute__((__always_inline__))
   1749 vec_vcmpgtuh(vector unsigned short __a, vector unsigned short __b) {
   1750   return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
   1751 }
   1752 
   1753 /* vec_vcmpgtsw */
   1754 
   1755 static __inline__ vector bool int __attribute__((__always_inline__))
   1756 vec_vcmpgtsw(vector int __a, vector int __b) {
   1757   return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
   1758 }
   1759 
   1760 /* vec_vcmpgtuw */
   1761 
   1762 static __inline__ vector bool int __attribute__((__always_inline__))
   1763 vec_vcmpgtuw(vector unsigned int __a, vector unsigned int __b) {
   1764   return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
   1765 }
   1766 
   1767 /* vec_vcmpgtfp */
   1768 
   1769 static __inline__ vector bool int __attribute__((__always_inline__))
   1770 vec_vcmpgtfp(vector float __a, vector float __b) {
   1771   return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
   1772 }
   1773 
   1774 /* vec_cmple */
   1775 
   1776 static __inline__ vector bool char __ATTRS_o_ai
   1777 vec_cmple(vector signed char __a, vector signed char __b) {
   1778   return vec_cmpge(__b, __a);
   1779 }
   1780 
   1781 static __inline__ vector bool char __ATTRS_o_ai
   1782 vec_cmple(vector unsigned char __a, vector unsigned char __b) {
   1783   return vec_cmpge(__b, __a);
   1784 }
   1785 
   1786 static __inline__ vector bool short __ATTRS_o_ai
   1787 vec_cmple(vector signed short __a, vector signed short __b) {
   1788   return vec_cmpge(__b, __a);
   1789 }
   1790 
   1791 static __inline__ vector bool short __ATTRS_o_ai
   1792 vec_cmple(vector unsigned short __a, vector unsigned short __b) {
   1793   return vec_cmpge(__b, __a);
   1794 }
   1795 
   1796 static __inline__ vector bool int __ATTRS_o_ai
   1797 vec_cmple(vector signed int __a, vector signed int __b) {
   1798   return vec_cmpge(__b, __a);
   1799 }
   1800 
   1801 static __inline__ vector bool int __ATTRS_o_ai
   1802 vec_cmple(vector unsigned int __a, vector unsigned int __b) {
   1803   return vec_cmpge(__b, __a);
   1804 }
   1805 
   1806 static __inline__ vector bool int __ATTRS_o_ai vec_cmple(vector float __a,
   1807                                                          vector float __b) {
   1808   return vec_cmpge(__b, __a);
   1809 }
   1810 
   1811 #ifdef __VSX__
   1812 static __inline__ vector bool long long __ATTRS_o_ai
   1813 vec_cmple(vector double __a, vector double __b) {
   1814   return vec_cmpge(__b, __a);
   1815 }
   1816 #endif
   1817 
   1818 #ifdef __POWER8_VECTOR__
   1819 static __inline__ vector bool long long __ATTRS_o_ai
   1820 vec_cmple(vector signed long long __a, vector signed long long __b) {
   1821   return vec_cmpge(__b, __a);
   1822 }
   1823 
   1824 static __inline__ vector bool long long __ATTRS_o_ai
   1825 vec_cmple(vector unsigned long long __a, vector unsigned long long __b) {
   1826   return vec_cmpge(__b, __a);
   1827 }
   1828 #endif
   1829 
   1830 /* vec_cmplt */
   1831 
   1832 static __inline__ vector bool char __ATTRS_o_ai
   1833 vec_cmplt(vector signed char __a, vector signed char __b) {
   1834   return vec_cmpgt(__b, __a);
   1835 }
   1836 
   1837 static __inline__ vector bool char __ATTRS_o_ai
   1838 vec_cmplt(vector unsigned char __a, vector unsigned char __b) {
   1839   return vec_cmpgt(__b, __a);
   1840 }
   1841 
   1842 static __inline__ vector bool short __ATTRS_o_ai vec_cmplt(vector short __a,
   1843                                                            vector short __b) {
   1844   return vec_cmpgt(__b, __a);
   1845 }
   1846 
   1847 static __inline__ vector bool short __ATTRS_o_ai
   1848 vec_cmplt(vector unsigned short __a, vector unsigned short __b) {
   1849   return vec_cmpgt(__b, __a);
   1850 }
   1851 
   1852 static __inline__ vector bool int __ATTRS_o_ai vec_cmplt(vector int __a,
   1853                                                          vector int __b) {
   1854   return vec_cmpgt(__b, __a);
   1855 }
   1856 
   1857 static __inline__ vector bool int __ATTRS_o_ai
   1858 vec_cmplt(vector unsigned int __a, vector unsigned int __b) {
   1859   return vec_cmpgt(__b, __a);
   1860 }
   1861 
   1862 static __inline__ vector bool int __ATTRS_o_ai vec_cmplt(vector float __a,
   1863                                                          vector float __b) {
   1864   return vec_cmpgt(__b, __a);
   1865 }
   1866 
   1867 #ifdef __VSX__
   1868 static __inline__ vector bool long long __ATTRS_o_ai
   1869 vec_cmplt(vector double __a, vector double __b) {
   1870   return vec_cmpgt(__b, __a);
   1871 }
   1872 #endif
   1873 
   1874 #ifdef __POWER8_VECTOR__
   1875 static __inline__ vector bool long long __ATTRS_o_ai
   1876 vec_cmplt(vector signed long long __a, vector signed long long __b) {
   1877   return vec_cmpgt(__b, __a);
   1878 }
   1879 
   1880 static __inline__ vector bool long long __ATTRS_o_ai
   1881 vec_cmplt(vector unsigned long long __a, vector unsigned long long __b) {
   1882   return vec_cmpgt(__b, __a);
   1883 }
   1884 
   1885 /* vec_cntlz */
   1886 
   1887 static __inline__ vector signed char __ATTRS_o_ai
   1888 vec_cntlz(vector signed char __a) {
   1889   return __builtin_altivec_vclzb(__a);
   1890 }
   1891 static __inline__ vector unsigned char __ATTRS_o_ai
   1892 vec_cntlz(vector unsigned char __a) {
   1893   return __builtin_altivec_vclzb(__a);
   1894 }
   1895 static __inline__ vector signed short __ATTRS_o_ai
   1896 vec_cntlz(vector signed short __a) {
   1897   return __builtin_altivec_vclzh(__a);
   1898 }
   1899 static __inline__ vector unsigned short __ATTRS_o_ai
   1900 vec_cntlz(vector unsigned short __a) {
   1901   return __builtin_altivec_vclzh(__a);
   1902 }
   1903 static __inline__ vector signed int __ATTRS_o_ai
   1904 vec_cntlz(vector signed int __a) {
   1905   return __builtin_altivec_vclzw(__a);
   1906 }
   1907 static __inline__ vector unsigned int __ATTRS_o_ai
   1908 vec_cntlz(vector unsigned int __a) {
   1909   return __builtin_altivec_vclzw(__a);
   1910 }
   1911 static __inline__ vector signed long long __ATTRS_o_ai
   1912 vec_cntlz(vector signed long long __a) {
   1913   return __builtin_altivec_vclzd(__a);
   1914 }
   1915 static __inline__ vector unsigned long long __ATTRS_o_ai
   1916 vec_cntlz(vector unsigned long long __a) {
   1917   return __builtin_altivec_vclzd(__a);
   1918 }
   1919 #endif
   1920 
   1921 /* vec_cpsgn */
   1922 
   1923 #ifdef __VSX__
   1924 static __inline__ vector float __ATTRS_o_ai vec_cpsgn(vector float __a,
   1925                                                       vector float __b) {
   1926   return __builtin_vsx_xvcpsgnsp(__a, __b);
   1927 }
   1928 
   1929 static __inline__ vector double __ATTRS_o_ai vec_cpsgn(vector double __a,
   1930                                                        vector double __b) {
   1931   return __builtin_vsx_xvcpsgndp(__a, __b);
   1932 }
   1933 #endif
   1934 
   1935 /* vec_ctf */
   1936 
   1937 static __inline__ vector float __ATTRS_o_ai vec_ctf(vector int __a, int __b) {
   1938   return __builtin_altivec_vcfsx(__a, __b);
   1939 }
   1940 
   1941 static __inline__ vector float __ATTRS_o_ai vec_ctf(vector unsigned int __a,
   1942                                                     int __b) {
   1943   return __builtin_altivec_vcfux((vector int)__a, __b);
   1944 }
   1945 
   1946 #ifdef __VSX__
   1947 static __inline__ vector double __ATTRS_o_ai
   1948 vec_ctf(vector unsigned long long __a, int __b) {
   1949   vector double __ret = __builtin_convertvector(__a, vector double);
   1950   __ret *= (vector double)(vector unsigned long long)((0x3ffULL - __b) << 52);
   1951   return __ret;
   1952 }
   1953 
   1954 static __inline__ vector double __ATTRS_o_ai
   1955 vec_ctf(vector signed long long __a, int __b) {
   1956   vector double __ret = __builtin_convertvector(__a, vector double);
   1957   __ret *= (vector double)(vector unsigned long long)((0x3ffULL - __b) << 52);
   1958   return __ret;
   1959 }
   1960 #endif
   1961 
   1962 /* vec_vcfsx */
   1963 
   1964 static __inline__ vector float __attribute__((__always_inline__))
   1965 vec_vcfsx(vector int __a, int __b) {
   1966   return __builtin_altivec_vcfsx(__a, __b);
   1967 }
   1968 
   1969 /* vec_vcfux */
   1970 
   1971 static __inline__ vector float __attribute__((__always_inline__))
   1972 vec_vcfux(vector unsigned int __a, int __b) {
   1973   return __builtin_altivec_vcfux((vector int)__a, __b);
   1974 }
   1975 
   1976 /* vec_cts */
   1977 
   1978 static __inline__ vector int __ATTRS_o_ai vec_cts(vector float __a, int __b) {
   1979   return __builtin_altivec_vctsxs(__a, __b);
   1980 }
   1981 
   1982 #ifdef __VSX__
   1983 static __inline__ vector signed long long __ATTRS_o_ai
   1984 vec_cts(vector double __a, int __b) {
   1985   __a *= (vector double)(vector unsigned long long)((0x3ffULL + __b) << 52);
   1986   return __builtin_convertvector(__a, vector signed long long);
   1987 }
   1988 #endif
   1989 
   1990 /* vec_vctsxs */
   1991 
   1992 static __inline__ vector int __attribute__((__always_inline__))
   1993 vec_vctsxs(vector float __a, int __b) {
   1994   return __builtin_altivec_vctsxs(__a, __b);
   1995 }
   1996 
   1997 /* vec_ctu */
   1998 
   1999 static __inline__ vector unsigned int __ATTRS_o_ai vec_ctu(vector float __a,
   2000                                                            int __b) {
   2001   return __builtin_altivec_vctuxs(__a, __b);
   2002 }
   2003 
   2004 #ifdef __VSX__
   2005 static __inline__ vector unsigned long long __ATTRS_o_ai
   2006 vec_ctu(vector double __a, int __b) {
   2007   __a *= (vector double)(vector unsigned long long)((0x3ffULL + __b) << 52);
   2008   return __builtin_convertvector(__a, vector unsigned long long);
   2009 }
   2010 #endif
   2011 
   2012 /* vec_vctuxs */
   2013 
   2014 static __inline__ vector unsigned int __attribute__((__always_inline__))
   2015 vec_vctuxs(vector float __a, int __b) {
   2016   return __builtin_altivec_vctuxs(__a, __b);
   2017 }
   2018 
   2019 /* vec_double */
   2020 
   2021 #ifdef __VSX__
   2022 static __inline__ vector double __ATTRS_o_ai
   2023 vec_double(vector signed long long __a) {
   2024   vector double __ret = {__a[0], __a[1]};
   2025   return __ret;
   2026 }
   2027 
   2028 static __inline__ vector double __ATTRS_o_ai
   2029 vec_double(vector unsigned long long __a) {
   2030   vector double __ret = {__a[0], __a[1]};
   2031   return __ret;
   2032 }
   2033 #endif
   2034 
   2035 /* vec_div */
   2036 
   2037 /* Integer vector divides (vectors are scalarized, elements divided
   2038    and the vectors reassembled).
   2039 */
   2040 static __inline__ vector signed char __ATTRS_o_ai
   2041 vec_div(vector signed char __a, vector signed char __b) {
   2042   return __a / __b;
   2043 }
   2044 
   2045 static __inline__ vector unsigned char __ATTRS_o_ai
   2046 vec_div(vector unsigned char __a, vector unsigned char __b) {
   2047   return __a / __b;
   2048 }
   2049 
   2050 static __inline__ vector signed short __ATTRS_o_ai
   2051 vec_div(vector signed short __a, vector signed short __b) {
   2052   return __a / __b;
   2053 }
   2054 
   2055 static __inline__ vector unsigned short __ATTRS_o_ai
   2056 vec_div(vector unsigned short __a, vector unsigned short __b) {
   2057   return __a / __b;
   2058 }
   2059 
   2060 static __inline__ vector signed int __ATTRS_o_ai
   2061 vec_div(vector signed int __a, vector signed int __b) {
   2062   return __a / __b;
   2063 }
   2064 
   2065 static __inline__ vector unsigned int __ATTRS_o_ai
   2066 vec_div(vector unsigned int __a, vector unsigned int __b) {
   2067   return __a / __b;
   2068 }
   2069 
   2070 #ifdef __VSX__
   2071 static __inline__ vector signed long long __ATTRS_o_ai
   2072 vec_div(vector signed long long __a, vector signed long long __b) {
   2073   return __a / __b;
   2074 }
   2075 
   2076 static __inline__ vector unsigned long long __ATTRS_o_ai
   2077 vec_div(vector unsigned long long __a, vector unsigned long long __b) {
   2078   return __a / __b;
   2079 }
   2080 
   2081 static __inline__ vector float __ATTRS_o_ai vec_div(vector float __a,
   2082                                                     vector float __b) {
   2083   return __a / __b;
   2084 }
   2085 
   2086 static __inline__ vector double __ATTRS_o_ai vec_div(vector double __a,
   2087                                                      vector double __b) {
   2088   return __a / __b;
   2089 }
   2090 #endif
   2091 
   2092 /* vec_dss */
   2093 
   2094 static __inline__ void __attribute__((__always_inline__)) vec_dss(int __a) {
   2095   __builtin_altivec_dss(__a);
   2096 }
   2097 
   2098 /* vec_dssall */
   2099 
   2100 static __inline__ void __attribute__((__always_inline__)) vec_dssall(void) {
   2101   __builtin_altivec_dssall();
   2102 }
   2103 
   2104 /* vec_dst */
   2105 #define vec_dst(__PTR, __CW, __STR) \
   2106   __extension__(                    \
   2107       { __builtin_altivec_dst((const void *)(__PTR), (__CW), (__STR)); })
   2108 
   2109 /* vec_dstst */
   2110 #define vec_dstst(__PTR, __CW, __STR) \
   2111   __extension__(                      \
   2112       { __builtin_altivec_dstst((const void *)(__PTR), (__CW), (__STR)); })
   2113 
   2114 /* vec_dststt */
   2115 #define vec_dststt(__PTR, __CW, __STR) \
   2116   __extension__(                       \
   2117       { __builtin_altivec_dststt((const void *)(__PTR), (__CW), (__STR)); })
   2118 
   2119 /* vec_dstt */
   2120 #define vec_dstt(__PTR, __CW, __STR) \
   2121   __extension__(                     \
   2122       { __builtin_altivec_dstt((const void *)(__PTR), (__CW), (__STR)); })
   2123 
   2124 /* vec_eqv */
   2125 
   2126 #ifdef __POWER8_VECTOR__
   2127 static __inline__ vector signed char __ATTRS_o_ai
   2128 vec_eqv(vector signed char __a, vector signed char __b) {
   2129   return (vector signed char)__builtin_vsx_xxleqv((vector unsigned int)__a,
   2130                                                   (vector unsigned int)__b);
   2131 }
   2132 
   2133 static __inline__ vector unsigned char __ATTRS_o_ai
   2134 vec_eqv(vector unsigned char __a, vector unsigned char __b) {
   2135   return (vector unsigned char)__builtin_vsx_xxleqv((vector unsigned int)__a,
   2136                                                     (vector unsigned int)__b);
   2137 }
   2138 
   2139 static __inline__ vector bool char __ATTRS_o_ai vec_eqv(vector bool char __a,
   2140                                                         vector bool char __b) {
   2141   return (vector bool char)__builtin_vsx_xxleqv((vector unsigned int)__a,
   2142                                                 (vector unsigned int)__b);
   2143 }
   2144 
   2145 static __inline__ vector signed short __ATTRS_o_ai
   2146 vec_eqv(vector signed short __a, vector signed short __b) {
   2147   return (vector signed short)__builtin_vsx_xxleqv((vector unsigned int)__a,
   2148                                                    (vector unsigned int)__b);
   2149 }
   2150 
   2151 static __inline__ vector unsigned short __ATTRS_o_ai
   2152 vec_eqv(vector unsigned short __a, vector unsigned short __b) {
   2153   return (vector unsigned short)__builtin_vsx_xxleqv((vector unsigned int)__a,
   2154                                                      (vector unsigned int)__b);
   2155 }
   2156 
   2157 static __inline__ vector bool short __ATTRS_o_ai
   2158 vec_eqv(vector bool short __a, vector bool short __b) {
   2159   return (vector bool short)__builtin_vsx_xxleqv((vector unsigned int)__a,
   2160                                                  (vector unsigned int)__b);
   2161 }
   2162 
   2163 static __inline__ vector signed int __ATTRS_o_ai
   2164 vec_eqv(vector signed int __a, vector signed int __b) {
   2165   return (vector signed int)__builtin_vsx_xxleqv((vector unsigned int)__a,
   2166                                                  (vector unsigned int)__b);
   2167 }
   2168 
   2169 static __inline__ vector unsigned int __ATTRS_o_ai
   2170 vec_eqv(vector unsigned int __a, vector unsigned int __b) {
   2171   return __builtin_vsx_xxleqv(__a, __b);
   2172 }
   2173 
   2174 static __inline__ vector bool int __ATTRS_o_ai vec_eqv(vector bool int __a,
   2175                                                        vector bool int __b) {
   2176   return (vector bool int)__builtin_vsx_xxleqv((vector unsigned int)__a,
   2177                                                (vector unsigned int)__b);
   2178 }
   2179 
   2180 static __inline__ vector signed long long __ATTRS_o_ai
   2181 vec_eqv(vector signed long long __a, vector signed long long __b) {
   2182   return (vector signed long long)__builtin_vsx_xxleqv(
   2183       (vector unsigned int)__a, (vector unsigned int)__b);
   2184 }
   2185 
   2186 static __inline__ vector unsigned long long __ATTRS_o_ai
   2187 vec_eqv(vector unsigned long long __a, vector unsigned long long __b) {
   2188   return (vector unsigned long long)__builtin_vsx_xxleqv(
   2189       (vector unsigned int)__a, (vector unsigned int)__b);
   2190 }
   2191 
   2192 static __inline__ vector bool long long __ATTRS_o_ai
   2193 vec_eqv(vector bool long long __a, vector bool long long __b) {
   2194   return (vector bool long long)__builtin_vsx_xxleqv((vector unsigned int)__a,
   2195                                                      (vector unsigned int)__b);
   2196 }
   2197 
   2198 static __inline__ vector float __ATTRS_o_ai vec_eqv(vector float __a,
   2199                                                     vector float __b) {
   2200   return (vector float)__builtin_vsx_xxleqv((vector unsigned int)__a,
   2201                                             (vector unsigned int)__b);
   2202 }
   2203 
   2204 static __inline__ vector double __ATTRS_o_ai vec_eqv(vector double __a,
   2205                                                      vector double __b) {
   2206   return (vector double)__builtin_vsx_xxleqv((vector unsigned int)__a,
   2207                                              (vector unsigned int)__b);
   2208 }
   2209 #endif
   2210 
   2211 /* vec_expte */
   2212 
   2213 static __inline__ vector float __attribute__((__always_inline__))
   2214 vec_expte(vector float __a) {
   2215   return __builtin_altivec_vexptefp(__a);
   2216 }
   2217 
   2218 /* vec_vexptefp */
   2219 
   2220 static __inline__ vector float __attribute__((__always_inline__))
   2221 vec_vexptefp(vector float __a) {
   2222   return __builtin_altivec_vexptefp(__a);
   2223 }
   2224 
   2225 /* vec_floor */
   2226 
   2227 static __inline__ vector float __ATTRS_o_ai vec_floor(vector float __a) {
   2228 #ifdef __VSX__
   2229   return __builtin_vsx_xvrspim(__a);
   2230 #else
   2231   return __builtin_altivec_vrfim(__a);
   2232 #endif
   2233 }
   2234 
   2235 #ifdef __VSX__
   2236 static __inline__ vector double __ATTRS_o_ai vec_floor(vector double __a) {
   2237   return __builtin_vsx_xvrdpim(__a);
   2238 }
   2239 #endif
   2240 
   2241 /* vec_vrfim */
   2242 
   2243 static __inline__ vector float __attribute__((__always_inline__))
   2244 vec_vrfim(vector float __a) {
   2245   return __builtin_altivec_vrfim(__a);
   2246 }
   2247 
   2248 /* vec_ld */
   2249 
   2250 static __inline__ vector signed char __ATTRS_o_ai
   2251 vec_ld(int __a, const vector signed char *__b) {
   2252   return (vector signed char)__builtin_altivec_lvx(__a, __b);
   2253 }
   2254 
   2255 static __inline__ vector signed char __ATTRS_o_ai
   2256 vec_ld(int __a, const signed char *__b) {
   2257   return (vector signed char)__builtin_altivec_lvx(__a, __b);
   2258 }
   2259 
   2260 static __inline__ vector unsigned char __ATTRS_o_ai
   2261 vec_ld(int __a, const vector unsigned char *__b) {
   2262   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
   2263 }
   2264 
   2265 static __inline__ vector unsigned char __ATTRS_o_ai
   2266 vec_ld(int __a, const unsigned char *__b) {
   2267   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
   2268 }
   2269 
   2270 static __inline__ vector bool char __ATTRS_o_ai
   2271 vec_ld(int __a, const vector bool char *__b) {
   2272   return (vector bool char)__builtin_altivec_lvx(__a, __b);
   2273 }
   2274 
   2275 static __inline__ vector short __ATTRS_o_ai vec_ld(int __a,
   2276                                                    const vector short *__b) {
   2277   return (vector short)__builtin_altivec_lvx(__a, __b);
   2278 }
   2279 
   2280 static __inline__ vector short __ATTRS_o_ai vec_ld(int __a, const short *__b) {
   2281   return (vector short)__builtin_altivec_lvx(__a, __b);
   2282 }
   2283 
   2284 static __inline__ vector unsigned short __ATTRS_o_ai
   2285 vec_ld(int __a, const vector unsigned short *__b) {
   2286   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
   2287 }
   2288 
   2289 static __inline__ vector unsigned short __ATTRS_o_ai
   2290 vec_ld(int __a, const unsigned short *__b) {
   2291   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
   2292 }
   2293 
   2294 static __inline__ vector bool short __ATTRS_o_ai
   2295 vec_ld(int __a, const vector bool short *__b) {
   2296   return (vector bool short)__builtin_altivec_lvx(__a, __b);
   2297 }
   2298 
   2299 static __inline__ vector pixel __ATTRS_o_ai vec_ld(int __a,
   2300                                                    const vector pixel *__b) {
   2301   return (vector pixel)__builtin_altivec_lvx(__a, __b);
   2302 }
   2303 
   2304 static __inline__ vector int __ATTRS_o_ai vec_ld(int __a,
   2305                                                  const vector int *__b) {
   2306   return (vector int)__builtin_altivec_lvx(__a, __b);
   2307 }
   2308 
   2309 static __inline__ vector int __ATTRS_o_ai vec_ld(int __a, const int *__b) {
   2310   return (vector int)__builtin_altivec_lvx(__a, __b);
   2311 }
   2312 
   2313 static __inline__ vector unsigned int __ATTRS_o_ai
   2314 vec_ld(int __a, const vector unsigned int *__b) {
   2315   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
   2316 }
   2317 
   2318 static __inline__ vector unsigned int __ATTRS_o_ai
   2319 vec_ld(int __a, const unsigned int *__b) {
   2320   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
   2321 }
   2322 
   2323 static __inline__ vector bool int __ATTRS_o_ai
   2324 vec_ld(int __a, const vector bool int *__b) {
   2325   return (vector bool int)__builtin_altivec_lvx(__a, __b);
   2326 }
   2327 
   2328 static __inline__ vector float __ATTRS_o_ai vec_ld(int __a,
   2329                                                    const vector float *__b) {
   2330   return (vector float)__builtin_altivec_lvx(__a, __b);
   2331 }
   2332 
   2333 static __inline__ vector float __ATTRS_o_ai vec_ld(int __a, const float *__b) {
   2334   return (vector float)__builtin_altivec_lvx(__a, __b);
   2335 }
   2336 
   2337 /* vec_lvx */
   2338 
   2339 static __inline__ vector signed char __ATTRS_o_ai
   2340 vec_lvx(int __a, const vector signed char *__b) {
   2341   return (vector signed char)__builtin_altivec_lvx(__a, __b);
   2342 }
   2343 
   2344 static __inline__ vector signed char __ATTRS_o_ai
   2345 vec_lvx(int __a, const signed char *__b) {
   2346   return (vector signed char)__builtin_altivec_lvx(__a, __b);
   2347 }
   2348 
   2349 static __inline__ vector unsigned char __ATTRS_o_ai
   2350 vec_lvx(int __a, const vector unsigned char *__b) {
   2351   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
   2352 }
   2353 
   2354 static __inline__ vector unsigned char __ATTRS_o_ai
   2355 vec_lvx(int __a, const unsigned char *__b) {
   2356   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
   2357 }
   2358 
   2359 static __inline__ vector bool char __ATTRS_o_ai
   2360 vec_lvx(int __a, const vector bool char *__b) {
   2361   return (vector bool char)__builtin_altivec_lvx(__a, __b);
   2362 }
   2363 
   2364 static __inline__ vector short __ATTRS_o_ai vec_lvx(int __a,
   2365                                                     const vector short *__b) {
   2366   return (vector short)__builtin_altivec_lvx(__a, __b);
   2367 }
   2368 
   2369 static __inline__ vector short __ATTRS_o_ai vec_lvx(int __a, const short *__b) {
   2370   return (vector short)__builtin_altivec_lvx(__a, __b);
   2371 }
   2372 
   2373 static __inline__ vector unsigned short __ATTRS_o_ai
   2374 vec_lvx(int __a, const vector unsigned short *__b) {
   2375   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
   2376 }
   2377 
   2378 static __inline__ vector unsigned short __ATTRS_o_ai
   2379 vec_lvx(int __a, const unsigned short *__b) {
   2380   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
   2381 }
   2382 
   2383 static __inline__ vector bool short __ATTRS_o_ai
   2384 vec_lvx(int __a, const vector bool short *__b) {
   2385   return (vector bool short)__builtin_altivec_lvx(__a, __b);
   2386 }
   2387 
   2388 static __inline__ vector pixel __ATTRS_o_ai vec_lvx(int __a,
   2389                                                     const vector pixel *__b) {
   2390   return (vector pixel)__builtin_altivec_lvx(__a, __b);
   2391 }
   2392 
   2393 static __inline__ vector int __ATTRS_o_ai vec_lvx(int __a,
   2394                                                   const vector int *__b) {
   2395   return (vector int)__builtin_altivec_lvx(__a, __b);
   2396 }
   2397 
   2398 static __inline__ vector int __ATTRS_o_ai vec_lvx(int __a, const int *__b) {
   2399   return (vector int)__builtin_altivec_lvx(__a, __b);
   2400 }
   2401 
   2402 static __inline__ vector unsigned int __ATTRS_o_ai
   2403 vec_lvx(int __a, const vector unsigned int *__b) {
   2404   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
   2405 }
   2406 
   2407 static __inline__ vector unsigned int __ATTRS_o_ai
   2408 vec_lvx(int __a, const unsigned int *__b) {
   2409   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
   2410 }
   2411 
   2412 static __inline__ vector bool int __ATTRS_o_ai
   2413 vec_lvx(int __a, const vector bool int *__b) {
   2414   return (vector bool int)__builtin_altivec_lvx(__a, __b);
   2415 }
   2416 
   2417 static __inline__ vector float __ATTRS_o_ai vec_lvx(int __a,
   2418                                                     const vector float *__b) {
   2419   return (vector float)__builtin_altivec_lvx(__a, __b);
   2420 }
   2421 
   2422 static __inline__ vector float __ATTRS_o_ai vec_lvx(int __a, const float *__b) {
   2423   return (vector float)__builtin_altivec_lvx(__a, __b);
   2424 }
   2425 
   2426 /* vec_lde */
   2427 
   2428 static __inline__ vector signed char __ATTRS_o_ai
   2429 vec_lde(int __a, const signed char *__b) {
   2430   return (vector signed char)__builtin_altivec_lvebx(__a, __b);
   2431 }
   2432 
   2433 static __inline__ vector unsigned char __ATTRS_o_ai
   2434 vec_lde(int __a, const unsigned char *__b) {
   2435   return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
   2436 }
   2437 
   2438 static __inline__ vector short __ATTRS_o_ai vec_lde(int __a, const short *__b) {
   2439   return (vector short)__builtin_altivec_lvehx(__a, __b);
   2440 }
   2441 
   2442 static __inline__ vector unsigned short __ATTRS_o_ai
   2443 vec_lde(int __a, const unsigned short *__b) {
   2444   return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
   2445 }
   2446 
   2447 static __inline__ vector int __ATTRS_o_ai vec_lde(int __a, const int *__b) {
   2448   return (vector int)__builtin_altivec_lvewx(__a, __b);
   2449 }
   2450 
   2451 static __inline__ vector unsigned int __ATTRS_o_ai
   2452 vec_lde(int __a, const unsigned int *__b) {
   2453   return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
   2454 }
   2455 
   2456 static __inline__ vector float __ATTRS_o_ai vec_lde(int __a, const float *__b) {
   2457   return (vector float)__builtin_altivec_lvewx(__a, __b);
   2458 }
   2459 
   2460 /* vec_lvebx */
   2461 
   2462 static __inline__ vector signed char __ATTRS_o_ai
   2463 vec_lvebx(int __a, const signed char *__b) {
   2464   return (vector signed char)__builtin_altivec_lvebx(__a, __b);
   2465 }
   2466 
   2467 static __inline__ vector unsigned char __ATTRS_o_ai
   2468 vec_lvebx(int __a, const unsigned char *__b) {
   2469   return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
   2470 }
   2471 
   2472 /* vec_lvehx */
   2473 
   2474 static __inline__ vector short __ATTRS_o_ai vec_lvehx(int __a,
   2475                                                       const short *__b) {
   2476   return (vector short)__builtin_altivec_lvehx(__a, __b);
   2477 }
   2478 
   2479 static __inline__ vector unsigned short __ATTRS_o_ai
   2480 vec_lvehx(int __a, const unsigned short *__b) {
   2481   return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
   2482 }
   2483 
   2484 /* vec_lvewx */
   2485 
   2486 static __inline__ vector int __ATTRS_o_ai vec_lvewx(int __a, const int *__b) {
   2487   return (vector int)__builtin_altivec_lvewx(__a, __b);
   2488 }
   2489 
   2490 static __inline__ vector unsigned int __ATTRS_o_ai
   2491 vec_lvewx(int __a, const unsigned int *__b) {
   2492   return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
   2493 }
   2494 
   2495 static __inline__ vector float __ATTRS_o_ai vec_lvewx(int __a,
   2496                                                       const float *__b) {
   2497   return (vector float)__builtin_altivec_lvewx(__a, __b);
   2498 }
   2499 
   2500 /* vec_ldl */
   2501 
   2502 static __inline__ vector signed char __ATTRS_o_ai
   2503 vec_ldl(int __a, const vector signed char *__b) {
   2504   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
   2505 }
   2506 
   2507 static __inline__ vector signed char __ATTRS_o_ai
   2508 vec_ldl(int __a, const signed char *__b) {
   2509   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
   2510 }
   2511 
   2512 static __inline__ vector unsigned char __ATTRS_o_ai
   2513 vec_ldl(int __a, const vector unsigned char *__b) {
   2514   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
   2515 }
   2516 
   2517 static __inline__ vector unsigned char __ATTRS_o_ai
   2518 vec_ldl(int __a, const unsigned char *__b) {
   2519   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
   2520 }
   2521 
   2522 static __inline__ vector bool char __ATTRS_o_ai
   2523 vec_ldl(int __a, const vector bool char *__b) {
   2524   return (vector bool char)__builtin_altivec_lvxl(__a, __b);
   2525 }
   2526 
   2527 static __inline__ vector short __ATTRS_o_ai vec_ldl(int __a,
   2528                                                     const vector short *__b) {
   2529   return (vector short)__builtin_altivec_lvxl(__a, __b);
   2530 }
   2531 
   2532 static __inline__ vector short __ATTRS_o_ai vec_ldl(int __a, const short *__b) {
   2533   return (vector short)__builtin_altivec_lvxl(__a, __b);
   2534 }
   2535 
   2536 static __inline__ vector unsigned short __ATTRS_o_ai
   2537 vec_ldl(int __a, const vector unsigned short *__b) {
   2538   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
   2539 }
   2540 
   2541 static __inline__ vector unsigned short __ATTRS_o_ai
   2542 vec_ldl(int __a, const unsigned short *__b) {
   2543   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
   2544 }
   2545 
   2546 static __inline__ vector bool short __ATTRS_o_ai
   2547 vec_ldl(int __a, const vector bool short *__b) {
   2548   return (vector bool short)__builtin_altivec_lvxl(__a, __b);
   2549 }
   2550 
   2551 static __inline__ vector pixel __ATTRS_o_ai vec_ldl(int __a,
   2552                                                     const vector pixel *__b) {
   2553   return (vector pixel short)__builtin_altivec_lvxl(__a, __b);
   2554 }
   2555 
   2556 static __inline__ vector int __ATTRS_o_ai vec_ldl(int __a,
   2557                                                   const vector int *__b) {
   2558   return (vector int)__builtin_altivec_lvxl(__a, __b);
   2559 }
   2560 
   2561 static __inline__ vector int __ATTRS_o_ai vec_ldl(int __a, const int *__b) {
   2562   return (vector int)__builtin_altivec_lvxl(__a, __b);
   2563 }
   2564 
   2565 static __inline__ vector unsigned int __ATTRS_o_ai
   2566 vec_ldl(int __a, const vector unsigned int *__b) {
   2567   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
   2568 }
   2569 
   2570 static __inline__ vector unsigned int __ATTRS_o_ai
   2571 vec_ldl(int __a, const unsigned int *__b) {
   2572   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
   2573 }
   2574 
   2575 static __inline__ vector bool int __ATTRS_o_ai
   2576 vec_ldl(int __a, const vector bool int *__b) {
   2577   return (vector bool int)__builtin_altivec_lvxl(__a, __b);
   2578 }
   2579 
   2580 static __inline__ vector float __ATTRS_o_ai vec_ldl(int __a,
   2581                                                     const vector float *__b) {
   2582   return (vector float)__builtin_altivec_lvxl(__a, __b);
   2583 }
   2584 
   2585 static __inline__ vector float __ATTRS_o_ai vec_ldl(int __a, const float *__b) {
   2586   return (vector float)__builtin_altivec_lvxl(__a, __b);
   2587 }
   2588 
   2589 /* vec_lvxl */
   2590 
   2591 static __inline__ vector signed char __ATTRS_o_ai
   2592 vec_lvxl(int __a, const vector signed char *__b) {
   2593   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
   2594 }
   2595 
   2596 static __inline__ vector signed char __ATTRS_o_ai
   2597 vec_lvxl(int __a, const signed char *__b) {
   2598   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
   2599 }
   2600 
   2601 static __inline__ vector unsigned char __ATTRS_o_ai
   2602 vec_lvxl(int __a, const vector unsigned char *__b) {
   2603   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
   2604 }
   2605 
   2606 static __inline__ vector unsigned char __ATTRS_o_ai
   2607 vec_lvxl(int __a, const unsigned char *__b) {
   2608   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
   2609 }
   2610 
   2611 static __inline__ vector bool char __ATTRS_o_ai
   2612 vec_lvxl(int __a, const vector bool char *__b) {
   2613   return (vector bool char)__builtin_altivec_lvxl(__a, __b);
   2614 }
   2615 
   2616 static __inline__ vector short __ATTRS_o_ai vec_lvxl(int __a,
   2617                                                      const vector short *__b) {
   2618   return (vector short)__builtin_altivec_lvxl(__a, __b);
   2619 }
   2620 
   2621 static __inline__ vector short __ATTRS_o_ai vec_lvxl(int __a,
   2622                                                      const short *__b) {
   2623   return (vector short)__builtin_altivec_lvxl(__a, __b);
   2624 }
   2625 
   2626 static __inline__ vector unsigned short __ATTRS_o_ai
   2627 vec_lvxl(int __a, const vector unsigned short *__b) {
   2628   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
   2629 }
   2630 
   2631 static __inline__ vector unsigned short __ATTRS_o_ai
   2632 vec_lvxl(int __a, const unsigned short *__b) {
   2633   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
   2634 }
   2635 
   2636 static __inline__ vector bool short __ATTRS_o_ai
   2637 vec_lvxl(int __a, const vector bool short *__b) {
   2638   return (vector bool short)__builtin_altivec_lvxl(__a, __b);
   2639 }
   2640 
   2641 static __inline__ vector pixel __ATTRS_o_ai vec_lvxl(int __a,
   2642                                                      const vector pixel *__b) {
   2643   return (vector pixel)__builtin_altivec_lvxl(__a, __b);
   2644 }
   2645 
   2646 static __inline__ vector int __ATTRS_o_ai vec_lvxl(int __a,
   2647                                                    const vector int *__b) {
   2648   return (vector int)__builtin_altivec_lvxl(__a, __b);
   2649 }
   2650 
   2651 static __inline__ vector int __ATTRS_o_ai vec_lvxl(int __a, const int *__b) {
   2652   return (vector int)__builtin_altivec_lvxl(__a, __b);
   2653 }
   2654 
   2655 static __inline__ vector unsigned int __ATTRS_o_ai
   2656 vec_lvxl(int __a, const vector unsigned int *__b) {
   2657   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
   2658 }
   2659 
   2660 static __inline__ vector unsigned int __ATTRS_o_ai
   2661 vec_lvxl(int __a, const unsigned int *__b) {
   2662   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
   2663 }
   2664 
   2665 static __inline__ vector bool int __ATTRS_o_ai
   2666 vec_lvxl(int __a, const vector bool int *__b) {
   2667   return (vector bool int)__builtin_altivec_lvxl(__a, __b);
   2668 }
   2669 
   2670 static __inline__ vector float __ATTRS_o_ai vec_lvxl(int __a,
   2671                                                      const vector float *__b) {
   2672   return (vector float)__builtin_altivec_lvxl(__a, __b);
   2673 }
   2674 
   2675 static __inline__ vector float __ATTRS_o_ai vec_lvxl(int __a,
   2676                                                      const float *__b) {
   2677   return (vector float)__builtin_altivec_lvxl(__a, __b);
   2678 }
   2679 
   2680 /* vec_loge */
   2681 
   2682 static __inline__ vector float __attribute__((__always_inline__))
   2683 vec_loge(vector float __a) {
   2684   return __builtin_altivec_vlogefp(__a);
   2685 }
   2686 
   2687 /* vec_vlogefp */
   2688 
   2689 static __inline__ vector float __attribute__((__always_inline__))
   2690 vec_vlogefp(vector float __a) {
   2691   return __builtin_altivec_vlogefp(__a);
   2692 }
   2693 
   2694 /* vec_lvsl */
   2695 
   2696 #ifdef __LITTLE_ENDIAN__
   2697 static __inline__ vector unsigned char __ATTRS_o_ai
   2698     __attribute__((__deprecated__("use assignment for unaligned little endian \
   2699 loads/stores"))) vec_lvsl(int __a, const signed char *__b) {
   2700   vector unsigned char mask =
   2701       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   2702   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   2703                                   7,  6,  5,  4,  3,  2,  1, 0};
   2704   return vec_perm(mask, mask, reverse);
   2705 }
   2706 #else
   2707 static __inline__ vector unsigned char __ATTRS_o_ai
   2708 vec_lvsl(int __a, const signed char *__b) {
   2709   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   2710 }
   2711 #endif
   2712 
   2713 #ifdef __LITTLE_ENDIAN__
   2714 static __inline__ vector unsigned char __ATTRS_o_ai
   2715     __attribute__((__deprecated__("use assignment for unaligned little endian \
   2716 loads/stores"))) vec_lvsl(int __a, const unsigned char *__b) {
   2717   vector unsigned char mask =
   2718       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   2719   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   2720                                   7,  6,  5,  4,  3,  2,  1, 0};
   2721   return vec_perm(mask, mask, reverse);
   2722 }
   2723 #else
   2724 static __inline__ vector unsigned char __ATTRS_o_ai
   2725 vec_lvsl(int __a, const unsigned char *__b) {
   2726   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   2727 }
   2728 #endif
   2729 
   2730 #ifdef __LITTLE_ENDIAN__
   2731 static __inline__ vector unsigned char __ATTRS_o_ai
   2732     __attribute__((__deprecated__("use assignment for unaligned little endian \
   2733 loads/stores"))) vec_lvsl(int __a, const short *__b) {
   2734   vector unsigned char mask =
   2735       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   2736   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   2737                                   7,  6,  5,  4,  3,  2,  1, 0};
   2738   return vec_perm(mask, mask, reverse);
   2739 }
   2740 #else
   2741 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
   2742                                                              const short *__b) {
   2743   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   2744 }
   2745 #endif
   2746 
   2747 #ifdef __LITTLE_ENDIAN__
   2748 static __inline__ vector unsigned char __ATTRS_o_ai
   2749     __attribute__((__deprecated__("use assignment for unaligned little endian \
   2750 loads/stores"))) vec_lvsl(int __a, const unsigned short *__b) {
   2751   vector unsigned char mask =
   2752       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   2753   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   2754                                   7,  6,  5,  4,  3,  2,  1, 0};
   2755   return vec_perm(mask, mask, reverse);
   2756 }
   2757 #else
   2758 static __inline__ vector unsigned char __ATTRS_o_ai
   2759 vec_lvsl(int __a, const unsigned short *__b) {
   2760   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   2761 }
   2762 #endif
   2763 
   2764 #ifdef __LITTLE_ENDIAN__
   2765 static __inline__ vector unsigned char __ATTRS_o_ai
   2766     __attribute__((__deprecated__("use assignment for unaligned little endian \
   2767 loads/stores"))) vec_lvsl(int __a, const int *__b) {
   2768   vector unsigned char mask =
   2769       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   2770   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   2771                                   7,  6,  5,  4,  3,  2,  1, 0};
   2772   return vec_perm(mask, mask, reverse);
   2773 }
   2774 #else
   2775 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
   2776                                                              const int *__b) {
   2777   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   2778 }
   2779 #endif
   2780 
   2781 #ifdef __LITTLE_ENDIAN__
   2782 static __inline__ vector unsigned char __ATTRS_o_ai
   2783     __attribute__((__deprecated__("use assignment for unaligned little endian \
   2784 loads/stores"))) vec_lvsl(int __a, const unsigned int *__b) {
   2785   vector unsigned char mask =
   2786       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   2787   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   2788                                   7,  6,  5,  4,  3,  2,  1, 0};
   2789   return vec_perm(mask, mask, reverse);
   2790 }
   2791 #else
   2792 static __inline__ vector unsigned char __ATTRS_o_ai
   2793 vec_lvsl(int __a, const unsigned int *__b) {
   2794   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   2795 }
   2796 #endif
   2797 
   2798 #ifdef __LITTLE_ENDIAN__
   2799 static __inline__ vector unsigned char __ATTRS_o_ai
   2800     __attribute__((__deprecated__("use assignment for unaligned little endian \
   2801 loads/stores"))) vec_lvsl(int __a, const float *__b) {
   2802   vector unsigned char mask =
   2803       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   2804   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   2805                                   7,  6,  5,  4,  3,  2,  1, 0};
   2806   return vec_perm(mask, mask, reverse);
   2807 }
   2808 #else
   2809 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
   2810                                                              const float *__b) {
   2811   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   2812 }
   2813 #endif
   2814 
   2815 /* vec_lvsr */
   2816 
   2817 #ifdef __LITTLE_ENDIAN__
   2818 static __inline__ vector unsigned char __ATTRS_o_ai
   2819     __attribute__((__deprecated__("use assignment for unaligned little endian \
   2820 loads/stores"))) vec_lvsr(int __a, const signed char *__b) {
   2821   vector unsigned char mask =
   2822       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   2823   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   2824                                   7,  6,  5,  4,  3,  2,  1, 0};
   2825   return vec_perm(mask, mask, reverse);
   2826 }
   2827 #else
   2828 static __inline__ vector unsigned char __ATTRS_o_ai
   2829 vec_lvsr(int __a, const signed char *__b) {
   2830   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   2831 }
   2832 #endif
   2833 
   2834 #ifdef __LITTLE_ENDIAN__
   2835 static __inline__ vector unsigned char __ATTRS_o_ai
   2836     __attribute__((__deprecated__("use assignment for unaligned little endian \
   2837 loads/stores"))) vec_lvsr(int __a, const unsigned char *__b) {
   2838   vector unsigned char mask =
   2839       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   2840   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   2841                                   7,  6,  5,  4,  3,  2,  1, 0};
   2842   return vec_perm(mask, mask, reverse);
   2843 }
   2844 #else
   2845 static __inline__ vector unsigned char __ATTRS_o_ai
   2846 vec_lvsr(int __a, const unsigned char *__b) {
   2847   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   2848 }
   2849 #endif
   2850 
   2851 #ifdef __LITTLE_ENDIAN__
   2852 static __inline__ vector unsigned char __ATTRS_o_ai
   2853     __attribute__((__deprecated__("use assignment for unaligned little endian \
   2854 loads/stores"))) vec_lvsr(int __a, const short *__b) {
   2855   vector unsigned char mask =
   2856       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   2857   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   2858                                   7,  6,  5,  4,  3,  2,  1, 0};
   2859   return vec_perm(mask, mask, reverse);
   2860 }
   2861 #else
   2862 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
   2863                                                              const short *__b) {
   2864   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   2865 }
   2866 #endif
   2867 
   2868 #ifdef __LITTLE_ENDIAN__
   2869 static __inline__ vector unsigned char __ATTRS_o_ai
   2870     __attribute__((__deprecated__("use assignment for unaligned little endian \
   2871 loads/stores"))) vec_lvsr(int __a, const unsigned short *__b) {
   2872   vector unsigned char mask =
   2873       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   2874   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   2875                                   7,  6,  5,  4,  3,  2,  1, 0};
   2876   return vec_perm(mask, mask, reverse);
   2877 }
   2878 #else
   2879 static __inline__ vector unsigned char __ATTRS_o_ai
   2880 vec_lvsr(int __a, const unsigned short *__b) {
   2881   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   2882 }
   2883 #endif
   2884 
   2885 #ifdef __LITTLE_ENDIAN__
   2886 static __inline__ vector unsigned char __ATTRS_o_ai
   2887     __attribute__((__deprecated__("use assignment for unaligned little endian \
   2888 loads/stores"))) vec_lvsr(int __a, const int *__b) {
   2889   vector unsigned char mask =
   2890       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   2891   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   2892                                   7,  6,  5,  4,  3,  2,  1, 0};
   2893   return vec_perm(mask, mask, reverse);
   2894 }
   2895 #else
   2896 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
   2897                                                              const int *__b) {
   2898   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   2899 }
   2900 #endif
   2901 
   2902 #ifdef __LITTLE_ENDIAN__
   2903 static __inline__ vector unsigned char __ATTRS_o_ai
   2904     __attribute__((__deprecated__("use assignment for unaligned little endian \
   2905 loads/stores"))) vec_lvsr(int __a, const unsigned int *__b) {
   2906   vector unsigned char mask =
   2907       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   2908   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   2909                                   7,  6,  5,  4,  3,  2,  1, 0};
   2910   return vec_perm(mask, mask, reverse);
   2911 }
   2912 #else
   2913 static __inline__ vector unsigned char __ATTRS_o_ai
   2914 vec_lvsr(int __a, const unsigned int *__b) {
   2915   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   2916 }
   2917 #endif
   2918 
   2919 #ifdef __LITTLE_ENDIAN__
   2920 static __inline__ vector unsigned char __ATTRS_o_ai
   2921     __attribute__((__deprecated__("use assignment for unaligned little endian \
   2922 loads/stores"))) vec_lvsr(int __a, const float *__b) {
   2923   vector unsigned char mask =
   2924       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   2925   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   2926                                   7,  6,  5,  4,  3,  2,  1, 0};
   2927   return vec_perm(mask, mask, reverse);
   2928 }
   2929 #else
   2930 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
   2931                                                              const float *__b) {
   2932   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   2933 }
   2934 #endif
   2935 
   2936 /* vec_madd */
   2937 static __inline__ vector signed short __ATTRS_o_ai
   2938 vec_mladd(vector signed short, vector signed short, vector signed short);
   2939 static __inline__ vector signed short __ATTRS_o_ai
   2940 vec_mladd(vector signed short, vector unsigned short, vector unsigned short);
   2941 static __inline__ vector signed short __ATTRS_o_ai
   2942 vec_mladd(vector unsigned short, vector signed short, vector signed short);
   2943 static __inline__ vector unsigned short __ATTRS_o_ai
   2944 vec_mladd(vector unsigned short, vector unsigned short, vector unsigned short);
   2945 
   2946 static __inline__ vector signed short __ATTRS_o_ai vec_madd(
   2947     vector signed short __a, vector signed short __b, vector signed short __c) {
   2948   return vec_mladd(__a, __b, __c);
   2949 }
   2950 
   2951 static __inline__ vector signed short __ATTRS_o_ai
   2952 vec_madd(vector signed short __a, vector unsigned short __b,
   2953          vector unsigned short __c) {
   2954   return vec_mladd(__a, __b, __c);
   2955 }
   2956 
   2957 static __inline__ vector signed short __ATTRS_o_ai
   2958 vec_madd(vector unsigned short __a, vector signed short __b,
   2959          vector signed short __c) {
   2960   return vec_mladd(__a, __b, __c);
   2961 }
   2962 
   2963 static __inline__ vector unsigned short __ATTRS_o_ai
   2964 vec_madd(vector unsigned short __a, vector unsigned short __b,
   2965          vector unsigned short __c) {
   2966   return vec_mladd(__a, __b, __c);
   2967 }
   2968 
   2969 static __inline__ vector float __ATTRS_o_ai vec_madd(vector float __a,
   2970                                                      vector float __b,
   2971                                                      vector float __c) {
   2972 #ifdef __VSX__
   2973   return __builtin_vsx_xvmaddasp(__a, __b, __c);
   2974 #else
   2975   return __builtin_altivec_vmaddfp(__a, __b, __c);
   2976 #endif
   2977 }
   2978 
   2979 #ifdef __VSX__
   2980 static __inline__ vector double __ATTRS_o_ai vec_madd(vector double __a,
   2981                                                       vector double __b,
   2982                                                       vector double __c) {
   2983   return __builtin_vsx_xvmaddadp(__a, __b, __c);
   2984 }
   2985 #endif
   2986 
   2987 /* vec_vmaddfp */
   2988 
   2989 static __inline__ vector float __attribute__((__always_inline__))
   2990 vec_vmaddfp(vector float __a, vector float __b, vector float __c) {
   2991   return __builtin_altivec_vmaddfp(__a, __b, __c);
   2992 }
   2993 
   2994 /* vec_madds */
   2995 
   2996 static __inline__ vector signed short __attribute__((__always_inline__))
   2997 vec_madds(vector signed short __a, vector signed short __b,
   2998           vector signed short __c) {
   2999   return __builtin_altivec_vmhaddshs(__a, __b, __c);
   3000 }
   3001 
   3002 /* vec_vmhaddshs */
   3003 static __inline__ vector signed short __attribute__((__always_inline__))
   3004 vec_vmhaddshs(vector signed short __a, vector signed short __b,
   3005               vector signed short __c) {
   3006   return __builtin_altivec_vmhaddshs(__a, __b, __c);
   3007 }
   3008 
   3009 /* vec_msub */
   3010 
   3011 #ifdef __VSX__
   3012 static __inline__ vector float __ATTRS_o_ai vec_msub(vector float __a,
   3013                                                      vector float __b,
   3014                                                      vector float __c) {
   3015   return __builtin_vsx_xvmsubasp(__a, __b, __c);
   3016 }
   3017 
   3018 static __inline__ vector double __ATTRS_o_ai vec_msub(vector double __a,
   3019                                                       vector double __b,
   3020                                                       vector double __c) {
   3021   return __builtin_vsx_xvmsubadp(__a, __b, __c);
   3022 }
   3023 #endif
   3024 
   3025 /* vec_max */
   3026 
   3027 static __inline__ vector signed char __ATTRS_o_ai
   3028 vec_max(vector signed char __a, vector signed char __b) {
   3029   return __builtin_altivec_vmaxsb(__a, __b);
   3030 }
   3031 
   3032 static __inline__ vector signed char __ATTRS_o_ai
   3033 vec_max(vector bool char __a, vector signed char __b) {
   3034   return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
   3035 }
   3036 
   3037 static __inline__ vector signed char __ATTRS_o_ai
   3038 vec_max(vector signed char __a, vector bool char __b) {
   3039   return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
   3040 }
   3041 
   3042 static __inline__ vector unsigned char __ATTRS_o_ai
   3043 vec_max(vector unsigned char __a, vector unsigned char __b) {
   3044   return __builtin_altivec_vmaxub(__a, __b);
   3045 }
   3046 
   3047 static __inline__ vector unsigned char __ATTRS_o_ai
   3048 vec_max(vector bool char __a, vector unsigned char __b) {
   3049   return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
   3050 }
   3051 
   3052 static __inline__ vector unsigned char __ATTRS_o_ai
   3053 vec_max(vector unsigned char __a, vector bool char __b) {
   3054   return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
   3055 }
   3056 
   3057 static __inline__ vector short __ATTRS_o_ai vec_max(vector short __a,
   3058                                                     vector short __b) {
   3059   return __builtin_altivec_vmaxsh(__a, __b);
   3060 }
   3061 
   3062 static __inline__ vector short __ATTRS_o_ai vec_max(vector bool short __a,
   3063                                                     vector short __b) {
   3064   return __builtin_altivec_vmaxsh((vector short)__a, __b);
   3065 }
   3066 
   3067 static __inline__ vector short __ATTRS_o_ai vec_max(vector short __a,
   3068                                                     vector bool short __b) {
   3069   return __builtin_altivec_vmaxsh(__a, (vector short)__b);
   3070 }
   3071 
   3072 static __inline__ vector unsigned short __ATTRS_o_ai
   3073 vec_max(vector unsigned short __a, vector unsigned short __b) {
   3074   return __builtin_altivec_vmaxuh(__a, __b);
   3075 }
   3076 
   3077 static __inline__ vector unsigned short __ATTRS_o_ai
   3078 vec_max(vector bool short __a, vector unsigned short __b) {
   3079   return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
   3080 }
   3081 
   3082 static __inline__ vector unsigned short __ATTRS_o_ai
   3083 vec_max(vector unsigned short __a, vector bool short __b) {
   3084   return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
   3085 }
   3086 
   3087 static __inline__ vector int __ATTRS_o_ai vec_max(vector int __a,
   3088                                                   vector int __b) {
   3089   return __builtin_altivec_vmaxsw(__a, __b);
   3090 }
   3091 
   3092 static __inline__ vector int __ATTRS_o_ai vec_max(vector bool int __a,
   3093                                                   vector int __b) {
   3094   return __builtin_altivec_vmaxsw((vector int)__a, __b);
   3095 }
   3096 
   3097 static __inline__ vector int __ATTRS_o_ai vec_max(vector int __a,
   3098                                                   vector bool int __b) {
   3099   return __builtin_altivec_vmaxsw(__a, (vector int)__b);
   3100 }
   3101 
   3102 static __inline__ vector unsigned int __ATTRS_o_ai
   3103 vec_max(vector unsigned int __a, vector unsigned int __b) {
   3104   return __builtin_altivec_vmaxuw(__a, __b);
   3105 }
   3106 
   3107 static __inline__ vector unsigned int __ATTRS_o_ai
   3108 vec_max(vector bool int __a, vector unsigned int __b) {
   3109   return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
   3110 }
   3111 
   3112 static __inline__ vector unsigned int __ATTRS_o_ai
   3113 vec_max(vector unsigned int __a, vector bool int __b) {
   3114   return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
   3115 }
   3116 
   3117 #ifdef __POWER8_VECTOR__
   3118 static __inline__ vector signed long long __ATTRS_o_ai
   3119 vec_max(vector signed long long __a, vector signed long long __b) {
   3120   return __builtin_altivec_vmaxsd(__a, __b);
   3121 }
   3122 
   3123 static __inline__ vector signed long long __ATTRS_o_ai
   3124 vec_max(vector bool long long __a, vector signed long long __b) {
   3125   return __builtin_altivec_vmaxsd((vector signed long long)__a, __b);
   3126 }
   3127 
   3128 static __inline__ vector signed long long __ATTRS_o_ai
   3129 vec_max(vector signed long long __a, vector bool long long __b) {
   3130   return __builtin_altivec_vmaxsd(__a, (vector signed long long)__b);
   3131 }
   3132 
   3133 static __inline__ vector unsigned long long __ATTRS_o_ai
   3134 vec_max(vector unsigned long long __a, vector unsigned long long __b) {
   3135   return __builtin_altivec_vmaxud(__a, __b);
   3136 }
   3137 
   3138 static __inline__ vector unsigned long long __ATTRS_o_ai
   3139 vec_max(vector bool long long __a, vector unsigned long long __b) {
   3140   return __builtin_altivec_vmaxud((vector unsigned long long)__a, __b);
   3141 }
   3142 
   3143 static __inline__ vector unsigned long long __ATTRS_o_ai
   3144 vec_max(vector unsigned long long __a, vector bool long long __b) {
   3145   return __builtin_altivec_vmaxud(__a, (vector unsigned long long)__b);
   3146 }
   3147 #endif
   3148 
   3149 static __inline__ vector float __ATTRS_o_ai vec_max(vector float __a,
   3150                                                     vector float __b) {
   3151 #ifdef __VSX__
   3152   return __builtin_vsx_xvmaxsp(__a, __b);
   3153 #else
   3154   return __builtin_altivec_vmaxfp(__a, __b);
   3155 #endif
   3156 }
   3157 
   3158 #ifdef __VSX__
   3159 static __inline__ vector double __ATTRS_o_ai vec_max(vector double __a,
   3160                                                      vector double __b) {
   3161   return __builtin_vsx_xvmaxdp(__a, __b);
   3162 }
   3163 #endif
   3164 
   3165 /* vec_vmaxsb */
   3166 
   3167 static __inline__ vector signed char __ATTRS_o_ai
   3168 vec_vmaxsb(vector signed char __a, vector signed char __b) {
   3169   return __builtin_altivec_vmaxsb(__a, __b);
   3170 }
   3171 
   3172 static __inline__ vector signed char __ATTRS_o_ai
   3173 vec_vmaxsb(vector bool char __a, vector signed char __b) {
   3174   return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
   3175 }
   3176 
   3177 static __inline__ vector signed char __ATTRS_o_ai
   3178 vec_vmaxsb(vector signed char __a, vector bool char __b) {
   3179   return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
   3180 }
   3181 
   3182 /* vec_vmaxub */
   3183 
   3184 static __inline__ vector unsigned char __ATTRS_o_ai
   3185 vec_vmaxub(vector unsigned char __a, vector unsigned char __b) {
   3186   return __builtin_altivec_vmaxub(__a, __b);
   3187 }
   3188 
   3189 static __inline__ vector unsigned char __ATTRS_o_ai
   3190 vec_vmaxub(vector bool char __a, vector unsigned char __b) {
   3191   return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
   3192 }
   3193 
   3194 static __inline__ vector unsigned char __ATTRS_o_ai
   3195 vec_vmaxub(vector unsigned char __a, vector bool char __b) {
   3196   return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
   3197 }
   3198 
   3199 /* vec_vmaxsh */
   3200 
   3201 static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector short __a,
   3202                                                        vector short __b) {
   3203   return __builtin_altivec_vmaxsh(__a, __b);
   3204 }
   3205 
   3206 static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector bool short __a,
   3207                                                        vector short __b) {
   3208   return __builtin_altivec_vmaxsh((vector short)__a, __b);
   3209 }
   3210 
   3211 static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector short __a,
   3212                                                        vector bool short __b) {
   3213   return __builtin_altivec_vmaxsh(__a, (vector short)__b);
   3214 }
   3215 
   3216 /* vec_vmaxuh */
   3217 
   3218 static __inline__ vector unsigned short __ATTRS_o_ai
   3219 vec_vmaxuh(vector unsigned short __a, vector unsigned short __b) {
   3220   return __builtin_altivec_vmaxuh(__a, __b);
   3221 }
   3222 
   3223 static __inline__ vector unsigned short __ATTRS_o_ai
   3224 vec_vmaxuh(vector bool short __a, vector unsigned short __b) {
   3225   return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
   3226 }
   3227 
   3228 static __inline__ vector unsigned short __ATTRS_o_ai
   3229 vec_vmaxuh(vector unsigned short __a, vector bool short __b) {
   3230   return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
   3231 }
   3232 
   3233 /* vec_vmaxsw */
   3234 
   3235 static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector int __a,
   3236                                                      vector int __b) {
   3237   return __builtin_altivec_vmaxsw(__a, __b);
   3238 }
   3239 
   3240 static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector bool int __a,
   3241                                                      vector int __b) {
   3242   return __builtin_altivec_vmaxsw((vector int)__a, __b);
   3243 }
   3244 
   3245 static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector int __a,
   3246                                                      vector bool int __b) {
   3247   return __builtin_altivec_vmaxsw(__a, (vector int)__b);
   3248 }
   3249 
   3250 /* vec_vmaxuw */
   3251 
   3252 static __inline__ vector unsigned int __ATTRS_o_ai
   3253 vec_vmaxuw(vector unsigned int __a, vector unsigned int __b) {
   3254   return __builtin_altivec_vmaxuw(__a, __b);
   3255 }
   3256 
   3257 static __inline__ vector unsigned int __ATTRS_o_ai
   3258 vec_vmaxuw(vector bool int __a, vector unsigned int __b) {
   3259   return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
   3260 }
   3261 
   3262 static __inline__ vector unsigned int __ATTRS_o_ai
   3263 vec_vmaxuw(vector unsigned int __a, vector bool int __b) {
   3264   return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
   3265 }
   3266 
   3267 /* vec_vmaxfp */
   3268 
   3269 static __inline__ vector float __attribute__((__always_inline__))
   3270 vec_vmaxfp(vector float __a, vector float __b) {
   3271 #ifdef __VSX__
   3272   return __builtin_vsx_xvmaxsp(__a, __b);
   3273 #else
   3274   return __builtin_altivec_vmaxfp(__a, __b);
   3275 #endif
   3276 }
   3277 
   3278 /* vec_mergeh */
   3279 
   3280 static __inline__ vector signed char __ATTRS_o_ai
   3281 vec_mergeh(vector signed char __a, vector signed char __b) {
   3282   return vec_perm(__a, __b,
   3283                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
   3284                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
   3285                                          0x06, 0x16, 0x07, 0x17));
   3286 }
   3287 
   3288 static __inline__ vector unsigned char __ATTRS_o_ai
   3289 vec_mergeh(vector unsigned char __a, vector unsigned char __b) {
   3290   return vec_perm(__a, __b,
   3291                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
   3292                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
   3293                                          0x06, 0x16, 0x07, 0x17));
   3294 }
   3295 
   3296 static __inline__ vector bool char __ATTRS_o_ai
   3297 vec_mergeh(vector bool char __a, vector bool char __b) {
   3298   return vec_perm(__a, __b,
   3299                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
   3300                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
   3301                                          0x06, 0x16, 0x07, 0x17));
   3302 }
   3303 
   3304 static __inline__ vector short __ATTRS_o_ai vec_mergeh(vector short __a,
   3305                                                        vector short __b) {
   3306   return vec_perm(__a, __b,
   3307                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
   3308                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
   3309                                          0x06, 0x07, 0x16, 0x17));
   3310 }
   3311 
   3312 static __inline__ vector unsigned short __ATTRS_o_ai
   3313 vec_mergeh(vector unsigned short __a, vector unsigned short __b) {
   3314   return vec_perm(__a, __b,
   3315                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
   3316                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
   3317                                          0x06, 0x07, 0x16, 0x17));
   3318 }
   3319 
   3320 static __inline__ vector bool short __ATTRS_o_ai
   3321 vec_mergeh(vector bool short __a, vector bool short __b) {
   3322   return vec_perm(__a, __b,
   3323                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
   3324                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
   3325                                          0x06, 0x07, 0x16, 0x17));
   3326 }
   3327 
   3328 static __inline__ vector pixel __ATTRS_o_ai vec_mergeh(vector pixel __a,
   3329                                                        vector pixel __b) {
   3330   return vec_perm(__a, __b,
   3331                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
   3332                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
   3333                                          0x06, 0x07, 0x16, 0x17));
   3334 }
   3335 
   3336 static __inline__ vector int __ATTRS_o_ai vec_mergeh(vector int __a,
   3337                                                      vector int __b) {
   3338   return vec_perm(__a, __b,
   3339                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   3340                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
   3341                                          0x14, 0x15, 0x16, 0x17));
   3342 }
   3343 
   3344 static __inline__ vector unsigned int __ATTRS_o_ai
   3345 vec_mergeh(vector unsigned int __a, vector unsigned int __b) {
   3346   return vec_perm(__a, __b,
   3347                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   3348                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
   3349                                          0x14, 0x15, 0x16, 0x17));
   3350 }
   3351 
   3352 static __inline__ vector bool int __ATTRS_o_ai vec_mergeh(vector bool int __a,
   3353                                                           vector bool int __b) {
   3354   return vec_perm(__a, __b,
   3355                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   3356                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
   3357                                          0x14, 0x15, 0x16, 0x17));
   3358 }
   3359 
   3360 static __inline__ vector float __ATTRS_o_ai vec_mergeh(vector float __a,
   3361                                                        vector float __b) {
   3362   return vec_perm(__a, __b,
   3363                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   3364                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
   3365                                          0x14, 0x15, 0x16, 0x17));
   3366 }
   3367 
   3368 #ifdef __VSX__
   3369 static __inline__ vector signed long long __ATTRS_o_ai
   3370 vec_mergeh(vector signed long long __a, vector signed long long __b) {
   3371   return vec_perm(__a, __b,
   3372                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   3373                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   3374                                          0x14, 0x15, 0x16, 0x17));
   3375 }
   3376 
   3377 static __inline__ vector signed long long __ATTRS_o_ai
   3378 vec_mergeh(vector signed long long __a, vector bool long long __b) {
   3379   return vec_perm(__a, (vector signed long long)__b,
   3380                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   3381                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   3382                                          0x14, 0x15, 0x16, 0x17));
   3383 }
   3384 
   3385 static __inline__ vector signed long long __ATTRS_o_ai
   3386 vec_mergeh(vector bool long long __a, vector signed long long __b) {
   3387   return vec_perm((vector signed long long)__a, __b,
   3388                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   3389                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   3390                                          0x14, 0x15, 0x16, 0x17));
   3391 }
   3392 
   3393 static __inline__ vector unsigned long long __ATTRS_o_ai
   3394 vec_mergeh(vector unsigned long long __a, vector unsigned long long __b) {
   3395   return vec_perm(__a, __b,
   3396                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   3397                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   3398                                          0x14, 0x15, 0x16, 0x17));
   3399 }
   3400 
   3401 static __inline__ vector unsigned long long __ATTRS_o_ai
   3402 vec_mergeh(vector unsigned long long __a, vector bool long long __b) {
   3403   return vec_perm(__a, (vector unsigned long long)__b,
   3404                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   3405                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   3406                                          0x14, 0x15, 0x16, 0x17));
   3407 }
   3408 
   3409 static __inline__ vector unsigned long long __ATTRS_o_ai
   3410 vec_mergeh(vector bool long long __a, vector unsigned long long __b) {
   3411   return vec_perm((vector unsigned long long)__a, __b,
   3412                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   3413                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   3414                                          0x14, 0x15, 0x16, 0x17));
   3415 }
   3416 
   3417 static __inline__ vector bool long long __ATTRS_o_ai
   3418 vec_mergeh(vector bool long long __a, vector bool long long __b) {
   3419   return vec_perm(__a, __b,
   3420                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   3421                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   3422                                          0x14, 0x15, 0x16, 0x17));
   3423 }
   3424 
   3425 static __inline__ vector double __ATTRS_o_ai vec_mergeh(vector double __a,
   3426                                                         vector double __b) {
   3427   return vec_perm(__a, __b,
   3428                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   3429                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   3430                                          0x14, 0x15, 0x16, 0x17));
   3431 }
   3432 static __inline__ vector double __ATTRS_o_ai
   3433 vec_mergeh(vector double __a, vector bool long long __b) {
   3434   return vec_perm(__a, (vector double)__b,
   3435                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   3436                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   3437                                          0x14, 0x15, 0x16, 0x17));
   3438 }
   3439 static __inline__ vector double __ATTRS_o_ai
   3440 vec_mergeh(vector bool long long __a, vector double __b) {
   3441   return vec_perm((vector double)__a, __b,
   3442                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   3443                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   3444                                          0x14, 0x15, 0x16, 0x17));
   3445 }
   3446 #endif
   3447 
   3448 /* vec_vmrghb */
   3449 
   3450 #define __builtin_altivec_vmrghb vec_vmrghb
   3451 
   3452 static __inline__ vector signed char __ATTRS_o_ai
   3453 vec_vmrghb(vector signed char __a, vector signed char __b) {
   3454   return vec_perm(__a, __b,
   3455                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
   3456                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
   3457                                          0x06, 0x16, 0x07, 0x17));
   3458 }
   3459 
   3460 static __inline__ vector unsigned char __ATTRS_o_ai
   3461 vec_vmrghb(vector unsigned char __a, vector unsigned char __b) {
   3462   return vec_perm(__a, __b,
   3463                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
   3464                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
   3465                                          0x06, 0x16, 0x07, 0x17));
   3466 }
   3467 
   3468 static __inline__ vector bool char __ATTRS_o_ai
   3469 vec_vmrghb(vector bool char __a, vector bool char __b) {
   3470   return vec_perm(__a, __b,
   3471                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
   3472                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
   3473                                          0x06, 0x16, 0x07, 0x17));
   3474 }
   3475 
   3476 /* vec_vmrghh */
   3477 
   3478 #define __builtin_altivec_vmrghh vec_vmrghh
   3479 
   3480 static __inline__ vector short __ATTRS_o_ai vec_vmrghh(vector short __a,
   3481                                                        vector short __b) {
   3482   return vec_perm(__a, __b,
   3483                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
   3484                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
   3485                                          0x06, 0x07, 0x16, 0x17));
   3486 }
   3487 
   3488 static __inline__ vector unsigned short __ATTRS_o_ai
   3489 vec_vmrghh(vector unsigned short __a, vector unsigned short __b) {
   3490   return vec_perm(__a, __b,
   3491                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
   3492                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
   3493                                          0x06, 0x07, 0x16, 0x17));
   3494 }
   3495 
   3496 static __inline__ vector bool short __ATTRS_o_ai
   3497 vec_vmrghh(vector bool short __a, vector bool short __b) {
   3498   return vec_perm(__a, __b,
   3499                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
   3500                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
   3501                                          0x06, 0x07, 0x16, 0x17));
   3502 }
   3503 
   3504 static __inline__ vector pixel __ATTRS_o_ai vec_vmrghh(vector pixel __a,
   3505                                                        vector pixel __b) {
   3506   return vec_perm(__a, __b,
   3507                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
   3508                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
   3509                                          0x06, 0x07, 0x16, 0x17));
   3510 }
   3511 
   3512 /* vec_vmrghw */
   3513 
   3514 #define __builtin_altivec_vmrghw vec_vmrghw
   3515 
   3516 static __inline__ vector int __ATTRS_o_ai vec_vmrghw(vector int __a,
   3517                                                      vector int __b) {
   3518   return vec_perm(__a, __b,
   3519                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   3520                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
   3521                                          0x14, 0x15, 0x16, 0x17));
   3522 }
   3523 
   3524 static __inline__ vector unsigned int __ATTRS_o_ai
   3525 vec_vmrghw(vector unsigned int __a, vector unsigned int __b) {
   3526   return vec_perm(__a, __b,
   3527                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   3528                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
   3529                                          0x14, 0x15, 0x16, 0x17));
   3530 }
   3531 
   3532 static __inline__ vector bool int __ATTRS_o_ai vec_vmrghw(vector bool int __a,
   3533                                                           vector bool int __b) {
   3534   return vec_perm(__a, __b,
   3535                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   3536                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
   3537                                          0x14, 0x15, 0x16, 0x17));
   3538 }
   3539 
   3540 static __inline__ vector float __ATTRS_o_ai vec_vmrghw(vector float __a,
   3541                                                        vector float __b) {
   3542   return vec_perm(__a, __b,
   3543                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   3544                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
   3545                                          0x14, 0x15, 0x16, 0x17));
   3546 }
   3547 
   3548 /* vec_mergel */
   3549 
   3550 static __inline__ vector signed char __ATTRS_o_ai
   3551 vec_mergel(vector signed char __a, vector signed char __b) {
   3552   return vec_perm(__a, __b,
   3553                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
   3554                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
   3555                                          0x0E, 0x1E, 0x0F, 0x1F));
   3556 }
   3557 
   3558 static __inline__ vector unsigned char __ATTRS_o_ai
   3559 vec_mergel(vector unsigned char __a, vector unsigned char __b) {
   3560   return vec_perm(__a, __b,
   3561                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
   3562                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
   3563                                          0x0E, 0x1E, 0x0F, 0x1F));
   3564 }
   3565 
   3566 static __inline__ vector bool char __ATTRS_o_ai
   3567 vec_mergel(vector bool char __a, vector bool char __b) {
   3568   return vec_perm(__a, __b,
   3569                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
   3570                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
   3571                                          0x0E, 0x1E, 0x0F, 0x1F));
   3572 }
   3573 
   3574 static __inline__ vector short __ATTRS_o_ai vec_mergel(vector short __a,
   3575                                                        vector short __b) {
   3576   return vec_perm(__a, __b,
   3577                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
   3578                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
   3579                                          0x0E, 0x0F, 0x1E, 0x1F));
   3580 }
   3581 
   3582 static __inline__ vector unsigned short __ATTRS_o_ai
   3583 vec_mergel(vector unsigned short __a, vector unsigned short __b) {
   3584   return vec_perm(__a, __b,
   3585                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
   3586                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
   3587                                          0x0E, 0x0F, 0x1E, 0x1F));
   3588 }
   3589 
   3590 static __inline__ vector bool short __ATTRS_o_ai
   3591 vec_mergel(vector bool short __a, vector bool short __b) {
   3592   return vec_perm(__a, __b,
   3593                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
   3594                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
   3595                                          0x0E, 0x0F, 0x1E, 0x1F));
   3596 }
   3597 
   3598 static __inline__ vector pixel __ATTRS_o_ai vec_mergel(vector pixel __a,
   3599                                                        vector pixel __b) {
   3600   return vec_perm(__a, __b,
   3601                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
   3602                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
   3603                                          0x0E, 0x0F, 0x1E, 0x1F));
   3604 }
   3605 
   3606 static __inline__ vector int __ATTRS_o_ai vec_mergel(vector int __a,
   3607                                                      vector int __b) {
   3608   return vec_perm(__a, __b,
   3609                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
   3610                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
   3611                                          0x1C, 0x1D, 0x1E, 0x1F));
   3612 }
   3613 
   3614 static __inline__ vector unsigned int __ATTRS_o_ai
   3615 vec_mergel(vector unsigned int __a, vector unsigned int __b) {
   3616   return vec_perm(__a, __b,
   3617                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
   3618                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
   3619                                          0x1C, 0x1D, 0x1E, 0x1F));
   3620 }
   3621 
   3622 static __inline__ vector bool int __ATTRS_o_ai vec_mergel(vector bool int __a,
   3623                                                           vector bool int __b) {
   3624   return vec_perm(__a, __b,
   3625                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
   3626                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
   3627                                          0x1C, 0x1D, 0x1E, 0x1F));
   3628 }
   3629 
   3630 static __inline__ vector float __ATTRS_o_ai vec_mergel(vector float __a,
   3631                                                        vector float __b) {
   3632   return vec_perm(__a, __b,
   3633                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
   3634                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
   3635                                          0x1C, 0x1D, 0x1E, 0x1F));
   3636 }
   3637 
   3638 #ifdef __VSX__
   3639 static __inline__ vector signed long long __ATTRS_o_ai
   3640 vec_mergel(vector signed long long __a, vector signed long long __b) {
   3641   return vec_perm(__a, __b,
   3642                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   3643                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   3644                                          0x1C, 0x1D, 0x1E, 0x1F));
   3645 }
   3646 static __inline__ vector signed long long __ATTRS_o_ai
   3647 vec_mergel(vector signed long long __a, vector bool long long __b) {
   3648   return vec_perm(__a, (vector signed long long)__b,
   3649                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   3650                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   3651                                          0x1C, 0x1D, 0x1E, 0x1F));
   3652 }
   3653 static __inline__ vector signed long long __ATTRS_o_ai
   3654 vec_mergel(vector bool long long __a, vector signed long long __b) {
   3655   return vec_perm((vector signed long long)__a, __b,
   3656                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   3657                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   3658                                          0x1C, 0x1D, 0x1E, 0x1F));
   3659 }
   3660 static __inline__ vector unsigned long long __ATTRS_o_ai
   3661 vec_mergel(vector unsigned long long __a, vector unsigned long long __b) {
   3662   return vec_perm(__a, __b,
   3663                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   3664                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   3665                                          0x1C, 0x1D, 0x1E, 0x1F));
   3666 }
   3667 static __inline__ vector unsigned long long __ATTRS_o_ai
   3668 vec_mergel(vector unsigned long long __a, vector bool long long __b) {
   3669   return vec_perm(__a, (vector unsigned long long)__b,
   3670                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   3671                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   3672                                          0x1C, 0x1D, 0x1E, 0x1F));
   3673 }
   3674 static __inline__ vector unsigned long long __ATTRS_o_ai
   3675 vec_mergel(vector bool long long __a, vector unsigned long long __b) {
   3676   return vec_perm((vector unsigned long long)__a, __b,
   3677                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   3678                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   3679                                          0x1C, 0x1D, 0x1E, 0x1F));
   3680 }
   3681 static __inline__ vector bool long long __ATTRS_o_ai
   3682 vec_mergel(vector bool long long __a, vector bool long long __b) {
   3683   return vec_perm(__a, __b,
   3684                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   3685                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   3686                                          0x1C, 0x1D, 0x1E, 0x1F));
   3687 }
   3688 static __inline__ vector double __ATTRS_o_ai vec_mergel(vector double __a,
   3689                                                         vector double __b) {
   3690   return vec_perm(__a, __b,
   3691                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   3692                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   3693                                          0x1C, 0x1D, 0x1E, 0x1F));
   3694 }
   3695 static __inline__ vector double __ATTRS_o_ai
   3696 vec_mergel(vector double __a, vector bool long long __b) {
   3697   return vec_perm(__a, (vector double)__b,
   3698                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   3699                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   3700                                          0x1C, 0x1D, 0x1E, 0x1F));
   3701 }
   3702 static __inline__ vector double __ATTRS_o_ai
   3703 vec_mergel(vector bool long long __a, vector double __b) {
   3704   return vec_perm((vector double)__a, __b,
   3705                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   3706                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   3707                                          0x1C, 0x1D, 0x1E, 0x1F));
   3708 }
   3709 #endif
   3710 
   3711 /* vec_vmrglb */
   3712 
   3713 #define __builtin_altivec_vmrglb vec_vmrglb
   3714 
   3715 static __inline__ vector signed char __ATTRS_o_ai
   3716 vec_vmrglb(vector signed char __a, vector signed char __b) {
   3717   return vec_perm(__a, __b,
   3718                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
   3719                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
   3720                                          0x0E, 0x1E, 0x0F, 0x1F));
   3721 }
   3722 
   3723 static __inline__ vector unsigned char __ATTRS_o_ai
   3724 vec_vmrglb(vector unsigned char __a, vector unsigned char __b) {
   3725   return vec_perm(__a, __b,
   3726                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
   3727                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
   3728                                          0x0E, 0x1E, 0x0F, 0x1F));
   3729 }
   3730 
   3731 static __inline__ vector bool char __ATTRS_o_ai
   3732 vec_vmrglb(vector bool char __a, vector bool char __b) {
   3733   return vec_perm(__a, __b,
   3734                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
   3735                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
   3736                                          0x0E, 0x1E, 0x0F, 0x1F));
   3737 }
   3738 
   3739 /* vec_vmrglh */
   3740 
   3741 #define __builtin_altivec_vmrglh vec_vmrglh
   3742 
   3743 static __inline__ vector short __ATTRS_o_ai vec_vmrglh(vector short __a,
   3744                                                        vector short __b) {
   3745   return vec_perm(__a, __b,
   3746                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
   3747                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
   3748                                          0x0E, 0x0F, 0x1E, 0x1F));
   3749 }
   3750 
   3751 static __inline__ vector unsigned short __ATTRS_o_ai
   3752 vec_vmrglh(vector unsigned short __a, vector unsigned short __b) {
   3753   return vec_perm(__a, __b,
   3754                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
   3755                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
   3756                                          0x0E, 0x0F, 0x1E, 0x1F));
   3757 }
   3758 
   3759 static __inline__ vector bool short __ATTRS_o_ai
   3760 vec_vmrglh(vector bool short __a, vector bool short __b) {
   3761   return vec_perm(__a, __b,
   3762                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
   3763                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
   3764                                          0x0E, 0x0F, 0x1E, 0x1F));
   3765 }
   3766 
   3767 static __inline__ vector pixel __ATTRS_o_ai vec_vmrglh(vector pixel __a,
   3768                                                        vector pixel __b) {
   3769   return vec_perm(__a, __b,
   3770                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
   3771                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
   3772                                          0x0E, 0x0F, 0x1E, 0x1F));
   3773 }
   3774 
   3775 /* vec_vmrglw */
   3776 
   3777 #define __builtin_altivec_vmrglw vec_vmrglw
   3778 
   3779 static __inline__ vector int __ATTRS_o_ai vec_vmrglw(vector int __a,
   3780                                                      vector int __b) {
   3781   return vec_perm(__a, __b,
   3782                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
   3783                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
   3784                                          0x1C, 0x1D, 0x1E, 0x1F));
   3785 }
   3786 
   3787 static __inline__ vector unsigned int __ATTRS_o_ai
   3788 vec_vmrglw(vector unsigned int __a, vector unsigned int __b) {
   3789   return vec_perm(__a, __b,
   3790                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
   3791                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
   3792                                          0x1C, 0x1D, 0x1E, 0x1F));
   3793 }
   3794 
   3795 static __inline__ vector bool int __ATTRS_o_ai vec_vmrglw(vector bool int __a,
   3796                                                           vector bool int __b) {
   3797   return vec_perm(__a, __b,
   3798                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
   3799                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
   3800                                          0x1C, 0x1D, 0x1E, 0x1F));
   3801 }
   3802 
   3803 static __inline__ vector float __ATTRS_o_ai vec_vmrglw(vector float __a,
   3804                                                        vector float __b) {
   3805   return vec_perm(__a, __b,
   3806                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
   3807                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
   3808                                          0x1C, 0x1D, 0x1E, 0x1F));
   3809 }
   3810 
   3811 #ifdef __POWER8_VECTOR__
   3812 /* vec_mergee */
   3813 
   3814 static __inline__ vector bool int __ATTRS_o_ai vec_mergee(vector bool int __a,
   3815                                                           vector bool int __b) {
   3816   return vec_perm(__a, __b,
   3817                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   3818                                          0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
   3819                                          0x18, 0x19, 0x1A, 0x1B));
   3820 }
   3821 
   3822 static __inline__ vector signed int __ATTRS_o_ai
   3823 vec_mergee(vector signed int __a, vector signed int __b) {
   3824   return vec_perm(__a, __b,
   3825                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   3826                                          0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
   3827                                          0x18, 0x19, 0x1A, 0x1B));
   3828 }
   3829 
   3830 static __inline__ vector unsigned int __ATTRS_o_ai
   3831 vec_mergee(vector unsigned int __a, vector unsigned int __b) {
   3832   return vec_perm(__a, __b,
   3833                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   3834                                          0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
   3835                                          0x18, 0x19, 0x1A, 0x1B));
   3836 }
   3837 
   3838 /* vec_mergeo */
   3839 
   3840 static __inline__ vector bool int __ATTRS_o_ai vec_mergeo(vector bool int __a,
   3841                                                           vector bool int __b) {
   3842   return vec_perm(__a, __b,
   3843                   (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
   3844                                          0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
   3845                                          0x1C, 0x1D, 0x1E, 0x1F));
   3846 }
   3847 
   3848 static __inline__ vector signed int __ATTRS_o_ai
   3849 vec_mergeo(vector signed int __a, vector signed int __b) {
   3850   return vec_perm(__a, __b,
   3851                   (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
   3852                                          0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
   3853                                          0x1C, 0x1D, 0x1E, 0x1F));
   3854 }
   3855 
   3856 static __inline__ vector unsigned int __ATTRS_o_ai
   3857 vec_mergeo(vector unsigned int __a, vector unsigned int __b) {
   3858   return vec_perm(__a, __b,
   3859                   (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
   3860                                          0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
   3861                                          0x1C, 0x1D, 0x1E, 0x1F));
   3862 }
   3863 
   3864 #endif
   3865 
   3866 /* vec_mfvscr */
   3867 
   3868 static __inline__ vector unsigned short __attribute__((__always_inline__))
   3869 vec_mfvscr(void) {
   3870   return __builtin_altivec_mfvscr();
   3871 }
   3872 
   3873 /* vec_min */
   3874 
   3875 static __inline__ vector signed char __ATTRS_o_ai
   3876 vec_min(vector signed char __a, vector signed char __b) {
   3877   return __builtin_altivec_vminsb(__a, __b);
   3878 }
   3879 
   3880 static __inline__ vector signed char __ATTRS_o_ai
   3881 vec_min(vector bool char __a, vector signed char __b) {
   3882   return __builtin_altivec_vminsb((vector signed char)__a, __b);
   3883 }
   3884 
   3885 static __inline__ vector signed char __ATTRS_o_ai
   3886 vec_min(vector signed char __a, vector bool char __b) {
   3887   return __builtin_altivec_vminsb(__a, (vector signed char)__b);
   3888 }
   3889 
   3890 static __inline__ vector unsigned char __ATTRS_o_ai
   3891 vec_min(vector unsigned char __a, vector unsigned char __b) {
   3892   return __builtin_altivec_vminub(__a, __b);
   3893 }
   3894 
   3895 static __inline__ vector unsigned char __ATTRS_o_ai
   3896 vec_min(vector bool char __a, vector unsigned char __b) {
   3897   return __builtin_altivec_vminub((vector unsigned char)__a, __b);
   3898 }
   3899 
   3900 static __inline__ vector unsigned char __ATTRS_o_ai
   3901 vec_min(vector unsigned char __a, vector bool char __b) {
   3902   return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
   3903 }
   3904 
   3905 static __inline__ vector short __ATTRS_o_ai vec_min(vector short __a,
   3906                                                     vector short __b) {
   3907   return __builtin_altivec_vminsh(__a, __b);
   3908 }
   3909 
   3910 static __inline__ vector short __ATTRS_o_ai vec_min(vector bool short __a,
   3911                                                     vector short __b) {
   3912   return __builtin_altivec_vminsh((vector short)__a, __b);
   3913 }
   3914 
   3915 static __inline__ vector short __ATTRS_o_ai vec_min(vector short __a,
   3916                                                     vector bool short __b) {
   3917   return __builtin_altivec_vminsh(__a, (vector short)__b);
   3918 }
   3919 
   3920 static __inline__ vector unsigned short __ATTRS_o_ai
   3921 vec_min(vector unsigned short __a, vector unsigned short __b) {
   3922   return __builtin_altivec_vminuh(__a, __b);
   3923 }
   3924 
   3925 static __inline__ vector unsigned short __ATTRS_o_ai
   3926 vec_min(vector bool short __a, vector unsigned short __b) {
   3927   return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
   3928 }
   3929 
   3930 static __inline__ vector unsigned short __ATTRS_o_ai
   3931 vec_min(vector unsigned short __a, vector bool short __b) {
   3932   return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
   3933 }
   3934 
   3935 static __inline__ vector int __ATTRS_o_ai vec_min(vector int __a,
   3936                                                   vector int __b) {
   3937   return __builtin_altivec_vminsw(__a, __b);
   3938 }
   3939 
   3940 static __inline__ vector int __ATTRS_o_ai vec_min(vector bool int __a,
   3941                                                   vector int __b) {
   3942   return __builtin_altivec_vminsw((vector int)__a, __b);
   3943 }
   3944 
   3945 static __inline__ vector int __ATTRS_o_ai vec_min(vector int __a,
   3946                                                   vector bool int __b) {
   3947   return __builtin_altivec_vminsw(__a, (vector int)__b);
   3948 }
   3949 
   3950 static __inline__ vector unsigned int __ATTRS_o_ai
   3951 vec_min(vector unsigned int __a, vector unsigned int __b) {
   3952   return __builtin_altivec_vminuw(__a, __b);
   3953 }
   3954 
   3955 static __inline__ vector unsigned int __ATTRS_o_ai
   3956 vec_min(vector bool int __a, vector unsigned int __b) {
   3957   return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
   3958 }
   3959 
   3960 static __inline__ vector unsigned int __ATTRS_o_ai
   3961 vec_min(vector unsigned int __a, vector bool int __b) {
   3962   return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
   3963 }
   3964 
   3965 #ifdef __POWER8_VECTOR__
   3966 static __inline__ vector signed long long __ATTRS_o_ai
   3967 vec_min(vector signed long long __a, vector signed long long __b) {
   3968   return __builtin_altivec_vminsd(__a, __b);
   3969 }
   3970 
   3971 static __inline__ vector signed long long __ATTRS_o_ai
   3972 vec_min(vector bool long long __a, vector signed long long __b) {
   3973   return __builtin_altivec_vminsd((vector signed long long)__a, __b);
   3974 }
   3975 
   3976 static __inline__ vector signed long long __ATTRS_o_ai
   3977 vec_min(vector signed long long __a, vector bool long long __b) {
   3978   return __builtin_altivec_vminsd(__a, (vector signed long long)__b);
   3979 }
   3980 
   3981 static __inline__ vector unsigned long long __ATTRS_o_ai
   3982 vec_min(vector unsigned long long __a, vector unsigned long long __b) {
   3983   return __builtin_altivec_vminud(__a, __b);
   3984 }
   3985 
   3986 static __inline__ vector unsigned long long __ATTRS_o_ai
   3987 vec_min(vector bool long long __a, vector unsigned long long __b) {
   3988   return __builtin_altivec_vminud((vector unsigned long long)__a, __b);
   3989 }
   3990 
   3991 static __inline__ vector unsigned long long __ATTRS_o_ai
   3992 vec_min(vector unsigned long long __a, vector bool long long __b) {
   3993   return __builtin_altivec_vminud(__a, (vector unsigned long long)__b);
   3994 }
   3995 #endif
   3996 
   3997 static __inline__ vector float __ATTRS_o_ai vec_min(vector float __a,
   3998                                                     vector float __b) {
   3999 #ifdef __VSX__
   4000   return __builtin_vsx_xvminsp(__a, __b);
   4001 #else
   4002   return __builtin_altivec_vminfp(__a, __b);
   4003 #endif
   4004 }
   4005 
   4006 #ifdef __VSX__
   4007 static __inline__ vector double __ATTRS_o_ai vec_min(vector double __a,
   4008                                                      vector double __b) {
   4009   return __builtin_vsx_xvmindp(__a, __b);
   4010 }
   4011 #endif
   4012 
   4013 /* vec_vminsb */
   4014 
   4015 static __inline__ vector signed char __ATTRS_o_ai
   4016 vec_vminsb(vector signed char __a, vector signed char __b) {
   4017   return __builtin_altivec_vminsb(__a, __b);
   4018 }
   4019 
   4020 static __inline__ vector signed char __ATTRS_o_ai
   4021 vec_vminsb(vector bool char __a, vector signed char __b) {
   4022   return __builtin_altivec_vminsb((vector signed char)__a, __b);
   4023 }
   4024 
   4025 static __inline__ vector signed char __ATTRS_o_ai
   4026 vec_vminsb(vector signed char __a, vector bool char __b) {
   4027   return __builtin_altivec_vminsb(__a, (vector signed char)__b);
   4028 }
   4029 
   4030 /* vec_vminub */
   4031 
   4032 static __inline__ vector unsigned char __ATTRS_o_ai
   4033 vec_vminub(vector unsigned char __a, vector unsigned char __b) {
   4034   return __builtin_altivec_vminub(__a, __b);
   4035 }
   4036 
   4037 static __inline__ vector unsigned char __ATTRS_o_ai
   4038 vec_vminub(vector bool char __a, vector unsigned char __b) {
   4039   return __builtin_altivec_vminub((vector unsigned char)__a, __b);
   4040 }
   4041 
   4042 static __inline__ vector unsigned char __ATTRS_o_ai
   4043 vec_vminub(vector unsigned char __a, vector bool char __b) {
   4044   return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
   4045 }
   4046 
   4047 /* vec_vminsh */
   4048 
   4049 static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector short __a,
   4050                                                        vector short __b) {
   4051   return __builtin_altivec_vminsh(__a, __b);
   4052 }
   4053 
   4054 static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector bool short __a,
   4055                                                        vector short __b) {
   4056   return __builtin_altivec_vminsh((vector short)__a, __b);
   4057 }
   4058 
   4059 static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector short __a,
   4060                                                        vector bool short __b) {
   4061   return __builtin_altivec_vminsh(__a, (vector short)__b);
   4062 }
   4063 
   4064 /* vec_vminuh */
   4065 
   4066 static __inline__ vector unsigned short __ATTRS_o_ai
   4067 vec_vminuh(vector unsigned short __a, vector unsigned short __b) {
   4068   return __builtin_altivec_vminuh(__a, __b);
   4069 }
   4070 
   4071 static __inline__ vector unsigned short __ATTRS_o_ai
   4072 vec_vminuh(vector bool short __a, vector unsigned short __b) {
   4073   return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
   4074 }
   4075 
   4076 static __inline__ vector unsigned short __ATTRS_o_ai
   4077 vec_vminuh(vector unsigned short __a, vector bool short __b) {
   4078   return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
   4079 }
   4080 
   4081 /* vec_vminsw */
   4082 
   4083 static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector int __a,
   4084                                                      vector int __b) {
   4085   return __builtin_altivec_vminsw(__a, __b);
   4086 }
   4087 
   4088 static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector bool int __a,
   4089                                                      vector int __b) {
   4090   return __builtin_altivec_vminsw((vector int)__a, __b);
   4091 }
   4092 
   4093 static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector int __a,
   4094                                                      vector bool int __b) {
   4095   return __builtin_altivec_vminsw(__a, (vector int)__b);
   4096 }
   4097 
   4098 /* vec_vminuw */
   4099 
   4100 static __inline__ vector unsigned int __ATTRS_o_ai
   4101 vec_vminuw(vector unsigned int __a, vector unsigned int __b) {
   4102   return __builtin_altivec_vminuw(__a, __b);
   4103 }
   4104 
   4105 static __inline__ vector unsigned int __ATTRS_o_ai
   4106 vec_vminuw(vector bool int __a, vector unsigned int __b) {
   4107   return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
   4108 }
   4109 
   4110 static __inline__ vector unsigned int __ATTRS_o_ai
   4111 vec_vminuw(vector unsigned int __a, vector bool int __b) {
   4112   return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
   4113 }
   4114 
   4115 /* vec_vminfp */
   4116 
   4117 static __inline__ vector float __attribute__((__always_inline__))
   4118 vec_vminfp(vector float __a, vector float __b) {
   4119 #ifdef __VSX__
   4120   return __builtin_vsx_xvminsp(__a, __b);
   4121 #else
   4122   return __builtin_altivec_vminfp(__a, __b);
   4123 #endif
   4124 }
   4125 
   4126 /* vec_mladd */
   4127 
   4128 #define __builtin_altivec_vmladduhm vec_mladd
   4129 
   4130 static __inline__ vector short __ATTRS_o_ai vec_mladd(vector short __a,
   4131                                                       vector short __b,
   4132                                                       vector short __c) {
   4133   return __a * __b + __c;
   4134 }
   4135 
   4136 static __inline__ vector short __ATTRS_o_ai vec_mladd(
   4137     vector short __a, vector unsigned short __b, vector unsigned short __c) {
   4138   return __a * (vector short)__b + (vector short)__c;
   4139 }
   4140 
   4141 static __inline__ vector short __ATTRS_o_ai vec_mladd(vector unsigned short __a,
   4142                                                       vector short __b,
   4143                                                       vector short __c) {
   4144   return (vector short)__a * __b + __c;
   4145 }
   4146 
   4147 static __inline__ vector unsigned short __ATTRS_o_ai
   4148 vec_mladd(vector unsigned short __a, vector unsigned short __b,
   4149           vector unsigned short __c) {
   4150   return __a * __b + __c;
   4151 }
   4152 
   4153 /* vec_vmladduhm */
   4154 
   4155 static __inline__ vector short __ATTRS_o_ai vec_vmladduhm(vector short __a,
   4156                                                           vector short __b,
   4157                                                           vector short __c) {
   4158   return __a * __b + __c;
   4159 }
   4160 
   4161 static __inline__ vector short __ATTRS_o_ai vec_vmladduhm(
   4162     vector short __a, vector unsigned short __b, vector unsigned short __c) {
   4163   return __a * (vector short)__b + (vector short)__c;
   4164 }
   4165 
   4166 static __inline__ vector short __ATTRS_o_ai
   4167 vec_vmladduhm(vector unsigned short __a, vector short __b, vector short __c) {
   4168   return (vector short)__a * __b + __c;
   4169 }
   4170 
   4171 static __inline__ vector unsigned short __ATTRS_o_ai
   4172 vec_vmladduhm(vector unsigned short __a, vector unsigned short __b,
   4173               vector unsigned short __c) {
   4174   return __a * __b + __c;
   4175 }
   4176 
   4177 /* vec_mradds */
   4178 
   4179 static __inline__ vector short __attribute__((__always_inline__))
   4180 vec_mradds(vector short __a, vector short __b, vector short __c) {
   4181   return __builtin_altivec_vmhraddshs(__a, __b, __c);
   4182 }
   4183 
   4184 /* vec_vmhraddshs */
   4185 
   4186 static __inline__ vector short __attribute__((__always_inline__))
   4187 vec_vmhraddshs(vector short __a, vector short __b, vector short __c) {
   4188   return __builtin_altivec_vmhraddshs(__a, __b, __c);
   4189 }
   4190 
   4191 /* vec_msum */
   4192 
   4193 static __inline__ vector int __ATTRS_o_ai vec_msum(vector signed char __a,
   4194                                                    vector unsigned char __b,
   4195                                                    vector int __c) {
   4196   return __builtin_altivec_vmsummbm(__a, __b, __c);
   4197 }
   4198 
   4199 static __inline__ vector unsigned int __ATTRS_o_ai
   4200 vec_msum(vector unsigned char __a, vector unsigned char __b,
   4201          vector unsigned int __c) {
   4202   return __builtin_altivec_vmsumubm(__a, __b, __c);
   4203 }
   4204 
   4205 static __inline__ vector int __ATTRS_o_ai vec_msum(vector short __a,
   4206                                                    vector short __b,
   4207                                                    vector int __c) {
   4208   return __builtin_altivec_vmsumshm(__a, __b, __c);
   4209 }
   4210 
   4211 static __inline__ vector unsigned int __ATTRS_o_ai
   4212 vec_msum(vector unsigned short __a, vector unsigned short __b,
   4213          vector unsigned int __c) {
   4214   return __builtin_altivec_vmsumuhm(__a, __b, __c);
   4215 }
   4216 
   4217 /* vec_vmsummbm */
   4218 
   4219 static __inline__ vector int __attribute__((__always_inline__))
   4220 vec_vmsummbm(vector signed char __a, vector unsigned char __b, vector int __c) {
   4221   return __builtin_altivec_vmsummbm(__a, __b, __c);
   4222 }
   4223 
   4224 /* vec_vmsumubm */
   4225 
   4226 static __inline__ vector unsigned int __attribute__((__always_inline__))
   4227 vec_vmsumubm(vector unsigned char __a, vector unsigned char __b,
   4228              vector unsigned int __c) {
   4229   return __builtin_altivec_vmsumubm(__a, __b, __c);
   4230 }
   4231 
   4232 /* vec_vmsumshm */
   4233 
   4234 static __inline__ vector int __attribute__((__always_inline__))
   4235 vec_vmsumshm(vector short __a, vector short __b, vector int __c) {
   4236   return __builtin_altivec_vmsumshm(__a, __b, __c);
   4237 }
   4238 
   4239 /* vec_vmsumuhm */
   4240 
   4241 static __inline__ vector unsigned int __attribute__((__always_inline__))
   4242 vec_vmsumuhm(vector unsigned short __a, vector unsigned short __b,
   4243              vector unsigned int __c) {
   4244   return __builtin_altivec_vmsumuhm(__a, __b, __c);
   4245 }
   4246 
   4247 /* vec_msums */
   4248 
   4249 static __inline__ vector int __ATTRS_o_ai vec_msums(vector short __a,
   4250                                                     vector short __b,
   4251                                                     vector int __c) {
   4252   return __builtin_altivec_vmsumshs(__a, __b, __c);
   4253 }
   4254 
   4255 static __inline__ vector unsigned int __ATTRS_o_ai
   4256 vec_msums(vector unsigned short __a, vector unsigned short __b,
   4257           vector unsigned int __c) {
   4258   return __builtin_altivec_vmsumuhs(__a, __b, __c);
   4259 }
   4260 
   4261 /* vec_vmsumshs */
   4262 
   4263 static __inline__ vector int __attribute__((__always_inline__))
   4264 vec_vmsumshs(vector short __a, vector short __b, vector int __c) {
   4265   return __builtin_altivec_vmsumshs(__a, __b, __c);
   4266 }
   4267 
   4268 /* vec_vmsumuhs */
   4269 
   4270 static __inline__ vector unsigned int __attribute__((__always_inline__))
   4271 vec_vmsumuhs(vector unsigned short __a, vector unsigned short __b,
   4272              vector unsigned int __c) {
   4273   return __builtin_altivec_vmsumuhs(__a, __b, __c);
   4274 }
   4275 
   4276 /* vec_mtvscr */
   4277 
   4278 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector signed char __a) {
   4279   __builtin_altivec_mtvscr((vector int)__a);
   4280 }
   4281 
   4282 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned char __a) {
   4283   __builtin_altivec_mtvscr((vector int)__a);
   4284 }
   4285 
   4286 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool char __a) {
   4287   __builtin_altivec_mtvscr((vector int)__a);
   4288 }
   4289 
   4290 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector short __a) {
   4291   __builtin_altivec_mtvscr((vector int)__a);
   4292 }
   4293 
   4294 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned short __a) {
   4295   __builtin_altivec_mtvscr((vector int)__a);
   4296 }
   4297 
   4298 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool short __a) {
   4299   __builtin_altivec_mtvscr((vector int)__a);
   4300 }
   4301 
   4302 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector pixel __a) {
   4303   __builtin_altivec_mtvscr((vector int)__a);
   4304 }
   4305 
   4306 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector int __a) {
   4307   __builtin_altivec_mtvscr((vector int)__a);
   4308 }
   4309 
   4310 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned int __a) {
   4311   __builtin_altivec_mtvscr((vector int)__a);
   4312 }
   4313 
   4314 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool int __a) {
   4315   __builtin_altivec_mtvscr((vector int)__a);
   4316 }
   4317 
   4318 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector float __a) {
   4319   __builtin_altivec_mtvscr((vector int)__a);
   4320 }
   4321 
   4322 /* vec_mul */
   4323 
   4324 /* Integer vector multiplication will involve multiplication of the odd/even
   4325    elements separately, then truncating the results and moving to the
   4326    result vector.
   4327 */
   4328 static __inline__ vector signed char __ATTRS_o_ai
   4329 vec_mul(vector signed char __a, vector signed char __b) {
   4330   return __a * __b;
   4331 }
   4332 
   4333 static __inline__ vector unsigned char __ATTRS_o_ai
   4334 vec_mul(vector unsigned char __a, vector unsigned char __b) {
   4335   return __a * __b;
   4336 }
   4337 
   4338 static __inline__ vector signed short __ATTRS_o_ai
   4339 vec_mul(vector signed short __a, vector signed short __b) {
   4340   return __a * __b;
   4341 }
   4342 
   4343 static __inline__ vector unsigned short __ATTRS_o_ai
   4344 vec_mul(vector unsigned short __a, vector unsigned short __b) {
   4345   return __a * __b;
   4346 }
   4347 
   4348 static __inline__ vector signed int __ATTRS_o_ai
   4349 vec_mul(vector signed int __a, vector signed int __b) {
   4350   return __a * __b;
   4351 }
   4352 
   4353 static __inline__ vector unsigned int __ATTRS_o_ai
   4354 vec_mul(vector unsigned int __a, vector unsigned int __b) {
   4355   return __a * __b;
   4356 }
   4357 
   4358 #ifdef __VSX__
   4359 static __inline__ vector signed long long __ATTRS_o_ai
   4360 vec_mul(vector signed long long __a, vector signed long long __b) {
   4361   return __a * __b;
   4362 }
   4363 
   4364 static __inline__ vector unsigned long long __ATTRS_o_ai
   4365 vec_mul(vector unsigned long long __a, vector unsigned long long __b) {
   4366   return __a * __b;
   4367 }
   4368 #endif
   4369 
   4370 static __inline__ vector float __ATTRS_o_ai vec_mul(vector float __a,
   4371                                                     vector float __b) {
   4372   return __a * __b;
   4373 }
   4374 
   4375 #ifdef __VSX__
   4376 static __inline__ vector double __ATTRS_o_ai vec_mul(vector double __a,
   4377                                                      vector double __b) {
   4378   return __a * __b;
   4379 }
   4380 #endif
   4381 
   4382 /* The vmulos* and vmules* instructions have a big endian bias, so
   4383    we must reverse the meaning of "even" and "odd" for little endian.  */
   4384 
   4385 /* vec_mule */
   4386 
   4387 static __inline__ vector short __ATTRS_o_ai vec_mule(vector signed char __a,
   4388                                                      vector signed char __b) {
   4389 #ifdef __LITTLE_ENDIAN__
   4390   return __builtin_altivec_vmulosb(__a, __b);
   4391 #else
   4392   return __builtin_altivec_vmulesb(__a, __b);
   4393 #endif
   4394 }
   4395 
   4396 static __inline__ vector unsigned short __ATTRS_o_ai
   4397 vec_mule(vector unsigned char __a, vector unsigned char __b) {
   4398 #ifdef __LITTLE_ENDIAN__
   4399   return __builtin_altivec_vmuloub(__a, __b);
   4400 #else
   4401   return __builtin_altivec_vmuleub(__a, __b);
   4402 #endif
   4403 }
   4404 
   4405 static __inline__ vector int __ATTRS_o_ai vec_mule(vector short __a,
   4406                                                    vector short __b) {
   4407 #ifdef __LITTLE_ENDIAN__
   4408   return __builtin_altivec_vmulosh(__a, __b);
   4409 #else
   4410   return __builtin_altivec_vmulesh(__a, __b);
   4411 #endif
   4412 }
   4413 
   4414 static __inline__ vector unsigned int __ATTRS_o_ai
   4415 vec_mule(vector unsigned short __a, vector unsigned short __b) {
   4416 #ifdef __LITTLE_ENDIAN__
   4417   return __builtin_altivec_vmulouh(__a, __b);
   4418 #else
   4419   return __builtin_altivec_vmuleuh(__a, __b);
   4420 #endif
   4421 }
   4422 
   4423 #ifdef __POWER8_VECTOR__
   4424 static __inline__ vector signed long long __ATTRS_o_ai
   4425 vec_mule(vector signed int __a, vector signed int __b) {
   4426 #ifdef __LITTLE_ENDIAN__
   4427   return __builtin_altivec_vmulosw(__a, __b);
   4428 #else
   4429   return __builtin_altivec_vmulesw(__a, __b);
   4430 #endif
   4431 }
   4432 
   4433 static __inline__ vector unsigned long long __ATTRS_o_ai
   4434 vec_mule(vector unsigned int __a, vector unsigned int __b) {
   4435 #ifdef __LITTLE_ENDIAN__
   4436   return __builtin_altivec_vmulouw(__a, __b);
   4437 #else
   4438   return __builtin_altivec_vmuleuw(__a, __b);
   4439 #endif
   4440 }
   4441 #endif
   4442 
   4443 /* vec_vmulesb */
   4444 
   4445 static __inline__ vector short __attribute__((__always_inline__))
   4446 vec_vmulesb(vector signed char __a, vector signed char __b) {
   4447 #ifdef __LITTLE_ENDIAN__
   4448   return __builtin_altivec_vmulosb(__a, __b);
   4449 #else
   4450   return __builtin_altivec_vmulesb(__a, __b);
   4451 #endif
   4452 }
   4453 
   4454 /* vec_vmuleub */
   4455 
   4456 static __inline__ vector unsigned short __attribute__((__always_inline__))
   4457 vec_vmuleub(vector unsigned char __a, vector unsigned char __b) {
   4458 #ifdef __LITTLE_ENDIAN__
   4459   return __builtin_altivec_vmuloub(__a, __b);
   4460 #else
   4461   return __builtin_altivec_vmuleub(__a, __b);
   4462 #endif
   4463 }
   4464 
   4465 /* vec_vmulesh */
   4466 
   4467 static __inline__ vector int __attribute__((__always_inline__))
   4468 vec_vmulesh(vector short __a, vector short __b) {
   4469 #ifdef __LITTLE_ENDIAN__
   4470   return __builtin_altivec_vmulosh(__a, __b);
   4471 #else
   4472   return __builtin_altivec_vmulesh(__a, __b);
   4473 #endif
   4474 }
   4475 
   4476 /* vec_vmuleuh */
   4477 
   4478 static __inline__ vector unsigned int __attribute__((__always_inline__))
   4479 vec_vmuleuh(vector unsigned short __a, vector unsigned short __b) {
   4480 #ifdef __LITTLE_ENDIAN__
   4481   return __builtin_altivec_vmulouh(__a, __b);
   4482 #else
   4483   return __builtin_altivec_vmuleuh(__a, __b);
   4484 #endif
   4485 }
   4486 
   4487 /* vec_mulo */
   4488 
   4489 static __inline__ vector short __ATTRS_o_ai vec_mulo(vector signed char __a,
   4490                                                      vector signed char __b) {
   4491 #ifdef __LITTLE_ENDIAN__
   4492   return __builtin_altivec_vmulesb(__a, __b);
   4493 #else
   4494   return __builtin_altivec_vmulosb(__a, __b);
   4495 #endif
   4496 }
   4497 
   4498 static __inline__ vector unsigned short __ATTRS_o_ai
   4499 vec_mulo(vector unsigned char __a, vector unsigned char __b) {
   4500 #ifdef __LITTLE_ENDIAN__
   4501   return __builtin_altivec_vmuleub(__a, __b);
   4502 #else
   4503   return __builtin_altivec_vmuloub(__a, __b);
   4504 #endif
   4505 }
   4506 
   4507 static __inline__ vector int __ATTRS_o_ai vec_mulo(vector short __a,
   4508                                                    vector short __b) {
   4509 #ifdef __LITTLE_ENDIAN__
   4510   return __builtin_altivec_vmulesh(__a, __b);
   4511 #else
   4512   return __builtin_altivec_vmulosh(__a, __b);
   4513 #endif
   4514 }
   4515 
   4516 static __inline__ vector unsigned int __ATTRS_o_ai
   4517 vec_mulo(vector unsigned short __a, vector unsigned short __b) {
   4518 #ifdef __LITTLE_ENDIAN__
   4519   return __builtin_altivec_vmuleuh(__a, __b);
   4520 #else
   4521   return __builtin_altivec_vmulouh(__a, __b);
   4522 #endif
   4523 }
   4524 
   4525 #ifdef __POWER8_VECTOR__
   4526 static __inline__ vector signed long long __ATTRS_o_ai
   4527 vec_mulo(vector signed int __a, vector signed int __b) {
   4528 #ifdef __LITTLE_ENDIAN__
   4529   return __builtin_altivec_vmulesw(__a, __b);
   4530 #else
   4531   return __builtin_altivec_vmulosw(__a, __b);
   4532 #endif
   4533 }
   4534 
   4535 static __inline__ vector unsigned long long __ATTRS_o_ai
   4536 vec_mulo(vector unsigned int __a, vector unsigned int __b) {
   4537 #ifdef __LITTLE_ENDIAN__
   4538   return __builtin_altivec_vmuleuw(__a, __b);
   4539 #else
   4540   return __builtin_altivec_vmulouw(__a, __b);
   4541 #endif
   4542 }
   4543 #endif
   4544 
   4545 /* vec_vmulosb */
   4546 
   4547 static __inline__ vector short __attribute__((__always_inline__))
   4548 vec_vmulosb(vector signed char __a, vector signed char __b) {
   4549 #ifdef __LITTLE_ENDIAN__
   4550   return __builtin_altivec_vmulesb(__a, __b);
   4551 #else
   4552   return __builtin_altivec_vmulosb(__a, __b);
   4553 #endif
   4554 }
   4555 
   4556 /* vec_vmuloub */
   4557 
   4558 static __inline__ vector unsigned short __attribute__((__always_inline__))
   4559 vec_vmuloub(vector unsigned char __a, vector unsigned char __b) {
   4560 #ifdef __LITTLE_ENDIAN__
   4561   return __builtin_altivec_vmuleub(__a, __b);
   4562 #else
   4563   return __builtin_altivec_vmuloub(__a, __b);
   4564 #endif
   4565 }
   4566 
   4567 /* vec_vmulosh */
   4568 
   4569 static __inline__ vector int __attribute__((__always_inline__))
   4570 vec_vmulosh(vector short __a, vector short __b) {
   4571 #ifdef __LITTLE_ENDIAN__
   4572   return __builtin_altivec_vmulesh(__a, __b);
   4573 #else
   4574   return __builtin_altivec_vmulosh(__a, __b);
   4575 #endif
   4576 }
   4577 
   4578 /* vec_vmulouh */
   4579 
   4580 static __inline__ vector unsigned int __attribute__((__always_inline__))
   4581 vec_vmulouh(vector unsigned short __a, vector unsigned short __b) {
   4582 #ifdef __LITTLE_ENDIAN__
   4583   return __builtin_altivec_vmuleuh(__a, __b);
   4584 #else
   4585   return __builtin_altivec_vmulouh(__a, __b);
   4586 #endif
   4587 }
   4588 
   4589 /*  vec_nand */
   4590 
   4591 #ifdef __POWER8_VECTOR__
   4592 static __inline__ vector signed char __ATTRS_o_ai
   4593 vec_nand(vector signed char __a, vector signed char __b) {
   4594   return ~(__a & __b);
   4595 }
   4596 
   4597 static __inline__ vector signed char __ATTRS_o_ai
   4598 vec_nand(vector signed char __a, vector bool char __b) {
   4599   return ~(__a & __b);
   4600 }
   4601 
   4602 static __inline__ vector signed char __ATTRS_o_ai
   4603 vec_nand(vector bool char __a, vector signed char __b) {
   4604   return ~(__a & __b);
   4605 }
   4606 
   4607 static __inline__ vector unsigned char __ATTRS_o_ai
   4608 vec_nand(vector unsigned char __a, vector unsigned char __b) {
   4609   return ~(__a & __b);
   4610 }
   4611 
   4612 static __inline__ vector unsigned char __ATTRS_o_ai
   4613 vec_nand(vector unsigned char __a, vector bool char __b) {
   4614   return ~(__a & __b);
   4615 }
   4616 
   4617 static __inline__ vector unsigned char __ATTRS_o_ai
   4618 vec_nand(vector bool char __a, vector unsigned char __b) {
   4619   return ~(__a & __b);
   4620 }
   4621 
   4622 static __inline__ vector bool char __ATTRS_o_ai vec_nand(vector bool char __a,
   4623                                                          vector bool char __b) {
   4624   return ~(__a & __b);
   4625 }
   4626 
   4627 static __inline__ vector signed short __ATTRS_o_ai
   4628 vec_nand(vector signed short __a, vector signed short __b) {
   4629   return ~(__a & __b);
   4630 }
   4631 
   4632 static __inline__ vector signed short __ATTRS_o_ai
   4633 vec_nand(vector signed short __a, vector bool short __b) {
   4634   return ~(__a & __b);
   4635 }
   4636 
   4637 static __inline__ vector signed short __ATTRS_o_ai
   4638 vec_nand(vector bool short __a, vector signed short __b) {
   4639   return ~(__a & __b);
   4640 }
   4641 
   4642 static __inline__ vector unsigned short __ATTRS_o_ai
   4643 vec_nand(vector unsigned short __a, vector unsigned short __b) {
   4644   return ~(__a & __b);
   4645 }
   4646 
   4647 static __inline__ vector unsigned short __ATTRS_o_ai
   4648 vec_nand(vector unsigned short __a, vector bool short __b) {
   4649   return ~(__a & __b);
   4650 }
   4651 
   4652 static __inline__ vector bool short __ATTRS_o_ai
   4653 vec_nand(vector bool short __a, vector bool short __b) {
   4654   return ~(__a & __b);
   4655 }
   4656 
   4657 static __inline__ vector signed int __ATTRS_o_ai
   4658 vec_nand(vector signed int __a, vector signed int __b) {
   4659   return ~(__a & __b);
   4660 }
   4661 
   4662 static __inline__ vector signed int __ATTRS_o_ai vec_nand(vector signed int __a,
   4663                                                           vector bool int __b) {
   4664   return ~(__a & __b);
   4665 }
   4666 
   4667 static __inline__ vector signed int __ATTRS_o_ai
   4668 vec_nand(vector bool int __a, vector signed int __b) {
   4669   return ~(__a & __b);
   4670 }
   4671 
   4672 static __inline__ vector unsigned int __ATTRS_o_ai
   4673 vec_nand(vector unsigned int __a, vector unsigned int __b) {
   4674   return ~(__a & __b);
   4675 }
   4676 
   4677 static __inline__ vector unsigned int __ATTRS_o_ai
   4678 vec_nand(vector unsigned int __a, vector bool int __b) {
   4679   return ~(__a & __b);
   4680 }
   4681 
   4682 static __inline__ vector unsigned int __ATTRS_o_ai
   4683 vec_nand(vector bool int __a, vector unsigned int __b) {
   4684   return ~(__a & __b);
   4685 }
   4686 
   4687 static __inline__ vector bool int __ATTRS_o_ai vec_nand(vector bool int __a,
   4688                                                         vector bool int __b) {
   4689   return ~(__a & __b);
   4690 }
   4691 
   4692 static __inline__ vector signed long long __ATTRS_o_ai
   4693 vec_nand(vector signed long long __a, vector signed long long __b) {
   4694   return ~(__a & __b);
   4695 }
   4696 
   4697 static __inline__ vector signed long long __ATTRS_o_ai
   4698 vec_nand(vector signed long long __a, vector bool long long __b) {
   4699   return ~(__a & __b);
   4700 }
   4701 
   4702 static __inline__ vector signed long long __ATTRS_o_ai
   4703 vec_nand(vector bool long long __a, vector signed long long __b) {
   4704   return ~(__a & __b);
   4705 }
   4706 
   4707 static __inline__ vector unsigned long long __ATTRS_o_ai
   4708 vec_nand(vector unsigned long long __a, vector unsigned long long __b) {
   4709   return ~(__a & __b);
   4710 }
   4711 
   4712 static __inline__ vector unsigned long long __ATTRS_o_ai
   4713 vec_nand(vector unsigned long long __a, vector bool long long __b) {
   4714   return ~(__a & __b);
   4715 }
   4716 
   4717 static __inline__ vector unsigned long long __ATTRS_o_ai
   4718 vec_nand(vector bool long long __a, vector unsigned long long __b) {
   4719   return ~(__a & __b);
   4720 }
   4721 
   4722 static __inline__ vector bool long long __ATTRS_o_ai
   4723 vec_nand(vector bool long long __a, vector bool long long __b) {
   4724   return ~(__a & __b);
   4725 }
   4726 
   4727 #endif
   4728 
   4729 /* vec_nmadd */
   4730 
   4731 #ifdef __VSX__
   4732 static __inline__ vector float __ATTRS_o_ai vec_nmadd(vector float __a,
   4733                                                       vector float __b,
   4734                                                       vector float __c) {
   4735   return __builtin_vsx_xvnmaddasp(__a, __b, __c);
   4736 }
   4737 
   4738 static __inline__ vector double __ATTRS_o_ai vec_nmadd(vector double __a,
   4739                                                        vector double __b,
   4740                                                        vector double __c) {
   4741   return __builtin_vsx_xvnmaddadp(__a, __b, __c);
   4742 }
   4743 #endif
   4744 
   4745 /* vec_nmsub */
   4746 
   4747 static __inline__ vector float __ATTRS_o_ai vec_nmsub(vector float __a,
   4748                                                       vector float __b,
   4749                                                       vector float __c) {
   4750 #ifdef __VSX__
   4751   return __builtin_vsx_xvnmsubasp(__a, __b, __c);
   4752 #else
   4753   return __builtin_altivec_vnmsubfp(__a, __b, __c);
   4754 #endif
   4755 }
   4756 
   4757 #ifdef __VSX__
   4758 static __inline__ vector double __ATTRS_o_ai vec_nmsub(vector double __a,
   4759                                                        vector double __b,
   4760                                                        vector double __c) {
   4761   return __builtin_vsx_xvnmsubadp(__a, __b, __c);
   4762 }
   4763 #endif
   4764 
   4765 /* vec_vnmsubfp */
   4766 
   4767 static __inline__ vector float __attribute__((__always_inline__))
   4768 vec_vnmsubfp(vector float __a, vector float __b, vector float __c) {
   4769   return __builtin_altivec_vnmsubfp(__a, __b, __c);
   4770 }
   4771 
   4772 /* vec_nor */
   4773 
   4774 #define __builtin_altivec_vnor vec_nor
   4775 
   4776 static __inline__ vector signed char __ATTRS_o_ai
   4777 vec_nor(vector signed char __a, vector signed char __b) {
   4778   return ~(__a | __b);
   4779 }
   4780 
   4781 static __inline__ vector unsigned char __ATTRS_o_ai
   4782 vec_nor(vector unsigned char __a, vector unsigned char __b) {
   4783   return ~(__a | __b);
   4784 }
   4785 
   4786 static __inline__ vector bool char __ATTRS_o_ai vec_nor(vector bool char __a,
   4787                                                         vector bool char __b) {
   4788   return ~(__a | __b);
   4789 }
   4790 
   4791 static __inline__ vector short __ATTRS_o_ai vec_nor(vector short __a,
   4792                                                     vector short __b) {
   4793   return ~(__a | __b);
   4794 }
   4795 
   4796 static __inline__ vector unsigned short __ATTRS_o_ai
   4797 vec_nor(vector unsigned short __a, vector unsigned short __b) {
   4798   return ~(__a | __b);
   4799 }
   4800 
   4801 static __inline__ vector bool short __ATTRS_o_ai
   4802 vec_nor(vector bool short __a, vector bool short __b) {
   4803   return ~(__a | __b);
   4804 }
   4805 
   4806 static __inline__ vector int __ATTRS_o_ai vec_nor(vector int __a,
   4807                                                   vector int __b) {
   4808   return ~(__a | __b);
   4809 }
   4810 
   4811 static __inline__ vector unsigned int __ATTRS_o_ai
   4812 vec_nor(vector unsigned int __a, vector unsigned int __b) {
   4813   return ~(__a | __b);
   4814 }
   4815 
   4816 static __inline__ vector bool int __ATTRS_o_ai vec_nor(vector bool int __a,
   4817                                                        vector bool int __b) {
   4818   return ~(__a | __b);
   4819 }
   4820 
   4821 static __inline__ vector float __ATTRS_o_ai vec_nor(vector float __a,
   4822                                                     vector float __b) {
   4823   vector unsigned int __res =
   4824       ~((vector unsigned int)__a | (vector unsigned int)__b);
   4825   return (vector float)__res;
   4826 }
   4827 
   4828 #ifdef __VSX__
   4829 static __inline__ vector double __ATTRS_o_ai vec_nor(vector double __a,
   4830                                                      vector double __b) {
   4831   vector unsigned long long __res =
   4832       ~((vector unsigned long long)__a | (vector unsigned long long)__b);
   4833   return (vector double)__res;
   4834 }
   4835 #endif
   4836 
   4837 /* vec_vnor */
   4838 
   4839 static __inline__ vector signed char __ATTRS_o_ai
   4840 vec_vnor(vector signed char __a, vector signed char __b) {
   4841   return ~(__a | __b);
   4842 }
   4843 
   4844 static __inline__ vector unsigned char __ATTRS_o_ai
   4845 vec_vnor(vector unsigned char __a, vector unsigned char __b) {
   4846   return ~(__a | __b);
   4847 }
   4848 
   4849 static __inline__ vector bool char __ATTRS_o_ai vec_vnor(vector bool char __a,
   4850                                                          vector bool char __b) {
   4851   return ~(__a | __b);
   4852 }
   4853 
   4854 static __inline__ vector short __ATTRS_o_ai vec_vnor(vector short __a,
   4855                                                      vector short __b) {
   4856   return ~(__a | __b);
   4857 }
   4858 
   4859 static __inline__ vector unsigned short __ATTRS_o_ai
   4860 vec_vnor(vector unsigned short __a, vector unsigned short __b) {
   4861   return ~(__a | __b);
   4862 }
   4863 
   4864 static __inline__ vector bool short __ATTRS_o_ai
   4865 vec_vnor(vector bool short __a, vector bool short __b) {
   4866   return ~(__a | __b);
   4867 }
   4868 
   4869 static __inline__ vector int __ATTRS_o_ai vec_vnor(vector int __a,
   4870                                                    vector int __b) {
   4871   return ~(__a | __b);
   4872 }
   4873 
   4874 static __inline__ vector unsigned int __ATTRS_o_ai
   4875 vec_vnor(vector unsigned int __a, vector unsigned int __b) {
   4876   return ~(__a | __b);
   4877 }
   4878 
   4879 static __inline__ vector bool int __ATTRS_o_ai vec_vnor(vector bool int __a,
   4880                                                         vector bool int __b) {
   4881   return ~(__a | __b);
   4882 }
   4883 
   4884 static __inline__ vector float __ATTRS_o_ai vec_vnor(vector float __a,
   4885                                                      vector float __b) {
   4886   vector unsigned int __res =
   4887       ~((vector unsigned int)__a | (vector unsigned int)__b);
   4888   return (vector float)__res;
   4889 }
   4890 
   4891 #ifdef __VSX__
   4892 static __inline__ vector signed long long __ATTRS_o_ai
   4893 vec_nor(vector signed long long __a, vector signed long long __b) {
   4894   return ~(__a | __b);
   4895 }
   4896 
   4897 static __inline__ vector unsigned long long __ATTRS_o_ai
   4898 vec_nor(vector unsigned long long __a, vector unsigned long long __b) {
   4899   return ~(__a | __b);
   4900 }
   4901 
   4902 static __inline__ vector bool long long __ATTRS_o_ai
   4903 vec_nor(vector bool long long __a, vector bool long long __b) {
   4904   return ~(__a | __b);
   4905 }
   4906 #endif
   4907 
   4908 /* vec_or */
   4909 
   4910 #define __builtin_altivec_vor vec_or
   4911 
   4912 static __inline__ vector signed char __ATTRS_o_ai
   4913 vec_or(vector signed char __a, vector signed char __b) {
   4914   return __a | __b;
   4915 }
   4916 
   4917 static __inline__ vector signed char __ATTRS_o_ai
   4918 vec_or(vector bool char __a, vector signed char __b) {
   4919   return (vector signed char)__a | __b;
   4920 }
   4921 
   4922 static __inline__ vector signed char __ATTRS_o_ai vec_or(vector signed char __a,
   4923                                                          vector bool char __b) {
   4924   return __a | (vector signed char)__b;
   4925 }
   4926 
   4927 static __inline__ vector unsigned char __ATTRS_o_ai
   4928 vec_or(vector unsigned char __a, vector unsigned char __b) {
   4929   return __a | __b;
   4930 }
   4931 
   4932 static __inline__ vector unsigned char __ATTRS_o_ai
   4933 vec_or(vector bool char __a, vector unsigned char __b) {
   4934   return (vector unsigned char)__a | __b;
   4935 }
   4936 
   4937 static __inline__ vector unsigned char __ATTRS_o_ai
   4938 vec_or(vector unsigned char __a, vector bool char __b) {
   4939   return __a | (vector unsigned char)__b;
   4940 }
   4941 
   4942 static __inline__ vector bool char __ATTRS_o_ai vec_or(vector bool char __a,
   4943                                                        vector bool char __b) {
   4944   return __a | __b;
   4945 }
   4946 
   4947 static __inline__ vector short __ATTRS_o_ai vec_or(vector short __a,
   4948                                                    vector short __b) {
   4949   return __a | __b;
   4950 }
   4951 
   4952 static __inline__ vector short __ATTRS_o_ai vec_or(vector bool short __a,
   4953                                                    vector short __b) {
   4954   return (vector short)__a | __b;
   4955 }
   4956 
   4957 static __inline__ vector short __ATTRS_o_ai vec_or(vector short __a,
   4958                                                    vector bool short __b) {
   4959   return __a | (vector short)__b;
   4960 }
   4961 
   4962 static __inline__ vector unsigned short __ATTRS_o_ai
   4963 vec_or(vector unsigned short __a, vector unsigned short __b) {
   4964   return __a | __b;
   4965 }
   4966 
   4967 static __inline__ vector unsigned short __ATTRS_o_ai
   4968 vec_or(vector bool short __a, vector unsigned short __b) {
   4969   return (vector unsigned short)__a | __b;
   4970 }
   4971 
   4972 static __inline__ vector unsigned short __ATTRS_o_ai
   4973 vec_or(vector unsigned short __a, vector bool short __b) {
   4974   return __a | (vector unsigned short)__b;
   4975 }
   4976 
   4977 static __inline__ vector bool short __ATTRS_o_ai vec_or(vector bool short __a,
   4978                                                         vector bool short __b) {
   4979   return __a | __b;
   4980 }
   4981 
   4982 static __inline__ vector int __ATTRS_o_ai vec_or(vector int __a,
   4983                                                  vector int __b) {
   4984   return __a | __b;
   4985 }
   4986 
   4987 static __inline__ vector int __ATTRS_o_ai vec_or(vector bool int __a,
   4988                                                  vector int __b) {
   4989   return (vector int)__a | __b;
   4990 }
   4991 
   4992 static __inline__ vector int __ATTRS_o_ai vec_or(vector int __a,
   4993                                                  vector bool int __b) {
   4994   return __a | (vector int)__b;
   4995 }
   4996 
   4997 static __inline__ vector unsigned int __ATTRS_o_ai
   4998 vec_or(vector unsigned int __a, vector unsigned int __b) {
   4999   return __a | __b;
   5000 }
   5001 
   5002 static __inline__ vector unsigned int __ATTRS_o_ai
   5003 vec_or(vector bool int __a, vector unsigned int __b) {
   5004   return (vector unsigned int)__a | __b;
   5005 }
   5006 
   5007 static __inline__ vector unsigned int __ATTRS_o_ai
   5008 vec_or(vector unsigned int __a, vector bool int __b) {
   5009   return __a | (vector unsigned int)__b;
   5010 }
   5011 
   5012 static __inline__ vector bool int __ATTRS_o_ai vec_or(vector bool int __a,
   5013                                                       vector bool int __b) {
   5014   return __a | __b;
   5015 }
   5016 
   5017 static __inline__ vector float __ATTRS_o_ai vec_or(vector float __a,
   5018                                                    vector float __b) {
   5019   vector unsigned int __res =
   5020       (vector unsigned int)__a | (vector unsigned int)__b;
   5021   return (vector float)__res;
   5022 }
   5023 
   5024 static __inline__ vector float __ATTRS_o_ai vec_or(vector bool int __a,
   5025                                                    vector float __b) {
   5026   vector unsigned int __res =
   5027       (vector unsigned int)__a | (vector unsigned int)__b;
   5028   return (vector float)__res;
   5029 }
   5030 
   5031 static __inline__ vector float __ATTRS_o_ai vec_or(vector float __a,
   5032                                                    vector bool int __b) {
   5033   vector unsigned int __res =
   5034       (vector unsigned int)__a | (vector unsigned int)__b;
   5035   return (vector float)__res;
   5036 }
   5037 
   5038 #ifdef __VSX__
   5039 static __inline__ vector double __ATTRS_o_ai vec_or(vector bool long long __a,
   5040                                                     vector double __b) {
   5041   return (vector unsigned long long)__a | (vector unsigned long long)__b;
   5042 }
   5043 
   5044 static __inline__ vector double __ATTRS_o_ai vec_or(vector double __a,
   5045                                                     vector bool long long __b) {
   5046   return (vector unsigned long long)__a | (vector unsigned long long)__b;
   5047 }
   5048 
   5049 static __inline__ vector double __ATTRS_o_ai vec_or(vector double __a,
   5050                                                     vector double __b) {
   5051   vector unsigned long long __res =
   5052       (vector unsigned long long)__a | (vector unsigned long long)__b;
   5053   return (vector double)__res;
   5054 }
   5055 
   5056 static __inline__ vector signed long long __ATTRS_o_ai
   5057 vec_or(vector signed long long __a, vector signed long long __b) {
   5058   return __a | __b;
   5059 }
   5060 
   5061 static __inline__ vector signed long long __ATTRS_o_ai
   5062 vec_or(vector bool long long __a, vector signed long long __b) {
   5063   return (vector signed long long)__a | __b;
   5064 }
   5065 
   5066 static __inline__ vector signed long long __ATTRS_o_ai
   5067 vec_or(vector signed long long __a, vector bool long long __b) {
   5068   return __a | (vector signed long long)__b;
   5069 }
   5070 
   5071 static __inline__ vector unsigned long long __ATTRS_o_ai
   5072 vec_or(vector unsigned long long __a, vector unsigned long long __b) {
   5073   return __a | __b;
   5074 }
   5075 
   5076 static __inline__ vector unsigned long long __ATTRS_o_ai
   5077 vec_or(vector bool long long __a, vector unsigned long long __b) {
   5078   return (vector unsigned long long)__a | __b;
   5079 }
   5080 
   5081 static __inline__ vector unsigned long long __ATTRS_o_ai
   5082 vec_or(vector unsigned long long __a, vector bool long long __b) {
   5083   return __a | (vector unsigned long long)__b;
   5084 }
   5085 
   5086 static __inline__ vector bool long long __ATTRS_o_ai
   5087 vec_or(vector bool long long __a, vector bool long long __b) {
   5088   return __a | __b;
   5089 }
   5090 #endif
   5091 
   5092 #ifdef __POWER8_VECTOR__
   5093 static __inline__ vector signed char __ATTRS_o_ai
   5094 vec_orc(vector signed char __a, vector signed char __b) {
   5095   return __a | ~__b;
   5096 }
   5097 
   5098 static __inline__ vector signed char __ATTRS_o_ai
   5099 vec_orc(vector signed char __a, vector bool char __b) {
   5100   return __a | ~__b;
   5101 }
   5102 
   5103 static __inline__ vector signed char __ATTRS_o_ai
   5104 vec_orc(vector bool char __a, vector signed char __b) {
   5105   return __a | ~__b;
   5106 }
   5107 
   5108 static __inline__ vector unsigned char __ATTRS_o_ai
   5109 vec_orc(vector unsigned char __a, vector unsigned char __b) {
   5110   return __a | ~__b;
   5111 }
   5112 
   5113 static __inline__ vector unsigned char __ATTRS_o_ai
   5114 vec_orc(vector unsigned char __a, vector bool char __b) {
   5115   return __a | ~__b;
   5116 }
   5117 
   5118 static __inline__ vector unsigned char __ATTRS_o_ai
   5119 vec_orc(vector bool char __a, vector unsigned char __b) {
   5120   return __a | ~__b;
   5121 }
   5122 
   5123 static __inline__ vector bool char __ATTRS_o_ai vec_orc(vector bool char __a,
   5124                                                         vector bool char __b) {
   5125   return __a | ~__b;
   5126 }
   5127 
   5128 static __inline__ vector signed short __ATTRS_o_ai
   5129 vec_orc(vector signed short __a, vector signed short __b) {
   5130   return __a | ~__b;
   5131 }
   5132 
   5133 static __inline__ vector signed short __ATTRS_o_ai
   5134 vec_orc(vector signed short __a, vector bool short __b) {
   5135   return __a | ~__b;
   5136 }
   5137 
   5138 static __inline__ vector signed short __ATTRS_o_ai
   5139 vec_orc(vector bool short __a, vector signed short __b) {
   5140   return __a | ~__b;
   5141 }
   5142 
   5143 static __inline__ vector unsigned short __ATTRS_o_ai
   5144 vec_orc(vector unsigned short __a, vector unsigned short __b) {
   5145   return __a | ~__b;
   5146 }
   5147 
   5148 static __inline__ vector unsigned short __ATTRS_o_ai
   5149 vec_orc(vector unsigned short __a, vector bool short __b) {
   5150   return __a | ~__b;
   5151 }
   5152 
   5153 static __inline__ vector unsigned short __ATTRS_o_ai
   5154 vec_orc(vector bool short __a, vector unsigned short __b) {
   5155   return __a | ~__b;
   5156 }
   5157 
   5158 static __inline__ vector bool short __ATTRS_o_ai
   5159 vec_orc(vector bool short __a, vector bool short __b) {
   5160   return __a | ~__b;
   5161 }
   5162 
   5163 static __inline__ vector signed int __ATTRS_o_ai
   5164 vec_orc(vector signed int __a, vector signed int __b) {
   5165   return __a | ~__b;
   5166 }
   5167 
   5168 static __inline__ vector signed int __ATTRS_o_ai vec_orc(vector signed int __a,
   5169                                                          vector bool int __b) {
   5170   return __a | ~__b;
   5171 }
   5172 
   5173 static __inline__ vector signed int __ATTRS_o_ai
   5174 vec_orc(vector bool int __a, vector signed int __b) {
   5175   return __a | ~__b;
   5176 }
   5177 
   5178 static __inline__ vector unsigned int __ATTRS_o_ai
   5179 vec_orc(vector unsigned int __a, vector unsigned int __b) {
   5180   return __a | ~__b;
   5181 }
   5182 
   5183 static __inline__ vector unsigned int __ATTRS_o_ai
   5184 vec_orc(vector unsigned int __a, vector bool int __b) {
   5185   return __a | ~__b;
   5186 }
   5187 
   5188 static __inline__ vector unsigned int __ATTRS_o_ai
   5189 vec_orc(vector bool int __a, vector unsigned int __b) {
   5190   return __a | ~__b;
   5191 }
   5192 
   5193 static __inline__ vector bool int __ATTRS_o_ai vec_orc(vector bool int __a,
   5194                                                        vector bool int __b) {
   5195   return __a | ~__b;
   5196 }
   5197 
   5198 static __inline__ vector signed long long __ATTRS_o_ai
   5199 vec_orc(vector signed long long __a, vector signed long long __b) {
   5200   return __a | ~__b;
   5201 }
   5202 
   5203 static __inline__ vector signed long long __ATTRS_o_ai
   5204 vec_orc(vector signed long long __a, vector bool long long __b) {
   5205   return __a | ~__b;
   5206 }
   5207 
   5208 static __inline__ vector signed long long __ATTRS_o_ai
   5209 vec_orc(vector bool long long __a, vector signed long long __b) {
   5210   return __a | ~__b;
   5211 }
   5212 
   5213 static __inline__ vector unsigned long long __ATTRS_o_ai
   5214 vec_orc(vector unsigned long long __a, vector unsigned long long __b) {
   5215   return __a | ~__b;
   5216 }
   5217 
   5218 static __inline__ vector unsigned long long __ATTRS_o_ai
   5219 vec_orc(vector unsigned long long __a, vector bool long long __b) {
   5220   return __a | ~__b;
   5221 }
   5222 
   5223 static __inline__ vector unsigned long long __ATTRS_o_ai
   5224 vec_orc(vector bool long long __a, vector unsigned long long __b) {
   5225   return __a | ~__b;
   5226 }
   5227 
   5228 static __inline__ vector bool long long __ATTRS_o_ai
   5229 vec_orc(vector bool long long __a, vector bool long long __b) {
   5230   return __a | ~__b;
   5231 }
   5232 #endif
   5233 
   5234 /* vec_vor */
   5235 
   5236 static __inline__ vector signed char __ATTRS_o_ai
   5237 vec_vor(vector signed char __a, vector signed char __b) {
   5238   return __a | __b;
   5239 }
   5240 
   5241 static __inline__ vector signed char __ATTRS_o_ai
   5242 vec_vor(vector bool char __a, vector signed char __b) {
   5243   return (vector signed char)__a | __b;
   5244 }
   5245 
   5246 static __inline__ vector signed char __ATTRS_o_ai
   5247 vec_vor(vector signed char __a, vector bool char __b) {
   5248   return __a | (vector signed char)__b;
   5249 }
   5250 
   5251 static __inline__ vector unsigned char __ATTRS_o_ai
   5252 vec_vor(vector unsigned char __a, vector unsigned char __b) {
   5253   return __a | __b;
   5254 }
   5255 
   5256 static __inline__ vector unsigned char __ATTRS_o_ai
   5257 vec_vor(vector bool char __a, vector unsigned char __b) {
   5258   return (vector unsigned char)__a | __b;
   5259 }
   5260 
   5261 static __inline__ vector unsigned char __ATTRS_o_ai
   5262 vec_vor(vector unsigned char __a, vector bool char __b) {
   5263   return __a | (vector unsigned char)__b;
   5264 }
   5265 
   5266 static __inline__ vector bool char __ATTRS_o_ai vec_vor(vector bool char __a,
   5267                                                         vector bool char __b) {
   5268   return __a | __b;
   5269 }
   5270 
   5271 static __inline__ vector short __ATTRS_o_ai vec_vor(vector short __a,
   5272                                                     vector short __b) {
   5273   return __a | __b;
   5274 }
   5275 
   5276 static __inline__ vector short __ATTRS_o_ai vec_vor(vector bool short __a,
   5277                                                     vector short __b) {
   5278   return (vector short)__a | __b;
   5279 }
   5280 
   5281 static __inline__ vector short __ATTRS_o_ai vec_vor(vector short __a,
   5282                                                     vector bool short __b) {
   5283   return __a | (vector short)__b;
   5284 }
   5285 
   5286 static __inline__ vector unsigned short __ATTRS_o_ai
   5287 vec_vor(vector unsigned short __a, vector unsigned short __b) {
   5288   return __a | __b;
   5289 }
   5290 
   5291 static __inline__ vector unsigned short __ATTRS_o_ai
   5292 vec_vor(vector bool short __a, vector unsigned short __b) {
   5293   return (vector unsigned short)__a | __b;
   5294 }
   5295 
   5296 static __inline__ vector unsigned short __ATTRS_o_ai
   5297 vec_vor(vector unsigned short __a, vector bool short __b) {
   5298   return __a | (vector unsigned short)__b;
   5299 }
   5300 
   5301 static __inline__ vector bool short __ATTRS_o_ai
   5302 vec_vor(vector bool short __a, vector bool short __b) {
   5303   return __a | __b;
   5304 }
   5305 
   5306 static __inline__ vector int __ATTRS_o_ai vec_vor(vector int __a,
   5307                                                   vector int __b) {
   5308   return __a | __b;
   5309 }
   5310 
   5311 static __inline__ vector int __ATTRS_o_ai vec_vor(vector bool int __a,
   5312                                                   vector int __b) {
   5313   return (vector int)__a | __b;
   5314 }
   5315 
   5316 static __inline__ vector int __ATTRS_o_ai vec_vor(vector int __a,
   5317                                                   vector bool int __b) {
   5318   return __a | (vector int)__b;
   5319 }
   5320 
   5321 static __inline__ vector unsigned int __ATTRS_o_ai
   5322 vec_vor(vector unsigned int __a, vector unsigned int __b) {
   5323   return __a | __b;
   5324 }
   5325 
   5326 static __inline__ vector unsigned int __ATTRS_o_ai
   5327 vec_vor(vector bool int __a, vector unsigned int __b) {
   5328   return (vector unsigned int)__a | __b;
   5329 }
   5330 
   5331 static __inline__ vector unsigned int __ATTRS_o_ai
   5332 vec_vor(vector unsigned int __a, vector bool int __b) {
   5333   return __a | (vector unsigned int)__b;
   5334 }
   5335 
   5336 static __inline__ vector bool int __ATTRS_o_ai vec_vor(vector bool int __a,
   5337                                                        vector bool int __b) {
   5338   return __a | __b;
   5339 }
   5340 
   5341 static __inline__ vector float __ATTRS_o_ai vec_vor(vector float __a,
   5342                                                     vector float __b) {
   5343   vector unsigned int __res =
   5344       (vector unsigned int)__a | (vector unsigned int)__b;
   5345   return (vector float)__res;
   5346 }
   5347 
   5348 static __inline__ vector float __ATTRS_o_ai vec_vor(vector bool int __a,
   5349                                                     vector float __b) {
   5350   vector unsigned int __res =
   5351       (vector unsigned int)__a | (vector unsigned int)__b;
   5352   return (vector float)__res;
   5353 }
   5354 
   5355 static __inline__ vector float __ATTRS_o_ai vec_vor(vector float __a,
   5356                                                     vector bool int __b) {
   5357   vector unsigned int __res =
   5358       (vector unsigned int)__a | (vector unsigned int)__b;
   5359   return (vector float)__res;
   5360 }
   5361 
   5362 #ifdef __VSX__
   5363 static __inline__ vector signed long long __ATTRS_o_ai
   5364 vec_vor(vector signed long long __a, vector signed long long __b) {
   5365   return __a | __b;
   5366 }
   5367 
   5368 static __inline__ vector signed long long __ATTRS_o_ai
   5369 vec_vor(vector bool long long __a, vector signed long long __b) {
   5370   return (vector signed long long)__a | __b;
   5371 }
   5372 
   5373 static __inline__ vector signed long long __ATTRS_o_ai
   5374 vec_vor(vector signed long long __a, vector bool long long __b) {
   5375   return __a | (vector signed long long)__b;
   5376 }
   5377 
   5378 static __inline__ vector unsigned long long __ATTRS_o_ai
   5379 vec_vor(vector unsigned long long __a, vector unsigned long long __b) {
   5380   return __a | __b;
   5381 }
   5382 
   5383 static __inline__ vector unsigned long long __ATTRS_o_ai
   5384 vec_vor(vector bool long long __a, vector unsigned long long __b) {
   5385   return (vector unsigned long long)__a | __b;
   5386 }
   5387 
   5388 static __inline__ vector unsigned long long __ATTRS_o_ai
   5389 vec_vor(vector unsigned long long __a, vector bool long long __b) {
   5390   return __a | (vector unsigned long long)__b;
   5391 }
   5392 
   5393 static __inline__ vector bool long long __ATTRS_o_ai
   5394 vec_vor(vector bool long long __a, vector bool long long __b) {
   5395   return __a | __b;
   5396 }
   5397 #endif
   5398 
   5399 /* vec_pack */
   5400 
   5401 /* The various vector pack instructions have a big-endian bias, so for
   5402    little endian we must handle reversed element numbering.  */
   5403 
   5404 static __inline__ vector signed char __ATTRS_o_ai
   5405 vec_pack(vector signed short __a, vector signed short __b) {
   5406 #ifdef __LITTLE_ENDIAN__
   5407   return (vector signed char)vec_perm(
   5408       __a, __b,
   5409       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
   5410                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
   5411 #else
   5412   return (vector signed char)vec_perm(
   5413       __a, __b,
   5414       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
   5415                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
   5416 #endif
   5417 }
   5418 
   5419 static __inline__ vector unsigned char __ATTRS_o_ai
   5420 vec_pack(vector unsigned short __a, vector unsigned short __b) {
   5421 #ifdef __LITTLE_ENDIAN__
   5422   return (vector unsigned char)vec_perm(
   5423       __a, __b,
   5424       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
   5425                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
   5426 #else
   5427   return (vector unsigned char)vec_perm(
   5428       __a, __b,
   5429       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
   5430                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
   5431 #endif
   5432 }
   5433 
   5434 static __inline__ vector bool char __ATTRS_o_ai
   5435 vec_pack(vector bool short __a, vector bool short __b) {
   5436 #ifdef __LITTLE_ENDIAN__
   5437   return (vector bool char)vec_perm(
   5438       __a, __b,
   5439       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
   5440                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
   5441 #else
   5442   return (vector bool char)vec_perm(
   5443       __a, __b,
   5444       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
   5445                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
   5446 #endif
   5447 }
   5448 
   5449 static __inline__ vector short __ATTRS_o_ai vec_pack(vector int __a,
   5450                                                      vector int __b) {
   5451 #ifdef __LITTLE_ENDIAN__
   5452   return (vector short)vec_perm(
   5453       __a, __b,
   5454       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
   5455                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
   5456 #else
   5457   return (vector short)vec_perm(
   5458       __a, __b,
   5459       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
   5460                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
   5461 #endif
   5462 }
   5463 
   5464 static __inline__ vector unsigned short __ATTRS_o_ai
   5465 vec_pack(vector unsigned int __a, vector unsigned int __b) {
   5466 #ifdef __LITTLE_ENDIAN__
   5467   return (vector unsigned short)vec_perm(
   5468       __a, __b,
   5469       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
   5470                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
   5471 #else
   5472   return (vector unsigned short)vec_perm(
   5473       __a, __b,
   5474       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
   5475                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
   5476 #endif
   5477 }
   5478 
   5479 static __inline__ vector bool short __ATTRS_o_ai vec_pack(vector bool int __a,
   5480                                                           vector bool int __b) {
   5481 #ifdef __LITTLE_ENDIAN__
   5482   return (vector bool short)vec_perm(
   5483       __a, __b,
   5484       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
   5485                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
   5486 #else
   5487   return (vector bool short)vec_perm(
   5488       __a, __b,
   5489       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
   5490                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
   5491 #endif
   5492 }
   5493 
   5494 #ifdef __VSX__
   5495 static __inline__ vector signed int __ATTRS_o_ai
   5496 vec_pack(vector signed long long __a, vector signed long long __b) {
   5497 #ifdef __LITTLE_ENDIAN__
   5498   return (vector signed int)vec_perm(
   5499       __a, __b,
   5500       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
   5501                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
   5502 #else
   5503   return (vector signed int)vec_perm(
   5504       __a, __b,
   5505       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
   5506                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
   5507 #endif
   5508 }
   5509 static __inline__ vector unsigned int __ATTRS_o_ai
   5510 vec_pack(vector unsigned long long __a, vector unsigned long long __b) {
   5511 #ifdef __LITTLE_ENDIAN__
   5512   return (vector unsigned int)vec_perm(
   5513       __a, __b,
   5514       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
   5515                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
   5516 #else
   5517   return (vector unsigned int)vec_perm(
   5518       __a, __b,
   5519       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
   5520                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
   5521 #endif
   5522 }
   5523 
   5524 static __inline__ vector bool int __ATTRS_o_ai
   5525 vec_pack(vector bool long long __a, vector bool long long __b) {
   5526 #ifdef __LITTLE_ENDIAN__
   5527   return (vector bool int)vec_perm(
   5528       __a, __b,
   5529       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
   5530                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
   5531 #else
   5532   return (vector bool int)vec_perm(
   5533       __a, __b,
   5534       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
   5535                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
   5536 #endif
   5537 }
   5538 
   5539 #endif
   5540 
   5541 /* vec_vpkuhum */
   5542 
   5543 #define __builtin_altivec_vpkuhum vec_vpkuhum
   5544 
   5545 static __inline__ vector signed char __ATTRS_o_ai
   5546 vec_vpkuhum(vector signed short __a, vector signed short __b) {
   5547 #ifdef __LITTLE_ENDIAN__
   5548   return (vector signed char)vec_perm(
   5549       __a, __b,
   5550       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
   5551                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
   5552 #else
   5553   return (vector signed char)vec_perm(
   5554       __a, __b,
   5555       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
   5556                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
   5557 #endif
   5558 }
   5559 
   5560 static __inline__ vector unsigned char __ATTRS_o_ai
   5561 vec_vpkuhum(vector unsigned short __a, vector unsigned short __b) {
   5562 #ifdef __LITTLE_ENDIAN__
   5563   return (vector unsigned char)vec_perm(
   5564       __a, __b,
   5565       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
   5566                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
   5567 #else
   5568   return (vector unsigned char)vec_perm(
   5569       __a, __b,
   5570       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
   5571                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
   5572 #endif
   5573 }
   5574 
   5575 static __inline__ vector bool char __ATTRS_o_ai
   5576 vec_vpkuhum(vector bool short __a, vector bool short __b) {
   5577 #ifdef __LITTLE_ENDIAN__
   5578   return (vector bool char)vec_perm(
   5579       __a, __b,
   5580       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
   5581                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
   5582 #else
   5583   return (vector bool char)vec_perm(
   5584       __a, __b,
   5585       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
   5586                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
   5587 #endif
   5588 }
   5589 
   5590 /* vec_vpkuwum */
   5591 
   5592 #define __builtin_altivec_vpkuwum vec_vpkuwum
   5593 
   5594 static __inline__ vector short __ATTRS_o_ai vec_vpkuwum(vector int __a,
   5595                                                         vector int __b) {
   5596 #ifdef __LITTLE_ENDIAN__
   5597   return (vector short)vec_perm(
   5598       __a, __b,
   5599       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
   5600                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
   5601 #else
   5602   return (vector short)vec_perm(
   5603       __a, __b,
   5604       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
   5605                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
   5606 #endif
   5607 }
   5608 
   5609 static __inline__ vector unsigned short __ATTRS_o_ai
   5610 vec_vpkuwum(vector unsigned int __a, vector unsigned int __b) {
   5611 #ifdef __LITTLE_ENDIAN__
   5612   return (vector unsigned short)vec_perm(
   5613       __a, __b,
   5614       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
   5615                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
   5616 #else
   5617   return (vector unsigned short)vec_perm(
   5618       __a, __b,
   5619       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
   5620                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
   5621 #endif
   5622 }
   5623 
   5624 static __inline__ vector bool short __ATTRS_o_ai
   5625 vec_vpkuwum(vector bool int __a, vector bool int __b) {
   5626 #ifdef __LITTLE_ENDIAN__
   5627   return (vector bool short)vec_perm(
   5628       __a, __b,
   5629       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
   5630                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
   5631 #else
   5632   return (vector bool short)vec_perm(
   5633       __a, __b,
   5634       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
   5635                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
   5636 #endif
   5637 }
   5638 
   5639 /* vec_vpkudum */
   5640 
   5641 #ifdef __POWER8_VECTOR__
   5642 #define __builtin_altivec_vpkudum vec_vpkudum
   5643 
   5644 static __inline__ vector int __ATTRS_o_ai vec_vpkudum(vector long long __a,
   5645                                                       vector long long __b) {
   5646 #ifdef __LITTLE_ENDIAN__
   5647   return (vector int)vec_perm(
   5648       __a, __b,
   5649       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
   5650                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
   5651 #else
   5652   return (vector int)vec_perm(
   5653       __a, __b,
   5654       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
   5655                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
   5656 #endif
   5657 }
   5658 
   5659 static __inline__ vector unsigned int __ATTRS_o_ai
   5660 vec_vpkudum(vector unsigned long long __a, vector unsigned long long __b) {
   5661 #ifdef __LITTLE_ENDIAN__
   5662   return (vector unsigned int)vec_perm(
   5663       __a, __b,
   5664       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
   5665                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
   5666 #else
   5667   return (vector unsigned int)vec_perm(
   5668       __a, __b,
   5669       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
   5670                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
   5671 #endif
   5672 }
   5673 
   5674 static __inline__ vector bool int __ATTRS_o_ai
   5675 vec_vpkudum(vector bool long long __a, vector bool long long __b) {
   5676 #ifdef __LITTLE_ENDIAN__
   5677   return (vector bool int)vec_perm(
   5678       (vector long long)__a, (vector long long)__b,
   5679       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
   5680                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
   5681 #else
   5682   return (vector bool int)vec_perm(
   5683       (vector long long)__a, (vector long long)__b,
   5684       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
   5685                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
   5686 #endif
   5687 }
   5688 #endif
   5689 
   5690 /* vec_packpx */
   5691 
   5692 static __inline__ vector pixel __attribute__((__always_inline__))
   5693 vec_packpx(vector unsigned int __a, vector unsigned int __b) {
   5694 #ifdef __LITTLE_ENDIAN__
   5695   return (vector pixel)__builtin_altivec_vpkpx(__b, __a);
   5696 #else
   5697   return (vector pixel)__builtin_altivec_vpkpx(__a, __b);
   5698 #endif
   5699 }
   5700 
   5701 /* vec_vpkpx */
   5702 
   5703 static __inline__ vector pixel __attribute__((__always_inline__))
   5704 vec_vpkpx(vector unsigned int __a, vector unsigned int __b) {
   5705 #ifdef __LITTLE_ENDIAN__
   5706   return (vector pixel)__builtin_altivec_vpkpx(__b, __a);
   5707 #else
   5708   return (vector pixel)__builtin_altivec_vpkpx(__a, __b);
   5709 #endif
   5710 }
   5711 
   5712 /* vec_packs */
   5713 
   5714 static __inline__ vector signed char __ATTRS_o_ai vec_packs(vector short __a,
   5715                                                             vector short __b) {
   5716 #ifdef __LITTLE_ENDIAN__
   5717   return __builtin_altivec_vpkshss(__b, __a);
   5718 #else
   5719   return __builtin_altivec_vpkshss(__a, __b);
   5720 #endif
   5721 }
   5722 
   5723 static __inline__ vector unsigned char __ATTRS_o_ai
   5724 vec_packs(vector unsigned short __a, vector unsigned short __b) {
   5725 #ifdef __LITTLE_ENDIAN__
   5726   return __builtin_altivec_vpkuhus(__b, __a);
   5727 #else
   5728   return __builtin_altivec_vpkuhus(__a, __b);
   5729 #endif
   5730 }
   5731 
   5732 static __inline__ vector signed short __ATTRS_o_ai vec_packs(vector int __a,
   5733                                                              vector int __b) {
   5734 #ifdef __LITTLE_ENDIAN__
   5735   return __builtin_altivec_vpkswss(__b, __a);
   5736 #else
   5737   return __builtin_altivec_vpkswss(__a, __b);
   5738 #endif
   5739 }
   5740 
   5741 static __inline__ vector unsigned short __ATTRS_o_ai
   5742 vec_packs(vector unsigned int __a, vector unsigned int __b) {
   5743 #ifdef __LITTLE_ENDIAN__
   5744   return __builtin_altivec_vpkuwus(__b, __a);
   5745 #else
   5746   return __builtin_altivec_vpkuwus(__a, __b);
   5747 #endif
   5748 }
   5749 
   5750 #ifdef __POWER8_VECTOR__
   5751 static __inline__ vector int __ATTRS_o_ai vec_packs(vector long long __a,
   5752                                                     vector long long __b) {
   5753 #ifdef __LITTLE_ENDIAN__
   5754   return __builtin_altivec_vpksdss(__b, __a);
   5755 #else
   5756   return __builtin_altivec_vpksdss(__a, __b);
   5757 #endif
   5758 }
   5759 
   5760 static __inline__ vector unsigned int __ATTRS_o_ai
   5761 vec_packs(vector unsigned long long __a, vector unsigned long long __b) {
   5762 #ifdef __LITTLE_ENDIAN__
   5763   return __builtin_altivec_vpkudus(__b, __a);
   5764 #else
   5765   return __builtin_altivec_vpkudus(__a, __b);
   5766 #endif
   5767 }
   5768 #endif
   5769 
   5770 /* vec_vpkshss */
   5771 
   5772 static __inline__ vector signed char __attribute__((__always_inline__))
   5773 vec_vpkshss(vector short __a, vector short __b) {
   5774 #ifdef __LITTLE_ENDIAN__
   5775   return __builtin_altivec_vpkshss(__b, __a);
   5776 #else
   5777   return __builtin_altivec_vpkshss(__a, __b);
   5778 #endif
   5779 }
   5780 
   5781 /* vec_vpksdss */
   5782 
   5783 #ifdef __POWER8_VECTOR__
   5784 static __inline__ vector int __ATTRS_o_ai vec_vpksdss(vector long long __a,
   5785                                                       vector long long __b) {
   5786 #ifdef __LITTLE_ENDIAN__
   5787   return __builtin_altivec_vpksdss(__b, __a);
   5788 #else
   5789   return __builtin_altivec_vpksdss(__a, __b);
   5790 #endif
   5791 }
   5792 #endif
   5793 
   5794 /* vec_vpkuhus */
   5795 
   5796 static __inline__ vector unsigned char __attribute__((__always_inline__))
   5797 vec_vpkuhus(vector unsigned short __a, vector unsigned short __b) {
   5798 #ifdef __LITTLE_ENDIAN__
   5799   return __builtin_altivec_vpkuhus(__b, __a);
   5800 #else
   5801   return __builtin_altivec_vpkuhus(__a, __b);
   5802 #endif
   5803 }
   5804 
   5805 /* vec_vpkudus */
   5806 
   5807 #ifdef __POWER8_VECTOR__
   5808 static __inline__ vector unsigned int __attribute__((__always_inline__))
   5809 vec_vpkudus(vector unsigned long long __a, vector unsigned long long __b) {
   5810 #ifdef __LITTLE_ENDIAN__
   5811   return __builtin_altivec_vpkudus(__b, __a);
   5812 #else
   5813   return __builtin_altivec_vpkudus(__a, __b);
   5814 #endif
   5815 }
   5816 #endif
   5817 
   5818 /* vec_vpkswss */
   5819 
   5820 static __inline__ vector signed short __attribute__((__always_inline__))
   5821 vec_vpkswss(vector int __a, vector int __b) {
   5822 #ifdef __LITTLE_ENDIAN__
   5823   return __builtin_altivec_vpkswss(__b, __a);
   5824 #else
   5825   return __builtin_altivec_vpkswss(__a, __b);
   5826 #endif
   5827 }
   5828 
   5829 /* vec_vpkuwus */
   5830 
   5831 static __inline__ vector unsigned short __attribute__((__always_inline__))
   5832 vec_vpkuwus(vector unsigned int __a, vector unsigned int __b) {
   5833 #ifdef __LITTLE_ENDIAN__
   5834   return __builtin_altivec_vpkuwus(__b, __a);
   5835 #else
   5836   return __builtin_altivec_vpkuwus(__a, __b);
   5837 #endif
   5838 }
   5839 
   5840 /* vec_packsu */
   5841 
   5842 static __inline__ vector unsigned char __ATTRS_o_ai
   5843 vec_packsu(vector short __a, vector short __b) {
   5844 #ifdef __LITTLE_ENDIAN__
   5845   return __builtin_altivec_vpkshus(__b, __a);
   5846 #else
   5847   return __builtin_altivec_vpkshus(__a, __b);
   5848 #endif
   5849 }
   5850 
   5851 static __inline__ vector unsigned char __ATTRS_o_ai
   5852 vec_packsu(vector unsigned short __a, vector unsigned short __b) {
   5853 #ifdef __LITTLE_ENDIAN__
   5854   return __builtin_altivec_vpkuhus(__b, __a);
   5855 #else
   5856   return __builtin_altivec_vpkuhus(__a, __b);
   5857 #endif
   5858 }
   5859 
   5860 static __inline__ vector unsigned short __ATTRS_o_ai
   5861 vec_packsu(vector int __a, vector int __b) {
   5862 #ifdef __LITTLE_ENDIAN__
   5863   return __builtin_altivec_vpkswus(__b, __a);
   5864 #else
   5865   return __builtin_altivec_vpkswus(__a, __b);
   5866 #endif
   5867 }
   5868 
   5869 static __inline__ vector unsigned short __ATTRS_o_ai
   5870 vec_packsu(vector unsigned int __a, vector unsigned int __b) {
   5871 #ifdef __LITTLE_ENDIAN__
   5872   return __builtin_altivec_vpkuwus(__b, __a);
   5873 #else
   5874   return __builtin_altivec_vpkuwus(__a, __b);
   5875 #endif
   5876 }
   5877 
   5878 #ifdef __POWER8_VECTOR__
   5879 static __inline__ vector unsigned int __ATTRS_o_ai
   5880 vec_packsu(vector long long __a, vector long long __b) {
   5881 #ifdef __LITTLE_ENDIAN__
   5882   return __builtin_altivec_vpksdus(__b, __a);
   5883 #else
   5884   return __builtin_altivec_vpksdus(__a, __b);
   5885 #endif
   5886 }
   5887 
   5888 static __inline__ vector unsigned int __ATTRS_o_ai
   5889 vec_packsu(vector unsigned long long __a, vector unsigned long long __b) {
   5890 #ifdef __LITTLE_ENDIAN__
   5891   return __builtin_altivec_vpkudus(__b, __a);
   5892 #else
   5893   return __builtin_altivec_vpkudus(__a, __b);
   5894 #endif
   5895 }
   5896 #endif
   5897 
   5898 /* vec_vpkshus */
   5899 
   5900 static __inline__ vector unsigned char __ATTRS_o_ai
   5901 vec_vpkshus(vector short __a, vector short __b) {
   5902 #ifdef __LITTLE_ENDIAN__
   5903   return __builtin_altivec_vpkshus(__b, __a);
   5904 #else
   5905   return __builtin_altivec_vpkshus(__a, __b);
   5906 #endif
   5907 }
   5908 
   5909 static __inline__ vector unsigned char __ATTRS_o_ai
   5910 vec_vpkshus(vector unsigned short __a, vector unsigned short __b) {
   5911 #ifdef __LITTLE_ENDIAN__
   5912   return __builtin_altivec_vpkuhus(__b, __a);
   5913 #else
   5914   return __builtin_altivec_vpkuhus(__a, __b);
   5915 #endif
   5916 }
   5917 
   5918 /* vec_vpkswus */
   5919 
   5920 static __inline__ vector unsigned short __ATTRS_o_ai
   5921 vec_vpkswus(vector int __a, vector int __b) {
   5922 #ifdef __LITTLE_ENDIAN__
   5923   return __builtin_altivec_vpkswus(__b, __a);
   5924 #else
   5925   return __builtin_altivec_vpkswus(__a, __b);
   5926 #endif
   5927 }
   5928 
   5929 static __inline__ vector unsigned short __ATTRS_o_ai
   5930 vec_vpkswus(vector unsigned int __a, vector unsigned int __b) {
   5931 #ifdef __LITTLE_ENDIAN__
   5932   return __builtin_altivec_vpkuwus(__b, __a);
   5933 #else
   5934   return __builtin_altivec_vpkuwus(__a, __b);
   5935 #endif
   5936 }
   5937 
   5938 /* vec_vpksdus */
   5939 
   5940 #ifdef __POWER8_VECTOR__
   5941 static __inline__ vector unsigned int __ATTRS_o_ai
   5942 vec_vpksdus(vector long long __a, vector long long __b) {
   5943 #ifdef __LITTLE_ENDIAN__
   5944   return __builtin_altivec_vpksdus(__b, __a);
   5945 #else
   5946   return __builtin_altivec_vpksdus(__a, __b);
   5947 #endif
   5948 }
   5949 #endif
   5950 
   5951 /* vec_perm */
   5952 
   5953 // The vperm instruction is defined architecturally with a big-endian bias.
   5954 // For little endian, we swap the input operands and invert the permute
   5955 // control vector.  Only the rightmost 5 bits matter, so we could use
   5956 // a vector of all 31s instead of all 255s to perform the inversion.
   5957 // However, when the PCV is not a constant, using 255 has an advantage
   5958 // in that the vec_xor can be recognized as a vec_nor (and for P8 and
   5959 // later, possibly a vec_nand).
   5960 
   5961 static __inline__ vector signed char __ATTRS_o_ai vec_perm(
   5962     vector signed char __a, vector signed char __b, vector unsigned char __c) {
   5963 #ifdef __LITTLE_ENDIAN__
   5964   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   5965                               255, 255, 255, 255, 255, 255, 255, 255};
   5966   __d = vec_xor(__c, __d);
   5967   return (vector signed char)__builtin_altivec_vperm_4si((vector int)__b,
   5968                                                          (vector int)__a, __d);
   5969 #else
   5970   return (vector signed char)__builtin_altivec_vperm_4si((vector int)__a,
   5971                                                          (vector int)__b, __c);
   5972 #endif
   5973 }
   5974 
   5975 static __inline__ vector unsigned char __ATTRS_o_ai
   5976 vec_perm(vector unsigned char __a, vector unsigned char __b,
   5977          vector unsigned char __c) {
   5978 #ifdef __LITTLE_ENDIAN__
   5979   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   5980                               255, 255, 255, 255, 255, 255, 255, 255};
   5981   __d = vec_xor(__c, __d);
   5982   return (vector unsigned char)__builtin_altivec_vperm_4si(
   5983       (vector int)__b, (vector int)__a, __d);
   5984 #else
   5985   return (vector unsigned char)__builtin_altivec_vperm_4si(
   5986       (vector int)__a, (vector int)__b, __c);
   5987 #endif
   5988 }
   5989 
   5990 static __inline__ vector bool char __ATTRS_o_ai
   5991 vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c) {
   5992 #ifdef __LITTLE_ENDIAN__
   5993   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   5994                               255, 255, 255, 255, 255, 255, 255, 255};
   5995   __d = vec_xor(__c, __d);
   5996   return (vector bool char)__builtin_altivec_vperm_4si((vector int)__b,
   5997                                                        (vector int)__a, __d);
   5998 #else
   5999   return (vector bool char)__builtin_altivec_vperm_4si((vector int)__a,
   6000                                                        (vector int)__b, __c);
   6001 #endif
   6002 }
   6003 
   6004 static __inline__ vector short __ATTRS_o_ai vec_perm(vector signed short __a,
   6005                                                      vector signed short __b,
   6006                                                      vector unsigned char __c) {
   6007 #ifdef __LITTLE_ENDIAN__
   6008   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   6009                               255, 255, 255, 255, 255, 255, 255, 255};
   6010   __d = vec_xor(__c, __d);
   6011   return (vector signed short)__builtin_altivec_vperm_4si((vector int)__b,
   6012                                                           (vector int)__a, __d);
   6013 #else
   6014   return (vector signed short)__builtin_altivec_vperm_4si((vector int)__a,
   6015                                                           (vector int)__b, __c);
   6016 #endif
   6017 }
   6018 
   6019 static __inline__ vector unsigned short __ATTRS_o_ai
   6020 vec_perm(vector unsigned short __a, vector unsigned short __b,
   6021          vector unsigned char __c) {
   6022 #ifdef __LITTLE_ENDIAN__
   6023   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   6024                               255, 255, 255, 255, 255, 255, 255, 255};
   6025   __d = vec_xor(__c, __d);
   6026   return (vector unsigned short)__builtin_altivec_vperm_4si(
   6027       (vector int)__b, (vector int)__a, __d);
   6028 #else
   6029   return (vector unsigned short)__builtin_altivec_vperm_4si(
   6030       (vector int)__a, (vector int)__b, __c);
   6031 #endif
   6032 }
   6033 
   6034 static __inline__ vector bool short __ATTRS_o_ai vec_perm(
   6035     vector bool short __a, vector bool short __b, vector unsigned char __c) {
   6036 #ifdef __LITTLE_ENDIAN__
   6037   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   6038                               255, 255, 255, 255, 255, 255, 255, 255};
   6039   __d = vec_xor(__c, __d);
   6040   return (vector bool short)__builtin_altivec_vperm_4si((vector int)__b,
   6041                                                         (vector int)__a, __d);
   6042 #else
   6043   return (vector bool short)__builtin_altivec_vperm_4si((vector int)__a,
   6044                                                         (vector int)__b, __c);
   6045 #endif
   6046 }
   6047 
   6048 static __inline__ vector pixel __ATTRS_o_ai vec_perm(vector pixel __a,
   6049                                                      vector pixel __b,
   6050                                                      vector unsigned char __c) {
   6051 #ifdef __LITTLE_ENDIAN__
   6052   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   6053                               255, 255, 255, 255, 255, 255, 255, 255};
   6054   __d = vec_xor(__c, __d);
   6055   return (vector pixel)__builtin_altivec_vperm_4si((vector int)__b,
   6056                                                    (vector int)__a, __d);
   6057 #else
   6058   return (vector pixel)__builtin_altivec_vperm_4si((vector int)__a,
   6059                                                    (vector int)__b, __c);
   6060 #endif
   6061 }
   6062 
   6063 static __inline__ vector int __ATTRS_o_ai vec_perm(vector signed int __a,
   6064                                                    vector signed int __b,
   6065                                                    vector unsigned char __c) {
   6066 #ifdef __LITTLE_ENDIAN__
   6067   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   6068                               255, 255, 255, 255, 255, 255, 255, 255};
   6069   __d = vec_xor(__c, __d);
   6070   return (vector signed int)__builtin_altivec_vperm_4si(__b, __a, __d);
   6071 #else
   6072   return (vector signed int)__builtin_altivec_vperm_4si(__a, __b, __c);
   6073 #endif
   6074 }
   6075 
   6076 static __inline__ vector unsigned int __ATTRS_o_ai
   6077 vec_perm(vector unsigned int __a, vector unsigned int __b,
   6078          vector unsigned char __c) {
   6079 #ifdef __LITTLE_ENDIAN__
   6080   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   6081                               255, 255, 255, 255, 255, 255, 255, 255};
   6082   __d = vec_xor(__c, __d);
   6083   return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__b,
   6084                                                           (vector int)__a, __d);
   6085 #else
   6086   return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__a,
   6087                                                           (vector int)__b, __c);
   6088 #endif
   6089 }
   6090 
   6091 static __inline__ vector bool int __ATTRS_o_ai
   6092 vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c) {
   6093 #ifdef __LITTLE_ENDIAN__
   6094   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   6095                               255, 255, 255, 255, 255, 255, 255, 255};
   6096   __d = vec_xor(__c, __d);
   6097   return (vector bool int)__builtin_altivec_vperm_4si((vector int)__b,
   6098                                                       (vector int)__a, __d);
   6099 #else
   6100   return (vector bool int)__builtin_altivec_vperm_4si((vector int)__a,
   6101                                                       (vector int)__b, __c);
   6102 #endif
   6103 }
   6104 
   6105 static __inline__ vector float __ATTRS_o_ai vec_perm(vector float __a,
   6106                                                      vector float __b,
   6107                                                      vector unsigned char __c) {
   6108 #ifdef __LITTLE_ENDIAN__
   6109   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   6110                               255, 255, 255, 255, 255, 255, 255, 255};
   6111   __d = vec_xor(__c, __d);
   6112   return (vector float)__builtin_altivec_vperm_4si((vector int)__b,
   6113                                                    (vector int)__a, __d);
   6114 #else
   6115   return (vector float)__builtin_altivec_vperm_4si((vector int)__a,
   6116                                                    (vector int)__b, __c);
   6117 #endif
   6118 }
   6119 
   6120 #ifdef __VSX__
   6121 static __inline__ vector long long __ATTRS_o_ai
   6122 vec_perm(vector signed long long __a, vector signed long long __b,
   6123          vector unsigned char __c) {
   6124 #ifdef __LITTLE_ENDIAN__
   6125   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   6126                               255, 255, 255, 255, 255, 255, 255, 255};
   6127   __d = vec_xor(__c, __d);
   6128   return (vector signed long long)__builtin_altivec_vperm_4si(
   6129       (vector int)__b, (vector int)__a, __d);
   6130 #else
   6131   return (vector signed long long)__builtin_altivec_vperm_4si(
   6132       (vector int)__a, (vector int)__b, __c);
   6133 #endif
   6134 }
   6135 
   6136 static __inline__ vector unsigned long long __ATTRS_o_ai
   6137 vec_perm(vector unsigned long long __a, vector unsigned long long __b,
   6138          vector unsigned char __c) {
   6139 #ifdef __LITTLE_ENDIAN__
   6140   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   6141                               255, 255, 255, 255, 255, 255, 255, 255};
   6142   __d = vec_xor(__c, __d);
   6143   return (vector unsigned long long)__builtin_altivec_vperm_4si(
   6144       (vector int)__b, (vector int)__a, __d);
   6145 #else
   6146   return (vector unsigned long long)__builtin_altivec_vperm_4si(
   6147       (vector int)__a, (vector int)__b, __c);
   6148 #endif
   6149 }
   6150 
   6151 static __inline__ vector bool long long __ATTRS_o_ai
   6152 vec_perm(vector bool long long __a, vector bool long long __b,
   6153          vector unsigned char __c) {
   6154 #ifdef __LITTLE_ENDIAN__
   6155   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   6156                               255, 255, 255, 255, 255, 255, 255, 255};
   6157   __d = vec_xor(__c, __d);
   6158   return (vector bool long long)__builtin_altivec_vperm_4si(
   6159       (vector int)__b, (vector int)__a, __d);
   6160 #else
   6161   return (vector bool long long)__builtin_altivec_vperm_4si(
   6162       (vector int)__a, (vector int)__b, __c);
   6163 #endif
   6164 }
   6165 
   6166 static __inline__ vector double __ATTRS_o_ai
   6167 vec_perm(vector double __a, vector double __b, vector unsigned char __c) {
   6168 #ifdef __LITTLE_ENDIAN__
   6169   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   6170                               255, 255, 255, 255, 255, 255, 255, 255};
   6171   __d = vec_xor(__c, __d);
   6172   return (vector double)__builtin_altivec_vperm_4si((vector int)__b,
   6173                                                     (vector int)__a, __d);
   6174 #else
   6175   return (vector double)__builtin_altivec_vperm_4si((vector int)__a,
   6176                                                     (vector int)__b, __c);
   6177 #endif
   6178 }
   6179 #endif
   6180 
   6181 /* vec_vperm */
   6182 
   6183 static __inline__ vector signed char __ATTRS_o_ai vec_vperm(
   6184     vector signed char __a, vector signed char __b, vector unsigned char __c) {
   6185   return vec_perm(__a, __b, __c);
   6186 }
   6187 
   6188 static __inline__ vector unsigned char __ATTRS_o_ai
   6189 vec_vperm(vector unsigned char __a, vector unsigned char __b,
   6190           vector unsigned char __c) {
   6191   return vec_perm(__a, __b, __c);
   6192 }
   6193 
   6194 static __inline__ vector bool char __ATTRS_o_ai vec_vperm(
   6195     vector bool char __a, vector bool char __b, vector unsigned char __c) {
   6196   return vec_perm(__a, __b, __c);
   6197 }
   6198 
   6199 static __inline__ vector short __ATTRS_o_ai
   6200 vec_vperm(vector short __a, vector short __b, vector unsigned char __c) {
   6201   return vec_perm(__a, __b, __c);
   6202 }
   6203 
   6204 static __inline__ vector unsigned short __ATTRS_o_ai
   6205 vec_vperm(vector unsigned short __a, vector unsigned short __b,
   6206           vector unsigned char __c) {
   6207   return vec_perm(__a, __b, __c);
   6208 }
   6209 
   6210 static __inline__ vector bool short __ATTRS_o_ai vec_vperm(
   6211     vector bool short __a, vector bool short __b, vector unsigned char __c) {
   6212   return vec_perm(__a, __b, __c);
   6213 }
   6214 
   6215 static __inline__ vector pixel __ATTRS_o_ai
   6216 vec_vperm(vector pixel __a, vector pixel __b, vector unsigned char __c) {
   6217   return vec_perm(__a, __b, __c);
   6218 }
   6219 
   6220 static __inline__ vector int __ATTRS_o_ai vec_vperm(vector int __a,
   6221                                                     vector int __b,
   6222                                                     vector unsigned char __c) {
   6223   return vec_perm(__a, __b, __c);
   6224 }
   6225 
   6226 static __inline__ vector unsigned int __ATTRS_o_ai
   6227 vec_vperm(vector unsigned int __a, vector unsigned int __b,
   6228           vector unsigned char __c) {
   6229   return vec_perm(__a, __b, __c);
   6230 }
   6231 
   6232 static __inline__ vector bool int __ATTRS_o_ai
   6233 vec_vperm(vector bool int __a, vector bool int __b, vector unsigned char __c) {
   6234   return vec_perm(__a, __b, __c);
   6235 }
   6236 
   6237 static __inline__ vector float __ATTRS_o_ai
   6238 vec_vperm(vector float __a, vector float __b, vector unsigned char __c) {
   6239   return vec_perm(__a, __b, __c);
   6240 }
   6241 
   6242 #ifdef __VSX__
   6243 static __inline__ vector long long __ATTRS_o_ai vec_vperm(
   6244     vector long long __a, vector long long __b, vector unsigned char __c) {
   6245   return vec_perm(__a, __b, __c);
   6246 }
   6247 
   6248 static __inline__ vector unsigned long long __ATTRS_o_ai
   6249 vec_vperm(vector unsigned long long __a, vector unsigned long long __b,
   6250           vector unsigned char __c) {
   6251   return vec_perm(__a, __b, __c);
   6252 }
   6253 
   6254 static __inline__ vector double __ATTRS_o_ai
   6255 vec_vperm(vector double __a, vector double __b, vector unsigned char __c) {
   6256   return vec_perm(__a, __b, __c);
   6257 }
   6258 #endif
   6259 
   6260 /* vec_re */
   6261 
   6262 static __inline__ vector float __ATTRS_o_ai vec_re(vector float __a) {
   6263 #ifdef __VSX__
   6264   return __builtin_vsx_xvresp(__a);
   6265 #else
   6266   return __builtin_altivec_vrefp(__a);
   6267 #endif
   6268 }
   6269 
   6270 #ifdef __VSX__
   6271 static __inline__ vector double __ATTRS_o_ai vec_re(vector double __a) {
   6272   return __builtin_vsx_xvredp(__a);
   6273 }
   6274 #endif
   6275 
   6276 /* vec_vrefp */
   6277 
   6278 static __inline__ vector float __attribute__((__always_inline__))
   6279 vec_vrefp(vector float __a) {
   6280   return __builtin_altivec_vrefp(__a);
   6281 }
   6282 
   6283 /* vec_rl */
   6284 
   6285 static __inline__ vector signed char __ATTRS_o_ai
   6286 vec_rl(vector signed char __a, vector unsigned char __b) {
   6287   return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
   6288 }
   6289 
   6290 static __inline__ vector unsigned char __ATTRS_o_ai
   6291 vec_rl(vector unsigned char __a, vector unsigned char __b) {
   6292   return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
   6293 }
   6294 
   6295 static __inline__ vector short __ATTRS_o_ai vec_rl(vector short __a,
   6296                                                    vector unsigned short __b) {
   6297   return __builtin_altivec_vrlh(__a, __b);
   6298 }
   6299 
   6300 static __inline__ vector unsigned short __ATTRS_o_ai
   6301 vec_rl(vector unsigned short __a, vector unsigned short __b) {
   6302   return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
   6303 }
   6304 
   6305 static __inline__ vector int __ATTRS_o_ai vec_rl(vector int __a,
   6306                                                  vector unsigned int __b) {
   6307   return __builtin_altivec_vrlw(__a, __b);
   6308 }
   6309 
   6310 static __inline__ vector unsigned int __ATTRS_o_ai
   6311 vec_rl(vector unsigned int __a, vector unsigned int __b) {
   6312   return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
   6313 }
   6314 
   6315 #ifdef __POWER8_VECTOR__
   6316 static __inline__ vector signed long long __ATTRS_o_ai
   6317 vec_rl(vector signed long long __a, vector unsigned long long __b) {
   6318   return __builtin_altivec_vrld(__a, __b);
   6319 }
   6320 
   6321 static __inline__ vector unsigned long long __ATTRS_o_ai
   6322 vec_rl(vector unsigned long long __a, vector unsigned long long __b) {
   6323   return __builtin_altivec_vrld(__a, __b);
   6324 }
   6325 #endif
   6326 
   6327 /* vec_vrlb */
   6328 
   6329 static __inline__ vector signed char __ATTRS_o_ai
   6330 vec_vrlb(vector signed char __a, vector unsigned char __b) {
   6331   return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
   6332 }
   6333 
   6334 static __inline__ vector unsigned char __ATTRS_o_ai
   6335 vec_vrlb(vector unsigned char __a, vector unsigned char __b) {
   6336   return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
   6337 }
   6338 
   6339 /* vec_vrlh */
   6340 
   6341 static __inline__ vector short __ATTRS_o_ai
   6342 vec_vrlh(vector short __a, vector unsigned short __b) {
   6343   return __builtin_altivec_vrlh(__a, __b);
   6344 }
   6345 
   6346 static __inline__ vector unsigned short __ATTRS_o_ai
   6347 vec_vrlh(vector unsigned short __a, vector unsigned short __b) {
   6348   return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
   6349 }
   6350 
   6351 /* vec_vrlw */
   6352 
   6353 static __inline__ vector int __ATTRS_o_ai vec_vrlw(vector int __a,
   6354                                                    vector unsigned int __b) {
   6355   return __builtin_altivec_vrlw(__a, __b);
   6356 }
   6357 
   6358 static __inline__ vector unsigned int __ATTRS_o_ai
   6359 vec_vrlw(vector unsigned int __a, vector unsigned int __b) {
   6360   return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
   6361 }
   6362 
   6363 /* vec_round */
   6364 
   6365 static __inline__ vector float __ATTRS_o_ai vec_round(vector float __a) {
   6366 #ifdef __VSX__
   6367   return __builtin_vsx_xvrspi(__a);
   6368 #else
   6369   return __builtin_altivec_vrfin(__a);
   6370 #endif
   6371 }
   6372 
   6373 #ifdef __VSX__
   6374 static __inline__ vector double __ATTRS_o_ai vec_round(vector double __a) {
   6375   return __builtin_vsx_xvrdpi(__a);
   6376 }
   6377 
   6378 /* vec_rint */
   6379 
   6380 static __inline__ vector float __ATTRS_o_ai vec_rint(vector float __a) {
   6381   return __builtin_vsx_xvrspic(__a);
   6382 }
   6383 
   6384 static __inline__ vector double __ATTRS_o_ai vec_rint(vector double __a) {
   6385   return __builtin_vsx_xvrdpic(__a);
   6386 }
   6387 
   6388 /* vec_nearbyint */
   6389 
   6390 static __inline__ vector float __ATTRS_o_ai vec_nearbyint(vector float __a) {
   6391   return __builtin_vsx_xvrspi(__a);
   6392 }
   6393 
   6394 static __inline__ vector double __ATTRS_o_ai vec_nearbyint(vector double __a) {
   6395   return __builtin_vsx_xvrdpi(__a);
   6396 }
   6397 #endif
   6398 
   6399 /* vec_vrfin */
   6400 
   6401 static __inline__ vector float __attribute__((__always_inline__))
   6402 vec_vrfin(vector float __a) {
   6403   return __builtin_altivec_vrfin(__a);
   6404 }
   6405 
   6406 /* vec_sqrt */
   6407 
   6408 #ifdef __VSX__
   6409 static __inline__ vector float __ATTRS_o_ai vec_sqrt(vector float __a) {
   6410   return __builtin_vsx_xvsqrtsp(__a);
   6411 }
   6412 
   6413 static __inline__ vector double __ATTRS_o_ai vec_sqrt(vector double __a) {
   6414   return __builtin_vsx_xvsqrtdp(__a);
   6415 }
   6416 #endif
   6417 
   6418 /* vec_rsqrte */
   6419 
   6420 static __inline__ vector float __ATTRS_o_ai vec_rsqrte(vector float __a) {
   6421 #ifdef __VSX__
   6422   return __builtin_vsx_xvrsqrtesp(__a);
   6423 #else
   6424   return __builtin_altivec_vrsqrtefp(__a);
   6425 #endif
   6426 }
   6427 
   6428 #ifdef __VSX__
   6429 static __inline__ vector double __ATTRS_o_ai vec_rsqrte(vector double __a) {
   6430   return __builtin_vsx_xvrsqrtedp(__a);
   6431 }
   6432 #endif
   6433 
   6434 /* vec_vrsqrtefp */
   6435 
   6436 static __inline__ __vector float __attribute__((__always_inline__))
   6437 vec_vrsqrtefp(vector float __a) {
   6438   return __builtin_altivec_vrsqrtefp(__a);
   6439 }
   6440 
   6441 /* vec_sel */
   6442 
   6443 #define __builtin_altivec_vsel_4si vec_sel
   6444 
   6445 static __inline__ vector signed char __ATTRS_o_ai vec_sel(
   6446     vector signed char __a, vector signed char __b, vector unsigned char __c) {
   6447   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
   6448 }
   6449 
   6450 static __inline__ vector signed char __ATTRS_o_ai
   6451 vec_sel(vector signed char __a, vector signed char __b, vector bool char __c) {
   6452   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
   6453 }
   6454 
   6455 static __inline__ vector unsigned char __ATTRS_o_ai
   6456 vec_sel(vector unsigned char __a, vector unsigned char __b,
   6457         vector unsigned char __c) {
   6458   return (__a & ~__c) | (__b & __c);
   6459 }
   6460 
   6461 static __inline__ vector unsigned char __ATTRS_o_ai vec_sel(
   6462     vector unsigned char __a, vector unsigned char __b, vector bool char __c) {
   6463   return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
   6464 }
   6465 
   6466 static __inline__ vector bool char __ATTRS_o_ai
   6467 vec_sel(vector bool char __a, vector bool char __b, vector unsigned char __c) {
   6468   return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
   6469 }
   6470 
   6471 static __inline__ vector bool char __ATTRS_o_ai vec_sel(vector bool char __a,
   6472                                                         vector bool char __b,
   6473                                                         vector bool char __c) {
   6474   return (__a & ~__c) | (__b & __c);
   6475 }
   6476 
   6477 static __inline__ vector short __ATTRS_o_ai vec_sel(vector short __a,
   6478                                                     vector short __b,
   6479                                                     vector unsigned short __c) {
   6480   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
   6481 }
   6482 
   6483 static __inline__ vector short __ATTRS_o_ai vec_sel(vector short __a,
   6484                                                     vector short __b,
   6485                                                     vector bool short __c) {
   6486   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
   6487 }
   6488 
   6489 static __inline__ vector unsigned short __ATTRS_o_ai
   6490 vec_sel(vector unsigned short __a, vector unsigned short __b,
   6491         vector unsigned short __c) {
   6492   return (__a & ~__c) | (__b & __c);
   6493 }
   6494 
   6495 static __inline__ vector unsigned short __ATTRS_o_ai
   6496 vec_sel(vector unsigned short __a, vector unsigned short __b,
   6497         vector bool short __c) {
   6498   return (__a & ~(vector unsigned short)__c) |
   6499          (__b & (vector unsigned short)__c);
   6500 }
   6501 
   6502 static __inline__ vector bool short __ATTRS_o_ai vec_sel(
   6503     vector bool short __a, vector bool short __b, vector unsigned short __c) {
   6504   return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
   6505 }
   6506 
   6507 static __inline__ vector bool short __ATTRS_o_ai
   6508 vec_sel(vector bool short __a, vector bool short __b, vector bool short __c) {
   6509   return (__a & ~__c) | (__b & __c);
   6510 }
   6511 
   6512 static __inline__ vector int __ATTRS_o_ai vec_sel(vector int __a,
   6513                                                   vector int __b,
   6514                                                   vector unsigned int __c) {
   6515   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
   6516 }
   6517 
   6518 static __inline__ vector int __ATTRS_o_ai vec_sel(vector int __a,
   6519                                                   vector int __b,
   6520                                                   vector bool int __c) {
   6521   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
   6522 }
   6523 
   6524 static __inline__ vector unsigned int __ATTRS_o_ai vec_sel(
   6525     vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
   6526   return (__a & ~__c) | (__b & __c);
   6527 }
   6528 
   6529 static __inline__ vector unsigned int __ATTRS_o_ai
   6530 vec_sel(vector unsigned int __a, vector unsigned int __b, vector bool int __c) {
   6531   return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
   6532 }
   6533 
   6534 static __inline__ vector bool int __ATTRS_o_ai
   6535 vec_sel(vector bool int __a, vector bool int __b, vector unsigned int __c) {
   6536   return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
   6537 }
   6538 
   6539 static __inline__ vector bool int __ATTRS_o_ai vec_sel(vector bool int __a,
   6540                                                        vector bool int __b,
   6541                                                        vector bool int __c) {
   6542   return (__a & ~__c) | (__b & __c);
   6543 }
   6544 
   6545 static __inline__ vector float __ATTRS_o_ai vec_sel(vector float __a,
   6546                                                     vector float __b,
   6547                                                     vector unsigned int __c) {
   6548   vector int __res = ((vector int)__a & ~(vector int)__c) |
   6549                      ((vector int)__b & (vector int)__c);
   6550   return (vector float)__res;
   6551 }
   6552 
   6553 static __inline__ vector float __ATTRS_o_ai vec_sel(vector float __a,
   6554                                                     vector float __b,
   6555                                                     vector bool int __c) {
   6556   vector int __res = ((vector int)__a & ~(vector int)__c) |
   6557                      ((vector int)__b & (vector int)__c);
   6558   return (vector float)__res;
   6559 }
   6560 
   6561 #ifdef __VSX__
   6562 static __inline__ vector double __ATTRS_o_ai
   6563 vec_sel(vector double __a, vector double __b, vector bool long long __c) {
   6564   vector long long __res = ((vector long long)__a & ~(vector long long)__c) |
   6565                            ((vector long long)__b & (vector long long)__c);
   6566   return (vector double)__res;
   6567 }
   6568 
   6569 static __inline__ vector double __ATTRS_o_ai
   6570 vec_sel(vector double __a, vector double __b, vector unsigned long long __c) {
   6571   vector long long __res = ((vector long long)__a & ~(vector long long)__c) |
   6572                            ((vector long long)__b & (vector long long)__c);
   6573   return (vector double)__res;
   6574 }
   6575 #endif
   6576 
   6577 /* vec_vsel */
   6578 
   6579 static __inline__ vector signed char __ATTRS_o_ai vec_vsel(
   6580     vector signed char __a, vector signed char __b, vector unsigned char __c) {
   6581   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
   6582 }
   6583 
   6584 static __inline__ vector signed char __ATTRS_o_ai
   6585 vec_vsel(vector signed char __a, vector signed char __b, vector bool char __c) {
   6586   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
   6587 }
   6588 
   6589 static __inline__ vector unsigned char __ATTRS_o_ai
   6590 vec_vsel(vector unsigned char __a, vector unsigned char __b,
   6591          vector unsigned char __c) {
   6592   return (__a & ~__c) | (__b & __c);
   6593 }
   6594 
   6595 static __inline__ vector unsigned char __ATTRS_o_ai vec_vsel(
   6596     vector unsigned char __a, vector unsigned char __b, vector bool char __c) {
   6597   return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
   6598 }
   6599 
   6600 static __inline__ vector bool char __ATTRS_o_ai
   6601 vec_vsel(vector bool char __a, vector bool char __b, vector unsigned char __c) {
   6602   return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
   6603 }
   6604 
   6605 static __inline__ vector bool char __ATTRS_o_ai vec_vsel(vector bool char __a,
   6606                                                          vector bool char __b,
   6607                                                          vector bool char __c) {
   6608   return (__a & ~__c) | (__b & __c);
   6609 }
   6610 
   6611 static __inline__ vector short __ATTRS_o_ai
   6612 vec_vsel(vector short __a, vector short __b, vector unsigned short __c) {
   6613   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
   6614 }
   6615 
   6616 static __inline__ vector short __ATTRS_o_ai vec_vsel(vector short __a,
   6617                                                      vector short __b,
   6618                                                      vector bool short __c) {
   6619   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
   6620 }
   6621 
   6622 static __inline__ vector unsigned short __ATTRS_o_ai
   6623 vec_vsel(vector unsigned short __a, vector unsigned short __b,
   6624          vector unsigned short __c) {
   6625   return (__a & ~__c) | (__b & __c);
   6626 }
   6627 
   6628 static __inline__ vector unsigned short __ATTRS_o_ai
   6629 vec_vsel(vector unsigned short __a, vector unsigned short __b,
   6630          vector bool short __c) {
   6631   return (__a & ~(vector unsigned short)__c) |
   6632          (__b & (vector unsigned short)__c);
   6633 }
   6634 
   6635 static __inline__ vector bool short __ATTRS_o_ai vec_vsel(
   6636     vector bool short __a, vector bool short __b, vector unsigned short __c) {
   6637   return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
   6638 }
   6639 
   6640 static __inline__ vector bool short __ATTRS_o_ai
   6641 vec_vsel(vector bool short __a, vector bool short __b, vector bool short __c) {
   6642   return (__a & ~__c) | (__b & __c);
   6643 }
   6644 
   6645 static __inline__ vector int __ATTRS_o_ai vec_vsel(vector int __a,
   6646                                                    vector int __b,
   6647                                                    vector unsigned int __c) {
   6648   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
   6649 }
   6650 
   6651 static __inline__ vector int __ATTRS_o_ai vec_vsel(vector int __a,
   6652                                                    vector int __b,
   6653                                                    vector bool int __c) {
   6654   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
   6655 }
   6656 
   6657 static __inline__ vector unsigned int __ATTRS_o_ai vec_vsel(
   6658     vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
   6659   return (__a & ~__c) | (__b & __c);
   6660 }
   6661 
   6662 static __inline__ vector unsigned int __ATTRS_o_ai vec_vsel(
   6663     vector unsigned int __a, vector unsigned int __b, vector bool int __c) {
   6664   return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
   6665 }
   6666 
   6667 static __inline__ vector bool int __ATTRS_o_ai
   6668 vec_vsel(vector bool int __a, vector bool int __b, vector unsigned int __c) {
   6669   return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
   6670 }
   6671 
   6672 static __inline__ vector bool int __ATTRS_o_ai vec_vsel(vector bool int __a,
   6673                                                         vector bool int __b,
   6674                                                         vector bool int __c) {
   6675   return (__a & ~__c) | (__b & __c);
   6676 }
   6677 
   6678 static __inline__ vector float __ATTRS_o_ai vec_vsel(vector float __a,
   6679                                                      vector float __b,
   6680                                                      vector unsigned int __c) {
   6681   vector int __res = ((vector int)__a & ~(vector int)__c) |
   6682                      ((vector int)__b & (vector int)__c);
   6683   return (vector float)__res;
   6684 }
   6685 
   6686 static __inline__ vector float __ATTRS_o_ai vec_vsel(vector float __a,
   6687                                                      vector float __b,
   6688                                                      vector bool int __c) {
   6689   vector int __res = ((vector int)__a & ~(vector int)__c) |
   6690                      ((vector int)__b & (vector int)__c);
   6691   return (vector float)__res;
   6692 }
   6693 
   6694 /* vec_sl */
   6695 
   6696 static __inline__ vector signed char __ATTRS_o_ai
   6697 vec_sl(vector signed char __a, vector unsigned char __b) {
   6698   return __a << (vector signed char)__b;
   6699 }
   6700 
   6701 static __inline__ vector unsigned char __ATTRS_o_ai
   6702 vec_sl(vector unsigned char __a, vector unsigned char __b) {
   6703   return __a << __b;
   6704 }
   6705 
   6706 static __inline__ vector short __ATTRS_o_ai vec_sl(vector short __a,
   6707                                                    vector unsigned short __b) {
   6708   return __a << (vector short)__b;
   6709 }
   6710 
   6711 static __inline__ vector unsigned short __ATTRS_o_ai
   6712 vec_sl(vector unsigned short __a, vector unsigned short __b) {
   6713   return __a << __b;
   6714 }
   6715 
   6716 static __inline__ vector int __ATTRS_o_ai vec_sl(vector int __a,
   6717                                                  vector unsigned int __b) {
   6718   return __a << (vector int)__b;
   6719 }
   6720 
   6721 static __inline__ vector unsigned int __ATTRS_o_ai
   6722 vec_sl(vector unsigned int __a, vector unsigned int __b) {
   6723   return __a << __b;
   6724 }
   6725 
   6726 #ifdef __POWER8_VECTOR__
   6727 static __inline__ vector signed long long __ATTRS_o_ai
   6728 vec_sl(vector signed long long __a, vector unsigned long long __b) {
   6729   return __a << (vector long long)__b;
   6730 }
   6731 
   6732 static __inline__ vector unsigned long long __ATTRS_o_ai
   6733 vec_sl(vector unsigned long long __a, vector unsigned long long __b) {
   6734   return __a << __b;
   6735 }
   6736 #endif
   6737 
   6738 /* vec_vslb */
   6739 
   6740 #define __builtin_altivec_vslb vec_vslb
   6741 
   6742 static __inline__ vector signed char __ATTRS_o_ai
   6743 vec_vslb(vector signed char __a, vector unsigned char __b) {
   6744   return vec_sl(__a, __b);
   6745 }
   6746 
   6747 static __inline__ vector unsigned char __ATTRS_o_ai
   6748 vec_vslb(vector unsigned char __a, vector unsigned char __b) {
   6749   return vec_sl(__a, __b);
   6750 }
   6751 
   6752 /* vec_vslh */
   6753 
   6754 #define __builtin_altivec_vslh vec_vslh
   6755 
   6756 static __inline__ vector short __ATTRS_o_ai
   6757 vec_vslh(vector short __a, vector unsigned short __b) {
   6758   return vec_sl(__a, __b);
   6759 }
   6760 
   6761 static __inline__ vector unsigned short __ATTRS_o_ai
   6762 vec_vslh(vector unsigned short __a, vector unsigned short __b) {
   6763   return vec_sl(__a, __b);
   6764 }
   6765 
   6766 /* vec_vslw */
   6767 
   6768 #define __builtin_altivec_vslw vec_vslw
   6769 
   6770 static __inline__ vector int __ATTRS_o_ai vec_vslw(vector int __a,
   6771                                                    vector unsigned int __b) {
   6772   return vec_sl(__a, __b);
   6773 }
   6774 
   6775 static __inline__ vector unsigned int __ATTRS_o_ai
   6776 vec_vslw(vector unsigned int __a, vector unsigned int __b) {
   6777   return vec_sl(__a, __b);
   6778 }
   6779 
   6780 /* vec_sld */
   6781 
   6782 #define __builtin_altivec_vsldoi_4si vec_sld
   6783 
   6784 static __inline__ vector signed char __ATTRS_o_ai vec_sld(
   6785     vector signed char __a, vector signed char __b, unsigned const int __c) {
   6786   unsigned char __d = __c & 0x0F;
   6787 #ifdef __LITTLE_ENDIAN__
   6788   return vec_perm(
   6789       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   6790                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   6791                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   6792                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   6793 #else
   6794   return vec_perm(
   6795       __a, __b,
   6796       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   6797                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   6798                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   6799 #endif
   6800 }
   6801 
   6802 static __inline__ vector unsigned char __ATTRS_o_ai
   6803 vec_sld(vector unsigned char __a, vector unsigned char __b,
   6804         unsigned const int __c) {
   6805   unsigned char __d = __c & 0x0F;
   6806 #ifdef __LITTLE_ENDIAN__
   6807   return vec_perm(
   6808       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   6809                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   6810                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   6811                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   6812 #else
   6813   return vec_perm(
   6814       __a, __b,
   6815       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   6816                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   6817                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   6818 #endif
   6819 }
   6820 
   6821 static __inline__ vector bool char __ATTRS_o_ai
   6822 vec_sld(vector bool char __a, vector bool char __b, unsigned const int __c) {
   6823   unsigned char __d = __c & 0x0F;
   6824 #ifdef __LITTLE_ENDIAN__
   6825   return vec_perm(
   6826       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   6827                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   6828                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   6829                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   6830 #else
   6831   return vec_perm(
   6832       __a, __b,
   6833       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   6834                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   6835                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   6836 #endif
   6837 }
   6838 
   6839 static __inline__ vector signed short __ATTRS_o_ai vec_sld(
   6840     vector signed short __a, vector signed short __b, unsigned const int __c) {
   6841   unsigned char __d = __c & 0x0F;
   6842 #ifdef __LITTLE_ENDIAN__
   6843   return vec_perm(
   6844       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   6845                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   6846                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   6847                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   6848 #else
   6849   return vec_perm(
   6850       __a, __b,
   6851       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   6852                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   6853                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   6854 #endif
   6855 }
   6856 
   6857 static __inline__ vector unsigned short __ATTRS_o_ai
   6858 vec_sld(vector unsigned short __a, vector unsigned short __b,
   6859         unsigned const int __c) {
   6860   unsigned char __d = __c & 0x0F;
   6861 #ifdef __LITTLE_ENDIAN__
   6862   return vec_perm(
   6863       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   6864                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   6865                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   6866                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   6867 #else
   6868   return vec_perm(
   6869       __a, __b,
   6870       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   6871                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   6872                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   6873 #endif
   6874 }
   6875 
   6876 static __inline__ vector bool short __ATTRS_o_ai
   6877 vec_sld(vector bool short __a, vector bool short __b, unsigned const int __c) {
   6878   unsigned char __d = __c & 0x0F;
   6879 #ifdef __LITTLE_ENDIAN__
   6880   return vec_perm(
   6881       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   6882                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   6883                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   6884                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   6885 #else
   6886   return vec_perm(
   6887       __a, __b,
   6888       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   6889                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   6890                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   6891 #endif
   6892 }
   6893 
   6894 static __inline__ vector pixel __ATTRS_o_ai vec_sld(vector pixel __a,
   6895                                                     vector pixel __b,
   6896                                                     unsigned const int __c) {
   6897   unsigned char __d = __c & 0x0F;
   6898 #ifdef __LITTLE_ENDIAN__
   6899   return vec_perm(
   6900       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   6901                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   6902                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   6903                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   6904 #else
   6905   return vec_perm(
   6906       __a, __b,
   6907       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   6908                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   6909                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   6910 #endif
   6911 }
   6912 
   6913 static __inline__ vector signed int __ATTRS_o_ai
   6914 vec_sld(vector signed int __a, vector signed int __b, unsigned const int __c) {
   6915   unsigned char __d = __c & 0x0F;
   6916 #ifdef __LITTLE_ENDIAN__
   6917   return vec_perm(
   6918       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   6919                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   6920                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   6921                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   6922 #else
   6923   return vec_perm(
   6924       __a, __b,
   6925       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   6926                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   6927                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   6928 #endif
   6929 }
   6930 
   6931 static __inline__ vector unsigned int __ATTRS_o_ai vec_sld(
   6932     vector unsigned int __a, vector unsigned int __b, unsigned const int __c) {
   6933   unsigned char __d = __c & 0x0F;
   6934 #ifdef __LITTLE_ENDIAN__
   6935   return vec_perm(
   6936       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   6937                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   6938                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   6939                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   6940 #else
   6941   return vec_perm(
   6942       __a, __b,
   6943       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   6944                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   6945                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   6946 #endif
   6947 }
   6948 
   6949 static __inline__ vector bool int __ATTRS_o_ai vec_sld(vector bool int __a,
   6950                                                        vector bool int __b,
   6951                                                        unsigned const int __c) {
   6952   unsigned char __d = __c & 0x0F;
   6953 #ifdef __LITTLE_ENDIAN__
   6954   return vec_perm(
   6955       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   6956                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   6957                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   6958                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   6959 #else
   6960   return vec_perm(
   6961       __a, __b,
   6962       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   6963                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   6964                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   6965 #endif
   6966 }
   6967 
   6968 static __inline__ vector float __ATTRS_o_ai vec_sld(vector float __a,
   6969                                                     vector float __b,
   6970                                                     unsigned const int __c) {
   6971   unsigned char __d = __c & 0x0F;
   6972 #ifdef __LITTLE_ENDIAN__
   6973   return vec_perm(
   6974       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   6975                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   6976                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   6977                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   6978 #else
   6979   return vec_perm(
   6980       __a, __b,
   6981       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   6982                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   6983                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   6984 #endif
   6985 }
   6986 
   6987 /* vec_vsldoi */
   6988 
   6989 static __inline__ vector signed char __ATTRS_o_ai
   6990 vec_vsldoi(vector signed char __a, vector signed char __b, unsigned char __c) {
   6991   unsigned char __d = __c & 0x0F;
   6992 #ifdef __LITTLE_ENDIAN__
   6993   return vec_perm(
   6994       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   6995                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   6996                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   6997                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   6998 #else
   6999   return vec_perm(
   7000       __a, __b,
   7001       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   7002                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   7003                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   7004 #endif
   7005 }
   7006 
   7007 static __inline__ vector unsigned char __ATTRS_o_ai vec_vsldoi(
   7008     vector unsigned char __a, vector unsigned char __b, unsigned char __c) {
   7009   unsigned char __d = __c & 0x0F;
   7010 #ifdef __LITTLE_ENDIAN__
   7011   return vec_perm(
   7012       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   7013                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   7014                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   7015                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   7016 #else
   7017   return vec_perm(
   7018       __a, __b,
   7019       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   7020                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   7021                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   7022 #endif
   7023 }
   7024 
   7025 static __inline__ vector short __ATTRS_o_ai vec_vsldoi(vector short __a,
   7026                                                        vector short __b,
   7027                                                        unsigned char __c) {
   7028   unsigned char __d = __c & 0x0F;
   7029 #ifdef __LITTLE_ENDIAN__
   7030   return vec_perm(
   7031       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   7032                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   7033                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   7034                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   7035 #else
   7036   return vec_perm(
   7037       __a, __b,
   7038       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   7039                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   7040                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   7041 #endif
   7042 }
   7043 
   7044 static __inline__ vector unsigned short __ATTRS_o_ai vec_vsldoi(
   7045     vector unsigned short __a, vector unsigned short __b, unsigned char __c) {
   7046   unsigned char __d = __c & 0x0F;
   7047 #ifdef __LITTLE_ENDIAN__
   7048   return vec_perm(
   7049       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   7050                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   7051                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   7052                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   7053 #else
   7054   return vec_perm(
   7055       __a, __b,
   7056       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   7057                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   7058                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   7059 #endif
   7060 }
   7061 
   7062 static __inline__ vector pixel __ATTRS_o_ai vec_vsldoi(vector pixel __a,
   7063                                                        vector pixel __b,
   7064                                                        unsigned char __c) {
   7065   unsigned char __d = __c & 0x0F;
   7066 #ifdef __LITTLE_ENDIAN__
   7067   return vec_perm(
   7068       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   7069                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   7070                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   7071                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   7072 #else
   7073   return vec_perm(
   7074       __a, __b,
   7075       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   7076                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   7077                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   7078 #endif
   7079 }
   7080 
   7081 static __inline__ vector int __ATTRS_o_ai vec_vsldoi(vector int __a,
   7082                                                      vector int __b,
   7083                                                      unsigned char __c) {
   7084   unsigned char __d = __c & 0x0F;
   7085 #ifdef __LITTLE_ENDIAN__
   7086   return vec_perm(
   7087       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   7088                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   7089                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   7090                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   7091 #else
   7092   return vec_perm(
   7093       __a, __b,
   7094       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   7095                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   7096                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   7097 #endif
   7098 }
   7099 
   7100 static __inline__ vector unsigned int __ATTRS_o_ai vec_vsldoi(
   7101     vector unsigned int __a, vector unsigned int __b, unsigned char __c) {
   7102   unsigned char __d = __c & 0x0F;
   7103 #ifdef __LITTLE_ENDIAN__
   7104   return vec_perm(
   7105       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   7106                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   7107                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   7108                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   7109 #else
   7110   return vec_perm(
   7111       __a, __b,
   7112       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   7113                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   7114                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   7115 #endif
   7116 }
   7117 
   7118 static __inline__ vector float __ATTRS_o_ai vec_vsldoi(vector float __a,
   7119                                                        vector float __b,
   7120                                                        unsigned char __c) {
   7121   unsigned char __d = __c & 0x0F;
   7122 #ifdef __LITTLE_ENDIAN__
   7123   return vec_perm(
   7124       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   7125                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   7126                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   7127                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   7128 #else
   7129   return vec_perm(
   7130       __a, __b,
   7131       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   7132                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   7133                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   7134 #endif
   7135 }
   7136 
   7137 /* vec_sll */
   7138 
   7139 static __inline__ vector signed char __ATTRS_o_ai
   7140 vec_sll(vector signed char __a, vector unsigned char __b) {
   7141   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
   7142                                                    (vector int)__b);
   7143 }
   7144 
   7145 static __inline__ vector signed char __ATTRS_o_ai
   7146 vec_sll(vector signed char __a, vector unsigned short __b) {
   7147   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
   7148                                                    (vector int)__b);
   7149 }
   7150 
   7151 static __inline__ vector signed char __ATTRS_o_ai
   7152 vec_sll(vector signed char __a, vector unsigned int __b) {
   7153   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
   7154                                                    (vector int)__b);
   7155 }
   7156 
   7157 static __inline__ vector unsigned char __ATTRS_o_ai
   7158 vec_sll(vector unsigned char __a, vector unsigned char __b) {
   7159   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
   7160                                                      (vector int)__b);
   7161 }
   7162 
   7163 static __inline__ vector unsigned char __ATTRS_o_ai
   7164 vec_sll(vector unsigned char __a, vector unsigned short __b) {
   7165   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
   7166                                                      (vector int)__b);
   7167 }
   7168 
   7169 static __inline__ vector unsigned char __ATTRS_o_ai
   7170 vec_sll(vector unsigned char __a, vector unsigned int __b) {
   7171   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
   7172                                                      (vector int)__b);
   7173 }
   7174 
   7175 static __inline__ vector bool char __ATTRS_o_ai
   7176 vec_sll(vector bool char __a, vector unsigned char __b) {
   7177   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
   7178                                                  (vector int)__b);
   7179 }
   7180 
   7181 static __inline__ vector bool char __ATTRS_o_ai
   7182 vec_sll(vector bool char __a, vector unsigned short __b) {
   7183   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
   7184                                                  (vector int)__b);
   7185 }
   7186 
   7187 static __inline__ vector bool char __ATTRS_o_ai
   7188 vec_sll(vector bool char __a, vector unsigned int __b) {
   7189   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
   7190                                                  (vector int)__b);
   7191 }
   7192 
   7193 static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
   7194                                                     vector unsigned char __b) {
   7195   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   7196 }
   7197 
   7198 static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
   7199                                                     vector unsigned short __b) {
   7200   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   7201 }
   7202 
   7203 static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
   7204                                                     vector unsigned int __b) {
   7205   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   7206 }
   7207 
   7208 static __inline__ vector unsigned short __ATTRS_o_ai
   7209 vec_sll(vector unsigned short __a, vector unsigned char __b) {
   7210   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
   7211                                                       (vector int)__b);
   7212 }
   7213 
   7214 static __inline__ vector unsigned short __ATTRS_o_ai
   7215 vec_sll(vector unsigned short __a, vector unsigned short __b) {
   7216   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
   7217                                                       (vector int)__b);
   7218 }
   7219 
   7220 static __inline__ vector unsigned short __ATTRS_o_ai
   7221 vec_sll(vector unsigned short __a, vector unsigned int __b) {
   7222   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
   7223                                                       (vector int)__b);
   7224 }
   7225 
   7226 static __inline__ vector bool short __ATTRS_o_ai
   7227 vec_sll(vector bool short __a, vector unsigned char __b) {
   7228   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
   7229                                                   (vector int)__b);
   7230 }
   7231 
   7232 static __inline__ vector bool short __ATTRS_o_ai
   7233 vec_sll(vector bool short __a, vector unsigned short __b) {
   7234   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
   7235                                                   (vector int)__b);
   7236 }
   7237 
   7238 static __inline__ vector bool short __ATTRS_o_ai
   7239 vec_sll(vector bool short __a, vector unsigned int __b) {
   7240   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
   7241                                                   (vector int)__b);
   7242 }
   7243 
   7244 static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
   7245                                                     vector unsigned char __b) {
   7246   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   7247 }
   7248 
   7249 static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
   7250                                                     vector unsigned short __b) {
   7251   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   7252 }
   7253 
   7254 static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
   7255                                                     vector unsigned int __b) {
   7256   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   7257 }
   7258 
   7259 static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
   7260                                                   vector unsigned char __b) {
   7261   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
   7262 }
   7263 
   7264 static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
   7265                                                   vector unsigned short __b) {
   7266   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
   7267 }
   7268 
   7269 static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
   7270                                                   vector unsigned int __b) {
   7271   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
   7272 }
   7273 
   7274 static __inline__ vector unsigned int __ATTRS_o_ai
   7275 vec_sll(vector unsigned int __a, vector unsigned char __b) {
   7276   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
   7277                                                     (vector int)__b);
   7278 }
   7279 
   7280 static __inline__ vector unsigned int __ATTRS_o_ai
   7281 vec_sll(vector unsigned int __a, vector unsigned short __b) {
   7282   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
   7283                                                     (vector int)__b);
   7284 }
   7285 
   7286 static __inline__ vector unsigned int __ATTRS_o_ai
   7287 vec_sll(vector unsigned int __a, vector unsigned int __b) {
   7288   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
   7289                                                     (vector int)__b);
   7290 }
   7291 
   7292 static __inline__ vector bool int __ATTRS_o_ai
   7293 vec_sll(vector bool int __a, vector unsigned char __b) {
   7294   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
   7295                                                 (vector int)__b);
   7296 }
   7297 
   7298 static __inline__ vector bool int __ATTRS_o_ai
   7299 vec_sll(vector bool int __a, vector unsigned short __b) {
   7300   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
   7301                                                 (vector int)__b);
   7302 }
   7303 
   7304 static __inline__ vector bool int __ATTRS_o_ai
   7305 vec_sll(vector bool int __a, vector unsigned int __b) {
   7306   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
   7307                                                 (vector int)__b);
   7308 }
   7309 
   7310 /* vec_vsl */
   7311 
   7312 static __inline__ vector signed char __ATTRS_o_ai
   7313 vec_vsl(vector signed char __a, vector unsigned char __b) {
   7314   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
   7315                                                    (vector int)__b);
   7316 }
   7317 
   7318 static __inline__ vector signed char __ATTRS_o_ai
   7319 vec_vsl(vector signed char __a, vector unsigned short __b) {
   7320   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
   7321                                                    (vector int)__b);
   7322 }
   7323 
   7324 static __inline__ vector signed char __ATTRS_o_ai
   7325 vec_vsl(vector signed char __a, vector unsigned int __b) {
   7326   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
   7327                                                    (vector int)__b);
   7328 }
   7329 
   7330 static __inline__ vector unsigned char __ATTRS_o_ai
   7331 vec_vsl(vector unsigned char __a, vector unsigned char __b) {
   7332   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
   7333                                                      (vector int)__b);
   7334 }
   7335 
   7336 static __inline__ vector unsigned char __ATTRS_o_ai
   7337 vec_vsl(vector unsigned char __a, vector unsigned short __b) {
   7338   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
   7339                                                      (vector int)__b);
   7340 }
   7341 
   7342 static __inline__ vector unsigned char __ATTRS_o_ai
   7343 vec_vsl(vector unsigned char __a, vector unsigned int __b) {
   7344   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
   7345                                                      (vector int)__b);
   7346 }
   7347 
   7348 static __inline__ vector bool char __ATTRS_o_ai
   7349 vec_vsl(vector bool char __a, vector unsigned char __b) {
   7350   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
   7351                                                  (vector int)__b);
   7352 }
   7353 
   7354 static __inline__ vector bool char __ATTRS_o_ai
   7355 vec_vsl(vector bool char __a, vector unsigned short __b) {
   7356   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
   7357                                                  (vector int)__b);
   7358 }
   7359 
   7360 static __inline__ vector bool char __ATTRS_o_ai
   7361 vec_vsl(vector bool char __a, vector unsigned int __b) {
   7362   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
   7363                                                  (vector int)__b);
   7364 }
   7365 
   7366 static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
   7367                                                     vector unsigned char __b) {
   7368   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   7369 }
   7370 
   7371 static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
   7372                                                     vector unsigned short __b) {
   7373   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   7374 }
   7375 
   7376 static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
   7377                                                     vector unsigned int __b) {
   7378   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   7379 }
   7380 
   7381 static __inline__ vector unsigned short __ATTRS_o_ai
   7382 vec_vsl(vector unsigned short __a, vector unsigned char __b) {
   7383   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
   7384                                                       (vector int)__b);
   7385 }
   7386 
   7387 static __inline__ vector unsigned short __ATTRS_o_ai
   7388 vec_vsl(vector unsigned short __a, vector unsigned short __b) {
   7389   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
   7390                                                       (vector int)__b);
   7391 }
   7392 
   7393 static __inline__ vector unsigned short __ATTRS_o_ai
   7394 vec_vsl(vector unsigned short __a, vector unsigned int __b) {
   7395   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
   7396                                                       (vector int)__b);
   7397 }
   7398 
   7399 static __inline__ vector bool short __ATTRS_o_ai
   7400 vec_vsl(vector bool short __a, vector unsigned char __b) {
   7401   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
   7402                                                   (vector int)__b);
   7403 }
   7404 
   7405 static __inline__ vector bool short __ATTRS_o_ai
   7406 vec_vsl(vector bool short __a, vector unsigned short __b) {
   7407   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
   7408                                                   (vector int)__b);
   7409 }
   7410 
   7411 static __inline__ vector bool short __ATTRS_o_ai
   7412 vec_vsl(vector bool short __a, vector unsigned int __b) {
   7413   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
   7414                                                   (vector int)__b);
   7415 }
   7416 
   7417 static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
   7418                                                     vector unsigned char __b) {
   7419   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   7420 }
   7421 
   7422 static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
   7423                                                     vector unsigned short __b) {
   7424   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   7425 }
   7426 
   7427 static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
   7428                                                     vector unsigned int __b) {
   7429   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   7430 }
   7431 
   7432 static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
   7433                                                   vector unsigned char __b) {
   7434   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
   7435 }
   7436 
   7437 static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
   7438                                                   vector unsigned short __b) {
   7439   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
   7440 }
   7441 
   7442 static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
   7443                                                   vector unsigned int __b) {
   7444   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
   7445 }
   7446 
   7447 static __inline__ vector unsigned int __ATTRS_o_ai
   7448 vec_vsl(vector unsigned int __a, vector unsigned char __b) {
   7449   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
   7450                                                     (vector int)__b);
   7451 }
   7452 
   7453 static __inline__ vector unsigned int __ATTRS_o_ai
   7454 vec_vsl(vector unsigned int __a, vector unsigned short __b) {
   7455   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
   7456                                                     (vector int)__b);
   7457 }
   7458 
   7459 static __inline__ vector unsigned int __ATTRS_o_ai
   7460 vec_vsl(vector unsigned int __a, vector unsigned int __b) {
   7461   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
   7462                                                     (vector int)__b);
   7463 }
   7464 
   7465 static __inline__ vector bool int __ATTRS_o_ai
   7466 vec_vsl(vector bool int __a, vector unsigned char __b) {
   7467   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
   7468                                                 (vector int)__b);
   7469 }
   7470 
   7471 static __inline__ vector bool int __ATTRS_o_ai
   7472 vec_vsl(vector bool int __a, vector unsigned short __b) {
   7473   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
   7474                                                 (vector int)__b);
   7475 }
   7476 
   7477 static __inline__ vector bool int __ATTRS_o_ai
   7478 vec_vsl(vector bool int __a, vector unsigned int __b) {
   7479   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
   7480                                                 (vector int)__b);
   7481 }
   7482 
   7483 /* vec_slo */
   7484 
   7485 static __inline__ vector signed char __ATTRS_o_ai
   7486 vec_slo(vector signed char __a, vector signed char __b) {
   7487   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
   7488                                                     (vector int)__b);
   7489 }
   7490 
   7491 static __inline__ vector signed char __ATTRS_o_ai
   7492 vec_slo(vector signed char __a, vector unsigned char __b) {
   7493   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
   7494                                                     (vector int)__b);
   7495 }
   7496 
   7497 static __inline__ vector unsigned char __ATTRS_o_ai
   7498 vec_slo(vector unsigned char __a, vector signed char __b) {
   7499   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
   7500                                                       (vector int)__b);
   7501 }
   7502 
   7503 static __inline__ vector unsigned char __ATTRS_o_ai
   7504 vec_slo(vector unsigned char __a, vector unsigned char __b) {
   7505   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
   7506                                                       (vector int)__b);
   7507 }
   7508 
   7509 static __inline__ vector short __ATTRS_o_ai vec_slo(vector short __a,
   7510                                                     vector signed char __b) {
   7511   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   7512 }
   7513 
   7514 static __inline__ vector short __ATTRS_o_ai vec_slo(vector short __a,
   7515                                                     vector unsigned char __b) {
   7516   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   7517 }
   7518 
   7519 static __inline__ vector unsigned short __ATTRS_o_ai
   7520 vec_slo(vector unsigned short __a, vector signed char __b) {
   7521   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
   7522                                                        (vector int)__b);
   7523 }
   7524 
   7525 static __inline__ vector unsigned short __ATTRS_o_ai
   7526 vec_slo(vector unsigned short __a, vector unsigned char __b) {
   7527   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
   7528                                                        (vector int)__b);
   7529 }
   7530 
   7531 static __inline__ vector pixel __ATTRS_o_ai vec_slo(vector pixel __a,
   7532                                                     vector signed char __b) {
   7533   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   7534 }
   7535 
   7536 static __inline__ vector pixel __ATTRS_o_ai vec_slo(vector pixel __a,
   7537                                                     vector unsigned char __b) {
   7538   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   7539 }
   7540 
   7541 static __inline__ vector int __ATTRS_o_ai vec_slo(vector int __a,
   7542                                                   vector signed char __b) {
   7543   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
   7544 }
   7545 
   7546 static __inline__ vector int __ATTRS_o_ai vec_slo(vector int __a,
   7547                                                   vector unsigned char __b) {
   7548   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
   7549 }
   7550 
   7551 static __inline__ vector unsigned int __ATTRS_o_ai
   7552 vec_slo(vector unsigned int __a, vector signed char __b) {
   7553   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
   7554                                                      (vector int)__b);
   7555 }
   7556 
   7557 static __inline__ vector unsigned int __ATTRS_o_ai
   7558 vec_slo(vector unsigned int __a, vector unsigned char __b) {
   7559   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
   7560                                                      (vector int)__b);
   7561 }
   7562 
   7563 static __inline__ vector float __ATTRS_o_ai vec_slo(vector float __a,
   7564                                                     vector signed char __b) {
   7565   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   7566 }
   7567 
   7568 static __inline__ vector float __ATTRS_o_ai vec_slo(vector float __a,
   7569                                                     vector unsigned char __b) {
   7570   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   7571 }
   7572 
   7573 /* vec_vslo */
   7574 
   7575 static __inline__ vector signed char __ATTRS_o_ai
   7576 vec_vslo(vector signed char __a, vector signed char __b) {
   7577   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
   7578                                                     (vector int)__b);
   7579 }
   7580 
   7581 static __inline__ vector signed char __ATTRS_o_ai
   7582 vec_vslo(vector signed char __a, vector unsigned char __b) {
   7583   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
   7584                                                     (vector int)__b);
   7585 }
   7586 
   7587 static __inline__ vector unsigned char __ATTRS_o_ai
   7588 vec_vslo(vector unsigned char __a, vector signed char __b) {
   7589   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
   7590                                                       (vector int)__b);
   7591 }
   7592 
   7593 static __inline__ vector unsigned char __ATTRS_o_ai
   7594 vec_vslo(vector unsigned char __a, vector unsigned char __b) {
   7595   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
   7596                                                       (vector int)__b);
   7597 }
   7598 
   7599 static __inline__ vector short __ATTRS_o_ai vec_vslo(vector short __a,
   7600                                                      vector signed char __b) {
   7601   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   7602 }
   7603 
   7604 static __inline__ vector short __ATTRS_o_ai vec_vslo(vector short __a,
   7605                                                      vector unsigned char __b) {
   7606   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   7607 }
   7608 
   7609 static __inline__ vector unsigned short __ATTRS_o_ai
   7610 vec_vslo(vector unsigned short __a, vector signed char __b) {
   7611   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
   7612                                                        (vector int)__b);
   7613 }
   7614 
   7615 static __inline__ vector unsigned short __ATTRS_o_ai
   7616 vec_vslo(vector unsigned short __a, vector unsigned char __b) {
   7617   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
   7618                                                        (vector int)__b);
   7619 }
   7620 
   7621 static __inline__ vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a,
   7622                                                      vector signed char __b) {
   7623   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   7624 }
   7625 
   7626 static __inline__ vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a,
   7627                                                      vector unsigned char __b) {
   7628   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   7629 }
   7630 
   7631 static __inline__ vector int __ATTRS_o_ai vec_vslo(vector int __a,
   7632                                                    vector signed char __b) {
   7633   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
   7634 }
   7635 
   7636 static __inline__ vector int __ATTRS_o_ai vec_vslo(vector int __a,
   7637                                                    vector unsigned char __b) {
   7638   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
   7639 }
   7640 
   7641 static __inline__ vector unsigned int __ATTRS_o_ai
   7642 vec_vslo(vector unsigned int __a, vector signed char __b) {
   7643   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
   7644                                                      (vector int)__b);
   7645 }
   7646 
   7647 static __inline__ vector unsigned int __ATTRS_o_ai
   7648 vec_vslo(vector unsigned int __a, vector unsigned char __b) {
   7649   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
   7650                                                      (vector int)__b);
   7651 }
   7652 
   7653 static __inline__ vector float __ATTRS_o_ai vec_vslo(vector float __a,
   7654                                                      vector signed char __b) {
   7655   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   7656 }
   7657 
   7658 static __inline__ vector float __ATTRS_o_ai vec_vslo(vector float __a,
   7659                                                      vector unsigned char __b) {
   7660   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   7661 }
   7662 
   7663 /* vec_splat */
   7664 
   7665 static __inline__ vector signed char __ATTRS_o_ai
   7666 vec_splat(vector signed char __a, unsigned const int __b) {
   7667   return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
   7668 }
   7669 
   7670 static __inline__ vector unsigned char __ATTRS_o_ai
   7671 vec_splat(vector unsigned char __a, unsigned const int __b) {
   7672   return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
   7673 }
   7674 
   7675 static __inline__ vector bool char __ATTRS_o_ai
   7676 vec_splat(vector bool char __a, unsigned const int __b) {
   7677   return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
   7678 }
   7679 
   7680 static __inline__ vector signed short __ATTRS_o_ai
   7681 vec_splat(vector signed short __a, unsigned const int __b) {
   7682   unsigned char b0 = (__b & 0x07) * 2;
   7683   unsigned char b1 = b0 + 1;
   7684   return vec_perm(__a, __a,
   7685                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
   7686                                          b0, b1, b0, b1, b0, b1));
   7687 }
   7688 
   7689 static __inline__ vector unsigned short __ATTRS_o_ai
   7690 vec_splat(vector unsigned short __a, unsigned const int __b) {
   7691   unsigned char b0 = (__b & 0x07) * 2;
   7692   unsigned char b1 = b0 + 1;
   7693   return vec_perm(__a, __a,
   7694                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
   7695                                          b0, b1, b0, b1, b0, b1));
   7696 }
   7697 
   7698 static __inline__ vector bool short __ATTRS_o_ai
   7699 vec_splat(vector bool short __a, unsigned const int __b) {
   7700   unsigned char b0 = (__b & 0x07) * 2;
   7701   unsigned char b1 = b0 + 1;
   7702   return vec_perm(__a, __a,
   7703                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
   7704                                          b0, b1, b0, b1, b0, b1));
   7705 }
   7706 
   7707 static __inline__ vector pixel __ATTRS_o_ai vec_splat(vector pixel __a,
   7708                                                       unsigned const int __b) {
   7709   unsigned char b0 = (__b & 0x07) * 2;
   7710   unsigned char b1 = b0 + 1;
   7711   return vec_perm(__a, __a,
   7712                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
   7713                                          b0, b1, b0, b1, b0, b1));
   7714 }
   7715 
   7716 static __inline__ vector signed int __ATTRS_o_ai
   7717 vec_splat(vector signed int __a, unsigned const int __b) {
   7718   unsigned char b0 = (__b & 0x03) * 4;
   7719   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
   7720   return vec_perm(__a, __a,
   7721                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
   7722                                          b2, b3, b0, b1, b2, b3));
   7723 }
   7724 
   7725 static __inline__ vector unsigned int __ATTRS_o_ai
   7726 vec_splat(vector unsigned int __a, unsigned const int __b) {
   7727   unsigned char b0 = (__b & 0x03) * 4;
   7728   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
   7729   return vec_perm(__a, __a,
   7730                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
   7731                                          b2, b3, b0, b1, b2, b3));
   7732 }
   7733 
   7734 static __inline__ vector bool int __ATTRS_o_ai
   7735 vec_splat(vector bool int __a, unsigned const int __b) {
   7736   unsigned char b0 = (__b & 0x03) * 4;
   7737   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
   7738   return vec_perm(__a, __a,
   7739                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
   7740                                          b2, b3, b0, b1, b2, b3));
   7741 }
   7742 
   7743 static __inline__ vector float __ATTRS_o_ai vec_splat(vector float __a,
   7744                                                       unsigned const int __b) {
   7745   unsigned char b0 = (__b & 0x03) * 4;
   7746   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
   7747   return vec_perm(__a, __a,
   7748                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
   7749                                          b2, b3, b0, b1, b2, b3));
   7750 }
   7751 
   7752 #ifdef __VSX__
   7753 static __inline__ vector double __ATTRS_o_ai vec_splat(vector double __a,
   7754                                                        unsigned const int __b) {
   7755   unsigned char b0 = (__b & 0x01) * 8;
   7756   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
   7757                 b6 = b0 + 6, b7 = b0 + 7;
   7758   return vec_perm(__a, __a,
   7759                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
   7760                                          b2, b3, b4, b5, b6, b7));
   7761 }
   7762 static __inline__ vector bool long long __ATTRS_o_ai
   7763 vec_splat(vector bool long long __a, unsigned const int __b) {
   7764   unsigned char b0 = (__b & 0x01) * 8;
   7765   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
   7766                 b6 = b0 + 6, b7 = b0 + 7;
   7767   return vec_perm(__a, __a,
   7768                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
   7769                                          b2, b3, b4, b5, b6, b7));
   7770 }
   7771 static __inline__ vector signed long long __ATTRS_o_ai
   7772 vec_splat(vector signed long long __a, unsigned const int __b) {
   7773   unsigned char b0 = (__b & 0x01) * 8;
   7774   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
   7775                 b6 = b0 + 6, b7 = b0 + 7;
   7776   return vec_perm(__a, __a,
   7777                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
   7778                                          b2, b3, b4, b5, b6, b7));
   7779 }
   7780 static __inline__ vector unsigned long long __ATTRS_o_ai
   7781 vec_splat(vector unsigned long long __a, unsigned const int __b) {
   7782   unsigned char b0 = (__b & 0x01) * 8;
   7783   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
   7784                 b6 = b0 + 6, b7 = b0 + 7;
   7785   return vec_perm(__a, __a,
   7786                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
   7787                                          b2, b3, b4, b5, b6, b7));
   7788 }
   7789 #endif
   7790 
   7791 /* vec_vspltb */
   7792 
   7793 #define __builtin_altivec_vspltb vec_vspltb
   7794 
   7795 static __inline__ vector signed char __ATTRS_o_ai
   7796 vec_vspltb(vector signed char __a, unsigned char __b) {
   7797   return vec_perm(__a, __a, (vector unsigned char)(__b));
   7798 }
   7799 
   7800 static __inline__ vector unsigned char __ATTRS_o_ai
   7801 vec_vspltb(vector unsigned char __a, unsigned char __b) {
   7802   return vec_perm(__a, __a, (vector unsigned char)(__b));
   7803 }
   7804 
   7805 static __inline__ vector bool char __ATTRS_o_ai vec_vspltb(vector bool char __a,
   7806                                                            unsigned char __b) {
   7807   return vec_perm(__a, __a, (vector unsigned char)(__b));
   7808 }
   7809 
   7810 /* vec_vsplth */
   7811 
   7812 #define __builtin_altivec_vsplth vec_vsplth
   7813 
   7814 static __inline__ vector short __ATTRS_o_ai vec_vsplth(vector short __a,
   7815                                                        unsigned char __b) {
   7816   __b *= 2;
   7817   unsigned char b1 = __b + 1;
   7818   return vec_perm(__a, __a,
   7819                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
   7820                                          __b, b1, __b, b1, __b, b1, __b, b1));
   7821 }
   7822 
   7823 static __inline__ vector unsigned short __ATTRS_o_ai
   7824 vec_vsplth(vector unsigned short __a, unsigned char __b) {
   7825   __b *= 2;
   7826   unsigned char b1 = __b + 1;
   7827   return vec_perm(__a, __a,
   7828                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
   7829                                          __b, b1, __b, b1, __b, b1, __b, b1));
   7830 }
   7831 
   7832 static __inline__ vector bool short __ATTRS_o_ai
   7833 vec_vsplth(vector bool short __a, unsigned char __b) {
   7834   __b *= 2;
   7835   unsigned char b1 = __b + 1;
   7836   return vec_perm(__a, __a,
   7837                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
   7838                                          __b, b1, __b, b1, __b, b1, __b, b1));
   7839 }
   7840 
   7841 static __inline__ vector pixel __ATTRS_o_ai vec_vsplth(vector pixel __a,
   7842                                                        unsigned char __b) {
   7843   __b *= 2;
   7844   unsigned char b1 = __b + 1;
   7845   return vec_perm(__a, __a,
   7846                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
   7847                                          __b, b1, __b, b1, __b, b1, __b, b1));
   7848 }
   7849 
   7850 /* vec_vspltw */
   7851 
   7852 #define __builtin_altivec_vspltw vec_vspltw
   7853 
   7854 static __inline__ vector int __ATTRS_o_ai vec_vspltw(vector int __a,
   7855                                                      unsigned char __b) {
   7856   __b *= 4;
   7857   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
   7858   return vec_perm(__a, __a,
   7859                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
   7860                                          b1, b2, b3, __b, b1, b2, b3));
   7861 }
   7862 
   7863 static __inline__ vector unsigned int __ATTRS_o_ai
   7864 vec_vspltw(vector unsigned int __a, unsigned char __b) {
   7865   __b *= 4;
   7866   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
   7867   return vec_perm(__a, __a,
   7868                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
   7869                                          b1, b2, b3, __b, b1, b2, b3));
   7870 }
   7871 
   7872 static __inline__ vector bool int __ATTRS_o_ai vec_vspltw(vector bool int __a,
   7873                                                           unsigned char __b) {
   7874   __b *= 4;
   7875   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
   7876   return vec_perm(__a, __a,
   7877                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
   7878                                          b1, b2, b3, __b, b1, b2, b3));
   7879 }
   7880 
   7881 static __inline__ vector float __ATTRS_o_ai vec_vspltw(vector float __a,
   7882                                                        unsigned char __b) {
   7883   __b *= 4;
   7884   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
   7885   return vec_perm(__a, __a,
   7886                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
   7887                                          b1, b2, b3, __b, b1, b2, b3));
   7888 }
   7889 
   7890 /* vec_splat_s8 */
   7891 
   7892 #define __builtin_altivec_vspltisb vec_splat_s8
   7893 
   7894 // FIXME: parameter should be treated as 5-bit signed literal
   7895 static __inline__ vector signed char __ATTRS_o_ai
   7896 vec_splat_s8(signed char __a) {
   7897   return (vector signed char)(__a);
   7898 }
   7899 
   7900 /* vec_vspltisb */
   7901 
   7902 // FIXME: parameter should be treated as 5-bit signed literal
   7903 static __inline__ vector signed char __ATTRS_o_ai
   7904 vec_vspltisb(signed char __a) {
   7905   return (vector signed char)(__a);
   7906 }
   7907 
   7908 /* vec_splat_s16 */
   7909 
   7910 #define __builtin_altivec_vspltish vec_splat_s16
   7911 
   7912 // FIXME: parameter should be treated as 5-bit signed literal
   7913 static __inline__ vector short __ATTRS_o_ai vec_splat_s16(signed char __a) {
   7914   return (vector short)(__a);
   7915 }
   7916 
   7917 /* vec_vspltish */
   7918 
   7919 // FIXME: parameter should be treated as 5-bit signed literal
   7920 static __inline__ vector short __ATTRS_o_ai vec_vspltish(signed char __a) {
   7921   return (vector short)(__a);
   7922 }
   7923 
   7924 /* vec_splat_s32 */
   7925 
   7926 #define __builtin_altivec_vspltisw vec_splat_s32
   7927 
   7928 // FIXME: parameter should be treated as 5-bit signed literal
   7929 static __inline__ vector int __ATTRS_o_ai vec_splat_s32(signed char __a) {
   7930   return (vector int)(__a);
   7931 }
   7932 
   7933 /* vec_vspltisw */
   7934 
   7935 // FIXME: parameter should be treated as 5-bit signed literal
   7936 static __inline__ vector int __ATTRS_o_ai vec_vspltisw(signed char __a) {
   7937   return (vector int)(__a);
   7938 }
   7939 
   7940 /* vec_splat_u8 */
   7941 
   7942 // FIXME: parameter should be treated as 5-bit signed literal
   7943 static __inline__ vector unsigned char __ATTRS_o_ai
   7944 vec_splat_u8(unsigned char __a) {
   7945   return (vector unsigned char)(__a);
   7946 }
   7947 
   7948 /* vec_splat_u16 */
   7949 
   7950 // FIXME: parameter should be treated as 5-bit signed literal
   7951 static __inline__ vector unsigned short __ATTRS_o_ai
   7952 vec_splat_u16(signed char __a) {
   7953   return (vector unsigned short)(__a);
   7954 }
   7955 
   7956 /* vec_splat_u32 */
   7957 
   7958 // FIXME: parameter should be treated as 5-bit signed literal
   7959 static __inline__ vector unsigned int __ATTRS_o_ai
   7960 vec_splat_u32(signed char __a) {
   7961   return (vector unsigned int)(__a);
   7962 }
   7963 
   7964 /* vec_sr */
   7965 
   7966 static __inline__ vector signed char __ATTRS_o_ai
   7967 vec_sr(vector signed char __a, vector unsigned char __b) {
   7968   vector unsigned char __res = (vector unsigned char)__a >> __b;
   7969   return (vector signed char)__res;
   7970 }
   7971 
   7972 static __inline__ vector unsigned char __ATTRS_o_ai
   7973 vec_sr(vector unsigned char __a, vector unsigned char __b) {
   7974   return __a >> __b;
   7975 }
   7976 
   7977 static __inline__ vector signed short __ATTRS_o_ai
   7978 vec_sr(vector signed short __a, vector unsigned short __b) {
   7979   vector unsigned short __res = (vector unsigned short)__a >> __b;
   7980   return (vector signed short)__res;
   7981 }
   7982 
   7983 static __inline__ vector unsigned short __ATTRS_o_ai
   7984 vec_sr(vector unsigned short __a, vector unsigned short __b) {
   7985   return __a >> __b;
   7986 }
   7987 
   7988 static __inline__ vector signed int __ATTRS_o_ai
   7989 vec_sr(vector signed int __a, vector unsigned int __b) {
   7990   vector unsigned int __res = (vector unsigned int)__a >> __b;
   7991   return (vector signed int)__res;
   7992 }
   7993 
   7994 static __inline__ vector unsigned int __ATTRS_o_ai
   7995 vec_sr(vector unsigned int __a, vector unsigned int __b) {
   7996   return __a >> __b;
   7997 }
   7998 
   7999 #ifdef __POWER8_VECTOR__
   8000 static __inline__ vector signed long long __ATTRS_o_ai
   8001 vec_sr(vector signed long long __a, vector unsigned long long __b) {
   8002   vector unsigned long long __res = (vector unsigned long long)__a >> __b;
   8003   return (vector signed long long)__res;
   8004 }
   8005 
   8006 static __inline__ vector unsigned long long __ATTRS_o_ai
   8007 vec_sr(vector unsigned long long __a, vector unsigned long long __b) {
   8008   return __a >> __b;
   8009 }
   8010 #endif
   8011 
   8012 /* vec_vsrb */
   8013 
   8014 #define __builtin_altivec_vsrb vec_vsrb
   8015 
   8016 static __inline__ vector signed char __ATTRS_o_ai
   8017 vec_vsrb(vector signed char __a, vector unsigned char __b) {
   8018   return __a >> (vector signed char)__b;
   8019 }
   8020 
   8021 static __inline__ vector unsigned char __ATTRS_o_ai
   8022 vec_vsrb(vector unsigned char __a, vector unsigned char __b) {
   8023   return __a >> __b;
   8024 }
   8025 
   8026 /* vec_vsrh */
   8027 
   8028 #define __builtin_altivec_vsrh vec_vsrh
   8029 
   8030 static __inline__ vector short __ATTRS_o_ai
   8031 vec_vsrh(vector short __a, vector unsigned short __b) {
   8032   return __a >> (vector short)__b;
   8033 }
   8034 
   8035 static __inline__ vector unsigned short __ATTRS_o_ai
   8036 vec_vsrh(vector unsigned short __a, vector unsigned short __b) {
   8037   return __a >> __b;
   8038 }
   8039 
   8040 /* vec_vsrw */
   8041 
   8042 #define __builtin_altivec_vsrw vec_vsrw
   8043 
   8044 static __inline__ vector int __ATTRS_o_ai vec_vsrw(vector int __a,
   8045                                                    vector unsigned int __b) {
   8046   return __a >> (vector int)__b;
   8047 }
   8048 
   8049 static __inline__ vector unsigned int __ATTRS_o_ai
   8050 vec_vsrw(vector unsigned int __a, vector unsigned int __b) {
   8051   return __a >> __b;
   8052 }
   8053 
   8054 /* vec_sra */
   8055 
   8056 static __inline__ vector signed char __ATTRS_o_ai
   8057 vec_sra(vector signed char __a, vector unsigned char __b) {
   8058   return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
   8059 }
   8060 
   8061 static __inline__ vector unsigned char __ATTRS_o_ai
   8062 vec_sra(vector unsigned char __a, vector unsigned char __b) {
   8063   return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
   8064 }
   8065 
   8066 static __inline__ vector short __ATTRS_o_ai vec_sra(vector short __a,
   8067                                                     vector unsigned short __b) {
   8068   return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
   8069 }
   8070 
   8071 static __inline__ vector unsigned short __ATTRS_o_ai
   8072 vec_sra(vector unsigned short __a, vector unsigned short __b) {
   8073   return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
   8074 }
   8075 
   8076 static __inline__ vector int __ATTRS_o_ai vec_sra(vector int __a,
   8077                                                   vector unsigned int __b) {
   8078   return __builtin_altivec_vsraw(__a, __b);
   8079 }
   8080 
   8081 static __inline__ vector unsigned int __ATTRS_o_ai
   8082 vec_sra(vector unsigned int __a, vector unsigned int __b) {
   8083   return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
   8084 }
   8085 
   8086 #ifdef __POWER8_VECTOR__
   8087 static __inline__ vector signed long long __ATTRS_o_ai
   8088 vec_sra(vector signed long long __a, vector unsigned long long __b) {
   8089   return __a >> __b;
   8090 }
   8091 
   8092 static __inline__ vector unsigned long long __ATTRS_o_ai
   8093 vec_sra(vector unsigned long long __a, vector unsigned long long __b) {
   8094   return (vector unsigned long long)((vector signed long long)__a >> __b);
   8095 }
   8096 #endif
   8097 
   8098 /* vec_vsrab */
   8099 
   8100 static __inline__ vector signed char __ATTRS_o_ai
   8101 vec_vsrab(vector signed char __a, vector unsigned char __b) {
   8102   return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
   8103 }
   8104 
   8105 static __inline__ vector unsigned char __ATTRS_o_ai
   8106 vec_vsrab(vector unsigned char __a, vector unsigned char __b) {
   8107   return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
   8108 }
   8109 
   8110 /* vec_vsrah */
   8111 
   8112 static __inline__ vector short __ATTRS_o_ai
   8113 vec_vsrah(vector short __a, vector unsigned short __b) {
   8114   return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
   8115 }
   8116 
   8117 static __inline__ vector unsigned short __ATTRS_o_ai
   8118 vec_vsrah(vector unsigned short __a, vector unsigned short __b) {
   8119   return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
   8120 }
   8121 
   8122 /* vec_vsraw */
   8123 
   8124 static __inline__ vector int __ATTRS_o_ai vec_vsraw(vector int __a,
   8125                                                     vector unsigned int __b) {
   8126   return __builtin_altivec_vsraw(__a, __b);
   8127 }
   8128 
   8129 static __inline__ vector unsigned int __ATTRS_o_ai
   8130 vec_vsraw(vector unsigned int __a, vector unsigned int __b) {
   8131   return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
   8132 }
   8133 
   8134 /* vec_srl */
   8135 
   8136 static __inline__ vector signed char __ATTRS_o_ai
   8137 vec_srl(vector signed char __a, vector unsigned char __b) {
   8138   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
   8139                                                    (vector int)__b);
   8140 }
   8141 
   8142 static __inline__ vector signed char __ATTRS_o_ai
   8143 vec_srl(vector signed char __a, vector unsigned short __b) {
   8144   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
   8145                                                    (vector int)__b);
   8146 }
   8147 
   8148 static __inline__ vector signed char __ATTRS_o_ai
   8149 vec_srl(vector signed char __a, vector unsigned int __b) {
   8150   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
   8151                                                    (vector int)__b);
   8152 }
   8153 
   8154 static __inline__ vector unsigned char __ATTRS_o_ai
   8155 vec_srl(vector unsigned char __a, vector unsigned char __b) {
   8156   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
   8157                                                      (vector int)__b);
   8158 }
   8159 
   8160 static __inline__ vector unsigned char __ATTRS_o_ai
   8161 vec_srl(vector unsigned char __a, vector unsigned short __b) {
   8162   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
   8163                                                      (vector int)__b);
   8164 }
   8165 
   8166 static __inline__ vector unsigned char __ATTRS_o_ai
   8167 vec_srl(vector unsigned char __a, vector unsigned int __b) {
   8168   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
   8169                                                      (vector int)__b);
   8170 }
   8171 
   8172 static __inline__ vector bool char __ATTRS_o_ai
   8173 vec_srl(vector bool char __a, vector unsigned char __b) {
   8174   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
   8175                                                  (vector int)__b);
   8176 }
   8177 
   8178 static __inline__ vector bool char __ATTRS_o_ai
   8179 vec_srl(vector bool char __a, vector unsigned short __b) {
   8180   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
   8181                                                  (vector int)__b);
   8182 }
   8183 
   8184 static __inline__ vector bool char __ATTRS_o_ai
   8185 vec_srl(vector bool char __a, vector unsigned int __b) {
   8186   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
   8187                                                  (vector int)__b);
   8188 }
   8189 
   8190 static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
   8191                                                     vector unsigned char __b) {
   8192   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   8193 }
   8194 
   8195 static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
   8196                                                     vector unsigned short __b) {
   8197   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   8198 }
   8199 
   8200 static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
   8201                                                     vector unsigned int __b) {
   8202   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   8203 }
   8204 
   8205 static __inline__ vector unsigned short __ATTRS_o_ai
   8206 vec_srl(vector unsigned short __a, vector unsigned char __b) {
   8207   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
   8208                                                       (vector int)__b);
   8209 }
   8210 
   8211 static __inline__ vector unsigned short __ATTRS_o_ai
   8212 vec_srl(vector unsigned short __a, vector unsigned short __b) {
   8213   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
   8214                                                       (vector int)__b);
   8215 }
   8216 
   8217 static __inline__ vector unsigned short __ATTRS_o_ai
   8218 vec_srl(vector unsigned short __a, vector unsigned int __b) {
   8219   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
   8220                                                       (vector int)__b);
   8221 }
   8222 
   8223 static __inline__ vector bool short __ATTRS_o_ai
   8224 vec_srl(vector bool short __a, vector unsigned char __b) {
   8225   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
   8226                                                   (vector int)__b);
   8227 }
   8228 
   8229 static __inline__ vector bool short __ATTRS_o_ai
   8230 vec_srl(vector bool short __a, vector unsigned short __b) {
   8231   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
   8232                                                   (vector int)__b);
   8233 }
   8234 
   8235 static __inline__ vector bool short __ATTRS_o_ai
   8236 vec_srl(vector bool short __a, vector unsigned int __b) {
   8237   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
   8238                                                   (vector int)__b);
   8239 }
   8240 
   8241 static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
   8242                                                     vector unsigned char __b) {
   8243   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   8244 }
   8245 
   8246 static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
   8247                                                     vector unsigned short __b) {
   8248   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   8249 }
   8250 
   8251 static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
   8252                                                     vector unsigned int __b) {
   8253   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   8254 }
   8255 
   8256 static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
   8257                                                   vector unsigned char __b) {
   8258   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
   8259 }
   8260 
   8261 static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
   8262                                                   vector unsigned short __b) {
   8263   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
   8264 }
   8265 
   8266 static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
   8267                                                   vector unsigned int __b) {
   8268   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
   8269 }
   8270 
   8271 static __inline__ vector unsigned int __ATTRS_o_ai
   8272 vec_srl(vector unsigned int __a, vector unsigned char __b) {
   8273   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
   8274                                                     (vector int)__b);
   8275 }
   8276 
   8277 static __inline__ vector unsigned int __ATTRS_o_ai
   8278 vec_srl(vector unsigned int __a, vector unsigned short __b) {
   8279   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
   8280                                                     (vector int)__b);
   8281 }
   8282 
   8283 static __inline__ vector unsigned int __ATTRS_o_ai
   8284 vec_srl(vector unsigned int __a, vector unsigned int __b) {
   8285   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
   8286                                                     (vector int)__b);
   8287 }
   8288 
   8289 static __inline__ vector bool int __ATTRS_o_ai
   8290 vec_srl(vector bool int __a, vector unsigned char __b) {
   8291   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
   8292                                                 (vector int)__b);
   8293 }
   8294 
   8295 static __inline__ vector bool int __ATTRS_o_ai
   8296 vec_srl(vector bool int __a, vector unsigned short __b) {
   8297   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
   8298                                                 (vector int)__b);
   8299 }
   8300 
   8301 static __inline__ vector bool int __ATTRS_o_ai
   8302 vec_srl(vector bool int __a, vector unsigned int __b) {
   8303   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
   8304                                                 (vector int)__b);
   8305 }
   8306 
   8307 /* vec_vsr */
   8308 
   8309 static __inline__ vector signed char __ATTRS_o_ai
   8310 vec_vsr(vector signed char __a, vector unsigned char __b) {
   8311   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
   8312                                                    (vector int)__b);
   8313 }
   8314 
   8315 static __inline__ vector signed char __ATTRS_o_ai
   8316 vec_vsr(vector signed char __a, vector unsigned short __b) {
   8317   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
   8318                                                    (vector int)__b);
   8319 }
   8320 
   8321 static __inline__ vector signed char __ATTRS_o_ai
   8322 vec_vsr(vector signed char __a, vector unsigned int __b) {
   8323   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
   8324                                                    (vector int)__b);
   8325 }
   8326 
   8327 static __inline__ vector unsigned char __ATTRS_o_ai
   8328 vec_vsr(vector unsigned char __a, vector unsigned char __b) {
   8329   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
   8330                                                      (vector int)__b);
   8331 }
   8332 
   8333 static __inline__ vector unsigned char __ATTRS_o_ai
   8334 vec_vsr(vector unsigned char __a, vector unsigned short __b) {
   8335   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
   8336                                                      (vector int)__b);
   8337 }
   8338 
   8339 static __inline__ vector unsigned char __ATTRS_o_ai
   8340 vec_vsr(vector unsigned char __a, vector unsigned int __b) {
   8341   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
   8342                                                      (vector int)__b);
   8343 }
   8344 
   8345 static __inline__ vector bool char __ATTRS_o_ai
   8346 vec_vsr(vector bool char __a, vector unsigned char __b) {
   8347   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
   8348                                                  (vector int)__b);
   8349 }
   8350 
   8351 static __inline__ vector bool char __ATTRS_o_ai
   8352 vec_vsr(vector bool char __a, vector unsigned short __b) {
   8353   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
   8354                                                  (vector int)__b);
   8355 }
   8356 
   8357 static __inline__ vector bool char __ATTRS_o_ai
   8358 vec_vsr(vector bool char __a, vector unsigned int __b) {
   8359   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
   8360                                                  (vector int)__b);
   8361 }
   8362 
   8363 static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
   8364                                                     vector unsigned char __b) {
   8365   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   8366 }
   8367 
   8368 static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
   8369                                                     vector unsigned short __b) {
   8370   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   8371 }
   8372 
   8373 static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
   8374                                                     vector unsigned int __b) {
   8375   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   8376 }
   8377 
   8378 static __inline__ vector unsigned short __ATTRS_o_ai
   8379 vec_vsr(vector unsigned short __a, vector unsigned char __b) {
   8380   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
   8381                                                       (vector int)__b);
   8382 }
   8383 
   8384 static __inline__ vector unsigned short __ATTRS_o_ai
   8385 vec_vsr(vector unsigned short __a, vector unsigned short __b) {
   8386   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
   8387                                                       (vector int)__b);
   8388 }
   8389 
   8390 static __inline__ vector unsigned short __ATTRS_o_ai
   8391 vec_vsr(vector unsigned short __a, vector unsigned int __b) {
   8392   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
   8393                                                       (vector int)__b);
   8394 }
   8395 
   8396 static __inline__ vector bool short __ATTRS_o_ai
   8397 vec_vsr(vector bool short __a, vector unsigned char __b) {
   8398   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
   8399                                                   (vector int)__b);
   8400 }
   8401 
   8402 static __inline__ vector bool short __ATTRS_o_ai
   8403 vec_vsr(vector bool short __a, vector unsigned short __b) {
   8404   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
   8405                                                   (vector int)__b);
   8406 }
   8407 
   8408 static __inline__ vector bool short __ATTRS_o_ai
   8409 vec_vsr(vector bool short __a, vector unsigned int __b) {
   8410   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
   8411                                                   (vector int)__b);
   8412 }
   8413 
   8414 static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
   8415                                                     vector unsigned char __b) {
   8416   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   8417 }
   8418 
   8419 static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
   8420                                                     vector unsigned short __b) {
   8421   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   8422 }
   8423 
   8424 static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
   8425                                                     vector unsigned int __b) {
   8426   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   8427 }
   8428 
   8429 static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
   8430                                                   vector unsigned char __b) {
   8431   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
   8432 }
   8433 
   8434 static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
   8435                                                   vector unsigned short __b) {
   8436   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
   8437 }
   8438 
   8439 static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
   8440                                                   vector unsigned int __b) {
   8441   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
   8442 }
   8443 
   8444 static __inline__ vector unsigned int __ATTRS_o_ai
   8445 vec_vsr(vector unsigned int __a, vector unsigned char __b) {
   8446   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
   8447                                                     (vector int)__b);
   8448 }
   8449 
   8450 static __inline__ vector unsigned int __ATTRS_o_ai
   8451 vec_vsr(vector unsigned int __a, vector unsigned short __b) {
   8452   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
   8453                                                     (vector int)__b);
   8454 }
   8455 
   8456 static __inline__ vector unsigned int __ATTRS_o_ai
   8457 vec_vsr(vector unsigned int __a, vector unsigned int __b) {
   8458   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
   8459                                                     (vector int)__b);
   8460 }
   8461 
   8462 static __inline__ vector bool int __ATTRS_o_ai
   8463 vec_vsr(vector bool int __a, vector unsigned char __b) {
   8464   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
   8465                                                 (vector int)__b);
   8466 }
   8467 
   8468 static __inline__ vector bool int __ATTRS_o_ai
   8469 vec_vsr(vector bool int __a, vector unsigned short __b) {
   8470   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
   8471                                                 (vector int)__b);
   8472 }
   8473 
   8474 static __inline__ vector bool int __ATTRS_o_ai
   8475 vec_vsr(vector bool int __a, vector unsigned int __b) {
   8476   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
   8477                                                 (vector int)__b);
   8478 }
   8479 
   8480 /* vec_sro */
   8481 
   8482 static __inline__ vector signed char __ATTRS_o_ai
   8483 vec_sro(vector signed char __a, vector signed char __b) {
   8484   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
   8485                                                     (vector int)__b);
   8486 }
   8487 
   8488 static __inline__ vector signed char __ATTRS_o_ai
   8489 vec_sro(vector signed char __a, vector unsigned char __b) {
   8490   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
   8491                                                     (vector int)__b);
   8492 }
   8493 
   8494 static __inline__ vector unsigned char __ATTRS_o_ai
   8495 vec_sro(vector unsigned char __a, vector signed char __b) {
   8496   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
   8497                                                       (vector int)__b);
   8498 }
   8499 
   8500 static __inline__ vector unsigned char __ATTRS_o_ai
   8501 vec_sro(vector unsigned char __a, vector unsigned char __b) {
   8502   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
   8503                                                       (vector int)__b);
   8504 }
   8505 
   8506 static __inline__ vector short __ATTRS_o_ai vec_sro(vector short __a,
   8507                                                     vector signed char __b) {
   8508   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   8509 }
   8510 
   8511 static __inline__ vector short __ATTRS_o_ai vec_sro(vector short __a,
   8512                                                     vector unsigned char __b) {
   8513   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   8514 }
   8515 
   8516 static __inline__ vector unsigned short __ATTRS_o_ai
   8517 vec_sro(vector unsigned short __a, vector signed char __b) {
   8518   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
   8519                                                        (vector int)__b);
   8520 }
   8521 
   8522 static __inline__ vector unsigned short __ATTRS_o_ai
   8523 vec_sro(vector unsigned short __a, vector unsigned char __b) {
   8524   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
   8525                                                        (vector int)__b);
   8526 }
   8527 
   8528 static __inline__ vector pixel __ATTRS_o_ai vec_sro(vector pixel __a,
   8529                                                     vector signed char __b) {
   8530   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   8531 }
   8532 
   8533 static __inline__ vector pixel __ATTRS_o_ai vec_sro(vector pixel __a,
   8534                                                     vector unsigned char __b) {
   8535   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   8536 }
   8537 
   8538 static __inline__ vector int __ATTRS_o_ai vec_sro(vector int __a,
   8539                                                   vector signed char __b) {
   8540   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
   8541 }
   8542 
   8543 static __inline__ vector int __ATTRS_o_ai vec_sro(vector int __a,
   8544                                                   vector unsigned char __b) {
   8545   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
   8546 }
   8547 
   8548 static __inline__ vector unsigned int __ATTRS_o_ai
   8549 vec_sro(vector unsigned int __a, vector signed char __b) {
   8550   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
   8551                                                      (vector int)__b);
   8552 }
   8553 
   8554 static __inline__ vector unsigned int __ATTRS_o_ai
   8555 vec_sro(vector unsigned int __a, vector unsigned char __b) {
   8556   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
   8557                                                      (vector int)__b);
   8558 }
   8559 
   8560 static __inline__ vector float __ATTRS_o_ai vec_sro(vector float __a,
   8561                                                     vector signed char __b) {
   8562   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   8563 }
   8564 
   8565 static __inline__ vector float __ATTRS_o_ai vec_sro(vector float __a,
   8566                                                     vector unsigned char __b) {
   8567   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   8568 }
   8569 
   8570 /* vec_vsro */
   8571 
   8572 static __inline__ vector signed char __ATTRS_o_ai
   8573 vec_vsro(vector signed char __a, vector signed char __b) {
   8574   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
   8575                                                     (vector int)__b);
   8576 }
   8577 
   8578 static __inline__ vector signed char __ATTRS_o_ai
   8579 vec_vsro(vector signed char __a, vector unsigned char __b) {
   8580   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
   8581                                                     (vector int)__b);
   8582 }
   8583 
   8584 static __inline__ vector unsigned char __ATTRS_o_ai
   8585 vec_vsro(vector unsigned char __a, vector signed char __b) {
   8586   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
   8587                                                       (vector int)__b);
   8588 }
   8589 
   8590 static __inline__ vector unsigned char __ATTRS_o_ai
   8591 vec_vsro(vector unsigned char __a, vector unsigned char __b) {
   8592   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
   8593                                                       (vector int)__b);
   8594 }
   8595 
   8596 static __inline__ vector short __ATTRS_o_ai vec_vsro(vector short __a,
   8597                                                      vector signed char __b) {
   8598   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   8599 }
   8600 
   8601 static __inline__ vector short __ATTRS_o_ai vec_vsro(vector short __a,
   8602                                                      vector unsigned char __b) {
   8603   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   8604 }
   8605 
   8606 static __inline__ vector unsigned short __ATTRS_o_ai
   8607 vec_vsro(vector unsigned short __a, vector signed char __b) {
   8608   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
   8609                                                        (vector int)__b);
   8610 }
   8611 
   8612 static __inline__ vector unsigned short __ATTRS_o_ai
   8613 vec_vsro(vector unsigned short __a, vector unsigned char __b) {
   8614   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
   8615                                                        (vector int)__b);
   8616 }
   8617 
   8618 static __inline__ vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a,
   8619                                                      vector signed char __b) {
   8620   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   8621 }
   8622 
   8623 static __inline__ vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a,
   8624                                                      vector unsigned char __b) {
   8625   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   8626 }
   8627 
   8628 static __inline__ vector int __ATTRS_o_ai vec_vsro(vector int __a,
   8629                                                    vector signed char __b) {
   8630   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
   8631 }
   8632 
   8633 static __inline__ vector int __ATTRS_o_ai vec_vsro(vector int __a,
   8634                                                    vector unsigned char __b) {
   8635   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
   8636 }
   8637 
   8638 static __inline__ vector unsigned int __ATTRS_o_ai
   8639 vec_vsro(vector unsigned int __a, vector signed char __b) {
   8640   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
   8641                                                      (vector int)__b);
   8642 }
   8643 
   8644 static __inline__ vector unsigned int __ATTRS_o_ai
   8645 vec_vsro(vector unsigned int __a, vector unsigned char __b) {
   8646   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
   8647                                                      (vector int)__b);
   8648 }
   8649 
   8650 static __inline__ vector float __ATTRS_o_ai vec_vsro(vector float __a,
   8651                                                      vector signed char __b) {
   8652   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   8653 }
   8654 
   8655 static __inline__ vector float __ATTRS_o_ai vec_vsro(vector float __a,
   8656                                                      vector unsigned char __b) {
   8657   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   8658 }
   8659 
   8660 /* vec_st */
   8661 
   8662 static __inline__ void __ATTRS_o_ai vec_st(vector signed char __a, int __b,
   8663                                            vector signed char *__c) {
   8664   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8665 }
   8666 
   8667 static __inline__ void __ATTRS_o_ai vec_st(vector signed char __a, int __b,
   8668                                            signed char *__c) {
   8669   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8670 }
   8671 
   8672 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b,
   8673                                            vector unsigned char *__c) {
   8674   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8675 }
   8676 
   8677 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b,
   8678                                            unsigned char *__c) {
   8679   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8680 }
   8681 
   8682 static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
   8683                                            signed char *__c) {
   8684   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8685 }
   8686 
   8687 static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
   8688                                            unsigned char *__c) {
   8689   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8690 }
   8691 
   8692 static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
   8693                                            vector bool char *__c) {
   8694   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8695 }
   8696 
   8697 static __inline__ void __ATTRS_o_ai vec_st(vector short __a, int __b,
   8698                                            vector short *__c) {
   8699   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8700 }
   8701 
   8702 static __inline__ void __ATTRS_o_ai vec_st(vector short __a, int __b,
   8703                                            short *__c) {
   8704   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8705 }
   8706 
   8707 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b,
   8708                                            vector unsigned short *__c) {
   8709   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8710 }
   8711 
   8712 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b,
   8713                                            unsigned short *__c) {
   8714   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8715 }
   8716 
   8717 static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
   8718                                            short *__c) {
   8719   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8720 }
   8721 
   8722 static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
   8723                                            unsigned short *__c) {
   8724   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8725 }
   8726 
   8727 static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
   8728                                            vector bool short *__c) {
   8729   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8730 }
   8731 
   8732 static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
   8733                                            short *__c) {
   8734   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8735 }
   8736 
   8737 static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
   8738                                            unsigned short *__c) {
   8739   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8740 }
   8741 
   8742 static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
   8743                                            vector pixel *__c) {
   8744   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8745 }
   8746 
   8747 static __inline__ void __ATTRS_o_ai vec_st(vector int __a, int __b,
   8748                                            vector int *__c) {
   8749   __builtin_altivec_stvx(__a, __b, __c);
   8750 }
   8751 
   8752 static __inline__ void __ATTRS_o_ai vec_st(vector int __a, int __b, int *__c) {
   8753   __builtin_altivec_stvx(__a, __b, __c);
   8754 }
   8755 
   8756 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b,
   8757                                            vector unsigned int *__c) {
   8758   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8759 }
   8760 
   8761 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b,
   8762                                            unsigned int *__c) {
   8763   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8764 }
   8765 
   8766 static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
   8767                                            int *__c) {
   8768   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8769 }
   8770 
   8771 static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
   8772                                            unsigned int *__c) {
   8773   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8774 }
   8775 
   8776 static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
   8777                                            vector bool int *__c) {
   8778   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8779 }
   8780 
   8781 static __inline__ void __ATTRS_o_ai vec_st(vector float __a, int __b,
   8782                                            vector float *__c) {
   8783   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8784 }
   8785 
   8786 static __inline__ void __ATTRS_o_ai vec_st(vector float __a, int __b,
   8787                                            float *__c) {
   8788   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8789 }
   8790 
   8791 /* vec_stvx */
   8792 
   8793 static __inline__ void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b,
   8794                                              vector signed char *__c) {
   8795   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8796 }
   8797 
   8798 static __inline__ void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b,
   8799                                              signed char *__c) {
   8800   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8801 }
   8802 
   8803 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b,
   8804                                              vector unsigned char *__c) {
   8805   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8806 }
   8807 
   8808 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b,
   8809                                              unsigned char *__c) {
   8810   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8811 }
   8812 
   8813 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
   8814                                              signed char *__c) {
   8815   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8816 }
   8817 
   8818 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
   8819                                              unsigned char *__c) {
   8820   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8821 }
   8822 
   8823 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
   8824                                              vector bool char *__c) {
   8825   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8826 }
   8827 
   8828 static __inline__ void __ATTRS_o_ai vec_stvx(vector short __a, int __b,
   8829                                              vector short *__c) {
   8830   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8831 }
   8832 
   8833 static __inline__ void __ATTRS_o_ai vec_stvx(vector short __a, int __b,
   8834                                              short *__c) {
   8835   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8836 }
   8837 
   8838 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b,
   8839                                              vector unsigned short *__c) {
   8840   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8841 }
   8842 
   8843 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b,
   8844                                              unsigned short *__c) {
   8845   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8846 }
   8847 
   8848 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
   8849                                              short *__c) {
   8850   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8851 }
   8852 
   8853 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
   8854                                              unsigned short *__c) {
   8855   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8856 }
   8857 
   8858 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
   8859                                              vector bool short *__c) {
   8860   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8861 }
   8862 
   8863 static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
   8864                                              short *__c) {
   8865   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8866 }
   8867 
   8868 static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
   8869                                              unsigned short *__c) {
   8870   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8871 }
   8872 
   8873 static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
   8874                                              vector pixel *__c) {
   8875   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8876 }
   8877 
   8878 static __inline__ void __ATTRS_o_ai vec_stvx(vector int __a, int __b,
   8879                                              vector int *__c) {
   8880   __builtin_altivec_stvx(__a, __b, __c);
   8881 }
   8882 
   8883 static __inline__ void __ATTRS_o_ai vec_stvx(vector int __a, int __b,
   8884                                              int *__c) {
   8885   __builtin_altivec_stvx(__a, __b, __c);
   8886 }
   8887 
   8888 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b,
   8889                                              vector unsigned int *__c) {
   8890   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8891 }
   8892 
   8893 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b,
   8894                                              unsigned int *__c) {
   8895   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8896 }
   8897 
   8898 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
   8899                                              int *__c) {
   8900   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8901 }
   8902 
   8903 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
   8904                                              unsigned int *__c) {
   8905   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8906 }
   8907 
   8908 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
   8909                                              vector bool int *__c) {
   8910   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8911 }
   8912 
   8913 static __inline__ void __ATTRS_o_ai vec_stvx(vector float __a, int __b,
   8914                                              vector float *__c) {
   8915   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8916 }
   8917 
   8918 static __inline__ void __ATTRS_o_ai vec_stvx(vector float __a, int __b,
   8919                                              float *__c) {
   8920   __builtin_altivec_stvx((vector int)__a, __b, __c);
   8921 }
   8922 
   8923 /* vec_ste */
   8924 
   8925 static __inline__ void __ATTRS_o_ai vec_ste(vector signed char __a, int __b,
   8926                                             signed char *__c) {
   8927   __builtin_altivec_stvebx((vector char)__a, __b, __c);
   8928 }
   8929 
   8930 static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned char __a, int __b,
   8931                                             unsigned char *__c) {
   8932   __builtin_altivec_stvebx((vector char)__a, __b, __c);
   8933 }
   8934 
   8935 static __inline__ void __ATTRS_o_ai vec_ste(vector bool char __a, int __b,
   8936                                             signed char *__c) {
   8937   __builtin_altivec_stvebx((vector char)__a, __b, __c);
   8938 }
   8939 
   8940 static __inline__ void __ATTRS_o_ai vec_ste(vector bool char __a, int __b,
   8941                                             unsigned char *__c) {
   8942   __builtin_altivec_stvebx((vector char)__a, __b, __c);
   8943 }
   8944 
   8945 static __inline__ void __ATTRS_o_ai vec_ste(vector short __a, int __b,
   8946                                             short *__c) {
   8947   __builtin_altivec_stvehx(__a, __b, __c);
   8948 }
   8949 
   8950 static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned short __a, int __b,
   8951                                             unsigned short *__c) {
   8952   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   8953 }
   8954 
   8955 static __inline__ void __ATTRS_o_ai vec_ste(vector bool short __a, int __b,
   8956                                             short *__c) {
   8957   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   8958 }
   8959 
   8960 static __inline__ void __ATTRS_o_ai vec_ste(vector bool short __a, int __b,
   8961                                             unsigned short *__c) {
   8962   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   8963 }
   8964 
   8965 static __inline__ void __ATTRS_o_ai vec_ste(vector pixel __a, int __b,
   8966                                             short *__c) {
   8967   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   8968 }
   8969 
   8970 static __inline__ void __ATTRS_o_ai vec_ste(vector pixel __a, int __b,
   8971                                             unsigned short *__c) {
   8972   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   8973 }
   8974 
   8975 static __inline__ void __ATTRS_o_ai vec_ste(vector int __a, int __b, int *__c) {
   8976   __builtin_altivec_stvewx(__a, __b, __c);
   8977 }
   8978 
   8979 static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned int __a, int __b,
   8980                                             unsigned int *__c) {
   8981   __builtin_altivec_stvewx((vector int)__a, __b, __c);
   8982 }
   8983 
   8984 static __inline__ void __ATTRS_o_ai vec_ste(vector bool int __a, int __b,
   8985                                             int *__c) {
   8986   __builtin_altivec_stvewx((vector int)__a, __b, __c);
   8987 }
   8988 
   8989 static __inline__ void __ATTRS_o_ai vec_ste(vector bool int __a, int __b,
   8990                                             unsigned int *__c) {
   8991   __builtin_altivec_stvewx((vector int)__a, __b, __c);
   8992 }
   8993 
   8994 static __inline__ void __ATTRS_o_ai vec_ste(vector float __a, int __b,
   8995                                             float *__c) {
   8996   __builtin_altivec_stvewx((vector int)__a, __b, __c);
   8997 }
   8998 
   8999 /* vec_stvebx */
   9000 
   9001 static __inline__ void __ATTRS_o_ai vec_stvebx(vector signed char __a, int __b,
   9002                                                signed char *__c) {
   9003   __builtin_altivec_stvebx((vector char)__a, __b, __c);
   9004 }
   9005 
   9006 static __inline__ void __ATTRS_o_ai vec_stvebx(vector unsigned char __a,
   9007                                                int __b, unsigned char *__c) {
   9008   __builtin_altivec_stvebx((vector char)__a, __b, __c);
   9009 }
   9010 
   9011 static __inline__ void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b,
   9012                                                signed char *__c) {
   9013   __builtin_altivec_stvebx((vector char)__a, __b, __c);
   9014 }
   9015 
   9016 static __inline__ void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b,
   9017                                                unsigned char *__c) {
   9018   __builtin_altivec_stvebx((vector char)__a, __b, __c);
   9019 }
   9020 
   9021 /* vec_stvehx */
   9022 
   9023 static __inline__ void __ATTRS_o_ai vec_stvehx(vector short __a, int __b,
   9024                                                short *__c) {
   9025   __builtin_altivec_stvehx(__a, __b, __c);
   9026 }
   9027 
   9028 static __inline__ void __ATTRS_o_ai vec_stvehx(vector unsigned short __a,
   9029                                                int __b, unsigned short *__c) {
   9030   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   9031 }
   9032 
   9033 static __inline__ void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b,
   9034                                                short *__c) {
   9035   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   9036 }
   9037 
   9038 static __inline__ void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b,
   9039                                                unsigned short *__c) {
   9040   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   9041 }
   9042 
   9043 static __inline__ void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b,
   9044                                                short *__c) {
   9045   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   9046 }
   9047 
   9048 static __inline__ void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b,
   9049                                                unsigned short *__c) {
   9050   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   9051 }
   9052 
   9053 /* vec_stvewx */
   9054 
   9055 static __inline__ void __ATTRS_o_ai vec_stvewx(vector int __a, int __b,
   9056                                                int *__c) {
   9057   __builtin_altivec_stvewx(__a, __b, __c);
   9058 }
   9059 
   9060 static __inline__ void __ATTRS_o_ai vec_stvewx(vector unsigned int __a, int __b,
   9061                                                unsigned int *__c) {
   9062   __builtin_altivec_stvewx((vector int)__a, __b, __c);
   9063 }
   9064 
   9065 static __inline__ void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b,
   9066                                                int *__c) {
   9067   __builtin_altivec_stvewx((vector int)__a, __b, __c);
   9068 }
   9069 
   9070 static __inline__ void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b,
   9071                                                unsigned int *__c) {
   9072   __builtin_altivec_stvewx((vector int)__a, __b, __c);
   9073 }
   9074 
   9075 static __inline__ void __ATTRS_o_ai vec_stvewx(vector float __a, int __b,
   9076                                                float *__c) {
   9077   __builtin_altivec_stvewx((vector int)__a, __b, __c);
   9078 }
   9079 
   9080 /* vec_stl */
   9081 
   9082 static __inline__ void __ATTRS_o_ai vec_stl(vector signed char __a, int __b,
   9083                                             vector signed char *__c) {
   9084   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9085 }
   9086 
   9087 static __inline__ void __ATTRS_o_ai vec_stl(vector signed char __a, int __b,
   9088                                             signed char *__c) {
   9089   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9090 }
   9091 
   9092 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b,
   9093                                             vector unsigned char *__c) {
   9094   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9095 }
   9096 
   9097 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b,
   9098                                             unsigned char *__c) {
   9099   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9100 }
   9101 
   9102 static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
   9103                                             signed char *__c) {
   9104   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9105 }
   9106 
   9107 static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
   9108                                             unsigned char *__c) {
   9109   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9110 }
   9111 
   9112 static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
   9113                                             vector bool char *__c) {
   9114   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9115 }
   9116 
   9117 static __inline__ void __ATTRS_o_ai vec_stl(vector short __a, int __b,
   9118                                             vector short *__c) {
   9119   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9120 }
   9121 
   9122 static __inline__ void __ATTRS_o_ai vec_stl(vector short __a, int __b,
   9123                                             short *__c) {
   9124   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9125 }
   9126 
   9127 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b,
   9128                                             vector unsigned short *__c) {
   9129   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9130 }
   9131 
   9132 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b,
   9133                                             unsigned short *__c) {
   9134   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9135 }
   9136 
   9137 static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
   9138                                             short *__c) {
   9139   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9140 }
   9141 
   9142 static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
   9143                                             unsigned short *__c) {
   9144   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9145 }
   9146 
   9147 static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
   9148                                             vector bool short *__c) {
   9149   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9150 }
   9151 
   9152 static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
   9153                                             short *__c) {
   9154   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9155 }
   9156 
   9157 static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
   9158                                             unsigned short *__c) {
   9159   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9160 }
   9161 
   9162 static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
   9163                                             vector pixel *__c) {
   9164   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9165 }
   9166 
   9167 static __inline__ void __ATTRS_o_ai vec_stl(vector int __a, int __b,
   9168                                             vector int *__c) {
   9169   __builtin_altivec_stvxl(__a, __b, __c);
   9170 }
   9171 
   9172 static __inline__ void __ATTRS_o_ai vec_stl(vector int __a, int __b, int *__c) {
   9173   __builtin_altivec_stvxl(__a, __b, __c);
   9174 }
   9175 
   9176 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b,
   9177                                             vector unsigned int *__c) {
   9178   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9179 }
   9180 
   9181 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b,
   9182                                             unsigned int *__c) {
   9183   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9184 }
   9185 
   9186 static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
   9187                                             int *__c) {
   9188   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9189 }
   9190 
   9191 static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
   9192                                             unsigned int *__c) {
   9193   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9194 }
   9195 
   9196 static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
   9197                                             vector bool int *__c) {
   9198   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9199 }
   9200 
   9201 static __inline__ void __ATTRS_o_ai vec_stl(vector float __a, int __b,
   9202                                             vector float *__c) {
   9203   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9204 }
   9205 
   9206 static __inline__ void __ATTRS_o_ai vec_stl(vector float __a, int __b,
   9207                                             float *__c) {
   9208   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9209 }
   9210 
   9211 /* vec_stvxl */
   9212 
   9213 static __inline__ void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b,
   9214                                               vector signed char *__c) {
   9215   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9216 }
   9217 
   9218 static __inline__ void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b,
   9219                                               signed char *__c) {
   9220   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9221 }
   9222 
   9223 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b,
   9224                                               vector unsigned char *__c) {
   9225   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9226 }
   9227 
   9228 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b,
   9229                                               unsigned char *__c) {
   9230   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9231 }
   9232 
   9233 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
   9234                                               signed char *__c) {
   9235   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9236 }
   9237 
   9238 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
   9239                                               unsigned char *__c) {
   9240   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9241 }
   9242 
   9243 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
   9244                                               vector bool char *__c) {
   9245   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9246 }
   9247 
   9248 static __inline__ void __ATTRS_o_ai vec_stvxl(vector short __a, int __b,
   9249                                               vector short *__c) {
   9250   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9251 }
   9252 
   9253 static __inline__ void __ATTRS_o_ai vec_stvxl(vector short __a, int __b,
   9254                                               short *__c) {
   9255   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9256 }
   9257 
   9258 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned short __a,
   9259                                               int __b,
   9260                                               vector unsigned short *__c) {
   9261   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9262 }
   9263 
   9264 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned short __a,
   9265                                               int __b, unsigned short *__c) {
   9266   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9267 }
   9268 
   9269 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
   9270                                               short *__c) {
   9271   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9272 }
   9273 
   9274 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
   9275                                               unsigned short *__c) {
   9276   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9277 }
   9278 
   9279 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
   9280                                               vector bool short *__c) {
   9281   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9282 }
   9283 
   9284 static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
   9285                                               short *__c) {
   9286   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9287 }
   9288 
   9289 static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
   9290                                               unsigned short *__c) {
   9291   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9292 }
   9293 
   9294 static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
   9295                                               vector pixel *__c) {
   9296   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9297 }
   9298 
   9299 static __inline__ void __ATTRS_o_ai vec_stvxl(vector int __a, int __b,
   9300                                               vector int *__c) {
   9301   __builtin_altivec_stvxl(__a, __b, __c);
   9302 }
   9303 
   9304 static __inline__ void __ATTRS_o_ai vec_stvxl(vector int __a, int __b,
   9305                                               int *__c) {
   9306   __builtin_altivec_stvxl(__a, __b, __c);
   9307 }
   9308 
   9309 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b,
   9310                                               vector unsigned int *__c) {
   9311   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9312 }
   9313 
   9314 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b,
   9315                                               unsigned int *__c) {
   9316   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9317 }
   9318 
   9319 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
   9320                                               int *__c) {
   9321   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9322 }
   9323 
   9324 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
   9325                                               unsigned int *__c) {
   9326   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9327 }
   9328 
   9329 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
   9330                                               vector bool int *__c) {
   9331   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9332 }
   9333 
   9334 static __inline__ void __ATTRS_o_ai vec_stvxl(vector float __a, int __b,
   9335                                               vector float *__c) {
   9336   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9337 }
   9338 
   9339 static __inline__ void __ATTRS_o_ai vec_stvxl(vector float __a, int __b,
   9340                                               float *__c) {
   9341   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   9342 }
   9343 
   9344 /* vec_sub */
   9345 
   9346 static __inline__ vector signed char __ATTRS_o_ai
   9347 vec_sub(vector signed char __a, vector signed char __b) {
   9348   return __a - __b;
   9349 }
   9350 
   9351 static __inline__ vector signed char __ATTRS_o_ai
   9352 vec_sub(vector bool char __a, vector signed char __b) {
   9353   return (vector signed char)__a - __b;
   9354 }
   9355 
   9356 static __inline__ vector signed char __ATTRS_o_ai
   9357 vec_sub(vector signed char __a, vector bool char __b) {
   9358   return __a - (vector signed char)__b;
   9359 }
   9360 
   9361 static __inline__ vector unsigned char __ATTRS_o_ai
   9362 vec_sub(vector unsigned char __a, vector unsigned char __b) {
   9363   return __a - __b;
   9364 }
   9365 
   9366 static __inline__ vector unsigned char __ATTRS_o_ai
   9367 vec_sub(vector bool char __a, vector unsigned char __b) {
   9368   return (vector unsigned char)__a - __b;
   9369 }
   9370 
   9371 static __inline__ vector unsigned char __ATTRS_o_ai
   9372 vec_sub(vector unsigned char __a, vector bool char __b) {
   9373   return __a - (vector unsigned char)__b;
   9374 }
   9375 
   9376 static __inline__ vector short __ATTRS_o_ai vec_sub(vector short __a,
   9377                                                     vector short __b) {
   9378   return __a - __b;
   9379 }
   9380 
   9381 static __inline__ vector short __ATTRS_o_ai vec_sub(vector bool short __a,
   9382                                                     vector short __b) {
   9383   return (vector short)__a - __b;
   9384 }
   9385 
   9386 static __inline__ vector short __ATTRS_o_ai vec_sub(vector short __a,
   9387                                                     vector bool short __b) {
   9388   return __a - (vector short)__b;
   9389 }
   9390 
   9391 static __inline__ vector unsigned short __ATTRS_o_ai
   9392 vec_sub(vector unsigned short __a, vector unsigned short __b) {
   9393   return __a - __b;
   9394 }
   9395 
   9396 static __inline__ vector unsigned short __ATTRS_o_ai
   9397 vec_sub(vector bool short __a, vector unsigned short __b) {
   9398   return (vector unsigned short)__a - __b;
   9399 }
   9400 
   9401 static __inline__ vector unsigned short __ATTRS_o_ai
   9402 vec_sub(vector unsigned short __a, vector bool short __b) {
   9403   return __a - (vector unsigned short)__b;
   9404 }
   9405 
   9406 static __inline__ vector int __ATTRS_o_ai vec_sub(vector int __a,
   9407                                                   vector int __b) {
   9408   return __a - __b;
   9409 }
   9410 
   9411 static __inline__ vector int __ATTRS_o_ai vec_sub(vector bool int __a,
   9412                                                   vector int __b) {
   9413   return (vector int)__a - __b;
   9414 }
   9415 
   9416 static __inline__ vector int __ATTRS_o_ai vec_sub(vector int __a,
   9417                                                   vector bool int __b) {
   9418   return __a - (vector int)__b;
   9419 }
   9420 
   9421 static __inline__ vector unsigned int __ATTRS_o_ai
   9422 vec_sub(vector unsigned int __a, vector unsigned int __b) {
   9423   return __a - __b;
   9424 }
   9425 
   9426 static __inline__ vector unsigned int __ATTRS_o_ai
   9427 vec_sub(vector bool int __a, vector unsigned int __b) {
   9428   return (vector unsigned int)__a - __b;
   9429 }
   9430 
   9431 static __inline__ vector unsigned int __ATTRS_o_ai
   9432 vec_sub(vector unsigned int __a, vector bool int __b) {
   9433   return __a - (vector unsigned int)__b;
   9434 }
   9435 
   9436 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   9437 static __inline__ vector signed __int128 __ATTRS_o_ai
   9438 vec_sub(vector signed __int128 __a, vector signed __int128 __b) {
   9439   return __a - __b;
   9440 }
   9441 
   9442 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   9443 vec_sub(vector unsigned __int128 __a, vector unsigned __int128 __b) {
   9444   return __a - __b;
   9445 }
   9446 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   9447 
   9448 #ifdef __VSX__
   9449 static __inline__ vector signed long long __ATTRS_o_ai
   9450 vec_sub(vector signed long long __a, vector signed long long __b) {
   9451   return __a - __b;
   9452 }
   9453 
   9454 static __inline__ vector unsigned long long __ATTRS_o_ai
   9455 vec_sub(vector unsigned long long __a, vector unsigned long long __b) {
   9456   return __a - __b;
   9457 }
   9458 
   9459 static __inline__ vector double __ATTRS_o_ai vec_sub(vector double __a,
   9460                                                      vector double __b) {
   9461   return __a - __b;
   9462 }
   9463 #endif
   9464 
   9465 static __inline__ vector float __ATTRS_o_ai vec_sub(vector float __a,
   9466                                                     vector float __b) {
   9467   return __a - __b;
   9468 }
   9469 
   9470 /* vec_vsububm */
   9471 
   9472 #define __builtin_altivec_vsububm vec_vsububm
   9473 
   9474 static __inline__ vector signed char __ATTRS_o_ai
   9475 vec_vsububm(vector signed char __a, vector signed char __b) {
   9476   return __a - __b;
   9477 }
   9478 
   9479 static __inline__ vector signed char __ATTRS_o_ai
   9480 vec_vsububm(vector bool char __a, vector signed char __b) {
   9481   return (vector signed char)__a - __b;
   9482 }
   9483 
   9484 static __inline__ vector signed char __ATTRS_o_ai
   9485 vec_vsububm(vector signed char __a, vector bool char __b) {
   9486   return __a - (vector signed char)__b;
   9487 }
   9488 
   9489 static __inline__ vector unsigned char __ATTRS_o_ai
   9490 vec_vsububm(vector unsigned char __a, vector unsigned char __b) {
   9491   return __a - __b;
   9492 }
   9493 
   9494 static __inline__ vector unsigned char __ATTRS_o_ai
   9495 vec_vsububm(vector bool char __a, vector unsigned char __b) {
   9496   return (vector unsigned char)__a - __b;
   9497 }
   9498 
   9499 static __inline__ vector unsigned char __ATTRS_o_ai
   9500 vec_vsububm(vector unsigned char __a, vector bool char __b) {
   9501   return __a - (vector unsigned char)__b;
   9502 }
   9503 
   9504 /* vec_vsubuhm */
   9505 
   9506 #define __builtin_altivec_vsubuhm vec_vsubuhm
   9507 
   9508 static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector short __a,
   9509                                                         vector short __b) {
   9510   return __a - __b;
   9511 }
   9512 
   9513 static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector bool short __a,
   9514                                                         vector short __b) {
   9515   return (vector short)__a - __b;
   9516 }
   9517 
   9518 static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector short __a,
   9519                                                         vector bool short __b) {
   9520   return __a - (vector short)__b;
   9521 }
   9522 
   9523 static __inline__ vector unsigned short __ATTRS_o_ai
   9524 vec_vsubuhm(vector unsigned short __a, vector unsigned short __b) {
   9525   return __a - __b;
   9526 }
   9527 
   9528 static __inline__ vector unsigned short __ATTRS_o_ai
   9529 vec_vsubuhm(vector bool short __a, vector unsigned short __b) {
   9530   return (vector unsigned short)__a - __b;
   9531 }
   9532 
   9533 static __inline__ vector unsigned short __ATTRS_o_ai
   9534 vec_vsubuhm(vector unsigned short __a, vector bool short __b) {
   9535   return __a - (vector unsigned short)__b;
   9536 }
   9537 
   9538 /* vec_vsubuwm */
   9539 
   9540 #define __builtin_altivec_vsubuwm vec_vsubuwm
   9541 
   9542 static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector int __a,
   9543                                                       vector int __b) {
   9544   return __a - __b;
   9545 }
   9546 
   9547 static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector bool int __a,
   9548                                                       vector int __b) {
   9549   return (vector int)__a - __b;
   9550 }
   9551 
   9552 static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector int __a,
   9553                                                       vector bool int __b) {
   9554   return __a - (vector int)__b;
   9555 }
   9556 
   9557 static __inline__ vector unsigned int __ATTRS_o_ai
   9558 vec_vsubuwm(vector unsigned int __a, vector unsigned int __b) {
   9559   return __a - __b;
   9560 }
   9561 
   9562 static __inline__ vector unsigned int __ATTRS_o_ai
   9563 vec_vsubuwm(vector bool int __a, vector unsigned int __b) {
   9564   return (vector unsigned int)__a - __b;
   9565 }
   9566 
   9567 static __inline__ vector unsigned int __ATTRS_o_ai
   9568 vec_vsubuwm(vector unsigned int __a, vector bool int __b) {
   9569   return __a - (vector unsigned int)__b;
   9570 }
   9571 
   9572 /* vec_vsubfp */
   9573 
   9574 #define __builtin_altivec_vsubfp vec_vsubfp
   9575 
   9576 static __inline__ vector float __attribute__((__always_inline__))
   9577 vec_vsubfp(vector float __a, vector float __b) {
   9578   return __a - __b;
   9579 }
   9580 
   9581 /* vec_subc */
   9582 
   9583 static __inline__ vector unsigned int __ATTRS_o_ai
   9584 vec_subc(vector unsigned int __a, vector unsigned int __b) {
   9585   return __builtin_altivec_vsubcuw(__a, __b);
   9586 }
   9587 
   9588 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   9589 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   9590 vec_subc(vector unsigned __int128 __a, vector unsigned __int128 __b) {
   9591   return __builtin_altivec_vsubcuq(__a, __b);
   9592 }
   9593 
   9594 static __inline__ vector signed __int128 __ATTRS_o_ai
   9595 vec_subc(vector signed __int128 __a, vector signed __int128 __b) {
   9596   return __builtin_altivec_vsubcuq(__a, __b);
   9597 }
   9598 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   9599 
   9600 /* vec_vsubcuw */
   9601 
   9602 static __inline__ vector unsigned int __attribute__((__always_inline__))
   9603 vec_vsubcuw(vector unsigned int __a, vector unsigned int __b) {
   9604   return __builtin_altivec_vsubcuw(__a, __b);
   9605 }
   9606 
   9607 /* vec_subs */
   9608 
   9609 static __inline__ vector signed char __ATTRS_o_ai
   9610 vec_subs(vector signed char __a, vector signed char __b) {
   9611   return __builtin_altivec_vsubsbs(__a, __b);
   9612 }
   9613 
   9614 static __inline__ vector signed char __ATTRS_o_ai
   9615 vec_subs(vector bool char __a, vector signed char __b) {
   9616   return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
   9617 }
   9618 
   9619 static __inline__ vector signed char __ATTRS_o_ai
   9620 vec_subs(vector signed char __a, vector bool char __b) {
   9621   return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
   9622 }
   9623 
   9624 static __inline__ vector unsigned char __ATTRS_o_ai
   9625 vec_subs(vector unsigned char __a, vector unsigned char __b) {
   9626   return __builtin_altivec_vsububs(__a, __b);
   9627 }
   9628 
   9629 static __inline__ vector unsigned char __ATTRS_o_ai
   9630 vec_subs(vector bool char __a, vector unsigned char __b) {
   9631   return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
   9632 }
   9633 
   9634 static __inline__ vector unsigned char __ATTRS_o_ai
   9635 vec_subs(vector unsigned char __a, vector bool char __b) {
   9636   return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
   9637 }
   9638 
   9639 static __inline__ vector short __ATTRS_o_ai vec_subs(vector short __a,
   9640                                                      vector short __b) {
   9641   return __builtin_altivec_vsubshs(__a, __b);
   9642 }
   9643 
   9644 static __inline__ vector short __ATTRS_o_ai vec_subs(vector bool short __a,
   9645                                                      vector short __b) {
   9646   return __builtin_altivec_vsubshs((vector short)__a, __b);
   9647 }
   9648 
   9649 static __inline__ vector short __ATTRS_o_ai vec_subs(vector short __a,
   9650                                                      vector bool short __b) {
   9651   return __builtin_altivec_vsubshs(__a, (vector short)__b);
   9652 }
   9653 
   9654 static __inline__ vector unsigned short __ATTRS_o_ai
   9655 vec_subs(vector unsigned short __a, vector unsigned short __b) {
   9656   return __builtin_altivec_vsubuhs(__a, __b);
   9657 }
   9658 
   9659 static __inline__ vector unsigned short __ATTRS_o_ai
   9660 vec_subs(vector bool short __a, vector unsigned short __b) {
   9661   return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
   9662 }
   9663 
   9664 static __inline__ vector unsigned short __ATTRS_o_ai
   9665 vec_subs(vector unsigned short __a, vector bool short __b) {
   9666   return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
   9667 }
   9668 
   9669 static __inline__ vector int __ATTRS_o_ai vec_subs(vector int __a,
   9670                                                    vector int __b) {
   9671   return __builtin_altivec_vsubsws(__a, __b);
   9672 }
   9673 
   9674 static __inline__ vector int __ATTRS_o_ai vec_subs(vector bool int __a,
   9675                                                    vector int __b) {
   9676   return __builtin_altivec_vsubsws((vector int)__a, __b);
   9677 }
   9678 
   9679 static __inline__ vector int __ATTRS_o_ai vec_subs(vector int __a,
   9680                                                    vector bool int __b) {
   9681   return __builtin_altivec_vsubsws(__a, (vector int)__b);
   9682 }
   9683 
   9684 static __inline__ vector unsigned int __ATTRS_o_ai
   9685 vec_subs(vector unsigned int __a, vector unsigned int __b) {
   9686   return __builtin_altivec_vsubuws(__a, __b);
   9687 }
   9688 
   9689 static __inline__ vector unsigned int __ATTRS_o_ai
   9690 vec_subs(vector bool int __a, vector unsigned int __b) {
   9691   return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
   9692 }
   9693 
   9694 static __inline__ vector unsigned int __ATTRS_o_ai
   9695 vec_subs(vector unsigned int __a, vector bool int __b) {
   9696   return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
   9697 }
   9698 
   9699 /* vec_vsubsbs */
   9700 
   9701 static __inline__ vector signed char __ATTRS_o_ai
   9702 vec_vsubsbs(vector signed char __a, vector signed char __b) {
   9703   return __builtin_altivec_vsubsbs(__a, __b);
   9704 }
   9705 
   9706 static __inline__ vector signed char __ATTRS_o_ai
   9707 vec_vsubsbs(vector bool char __a, vector signed char __b) {
   9708   return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
   9709 }
   9710 
   9711 static __inline__ vector signed char __ATTRS_o_ai
   9712 vec_vsubsbs(vector signed char __a, vector bool char __b) {
   9713   return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
   9714 }
   9715 
   9716 /* vec_vsububs */
   9717 
   9718 static __inline__ vector unsigned char __ATTRS_o_ai
   9719 vec_vsububs(vector unsigned char __a, vector unsigned char __b) {
   9720   return __builtin_altivec_vsububs(__a, __b);
   9721 }
   9722 
   9723 static __inline__ vector unsigned char __ATTRS_o_ai
   9724 vec_vsububs(vector bool char __a, vector unsigned char __b) {
   9725   return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
   9726 }
   9727 
   9728 static __inline__ vector unsigned char __ATTRS_o_ai
   9729 vec_vsububs(vector unsigned char __a, vector bool char __b) {
   9730   return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
   9731 }
   9732 
   9733 /* vec_vsubshs */
   9734 
   9735 static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector short __a,
   9736                                                         vector short __b) {
   9737   return __builtin_altivec_vsubshs(__a, __b);
   9738 }
   9739 
   9740 static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector bool short __a,
   9741                                                         vector short __b) {
   9742   return __builtin_altivec_vsubshs((vector short)__a, __b);
   9743 }
   9744 
   9745 static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector short __a,
   9746                                                         vector bool short __b) {
   9747   return __builtin_altivec_vsubshs(__a, (vector short)__b);
   9748 }
   9749 
   9750 /* vec_vsubuhs */
   9751 
   9752 static __inline__ vector unsigned short __ATTRS_o_ai
   9753 vec_vsubuhs(vector unsigned short __a, vector unsigned short __b) {
   9754   return __builtin_altivec_vsubuhs(__a, __b);
   9755 }
   9756 
   9757 static __inline__ vector unsigned short __ATTRS_o_ai
   9758 vec_vsubuhs(vector bool short __a, vector unsigned short __b) {
   9759   return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
   9760 }
   9761 
   9762 static __inline__ vector unsigned short __ATTRS_o_ai
   9763 vec_vsubuhs(vector unsigned short __a, vector bool short __b) {
   9764   return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
   9765 }
   9766 
   9767 /* vec_vsubsws */
   9768 
   9769 static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector int __a,
   9770                                                       vector int __b) {
   9771   return __builtin_altivec_vsubsws(__a, __b);
   9772 }
   9773 
   9774 static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector bool int __a,
   9775                                                       vector int __b) {
   9776   return __builtin_altivec_vsubsws((vector int)__a, __b);
   9777 }
   9778 
   9779 static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector int __a,
   9780                                                       vector bool int __b) {
   9781   return __builtin_altivec_vsubsws(__a, (vector int)__b);
   9782 }
   9783 
   9784 /* vec_vsubuws */
   9785 
   9786 static __inline__ vector unsigned int __ATTRS_o_ai
   9787 vec_vsubuws(vector unsigned int __a, vector unsigned int __b) {
   9788   return __builtin_altivec_vsubuws(__a, __b);
   9789 }
   9790 
   9791 static __inline__ vector unsigned int __ATTRS_o_ai
   9792 vec_vsubuws(vector bool int __a, vector unsigned int __b) {
   9793   return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
   9794 }
   9795 
   9796 static __inline__ vector unsigned int __ATTRS_o_ai
   9797 vec_vsubuws(vector unsigned int __a, vector bool int __b) {
   9798   return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
   9799 }
   9800 
   9801 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   9802 /* vec_vsubuqm */
   9803 
   9804 static __inline__ vector signed __int128 __ATTRS_o_ai
   9805 vec_vsubuqm(vector signed __int128 __a, vector signed __int128 __b) {
   9806   return __a - __b;
   9807 }
   9808 
   9809 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   9810 vec_vsubuqm(vector unsigned __int128 __a, vector unsigned __int128 __b) {
   9811   return __a - __b;
   9812 }
   9813 
   9814 /* vec_vsubeuqm */
   9815 
   9816 static __inline__ vector signed __int128 __ATTRS_o_ai
   9817 vec_vsubeuqm(vector signed __int128 __a, vector signed __int128 __b,
   9818              vector signed __int128 __c) {
   9819   return __builtin_altivec_vsubeuqm(__a, __b, __c);
   9820 }
   9821 
   9822 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   9823 vec_vsubeuqm(vector unsigned __int128 __a, vector unsigned __int128 __b,
   9824              vector unsigned __int128 __c) {
   9825   return __builtin_altivec_vsubeuqm(__a, __b, __c);
   9826 }
   9827 
   9828 /* vec_vsubcuq */
   9829 
   9830 static __inline__ vector signed __int128 __ATTRS_o_ai
   9831 vec_vsubcuq(vector signed __int128 __a, vector signed __int128 __b) {
   9832   return __builtin_altivec_vsubcuq(__a, __b);
   9833 }
   9834 
   9835 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   9836 vec_vsubcuq(vector unsigned __int128 __a, vector unsigned __int128 __b) {
   9837   return __builtin_altivec_vsubcuq(__a, __b);
   9838 }
   9839 
   9840 /* vec_vsubecuq */
   9841 
   9842 static __inline__ vector signed __int128 __ATTRS_o_ai
   9843 vec_vsubecuq(vector signed __int128 __a, vector signed __int128 __b,
   9844              vector signed __int128 __c) {
   9845   return __builtin_altivec_vsubecuq(__a, __b, __c);
   9846 }
   9847 
   9848 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   9849 vec_vsubecuq(vector unsigned __int128 __a, vector unsigned __int128 __b,
   9850              vector unsigned __int128 __c) {
   9851   return __builtin_altivec_vsubecuq(__a, __b, __c);
   9852 }
   9853 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   9854 
   9855 /* vec_sum4s */
   9856 
   9857 static __inline__ vector int __ATTRS_o_ai vec_sum4s(vector signed char __a,
   9858                                                     vector int __b) {
   9859   return __builtin_altivec_vsum4sbs(__a, __b);
   9860 }
   9861 
   9862 static __inline__ vector unsigned int __ATTRS_o_ai
   9863 vec_sum4s(vector unsigned char __a, vector unsigned int __b) {
   9864   return __builtin_altivec_vsum4ubs(__a, __b);
   9865 }
   9866 
   9867 static __inline__ vector int __ATTRS_o_ai vec_sum4s(vector signed short __a,
   9868                                                     vector int __b) {
   9869   return __builtin_altivec_vsum4shs(__a, __b);
   9870 }
   9871 
   9872 /* vec_vsum4sbs */
   9873 
   9874 static __inline__ vector int __attribute__((__always_inline__))
   9875 vec_vsum4sbs(vector signed char __a, vector int __b) {
   9876   return __builtin_altivec_vsum4sbs(__a, __b);
   9877 }
   9878 
   9879 /* vec_vsum4ubs */
   9880 
   9881 static __inline__ vector unsigned int __attribute__((__always_inline__))
   9882 vec_vsum4ubs(vector unsigned char __a, vector unsigned int __b) {
   9883   return __builtin_altivec_vsum4ubs(__a, __b);
   9884 }
   9885 
   9886 /* vec_vsum4shs */
   9887 
   9888 static __inline__ vector int __attribute__((__always_inline__))
   9889 vec_vsum4shs(vector signed short __a, vector int __b) {
   9890   return __builtin_altivec_vsum4shs(__a, __b);
   9891 }
   9892 
   9893 /* vec_sum2s */
   9894 
   9895 /* The vsum2sws instruction has a big-endian bias, so that the second
   9896    input vector and the result always reference big-endian elements
   9897    1 and 3 (little-endian element 0 and 2).  For ease of porting the
   9898    programmer wants elements 1 and 3 in both cases, so for little
   9899    endian we must perform some permutes.  */
   9900 
   9901 static __inline__ vector signed int __attribute__((__always_inline__))
   9902 vec_sum2s(vector int __a, vector int __b) {
   9903 #ifdef __LITTLE_ENDIAN__
   9904   vector int __c = (vector signed int)vec_perm(
   9905       __b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
   9906                                        8, 9, 10, 11));
   9907   __c = __builtin_altivec_vsum2sws(__a, __c);
   9908   return (vector signed int)vec_perm(
   9909       __c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
   9910                                        8, 9, 10, 11));
   9911 #else
   9912   return __builtin_altivec_vsum2sws(__a, __b);
   9913 #endif
   9914 }
   9915 
   9916 /* vec_vsum2sws */
   9917 
   9918 static __inline__ vector signed int __attribute__((__always_inline__))
   9919 vec_vsum2sws(vector int __a, vector int __b) {
   9920 #ifdef __LITTLE_ENDIAN__
   9921   vector int __c = (vector signed int)vec_perm(
   9922       __b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
   9923                                        8, 9, 10, 11));
   9924   __c = __builtin_altivec_vsum2sws(__a, __c);
   9925   return (vector signed int)vec_perm(
   9926       __c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
   9927                                        8, 9, 10, 11));
   9928 #else
   9929   return __builtin_altivec_vsum2sws(__a, __b);
   9930 #endif
   9931 }
   9932 
   9933 /* vec_sums */
   9934 
   9935 /* The vsumsws instruction has a big-endian bias, so that the second
   9936    input vector and the result always reference big-endian element 3
   9937    (little-endian element 0).  For ease of porting the programmer
   9938    wants element 3 in both cases, so for little endian we must perform
   9939    some permutes.  */
   9940 
   9941 static __inline__ vector signed int __attribute__((__always_inline__))
   9942 vec_sums(vector signed int __a, vector signed int __b) {
   9943 #ifdef __LITTLE_ENDIAN__
   9944   __b = (vector signed int)vec_splat(__b, 3);
   9945   __b = __builtin_altivec_vsumsws(__a, __b);
   9946   return (vector signed int)(0, 0, 0, __b[0]);
   9947 #else
   9948   return __builtin_altivec_vsumsws(__a, __b);
   9949 #endif
   9950 }
   9951 
   9952 /* vec_vsumsws */
   9953 
   9954 static __inline__ vector signed int __attribute__((__always_inline__))
   9955 vec_vsumsws(vector signed int __a, vector signed int __b) {
   9956 #ifdef __LITTLE_ENDIAN__
   9957   __b = (vector signed int)vec_splat(__b, 3);
   9958   __b = __builtin_altivec_vsumsws(__a, __b);
   9959   return (vector signed int)(0, 0, 0, __b[0]);
   9960 #else
   9961   return __builtin_altivec_vsumsws(__a, __b);
   9962 #endif
   9963 }
   9964 
   9965 /* vec_trunc */
   9966 
   9967 static __inline__ vector float __ATTRS_o_ai vec_trunc(vector float __a) {
   9968 #ifdef __VSX__
   9969   return __builtin_vsx_xvrspiz(__a);
   9970 #else
   9971   return __builtin_altivec_vrfiz(__a);
   9972 #endif
   9973 }
   9974 
   9975 #ifdef __VSX__
   9976 static __inline__ vector double __ATTRS_o_ai vec_trunc(vector double __a) {
   9977   return __builtin_vsx_xvrdpiz(__a);
   9978 }
   9979 #endif
   9980 
   9981 /* vec_vrfiz */
   9982 
   9983 static __inline__ vector float __attribute__((__always_inline__))
   9984 vec_vrfiz(vector float __a) {
   9985   return __builtin_altivec_vrfiz(__a);
   9986 }
   9987 
   9988 /* vec_unpackh */
   9989 
   9990 /* The vector unpack instructions all have a big-endian bias, so for
   9991    little endian we must reverse the meanings of "high" and "low."  */
   9992 
   9993 static __inline__ vector short __ATTRS_o_ai
   9994 vec_unpackh(vector signed char __a) {
   9995 #ifdef __LITTLE_ENDIAN__
   9996   return __builtin_altivec_vupklsb((vector char)__a);
   9997 #else
   9998   return __builtin_altivec_vupkhsb((vector char)__a);
   9999 #endif
   10000 }
   10001 
   10002 static __inline__ vector bool short __ATTRS_o_ai
   10003 vec_unpackh(vector bool char __a) {
   10004 #ifdef __LITTLE_ENDIAN__
   10005   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
   10006 #else
   10007   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
   10008 #endif
   10009 }
   10010 
   10011 static __inline__ vector int __ATTRS_o_ai vec_unpackh(vector short __a) {
   10012 #ifdef __LITTLE_ENDIAN__
   10013   return __builtin_altivec_vupklsh(__a);
   10014 #else
   10015   return __builtin_altivec_vupkhsh(__a);
   10016 #endif
   10017 }
   10018 
   10019 static __inline__ vector bool int __ATTRS_o_ai
   10020 vec_unpackh(vector bool short __a) {
   10021 #ifdef __LITTLE_ENDIAN__
   10022   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
   10023 #else
   10024   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
   10025 #endif
   10026 }
   10027 
   10028 static __inline__ vector unsigned int __ATTRS_o_ai
   10029 vec_unpackh(vector pixel __a) {
   10030 #ifdef __LITTLE_ENDIAN__
   10031   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
   10032 #else
   10033   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
   10034 #endif
   10035 }
   10036 
   10037 #ifdef __POWER8_VECTOR__
   10038 static __inline__ vector long long __ATTRS_o_ai vec_unpackh(vector int __a) {
   10039 #ifdef __LITTLE_ENDIAN__
   10040   return __builtin_altivec_vupklsw(__a);
   10041 #else
   10042   return __builtin_altivec_vupkhsw(__a);
   10043 #endif
   10044 }
   10045 
   10046 static __inline__ vector bool long long __ATTRS_o_ai
   10047 vec_unpackh(vector bool int __a) {
   10048 #ifdef __LITTLE_ENDIAN__
   10049   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
   10050 #else
   10051   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
   10052 #endif
   10053 }
   10054 #endif
   10055 
   10056 /* vec_vupkhsb */
   10057 
   10058 static __inline__ vector short __ATTRS_o_ai
   10059 vec_vupkhsb(vector signed char __a) {
   10060 #ifdef __LITTLE_ENDIAN__
   10061   return __builtin_altivec_vupklsb((vector char)__a);
   10062 #else
   10063   return __builtin_altivec_vupkhsb((vector char)__a);
   10064 #endif
   10065 }
   10066 
   10067 static __inline__ vector bool short __ATTRS_o_ai
   10068 vec_vupkhsb(vector bool char __a) {
   10069 #ifdef __LITTLE_ENDIAN__
   10070   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
   10071 #else
   10072   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
   10073 #endif
   10074 }
   10075 
   10076 /* vec_vupkhsh */
   10077 
   10078 static __inline__ vector int __ATTRS_o_ai vec_vupkhsh(vector short __a) {
   10079 #ifdef __LITTLE_ENDIAN__
   10080   return __builtin_altivec_vupklsh(__a);
   10081 #else
   10082   return __builtin_altivec_vupkhsh(__a);
   10083 #endif
   10084 }
   10085 
   10086 static __inline__ vector bool int __ATTRS_o_ai
   10087 vec_vupkhsh(vector bool short __a) {
   10088 #ifdef __LITTLE_ENDIAN__
   10089   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
   10090 #else
   10091   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
   10092 #endif
   10093 }
   10094 
   10095 static __inline__ vector unsigned int __ATTRS_o_ai
   10096 vec_vupkhsh(vector pixel __a) {
   10097 #ifdef __LITTLE_ENDIAN__
   10098   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
   10099 #else
   10100   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
   10101 #endif
   10102 }
   10103 
   10104 /* vec_vupkhsw */
   10105 
   10106 #ifdef __POWER8_VECTOR__
   10107 static __inline__ vector long long __ATTRS_o_ai vec_vupkhsw(vector int __a) {
   10108 #ifdef __LITTLE_ENDIAN__
   10109   return __builtin_altivec_vupklsw(__a);
   10110 #else
   10111   return __builtin_altivec_vupkhsw(__a);
   10112 #endif
   10113 }
   10114 
   10115 static __inline__ vector bool long long __ATTRS_o_ai
   10116 vec_vupkhsw(vector bool int __a) {
   10117 #ifdef __LITTLE_ENDIAN__
   10118   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
   10119 #else
   10120   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
   10121 #endif
   10122 }
   10123 #endif
   10124 
   10125 /* vec_unpackl */
   10126 
   10127 static __inline__ vector short __ATTRS_o_ai
   10128 vec_unpackl(vector signed char __a) {
   10129 #ifdef __LITTLE_ENDIAN__
   10130   return __builtin_altivec_vupkhsb((vector char)__a);
   10131 #else
   10132   return __builtin_altivec_vupklsb((vector char)__a);
   10133 #endif
   10134 }
   10135 
   10136 static __inline__ vector bool short __ATTRS_o_ai
   10137 vec_unpackl(vector bool char __a) {
   10138 #ifdef __LITTLE_ENDIAN__
   10139   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
   10140 #else
   10141   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
   10142 #endif
   10143 }
   10144 
   10145 static __inline__ vector int __ATTRS_o_ai vec_unpackl(vector short __a) {
   10146 #ifdef __LITTLE_ENDIAN__
   10147   return __builtin_altivec_vupkhsh(__a);
   10148 #else
   10149   return __builtin_altivec_vupklsh(__a);
   10150 #endif
   10151 }
   10152 
   10153 static __inline__ vector bool int __ATTRS_o_ai
   10154 vec_unpackl(vector bool short __a) {
   10155 #ifdef __LITTLE_ENDIAN__
   10156   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
   10157 #else
   10158   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
   10159 #endif
   10160 }
   10161 
   10162 static __inline__ vector unsigned int __ATTRS_o_ai
   10163 vec_unpackl(vector pixel __a) {
   10164 #ifdef __LITTLE_ENDIAN__
   10165   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
   10166 #else
   10167   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
   10168 #endif
   10169 }
   10170 
   10171 #ifdef __POWER8_VECTOR__
   10172 static __inline__ vector long long __ATTRS_o_ai vec_unpackl(vector int __a) {
   10173 #ifdef __LITTLE_ENDIAN__
   10174   return __builtin_altivec_vupkhsw(__a);
   10175 #else
   10176   return __builtin_altivec_vupklsw(__a);
   10177 #endif
   10178 }
   10179 
   10180 static __inline__ vector bool long long __ATTRS_o_ai
   10181 vec_unpackl(vector bool int __a) {
   10182 #ifdef __LITTLE_ENDIAN__
   10183   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
   10184 #else
   10185   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
   10186 #endif
   10187 }
   10188 #endif
   10189 
   10190 /* vec_vupklsb */
   10191 
   10192 static __inline__ vector short __ATTRS_o_ai
   10193 vec_vupklsb(vector signed char __a) {
   10194 #ifdef __LITTLE_ENDIAN__
   10195   return __builtin_altivec_vupkhsb((vector char)__a);
   10196 #else
   10197   return __builtin_altivec_vupklsb((vector char)__a);
   10198 #endif
   10199 }
   10200 
   10201 static __inline__ vector bool short __ATTRS_o_ai
   10202 vec_vupklsb(vector bool char __a) {
   10203 #ifdef __LITTLE_ENDIAN__
   10204   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
   10205 #else
   10206   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
   10207 #endif
   10208 }
   10209 
   10210 /* vec_vupklsh */
   10211 
   10212 static __inline__ vector int __ATTRS_o_ai vec_vupklsh(vector short __a) {
   10213 #ifdef __LITTLE_ENDIAN__
   10214   return __builtin_altivec_vupkhsh(__a);
   10215 #else
   10216   return __builtin_altivec_vupklsh(__a);
   10217 #endif
   10218 }
   10219 
   10220 static __inline__ vector bool int __ATTRS_o_ai
   10221 vec_vupklsh(vector bool short __a) {
   10222 #ifdef __LITTLE_ENDIAN__
   10223   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
   10224 #else
   10225   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
   10226 #endif
   10227 }
   10228 
   10229 static __inline__ vector unsigned int __ATTRS_o_ai
   10230 vec_vupklsh(vector pixel __a) {
   10231 #ifdef __LITTLE_ENDIAN__
   10232   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
   10233 #else
   10234   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
   10235 #endif
   10236 }
   10237 
   10238 /* vec_vupklsw */
   10239 
   10240 #ifdef __POWER8_VECTOR__
   10241 static __inline__ vector long long __ATTRS_o_ai vec_vupklsw(vector int __a) {
   10242 #ifdef __LITTLE_ENDIAN__
   10243   return __builtin_altivec_vupkhsw(__a);
   10244 #else
   10245   return __builtin_altivec_vupklsw(__a);
   10246 #endif
   10247 }
   10248 
   10249 static __inline__ vector bool long long __ATTRS_o_ai
   10250 vec_vupklsw(vector bool int __a) {
   10251 #ifdef __LITTLE_ENDIAN__
   10252   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
   10253 #else
   10254   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
   10255 #endif
   10256 }
   10257 #endif
   10258 
   10259 /* vec_vsx_ld */
   10260 
   10261 #ifdef __VSX__
   10262 
   10263 static __inline__ vector bool int __ATTRS_o_ai
   10264 vec_vsx_ld(int __a, const vector bool int *__b) {
   10265   return (vector bool int)__builtin_vsx_lxvw4x(__a, __b);
   10266 }
   10267 
   10268 static __inline__ vector signed int __ATTRS_o_ai
   10269 vec_vsx_ld(int __a, const vector signed int *__b) {
   10270   return (vector signed int)__builtin_vsx_lxvw4x(__a, __b);
   10271 }
   10272 
   10273 static __inline__ vector signed int __ATTRS_o_ai
   10274 vec_vsx_ld(int __a, const signed int *__b) {
   10275   return (vector signed int)__builtin_vsx_lxvw4x(__a, __b);
   10276 }
   10277 
   10278 static __inline__ vector unsigned int __ATTRS_o_ai
   10279 vec_vsx_ld(int __a, const vector unsigned int *__b) {
   10280   return (vector unsigned int)__builtin_vsx_lxvw4x(__a, __b);
   10281 }
   10282 
   10283 static __inline__ vector unsigned int __ATTRS_o_ai
   10284 vec_vsx_ld(int __a, const unsigned int *__b) {
   10285   return (vector unsigned int)__builtin_vsx_lxvw4x(__a, __b);
   10286 }
   10287 
   10288 static __inline__ vector float __ATTRS_o_ai
   10289 vec_vsx_ld(int __a, const vector float *__b) {
   10290   return (vector float)__builtin_vsx_lxvw4x(__a, __b);
   10291 }
   10292 
   10293 static __inline__ vector float __ATTRS_o_ai vec_vsx_ld(int __a,
   10294                                                        const float *__b) {
   10295   return (vector float)__builtin_vsx_lxvw4x(__a, __b);
   10296 }
   10297 
   10298 static __inline__ vector signed long long __ATTRS_o_ai
   10299 vec_vsx_ld(int __a, const vector signed long long *__b) {
   10300   return (vector signed long long)__builtin_vsx_lxvd2x(__a, __b);
   10301 }
   10302 
   10303 static __inline__ vector unsigned long long __ATTRS_o_ai
   10304 vec_vsx_ld(int __a, const vector unsigned long long *__b) {
   10305   return (vector unsigned long long)__builtin_vsx_lxvd2x(__a, __b);
   10306 }
   10307 
   10308 static __inline__ vector double __ATTRS_o_ai
   10309 vec_vsx_ld(int __a, const vector double *__b) {
   10310   return (vector double)__builtin_vsx_lxvd2x(__a, __b);
   10311 }
   10312 
   10313 static __inline__ vector double __ATTRS_o_ai
   10314 vec_vsx_ld(int __a, const double *__b) {
   10315   return (vector double)__builtin_vsx_lxvd2x(__a, __b);
   10316 }
   10317 
   10318 static __inline__ vector bool short __ATTRS_o_ai
   10319 vec_vsx_ld(int __a, const vector bool short *__b) {
   10320   return (vector bool short)__builtin_vsx_lxvw4x(__a, __b);
   10321 }
   10322 
   10323 static __inline__ vector signed short __ATTRS_o_ai
   10324 vec_vsx_ld(int __a, const vector signed short *__b) {
   10325   return (vector signed short)__builtin_vsx_lxvw4x(__a, __b);
   10326 }
   10327 
   10328 static __inline__ vector signed short __ATTRS_o_ai
   10329 vec_vsx_ld(int __a, const signed short *__b) {
   10330   return (vector signed short)__builtin_vsx_lxvw4x(__a, __b);
   10331 }
   10332 
   10333 static __inline__ vector unsigned short __ATTRS_o_ai
   10334 vec_vsx_ld(int __a, const vector unsigned short *__b) {
   10335   return (vector unsigned short)__builtin_vsx_lxvw4x(__a, __b);
   10336 }
   10337 
   10338 static __inline__ vector unsigned short __ATTRS_o_ai
   10339 vec_vsx_ld(int __a, const unsigned short *__b) {
   10340   return (vector unsigned short)__builtin_vsx_lxvw4x(__a, __b);
   10341 }
   10342 
   10343 static __inline__ vector bool char __ATTRS_o_ai
   10344 vec_vsx_ld(int __a, const vector bool char *__b) {
   10345   return (vector bool char)__builtin_vsx_lxvw4x(__a, __b);
   10346 }
   10347 
   10348 static __inline__ vector signed char __ATTRS_o_ai
   10349 vec_vsx_ld(int __a, const vector signed char *__b) {
   10350   return (vector signed char)__builtin_vsx_lxvw4x(__a, __b);
   10351 }
   10352 
   10353 static __inline__ vector signed char __ATTRS_o_ai
   10354 vec_vsx_ld(int __a, const signed char *__b) {
   10355   return (vector signed char)__builtin_vsx_lxvw4x(__a, __b);
   10356 }
   10357 
   10358 static __inline__ vector unsigned char __ATTRS_o_ai
   10359 vec_vsx_ld(int __a, const vector unsigned char *__b) {
   10360   return (vector unsigned char)__builtin_vsx_lxvw4x(__a, __b);
   10361 }
   10362 
   10363 static __inline__ vector unsigned char __ATTRS_o_ai
   10364 vec_vsx_ld(int __a, const unsigned char *__b) {
   10365   return (vector unsigned char)__builtin_vsx_lxvw4x(__a, __b);
   10366 }
   10367 
   10368 #endif
   10369 
   10370 /* vec_vsx_st */
   10371 
   10372 #ifdef __VSX__
   10373 
   10374 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
   10375                                                vector bool int *__c) {
   10376   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10377 }
   10378 
   10379 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
   10380                                                signed int *__c) {
   10381   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10382 }
   10383 
   10384 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
   10385                                                unsigned int *__c) {
   10386   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10387 }
   10388 
   10389 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed int __a, int __b,
   10390                                                vector signed int *__c) {
   10391   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10392 }
   10393 
   10394 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed int __a, int __b,
   10395                                                signed int *__c) {
   10396   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10397 }
   10398 
   10399 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned int __a, int __b,
   10400                                                vector unsigned int *__c) {
   10401   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10402 }
   10403 
   10404 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned int __a, int __b,
   10405                                                unsigned int *__c) {
   10406   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10407 }
   10408 
   10409 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector float __a, int __b,
   10410                                                vector float *__c) {
   10411   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10412 }
   10413 
   10414 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector float __a, int __b,
   10415                                                float *__c) {
   10416   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10417 }
   10418 
   10419 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed long long __a,
   10420                                                int __b,
   10421                                                vector signed long long *__c) {
   10422   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
   10423 }
   10424 
   10425 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned long long __a,
   10426                                                int __b,
   10427                                                vector unsigned long long *__c) {
   10428   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
   10429 }
   10430 
   10431 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector double __a, int __b,
   10432                                                vector double *__c) {
   10433   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
   10434 }
   10435 
   10436 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector double __a, int __b,
   10437                                                double *__c) {
   10438   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
   10439 }
   10440 
   10441 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
   10442                                                vector bool short *__c) {
   10443   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10444 }
   10445 
   10446 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
   10447                                                signed short *__c) {
   10448   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10449 }
   10450 
   10451 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
   10452                                                unsigned short *__c) {
   10453   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10454 }
   10455 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed short __a, int __b,
   10456                                                vector signed short *__c) {
   10457   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10458 }
   10459 
   10460 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed short __a, int __b,
   10461                                                signed short *__c) {
   10462   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10463 }
   10464 
   10465 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned short __a,
   10466                                                int __b,
   10467                                                vector unsigned short *__c) {
   10468   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10469 }
   10470 
   10471 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned short __a,
   10472                                                int __b, unsigned short *__c) {
   10473   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10474 }
   10475 
   10476 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
   10477                                                vector bool char *__c) {
   10478   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10479 }
   10480 
   10481 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
   10482                                                signed char *__c) {
   10483   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10484 }
   10485 
   10486 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
   10487                                                unsigned char *__c) {
   10488   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10489 }
   10490 
   10491 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed char __a, int __b,
   10492                                                vector signed char *__c) {
   10493   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10494 }
   10495 
   10496 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed char __a, int __b,
   10497                                                signed char *__c) {
   10498   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10499 }
   10500 
   10501 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned char __a,
   10502                                                int __b,
   10503                                                vector unsigned char *__c) {
   10504   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10505 }
   10506 
   10507 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned char __a,
   10508                                                int __b, unsigned char *__c) {
   10509   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   10510 }
   10511 
   10512 #endif
   10513 
   10514 /* vec_xor */
   10515 
   10516 #define __builtin_altivec_vxor vec_xor
   10517 
   10518 static __inline__ vector signed char __ATTRS_o_ai
   10519 vec_xor(vector signed char __a, vector signed char __b) {
   10520   return __a ^ __b;
   10521 }
   10522 
   10523 static __inline__ vector signed char __ATTRS_o_ai
   10524 vec_xor(vector bool char __a, vector signed char __b) {
   10525   return (vector signed char)__a ^ __b;
   10526 }
   10527 
   10528 static __inline__ vector signed char __ATTRS_o_ai
   10529 vec_xor(vector signed char __a, vector bool char __b) {
   10530   return __a ^ (vector signed char)__b;
   10531 }
   10532 
   10533 static __inline__ vector unsigned char __ATTRS_o_ai
   10534 vec_xor(vector unsigned char __a, vector unsigned char __b) {
   10535   return __a ^ __b;
   10536 }
   10537 
   10538 static __inline__ vector unsigned char __ATTRS_o_ai
   10539 vec_xor(vector bool char __a, vector unsigned char __b) {
   10540   return (vector unsigned char)__a ^ __b;
   10541 }
   10542 
   10543 static __inline__ vector unsigned char __ATTRS_o_ai
   10544 vec_xor(vector unsigned char __a, vector bool char __b) {
   10545   return __a ^ (vector unsigned char)__b;
   10546 }
   10547 
   10548 static __inline__ vector bool char __ATTRS_o_ai vec_xor(vector bool char __a,
   10549                                                         vector bool char __b) {
   10550   return __a ^ __b;
   10551 }
   10552 
   10553 static __inline__ vector short __ATTRS_o_ai vec_xor(vector short __a,
   10554                                                     vector short __b) {
   10555   return __a ^ __b;
   10556 }
   10557 
   10558 static __inline__ vector short __ATTRS_o_ai vec_xor(vector bool short __a,
   10559                                                     vector short __b) {
   10560   return (vector short)__a ^ __b;
   10561 }
   10562 
   10563 static __inline__ vector short __ATTRS_o_ai vec_xor(vector short __a,
   10564                                                     vector bool short __b) {
   10565   return __a ^ (vector short)__b;
   10566 }
   10567 
   10568 static __inline__ vector unsigned short __ATTRS_o_ai
   10569 vec_xor(vector unsigned short __a, vector unsigned short __b) {
   10570   return __a ^ __b;
   10571 }
   10572 
   10573 static __inline__ vector unsigned short __ATTRS_o_ai
   10574 vec_xor(vector bool short __a, vector unsigned short __b) {
   10575   return (vector unsigned short)__a ^ __b;
   10576 }
   10577 
   10578 static __inline__ vector unsigned short __ATTRS_o_ai
   10579 vec_xor(vector unsigned short __a, vector bool short __b) {
   10580   return __a ^ (vector unsigned short)__b;
   10581 }
   10582 
   10583 static __inline__ vector bool short __ATTRS_o_ai
   10584 vec_xor(vector bool short __a, vector bool short __b) {
   10585   return __a ^ __b;
   10586 }
   10587 
   10588 static __inline__ vector int __ATTRS_o_ai vec_xor(vector int __a,
   10589                                                   vector int __b) {
   10590   return __a ^ __b;
   10591 }
   10592 
   10593 static __inline__ vector int __ATTRS_o_ai vec_xor(vector bool int __a,
   10594                                                   vector int __b) {
   10595   return (vector int)__a ^ __b;
   10596 }
   10597 
   10598 static __inline__ vector int __ATTRS_o_ai vec_xor(vector int __a,
   10599                                                   vector bool int __b) {
   10600   return __a ^ (vector int)__b;
   10601 }
   10602 
   10603 static __inline__ vector unsigned int __ATTRS_o_ai
   10604 vec_xor(vector unsigned int __a, vector unsigned int __b) {
   10605   return __a ^ __b;
   10606 }
   10607 
   10608 static __inline__ vector unsigned int __ATTRS_o_ai
   10609 vec_xor(vector bool int __a, vector unsigned int __b) {
   10610   return (vector unsigned int)__a ^ __b;
   10611 }
   10612 
   10613 static __inline__ vector unsigned int __ATTRS_o_ai
   10614 vec_xor(vector unsigned int __a, vector bool int __b) {
   10615   return __a ^ (vector unsigned int)__b;
   10616 }
   10617 
   10618 static __inline__ vector bool int __ATTRS_o_ai vec_xor(vector bool int __a,
   10619                                                        vector bool int __b) {
   10620   return __a ^ __b;
   10621 }
   10622 
   10623 static __inline__ vector float __ATTRS_o_ai vec_xor(vector float __a,
   10624                                                     vector float __b) {
   10625   vector unsigned int __res =
   10626       (vector unsigned int)__a ^ (vector unsigned int)__b;
   10627   return (vector float)__res;
   10628 }
   10629 
   10630 static __inline__ vector float __ATTRS_o_ai vec_xor(vector bool int __a,
   10631                                                     vector float __b) {
   10632   vector unsigned int __res =
   10633       (vector unsigned int)__a ^ (vector unsigned int)__b;
   10634   return (vector float)__res;
   10635 }
   10636 
   10637 static __inline__ vector float __ATTRS_o_ai vec_xor(vector float __a,
   10638                                                     vector bool int __b) {
   10639   vector unsigned int __res =
   10640       (vector unsigned int)__a ^ (vector unsigned int)__b;
   10641   return (vector float)__res;
   10642 }
   10643 
   10644 #ifdef __VSX__
   10645 static __inline__ vector signed long long __ATTRS_o_ai
   10646 vec_xor(vector signed long long __a, vector signed long long __b) {
   10647   return __a ^ __b;
   10648 }
   10649 
   10650 static __inline__ vector signed long long __ATTRS_o_ai
   10651 vec_xor(vector bool long long __a, vector signed long long __b) {
   10652   return (vector signed long long)__a ^ __b;
   10653 }
   10654 
   10655 static __inline__ vector signed long long __ATTRS_o_ai
   10656 vec_xor(vector signed long long __a, vector bool long long __b) {
   10657   return __a ^ (vector signed long long)__b;
   10658 }
   10659 
   10660 static __inline__ vector unsigned long long __ATTRS_o_ai
   10661 vec_xor(vector unsigned long long __a, vector unsigned long long __b) {
   10662   return __a ^ __b;
   10663 }
   10664 
   10665 static __inline__ vector unsigned long long __ATTRS_o_ai
   10666 vec_xor(vector bool long long __a, vector unsigned long long __b) {
   10667   return (vector unsigned long long)__a ^ __b;
   10668 }
   10669 
   10670 static __inline__ vector unsigned long long __ATTRS_o_ai
   10671 vec_xor(vector unsigned long long __a, vector bool long long __b) {
   10672   return __a ^ (vector unsigned long long)__b;
   10673 }
   10674 
   10675 static __inline__ vector bool long long __ATTRS_o_ai
   10676 vec_xor(vector bool long long __a, vector bool long long __b) {
   10677   return __a ^ __b;
   10678 }
   10679 
   10680 static __inline__ vector double __ATTRS_o_ai vec_xor(vector double __a,
   10681                                                      vector double __b) {
   10682   return (vector double)((vector unsigned long long)__a ^
   10683                          (vector unsigned long long)__b);
   10684 }
   10685 
   10686 static __inline__ vector double __ATTRS_o_ai
   10687 vec_xor(vector double __a, vector bool long long __b) {
   10688   return (vector double)((vector unsigned long long)__a ^
   10689                          (vector unsigned long long)__b);
   10690 }
   10691 
   10692 static __inline__ vector double __ATTRS_o_ai vec_xor(vector bool long long __a,
   10693                                                      vector double __b) {
   10694   return (vector double)((vector unsigned long long)__a ^
   10695                          (vector unsigned long long)__b);
   10696 }
   10697 #endif
   10698 
   10699 /* vec_vxor */
   10700 
   10701 static __inline__ vector signed char __ATTRS_o_ai
   10702 vec_vxor(vector signed char __a, vector signed char __b) {
   10703   return __a ^ __b;
   10704 }
   10705 
   10706 static __inline__ vector signed char __ATTRS_o_ai
   10707 vec_vxor(vector bool char __a, vector signed char __b) {
   10708   return (vector signed char)__a ^ __b;
   10709 }
   10710 
   10711 static __inline__ vector signed char __ATTRS_o_ai
   10712 vec_vxor(vector signed char __a, vector bool char __b) {
   10713   return __a ^ (vector signed char)__b;
   10714 }
   10715 
   10716 static __inline__ vector unsigned char __ATTRS_o_ai
   10717 vec_vxor(vector unsigned char __a, vector unsigned char __b) {
   10718   return __a ^ __b;
   10719 }
   10720 
   10721 static __inline__ vector unsigned char __ATTRS_o_ai
   10722 vec_vxor(vector bool char __a, vector unsigned char __b) {
   10723   return (vector unsigned char)__a ^ __b;
   10724 }
   10725 
   10726 static __inline__ vector unsigned char __ATTRS_o_ai
   10727 vec_vxor(vector unsigned char __a, vector bool char __b) {
   10728   return __a ^ (vector unsigned char)__b;
   10729 }
   10730 
   10731 static __inline__ vector bool char __ATTRS_o_ai vec_vxor(vector bool char __a,
   10732                                                          vector bool char __b) {
   10733   return __a ^ __b;
   10734 }
   10735 
   10736 static __inline__ vector short __ATTRS_o_ai vec_vxor(vector short __a,
   10737                                                      vector short __b) {
   10738   return __a ^ __b;
   10739 }
   10740 
   10741 static __inline__ vector short __ATTRS_o_ai vec_vxor(vector bool short __a,
   10742                                                      vector short __b) {
   10743   return (vector short)__a ^ __b;
   10744 }
   10745 
   10746 static __inline__ vector short __ATTRS_o_ai vec_vxor(vector short __a,
   10747                                                      vector bool short __b) {
   10748   return __a ^ (vector short)__b;
   10749 }
   10750 
   10751 static __inline__ vector unsigned short __ATTRS_o_ai
   10752 vec_vxor(vector unsigned short __a, vector unsigned short __b) {
   10753   return __a ^ __b;
   10754 }
   10755 
   10756 static __inline__ vector unsigned short __ATTRS_o_ai
   10757 vec_vxor(vector bool short __a, vector unsigned short __b) {
   10758   return (vector unsigned short)__a ^ __b;
   10759 }
   10760 
   10761 static __inline__ vector unsigned short __ATTRS_o_ai
   10762 vec_vxor(vector unsigned short __a, vector bool short __b) {
   10763   return __a ^ (vector unsigned short)__b;
   10764 }
   10765 
   10766 static __inline__ vector bool short __ATTRS_o_ai
   10767 vec_vxor(vector bool short __a, vector bool short __b) {
   10768   return __a ^ __b;
   10769 }
   10770 
   10771 static __inline__ vector int __ATTRS_o_ai vec_vxor(vector int __a,
   10772                                                    vector int __b) {
   10773   return __a ^ __b;
   10774 }
   10775 
   10776 static __inline__ vector int __ATTRS_o_ai vec_vxor(vector bool int __a,
   10777                                                    vector int __b) {
   10778   return (vector int)__a ^ __b;
   10779 }
   10780 
   10781 static __inline__ vector int __ATTRS_o_ai vec_vxor(vector int __a,
   10782                                                    vector bool int __b) {
   10783   return __a ^ (vector int)__b;
   10784 }
   10785 
   10786 static __inline__ vector unsigned int __ATTRS_o_ai
   10787 vec_vxor(vector unsigned int __a, vector unsigned int __b) {
   10788   return __a ^ __b;
   10789 }
   10790 
   10791 static __inline__ vector unsigned int __ATTRS_o_ai
   10792 vec_vxor(vector bool int __a, vector unsigned int __b) {
   10793   return (vector unsigned int)__a ^ __b;
   10794 }
   10795 
   10796 static __inline__ vector unsigned int __ATTRS_o_ai
   10797 vec_vxor(vector unsigned int __a, vector bool int __b) {
   10798   return __a ^ (vector unsigned int)__b;
   10799 }
   10800 
   10801 static __inline__ vector bool int __ATTRS_o_ai vec_vxor(vector bool int __a,
   10802                                                         vector bool int __b) {
   10803   return __a ^ __b;
   10804 }
   10805 
   10806 static __inline__ vector float __ATTRS_o_ai vec_vxor(vector float __a,
   10807                                                      vector float __b) {
   10808   vector unsigned int __res =
   10809       (vector unsigned int)__a ^ (vector unsigned int)__b;
   10810   return (vector float)__res;
   10811 }
   10812 
   10813 static __inline__ vector float __ATTRS_o_ai vec_vxor(vector bool int __a,
   10814                                                      vector float __b) {
   10815   vector unsigned int __res =
   10816       (vector unsigned int)__a ^ (vector unsigned int)__b;
   10817   return (vector float)__res;
   10818 }
   10819 
   10820 static __inline__ vector float __ATTRS_o_ai vec_vxor(vector float __a,
   10821                                                      vector bool int __b) {
   10822   vector unsigned int __res =
   10823       (vector unsigned int)__a ^ (vector unsigned int)__b;
   10824   return (vector float)__res;
   10825 }
   10826 
   10827 #ifdef __VSX__
   10828 static __inline__ vector signed long long __ATTRS_o_ai
   10829 vec_vxor(vector signed long long __a, vector signed long long __b) {
   10830   return __a ^ __b;
   10831 }
   10832 
   10833 static __inline__ vector signed long long __ATTRS_o_ai
   10834 vec_vxor(vector bool long long __a, vector signed long long __b) {
   10835   return (vector signed long long)__a ^ __b;
   10836 }
   10837 
   10838 static __inline__ vector signed long long __ATTRS_o_ai
   10839 vec_vxor(vector signed long long __a, vector bool long long __b) {
   10840   return __a ^ (vector signed long long)__b;
   10841 }
   10842 
   10843 static __inline__ vector unsigned long long __ATTRS_o_ai
   10844 vec_vxor(vector unsigned long long __a, vector unsigned long long __b) {
   10845   return __a ^ __b;
   10846 }
   10847 
   10848 static __inline__ vector unsigned long long __ATTRS_o_ai
   10849 vec_vxor(vector bool long long __a, vector unsigned long long __b) {
   10850   return (vector unsigned long long)__a ^ __b;
   10851 }
   10852 
   10853 static __inline__ vector unsigned long long __ATTRS_o_ai
   10854 vec_vxor(vector unsigned long long __a, vector bool long long __b) {
   10855   return __a ^ (vector unsigned long long)__b;
   10856 }
   10857 
   10858 static __inline__ vector bool long long __ATTRS_o_ai
   10859 vec_vxor(vector bool long long __a, vector bool long long __b) {
   10860   return __a ^ __b;
   10861 }
   10862 #endif
   10863 
   10864 /* ------------------------ extensions for CBEA ----------------------------- */
   10865 
   10866 /* vec_extract */
   10867 
   10868 static __inline__ signed char __ATTRS_o_ai vec_extract(vector signed char __a,
   10869                                                        int __b) {
   10870   return __a[__b];
   10871 }
   10872 
   10873 static __inline__ unsigned char __ATTRS_o_ai
   10874 vec_extract(vector unsigned char __a, int __b) {
   10875   return __a[__b];
   10876 }
   10877 
   10878 static __inline__ unsigned char __ATTRS_o_ai vec_extract(vector bool char __a,
   10879                                                          int __b) {
   10880   return __a[__b];
   10881 }
   10882 
   10883 static __inline__ signed short __ATTRS_o_ai vec_extract(vector signed short __a,
   10884                                                         int __b) {
   10885   return __a[__b];
   10886 }
   10887 
   10888 static __inline__ unsigned short __ATTRS_o_ai
   10889 vec_extract(vector unsigned short __a, int __b) {
   10890   return __a[__b];
   10891 }
   10892 
   10893 static __inline__ unsigned short __ATTRS_o_ai vec_extract(vector bool short __a,
   10894                                                           int __b) {
   10895   return __a[__b];
   10896 }
   10897 
   10898 static __inline__ signed int __ATTRS_o_ai vec_extract(vector signed int __a,
   10899                                                       int __b) {
   10900   return __a[__b];
   10901 }
   10902 
   10903 static __inline__ unsigned int __ATTRS_o_ai vec_extract(vector unsigned int __a,
   10904                                                         int __b) {
   10905   return __a[__b];
   10906 }
   10907 
   10908 static __inline__ unsigned int __ATTRS_o_ai vec_extract(vector bool int __a,
   10909                                                         int __b) {
   10910   return __a[__b];
   10911 }
   10912 
   10913 #ifdef __VSX__
   10914 static __inline__ signed long long __ATTRS_o_ai
   10915 vec_extract(vector signed long long __a, int __b) {
   10916   return __a[__b];
   10917 }
   10918 
   10919 static __inline__ unsigned long long __ATTRS_o_ai
   10920 vec_extract(vector unsigned long long __a, int __b) {
   10921   return __a[__b];
   10922 }
   10923 
   10924 static __inline__ unsigned long long __ATTRS_o_ai
   10925 vec_extract(vector bool long long __a, int __b) {
   10926   return __a[__b];
   10927 }
   10928 
   10929 static __inline__ double __ATTRS_o_ai vec_extract(vector double __a, int __b) {
   10930   return __a[__b];
   10931 }
   10932 #endif
   10933 
   10934 static __inline__ float __ATTRS_o_ai vec_extract(vector float __a, int __b) {
   10935   return __a[__b];
   10936 }
   10937 
   10938 /* vec_insert */
   10939 
   10940 static __inline__ vector signed char __ATTRS_o_ai
   10941 vec_insert(signed char __a, vector signed char __b, int __c) {
   10942   __b[__c] = __a;
   10943   return __b;
   10944 }
   10945 
   10946 static __inline__ vector unsigned char __ATTRS_o_ai
   10947 vec_insert(unsigned char __a, vector unsigned char __b, int __c) {
   10948   __b[__c] = __a;
   10949   return __b;
   10950 }
   10951 
   10952 static __inline__ vector bool char __ATTRS_o_ai vec_insert(unsigned char __a,
   10953                                                            vector bool char __b,
   10954                                                            int __c) {
   10955   __b[__c] = __a;
   10956   return __b;
   10957 }
   10958 
   10959 static __inline__ vector signed short __ATTRS_o_ai
   10960 vec_insert(signed short __a, vector signed short __b, int __c) {
   10961   __b[__c] = __a;
   10962   return __b;
   10963 }
   10964 
   10965 static __inline__ vector unsigned short __ATTRS_o_ai
   10966 vec_insert(unsigned short __a, vector unsigned short __b, int __c) {
   10967   __b[__c] = __a;
   10968   return __b;
   10969 }
   10970 
   10971 static __inline__ vector bool short __ATTRS_o_ai
   10972 vec_insert(unsigned short __a, vector bool short __b, int __c) {
   10973   __b[__c] = __a;
   10974   return __b;
   10975 }
   10976 
   10977 static __inline__ vector signed int __ATTRS_o_ai
   10978 vec_insert(signed int __a, vector signed int __b, int __c) {
   10979   __b[__c] = __a;
   10980   return __b;
   10981 }
   10982 
   10983 static __inline__ vector unsigned int __ATTRS_o_ai
   10984 vec_insert(unsigned int __a, vector unsigned int __b, int __c) {
   10985   __b[__c] = __a;
   10986   return __b;
   10987 }
   10988 
   10989 static __inline__ vector bool int __ATTRS_o_ai vec_insert(unsigned int __a,
   10990                                                           vector bool int __b,
   10991                                                           int __c) {
   10992   __b[__c] = __a;
   10993   return __b;
   10994 }
   10995 
   10996 #ifdef __VSX__
   10997 static __inline__ vector signed long long __ATTRS_o_ai
   10998 vec_insert(signed long long __a, vector signed long long __b, int __c) {
   10999   __b[__c] = __a;
   11000   return __b;
   11001 }
   11002 
   11003 static __inline__ vector unsigned long long __ATTRS_o_ai
   11004 vec_insert(unsigned long long __a, vector unsigned long long __b, int __c) {
   11005   __b[__c] = __a;
   11006   return __b;
   11007 }
   11008 
   11009 static __inline__ vector bool long long __ATTRS_o_ai
   11010 vec_insert(unsigned long long __a, vector bool long long __b, int __c) {
   11011   __b[__c] = __a;
   11012   return __b;
   11013 }
   11014 static __inline__ vector double __ATTRS_o_ai vec_insert(double __a,
   11015                                                         vector double __b,
   11016                                                         int __c) {
   11017   __b[__c] = __a;
   11018   return __b;
   11019 }
   11020 #endif
   11021 
   11022 static __inline__ vector float __ATTRS_o_ai vec_insert(float __a,
   11023                                                        vector float __b,
   11024                                                        int __c) {
   11025   __b[__c] = __a;
   11026   return __b;
   11027 }
   11028 
   11029 /* vec_lvlx */
   11030 
   11031 static __inline__ vector signed char __ATTRS_o_ai
   11032 vec_lvlx(int __a, const signed char *__b) {
   11033   return vec_perm(vec_ld(__a, __b), (vector signed char)(0),
   11034                   vec_lvsl(__a, __b));
   11035 }
   11036 
   11037 static __inline__ vector signed char __ATTRS_o_ai
   11038 vec_lvlx(int __a, const vector signed char *__b) {
   11039   return vec_perm(vec_ld(__a, __b), (vector signed char)(0),
   11040                   vec_lvsl(__a, (unsigned char *)__b));
   11041 }
   11042 
   11043 static __inline__ vector unsigned char __ATTRS_o_ai
   11044 vec_lvlx(int __a, const unsigned char *__b) {
   11045   return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0),
   11046                   vec_lvsl(__a, __b));
   11047 }
   11048 
   11049 static __inline__ vector unsigned char __ATTRS_o_ai
   11050 vec_lvlx(int __a, const vector unsigned char *__b) {
   11051   return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0),
   11052                   vec_lvsl(__a, (unsigned char *)__b));
   11053 }
   11054 
   11055 static __inline__ vector bool char __ATTRS_o_ai
   11056 vec_lvlx(int __a, const vector bool char *__b) {
   11057   return vec_perm(vec_ld(__a, __b), (vector bool char)(0),
   11058                   vec_lvsl(__a, (unsigned char *)__b));
   11059 }
   11060 
   11061 static __inline__ vector short __ATTRS_o_ai vec_lvlx(int __a,
   11062                                                      const short *__b) {
   11063   return vec_perm(vec_ld(__a, __b), (vector short)(0), vec_lvsl(__a, __b));
   11064 }
   11065 
   11066 static __inline__ vector short __ATTRS_o_ai vec_lvlx(int __a,
   11067                                                      const vector short *__b) {
   11068   return vec_perm(vec_ld(__a, __b), (vector short)(0),
   11069                   vec_lvsl(__a, (unsigned char *)__b));
   11070 }
   11071 
   11072 static __inline__ vector unsigned short __ATTRS_o_ai
   11073 vec_lvlx(int __a, const unsigned short *__b) {
   11074   return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0),
   11075                   vec_lvsl(__a, __b));
   11076 }
   11077 
   11078 static __inline__ vector unsigned short __ATTRS_o_ai
   11079 vec_lvlx(int __a, const vector unsigned short *__b) {
   11080   return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0),
   11081                   vec_lvsl(__a, (unsigned char *)__b));
   11082 }
   11083 
   11084 static __inline__ vector bool short __ATTRS_o_ai
   11085 vec_lvlx(int __a, const vector bool short *__b) {
   11086   return vec_perm(vec_ld(__a, __b), (vector bool short)(0),
   11087                   vec_lvsl(__a, (unsigned char *)__b));
   11088 }
   11089 
   11090 static __inline__ vector pixel __ATTRS_o_ai vec_lvlx(int __a,
   11091                                                      const vector pixel *__b) {
   11092   return vec_perm(vec_ld(__a, __b), (vector pixel)(0),
   11093                   vec_lvsl(__a, (unsigned char *)__b));
   11094 }
   11095 
   11096 static __inline__ vector int __ATTRS_o_ai vec_lvlx(int __a, const int *__b) {
   11097   return vec_perm(vec_ld(__a, __b), (vector int)(0), vec_lvsl(__a, __b));
   11098 }
   11099 
   11100 static __inline__ vector int __ATTRS_o_ai vec_lvlx(int __a,
   11101                                                    const vector int *__b) {
   11102   return vec_perm(vec_ld(__a, __b), (vector int)(0),
   11103                   vec_lvsl(__a, (unsigned char *)__b));
   11104 }
   11105 
   11106 static __inline__ vector unsigned int __ATTRS_o_ai
   11107 vec_lvlx(int __a, const unsigned int *__b) {
   11108   return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0),
   11109                   vec_lvsl(__a, __b));
   11110 }
   11111 
   11112 static __inline__ vector unsigned int __ATTRS_o_ai
   11113 vec_lvlx(int __a, const vector unsigned int *__b) {
   11114   return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0),
   11115                   vec_lvsl(__a, (unsigned char *)__b));
   11116 }
   11117 
   11118 static __inline__ vector bool int __ATTRS_o_ai
   11119 vec_lvlx(int __a, const vector bool int *__b) {
   11120   return vec_perm(vec_ld(__a, __b), (vector bool int)(0),
   11121                   vec_lvsl(__a, (unsigned char *)__b));
   11122 }
   11123 
   11124 static __inline__ vector float __ATTRS_o_ai vec_lvlx(int __a,
   11125                                                      const float *__b) {
   11126   return vec_perm(vec_ld(__a, __b), (vector float)(0), vec_lvsl(__a, __b));
   11127 }
   11128 
   11129 static __inline__ vector float __ATTRS_o_ai vec_lvlx(int __a,
   11130                                                      const vector float *__b) {
   11131   return vec_perm(vec_ld(__a, __b), (vector float)(0),
   11132                   vec_lvsl(__a, (unsigned char *)__b));
   11133 }
   11134 
   11135 /* vec_lvlxl */
   11136 
   11137 static __inline__ vector signed char __ATTRS_o_ai
   11138 vec_lvlxl(int __a, const signed char *__b) {
   11139   return vec_perm(vec_ldl(__a, __b), (vector signed char)(0),
   11140                   vec_lvsl(__a, __b));
   11141 }
   11142 
   11143 static __inline__ vector signed char __ATTRS_o_ai
   11144 vec_lvlxl(int __a, const vector signed char *__b) {
   11145   return vec_perm(vec_ldl(__a, __b), (vector signed char)(0),
   11146                   vec_lvsl(__a, (unsigned char *)__b));
   11147 }
   11148 
   11149 static __inline__ vector unsigned char __ATTRS_o_ai
   11150 vec_lvlxl(int __a, const unsigned char *__b) {
   11151   return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0),
   11152                   vec_lvsl(__a, __b));
   11153 }
   11154 
   11155 static __inline__ vector unsigned char __ATTRS_o_ai
   11156 vec_lvlxl(int __a, const vector unsigned char *__b) {
   11157   return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0),
   11158                   vec_lvsl(__a, (unsigned char *)__b));
   11159 }
   11160 
   11161 static __inline__ vector bool char __ATTRS_o_ai
   11162 vec_lvlxl(int __a, const vector bool char *__b) {
   11163   return vec_perm(vec_ldl(__a, __b), (vector bool char)(0),
   11164                   vec_lvsl(__a, (unsigned char *)__b));
   11165 }
   11166 
   11167 static __inline__ vector short __ATTRS_o_ai vec_lvlxl(int __a,
   11168                                                       const short *__b) {
   11169   return vec_perm(vec_ldl(__a, __b), (vector short)(0), vec_lvsl(__a, __b));
   11170 }
   11171 
   11172 static __inline__ vector short __ATTRS_o_ai vec_lvlxl(int __a,
   11173                                                       const vector short *__b) {
   11174   return vec_perm(vec_ldl(__a, __b), (vector short)(0),
   11175                   vec_lvsl(__a, (unsigned char *)__b));
   11176 }
   11177 
   11178 static __inline__ vector unsigned short __ATTRS_o_ai
   11179 vec_lvlxl(int __a, const unsigned short *__b) {
   11180   return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0),
   11181                   vec_lvsl(__a, __b));
   11182 }
   11183 
   11184 static __inline__ vector unsigned short __ATTRS_o_ai
   11185 vec_lvlxl(int __a, const vector unsigned short *__b) {
   11186   return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0),
   11187                   vec_lvsl(__a, (unsigned char *)__b));
   11188 }
   11189 
   11190 static __inline__ vector bool short __ATTRS_o_ai
   11191 vec_lvlxl(int __a, const vector bool short *__b) {
   11192   return vec_perm(vec_ldl(__a, __b), (vector bool short)(0),
   11193                   vec_lvsl(__a, (unsigned char *)__b));
   11194 }
   11195 
   11196 static __inline__ vector pixel __ATTRS_o_ai vec_lvlxl(int __a,
   11197                                                       const vector pixel *__b) {
   11198   return vec_perm(vec_ldl(__a, __b), (vector pixel)(0),
   11199                   vec_lvsl(__a, (unsigned char *)__b));
   11200 }
   11201 
   11202 static __inline__ vector int __ATTRS_o_ai vec_lvlxl(int __a, const int *__b) {
   11203   return vec_perm(vec_ldl(__a, __b), (vector int)(0), vec_lvsl(__a, __b));
   11204 }
   11205 
   11206 static __inline__ vector int __ATTRS_o_ai vec_lvlxl(int __a,
   11207                                                     const vector int *__b) {
   11208   return vec_perm(vec_ldl(__a, __b), (vector int)(0),
   11209                   vec_lvsl(__a, (unsigned char *)__b));
   11210 }
   11211 
   11212 static __inline__ vector unsigned int __ATTRS_o_ai
   11213 vec_lvlxl(int __a, const unsigned int *__b) {
   11214   return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0),
   11215                   vec_lvsl(__a, __b));
   11216 }
   11217 
   11218 static __inline__ vector unsigned int __ATTRS_o_ai
   11219 vec_lvlxl(int __a, const vector unsigned int *__b) {
   11220   return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0),
   11221                   vec_lvsl(__a, (unsigned char *)__b));
   11222 }
   11223 
   11224 static __inline__ vector bool int __ATTRS_o_ai
   11225 vec_lvlxl(int __a, const vector bool int *__b) {
   11226   return vec_perm(vec_ldl(__a, __b), (vector bool int)(0),
   11227                   vec_lvsl(__a, (unsigned char *)__b));
   11228 }
   11229 
   11230 static __inline__ vector float __ATTRS_o_ai vec_lvlxl(int __a,
   11231                                                       const float *__b) {
   11232   return vec_perm(vec_ldl(__a, __b), (vector float)(0), vec_lvsl(__a, __b));
   11233 }
   11234 
   11235 static __inline__ vector float __ATTRS_o_ai vec_lvlxl(int __a,
   11236                                                       vector float *__b) {
   11237   return vec_perm(vec_ldl(__a, __b), (vector float)(0),
   11238                   vec_lvsl(__a, (unsigned char *)__b));
   11239 }
   11240 
   11241 /* vec_lvrx */
   11242 
   11243 static __inline__ vector signed char __ATTRS_o_ai
   11244 vec_lvrx(int __a, const signed char *__b) {
   11245   return vec_perm((vector signed char)(0), vec_ld(__a, __b),
   11246                   vec_lvsl(__a, __b));
   11247 }
   11248 
   11249 static __inline__ vector signed char __ATTRS_o_ai
   11250 vec_lvrx(int __a, const vector signed char *__b) {
   11251   return vec_perm((vector signed char)(0), vec_ld(__a, __b),
   11252                   vec_lvsl(__a, (unsigned char *)__b));
   11253 }
   11254 
   11255 static __inline__ vector unsigned char __ATTRS_o_ai
   11256 vec_lvrx(int __a, const unsigned char *__b) {
   11257   return vec_perm((vector unsigned char)(0), vec_ld(__a, __b),
   11258                   vec_lvsl(__a, __b));
   11259 }
   11260 
   11261 static __inline__ vector unsigned char __ATTRS_o_ai
   11262 vec_lvrx(int __a, const vector unsigned char *__b) {
   11263   return vec_perm((vector unsigned char)(0), vec_ld(__a, __b),
   11264                   vec_lvsl(__a, (unsigned char *)__b));
   11265 }
   11266 
   11267 static __inline__ vector bool char __ATTRS_o_ai
   11268 vec_lvrx(int __a, const vector bool char *__b) {
   11269   return vec_perm((vector bool char)(0), vec_ld(__a, __b),
   11270                   vec_lvsl(__a, (unsigned char *)__b));
   11271 }
   11272 
   11273 static __inline__ vector short __ATTRS_o_ai vec_lvrx(int __a,
   11274                                                      const short *__b) {
   11275   return vec_perm((vector short)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
   11276 }
   11277 
   11278 static __inline__ vector short __ATTRS_o_ai vec_lvrx(int __a,
   11279                                                      const vector short *__b) {
   11280   return vec_perm((vector short)(0), vec_ld(__a, __b),
   11281                   vec_lvsl(__a, (unsigned char *)__b));
   11282 }
   11283 
   11284 static __inline__ vector unsigned short __ATTRS_o_ai
   11285 vec_lvrx(int __a, const unsigned short *__b) {
   11286   return vec_perm((vector unsigned short)(0), vec_ld(__a, __b),
   11287                   vec_lvsl(__a, __b));
   11288 }
   11289 
   11290 static __inline__ vector unsigned short __ATTRS_o_ai
   11291 vec_lvrx(int __a, const vector unsigned short *__b) {
   11292   return vec_perm((vector unsigned short)(0), vec_ld(__a, __b),
   11293                   vec_lvsl(__a, (unsigned char *)__b));
   11294 }
   11295 
   11296 static __inline__ vector bool short __ATTRS_o_ai
   11297 vec_lvrx(int __a, const vector bool short *__b) {
   11298   return vec_perm((vector bool short)(0), vec_ld(__a, __b),
   11299                   vec_lvsl(__a, (unsigned char *)__b));
   11300 }
   11301 
   11302 static __inline__ vector pixel __ATTRS_o_ai vec_lvrx(int __a,
   11303                                                      const vector pixel *__b) {
   11304   return vec_perm((vector pixel)(0), vec_ld(__a, __b),
   11305                   vec_lvsl(__a, (unsigned char *)__b));
   11306 }
   11307 
   11308 static __inline__ vector int __ATTRS_o_ai vec_lvrx(int __a, const int *__b) {
   11309   return vec_perm((vector int)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
   11310 }
   11311 
   11312 static __inline__ vector int __ATTRS_o_ai vec_lvrx(int __a,
   11313                                                    const vector int *__b) {
   11314   return vec_perm((vector int)(0), vec_ld(__a, __b),
   11315                   vec_lvsl(__a, (unsigned char *)__b));
   11316 }
   11317 
   11318 static __inline__ vector unsigned int __ATTRS_o_ai
   11319 vec_lvrx(int __a, const unsigned int *__b) {
   11320   return vec_perm((vector unsigned int)(0), vec_ld(__a, __b),
   11321                   vec_lvsl(__a, __b));
   11322 }
   11323 
   11324 static __inline__ vector unsigned int __ATTRS_o_ai
   11325 vec_lvrx(int __a, const vector unsigned int *__b) {
   11326   return vec_perm((vector unsigned int)(0), vec_ld(__a, __b),
   11327                   vec_lvsl(__a, (unsigned char *)__b));
   11328 }
   11329 
   11330 static __inline__ vector bool int __ATTRS_o_ai
   11331 vec_lvrx(int __a, const vector bool int *__b) {
   11332   return vec_perm((vector bool int)(0), vec_ld(__a, __b),
   11333                   vec_lvsl(__a, (unsigned char *)__b));
   11334 }
   11335 
   11336 static __inline__ vector float __ATTRS_o_ai vec_lvrx(int __a,
   11337                                                      const float *__b) {
   11338   return vec_perm((vector float)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
   11339 }
   11340 
   11341 static __inline__ vector float __ATTRS_o_ai vec_lvrx(int __a,
   11342                                                      const vector float *__b) {
   11343   return vec_perm((vector float)(0), vec_ld(__a, __b),
   11344                   vec_lvsl(__a, (unsigned char *)__b));
   11345 }
   11346 
   11347 /* vec_lvrxl */
   11348 
   11349 static __inline__ vector signed char __ATTRS_o_ai
   11350 vec_lvrxl(int __a, const signed char *__b) {
   11351   return vec_perm((vector signed char)(0), vec_ldl(__a, __b),
   11352                   vec_lvsl(__a, __b));
   11353 }
   11354 
   11355 static __inline__ vector signed char __ATTRS_o_ai
   11356 vec_lvrxl(int __a, const vector signed char *__b) {
   11357   return vec_perm((vector signed char)(0), vec_ldl(__a, __b),
   11358                   vec_lvsl(__a, (unsigned char *)__b));
   11359 }
   11360 
   11361 static __inline__ vector unsigned char __ATTRS_o_ai
   11362 vec_lvrxl(int __a, const unsigned char *__b) {
   11363   return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b),
   11364                   vec_lvsl(__a, __b));
   11365 }
   11366 
   11367 static __inline__ vector unsigned char __ATTRS_o_ai
   11368 vec_lvrxl(int __a, const vector unsigned char *__b) {
   11369   return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b),
   11370                   vec_lvsl(__a, (unsigned char *)__b));
   11371 }
   11372 
   11373 static __inline__ vector bool char __ATTRS_o_ai
   11374 vec_lvrxl(int __a, const vector bool char *__b) {
   11375   return vec_perm((vector bool char)(0), vec_ldl(__a, __b),
   11376                   vec_lvsl(__a, (unsigned char *)__b));
   11377 }
   11378 
   11379 static __inline__ vector short __ATTRS_o_ai vec_lvrxl(int __a,
   11380                                                       const short *__b) {
   11381   return vec_perm((vector short)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
   11382 }
   11383 
   11384 static __inline__ vector short __ATTRS_o_ai vec_lvrxl(int __a,
   11385                                                       const vector short *__b) {
   11386   return vec_perm((vector short)(0), vec_ldl(__a, __b),
   11387                   vec_lvsl(__a, (unsigned char *)__b));
   11388 }
   11389 
   11390 static __inline__ vector unsigned short __ATTRS_o_ai
   11391 vec_lvrxl(int __a, const unsigned short *__b) {
   11392   return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b),
   11393                   vec_lvsl(__a, __b));
   11394 }
   11395 
   11396 static __inline__ vector unsigned short __ATTRS_o_ai
   11397 vec_lvrxl(int __a, const vector unsigned short *__b) {
   11398   return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b),
   11399                   vec_lvsl(__a, (unsigned char *)__b));
   11400 }
   11401 
   11402 static __inline__ vector bool short __ATTRS_o_ai
   11403 vec_lvrxl(int __a, const vector bool short *__b) {
   11404   return vec_perm((vector bool short)(0), vec_ldl(__a, __b),
   11405                   vec_lvsl(__a, (unsigned char *)__b));
   11406 }
   11407 
   11408 static __inline__ vector pixel __ATTRS_o_ai vec_lvrxl(int __a,
   11409                                                       const vector pixel *__b) {
   11410   return vec_perm((vector pixel)(0), vec_ldl(__a, __b),
   11411                   vec_lvsl(__a, (unsigned char *)__b));
   11412 }
   11413 
   11414 static __inline__ vector int __ATTRS_o_ai vec_lvrxl(int __a, const int *__b) {
   11415   return vec_perm((vector int)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
   11416 }
   11417 
   11418 static __inline__ vector int __ATTRS_o_ai vec_lvrxl(int __a,
   11419                                                     const vector int *__b) {
   11420   return vec_perm((vector int)(0), vec_ldl(__a, __b),
   11421                   vec_lvsl(__a, (unsigned char *)__b));
   11422 }
   11423 
   11424 static __inline__ vector unsigned int __ATTRS_o_ai
   11425 vec_lvrxl(int __a, const unsigned int *__b) {
   11426   return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b),
   11427                   vec_lvsl(__a, __b));
   11428 }
   11429 
   11430 static __inline__ vector unsigned int __ATTRS_o_ai
   11431 vec_lvrxl(int __a, const vector unsigned int *__b) {
   11432   return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b),
   11433                   vec_lvsl(__a, (unsigned char *)__b));
   11434 }
   11435 
   11436 static __inline__ vector bool int __ATTRS_o_ai
   11437 vec_lvrxl(int __a, const vector bool int *__b) {
   11438   return vec_perm((vector bool int)(0), vec_ldl(__a, __b),
   11439                   vec_lvsl(__a, (unsigned char *)__b));
   11440 }
   11441 
   11442 static __inline__ vector float __ATTRS_o_ai vec_lvrxl(int __a,
   11443                                                       const float *__b) {
   11444   return vec_perm((vector float)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
   11445 }
   11446 
   11447 static __inline__ vector float __ATTRS_o_ai vec_lvrxl(int __a,
   11448                                                       const vector float *__b) {
   11449   return vec_perm((vector float)(0), vec_ldl(__a, __b),
   11450                   vec_lvsl(__a, (unsigned char *)__b));
   11451 }
   11452 
   11453 /* vec_stvlx */
   11454 
   11455 static __inline__ void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b,
   11456                                               signed char *__c) {
   11457   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   11458                 __c);
   11459 }
   11460 
   11461 static __inline__ void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b,
   11462                                               vector signed char *__c) {
   11463   return vec_st(
   11464       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11465       __b, __c);
   11466 }
   11467 
   11468 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b,
   11469                                               unsigned char *__c) {
   11470   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   11471                 __c);
   11472 }
   11473 
   11474 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b,
   11475                                               vector unsigned char *__c) {
   11476   return vec_st(
   11477       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11478       __b, __c);
   11479 }
   11480 
   11481 static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool char __a, int __b,
   11482                                               vector bool char *__c) {
   11483   return vec_st(
   11484       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11485       __b, __c);
   11486 }
   11487 
   11488 static __inline__ void __ATTRS_o_ai vec_stvlx(vector short __a, int __b,
   11489                                               short *__c) {
   11490   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   11491                 __c);
   11492 }
   11493 
   11494 static __inline__ void __ATTRS_o_ai vec_stvlx(vector short __a, int __b,
   11495                                               vector short *__c) {
   11496   return vec_st(
   11497       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11498       __b, __c);
   11499 }
   11500 
   11501 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned short __a,
   11502                                               int __b, unsigned short *__c) {
   11503   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   11504                 __c);
   11505 }
   11506 
   11507 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned short __a,
   11508                                               int __b,
   11509                                               vector unsigned short *__c) {
   11510   return vec_st(
   11511       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11512       __b, __c);
   11513 }
   11514 
   11515 static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool short __a, int __b,
   11516                                               vector bool short *__c) {
   11517   return vec_st(
   11518       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11519       __b, __c);
   11520 }
   11521 
   11522 static __inline__ void __ATTRS_o_ai vec_stvlx(vector pixel __a, int __b,
   11523                                               vector pixel *__c) {
   11524   return vec_st(
   11525       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11526       __b, __c);
   11527 }
   11528 
   11529 static __inline__ void __ATTRS_o_ai vec_stvlx(vector int __a, int __b,
   11530                                               int *__c) {
   11531   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   11532                 __c);
   11533 }
   11534 
   11535 static __inline__ void __ATTRS_o_ai vec_stvlx(vector int __a, int __b,
   11536                                               vector int *__c) {
   11537   return vec_st(
   11538       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11539       __b, __c);
   11540 }
   11541 
   11542 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b,
   11543                                               unsigned int *__c) {
   11544   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   11545                 __c);
   11546 }
   11547 
   11548 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b,
   11549                                               vector unsigned int *__c) {
   11550   return vec_st(
   11551       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11552       __b, __c);
   11553 }
   11554 
   11555 static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool int __a, int __b,
   11556                                               vector bool int *__c) {
   11557   return vec_st(
   11558       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11559       __b, __c);
   11560 }
   11561 
   11562 static __inline__ void __ATTRS_o_ai vec_stvlx(vector float __a, int __b,
   11563                                               vector float *__c) {
   11564   return vec_st(
   11565       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11566       __b, __c);
   11567 }
   11568 
   11569 /* vec_stvlxl */
   11570 
   11571 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b,
   11572                                                signed char *__c) {
   11573   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   11574                  __c);
   11575 }
   11576 
   11577 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b,
   11578                                                vector signed char *__c) {
   11579   return vec_stl(
   11580       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11581       __b, __c);
   11582 }
   11583 
   11584 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a,
   11585                                                int __b, unsigned char *__c) {
   11586   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   11587                  __c);
   11588 }
   11589 
   11590 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a,
   11591                                                int __b,
   11592                                                vector unsigned char *__c) {
   11593   return vec_stl(
   11594       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11595       __b, __c);
   11596 }
   11597 
   11598 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool char __a, int __b,
   11599                                                vector bool char *__c) {
   11600   return vec_stl(
   11601       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11602       __b, __c);
   11603 }
   11604 
   11605 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b,
   11606                                                short *__c) {
   11607   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   11608                  __c);
   11609 }
   11610 
   11611 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b,
   11612                                                vector short *__c) {
   11613   return vec_stl(
   11614       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11615       __b, __c);
   11616 }
   11617 
   11618 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a,
   11619                                                int __b, unsigned short *__c) {
   11620   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   11621                  __c);
   11622 }
   11623 
   11624 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a,
   11625                                                int __b,
   11626                                                vector unsigned short *__c) {
   11627   return vec_stl(
   11628       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11629       __b, __c);
   11630 }
   11631 
   11632 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool short __a, int __b,
   11633                                                vector bool short *__c) {
   11634   return vec_stl(
   11635       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11636       __b, __c);
   11637 }
   11638 
   11639 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector pixel __a, int __b,
   11640                                                vector pixel *__c) {
   11641   return vec_stl(
   11642       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11643       __b, __c);
   11644 }
   11645 
   11646 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b,
   11647                                                int *__c) {
   11648   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   11649                  __c);
   11650 }
   11651 
   11652 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b,
   11653                                                vector int *__c) {
   11654   return vec_stl(
   11655       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11656       __b, __c);
   11657 }
   11658 
   11659 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b,
   11660                                                unsigned int *__c) {
   11661   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   11662                  __c);
   11663 }
   11664 
   11665 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b,
   11666                                                vector unsigned int *__c) {
   11667   return vec_stl(
   11668       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11669       __b, __c);
   11670 }
   11671 
   11672 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool int __a, int __b,
   11673                                                vector bool int *__c) {
   11674   return vec_stl(
   11675       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11676       __b, __c);
   11677 }
   11678 
   11679 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector float __a, int __b,
   11680                                                vector float *__c) {
   11681   return vec_stl(
   11682       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   11683       __b, __c);
   11684 }
   11685 
   11686 /* vec_stvrx */
   11687 
   11688 static __inline__ void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b,
   11689                                               signed char *__c) {
   11690   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   11691                 __c);
   11692 }
   11693 
   11694 static __inline__ void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b,
   11695                                               vector signed char *__c) {
   11696   return vec_st(
   11697       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11698       __b, __c);
   11699 }
   11700 
   11701 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b,
   11702                                               unsigned char *__c) {
   11703   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   11704                 __c);
   11705 }
   11706 
   11707 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b,
   11708                                               vector unsigned char *__c) {
   11709   return vec_st(
   11710       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11711       __b, __c);
   11712 }
   11713 
   11714 static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool char __a, int __b,
   11715                                               vector bool char *__c) {
   11716   return vec_st(
   11717       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11718       __b, __c);
   11719 }
   11720 
   11721 static __inline__ void __ATTRS_o_ai vec_stvrx(vector short __a, int __b,
   11722                                               short *__c) {
   11723   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   11724                 __c);
   11725 }
   11726 
   11727 static __inline__ void __ATTRS_o_ai vec_stvrx(vector short __a, int __b,
   11728                                               vector short *__c) {
   11729   return vec_st(
   11730       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11731       __b, __c);
   11732 }
   11733 
   11734 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned short __a,
   11735                                               int __b, unsigned short *__c) {
   11736   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   11737                 __c);
   11738 }
   11739 
   11740 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned short __a,
   11741                                               int __b,
   11742                                               vector unsigned short *__c) {
   11743   return vec_st(
   11744       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11745       __b, __c);
   11746 }
   11747 
   11748 static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool short __a, int __b,
   11749                                               vector bool short *__c) {
   11750   return vec_st(
   11751       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11752       __b, __c);
   11753 }
   11754 
   11755 static __inline__ void __ATTRS_o_ai vec_stvrx(vector pixel __a, int __b,
   11756                                               vector pixel *__c) {
   11757   return vec_st(
   11758       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11759       __b, __c);
   11760 }
   11761 
   11762 static __inline__ void __ATTRS_o_ai vec_stvrx(vector int __a, int __b,
   11763                                               int *__c) {
   11764   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   11765                 __c);
   11766 }
   11767 
   11768 static __inline__ void __ATTRS_o_ai vec_stvrx(vector int __a, int __b,
   11769                                               vector int *__c) {
   11770   return vec_st(
   11771       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11772       __b, __c);
   11773 }
   11774 
   11775 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b,
   11776                                               unsigned int *__c) {
   11777   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   11778                 __c);
   11779 }
   11780 
   11781 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b,
   11782                                               vector unsigned int *__c) {
   11783   return vec_st(
   11784       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11785       __b, __c);
   11786 }
   11787 
   11788 static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool int __a, int __b,
   11789                                               vector bool int *__c) {
   11790   return vec_st(
   11791       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11792       __b, __c);
   11793 }
   11794 
   11795 static __inline__ void __ATTRS_o_ai vec_stvrx(vector float __a, int __b,
   11796                                               vector float *__c) {
   11797   return vec_st(
   11798       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11799       __b, __c);
   11800 }
   11801 
   11802 /* vec_stvrxl */
   11803 
   11804 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b,
   11805                                                signed char *__c) {
   11806   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   11807                  __c);
   11808 }
   11809 
   11810 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b,
   11811                                                vector signed char *__c) {
   11812   return vec_stl(
   11813       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11814       __b, __c);
   11815 }
   11816 
   11817 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a,
   11818                                                int __b, unsigned char *__c) {
   11819   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   11820                  __c);
   11821 }
   11822 
   11823 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a,
   11824                                                int __b,
   11825                                                vector unsigned char *__c) {
   11826   return vec_stl(
   11827       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11828       __b, __c);
   11829 }
   11830 
   11831 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool char __a, int __b,
   11832                                                vector bool char *__c) {
   11833   return vec_stl(
   11834       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11835       __b, __c);
   11836 }
   11837 
   11838 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b,
   11839                                                short *__c) {
   11840   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   11841                  __c);
   11842 }
   11843 
   11844 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b,
   11845                                                vector short *__c) {
   11846   return vec_stl(
   11847       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11848       __b, __c);
   11849 }
   11850 
   11851 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a,
   11852                                                int __b, unsigned short *__c) {
   11853   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   11854                  __c);
   11855 }
   11856 
   11857 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a,
   11858                                                int __b,
   11859                                                vector unsigned short *__c) {
   11860   return vec_stl(
   11861       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11862       __b, __c);
   11863 }
   11864 
   11865 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool short __a, int __b,
   11866                                                vector bool short *__c) {
   11867   return vec_stl(
   11868       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11869       __b, __c);
   11870 }
   11871 
   11872 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector pixel __a, int __b,
   11873                                                vector pixel *__c) {
   11874   return vec_stl(
   11875       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11876       __b, __c);
   11877 }
   11878 
   11879 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b,
   11880                                                int *__c) {
   11881   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   11882                  __c);
   11883 }
   11884 
   11885 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b,
   11886                                                vector int *__c) {
   11887   return vec_stl(
   11888       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11889       __b, __c);
   11890 }
   11891 
   11892 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b,
   11893                                                unsigned int *__c) {
   11894   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   11895                  __c);
   11896 }
   11897 
   11898 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b,
   11899                                                vector unsigned int *__c) {
   11900   return vec_stl(
   11901       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11902       __b, __c);
   11903 }
   11904 
   11905 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool int __a, int __b,
   11906                                                vector bool int *__c) {
   11907   return vec_stl(
   11908       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11909       __b, __c);
   11910 }
   11911 
   11912 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector float __a, int __b,
   11913                                                vector float *__c) {
   11914   return vec_stl(
   11915       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   11916       __b, __c);
   11917 }
   11918 
   11919 /* vec_promote */
   11920 
   11921 static __inline__ vector signed char __ATTRS_o_ai vec_promote(signed char __a,
   11922                                                               int __b) {
   11923   vector signed char __res = (vector signed char)(0);
   11924   __res[__b] = __a;
   11925   return __res;
   11926 }
   11927 
   11928 static __inline__ vector unsigned char __ATTRS_o_ai
   11929 vec_promote(unsigned char __a, int __b) {
   11930   vector unsigned char __res = (vector unsigned char)(0);
   11931   __res[__b] = __a;
   11932   return __res;
   11933 }
   11934 
   11935 static __inline__ vector short __ATTRS_o_ai vec_promote(short __a, int __b) {
   11936   vector short __res = (vector short)(0);
   11937   __res[__b] = __a;
   11938   return __res;
   11939 }
   11940 
   11941 static __inline__ vector unsigned short __ATTRS_o_ai
   11942 vec_promote(unsigned short __a, int __b) {
   11943   vector unsigned short __res = (vector unsigned short)(0);
   11944   __res[__b] = __a;
   11945   return __res;
   11946 }
   11947 
   11948 static __inline__ vector int __ATTRS_o_ai vec_promote(int __a, int __b) {
   11949   vector int __res = (vector int)(0);
   11950   __res[__b] = __a;
   11951   return __res;
   11952 }
   11953 
   11954 static __inline__ vector unsigned int __ATTRS_o_ai vec_promote(unsigned int __a,
   11955                                                                int __b) {
   11956   vector unsigned int __res = (vector unsigned int)(0);
   11957   __res[__b] = __a;
   11958   return __res;
   11959 }
   11960 
   11961 static __inline__ vector float __ATTRS_o_ai vec_promote(float __a, int __b) {
   11962   vector float __res = (vector float)(0);
   11963   __res[__b] = __a;
   11964   return __res;
   11965 }
   11966 
   11967 /* vec_splats */
   11968 
   11969 static __inline__ vector signed char __ATTRS_o_ai vec_splats(signed char __a) {
   11970   return (vector signed char)(__a);
   11971 }
   11972 
   11973 static __inline__ vector unsigned char __ATTRS_o_ai
   11974 vec_splats(unsigned char __a) {
   11975   return (vector unsigned char)(__a);
   11976 }
   11977 
   11978 static __inline__ vector short __ATTRS_o_ai vec_splats(short __a) {
   11979   return (vector short)(__a);
   11980 }
   11981 
   11982 static __inline__ vector unsigned short __ATTRS_o_ai
   11983 vec_splats(unsigned short __a) {
   11984   return (vector unsigned short)(__a);
   11985 }
   11986 
   11987 static __inline__ vector int __ATTRS_o_ai vec_splats(int __a) {
   11988   return (vector int)(__a);
   11989 }
   11990 
   11991 static __inline__ vector unsigned int __ATTRS_o_ai
   11992 vec_splats(unsigned int __a) {
   11993   return (vector unsigned int)(__a);
   11994 }
   11995 
   11996 #ifdef __VSX__
   11997 static __inline__ vector signed long long __ATTRS_o_ai
   11998 vec_splats(signed long long __a) {
   11999   return (vector signed long long)(__a);
   12000 }
   12001 
   12002 static __inline__ vector unsigned long long __ATTRS_o_ai
   12003 vec_splats(unsigned long long __a) {
   12004   return (vector unsigned long long)(__a);
   12005 }
   12006 
   12007 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   12008 static __inline__ vector signed __int128 __ATTRS_o_ai
   12009 vec_splats(signed __int128 __a) {
   12010   return (vector signed __int128)(__a);
   12011 }
   12012 
   12013 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   12014 vec_splats(unsigned __int128 __a) {
   12015   return (vector unsigned __int128)(__a);
   12016 }
   12017 
   12018 #endif
   12019 
   12020 static __inline__ vector double __ATTRS_o_ai vec_splats(double __a) {
   12021   return (vector double)(__a);
   12022 }
   12023 #endif
   12024 
   12025 static __inline__ vector float __ATTRS_o_ai vec_splats(float __a) {
   12026   return (vector float)(__a);
   12027 }
   12028 
   12029 /* ----------------------------- predicates --------------------------------- */
   12030 
   12031 /* vec_all_eq */
   12032 
   12033 static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed char __a,
   12034                                               vector signed char __b) {
   12035   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
   12036                                       (vector char)__b);
   12037 }
   12038 
   12039 static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed char __a,
   12040                                               vector bool char __b) {
   12041   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
   12042                                       (vector char)__b);
   12043 }
   12044 
   12045 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned char __a,
   12046                                               vector unsigned char __b) {
   12047   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
   12048                                       (vector char)__b);
   12049 }
   12050 
   12051 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned char __a,
   12052                                               vector bool char __b) {
   12053   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
   12054                                       (vector char)__b);
   12055 }
   12056 
   12057 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
   12058                                               vector signed char __b) {
   12059   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
   12060                                       (vector char)__b);
   12061 }
   12062 
   12063 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
   12064                                               vector unsigned char __b) {
   12065   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
   12066                                       (vector char)__b);
   12067 }
   12068 
   12069 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
   12070                                               vector bool char __b) {
   12071   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
   12072                                       (vector char)__b);
   12073 }
   12074 
   12075 static __inline__ int __ATTRS_o_ai vec_all_eq(vector short __a,
   12076                                               vector short __b) {
   12077   return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, __b);
   12078 }
   12079 
   12080 static __inline__ int __ATTRS_o_ai vec_all_eq(vector short __a,
   12081                                               vector bool short __b) {
   12082   return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, (vector short)__b);
   12083 }
   12084 
   12085 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned short __a,
   12086                                               vector unsigned short __b) {
   12087   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
   12088                                       (vector short)__b);
   12089 }
   12090 
   12091 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned short __a,
   12092                                               vector bool short __b) {
   12093   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
   12094                                       (vector short)__b);
   12095 }
   12096 
   12097 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
   12098                                               vector short __b) {
   12099   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
   12100                                       (vector short)__b);
   12101 }
   12102 
   12103 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
   12104                                               vector unsigned short __b) {
   12105   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
   12106                                       (vector short)__b);
   12107 }
   12108 
   12109 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
   12110                                               vector bool short __b) {
   12111   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
   12112                                       (vector short)__b);
   12113 }
   12114 
   12115 static __inline__ int __ATTRS_o_ai vec_all_eq(vector pixel __a,
   12116                                               vector pixel __b) {
   12117   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
   12118                                       (vector short)__b);
   12119 }
   12120 
   12121 static __inline__ int __ATTRS_o_ai vec_all_eq(vector int __a, vector int __b) {
   12122   return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, __b);
   12123 }
   12124 
   12125 static __inline__ int __ATTRS_o_ai vec_all_eq(vector int __a,
   12126                                               vector bool int __b) {
   12127   return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, (vector int)__b);
   12128 }
   12129 
   12130 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned int __a,
   12131                                               vector unsigned int __b) {
   12132   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
   12133                                       (vector int)__b);
   12134 }
   12135 
   12136 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned int __a,
   12137                                               vector bool int __b) {
   12138   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
   12139                                       (vector int)__b);
   12140 }
   12141 
   12142 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
   12143                                               vector int __b) {
   12144   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
   12145                                       (vector int)__b);
   12146 }
   12147 
   12148 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
   12149                                               vector unsigned int __b) {
   12150   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
   12151                                       (vector int)__b);
   12152 }
   12153 
   12154 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
   12155                                               vector bool int __b) {
   12156   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
   12157                                       (vector int)__b);
   12158 }
   12159 
   12160 #ifdef __POWER8_VECTOR__
   12161 static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed long long __a,
   12162                                               vector signed long long __b) {
   12163   return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, __b);
   12164 }
   12165 
   12166 static __inline__ int __ATTRS_o_ai vec_all_eq(vector long long __a,
   12167                                               vector bool long long __b) {
   12168   return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, (vector long long)__b);
   12169 }
   12170 
   12171 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a,
   12172                                               vector unsigned long long __b) {
   12173   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
   12174                                       (vector long long)__b);
   12175 }
   12176 
   12177 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a,
   12178                                               vector bool long long __b) {
   12179   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
   12180                                       (vector long long)__b);
   12181 }
   12182 
   12183 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
   12184                                               vector long long __b) {
   12185   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
   12186                                       (vector long long)__b);
   12187 }
   12188 
   12189 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
   12190                                               vector unsigned long long __b) {
   12191   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
   12192                                       (vector long long)__b);
   12193 }
   12194 
   12195 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
   12196                                               vector bool long long __b) {
   12197   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
   12198                                       (vector long long)__b);
   12199 }
   12200 #endif
   12201 
   12202 static __inline__ int __ATTRS_o_ai vec_all_eq(vector float __a,
   12203                                               vector float __b) {
   12204 #ifdef __VSX__
   12205   return __builtin_vsx_xvcmpeqsp_p(__CR6_LT, __a, __b);
   12206 #else
   12207   return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __b);
   12208 #endif
   12209 }
   12210 
   12211 #ifdef __VSX__
   12212 static __inline__ int __ATTRS_o_ai vec_all_eq(vector double __a,
   12213                                               vector double __b) {
   12214   return __builtin_vsx_xvcmpeqdp_p(__CR6_LT, __a, __b);
   12215 }
   12216 #endif
   12217 
   12218 /* vec_all_ge */
   12219 
   12220 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed char __a,
   12221                                               vector signed char __b) {
   12222   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __b, __a);
   12223 }
   12224 
   12225 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed char __a,
   12226                                               vector bool char __b) {
   12227   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, (vector signed char)__b, __a);
   12228 }
   12229 
   12230 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned char __a,
   12231                                               vector unsigned char __b) {
   12232   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, __a);
   12233 }
   12234 
   12235 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned char __a,
   12236                                               vector bool char __b) {
   12237   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b, __a);
   12238 }
   12239 
   12240 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
   12241                                               vector signed char __b) {
   12242   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b,
   12243                                       (vector unsigned char)__a);
   12244 }
   12245 
   12246 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
   12247                                               vector unsigned char __b) {
   12248   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, (vector unsigned char)__a);
   12249 }
   12250 
   12251 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
   12252                                               vector bool char __b) {
   12253   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b,
   12254                                       (vector unsigned char)__a);
   12255 }
   12256 
   12257 static __inline__ int __ATTRS_o_ai vec_all_ge(vector short __a,
   12258                                               vector short __b) {
   12259   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __b, __a);
   12260 }
   12261 
   12262 static __inline__ int __ATTRS_o_ai vec_all_ge(vector short __a,
   12263                                               vector bool short __b) {
   12264   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, (vector short)__b, __a);
   12265 }
   12266 
   12267 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned short __a,
   12268                                               vector unsigned short __b) {
   12269   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b, __a);
   12270 }
   12271 
   12272 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned short __a,
   12273                                               vector bool short __b) {
   12274   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
   12275                                       __a);
   12276 }
   12277 
   12278 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
   12279                                               vector short __b) {
   12280   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
   12281                                       (vector unsigned short)__a);
   12282 }
   12283 
   12284 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
   12285                                               vector unsigned short __b) {
   12286   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b,
   12287                                       (vector unsigned short)__a);
   12288 }
   12289 
   12290 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
   12291                                               vector bool short __b) {
   12292   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
   12293                                       (vector unsigned short)__a);
   12294 }
   12295 
   12296 static __inline__ int __ATTRS_o_ai vec_all_ge(vector int __a, vector int __b) {
   12297   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __b, __a);
   12298 }
   12299 
   12300 static __inline__ int __ATTRS_o_ai vec_all_ge(vector int __a,
   12301                                               vector bool int __b) {
   12302   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, (vector int)__b, __a);
   12303 }
   12304 
   12305 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned int __a,
   12306                                               vector unsigned int __b) {
   12307   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, __a);
   12308 }
   12309 
   12310 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned int __a,
   12311                                               vector bool int __b) {
   12312   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b, __a);
   12313 }
   12314 
   12315 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
   12316                                               vector int __b) {
   12317   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b,
   12318                                       (vector unsigned int)__a);
   12319 }
   12320 
   12321 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
   12322                                               vector unsigned int __b) {
   12323   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, (vector unsigned int)__a);
   12324 }
   12325 
   12326 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
   12327                                               vector bool int __b) {
   12328   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b,
   12329                                       (vector unsigned int)__a);
   12330 }
   12331 
   12332 #ifdef __POWER8_VECTOR__
   12333 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed long long __a,
   12334                                               vector signed long long __b) {
   12335   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __b, __a);
   12336 }
   12337 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed long long __a,
   12338                                               vector bool long long __b) {
   12339   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, (vector signed long long)__b,
   12340                                       __a);
   12341 }
   12342 
   12343 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a,
   12344                                               vector unsigned long long __b) {
   12345   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b, __a);
   12346 }
   12347 
   12348 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a,
   12349                                               vector bool long long __b) {
   12350   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
   12351                                       __a);
   12352 }
   12353 
   12354 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
   12355                                               vector signed long long __b) {
   12356   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
   12357                                       (vector unsigned long long)__a);
   12358 }
   12359 
   12360 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
   12361                                               vector unsigned long long __b) {
   12362   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b,
   12363                                       (vector unsigned long long)__a);
   12364 }
   12365 
   12366 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
   12367                                               vector bool long long __b) {
   12368   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
   12369                                       (vector unsigned long long)__a);
   12370 }
   12371 #endif
   12372 
   12373 static __inline__ int __ATTRS_o_ai vec_all_ge(vector float __a,
   12374                                               vector float __b) {
   12375 #ifdef __VSX__
   12376   return __builtin_vsx_xvcmpgesp_p(__CR6_LT, __a, __b);
   12377 #else
   12378   return __builtin_altivec_vcmpgefp_p(__CR6_LT, __a, __b);
   12379 #endif
   12380 }
   12381 
   12382 #ifdef __VSX__
   12383 static __inline__ int __ATTRS_o_ai vec_all_ge(vector double __a,
   12384                                               vector double __b) {
   12385   return __builtin_vsx_xvcmpgedp_p(__CR6_LT, __a, __b);
   12386 }
   12387 #endif
   12388 
   12389 /* vec_all_gt */
   12390 
   12391 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed char __a,
   12392                                               vector signed char __b) {
   12393   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, __b);
   12394 }
   12395 
   12396 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed char __a,
   12397                                               vector bool char __b) {
   12398   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, (vector signed char)__b);
   12399 }
   12400 
   12401 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned char __a,
   12402                                               vector unsigned char __b) {
   12403   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, __b);
   12404 }
   12405 
   12406 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned char __a,
   12407                                               vector bool char __b) {
   12408   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, (vector unsigned char)__b);
   12409 }
   12410 
   12411 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
   12412                                               vector signed char __b) {
   12413   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a,
   12414                                       (vector unsigned char)__b);
   12415 }
   12416 
   12417 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
   12418                                               vector unsigned char __b) {
   12419   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a, __b);
   12420 }
   12421 
   12422 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
   12423                                               vector bool char __b) {
   12424   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a,
   12425                                       (vector unsigned char)__b);
   12426 }
   12427 
   12428 static __inline__ int __ATTRS_o_ai vec_all_gt(vector short __a,
   12429                                               vector short __b) {
   12430   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, __b);
   12431 }
   12432 
   12433 static __inline__ int __ATTRS_o_ai vec_all_gt(vector short __a,
   12434                                               vector bool short __b) {
   12435   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, (vector short)__b);
   12436 }
   12437 
   12438 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned short __a,
   12439                                               vector unsigned short __b) {
   12440   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a, __b);
   12441 }
   12442 
   12443 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned short __a,
   12444                                               vector bool short __b) {
   12445   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a,
   12446                                       (vector unsigned short)__b);
   12447 }
   12448 
   12449 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
   12450                                               vector short __b) {
   12451   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
   12452                                       (vector unsigned short)__b);
   12453 }
   12454 
   12455 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
   12456                                               vector unsigned short __b) {
   12457   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
   12458                                       __b);
   12459 }
   12460 
   12461 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
   12462                                               vector bool short __b) {
   12463   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
   12464                                       (vector unsigned short)__b);
   12465 }
   12466 
   12467 static __inline__ int __ATTRS_o_ai vec_all_gt(vector int __a, vector int __b) {
   12468   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, __b);
   12469 }
   12470 
   12471 static __inline__ int __ATTRS_o_ai vec_all_gt(vector int __a,
   12472                                               vector bool int __b) {
   12473   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, (vector int)__b);
   12474 }
   12475 
   12476 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned int __a,
   12477                                               vector unsigned int __b) {
   12478   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, __b);
   12479 }
   12480 
   12481 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned int __a,
   12482                                               vector bool int __b) {
   12483   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, (vector unsigned int)__b);
   12484 }
   12485 
   12486 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
   12487                                               vector int __b) {
   12488   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a,
   12489                                       (vector unsigned int)__b);
   12490 }
   12491 
   12492 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
   12493                                               vector unsigned int __b) {
   12494   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a, __b);
   12495 }
   12496 
   12497 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
   12498                                               vector bool int __b) {
   12499   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a,
   12500                                       (vector unsigned int)__b);
   12501 }
   12502 
   12503 #ifdef __POWER8_VECTOR__
   12504 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed long long __a,
   12505                                               vector signed long long __b) {
   12506   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a, __b);
   12507 }
   12508 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed long long __a,
   12509                                               vector bool long long __b) {
   12510   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a,
   12511                                       (vector signed long long)__b);
   12512 }
   12513 
   12514 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a,
   12515                                               vector unsigned long long __b) {
   12516   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a, __b);
   12517 }
   12518 
   12519 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a,
   12520                                               vector bool long long __b) {
   12521   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a,
   12522                                       (vector unsigned long long)__b);
   12523 }
   12524 
   12525 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
   12526                                               vector signed long long __b) {
   12527   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
   12528                                       (vector unsigned long long)__b);
   12529 }
   12530 
   12531 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
   12532                                               vector unsigned long long __b) {
   12533   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
   12534                                       __b);
   12535 }
   12536 
   12537 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
   12538                                               vector bool long long __b) {
   12539   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
   12540                                       (vector unsigned long long)__b);
   12541 }
   12542 #endif
   12543 
   12544 static __inline__ int __ATTRS_o_ai vec_all_gt(vector float __a,
   12545                                               vector float __b) {
   12546 #ifdef __VSX__
   12547   return __builtin_vsx_xvcmpgtsp_p(__CR6_LT, __a, __b);
   12548 #else
   12549   return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __a, __b);
   12550 #endif
   12551 }
   12552 
   12553 #ifdef __VSX__
   12554 static __inline__ int __ATTRS_o_ai vec_all_gt(vector double __a,
   12555                                               vector double __b) {
   12556   return __builtin_vsx_xvcmpgtdp_p(__CR6_LT, __a, __b);
   12557 }
   12558 #endif
   12559 
   12560 /* vec_all_in */
   12561 
   12562 static __inline__ int __attribute__((__always_inline__))
   12563 vec_all_in(vector float __a, vector float __b) {
   12564   return __builtin_altivec_vcmpbfp_p(__CR6_EQ, __a, __b);
   12565 }
   12566 
   12567 /* vec_all_le */
   12568 
   12569 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed char __a,
   12570                                               vector signed char __b) {
   12571   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, __b);
   12572 }
   12573 
   12574 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed char __a,
   12575                                               vector bool char __b) {
   12576   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, (vector signed char)__b);
   12577 }
   12578 
   12579 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned char __a,
   12580                                               vector unsigned char __b) {
   12581   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, __b);
   12582 }
   12583 
   12584 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned char __a,
   12585                                               vector bool char __b) {
   12586   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, (vector unsigned char)__b);
   12587 }
   12588 
   12589 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
   12590                                               vector signed char __b) {
   12591   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a,
   12592                                       (vector unsigned char)__b);
   12593 }
   12594 
   12595 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
   12596                                               vector unsigned char __b) {
   12597   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a, __b);
   12598 }
   12599 
   12600 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
   12601                                               vector bool char __b) {
   12602   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a,
   12603                                       (vector unsigned char)__b);
   12604 }
   12605 
   12606 static __inline__ int __ATTRS_o_ai vec_all_le(vector short __a,
   12607                                               vector short __b) {
   12608   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, __b);
   12609 }
   12610 
   12611 static __inline__ int __ATTRS_o_ai vec_all_le(vector short __a,
   12612                                               vector bool short __b) {
   12613   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, (vector short)__b);
   12614 }
   12615 
   12616 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned short __a,
   12617                                               vector unsigned short __b) {
   12618   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a, __b);
   12619 }
   12620 
   12621 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned short __a,
   12622                                               vector bool short __b) {
   12623   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a,
   12624                                       (vector unsigned short)__b);
   12625 }
   12626 
   12627 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
   12628                                               vector short __b) {
   12629   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
   12630                                       (vector unsigned short)__b);
   12631 }
   12632 
   12633 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
   12634                                               vector unsigned short __b) {
   12635   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
   12636                                       __b);
   12637 }
   12638 
   12639 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
   12640                                               vector bool short __b) {
   12641   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
   12642                                       (vector unsigned short)__b);
   12643 }
   12644 
   12645 static __inline__ int __ATTRS_o_ai vec_all_le(vector int __a, vector int __b) {
   12646   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, __b);
   12647 }
   12648 
   12649 static __inline__ int __ATTRS_o_ai vec_all_le(vector int __a,
   12650                                               vector bool int __b) {
   12651   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, (vector int)__b);
   12652 }
   12653 
   12654 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned int __a,
   12655                                               vector unsigned int __b) {
   12656   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, __b);
   12657 }
   12658 
   12659 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned int __a,
   12660                                               vector bool int __b) {
   12661   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, (vector unsigned int)__b);
   12662 }
   12663 
   12664 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
   12665                                               vector int __b) {
   12666   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a,
   12667                                       (vector unsigned int)__b);
   12668 }
   12669 
   12670 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
   12671                                               vector unsigned int __b) {
   12672   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a, __b);
   12673 }
   12674 
   12675 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
   12676                                               vector bool int __b) {
   12677   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a,
   12678                                       (vector unsigned int)__b);
   12679 }
   12680 
   12681 #ifdef __POWER8_VECTOR__
   12682 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed long long __a,
   12683                                               vector signed long long __b) {
   12684   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a, __b);
   12685 }
   12686 
   12687 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned long long __a,
   12688                                               vector unsigned long long __b) {
   12689   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a, __b);
   12690 }
   12691 
   12692 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed long long __a,
   12693                                               vector bool long long __b) {
   12694   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a,
   12695                                       (vector signed long long)__b);
   12696 }
   12697 
   12698 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned long long __a,
   12699                                               vector bool long long __b) {
   12700   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a,
   12701                                       (vector unsigned long long)__b);
   12702 }
   12703 
   12704 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
   12705                                               vector signed long long __b) {
   12706   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
   12707                                       (vector unsigned long long)__b);
   12708 }
   12709 
   12710 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
   12711                                               vector unsigned long long __b) {
   12712   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
   12713                                       __b);
   12714 }
   12715 
   12716 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
   12717                                               vector bool long long __b) {
   12718   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
   12719                                       (vector unsigned long long)__b);
   12720 }
   12721 #endif
   12722 
   12723 static __inline__ int __ATTRS_o_ai vec_all_le(vector float __a,
   12724                                               vector float __b) {
   12725 #ifdef __VSX__
   12726   return __builtin_vsx_xvcmpgesp_p(__CR6_LT, __b, __a);
   12727 #else
   12728   return __builtin_altivec_vcmpgefp_p(__CR6_LT, __b, __a);
   12729 #endif
   12730 }
   12731 
   12732 #ifdef __VSX__
   12733 static __inline__ int __ATTRS_o_ai vec_all_le(vector double __a,
   12734                                               vector double __b) {
   12735   return __builtin_vsx_xvcmpgedp_p(__CR6_LT, __b, __a);
   12736 }
   12737 #endif
   12738 
   12739 /* vec_all_lt */
   12740 
   12741 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed char __a,
   12742                                               vector signed char __b) {
   12743   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __b, __a);
   12744 }
   12745 
   12746 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed char __a,
   12747                                               vector bool char __b) {
   12748   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, (vector signed char)__b, __a);
   12749 }
   12750 
   12751 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned char __a,
   12752                                               vector unsigned char __b) {
   12753   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, __a);
   12754 }
   12755 
   12756 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned char __a,
   12757                                               vector bool char __b) {
   12758   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b, __a);
   12759 }
   12760 
   12761 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
   12762                                               vector signed char __b) {
   12763   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b,
   12764                                       (vector unsigned char)__a);
   12765 }
   12766 
   12767 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
   12768                                               vector unsigned char __b) {
   12769   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, (vector unsigned char)__a);
   12770 }
   12771 
   12772 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
   12773                                               vector bool char __b) {
   12774   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b,
   12775                                       (vector unsigned char)__a);
   12776 }
   12777 
   12778 static __inline__ int __ATTRS_o_ai vec_all_lt(vector short __a,
   12779                                               vector short __b) {
   12780   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __b, __a);
   12781 }
   12782 
   12783 static __inline__ int __ATTRS_o_ai vec_all_lt(vector short __a,
   12784                                               vector bool short __b) {
   12785   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, (vector short)__b, __a);
   12786 }
   12787 
   12788 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned short __a,
   12789                                               vector unsigned short __b) {
   12790   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b, __a);
   12791 }
   12792 
   12793 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned short __a,
   12794                                               vector bool short __b) {
   12795   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
   12796                                       __a);
   12797 }
   12798 
   12799 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
   12800                                               vector short __b) {
   12801   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
   12802                                       (vector unsigned short)__a);
   12803 }
   12804 
   12805 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
   12806                                               vector unsigned short __b) {
   12807   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b,
   12808                                       (vector unsigned short)__a);
   12809 }
   12810 
   12811 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
   12812                                               vector bool short __b) {
   12813   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
   12814                                       (vector unsigned short)__a);
   12815 }
   12816 
   12817 static __inline__ int __ATTRS_o_ai vec_all_lt(vector int __a, vector int __b) {
   12818   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __b, __a);
   12819 }
   12820 
   12821 static __inline__ int __ATTRS_o_ai vec_all_lt(vector int __a,
   12822                                               vector bool int __b) {
   12823   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, (vector int)__b, __a);
   12824 }
   12825 
   12826 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned int __a,
   12827                                               vector unsigned int __b) {
   12828   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, __a);
   12829 }
   12830 
   12831 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned int __a,
   12832                                               vector bool int __b) {
   12833   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b, __a);
   12834 }
   12835 
   12836 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
   12837                                               vector int __b) {
   12838   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b,
   12839                                       (vector unsigned int)__a);
   12840 }
   12841 
   12842 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
   12843                                               vector unsigned int __b) {
   12844   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, (vector unsigned int)__a);
   12845 }
   12846 
   12847 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
   12848                                               vector bool int __b) {
   12849   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b,
   12850                                       (vector unsigned int)__a);
   12851 }
   12852 
   12853 #ifdef __POWER8_VECTOR__
   12854 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed long long __a,
   12855                                               vector signed long long __b) {
   12856   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __b, __a);
   12857 }
   12858 
   12859 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a,
   12860                                               vector unsigned long long __b) {
   12861   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b, __a);
   12862 }
   12863 
   12864 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed long long __a,
   12865                                               vector bool long long __b) {
   12866   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, (vector signed long long)__b,
   12867                                       __a);
   12868 }
   12869 
   12870 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a,
   12871                                               vector bool long long __b) {
   12872   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
   12873                                       __a);
   12874 }
   12875 
   12876 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
   12877                                               vector signed long long __b) {
   12878   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
   12879                                       (vector unsigned long long)__a);
   12880 }
   12881 
   12882 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
   12883                                               vector unsigned long long __b) {
   12884   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b,
   12885                                       (vector unsigned long long)__a);
   12886 }
   12887 
   12888 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
   12889                                               vector bool long long __b) {
   12890   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
   12891                                       (vector unsigned long long)__a);
   12892 }
   12893 #endif
   12894 
   12895 static __inline__ int __ATTRS_o_ai vec_all_lt(vector float __a,
   12896                                               vector float __b) {
   12897 #ifdef __VSX__
   12898   return __builtin_vsx_xvcmpgtsp_p(__CR6_LT, __b, __a);
   12899 #else
   12900   return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __b, __a);
   12901 #endif
   12902 }
   12903 
   12904 #ifdef __VSX__
   12905 static __inline__ int __ATTRS_o_ai vec_all_lt(vector double __a,
   12906                                               vector double __b) {
   12907   return __builtin_vsx_xvcmpgtdp_p(__CR6_LT, __b, __a);
   12908 }
   12909 #endif
   12910 
   12911 /* vec_all_nan */
   12912 
   12913 static __inline__ int __ATTRS_o_ai vec_all_nan(vector float __a) {
   12914 #ifdef __VSX__
   12915   return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ, __a, __a);
   12916 #else
   12917   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __a);
   12918 #endif
   12919 }
   12920 
   12921 #ifdef __VSX__
   12922 static __inline__ int __ATTRS_o_ai vec_all_nan(vector double __a) {
   12923   return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __a);
   12924 }
   12925 #endif
   12926 
   12927 /* vec_all_ne */
   12928 
   12929 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed char __a,
   12930                                               vector signed char __b) {
   12931   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
   12932                                       (vector char)__b);
   12933 }
   12934 
   12935 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed char __a,
   12936                                               vector bool char __b) {
   12937   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
   12938                                       (vector char)__b);
   12939 }
   12940 
   12941 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned char __a,
   12942                                               vector unsigned char __b) {
   12943   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
   12944                                       (vector char)__b);
   12945 }
   12946 
   12947 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned char __a,
   12948                                               vector bool char __b) {
   12949   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
   12950                                       (vector char)__b);
   12951 }
   12952 
   12953 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
   12954                                               vector signed char __b) {
   12955   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
   12956                                       (vector char)__b);
   12957 }
   12958 
   12959 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
   12960                                               vector unsigned char __b) {
   12961   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
   12962                                       (vector char)__b);
   12963 }
   12964 
   12965 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
   12966                                               vector bool char __b) {
   12967   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
   12968                                       (vector char)__b);
   12969 }
   12970 
   12971 static __inline__ int __ATTRS_o_ai vec_all_ne(vector short __a,
   12972                                               vector short __b) {
   12973   return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, __b);
   12974 }
   12975 
   12976 static __inline__ int __ATTRS_o_ai vec_all_ne(vector short __a,
   12977                                               vector bool short __b) {
   12978   return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, (vector short)__b);
   12979 }
   12980 
   12981 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned short __a,
   12982                                               vector unsigned short __b) {
   12983   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
   12984                                       (vector short)__b);
   12985 }
   12986 
   12987 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned short __a,
   12988                                               vector bool short __b) {
   12989   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
   12990                                       (vector short)__b);
   12991 }
   12992 
   12993 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
   12994                                               vector short __b) {
   12995   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
   12996                                       (vector short)__b);
   12997 }
   12998 
   12999 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
   13000                                               vector unsigned short __b) {
   13001   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
   13002                                       (vector short)__b);
   13003 }
   13004 
   13005 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
   13006                                               vector bool short __b) {
   13007   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
   13008                                       (vector short)__b);
   13009 }
   13010 
   13011 static __inline__ int __ATTRS_o_ai vec_all_ne(vector pixel __a,
   13012                                               vector pixel __b) {
   13013   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
   13014                                       (vector short)__b);
   13015 }
   13016 
   13017 static __inline__ int __ATTRS_o_ai vec_all_ne(vector int __a, vector int __b) {
   13018   return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, __b);
   13019 }
   13020 
   13021 static __inline__ int __ATTRS_o_ai vec_all_ne(vector int __a,
   13022                                               vector bool int __b) {
   13023   return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, (vector int)__b);
   13024 }
   13025 
   13026 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned int __a,
   13027                                               vector unsigned int __b) {
   13028   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
   13029                                       (vector int)__b);
   13030 }
   13031 
   13032 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned int __a,
   13033                                               vector bool int __b) {
   13034   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
   13035                                       (vector int)__b);
   13036 }
   13037 
   13038 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
   13039                                               vector int __b) {
   13040   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
   13041                                       (vector int)__b);
   13042 }
   13043 
   13044 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
   13045                                               vector unsigned int __b) {
   13046   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
   13047                                       (vector int)__b);
   13048 }
   13049 
   13050 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
   13051                                               vector bool int __b) {
   13052   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
   13053                                       (vector int)__b);
   13054 }
   13055 
   13056 #ifdef __POWER8_VECTOR__
   13057 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed long long __a,
   13058                                               vector signed long long __b) {
   13059   return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a, __b);
   13060 }
   13061 
   13062 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a,
   13063                                               vector unsigned long long __b) {
   13064   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector long long)__a,
   13065                                       (vector long long)__b);
   13066 }
   13067 
   13068 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed long long __a,
   13069                                               vector bool long long __b) {
   13070   return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a,
   13071                                       (vector signed long long)__b);
   13072 }
   13073 
   13074 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a,
   13075                                               vector bool long long __b) {
   13076   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
   13077                                       (vector signed long long)__b);
   13078 }
   13079 
   13080 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
   13081                                               vector signed long long __b) {
   13082   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
   13083                                       (vector signed long long)__b);
   13084 }
   13085 
   13086 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
   13087                                               vector unsigned long long __b) {
   13088   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
   13089                                       (vector signed long long)__b);
   13090 }
   13091 
   13092 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
   13093                                               vector bool long long __b) {
   13094   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
   13095                                       (vector signed long long)__b);
   13096 }
   13097 #endif
   13098 
   13099 static __inline__ int __ATTRS_o_ai vec_all_ne(vector float __a,
   13100                                               vector float __b) {
   13101 #ifdef __VSX__
   13102   return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __b);
   13103 #else
   13104   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __b);
   13105 #endif
   13106 }
   13107 
   13108 #ifdef __VSX__
   13109 static __inline__ int __ATTRS_o_ai vec_all_ne(vector double __a,
   13110                                               vector double __b) {
   13111   return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __b);
   13112 }
   13113 #endif
   13114 
   13115 /* vec_all_nge */
   13116 
   13117 static __inline__ int __ATTRS_o_ai vec_all_nge(vector float __a,
   13118                                                vector float __b) {
   13119 #ifdef __VSX__
   13120   return __builtin_vsx_xvcmpgesp_p(__CR6_EQ, __a, __b);
   13121 #else
   13122   return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __a, __b);
   13123 #endif
   13124 }
   13125 
   13126 #ifdef __VSX__
   13127 static __inline__ int __ATTRS_o_ai vec_all_nge(vector double __a,
   13128                                                vector double __b) {
   13129   return __builtin_vsx_xvcmpgedp_p(__CR6_EQ, __a, __b);
   13130 }
   13131 #endif
   13132 
   13133 /* vec_all_ngt */
   13134 
   13135 static __inline__ int __ATTRS_o_ai vec_all_ngt(vector float __a,
   13136                                                vector float __b) {
   13137 #ifdef __VSX__
   13138   return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ, __a, __b);
   13139 #else
   13140   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __a, __b);
   13141 #endif
   13142 }
   13143 
   13144 #ifdef __VSX__
   13145 static __inline__ int __ATTRS_o_ai vec_all_ngt(vector double __a,
   13146                                                vector double __b) {
   13147   return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ, __a, __b);
   13148 }
   13149 #endif
   13150 
   13151 /* vec_all_nle */
   13152 
   13153 static __inline__ int __attribute__((__always_inline__))
   13154 vec_all_nle(vector float __a, vector float __b) {
   13155   return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __b, __a);
   13156 }
   13157 
   13158 /* vec_all_nlt */
   13159 
   13160 static __inline__ int __attribute__((__always_inline__))
   13161 vec_all_nlt(vector float __a, vector float __b) {
   13162   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __b, __a);
   13163 }
   13164 
   13165 /* vec_all_numeric */
   13166 
   13167 static __inline__ int __attribute__((__always_inline__))
   13168 vec_all_numeric(vector float __a) {
   13169   return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __a);
   13170 }
   13171 
   13172 /* vec_any_eq */
   13173 
   13174 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed char __a,
   13175                                               vector signed char __b) {
   13176   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
   13177                                       (vector char)__b);
   13178 }
   13179 
   13180 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed char __a,
   13181                                               vector bool char __b) {
   13182   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
   13183                                       (vector char)__b);
   13184 }
   13185 
   13186 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned char __a,
   13187                                               vector unsigned char __b) {
   13188   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
   13189                                       (vector char)__b);
   13190 }
   13191 
   13192 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned char __a,
   13193                                               vector bool char __b) {
   13194   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
   13195                                       (vector char)__b);
   13196 }
   13197 
   13198 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
   13199                                               vector signed char __b) {
   13200   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
   13201                                       (vector char)__b);
   13202 }
   13203 
   13204 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
   13205                                               vector unsigned char __b) {
   13206   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
   13207                                       (vector char)__b);
   13208 }
   13209 
   13210 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
   13211                                               vector bool char __b) {
   13212   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
   13213                                       (vector char)__b);
   13214 }
   13215 
   13216 static __inline__ int __ATTRS_o_ai vec_any_eq(vector short __a,
   13217                                               vector short __b) {
   13218   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, __b);
   13219 }
   13220 
   13221 static __inline__ int __ATTRS_o_ai vec_any_eq(vector short __a,
   13222                                               vector bool short __b) {
   13223   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, (vector short)__b);
   13224 }
   13225 
   13226 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned short __a,
   13227                                               vector unsigned short __b) {
   13228   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
   13229                                       (vector short)__b);
   13230 }
   13231 
   13232 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned short __a,
   13233                                               vector bool short __b) {
   13234   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
   13235                                       (vector short)__b);
   13236 }
   13237 
   13238 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
   13239                                               vector short __b) {
   13240   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
   13241                                       (vector short)__b);
   13242 }
   13243 
   13244 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
   13245                                               vector unsigned short __b) {
   13246   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
   13247                                       (vector short)__b);
   13248 }
   13249 
   13250 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
   13251                                               vector bool short __b) {
   13252   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
   13253                                       (vector short)__b);
   13254 }
   13255 
   13256 static __inline__ int __ATTRS_o_ai vec_any_eq(vector pixel __a,
   13257                                               vector pixel __b) {
   13258   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
   13259                                       (vector short)__b);
   13260 }
   13261 
   13262 static __inline__ int __ATTRS_o_ai vec_any_eq(vector int __a, vector int __b) {
   13263   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, __b);
   13264 }
   13265 
   13266 static __inline__ int __ATTRS_o_ai vec_any_eq(vector int __a,
   13267                                               vector bool int __b) {
   13268   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, (vector int)__b);
   13269 }
   13270 
   13271 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned int __a,
   13272                                               vector unsigned int __b) {
   13273   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
   13274                                       (vector int)__b);
   13275 }
   13276 
   13277 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned int __a,
   13278                                               vector bool int __b) {
   13279   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
   13280                                       (vector int)__b);
   13281 }
   13282 
   13283 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
   13284                                               vector int __b) {
   13285   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
   13286                                       (vector int)__b);
   13287 }
   13288 
   13289 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
   13290                                               vector unsigned int __b) {
   13291   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
   13292                                       (vector int)__b);
   13293 }
   13294 
   13295 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
   13296                                               vector bool int __b) {
   13297   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
   13298                                       (vector int)__b);
   13299 }
   13300 
   13301 #ifdef __POWER8_VECTOR__
   13302 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed long long __a,
   13303                                               vector signed long long __b) {
   13304   return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a, __b);
   13305 }
   13306 
   13307 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a,
   13308                                               vector unsigned long long __b) {
   13309   return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, (vector long long)__a,
   13310                                       (vector long long)__b);
   13311 }
   13312 
   13313 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed long long __a,
   13314                                               vector bool long long __b) {
   13315   return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a,
   13316                                       (vector signed long long)__b);
   13317 }
   13318 
   13319 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a,
   13320                                               vector bool long long __b) {
   13321   return __builtin_altivec_vcmpequd_p(
   13322       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
   13323 }
   13324 
   13325 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
   13326                                               vector signed long long __b) {
   13327   return __builtin_altivec_vcmpequd_p(
   13328       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
   13329 }
   13330 
   13331 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
   13332                                               vector unsigned long long __b) {
   13333   return __builtin_altivec_vcmpequd_p(
   13334       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
   13335 }
   13336 
   13337 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
   13338                                               vector bool long long __b) {
   13339   return __builtin_altivec_vcmpequd_p(
   13340       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
   13341 }
   13342 #endif
   13343 
   13344 static __inline__ int __ATTRS_o_ai vec_any_eq(vector float __a,
   13345                                               vector float __b) {
   13346 #ifdef __VSX__
   13347   return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ_REV, __a, __b);
   13348 #else
   13349   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __b);
   13350 #endif
   13351 }
   13352 
   13353 #ifdef __VSX__
   13354 static __inline__ int __ATTRS_o_ai vec_any_eq(vector double __a,
   13355                                               vector double __b) {
   13356   return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ_REV, __a, __b);
   13357 }
   13358 #endif
   13359 
   13360 /* vec_any_ge */
   13361 
   13362 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed char __a,
   13363                                               vector signed char __b) {
   13364   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __b, __a);
   13365 }
   13366 
   13367 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed char __a,
   13368                                               vector bool char __b) {
   13369   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, (vector signed char)__b,
   13370                                       __a);
   13371 }
   13372 
   13373 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned char __a,
   13374                                               vector unsigned char __b) {
   13375   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b, __a);
   13376 }
   13377 
   13378 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned char __a,
   13379                                               vector bool char __b) {
   13380   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
   13381                                       __a);
   13382 }
   13383 
   13384 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
   13385                                               vector signed char __b) {
   13386   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
   13387                                       (vector unsigned char)__a);
   13388 }
   13389 
   13390 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
   13391                                               vector unsigned char __b) {
   13392   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b,
   13393                                       (vector unsigned char)__a);
   13394 }
   13395 
   13396 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
   13397                                               vector bool char __b) {
   13398   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
   13399                                       (vector unsigned char)__a);
   13400 }
   13401 
   13402 static __inline__ int __ATTRS_o_ai vec_any_ge(vector short __a,
   13403                                               vector short __b) {
   13404   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __b, __a);
   13405 }
   13406 
   13407 static __inline__ int __ATTRS_o_ai vec_any_ge(vector short __a,
   13408                                               vector bool short __b) {
   13409   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, (vector short)__b, __a);
   13410 }
   13411 
   13412 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned short __a,
   13413                                               vector unsigned short __b) {
   13414   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b, __a);
   13415 }
   13416 
   13417 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned short __a,
   13418                                               vector bool short __b) {
   13419   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
   13420                                       __a);
   13421 }
   13422 
   13423 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
   13424                                               vector short __b) {
   13425   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
   13426                                       (vector unsigned short)__a);
   13427 }
   13428 
   13429 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
   13430                                               vector unsigned short __b) {
   13431   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b,
   13432                                       (vector unsigned short)__a);
   13433 }
   13434 
   13435 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
   13436                                               vector bool short __b) {
   13437   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
   13438                                       (vector unsigned short)__a);
   13439 }
   13440 
   13441 static __inline__ int __ATTRS_o_ai vec_any_ge(vector int __a, vector int __b) {
   13442   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __b, __a);
   13443 }
   13444 
   13445 static __inline__ int __ATTRS_o_ai vec_any_ge(vector int __a,
   13446                                               vector bool int __b) {
   13447   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, (vector int)__b, __a);
   13448 }
   13449 
   13450 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned int __a,
   13451                                               vector unsigned int __b) {
   13452   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b, __a);
   13453 }
   13454 
   13455 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned int __a,
   13456                                               vector bool int __b) {
   13457   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
   13458                                       __a);
   13459 }
   13460 
   13461 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
   13462                                               vector int __b) {
   13463   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
   13464                                       (vector unsigned int)__a);
   13465 }
   13466 
   13467 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
   13468                                               vector unsigned int __b) {
   13469   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b,
   13470                                       (vector unsigned int)__a);
   13471 }
   13472 
   13473 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
   13474                                               vector bool int __b) {
   13475   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
   13476                                       (vector unsigned int)__a);
   13477 }
   13478 
   13479 #ifdef __POWER8_VECTOR__
   13480 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed long long __a,
   13481                                               vector signed long long __b) {
   13482   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __b, __a);
   13483 }
   13484 
   13485 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a,
   13486                                               vector unsigned long long __b) {
   13487   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b, __a);
   13488 }
   13489 
   13490 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed long long __a,
   13491                                               vector bool long long __b) {
   13492   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV,
   13493                                       (vector signed long long)__b, __a);
   13494 }
   13495 
   13496 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a,
   13497                                               vector bool long long __b) {
   13498   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
   13499                                       (vector unsigned long long)__b, __a);
   13500 }
   13501 
   13502 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
   13503                                               vector signed long long __b) {
   13504   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
   13505                                       (vector unsigned long long)__b,
   13506                                       (vector unsigned long long)__a);
   13507 }
   13508 
   13509 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
   13510                                               vector unsigned long long __b) {
   13511   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b,
   13512                                       (vector unsigned long long)__a);
   13513 }
   13514 
   13515 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
   13516                                               vector bool long long __b) {
   13517   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
   13518                                       (vector unsigned long long)__b,
   13519                                       (vector unsigned long long)__a);
   13520 }
   13521 #endif
   13522 
   13523 static __inline__ int __ATTRS_o_ai vec_any_ge(vector float __a,
   13524                                               vector float __b) {
   13525 #ifdef __VSX__
   13526   return __builtin_vsx_xvcmpgesp_p(__CR6_EQ_REV, __a, __b);
   13527 #else
   13528   return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __a, __b);
   13529 #endif
   13530 }
   13531 
   13532 #ifdef __VSX__
   13533 static __inline__ int __ATTRS_o_ai vec_any_ge(vector double __a,
   13534                                               vector double __b) {
   13535   return __builtin_vsx_xvcmpgedp_p(__CR6_EQ_REV, __a, __b);
   13536 }
   13537 #endif
   13538 
   13539 /* vec_any_gt */
   13540 
   13541 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed char __a,
   13542                                               vector signed char __b) {
   13543   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a, __b);
   13544 }
   13545 
   13546 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed char __a,
   13547                                               vector bool char __b) {
   13548   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a,
   13549                                       (vector signed char)__b);
   13550 }
   13551 
   13552 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned char __a,
   13553                                               vector unsigned char __b) {
   13554   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a, __b);
   13555 }
   13556 
   13557 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned char __a,
   13558                                               vector bool char __b) {
   13559   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a,
   13560                                       (vector unsigned char)__b);
   13561 }
   13562 
   13563 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
   13564                                               vector signed char __b) {
   13565   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
   13566                                       (vector unsigned char)__b);
   13567 }
   13568 
   13569 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
   13570                                               vector unsigned char __b) {
   13571   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
   13572                                       __b);
   13573 }
   13574 
   13575 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
   13576                                               vector bool char __b) {
   13577   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
   13578                                       (vector unsigned char)__b);
   13579 }
   13580 
   13581 static __inline__ int __ATTRS_o_ai vec_any_gt(vector short __a,
   13582                                               vector short __b) {
   13583   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, __b);
   13584 }
   13585 
   13586 static __inline__ int __ATTRS_o_ai vec_any_gt(vector short __a,
   13587                                               vector bool short __b) {
   13588   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, (vector short)__b);
   13589 }
   13590 
   13591 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned short __a,
   13592                                               vector unsigned short __b) {
   13593   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a, __b);
   13594 }
   13595 
   13596 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned short __a,
   13597                                               vector bool short __b) {
   13598   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a,
   13599                                       (vector unsigned short)__b);
   13600 }
   13601 
   13602 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
   13603                                               vector short __b) {
   13604   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
   13605                                       (vector unsigned short)__b);
   13606 }
   13607 
   13608 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
   13609                                               vector unsigned short __b) {
   13610   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
   13611                                       __b);
   13612 }
   13613 
   13614 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
   13615                                               vector bool short __b) {
   13616   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
   13617                                       (vector unsigned short)__b);
   13618 }
   13619 
   13620 static __inline__ int __ATTRS_o_ai vec_any_gt(vector int __a, vector int __b) {
   13621   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, __b);
   13622 }
   13623 
   13624 static __inline__ int __ATTRS_o_ai vec_any_gt(vector int __a,
   13625                                               vector bool int __b) {
   13626   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, (vector int)__b);
   13627 }
   13628 
   13629 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned int __a,
   13630                                               vector unsigned int __b) {
   13631   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a, __b);
   13632 }
   13633 
   13634 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned int __a,
   13635                                               vector bool int __b) {
   13636   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a,
   13637                                       (vector unsigned int)__b);
   13638 }
   13639 
   13640 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
   13641                                               vector int __b) {
   13642   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
   13643                                       (vector unsigned int)__b);
   13644 }
   13645 
   13646 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
   13647                                               vector unsigned int __b) {
   13648   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
   13649                                       __b);
   13650 }
   13651 
   13652 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
   13653                                               vector bool int __b) {
   13654   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
   13655                                       (vector unsigned int)__b);
   13656 }
   13657 
   13658 #ifdef __POWER8_VECTOR__
   13659 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed long long __a,
   13660                                               vector signed long long __b) {
   13661   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a, __b);
   13662 }
   13663 
   13664 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a,
   13665                                               vector unsigned long long __b) {
   13666   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a, __b);
   13667 }
   13668 
   13669 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed long long __a,
   13670                                               vector bool long long __b) {
   13671   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a,
   13672                                       (vector signed long long)__b);
   13673 }
   13674 
   13675 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a,
   13676                                               vector bool long long __b) {
   13677   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a,
   13678                                       (vector unsigned long long)__b);
   13679 }
   13680 
   13681 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
   13682                                               vector signed long long __b) {
   13683   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
   13684                                       (vector unsigned long long)__a,
   13685                                       (vector unsigned long long)__b);
   13686 }
   13687 
   13688 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
   13689                                               vector unsigned long long __b) {
   13690   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
   13691                                       (vector unsigned long long)__a, __b);
   13692 }
   13693 
   13694 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
   13695                                               vector bool long long __b) {
   13696   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
   13697                                       (vector unsigned long long)__a,
   13698                                       (vector unsigned long long)__b);
   13699 }
   13700 #endif
   13701 
   13702 static __inline__ int __ATTRS_o_ai vec_any_gt(vector float __a,
   13703                                               vector float __b) {
   13704 #ifdef __VSX__
   13705   return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ_REV, __a, __b);
   13706 #else
   13707   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __a, __b);
   13708 #endif
   13709 }
   13710 
   13711 #ifdef __VSX__
   13712 static __inline__ int __ATTRS_o_ai vec_any_gt(vector double __a,
   13713                                               vector double __b) {
   13714   return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ_REV, __a, __b);
   13715 }
   13716 #endif
   13717 
   13718 /* vec_any_le */
   13719 
   13720 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed char __a,
   13721                                               vector signed char __b) {
   13722   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a, __b);
   13723 }
   13724 
   13725 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed char __a,
   13726                                               vector bool char __b) {
   13727   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a,
   13728                                       (vector signed char)__b);
   13729 }
   13730 
   13731 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned char __a,
   13732                                               vector unsigned char __b) {
   13733   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a, __b);
   13734 }
   13735 
   13736 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned char __a,
   13737                                               vector bool char __b) {
   13738   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a,
   13739                                       (vector unsigned char)__b);
   13740 }
   13741 
   13742 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
   13743                                               vector signed char __b) {
   13744   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
   13745                                       (vector unsigned char)__b);
   13746 }
   13747 
   13748 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
   13749                                               vector unsigned char __b) {
   13750   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
   13751                                       __b);
   13752 }
   13753 
   13754 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
   13755                                               vector bool char __b) {
   13756   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
   13757                                       (vector unsigned char)__b);
   13758 }
   13759 
   13760 static __inline__ int __ATTRS_o_ai vec_any_le(vector short __a,
   13761                                               vector short __b) {
   13762   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, __b);
   13763 }
   13764 
   13765 static __inline__ int __ATTRS_o_ai vec_any_le(vector short __a,
   13766                                               vector bool short __b) {
   13767   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, (vector short)__b);
   13768 }
   13769 
   13770 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned short __a,
   13771                                               vector unsigned short __b) {
   13772   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a, __b);
   13773 }
   13774 
   13775 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned short __a,
   13776                                               vector bool short __b) {
   13777   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a,
   13778                                       (vector unsigned short)__b);
   13779 }
   13780 
   13781 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
   13782                                               vector short __b) {
   13783   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
   13784                                       (vector unsigned short)__b);
   13785 }
   13786 
   13787 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
   13788                                               vector unsigned short __b) {
   13789   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
   13790                                       __b);
   13791 }
   13792 
   13793 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
   13794                                               vector bool short __b) {
   13795   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
   13796                                       (vector unsigned short)__b);
   13797 }
   13798 
   13799 static __inline__ int __ATTRS_o_ai vec_any_le(vector int __a, vector int __b) {
   13800   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, __b);
   13801 }
   13802 
   13803 static __inline__ int __ATTRS_o_ai vec_any_le(vector int __a,
   13804                                               vector bool int __b) {
   13805   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, (vector int)__b);
   13806 }
   13807 
   13808 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned int __a,
   13809                                               vector unsigned int __b) {
   13810   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a, __b);
   13811 }
   13812 
   13813 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned int __a,
   13814                                               vector bool int __b) {
   13815   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a,
   13816                                       (vector unsigned int)__b);
   13817 }
   13818 
   13819 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
   13820                                               vector int __b) {
   13821   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
   13822                                       (vector unsigned int)__b);
   13823 }
   13824 
   13825 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
   13826                                               vector unsigned int __b) {
   13827   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
   13828                                       __b);
   13829 }
   13830 
   13831 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
   13832                                               vector bool int __b) {
   13833   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
   13834                                       (vector unsigned int)__b);
   13835 }
   13836 
   13837 #ifdef __POWER8_VECTOR__
   13838 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed long long __a,
   13839                                               vector signed long long __b) {
   13840   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a, __b);
   13841 }
   13842 
   13843 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned long long __a,
   13844                                               vector unsigned long long __b) {
   13845   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a, __b);
   13846 }
   13847 
   13848 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed long long __a,
   13849                                               vector bool long long __b) {
   13850   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a,
   13851                                       (vector signed long long)__b);
   13852 }
   13853 
   13854 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned long long __a,
   13855                                               vector bool long long __b) {
   13856   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a,
   13857                                       (vector unsigned long long)__b);
   13858 }
   13859 
   13860 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
   13861                                               vector signed long long __b) {
   13862   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
   13863                                       (vector unsigned long long)__a,
   13864                                       (vector unsigned long long)__b);
   13865 }
   13866 
   13867 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
   13868                                               vector unsigned long long __b) {
   13869   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
   13870                                       (vector unsigned long long)__a, __b);
   13871 }
   13872 
   13873 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
   13874                                               vector bool long long __b) {
   13875   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
   13876                                       (vector unsigned long long)__a,
   13877                                       (vector unsigned long long)__b);
   13878 }
   13879 #endif
   13880 
   13881 static __inline__ int __ATTRS_o_ai vec_any_le(vector float __a,
   13882                                               vector float __b) {
   13883 #ifdef __VSX__
   13884   return __builtin_vsx_xvcmpgesp_p(__CR6_EQ_REV, __b, __a);
   13885 #else
   13886   return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __b, __a);
   13887 #endif
   13888 }
   13889 
   13890 #ifdef __VSX__
   13891 static __inline__ int __ATTRS_o_ai vec_any_le(vector double __a,
   13892                                               vector double __b) {
   13893   return __builtin_vsx_xvcmpgedp_p(__CR6_EQ_REV, __b, __a);
   13894 }
   13895 #endif
   13896 
   13897 /* vec_any_lt */
   13898 
   13899 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed char __a,
   13900                                               vector signed char __b) {
   13901   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __b, __a);
   13902 }
   13903 
   13904 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed char __a,
   13905                                               vector bool char __b) {
   13906   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, (vector signed char)__b,
   13907                                       __a);
   13908 }
   13909 
   13910 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned char __a,
   13911                                               vector unsigned char __b) {
   13912   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b, __a);
   13913 }
   13914 
   13915 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned char __a,
   13916                                               vector bool char __b) {
   13917   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
   13918                                       __a);
   13919 }
   13920 
   13921 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
   13922                                               vector signed char __b) {
   13923   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
   13924                                       (vector unsigned char)__a);
   13925 }
   13926 
   13927 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
   13928                                               vector unsigned char __b) {
   13929   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b,
   13930                                       (vector unsigned char)__a);
   13931 }
   13932 
   13933 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
   13934                                               vector bool char __b) {
   13935   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
   13936                                       (vector unsigned char)__a);
   13937 }
   13938 
   13939 static __inline__ int __ATTRS_o_ai vec_any_lt(vector short __a,
   13940                                               vector short __b) {
   13941   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __b, __a);
   13942 }
   13943 
   13944 static __inline__ int __ATTRS_o_ai vec_any_lt(vector short __a,
   13945                                               vector bool short __b) {
   13946   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, (vector short)__b, __a);
   13947 }
   13948 
   13949 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned short __a,
   13950                                               vector unsigned short __b) {
   13951   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b, __a);
   13952 }
   13953 
   13954 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned short __a,
   13955                                               vector bool short __b) {
   13956   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
   13957                                       __a);
   13958 }
   13959 
   13960 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
   13961                                               vector short __b) {
   13962   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
   13963                                       (vector unsigned short)__a);
   13964 }
   13965 
   13966 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
   13967                                               vector unsigned short __b) {
   13968   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b,
   13969                                       (vector unsigned short)__a);
   13970 }
   13971 
   13972 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
   13973                                               vector bool short __b) {
   13974   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
   13975                                       (vector unsigned short)__a);
   13976 }
   13977 
   13978 static __inline__ int __ATTRS_o_ai vec_any_lt(vector int __a, vector int __b) {
   13979   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __b, __a);
   13980 }
   13981 
   13982 static __inline__ int __ATTRS_o_ai vec_any_lt(vector int __a,
   13983                                               vector bool int __b) {
   13984   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, (vector int)__b, __a);
   13985 }
   13986 
   13987 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned int __a,
   13988                                               vector unsigned int __b) {
   13989   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b, __a);
   13990 }
   13991 
   13992 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned int __a,
   13993                                               vector bool int __b) {
   13994   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
   13995                                       __a);
   13996 }
   13997 
   13998 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
   13999                                               vector int __b) {
   14000   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
   14001                                       (vector unsigned int)__a);
   14002 }
   14003 
   14004 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
   14005                                               vector unsigned int __b) {
   14006   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b,
   14007                                       (vector unsigned int)__a);
   14008 }
   14009 
   14010 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
   14011                                               vector bool int __b) {
   14012   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
   14013                                       (vector unsigned int)__a);
   14014 }
   14015 
   14016 #ifdef __POWER8_VECTOR__
   14017 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed long long __a,
   14018                                               vector signed long long __b) {
   14019   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __b, __a);
   14020 }
   14021 
   14022 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a,
   14023                                               vector unsigned long long __b) {
   14024   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b, __a);
   14025 }
   14026 
   14027 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed long long __a,
   14028                                               vector bool long long __b) {
   14029   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV,
   14030                                       (vector signed long long)__b, __a);
   14031 }
   14032 
   14033 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a,
   14034                                               vector bool long long __b) {
   14035   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
   14036                                       (vector unsigned long long)__b, __a);
   14037 }
   14038 
   14039 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
   14040                                               vector signed long long __b) {
   14041   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
   14042                                       (vector unsigned long long)__b,
   14043                                       (vector unsigned long long)__a);
   14044 }
   14045 
   14046 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
   14047                                               vector unsigned long long __b) {
   14048   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b,
   14049                                       (vector unsigned long long)__a);
   14050 }
   14051 
   14052 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
   14053                                               vector bool long long __b) {
   14054   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
   14055                                       (vector unsigned long long)__b,
   14056                                       (vector unsigned long long)__a);
   14057 }
   14058 #endif
   14059 
   14060 static __inline__ int __ATTRS_o_ai vec_any_lt(vector float __a,
   14061                                               vector float __b) {
   14062 #ifdef __VSX__
   14063   return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ_REV, __b, __a);
   14064 #else
   14065   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __b, __a);
   14066 #endif
   14067 }
   14068 
   14069 #ifdef __VSX__
   14070 static __inline__ int __ATTRS_o_ai vec_any_lt(vector double __a,
   14071                                               vector double __b) {
   14072   return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ_REV, __b, __a);
   14073 }
   14074 #endif
   14075 
   14076 /* vec_any_nan */
   14077 
   14078 static __inline__ int __attribute__((__always_inline__))
   14079 vec_any_nan(vector float __a) {
   14080   return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __a);
   14081 }
   14082 
   14083 /* vec_any_ne */
   14084 
   14085 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed char __a,
   14086                                               vector signed char __b) {
   14087   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
   14088                                       (vector char)__b);
   14089 }
   14090 
   14091 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed char __a,
   14092                                               vector bool char __b) {
   14093   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
   14094                                       (vector char)__b);
   14095 }
   14096 
   14097 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned char __a,
   14098                                               vector unsigned char __b) {
   14099   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
   14100                                       (vector char)__b);
   14101 }
   14102 
   14103 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned char __a,
   14104                                               vector bool char __b) {
   14105   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
   14106                                       (vector char)__b);
   14107 }
   14108 
   14109 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
   14110                                               vector signed char __b) {
   14111   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
   14112                                       (vector char)__b);
   14113 }
   14114 
   14115 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
   14116                                               vector unsigned char __b) {
   14117   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
   14118                                       (vector char)__b);
   14119 }
   14120 
   14121 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
   14122                                               vector bool char __b) {
   14123   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
   14124                                       (vector char)__b);
   14125 }
   14126 
   14127 static __inline__ int __ATTRS_o_ai vec_any_ne(vector short __a,
   14128                                               vector short __b) {
   14129   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, __b);
   14130 }
   14131 
   14132 static __inline__ int __ATTRS_o_ai vec_any_ne(vector short __a,
   14133                                               vector bool short __b) {
   14134   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, (vector short)__b);
   14135 }
   14136 
   14137 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned short __a,
   14138                                               vector unsigned short __b) {
   14139   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
   14140                                       (vector short)__b);
   14141 }
   14142 
   14143 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned short __a,
   14144                                               vector bool short __b) {
   14145   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
   14146                                       (vector short)__b);
   14147 }
   14148 
   14149 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
   14150                                               vector short __b) {
   14151   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
   14152                                       (vector short)__b);
   14153 }
   14154 
   14155 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
   14156                                               vector unsigned short __b) {
   14157   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
   14158                                       (vector short)__b);
   14159 }
   14160 
   14161 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
   14162                                               vector bool short __b) {
   14163   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
   14164                                       (vector short)__b);
   14165 }
   14166 
   14167 static __inline__ int __ATTRS_o_ai vec_any_ne(vector pixel __a,
   14168                                               vector pixel __b) {
   14169   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
   14170                                       (vector short)__b);
   14171 }
   14172 
   14173 static __inline__ int __ATTRS_o_ai vec_any_ne(vector int __a, vector int __b) {
   14174   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, __b);
   14175 }
   14176 
   14177 static __inline__ int __ATTRS_o_ai vec_any_ne(vector int __a,
   14178                                               vector bool int __b) {
   14179   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, (vector int)__b);
   14180 }
   14181 
   14182 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned int __a,
   14183                                               vector unsigned int __b) {
   14184   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
   14185                                       (vector int)__b);
   14186 }
   14187 
   14188 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned int __a,
   14189                                               vector bool int __b) {
   14190   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
   14191                                       (vector int)__b);
   14192 }
   14193 
   14194 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
   14195                                               vector int __b) {
   14196   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
   14197                                       (vector int)__b);
   14198 }
   14199 
   14200 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
   14201                                               vector unsigned int __b) {
   14202   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
   14203                                       (vector int)__b);
   14204 }
   14205 
   14206 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
   14207                                               vector bool int __b) {
   14208   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
   14209                                       (vector int)__b);
   14210 }
   14211 
   14212 #ifdef __POWER8_VECTOR__
   14213 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed long long __a,
   14214                                               vector signed long long __b) {
   14215   return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a, __b);
   14216 }
   14217 
   14218 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a,
   14219                                               vector unsigned long long __b) {
   14220   return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, (vector long long)__a,
   14221                                       (vector long long)__b);
   14222 }
   14223 
   14224 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed long long __a,
   14225                                               vector bool long long __b) {
   14226   return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a,
   14227                                       (vector signed long long)__b);
   14228 }
   14229 
   14230 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a,
   14231                                               vector bool long long __b) {
   14232   return __builtin_altivec_vcmpequd_p(
   14233       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
   14234 }
   14235 
   14236 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
   14237                                               vector signed long long __b) {
   14238   return __builtin_altivec_vcmpequd_p(
   14239       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
   14240 }
   14241 
   14242 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
   14243                                               vector unsigned long long __b) {
   14244   return __builtin_altivec_vcmpequd_p(
   14245       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
   14246 }
   14247 
   14248 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
   14249                                               vector bool long long __b) {
   14250   return __builtin_altivec_vcmpequd_p(
   14251       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
   14252 }
   14253 #endif
   14254 
   14255 static __inline__ int __ATTRS_o_ai vec_any_ne(vector float __a,
   14256                                               vector float __b) {
   14257 #ifdef __VSX__
   14258   return __builtin_vsx_xvcmpeqsp_p(__CR6_LT_REV, __a, __b);
   14259 #else
   14260   return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __b);
   14261 #endif
   14262 }
   14263 
   14264 #ifdef __VSX__
   14265 static __inline__ int __ATTRS_o_ai vec_any_ne(vector double __a,
   14266                                               vector double __b) {
   14267   return __builtin_vsx_xvcmpeqdp_p(__CR6_LT_REV, __a, __b);
   14268 }
   14269 #endif
   14270 
   14271 /* vec_any_nge */
   14272 
   14273 static __inline__ int __attribute__((__always_inline__))
   14274 vec_any_nge(vector float __a, vector float __b) {
   14275   return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __a, __b);
   14276 }
   14277 
   14278 /* vec_any_ngt */
   14279 
   14280 static __inline__ int __attribute__((__always_inline__))
   14281 vec_any_ngt(vector float __a, vector float __b) {
   14282   return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __a, __b);
   14283 }
   14284 
   14285 /* vec_any_nle */
   14286 
   14287 static __inline__ int __attribute__((__always_inline__))
   14288 vec_any_nle(vector float __a, vector float __b) {
   14289   return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __b, __a);
   14290 }
   14291 
   14292 /* vec_any_nlt */
   14293 
   14294 static __inline__ int __attribute__((__always_inline__))
   14295 vec_any_nlt(vector float __a, vector float __b) {
   14296   return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __b, __a);
   14297 }
   14298 
   14299 /* vec_any_numeric */
   14300 
   14301 static __inline__ int __attribute__((__always_inline__))
   14302 vec_any_numeric(vector float __a) {
   14303   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __a);
   14304 }
   14305 
   14306 /* vec_any_out */
   14307 
   14308 static __inline__ int __attribute__((__always_inline__))
   14309 vec_any_out(vector float __a, vector float __b) {
   14310   return __builtin_altivec_vcmpbfp_p(__CR6_EQ_REV, __a, __b);
   14311 }
   14312 
   14313 /* Power 8 Crypto functions
   14314 Note: We diverge from the current GCC implementation with regard
   14315 to cryptography and related functions as follows:
   14316 - Only the SHA and AES instructions and builtins are disabled by -mno-crypto
   14317 - The remaining ones are only available on Power8 and up so
   14318   require -mpower8-vector
   14319 The justification for this is that export requirements require that
   14320 Category:Vector.Crypto is optional (i.e. compliant hardware may not provide
   14321 support). As a result, we need to be able to turn off support for those.
   14322 The remaining ones (currently controlled by -mcrypto for GCC) still
   14323 need to be provided on compliant hardware even if Vector.Crypto is not
   14324 provided.
   14325 */
   14326 #ifdef __CRYPTO__
   14327 #define vec_sbox_be __builtin_altivec_crypto_vsbox
   14328 #define vec_cipher_be __builtin_altivec_crypto_vcipher
   14329 #define vec_cipherlast_be __builtin_altivec_crypto_vcipherlast
   14330 #define vec_ncipher_be __builtin_altivec_crypto_vncipher
   14331 #define vec_ncipherlast_be __builtin_altivec_crypto_vncipherlast
   14332 
   14333 static __inline__ vector unsigned long long __attribute__((__always_inline__))
   14334 __builtin_crypto_vsbox(vector unsigned long long __a) {
   14335   return __builtin_altivec_crypto_vsbox(__a);
   14336 }
   14337 
   14338 static __inline__ vector unsigned long long __attribute__((__always_inline__))
   14339 __builtin_crypto_vcipher(vector unsigned long long __a,
   14340                          vector unsigned long long __b) {
   14341   return __builtin_altivec_crypto_vcipher(__a, __b);
   14342 }
   14343 
   14344 static __inline__ vector unsigned long long __attribute__((__always_inline__))
   14345 __builtin_crypto_vcipherlast(vector unsigned long long __a,
   14346                              vector unsigned long long __b) {
   14347   return __builtin_altivec_crypto_vcipherlast(__a, __b);
   14348 }
   14349 
   14350 static __inline__ vector unsigned long long __attribute__((__always_inline__))
   14351 __builtin_crypto_vncipher(vector unsigned long long __a,
   14352                           vector unsigned long long __b) {
   14353   return __builtin_altivec_crypto_vncipher(__a, __b);
   14354 }
   14355 
   14356 static __inline__ vector unsigned long long __attribute__((__always_inline__))
   14357 __builtin_crypto_vncipherlast(vector unsigned long long __a,
   14358                               vector unsigned long long __b) {
   14359   return __builtin_altivec_crypto_vncipherlast(__a, __b);
   14360 }
   14361 
   14362 #define __builtin_crypto_vshasigmad __builtin_altivec_crypto_vshasigmad
   14363 #define __builtin_crypto_vshasigmaw __builtin_altivec_crypto_vshasigmaw
   14364 
   14365 #define vec_shasigma_be(X, Y, Z)                                               \
   14366   _Generic((X), vector unsigned int                                            \
   14367            : __builtin_crypto_vshasigmaw, vector unsigned long long            \
   14368            : __builtin_crypto_vshasigmad)((X), (Y), (Z))
   14369 #endif
   14370 
   14371 #ifdef __POWER8_VECTOR__
   14372 static __inline__ vector unsigned char __ATTRS_o_ai
   14373 __builtin_crypto_vpermxor(vector unsigned char __a, vector unsigned char __b,
   14374                           vector unsigned char __c) {
   14375   return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
   14376 }
   14377 
   14378 static __inline__ vector unsigned short __ATTRS_o_ai
   14379 __builtin_crypto_vpermxor(vector unsigned short __a, vector unsigned short __b,
   14380                           vector unsigned short __c) {
   14381   return (vector unsigned short)__builtin_altivec_crypto_vpermxor(
   14382       (vector unsigned char)__a, (vector unsigned char)__b,
   14383       (vector unsigned char)__c);
   14384 }
   14385 
   14386 static __inline__ vector unsigned int __ATTRS_o_ai __builtin_crypto_vpermxor(
   14387     vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
   14388   return (vector unsigned int)__builtin_altivec_crypto_vpermxor(
   14389       (vector unsigned char)__a, (vector unsigned char)__b,
   14390       (vector unsigned char)__c);
   14391 }
   14392 
   14393 static __inline__ vector unsigned long long __ATTRS_o_ai
   14394 __builtin_crypto_vpermxor(vector unsigned long long __a,
   14395                           vector unsigned long long __b,
   14396                           vector unsigned long long __c) {
   14397   return (vector unsigned long long)__builtin_altivec_crypto_vpermxor(
   14398       (vector unsigned char)__a, (vector unsigned char)__b,
   14399       (vector unsigned char)__c);
   14400 }
   14401 
   14402 static __inline__ vector unsigned char __ATTRS_o_ai
   14403 __builtin_crypto_vpmsumb(vector unsigned char __a, vector unsigned char __b) {
   14404   return __builtin_altivec_crypto_vpmsumb(__a, __b);
   14405 }
   14406 
   14407 static __inline__ vector unsigned short __ATTRS_o_ai
   14408 __builtin_crypto_vpmsumb(vector unsigned short __a, vector unsigned short __b) {
   14409   return __builtin_altivec_crypto_vpmsumh(__a, __b);
   14410 }
   14411 
   14412 static __inline__ vector unsigned int __ATTRS_o_ai
   14413 __builtin_crypto_vpmsumb(vector unsigned int __a, vector unsigned int __b) {
   14414   return __builtin_altivec_crypto_vpmsumw(__a, __b);
   14415 }
   14416 
   14417 static __inline__ vector unsigned long long __ATTRS_o_ai
   14418 __builtin_crypto_vpmsumb(vector unsigned long long __a,
   14419                          vector unsigned long long __b) {
   14420   return __builtin_altivec_crypto_vpmsumd(__a, __b);
   14421 }
   14422 
   14423 static __inline__ vector signed char __ATTRS_o_ai
   14424 vec_vgbbd(vector signed char __a) {
   14425   return __builtin_altivec_vgbbd((vector unsigned char)__a);
   14426 }
   14427 
   14428 #define vec_pmsum_be __builtin_crypto_vpmsumb
   14429 #define vec_gb __builtin_altivec_vgbbd
   14430 
   14431 static __inline__ vector unsigned char __ATTRS_o_ai
   14432 vec_vgbbd(vector unsigned char __a) {
   14433   return __builtin_altivec_vgbbd(__a);
   14434 }
   14435 
   14436 static __inline__ vector long long __ATTRS_o_ai
   14437 vec_vbpermq(vector signed char __a, vector signed char __b) {
   14438   return __builtin_altivec_vbpermq((vector unsigned char)__a,
   14439                                    (vector unsigned char)__b);
   14440 }
   14441 
   14442 static __inline__ vector long long __ATTRS_o_ai
   14443 vec_vbpermq(vector unsigned char __a, vector unsigned char __b) {
   14444   return __builtin_altivec_vbpermq(__a, __b);
   14445 }
   14446 
   14447 #ifdef __powerpc64__
   14448 static __inline__ vector unsigned long long __attribute__((__always_inline__))
   14449 vec_bperm(vector unsigned __int128 __a, vector unsigned char __b) {
   14450   return __builtin_altivec_vbpermq((vector unsigned char)__a,
   14451                                    (vector unsigned char)__b);
   14452 }
   14453 #endif
   14454 #endif
   14455 
   14456 #undef __ATTRS_o_ai
   14457 
   14458 #endif /* __ALTIVEC_H */
   14459