Home | History | Annotate | Download | only in include
      1 /*===---- altivec.h - Standard header for type generic math ---------------===*\
      2  *
      3  * Permission is hereby granted, free of charge, to any person obtaining a copy
      4  * of this software and associated documentation files (the "Software"), to deal
      5  * in the Software without restriction, including without limitation the rights
      6  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      7  * copies of the Software, and to permit persons to whom the Software is
      8  * furnished to do so, subject to the following conditions:
      9  *
     10  * The above copyright notice and this permission notice shall be included in
     11  * all copies or substantial portions of the Software.
     12  *
     13  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     14  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     15  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
     16  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     17  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     18  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
     19  * THE SOFTWARE.
     20  *
     21 \*===----------------------------------------------------------------------===*/
     22 
     23 #ifndef __ALTIVEC_H
     24 #define __ALTIVEC_H
     25 
     26 #ifndef __ALTIVEC__
     27 #error "AltiVec support not enabled"
     28 #endif
     29 
     30 /* Constants for mapping CR6 bits to predicate result. */
     31 
     32 #define __CR6_EQ 0
     33 #define __CR6_EQ_REV 1
     34 #define __CR6_LT 2
     35 #define __CR6_LT_REV 3
     36 
     37 /* Constants for vec_test_data_class */
     38 #define __VEC_CLASS_FP_SUBNORMAL_N (1 << 0)
     39 #define __VEC_CLASS_FP_SUBNORMAL_P (1 << 1)
     40 #define __VEC_CLASS_FP_SUBNORMAL (__VEC_CLASS_FP_SUBNORMAL_P | \
     41                                   __VEC_CLASS_FP_SUBNORMAL_N)
     42 #define __VEC_CLASS_FP_ZERO_N (1<<2)
     43 #define __VEC_CLASS_FP_ZERO_P (1<<3)
     44 #define __VEC_CLASS_FP_ZERO (__VEC_CLASS_FP_ZERO_P           | \
     45                              __VEC_CLASS_FP_ZERO_N)
     46 #define __VEC_CLASS_FP_INFINITY_N (1<<4)
     47 #define __VEC_CLASS_FP_INFINITY_P (1<<5)
     48 #define __VEC_CLASS_FP_INFINITY (__VEC_CLASS_FP_INFINITY_P   | \
     49                                  __VEC_CLASS_FP_INFINITY_N)
     50 #define __VEC_CLASS_FP_NAN (1<<6)
     51 #define __VEC_CLASS_FP_NOT_NORMAL (__VEC_CLASS_FP_NAN        | \
     52                                    __VEC_CLASS_FP_SUBNORMAL  | \
     53                                    __VEC_CLASS_FP_ZERO       | \
     54                                    __VEC_CLASS_FP_INFINITY)
     55 
     56 #define __ATTRS_o_ai __attribute__((__overloadable__, __always_inline__))
     57 
     58 #ifdef __POWER9_VECTOR__
     59 #include <stddef.h>
     60 #endif
     61 
     62 static __inline__ vector signed char __ATTRS_o_ai vec_perm(
     63     vector signed char __a, vector signed char __b, vector unsigned char __c);
     64 
     65 static __inline__ vector unsigned char __ATTRS_o_ai
     66 vec_perm(vector unsigned char __a, vector unsigned char __b,
     67          vector unsigned char __c);
     68 
     69 static __inline__ vector bool char __ATTRS_o_ai
     70 vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c);
     71 
     72 static __inline__ vector short __ATTRS_o_ai vec_perm(vector signed short __a,
     73                                                      vector signed short __b,
     74                                                      vector unsigned char __c);
     75 
     76 static __inline__ vector unsigned short __ATTRS_o_ai
     77 vec_perm(vector unsigned short __a, vector unsigned short __b,
     78          vector unsigned char __c);
     79 
     80 static __inline__ vector bool short __ATTRS_o_ai vec_perm(
     81     vector bool short __a, vector bool short __b, vector unsigned char __c);
     82 
     83 static __inline__ vector pixel __ATTRS_o_ai vec_perm(vector pixel __a,
     84                                                      vector pixel __b,
     85                                                      vector unsigned char __c);
     86 
     87 static __inline__ vector int __ATTRS_o_ai vec_perm(vector signed int __a,
     88                                                    vector signed int __b,
     89                                                    vector unsigned char __c);
     90 
     91 static __inline__ vector unsigned int __ATTRS_o_ai vec_perm(
     92     vector unsigned int __a, vector unsigned int __b, vector unsigned char __c);
     93 
     94 static __inline__ vector bool int __ATTRS_o_ai
     95 vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c);
     96 
     97 static __inline__ vector float __ATTRS_o_ai vec_perm(vector float __a,
     98                                                      vector float __b,
     99                                                      vector unsigned char __c);
    100 
    101 #ifdef __VSX__
    102 static __inline__ vector long long __ATTRS_o_ai
    103 vec_perm(vector signed long long __a, vector signed long long __b,
    104          vector unsigned char __c);
    105 
    106 static __inline__ vector unsigned long long __ATTRS_o_ai
    107 vec_perm(vector unsigned long long __a, vector unsigned long long __b,
    108          vector unsigned char __c);
    109 
    110 static __inline__ vector bool long long __ATTRS_o_ai
    111 vec_perm(vector bool long long __a, vector bool long long __b,
    112          vector unsigned char __c);
    113 
    114 static __inline__ vector double __ATTRS_o_ai vec_perm(vector double __a,
    115                                                       vector double __b,
    116                                                       vector unsigned char __c);
    117 #endif
    118 
    119 static __inline__ vector unsigned char __ATTRS_o_ai
    120 vec_xor(vector unsigned char __a, vector unsigned char __b);
    121 
    122 /* vec_abs */
    123 
    124 #define __builtin_altivec_abs_v16qi vec_abs
    125 #define __builtin_altivec_abs_v8hi vec_abs
    126 #define __builtin_altivec_abs_v4si vec_abs
    127 
    128 static __inline__ vector signed char __ATTRS_o_ai
    129 vec_abs(vector signed char __a) {
    130   return __builtin_altivec_vmaxsb(__a, -__a);
    131 }
    132 
    133 static __inline__ vector signed short __ATTRS_o_ai
    134 vec_abs(vector signed short __a) {
    135   return __builtin_altivec_vmaxsh(__a, -__a);
    136 }
    137 
    138 static __inline__ vector signed int __ATTRS_o_ai
    139 vec_abs(vector signed int __a) {
    140   return __builtin_altivec_vmaxsw(__a, -__a);
    141 }
    142 
    143 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
    144 static __inline__ vector signed long long __ATTRS_o_ai
    145 vec_abs(vector signed long long __a) {
    146   return __builtin_altivec_vmaxsd(__a, -__a);
    147 }
    148 #endif
    149 
    150 static __inline__ vector float __ATTRS_o_ai vec_abs(vector float __a) {
    151 #ifdef __VSX__
    152   return __builtin_vsx_xvabssp(__a);
    153 #else
    154   vector unsigned int __res =
    155       (vector unsigned int)__a & (vector unsigned int)(0x7FFFFFFF);
    156   return (vector float)__res;
    157 #endif
    158 }
    159 
    160 #ifdef __VSX__
    161 static __inline__ vector double __ATTRS_o_ai vec_abs(vector double __a) {
    162   return __builtin_vsx_xvabsdp(__a);
    163 }
    164 #endif
    165 
    166 /* vec_abss */
    167 #define __builtin_altivec_abss_v16qi vec_abss
    168 #define __builtin_altivec_abss_v8hi vec_abss
    169 #define __builtin_altivec_abss_v4si vec_abss
    170 
    171 static __inline__ vector signed char __ATTRS_o_ai
    172 vec_abss(vector signed char __a) {
    173   return __builtin_altivec_vmaxsb(
    174       __a, __builtin_altivec_vsubsbs((vector signed char)(0), __a));
    175 }
    176 
    177 static __inline__ vector signed short __ATTRS_o_ai
    178 vec_abss(vector signed short __a) {
    179   return __builtin_altivec_vmaxsh(
    180       __a, __builtin_altivec_vsubshs((vector signed short)(0), __a));
    181 }
    182 
    183 static __inline__ vector signed int __ATTRS_o_ai
    184 vec_abss(vector signed int __a) {
    185   return __builtin_altivec_vmaxsw(
    186       __a, __builtin_altivec_vsubsws((vector signed int)(0), __a));
    187 }
    188 
    189 /* vec_absd */
    190 #if defined(__POWER9_VECTOR__)
    191 
    192 static __inline__ vector unsigned char __ATTRS_o_ai
    193 vec_absd(vector unsigned char __a, vector unsigned char __b) {
    194   return __builtin_altivec_vabsdub(__a, __b);
    195 }
    196 
    197 static __inline__ vector unsigned short __ATTRS_o_ai
    198 vec_absd(vector unsigned short __a, vector unsigned short __b) {
    199   return __builtin_altivec_vabsduh(__a, __b);
    200 }
    201 
    202 static __inline__ vector unsigned int __ATTRS_o_ai
    203 vec_absd(vector unsigned int __a,  vector unsigned int __b) {
    204   return __builtin_altivec_vabsduw(__a, __b);
    205 }
    206 
    207 #endif /* End __POWER9_VECTOR__ */
    208 
    209 /* vec_add */
    210 
    211 static __inline__ vector signed char __ATTRS_o_ai
    212 vec_add(vector signed char __a, vector signed char __b) {
    213   return __a + __b;
    214 }
    215 
    216 static __inline__ vector signed char __ATTRS_o_ai
    217 vec_add(vector bool char __a, vector signed char __b) {
    218   return (vector signed char)__a + __b;
    219 }
    220 
    221 static __inline__ vector signed char __ATTRS_o_ai
    222 vec_add(vector signed char __a, vector bool char __b) {
    223   return __a + (vector signed char)__b;
    224 }
    225 
    226 static __inline__ vector unsigned char __ATTRS_o_ai
    227 vec_add(vector unsigned char __a, vector unsigned char __b) {
    228   return __a + __b;
    229 }
    230 
    231 static __inline__ vector unsigned char __ATTRS_o_ai
    232 vec_add(vector bool char __a, vector unsigned char __b) {
    233   return (vector unsigned char)__a + __b;
    234 }
    235 
    236 static __inline__ vector unsigned char __ATTRS_o_ai
    237 vec_add(vector unsigned char __a, vector bool char __b) {
    238   return __a + (vector unsigned char)__b;
    239 }
    240 
    241 static __inline__ vector short __ATTRS_o_ai vec_add(vector short __a,
    242                                                     vector short __b) {
    243   return __a + __b;
    244 }
    245 
    246 static __inline__ vector short __ATTRS_o_ai vec_add(vector bool short __a,
    247                                                     vector short __b) {
    248   return (vector short)__a + __b;
    249 }
    250 
    251 static __inline__ vector short __ATTRS_o_ai vec_add(vector short __a,
    252                                                     vector bool short __b) {
    253   return __a + (vector short)__b;
    254 }
    255 
    256 static __inline__ vector unsigned short __ATTRS_o_ai
    257 vec_add(vector unsigned short __a, vector unsigned short __b) {
    258   return __a + __b;
    259 }
    260 
    261 static __inline__ vector unsigned short __ATTRS_o_ai
    262 vec_add(vector bool short __a, vector unsigned short __b) {
    263   return (vector unsigned short)__a + __b;
    264 }
    265 
    266 static __inline__ vector unsigned short __ATTRS_o_ai
    267 vec_add(vector unsigned short __a, vector bool short __b) {
    268   return __a + (vector unsigned short)__b;
    269 }
    270 
    271 static __inline__ vector int __ATTRS_o_ai vec_add(vector int __a,
    272                                                   vector int __b) {
    273   return __a + __b;
    274 }
    275 
    276 static __inline__ vector int __ATTRS_o_ai vec_add(vector bool int __a,
    277                                                   vector int __b) {
    278   return (vector int)__a + __b;
    279 }
    280 
    281 static __inline__ vector int __ATTRS_o_ai vec_add(vector int __a,
    282                                                   vector bool int __b) {
    283   return __a + (vector int)__b;
    284 }
    285 
    286 static __inline__ vector unsigned int __ATTRS_o_ai
    287 vec_add(vector unsigned int __a, vector unsigned int __b) {
    288   return __a + __b;
    289 }
    290 
    291 static __inline__ vector unsigned int __ATTRS_o_ai
    292 vec_add(vector bool int __a, vector unsigned int __b) {
    293   return (vector unsigned int)__a + __b;
    294 }
    295 
    296 static __inline__ vector unsigned int __ATTRS_o_ai
    297 vec_add(vector unsigned int __a, vector bool int __b) {
    298   return __a + (vector unsigned int)__b;
    299 }
    300 
    301 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
    302 static __inline__ vector signed long long __ATTRS_o_ai
    303 vec_add(vector signed long long __a, vector signed long long __b) {
    304   return __a + __b;
    305 }
    306 
    307 static __inline__ vector unsigned long long __ATTRS_o_ai
    308 vec_add(vector unsigned long long __a, vector unsigned long long __b) {
    309   return __a + __b;
    310 }
    311 
    312 static __inline__ vector signed __int128 __ATTRS_o_ai
    313 vec_add(vector signed __int128 __a, vector signed __int128 __b) {
    314   return __a + __b;
    315 }
    316 
    317 static __inline__ vector unsigned __int128 __ATTRS_o_ai
    318 vec_add(vector unsigned __int128 __a, vector unsigned __int128 __b) {
    319   return __a + __b;
    320 }
    321 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
    322 
    323 static __inline__ vector float __ATTRS_o_ai vec_add(vector float __a,
    324                                                     vector float __b) {
    325   return __a + __b;
    326 }
    327 
    328 #ifdef __VSX__
    329 static __inline__ vector double __ATTRS_o_ai vec_add(vector double __a,
    330                                                      vector double __b) {
    331   return __a + __b;
    332 }
    333 #endif // __VSX__
    334 
    335 /* vec_adde */
    336 
    337 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
    338 static __inline__ vector signed __int128 __ATTRS_o_ai
    339 vec_adde(vector signed __int128 __a, vector signed __int128 __b,
    340          vector signed __int128 __c) {
    341   return __builtin_altivec_vaddeuqm(__a, __b, __c);
    342 }
    343 
    344 static __inline__ vector unsigned __int128 __ATTRS_o_ai
    345 vec_adde(vector unsigned __int128 __a, vector unsigned __int128 __b,
    346          vector unsigned __int128 __c) {
    347   return __builtin_altivec_vaddeuqm(__a, __b, __c);
    348 }
    349 #endif
    350 
    351 static __inline__ vector signed int __ATTRS_o_ai
    352 vec_adde(vector signed int __a, vector signed int __b,
    353          vector signed int __c) {
    354   vector signed int __mask = {1, 1, 1, 1};
    355   vector signed int __carry = __c & __mask;
    356   return vec_add(vec_add(__a, __b), __carry);
    357 }
    358 
    359 static __inline__ vector unsigned int __ATTRS_o_ai
    360 vec_adde(vector unsigned int __a, vector unsigned int __b,
    361          vector unsigned int __c) {
    362   vector unsigned int __mask = {1, 1, 1, 1};
    363   vector unsigned int __carry = __c & __mask;
    364   return vec_add(vec_add(__a, __b), __carry);
    365 }
    366 
    367 /* vec_addec */
    368 
    369 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
    370 static __inline__ vector signed __int128 __ATTRS_o_ai
    371 vec_addec(vector signed __int128 __a, vector signed __int128 __b,
    372           vector signed __int128 __c) {
    373   return __builtin_altivec_vaddecuq(__a, __b, __c);
    374 }
    375 
    376 static __inline__ vector unsigned __int128 __ATTRS_o_ai
    377 vec_addec(vector unsigned __int128 __a, vector unsigned __int128 __b,
    378           vector unsigned __int128 __c) {
    379   return __builtin_altivec_vaddecuq(__a, __b, __c);
    380 }
    381 
    382 static __inline__ vector signed int __ATTRS_o_ai
    383 vec_addec(vector signed int __a, vector signed int __b,
    384           vector signed int __c) {
    385 
    386   signed int __result[4];
    387   for (int i = 0; i < 4; i++) {
    388     unsigned int __tempa = (unsigned int) __a[i];
    389     unsigned int __tempb = (unsigned int) __b[i];
    390     unsigned int __tempc = (unsigned int) __c[i];
    391     __tempc = __tempc & 0x00000001;
    392     unsigned long long __longa = (unsigned long long) __tempa;
    393     unsigned long long __longb = (unsigned long long) __tempb;
    394     unsigned long long __longc = (unsigned long long) __tempc;
    395     unsigned long long __sum = __longa + __longb + __longc;
    396     unsigned long long __res = (__sum >> 32) & 0x01;
    397     unsigned long long __tempres = (unsigned int) __res;
    398     __result[i] = (signed int) __tempres;
    399   }
    400 
    401   vector signed int ret = { __result[0], __result[1], __result[2], __result[3] };
    402   return ret;
    403 }
    404 
    405 static __inline__ vector unsigned int __ATTRS_o_ai
    406 vec_addec(vector unsigned int __a, vector unsigned int __b,
    407           vector unsigned int __c) {
    408 
    409   unsigned int __result[4];
    410   for (int i = 0; i < 4; i++) {
    411     unsigned int __tempc = __c[i] & 1;
    412     unsigned long long __longa = (unsigned long long) __a[i];
    413     unsigned long long __longb = (unsigned long long) __b[i];
    414     unsigned long long __longc = (unsigned long long) __tempc;
    415     unsigned long long __sum = __longa + __longb + __longc;
    416     unsigned long long __res = (__sum >> 32) & 0x01;
    417     unsigned long long __tempres = (unsigned int) __res;
    418     __result[i] = (signed int) __tempres;
    419   }
    420 
    421   vector unsigned int ret = { __result[0], __result[1], __result[2], __result[3] };
    422   return ret;
    423 }
    424 
    425 #endif
    426 
    427 /* vec_vaddubm */
    428 
    429 #define __builtin_altivec_vaddubm vec_vaddubm
    430 
    431 static __inline__ vector signed char __ATTRS_o_ai
    432 vec_vaddubm(vector signed char __a, vector signed char __b) {
    433   return __a + __b;
    434 }
    435 
    436 static __inline__ vector signed char __ATTRS_o_ai
    437 vec_vaddubm(vector bool char __a, vector signed char __b) {
    438   return (vector signed char)__a + __b;
    439 }
    440 
    441 static __inline__ vector signed char __ATTRS_o_ai
    442 vec_vaddubm(vector signed char __a, vector bool char __b) {
    443   return __a + (vector signed char)__b;
    444 }
    445 
    446 static __inline__ vector unsigned char __ATTRS_o_ai
    447 vec_vaddubm(vector unsigned char __a, vector unsigned char __b) {
    448   return __a + __b;
    449 }
    450 
    451 static __inline__ vector unsigned char __ATTRS_o_ai
    452 vec_vaddubm(vector bool char __a, vector unsigned char __b) {
    453   return (vector unsigned char)__a + __b;
    454 }
    455 
    456 static __inline__ vector unsigned char __ATTRS_o_ai
    457 vec_vaddubm(vector unsigned char __a, vector bool char __b) {
    458   return __a + (vector unsigned char)__b;
    459 }
    460 
    461 /* vec_vadduhm */
    462 
    463 #define __builtin_altivec_vadduhm vec_vadduhm
    464 
    465 static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector short __a,
    466                                                         vector short __b) {
    467   return __a + __b;
    468 }
    469 
    470 static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector bool short __a,
    471                                                         vector short __b) {
    472   return (vector short)__a + __b;
    473 }
    474 
    475 static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector short __a,
    476                                                         vector bool short __b) {
    477   return __a + (vector short)__b;
    478 }
    479 
    480 static __inline__ vector unsigned short __ATTRS_o_ai
    481 vec_vadduhm(vector unsigned short __a, vector unsigned short __b) {
    482   return __a + __b;
    483 }
    484 
    485 static __inline__ vector unsigned short __ATTRS_o_ai
    486 vec_vadduhm(vector bool short __a, vector unsigned short __b) {
    487   return (vector unsigned short)__a + __b;
    488 }
    489 
    490 static __inline__ vector unsigned short __ATTRS_o_ai
    491 vec_vadduhm(vector unsigned short __a, vector bool short __b) {
    492   return __a + (vector unsigned short)__b;
    493 }
    494 
    495 /* vec_vadduwm */
    496 
    497 #define __builtin_altivec_vadduwm vec_vadduwm
    498 
    499 static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector int __a,
    500                                                       vector int __b) {
    501   return __a + __b;
    502 }
    503 
    504 static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector bool int __a,
    505                                                       vector int __b) {
    506   return (vector int)__a + __b;
    507 }
    508 
    509 static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector int __a,
    510                                                       vector bool int __b) {
    511   return __a + (vector int)__b;
    512 }
    513 
    514 static __inline__ vector unsigned int __ATTRS_o_ai
    515 vec_vadduwm(vector unsigned int __a, vector unsigned int __b) {
    516   return __a + __b;
    517 }
    518 
    519 static __inline__ vector unsigned int __ATTRS_o_ai
    520 vec_vadduwm(vector bool int __a, vector unsigned int __b) {
    521   return (vector unsigned int)__a + __b;
    522 }
    523 
    524 static __inline__ vector unsigned int __ATTRS_o_ai
    525 vec_vadduwm(vector unsigned int __a, vector bool int __b) {
    526   return __a + (vector unsigned int)__b;
    527 }
    528 
    529 /* vec_vaddfp */
    530 
    531 #define __builtin_altivec_vaddfp vec_vaddfp
    532 
    533 static __inline__ vector float __attribute__((__always_inline__))
    534 vec_vaddfp(vector float __a, vector float __b) {
    535   return __a + __b;
    536 }
    537 
    538 /* vec_addc */
    539 
    540 static __inline__ vector signed int __ATTRS_o_ai
    541 vec_addc(vector signed int __a, vector signed int __b) {
    542   return (vector signed int)__builtin_altivec_vaddcuw((vector unsigned int)__a,
    543                                                       (vector unsigned int)__b);
    544 }
    545 
    546 static __inline__ vector unsigned int __ATTRS_o_ai
    547 vec_addc(vector unsigned int __a, vector unsigned int __b) {
    548   return __builtin_altivec_vaddcuw(__a, __b);
    549 }
    550 
    551 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
    552 static __inline__ vector signed __int128 __ATTRS_o_ai
    553 vec_addc(vector signed __int128 __a, vector signed __int128 __b) {
    554   return (vector signed __int128)__builtin_altivec_vaddcuq(
    555       (vector unsigned __int128)__a, (vector unsigned __int128)__b);
    556 }
    557 
    558 static __inline__ vector unsigned __int128 __ATTRS_o_ai
    559 vec_addc(vector unsigned __int128 __a, vector unsigned __int128 __b) {
    560   return __builtin_altivec_vaddcuq(__a, __b);
    561 }
    562 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
    563 
    564 /* vec_vaddcuw */
    565 
    566 static __inline__ vector unsigned int __attribute__((__always_inline__))
    567 vec_vaddcuw(vector unsigned int __a, vector unsigned int __b) {
    568   return __builtin_altivec_vaddcuw(__a, __b);
    569 }
    570 
    571 /* vec_adds */
    572 
    573 static __inline__ vector signed char __ATTRS_o_ai
    574 vec_adds(vector signed char __a, vector signed char __b) {
    575   return __builtin_altivec_vaddsbs(__a, __b);
    576 }
    577 
    578 static __inline__ vector signed char __ATTRS_o_ai
    579 vec_adds(vector bool char __a, vector signed char __b) {
    580   return __builtin_altivec_vaddsbs((vector signed char)__a, __b);
    581 }
    582 
    583 static __inline__ vector signed char __ATTRS_o_ai
    584 vec_adds(vector signed char __a, vector bool char __b) {
    585   return __builtin_altivec_vaddsbs(__a, (vector signed char)__b);
    586 }
    587 
    588 static __inline__ vector unsigned char __ATTRS_o_ai
    589 vec_adds(vector unsigned char __a, vector unsigned char __b) {
    590   return __builtin_altivec_vaddubs(__a, __b);
    591 }
    592 
    593 static __inline__ vector unsigned char __ATTRS_o_ai
    594 vec_adds(vector bool char __a, vector unsigned char __b) {
    595   return __builtin_altivec_vaddubs((vector unsigned char)__a, __b);
    596 }
    597 
    598 static __inline__ vector unsigned char __ATTRS_o_ai
    599 vec_adds(vector unsigned char __a, vector bool char __b) {
    600   return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b);
    601 }
    602 
    603 static __inline__ vector short __ATTRS_o_ai vec_adds(vector short __a,
    604                                                      vector short __b) {
    605   return __builtin_altivec_vaddshs(__a, __b);
    606 }
    607 
    608 static __inline__ vector short __ATTRS_o_ai vec_adds(vector bool short __a,
    609                                                      vector short __b) {
    610   return __builtin_altivec_vaddshs((vector short)__a, __b);
    611 }
    612 
    613 static __inline__ vector short __ATTRS_o_ai vec_adds(vector short __a,
    614                                                      vector bool short __b) {
    615   return __builtin_altivec_vaddshs(__a, (vector short)__b);
    616 }
    617 
    618 static __inline__ vector unsigned short __ATTRS_o_ai
    619 vec_adds(vector unsigned short __a, vector unsigned short __b) {
    620   return __builtin_altivec_vadduhs(__a, __b);
    621 }
    622 
    623 static __inline__ vector unsigned short __ATTRS_o_ai
    624 vec_adds(vector bool short __a, vector unsigned short __b) {
    625   return __builtin_altivec_vadduhs((vector unsigned short)__a, __b);
    626 }
    627 
    628 static __inline__ vector unsigned short __ATTRS_o_ai
    629 vec_adds(vector unsigned short __a, vector bool short __b) {
    630   return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b);
    631 }
    632 
    633 static __inline__ vector int __ATTRS_o_ai vec_adds(vector int __a,
    634                                                    vector int __b) {
    635   return __builtin_altivec_vaddsws(__a, __b);
    636 }
    637 
    638 static __inline__ vector int __ATTRS_o_ai vec_adds(vector bool int __a,
    639                                                    vector int __b) {
    640   return __builtin_altivec_vaddsws((vector int)__a, __b);
    641 }
    642 
    643 static __inline__ vector int __ATTRS_o_ai vec_adds(vector int __a,
    644                                                    vector bool int __b) {
    645   return __builtin_altivec_vaddsws(__a, (vector int)__b);
    646 }
    647 
    648 static __inline__ vector unsigned int __ATTRS_o_ai
    649 vec_adds(vector unsigned int __a, vector unsigned int __b) {
    650   return __builtin_altivec_vadduws(__a, __b);
    651 }
    652 
    653 static __inline__ vector unsigned int __ATTRS_o_ai
    654 vec_adds(vector bool int __a, vector unsigned int __b) {
    655   return __builtin_altivec_vadduws((vector unsigned int)__a, __b);
    656 }
    657 
    658 static __inline__ vector unsigned int __ATTRS_o_ai
    659 vec_adds(vector unsigned int __a, vector bool int __b) {
    660   return __builtin_altivec_vadduws(__a, (vector unsigned int)__b);
    661 }
    662 
    663 /* vec_vaddsbs */
    664 
    665 static __inline__ vector signed char __ATTRS_o_ai
    666 vec_vaddsbs(vector signed char __a, vector signed char __b) {
    667   return __builtin_altivec_vaddsbs(__a, __b);
    668 }
    669 
    670 static __inline__ vector signed char __ATTRS_o_ai
    671 vec_vaddsbs(vector bool char __a, vector signed char __b) {
    672   return __builtin_altivec_vaddsbs((vector signed char)__a, __b);
    673 }
    674 
    675 static __inline__ vector signed char __ATTRS_o_ai
    676 vec_vaddsbs(vector signed char __a, vector bool char __b) {
    677   return __builtin_altivec_vaddsbs(__a, (vector signed char)__b);
    678 }
    679 
    680 /* vec_vaddubs */
    681 
    682 static __inline__ vector unsigned char __ATTRS_o_ai
    683 vec_vaddubs(vector unsigned char __a, vector unsigned char __b) {
    684   return __builtin_altivec_vaddubs(__a, __b);
    685 }
    686 
    687 static __inline__ vector unsigned char __ATTRS_o_ai
    688 vec_vaddubs(vector bool char __a, vector unsigned char __b) {
    689   return __builtin_altivec_vaddubs((vector unsigned char)__a, __b);
    690 }
    691 
    692 static __inline__ vector unsigned char __ATTRS_o_ai
    693 vec_vaddubs(vector unsigned char __a, vector bool char __b) {
    694   return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b);
    695 }
    696 
    697 /* vec_vaddshs */
    698 
    699 static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector short __a,
    700                                                         vector short __b) {
    701   return __builtin_altivec_vaddshs(__a, __b);
    702 }
    703 
    704 static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector bool short __a,
    705                                                         vector short __b) {
    706   return __builtin_altivec_vaddshs((vector short)__a, __b);
    707 }
    708 
    709 static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector short __a,
    710                                                         vector bool short __b) {
    711   return __builtin_altivec_vaddshs(__a, (vector short)__b);
    712 }
    713 
    714 /* vec_vadduhs */
    715 
    716 static __inline__ vector unsigned short __ATTRS_o_ai
    717 vec_vadduhs(vector unsigned short __a, vector unsigned short __b) {
    718   return __builtin_altivec_vadduhs(__a, __b);
    719 }
    720 
    721 static __inline__ vector unsigned short __ATTRS_o_ai
    722 vec_vadduhs(vector bool short __a, vector unsigned short __b) {
    723   return __builtin_altivec_vadduhs((vector unsigned short)__a, __b);
    724 }
    725 
    726 static __inline__ vector unsigned short __ATTRS_o_ai
    727 vec_vadduhs(vector unsigned short __a, vector bool short __b) {
    728   return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b);
    729 }
    730 
    731 /* vec_vaddsws */
    732 
    733 static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector int __a,
    734                                                       vector int __b) {
    735   return __builtin_altivec_vaddsws(__a, __b);
    736 }
    737 
    738 static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector bool int __a,
    739                                                       vector int __b) {
    740   return __builtin_altivec_vaddsws((vector int)__a, __b);
    741 }
    742 
    743 static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector int __a,
    744                                                       vector bool int __b) {
    745   return __builtin_altivec_vaddsws(__a, (vector int)__b);
    746 }
    747 
    748 /* vec_vadduws */
    749 
    750 static __inline__ vector unsigned int __ATTRS_o_ai
    751 vec_vadduws(vector unsigned int __a, vector unsigned int __b) {
    752   return __builtin_altivec_vadduws(__a, __b);
    753 }
    754 
    755 static __inline__ vector unsigned int __ATTRS_o_ai
    756 vec_vadduws(vector bool int __a, vector unsigned int __b) {
    757   return __builtin_altivec_vadduws((vector unsigned int)__a, __b);
    758 }
    759 
    760 static __inline__ vector unsigned int __ATTRS_o_ai
    761 vec_vadduws(vector unsigned int __a, vector bool int __b) {
    762   return __builtin_altivec_vadduws(__a, (vector unsigned int)__b);
    763 }
    764 
    765 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
    766 /* vec_vadduqm */
    767 
    768 static __inline__ vector signed __int128 __ATTRS_o_ai
    769 vec_vadduqm(vector signed __int128 __a, vector signed __int128 __b) {
    770   return __a + __b;
    771 }
    772 
    773 static __inline__ vector unsigned __int128 __ATTRS_o_ai
    774 vec_vadduqm(vector unsigned __int128 __a, vector unsigned __int128 __b) {
    775   return __a + __b;
    776 }
    777 
    778 /* vec_vaddeuqm */
    779 
    780 static __inline__ vector signed __int128 __ATTRS_o_ai
    781 vec_vaddeuqm(vector signed __int128 __a, vector signed __int128 __b,
    782              vector signed __int128 __c) {
    783   return __builtin_altivec_vaddeuqm(__a, __b, __c);
    784 }
    785 
    786 static __inline__ vector unsigned __int128 __ATTRS_o_ai
    787 vec_vaddeuqm(vector unsigned __int128 __a, vector unsigned __int128 __b,
    788              vector unsigned __int128 __c) {
    789   return __builtin_altivec_vaddeuqm(__a, __b, __c);
    790 }
    791 
    792 /* vec_vaddcuq */
    793 
    794 static __inline__ vector signed __int128 __ATTRS_o_ai
    795 vec_vaddcuq(vector signed __int128 __a, vector signed __int128 __b) {
    796   return __builtin_altivec_vaddcuq(__a, __b);
    797 }
    798 
    799 static __inline__ vector unsigned __int128 __ATTRS_o_ai
    800 vec_vaddcuq(vector unsigned __int128 __a, vector unsigned __int128 __b) {
    801   return __builtin_altivec_vaddcuq(__a, __b);
    802 }
    803 
    804 /* vec_vaddecuq */
    805 
    806 static __inline__ vector signed __int128 __ATTRS_o_ai
    807 vec_vaddecuq(vector signed __int128 __a, vector signed __int128 __b,
    808              vector signed __int128 __c) {
    809   return __builtin_altivec_vaddecuq(__a, __b, __c);
    810 }
    811 
    812 static __inline__ vector unsigned __int128 __ATTRS_o_ai
    813 vec_vaddecuq(vector unsigned __int128 __a, vector unsigned __int128 __b,
    814              vector unsigned __int128 __c) {
    815   return __builtin_altivec_vaddecuq(__a, __b, __c);
    816 }
    817 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
    818 
    819 /* vec_and */
    820 
    821 #define __builtin_altivec_vand vec_and
    822 
    823 static __inline__ vector signed char __ATTRS_o_ai
    824 vec_and(vector signed char __a, vector signed char __b) {
    825   return __a & __b;
    826 }
    827 
    828 static __inline__ vector signed char __ATTRS_o_ai
    829 vec_and(vector bool char __a, vector signed char __b) {
    830   return (vector signed char)__a & __b;
    831 }
    832 
    833 static __inline__ vector signed char __ATTRS_o_ai
    834 vec_and(vector signed char __a, vector bool char __b) {
    835   return __a & (vector signed char)__b;
    836 }
    837 
    838 static __inline__ vector unsigned char __ATTRS_o_ai
    839 vec_and(vector unsigned char __a, vector unsigned char __b) {
    840   return __a & __b;
    841 }
    842 
    843 static __inline__ vector unsigned char __ATTRS_o_ai
    844 vec_and(vector bool char __a, vector unsigned char __b) {
    845   return (vector unsigned char)__a & __b;
    846 }
    847 
    848 static __inline__ vector unsigned char __ATTRS_o_ai
    849 vec_and(vector unsigned char __a, vector bool char __b) {
    850   return __a & (vector unsigned char)__b;
    851 }
    852 
    853 static __inline__ vector bool char __ATTRS_o_ai vec_and(vector bool char __a,
    854                                                         vector bool char __b) {
    855   return __a & __b;
    856 }
    857 
    858 static __inline__ vector short __ATTRS_o_ai vec_and(vector short __a,
    859                                                     vector short __b) {
    860   return __a & __b;
    861 }
    862 
    863 static __inline__ vector short __ATTRS_o_ai vec_and(vector bool short __a,
    864                                                     vector short __b) {
    865   return (vector short)__a & __b;
    866 }
    867 
    868 static __inline__ vector short __ATTRS_o_ai vec_and(vector short __a,
    869                                                     vector bool short __b) {
    870   return __a & (vector short)__b;
    871 }
    872 
    873 static __inline__ vector unsigned short __ATTRS_o_ai
    874 vec_and(vector unsigned short __a, vector unsigned short __b) {
    875   return __a & __b;
    876 }
    877 
    878 static __inline__ vector unsigned short __ATTRS_o_ai
    879 vec_and(vector bool short __a, vector unsigned short __b) {
    880   return (vector unsigned short)__a & __b;
    881 }
    882 
    883 static __inline__ vector unsigned short __ATTRS_o_ai
    884 vec_and(vector unsigned short __a, vector bool short __b) {
    885   return __a & (vector unsigned short)__b;
    886 }
    887 
    888 static __inline__ vector bool short __ATTRS_o_ai
    889 vec_and(vector bool short __a, vector bool short __b) {
    890   return __a & __b;
    891 }
    892 
    893 static __inline__ vector int __ATTRS_o_ai vec_and(vector int __a,
    894                                                   vector int __b) {
    895   return __a & __b;
    896 }
    897 
    898 static __inline__ vector int __ATTRS_o_ai vec_and(vector bool int __a,
    899                                                   vector int __b) {
    900   return (vector int)__a & __b;
    901 }
    902 
    903 static __inline__ vector int __ATTRS_o_ai vec_and(vector int __a,
    904                                                   vector bool int __b) {
    905   return __a & (vector int)__b;
    906 }
    907 
    908 static __inline__ vector unsigned int __ATTRS_o_ai
    909 vec_and(vector unsigned int __a, vector unsigned int __b) {
    910   return __a & __b;
    911 }
    912 
    913 static __inline__ vector unsigned int __ATTRS_o_ai
    914 vec_and(vector bool int __a, vector unsigned int __b) {
    915   return (vector unsigned int)__a & __b;
    916 }
    917 
    918 static __inline__ vector unsigned int __ATTRS_o_ai
    919 vec_and(vector unsigned int __a, vector bool int __b) {
    920   return __a & (vector unsigned int)__b;
    921 }
    922 
    923 static __inline__ vector bool int __ATTRS_o_ai vec_and(vector bool int __a,
    924                                                        vector bool int __b) {
    925   return __a & __b;
    926 }
    927 
    928 static __inline__ vector float __ATTRS_o_ai vec_and(vector float __a,
    929                                                     vector float __b) {
    930   vector unsigned int __res =
    931       (vector unsigned int)__a & (vector unsigned int)__b;
    932   return (vector float)__res;
    933 }
    934 
    935 static __inline__ vector float __ATTRS_o_ai vec_and(vector bool int __a,
    936                                                     vector float __b) {
    937   vector unsigned int __res =
    938       (vector unsigned int)__a & (vector unsigned int)__b;
    939   return (vector float)__res;
    940 }
    941 
    942 static __inline__ vector float __ATTRS_o_ai vec_and(vector float __a,
    943                                                     vector bool int __b) {
    944   vector unsigned int __res =
    945       (vector unsigned int)__a & (vector unsigned int)__b;
    946   return (vector float)__res;
    947 }
    948 
    949 #ifdef __VSX__
    950 static __inline__ vector double __ATTRS_o_ai vec_and(vector bool long long __a,
    951                                                      vector double __b) {
    952   vector unsigned long long __res =
    953       (vector unsigned long long)__a & (vector unsigned long long)__b;
    954   return (vector double)__res;
    955 }
    956 
    957 static __inline__ vector double __ATTRS_o_ai
    958 vec_and(vector double __a, vector bool long long __b) {
    959   vector unsigned long long __res =
    960       (vector unsigned long long)__a & (vector unsigned long long)__b;
    961   return (vector double)__res;
    962 }
    963 
    964 static __inline__ vector double __ATTRS_o_ai vec_and(vector double __a,
    965                                                      vector double __b) {
    966   vector unsigned long long __res =
    967       (vector unsigned long long)__a & (vector unsigned long long)__b;
    968   return (vector double)__res;
    969 }
    970 
    971 static __inline__ vector signed long long __ATTRS_o_ai
    972 vec_and(vector signed long long __a, vector signed long long __b) {
    973   return __a & __b;
    974 }
    975 
    976 static __inline__ vector signed long long __ATTRS_o_ai
    977 vec_and(vector bool long long __a, vector signed long long __b) {
    978   return (vector signed long long)__a & __b;
    979 }
    980 
    981 static __inline__ vector signed long long __ATTRS_o_ai
    982 vec_and(vector signed long long __a, vector bool long long __b) {
    983   return __a & (vector signed long long)__b;
    984 }
    985 
    986 static __inline__ vector unsigned long long __ATTRS_o_ai
    987 vec_and(vector unsigned long long __a, vector unsigned long long __b) {
    988   return __a & __b;
    989 }
    990 
    991 static __inline__ vector unsigned long long __ATTRS_o_ai
    992 vec_and(vector bool long long __a, vector unsigned long long __b) {
    993   return (vector unsigned long long)__a & __b;
    994 }
    995 
    996 static __inline__ vector unsigned long long __ATTRS_o_ai
    997 vec_and(vector unsigned long long __a, vector bool long long __b) {
    998   return __a & (vector unsigned long long)__b;
    999 }
   1000 
   1001 static __inline__ vector bool long long __ATTRS_o_ai
   1002 vec_and(vector bool long long __a, vector bool long long __b) {
   1003   return __a & __b;
   1004 }
   1005 #endif
   1006 
   1007 /* vec_vand */
   1008 
   1009 static __inline__ vector signed char __ATTRS_o_ai
   1010 vec_vand(vector signed char __a, vector signed char __b) {
   1011   return __a & __b;
   1012 }
   1013 
   1014 static __inline__ vector signed char __ATTRS_o_ai
   1015 vec_vand(vector bool char __a, vector signed char __b) {
   1016   return (vector signed char)__a & __b;
   1017 }
   1018 
   1019 static __inline__ vector signed char __ATTRS_o_ai
   1020 vec_vand(vector signed char __a, vector bool char __b) {
   1021   return __a & (vector signed char)__b;
   1022 }
   1023 
   1024 static __inline__ vector unsigned char __ATTRS_o_ai
   1025 vec_vand(vector unsigned char __a, vector unsigned char __b) {
   1026   return __a & __b;
   1027 }
   1028 
   1029 static __inline__ vector unsigned char __ATTRS_o_ai
   1030 vec_vand(vector bool char __a, vector unsigned char __b) {
   1031   return (vector unsigned char)__a & __b;
   1032 }
   1033 
   1034 static __inline__ vector unsigned char __ATTRS_o_ai
   1035 vec_vand(vector unsigned char __a, vector bool char __b) {
   1036   return __a & (vector unsigned char)__b;
   1037 }
   1038 
   1039 static __inline__ vector bool char __ATTRS_o_ai vec_vand(vector bool char __a,
   1040                                                          vector bool char __b) {
   1041   return __a & __b;
   1042 }
   1043 
   1044 static __inline__ vector short __ATTRS_o_ai vec_vand(vector short __a,
   1045                                                      vector short __b) {
   1046   return __a & __b;
   1047 }
   1048 
   1049 static __inline__ vector short __ATTRS_o_ai vec_vand(vector bool short __a,
   1050                                                      vector short __b) {
   1051   return (vector short)__a & __b;
   1052 }
   1053 
   1054 static __inline__ vector short __ATTRS_o_ai vec_vand(vector short __a,
   1055                                                      vector bool short __b) {
   1056   return __a & (vector short)__b;
   1057 }
   1058 
   1059 static __inline__ vector unsigned short __ATTRS_o_ai
   1060 vec_vand(vector unsigned short __a, vector unsigned short __b) {
   1061   return __a & __b;
   1062 }
   1063 
   1064 static __inline__ vector unsigned short __ATTRS_o_ai
   1065 vec_vand(vector bool short __a, vector unsigned short __b) {
   1066   return (vector unsigned short)__a & __b;
   1067 }
   1068 
   1069 static __inline__ vector unsigned short __ATTRS_o_ai
   1070 vec_vand(vector unsigned short __a, vector bool short __b) {
   1071   return __a & (vector unsigned short)__b;
   1072 }
   1073 
   1074 static __inline__ vector bool short __ATTRS_o_ai
   1075 vec_vand(vector bool short __a, vector bool short __b) {
   1076   return __a & __b;
   1077 }
   1078 
   1079 static __inline__ vector int __ATTRS_o_ai vec_vand(vector int __a,
   1080                                                    vector int __b) {
   1081   return __a & __b;
   1082 }
   1083 
   1084 static __inline__ vector int __ATTRS_o_ai vec_vand(vector bool int __a,
   1085                                                    vector int __b) {
   1086   return (vector int)__a & __b;
   1087 }
   1088 
   1089 static __inline__ vector int __ATTRS_o_ai vec_vand(vector int __a,
   1090                                                    vector bool int __b) {
   1091   return __a & (vector int)__b;
   1092 }
   1093 
   1094 static __inline__ vector unsigned int __ATTRS_o_ai
   1095 vec_vand(vector unsigned int __a, vector unsigned int __b) {
   1096   return __a & __b;
   1097 }
   1098 
   1099 static __inline__ vector unsigned int __ATTRS_o_ai
   1100 vec_vand(vector bool int __a, vector unsigned int __b) {
   1101   return (vector unsigned int)__a & __b;
   1102 }
   1103 
   1104 static __inline__ vector unsigned int __ATTRS_o_ai
   1105 vec_vand(vector unsigned int __a, vector bool int __b) {
   1106   return __a & (vector unsigned int)__b;
   1107 }
   1108 
   1109 static __inline__ vector bool int __ATTRS_o_ai vec_vand(vector bool int __a,
   1110                                                         vector bool int __b) {
   1111   return __a & __b;
   1112 }
   1113 
   1114 static __inline__ vector float __ATTRS_o_ai vec_vand(vector float __a,
   1115                                                      vector float __b) {
   1116   vector unsigned int __res =
   1117       (vector unsigned int)__a & (vector unsigned int)__b;
   1118   return (vector float)__res;
   1119 }
   1120 
   1121 static __inline__ vector float __ATTRS_o_ai vec_vand(vector bool int __a,
   1122                                                      vector float __b) {
   1123   vector unsigned int __res =
   1124       (vector unsigned int)__a & (vector unsigned int)__b;
   1125   return (vector float)__res;
   1126 }
   1127 
   1128 static __inline__ vector float __ATTRS_o_ai vec_vand(vector float __a,
   1129                                                      vector bool int __b) {
   1130   vector unsigned int __res =
   1131       (vector unsigned int)__a & (vector unsigned int)__b;
   1132   return (vector float)__res;
   1133 }
   1134 
   1135 #ifdef __VSX__
   1136 static __inline__ vector signed long long __ATTRS_o_ai
   1137 vec_vand(vector signed long long __a, vector signed long long __b) {
   1138   return __a & __b;
   1139 }
   1140 
   1141 static __inline__ vector signed long long __ATTRS_o_ai
   1142 vec_vand(vector bool long long __a, vector signed long long __b) {
   1143   return (vector signed long long)__a & __b;
   1144 }
   1145 
   1146 static __inline__ vector signed long long __ATTRS_o_ai
   1147 vec_vand(vector signed long long __a, vector bool long long __b) {
   1148   return __a & (vector signed long long)__b;
   1149 }
   1150 
   1151 static __inline__ vector unsigned long long __ATTRS_o_ai
   1152 vec_vand(vector unsigned long long __a, vector unsigned long long __b) {
   1153   return __a & __b;
   1154 }
   1155 
   1156 static __inline__ vector unsigned long long __ATTRS_o_ai
   1157 vec_vand(vector bool long long __a, vector unsigned long long __b) {
   1158   return (vector unsigned long long)__a & __b;
   1159 }
   1160 
   1161 static __inline__ vector unsigned long long __ATTRS_o_ai
   1162 vec_vand(vector unsigned long long __a, vector bool long long __b) {
   1163   return __a & (vector unsigned long long)__b;
   1164 }
   1165 
   1166 static __inline__ vector bool long long __ATTRS_o_ai
   1167 vec_vand(vector bool long long __a, vector bool long long __b) {
   1168   return __a & __b;
   1169 }
   1170 #endif
   1171 
   1172 /* vec_andc */
   1173 
   1174 #define __builtin_altivec_vandc vec_andc
   1175 
   1176 static __inline__ vector signed char __ATTRS_o_ai
   1177 vec_andc(vector signed char __a, vector signed char __b) {
   1178   return __a & ~__b;
   1179 }
   1180 
   1181 static __inline__ vector signed char __ATTRS_o_ai
   1182 vec_andc(vector bool char __a, vector signed char __b) {
   1183   return (vector signed char)__a & ~__b;
   1184 }
   1185 
   1186 static __inline__ vector signed char __ATTRS_o_ai
   1187 vec_andc(vector signed char __a, vector bool char __b) {
   1188   return __a & ~(vector signed char)__b;
   1189 }
   1190 
   1191 static __inline__ vector unsigned char __ATTRS_o_ai
   1192 vec_andc(vector unsigned char __a, vector unsigned char __b) {
   1193   return __a & ~__b;
   1194 }
   1195 
   1196 static __inline__ vector unsigned char __ATTRS_o_ai
   1197 vec_andc(vector bool char __a, vector unsigned char __b) {
   1198   return (vector unsigned char)__a & ~__b;
   1199 }
   1200 
   1201 static __inline__ vector unsigned char __ATTRS_o_ai
   1202 vec_andc(vector unsigned char __a, vector bool char __b) {
   1203   return __a & ~(vector unsigned char)__b;
   1204 }
   1205 
   1206 static __inline__ vector bool char __ATTRS_o_ai vec_andc(vector bool char __a,
   1207                                                          vector bool char __b) {
   1208   return __a & ~__b;
   1209 }
   1210 
   1211 static __inline__ vector short __ATTRS_o_ai vec_andc(vector short __a,
   1212                                                      vector short __b) {
   1213   return __a & ~__b;
   1214 }
   1215 
   1216 static __inline__ vector short __ATTRS_o_ai vec_andc(vector bool short __a,
   1217                                                      vector short __b) {
   1218   return (vector short)__a & ~__b;
   1219 }
   1220 
   1221 static __inline__ vector short __ATTRS_o_ai vec_andc(vector short __a,
   1222                                                      vector bool short __b) {
   1223   return __a & ~(vector short)__b;
   1224 }
   1225 
   1226 static __inline__ vector unsigned short __ATTRS_o_ai
   1227 vec_andc(vector unsigned short __a, vector unsigned short __b) {
   1228   return __a & ~__b;
   1229 }
   1230 
   1231 static __inline__ vector unsigned short __ATTRS_o_ai
   1232 vec_andc(vector bool short __a, vector unsigned short __b) {
   1233   return (vector unsigned short)__a & ~__b;
   1234 }
   1235 
   1236 static __inline__ vector unsigned short __ATTRS_o_ai
   1237 vec_andc(vector unsigned short __a, vector bool short __b) {
   1238   return __a & ~(vector unsigned short)__b;
   1239 }
   1240 
   1241 static __inline__ vector bool short __ATTRS_o_ai
   1242 vec_andc(vector bool short __a, vector bool short __b) {
   1243   return __a & ~__b;
   1244 }
   1245 
   1246 static __inline__ vector int __ATTRS_o_ai vec_andc(vector int __a,
   1247                                                    vector int __b) {
   1248   return __a & ~__b;
   1249 }
   1250 
   1251 static __inline__ vector int __ATTRS_o_ai vec_andc(vector bool int __a,
   1252                                                    vector int __b) {
   1253   return (vector int)__a & ~__b;
   1254 }
   1255 
   1256 static __inline__ vector int __ATTRS_o_ai vec_andc(vector int __a,
   1257                                                    vector bool int __b) {
   1258   return __a & ~(vector int)__b;
   1259 }
   1260 
   1261 static __inline__ vector unsigned int __ATTRS_o_ai
   1262 vec_andc(vector unsigned int __a, vector unsigned int __b) {
   1263   return __a & ~__b;
   1264 }
   1265 
   1266 static __inline__ vector unsigned int __ATTRS_o_ai
   1267 vec_andc(vector bool int __a, vector unsigned int __b) {
   1268   return (vector unsigned int)__a & ~__b;
   1269 }
   1270 
   1271 static __inline__ vector unsigned int __ATTRS_o_ai
   1272 vec_andc(vector unsigned int __a, vector bool int __b) {
   1273   return __a & ~(vector unsigned int)__b;
   1274 }
   1275 
   1276 static __inline__ vector bool int __ATTRS_o_ai vec_andc(vector bool int __a,
   1277                                                         vector bool int __b) {
   1278   return __a & ~__b;
   1279 }
   1280 
   1281 static __inline__ vector float __ATTRS_o_ai vec_andc(vector float __a,
   1282                                                      vector float __b) {
   1283   vector unsigned int __res =
   1284       (vector unsigned int)__a & ~(vector unsigned int)__b;
   1285   return (vector float)__res;
   1286 }
   1287 
   1288 static __inline__ vector float __ATTRS_o_ai vec_andc(vector bool int __a,
   1289                                                      vector float __b) {
   1290   vector unsigned int __res =
   1291       (vector unsigned int)__a & ~(vector unsigned int)__b;
   1292   return (vector float)__res;
   1293 }
   1294 
   1295 static __inline__ vector float __ATTRS_o_ai vec_andc(vector float __a,
   1296                                                      vector bool int __b) {
   1297   vector unsigned int __res =
   1298       (vector unsigned int)__a & ~(vector unsigned int)__b;
   1299   return (vector float)__res;
   1300 }
   1301 
   1302 #ifdef __VSX__
   1303 static __inline__ vector double __ATTRS_o_ai vec_andc(vector bool long long __a,
   1304                                                       vector double __b) {
   1305   vector unsigned long long __res =
   1306       (vector unsigned long long)__a & ~(vector unsigned long long)__b;
   1307   return (vector double)__res;
   1308 }
   1309 
   1310 static __inline__ vector double __ATTRS_o_ai
   1311 vec_andc(vector double __a, vector bool long long __b) {
   1312   vector unsigned long long __res =
   1313       (vector unsigned long long)__a & ~(vector unsigned long long)__b;
   1314   return (vector double)__res;
   1315 }
   1316 
   1317 static __inline__ vector double __ATTRS_o_ai vec_andc(vector double __a,
   1318                                                       vector double __b) {
   1319   vector unsigned long long __res =
   1320       (vector unsigned long long)__a & ~(vector unsigned long long)__b;
   1321   return (vector double)__res;
   1322 }
   1323 
   1324 static __inline__ vector signed long long __ATTRS_o_ai
   1325 vec_andc(vector signed long long __a, vector signed long long __b) {
   1326   return __a & ~__b;
   1327 }
   1328 
   1329 static __inline__ vector signed long long __ATTRS_o_ai
   1330 vec_andc(vector bool long long __a, vector signed long long __b) {
   1331   return (vector signed long long)__a & ~__b;
   1332 }
   1333 
   1334 static __inline__ vector signed long long __ATTRS_o_ai
   1335 vec_andc(vector signed long long __a, vector bool long long __b) {
   1336   return __a & ~(vector signed long long)__b;
   1337 }
   1338 
   1339 static __inline__ vector unsigned long long __ATTRS_o_ai
   1340 vec_andc(vector unsigned long long __a, vector unsigned long long __b) {
   1341   return __a & ~__b;
   1342 }
   1343 
   1344 static __inline__ vector unsigned long long __ATTRS_o_ai
   1345 vec_andc(vector bool long long __a, vector unsigned long long __b) {
   1346   return (vector unsigned long long)__a & ~__b;
   1347 }
   1348 
   1349 static __inline__ vector unsigned long long __ATTRS_o_ai
   1350 vec_andc(vector unsigned long long __a, vector bool long long __b) {
   1351   return __a & ~(vector unsigned long long)__b;
   1352 }
   1353 
   1354 static __inline__ vector bool long long __ATTRS_o_ai
   1355 vec_andc(vector bool long long __a, vector bool long long __b) {
   1356   return __a & ~__b;
   1357 }
   1358 #endif
   1359 
   1360 /* vec_vandc */
   1361 
   1362 static __inline__ vector signed char __ATTRS_o_ai
   1363 vec_vandc(vector signed char __a, vector signed char __b) {
   1364   return __a & ~__b;
   1365 }
   1366 
   1367 static __inline__ vector signed char __ATTRS_o_ai
   1368 vec_vandc(vector bool char __a, vector signed char __b) {
   1369   return (vector signed char)__a & ~__b;
   1370 }
   1371 
   1372 static __inline__ vector signed char __ATTRS_o_ai
   1373 vec_vandc(vector signed char __a, vector bool char __b) {
   1374   return __a & ~(vector signed char)__b;
   1375 }
   1376 
   1377 static __inline__ vector unsigned char __ATTRS_o_ai
   1378 vec_vandc(vector unsigned char __a, vector unsigned char __b) {
   1379   return __a & ~__b;
   1380 }
   1381 
   1382 static __inline__ vector unsigned char __ATTRS_o_ai
   1383 vec_vandc(vector bool char __a, vector unsigned char __b) {
   1384   return (vector unsigned char)__a & ~__b;
   1385 }
   1386 
   1387 static __inline__ vector unsigned char __ATTRS_o_ai
   1388 vec_vandc(vector unsigned char __a, vector bool char __b) {
   1389   return __a & ~(vector unsigned char)__b;
   1390 }
   1391 
   1392 static __inline__ vector bool char __ATTRS_o_ai
   1393 vec_vandc(vector bool char __a, vector bool char __b) {
   1394   return __a & ~__b;
   1395 }
   1396 
   1397 static __inline__ vector short __ATTRS_o_ai vec_vandc(vector short __a,
   1398                                                       vector short __b) {
   1399   return __a & ~__b;
   1400 }
   1401 
   1402 static __inline__ vector short __ATTRS_o_ai vec_vandc(vector bool short __a,
   1403                                                       vector short __b) {
   1404   return (vector short)__a & ~__b;
   1405 }
   1406 
   1407 static __inline__ vector short __ATTRS_o_ai vec_vandc(vector short __a,
   1408                                                       vector bool short __b) {
   1409   return __a & ~(vector short)__b;
   1410 }
   1411 
   1412 static __inline__ vector unsigned short __ATTRS_o_ai
   1413 vec_vandc(vector unsigned short __a, vector unsigned short __b) {
   1414   return __a & ~__b;
   1415 }
   1416 
   1417 static __inline__ vector unsigned short __ATTRS_o_ai
   1418 vec_vandc(vector bool short __a, vector unsigned short __b) {
   1419   return (vector unsigned short)__a & ~__b;
   1420 }
   1421 
   1422 static __inline__ vector unsigned short __ATTRS_o_ai
   1423 vec_vandc(vector unsigned short __a, vector bool short __b) {
   1424   return __a & ~(vector unsigned short)__b;
   1425 }
   1426 
   1427 static __inline__ vector bool short __ATTRS_o_ai
   1428 vec_vandc(vector bool short __a, vector bool short __b) {
   1429   return __a & ~__b;
   1430 }
   1431 
   1432 static __inline__ vector int __ATTRS_o_ai vec_vandc(vector int __a,
   1433                                                     vector int __b) {
   1434   return __a & ~__b;
   1435 }
   1436 
   1437 static __inline__ vector int __ATTRS_o_ai vec_vandc(vector bool int __a,
   1438                                                     vector int __b) {
   1439   return (vector int)__a & ~__b;
   1440 }
   1441 
   1442 static __inline__ vector int __ATTRS_o_ai vec_vandc(vector int __a,
   1443                                                     vector bool int __b) {
   1444   return __a & ~(vector int)__b;
   1445 }
   1446 
   1447 static __inline__ vector unsigned int __ATTRS_o_ai
   1448 vec_vandc(vector unsigned int __a, vector unsigned int __b) {
   1449   return __a & ~__b;
   1450 }
   1451 
   1452 static __inline__ vector unsigned int __ATTRS_o_ai
   1453 vec_vandc(vector bool int __a, vector unsigned int __b) {
   1454   return (vector unsigned int)__a & ~__b;
   1455 }
   1456 
   1457 static __inline__ vector unsigned int __ATTRS_o_ai
   1458 vec_vandc(vector unsigned int __a, vector bool int __b) {
   1459   return __a & ~(vector unsigned int)__b;
   1460 }
   1461 
   1462 static __inline__ vector bool int __ATTRS_o_ai vec_vandc(vector bool int __a,
   1463                                                          vector bool int __b) {
   1464   return __a & ~__b;
   1465 }
   1466 
   1467 static __inline__ vector float __ATTRS_o_ai vec_vandc(vector float __a,
   1468                                                       vector float __b) {
   1469   vector unsigned int __res =
   1470       (vector unsigned int)__a & ~(vector unsigned int)__b;
   1471   return (vector float)__res;
   1472 }
   1473 
   1474 static __inline__ vector float __ATTRS_o_ai vec_vandc(vector bool int __a,
   1475                                                       vector float __b) {
   1476   vector unsigned int __res =
   1477       (vector unsigned int)__a & ~(vector unsigned int)__b;
   1478   return (vector float)__res;
   1479 }
   1480 
   1481 static __inline__ vector float __ATTRS_o_ai vec_vandc(vector float __a,
   1482                                                       vector bool int __b) {
   1483   vector unsigned int __res =
   1484       (vector unsigned int)__a & ~(vector unsigned int)__b;
   1485   return (vector float)__res;
   1486 }
   1487 
   1488 #ifdef __VSX__
   1489 static __inline__ vector signed long long __ATTRS_o_ai
   1490 vec_vandc(vector signed long long __a, vector signed long long __b) {
   1491   return __a & ~__b;
   1492 }
   1493 
   1494 static __inline__ vector signed long long __ATTRS_o_ai
   1495 vec_vandc(vector bool long long __a, vector signed long long __b) {
   1496   return (vector signed long long)__a & ~__b;
   1497 }
   1498 
   1499 static __inline__ vector signed long long __ATTRS_o_ai
   1500 vec_vandc(vector signed long long __a, vector bool long long __b) {
   1501   return __a & ~(vector signed long long)__b;
   1502 }
   1503 
   1504 static __inline__ vector unsigned long long __ATTRS_o_ai
   1505 vec_vandc(vector unsigned long long __a, vector unsigned long long __b) {
   1506   return __a & ~__b;
   1507 }
   1508 
   1509 static __inline__ vector unsigned long long __ATTRS_o_ai
   1510 vec_vandc(vector bool long long __a, vector unsigned long long __b) {
   1511   return (vector unsigned long long)__a & ~__b;
   1512 }
   1513 
   1514 static __inline__ vector unsigned long long __ATTRS_o_ai
   1515 vec_vandc(vector unsigned long long __a, vector bool long long __b) {
   1516   return __a & ~(vector unsigned long long)__b;
   1517 }
   1518 
   1519 static __inline__ vector bool long long __ATTRS_o_ai
   1520 vec_vandc(vector bool long long __a, vector bool long long __b) {
   1521   return __a & ~__b;
   1522 }
   1523 #endif
   1524 
   1525 /* vec_avg */
   1526 
   1527 static __inline__ vector signed char __ATTRS_o_ai
   1528 vec_avg(vector signed char __a, vector signed char __b) {
   1529   return __builtin_altivec_vavgsb(__a, __b);
   1530 }
   1531 
   1532 static __inline__ vector unsigned char __ATTRS_o_ai
   1533 vec_avg(vector unsigned char __a, vector unsigned char __b) {
   1534   return __builtin_altivec_vavgub(__a, __b);
   1535 }
   1536 
   1537 static __inline__ vector short __ATTRS_o_ai vec_avg(vector short __a,
   1538                                                     vector short __b) {
   1539   return __builtin_altivec_vavgsh(__a, __b);
   1540 }
   1541 
   1542 static __inline__ vector unsigned short __ATTRS_o_ai
   1543 vec_avg(vector unsigned short __a, vector unsigned short __b) {
   1544   return __builtin_altivec_vavguh(__a, __b);
   1545 }
   1546 
   1547 static __inline__ vector int __ATTRS_o_ai vec_avg(vector int __a,
   1548                                                   vector int __b) {
   1549   return __builtin_altivec_vavgsw(__a, __b);
   1550 }
   1551 
   1552 static __inline__ vector unsigned int __ATTRS_o_ai
   1553 vec_avg(vector unsigned int __a, vector unsigned int __b) {
   1554   return __builtin_altivec_vavguw(__a, __b);
   1555 }
   1556 
   1557 /* vec_vavgsb */
   1558 
   1559 static __inline__ vector signed char __attribute__((__always_inline__))
   1560 vec_vavgsb(vector signed char __a, vector signed char __b) {
   1561   return __builtin_altivec_vavgsb(__a, __b);
   1562 }
   1563 
   1564 /* vec_vavgub */
   1565 
   1566 static __inline__ vector unsigned char __attribute__((__always_inline__))
   1567 vec_vavgub(vector unsigned char __a, vector unsigned char __b) {
   1568   return __builtin_altivec_vavgub(__a, __b);
   1569 }
   1570 
   1571 /* vec_vavgsh */
   1572 
   1573 static __inline__ vector short __attribute__((__always_inline__))
   1574 vec_vavgsh(vector short __a, vector short __b) {
   1575   return __builtin_altivec_vavgsh(__a, __b);
   1576 }
   1577 
   1578 /* vec_vavguh */
   1579 
   1580 static __inline__ vector unsigned short __attribute__((__always_inline__))
   1581 vec_vavguh(vector unsigned short __a, vector unsigned short __b) {
   1582   return __builtin_altivec_vavguh(__a, __b);
   1583 }
   1584 
   1585 /* vec_vavgsw */
   1586 
   1587 static __inline__ vector int __attribute__((__always_inline__))
   1588 vec_vavgsw(vector int __a, vector int __b) {
   1589   return __builtin_altivec_vavgsw(__a, __b);
   1590 }
   1591 
   1592 /* vec_vavguw */
   1593 
   1594 static __inline__ vector unsigned int __attribute__((__always_inline__))
   1595 vec_vavguw(vector unsigned int __a, vector unsigned int __b) {
   1596   return __builtin_altivec_vavguw(__a, __b);
   1597 }
   1598 
   1599 /* vec_ceil */
   1600 
   1601 static __inline__ vector float __ATTRS_o_ai vec_ceil(vector float __a) {
   1602 #ifdef __VSX__
   1603   return __builtin_vsx_xvrspip(__a);
   1604 #else
   1605   return __builtin_altivec_vrfip(__a);
   1606 #endif
   1607 }
   1608 
   1609 #ifdef __VSX__
   1610 static __inline__ vector double __ATTRS_o_ai vec_ceil(vector double __a) {
   1611   return __builtin_vsx_xvrdpip(__a);
   1612 }
   1613 #endif
   1614 
   1615 /* vec_vrfip */
   1616 
   1617 static __inline__ vector float __attribute__((__always_inline__))
   1618 vec_vrfip(vector float __a) {
   1619   return __builtin_altivec_vrfip(__a);
   1620 }
   1621 
   1622 /* vec_cmpb */
   1623 
   1624 static __inline__ vector int __attribute__((__always_inline__))
   1625 vec_cmpb(vector float __a, vector float __b) {
   1626   return __builtin_altivec_vcmpbfp(__a, __b);
   1627 }
   1628 
   1629 /* vec_vcmpbfp */
   1630 
   1631 static __inline__ vector int __attribute__((__always_inline__))
   1632 vec_vcmpbfp(vector float __a, vector float __b) {
   1633   return __builtin_altivec_vcmpbfp(__a, __b);
   1634 }
   1635 
   1636 /* vec_cmpeq */
   1637 
   1638 static __inline__ vector bool char __ATTRS_o_ai
   1639 vec_cmpeq(vector signed char __a, vector signed char __b) {
   1640   return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a,
   1641                                                       (vector char)__b);
   1642 }
   1643 
   1644 static __inline__ vector bool char __ATTRS_o_ai
   1645 vec_cmpeq(vector unsigned char __a, vector unsigned char __b) {
   1646   return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a,
   1647                                                       (vector char)__b);
   1648 }
   1649 
   1650 static __inline__ vector bool char __ATTRS_o_ai
   1651 vec_cmpeq(vector bool char __a, vector bool char __b) {
   1652   return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a,
   1653                                                       (vector char)__b);
   1654 }
   1655 
   1656 static __inline__ vector bool short __ATTRS_o_ai vec_cmpeq(vector short __a,
   1657                                                            vector short __b) {
   1658   return (vector bool short)__builtin_altivec_vcmpequh(__a, __b);
   1659 }
   1660 
   1661 static __inline__ vector bool short __ATTRS_o_ai
   1662 vec_cmpeq(vector unsigned short __a, vector unsigned short __b) {
   1663   return (vector bool short)__builtin_altivec_vcmpequh((vector short)__a,
   1664                                                        (vector short)__b);
   1665 }
   1666 
   1667 static __inline__ vector bool short __ATTRS_o_ai
   1668 vec_cmpeq(vector bool short __a, vector bool short __b) {
   1669   return (vector bool short)__builtin_altivec_vcmpequh((vector short)__a,
   1670                                                        (vector short)__b);
   1671 }
   1672 
   1673 static __inline__ vector bool int __ATTRS_o_ai vec_cmpeq(vector int __a,
   1674                                                          vector int __b) {
   1675   return (vector bool int)__builtin_altivec_vcmpequw(__a, __b);
   1676 }
   1677 
   1678 static __inline__ vector bool int __ATTRS_o_ai
   1679 vec_cmpeq(vector unsigned int __a, vector unsigned int __b) {
   1680   return (vector bool int)__builtin_altivec_vcmpequw((vector int)__a,
   1681                                                      (vector int)__b);
   1682 }
   1683 
   1684 static __inline__ vector bool int __ATTRS_o_ai vec_cmpeq(vector bool int __a,
   1685                                                          vector bool int __b) {
   1686   return (vector bool int)__builtin_altivec_vcmpequw((vector int)__a,
   1687                                                      (vector int)__b);
   1688 }
   1689 
   1690 #ifdef __POWER8_VECTOR__
   1691 static __inline__ vector bool long long __ATTRS_o_ai
   1692 vec_cmpeq(vector signed long long __a, vector signed long long __b) {
   1693   return (vector bool long long)__builtin_altivec_vcmpequd(__a, __b);
   1694 }
   1695 
   1696 static __inline__ vector bool long long __ATTRS_o_ai
   1697 vec_cmpeq(vector unsigned long long __a, vector unsigned long long __b) {
   1698   return (vector bool long long)__builtin_altivec_vcmpequd(
   1699       (vector long long)__a, (vector long long)__b);
   1700 }
   1701 
   1702 static __inline__ vector bool long long __ATTRS_o_ai
   1703 vec_cmpeq(vector bool long long __a, vector bool long long __b) {
   1704   return (vector bool long long)__builtin_altivec_vcmpequd(
   1705       (vector long long)__a, (vector long long)__b);
   1706 }
   1707 
   1708 #endif
   1709 
   1710 static __inline__ vector bool int __ATTRS_o_ai vec_cmpeq(vector float __a,
   1711                                                          vector float __b) {
   1712 #ifdef __VSX__
   1713   return (vector bool int)__builtin_vsx_xvcmpeqsp(__a, __b);
   1714 #else
   1715   return (vector bool int)__builtin_altivec_vcmpeqfp(__a, __b);
   1716 #endif
   1717 }
   1718 
   1719 #ifdef __VSX__
   1720 static __inline__ vector bool long long __ATTRS_o_ai
   1721 vec_cmpeq(vector double __a, vector double __b) {
   1722   return (vector bool long long)__builtin_vsx_xvcmpeqdp(__a, __b);
   1723 }
   1724 #endif
   1725 
   1726 #ifdef __POWER9_VECTOR__
   1727 /* vec_cmpne */
   1728 
   1729 static __inline__ vector bool char __ATTRS_o_ai
   1730 vec_cmpne(vector bool char __a, vector bool char __b) {
   1731   return (vector bool char)__builtin_altivec_vcmpneb((vector char)__a,
   1732                                                      (vector char)__b);
   1733 }
   1734 
   1735 static __inline__ vector bool char __ATTRS_o_ai
   1736 vec_cmpne(vector signed char __a, vector signed char __b) {
   1737   return (vector bool char)__builtin_altivec_vcmpneb((vector char)__a,
   1738                                                      (vector char)__b);
   1739 }
   1740 
   1741 static __inline__ vector bool char __ATTRS_o_ai
   1742 vec_cmpne(vector unsigned char __a, vector unsigned char __b) {
   1743   return (vector bool char)__builtin_altivec_vcmpneb((vector char)__a,
   1744                                                      (vector char)__b);
   1745 }
   1746 
   1747 static __inline__ vector bool short __ATTRS_o_ai
   1748 vec_cmpne(vector bool short __a, vector bool short __b) {
   1749   return (vector bool short)__builtin_altivec_vcmpneh((vector short)__a,
   1750                                                       (vector short)__b);
   1751 }
   1752 
   1753 static __inline__ vector bool short __ATTRS_o_ai
   1754 vec_cmpne(vector signed short __a, vector signed short __b) {
   1755   return (vector bool short)__builtin_altivec_vcmpneh((vector short)__a,
   1756                                                       (vector short)__b);
   1757 }
   1758 
   1759 static __inline__ vector bool short __ATTRS_o_ai
   1760 vec_cmpne(vector unsigned short __a, vector unsigned short __b) {
   1761   return (vector bool short)__builtin_altivec_vcmpneh((vector short)__a,
   1762                                                       (vector short)__b);
   1763 }
   1764 
   1765 static __inline__ vector bool int __ATTRS_o_ai
   1766 vec_cmpne(vector bool int __a, vector bool int __b) {
   1767   return (vector bool int)__builtin_altivec_vcmpnew((vector int)__a,
   1768                                                     (vector int)__b);
   1769 }
   1770 
   1771 static __inline__ vector bool int __ATTRS_o_ai
   1772 vec_cmpne(vector signed int __a, vector signed int __b) {
   1773   return (vector bool int)__builtin_altivec_vcmpnew((vector int)__a,
   1774                                                     (vector int)__b);
   1775 }
   1776 
   1777 static __inline__ vector bool int __ATTRS_o_ai
   1778 vec_cmpne(vector unsigned int __a, vector unsigned int __b) {
   1779   return (vector bool int)__builtin_altivec_vcmpnew((vector int)__a,
   1780                                                     (vector int)__b);
   1781 }
   1782 
   1783 static __inline__ vector bool long long __ATTRS_o_ai
   1784 vec_cmpne(vector bool long long __a, vector bool long long __b) {
   1785   return (vector bool long long)
   1786     ~(__builtin_altivec_vcmpequd((vector long long)__a, (vector long long)__b));
   1787 }
   1788 
   1789 static __inline__ vector bool long long __ATTRS_o_ai
   1790 vec_cmpne(vector signed long long __a, vector signed long long __b) {
   1791   return (vector bool long long)
   1792     ~(__builtin_altivec_vcmpequd((vector long long)__a, (vector long long)__b));
   1793 }
   1794 
   1795 static __inline__ vector bool long long __ATTRS_o_ai
   1796 vec_cmpne(vector unsigned long long __a, vector unsigned long long __b) {
   1797   return (vector bool long long)
   1798     ~(__builtin_altivec_vcmpequd((vector long long)__a, (vector long long)__b));
   1799 }
   1800 
   1801 static __inline__ vector bool int __ATTRS_o_ai
   1802 vec_cmpne(vector float __a, vector float __b) {
   1803   return (vector bool int)__builtin_altivec_vcmpnew((vector int)__a,
   1804                                                     (vector int)__b);
   1805 }
   1806 
   1807 static __inline__ vector bool long long __ATTRS_o_ai
   1808 vec_cmpne(vector double __a, vector double __b) {
   1809   return (vector bool long long)
   1810     ~(__builtin_altivec_vcmpequd((vector long long)__a, (vector long long)__b));
   1811 }
   1812 
   1813 /* vec_cmpnez */
   1814 
   1815 static __inline__ vector bool char __ATTRS_o_ai
   1816 vec_cmpnez(vector signed char __a, vector signed char __b) {
   1817   return (vector bool char)__builtin_altivec_vcmpnezb((vector char)__a,
   1818                                                       (vector char)__b);
   1819 }
   1820 
   1821 static __inline__ vector bool char __ATTRS_o_ai
   1822 vec_cmpnez(vector unsigned char __a, vector unsigned char __b) {
   1823   return (vector bool char)__builtin_altivec_vcmpnezb((vector char)__a,
   1824                                                       (vector char)__b);
   1825 }
   1826 
   1827 static __inline__ vector bool short __ATTRS_o_ai
   1828 vec_cmpnez(vector signed short __a, vector signed short __b) {
   1829   return (vector bool short)__builtin_altivec_vcmpnezh((vector short)__a,
   1830                                                        (vector short)__b);
   1831 }
   1832 
   1833 static __inline__ vector bool short __ATTRS_o_ai
   1834 vec_cmpnez(vector unsigned short __a, vector unsigned short __b) {
   1835   return (vector bool short)__builtin_altivec_vcmpnezh((vector short)__a,
   1836                                                        (vector short)__b);
   1837 }
   1838 
   1839 static __inline__ vector bool int __ATTRS_o_ai
   1840 vec_cmpnez(vector signed int __a, vector signed int __b) {
   1841   return (vector bool int)__builtin_altivec_vcmpnezw((vector int)__a,
   1842                                                      (vector int)__b);
   1843 }
   1844 
   1845 static __inline__ vector bool int __ATTRS_o_ai
   1846 vec_cmpnez(vector unsigned int __a, vector unsigned int __b) {
   1847   return (vector bool int)__builtin_altivec_vcmpnezw((vector int)__a,
   1848                                                      (vector int)__b);
   1849 }
   1850 
   1851 static __inline__ signed int __ATTRS_o_ai
   1852 vec_cntlz_lsbb(vector signed char __a) {
   1853 #ifdef __LITTLE_ENDIAN__
   1854   return __builtin_altivec_vctzlsbb(__a);
   1855 #else
   1856   return __builtin_altivec_vclzlsbb(__a);
   1857 #endif
   1858 }
   1859 
   1860 static __inline__ signed int __ATTRS_o_ai
   1861 vec_cntlz_lsbb(vector unsigned char __a) {
   1862 #ifdef __LITTLE_ENDIAN__
   1863   return __builtin_altivec_vctzlsbb(__a);
   1864 #else
   1865   return __builtin_altivec_vclzlsbb(__a);
   1866 #endif
   1867 }
   1868 
   1869 static __inline__ signed int __ATTRS_o_ai
   1870 vec_cnttz_lsbb(vector signed char __a) {
   1871 #ifdef __LITTLE_ENDIAN__
   1872   return __builtin_altivec_vclzlsbb(__a);
   1873 #else
   1874   return __builtin_altivec_vctzlsbb(__a);
   1875 #endif
   1876 }
   1877 
   1878 static __inline__ signed int __ATTRS_o_ai
   1879 vec_cnttz_lsbb(vector unsigned char __a) {
   1880 #ifdef __LITTLE_ENDIAN__
   1881   return __builtin_altivec_vclzlsbb(__a);
   1882 #else
   1883   return __builtin_altivec_vctzlsbb(__a);
   1884 #endif
   1885 }
   1886 
   1887 static __inline__ vector unsigned int __ATTRS_o_ai
   1888 vec_parity_lsbb(vector unsigned int __a) {
   1889   return __builtin_altivec_vprtybw(__a);
   1890 }
   1891 
   1892 static __inline__ vector unsigned int __ATTRS_o_ai
   1893 vec_parity_lsbb(vector signed int __a) {
   1894   return __builtin_altivec_vprtybw(__a);
   1895 }
   1896 
   1897 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   1898 vec_parity_lsbb(vector unsigned __int128 __a) {
   1899   return __builtin_altivec_vprtybq(__a);
   1900 }
   1901 
   1902 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   1903 vec_parity_lsbb(vector signed __int128 __a) {
   1904   return __builtin_altivec_vprtybq(__a);
   1905 }
   1906 
   1907 static __inline__ vector unsigned long long __ATTRS_o_ai
   1908 vec_parity_lsbb(vector unsigned long long __a) {
   1909   return __builtin_altivec_vprtybd(__a);
   1910 }
   1911 
   1912 static __inline__ vector unsigned long long __ATTRS_o_ai
   1913 vec_parity_lsbb(vector signed long long __a) {
   1914   return __builtin_altivec_vprtybd(__a);
   1915 }
   1916 
   1917 #endif
   1918 
   1919 /* vec_cmpgt */
   1920 
   1921 static __inline__ vector bool char __ATTRS_o_ai
   1922 vec_cmpgt(vector signed char __a, vector signed char __b) {
   1923   return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
   1924 }
   1925 
   1926 static __inline__ vector bool char __ATTRS_o_ai
   1927 vec_cmpgt(vector unsigned char __a, vector unsigned char __b) {
   1928   return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
   1929 }
   1930 
   1931 static __inline__ vector bool short __ATTRS_o_ai vec_cmpgt(vector short __a,
   1932                                                            vector short __b) {
   1933   return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
   1934 }
   1935 
   1936 static __inline__ vector bool short __ATTRS_o_ai
   1937 vec_cmpgt(vector unsigned short __a, vector unsigned short __b) {
   1938   return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
   1939 }
   1940 
   1941 static __inline__ vector bool int __ATTRS_o_ai vec_cmpgt(vector int __a,
   1942                                                          vector int __b) {
   1943   return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
   1944 }
   1945 
   1946 static __inline__ vector bool int __ATTRS_o_ai
   1947 vec_cmpgt(vector unsigned int __a, vector unsigned int __b) {
   1948   return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
   1949 }
   1950 
   1951 #ifdef __POWER8_VECTOR__
   1952 static __inline__ vector bool long long __ATTRS_o_ai
   1953 vec_cmpgt(vector signed long long __a, vector signed long long __b) {
   1954   return (vector bool long long)__builtin_altivec_vcmpgtsd(__a, __b);
   1955 }
   1956 
   1957 static __inline__ vector bool long long __ATTRS_o_ai
   1958 vec_cmpgt(vector unsigned long long __a, vector unsigned long long __b) {
   1959   return (vector bool long long)__builtin_altivec_vcmpgtud(__a, __b);
   1960 }
   1961 #endif
   1962 
   1963 static __inline__ vector bool int __ATTRS_o_ai vec_cmpgt(vector float __a,
   1964                                                          vector float __b) {
   1965 #ifdef __VSX__
   1966   return (vector bool int)__builtin_vsx_xvcmpgtsp(__a, __b);
   1967 #else
   1968   return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
   1969 #endif
   1970 }
   1971 
   1972 #ifdef __VSX__
   1973 static __inline__ vector bool long long __ATTRS_o_ai
   1974 vec_cmpgt(vector double __a, vector double __b) {
   1975   return (vector bool long long)__builtin_vsx_xvcmpgtdp(__a, __b);
   1976 }
   1977 #endif
   1978 
   1979 /* vec_cmpge */
   1980 
   1981 static __inline__ vector bool char __ATTRS_o_ai
   1982 vec_cmpge(vector signed char __a, vector signed char __b) {
   1983   return ~(vec_cmpgt(__b, __a));
   1984 }
   1985 
   1986 static __inline__ vector bool char __ATTRS_o_ai
   1987 vec_cmpge(vector unsigned char __a, vector unsigned char __b) {
   1988   return ~(vec_cmpgt(__b, __a));
   1989 }
   1990 
   1991 static __inline__ vector bool short __ATTRS_o_ai
   1992 vec_cmpge(vector signed short __a, vector signed short __b) {
   1993   return ~(vec_cmpgt(__b, __a));
   1994 }
   1995 
   1996 static __inline__ vector bool short __ATTRS_o_ai
   1997 vec_cmpge(vector unsigned short __a, vector unsigned short __b) {
   1998   return ~(vec_cmpgt(__b, __a));
   1999 }
   2000 
   2001 static __inline__ vector bool int __ATTRS_o_ai
   2002 vec_cmpge(vector signed int __a, vector signed int __b) {
   2003   return ~(vec_cmpgt(__b, __a));
   2004 }
   2005 
   2006 static __inline__ vector bool int __ATTRS_o_ai
   2007 vec_cmpge(vector unsigned int __a, vector unsigned int __b) {
   2008   return ~(vec_cmpgt(__b, __a));
   2009 }
   2010 
   2011 static __inline__ vector bool int __ATTRS_o_ai vec_cmpge(vector float __a,
   2012                                                          vector float __b) {
   2013 #ifdef __VSX__
   2014   return (vector bool int)__builtin_vsx_xvcmpgesp(__a, __b);
   2015 #else
   2016   return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
   2017 #endif
   2018 }
   2019 
   2020 #ifdef __VSX__
   2021 static __inline__ vector bool long long __ATTRS_o_ai
   2022 vec_cmpge(vector double __a, vector double __b) {
   2023   return (vector bool long long)__builtin_vsx_xvcmpgedp(__a, __b);
   2024 }
   2025 #endif
   2026 
   2027 #ifdef __POWER8_VECTOR__
   2028 static __inline__ vector bool long long __ATTRS_o_ai
   2029 vec_cmpge(vector signed long long __a, vector signed long long __b) {
   2030   return ~(vec_cmpgt(__b, __a));
   2031 }
   2032 
   2033 static __inline__ vector bool long long __ATTRS_o_ai
   2034 vec_cmpge(vector unsigned long long __a, vector unsigned long long __b) {
   2035   return ~(vec_cmpgt(__b, __a));
   2036 }
   2037 #endif
   2038 
   2039 /* vec_vcmpgefp */
   2040 
   2041 static __inline__ vector bool int __attribute__((__always_inline__))
   2042 vec_vcmpgefp(vector float __a, vector float __b) {
   2043   return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
   2044 }
   2045 
   2046 /* vec_vcmpgtsb */
   2047 
   2048 static __inline__ vector bool char __attribute__((__always_inline__))
   2049 vec_vcmpgtsb(vector signed char __a, vector signed char __b) {
   2050   return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
   2051 }
   2052 
   2053 /* vec_vcmpgtub */
   2054 
   2055 static __inline__ vector bool char __attribute__((__always_inline__))
   2056 vec_vcmpgtub(vector unsigned char __a, vector unsigned char __b) {
   2057   return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
   2058 }
   2059 
   2060 /* vec_vcmpgtsh */
   2061 
   2062 static __inline__ vector bool short __attribute__((__always_inline__))
   2063 vec_vcmpgtsh(vector short __a, vector short __b) {
   2064   return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
   2065 }
   2066 
   2067 /* vec_vcmpgtuh */
   2068 
   2069 static __inline__ vector bool short __attribute__((__always_inline__))
   2070 vec_vcmpgtuh(vector unsigned short __a, vector unsigned short __b) {
   2071   return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
   2072 }
   2073 
   2074 /* vec_vcmpgtsw */
   2075 
   2076 static __inline__ vector bool int __attribute__((__always_inline__))
   2077 vec_vcmpgtsw(vector int __a, vector int __b) {
   2078   return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
   2079 }
   2080 
   2081 /* vec_vcmpgtuw */
   2082 
   2083 static __inline__ vector bool int __attribute__((__always_inline__))
   2084 vec_vcmpgtuw(vector unsigned int __a, vector unsigned int __b) {
   2085   return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
   2086 }
   2087 
   2088 /* vec_vcmpgtfp */
   2089 
   2090 static __inline__ vector bool int __attribute__((__always_inline__))
   2091 vec_vcmpgtfp(vector float __a, vector float __b) {
   2092   return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
   2093 }
   2094 
   2095 /* vec_cmple */
   2096 
   2097 static __inline__ vector bool char __ATTRS_o_ai
   2098 vec_cmple(vector signed char __a, vector signed char __b) {
   2099   return vec_cmpge(__b, __a);
   2100 }
   2101 
   2102 static __inline__ vector bool char __ATTRS_o_ai
   2103 vec_cmple(vector unsigned char __a, vector unsigned char __b) {
   2104   return vec_cmpge(__b, __a);
   2105 }
   2106 
   2107 static __inline__ vector bool short __ATTRS_o_ai
   2108 vec_cmple(vector signed short __a, vector signed short __b) {
   2109   return vec_cmpge(__b, __a);
   2110 }
   2111 
   2112 static __inline__ vector bool short __ATTRS_o_ai
   2113 vec_cmple(vector unsigned short __a, vector unsigned short __b) {
   2114   return vec_cmpge(__b, __a);
   2115 }
   2116 
   2117 static __inline__ vector bool int __ATTRS_o_ai
   2118 vec_cmple(vector signed int __a, vector signed int __b) {
   2119   return vec_cmpge(__b, __a);
   2120 }
   2121 
   2122 static __inline__ vector bool int __ATTRS_o_ai
   2123 vec_cmple(vector unsigned int __a, vector unsigned int __b) {
   2124   return vec_cmpge(__b, __a);
   2125 }
   2126 
   2127 static __inline__ vector bool int __ATTRS_o_ai vec_cmple(vector float __a,
   2128                                                          vector float __b) {
   2129   return vec_cmpge(__b, __a);
   2130 }
   2131 
   2132 #ifdef __VSX__
   2133 static __inline__ vector bool long long __ATTRS_o_ai
   2134 vec_cmple(vector double __a, vector double __b) {
   2135   return vec_cmpge(__b, __a);
   2136 }
   2137 #endif
   2138 
   2139 #ifdef __POWER8_VECTOR__
   2140 static __inline__ vector bool long long __ATTRS_o_ai
   2141 vec_cmple(vector signed long long __a, vector signed long long __b) {
   2142   return vec_cmpge(__b, __a);
   2143 }
   2144 
   2145 static __inline__ vector bool long long __ATTRS_o_ai
   2146 vec_cmple(vector unsigned long long __a, vector unsigned long long __b) {
   2147   return vec_cmpge(__b, __a);
   2148 }
   2149 #endif
   2150 
   2151 /* vec_cmplt */
   2152 
   2153 static __inline__ vector bool char __ATTRS_o_ai
   2154 vec_cmplt(vector signed char __a, vector signed char __b) {
   2155   return vec_cmpgt(__b, __a);
   2156 }
   2157 
   2158 static __inline__ vector bool char __ATTRS_o_ai
   2159 vec_cmplt(vector unsigned char __a, vector unsigned char __b) {
   2160   return vec_cmpgt(__b, __a);
   2161 }
   2162 
   2163 static __inline__ vector bool short __ATTRS_o_ai vec_cmplt(vector short __a,
   2164                                                            vector short __b) {
   2165   return vec_cmpgt(__b, __a);
   2166 }
   2167 
   2168 static __inline__ vector bool short __ATTRS_o_ai
   2169 vec_cmplt(vector unsigned short __a, vector unsigned short __b) {
   2170   return vec_cmpgt(__b, __a);
   2171 }
   2172 
   2173 static __inline__ vector bool int __ATTRS_o_ai vec_cmplt(vector int __a,
   2174                                                          vector int __b) {
   2175   return vec_cmpgt(__b, __a);
   2176 }
   2177 
   2178 static __inline__ vector bool int __ATTRS_o_ai
   2179 vec_cmplt(vector unsigned int __a, vector unsigned int __b) {
   2180   return vec_cmpgt(__b, __a);
   2181 }
   2182 
   2183 static __inline__ vector bool int __ATTRS_o_ai vec_cmplt(vector float __a,
   2184                                                          vector float __b) {
   2185   return vec_cmpgt(__b, __a);
   2186 }
   2187 
   2188 #ifdef __VSX__
   2189 static __inline__ vector bool long long __ATTRS_o_ai
   2190 vec_cmplt(vector double __a, vector double __b) {
   2191   return vec_cmpgt(__b, __a);
   2192 }
   2193 #endif
   2194 
   2195 #ifdef __POWER8_VECTOR__
   2196 static __inline__ vector bool long long __ATTRS_o_ai
   2197 vec_cmplt(vector signed long long __a, vector signed long long __b) {
   2198   return vec_cmpgt(__b, __a);
   2199 }
   2200 
   2201 static __inline__ vector bool long long __ATTRS_o_ai
   2202 vec_cmplt(vector unsigned long long __a, vector unsigned long long __b) {
   2203   return vec_cmpgt(__b, __a);
   2204 }
   2205 
   2206 /* vec_popcnt */
   2207 
   2208 static __inline__ vector signed char __ATTRS_o_ai
   2209 vec_popcnt(vector signed char __a) {
   2210   return __builtin_altivec_vpopcntb(__a);
   2211 }
   2212 static __inline__ vector unsigned char __ATTRS_o_ai
   2213 vec_popcnt(vector unsigned char __a) {
   2214   return __builtin_altivec_vpopcntb(__a);
   2215 }
   2216 static __inline__ vector signed short __ATTRS_o_ai
   2217 vec_popcnt(vector signed short __a) {
   2218   return __builtin_altivec_vpopcnth(__a);
   2219 }
   2220 static __inline__ vector unsigned short __ATTRS_o_ai
   2221 vec_popcnt(vector unsigned short __a) {
   2222   return __builtin_altivec_vpopcnth(__a);
   2223 }
   2224 static __inline__ vector signed int __ATTRS_o_ai
   2225 vec_popcnt(vector signed int __a) {
   2226   return __builtin_altivec_vpopcntw(__a);
   2227 }
   2228 static __inline__ vector unsigned int __ATTRS_o_ai
   2229 vec_popcnt(vector unsigned int __a) {
   2230   return __builtin_altivec_vpopcntw(__a);
   2231 }
   2232 static __inline__ vector signed long long __ATTRS_o_ai
   2233 vec_popcnt(vector signed long long __a) {
   2234   return __builtin_altivec_vpopcntd(__a);
   2235 }
   2236 static __inline__ vector unsigned long long __ATTRS_o_ai
   2237 vec_popcnt(vector unsigned long long __a) {
   2238   return __builtin_altivec_vpopcntd(__a);
   2239 }
   2240 
   2241 /* vec_cntlz */
   2242 
   2243 static __inline__ vector signed char __ATTRS_o_ai
   2244 vec_cntlz(vector signed char __a) {
   2245   return __builtin_altivec_vclzb(__a);
   2246 }
   2247 static __inline__ vector unsigned char __ATTRS_o_ai
   2248 vec_cntlz(vector unsigned char __a) {
   2249   return __builtin_altivec_vclzb(__a);
   2250 }
   2251 static __inline__ vector signed short __ATTRS_o_ai
   2252 vec_cntlz(vector signed short __a) {
   2253   return __builtin_altivec_vclzh(__a);
   2254 }
   2255 static __inline__ vector unsigned short __ATTRS_o_ai
   2256 vec_cntlz(vector unsigned short __a) {
   2257   return __builtin_altivec_vclzh(__a);
   2258 }
   2259 static __inline__ vector signed int __ATTRS_o_ai
   2260 vec_cntlz(vector signed int __a) {
   2261   return __builtin_altivec_vclzw(__a);
   2262 }
   2263 static __inline__ vector unsigned int __ATTRS_o_ai
   2264 vec_cntlz(vector unsigned int __a) {
   2265   return __builtin_altivec_vclzw(__a);
   2266 }
   2267 static __inline__ vector signed long long __ATTRS_o_ai
   2268 vec_cntlz(vector signed long long __a) {
   2269   return __builtin_altivec_vclzd(__a);
   2270 }
   2271 static __inline__ vector unsigned long long __ATTRS_o_ai
   2272 vec_cntlz(vector unsigned long long __a) {
   2273   return __builtin_altivec_vclzd(__a);
   2274 }
   2275 #endif
   2276 
   2277 #ifdef __POWER9_VECTOR__
   2278 
   2279 /* vec_cnttz */
   2280 
   2281 static __inline__ vector signed char __ATTRS_o_ai
   2282 vec_cnttz(vector signed char __a) {
   2283   return __builtin_altivec_vctzb(__a);
   2284 }
   2285 static __inline__ vector unsigned char __ATTRS_o_ai
   2286 vec_cnttz(vector unsigned char __a) {
   2287   return __builtin_altivec_vctzb(__a);
   2288 }
   2289 static __inline__ vector signed short __ATTRS_o_ai
   2290 vec_cnttz(vector signed short __a) {
   2291   return __builtin_altivec_vctzh(__a);
   2292 }
   2293 static __inline__ vector unsigned short __ATTRS_o_ai
   2294 vec_cnttz(vector unsigned short __a) {
   2295   return __builtin_altivec_vctzh(__a);
   2296 }
   2297 static __inline__ vector signed int __ATTRS_o_ai
   2298 vec_cnttz(vector signed int __a) {
   2299   return __builtin_altivec_vctzw(__a);
   2300 }
   2301 static __inline__ vector unsigned int __ATTRS_o_ai
   2302 vec_cnttz(vector unsigned int __a) {
   2303   return __builtin_altivec_vctzw(__a);
   2304 }
   2305 static __inline__ vector signed long long __ATTRS_o_ai
   2306 vec_cnttz(vector signed long long __a) {
   2307   return __builtin_altivec_vctzd(__a);
   2308 }
   2309 static __inline__ vector unsigned long long __ATTRS_o_ai
   2310 vec_cnttz(vector unsigned long long __a) {
   2311   return __builtin_altivec_vctzd(__a);
   2312 }
   2313 
   2314 /* vec_first_match_index */
   2315 
   2316 static __inline__ unsigned __ATTRS_o_ai
   2317 vec_first_match_index(vector signed char __a, vector signed char __b) {
   2318   vector unsigned long long __res =
   2319 #ifdef __LITTLE_ENDIAN__
   2320     vec_cnttz((vector unsigned long long)vec_cmpeq(__a, __b));
   2321 #else
   2322     vec_cntlz((vector unsigned long long)vec_cmpeq(__a, __b));
   2323 #endif
   2324   if (__res[0] == 64) {
   2325     return (__res[1] + 64) >> 3;
   2326   }
   2327   return __res[0] >> 3;
   2328 }
   2329 
   2330 static __inline__ unsigned __ATTRS_o_ai
   2331 vec_first_match_index(vector unsigned char __a, vector unsigned char __b) {
   2332   vector unsigned long long __res =
   2333 #ifdef __LITTLE_ENDIAN__
   2334     vec_cnttz((vector unsigned long long)vec_cmpeq(__a, __b));
   2335 #else
   2336     vec_cntlz((vector unsigned long long)vec_cmpeq(__a, __b));
   2337 #endif
   2338   if (__res[0] == 64) {
   2339     return (__res[1] + 64) >> 3;
   2340   }
   2341   return __res[0] >> 3;
   2342 }
   2343 
   2344 static __inline__ unsigned __ATTRS_o_ai
   2345 vec_first_match_index(vector signed short __a, vector signed short __b) {
   2346   vector unsigned long long __res =
   2347 #ifdef __LITTLE_ENDIAN__
   2348     vec_cnttz((vector unsigned long long)vec_cmpeq(__a, __b));
   2349 #else
   2350     vec_cntlz((vector unsigned long long)vec_cmpeq(__a, __b));
   2351 #endif
   2352   if (__res[0] == 64) {
   2353     return (__res[1] + 64) >> 4;
   2354   }
   2355   return __res[0] >> 4;
   2356 }
   2357 
   2358 static __inline__ unsigned __ATTRS_o_ai
   2359 vec_first_match_index(vector unsigned short __a, vector unsigned short __b) {
   2360   vector unsigned long long __res =
   2361 #ifdef __LITTLE_ENDIAN__
   2362     vec_cnttz((vector unsigned long long)vec_cmpeq(__a, __b));
   2363 #else
   2364     vec_cntlz((vector unsigned long long)vec_cmpeq(__a, __b));
   2365 #endif
   2366   if (__res[0] == 64) {
   2367     return (__res[1] + 64) >> 4;
   2368   }
   2369   return __res[0] >> 4;
   2370 }
   2371 
   2372 static __inline__ unsigned __ATTRS_o_ai
   2373 vec_first_match_index(vector signed int __a, vector signed int __b) {
   2374   vector unsigned long long __res =
   2375 #ifdef __LITTLE_ENDIAN__
   2376     vec_cnttz((vector unsigned long long)vec_cmpeq(__a, __b));
   2377 #else
   2378     vec_cntlz((vector unsigned long long)vec_cmpeq(__a, __b));
   2379 #endif
   2380   if (__res[0] == 64) {
   2381     return (__res[1] + 64) >> 5;
   2382   }
   2383   return __res[0] >> 5;
   2384 }
   2385 
   2386 static __inline__ unsigned __ATTRS_o_ai
   2387 vec_first_match_index(vector unsigned int __a, vector unsigned int __b) {
   2388   vector unsigned long long __res =
   2389 #ifdef __LITTLE_ENDIAN__
   2390     vec_cnttz((vector unsigned long long)vec_cmpeq(__a, __b));
   2391 #else
   2392     vec_cntlz((vector unsigned long long)vec_cmpeq(__a, __b));
   2393 #endif
   2394   if (__res[0] == 64) {
   2395     return (__res[1] + 64) >> 5;
   2396   }
   2397   return __res[0] >> 5;
   2398 }
   2399 
   2400 /* vec_first_match_or_eos_index */
   2401 
   2402 static __inline__ unsigned __ATTRS_o_ai
   2403 vec_first_match_or_eos_index(vector signed char __a, vector signed char __b) {
   2404   /* Compare the result of the comparison of two vectors with either and OR the
   2405      result. Either the elements are equal or one will equal the comparison
   2406      result if either is zero.
   2407   */
   2408   vector bool char __tmp1 = vec_cmpeq(__a, __b);
   2409   vector bool char __tmp2 = __tmp1 |
   2410                             vec_cmpeq((vector signed char)__tmp1, __a) |
   2411                             vec_cmpeq((vector signed char)__tmp1, __b);
   2412 
   2413   vector unsigned long long __res =
   2414 #ifdef __LITTLE_ENDIAN__
   2415       vec_cnttz((vector unsigned long long)__tmp2);
   2416 #else
   2417       vec_cntlz((vector unsigned long long)__tmp2);
   2418 #endif
   2419   if (__res[0] == 64) {
   2420     return (__res[1] + 64) >> 3;
   2421   }
   2422   return __res[0] >> 3;
   2423 }
   2424 
   2425 static __inline__ unsigned __ATTRS_o_ai
   2426 vec_first_match_or_eos_index(vector unsigned char __a,
   2427                              vector unsigned char __b) {
   2428   vector bool char __tmp1 = vec_cmpeq(__a, __b);
   2429   vector bool char __tmp2 = __tmp1 |
   2430                             vec_cmpeq((vector unsigned char)__tmp1, __a) |
   2431                             vec_cmpeq((vector unsigned char)__tmp1, __b);
   2432 
   2433   vector unsigned long long __res =
   2434 #ifdef __LITTLE_ENDIAN__
   2435       vec_cnttz((vector unsigned long long)__tmp2);
   2436 #else
   2437       vec_cntlz((vector unsigned long long)__tmp2);
   2438 #endif
   2439   if (__res[0] == 64) {
   2440     return (__res[1] + 64) >> 3;
   2441   }
   2442   return __res[0] >> 3;
   2443 }
   2444 
   2445 static __inline__ unsigned __ATTRS_o_ai
   2446 vec_first_match_or_eos_index(vector signed short __a, vector signed short __b) {
   2447   vector bool short __tmp1 = vec_cmpeq(__a, __b);
   2448   vector bool short __tmp2 = __tmp1 |
   2449                              vec_cmpeq((vector signed short)__tmp1, __a) |
   2450                              vec_cmpeq((vector signed short)__tmp1, __b);
   2451 
   2452   vector unsigned long long __res =
   2453 #ifdef __LITTLE_ENDIAN__
   2454       vec_cnttz((vector unsigned long long)__tmp2);
   2455 #else
   2456       vec_cntlz((vector unsigned long long)__tmp2);
   2457 #endif
   2458   if (__res[0] == 64) {
   2459     return (__res[1] + 64) >> 4;
   2460   }
   2461   return __res[0] >> 4;
   2462 }
   2463 
   2464 static __inline__ unsigned __ATTRS_o_ai
   2465 vec_first_match_or_eos_index(vector unsigned short __a,
   2466                              vector unsigned short __b) {
   2467   vector bool short __tmp1 = vec_cmpeq(__a, __b);
   2468   vector bool short __tmp2 = __tmp1 |
   2469                              vec_cmpeq((vector unsigned short)__tmp1, __a) |
   2470                              vec_cmpeq((vector unsigned short)__tmp1, __b);
   2471 
   2472   vector unsigned long long __res =
   2473 #ifdef __LITTLE_ENDIAN__
   2474       vec_cnttz((vector unsigned long long)__tmp2);
   2475 #else
   2476       vec_cntlz((vector unsigned long long)__tmp2);
   2477 #endif
   2478   if (__res[0] == 64) {
   2479     return (__res[1] + 64) >> 4;
   2480   }
   2481   return __res[0] >> 4;
   2482 }
   2483 
   2484 static __inline__ unsigned __ATTRS_o_ai
   2485 vec_first_match_or_eos_index(vector signed int __a, vector signed int __b) {
   2486   vector bool int __tmp1 = vec_cmpeq(__a, __b);
   2487   vector bool int __tmp2 = __tmp1 | vec_cmpeq((vector signed int)__tmp1, __a) |
   2488                            vec_cmpeq((vector signed int)__tmp1, __b);
   2489 
   2490   vector unsigned long long __res =
   2491 #ifdef __LITTLE_ENDIAN__
   2492       vec_cnttz((vector unsigned long long)__tmp2);
   2493 #else
   2494       vec_cntlz((vector unsigned long long)__tmp2);
   2495 #endif
   2496   if (__res[0] == 64) {
   2497     return (__res[1] + 64) >> 5;
   2498   }
   2499   return __res[0] >> 5;
   2500 }
   2501 
   2502 static __inline__ unsigned __ATTRS_o_ai
   2503 vec_first_match_or_eos_index(vector unsigned int __a, vector unsigned int __b) {
   2504   vector bool int __tmp1 = vec_cmpeq(__a, __b);
   2505   vector bool int __tmp2 = __tmp1 |
   2506                            vec_cmpeq((vector unsigned int)__tmp1, __a) |
   2507                            vec_cmpeq((vector unsigned int)__tmp1, __b);
   2508 
   2509   vector unsigned long long __res =
   2510 #ifdef __LITTLE_ENDIAN__
   2511     vec_cnttz((vector unsigned long long)__tmp2);
   2512 #else
   2513     vec_cntlz((vector unsigned long long)__tmp2);
   2514 #endif
   2515   if (__res[0] == 64) {
   2516     return (__res[1] + 64) >> 5;
   2517   }
   2518   return __res[0] >> 5;
   2519 }
   2520 
   2521 /* vec_first_mismatch_index */
   2522 
   2523 static __inline__ unsigned __ATTRS_o_ai
   2524 vec_first_mismatch_index(vector signed char __a, vector signed char __b) {
   2525   vector unsigned long long __res =
   2526 #ifdef __LITTLE_ENDIAN__
   2527     vec_cnttz((vector unsigned long long)vec_cmpne(__a, __b));
   2528 #else
   2529     vec_cntlz((vector unsigned long long)vec_cmpne(__a, __b));
   2530 #endif
   2531   if (__res[0] == 64) {
   2532     return (__res[1] + 64) >> 3;
   2533   }
   2534   return __res[0] >> 3;
   2535 }
   2536 
   2537 static __inline__ unsigned __ATTRS_o_ai
   2538 vec_first_mismatch_index(vector unsigned char __a, vector unsigned char __b) {
   2539   vector unsigned long long __res =
   2540 #ifdef __LITTLE_ENDIAN__
   2541     vec_cnttz((vector unsigned long long)vec_cmpne(__a, __b));
   2542 #else
   2543     vec_cntlz((vector unsigned long long)vec_cmpne(__a, __b));
   2544 #endif
   2545   if (__res[0] == 64) {
   2546     return (__res[1] + 64) >> 3;
   2547   }
   2548   return __res[0] >> 3;
   2549 }
   2550 
   2551 static __inline__ unsigned __ATTRS_o_ai
   2552 vec_first_mismatch_index(vector signed short __a, vector signed short __b) {
   2553   vector unsigned long long __res =
   2554 #ifdef __LITTLE_ENDIAN__
   2555     vec_cnttz((vector unsigned long long)vec_cmpne(__a, __b));
   2556 #else
   2557     vec_cntlz((vector unsigned long long)vec_cmpne(__a, __b));
   2558 #endif
   2559   if (__res[0] == 64) {
   2560     return (__res[1] + 64) >> 4;
   2561   }
   2562   return __res[0] >> 4;
   2563 }
   2564 
   2565 static __inline__ unsigned __ATTRS_o_ai
   2566 vec_first_mismatch_index(vector unsigned short __a, vector unsigned short __b) {
   2567   vector unsigned long long __res =
   2568 #ifdef __LITTLE_ENDIAN__
   2569     vec_cnttz((vector unsigned long long)vec_cmpne(__a, __b));
   2570 #else
   2571     vec_cntlz((vector unsigned long long)vec_cmpne(__a, __b));
   2572 #endif
   2573   if (__res[0] == 64) {
   2574     return (__res[1] + 64) >> 4;
   2575   }
   2576   return __res[0] >> 4;
   2577 }
   2578 
   2579 static __inline__ unsigned __ATTRS_o_ai
   2580 vec_first_mismatch_index(vector signed int __a, vector signed int __b) {
   2581   vector unsigned long long __res =
   2582 #ifdef __LITTLE_ENDIAN__
   2583     vec_cnttz((vector unsigned long long)vec_cmpne(__a, __b));
   2584 #else
   2585     vec_cntlz((vector unsigned long long)vec_cmpne(__a, __b));
   2586 #endif
   2587   if (__res[0] == 64) {
   2588     return (__res[1] + 64) >> 5;
   2589   }
   2590   return __res[0] >> 5;
   2591 }
   2592 
   2593 static __inline__ unsigned __ATTRS_o_ai
   2594 vec_first_mismatch_index(vector unsigned int __a, vector unsigned int __b) {
   2595   vector unsigned long long __res =
   2596 #ifdef __LITTLE_ENDIAN__
   2597     vec_cnttz((vector unsigned long long)vec_cmpne(__a, __b));
   2598 #else
   2599     vec_cntlz((vector unsigned long long)vec_cmpne(__a, __b));
   2600 #endif
   2601   if (__res[0] == 64) {
   2602     return (__res[1] + 64) >> 5;
   2603   }
   2604   return __res[0] >> 5;
   2605 }
   2606 
   2607 /* vec_first_mismatch_or_eos_index */
   2608 
   2609 static __inline__ unsigned __ATTRS_o_ai
   2610 vec_first_mismatch_or_eos_index(vector signed char __a,
   2611                                 vector signed char __b) {
   2612   vector unsigned long long __res =
   2613 #ifdef __LITTLE_ENDIAN__
   2614     vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
   2615 #else
   2616     vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
   2617 #endif
   2618   if (__res[0] == 64) {
   2619     return (__res[1] + 64) >> 3;
   2620   }
   2621   return __res[0] >> 3;
   2622 }
   2623 
   2624 static __inline__ unsigned __ATTRS_o_ai
   2625 vec_first_mismatch_or_eos_index(vector unsigned char __a,
   2626                                 vector unsigned char __b) {
   2627   vector unsigned long long __res =
   2628 #ifdef __LITTLE_ENDIAN__
   2629     vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
   2630 #else
   2631     vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
   2632 #endif
   2633   if (__res[0] == 64) {
   2634     return (__res[1] + 64) >> 3;
   2635   }
   2636   return __res[0] >> 3;
   2637 }
   2638 
   2639 static __inline__ unsigned __ATTRS_o_ai
   2640 vec_first_mismatch_or_eos_index(vector signed short __a,
   2641                                 vector signed short __b) {
   2642   vector unsigned long long __res =
   2643 #ifdef __LITTLE_ENDIAN__
   2644     vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
   2645 #else
   2646     vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
   2647 #endif
   2648   if (__res[0] == 64) {
   2649     return (__res[1] + 64) >> 4;
   2650   }
   2651   return __res[0] >> 4;
   2652 }
   2653 
   2654 static __inline__ unsigned __ATTRS_o_ai
   2655 vec_first_mismatch_or_eos_index(vector unsigned short __a,
   2656                                 vector unsigned short __b) {
   2657   vector unsigned long long __res =
   2658 #ifdef __LITTLE_ENDIAN__
   2659     vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
   2660 #else
   2661     vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
   2662 #endif
   2663   if (__res[0] == 64) {
   2664     return (__res[1] + 64) >> 4;
   2665   }
   2666   return __res[0] >> 4;
   2667 }
   2668 
   2669 static __inline__ unsigned __ATTRS_o_ai
   2670 vec_first_mismatch_or_eos_index(vector signed int __a, vector signed int __b) {
   2671   vector unsigned long long __res =
   2672 #ifdef __LITTLE_ENDIAN__
   2673     vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
   2674 #else
   2675     vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
   2676 #endif
   2677   if (__res[0] == 64) {
   2678     return (__res[1] + 64) >> 5;
   2679   }
   2680   return __res[0] >> 5;
   2681 }
   2682 
   2683 static __inline__ unsigned __ATTRS_o_ai
   2684 vec_first_mismatch_or_eos_index(vector unsigned int __a,
   2685                                 vector unsigned int __b) {
   2686   vector unsigned long long __res =
   2687 #ifdef __LITTLE_ENDIAN__
   2688     vec_cnttz((vector unsigned long long)vec_cmpnez(__a, __b));
   2689 #else
   2690     vec_cntlz((vector unsigned long long)vec_cmpnez(__a, __b));
   2691 #endif
   2692   if (__res[0] == 64) {
   2693     return (__res[1] + 64) >> 5;
   2694   }
   2695   return __res[0] >> 5;
   2696 }
   2697 
   2698 static __inline__ vector double  __ATTRS_o_ai
   2699 vec_insert_exp(vector double __a, vector unsigned long long __b) {
   2700   return __builtin_vsx_xviexpdp((vector unsigned long long)__a,__b);
   2701 }
   2702 
   2703 static __inline__ vector double  __ATTRS_o_ai
   2704 vec_insert_exp(vector unsigned long long __a, vector unsigned long long __b) {
   2705   return __builtin_vsx_xviexpdp(__a,__b);
   2706 }
   2707 
   2708 static __inline__ vector float  __ATTRS_o_ai
   2709 vec_insert_exp(vector float __a, vector unsigned int __b) {
   2710   return __builtin_vsx_xviexpsp((vector unsigned int)__a,__b);
   2711 }
   2712 
   2713 static __inline__ vector float  __ATTRS_o_ai
   2714 vec_insert_exp(vector unsigned int __a, vector unsigned int __b) {
   2715   return __builtin_vsx_xviexpsp(__a,__b);
   2716 }
   2717 
   2718 #if defined(__powerpc64__)
   2719 static __inline__ vector signed char __ATTRS_o_ai vec_xl_len(signed char *__a,
   2720                                                              size_t __b) {
   2721   return (vector signed char)__builtin_vsx_lxvl(__a, (__b << 56));
   2722 }
   2723 
   2724 static __inline__ vector unsigned char __ATTRS_o_ai
   2725 vec_xl_len(unsigned char *__a, size_t __b) {
   2726   return (vector unsigned char)__builtin_vsx_lxvl(__a, (__b << 56));
   2727 }
   2728 
   2729 static __inline__ vector signed short __ATTRS_o_ai vec_xl_len(signed short *__a,
   2730                                                               size_t __b) {
   2731   return (vector signed short)__builtin_vsx_lxvl(__a, (__b << 56));
   2732 }
   2733 
   2734 static __inline__ vector unsigned short __ATTRS_o_ai
   2735 vec_xl_len(unsigned short *__a, size_t __b) {
   2736   return (vector unsigned short)__builtin_vsx_lxvl(__a, (__b << 56));
   2737 }
   2738 
   2739 static __inline__ vector signed int __ATTRS_o_ai vec_xl_len(signed int *__a,
   2740                                                             size_t __b) {
   2741   return (vector signed int)__builtin_vsx_lxvl(__a, (__b << 56));
   2742 }
   2743 
   2744 static __inline__ vector unsigned int __ATTRS_o_ai vec_xl_len(unsigned int *__a,
   2745                                                               size_t __b) {
   2746   return (vector unsigned int)__builtin_vsx_lxvl(__a, (__b << 56));
   2747 }
   2748 
   2749 static __inline__ vector float __ATTRS_o_ai vec_xl_len(float *__a, size_t __b) {
   2750   return (vector float)__builtin_vsx_lxvl(__a, (__b << 56));
   2751 }
   2752 
   2753 static __inline__ vector signed __int128 __ATTRS_o_ai
   2754 vec_xl_len(signed __int128 *__a, size_t __b) {
   2755   return (vector signed __int128)__builtin_vsx_lxvl(__a, (__b << 56));
   2756 }
   2757 
   2758 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   2759 vec_xl_len(unsigned __int128 *__a, size_t __b) {
   2760   return (vector unsigned __int128)__builtin_vsx_lxvl(__a, (__b << 56));
   2761 }
   2762 
   2763 static __inline__ vector signed long long __ATTRS_o_ai
   2764 vec_xl_len(signed long long *__a, size_t __b) {
   2765   return (vector signed long long)__builtin_vsx_lxvl(__a, (__b << 56));
   2766 }
   2767 
   2768 static __inline__ vector unsigned long long __ATTRS_o_ai
   2769 vec_xl_len(unsigned long long *__a, size_t __b) {
   2770   return (vector unsigned long long)__builtin_vsx_lxvl(__a, (__b << 56));
   2771 }
   2772 
   2773 static __inline__ vector double __ATTRS_o_ai vec_xl_len(double *__a,
   2774                                                         size_t __b) {
   2775   return (vector double)__builtin_vsx_lxvl(__a, (__b << 56));
   2776 }
   2777 
   2778 static __inline__ vector double __ATTRS_o_ai vec_xl_len_r(unsigned char *__a,
   2779                                                           size_t __b) {
   2780   vector unsigned char __res =
   2781       (vector unsigned char)__builtin_vsx_lxvll(__a, (__b << 56));
   2782 #ifdef __LITTLE_ENDIAN__
   2783   vector unsigned char __mask =
   2784       (vector unsigned char)__builtin_altivec_lvsr(16 - __b, (int *)NULL);
   2785   __res = (vector unsigned char)__builtin_altivec_vperm_4si(
   2786       (vector int)__res, (vector int)__res, __mask);
   2787 #endif
   2788   return __res;
   2789 }
   2790 
   2791 // vec_xst_len
   2792 static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned char __a,
   2793                                                 unsigned char *__b,
   2794                                                 size_t __c) {
   2795   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
   2796 }
   2797 
   2798 static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed char __a,
   2799                                                 signed char *__b, size_t __c) {
   2800   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
   2801 }
   2802 
   2803 static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed short __a,
   2804                                                 signed short *__b, size_t __c) {
   2805   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
   2806 }
   2807 
   2808 static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned short __a,
   2809                                                 unsigned short *__b,
   2810                                                 size_t __c) {
   2811   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
   2812 }
   2813 
   2814 static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed int __a,
   2815                                                 signed int *__b, size_t __c) {
   2816   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
   2817 }
   2818 
   2819 static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned int __a,
   2820                                                 unsigned int *__b, size_t __c) {
   2821   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
   2822 }
   2823 
   2824 static __inline__ void __ATTRS_o_ai vec_xst_len(vector float __a, float *__b,
   2825                                                 size_t __c) {
   2826   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
   2827 }
   2828 
   2829 static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed __int128 __a,
   2830                                                 signed __int128 *__b,
   2831                                                 size_t __c) {
   2832   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
   2833 }
   2834 
   2835 static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned __int128 __a,
   2836                                                 unsigned __int128 *__b,
   2837                                                 size_t __c) {
   2838   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
   2839 }
   2840 
   2841 static __inline__ void __ATTRS_o_ai vec_xst_len(vector signed long long __a,
   2842                                                 signed long long *__b,
   2843                                                 size_t __c) {
   2844   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
   2845 }
   2846 
   2847 static __inline__ void __ATTRS_o_ai vec_xst_len(vector unsigned long long __a,
   2848                                                 unsigned long long *__b,
   2849                                                 size_t __c) {
   2850   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
   2851 }
   2852 
   2853 static __inline__ void __ATTRS_o_ai vec_xst_len(vector double __a, double *__b,
   2854                                                 size_t __c) {
   2855   return __builtin_vsx_stxvl((vector int)__a, __b, (__c << 56));
   2856 }
   2857 
   2858 static __inline__ void __ATTRS_o_ai vec_xst_len_r(vector unsigned char __a,
   2859                                                   unsigned char *__b,
   2860                                                   size_t __c) {
   2861 #ifdef __LITTLE_ENDIAN__
   2862   vector unsigned char __mask =
   2863       (vector unsigned char)__builtin_altivec_lvsl(16 - __c, (int *)NULL);
   2864   vector unsigned char __res =
   2865       __builtin_altivec_vperm_4si((vector int)__a, (vector int)__a, __mask);
   2866   return __builtin_vsx_stxvll((vector int)__res, __b, (__c << 56));
   2867 #else
   2868   return __builtin_vsx_stxvll((vector int)__a, __b, (__c << 56));
   2869 #endif
   2870 }
   2871 #endif
   2872 #endif
   2873 
   2874 /* vec_cpsgn */
   2875 
   2876 #ifdef __VSX__
   2877 static __inline__ vector float __ATTRS_o_ai vec_cpsgn(vector float __a,
   2878                                                       vector float __b) {
   2879   return __builtin_vsx_xvcpsgnsp(__a, __b);
   2880 }
   2881 
   2882 static __inline__ vector double __ATTRS_o_ai vec_cpsgn(vector double __a,
   2883                                                        vector double __b) {
   2884   return __builtin_vsx_xvcpsgndp(__a, __b);
   2885 }
   2886 #endif
   2887 
   2888 /* vec_ctf */
   2889 
   2890 #ifdef __VSX__
   2891 #define vec_ctf(__a, __b)                                                      \
   2892   _Generic((__a), vector int                                                   \
   2893            : (vector float)__builtin_altivec_vcfsx((__a), (__b)),              \
   2894              vector unsigned int                                               \
   2895            : (vector float)__builtin_altivec_vcfux((vector int)(__a), (__b)),  \
   2896              vector unsigned long long                                         \
   2897            : (__builtin_convertvector((vector unsigned long long)(__a),        \
   2898                                       vector double) *                         \
   2899               (vector double)(vector unsigned long long)((0x3ffULL - (__b))    \
   2900                                                          << 52)),              \
   2901              vector signed long long                                           \
   2902            : (__builtin_convertvector((vector signed long long)(__a),          \
   2903                                       vector double) *                         \
   2904               (vector double)(vector unsigned long long)((0x3ffULL - (__b))    \
   2905                                                          << 52)))
   2906 #else
   2907 #define vec_ctf(__a, __b)                                                      \
   2908   _Generic((__a), vector int                                                   \
   2909            : (vector float)__builtin_altivec_vcfsx((__a), (__b)),              \
   2910              vector unsigned int                                               \
   2911            : (vector float)__builtin_altivec_vcfux((vector int)(__a), (__b)))
   2912 #endif
   2913 
   2914 /* vec_vcfsx */
   2915 
   2916 #define vec_vcfux __builtin_altivec_vcfux
   2917 
   2918 /* vec_vcfux */
   2919 
   2920 #define vec_vcfsx(__a, __b) __builtin_altivec_vcfsx((vector int)(__a), (__b))
   2921 
   2922 /* vec_cts */
   2923 
   2924 #ifdef __VSX__
   2925 #define vec_cts(__a, __b)                                                      \
   2926   _Generic((__a), vector float                                                 \
   2927            : __builtin_altivec_vctsxs((__a), (__b)), vector double             \
   2928            : __extension__({                                                   \
   2929              vector double __ret =                                             \
   2930                  (__a) *                                                       \
   2931                  (vector double)(vector unsigned long long)((0x3ffULL + (__b)) \
   2932                                                             << 52);            \
   2933              __builtin_convertvector(__ret, vector signed long long);          \
   2934            }))
   2935 #else
   2936 #define vec_cts __builtin_altivec_vctsxs
   2937 #endif
   2938 
   2939 /* vec_vctsxs */
   2940 
   2941 #define vec_vctsxs __builtin_altivec_vctsxs
   2942 
   2943 /* vec_ctu */
   2944 
   2945 #ifdef __VSX__
   2946 #define vec_ctu(__a, __b)                                                      \
   2947   _Generic((__a), vector float                                                 \
   2948            : __builtin_altivec_vctuxs((__a), (__b)), vector double             \
   2949            : __extension__({                                                   \
   2950              vector double __ret =                                             \
   2951                  (__a) *                                                       \
   2952                  (vector double)(vector unsigned long long)((0x3ffULL + __b)   \
   2953                                                             << 52);            \
   2954              __builtin_convertvector(__ret, vector unsigned long long);        \
   2955            }))
   2956 #else
   2957 #define vec_ctu __builtin_altivec_vctuxs
   2958 #endif
   2959 
   2960 /* vec_vctuxs */
   2961 
   2962 #define vec_vctuxs __builtin_altivec_vctuxs
   2963 
   2964 /* vec_signed */
   2965 
   2966 static __inline__ vector signed int __ATTRS_o_ai
   2967 vec_sld(vector signed int, vector signed int, unsigned const int __c);
   2968 
   2969 static __inline__ vector signed int __ATTRS_o_ai
   2970 vec_signed(vector float __a) {
   2971   return __builtin_convertvector(__a, vector signed int);
   2972 }
   2973 
   2974 #ifdef __VSX__
   2975 static __inline__ vector signed long long __ATTRS_o_ai
   2976 vec_signed(vector double __a) {
   2977   return __builtin_convertvector(__a, vector signed long long);
   2978 }
   2979 
   2980 static __inline__ vector signed int __attribute__((__always_inline__))
   2981 vec_signed2(vector double __a, vector double __b) {
   2982   return (vector signed int) { __a[0], __a[1], __b[0], __b[1] };
   2983 }
   2984 
   2985 static __inline__ vector signed int __ATTRS_o_ai
   2986 vec_signede(vector double __a) {
   2987 #ifdef __LITTLE_ENDIAN__
   2988   vector signed int __ret = __builtin_vsx_xvcvdpsxws(__a);
   2989   return vec_sld(__ret, __ret, 12);
   2990 #else
   2991   return __builtin_vsx_xvcvdpsxws(__a);
   2992 #endif
   2993 }
   2994 
   2995 static __inline__ vector signed int __ATTRS_o_ai
   2996 vec_signedo(vector double __a) {
   2997 #ifdef __LITTLE_ENDIAN__
   2998   return __builtin_vsx_xvcvdpsxws(__a);
   2999 #else
   3000   vector signed int __ret = __builtin_vsx_xvcvdpsxws(__a);
   3001   return vec_sld(__ret, __ret, 12);
   3002 #endif
   3003 }
   3004 #endif
   3005 
   3006 /* vec_unsigned */
   3007 
   3008 static __inline__ vector unsigned int __ATTRS_o_ai
   3009 vec_sld(vector unsigned int, vector unsigned int, unsigned const int __c);
   3010 
   3011 static __inline__ vector unsigned int __ATTRS_o_ai
   3012 vec_unsigned(vector float __a) {
   3013   return __builtin_convertvector(__a, vector unsigned int);
   3014 }
   3015 
   3016 #ifdef __VSX__
   3017 static __inline__ vector unsigned long long __ATTRS_o_ai
   3018 vec_unsigned(vector double __a) {
   3019   return __builtin_convertvector(__a, vector unsigned long long);
   3020 }
   3021 
   3022 static __inline__ vector unsigned int __attribute__((__always_inline__))
   3023 vec_unsigned2(vector double __a, vector double __b) {
   3024   return (vector unsigned int) { __a[0], __a[1], __b[0], __b[1] };
   3025 }
   3026 
   3027 static __inline__ vector unsigned int __ATTRS_o_ai
   3028 vec_unsignede(vector double __a) {
   3029 #ifdef __LITTLE_ENDIAN__
   3030   vector unsigned int __ret = __builtin_vsx_xvcvdpuxws(__a);
   3031   return vec_sld(__ret, __ret, 12);
   3032 #else
   3033   return __builtin_vsx_xvcvdpuxws(__a);
   3034 #endif
   3035 }
   3036 
   3037 static __inline__ vector unsigned int __ATTRS_o_ai
   3038 vec_unsignedo(vector double __a) {
   3039 #ifdef __LITTLE_ENDIAN__
   3040   return __builtin_vsx_xvcvdpuxws(__a);
   3041 #else
   3042   vector unsigned int __ret = __builtin_vsx_xvcvdpuxws(__a);
   3043   return vec_sld(__ret, __ret, 12);
   3044 #endif
   3045 }
   3046 #endif
   3047 
   3048 /* vec_float */
   3049 
   3050 static __inline__ vector float __ATTRS_o_ai
   3051 vec_sld(vector float, vector float, unsigned const int __c);
   3052 
   3053 static __inline__ vector float __ATTRS_o_ai
   3054 vec_float(vector signed int __a) {
   3055   return __builtin_convertvector(__a, vector float);
   3056 }
   3057 
   3058 static __inline__ vector float __ATTRS_o_ai
   3059 vec_float(vector unsigned int __a) {
   3060   return __builtin_convertvector(__a, vector float);
   3061 }
   3062 
   3063 #ifdef __VSX__
   3064 static __inline__ vector float __ATTRS_o_ai
   3065 vec_float2(vector signed long long __a, vector signed long long __b) {
   3066   return (vector float) { __a[0], __a[1], __b[0], __b[1] };
   3067 }
   3068 
   3069 static __inline__ vector float __ATTRS_o_ai
   3070 vec_float2(vector unsigned long long __a, vector unsigned long long __b) {
   3071   return (vector float) { __a[0], __a[1], __b[0], __b[1] };
   3072 }
   3073 
   3074 static __inline__ vector float __ATTRS_o_ai
   3075 vec_float2(vector double __a, vector double __b) {
   3076   return (vector float) { __a[0], __a[1], __b[0], __b[1] };
   3077 }
   3078 
   3079 static __inline__ vector float __ATTRS_o_ai
   3080 vec_floate(vector signed long long __a) {
   3081 #ifdef __LITTLE_ENDIAN__
   3082   vector float __ret = __builtin_vsx_xvcvsxdsp(__a);
   3083   return vec_sld(__ret, __ret, 12);
   3084 #else
   3085   return __builtin_vsx_xvcvsxdsp(__a);
   3086 #endif
   3087 }
   3088 
   3089 static __inline__ vector float __ATTRS_o_ai
   3090 vec_floate(vector unsigned long long __a) {
   3091 #ifdef __LITTLE_ENDIAN__
   3092   vector float __ret = __builtin_vsx_xvcvuxdsp(__a);
   3093   return vec_sld(__ret, __ret, 12);
   3094 #else
   3095   return __builtin_vsx_xvcvuxdsp(__a);
   3096 #endif
   3097 }
   3098 
   3099 static __inline__ vector float __ATTRS_o_ai
   3100 vec_floate(vector double __a) {
   3101 #ifdef __LITTLE_ENDIAN__
   3102   vector float __ret = __builtin_vsx_xvcvdpsp(__a);
   3103   return vec_sld(__ret, __ret, 12);
   3104 #else
   3105   return __builtin_vsx_xvcvdpsp(__a);
   3106 #endif
   3107 }
   3108 
   3109 static __inline__ vector float __ATTRS_o_ai
   3110 vec_floato(vector signed long long __a) {
   3111 #ifdef __LITTLE_ENDIAN__
   3112   return __builtin_vsx_xvcvsxdsp(__a);
   3113 #else
   3114   vector float __ret = __builtin_vsx_xvcvsxdsp(__a);
   3115   return vec_sld(__ret, __ret, 12);
   3116 #endif
   3117 }
   3118 
   3119 static __inline__ vector float __ATTRS_o_ai
   3120 vec_floato(vector unsigned long long __a) {
   3121 #ifdef __LITTLE_ENDIAN__
   3122   return __builtin_vsx_xvcvuxdsp(__a);
   3123 #else
   3124   vector float __ret = __builtin_vsx_xvcvuxdsp(__a);
   3125   return vec_sld(__ret, __ret, 12);
   3126 #endif
   3127 }
   3128 
   3129 static __inline__ vector float __ATTRS_o_ai
   3130 vec_floato(vector double __a) {
   3131 #ifdef __LITTLE_ENDIAN__
   3132   return __builtin_vsx_xvcvdpsp(__a);
   3133 #else
   3134   vector float __ret = __builtin_vsx_xvcvdpsp(__a);
   3135   return vec_sld(__ret, __ret, 12);
   3136 #endif
   3137 }
   3138 #endif
   3139 
   3140 /* vec_double */
   3141 
   3142 #ifdef __VSX__
   3143 static __inline__ vector double __ATTRS_o_ai
   3144 vec_double(vector signed long long __a) {
   3145   return __builtin_convertvector(__a, vector double);
   3146 }
   3147 
   3148 static __inline__ vector double __ATTRS_o_ai
   3149 vec_double(vector unsigned long long __a) {
   3150   return __builtin_convertvector(__a, vector double);
   3151 }
   3152 
   3153 static __inline__ vector double __ATTRS_o_ai
   3154 vec_doublee(vector signed int __a) {
   3155 #ifdef __LITTLE_ENDIAN__
   3156   return __builtin_vsx_xvcvsxwdp(vec_sld(__a, __a, 4));
   3157 #else
   3158   return __builtin_vsx_xvcvsxwdp(__a);
   3159 #endif
   3160 }
   3161 
   3162 static __inline__ vector double __ATTRS_o_ai
   3163 vec_doublee(vector unsigned int __a) {
   3164 #ifdef __LITTLE_ENDIAN__
   3165   return __builtin_vsx_xvcvuxwdp(vec_sld(__a, __a, 4));
   3166 #else
   3167   return __builtin_vsx_xvcvuxwdp(__a);
   3168 #endif
   3169 }
   3170 
   3171 static __inline__ vector double __ATTRS_o_ai
   3172 vec_doublee(vector float __a) {
   3173 #ifdef __LITTLE_ENDIAN__
   3174   return __builtin_vsx_xvcvspdp(vec_sld(__a, __a, 4));
   3175 #else
   3176   return __builtin_vsx_xvcvspdp(__a);
   3177 #endif
   3178 }
   3179 
   3180 static __inline__ vector double __ATTRS_o_ai
   3181 vec_doubleh(vector signed int __a) {
   3182   vector double __ret = {__a[0], __a[1]};
   3183   return __ret;
   3184 }
   3185 
   3186 static __inline__ vector double __ATTRS_o_ai
   3187 vec_doubleh(vector unsigned int __a) {
   3188   vector double __ret = {__a[0], __a[1]};
   3189   return __ret;
   3190 }
   3191 
   3192 static __inline__ vector double __ATTRS_o_ai
   3193 vec_doubleh(vector float __a) {
   3194   vector double __ret = {__a[0], __a[1]};
   3195   return __ret;
   3196 }
   3197 
   3198 static __inline__ vector double __ATTRS_o_ai
   3199 vec_doublel(vector signed int __a) {
   3200   vector double __ret = {__a[2], __a[3]};
   3201   return __ret;
   3202 }
   3203 
   3204 static __inline__ vector double __ATTRS_o_ai
   3205 vec_doublel(vector unsigned int __a) {
   3206   vector double __ret = {__a[2], __a[3]};
   3207   return __ret;
   3208 }
   3209 
   3210 static __inline__ vector double __ATTRS_o_ai
   3211 vec_doublel(vector float __a) {
   3212   vector double __ret = {__a[2], __a[3]};
   3213   return __ret;
   3214 }
   3215 
   3216 static __inline__ vector double __ATTRS_o_ai
   3217 vec_doubleo(vector signed int __a) {
   3218 #ifdef __LITTLE_ENDIAN__
   3219   return __builtin_vsx_xvcvsxwdp(__a);
   3220 #else
   3221   return __builtin_vsx_xvcvsxwdp(vec_sld(__a, __a, 4));
   3222 #endif
   3223 }
   3224 
   3225 static __inline__ vector double __ATTRS_o_ai
   3226 vec_doubleo(vector unsigned int __a) {
   3227 #ifdef __LITTLE_ENDIAN__
   3228   return __builtin_vsx_xvcvuxwdp(__a);
   3229 #else
   3230   return __builtin_vsx_xvcvuxwdp(vec_sld(__a, __a, 4));
   3231 #endif
   3232 }
   3233 
   3234 static __inline__ vector double __ATTRS_o_ai
   3235 vec_doubleo(vector float __a) {
   3236 #ifdef __LITTLE_ENDIAN__
   3237   return __builtin_vsx_xvcvspdp(__a);
   3238 #else
   3239   return __builtin_vsx_xvcvspdp(vec_sld(__a, __a, 4));
   3240 #endif
   3241 }
   3242 #endif
   3243 
   3244 /* vec_div */
   3245 
   3246 /* Integer vector divides (vectors are scalarized, elements divided
   3247    and the vectors reassembled).
   3248 */
   3249 static __inline__ vector signed char __ATTRS_o_ai
   3250 vec_div(vector signed char __a, vector signed char __b) {
   3251   return __a / __b;
   3252 }
   3253 
   3254 static __inline__ vector unsigned char __ATTRS_o_ai
   3255 vec_div(vector unsigned char __a, vector unsigned char __b) {
   3256   return __a / __b;
   3257 }
   3258 
   3259 static __inline__ vector signed short __ATTRS_o_ai
   3260 vec_div(vector signed short __a, vector signed short __b) {
   3261   return __a / __b;
   3262 }
   3263 
   3264 static __inline__ vector unsigned short __ATTRS_o_ai
   3265 vec_div(vector unsigned short __a, vector unsigned short __b) {
   3266   return __a / __b;
   3267 }
   3268 
   3269 static __inline__ vector signed int __ATTRS_o_ai
   3270 vec_div(vector signed int __a, vector signed int __b) {
   3271   return __a / __b;
   3272 }
   3273 
   3274 static __inline__ vector unsigned int __ATTRS_o_ai
   3275 vec_div(vector unsigned int __a, vector unsigned int __b) {
   3276   return __a / __b;
   3277 }
   3278 
   3279 #ifdef __VSX__
   3280 static __inline__ vector signed long long __ATTRS_o_ai
   3281 vec_div(vector signed long long __a, vector signed long long __b) {
   3282   return __a / __b;
   3283 }
   3284 
   3285 static __inline__ vector unsigned long long __ATTRS_o_ai
   3286 vec_div(vector unsigned long long __a, vector unsigned long long __b) {
   3287   return __a / __b;
   3288 }
   3289 
   3290 static __inline__ vector float __ATTRS_o_ai vec_div(vector float __a,
   3291                                                     vector float __b) {
   3292   return __a / __b;
   3293 }
   3294 
   3295 static __inline__ vector double __ATTRS_o_ai vec_div(vector double __a,
   3296                                                      vector double __b) {
   3297   return __a / __b;
   3298 }
   3299 #endif
   3300 
   3301 /* vec_dss */
   3302 
   3303 static __inline__ void __attribute__((__always_inline__)) vec_dss(int __a) {
   3304   __builtin_altivec_dss(__a);
   3305 }
   3306 
   3307 /* vec_dssall */
   3308 
   3309 static __inline__ void __attribute__((__always_inline__)) vec_dssall(void) {
   3310   __builtin_altivec_dssall();
   3311 }
   3312 
   3313 /* vec_dst */
   3314 #define vec_dst(__PTR, __CW, __STR) \
   3315   __extension__(                    \
   3316       { __builtin_altivec_dst((const void *)(__PTR), (__CW), (__STR)); })
   3317 
   3318 /* vec_dstst */
   3319 #define vec_dstst(__PTR, __CW, __STR) \
   3320   __extension__(                      \
   3321       { __builtin_altivec_dstst((const void *)(__PTR), (__CW), (__STR)); })
   3322 
   3323 /* vec_dststt */
   3324 #define vec_dststt(__PTR, __CW, __STR) \
   3325   __extension__(                       \
   3326       { __builtin_altivec_dststt((const void *)(__PTR), (__CW), (__STR)); })
   3327 
   3328 /* vec_dstt */
   3329 #define vec_dstt(__PTR, __CW, __STR) \
   3330   __extension__(                     \
   3331       { __builtin_altivec_dstt((const void *)(__PTR), (__CW), (__STR)); })
   3332 
   3333 /* vec_eqv */
   3334 
   3335 #ifdef __POWER8_VECTOR__
   3336 static __inline__ vector signed char __ATTRS_o_ai
   3337 vec_eqv(vector signed char __a, vector signed char __b) {
   3338   return (vector signed char)__builtin_vsx_xxleqv((vector unsigned int)__a,
   3339                                                   (vector unsigned int)__b);
   3340 }
   3341 
   3342 static __inline__ vector unsigned char __ATTRS_o_ai
   3343 vec_eqv(vector unsigned char __a, vector unsigned char __b) {
   3344   return (vector unsigned char)__builtin_vsx_xxleqv((vector unsigned int)__a,
   3345                                                     (vector unsigned int)__b);
   3346 }
   3347 
   3348 static __inline__ vector bool char __ATTRS_o_ai vec_eqv(vector bool char __a,
   3349                                                         vector bool char __b) {
   3350   return (vector bool char)__builtin_vsx_xxleqv((vector unsigned int)__a,
   3351                                                 (vector unsigned int)__b);
   3352 }
   3353 
   3354 static __inline__ vector signed short __ATTRS_o_ai
   3355 vec_eqv(vector signed short __a, vector signed short __b) {
   3356   return (vector signed short)__builtin_vsx_xxleqv((vector unsigned int)__a,
   3357                                                    (vector unsigned int)__b);
   3358 }
   3359 
   3360 static __inline__ vector unsigned short __ATTRS_o_ai
   3361 vec_eqv(vector unsigned short __a, vector unsigned short __b) {
   3362   return (vector unsigned short)__builtin_vsx_xxleqv((vector unsigned int)__a,
   3363                                                      (vector unsigned int)__b);
   3364 }
   3365 
   3366 static __inline__ vector bool short __ATTRS_o_ai
   3367 vec_eqv(vector bool short __a, vector bool short __b) {
   3368   return (vector bool short)__builtin_vsx_xxleqv((vector unsigned int)__a,
   3369                                                  (vector unsigned int)__b);
   3370 }
   3371 
   3372 static __inline__ vector signed int __ATTRS_o_ai
   3373 vec_eqv(vector signed int __a, vector signed int __b) {
   3374   return (vector signed int)__builtin_vsx_xxleqv((vector unsigned int)__a,
   3375                                                  (vector unsigned int)__b);
   3376 }
   3377 
   3378 static __inline__ vector unsigned int __ATTRS_o_ai
   3379 vec_eqv(vector unsigned int __a, vector unsigned int __b) {
   3380   return __builtin_vsx_xxleqv(__a, __b);
   3381 }
   3382 
   3383 static __inline__ vector bool int __ATTRS_o_ai vec_eqv(vector bool int __a,
   3384                                                        vector bool int __b) {
   3385   return (vector bool int)__builtin_vsx_xxleqv((vector unsigned int)__a,
   3386                                                (vector unsigned int)__b);
   3387 }
   3388 
   3389 static __inline__ vector signed long long __ATTRS_o_ai
   3390 vec_eqv(vector signed long long __a, vector signed long long __b) {
   3391   return (vector signed long long)__builtin_vsx_xxleqv(
   3392       (vector unsigned int)__a, (vector unsigned int)__b);
   3393 }
   3394 
   3395 static __inline__ vector unsigned long long __ATTRS_o_ai
   3396 vec_eqv(vector unsigned long long __a, vector unsigned long long __b) {
   3397   return (vector unsigned long long)__builtin_vsx_xxleqv(
   3398       (vector unsigned int)__a, (vector unsigned int)__b);
   3399 }
   3400 
   3401 static __inline__ vector bool long long __ATTRS_o_ai
   3402 vec_eqv(vector bool long long __a, vector bool long long __b) {
   3403   return (vector bool long long)__builtin_vsx_xxleqv((vector unsigned int)__a,
   3404                                                      (vector unsigned int)__b);
   3405 }
   3406 
   3407 static __inline__ vector float __ATTRS_o_ai vec_eqv(vector float __a,
   3408                                                     vector float __b) {
   3409   return (vector float)__builtin_vsx_xxleqv((vector unsigned int)__a,
   3410                                             (vector unsigned int)__b);
   3411 }
   3412 
   3413 static __inline__ vector double __ATTRS_o_ai vec_eqv(vector double __a,
   3414                                                      vector double __b) {
   3415   return (vector double)__builtin_vsx_xxleqv((vector unsigned int)__a,
   3416                                              (vector unsigned int)__b);
   3417 }
   3418 #endif
   3419 
   3420 /* vec_expte */
   3421 
   3422 static __inline__ vector float __attribute__((__always_inline__))
   3423 vec_expte(vector float __a) {
   3424   return __builtin_altivec_vexptefp(__a);
   3425 }
   3426 
   3427 /* vec_vexptefp */
   3428 
   3429 static __inline__ vector float __attribute__((__always_inline__))
   3430 vec_vexptefp(vector float __a) {
   3431   return __builtin_altivec_vexptefp(__a);
   3432 }
   3433 
   3434 /* vec_floor */
   3435 
   3436 static __inline__ vector float __ATTRS_o_ai vec_floor(vector float __a) {
   3437 #ifdef __VSX__
   3438   return __builtin_vsx_xvrspim(__a);
   3439 #else
   3440   return __builtin_altivec_vrfim(__a);
   3441 #endif
   3442 }
   3443 
   3444 #ifdef __VSX__
   3445 static __inline__ vector double __ATTRS_o_ai vec_floor(vector double __a) {
   3446   return __builtin_vsx_xvrdpim(__a);
   3447 }
   3448 #endif
   3449 
   3450 /* vec_vrfim */
   3451 
   3452 static __inline__ vector float __attribute__((__always_inline__))
   3453 vec_vrfim(vector float __a) {
   3454   return __builtin_altivec_vrfim(__a);
   3455 }
   3456 
   3457 /* vec_ld */
   3458 
   3459 static __inline__ vector signed char __ATTRS_o_ai
   3460 vec_ld(int __a, const vector signed char *__b) {
   3461   return (vector signed char)__builtin_altivec_lvx(__a, __b);
   3462 }
   3463 
   3464 static __inline__ vector signed char __ATTRS_o_ai
   3465 vec_ld(int __a, const signed char *__b) {
   3466   return (vector signed char)__builtin_altivec_lvx(__a, __b);
   3467 }
   3468 
   3469 static __inline__ vector unsigned char __ATTRS_o_ai
   3470 vec_ld(int __a, const vector unsigned char *__b) {
   3471   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
   3472 }
   3473 
   3474 static __inline__ vector unsigned char __ATTRS_o_ai
   3475 vec_ld(int __a, const unsigned char *__b) {
   3476   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
   3477 }
   3478 
   3479 static __inline__ vector bool char __ATTRS_o_ai
   3480 vec_ld(int __a, const vector bool char *__b) {
   3481   return (vector bool char)__builtin_altivec_lvx(__a, __b);
   3482 }
   3483 
   3484 static __inline__ vector short __ATTRS_o_ai vec_ld(int __a,
   3485                                                    const vector short *__b) {
   3486   return (vector short)__builtin_altivec_lvx(__a, __b);
   3487 }
   3488 
   3489 static __inline__ vector short __ATTRS_o_ai vec_ld(int __a, const short *__b) {
   3490   return (vector short)__builtin_altivec_lvx(__a, __b);
   3491 }
   3492 
   3493 static __inline__ vector unsigned short __ATTRS_o_ai
   3494 vec_ld(int __a, const vector unsigned short *__b) {
   3495   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
   3496 }
   3497 
   3498 static __inline__ vector unsigned short __ATTRS_o_ai
   3499 vec_ld(int __a, const unsigned short *__b) {
   3500   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
   3501 }
   3502 
   3503 static __inline__ vector bool short __ATTRS_o_ai
   3504 vec_ld(int __a, const vector bool short *__b) {
   3505   return (vector bool short)__builtin_altivec_lvx(__a, __b);
   3506 }
   3507 
   3508 static __inline__ vector pixel __ATTRS_o_ai vec_ld(int __a,
   3509                                                    const vector pixel *__b) {
   3510   return (vector pixel)__builtin_altivec_lvx(__a, __b);
   3511 }
   3512 
   3513 static __inline__ vector int __ATTRS_o_ai vec_ld(int __a,
   3514                                                  const vector int *__b) {
   3515   return (vector int)__builtin_altivec_lvx(__a, __b);
   3516 }
   3517 
   3518 static __inline__ vector int __ATTRS_o_ai vec_ld(int __a, const int *__b) {
   3519   return (vector int)__builtin_altivec_lvx(__a, __b);
   3520 }
   3521 
   3522 static __inline__ vector unsigned int __ATTRS_o_ai
   3523 vec_ld(int __a, const vector unsigned int *__b) {
   3524   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
   3525 }
   3526 
   3527 static __inline__ vector unsigned int __ATTRS_o_ai
   3528 vec_ld(int __a, const unsigned int *__b) {
   3529   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
   3530 }
   3531 
   3532 static __inline__ vector bool int __ATTRS_o_ai
   3533 vec_ld(int __a, const vector bool int *__b) {
   3534   return (vector bool int)__builtin_altivec_lvx(__a, __b);
   3535 }
   3536 
   3537 static __inline__ vector float __ATTRS_o_ai vec_ld(int __a,
   3538                                                    const vector float *__b) {
   3539   return (vector float)__builtin_altivec_lvx(__a, __b);
   3540 }
   3541 
   3542 static __inline__ vector float __ATTRS_o_ai vec_ld(int __a, const float *__b) {
   3543   return (vector float)__builtin_altivec_lvx(__a, __b);
   3544 }
   3545 
   3546 /* vec_lvx */
   3547 
   3548 static __inline__ vector signed char __ATTRS_o_ai
   3549 vec_lvx(int __a, const vector signed char *__b) {
   3550   return (vector signed char)__builtin_altivec_lvx(__a, __b);
   3551 }
   3552 
   3553 static __inline__ vector signed char __ATTRS_o_ai
   3554 vec_lvx(int __a, const signed char *__b) {
   3555   return (vector signed char)__builtin_altivec_lvx(__a, __b);
   3556 }
   3557 
   3558 static __inline__ vector unsigned char __ATTRS_o_ai
   3559 vec_lvx(int __a, const vector unsigned char *__b) {
   3560   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
   3561 }
   3562 
   3563 static __inline__ vector unsigned char __ATTRS_o_ai
   3564 vec_lvx(int __a, const unsigned char *__b) {
   3565   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
   3566 }
   3567 
   3568 static __inline__ vector bool char __ATTRS_o_ai
   3569 vec_lvx(int __a, const vector bool char *__b) {
   3570   return (vector bool char)__builtin_altivec_lvx(__a, __b);
   3571 }
   3572 
   3573 static __inline__ vector short __ATTRS_o_ai vec_lvx(int __a,
   3574                                                     const vector short *__b) {
   3575   return (vector short)__builtin_altivec_lvx(__a, __b);
   3576 }
   3577 
   3578 static __inline__ vector short __ATTRS_o_ai vec_lvx(int __a, const short *__b) {
   3579   return (vector short)__builtin_altivec_lvx(__a, __b);
   3580 }
   3581 
   3582 static __inline__ vector unsigned short __ATTRS_o_ai
   3583 vec_lvx(int __a, const vector unsigned short *__b) {
   3584   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
   3585 }
   3586 
   3587 static __inline__ vector unsigned short __ATTRS_o_ai
   3588 vec_lvx(int __a, const unsigned short *__b) {
   3589   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
   3590 }
   3591 
   3592 static __inline__ vector bool short __ATTRS_o_ai
   3593 vec_lvx(int __a, const vector bool short *__b) {
   3594   return (vector bool short)__builtin_altivec_lvx(__a, __b);
   3595 }
   3596 
   3597 static __inline__ vector pixel __ATTRS_o_ai vec_lvx(int __a,
   3598                                                     const vector pixel *__b) {
   3599   return (vector pixel)__builtin_altivec_lvx(__a, __b);
   3600 }
   3601 
   3602 static __inline__ vector int __ATTRS_o_ai vec_lvx(int __a,
   3603                                                   const vector int *__b) {
   3604   return (vector int)__builtin_altivec_lvx(__a, __b);
   3605 }
   3606 
   3607 static __inline__ vector int __ATTRS_o_ai vec_lvx(int __a, const int *__b) {
   3608   return (vector int)__builtin_altivec_lvx(__a, __b);
   3609 }
   3610 
   3611 static __inline__ vector unsigned int __ATTRS_o_ai
   3612 vec_lvx(int __a, const vector unsigned int *__b) {
   3613   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
   3614 }
   3615 
   3616 static __inline__ vector unsigned int __ATTRS_o_ai
   3617 vec_lvx(int __a, const unsigned int *__b) {
   3618   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
   3619 }
   3620 
   3621 static __inline__ vector bool int __ATTRS_o_ai
   3622 vec_lvx(int __a, const vector bool int *__b) {
   3623   return (vector bool int)__builtin_altivec_lvx(__a, __b);
   3624 }
   3625 
   3626 static __inline__ vector float __ATTRS_o_ai vec_lvx(int __a,
   3627                                                     const vector float *__b) {
   3628   return (vector float)__builtin_altivec_lvx(__a, __b);
   3629 }
   3630 
   3631 static __inline__ vector float __ATTRS_o_ai vec_lvx(int __a, const float *__b) {
   3632   return (vector float)__builtin_altivec_lvx(__a, __b);
   3633 }
   3634 
   3635 /* vec_lde */
   3636 
   3637 static __inline__ vector signed char __ATTRS_o_ai
   3638 vec_lde(int __a, const signed char *__b) {
   3639   return (vector signed char)__builtin_altivec_lvebx(__a, __b);
   3640 }
   3641 
   3642 static __inline__ vector unsigned char __ATTRS_o_ai
   3643 vec_lde(int __a, const unsigned char *__b) {
   3644   return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
   3645 }
   3646 
   3647 static __inline__ vector short __ATTRS_o_ai vec_lde(int __a, const short *__b) {
   3648   return (vector short)__builtin_altivec_lvehx(__a, __b);
   3649 }
   3650 
   3651 static __inline__ vector unsigned short __ATTRS_o_ai
   3652 vec_lde(int __a, const unsigned short *__b) {
   3653   return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
   3654 }
   3655 
   3656 static __inline__ vector int __ATTRS_o_ai vec_lde(int __a, const int *__b) {
   3657   return (vector int)__builtin_altivec_lvewx(__a, __b);
   3658 }
   3659 
   3660 static __inline__ vector unsigned int __ATTRS_o_ai
   3661 vec_lde(int __a, const unsigned int *__b) {
   3662   return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
   3663 }
   3664 
   3665 static __inline__ vector float __ATTRS_o_ai vec_lde(int __a, const float *__b) {
   3666   return (vector float)__builtin_altivec_lvewx(__a, __b);
   3667 }
   3668 
   3669 /* vec_lvebx */
   3670 
   3671 static __inline__ vector signed char __ATTRS_o_ai
   3672 vec_lvebx(int __a, const signed char *__b) {
   3673   return (vector signed char)__builtin_altivec_lvebx(__a, __b);
   3674 }
   3675 
   3676 static __inline__ vector unsigned char __ATTRS_o_ai
   3677 vec_lvebx(int __a, const unsigned char *__b) {
   3678   return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
   3679 }
   3680 
   3681 /* vec_lvehx */
   3682 
   3683 static __inline__ vector short __ATTRS_o_ai vec_lvehx(int __a,
   3684                                                       const short *__b) {
   3685   return (vector short)__builtin_altivec_lvehx(__a, __b);
   3686 }
   3687 
   3688 static __inline__ vector unsigned short __ATTRS_o_ai
   3689 vec_lvehx(int __a, const unsigned short *__b) {
   3690   return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
   3691 }
   3692 
   3693 /* vec_lvewx */
   3694 
   3695 static __inline__ vector int __ATTRS_o_ai vec_lvewx(int __a, const int *__b) {
   3696   return (vector int)__builtin_altivec_lvewx(__a, __b);
   3697 }
   3698 
   3699 static __inline__ vector unsigned int __ATTRS_o_ai
   3700 vec_lvewx(int __a, const unsigned int *__b) {
   3701   return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
   3702 }
   3703 
   3704 static __inline__ vector float __ATTRS_o_ai vec_lvewx(int __a,
   3705                                                       const float *__b) {
   3706   return (vector float)__builtin_altivec_lvewx(__a, __b);
   3707 }
   3708 
   3709 /* vec_ldl */
   3710 
   3711 static __inline__ vector signed char __ATTRS_o_ai
   3712 vec_ldl(int __a, const vector signed char *__b) {
   3713   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
   3714 }
   3715 
   3716 static __inline__ vector signed char __ATTRS_o_ai
   3717 vec_ldl(int __a, const signed char *__b) {
   3718   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
   3719 }
   3720 
   3721 static __inline__ vector unsigned char __ATTRS_o_ai
   3722 vec_ldl(int __a, const vector unsigned char *__b) {
   3723   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
   3724 }
   3725 
   3726 static __inline__ vector unsigned char __ATTRS_o_ai
   3727 vec_ldl(int __a, const unsigned char *__b) {
   3728   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
   3729 }
   3730 
   3731 static __inline__ vector bool char __ATTRS_o_ai
   3732 vec_ldl(int __a, const vector bool char *__b) {
   3733   return (vector bool char)__builtin_altivec_lvxl(__a, __b);
   3734 }
   3735 
   3736 static __inline__ vector short __ATTRS_o_ai vec_ldl(int __a,
   3737                                                     const vector short *__b) {
   3738   return (vector short)__builtin_altivec_lvxl(__a, __b);
   3739 }
   3740 
   3741 static __inline__ vector short __ATTRS_o_ai vec_ldl(int __a, const short *__b) {
   3742   return (vector short)__builtin_altivec_lvxl(__a, __b);
   3743 }
   3744 
   3745 static __inline__ vector unsigned short __ATTRS_o_ai
   3746 vec_ldl(int __a, const vector unsigned short *__b) {
   3747   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
   3748 }
   3749 
   3750 static __inline__ vector unsigned short __ATTRS_o_ai
   3751 vec_ldl(int __a, const unsigned short *__b) {
   3752   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
   3753 }
   3754 
   3755 static __inline__ vector bool short __ATTRS_o_ai
   3756 vec_ldl(int __a, const vector bool short *__b) {
   3757   return (vector bool short)__builtin_altivec_lvxl(__a, __b);
   3758 }
   3759 
   3760 static __inline__ vector pixel __ATTRS_o_ai vec_ldl(int __a,
   3761                                                     const vector pixel *__b) {
   3762   return (vector pixel short)__builtin_altivec_lvxl(__a, __b);
   3763 }
   3764 
   3765 static __inline__ vector int __ATTRS_o_ai vec_ldl(int __a,
   3766                                                   const vector int *__b) {
   3767   return (vector int)__builtin_altivec_lvxl(__a, __b);
   3768 }
   3769 
   3770 static __inline__ vector int __ATTRS_o_ai vec_ldl(int __a, const int *__b) {
   3771   return (vector int)__builtin_altivec_lvxl(__a, __b);
   3772 }
   3773 
   3774 static __inline__ vector unsigned int __ATTRS_o_ai
   3775 vec_ldl(int __a, const vector unsigned int *__b) {
   3776   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
   3777 }
   3778 
   3779 static __inline__ vector unsigned int __ATTRS_o_ai
   3780 vec_ldl(int __a, const unsigned int *__b) {
   3781   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
   3782 }
   3783 
   3784 static __inline__ vector bool int __ATTRS_o_ai
   3785 vec_ldl(int __a, const vector bool int *__b) {
   3786   return (vector bool int)__builtin_altivec_lvxl(__a, __b);
   3787 }
   3788 
   3789 static __inline__ vector float __ATTRS_o_ai vec_ldl(int __a,
   3790                                                     const vector float *__b) {
   3791   return (vector float)__builtin_altivec_lvxl(__a, __b);
   3792 }
   3793 
   3794 static __inline__ vector float __ATTRS_o_ai vec_ldl(int __a, const float *__b) {
   3795   return (vector float)__builtin_altivec_lvxl(__a, __b);
   3796 }
   3797 
   3798 /* vec_lvxl */
   3799 
   3800 static __inline__ vector signed char __ATTRS_o_ai
   3801 vec_lvxl(int __a, const vector signed char *__b) {
   3802   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
   3803 }
   3804 
   3805 static __inline__ vector signed char __ATTRS_o_ai
   3806 vec_lvxl(int __a, const signed char *__b) {
   3807   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
   3808 }
   3809 
   3810 static __inline__ vector unsigned char __ATTRS_o_ai
   3811 vec_lvxl(int __a, const vector unsigned char *__b) {
   3812   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
   3813 }
   3814 
   3815 static __inline__ vector unsigned char __ATTRS_o_ai
   3816 vec_lvxl(int __a, const unsigned char *__b) {
   3817   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
   3818 }
   3819 
   3820 static __inline__ vector bool char __ATTRS_o_ai
   3821 vec_lvxl(int __a, const vector bool char *__b) {
   3822   return (vector bool char)__builtin_altivec_lvxl(__a, __b);
   3823 }
   3824 
   3825 static __inline__ vector short __ATTRS_o_ai vec_lvxl(int __a,
   3826                                                      const vector short *__b) {
   3827   return (vector short)__builtin_altivec_lvxl(__a, __b);
   3828 }
   3829 
   3830 static __inline__ vector short __ATTRS_o_ai vec_lvxl(int __a,
   3831                                                      const short *__b) {
   3832   return (vector short)__builtin_altivec_lvxl(__a, __b);
   3833 }
   3834 
   3835 static __inline__ vector unsigned short __ATTRS_o_ai
   3836 vec_lvxl(int __a, const vector unsigned short *__b) {
   3837   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
   3838 }
   3839 
   3840 static __inline__ vector unsigned short __ATTRS_o_ai
   3841 vec_lvxl(int __a, const unsigned short *__b) {
   3842   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
   3843 }
   3844 
   3845 static __inline__ vector bool short __ATTRS_o_ai
   3846 vec_lvxl(int __a, const vector bool short *__b) {
   3847   return (vector bool short)__builtin_altivec_lvxl(__a, __b);
   3848 }
   3849 
   3850 static __inline__ vector pixel __ATTRS_o_ai vec_lvxl(int __a,
   3851                                                      const vector pixel *__b) {
   3852   return (vector pixel)__builtin_altivec_lvxl(__a, __b);
   3853 }
   3854 
   3855 static __inline__ vector int __ATTRS_o_ai vec_lvxl(int __a,
   3856                                                    const vector int *__b) {
   3857   return (vector int)__builtin_altivec_lvxl(__a, __b);
   3858 }
   3859 
   3860 static __inline__ vector int __ATTRS_o_ai vec_lvxl(int __a, const int *__b) {
   3861   return (vector int)__builtin_altivec_lvxl(__a, __b);
   3862 }
   3863 
   3864 static __inline__ vector unsigned int __ATTRS_o_ai
   3865 vec_lvxl(int __a, const vector unsigned int *__b) {
   3866   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
   3867 }
   3868 
   3869 static __inline__ vector unsigned int __ATTRS_o_ai
   3870 vec_lvxl(int __a, const unsigned int *__b) {
   3871   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
   3872 }
   3873 
   3874 static __inline__ vector bool int __ATTRS_o_ai
   3875 vec_lvxl(int __a, const vector bool int *__b) {
   3876   return (vector bool int)__builtin_altivec_lvxl(__a, __b);
   3877 }
   3878 
   3879 static __inline__ vector float __ATTRS_o_ai vec_lvxl(int __a,
   3880                                                      const vector float *__b) {
   3881   return (vector float)__builtin_altivec_lvxl(__a, __b);
   3882 }
   3883 
   3884 static __inline__ vector float __ATTRS_o_ai vec_lvxl(int __a,
   3885                                                      const float *__b) {
   3886   return (vector float)__builtin_altivec_lvxl(__a, __b);
   3887 }
   3888 
   3889 /* vec_loge */
   3890 
   3891 static __inline__ vector float __attribute__((__always_inline__))
   3892 vec_loge(vector float __a) {
   3893   return __builtin_altivec_vlogefp(__a);
   3894 }
   3895 
   3896 /* vec_vlogefp */
   3897 
   3898 static __inline__ vector float __attribute__((__always_inline__))
   3899 vec_vlogefp(vector float __a) {
   3900   return __builtin_altivec_vlogefp(__a);
   3901 }
   3902 
   3903 /* vec_lvsl */
   3904 
   3905 #ifdef __LITTLE_ENDIAN__
   3906 static __inline__ vector unsigned char __ATTRS_o_ai
   3907     __attribute__((__deprecated__("use assignment for unaligned little endian \
   3908 loads/stores"))) vec_lvsl(int __a, const signed char *__b) {
   3909   vector unsigned char mask =
   3910       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   3911   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   3912                                   7,  6,  5,  4,  3,  2,  1, 0};
   3913   return vec_perm(mask, mask, reverse);
   3914 }
   3915 #else
   3916 static __inline__ vector unsigned char __ATTRS_o_ai
   3917 vec_lvsl(int __a, const signed char *__b) {
   3918   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   3919 }
   3920 #endif
   3921 
   3922 #ifdef __LITTLE_ENDIAN__
   3923 static __inline__ vector unsigned char __ATTRS_o_ai
   3924     __attribute__((__deprecated__("use assignment for unaligned little endian \
   3925 loads/stores"))) vec_lvsl(int __a, const unsigned char *__b) {
   3926   vector unsigned char mask =
   3927       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   3928   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   3929                                   7,  6,  5,  4,  3,  2,  1, 0};
   3930   return vec_perm(mask, mask, reverse);
   3931 }
   3932 #else
   3933 static __inline__ vector unsigned char __ATTRS_o_ai
   3934 vec_lvsl(int __a, const unsigned char *__b) {
   3935   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   3936 }
   3937 #endif
   3938 
   3939 #ifdef __LITTLE_ENDIAN__
   3940 static __inline__ vector unsigned char __ATTRS_o_ai
   3941     __attribute__((__deprecated__("use assignment for unaligned little endian \
   3942 loads/stores"))) vec_lvsl(int __a, const short *__b) {
   3943   vector unsigned char mask =
   3944       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   3945   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   3946                                   7,  6,  5,  4,  3,  2,  1, 0};
   3947   return vec_perm(mask, mask, reverse);
   3948 }
   3949 #else
   3950 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
   3951                                                              const short *__b) {
   3952   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   3953 }
   3954 #endif
   3955 
   3956 #ifdef __LITTLE_ENDIAN__
   3957 static __inline__ vector unsigned char __ATTRS_o_ai
   3958     __attribute__((__deprecated__("use assignment for unaligned little endian \
   3959 loads/stores"))) vec_lvsl(int __a, const unsigned short *__b) {
   3960   vector unsigned char mask =
   3961       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   3962   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   3963                                   7,  6,  5,  4,  3,  2,  1, 0};
   3964   return vec_perm(mask, mask, reverse);
   3965 }
   3966 #else
   3967 static __inline__ vector unsigned char __ATTRS_o_ai
   3968 vec_lvsl(int __a, const unsigned short *__b) {
   3969   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   3970 }
   3971 #endif
   3972 
   3973 #ifdef __LITTLE_ENDIAN__
   3974 static __inline__ vector unsigned char __ATTRS_o_ai
   3975     __attribute__((__deprecated__("use assignment for unaligned little endian \
   3976 loads/stores"))) vec_lvsl(int __a, const int *__b) {
   3977   vector unsigned char mask =
   3978       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   3979   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   3980                                   7,  6,  5,  4,  3,  2,  1, 0};
   3981   return vec_perm(mask, mask, reverse);
   3982 }
   3983 #else
   3984 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
   3985                                                              const int *__b) {
   3986   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   3987 }
   3988 #endif
   3989 
   3990 #ifdef __LITTLE_ENDIAN__
   3991 static __inline__ vector unsigned char __ATTRS_o_ai
   3992     __attribute__((__deprecated__("use assignment for unaligned little endian \
   3993 loads/stores"))) vec_lvsl(int __a, const unsigned int *__b) {
   3994   vector unsigned char mask =
   3995       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   3996   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   3997                                   7,  6,  5,  4,  3,  2,  1, 0};
   3998   return vec_perm(mask, mask, reverse);
   3999 }
   4000 #else
   4001 static __inline__ vector unsigned char __ATTRS_o_ai
   4002 vec_lvsl(int __a, const unsigned int *__b) {
   4003   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   4004 }
   4005 #endif
   4006 
   4007 #ifdef __LITTLE_ENDIAN__
   4008 static __inline__ vector unsigned char __ATTRS_o_ai
   4009     __attribute__((__deprecated__("use assignment for unaligned little endian \
   4010 loads/stores"))) vec_lvsl(int __a, const float *__b) {
   4011   vector unsigned char mask =
   4012       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   4013   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   4014                                   7,  6,  5,  4,  3,  2,  1, 0};
   4015   return vec_perm(mask, mask, reverse);
   4016 }
   4017 #else
   4018 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
   4019                                                              const float *__b) {
   4020   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
   4021 }
   4022 #endif
   4023 
   4024 /* vec_lvsr */
   4025 
   4026 #ifdef __LITTLE_ENDIAN__
   4027 static __inline__ vector unsigned char __ATTRS_o_ai
   4028     __attribute__((__deprecated__("use assignment for unaligned little endian \
   4029 loads/stores"))) vec_lvsr(int __a, const signed char *__b) {
   4030   vector unsigned char mask =
   4031       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   4032   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   4033                                   7,  6,  5,  4,  3,  2,  1, 0};
   4034   return vec_perm(mask, mask, reverse);
   4035 }
   4036 #else
   4037 static __inline__ vector unsigned char __ATTRS_o_ai
   4038 vec_lvsr(int __a, const signed char *__b) {
   4039   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   4040 }
   4041 #endif
   4042 
   4043 #ifdef __LITTLE_ENDIAN__
   4044 static __inline__ vector unsigned char __ATTRS_o_ai
   4045     __attribute__((__deprecated__("use assignment for unaligned little endian \
   4046 loads/stores"))) vec_lvsr(int __a, const unsigned char *__b) {
   4047   vector unsigned char mask =
   4048       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   4049   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   4050                                   7,  6,  5,  4,  3,  2,  1, 0};
   4051   return vec_perm(mask, mask, reverse);
   4052 }
   4053 #else
   4054 static __inline__ vector unsigned char __ATTRS_o_ai
   4055 vec_lvsr(int __a, const unsigned char *__b) {
   4056   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   4057 }
   4058 #endif
   4059 
   4060 #ifdef __LITTLE_ENDIAN__
   4061 static __inline__ vector unsigned char __ATTRS_o_ai
   4062     __attribute__((__deprecated__("use assignment for unaligned little endian \
   4063 loads/stores"))) vec_lvsr(int __a, const short *__b) {
   4064   vector unsigned char mask =
   4065       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   4066   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   4067                                   7,  6,  5,  4,  3,  2,  1, 0};
   4068   return vec_perm(mask, mask, reverse);
   4069 }
   4070 #else
   4071 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
   4072                                                              const short *__b) {
   4073   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   4074 }
   4075 #endif
   4076 
   4077 #ifdef __LITTLE_ENDIAN__
   4078 static __inline__ vector unsigned char __ATTRS_o_ai
   4079     __attribute__((__deprecated__("use assignment for unaligned little endian \
   4080 loads/stores"))) vec_lvsr(int __a, const unsigned short *__b) {
   4081   vector unsigned char mask =
   4082       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   4083   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   4084                                   7,  6,  5,  4,  3,  2,  1, 0};
   4085   return vec_perm(mask, mask, reverse);
   4086 }
   4087 #else
   4088 static __inline__ vector unsigned char __ATTRS_o_ai
   4089 vec_lvsr(int __a, const unsigned short *__b) {
   4090   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   4091 }
   4092 #endif
   4093 
   4094 #ifdef __LITTLE_ENDIAN__
   4095 static __inline__ vector unsigned char __ATTRS_o_ai
   4096     __attribute__((__deprecated__("use assignment for unaligned little endian \
   4097 loads/stores"))) vec_lvsr(int __a, const int *__b) {
   4098   vector unsigned char mask =
   4099       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   4100   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   4101                                   7,  6,  5,  4,  3,  2,  1, 0};
   4102   return vec_perm(mask, mask, reverse);
   4103 }
   4104 #else
   4105 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
   4106                                                              const int *__b) {
   4107   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   4108 }
   4109 #endif
   4110 
   4111 #ifdef __LITTLE_ENDIAN__
   4112 static __inline__ vector unsigned char __ATTRS_o_ai
   4113     __attribute__((__deprecated__("use assignment for unaligned little endian \
   4114 loads/stores"))) vec_lvsr(int __a, const unsigned int *__b) {
   4115   vector unsigned char mask =
   4116       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   4117   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   4118                                   7,  6,  5,  4,  3,  2,  1, 0};
   4119   return vec_perm(mask, mask, reverse);
   4120 }
   4121 #else
   4122 static __inline__ vector unsigned char __ATTRS_o_ai
   4123 vec_lvsr(int __a, const unsigned int *__b) {
   4124   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   4125 }
   4126 #endif
   4127 
   4128 #ifdef __LITTLE_ENDIAN__
   4129 static __inline__ vector unsigned char __ATTRS_o_ai
   4130     __attribute__((__deprecated__("use assignment for unaligned little endian \
   4131 loads/stores"))) vec_lvsr(int __a, const float *__b) {
   4132   vector unsigned char mask =
   4133       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   4134   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
   4135                                   7,  6,  5,  4,  3,  2,  1, 0};
   4136   return vec_perm(mask, mask, reverse);
   4137 }
   4138 #else
   4139 static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
   4140                                                              const float *__b) {
   4141   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
   4142 }
   4143 #endif
   4144 
   4145 /* vec_madd */
   4146 static __inline__ vector signed short __ATTRS_o_ai
   4147 vec_mladd(vector signed short, vector signed short, vector signed short);
   4148 static __inline__ vector signed short __ATTRS_o_ai
   4149 vec_mladd(vector signed short, vector unsigned short, vector unsigned short);
   4150 static __inline__ vector signed short __ATTRS_o_ai
   4151 vec_mladd(vector unsigned short, vector signed short, vector signed short);
   4152 static __inline__ vector unsigned short __ATTRS_o_ai
   4153 vec_mladd(vector unsigned short, vector unsigned short, vector unsigned short);
   4154 
   4155 static __inline__ vector signed short __ATTRS_o_ai vec_madd(
   4156     vector signed short __a, vector signed short __b, vector signed short __c) {
   4157   return vec_mladd(__a, __b, __c);
   4158 }
   4159 
   4160 static __inline__ vector signed short __ATTRS_o_ai
   4161 vec_madd(vector signed short __a, vector unsigned short __b,
   4162          vector unsigned short __c) {
   4163   return vec_mladd(__a, __b, __c);
   4164 }
   4165 
   4166 static __inline__ vector signed short __ATTRS_o_ai
   4167 vec_madd(vector unsigned short __a, vector signed short __b,
   4168          vector signed short __c) {
   4169   return vec_mladd(__a, __b, __c);
   4170 }
   4171 
   4172 static __inline__ vector unsigned short __ATTRS_o_ai
   4173 vec_madd(vector unsigned short __a, vector unsigned short __b,
   4174          vector unsigned short __c) {
   4175   return vec_mladd(__a, __b, __c);
   4176 }
   4177 
   4178 static __inline__ vector float __ATTRS_o_ai vec_madd(vector float __a,
   4179                                                      vector float __b,
   4180                                                      vector float __c) {
   4181 #ifdef __VSX__
   4182   return __builtin_vsx_xvmaddasp(__a, __b, __c);
   4183 #else
   4184   return __builtin_altivec_vmaddfp(__a, __b, __c);
   4185 #endif
   4186 }
   4187 
   4188 #ifdef __VSX__
   4189 static __inline__ vector double __ATTRS_o_ai vec_madd(vector double __a,
   4190                                                       vector double __b,
   4191                                                       vector double __c) {
   4192   return __builtin_vsx_xvmaddadp(__a, __b, __c);
   4193 }
   4194 #endif
   4195 
   4196 /* vec_vmaddfp */
   4197 
   4198 static __inline__ vector float __attribute__((__always_inline__))
   4199 vec_vmaddfp(vector float __a, vector float __b, vector float __c) {
   4200   return __builtin_altivec_vmaddfp(__a, __b, __c);
   4201 }
   4202 
   4203 /* vec_madds */
   4204 
   4205 static __inline__ vector signed short __attribute__((__always_inline__))
   4206 vec_madds(vector signed short __a, vector signed short __b,
   4207           vector signed short __c) {
   4208   return __builtin_altivec_vmhaddshs(__a, __b, __c);
   4209 }
   4210 
   4211 /* vec_vmhaddshs */
   4212 static __inline__ vector signed short __attribute__((__always_inline__))
   4213 vec_vmhaddshs(vector signed short __a, vector signed short __b,
   4214               vector signed short __c) {
   4215   return __builtin_altivec_vmhaddshs(__a, __b, __c);
   4216 }
   4217 
   4218 /* vec_msub */
   4219 
   4220 #ifdef __VSX__
   4221 static __inline__ vector float __ATTRS_o_ai vec_msub(vector float __a,
   4222                                                      vector float __b,
   4223                                                      vector float __c) {
   4224   return __builtin_vsx_xvmsubasp(__a, __b, __c);
   4225 }
   4226 
   4227 static __inline__ vector double __ATTRS_o_ai vec_msub(vector double __a,
   4228                                                       vector double __b,
   4229                                                       vector double __c) {
   4230   return __builtin_vsx_xvmsubadp(__a, __b, __c);
   4231 }
   4232 #endif
   4233 
   4234 /* vec_max */
   4235 
   4236 static __inline__ vector signed char __ATTRS_o_ai
   4237 vec_max(vector signed char __a, vector signed char __b) {
   4238   return __builtin_altivec_vmaxsb(__a, __b);
   4239 }
   4240 
   4241 static __inline__ vector signed char __ATTRS_o_ai
   4242 vec_max(vector bool char __a, vector signed char __b) {
   4243   return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
   4244 }
   4245 
   4246 static __inline__ vector signed char __ATTRS_o_ai
   4247 vec_max(vector signed char __a, vector bool char __b) {
   4248   return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
   4249 }
   4250 
   4251 static __inline__ vector unsigned char __ATTRS_o_ai
   4252 vec_max(vector unsigned char __a, vector unsigned char __b) {
   4253   return __builtin_altivec_vmaxub(__a, __b);
   4254 }
   4255 
   4256 static __inline__ vector unsigned char __ATTRS_o_ai
   4257 vec_max(vector bool char __a, vector unsigned char __b) {
   4258   return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
   4259 }
   4260 
   4261 static __inline__ vector unsigned char __ATTRS_o_ai
   4262 vec_max(vector unsigned char __a, vector bool char __b) {
   4263   return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
   4264 }
   4265 
   4266 static __inline__ vector short __ATTRS_o_ai vec_max(vector short __a,
   4267                                                     vector short __b) {
   4268   return __builtin_altivec_vmaxsh(__a, __b);
   4269 }
   4270 
   4271 static __inline__ vector short __ATTRS_o_ai vec_max(vector bool short __a,
   4272                                                     vector short __b) {
   4273   return __builtin_altivec_vmaxsh((vector short)__a, __b);
   4274 }
   4275 
   4276 static __inline__ vector short __ATTRS_o_ai vec_max(vector short __a,
   4277                                                     vector bool short __b) {
   4278   return __builtin_altivec_vmaxsh(__a, (vector short)__b);
   4279 }
   4280 
   4281 static __inline__ vector unsigned short __ATTRS_o_ai
   4282 vec_max(vector unsigned short __a, vector unsigned short __b) {
   4283   return __builtin_altivec_vmaxuh(__a, __b);
   4284 }
   4285 
   4286 static __inline__ vector unsigned short __ATTRS_o_ai
   4287 vec_max(vector bool short __a, vector unsigned short __b) {
   4288   return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
   4289 }
   4290 
   4291 static __inline__ vector unsigned short __ATTRS_o_ai
   4292 vec_max(vector unsigned short __a, vector bool short __b) {
   4293   return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
   4294 }
   4295 
   4296 static __inline__ vector int __ATTRS_o_ai vec_max(vector int __a,
   4297                                                   vector int __b) {
   4298   return __builtin_altivec_vmaxsw(__a, __b);
   4299 }
   4300 
   4301 static __inline__ vector int __ATTRS_o_ai vec_max(vector bool int __a,
   4302                                                   vector int __b) {
   4303   return __builtin_altivec_vmaxsw((vector int)__a, __b);
   4304 }
   4305 
   4306 static __inline__ vector int __ATTRS_o_ai vec_max(vector int __a,
   4307                                                   vector bool int __b) {
   4308   return __builtin_altivec_vmaxsw(__a, (vector int)__b);
   4309 }
   4310 
   4311 static __inline__ vector unsigned int __ATTRS_o_ai
   4312 vec_max(vector unsigned int __a, vector unsigned int __b) {
   4313   return __builtin_altivec_vmaxuw(__a, __b);
   4314 }
   4315 
   4316 static __inline__ vector unsigned int __ATTRS_o_ai
   4317 vec_max(vector bool int __a, vector unsigned int __b) {
   4318   return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
   4319 }
   4320 
   4321 static __inline__ vector unsigned int __ATTRS_o_ai
   4322 vec_max(vector unsigned int __a, vector bool int __b) {
   4323   return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
   4324 }
   4325 
   4326 #ifdef __POWER8_VECTOR__
   4327 static __inline__ vector signed long long __ATTRS_o_ai
   4328 vec_max(vector signed long long __a, vector signed long long __b) {
   4329   return __builtin_altivec_vmaxsd(__a, __b);
   4330 }
   4331 
   4332 static __inline__ vector signed long long __ATTRS_o_ai
   4333 vec_max(vector bool long long __a, vector signed long long __b) {
   4334   return __builtin_altivec_vmaxsd((vector signed long long)__a, __b);
   4335 }
   4336 
   4337 static __inline__ vector signed long long __ATTRS_o_ai
   4338 vec_max(vector signed long long __a, vector bool long long __b) {
   4339   return __builtin_altivec_vmaxsd(__a, (vector signed long long)__b);
   4340 }
   4341 
   4342 static __inline__ vector unsigned long long __ATTRS_o_ai
   4343 vec_max(vector unsigned long long __a, vector unsigned long long __b) {
   4344   return __builtin_altivec_vmaxud(__a, __b);
   4345 }
   4346 
   4347 static __inline__ vector unsigned long long __ATTRS_o_ai
   4348 vec_max(vector bool long long __a, vector unsigned long long __b) {
   4349   return __builtin_altivec_vmaxud((vector unsigned long long)__a, __b);
   4350 }
   4351 
   4352 static __inline__ vector unsigned long long __ATTRS_o_ai
   4353 vec_max(vector unsigned long long __a, vector bool long long __b) {
   4354   return __builtin_altivec_vmaxud(__a, (vector unsigned long long)__b);
   4355 }
   4356 #endif
   4357 
   4358 static __inline__ vector float __ATTRS_o_ai vec_max(vector float __a,
   4359                                                     vector float __b) {
   4360 #ifdef __VSX__
   4361   return __builtin_vsx_xvmaxsp(__a, __b);
   4362 #else
   4363   return __builtin_altivec_vmaxfp(__a, __b);
   4364 #endif
   4365 }
   4366 
   4367 #ifdef __VSX__
   4368 static __inline__ vector double __ATTRS_o_ai vec_max(vector double __a,
   4369                                                      vector double __b) {
   4370   return __builtin_vsx_xvmaxdp(__a, __b);
   4371 }
   4372 #endif
   4373 
   4374 /* vec_vmaxsb */
   4375 
   4376 static __inline__ vector signed char __ATTRS_o_ai
   4377 vec_vmaxsb(vector signed char __a, vector signed char __b) {
   4378   return __builtin_altivec_vmaxsb(__a, __b);
   4379 }
   4380 
   4381 static __inline__ vector signed char __ATTRS_o_ai
   4382 vec_vmaxsb(vector bool char __a, vector signed char __b) {
   4383   return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
   4384 }
   4385 
   4386 static __inline__ vector signed char __ATTRS_o_ai
   4387 vec_vmaxsb(vector signed char __a, vector bool char __b) {
   4388   return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
   4389 }
   4390 
   4391 /* vec_vmaxub */
   4392 
   4393 static __inline__ vector unsigned char __ATTRS_o_ai
   4394 vec_vmaxub(vector unsigned char __a, vector unsigned char __b) {
   4395   return __builtin_altivec_vmaxub(__a, __b);
   4396 }
   4397 
   4398 static __inline__ vector unsigned char __ATTRS_o_ai
   4399 vec_vmaxub(vector bool char __a, vector unsigned char __b) {
   4400   return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
   4401 }
   4402 
   4403 static __inline__ vector unsigned char __ATTRS_o_ai
   4404 vec_vmaxub(vector unsigned char __a, vector bool char __b) {
   4405   return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
   4406 }
   4407 
   4408 /* vec_vmaxsh */
   4409 
   4410 static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector short __a,
   4411                                                        vector short __b) {
   4412   return __builtin_altivec_vmaxsh(__a, __b);
   4413 }
   4414 
   4415 static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector bool short __a,
   4416                                                        vector short __b) {
   4417   return __builtin_altivec_vmaxsh((vector short)__a, __b);
   4418 }
   4419 
   4420 static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector short __a,
   4421                                                        vector bool short __b) {
   4422   return __builtin_altivec_vmaxsh(__a, (vector short)__b);
   4423 }
   4424 
   4425 /* vec_vmaxuh */
   4426 
   4427 static __inline__ vector unsigned short __ATTRS_o_ai
   4428 vec_vmaxuh(vector unsigned short __a, vector unsigned short __b) {
   4429   return __builtin_altivec_vmaxuh(__a, __b);
   4430 }
   4431 
   4432 static __inline__ vector unsigned short __ATTRS_o_ai
   4433 vec_vmaxuh(vector bool short __a, vector unsigned short __b) {
   4434   return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
   4435 }
   4436 
   4437 static __inline__ vector unsigned short __ATTRS_o_ai
   4438 vec_vmaxuh(vector unsigned short __a, vector bool short __b) {
   4439   return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
   4440 }
   4441 
   4442 /* vec_vmaxsw */
   4443 
   4444 static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector int __a,
   4445                                                      vector int __b) {
   4446   return __builtin_altivec_vmaxsw(__a, __b);
   4447 }
   4448 
   4449 static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector bool int __a,
   4450                                                      vector int __b) {
   4451   return __builtin_altivec_vmaxsw((vector int)__a, __b);
   4452 }
   4453 
   4454 static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector int __a,
   4455                                                      vector bool int __b) {
   4456   return __builtin_altivec_vmaxsw(__a, (vector int)__b);
   4457 }
   4458 
   4459 /* vec_vmaxuw */
   4460 
   4461 static __inline__ vector unsigned int __ATTRS_o_ai
   4462 vec_vmaxuw(vector unsigned int __a, vector unsigned int __b) {
   4463   return __builtin_altivec_vmaxuw(__a, __b);
   4464 }
   4465 
   4466 static __inline__ vector unsigned int __ATTRS_o_ai
   4467 vec_vmaxuw(vector bool int __a, vector unsigned int __b) {
   4468   return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
   4469 }
   4470 
   4471 static __inline__ vector unsigned int __ATTRS_o_ai
   4472 vec_vmaxuw(vector unsigned int __a, vector bool int __b) {
   4473   return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
   4474 }
   4475 
   4476 /* vec_vmaxfp */
   4477 
   4478 static __inline__ vector float __attribute__((__always_inline__))
   4479 vec_vmaxfp(vector float __a, vector float __b) {
   4480 #ifdef __VSX__
   4481   return __builtin_vsx_xvmaxsp(__a, __b);
   4482 #else
   4483   return __builtin_altivec_vmaxfp(__a, __b);
   4484 #endif
   4485 }
   4486 
   4487 /* vec_mergeh */
   4488 
   4489 static __inline__ vector signed char __ATTRS_o_ai
   4490 vec_mergeh(vector signed char __a, vector signed char __b) {
   4491   return vec_perm(__a, __b,
   4492                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
   4493                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
   4494                                          0x06, 0x16, 0x07, 0x17));
   4495 }
   4496 
   4497 static __inline__ vector unsigned char __ATTRS_o_ai
   4498 vec_mergeh(vector unsigned char __a, vector unsigned char __b) {
   4499   return vec_perm(__a, __b,
   4500                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
   4501                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
   4502                                          0x06, 0x16, 0x07, 0x17));
   4503 }
   4504 
   4505 static __inline__ vector bool char __ATTRS_o_ai
   4506 vec_mergeh(vector bool char __a, vector bool char __b) {
   4507   return vec_perm(__a, __b,
   4508                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
   4509                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
   4510                                          0x06, 0x16, 0x07, 0x17));
   4511 }
   4512 
   4513 static __inline__ vector short __ATTRS_o_ai vec_mergeh(vector short __a,
   4514                                                        vector short __b) {
   4515   return vec_perm(__a, __b,
   4516                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
   4517                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
   4518                                          0x06, 0x07, 0x16, 0x17));
   4519 }
   4520 
   4521 static __inline__ vector unsigned short __ATTRS_o_ai
   4522 vec_mergeh(vector unsigned short __a, vector unsigned short __b) {
   4523   return vec_perm(__a, __b,
   4524                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
   4525                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
   4526                                          0x06, 0x07, 0x16, 0x17));
   4527 }
   4528 
   4529 static __inline__ vector bool short __ATTRS_o_ai
   4530 vec_mergeh(vector bool short __a, vector bool short __b) {
   4531   return vec_perm(__a, __b,
   4532                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
   4533                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
   4534                                          0x06, 0x07, 0x16, 0x17));
   4535 }
   4536 
   4537 static __inline__ vector pixel __ATTRS_o_ai vec_mergeh(vector pixel __a,
   4538                                                        vector pixel __b) {
   4539   return vec_perm(__a, __b,
   4540                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
   4541                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
   4542                                          0x06, 0x07, 0x16, 0x17));
   4543 }
   4544 
   4545 static __inline__ vector int __ATTRS_o_ai vec_mergeh(vector int __a,
   4546                                                      vector int __b) {
   4547   return vec_perm(__a, __b,
   4548                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   4549                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
   4550                                          0x14, 0x15, 0x16, 0x17));
   4551 }
   4552 
   4553 static __inline__ vector unsigned int __ATTRS_o_ai
   4554 vec_mergeh(vector unsigned int __a, vector unsigned int __b) {
   4555   return vec_perm(__a, __b,
   4556                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   4557                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
   4558                                          0x14, 0x15, 0x16, 0x17));
   4559 }
   4560 
   4561 static __inline__ vector bool int __ATTRS_o_ai vec_mergeh(vector bool int __a,
   4562                                                           vector bool int __b) {
   4563   return vec_perm(__a, __b,
   4564                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   4565                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
   4566                                          0x14, 0x15, 0x16, 0x17));
   4567 }
   4568 
   4569 static __inline__ vector float __ATTRS_o_ai vec_mergeh(vector float __a,
   4570                                                        vector float __b) {
   4571   return vec_perm(__a, __b,
   4572                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   4573                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
   4574                                          0x14, 0x15, 0x16, 0x17));
   4575 }
   4576 
   4577 #ifdef __VSX__
   4578 static __inline__ vector signed long long __ATTRS_o_ai
   4579 vec_mergeh(vector signed long long __a, vector signed long long __b) {
   4580   return vec_perm(__a, __b,
   4581                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   4582                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   4583                                          0x14, 0x15, 0x16, 0x17));
   4584 }
   4585 
   4586 static __inline__ vector signed long long __ATTRS_o_ai
   4587 vec_mergeh(vector signed long long __a, vector bool long long __b) {
   4588   return vec_perm(__a, (vector signed long long)__b,
   4589                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   4590                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   4591                                          0x14, 0x15, 0x16, 0x17));
   4592 }
   4593 
   4594 static __inline__ vector signed long long __ATTRS_o_ai
   4595 vec_mergeh(vector bool long long __a, vector signed long long __b) {
   4596   return vec_perm((vector signed long long)__a, __b,
   4597                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   4598                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   4599                                          0x14, 0x15, 0x16, 0x17));
   4600 }
   4601 
   4602 static __inline__ vector unsigned long long __ATTRS_o_ai
   4603 vec_mergeh(vector unsigned long long __a, vector unsigned long long __b) {
   4604   return vec_perm(__a, __b,
   4605                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   4606                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   4607                                          0x14, 0x15, 0x16, 0x17));
   4608 }
   4609 
   4610 static __inline__ vector unsigned long long __ATTRS_o_ai
   4611 vec_mergeh(vector unsigned long long __a, vector bool long long __b) {
   4612   return vec_perm(__a, (vector unsigned long long)__b,
   4613                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   4614                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   4615                                          0x14, 0x15, 0x16, 0x17));
   4616 }
   4617 
   4618 static __inline__ vector unsigned long long __ATTRS_o_ai
   4619 vec_mergeh(vector bool long long __a, vector unsigned long long __b) {
   4620   return vec_perm((vector unsigned long long)__a, __b,
   4621                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   4622                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   4623                                          0x14, 0x15, 0x16, 0x17));
   4624 }
   4625 
   4626 static __inline__ vector bool long long __ATTRS_o_ai
   4627 vec_mergeh(vector bool long long __a, vector bool long long __b) {
   4628   return vec_perm(__a, __b,
   4629                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   4630                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   4631                                          0x14, 0x15, 0x16, 0x17));
   4632 }
   4633 
   4634 static __inline__ vector double __ATTRS_o_ai vec_mergeh(vector double __a,
   4635                                                         vector double __b) {
   4636   return vec_perm(__a, __b,
   4637                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   4638                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   4639                                          0x14, 0x15, 0x16, 0x17));
   4640 }
   4641 static __inline__ vector double __ATTRS_o_ai
   4642 vec_mergeh(vector double __a, vector bool long long __b) {
   4643   return vec_perm(__a, (vector double)__b,
   4644                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   4645                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   4646                                          0x14, 0x15, 0x16, 0x17));
   4647 }
   4648 static __inline__ vector double __ATTRS_o_ai
   4649 vec_mergeh(vector bool long long __a, vector double __b) {
   4650   return vec_perm((vector double)__a, __b,
   4651                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
   4652                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
   4653                                          0x14, 0x15, 0x16, 0x17));
   4654 }
   4655 #endif
   4656 
   4657 /* vec_vmrghb */
   4658 
   4659 #define __builtin_altivec_vmrghb vec_vmrghb
   4660 
   4661 static __inline__ vector signed char __ATTRS_o_ai
   4662 vec_vmrghb(vector signed char __a, vector signed char __b) {
   4663   return vec_perm(__a, __b,
   4664                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
   4665                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
   4666                                          0x06, 0x16, 0x07, 0x17));
   4667 }
   4668 
   4669 static __inline__ vector unsigned char __ATTRS_o_ai
   4670 vec_vmrghb(vector unsigned char __a, vector unsigned char __b) {
   4671   return vec_perm(__a, __b,
   4672                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
   4673                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
   4674                                          0x06, 0x16, 0x07, 0x17));
   4675 }
   4676 
   4677 static __inline__ vector bool char __ATTRS_o_ai
   4678 vec_vmrghb(vector bool char __a, vector bool char __b) {
   4679   return vec_perm(__a, __b,
   4680                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
   4681                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
   4682                                          0x06, 0x16, 0x07, 0x17));
   4683 }
   4684 
   4685 /* vec_vmrghh */
   4686 
   4687 #define __builtin_altivec_vmrghh vec_vmrghh
   4688 
   4689 static __inline__ vector short __ATTRS_o_ai vec_vmrghh(vector short __a,
   4690                                                        vector short __b) {
   4691   return vec_perm(__a, __b,
   4692                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
   4693                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
   4694                                          0x06, 0x07, 0x16, 0x17));
   4695 }
   4696 
   4697 static __inline__ vector unsigned short __ATTRS_o_ai
   4698 vec_vmrghh(vector unsigned short __a, vector unsigned short __b) {
   4699   return vec_perm(__a, __b,
   4700                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
   4701                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
   4702                                          0x06, 0x07, 0x16, 0x17));
   4703 }
   4704 
   4705 static __inline__ vector bool short __ATTRS_o_ai
   4706 vec_vmrghh(vector bool short __a, vector bool short __b) {
   4707   return vec_perm(__a, __b,
   4708                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
   4709                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
   4710                                          0x06, 0x07, 0x16, 0x17));
   4711 }
   4712 
   4713 static __inline__ vector pixel __ATTRS_o_ai vec_vmrghh(vector pixel __a,
   4714                                                        vector pixel __b) {
   4715   return vec_perm(__a, __b,
   4716                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
   4717                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
   4718                                          0x06, 0x07, 0x16, 0x17));
   4719 }
   4720 
   4721 /* vec_vmrghw */
   4722 
   4723 #define __builtin_altivec_vmrghw vec_vmrghw
   4724 
   4725 static __inline__ vector int __ATTRS_o_ai vec_vmrghw(vector int __a,
   4726                                                      vector int __b) {
   4727   return vec_perm(__a, __b,
   4728                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   4729                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
   4730                                          0x14, 0x15, 0x16, 0x17));
   4731 }
   4732 
   4733 static __inline__ vector unsigned int __ATTRS_o_ai
   4734 vec_vmrghw(vector unsigned int __a, vector unsigned int __b) {
   4735   return vec_perm(__a, __b,
   4736                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   4737                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
   4738                                          0x14, 0x15, 0x16, 0x17));
   4739 }
   4740 
   4741 static __inline__ vector bool int __ATTRS_o_ai vec_vmrghw(vector bool int __a,
   4742                                                           vector bool int __b) {
   4743   return vec_perm(__a, __b,
   4744                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   4745                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
   4746                                          0x14, 0x15, 0x16, 0x17));
   4747 }
   4748 
   4749 static __inline__ vector float __ATTRS_o_ai vec_vmrghw(vector float __a,
   4750                                                        vector float __b) {
   4751   return vec_perm(__a, __b,
   4752                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   4753                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
   4754                                          0x14, 0x15, 0x16, 0x17));
   4755 }
   4756 
   4757 /* vec_mergel */
   4758 
   4759 static __inline__ vector signed char __ATTRS_o_ai
   4760 vec_mergel(vector signed char __a, vector signed char __b) {
   4761   return vec_perm(__a, __b,
   4762                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
   4763                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
   4764                                          0x0E, 0x1E, 0x0F, 0x1F));
   4765 }
   4766 
   4767 static __inline__ vector unsigned char __ATTRS_o_ai
   4768 vec_mergel(vector unsigned char __a, vector unsigned char __b) {
   4769   return vec_perm(__a, __b,
   4770                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
   4771                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
   4772                                          0x0E, 0x1E, 0x0F, 0x1F));
   4773 }
   4774 
   4775 static __inline__ vector bool char __ATTRS_o_ai
   4776 vec_mergel(vector bool char __a, vector bool char __b) {
   4777   return vec_perm(__a, __b,
   4778                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
   4779                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
   4780                                          0x0E, 0x1E, 0x0F, 0x1F));
   4781 }
   4782 
   4783 static __inline__ vector short __ATTRS_o_ai vec_mergel(vector short __a,
   4784                                                        vector short __b) {
   4785   return vec_perm(__a, __b,
   4786                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
   4787                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
   4788                                          0x0E, 0x0F, 0x1E, 0x1F));
   4789 }
   4790 
   4791 static __inline__ vector unsigned short __ATTRS_o_ai
   4792 vec_mergel(vector unsigned short __a, vector unsigned short __b) {
   4793   return vec_perm(__a, __b,
   4794                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
   4795                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
   4796                                          0x0E, 0x0F, 0x1E, 0x1F));
   4797 }
   4798 
   4799 static __inline__ vector bool short __ATTRS_o_ai
   4800 vec_mergel(vector bool short __a, vector bool short __b) {
   4801   return vec_perm(__a, __b,
   4802                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
   4803                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
   4804                                          0x0E, 0x0F, 0x1E, 0x1F));
   4805 }
   4806 
   4807 static __inline__ vector pixel __ATTRS_o_ai vec_mergel(vector pixel __a,
   4808                                                        vector pixel __b) {
   4809   return vec_perm(__a, __b,
   4810                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
   4811                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
   4812                                          0x0E, 0x0F, 0x1E, 0x1F));
   4813 }
   4814 
   4815 static __inline__ vector int __ATTRS_o_ai vec_mergel(vector int __a,
   4816                                                      vector int __b) {
   4817   return vec_perm(__a, __b,
   4818                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
   4819                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
   4820                                          0x1C, 0x1D, 0x1E, 0x1F));
   4821 }
   4822 
   4823 static __inline__ vector unsigned int __ATTRS_o_ai
   4824 vec_mergel(vector unsigned int __a, vector unsigned int __b) {
   4825   return vec_perm(__a, __b,
   4826                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
   4827                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
   4828                                          0x1C, 0x1D, 0x1E, 0x1F));
   4829 }
   4830 
   4831 static __inline__ vector bool int __ATTRS_o_ai vec_mergel(vector bool int __a,
   4832                                                           vector bool int __b) {
   4833   return vec_perm(__a, __b,
   4834                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
   4835                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
   4836                                          0x1C, 0x1D, 0x1E, 0x1F));
   4837 }
   4838 
   4839 static __inline__ vector float __ATTRS_o_ai vec_mergel(vector float __a,
   4840                                                        vector float __b) {
   4841   return vec_perm(__a, __b,
   4842                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
   4843                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
   4844                                          0x1C, 0x1D, 0x1E, 0x1F));
   4845 }
   4846 
   4847 #ifdef __VSX__
   4848 static __inline__ vector signed long long __ATTRS_o_ai
   4849 vec_mergel(vector signed long long __a, vector signed long long __b) {
   4850   return vec_perm(__a, __b,
   4851                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   4852                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   4853                                          0x1C, 0x1D, 0x1E, 0x1F));
   4854 }
   4855 static __inline__ vector signed long long __ATTRS_o_ai
   4856 vec_mergel(vector signed long long __a, vector bool long long __b) {
   4857   return vec_perm(__a, (vector signed long long)__b,
   4858                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   4859                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   4860                                          0x1C, 0x1D, 0x1E, 0x1F));
   4861 }
   4862 static __inline__ vector signed long long __ATTRS_o_ai
   4863 vec_mergel(vector bool long long __a, vector signed long long __b) {
   4864   return vec_perm((vector signed long long)__a, __b,
   4865                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   4866                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   4867                                          0x1C, 0x1D, 0x1E, 0x1F));
   4868 }
   4869 static __inline__ vector unsigned long long __ATTRS_o_ai
   4870 vec_mergel(vector unsigned long long __a, vector unsigned long long __b) {
   4871   return vec_perm(__a, __b,
   4872                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   4873                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   4874                                          0x1C, 0x1D, 0x1E, 0x1F));
   4875 }
   4876 static __inline__ vector unsigned long long __ATTRS_o_ai
   4877 vec_mergel(vector unsigned long long __a, vector bool long long __b) {
   4878   return vec_perm(__a, (vector unsigned long long)__b,
   4879                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   4880                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   4881                                          0x1C, 0x1D, 0x1E, 0x1F));
   4882 }
   4883 static __inline__ vector unsigned long long __ATTRS_o_ai
   4884 vec_mergel(vector bool long long __a, vector unsigned long long __b) {
   4885   return vec_perm((vector unsigned long long)__a, __b,
   4886                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   4887                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   4888                                          0x1C, 0x1D, 0x1E, 0x1F));
   4889 }
   4890 static __inline__ vector bool long long __ATTRS_o_ai
   4891 vec_mergel(vector bool long long __a, vector bool long long __b) {
   4892   return vec_perm(__a, __b,
   4893                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   4894                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   4895                                          0x1C, 0x1D, 0x1E, 0x1F));
   4896 }
   4897 static __inline__ vector double __ATTRS_o_ai vec_mergel(vector double __a,
   4898                                                         vector double __b) {
   4899   return vec_perm(__a, __b,
   4900                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   4901                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   4902                                          0x1C, 0x1D, 0x1E, 0x1F));
   4903 }
   4904 static __inline__ vector double __ATTRS_o_ai
   4905 vec_mergel(vector double __a, vector bool long long __b) {
   4906   return vec_perm(__a, (vector double)__b,
   4907                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   4908                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   4909                                          0x1C, 0x1D, 0x1E, 0x1F));
   4910 }
   4911 static __inline__ vector double __ATTRS_o_ai
   4912 vec_mergel(vector bool long long __a, vector double __b) {
   4913   return vec_perm((vector double)__a, __b,
   4914                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
   4915                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
   4916                                          0x1C, 0x1D, 0x1E, 0x1F));
   4917 }
   4918 #endif
   4919 
   4920 /* vec_vmrglb */
   4921 
   4922 #define __builtin_altivec_vmrglb vec_vmrglb
   4923 
   4924 static __inline__ vector signed char __ATTRS_o_ai
   4925 vec_vmrglb(vector signed char __a, vector signed char __b) {
   4926   return vec_perm(__a, __b,
   4927                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
   4928                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
   4929                                          0x0E, 0x1E, 0x0F, 0x1F));
   4930 }
   4931 
   4932 static __inline__ vector unsigned char __ATTRS_o_ai
   4933 vec_vmrglb(vector unsigned char __a, vector unsigned char __b) {
   4934   return vec_perm(__a, __b,
   4935                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
   4936                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
   4937                                          0x0E, 0x1E, 0x0F, 0x1F));
   4938 }
   4939 
   4940 static __inline__ vector bool char __ATTRS_o_ai
   4941 vec_vmrglb(vector bool char __a, vector bool char __b) {
   4942   return vec_perm(__a, __b,
   4943                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
   4944                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
   4945                                          0x0E, 0x1E, 0x0F, 0x1F));
   4946 }
   4947 
   4948 /* vec_vmrglh */
   4949 
   4950 #define __builtin_altivec_vmrglh vec_vmrglh
   4951 
   4952 static __inline__ vector short __ATTRS_o_ai vec_vmrglh(vector short __a,
   4953                                                        vector short __b) {
   4954   return vec_perm(__a, __b,
   4955                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
   4956                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
   4957                                          0x0E, 0x0F, 0x1E, 0x1F));
   4958 }
   4959 
   4960 static __inline__ vector unsigned short __ATTRS_o_ai
   4961 vec_vmrglh(vector unsigned short __a, vector unsigned short __b) {
   4962   return vec_perm(__a, __b,
   4963                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
   4964                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
   4965                                          0x0E, 0x0F, 0x1E, 0x1F));
   4966 }
   4967 
   4968 static __inline__ vector bool short __ATTRS_o_ai
   4969 vec_vmrglh(vector bool short __a, vector bool short __b) {
   4970   return vec_perm(__a, __b,
   4971                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
   4972                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
   4973                                          0x0E, 0x0F, 0x1E, 0x1F));
   4974 }
   4975 
   4976 static __inline__ vector pixel __ATTRS_o_ai vec_vmrglh(vector pixel __a,
   4977                                                        vector pixel __b) {
   4978   return vec_perm(__a, __b,
   4979                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
   4980                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
   4981                                          0x0E, 0x0F, 0x1E, 0x1F));
   4982 }
   4983 
   4984 /* vec_vmrglw */
   4985 
   4986 #define __builtin_altivec_vmrglw vec_vmrglw
   4987 
   4988 static __inline__ vector int __ATTRS_o_ai vec_vmrglw(vector int __a,
   4989                                                      vector int __b) {
   4990   return vec_perm(__a, __b,
   4991                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
   4992                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
   4993                                          0x1C, 0x1D, 0x1E, 0x1F));
   4994 }
   4995 
   4996 static __inline__ vector unsigned int __ATTRS_o_ai
   4997 vec_vmrglw(vector unsigned int __a, vector unsigned int __b) {
   4998   return vec_perm(__a, __b,
   4999                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
   5000                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
   5001                                          0x1C, 0x1D, 0x1E, 0x1F));
   5002 }
   5003 
   5004 static __inline__ vector bool int __ATTRS_o_ai vec_vmrglw(vector bool int __a,
   5005                                                           vector bool int __b) {
   5006   return vec_perm(__a, __b,
   5007                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
   5008                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
   5009                                          0x1C, 0x1D, 0x1E, 0x1F));
   5010 }
   5011 
   5012 static __inline__ vector float __ATTRS_o_ai vec_vmrglw(vector float __a,
   5013                                                        vector float __b) {
   5014   return vec_perm(__a, __b,
   5015                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
   5016                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
   5017                                          0x1C, 0x1D, 0x1E, 0x1F));
   5018 }
   5019 
   5020 #ifdef __POWER8_VECTOR__
   5021 /* vec_mergee */
   5022 
   5023 static __inline__ vector bool int __ATTRS_o_ai vec_mergee(vector bool int __a,
   5024                                                           vector bool int __b) {
   5025   return vec_perm(__a, __b,
   5026                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   5027                                          0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
   5028                                          0x18, 0x19, 0x1A, 0x1B));
   5029 }
   5030 
   5031 static __inline__ vector signed int __ATTRS_o_ai
   5032 vec_mergee(vector signed int __a, vector signed int __b) {
   5033   return vec_perm(__a, __b,
   5034                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   5035                                          0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
   5036                                          0x18, 0x19, 0x1A, 0x1B));
   5037 }
   5038 
   5039 static __inline__ vector unsigned int __ATTRS_o_ai
   5040 vec_mergee(vector unsigned int __a, vector unsigned int __b) {
   5041   return vec_perm(__a, __b,
   5042                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   5043                                          0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
   5044                                          0x18, 0x19, 0x1A, 0x1B));
   5045 }
   5046 
   5047 static __inline__ vector bool long long __ATTRS_o_ai
   5048 vec_mergee(vector bool long long __a, vector bool long long __b) {
   5049   return vec_mergeh(__a, __b);
   5050 }
   5051 
   5052 static __inline__ vector signed long long __ATTRS_o_ai
   5053 vec_mergee(vector signed long long __a, vector signed long long __b) {
   5054   return vec_mergeh(__a, __b);
   5055 }
   5056 
   5057 static __inline__ vector unsigned long long __ATTRS_o_ai
   5058 vec_mergee(vector unsigned long long __a, vector unsigned long long __b) {
   5059   return vec_mergeh(__a, __b);
   5060 }
   5061 
   5062 static __inline__ vector float __ATTRS_o_ai
   5063 vec_mergee(vector float __a, vector float __b) {
   5064   return vec_perm(__a, __b,
   5065                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
   5066                                          0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
   5067                                          0x18, 0x19, 0x1A, 0x1B));
   5068 }
   5069 
   5070 static __inline__ vector double __ATTRS_o_ai
   5071 vec_mergee(vector double __a, vector double __b) {
   5072   return vec_mergeh(__a, __b);
   5073 }
   5074 
   5075 /* vec_mergeo */
   5076 
   5077 static __inline__ vector bool int __ATTRS_o_ai vec_mergeo(vector bool int __a,
   5078                                                           vector bool int __b) {
   5079   return vec_perm(__a, __b,
   5080                   (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
   5081                                          0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
   5082                                          0x1C, 0x1D, 0x1E, 0x1F));
   5083 }
   5084 
   5085 static __inline__ vector signed int __ATTRS_o_ai
   5086 vec_mergeo(vector signed int __a, vector signed int __b) {
   5087   return vec_perm(__a, __b,
   5088                   (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
   5089                                          0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
   5090                                          0x1C, 0x1D, 0x1E, 0x1F));
   5091 }
   5092 
   5093 static __inline__ vector unsigned int __ATTRS_o_ai
   5094 vec_mergeo(vector unsigned int __a, vector unsigned int __b) {
   5095   return vec_perm(__a, __b,
   5096                   (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
   5097                                          0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
   5098                                          0x1C, 0x1D, 0x1E, 0x1F));
   5099 }
   5100 
   5101 static __inline__ vector bool long long __ATTRS_o_ai
   5102 vec_mergeo(vector bool long long __a, vector bool long long __b) {
   5103   return vec_mergel(__a, __b);
   5104 }
   5105 
   5106 static __inline__ vector signed long long __ATTRS_o_ai
   5107 vec_mergeo(vector signed long long __a, vector signed long long __b) {
   5108   return vec_mergel(__a, __b);
   5109 }
   5110 
   5111 static __inline__ vector unsigned long long __ATTRS_o_ai
   5112 vec_mergeo(vector unsigned long long __a, vector unsigned long long __b) {
   5113   return vec_mergel(__a, __b);
   5114 }
   5115 
   5116 static __inline__ vector float __ATTRS_o_ai
   5117 vec_mergeo(vector float __a, vector float __b) {
   5118   return vec_perm(__a, __b,
   5119                   (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
   5120                                          0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
   5121                                          0x1C, 0x1D, 0x1E, 0x1F));
   5122 }
   5123 
   5124 static __inline__ vector double __ATTRS_o_ai
   5125 vec_mergeo(vector double __a, vector double __b) {
   5126   return vec_mergel(__a, __b);
   5127 }
   5128 
   5129 #endif
   5130 
   5131 /* vec_mfvscr */
   5132 
   5133 static __inline__ vector unsigned short __attribute__((__always_inline__))
   5134 vec_mfvscr(void) {
   5135   return __builtin_altivec_mfvscr();
   5136 }
   5137 
   5138 /* vec_min */
   5139 
   5140 static __inline__ vector signed char __ATTRS_o_ai
   5141 vec_min(vector signed char __a, vector signed char __b) {
   5142   return __builtin_altivec_vminsb(__a, __b);
   5143 }
   5144 
   5145 static __inline__ vector signed char __ATTRS_o_ai
   5146 vec_min(vector bool char __a, vector signed char __b) {
   5147   return __builtin_altivec_vminsb((vector signed char)__a, __b);
   5148 }
   5149 
   5150 static __inline__ vector signed char __ATTRS_o_ai
   5151 vec_min(vector signed char __a, vector bool char __b) {
   5152   return __builtin_altivec_vminsb(__a, (vector signed char)__b);
   5153 }
   5154 
   5155 static __inline__ vector unsigned char __ATTRS_o_ai
   5156 vec_min(vector unsigned char __a, vector unsigned char __b) {
   5157   return __builtin_altivec_vminub(__a, __b);
   5158 }
   5159 
   5160 static __inline__ vector unsigned char __ATTRS_o_ai
   5161 vec_min(vector bool char __a, vector unsigned char __b) {
   5162   return __builtin_altivec_vminub((vector unsigned char)__a, __b);
   5163 }
   5164 
   5165 static __inline__ vector unsigned char __ATTRS_o_ai
   5166 vec_min(vector unsigned char __a, vector bool char __b) {
   5167   return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
   5168 }
   5169 
   5170 static __inline__ vector short __ATTRS_o_ai vec_min(vector short __a,
   5171                                                     vector short __b) {
   5172   return __builtin_altivec_vminsh(__a, __b);
   5173 }
   5174 
   5175 static __inline__ vector short __ATTRS_o_ai vec_min(vector bool short __a,
   5176                                                     vector short __b) {
   5177   return __builtin_altivec_vminsh((vector short)__a, __b);
   5178 }
   5179 
   5180 static __inline__ vector short __ATTRS_o_ai vec_min(vector short __a,
   5181                                                     vector bool short __b) {
   5182   return __builtin_altivec_vminsh(__a, (vector short)__b);
   5183 }
   5184 
   5185 static __inline__ vector unsigned short __ATTRS_o_ai
   5186 vec_min(vector unsigned short __a, vector unsigned short __b) {
   5187   return __builtin_altivec_vminuh(__a, __b);
   5188 }
   5189 
   5190 static __inline__ vector unsigned short __ATTRS_o_ai
   5191 vec_min(vector bool short __a, vector unsigned short __b) {
   5192   return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
   5193 }
   5194 
   5195 static __inline__ vector unsigned short __ATTRS_o_ai
   5196 vec_min(vector unsigned short __a, vector bool short __b) {
   5197   return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
   5198 }
   5199 
   5200 static __inline__ vector int __ATTRS_o_ai vec_min(vector int __a,
   5201                                                   vector int __b) {
   5202   return __builtin_altivec_vminsw(__a, __b);
   5203 }
   5204 
   5205 static __inline__ vector int __ATTRS_o_ai vec_min(vector bool int __a,
   5206                                                   vector int __b) {
   5207   return __builtin_altivec_vminsw((vector int)__a, __b);
   5208 }
   5209 
   5210 static __inline__ vector int __ATTRS_o_ai vec_min(vector int __a,
   5211                                                   vector bool int __b) {
   5212   return __builtin_altivec_vminsw(__a, (vector int)__b);
   5213 }
   5214 
   5215 static __inline__ vector unsigned int __ATTRS_o_ai
   5216 vec_min(vector unsigned int __a, vector unsigned int __b) {
   5217   return __builtin_altivec_vminuw(__a, __b);
   5218 }
   5219 
   5220 static __inline__ vector unsigned int __ATTRS_o_ai
   5221 vec_min(vector bool int __a, vector unsigned int __b) {
   5222   return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
   5223 }
   5224 
   5225 static __inline__ vector unsigned int __ATTRS_o_ai
   5226 vec_min(vector unsigned int __a, vector bool int __b) {
   5227   return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
   5228 }
   5229 
   5230 #ifdef __POWER8_VECTOR__
   5231 static __inline__ vector signed long long __ATTRS_o_ai
   5232 vec_min(vector signed long long __a, vector signed long long __b) {
   5233   return __builtin_altivec_vminsd(__a, __b);
   5234 }
   5235 
   5236 static __inline__ vector signed long long __ATTRS_o_ai
   5237 vec_min(vector bool long long __a, vector signed long long __b) {
   5238   return __builtin_altivec_vminsd((vector signed long long)__a, __b);
   5239 }
   5240 
   5241 static __inline__ vector signed long long __ATTRS_o_ai
   5242 vec_min(vector signed long long __a, vector bool long long __b) {
   5243   return __builtin_altivec_vminsd(__a, (vector signed long long)__b);
   5244 }
   5245 
   5246 static __inline__ vector unsigned long long __ATTRS_o_ai
   5247 vec_min(vector unsigned long long __a, vector unsigned long long __b) {
   5248   return __builtin_altivec_vminud(__a, __b);
   5249 }
   5250 
   5251 static __inline__ vector unsigned long long __ATTRS_o_ai
   5252 vec_min(vector bool long long __a, vector unsigned long long __b) {
   5253   return __builtin_altivec_vminud((vector unsigned long long)__a, __b);
   5254 }
   5255 
   5256 static __inline__ vector unsigned long long __ATTRS_o_ai
   5257 vec_min(vector unsigned long long __a, vector bool long long __b) {
   5258   return __builtin_altivec_vminud(__a, (vector unsigned long long)__b);
   5259 }
   5260 #endif
   5261 
   5262 static __inline__ vector float __ATTRS_o_ai vec_min(vector float __a,
   5263                                                     vector float __b) {
   5264 #ifdef __VSX__
   5265   return __builtin_vsx_xvminsp(__a, __b);
   5266 #else
   5267   return __builtin_altivec_vminfp(__a, __b);
   5268 #endif
   5269 }
   5270 
   5271 #ifdef __VSX__
   5272 static __inline__ vector double __ATTRS_o_ai vec_min(vector double __a,
   5273                                                      vector double __b) {
   5274   return __builtin_vsx_xvmindp(__a, __b);
   5275 }
   5276 #endif
   5277 
   5278 /* vec_vminsb */
   5279 
   5280 static __inline__ vector signed char __ATTRS_o_ai
   5281 vec_vminsb(vector signed char __a, vector signed char __b) {
   5282   return __builtin_altivec_vminsb(__a, __b);
   5283 }
   5284 
   5285 static __inline__ vector signed char __ATTRS_o_ai
   5286 vec_vminsb(vector bool char __a, vector signed char __b) {
   5287   return __builtin_altivec_vminsb((vector signed char)__a, __b);
   5288 }
   5289 
   5290 static __inline__ vector signed char __ATTRS_o_ai
   5291 vec_vminsb(vector signed char __a, vector bool char __b) {
   5292   return __builtin_altivec_vminsb(__a, (vector signed char)__b);
   5293 }
   5294 
   5295 /* vec_vminub */
   5296 
   5297 static __inline__ vector unsigned char __ATTRS_o_ai
   5298 vec_vminub(vector unsigned char __a, vector unsigned char __b) {
   5299   return __builtin_altivec_vminub(__a, __b);
   5300 }
   5301 
   5302 static __inline__ vector unsigned char __ATTRS_o_ai
   5303 vec_vminub(vector bool char __a, vector unsigned char __b) {
   5304   return __builtin_altivec_vminub((vector unsigned char)__a, __b);
   5305 }
   5306 
   5307 static __inline__ vector unsigned char __ATTRS_o_ai
   5308 vec_vminub(vector unsigned char __a, vector bool char __b) {
   5309   return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
   5310 }
   5311 
   5312 /* vec_vminsh */
   5313 
   5314 static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector short __a,
   5315                                                        vector short __b) {
   5316   return __builtin_altivec_vminsh(__a, __b);
   5317 }
   5318 
   5319 static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector bool short __a,
   5320                                                        vector short __b) {
   5321   return __builtin_altivec_vminsh((vector short)__a, __b);
   5322 }
   5323 
   5324 static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector short __a,
   5325                                                        vector bool short __b) {
   5326   return __builtin_altivec_vminsh(__a, (vector short)__b);
   5327 }
   5328 
   5329 /* vec_vminuh */
   5330 
   5331 static __inline__ vector unsigned short __ATTRS_o_ai
   5332 vec_vminuh(vector unsigned short __a, vector unsigned short __b) {
   5333   return __builtin_altivec_vminuh(__a, __b);
   5334 }
   5335 
   5336 static __inline__ vector unsigned short __ATTRS_o_ai
   5337 vec_vminuh(vector bool short __a, vector unsigned short __b) {
   5338   return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
   5339 }
   5340 
   5341 static __inline__ vector unsigned short __ATTRS_o_ai
   5342 vec_vminuh(vector unsigned short __a, vector bool short __b) {
   5343   return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
   5344 }
   5345 
   5346 /* vec_vminsw */
   5347 
   5348 static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector int __a,
   5349                                                      vector int __b) {
   5350   return __builtin_altivec_vminsw(__a, __b);
   5351 }
   5352 
   5353 static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector bool int __a,
   5354                                                      vector int __b) {
   5355   return __builtin_altivec_vminsw((vector int)__a, __b);
   5356 }
   5357 
   5358 static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector int __a,
   5359                                                      vector bool int __b) {
   5360   return __builtin_altivec_vminsw(__a, (vector int)__b);
   5361 }
   5362 
   5363 /* vec_vminuw */
   5364 
   5365 static __inline__ vector unsigned int __ATTRS_o_ai
   5366 vec_vminuw(vector unsigned int __a, vector unsigned int __b) {
   5367   return __builtin_altivec_vminuw(__a, __b);
   5368 }
   5369 
   5370 static __inline__ vector unsigned int __ATTRS_o_ai
   5371 vec_vminuw(vector bool int __a, vector unsigned int __b) {
   5372   return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
   5373 }
   5374 
   5375 static __inline__ vector unsigned int __ATTRS_o_ai
   5376 vec_vminuw(vector unsigned int __a, vector bool int __b) {
   5377   return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
   5378 }
   5379 
   5380 /* vec_vminfp */
   5381 
   5382 static __inline__ vector float __attribute__((__always_inline__))
   5383 vec_vminfp(vector float __a, vector float __b) {
   5384 #ifdef __VSX__
   5385   return __builtin_vsx_xvminsp(__a, __b);
   5386 #else
   5387   return __builtin_altivec_vminfp(__a, __b);
   5388 #endif
   5389 }
   5390 
   5391 /* vec_mladd */
   5392 
   5393 #define __builtin_altivec_vmladduhm vec_mladd
   5394 
   5395 static __inline__ vector short __ATTRS_o_ai vec_mladd(vector short __a,
   5396                                                       vector short __b,
   5397                                                       vector short __c) {
   5398   return __a * __b + __c;
   5399 }
   5400 
   5401 static __inline__ vector short __ATTRS_o_ai vec_mladd(
   5402     vector short __a, vector unsigned short __b, vector unsigned short __c) {
   5403   return __a * (vector short)__b + (vector short)__c;
   5404 }
   5405 
   5406 static __inline__ vector short __ATTRS_o_ai vec_mladd(vector unsigned short __a,
   5407                                                       vector short __b,
   5408                                                       vector short __c) {
   5409   return (vector short)__a * __b + __c;
   5410 }
   5411 
   5412 static __inline__ vector unsigned short __ATTRS_o_ai
   5413 vec_mladd(vector unsigned short __a, vector unsigned short __b,
   5414           vector unsigned short __c) {
   5415   return __a * __b + __c;
   5416 }
   5417 
   5418 /* vec_vmladduhm */
   5419 
   5420 static __inline__ vector short __ATTRS_o_ai vec_vmladduhm(vector short __a,
   5421                                                           vector short __b,
   5422                                                           vector short __c) {
   5423   return __a * __b + __c;
   5424 }
   5425 
   5426 static __inline__ vector short __ATTRS_o_ai vec_vmladduhm(
   5427     vector short __a, vector unsigned short __b, vector unsigned short __c) {
   5428   return __a * (vector short)__b + (vector short)__c;
   5429 }
   5430 
   5431 static __inline__ vector short __ATTRS_o_ai
   5432 vec_vmladduhm(vector unsigned short __a, vector short __b, vector short __c) {
   5433   return (vector short)__a * __b + __c;
   5434 }
   5435 
   5436 static __inline__ vector unsigned short __ATTRS_o_ai
   5437 vec_vmladduhm(vector unsigned short __a, vector unsigned short __b,
   5438               vector unsigned short __c) {
   5439   return __a * __b + __c;
   5440 }
   5441 
   5442 /* vec_mradds */
   5443 
   5444 static __inline__ vector short __attribute__((__always_inline__))
   5445 vec_mradds(vector short __a, vector short __b, vector short __c) {
   5446   return __builtin_altivec_vmhraddshs(__a, __b, __c);
   5447 }
   5448 
   5449 /* vec_vmhraddshs */
   5450 
   5451 static __inline__ vector short __attribute__((__always_inline__))
   5452 vec_vmhraddshs(vector short __a, vector short __b, vector short __c) {
   5453   return __builtin_altivec_vmhraddshs(__a, __b, __c);
   5454 }
   5455 
   5456 /* vec_msum */
   5457 
   5458 static __inline__ vector int __ATTRS_o_ai vec_msum(vector signed char __a,
   5459                                                    vector unsigned char __b,
   5460                                                    vector int __c) {
   5461   return __builtin_altivec_vmsummbm(__a, __b, __c);
   5462 }
   5463 
   5464 static __inline__ vector unsigned int __ATTRS_o_ai
   5465 vec_msum(vector unsigned char __a, vector unsigned char __b,
   5466          vector unsigned int __c) {
   5467   return __builtin_altivec_vmsumubm(__a, __b, __c);
   5468 }
   5469 
   5470 static __inline__ vector int __ATTRS_o_ai vec_msum(vector short __a,
   5471                                                    vector short __b,
   5472                                                    vector int __c) {
   5473   return __builtin_altivec_vmsumshm(__a, __b, __c);
   5474 }
   5475 
   5476 static __inline__ vector unsigned int __ATTRS_o_ai
   5477 vec_msum(vector unsigned short __a, vector unsigned short __b,
   5478          vector unsigned int __c) {
   5479   return __builtin_altivec_vmsumuhm(__a, __b, __c);
   5480 }
   5481 
   5482 /* vec_vmsummbm */
   5483 
   5484 static __inline__ vector int __attribute__((__always_inline__))
   5485 vec_vmsummbm(vector signed char __a, vector unsigned char __b, vector int __c) {
   5486   return __builtin_altivec_vmsummbm(__a, __b, __c);
   5487 }
   5488 
   5489 /* vec_vmsumubm */
   5490 
   5491 static __inline__ vector unsigned int __attribute__((__always_inline__))
   5492 vec_vmsumubm(vector unsigned char __a, vector unsigned char __b,
   5493              vector unsigned int __c) {
   5494   return __builtin_altivec_vmsumubm(__a, __b, __c);
   5495 }
   5496 
   5497 /* vec_vmsumshm */
   5498 
   5499 static __inline__ vector int __attribute__((__always_inline__))
   5500 vec_vmsumshm(vector short __a, vector short __b, vector int __c) {
   5501   return __builtin_altivec_vmsumshm(__a, __b, __c);
   5502 }
   5503 
   5504 /* vec_vmsumuhm */
   5505 
   5506 static __inline__ vector unsigned int __attribute__((__always_inline__))
   5507 vec_vmsumuhm(vector unsigned short __a, vector unsigned short __b,
   5508              vector unsigned int __c) {
   5509   return __builtin_altivec_vmsumuhm(__a, __b, __c);
   5510 }
   5511 
   5512 /* vec_msums */
   5513 
   5514 static __inline__ vector int __ATTRS_o_ai vec_msums(vector short __a,
   5515                                                     vector short __b,
   5516                                                     vector int __c) {
   5517   return __builtin_altivec_vmsumshs(__a, __b, __c);
   5518 }
   5519 
   5520 static __inline__ vector unsigned int __ATTRS_o_ai
   5521 vec_msums(vector unsigned short __a, vector unsigned short __b,
   5522           vector unsigned int __c) {
   5523   return __builtin_altivec_vmsumuhs(__a, __b, __c);
   5524 }
   5525 
   5526 /* vec_vmsumshs */
   5527 
   5528 static __inline__ vector int __attribute__((__always_inline__))
   5529 vec_vmsumshs(vector short __a, vector short __b, vector int __c) {
   5530   return __builtin_altivec_vmsumshs(__a, __b, __c);
   5531 }
   5532 
   5533 /* vec_vmsumuhs */
   5534 
   5535 static __inline__ vector unsigned int __attribute__((__always_inline__))
   5536 vec_vmsumuhs(vector unsigned short __a, vector unsigned short __b,
   5537              vector unsigned int __c) {
   5538   return __builtin_altivec_vmsumuhs(__a, __b, __c);
   5539 }
   5540 
   5541 /* vec_mtvscr */
   5542 
   5543 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector signed char __a) {
   5544   __builtin_altivec_mtvscr((vector int)__a);
   5545 }
   5546 
   5547 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned char __a) {
   5548   __builtin_altivec_mtvscr((vector int)__a);
   5549 }
   5550 
   5551 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool char __a) {
   5552   __builtin_altivec_mtvscr((vector int)__a);
   5553 }
   5554 
   5555 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector short __a) {
   5556   __builtin_altivec_mtvscr((vector int)__a);
   5557 }
   5558 
   5559 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned short __a) {
   5560   __builtin_altivec_mtvscr((vector int)__a);
   5561 }
   5562 
   5563 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool short __a) {
   5564   __builtin_altivec_mtvscr((vector int)__a);
   5565 }
   5566 
   5567 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector pixel __a) {
   5568   __builtin_altivec_mtvscr((vector int)__a);
   5569 }
   5570 
   5571 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector int __a) {
   5572   __builtin_altivec_mtvscr((vector int)__a);
   5573 }
   5574 
   5575 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned int __a) {
   5576   __builtin_altivec_mtvscr((vector int)__a);
   5577 }
   5578 
   5579 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool int __a) {
   5580   __builtin_altivec_mtvscr((vector int)__a);
   5581 }
   5582 
   5583 static __inline__ void __ATTRS_o_ai vec_mtvscr(vector float __a) {
   5584   __builtin_altivec_mtvscr((vector int)__a);
   5585 }
   5586 
   5587 /* vec_mul */
   5588 
   5589 /* Integer vector multiplication will involve multiplication of the odd/even
   5590    elements separately, then truncating the results and moving to the
   5591    result vector.
   5592 */
   5593 static __inline__ vector signed char __ATTRS_o_ai
   5594 vec_mul(vector signed char __a, vector signed char __b) {
   5595   return __a * __b;
   5596 }
   5597 
   5598 static __inline__ vector unsigned char __ATTRS_o_ai
   5599 vec_mul(vector unsigned char __a, vector unsigned char __b) {
   5600   return __a * __b;
   5601 }
   5602 
   5603 static __inline__ vector signed short __ATTRS_o_ai
   5604 vec_mul(vector signed short __a, vector signed short __b) {
   5605   return __a * __b;
   5606 }
   5607 
   5608 static __inline__ vector unsigned short __ATTRS_o_ai
   5609 vec_mul(vector unsigned short __a, vector unsigned short __b) {
   5610   return __a * __b;
   5611 }
   5612 
   5613 static __inline__ vector signed int __ATTRS_o_ai
   5614 vec_mul(vector signed int __a, vector signed int __b) {
   5615   return __a * __b;
   5616 }
   5617 
   5618 static __inline__ vector unsigned int __ATTRS_o_ai
   5619 vec_mul(vector unsigned int __a, vector unsigned int __b) {
   5620   return __a * __b;
   5621 }
   5622 
   5623 #ifdef __VSX__
   5624 static __inline__ vector signed long long __ATTRS_o_ai
   5625 vec_mul(vector signed long long __a, vector signed long long __b) {
   5626   return __a * __b;
   5627 }
   5628 
   5629 static __inline__ vector unsigned long long __ATTRS_o_ai
   5630 vec_mul(vector unsigned long long __a, vector unsigned long long __b) {
   5631   return __a * __b;
   5632 }
   5633 #endif
   5634 
   5635 static __inline__ vector float __ATTRS_o_ai vec_mul(vector float __a,
   5636                                                     vector float __b) {
   5637   return __a * __b;
   5638 }
   5639 
   5640 #ifdef __VSX__
   5641 static __inline__ vector double __ATTRS_o_ai vec_mul(vector double __a,
   5642                                                      vector double __b) {
   5643   return __a * __b;
   5644 }
   5645 #endif
   5646 
   5647 /* The vmulos* and vmules* instructions have a big endian bias, so
   5648    we must reverse the meaning of "even" and "odd" for little endian.  */
   5649 
   5650 /* vec_mule */
   5651 
   5652 static __inline__ vector short __ATTRS_o_ai vec_mule(vector signed char __a,
   5653                                                      vector signed char __b) {
   5654 #ifdef __LITTLE_ENDIAN__
   5655   return __builtin_altivec_vmulosb(__a, __b);
   5656 #else
   5657   return __builtin_altivec_vmulesb(__a, __b);
   5658 #endif
   5659 }
   5660 
   5661 static __inline__ vector unsigned short __ATTRS_o_ai
   5662 vec_mule(vector unsigned char __a, vector unsigned char __b) {
   5663 #ifdef __LITTLE_ENDIAN__
   5664   return __builtin_altivec_vmuloub(__a, __b);
   5665 #else
   5666   return __builtin_altivec_vmuleub(__a, __b);
   5667 #endif
   5668 }
   5669 
   5670 static __inline__ vector int __ATTRS_o_ai vec_mule(vector short __a,
   5671                                                    vector short __b) {
   5672 #ifdef __LITTLE_ENDIAN__
   5673   return __builtin_altivec_vmulosh(__a, __b);
   5674 #else
   5675   return __builtin_altivec_vmulesh(__a, __b);
   5676 #endif
   5677 }
   5678 
   5679 static __inline__ vector unsigned int __ATTRS_o_ai
   5680 vec_mule(vector unsigned short __a, vector unsigned short __b) {
   5681 #ifdef __LITTLE_ENDIAN__
   5682   return __builtin_altivec_vmulouh(__a, __b);
   5683 #else
   5684   return __builtin_altivec_vmuleuh(__a, __b);
   5685 #endif
   5686 }
   5687 
   5688 #ifdef __POWER8_VECTOR__
   5689 static __inline__ vector signed long long __ATTRS_o_ai
   5690 vec_mule(vector signed int __a, vector signed int __b) {
   5691 #ifdef __LITTLE_ENDIAN__
   5692   return __builtin_altivec_vmulosw(__a, __b);
   5693 #else
   5694   return __builtin_altivec_vmulesw(__a, __b);
   5695 #endif
   5696 }
   5697 
   5698 static __inline__ vector unsigned long long __ATTRS_o_ai
   5699 vec_mule(vector unsigned int __a, vector unsigned int __b) {
   5700 #ifdef __LITTLE_ENDIAN__
   5701   return __builtin_altivec_vmulouw(__a, __b);
   5702 #else
   5703   return __builtin_altivec_vmuleuw(__a, __b);
   5704 #endif
   5705 }
   5706 #endif
   5707 
   5708 /* vec_vmulesb */
   5709 
   5710 static __inline__ vector short __attribute__((__always_inline__))
   5711 vec_vmulesb(vector signed char __a, vector signed char __b) {
   5712 #ifdef __LITTLE_ENDIAN__
   5713   return __builtin_altivec_vmulosb(__a, __b);
   5714 #else
   5715   return __builtin_altivec_vmulesb(__a, __b);
   5716 #endif
   5717 }
   5718 
   5719 /* vec_vmuleub */
   5720 
   5721 static __inline__ vector unsigned short __attribute__((__always_inline__))
   5722 vec_vmuleub(vector unsigned char __a, vector unsigned char __b) {
   5723 #ifdef __LITTLE_ENDIAN__
   5724   return __builtin_altivec_vmuloub(__a, __b);
   5725 #else
   5726   return __builtin_altivec_vmuleub(__a, __b);
   5727 #endif
   5728 }
   5729 
   5730 /* vec_vmulesh */
   5731 
   5732 static __inline__ vector int __attribute__((__always_inline__))
   5733 vec_vmulesh(vector short __a, vector short __b) {
   5734 #ifdef __LITTLE_ENDIAN__
   5735   return __builtin_altivec_vmulosh(__a, __b);
   5736 #else
   5737   return __builtin_altivec_vmulesh(__a, __b);
   5738 #endif
   5739 }
   5740 
   5741 /* vec_vmuleuh */
   5742 
   5743 static __inline__ vector unsigned int __attribute__((__always_inline__))
   5744 vec_vmuleuh(vector unsigned short __a, vector unsigned short __b) {
   5745 #ifdef __LITTLE_ENDIAN__
   5746   return __builtin_altivec_vmulouh(__a, __b);
   5747 #else
   5748   return __builtin_altivec_vmuleuh(__a, __b);
   5749 #endif
   5750 }
   5751 
   5752 /* vec_mulo */
   5753 
   5754 static __inline__ vector short __ATTRS_o_ai vec_mulo(vector signed char __a,
   5755                                                      vector signed char __b) {
   5756 #ifdef __LITTLE_ENDIAN__
   5757   return __builtin_altivec_vmulesb(__a, __b);
   5758 #else
   5759   return __builtin_altivec_vmulosb(__a, __b);
   5760 #endif
   5761 }
   5762 
   5763 static __inline__ vector unsigned short __ATTRS_o_ai
   5764 vec_mulo(vector unsigned char __a, vector unsigned char __b) {
   5765 #ifdef __LITTLE_ENDIAN__
   5766   return __builtin_altivec_vmuleub(__a, __b);
   5767 #else
   5768   return __builtin_altivec_vmuloub(__a, __b);
   5769 #endif
   5770 }
   5771 
   5772 static __inline__ vector int __ATTRS_o_ai vec_mulo(vector short __a,
   5773                                                    vector short __b) {
   5774 #ifdef __LITTLE_ENDIAN__
   5775   return __builtin_altivec_vmulesh(__a, __b);
   5776 #else
   5777   return __builtin_altivec_vmulosh(__a, __b);
   5778 #endif
   5779 }
   5780 
   5781 static __inline__ vector unsigned int __ATTRS_o_ai
   5782 vec_mulo(vector unsigned short __a, vector unsigned short __b) {
   5783 #ifdef __LITTLE_ENDIAN__
   5784   return __builtin_altivec_vmuleuh(__a, __b);
   5785 #else
   5786   return __builtin_altivec_vmulouh(__a, __b);
   5787 #endif
   5788 }
   5789 
   5790 #ifdef __POWER8_VECTOR__
   5791 static __inline__ vector signed long long __ATTRS_o_ai
   5792 vec_mulo(vector signed int __a, vector signed int __b) {
   5793 #ifdef __LITTLE_ENDIAN__
   5794   return __builtin_altivec_vmulesw(__a, __b);
   5795 #else
   5796   return __builtin_altivec_vmulosw(__a, __b);
   5797 #endif
   5798 }
   5799 
   5800 static __inline__ vector unsigned long long __ATTRS_o_ai
   5801 vec_mulo(vector unsigned int __a, vector unsigned int __b) {
   5802 #ifdef __LITTLE_ENDIAN__
   5803   return __builtin_altivec_vmuleuw(__a, __b);
   5804 #else
   5805   return __builtin_altivec_vmulouw(__a, __b);
   5806 #endif
   5807 }
   5808 #endif
   5809 
   5810 /* vec_vmulosb */
   5811 
   5812 static __inline__ vector short __attribute__((__always_inline__))
   5813 vec_vmulosb(vector signed char __a, vector signed char __b) {
   5814 #ifdef __LITTLE_ENDIAN__
   5815   return __builtin_altivec_vmulesb(__a, __b);
   5816 #else
   5817   return __builtin_altivec_vmulosb(__a, __b);
   5818 #endif
   5819 }
   5820 
   5821 /* vec_vmuloub */
   5822 
   5823 static __inline__ vector unsigned short __attribute__((__always_inline__))
   5824 vec_vmuloub(vector unsigned char __a, vector unsigned char __b) {
   5825 #ifdef __LITTLE_ENDIAN__
   5826   return __builtin_altivec_vmuleub(__a, __b);
   5827 #else
   5828   return __builtin_altivec_vmuloub(__a, __b);
   5829 #endif
   5830 }
   5831 
   5832 /* vec_vmulosh */
   5833 
   5834 static __inline__ vector int __attribute__((__always_inline__))
   5835 vec_vmulosh(vector short __a, vector short __b) {
   5836 #ifdef __LITTLE_ENDIAN__
   5837   return __builtin_altivec_vmulesh(__a, __b);
   5838 #else
   5839   return __builtin_altivec_vmulosh(__a, __b);
   5840 #endif
   5841 }
   5842 
   5843 /* vec_vmulouh */
   5844 
   5845 static __inline__ vector unsigned int __attribute__((__always_inline__))
   5846 vec_vmulouh(vector unsigned short __a, vector unsigned short __b) {
   5847 #ifdef __LITTLE_ENDIAN__
   5848   return __builtin_altivec_vmuleuh(__a, __b);
   5849 #else
   5850   return __builtin_altivec_vmulouh(__a, __b);
   5851 #endif
   5852 }
   5853 
   5854 /*  vec_nand */
   5855 
   5856 #ifdef __POWER8_VECTOR__
   5857 static __inline__ vector signed char __ATTRS_o_ai
   5858 vec_nand(vector signed char __a, vector signed char __b) {
   5859   return ~(__a & __b);
   5860 }
   5861 
   5862 static __inline__ vector signed char __ATTRS_o_ai
   5863 vec_nand(vector signed char __a, vector bool char __b) {
   5864   return ~(__a & __b);
   5865 }
   5866 
   5867 static __inline__ vector signed char __ATTRS_o_ai
   5868 vec_nand(vector bool char __a, vector signed char __b) {
   5869   return ~(__a & __b);
   5870 }
   5871 
   5872 static __inline__ vector unsigned char __ATTRS_o_ai
   5873 vec_nand(vector unsigned char __a, vector unsigned char __b) {
   5874   return ~(__a & __b);
   5875 }
   5876 
   5877 static __inline__ vector unsigned char __ATTRS_o_ai
   5878 vec_nand(vector unsigned char __a, vector bool char __b) {
   5879   return ~(__a & __b);
   5880 }
   5881 
   5882 static __inline__ vector unsigned char __ATTRS_o_ai
   5883 vec_nand(vector bool char __a, vector unsigned char __b) {
   5884   return ~(__a & __b);
   5885 }
   5886 
   5887 static __inline__ vector bool char __ATTRS_o_ai vec_nand(vector bool char __a,
   5888                                                          vector bool char __b) {
   5889   return ~(__a & __b);
   5890 }
   5891 
   5892 static __inline__ vector signed short __ATTRS_o_ai
   5893 vec_nand(vector signed short __a, vector signed short __b) {
   5894   return ~(__a & __b);
   5895 }
   5896 
   5897 static __inline__ vector signed short __ATTRS_o_ai
   5898 vec_nand(vector signed short __a, vector bool short __b) {
   5899   return ~(__a & __b);
   5900 }
   5901 
   5902 static __inline__ vector signed short __ATTRS_o_ai
   5903 vec_nand(vector bool short __a, vector signed short __b) {
   5904   return ~(__a & __b);
   5905 }
   5906 
   5907 static __inline__ vector unsigned short __ATTRS_o_ai
   5908 vec_nand(vector unsigned short __a, vector unsigned short __b) {
   5909   return ~(__a & __b);
   5910 }
   5911 
   5912 static __inline__ vector unsigned short __ATTRS_o_ai
   5913 vec_nand(vector unsigned short __a, vector bool short __b) {
   5914   return ~(__a & __b);
   5915 }
   5916 
   5917 static __inline__ vector bool short __ATTRS_o_ai
   5918 vec_nand(vector bool short __a, vector bool short __b) {
   5919   return ~(__a & __b);
   5920 }
   5921 
   5922 static __inline__ vector signed int __ATTRS_o_ai
   5923 vec_nand(vector signed int __a, vector signed int __b) {
   5924   return ~(__a & __b);
   5925 }
   5926 
   5927 static __inline__ vector signed int __ATTRS_o_ai vec_nand(vector signed int __a,
   5928                                                           vector bool int __b) {
   5929   return ~(__a & __b);
   5930 }
   5931 
   5932 static __inline__ vector signed int __ATTRS_o_ai
   5933 vec_nand(vector bool int __a, vector signed int __b) {
   5934   return ~(__a & __b);
   5935 }
   5936 
   5937 static __inline__ vector unsigned int __ATTRS_o_ai
   5938 vec_nand(vector unsigned int __a, vector unsigned int __b) {
   5939   return ~(__a & __b);
   5940 }
   5941 
   5942 static __inline__ vector unsigned int __ATTRS_o_ai
   5943 vec_nand(vector unsigned int __a, vector bool int __b) {
   5944   return ~(__a & __b);
   5945 }
   5946 
   5947 static __inline__ vector unsigned int __ATTRS_o_ai
   5948 vec_nand(vector bool int __a, vector unsigned int __b) {
   5949   return ~(__a & __b);
   5950 }
   5951 
   5952 static __inline__ vector bool int __ATTRS_o_ai vec_nand(vector bool int __a,
   5953                                                         vector bool int __b) {
   5954   return ~(__a & __b);
   5955 }
   5956 
   5957 static __inline__ vector float __ATTRS_o_ai
   5958 vec_nand(vector float __a, vector float __b) {
   5959   return (vector float)(~((vector unsigned int)__a &
   5960                           (vector unsigned int)__b));
   5961 }
   5962 
   5963 static __inline__ vector signed long long __ATTRS_o_ai
   5964 vec_nand(vector signed long long __a, vector signed long long __b) {
   5965   return ~(__a & __b);
   5966 }
   5967 
   5968 static __inline__ vector signed long long __ATTRS_o_ai
   5969 vec_nand(vector signed long long __a, vector bool long long __b) {
   5970   return ~(__a & __b);
   5971 }
   5972 
   5973 static __inline__ vector signed long long __ATTRS_o_ai
   5974 vec_nand(vector bool long long __a, vector signed long long __b) {
   5975   return ~(__a & __b);
   5976 }
   5977 
   5978 static __inline__ vector unsigned long long __ATTRS_o_ai
   5979 vec_nand(vector unsigned long long __a, vector unsigned long long __b) {
   5980   return ~(__a & __b);
   5981 }
   5982 
   5983 static __inline__ vector unsigned long long __ATTRS_o_ai
   5984 vec_nand(vector unsigned long long __a, vector bool long long __b) {
   5985   return ~(__a & __b);
   5986 }
   5987 
   5988 static __inline__ vector unsigned long long __ATTRS_o_ai
   5989 vec_nand(vector bool long long __a, vector unsigned long long __b) {
   5990   return ~(__a & __b);
   5991 }
   5992 
   5993 static __inline__ vector bool long long __ATTRS_o_ai
   5994 vec_nand(vector bool long long __a, vector bool long long __b) {
   5995   return ~(__a & __b);
   5996 }
   5997 
   5998 static __inline__ vector double __ATTRS_o_ai
   5999 vec_nand(vector double __a, vector double __b) {
   6000   return (vector double)(~((vector unsigned long long)__a &
   6001                            (vector unsigned long long)__b));
   6002 }
   6003 
   6004 #endif
   6005 
   6006 /* vec_nmadd */
   6007 
   6008 #ifdef __VSX__
   6009 static __inline__ vector float __ATTRS_o_ai vec_nmadd(vector float __a,
   6010                                                       vector float __b,
   6011                                                       vector float __c) {
   6012   return __builtin_vsx_xvnmaddasp(__a, __b, __c);
   6013 }
   6014 
   6015 static __inline__ vector double __ATTRS_o_ai vec_nmadd(vector double __a,
   6016                                                        vector double __b,
   6017                                                        vector double __c) {
   6018   return __builtin_vsx_xvnmaddadp(__a, __b, __c);
   6019 }
   6020 #endif
   6021 
   6022 /* vec_nmsub */
   6023 
   6024 static __inline__ vector float __ATTRS_o_ai vec_nmsub(vector float __a,
   6025                                                       vector float __b,
   6026                                                       vector float __c) {
   6027 #ifdef __VSX__
   6028   return __builtin_vsx_xvnmsubasp(__a, __b, __c);
   6029 #else
   6030   return __builtin_altivec_vnmsubfp(__a, __b, __c);
   6031 #endif
   6032 }
   6033 
   6034 #ifdef __VSX__
   6035 static __inline__ vector double __ATTRS_o_ai vec_nmsub(vector double __a,
   6036                                                        vector double __b,
   6037                                                        vector double __c) {
   6038   return __builtin_vsx_xvnmsubadp(__a, __b, __c);
   6039 }
   6040 #endif
   6041 
   6042 /* vec_vnmsubfp */
   6043 
   6044 static __inline__ vector float __attribute__((__always_inline__))
   6045 vec_vnmsubfp(vector float __a, vector float __b, vector float __c) {
   6046   return __builtin_altivec_vnmsubfp(__a, __b, __c);
   6047 }
   6048 
   6049 /* vec_nor */
   6050 
   6051 #define __builtin_altivec_vnor vec_nor
   6052 
   6053 static __inline__ vector signed char __ATTRS_o_ai
   6054 vec_nor(vector signed char __a, vector signed char __b) {
   6055   return ~(__a | __b);
   6056 }
   6057 
   6058 static __inline__ vector unsigned char __ATTRS_o_ai
   6059 vec_nor(vector unsigned char __a, vector unsigned char __b) {
   6060   return ~(__a | __b);
   6061 }
   6062 
   6063 static __inline__ vector bool char __ATTRS_o_ai vec_nor(vector bool char __a,
   6064                                                         vector bool char __b) {
   6065   return ~(__a | __b);
   6066 }
   6067 
   6068 static __inline__ vector short __ATTRS_o_ai vec_nor(vector short __a,
   6069                                                     vector short __b) {
   6070   return ~(__a | __b);
   6071 }
   6072 
   6073 static __inline__ vector unsigned short __ATTRS_o_ai
   6074 vec_nor(vector unsigned short __a, vector unsigned short __b) {
   6075   return ~(__a | __b);
   6076 }
   6077 
   6078 static __inline__ vector bool short __ATTRS_o_ai
   6079 vec_nor(vector bool short __a, vector bool short __b) {
   6080   return ~(__a | __b);
   6081 }
   6082 
   6083 static __inline__ vector int __ATTRS_o_ai vec_nor(vector int __a,
   6084                                                   vector int __b) {
   6085   return ~(__a | __b);
   6086 }
   6087 
   6088 static __inline__ vector unsigned int __ATTRS_o_ai
   6089 vec_nor(vector unsigned int __a, vector unsigned int __b) {
   6090   return ~(__a | __b);
   6091 }
   6092 
   6093 static __inline__ vector bool int __ATTRS_o_ai vec_nor(vector bool int __a,
   6094                                                        vector bool int __b) {
   6095   return ~(__a | __b);
   6096 }
   6097 
   6098 static __inline__ vector float __ATTRS_o_ai vec_nor(vector float __a,
   6099                                                     vector float __b) {
   6100   vector unsigned int __res =
   6101       ~((vector unsigned int)__a | (vector unsigned int)__b);
   6102   return (vector float)__res;
   6103 }
   6104 
   6105 #ifdef __VSX__
   6106 static __inline__ vector double __ATTRS_o_ai vec_nor(vector double __a,
   6107                                                      vector double __b) {
   6108   vector unsigned long long __res =
   6109       ~((vector unsigned long long)__a | (vector unsigned long long)__b);
   6110   return (vector double)__res;
   6111 }
   6112 #endif
   6113 
   6114 /* vec_vnor */
   6115 
   6116 static __inline__ vector signed char __ATTRS_o_ai
   6117 vec_vnor(vector signed char __a, vector signed char __b) {
   6118   return ~(__a | __b);
   6119 }
   6120 
   6121 static __inline__ vector unsigned char __ATTRS_o_ai
   6122 vec_vnor(vector unsigned char __a, vector unsigned char __b) {
   6123   return ~(__a | __b);
   6124 }
   6125 
   6126 static __inline__ vector bool char __ATTRS_o_ai vec_vnor(vector bool char __a,
   6127                                                          vector bool char __b) {
   6128   return ~(__a | __b);
   6129 }
   6130 
   6131 static __inline__ vector short __ATTRS_o_ai vec_vnor(vector short __a,
   6132                                                      vector short __b) {
   6133   return ~(__a | __b);
   6134 }
   6135 
   6136 static __inline__ vector unsigned short __ATTRS_o_ai
   6137 vec_vnor(vector unsigned short __a, vector unsigned short __b) {
   6138   return ~(__a | __b);
   6139 }
   6140 
   6141 static __inline__ vector bool short __ATTRS_o_ai
   6142 vec_vnor(vector bool short __a, vector bool short __b) {
   6143   return ~(__a | __b);
   6144 }
   6145 
   6146 static __inline__ vector int __ATTRS_o_ai vec_vnor(vector int __a,
   6147                                                    vector int __b) {
   6148   return ~(__a | __b);
   6149 }
   6150 
   6151 static __inline__ vector unsigned int __ATTRS_o_ai
   6152 vec_vnor(vector unsigned int __a, vector unsigned int __b) {
   6153   return ~(__a | __b);
   6154 }
   6155 
   6156 static __inline__ vector bool int __ATTRS_o_ai vec_vnor(vector bool int __a,
   6157                                                         vector bool int __b) {
   6158   return ~(__a | __b);
   6159 }
   6160 
   6161 static __inline__ vector float __ATTRS_o_ai vec_vnor(vector float __a,
   6162                                                      vector float __b) {
   6163   vector unsigned int __res =
   6164       ~((vector unsigned int)__a | (vector unsigned int)__b);
   6165   return (vector float)__res;
   6166 }
   6167 
   6168 #ifdef __VSX__
   6169 static __inline__ vector signed long long __ATTRS_o_ai
   6170 vec_nor(vector signed long long __a, vector signed long long __b) {
   6171   return ~(__a | __b);
   6172 }
   6173 
   6174 static __inline__ vector unsigned long long __ATTRS_o_ai
   6175 vec_nor(vector unsigned long long __a, vector unsigned long long __b) {
   6176   return ~(__a | __b);
   6177 }
   6178 
   6179 static __inline__ vector bool long long __ATTRS_o_ai
   6180 vec_nor(vector bool long long __a, vector bool long long __b) {
   6181   return ~(__a | __b);
   6182 }
   6183 #endif
   6184 
   6185 /* vec_or */
   6186 
   6187 #define __builtin_altivec_vor vec_or
   6188 
   6189 static __inline__ vector signed char __ATTRS_o_ai
   6190 vec_or(vector signed char __a, vector signed char __b) {
   6191   return __a | __b;
   6192 }
   6193 
   6194 static __inline__ vector signed char __ATTRS_o_ai
   6195 vec_or(vector bool char __a, vector signed char __b) {
   6196   return (vector signed char)__a | __b;
   6197 }
   6198 
   6199 static __inline__ vector signed char __ATTRS_o_ai vec_or(vector signed char __a,
   6200                                                          vector bool char __b) {
   6201   return __a | (vector signed char)__b;
   6202 }
   6203 
   6204 static __inline__ vector unsigned char __ATTRS_o_ai
   6205 vec_or(vector unsigned char __a, vector unsigned char __b) {
   6206   return __a | __b;
   6207 }
   6208 
   6209 static __inline__ vector unsigned char __ATTRS_o_ai
   6210 vec_or(vector bool char __a, vector unsigned char __b) {
   6211   return (vector unsigned char)__a | __b;
   6212 }
   6213 
   6214 static __inline__ vector unsigned char __ATTRS_o_ai
   6215 vec_or(vector unsigned char __a, vector bool char __b) {
   6216   return __a | (vector unsigned char)__b;
   6217 }
   6218 
   6219 static __inline__ vector bool char __ATTRS_o_ai vec_or(vector bool char __a,
   6220                                                        vector bool char __b) {
   6221   return __a | __b;
   6222 }
   6223 
   6224 static __inline__ vector short __ATTRS_o_ai vec_or(vector short __a,
   6225                                                    vector short __b) {
   6226   return __a | __b;
   6227 }
   6228 
   6229 static __inline__ vector short __ATTRS_o_ai vec_or(vector bool short __a,
   6230                                                    vector short __b) {
   6231   return (vector short)__a | __b;
   6232 }
   6233 
   6234 static __inline__ vector short __ATTRS_o_ai vec_or(vector short __a,
   6235                                                    vector bool short __b) {
   6236   return __a | (vector short)__b;
   6237 }
   6238 
   6239 static __inline__ vector unsigned short __ATTRS_o_ai
   6240 vec_or(vector unsigned short __a, vector unsigned short __b) {
   6241   return __a | __b;
   6242 }
   6243 
   6244 static __inline__ vector unsigned short __ATTRS_o_ai
   6245 vec_or(vector bool short __a, vector unsigned short __b) {
   6246   return (vector unsigned short)__a | __b;
   6247 }
   6248 
   6249 static __inline__ vector unsigned short __ATTRS_o_ai
   6250 vec_or(vector unsigned short __a, vector bool short __b) {
   6251   return __a | (vector unsigned short)__b;
   6252 }
   6253 
   6254 static __inline__ vector bool short __ATTRS_o_ai vec_or(vector bool short __a,
   6255                                                         vector bool short __b) {
   6256   return __a | __b;
   6257 }
   6258 
   6259 static __inline__ vector int __ATTRS_o_ai vec_or(vector int __a,
   6260                                                  vector int __b) {
   6261   return __a | __b;
   6262 }
   6263 
   6264 static __inline__ vector int __ATTRS_o_ai vec_or(vector bool int __a,
   6265                                                  vector int __b) {
   6266   return (vector int)__a | __b;
   6267 }
   6268 
   6269 static __inline__ vector int __ATTRS_o_ai vec_or(vector int __a,
   6270                                                  vector bool int __b) {
   6271   return __a | (vector int)__b;
   6272 }
   6273 
   6274 static __inline__ vector unsigned int __ATTRS_o_ai
   6275 vec_or(vector unsigned int __a, vector unsigned int __b) {
   6276   return __a | __b;
   6277 }
   6278 
   6279 static __inline__ vector unsigned int __ATTRS_o_ai
   6280 vec_or(vector bool int __a, vector unsigned int __b) {
   6281   return (vector unsigned int)__a | __b;
   6282 }
   6283 
   6284 static __inline__ vector unsigned int __ATTRS_o_ai
   6285 vec_or(vector unsigned int __a, vector bool int __b) {
   6286   return __a | (vector unsigned int)__b;
   6287 }
   6288 
   6289 static __inline__ vector bool int __ATTRS_o_ai vec_or(vector bool int __a,
   6290                                                       vector bool int __b) {
   6291   return __a | __b;
   6292 }
   6293 
   6294 static __inline__ vector float __ATTRS_o_ai vec_or(vector float __a,
   6295                                                    vector float __b) {
   6296   vector unsigned int __res =
   6297       (vector unsigned int)__a | (vector unsigned int)__b;
   6298   return (vector float)__res;
   6299 }
   6300 
   6301 static __inline__ vector float __ATTRS_o_ai vec_or(vector bool int __a,
   6302                                                    vector float __b) {
   6303   vector unsigned int __res =
   6304       (vector unsigned int)__a | (vector unsigned int)__b;
   6305   return (vector float)__res;
   6306 }
   6307 
   6308 static __inline__ vector float __ATTRS_o_ai vec_or(vector float __a,
   6309                                                    vector bool int __b) {
   6310   vector unsigned int __res =
   6311       (vector unsigned int)__a | (vector unsigned int)__b;
   6312   return (vector float)__res;
   6313 }
   6314 
   6315 #ifdef __VSX__
   6316 static __inline__ vector double __ATTRS_o_ai vec_or(vector bool long long __a,
   6317                                                     vector double __b) {
   6318   return (vector unsigned long long)__a | (vector unsigned long long)__b;
   6319 }
   6320 
   6321 static __inline__ vector double __ATTRS_o_ai vec_or(vector double __a,
   6322                                                     vector bool long long __b) {
   6323   return (vector unsigned long long)__a | (vector unsigned long long)__b;
   6324 }
   6325 
   6326 static __inline__ vector double __ATTRS_o_ai vec_or(vector double __a,
   6327                                                     vector double __b) {
   6328   vector unsigned long long __res =
   6329       (vector unsigned long long)__a | (vector unsigned long long)__b;
   6330   return (vector double)__res;
   6331 }
   6332 
   6333 static __inline__ vector signed long long __ATTRS_o_ai
   6334 vec_or(vector signed long long __a, vector signed long long __b) {
   6335   return __a | __b;
   6336 }
   6337 
   6338 static __inline__ vector signed long long __ATTRS_o_ai
   6339 vec_or(vector bool long long __a, vector signed long long __b) {
   6340   return (vector signed long long)__a | __b;
   6341 }
   6342 
   6343 static __inline__ vector signed long long __ATTRS_o_ai
   6344 vec_or(vector signed long long __a, vector bool long long __b) {
   6345   return __a | (vector signed long long)__b;
   6346 }
   6347 
   6348 static __inline__ vector unsigned long long __ATTRS_o_ai
   6349 vec_or(vector unsigned long long __a, vector unsigned long long __b) {
   6350   return __a | __b;
   6351 }
   6352 
   6353 static __inline__ vector unsigned long long __ATTRS_o_ai
   6354 vec_or(vector bool long long __a, vector unsigned long long __b) {
   6355   return (vector unsigned long long)__a | __b;
   6356 }
   6357 
   6358 static __inline__ vector unsigned long long __ATTRS_o_ai
   6359 vec_or(vector unsigned long long __a, vector bool long long __b) {
   6360   return __a | (vector unsigned long long)__b;
   6361 }
   6362 
   6363 static __inline__ vector bool long long __ATTRS_o_ai
   6364 vec_or(vector bool long long __a, vector bool long long __b) {
   6365   return __a | __b;
   6366 }
   6367 #endif
   6368 
   6369 #ifdef __POWER8_VECTOR__
   6370 static __inline__ vector signed char __ATTRS_o_ai
   6371 vec_orc(vector signed char __a, vector signed char __b) {
   6372   return __a | ~__b;
   6373 }
   6374 
   6375 static __inline__ vector signed char __ATTRS_o_ai
   6376 vec_orc(vector signed char __a, vector bool char __b) {
   6377   return __a | ~__b;
   6378 }
   6379 
   6380 static __inline__ vector signed char __ATTRS_o_ai
   6381 vec_orc(vector bool char __a, vector signed char __b) {
   6382   return __a | ~__b;
   6383 }
   6384 
   6385 static __inline__ vector unsigned char __ATTRS_o_ai
   6386 vec_orc(vector unsigned char __a, vector unsigned char __b) {
   6387   return __a | ~__b;
   6388 }
   6389 
   6390 static __inline__ vector unsigned char __ATTRS_o_ai
   6391 vec_orc(vector unsigned char __a, vector bool char __b) {
   6392   return __a | ~__b;
   6393 }
   6394 
   6395 static __inline__ vector unsigned char __ATTRS_o_ai
   6396 vec_orc(vector bool char __a, vector unsigned char __b) {
   6397   return __a | ~__b;
   6398 }
   6399 
   6400 static __inline__ vector bool char __ATTRS_o_ai vec_orc(vector bool char __a,
   6401                                                         vector bool char __b) {
   6402   return __a | ~__b;
   6403 }
   6404 
   6405 static __inline__ vector signed short __ATTRS_o_ai
   6406 vec_orc(vector signed short __a, vector signed short __b) {
   6407   return __a | ~__b;
   6408 }
   6409 
   6410 static __inline__ vector signed short __ATTRS_o_ai
   6411 vec_orc(vector signed short __a, vector bool short __b) {
   6412   return __a | ~__b;
   6413 }
   6414 
   6415 static __inline__ vector signed short __ATTRS_o_ai
   6416 vec_orc(vector bool short __a, vector signed short __b) {
   6417   return __a | ~__b;
   6418 }
   6419 
   6420 static __inline__ vector unsigned short __ATTRS_o_ai
   6421 vec_orc(vector unsigned short __a, vector unsigned short __b) {
   6422   return __a | ~__b;
   6423 }
   6424 
   6425 static __inline__ vector unsigned short __ATTRS_o_ai
   6426 vec_orc(vector unsigned short __a, vector bool short __b) {
   6427   return __a | ~__b;
   6428 }
   6429 
   6430 static __inline__ vector unsigned short __ATTRS_o_ai
   6431 vec_orc(vector bool short __a, vector unsigned short __b) {
   6432   return __a | ~__b;
   6433 }
   6434 
   6435 static __inline__ vector bool short __ATTRS_o_ai
   6436 vec_orc(vector bool short __a, vector bool short __b) {
   6437   return __a | ~__b;
   6438 }
   6439 
   6440 static __inline__ vector signed int __ATTRS_o_ai
   6441 vec_orc(vector signed int __a, vector signed int __b) {
   6442   return __a | ~__b;
   6443 }
   6444 
   6445 static __inline__ vector signed int __ATTRS_o_ai vec_orc(vector signed int __a,
   6446                                                          vector bool int __b) {
   6447   return __a | ~__b;
   6448 }
   6449 
   6450 static __inline__ vector signed int __ATTRS_o_ai
   6451 vec_orc(vector bool int __a, vector signed int __b) {
   6452   return __a | ~__b;
   6453 }
   6454 
   6455 static __inline__ vector unsigned int __ATTRS_o_ai
   6456 vec_orc(vector unsigned int __a, vector unsigned int __b) {
   6457   return __a | ~__b;
   6458 }
   6459 
   6460 static __inline__ vector unsigned int __ATTRS_o_ai
   6461 vec_orc(vector unsigned int __a, vector bool int __b) {
   6462   return __a | ~__b;
   6463 }
   6464 
   6465 static __inline__ vector unsigned int __ATTRS_o_ai
   6466 vec_orc(vector bool int __a, vector unsigned int __b) {
   6467   return __a | ~__b;
   6468 }
   6469 
   6470 static __inline__ vector bool int __ATTRS_o_ai vec_orc(vector bool int __a,
   6471                                                        vector bool int __b) {
   6472   return __a | ~__b;
   6473 }
   6474 
   6475 static __inline__ vector float __ATTRS_o_ai
   6476 vec_orc(vector bool int __a, vector float __b) {
   6477  return (vector float)(__a | ~(vector unsigned int)__b);
   6478 }
   6479 
   6480 static __inline__ vector float __ATTRS_o_ai
   6481 vec_orc(vector float __a, vector bool int __b) {
   6482   return (vector float)((vector unsigned int)__a | ~__b);
   6483 }
   6484 
   6485 static __inline__ vector signed long long __ATTRS_o_ai
   6486 vec_orc(vector signed long long __a, vector signed long long __b) {
   6487   return __a | ~__b;
   6488 }
   6489 
   6490 static __inline__ vector signed long long __ATTRS_o_ai
   6491 vec_orc(vector signed long long __a, vector bool long long __b) {
   6492   return __a | ~__b;
   6493 }
   6494 
   6495 static __inline__ vector signed long long __ATTRS_o_ai
   6496 vec_orc(vector bool long long __a, vector signed long long __b) {
   6497   return __a | ~__b;
   6498 }
   6499 
   6500 static __inline__ vector unsigned long long __ATTRS_o_ai
   6501 vec_orc(vector unsigned long long __a, vector unsigned long long __b) {
   6502   return __a | ~__b;
   6503 }
   6504 
   6505 static __inline__ vector unsigned long long __ATTRS_o_ai
   6506 vec_orc(vector unsigned long long __a, vector bool long long __b) {
   6507   return __a | ~__b;
   6508 }
   6509 
   6510 static __inline__ vector unsigned long long __ATTRS_o_ai
   6511 vec_orc(vector bool long long __a, vector unsigned long long __b) {
   6512   return __a | ~__b;
   6513 }
   6514 
   6515 static __inline__ vector bool long long __ATTRS_o_ai
   6516 vec_orc(vector bool long long __a, vector bool long long __b) {
   6517   return __a | ~__b;
   6518 }
   6519 
   6520 static __inline__ vector double __ATTRS_o_ai
   6521 vec_orc(vector double __a, vector bool long long __b) {
   6522   return (vector double)((vector unsigned long long)__a | ~__b);
   6523 }
   6524 
   6525 static __inline__ vector double __ATTRS_o_ai
   6526 vec_orc(vector bool long long __a, vector double __b) {
   6527   return (vector double)(__a | ~(vector unsigned long long)__b);
   6528 }
   6529 #endif
   6530 
   6531 /* vec_vor */
   6532 
   6533 static __inline__ vector signed char __ATTRS_o_ai
   6534 vec_vor(vector signed char __a, vector signed char __b) {
   6535   return __a | __b;
   6536 }
   6537 
   6538 static __inline__ vector signed char __ATTRS_o_ai
   6539 vec_vor(vector bool char __a, vector signed char __b) {
   6540   return (vector signed char)__a | __b;
   6541 }
   6542 
   6543 static __inline__ vector signed char __ATTRS_o_ai
   6544 vec_vor(vector signed char __a, vector bool char __b) {
   6545   return __a | (vector signed char)__b;
   6546 }
   6547 
   6548 static __inline__ vector unsigned char __ATTRS_o_ai
   6549 vec_vor(vector unsigned char __a, vector unsigned char __b) {
   6550   return __a | __b;
   6551 }
   6552 
   6553 static __inline__ vector unsigned char __ATTRS_o_ai
   6554 vec_vor(vector bool char __a, vector unsigned char __b) {
   6555   return (vector unsigned char)__a | __b;
   6556 }
   6557 
   6558 static __inline__ vector unsigned char __ATTRS_o_ai
   6559 vec_vor(vector unsigned char __a, vector bool char __b) {
   6560   return __a | (vector unsigned char)__b;
   6561 }
   6562 
   6563 static __inline__ vector bool char __ATTRS_o_ai vec_vor(vector bool char __a,
   6564                                                         vector bool char __b) {
   6565   return __a | __b;
   6566 }
   6567 
   6568 static __inline__ vector short __ATTRS_o_ai vec_vor(vector short __a,
   6569                                                     vector short __b) {
   6570   return __a | __b;
   6571 }
   6572 
   6573 static __inline__ vector short __ATTRS_o_ai vec_vor(vector bool short __a,
   6574                                                     vector short __b) {
   6575   return (vector short)__a | __b;
   6576 }
   6577 
   6578 static __inline__ vector short __ATTRS_o_ai vec_vor(vector short __a,
   6579                                                     vector bool short __b) {
   6580   return __a | (vector short)__b;
   6581 }
   6582 
   6583 static __inline__ vector unsigned short __ATTRS_o_ai
   6584 vec_vor(vector unsigned short __a, vector unsigned short __b) {
   6585   return __a | __b;
   6586 }
   6587 
   6588 static __inline__ vector unsigned short __ATTRS_o_ai
   6589 vec_vor(vector bool short __a, vector unsigned short __b) {
   6590   return (vector unsigned short)__a | __b;
   6591 }
   6592 
   6593 static __inline__ vector unsigned short __ATTRS_o_ai
   6594 vec_vor(vector unsigned short __a, vector bool short __b) {
   6595   return __a | (vector unsigned short)__b;
   6596 }
   6597 
   6598 static __inline__ vector bool short __ATTRS_o_ai
   6599 vec_vor(vector bool short __a, vector bool short __b) {
   6600   return __a | __b;
   6601 }
   6602 
   6603 static __inline__ vector int __ATTRS_o_ai vec_vor(vector int __a,
   6604                                                   vector int __b) {
   6605   return __a | __b;
   6606 }
   6607 
   6608 static __inline__ vector int __ATTRS_o_ai vec_vor(vector bool int __a,
   6609                                                   vector int __b) {
   6610   return (vector int)__a | __b;
   6611 }
   6612 
   6613 static __inline__ vector int __ATTRS_o_ai vec_vor(vector int __a,
   6614                                                   vector bool int __b) {
   6615   return __a | (vector int)__b;
   6616 }
   6617 
   6618 static __inline__ vector unsigned int __ATTRS_o_ai
   6619 vec_vor(vector unsigned int __a, vector unsigned int __b) {
   6620   return __a | __b;
   6621 }
   6622 
   6623 static __inline__ vector unsigned int __ATTRS_o_ai
   6624 vec_vor(vector bool int __a, vector unsigned int __b) {
   6625   return (vector unsigned int)__a | __b;
   6626 }
   6627 
   6628 static __inline__ vector unsigned int __ATTRS_o_ai
   6629 vec_vor(vector unsigned int __a, vector bool int __b) {
   6630   return __a | (vector unsigned int)__b;
   6631 }
   6632 
   6633 static __inline__ vector bool int __ATTRS_o_ai vec_vor(vector bool int __a,
   6634                                                        vector bool int __b) {
   6635   return __a | __b;
   6636 }
   6637 
   6638 static __inline__ vector float __ATTRS_o_ai vec_vor(vector float __a,
   6639                                                     vector float __b) {
   6640   vector unsigned int __res =
   6641       (vector unsigned int)__a | (vector unsigned int)__b;
   6642   return (vector float)__res;
   6643 }
   6644 
   6645 static __inline__ vector float __ATTRS_o_ai vec_vor(vector bool int __a,
   6646                                                     vector float __b) {
   6647   vector unsigned int __res =
   6648       (vector unsigned int)__a | (vector unsigned int)__b;
   6649   return (vector float)__res;
   6650 }
   6651 
   6652 static __inline__ vector float __ATTRS_o_ai vec_vor(vector float __a,
   6653                                                     vector bool int __b) {
   6654   vector unsigned int __res =
   6655       (vector unsigned int)__a | (vector unsigned int)__b;
   6656   return (vector float)__res;
   6657 }
   6658 
   6659 #ifdef __VSX__
   6660 static __inline__ vector signed long long __ATTRS_o_ai
   6661 vec_vor(vector signed long long __a, vector signed long long __b) {
   6662   return __a | __b;
   6663 }
   6664 
   6665 static __inline__ vector signed long long __ATTRS_o_ai
   6666 vec_vor(vector bool long long __a, vector signed long long __b) {
   6667   return (vector signed long long)__a | __b;
   6668 }
   6669 
   6670 static __inline__ vector signed long long __ATTRS_o_ai
   6671 vec_vor(vector signed long long __a, vector bool long long __b) {
   6672   return __a | (vector signed long long)__b;
   6673 }
   6674 
   6675 static __inline__ vector unsigned long long __ATTRS_o_ai
   6676 vec_vor(vector unsigned long long __a, vector unsigned long long __b) {
   6677   return __a | __b;
   6678 }
   6679 
   6680 static __inline__ vector unsigned long long __ATTRS_o_ai
   6681 vec_vor(vector bool long long __a, vector unsigned long long __b) {
   6682   return (vector unsigned long long)__a | __b;
   6683 }
   6684 
   6685 static __inline__ vector unsigned long long __ATTRS_o_ai
   6686 vec_vor(vector unsigned long long __a, vector bool long long __b) {
   6687   return __a | (vector unsigned long long)__b;
   6688 }
   6689 
   6690 static __inline__ vector bool long long __ATTRS_o_ai
   6691 vec_vor(vector bool long long __a, vector bool long long __b) {
   6692   return __a | __b;
   6693 }
   6694 #endif
   6695 
   6696 /* vec_pack */
   6697 
   6698 /* The various vector pack instructions have a big-endian bias, so for
   6699    little endian we must handle reversed element numbering.  */
   6700 
   6701 static __inline__ vector signed char __ATTRS_o_ai
   6702 vec_pack(vector signed short __a, vector signed short __b) {
   6703 #ifdef __LITTLE_ENDIAN__
   6704   return (vector signed char)vec_perm(
   6705       __a, __b,
   6706       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
   6707                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
   6708 #else
   6709   return (vector signed char)vec_perm(
   6710       __a, __b,
   6711       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
   6712                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
   6713 #endif
   6714 }
   6715 
   6716 static __inline__ vector unsigned char __ATTRS_o_ai
   6717 vec_pack(vector unsigned short __a, vector unsigned short __b) {
   6718 #ifdef __LITTLE_ENDIAN__
   6719   return (vector unsigned char)vec_perm(
   6720       __a, __b,
   6721       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
   6722                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
   6723 #else
   6724   return (vector unsigned char)vec_perm(
   6725       __a, __b,
   6726       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
   6727                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
   6728 #endif
   6729 }
   6730 
   6731 static __inline__ vector bool char __ATTRS_o_ai
   6732 vec_pack(vector bool short __a, vector bool short __b) {
   6733 #ifdef __LITTLE_ENDIAN__
   6734   return (vector bool char)vec_perm(
   6735       __a, __b,
   6736       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
   6737                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
   6738 #else
   6739   return (vector bool char)vec_perm(
   6740       __a, __b,
   6741       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
   6742                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
   6743 #endif
   6744 }
   6745 
   6746 static __inline__ vector short __ATTRS_o_ai vec_pack(vector int __a,
   6747                                                      vector int __b) {
   6748 #ifdef __LITTLE_ENDIAN__
   6749   return (vector short)vec_perm(
   6750       __a, __b,
   6751       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
   6752                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
   6753 #else
   6754   return (vector short)vec_perm(
   6755       __a, __b,
   6756       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
   6757                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
   6758 #endif
   6759 }
   6760 
   6761 static __inline__ vector unsigned short __ATTRS_o_ai
   6762 vec_pack(vector unsigned int __a, vector unsigned int __b) {
   6763 #ifdef __LITTLE_ENDIAN__
   6764   return (vector unsigned short)vec_perm(
   6765       __a, __b,
   6766       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
   6767                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
   6768 #else
   6769   return (vector unsigned short)vec_perm(
   6770       __a, __b,
   6771       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
   6772                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
   6773 #endif
   6774 }
   6775 
   6776 static __inline__ vector bool short __ATTRS_o_ai vec_pack(vector bool int __a,
   6777                                                           vector bool int __b) {
   6778 #ifdef __LITTLE_ENDIAN__
   6779   return (vector bool short)vec_perm(
   6780       __a, __b,
   6781       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
   6782                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
   6783 #else
   6784   return (vector bool short)vec_perm(
   6785       __a, __b,
   6786       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
   6787                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
   6788 #endif
   6789 }
   6790 
   6791 #ifdef __VSX__
   6792 static __inline__ vector signed int __ATTRS_o_ai
   6793 vec_pack(vector signed long long __a, vector signed long long __b) {
   6794 #ifdef __LITTLE_ENDIAN__
   6795   return (vector signed int)vec_perm(
   6796       __a, __b,
   6797       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
   6798                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
   6799 #else
   6800   return (vector signed int)vec_perm(
   6801       __a, __b,
   6802       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
   6803                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
   6804 #endif
   6805 }
   6806 static __inline__ vector unsigned int __ATTRS_o_ai
   6807 vec_pack(vector unsigned long long __a, vector unsigned long long __b) {
   6808 #ifdef __LITTLE_ENDIAN__
   6809   return (vector unsigned int)vec_perm(
   6810       __a, __b,
   6811       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
   6812                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
   6813 #else
   6814   return (vector unsigned int)vec_perm(
   6815       __a, __b,
   6816       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
   6817                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
   6818 #endif
   6819 }
   6820 
   6821 static __inline__ vector bool int __ATTRS_o_ai
   6822 vec_pack(vector bool long long __a, vector bool long long __b) {
   6823 #ifdef __LITTLE_ENDIAN__
   6824   return (vector bool int)vec_perm(
   6825       __a, __b,
   6826       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
   6827                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
   6828 #else
   6829   return (vector bool int)vec_perm(
   6830       __a, __b,
   6831       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
   6832                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
   6833 #endif
   6834 }
   6835 
   6836 static __inline__ vector float __ATTRS_o_ai
   6837 vec_pack(vector double __a, vector double __b) {
   6838   return (vector float) (__a[0], __a[1], __b[0], __b[1]);
   6839 }
   6840 #endif
   6841 
   6842 #ifdef __POWER9_VECTOR__
   6843 static __inline__ vector unsigned short __ATTRS_o_ai
   6844 vec_pack_to_short_fp32(vector float __a, vector float __b) {
   6845   vector float __resa = __builtin_vsx_xvcvsphp(__a);
   6846   vector float __resb = __builtin_vsx_xvcvsphp(__b);
   6847 #ifdef __LITTLE_ENDIAN__
   6848   return (vector unsigned short)vec_mergee(__resa, __resb);
   6849 #else
   6850   return (vector unsigned short)vec_mergeo(__resa, __resb);
   6851 #endif
   6852 }
   6853 
   6854 #endif
   6855 /* vec_vpkuhum */
   6856 
   6857 #define __builtin_altivec_vpkuhum vec_vpkuhum
   6858 
   6859 static __inline__ vector signed char __ATTRS_o_ai
   6860 vec_vpkuhum(vector signed short __a, vector signed short __b) {
   6861 #ifdef __LITTLE_ENDIAN__
   6862   return (vector signed char)vec_perm(
   6863       __a, __b,
   6864       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
   6865                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
   6866 #else
   6867   return (vector signed char)vec_perm(
   6868       __a, __b,
   6869       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
   6870                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
   6871 #endif
   6872 }
   6873 
   6874 static __inline__ vector unsigned char __ATTRS_o_ai
   6875 vec_vpkuhum(vector unsigned short __a, vector unsigned short __b) {
   6876 #ifdef __LITTLE_ENDIAN__
   6877   return (vector unsigned char)vec_perm(
   6878       __a, __b,
   6879       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
   6880                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
   6881 #else
   6882   return (vector unsigned char)vec_perm(
   6883       __a, __b,
   6884       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
   6885                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
   6886 #endif
   6887 }
   6888 
   6889 static __inline__ vector bool char __ATTRS_o_ai
   6890 vec_vpkuhum(vector bool short __a, vector bool short __b) {
   6891 #ifdef __LITTLE_ENDIAN__
   6892   return (vector bool char)vec_perm(
   6893       __a, __b,
   6894       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
   6895                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
   6896 #else
   6897   return (vector bool char)vec_perm(
   6898       __a, __b,
   6899       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
   6900                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
   6901 #endif
   6902 }
   6903 
   6904 /* vec_vpkuwum */
   6905 
   6906 #define __builtin_altivec_vpkuwum vec_vpkuwum
   6907 
   6908 static __inline__ vector short __ATTRS_o_ai vec_vpkuwum(vector int __a,
   6909                                                         vector int __b) {
   6910 #ifdef __LITTLE_ENDIAN__
   6911   return (vector short)vec_perm(
   6912       __a, __b,
   6913       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
   6914                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
   6915 #else
   6916   return (vector short)vec_perm(
   6917       __a, __b,
   6918       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
   6919                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
   6920 #endif
   6921 }
   6922 
   6923 static __inline__ vector unsigned short __ATTRS_o_ai
   6924 vec_vpkuwum(vector unsigned int __a, vector unsigned int __b) {
   6925 #ifdef __LITTLE_ENDIAN__
   6926   return (vector unsigned short)vec_perm(
   6927       __a, __b,
   6928       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
   6929                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
   6930 #else
   6931   return (vector unsigned short)vec_perm(
   6932       __a, __b,
   6933       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
   6934                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
   6935 #endif
   6936 }
   6937 
   6938 static __inline__ vector bool short __ATTRS_o_ai
   6939 vec_vpkuwum(vector bool int __a, vector bool int __b) {
   6940 #ifdef __LITTLE_ENDIAN__
   6941   return (vector bool short)vec_perm(
   6942       __a, __b,
   6943       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
   6944                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
   6945 #else
   6946   return (vector bool short)vec_perm(
   6947       __a, __b,
   6948       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
   6949                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
   6950 #endif
   6951 }
   6952 
   6953 /* vec_vpkudum */
   6954 
   6955 #ifdef __POWER8_VECTOR__
   6956 #define __builtin_altivec_vpkudum vec_vpkudum
   6957 
   6958 static __inline__ vector int __ATTRS_o_ai vec_vpkudum(vector long long __a,
   6959                                                       vector long long __b) {
   6960 #ifdef __LITTLE_ENDIAN__
   6961   return (vector int)vec_perm(
   6962       __a, __b,
   6963       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
   6964                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
   6965 #else
   6966   return (vector int)vec_perm(
   6967       __a, __b,
   6968       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
   6969                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
   6970 #endif
   6971 }
   6972 
   6973 static __inline__ vector unsigned int __ATTRS_o_ai
   6974 vec_vpkudum(vector unsigned long long __a, vector unsigned long long __b) {
   6975 #ifdef __LITTLE_ENDIAN__
   6976   return (vector unsigned int)vec_perm(
   6977       __a, __b,
   6978       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
   6979                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
   6980 #else
   6981   return (vector unsigned int)vec_perm(
   6982       __a, __b,
   6983       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
   6984                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
   6985 #endif
   6986 }
   6987 
   6988 static __inline__ vector bool int __ATTRS_o_ai
   6989 vec_vpkudum(vector bool long long __a, vector bool long long __b) {
   6990 #ifdef __LITTLE_ENDIAN__
   6991   return (vector bool int)vec_perm(
   6992       (vector long long)__a, (vector long long)__b,
   6993       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
   6994                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
   6995 #else
   6996   return (vector bool int)vec_perm(
   6997       (vector long long)__a, (vector long long)__b,
   6998       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
   6999                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
   7000 #endif
   7001 }
   7002 #endif
   7003 
   7004 /* vec_packpx */
   7005 
   7006 static __inline__ vector pixel __attribute__((__always_inline__))
   7007 vec_packpx(vector unsigned int __a, vector unsigned int __b) {
   7008 #ifdef __LITTLE_ENDIAN__
   7009   return (vector pixel)__builtin_altivec_vpkpx(__b, __a);
   7010 #else
   7011   return (vector pixel)__builtin_altivec_vpkpx(__a, __b);
   7012 #endif
   7013 }
   7014 
   7015 /* vec_vpkpx */
   7016 
   7017 static __inline__ vector pixel __attribute__((__always_inline__))
   7018 vec_vpkpx(vector unsigned int __a, vector unsigned int __b) {
   7019 #ifdef __LITTLE_ENDIAN__
   7020   return (vector pixel)__builtin_altivec_vpkpx(__b, __a);
   7021 #else
   7022   return (vector pixel)__builtin_altivec_vpkpx(__a, __b);
   7023 #endif
   7024 }
   7025 
   7026 /* vec_packs */
   7027 
   7028 static __inline__ vector signed char __ATTRS_o_ai vec_packs(vector short __a,
   7029                                                             vector short __b) {
   7030 #ifdef __LITTLE_ENDIAN__
   7031   return __builtin_altivec_vpkshss(__b, __a);
   7032 #else
   7033   return __builtin_altivec_vpkshss(__a, __b);
   7034 #endif
   7035 }
   7036 
   7037 static __inline__ vector unsigned char __ATTRS_o_ai
   7038 vec_packs(vector unsigned short __a, vector unsigned short __b) {
   7039 #ifdef __LITTLE_ENDIAN__
   7040   return __builtin_altivec_vpkuhus(__b, __a);
   7041 #else
   7042   return __builtin_altivec_vpkuhus(__a, __b);
   7043 #endif
   7044 }
   7045 
   7046 static __inline__ vector signed short __ATTRS_o_ai vec_packs(vector int __a,
   7047                                                              vector int __b) {
   7048 #ifdef __LITTLE_ENDIAN__
   7049   return __builtin_altivec_vpkswss(__b, __a);
   7050 #else
   7051   return __builtin_altivec_vpkswss(__a, __b);
   7052 #endif
   7053 }
   7054 
   7055 static __inline__ vector unsigned short __ATTRS_o_ai
   7056 vec_packs(vector unsigned int __a, vector unsigned int __b) {
   7057 #ifdef __LITTLE_ENDIAN__
   7058   return __builtin_altivec_vpkuwus(__b, __a);
   7059 #else
   7060   return __builtin_altivec_vpkuwus(__a, __b);
   7061 #endif
   7062 }
   7063 
   7064 #ifdef __POWER8_VECTOR__
   7065 static __inline__ vector int __ATTRS_o_ai vec_packs(vector long long __a,
   7066                                                     vector long long __b) {
   7067 #ifdef __LITTLE_ENDIAN__
   7068   return __builtin_altivec_vpksdss(__b, __a);
   7069 #else
   7070   return __builtin_altivec_vpksdss(__a, __b);
   7071 #endif
   7072 }
   7073 
   7074 static __inline__ vector unsigned int __ATTRS_o_ai
   7075 vec_packs(vector unsigned long long __a, vector unsigned long long __b) {
   7076 #ifdef __LITTLE_ENDIAN__
   7077   return __builtin_altivec_vpkudus(__b, __a);
   7078 #else
   7079   return __builtin_altivec_vpkudus(__a, __b);
   7080 #endif
   7081 }
   7082 #endif
   7083 
   7084 /* vec_vpkshss */
   7085 
   7086 static __inline__ vector signed char __attribute__((__always_inline__))
   7087 vec_vpkshss(vector short __a, vector short __b) {
   7088 #ifdef __LITTLE_ENDIAN__
   7089   return __builtin_altivec_vpkshss(__b, __a);
   7090 #else
   7091   return __builtin_altivec_vpkshss(__a, __b);
   7092 #endif
   7093 }
   7094 
   7095 /* vec_vpksdss */
   7096 
   7097 #ifdef __POWER8_VECTOR__
   7098 static __inline__ vector int __ATTRS_o_ai vec_vpksdss(vector long long __a,
   7099                                                       vector long long __b) {
   7100 #ifdef __LITTLE_ENDIAN__
   7101   return __builtin_altivec_vpksdss(__b, __a);
   7102 #else
   7103   return __builtin_altivec_vpksdss(__a, __b);
   7104 #endif
   7105 }
   7106 #endif
   7107 
   7108 /* vec_vpkuhus */
   7109 
   7110 static __inline__ vector unsigned char __attribute__((__always_inline__))
   7111 vec_vpkuhus(vector unsigned short __a, vector unsigned short __b) {
   7112 #ifdef __LITTLE_ENDIAN__
   7113   return __builtin_altivec_vpkuhus(__b, __a);
   7114 #else
   7115   return __builtin_altivec_vpkuhus(__a, __b);
   7116 #endif
   7117 }
   7118 
   7119 /* vec_vpkudus */
   7120 
   7121 #ifdef __POWER8_VECTOR__
   7122 static __inline__ vector unsigned int __attribute__((__always_inline__))
   7123 vec_vpkudus(vector unsigned long long __a, vector unsigned long long __b) {
   7124 #ifdef __LITTLE_ENDIAN__
   7125   return __builtin_altivec_vpkudus(__b, __a);
   7126 #else
   7127   return __builtin_altivec_vpkudus(__a, __b);
   7128 #endif
   7129 }
   7130 #endif
   7131 
   7132 /* vec_vpkswss */
   7133 
   7134 static __inline__ vector signed short __attribute__((__always_inline__))
   7135 vec_vpkswss(vector int __a, vector int __b) {
   7136 #ifdef __LITTLE_ENDIAN__
   7137   return __builtin_altivec_vpkswss(__b, __a);
   7138 #else
   7139   return __builtin_altivec_vpkswss(__a, __b);
   7140 #endif
   7141 }
   7142 
   7143 /* vec_vpkuwus */
   7144 
   7145 static __inline__ vector unsigned short __attribute__((__always_inline__))
   7146 vec_vpkuwus(vector unsigned int __a, vector unsigned int __b) {
   7147 #ifdef __LITTLE_ENDIAN__
   7148   return __builtin_altivec_vpkuwus(__b, __a);
   7149 #else
   7150   return __builtin_altivec_vpkuwus(__a, __b);
   7151 #endif
   7152 }
   7153 
   7154 /* vec_packsu */
   7155 
   7156 static __inline__ vector unsigned char __ATTRS_o_ai
   7157 vec_packsu(vector short __a, vector short __b) {
   7158 #ifdef __LITTLE_ENDIAN__
   7159   return __builtin_altivec_vpkshus(__b, __a);
   7160 #else
   7161   return __builtin_altivec_vpkshus(__a, __b);
   7162 #endif
   7163 }
   7164 
   7165 static __inline__ vector unsigned char __ATTRS_o_ai
   7166 vec_packsu(vector unsigned short __a, vector unsigned short __b) {
   7167 #ifdef __LITTLE_ENDIAN__
   7168   return __builtin_altivec_vpkuhus(__b, __a);
   7169 #else
   7170   return __builtin_altivec_vpkuhus(__a, __b);
   7171 #endif
   7172 }
   7173 
   7174 static __inline__ vector unsigned short __ATTRS_o_ai
   7175 vec_packsu(vector int __a, vector int __b) {
   7176 #ifdef __LITTLE_ENDIAN__
   7177   return __builtin_altivec_vpkswus(__b, __a);
   7178 #else
   7179   return __builtin_altivec_vpkswus(__a, __b);
   7180 #endif
   7181 }
   7182 
   7183 static __inline__ vector unsigned short __ATTRS_o_ai
   7184 vec_packsu(vector unsigned int __a, vector unsigned int __b) {
   7185 #ifdef __LITTLE_ENDIAN__
   7186   return __builtin_altivec_vpkuwus(__b, __a);
   7187 #else
   7188   return __builtin_altivec_vpkuwus(__a, __b);
   7189 #endif
   7190 }
   7191 
   7192 #ifdef __POWER8_VECTOR__
   7193 static __inline__ vector unsigned int __ATTRS_o_ai
   7194 vec_packsu(vector long long __a, vector long long __b) {
   7195 #ifdef __LITTLE_ENDIAN__
   7196   return __builtin_altivec_vpksdus(__b, __a);
   7197 #else
   7198   return __builtin_altivec_vpksdus(__a, __b);
   7199 #endif
   7200 }
   7201 
   7202 static __inline__ vector unsigned int __ATTRS_o_ai
   7203 vec_packsu(vector unsigned long long __a, vector unsigned long long __b) {
   7204 #ifdef __LITTLE_ENDIAN__
   7205   return __builtin_altivec_vpkudus(__b, __a);
   7206 #else
   7207   return __builtin_altivec_vpkudus(__a, __b);
   7208 #endif
   7209 }
   7210 #endif
   7211 
   7212 /* vec_vpkshus */
   7213 
   7214 static __inline__ vector unsigned char __ATTRS_o_ai
   7215 vec_vpkshus(vector short __a, vector short __b) {
   7216 #ifdef __LITTLE_ENDIAN__
   7217   return __builtin_altivec_vpkshus(__b, __a);
   7218 #else
   7219   return __builtin_altivec_vpkshus(__a, __b);
   7220 #endif
   7221 }
   7222 
   7223 static __inline__ vector unsigned char __ATTRS_o_ai
   7224 vec_vpkshus(vector unsigned short __a, vector unsigned short __b) {
   7225 #ifdef __LITTLE_ENDIAN__
   7226   return __builtin_altivec_vpkuhus(__b, __a);
   7227 #else
   7228   return __builtin_altivec_vpkuhus(__a, __b);
   7229 #endif
   7230 }
   7231 
   7232 /* vec_vpkswus */
   7233 
   7234 static __inline__ vector unsigned short __ATTRS_o_ai
   7235 vec_vpkswus(vector int __a, vector int __b) {
   7236 #ifdef __LITTLE_ENDIAN__
   7237   return __builtin_altivec_vpkswus(__b, __a);
   7238 #else
   7239   return __builtin_altivec_vpkswus(__a, __b);
   7240 #endif
   7241 }
   7242 
   7243 static __inline__ vector unsigned short __ATTRS_o_ai
   7244 vec_vpkswus(vector unsigned int __a, vector unsigned int __b) {
   7245 #ifdef __LITTLE_ENDIAN__
   7246   return __builtin_altivec_vpkuwus(__b, __a);
   7247 #else
   7248   return __builtin_altivec_vpkuwus(__a, __b);
   7249 #endif
   7250 }
   7251 
   7252 /* vec_vpksdus */
   7253 
   7254 #ifdef __POWER8_VECTOR__
   7255 static __inline__ vector unsigned int __ATTRS_o_ai
   7256 vec_vpksdus(vector long long __a, vector long long __b) {
   7257 #ifdef __LITTLE_ENDIAN__
   7258   return __builtin_altivec_vpksdus(__b, __a);
   7259 #else
   7260   return __builtin_altivec_vpksdus(__a, __b);
   7261 #endif
   7262 }
   7263 #endif
   7264 
   7265 /* vec_perm */
   7266 
   7267 // The vperm instruction is defined architecturally with a big-endian bias.
   7268 // For little endian, we swap the input operands and invert the permute
   7269 // control vector.  Only the rightmost 5 bits matter, so we could use
   7270 // a vector of all 31s instead of all 255s to perform the inversion.
   7271 // However, when the PCV is not a constant, using 255 has an advantage
   7272 // in that the vec_xor can be recognized as a vec_nor (and for P8 and
   7273 // later, possibly a vec_nand).
   7274 
   7275 static __inline__ vector signed char __ATTRS_o_ai vec_perm(
   7276     vector signed char __a, vector signed char __b, vector unsigned char __c) {
   7277 #ifdef __LITTLE_ENDIAN__
   7278   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   7279                               255, 255, 255, 255, 255, 255, 255, 255};
   7280   __d = vec_xor(__c, __d);
   7281   return (vector signed char)__builtin_altivec_vperm_4si((vector int)__b,
   7282                                                          (vector int)__a, __d);
   7283 #else
   7284   return (vector signed char)__builtin_altivec_vperm_4si((vector int)__a,
   7285                                                          (vector int)__b, __c);
   7286 #endif
   7287 }
   7288 
   7289 static __inline__ vector unsigned char __ATTRS_o_ai
   7290 vec_perm(vector unsigned char __a, vector unsigned char __b,
   7291          vector unsigned char __c) {
   7292 #ifdef __LITTLE_ENDIAN__
   7293   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   7294                               255, 255, 255, 255, 255, 255, 255, 255};
   7295   __d = vec_xor(__c, __d);
   7296   return (vector unsigned char)__builtin_altivec_vperm_4si(
   7297       (vector int)__b, (vector int)__a, __d);
   7298 #else
   7299   return (vector unsigned char)__builtin_altivec_vperm_4si(
   7300       (vector int)__a, (vector int)__b, __c);
   7301 #endif
   7302 }
   7303 
   7304 static __inline__ vector bool char __ATTRS_o_ai
   7305 vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c) {
   7306 #ifdef __LITTLE_ENDIAN__
   7307   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   7308                               255, 255, 255, 255, 255, 255, 255, 255};
   7309   __d = vec_xor(__c, __d);
   7310   return (vector bool char)__builtin_altivec_vperm_4si((vector int)__b,
   7311                                                        (vector int)__a, __d);
   7312 #else
   7313   return (vector bool char)__builtin_altivec_vperm_4si((vector int)__a,
   7314                                                        (vector int)__b, __c);
   7315 #endif
   7316 }
   7317 
   7318 static __inline__ vector short __ATTRS_o_ai vec_perm(vector signed short __a,
   7319                                                      vector signed short __b,
   7320                                                      vector unsigned char __c) {
   7321 #ifdef __LITTLE_ENDIAN__
   7322   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   7323                               255, 255, 255, 255, 255, 255, 255, 255};
   7324   __d = vec_xor(__c, __d);
   7325   return (vector signed short)__builtin_altivec_vperm_4si((vector int)__b,
   7326                                                           (vector int)__a, __d);
   7327 #else
   7328   return (vector signed short)__builtin_altivec_vperm_4si((vector int)__a,
   7329                                                           (vector int)__b, __c);
   7330 #endif
   7331 }
   7332 
   7333 static __inline__ vector unsigned short __ATTRS_o_ai
   7334 vec_perm(vector unsigned short __a, vector unsigned short __b,
   7335          vector unsigned char __c) {
   7336 #ifdef __LITTLE_ENDIAN__
   7337   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   7338                               255, 255, 255, 255, 255, 255, 255, 255};
   7339   __d = vec_xor(__c, __d);
   7340   return (vector unsigned short)__builtin_altivec_vperm_4si(
   7341       (vector int)__b, (vector int)__a, __d);
   7342 #else
   7343   return (vector unsigned short)__builtin_altivec_vperm_4si(
   7344       (vector int)__a, (vector int)__b, __c);
   7345 #endif
   7346 }
   7347 
   7348 static __inline__ vector bool short __ATTRS_o_ai vec_perm(
   7349     vector bool short __a, vector bool short __b, vector unsigned char __c) {
   7350 #ifdef __LITTLE_ENDIAN__
   7351   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   7352                               255, 255, 255, 255, 255, 255, 255, 255};
   7353   __d = vec_xor(__c, __d);
   7354   return (vector bool short)__builtin_altivec_vperm_4si((vector int)__b,
   7355                                                         (vector int)__a, __d);
   7356 #else
   7357   return (vector bool short)__builtin_altivec_vperm_4si((vector int)__a,
   7358                                                         (vector int)__b, __c);
   7359 #endif
   7360 }
   7361 
   7362 static __inline__ vector pixel __ATTRS_o_ai vec_perm(vector pixel __a,
   7363                                                      vector pixel __b,
   7364                                                      vector unsigned char __c) {
   7365 #ifdef __LITTLE_ENDIAN__
   7366   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   7367                               255, 255, 255, 255, 255, 255, 255, 255};
   7368   __d = vec_xor(__c, __d);
   7369   return (vector pixel)__builtin_altivec_vperm_4si((vector int)__b,
   7370                                                    (vector int)__a, __d);
   7371 #else
   7372   return (vector pixel)__builtin_altivec_vperm_4si((vector int)__a,
   7373                                                    (vector int)__b, __c);
   7374 #endif
   7375 }
   7376 
   7377 static __inline__ vector int __ATTRS_o_ai vec_perm(vector signed int __a,
   7378                                                    vector signed int __b,
   7379                                                    vector unsigned char __c) {
   7380 #ifdef __LITTLE_ENDIAN__
   7381   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   7382                               255, 255, 255, 255, 255, 255, 255, 255};
   7383   __d = vec_xor(__c, __d);
   7384   return (vector signed int)__builtin_altivec_vperm_4si(__b, __a, __d);
   7385 #else
   7386   return (vector signed int)__builtin_altivec_vperm_4si(__a, __b, __c);
   7387 #endif
   7388 }
   7389 
   7390 static __inline__ vector unsigned int __ATTRS_o_ai
   7391 vec_perm(vector unsigned int __a, vector unsigned int __b,
   7392          vector unsigned char __c) {
   7393 #ifdef __LITTLE_ENDIAN__
   7394   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   7395                               255, 255, 255, 255, 255, 255, 255, 255};
   7396   __d = vec_xor(__c, __d);
   7397   return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__b,
   7398                                                           (vector int)__a, __d);
   7399 #else
   7400   return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__a,
   7401                                                           (vector int)__b, __c);
   7402 #endif
   7403 }
   7404 
   7405 static __inline__ vector bool int __ATTRS_o_ai
   7406 vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c) {
   7407 #ifdef __LITTLE_ENDIAN__
   7408   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   7409                               255, 255, 255, 255, 255, 255, 255, 255};
   7410   __d = vec_xor(__c, __d);
   7411   return (vector bool int)__builtin_altivec_vperm_4si((vector int)__b,
   7412                                                       (vector int)__a, __d);
   7413 #else
   7414   return (vector bool int)__builtin_altivec_vperm_4si((vector int)__a,
   7415                                                       (vector int)__b, __c);
   7416 #endif
   7417 }
   7418 
   7419 static __inline__ vector float __ATTRS_o_ai vec_perm(vector float __a,
   7420                                                      vector float __b,
   7421                                                      vector unsigned char __c) {
   7422 #ifdef __LITTLE_ENDIAN__
   7423   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   7424                               255, 255, 255, 255, 255, 255, 255, 255};
   7425   __d = vec_xor(__c, __d);
   7426   return (vector float)__builtin_altivec_vperm_4si((vector int)__b,
   7427                                                    (vector int)__a, __d);
   7428 #else
   7429   return (vector float)__builtin_altivec_vperm_4si((vector int)__a,
   7430                                                    (vector int)__b, __c);
   7431 #endif
   7432 }
   7433 
   7434 #ifdef __VSX__
   7435 static __inline__ vector long long __ATTRS_o_ai
   7436 vec_perm(vector signed long long __a, vector signed long long __b,
   7437          vector unsigned char __c) {
   7438 #ifdef __LITTLE_ENDIAN__
   7439   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   7440                               255, 255, 255, 255, 255, 255, 255, 255};
   7441   __d = vec_xor(__c, __d);
   7442   return (vector signed long long)__builtin_altivec_vperm_4si(
   7443       (vector int)__b, (vector int)__a, __d);
   7444 #else
   7445   return (vector signed long long)__builtin_altivec_vperm_4si(
   7446       (vector int)__a, (vector int)__b, __c);
   7447 #endif
   7448 }
   7449 
   7450 static __inline__ vector unsigned long long __ATTRS_o_ai
   7451 vec_perm(vector unsigned long long __a, vector unsigned long long __b,
   7452          vector unsigned char __c) {
   7453 #ifdef __LITTLE_ENDIAN__
   7454   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   7455                               255, 255, 255, 255, 255, 255, 255, 255};
   7456   __d = vec_xor(__c, __d);
   7457   return (vector unsigned long long)__builtin_altivec_vperm_4si(
   7458       (vector int)__b, (vector int)__a, __d);
   7459 #else
   7460   return (vector unsigned long long)__builtin_altivec_vperm_4si(
   7461       (vector int)__a, (vector int)__b, __c);
   7462 #endif
   7463 }
   7464 
   7465 static __inline__ vector bool long long __ATTRS_o_ai
   7466 vec_perm(vector bool long long __a, vector bool long long __b,
   7467          vector unsigned char __c) {
   7468 #ifdef __LITTLE_ENDIAN__
   7469   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   7470                               255, 255, 255, 255, 255, 255, 255, 255};
   7471   __d = vec_xor(__c, __d);
   7472   return (vector bool long long)__builtin_altivec_vperm_4si(
   7473       (vector int)__b, (vector int)__a, __d);
   7474 #else
   7475   return (vector bool long long)__builtin_altivec_vperm_4si(
   7476       (vector int)__a, (vector int)__b, __c);
   7477 #endif
   7478 }
   7479 
   7480 static __inline__ vector double __ATTRS_o_ai
   7481 vec_perm(vector double __a, vector double __b, vector unsigned char __c) {
   7482 #ifdef __LITTLE_ENDIAN__
   7483   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
   7484                               255, 255, 255, 255, 255, 255, 255, 255};
   7485   __d = vec_xor(__c, __d);
   7486   return (vector double)__builtin_altivec_vperm_4si((vector int)__b,
   7487                                                     (vector int)__a, __d);
   7488 #else
   7489   return (vector double)__builtin_altivec_vperm_4si((vector int)__a,
   7490                                                     (vector int)__b, __c);
   7491 #endif
   7492 }
   7493 #endif
   7494 
   7495 /* vec_vperm */
   7496 
   7497 static __inline__ vector signed char __ATTRS_o_ai vec_vperm(
   7498     vector signed char __a, vector signed char __b, vector unsigned char __c) {
   7499   return vec_perm(__a, __b, __c);
   7500 }
   7501 
   7502 static __inline__ vector unsigned char __ATTRS_o_ai
   7503 vec_vperm(vector unsigned char __a, vector unsigned char __b,
   7504           vector unsigned char __c) {
   7505   return vec_perm(__a, __b, __c);
   7506 }
   7507 
   7508 static __inline__ vector bool char __ATTRS_o_ai vec_vperm(
   7509     vector bool char __a, vector bool char __b, vector unsigned char __c) {
   7510   return vec_perm(__a, __b, __c);
   7511 }
   7512 
   7513 static __inline__ vector short __ATTRS_o_ai
   7514 vec_vperm(vector short __a, vector short __b, vector unsigned char __c) {
   7515   return vec_perm(__a, __b, __c);
   7516 }
   7517 
   7518 static __inline__ vector unsigned short __ATTRS_o_ai
   7519 vec_vperm(vector unsigned short __a, vector unsigned short __b,
   7520           vector unsigned char __c) {
   7521   return vec_perm(__a, __b, __c);
   7522 }
   7523 
   7524 static __inline__ vector bool short __ATTRS_o_ai vec_vperm(
   7525     vector bool short __a, vector bool short __b, vector unsigned char __c) {
   7526   return vec_perm(__a, __b, __c);
   7527 }
   7528 
   7529 static __inline__ vector pixel __ATTRS_o_ai
   7530 vec_vperm(vector pixel __a, vector pixel __b, vector unsigned char __c) {
   7531   return vec_perm(__a, __b, __c);
   7532 }
   7533 
   7534 static __inline__ vector int __ATTRS_o_ai vec_vperm(vector int __a,
   7535                                                     vector int __b,
   7536                                                     vector unsigned char __c) {
   7537   return vec_perm(__a, __b, __c);
   7538 }
   7539 
   7540 static __inline__ vector unsigned int __ATTRS_o_ai
   7541 vec_vperm(vector unsigned int __a, vector unsigned int __b,
   7542           vector unsigned char __c) {
   7543   return vec_perm(__a, __b, __c);
   7544 }
   7545 
   7546 static __inline__ vector bool int __ATTRS_o_ai
   7547 vec_vperm(vector bool int __a, vector bool int __b, vector unsigned char __c) {
   7548   return vec_perm(__a, __b, __c);
   7549 }
   7550 
   7551 static __inline__ vector float __ATTRS_o_ai
   7552 vec_vperm(vector float __a, vector float __b, vector unsigned char __c) {
   7553   return vec_perm(__a, __b, __c);
   7554 }
   7555 
   7556 #ifdef __VSX__
   7557 static __inline__ vector long long __ATTRS_o_ai vec_vperm(
   7558     vector long long __a, vector long long __b, vector unsigned char __c) {
   7559   return vec_perm(__a, __b, __c);
   7560 }
   7561 
   7562 static __inline__ vector unsigned long long __ATTRS_o_ai
   7563 vec_vperm(vector unsigned long long __a, vector unsigned long long __b,
   7564           vector unsigned char __c) {
   7565   return vec_perm(__a, __b, __c);
   7566 }
   7567 
   7568 static __inline__ vector double __ATTRS_o_ai
   7569 vec_vperm(vector double __a, vector double __b, vector unsigned char __c) {
   7570   return vec_perm(__a, __b, __c);
   7571 }
   7572 #endif
   7573 
   7574 /* vec_re */
   7575 
   7576 static __inline__ vector float __ATTRS_o_ai vec_re(vector float __a) {
   7577 #ifdef __VSX__
   7578   return __builtin_vsx_xvresp(__a);
   7579 #else
   7580   return __builtin_altivec_vrefp(__a);
   7581 #endif
   7582 }
   7583 
   7584 #ifdef __VSX__
   7585 static __inline__ vector double __ATTRS_o_ai vec_re(vector double __a) {
   7586   return __builtin_vsx_xvredp(__a);
   7587 }
   7588 #endif
   7589 
   7590 /* vec_vrefp */
   7591 
   7592 static __inline__ vector float __attribute__((__always_inline__))
   7593 vec_vrefp(vector float __a) {
   7594   return __builtin_altivec_vrefp(__a);
   7595 }
   7596 
   7597 /* vec_rl */
   7598 
   7599 static __inline__ vector signed char __ATTRS_o_ai
   7600 vec_rl(vector signed char __a, vector unsigned char __b) {
   7601   return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
   7602 }
   7603 
   7604 static __inline__ vector unsigned char __ATTRS_o_ai
   7605 vec_rl(vector unsigned char __a, vector unsigned char __b) {
   7606   return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
   7607 }
   7608 
   7609 static __inline__ vector short __ATTRS_o_ai vec_rl(vector short __a,
   7610                                                    vector unsigned short __b) {
   7611   return __builtin_altivec_vrlh(__a, __b);
   7612 }
   7613 
   7614 static __inline__ vector unsigned short __ATTRS_o_ai
   7615 vec_rl(vector unsigned short __a, vector unsigned short __b) {
   7616   return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
   7617 }
   7618 
   7619 static __inline__ vector int __ATTRS_o_ai vec_rl(vector int __a,
   7620                                                  vector unsigned int __b) {
   7621   return __builtin_altivec_vrlw(__a, __b);
   7622 }
   7623 
   7624 static __inline__ vector unsigned int __ATTRS_o_ai
   7625 vec_rl(vector unsigned int __a, vector unsigned int __b) {
   7626   return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
   7627 }
   7628 
   7629 #ifdef __POWER8_VECTOR__
   7630 static __inline__ vector signed long long __ATTRS_o_ai
   7631 vec_rl(vector signed long long __a, vector unsigned long long __b) {
   7632   return __builtin_altivec_vrld(__a, __b);
   7633 }
   7634 
   7635 static __inline__ vector unsigned long long __ATTRS_o_ai
   7636 vec_rl(vector unsigned long long __a, vector unsigned long long __b) {
   7637   return __builtin_altivec_vrld(__a, __b);
   7638 }
   7639 #endif
   7640 
   7641 /* vec_rlmi */
   7642 #ifdef __POWER9_VECTOR__
   7643 static __inline__ vector unsigned int __ATTRS_o_ai
   7644 vec_rlmi(vector unsigned int __a, vector unsigned int __b,
   7645          vector unsigned int __c) {
   7646   return __builtin_altivec_vrlwmi(__a, __c, __b);
   7647 }
   7648 
   7649 static __inline__ vector unsigned long long __ATTRS_o_ai
   7650 vec_rlmi(vector unsigned long long __a, vector unsigned long long __b,
   7651          vector unsigned long long __c) {
   7652   return __builtin_altivec_vrldmi(__a, __c, __b);
   7653 }
   7654 
   7655 /* vec_rlnm */
   7656 static __inline__ vector unsigned int __ATTRS_o_ai
   7657 vec_rlnm(vector unsigned int __a, vector unsigned int __b,
   7658          vector unsigned int __c) {
   7659   vector unsigned int OneByte = { 0x8, 0x8, 0x8, 0x8 };
   7660   return __builtin_altivec_vrlwnm(__a, ((__c << OneByte) | __b));
   7661 }
   7662 
   7663 static __inline__ vector unsigned long long __ATTRS_o_ai
   7664 vec_rlnm(vector unsigned long long __a, vector unsigned long long __b,
   7665          vector unsigned long long __c) {
   7666   vector unsigned long long OneByte = { 0x8, 0x8 };
   7667   return __builtin_altivec_vrldnm(__a, ((__c << OneByte) | __b));
   7668 }
   7669 #endif
   7670 
   7671 /* vec_vrlb */
   7672 
   7673 static __inline__ vector signed char __ATTRS_o_ai
   7674 vec_vrlb(vector signed char __a, vector unsigned char __b) {
   7675   return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
   7676 }
   7677 
   7678 static __inline__ vector unsigned char __ATTRS_o_ai
   7679 vec_vrlb(vector unsigned char __a, vector unsigned char __b) {
   7680   return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
   7681 }
   7682 
   7683 /* vec_vrlh */
   7684 
   7685 static __inline__ vector short __ATTRS_o_ai
   7686 vec_vrlh(vector short __a, vector unsigned short __b) {
   7687   return __builtin_altivec_vrlh(__a, __b);
   7688 }
   7689 
   7690 static __inline__ vector unsigned short __ATTRS_o_ai
   7691 vec_vrlh(vector unsigned short __a, vector unsigned short __b) {
   7692   return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
   7693 }
   7694 
   7695 /* vec_vrlw */
   7696 
   7697 static __inline__ vector int __ATTRS_o_ai vec_vrlw(vector int __a,
   7698                                                    vector unsigned int __b) {
   7699   return __builtin_altivec_vrlw(__a, __b);
   7700 }
   7701 
   7702 static __inline__ vector unsigned int __ATTRS_o_ai
   7703 vec_vrlw(vector unsigned int __a, vector unsigned int __b) {
   7704   return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
   7705 }
   7706 
   7707 /* vec_round */
   7708 
   7709 static __inline__ vector float __ATTRS_o_ai vec_round(vector float __a) {
   7710 #ifdef __VSX__
   7711   return __builtin_vsx_xvrspi(__a);
   7712 #else
   7713   return __builtin_altivec_vrfin(__a);
   7714 #endif
   7715 }
   7716 
   7717 #ifdef __VSX__
   7718 static __inline__ vector double __ATTRS_o_ai vec_round(vector double __a) {
   7719   return __builtin_vsx_xvrdpi(__a);
   7720 }
   7721 
   7722 /* vec_rint */
   7723 
   7724 static __inline__ vector float __ATTRS_o_ai vec_rint(vector float __a) {
   7725   return __builtin_vsx_xvrspic(__a);
   7726 }
   7727 
   7728 static __inline__ vector double __ATTRS_o_ai vec_rint(vector double __a) {
   7729   return __builtin_vsx_xvrdpic(__a);
   7730 }
   7731 
   7732 /* vec_nearbyint */
   7733 
   7734 static __inline__ vector float __ATTRS_o_ai vec_nearbyint(vector float __a) {
   7735   return __builtin_vsx_xvrspi(__a);
   7736 }
   7737 
   7738 static __inline__ vector double __ATTRS_o_ai vec_nearbyint(vector double __a) {
   7739   return __builtin_vsx_xvrdpi(__a);
   7740 }
   7741 #endif
   7742 
   7743 /* vec_vrfin */
   7744 
   7745 static __inline__ vector float __attribute__((__always_inline__))
   7746 vec_vrfin(vector float __a) {
   7747   return __builtin_altivec_vrfin(__a);
   7748 }
   7749 
   7750 /* vec_sqrt */
   7751 
   7752 #ifdef __VSX__
   7753 static __inline__ vector float __ATTRS_o_ai vec_sqrt(vector float __a) {
   7754   return __builtin_vsx_xvsqrtsp(__a);
   7755 }
   7756 
   7757 static __inline__ vector double __ATTRS_o_ai vec_sqrt(vector double __a) {
   7758   return __builtin_vsx_xvsqrtdp(__a);
   7759 }
   7760 #endif
   7761 
   7762 /* vec_rsqrte */
   7763 
   7764 static __inline__ vector float __ATTRS_o_ai vec_rsqrte(vector float __a) {
   7765 #ifdef __VSX__
   7766   return __builtin_vsx_xvrsqrtesp(__a);
   7767 #else
   7768   return __builtin_altivec_vrsqrtefp(__a);
   7769 #endif
   7770 }
   7771 
   7772 #ifdef __VSX__
   7773 static __inline__ vector double __ATTRS_o_ai vec_rsqrte(vector double __a) {
   7774   return __builtin_vsx_xvrsqrtedp(__a);
   7775 }
   7776 #endif
   7777 
   7778 /* vec_vrsqrtefp */
   7779 
   7780 static __inline__ __vector float __attribute__((__always_inline__))
   7781 vec_vrsqrtefp(vector float __a) {
   7782   return __builtin_altivec_vrsqrtefp(__a);
   7783 }
   7784 
   7785 /* vec_sel */
   7786 
   7787 #define __builtin_altivec_vsel_4si vec_sel
   7788 
   7789 static __inline__ vector signed char __ATTRS_o_ai vec_sel(
   7790     vector signed char __a, vector signed char __b, vector unsigned char __c) {
   7791   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
   7792 }
   7793 
   7794 static __inline__ vector signed char __ATTRS_o_ai
   7795 vec_sel(vector signed char __a, vector signed char __b, vector bool char __c) {
   7796   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
   7797 }
   7798 
   7799 static __inline__ vector unsigned char __ATTRS_o_ai
   7800 vec_sel(vector unsigned char __a, vector unsigned char __b,
   7801         vector unsigned char __c) {
   7802   return (__a & ~__c) | (__b & __c);
   7803 }
   7804 
   7805 static __inline__ vector unsigned char __ATTRS_o_ai vec_sel(
   7806     vector unsigned char __a, vector unsigned char __b, vector bool char __c) {
   7807   return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
   7808 }
   7809 
   7810 static __inline__ vector bool char __ATTRS_o_ai
   7811 vec_sel(vector bool char __a, vector bool char __b, vector unsigned char __c) {
   7812   return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
   7813 }
   7814 
   7815 static __inline__ vector bool char __ATTRS_o_ai vec_sel(vector bool char __a,
   7816                                                         vector bool char __b,
   7817                                                         vector bool char __c) {
   7818   return (__a & ~__c) | (__b & __c);
   7819 }
   7820 
   7821 static __inline__ vector short __ATTRS_o_ai vec_sel(vector short __a,
   7822                                                     vector short __b,
   7823                                                     vector unsigned short __c) {
   7824   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
   7825 }
   7826 
   7827 static __inline__ vector short __ATTRS_o_ai vec_sel(vector short __a,
   7828                                                     vector short __b,
   7829                                                     vector bool short __c) {
   7830   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
   7831 }
   7832 
   7833 static __inline__ vector unsigned short __ATTRS_o_ai
   7834 vec_sel(vector unsigned short __a, vector unsigned short __b,
   7835         vector unsigned short __c) {
   7836   return (__a & ~__c) | (__b & __c);
   7837 }
   7838 
   7839 static __inline__ vector unsigned short __ATTRS_o_ai
   7840 vec_sel(vector unsigned short __a, vector unsigned short __b,
   7841         vector bool short __c) {
   7842   return (__a & ~(vector unsigned short)__c) |
   7843          (__b & (vector unsigned short)__c);
   7844 }
   7845 
   7846 static __inline__ vector bool short __ATTRS_o_ai vec_sel(
   7847     vector bool short __a, vector bool short __b, vector unsigned short __c) {
   7848   return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
   7849 }
   7850 
   7851 static __inline__ vector bool short __ATTRS_o_ai
   7852 vec_sel(vector bool short __a, vector bool short __b, vector bool short __c) {
   7853   return (__a & ~__c) | (__b & __c);
   7854 }
   7855 
   7856 static __inline__ vector int __ATTRS_o_ai vec_sel(vector int __a,
   7857                                                   vector int __b,
   7858                                                   vector unsigned int __c) {
   7859   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
   7860 }
   7861 
   7862 static __inline__ vector int __ATTRS_o_ai vec_sel(vector int __a,
   7863                                                   vector int __b,
   7864                                                   vector bool int __c) {
   7865   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
   7866 }
   7867 
   7868 static __inline__ vector unsigned int __ATTRS_o_ai vec_sel(
   7869     vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
   7870   return (__a & ~__c) | (__b & __c);
   7871 }
   7872 
   7873 static __inline__ vector unsigned int __ATTRS_o_ai
   7874 vec_sel(vector unsigned int __a, vector unsigned int __b, vector bool int __c) {
   7875   return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
   7876 }
   7877 
   7878 static __inline__ vector bool int __ATTRS_o_ai
   7879 vec_sel(vector bool int __a, vector bool int __b, vector unsigned int __c) {
   7880   return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
   7881 }
   7882 
   7883 static __inline__ vector bool int __ATTRS_o_ai vec_sel(vector bool int __a,
   7884                                                        vector bool int __b,
   7885                                                        vector bool int __c) {
   7886   return (__a & ~__c) | (__b & __c);
   7887 }
   7888 
   7889 static __inline__ vector float __ATTRS_o_ai vec_sel(vector float __a,
   7890                                                     vector float __b,
   7891                                                     vector unsigned int __c) {
   7892   vector int __res = ((vector int)__a & ~(vector int)__c) |
   7893                      ((vector int)__b & (vector int)__c);
   7894   return (vector float)__res;
   7895 }
   7896 
   7897 static __inline__ vector float __ATTRS_o_ai vec_sel(vector float __a,
   7898                                                     vector float __b,
   7899                                                     vector bool int __c) {
   7900   vector int __res = ((vector int)__a & ~(vector int)__c) |
   7901                      ((vector int)__b & (vector int)__c);
   7902   return (vector float)__res;
   7903 }
   7904 
   7905 #ifdef __VSX__
   7906 static __inline__ vector double __ATTRS_o_ai
   7907 vec_sel(vector double __a, vector double __b, vector bool long long __c) {
   7908   vector long long __res = ((vector long long)__a & ~(vector long long)__c) |
   7909                            ((vector long long)__b & (vector long long)__c);
   7910   return (vector double)__res;
   7911 }
   7912 
   7913 static __inline__ vector double __ATTRS_o_ai
   7914 vec_sel(vector double __a, vector double __b, vector unsigned long long __c) {
   7915   vector long long __res = ((vector long long)__a & ~(vector long long)__c) |
   7916                            ((vector long long)__b & (vector long long)__c);
   7917   return (vector double)__res;
   7918 }
   7919 #endif
   7920 
   7921 /* vec_vsel */
   7922 
   7923 static __inline__ vector signed char __ATTRS_o_ai vec_vsel(
   7924     vector signed char __a, vector signed char __b, vector unsigned char __c) {
   7925   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
   7926 }
   7927 
   7928 static __inline__ vector signed char __ATTRS_o_ai
   7929 vec_vsel(vector signed char __a, vector signed char __b, vector bool char __c) {
   7930   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
   7931 }
   7932 
   7933 static __inline__ vector unsigned char __ATTRS_o_ai
   7934 vec_vsel(vector unsigned char __a, vector unsigned char __b,
   7935          vector unsigned char __c) {
   7936   return (__a & ~__c) | (__b & __c);
   7937 }
   7938 
   7939 static __inline__ vector unsigned char __ATTRS_o_ai vec_vsel(
   7940     vector unsigned char __a, vector unsigned char __b, vector bool char __c) {
   7941   return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
   7942 }
   7943 
   7944 static __inline__ vector bool char __ATTRS_o_ai
   7945 vec_vsel(vector bool char __a, vector bool char __b, vector unsigned char __c) {
   7946   return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
   7947 }
   7948 
   7949 static __inline__ vector bool char __ATTRS_o_ai vec_vsel(vector bool char __a,
   7950                                                          vector bool char __b,
   7951                                                          vector bool char __c) {
   7952   return (__a & ~__c) | (__b & __c);
   7953 }
   7954 
   7955 static __inline__ vector short __ATTRS_o_ai
   7956 vec_vsel(vector short __a, vector short __b, vector unsigned short __c) {
   7957   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
   7958 }
   7959 
   7960 static __inline__ vector short __ATTRS_o_ai vec_vsel(vector short __a,
   7961                                                      vector short __b,
   7962                                                      vector bool short __c) {
   7963   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
   7964 }
   7965 
   7966 static __inline__ vector unsigned short __ATTRS_o_ai
   7967 vec_vsel(vector unsigned short __a, vector unsigned short __b,
   7968          vector unsigned short __c) {
   7969   return (__a & ~__c) | (__b & __c);
   7970 }
   7971 
   7972 static __inline__ vector unsigned short __ATTRS_o_ai
   7973 vec_vsel(vector unsigned short __a, vector unsigned short __b,
   7974          vector bool short __c) {
   7975   return (__a & ~(vector unsigned short)__c) |
   7976          (__b & (vector unsigned short)__c);
   7977 }
   7978 
   7979 static __inline__ vector bool short __ATTRS_o_ai vec_vsel(
   7980     vector bool short __a, vector bool short __b, vector unsigned short __c) {
   7981   return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
   7982 }
   7983 
   7984 static __inline__ vector bool short __ATTRS_o_ai
   7985 vec_vsel(vector bool short __a, vector bool short __b, vector bool short __c) {
   7986   return (__a & ~__c) | (__b & __c);
   7987 }
   7988 
   7989 static __inline__ vector int __ATTRS_o_ai vec_vsel(vector int __a,
   7990                                                    vector int __b,
   7991                                                    vector unsigned int __c) {
   7992   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
   7993 }
   7994 
   7995 static __inline__ vector int __ATTRS_o_ai vec_vsel(vector int __a,
   7996                                                    vector int __b,
   7997                                                    vector bool int __c) {
   7998   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
   7999 }
   8000 
   8001 static __inline__ vector unsigned int __ATTRS_o_ai vec_vsel(
   8002     vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
   8003   return (__a & ~__c) | (__b & __c);
   8004 }
   8005 
   8006 static __inline__ vector unsigned int __ATTRS_o_ai vec_vsel(
   8007     vector unsigned int __a, vector unsigned int __b, vector bool int __c) {
   8008   return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
   8009 }
   8010 
   8011 static __inline__ vector bool int __ATTRS_o_ai
   8012 vec_vsel(vector bool int __a, vector bool int __b, vector unsigned int __c) {
   8013   return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
   8014 }
   8015 
   8016 static __inline__ vector bool int __ATTRS_o_ai vec_vsel(vector bool int __a,
   8017                                                         vector bool int __b,
   8018                                                         vector bool int __c) {
   8019   return (__a & ~__c) | (__b & __c);
   8020 }
   8021 
   8022 static __inline__ vector float __ATTRS_o_ai vec_vsel(vector float __a,
   8023                                                      vector float __b,
   8024                                                      vector unsigned int __c) {
   8025   vector int __res = ((vector int)__a & ~(vector int)__c) |
   8026                      ((vector int)__b & (vector int)__c);
   8027   return (vector float)__res;
   8028 }
   8029 
   8030 static __inline__ vector float __ATTRS_o_ai vec_vsel(vector float __a,
   8031                                                      vector float __b,
   8032                                                      vector bool int __c) {
   8033   vector int __res = ((vector int)__a & ~(vector int)__c) |
   8034                      ((vector int)__b & (vector int)__c);
   8035   return (vector float)__res;
   8036 }
   8037 
   8038 /* vec_sl */
   8039 
   8040 // vec_sl does modulo arithmetic on __b first, so __b is allowed to be more
   8041 // than the length of __a.
   8042 static __inline__ vector unsigned char __ATTRS_o_ai
   8043 vec_sl(vector unsigned char __a, vector unsigned char __b) {
   8044   return __a << (__b %
   8045                  (vector unsigned char)(sizeof(unsigned char) * __CHAR_BIT__));
   8046 }
   8047 
   8048 static __inline__ vector signed char __ATTRS_o_ai
   8049 vec_sl(vector signed char __a, vector unsigned char __b) {
   8050   return (vector signed char)vec_sl((vector unsigned char)__a, __b);
   8051 }
   8052 
   8053 static __inline__ vector unsigned short __ATTRS_o_ai
   8054 vec_sl(vector unsigned short __a, vector unsigned short __b) {
   8055   return __a << (__b % (vector unsigned short)(sizeof(unsigned short) *
   8056                                                __CHAR_BIT__));
   8057 }
   8058 
   8059 static __inline__ vector short __ATTRS_o_ai vec_sl(vector short __a,
   8060                                                    vector unsigned short __b) {
   8061   return (vector short)vec_sl((vector unsigned short)__a, __b);
   8062 }
   8063 
   8064 static __inline__ vector unsigned int __ATTRS_o_ai
   8065 vec_sl(vector unsigned int __a, vector unsigned int __b) {
   8066   return __a << (__b %
   8067                  (vector unsigned int)(sizeof(unsigned int) * __CHAR_BIT__));
   8068 }
   8069 
   8070 static __inline__ vector int __ATTRS_o_ai vec_sl(vector int __a,
   8071                                                  vector unsigned int __b) {
   8072   return (vector int)vec_sl((vector unsigned int)__a, __b);
   8073 }
   8074 
   8075 #ifdef __POWER8_VECTOR__
   8076 static __inline__ vector unsigned long long __ATTRS_o_ai
   8077 vec_sl(vector unsigned long long __a, vector unsigned long long __b) {
   8078   return __a << (__b % (vector unsigned long long)(sizeof(unsigned long long) *
   8079                                                    __CHAR_BIT__));
   8080 }
   8081 
   8082 static __inline__ vector long long __ATTRS_o_ai
   8083 vec_sl(vector long long __a, vector unsigned long long __b) {
   8084   return (vector long long)vec_sl((vector unsigned long long)__a, __b);
   8085 }
   8086 #endif
   8087 
   8088 /* vec_vslb */
   8089 
   8090 #define __builtin_altivec_vslb vec_vslb
   8091 
   8092 static __inline__ vector signed char __ATTRS_o_ai
   8093 vec_vslb(vector signed char __a, vector unsigned char __b) {
   8094   return vec_sl(__a, __b);
   8095 }
   8096 
   8097 static __inline__ vector unsigned char __ATTRS_o_ai
   8098 vec_vslb(vector unsigned char __a, vector unsigned char __b) {
   8099   return vec_sl(__a, __b);
   8100 }
   8101 
   8102 /* vec_vslh */
   8103 
   8104 #define __builtin_altivec_vslh vec_vslh
   8105 
   8106 static __inline__ vector short __ATTRS_o_ai
   8107 vec_vslh(vector short __a, vector unsigned short __b) {
   8108   return vec_sl(__a, __b);
   8109 }
   8110 
   8111 static __inline__ vector unsigned short __ATTRS_o_ai
   8112 vec_vslh(vector unsigned short __a, vector unsigned short __b) {
   8113   return vec_sl(__a, __b);
   8114 }
   8115 
   8116 /* vec_vslw */
   8117 
   8118 #define __builtin_altivec_vslw vec_vslw
   8119 
   8120 static __inline__ vector int __ATTRS_o_ai vec_vslw(vector int __a,
   8121                                                    vector unsigned int __b) {
   8122   return vec_sl(__a, __b);
   8123 }
   8124 
   8125 static __inline__ vector unsigned int __ATTRS_o_ai
   8126 vec_vslw(vector unsigned int __a, vector unsigned int __b) {
   8127   return vec_sl(__a, __b);
   8128 }
   8129 
   8130 /* vec_sld */
   8131 
   8132 #define __builtin_altivec_vsldoi_4si vec_sld
   8133 
   8134 static __inline__ vector signed char __ATTRS_o_ai vec_sld(
   8135     vector signed char __a, vector signed char __b, unsigned const int __c) {
   8136   unsigned char __d = __c & 0x0F;
   8137 #ifdef __LITTLE_ENDIAN__
   8138   return vec_perm(
   8139       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8140                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8141                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8142                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8143 #else
   8144   return vec_perm(
   8145       __a, __b,
   8146       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8147                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8148                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8149 #endif
   8150 }
   8151 
   8152 static __inline__ vector unsigned char __ATTRS_o_ai
   8153 vec_sld(vector unsigned char __a, vector unsigned char __b,
   8154         unsigned const int __c) {
   8155   unsigned char __d = __c & 0x0F;
   8156 #ifdef __LITTLE_ENDIAN__
   8157   return vec_perm(
   8158       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8159                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8160                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8161                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8162 #else
   8163   return vec_perm(
   8164       __a, __b,
   8165       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8166                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8167                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8168 #endif
   8169 }
   8170 
   8171 static __inline__ vector bool char __ATTRS_o_ai
   8172 vec_sld(vector bool char __a, vector bool char __b, unsigned const int __c) {
   8173   unsigned char __d = __c & 0x0F;
   8174 #ifdef __LITTLE_ENDIAN__
   8175   return vec_perm(
   8176       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8177                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8178                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8179                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8180 #else
   8181   return vec_perm(
   8182       __a, __b,
   8183       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8184                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8185                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8186 #endif
   8187 }
   8188 
   8189 static __inline__ vector signed short __ATTRS_o_ai vec_sld(
   8190     vector signed short __a, vector signed short __b, unsigned const int __c) {
   8191   unsigned char __d = __c & 0x0F;
   8192 #ifdef __LITTLE_ENDIAN__
   8193   return vec_perm(
   8194       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8195                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8196                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8197                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8198 #else
   8199   return vec_perm(
   8200       __a, __b,
   8201       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8202                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8203                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8204 #endif
   8205 }
   8206 
   8207 static __inline__ vector unsigned short __ATTRS_o_ai
   8208 vec_sld(vector unsigned short __a, vector unsigned short __b,
   8209         unsigned const int __c) {
   8210   unsigned char __d = __c & 0x0F;
   8211 #ifdef __LITTLE_ENDIAN__
   8212   return vec_perm(
   8213       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8214                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8215                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8216                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8217 #else
   8218   return vec_perm(
   8219       __a, __b,
   8220       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8221                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8222                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8223 #endif
   8224 }
   8225 
   8226 static __inline__ vector bool short __ATTRS_o_ai
   8227 vec_sld(vector bool short __a, vector bool short __b, unsigned const int __c) {
   8228   unsigned char __d = __c & 0x0F;
   8229 #ifdef __LITTLE_ENDIAN__
   8230   return vec_perm(
   8231       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8232                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8233                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8234                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8235 #else
   8236   return vec_perm(
   8237       __a, __b,
   8238       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8239                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8240                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8241 #endif
   8242 }
   8243 
   8244 static __inline__ vector pixel __ATTRS_o_ai vec_sld(vector pixel __a,
   8245                                                     vector pixel __b,
   8246                                                     unsigned const int __c) {
   8247   unsigned char __d = __c & 0x0F;
   8248 #ifdef __LITTLE_ENDIAN__
   8249   return vec_perm(
   8250       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8251                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8252                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8253                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8254 #else
   8255   return vec_perm(
   8256       __a, __b,
   8257       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8258                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8259                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8260 #endif
   8261 }
   8262 
   8263 static __inline__ vector signed int __ATTRS_o_ai
   8264 vec_sld(vector signed int __a, vector signed int __b, unsigned const int __c) {
   8265   unsigned char __d = __c & 0x0F;
   8266 #ifdef __LITTLE_ENDIAN__
   8267   return vec_perm(
   8268       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8269                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8270                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8271                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8272 #else
   8273   return vec_perm(
   8274       __a, __b,
   8275       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8276                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8277                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8278 #endif
   8279 }
   8280 
   8281 static __inline__ vector unsigned int __ATTRS_o_ai vec_sld(
   8282     vector unsigned int __a, vector unsigned int __b, unsigned const int __c) {
   8283   unsigned char __d = __c & 0x0F;
   8284 #ifdef __LITTLE_ENDIAN__
   8285   return vec_perm(
   8286       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8287                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8288                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8289                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8290 #else
   8291   return vec_perm(
   8292       __a, __b,
   8293       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8294                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8295                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8296 #endif
   8297 }
   8298 
   8299 static __inline__ vector bool int __ATTRS_o_ai vec_sld(vector bool int __a,
   8300                                                        vector bool int __b,
   8301                                                        unsigned const int __c) {
   8302   unsigned char __d = __c & 0x0F;
   8303 #ifdef __LITTLE_ENDIAN__
   8304   return vec_perm(
   8305       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8306                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8307                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8308                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8309 #else
   8310   return vec_perm(
   8311       __a, __b,
   8312       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8313                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8314                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8315 #endif
   8316 }
   8317 
   8318 static __inline__ vector float __ATTRS_o_ai vec_sld(vector float __a,
   8319                                                     vector float __b,
   8320                                                     unsigned const int __c) {
   8321   unsigned char __d = __c & 0x0F;
   8322 #ifdef __LITTLE_ENDIAN__
   8323   return vec_perm(
   8324       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8325                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8326                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8327                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8328 #else
   8329   return vec_perm(
   8330       __a, __b,
   8331       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8332                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8333                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8334 #endif
   8335 }
   8336 
   8337 #ifdef __VSX__
   8338 static __inline__ vector bool long long __ATTRS_o_ai
   8339 vec_sld(vector bool long long __a, vector bool long long __b,
   8340         unsigned const int __c) {
   8341   unsigned char __d = __c & 0x0F;
   8342 #ifdef __LITTLE_ENDIAN__
   8343   return vec_perm(
   8344       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8345                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8346                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8347                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8348 #else
   8349   return vec_perm(
   8350       __a, __b,
   8351       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8352                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8353                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8354 #endif
   8355 }
   8356 
   8357 static __inline__ vector signed long long __ATTRS_o_ai
   8358 vec_sld(vector signed long long __a, vector signed long long __b,
   8359         unsigned const int __c) {
   8360   unsigned char __d = __c & 0x0F;
   8361 #ifdef __LITTLE_ENDIAN__
   8362   return vec_perm(
   8363       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8364                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8365                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8366                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8367 #else
   8368   return vec_perm(
   8369       __a, __b,
   8370       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8371                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8372                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8373 #endif
   8374 }
   8375 
   8376 static __inline__ vector unsigned long long __ATTRS_o_ai
   8377 vec_sld(vector unsigned long long __a, vector unsigned long long __b,
   8378         unsigned const int __c) {
   8379   unsigned char __d = __c & 0x0F;
   8380 #ifdef __LITTLE_ENDIAN__
   8381   return vec_perm(
   8382       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8383                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8384                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8385                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8386 #else
   8387   return vec_perm(
   8388       __a, __b,
   8389       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8390                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8391                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8392 #endif
   8393 }
   8394 
   8395 static __inline__ vector double __ATTRS_o_ai vec_sld(vector double __a,
   8396                                                      vector double __b,
   8397                                                      unsigned const int __c) {
   8398   unsigned char __d = __c & 0x0F;
   8399 #ifdef __LITTLE_ENDIAN__
   8400   return vec_perm(
   8401       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8402                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8403                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8404                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8405 #else
   8406   return vec_perm(
   8407       __a, __b,
   8408       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8409                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8410                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8411 #endif
   8412 }
   8413 #endif
   8414 
   8415 /* vec_sldw */
   8416 static __inline__ vector signed char __ATTRS_o_ai vec_sldw(
   8417     vector signed char __a, vector signed char __b, unsigned const int __c) {
   8418   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
   8419 }
   8420 
   8421 static __inline__ vector unsigned char __ATTRS_o_ai
   8422 vec_sldw(vector unsigned char __a, vector unsigned char __b,
   8423          unsigned const int __c) {
   8424   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
   8425 }
   8426 
   8427 static __inline__ vector signed short __ATTRS_o_ai vec_sldw(
   8428     vector signed short __a, vector signed short __b, unsigned const int __c) {
   8429   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
   8430 }
   8431 
   8432 static __inline__ vector unsigned short __ATTRS_o_ai
   8433 vec_sldw(vector unsigned short __a, vector unsigned short __b,
   8434          unsigned const int __c) {
   8435   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
   8436 }
   8437 
   8438 static __inline__ vector signed int __ATTRS_o_ai
   8439 vec_sldw(vector signed int __a, vector signed int __b, unsigned const int __c) {
   8440   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
   8441 }
   8442 
   8443 static __inline__ vector unsigned int __ATTRS_o_ai vec_sldw(
   8444     vector unsigned int __a, vector unsigned int __b, unsigned const int __c) {
   8445   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
   8446 }
   8447 
   8448 #ifdef __VSX__
   8449 static __inline__ vector signed long long __ATTRS_o_ai
   8450 vec_sldw(vector signed long long __a, vector signed long long __b,
   8451          unsigned const int __c) {
   8452   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
   8453 }
   8454 
   8455 static __inline__ vector unsigned long long __ATTRS_o_ai
   8456 vec_sldw(vector unsigned long long __a, vector unsigned long long __b,
   8457          unsigned const int __c) {
   8458   return vec_sld(__a, __b, ((__c << 2) & 0x0F));
   8459 }
   8460 #endif
   8461 
   8462 #ifdef __POWER9_VECTOR__
   8463 /* vec_slv */
   8464 static __inline__ vector unsigned char __ATTRS_o_ai
   8465 vec_slv(vector unsigned char __a, vector unsigned char __b) {
   8466   return __builtin_altivec_vslv(__a, __b);
   8467 }
   8468 
   8469 /* vec_srv */
   8470 static __inline__ vector unsigned char __ATTRS_o_ai
   8471 vec_srv(vector unsigned char __a, vector unsigned char __b) {
   8472   return __builtin_altivec_vsrv(__a, __b);
   8473 }
   8474 #endif
   8475 
   8476 /* vec_vsldoi */
   8477 
   8478 static __inline__ vector signed char __ATTRS_o_ai
   8479 vec_vsldoi(vector signed char __a, vector signed char __b, unsigned char __c) {
   8480   unsigned char __d = __c & 0x0F;
   8481 #ifdef __LITTLE_ENDIAN__
   8482   return vec_perm(
   8483       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8484                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8485                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8486                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8487 #else
   8488   return vec_perm(
   8489       __a, __b,
   8490       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8491                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8492                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8493 #endif
   8494 }
   8495 
   8496 static __inline__ vector unsigned char __ATTRS_o_ai vec_vsldoi(
   8497     vector unsigned char __a, vector unsigned char __b, unsigned char __c) {
   8498   unsigned char __d = __c & 0x0F;
   8499 #ifdef __LITTLE_ENDIAN__
   8500   return vec_perm(
   8501       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8502                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8503                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8504                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8505 #else
   8506   return vec_perm(
   8507       __a, __b,
   8508       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8509                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8510                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8511 #endif
   8512 }
   8513 
   8514 static __inline__ vector short __ATTRS_o_ai vec_vsldoi(vector short __a,
   8515                                                        vector short __b,
   8516                                                        unsigned char __c) {
   8517   unsigned char __d = __c & 0x0F;
   8518 #ifdef __LITTLE_ENDIAN__
   8519   return vec_perm(
   8520       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8521                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8522                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8523                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8524 #else
   8525   return vec_perm(
   8526       __a, __b,
   8527       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8528                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8529                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8530 #endif
   8531 }
   8532 
   8533 static __inline__ vector unsigned short __ATTRS_o_ai vec_vsldoi(
   8534     vector unsigned short __a, vector unsigned short __b, unsigned char __c) {
   8535   unsigned char __d = __c & 0x0F;
   8536 #ifdef __LITTLE_ENDIAN__
   8537   return vec_perm(
   8538       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8539                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8540                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8541                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8542 #else
   8543   return vec_perm(
   8544       __a, __b,
   8545       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8546                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8547                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8548 #endif
   8549 }
   8550 
   8551 static __inline__ vector pixel __ATTRS_o_ai vec_vsldoi(vector pixel __a,
   8552                                                        vector pixel __b,
   8553                                                        unsigned char __c) {
   8554   unsigned char __d = __c & 0x0F;
   8555 #ifdef __LITTLE_ENDIAN__
   8556   return vec_perm(
   8557       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8558                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8559                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8560                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8561 #else
   8562   return vec_perm(
   8563       __a, __b,
   8564       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8565                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8566                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8567 #endif
   8568 }
   8569 
   8570 static __inline__ vector int __ATTRS_o_ai vec_vsldoi(vector int __a,
   8571                                                      vector int __b,
   8572                                                      unsigned char __c) {
   8573   unsigned char __d = __c & 0x0F;
   8574 #ifdef __LITTLE_ENDIAN__
   8575   return vec_perm(
   8576       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8577                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8578                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8579                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8580 #else
   8581   return vec_perm(
   8582       __a, __b,
   8583       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8584                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8585                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8586 #endif
   8587 }
   8588 
   8589 static __inline__ vector unsigned int __ATTRS_o_ai vec_vsldoi(
   8590     vector unsigned int __a, vector unsigned int __b, unsigned char __c) {
   8591   unsigned char __d = __c & 0x0F;
   8592 #ifdef __LITTLE_ENDIAN__
   8593   return vec_perm(
   8594       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8595                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8596                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8597                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8598 #else
   8599   return vec_perm(
   8600       __a, __b,
   8601       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8602                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8603                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8604 #endif
   8605 }
   8606 
   8607 static __inline__ vector float __ATTRS_o_ai vec_vsldoi(vector float __a,
   8608                                                        vector float __b,
   8609                                                        unsigned char __c) {
   8610   unsigned char __d = __c & 0x0F;
   8611 #ifdef __LITTLE_ENDIAN__
   8612   return vec_perm(
   8613       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
   8614                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
   8615                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
   8616                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
   8617 #else
   8618   return vec_perm(
   8619       __a, __b,
   8620       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
   8621                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
   8622                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
   8623 #endif
   8624 }
   8625 
   8626 /* vec_sll */
   8627 
   8628 static __inline__ vector signed char __ATTRS_o_ai
   8629 vec_sll(vector signed char __a, vector unsigned char __b) {
   8630   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
   8631                                                    (vector int)__b);
   8632 }
   8633 
   8634 static __inline__ vector signed char __ATTRS_o_ai
   8635 vec_sll(vector signed char __a, vector unsigned short __b) {
   8636   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
   8637                                                    (vector int)__b);
   8638 }
   8639 
   8640 static __inline__ vector signed char __ATTRS_o_ai
   8641 vec_sll(vector signed char __a, vector unsigned int __b) {
   8642   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
   8643                                                    (vector int)__b);
   8644 }
   8645 
   8646 static __inline__ vector unsigned char __ATTRS_o_ai
   8647 vec_sll(vector unsigned char __a, vector unsigned char __b) {
   8648   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
   8649                                                      (vector int)__b);
   8650 }
   8651 
   8652 static __inline__ vector unsigned char __ATTRS_o_ai
   8653 vec_sll(vector unsigned char __a, vector unsigned short __b) {
   8654   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
   8655                                                      (vector int)__b);
   8656 }
   8657 
   8658 static __inline__ vector unsigned char __ATTRS_o_ai
   8659 vec_sll(vector unsigned char __a, vector unsigned int __b) {
   8660   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
   8661                                                      (vector int)__b);
   8662 }
   8663 
   8664 static __inline__ vector bool char __ATTRS_o_ai
   8665 vec_sll(vector bool char __a, vector unsigned char __b) {
   8666   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
   8667                                                  (vector int)__b);
   8668 }
   8669 
   8670 static __inline__ vector bool char __ATTRS_o_ai
   8671 vec_sll(vector bool char __a, vector unsigned short __b) {
   8672   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
   8673                                                  (vector int)__b);
   8674 }
   8675 
   8676 static __inline__ vector bool char __ATTRS_o_ai
   8677 vec_sll(vector bool char __a, vector unsigned int __b) {
   8678   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
   8679                                                  (vector int)__b);
   8680 }
   8681 
   8682 static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
   8683                                                     vector unsigned char __b) {
   8684   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   8685 }
   8686 
   8687 static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
   8688                                                     vector unsigned short __b) {
   8689   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   8690 }
   8691 
   8692 static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
   8693                                                     vector unsigned int __b) {
   8694   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   8695 }
   8696 
   8697 static __inline__ vector unsigned short __ATTRS_o_ai
   8698 vec_sll(vector unsigned short __a, vector unsigned char __b) {
   8699   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
   8700                                                       (vector int)__b);
   8701 }
   8702 
   8703 static __inline__ vector unsigned short __ATTRS_o_ai
   8704 vec_sll(vector unsigned short __a, vector unsigned short __b) {
   8705   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
   8706                                                       (vector int)__b);
   8707 }
   8708 
   8709 static __inline__ vector unsigned short __ATTRS_o_ai
   8710 vec_sll(vector unsigned short __a, vector unsigned int __b) {
   8711   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
   8712                                                       (vector int)__b);
   8713 }
   8714 
   8715 static __inline__ vector bool short __ATTRS_o_ai
   8716 vec_sll(vector bool short __a, vector unsigned char __b) {
   8717   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
   8718                                                   (vector int)__b);
   8719 }
   8720 
   8721 static __inline__ vector bool short __ATTRS_o_ai
   8722 vec_sll(vector bool short __a, vector unsigned short __b) {
   8723   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
   8724                                                   (vector int)__b);
   8725 }
   8726 
   8727 static __inline__ vector bool short __ATTRS_o_ai
   8728 vec_sll(vector bool short __a, vector unsigned int __b) {
   8729   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
   8730                                                   (vector int)__b);
   8731 }
   8732 
   8733 static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
   8734                                                     vector unsigned char __b) {
   8735   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   8736 }
   8737 
   8738 static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
   8739                                                     vector unsigned short __b) {
   8740   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   8741 }
   8742 
   8743 static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
   8744                                                     vector unsigned int __b) {
   8745   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   8746 }
   8747 
   8748 static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
   8749                                                   vector unsigned char __b) {
   8750   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
   8751 }
   8752 
   8753 static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
   8754                                                   vector unsigned short __b) {
   8755   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
   8756 }
   8757 
   8758 static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
   8759                                                   vector unsigned int __b) {
   8760   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
   8761 }
   8762 
   8763 static __inline__ vector unsigned int __ATTRS_o_ai
   8764 vec_sll(vector unsigned int __a, vector unsigned char __b) {
   8765   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
   8766                                                     (vector int)__b);
   8767 }
   8768 
   8769 static __inline__ vector unsigned int __ATTRS_o_ai
   8770 vec_sll(vector unsigned int __a, vector unsigned short __b) {
   8771   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
   8772                                                     (vector int)__b);
   8773 }
   8774 
   8775 static __inline__ vector unsigned int __ATTRS_o_ai
   8776 vec_sll(vector unsigned int __a, vector unsigned int __b) {
   8777   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
   8778                                                     (vector int)__b);
   8779 }
   8780 
   8781 static __inline__ vector bool int __ATTRS_o_ai
   8782 vec_sll(vector bool int __a, vector unsigned char __b) {
   8783   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
   8784                                                 (vector int)__b);
   8785 }
   8786 
   8787 static __inline__ vector bool int __ATTRS_o_ai
   8788 vec_sll(vector bool int __a, vector unsigned short __b) {
   8789   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
   8790                                                 (vector int)__b);
   8791 }
   8792 
   8793 static __inline__ vector bool int __ATTRS_o_ai
   8794 vec_sll(vector bool int __a, vector unsigned int __b) {
   8795   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
   8796                                                 (vector int)__b);
   8797 }
   8798 
   8799 #ifdef __VSX__
   8800 static __inline__ vector signed long long __ATTRS_o_ai
   8801 vec_sll(vector signed long long __a, vector unsigned char __b) {
   8802   return (vector signed long long)__builtin_altivec_vsl((vector int)__a,
   8803                                                         (vector int)__b);
   8804 }
   8805 
   8806 static __inline__ vector unsigned long long __ATTRS_o_ai
   8807 vec_sll(vector unsigned long long __a, vector unsigned char __b) {
   8808   return (vector unsigned long long)__builtin_altivec_vsl((vector int)__a,
   8809                                                           (vector int)__b);
   8810 }
   8811 #endif
   8812 
   8813 /* vec_vsl */
   8814 
   8815 static __inline__ vector signed char __ATTRS_o_ai
   8816 vec_vsl(vector signed char __a, vector unsigned char __b) {
   8817   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
   8818                                                    (vector int)__b);
   8819 }
   8820 
   8821 static __inline__ vector signed char __ATTRS_o_ai
   8822 vec_vsl(vector signed char __a, vector unsigned short __b) {
   8823   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
   8824                                                    (vector int)__b);
   8825 }
   8826 
   8827 static __inline__ vector signed char __ATTRS_o_ai
   8828 vec_vsl(vector signed char __a, vector unsigned int __b) {
   8829   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
   8830                                                    (vector int)__b);
   8831 }
   8832 
   8833 static __inline__ vector unsigned char __ATTRS_o_ai
   8834 vec_vsl(vector unsigned char __a, vector unsigned char __b) {
   8835   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
   8836                                                      (vector int)__b);
   8837 }
   8838 
   8839 static __inline__ vector unsigned char __ATTRS_o_ai
   8840 vec_vsl(vector unsigned char __a, vector unsigned short __b) {
   8841   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
   8842                                                      (vector int)__b);
   8843 }
   8844 
   8845 static __inline__ vector unsigned char __ATTRS_o_ai
   8846 vec_vsl(vector unsigned char __a, vector unsigned int __b) {
   8847   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
   8848                                                      (vector int)__b);
   8849 }
   8850 
   8851 static __inline__ vector bool char __ATTRS_o_ai
   8852 vec_vsl(vector bool char __a, vector unsigned char __b) {
   8853   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
   8854                                                  (vector int)__b);
   8855 }
   8856 
   8857 static __inline__ vector bool char __ATTRS_o_ai
   8858 vec_vsl(vector bool char __a, vector unsigned short __b) {
   8859   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
   8860                                                  (vector int)__b);
   8861 }
   8862 
   8863 static __inline__ vector bool char __ATTRS_o_ai
   8864 vec_vsl(vector bool char __a, vector unsigned int __b) {
   8865   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
   8866                                                  (vector int)__b);
   8867 }
   8868 
   8869 static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
   8870                                                     vector unsigned char __b) {
   8871   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   8872 }
   8873 
   8874 static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
   8875                                                     vector unsigned short __b) {
   8876   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   8877 }
   8878 
   8879 static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
   8880                                                     vector unsigned int __b) {
   8881   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   8882 }
   8883 
   8884 static __inline__ vector unsigned short __ATTRS_o_ai
   8885 vec_vsl(vector unsigned short __a, vector unsigned char __b) {
   8886   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
   8887                                                       (vector int)__b);
   8888 }
   8889 
   8890 static __inline__ vector unsigned short __ATTRS_o_ai
   8891 vec_vsl(vector unsigned short __a, vector unsigned short __b) {
   8892   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
   8893                                                       (vector int)__b);
   8894 }
   8895 
   8896 static __inline__ vector unsigned short __ATTRS_o_ai
   8897 vec_vsl(vector unsigned short __a, vector unsigned int __b) {
   8898   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
   8899                                                       (vector int)__b);
   8900 }
   8901 
   8902 static __inline__ vector bool short __ATTRS_o_ai
   8903 vec_vsl(vector bool short __a, vector unsigned char __b) {
   8904   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
   8905                                                   (vector int)__b);
   8906 }
   8907 
   8908 static __inline__ vector bool short __ATTRS_o_ai
   8909 vec_vsl(vector bool short __a, vector unsigned short __b) {
   8910   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
   8911                                                   (vector int)__b);
   8912 }
   8913 
   8914 static __inline__ vector bool short __ATTRS_o_ai
   8915 vec_vsl(vector bool short __a, vector unsigned int __b) {
   8916   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
   8917                                                   (vector int)__b);
   8918 }
   8919 
   8920 static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
   8921                                                     vector unsigned char __b) {
   8922   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   8923 }
   8924 
   8925 static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
   8926                                                     vector unsigned short __b) {
   8927   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   8928 }
   8929 
   8930 static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
   8931                                                     vector unsigned int __b) {
   8932   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
   8933 }
   8934 
   8935 static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
   8936                                                   vector unsigned char __b) {
   8937   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
   8938 }
   8939 
   8940 static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
   8941                                                   vector unsigned short __b) {
   8942   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
   8943 }
   8944 
   8945 static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
   8946                                                   vector unsigned int __b) {
   8947   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
   8948 }
   8949 
   8950 static __inline__ vector unsigned int __ATTRS_o_ai
   8951 vec_vsl(vector unsigned int __a, vector unsigned char __b) {
   8952   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
   8953                                                     (vector int)__b);
   8954 }
   8955 
   8956 static __inline__ vector unsigned int __ATTRS_o_ai
   8957 vec_vsl(vector unsigned int __a, vector unsigned short __b) {
   8958   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
   8959                                                     (vector int)__b);
   8960 }
   8961 
   8962 static __inline__ vector unsigned int __ATTRS_o_ai
   8963 vec_vsl(vector unsigned int __a, vector unsigned int __b) {
   8964   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
   8965                                                     (vector int)__b);
   8966 }
   8967 
   8968 static __inline__ vector bool int __ATTRS_o_ai
   8969 vec_vsl(vector bool int __a, vector unsigned char __b) {
   8970   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
   8971                                                 (vector int)__b);
   8972 }
   8973 
   8974 static __inline__ vector bool int __ATTRS_o_ai
   8975 vec_vsl(vector bool int __a, vector unsigned short __b) {
   8976   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
   8977                                                 (vector int)__b);
   8978 }
   8979 
   8980 static __inline__ vector bool int __ATTRS_o_ai
   8981 vec_vsl(vector bool int __a, vector unsigned int __b) {
   8982   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
   8983                                                 (vector int)__b);
   8984 }
   8985 
   8986 /* vec_slo */
   8987 
   8988 static __inline__ vector signed char __ATTRS_o_ai
   8989 vec_slo(vector signed char __a, vector signed char __b) {
   8990   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
   8991                                                     (vector int)__b);
   8992 }
   8993 
   8994 static __inline__ vector signed char __ATTRS_o_ai
   8995 vec_slo(vector signed char __a, vector unsigned char __b) {
   8996   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
   8997                                                     (vector int)__b);
   8998 }
   8999 
   9000 static __inline__ vector unsigned char __ATTRS_o_ai
   9001 vec_slo(vector unsigned char __a, vector signed char __b) {
   9002   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
   9003                                                       (vector int)__b);
   9004 }
   9005 
   9006 static __inline__ vector unsigned char __ATTRS_o_ai
   9007 vec_slo(vector unsigned char __a, vector unsigned char __b) {
   9008   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
   9009                                                       (vector int)__b);
   9010 }
   9011 
   9012 static __inline__ vector short __ATTRS_o_ai vec_slo(vector short __a,
   9013                                                     vector signed char __b) {
   9014   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   9015 }
   9016 
   9017 static __inline__ vector short __ATTRS_o_ai vec_slo(vector short __a,
   9018                                                     vector unsigned char __b) {
   9019   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   9020 }
   9021 
   9022 static __inline__ vector unsigned short __ATTRS_o_ai
   9023 vec_slo(vector unsigned short __a, vector signed char __b) {
   9024   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
   9025                                                        (vector int)__b);
   9026 }
   9027 
   9028 static __inline__ vector unsigned short __ATTRS_o_ai
   9029 vec_slo(vector unsigned short __a, vector unsigned char __b) {
   9030   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
   9031                                                        (vector int)__b);
   9032 }
   9033 
   9034 static __inline__ vector pixel __ATTRS_o_ai vec_slo(vector pixel __a,
   9035                                                     vector signed char __b) {
   9036   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   9037 }
   9038 
   9039 static __inline__ vector pixel __ATTRS_o_ai vec_slo(vector pixel __a,
   9040                                                     vector unsigned char __b) {
   9041   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   9042 }
   9043 
   9044 static __inline__ vector int __ATTRS_o_ai vec_slo(vector int __a,
   9045                                                   vector signed char __b) {
   9046   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
   9047 }
   9048 
   9049 static __inline__ vector int __ATTRS_o_ai vec_slo(vector int __a,
   9050                                                   vector unsigned char __b) {
   9051   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
   9052 }
   9053 
   9054 static __inline__ vector unsigned int __ATTRS_o_ai
   9055 vec_slo(vector unsigned int __a, vector signed char __b) {
   9056   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
   9057                                                      (vector int)__b);
   9058 }
   9059 
   9060 static __inline__ vector unsigned int __ATTRS_o_ai
   9061 vec_slo(vector unsigned int __a, vector unsigned char __b) {
   9062   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
   9063                                                      (vector int)__b);
   9064 }
   9065 
   9066 static __inline__ vector float __ATTRS_o_ai vec_slo(vector float __a,
   9067                                                     vector signed char __b) {
   9068   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   9069 }
   9070 
   9071 static __inline__ vector float __ATTRS_o_ai vec_slo(vector float __a,
   9072                                                     vector unsigned char __b) {
   9073   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   9074 }
   9075 
   9076 #ifdef __VSX__
   9077 static __inline__ vector signed long long __ATTRS_o_ai
   9078 vec_slo(vector signed long long __a, vector signed char __b) {
   9079   return (vector signed long long)__builtin_altivec_vslo((vector int)__a,
   9080                                                          (vector int)__b);
   9081 }
   9082 
   9083 static __inline__ vector signed long long __ATTRS_o_ai
   9084 vec_slo(vector signed long long __a, vector unsigned char __b) {
   9085   return (vector signed long long)__builtin_altivec_vslo((vector int)__a,
   9086                                                          (vector int)__b);
   9087 }
   9088 
   9089 static __inline__ vector unsigned long long __ATTRS_o_ai
   9090 vec_slo(vector unsigned long long __a, vector signed char __b) {
   9091   return (vector unsigned long long)__builtin_altivec_vslo((vector int)__a,
   9092                                                            (vector int)__b);
   9093 }
   9094 
   9095 static __inline__ vector unsigned long long __ATTRS_o_ai
   9096 vec_slo(vector unsigned long long __a, vector unsigned char __b) {
   9097   return (vector unsigned long long)__builtin_altivec_vslo((vector int)__a,
   9098                                                            (vector int)__b);
   9099 }
   9100 #endif
   9101 
   9102 /* vec_vslo */
   9103 
   9104 static __inline__ vector signed char __ATTRS_o_ai
   9105 vec_vslo(vector signed char __a, vector signed char __b) {
   9106   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
   9107                                                     (vector int)__b);
   9108 }
   9109 
   9110 static __inline__ vector signed char __ATTRS_o_ai
   9111 vec_vslo(vector signed char __a, vector unsigned char __b) {
   9112   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
   9113                                                     (vector int)__b);
   9114 }
   9115 
   9116 static __inline__ vector unsigned char __ATTRS_o_ai
   9117 vec_vslo(vector unsigned char __a, vector signed char __b) {
   9118   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
   9119                                                       (vector int)__b);
   9120 }
   9121 
   9122 static __inline__ vector unsigned char __ATTRS_o_ai
   9123 vec_vslo(vector unsigned char __a, vector unsigned char __b) {
   9124   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
   9125                                                       (vector int)__b);
   9126 }
   9127 
   9128 static __inline__ vector short __ATTRS_o_ai vec_vslo(vector short __a,
   9129                                                      vector signed char __b) {
   9130   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   9131 }
   9132 
   9133 static __inline__ vector short __ATTRS_o_ai vec_vslo(vector short __a,
   9134                                                      vector unsigned char __b) {
   9135   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   9136 }
   9137 
   9138 static __inline__ vector unsigned short __ATTRS_o_ai
   9139 vec_vslo(vector unsigned short __a, vector signed char __b) {
   9140   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
   9141                                                        (vector int)__b);
   9142 }
   9143 
   9144 static __inline__ vector unsigned short __ATTRS_o_ai
   9145 vec_vslo(vector unsigned short __a, vector unsigned char __b) {
   9146   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
   9147                                                        (vector int)__b);
   9148 }
   9149 
   9150 static __inline__ vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a,
   9151                                                      vector signed char __b) {
   9152   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   9153 }
   9154 
   9155 static __inline__ vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a,
   9156                                                      vector unsigned char __b) {
   9157   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   9158 }
   9159 
   9160 static __inline__ vector int __ATTRS_o_ai vec_vslo(vector int __a,
   9161                                                    vector signed char __b) {
   9162   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
   9163 }
   9164 
   9165 static __inline__ vector int __ATTRS_o_ai vec_vslo(vector int __a,
   9166                                                    vector unsigned char __b) {
   9167   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
   9168 }
   9169 
   9170 static __inline__ vector unsigned int __ATTRS_o_ai
   9171 vec_vslo(vector unsigned int __a, vector signed char __b) {
   9172   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
   9173                                                      (vector int)__b);
   9174 }
   9175 
   9176 static __inline__ vector unsigned int __ATTRS_o_ai
   9177 vec_vslo(vector unsigned int __a, vector unsigned char __b) {
   9178   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
   9179                                                      (vector int)__b);
   9180 }
   9181 
   9182 static __inline__ vector float __ATTRS_o_ai vec_vslo(vector float __a,
   9183                                                      vector signed char __b) {
   9184   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   9185 }
   9186 
   9187 static __inline__ vector float __ATTRS_o_ai vec_vslo(vector float __a,
   9188                                                      vector unsigned char __b) {
   9189   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
   9190 }
   9191 
   9192 /* vec_splat */
   9193 
   9194 static __inline__ vector signed char __ATTRS_o_ai
   9195 vec_splat(vector signed char __a, unsigned const int __b) {
   9196   return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
   9197 }
   9198 
   9199 static __inline__ vector unsigned char __ATTRS_o_ai
   9200 vec_splat(vector unsigned char __a, unsigned const int __b) {
   9201   return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
   9202 }
   9203 
   9204 static __inline__ vector bool char __ATTRS_o_ai
   9205 vec_splat(vector bool char __a, unsigned const int __b) {
   9206   return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
   9207 }
   9208 
   9209 static __inline__ vector signed short __ATTRS_o_ai
   9210 vec_splat(vector signed short __a, unsigned const int __b) {
   9211   unsigned char b0 = (__b & 0x07) * 2;
   9212   unsigned char b1 = b0 + 1;
   9213   return vec_perm(__a, __a,
   9214                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
   9215                                          b0, b1, b0, b1, b0, b1));
   9216 }
   9217 
   9218 static __inline__ vector unsigned short __ATTRS_o_ai
   9219 vec_splat(vector unsigned short __a, unsigned const int __b) {
   9220   unsigned char b0 = (__b & 0x07) * 2;
   9221   unsigned char b1 = b0 + 1;
   9222   return vec_perm(__a, __a,
   9223                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
   9224                                          b0, b1, b0, b1, b0, b1));
   9225 }
   9226 
   9227 static __inline__ vector bool short __ATTRS_o_ai
   9228 vec_splat(vector bool short __a, unsigned const int __b) {
   9229   unsigned char b0 = (__b & 0x07) * 2;
   9230   unsigned char b1 = b0 + 1;
   9231   return vec_perm(__a, __a,
   9232                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
   9233                                          b0, b1, b0, b1, b0, b1));
   9234 }
   9235 
   9236 static __inline__ vector pixel __ATTRS_o_ai vec_splat(vector pixel __a,
   9237                                                       unsigned const int __b) {
   9238   unsigned char b0 = (__b & 0x07) * 2;
   9239   unsigned char b1 = b0 + 1;
   9240   return vec_perm(__a, __a,
   9241                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
   9242                                          b0, b1, b0, b1, b0, b1));
   9243 }
   9244 
   9245 static __inline__ vector signed int __ATTRS_o_ai
   9246 vec_splat(vector signed int __a, unsigned const int __b) {
   9247   unsigned char b0 = (__b & 0x03) * 4;
   9248   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
   9249   return vec_perm(__a, __a,
   9250                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
   9251                                          b2, b3, b0, b1, b2, b3));
   9252 }
   9253 
   9254 static __inline__ vector unsigned int __ATTRS_o_ai
   9255 vec_splat(vector unsigned int __a, unsigned const int __b) {
   9256   unsigned char b0 = (__b & 0x03) * 4;
   9257   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
   9258   return vec_perm(__a, __a,
   9259                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
   9260                                          b2, b3, b0, b1, b2, b3));
   9261 }
   9262 
   9263 static __inline__ vector bool int __ATTRS_o_ai
   9264 vec_splat(vector bool int __a, unsigned const int __b) {
   9265   unsigned char b0 = (__b & 0x03) * 4;
   9266   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
   9267   return vec_perm(__a, __a,
   9268                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
   9269                                          b2, b3, b0, b1, b2, b3));
   9270 }
   9271 
   9272 static __inline__ vector float __ATTRS_o_ai vec_splat(vector float __a,
   9273                                                       unsigned const int __b) {
   9274   unsigned char b0 = (__b & 0x03) * 4;
   9275   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
   9276   return vec_perm(__a, __a,
   9277                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
   9278                                          b2, b3, b0, b1, b2, b3));
   9279 }
   9280 
   9281 #ifdef __VSX__
   9282 static __inline__ vector double __ATTRS_o_ai vec_splat(vector double __a,
   9283                                                        unsigned const int __b) {
   9284   unsigned char b0 = (__b & 0x01) * 8;
   9285   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
   9286                 b6 = b0 + 6, b7 = b0 + 7;
   9287   return vec_perm(__a, __a,
   9288                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
   9289                                          b2, b3, b4, b5, b6, b7));
   9290 }
   9291 static __inline__ vector bool long long __ATTRS_o_ai
   9292 vec_splat(vector bool long long __a, unsigned const int __b) {
   9293   unsigned char b0 = (__b & 0x01) * 8;
   9294   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
   9295                 b6 = b0 + 6, b7 = b0 + 7;
   9296   return vec_perm(__a, __a,
   9297                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
   9298                                          b2, b3, b4, b5, b6, b7));
   9299 }
   9300 static __inline__ vector signed long long __ATTRS_o_ai
   9301 vec_splat(vector signed long long __a, unsigned const int __b) {
   9302   unsigned char b0 = (__b & 0x01) * 8;
   9303   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
   9304                 b6 = b0 + 6, b7 = b0 + 7;
   9305   return vec_perm(__a, __a,
   9306                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
   9307                                          b2, b3, b4, b5, b6, b7));
   9308 }
   9309 static __inline__ vector unsigned long long __ATTRS_o_ai
   9310 vec_splat(vector unsigned long long __a, unsigned const int __b) {
   9311   unsigned char b0 = (__b & 0x01) * 8;
   9312   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
   9313                 b6 = b0 + 6, b7 = b0 + 7;
   9314   return vec_perm(__a, __a,
   9315                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
   9316                                          b2, b3, b4, b5, b6, b7));
   9317 }
   9318 #endif
   9319 
   9320 /* vec_vspltb */
   9321 
   9322 #define __builtin_altivec_vspltb vec_vspltb
   9323 
   9324 static __inline__ vector signed char __ATTRS_o_ai
   9325 vec_vspltb(vector signed char __a, unsigned char __b) {
   9326   return vec_perm(__a, __a, (vector unsigned char)(__b));
   9327 }
   9328 
   9329 static __inline__ vector unsigned char __ATTRS_o_ai
   9330 vec_vspltb(vector unsigned char __a, unsigned char __b) {
   9331   return vec_perm(__a, __a, (vector unsigned char)(__b));
   9332 }
   9333 
   9334 static __inline__ vector bool char __ATTRS_o_ai vec_vspltb(vector bool char __a,
   9335                                                            unsigned char __b) {
   9336   return vec_perm(__a, __a, (vector unsigned char)(__b));
   9337 }
   9338 
   9339 /* vec_vsplth */
   9340 
   9341 #define __builtin_altivec_vsplth vec_vsplth
   9342 
   9343 static __inline__ vector short __ATTRS_o_ai vec_vsplth(vector short __a,
   9344                                                        unsigned char __b) {
   9345   __b *= 2;
   9346   unsigned char b1 = __b + 1;
   9347   return vec_perm(__a, __a,
   9348                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
   9349                                          __b, b1, __b, b1, __b, b1, __b, b1));
   9350 }
   9351 
   9352 static __inline__ vector unsigned short __ATTRS_o_ai
   9353 vec_vsplth(vector unsigned short __a, unsigned char __b) {
   9354   __b *= 2;
   9355   unsigned char b1 = __b + 1;
   9356   return vec_perm(__a, __a,
   9357                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
   9358                                          __b, b1, __b, b1, __b, b1, __b, b1));
   9359 }
   9360 
   9361 static __inline__ vector bool short __ATTRS_o_ai
   9362 vec_vsplth(vector bool short __a, unsigned char __b) {
   9363   __b *= 2;
   9364   unsigned char b1 = __b + 1;
   9365   return vec_perm(__a, __a,
   9366                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
   9367                                          __b, b1, __b, b1, __b, b1, __b, b1));
   9368 }
   9369 
   9370 static __inline__ vector pixel __ATTRS_o_ai vec_vsplth(vector pixel __a,
   9371                                                        unsigned char __b) {
   9372   __b *= 2;
   9373   unsigned char b1 = __b + 1;
   9374   return vec_perm(__a, __a,
   9375                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
   9376                                          __b, b1, __b, b1, __b, b1, __b, b1));
   9377 }
   9378 
   9379 /* vec_vspltw */
   9380 
   9381 #define __builtin_altivec_vspltw vec_vspltw
   9382 
   9383 static __inline__ vector int __ATTRS_o_ai vec_vspltw(vector int __a,
   9384                                                      unsigned char __b) {
   9385   __b *= 4;
   9386   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
   9387   return vec_perm(__a, __a,
   9388                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
   9389                                          b1, b2, b3, __b, b1, b2, b3));
   9390 }
   9391 
   9392 static __inline__ vector unsigned int __ATTRS_o_ai
   9393 vec_vspltw(vector unsigned int __a, unsigned char __b) {
   9394   __b *= 4;
   9395   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
   9396   return vec_perm(__a, __a,
   9397                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
   9398                                          b1, b2, b3, __b, b1, b2, b3));
   9399 }
   9400 
   9401 static __inline__ vector bool int __ATTRS_o_ai vec_vspltw(vector bool int __a,
   9402                                                           unsigned char __b) {
   9403   __b *= 4;
   9404   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
   9405   return vec_perm(__a, __a,
   9406                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
   9407                                          b1, b2, b3, __b, b1, b2, b3));
   9408 }
   9409 
   9410 static __inline__ vector float __ATTRS_o_ai vec_vspltw(vector float __a,
   9411                                                        unsigned char __b) {
   9412   __b *= 4;
   9413   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
   9414   return vec_perm(__a, __a,
   9415                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
   9416                                          b1, b2, b3, __b, b1, b2, b3));
   9417 }
   9418 
   9419 /* vec_splat_s8 */
   9420 
   9421 #define __builtin_altivec_vspltisb vec_splat_s8
   9422 
   9423 // FIXME: parameter should be treated as 5-bit signed literal
   9424 static __inline__ vector signed char __ATTRS_o_ai
   9425 vec_splat_s8(signed char __a) {
   9426   return (vector signed char)(__a);
   9427 }
   9428 
   9429 /* vec_vspltisb */
   9430 
   9431 // FIXME: parameter should be treated as 5-bit signed literal
   9432 static __inline__ vector signed char __ATTRS_o_ai
   9433 vec_vspltisb(signed char __a) {
   9434   return (vector signed char)(__a);
   9435 }
   9436 
   9437 /* vec_splat_s16 */
   9438 
   9439 #define __builtin_altivec_vspltish vec_splat_s16
   9440 
   9441 // FIXME: parameter should be treated as 5-bit signed literal
   9442 static __inline__ vector short __ATTRS_o_ai vec_splat_s16(signed char __a) {
   9443   return (vector short)(__a);
   9444 }
   9445 
   9446 /* vec_vspltish */
   9447 
   9448 // FIXME: parameter should be treated as 5-bit signed literal
   9449 static __inline__ vector short __ATTRS_o_ai vec_vspltish(signed char __a) {
   9450   return (vector short)(__a);
   9451 }
   9452 
   9453 /* vec_splat_s32 */
   9454 
   9455 #define __builtin_altivec_vspltisw vec_splat_s32
   9456 
   9457 // FIXME: parameter should be treated as 5-bit signed literal
   9458 static __inline__ vector int __ATTRS_o_ai vec_splat_s32(signed char __a) {
   9459   return (vector int)(__a);
   9460 }
   9461 
   9462 /* vec_vspltisw */
   9463 
   9464 // FIXME: parameter should be treated as 5-bit signed literal
   9465 static __inline__ vector int __ATTRS_o_ai vec_vspltisw(signed char __a) {
   9466   return (vector int)(__a);
   9467 }
   9468 
   9469 /* vec_splat_u8 */
   9470 
   9471 // FIXME: parameter should be treated as 5-bit signed literal
   9472 static __inline__ vector unsigned char __ATTRS_o_ai
   9473 vec_splat_u8(unsigned char __a) {
   9474   return (vector unsigned char)(__a);
   9475 }
   9476 
   9477 /* vec_splat_u16 */
   9478 
   9479 // FIXME: parameter should be treated as 5-bit signed literal
   9480 static __inline__ vector unsigned short __ATTRS_o_ai
   9481 vec_splat_u16(signed char __a) {
   9482   return (vector unsigned short)(__a);
   9483 }
   9484 
   9485 /* vec_splat_u32 */
   9486 
   9487 // FIXME: parameter should be treated as 5-bit signed literal
   9488 static __inline__ vector unsigned int __ATTRS_o_ai
   9489 vec_splat_u32(signed char __a) {
   9490   return (vector unsigned int)(__a);
   9491 }
   9492 
   9493 /* vec_sr */
   9494 
   9495 static __inline__ vector signed char __ATTRS_o_ai
   9496 vec_sr(vector signed char __a, vector unsigned char __b) {
   9497   vector unsigned char __res = (vector unsigned char)__a >> __b;
   9498   return (vector signed char)__res;
   9499 }
   9500 
   9501 static __inline__ vector unsigned char __ATTRS_o_ai
   9502 vec_sr(vector unsigned char __a, vector unsigned char __b) {
   9503   return __a >> __b;
   9504 }
   9505 
   9506 static __inline__ vector signed short __ATTRS_o_ai
   9507 vec_sr(vector signed short __a, vector unsigned short __b) {
   9508   vector unsigned short __res = (vector unsigned short)__a >> __b;
   9509   return (vector signed short)__res;
   9510 }
   9511 
   9512 static __inline__ vector unsigned short __ATTRS_o_ai
   9513 vec_sr(vector unsigned short __a, vector unsigned short __b) {
   9514   return __a >> __b;
   9515 }
   9516 
   9517 static __inline__ vector signed int __ATTRS_o_ai
   9518 vec_sr(vector signed int __a, vector unsigned int __b) {
   9519   vector unsigned int __res = (vector unsigned int)__a >> __b;
   9520   return (vector signed int)__res;
   9521 }
   9522 
   9523 static __inline__ vector unsigned int __ATTRS_o_ai
   9524 vec_sr(vector unsigned int __a, vector unsigned int __b) {
   9525   return __a >> __b;
   9526 }
   9527 
   9528 #ifdef __POWER8_VECTOR__
   9529 static __inline__ vector signed long long __ATTRS_o_ai
   9530 vec_sr(vector signed long long __a, vector unsigned long long __b) {
   9531   vector unsigned long long __res = (vector unsigned long long)__a >> __b;
   9532   return (vector signed long long)__res;
   9533 }
   9534 
   9535 static __inline__ vector unsigned long long __ATTRS_o_ai
   9536 vec_sr(vector unsigned long long __a, vector unsigned long long __b) {
   9537   return __a >> __b;
   9538 }
   9539 #endif
   9540 
   9541 /* vec_vsrb */
   9542 
   9543 #define __builtin_altivec_vsrb vec_vsrb
   9544 
   9545 static __inline__ vector signed char __ATTRS_o_ai
   9546 vec_vsrb(vector signed char __a, vector unsigned char __b) {
   9547   return __a >> (vector signed char)__b;
   9548 }
   9549 
   9550 static __inline__ vector unsigned char __ATTRS_o_ai
   9551 vec_vsrb(vector unsigned char __a, vector unsigned char __b) {
   9552   return __a >> __b;
   9553 }
   9554 
   9555 /* vec_vsrh */
   9556 
   9557 #define __builtin_altivec_vsrh vec_vsrh
   9558 
   9559 static __inline__ vector short __ATTRS_o_ai
   9560 vec_vsrh(vector short __a, vector unsigned short __b) {
   9561   return __a >> (vector short)__b;
   9562 }
   9563 
   9564 static __inline__ vector unsigned short __ATTRS_o_ai
   9565 vec_vsrh(vector unsigned short __a, vector unsigned short __b) {
   9566   return __a >> __b;
   9567 }
   9568 
   9569 /* vec_vsrw */
   9570 
   9571 #define __builtin_altivec_vsrw vec_vsrw
   9572 
   9573 static __inline__ vector int __ATTRS_o_ai vec_vsrw(vector int __a,
   9574                                                    vector unsigned int __b) {
   9575   return __a >> (vector int)__b;
   9576 }
   9577 
   9578 static __inline__ vector unsigned int __ATTRS_o_ai
   9579 vec_vsrw(vector unsigned int __a, vector unsigned int __b) {
   9580   return __a >> __b;
   9581 }
   9582 
   9583 /* vec_sra */
   9584 
   9585 static __inline__ vector signed char __ATTRS_o_ai
   9586 vec_sra(vector signed char __a, vector unsigned char __b) {
   9587   return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
   9588 }
   9589 
   9590 static __inline__ vector unsigned char __ATTRS_o_ai
   9591 vec_sra(vector unsigned char __a, vector unsigned char __b) {
   9592   return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
   9593 }
   9594 
   9595 static __inline__ vector short __ATTRS_o_ai vec_sra(vector short __a,
   9596                                                     vector unsigned short __b) {
   9597   return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
   9598 }
   9599 
   9600 static __inline__ vector unsigned short __ATTRS_o_ai
   9601 vec_sra(vector unsigned short __a, vector unsigned short __b) {
   9602   return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
   9603 }
   9604 
   9605 static __inline__ vector int __ATTRS_o_ai vec_sra(vector int __a,
   9606                                                   vector unsigned int __b) {
   9607   return __builtin_altivec_vsraw(__a, __b);
   9608 }
   9609 
   9610 static __inline__ vector unsigned int __ATTRS_o_ai
   9611 vec_sra(vector unsigned int __a, vector unsigned int __b) {
   9612   return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
   9613 }
   9614 
   9615 #ifdef __POWER8_VECTOR__
   9616 static __inline__ vector signed long long __ATTRS_o_ai
   9617 vec_sra(vector signed long long __a, vector unsigned long long __b) {
   9618   return __a >> __b;
   9619 }
   9620 
   9621 static __inline__ vector unsigned long long __ATTRS_o_ai
   9622 vec_sra(vector unsigned long long __a, vector unsigned long long __b) {
   9623   return (vector unsigned long long)((vector signed long long)__a >> __b);
   9624 }
   9625 #endif
   9626 
   9627 /* vec_vsrab */
   9628 
   9629 static __inline__ vector signed char __ATTRS_o_ai
   9630 vec_vsrab(vector signed char __a, vector unsigned char __b) {
   9631   return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
   9632 }
   9633 
   9634 static __inline__ vector unsigned char __ATTRS_o_ai
   9635 vec_vsrab(vector unsigned char __a, vector unsigned char __b) {
   9636   return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
   9637 }
   9638 
   9639 /* vec_vsrah */
   9640 
   9641 static __inline__ vector short __ATTRS_o_ai
   9642 vec_vsrah(vector short __a, vector unsigned short __b) {
   9643   return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
   9644 }
   9645 
   9646 static __inline__ vector unsigned short __ATTRS_o_ai
   9647 vec_vsrah(vector unsigned short __a, vector unsigned short __b) {
   9648   return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
   9649 }
   9650 
   9651 /* vec_vsraw */
   9652 
   9653 static __inline__ vector int __ATTRS_o_ai vec_vsraw(vector int __a,
   9654                                                     vector unsigned int __b) {
   9655   return __builtin_altivec_vsraw(__a, __b);
   9656 }
   9657 
   9658 static __inline__ vector unsigned int __ATTRS_o_ai
   9659 vec_vsraw(vector unsigned int __a, vector unsigned int __b) {
   9660   return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
   9661 }
   9662 
   9663 /* vec_srl */
   9664 
   9665 static __inline__ vector signed char __ATTRS_o_ai
   9666 vec_srl(vector signed char __a, vector unsigned char __b) {
   9667   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
   9668                                                    (vector int)__b);
   9669 }
   9670 
   9671 static __inline__ vector signed char __ATTRS_o_ai
   9672 vec_srl(vector signed char __a, vector unsigned short __b) {
   9673   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
   9674                                                    (vector int)__b);
   9675 }
   9676 
   9677 static __inline__ vector signed char __ATTRS_o_ai
   9678 vec_srl(vector signed char __a, vector unsigned int __b) {
   9679   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
   9680                                                    (vector int)__b);
   9681 }
   9682 
   9683 static __inline__ vector unsigned char __ATTRS_o_ai
   9684 vec_srl(vector unsigned char __a, vector unsigned char __b) {
   9685   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
   9686                                                      (vector int)__b);
   9687 }
   9688 
   9689 static __inline__ vector unsigned char __ATTRS_o_ai
   9690 vec_srl(vector unsigned char __a, vector unsigned short __b) {
   9691   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
   9692                                                      (vector int)__b);
   9693 }
   9694 
   9695 static __inline__ vector unsigned char __ATTRS_o_ai
   9696 vec_srl(vector unsigned char __a, vector unsigned int __b) {
   9697   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
   9698                                                      (vector int)__b);
   9699 }
   9700 
   9701 static __inline__ vector bool char __ATTRS_o_ai
   9702 vec_srl(vector bool char __a, vector unsigned char __b) {
   9703   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
   9704                                                  (vector int)__b);
   9705 }
   9706 
   9707 static __inline__ vector bool char __ATTRS_o_ai
   9708 vec_srl(vector bool char __a, vector unsigned short __b) {
   9709   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
   9710                                                  (vector int)__b);
   9711 }
   9712 
   9713 static __inline__ vector bool char __ATTRS_o_ai
   9714 vec_srl(vector bool char __a, vector unsigned int __b) {
   9715   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
   9716                                                  (vector int)__b);
   9717 }
   9718 
   9719 static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
   9720                                                     vector unsigned char __b) {
   9721   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   9722 }
   9723 
   9724 static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
   9725                                                     vector unsigned short __b) {
   9726   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   9727 }
   9728 
   9729 static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
   9730                                                     vector unsigned int __b) {
   9731   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   9732 }
   9733 
   9734 static __inline__ vector unsigned short __ATTRS_o_ai
   9735 vec_srl(vector unsigned short __a, vector unsigned char __b) {
   9736   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
   9737                                                       (vector int)__b);
   9738 }
   9739 
   9740 static __inline__ vector unsigned short __ATTRS_o_ai
   9741 vec_srl(vector unsigned short __a, vector unsigned short __b) {
   9742   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
   9743                                                       (vector int)__b);
   9744 }
   9745 
   9746 static __inline__ vector unsigned short __ATTRS_o_ai
   9747 vec_srl(vector unsigned short __a, vector unsigned int __b) {
   9748   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
   9749                                                       (vector int)__b);
   9750 }
   9751 
   9752 static __inline__ vector bool short __ATTRS_o_ai
   9753 vec_srl(vector bool short __a, vector unsigned char __b) {
   9754   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
   9755                                                   (vector int)__b);
   9756 }
   9757 
   9758 static __inline__ vector bool short __ATTRS_o_ai
   9759 vec_srl(vector bool short __a, vector unsigned short __b) {
   9760   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
   9761                                                   (vector int)__b);
   9762 }
   9763 
   9764 static __inline__ vector bool short __ATTRS_o_ai
   9765 vec_srl(vector bool short __a, vector unsigned int __b) {
   9766   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
   9767                                                   (vector int)__b);
   9768 }
   9769 
   9770 static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
   9771                                                     vector unsigned char __b) {
   9772   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   9773 }
   9774 
   9775 static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
   9776                                                     vector unsigned short __b) {
   9777   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   9778 }
   9779 
   9780 static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
   9781                                                     vector unsigned int __b) {
   9782   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   9783 }
   9784 
   9785 static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
   9786                                                   vector unsigned char __b) {
   9787   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
   9788 }
   9789 
   9790 static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
   9791                                                   vector unsigned short __b) {
   9792   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
   9793 }
   9794 
   9795 static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
   9796                                                   vector unsigned int __b) {
   9797   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
   9798 }
   9799 
   9800 static __inline__ vector unsigned int __ATTRS_o_ai
   9801 vec_srl(vector unsigned int __a, vector unsigned char __b) {
   9802   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
   9803                                                     (vector int)__b);
   9804 }
   9805 
   9806 static __inline__ vector unsigned int __ATTRS_o_ai
   9807 vec_srl(vector unsigned int __a, vector unsigned short __b) {
   9808   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
   9809                                                     (vector int)__b);
   9810 }
   9811 
   9812 static __inline__ vector unsigned int __ATTRS_o_ai
   9813 vec_srl(vector unsigned int __a, vector unsigned int __b) {
   9814   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
   9815                                                     (vector int)__b);
   9816 }
   9817 
   9818 static __inline__ vector bool int __ATTRS_o_ai
   9819 vec_srl(vector bool int __a, vector unsigned char __b) {
   9820   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
   9821                                                 (vector int)__b);
   9822 }
   9823 
   9824 static __inline__ vector bool int __ATTRS_o_ai
   9825 vec_srl(vector bool int __a, vector unsigned short __b) {
   9826   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
   9827                                                 (vector int)__b);
   9828 }
   9829 
   9830 static __inline__ vector bool int __ATTRS_o_ai
   9831 vec_srl(vector bool int __a, vector unsigned int __b) {
   9832   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
   9833                                                 (vector int)__b);
   9834 }
   9835 
   9836 #ifdef __VSX__
   9837 static __inline__ vector signed long long __ATTRS_o_ai
   9838 vec_srl(vector signed long long __a, vector unsigned char __b) {
   9839   return (vector signed long long)__builtin_altivec_vsr((vector int)__a,
   9840                                                         (vector int)__b);
   9841 }
   9842 
   9843 static __inline__ vector unsigned long long __ATTRS_o_ai
   9844 vec_srl(vector unsigned long long __a, vector unsigned char __b) {
   9845   return (vector unsigned long long)__builtin_altivec_vsr((vector int)__a,
   9846                                                           (vector int)__b);
   9847 }
   9848 #endif
   9849 
   9850 /* vec_vsr */
   9851 
   9852 static __inline__ vector signed char __ATTRS_o_ai
   9853 vec_vsr(vector signed char __a, vector unsigned char __b) {
   9854   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
   9855                                                    (vector int)__b);
   9856 }
   9857 
   9858 static __inline__ vector signed char __ATTRS_o_ai
   9859 vec_vsr(vector signed char __a, vector unsigned short __b) {
   9860   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
   9861                                                    (vector int)__b);
   9862 }
   9863 
   9864 static __inline__ vector signed char __ATTRS_o_ai
   9865 vec_vsr(vector signed char __a, vector unsigned int __b) {
   9866   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
   9867                                                    (vector int)__b);
   9868 }
   9869 
   9870 static __inline__ vector unsigned char __ATTRS_o_ai
   9871 vec_vsr(vector unsigned char __a, vector unsigned char __b) {
   9872   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
   9873                                                      (vector int)__b);
   9874 }
   9875 
   9876 static __inline__ vector unsigned char __ATTRS_o_ai
   9877 vec_vsr(vector unsigned char __a, vector unsigned short __b) {
   9878   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
   9879                                                      (vector int)__b);
   9880 }
   9881 
   9882 static __inline__ vector unsigned char __ATTRS_o_ai
   9883 vec_vsr(vector unsigned char __a, vector unsigned int __b) {
   9884   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
   9885                                                      (vector int)__b);
   9886 }
   9887 
   9888 static __inline__ vector bool char __ATTRS_o_ai
   9889 vec_vsr(vector bool char __a, vector unsigned char __b) {
   9890   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
   9891                                                  (vector int)__b);
   9892 }
   9893 
   9894 static __inline__ vector bool char __ATTRS_o_ai
   9895 vec_vsr(vector bool char __a, vector unsigned short __b) {
   9896   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
   9897                                                  (vector int)__b);
   9898 }
   9899 
   9900 static __inline__ vector bool char __ATTRS_o_ai
   9901 vec_vsr(vector bool char __a, vector unsigned int __b) {
   9902   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
   9903                                                  (vector int)__b);
   9904 }
   9905 
   9906 static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
   9907                                                     vector unsigned char __b) {
   9908   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   9909 }
   9910 
   9911 static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
   9912                                                     vector unsigned short __b) {
   9913   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   9914 }
   9915 
   9916 static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
   9917                                                     vector unsigned int __b) {
   9918   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   9919 }
   9920 
   9921 static __inline__ vector unsigned short __ATTRS_o_ai
   9922 vec_vsr(vector unsigned short __a, vector unsigned char __b) {
   9923   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
   9924                                                       (vector int)__b);
   9925 }
   9926 
   9927 static __inline__ vector unsigned short __ATTRS_o_ai
   9928 vec_vsr(vector unsigned short __a, vector unsigned short __b) {
   9929   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
   9930                                                       (vector int)__b);
   9931 }
   9932 
   9933 static __inline__ vector unsigned short __ATTRS_o_ai
   9934 vec_vsr(vector unsigned short __a, vector unsigned int __b) {
   9935   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
   9936                                                       (vector int)__b);
   9937 }
   9938 
   9939 static __inline__ vector bool short __ATTRS_o_ai
   9940 vec_vsr(vector bool short __a, vector unsigned char __b) {
   9941   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
   9942                                                   (vector int)__b);
   9943 }
   9944 
   9945 static __inline__ vector bool short __ATTRS_o_ai
   9946 vec_vsr(vector bool short __a, vector unsigned short __b) {
   9947   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
   9948                                                   (vector int)__b);
   9949 }
   9950 
   9951 static __inline__ vector bool short __ATTRS_o_ai
   9952 vec_vsr(vector bool short __a, vector unsigned int __b) {
   9953   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
   9954                                                   (vector int)__b);
   9955 }
   9956 
   9957 static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
   9958                                                     vector unsigned char __b) {
   9959   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   9960 }
   9961 
   9962 static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
   9963                                                     vector unsigned short __b) {
   9964   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   9965 }
   9966 
   9967 static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
   9968                                                     vector unsigned int __b) {
   9969   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
   9970 }
   9971 
   9972 static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
   9973                                                   vector unsigned char __b) {
   9974   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
   9975 }
   9976 
   9977 static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
   9978                                                   vector unsigned short __b) {
   9979   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
   9980 }
   9981 
   9982 static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
   9983                                                   vector unsigned int __b) {
   9984   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
   9985 }
   9986 
   9987 static __inline__ vector unsigned int __ATTRS_o_ai
   9988 vec_vsr(vector unsigned int __a, vector unsigned char __b) {
   9989   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
   9990                                                     (vector int)__b);
   9991 }
   9992 
   9993 static __inline__ vector unsigned int __ATTRS_o_ai
   9994 vec_vsr(vector unsigned int __a, vector unsigned short __b) {
   9995   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
   9996                                                     (vector int)__b);
   9997 }
   9998 
   9999 static __inline__ vector unsigned int __ATTRS_o_ai
   10000 vec_vsr(vector unsigned int __a, vector unsigned int __b) {
   10001   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
   10002                                                     (vector int)__b);
   10003 }
   10004 
   10005 static __inline__ vector bool int __ATTRS_o_ai
   10006 vec_vsr(vector bool int __a, vector unsigned char __b) {
   10007   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
   10008                                                 (vector int)__b);
   10009 }
   10010 
   10011 static __inline__ vector bool int __ATTRS_o_ai
   10012 vec_vsr(vector bool int __a, vector unsigned short __b) {
   10013   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
   10014                                                 (vector int)__b);
   10015 }
   10016 
   10017 static __inline__ vector bool int __ATTRS_o_ai
   10018 vec_vsr(vector bool int __a, vector unsigned int __b) {
   10019   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
   10020                                                 (vector int)__b);
   10021 }
   10022 
   10023 /* vec_sro */
   10024 
   10025 static __inline__ vector signed char __ATTRS_o_ai
   10026 vec_sro(vector signed char __a, vector signed char __b) {
   10027   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
   10028                                                     (vector int)__b);
   10029 }
   10030 
   10031 static __inline__ vector signed char __ATTRS_o_ai
   10032 vec_sro(vector signed char __a, vector unsigned char __b) {
   10033   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
   10034                                                     (vector int)__b);
   10035 }
   10036 
   10037 static __inline__ vector unsigned char __ATTRS_o_ai
   10038 vec_sro(vector unsigned char __a, vector signed char __b) {
   10039   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
   10040                                                       (vector int)__b);
   10041 }
   10042 
   10043 static __inline__ vector unsigned char __ATTRS_o_ai
   10044 vec_sro(vector unsigned char __a, vector unsigned char __b) {
   10045   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
   10046                                                       (vector int)__b);
   10047 }
   10048 
   10049 static __inline__ vector short __ATTRS_o_ai vec_sro(vector short __a,
   10050                                                     vector signed char __b) {
   10051   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   10052 }
   10053 
   10054 static __inline__ vector short __ATTRS_o_ai vec_sro(vector short __a,
   10055                                                     vector unsigned char __b) {
   10056   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   10057 }
   10058 
   10059 static __inline__ vector unsigned short __ATTRS_o_ai
   10060 vec_sro(vector unsigned short __a, vector signed char __b) {
   10061   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
   10062                                                        (vector int)__b);
   10063 }
   10064 
   10065 static __inline__ vector unsigned short __ATTRS_o_ai
   10066 vec_sro(vector unsigned short __a, vector unsigned char __b) {
   10067   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
   10068                                                        (vector int)__b);
   10069 }
   10070 
   10071 static __inline__ vector pixel __ATTRS_o_ai vec_sro(vector pixel __a,
   10072                                                     vector signed char __b) {
   10073   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   10074 }
   10075 
   10076 static __inline__ vector pixel __ATTRS_o_ai vec_sro(vector pixel __a,
   10077                                                     vector unsigned char __b) {
   10078   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   10079 }
   10080 
   10081 static __inline__ vector int __ATTRS_o_ai vec_sro(vector int __a,
   10082                                                   vector signed char __b) {
   10083   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
   10084 }
   10085 
   10086 static __inline__ vector int __ATTRS_o_ai vec_sro(vector int __a,
   10087                                                   vector unsigned char __b) {
   10088   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
   10089 }
   10090 
   10091 static __inline__ vector unsigned int __ATTRS_o_ai
   10092 vec_sro(vector unsigned int __a, vector signed char __b) {
   10093   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
   10094                                                      (vector int)__b);
   10095 }
   10096 
   10097 static __inline__ vector unsigned int __ATTRS_o_ai
   10098 vec_sro(vector unsigned int __a, vector unsigned char __b) {
   10099   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
   10100                                                      (vector int)__b);
   10101 }
   10102 
   10103 static __inline__ vector float __ATTRS_o_ai vec_sro(vector float __a,
   10104                                                     vector signed char __b) {
   10105   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   10106 }
   10107 
   10108 static __inline__ vector float __ATTRS_o_ai vec_sro(vector float __a,
   10109                                                     vector unsigned char __b) {
   10110   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   10111 }
   10112 
   10113 #ifdef __VSX__
   10114 static __inline__ vector signed long long __ATTRS_o_ai
   10115 vec_sro(vector signed long long __a, vector signed char __b) {
   10116   return (vector signed long long)__builtin_altivec_vsro((vector int)__a,
   10117                                                          (vector int)__b);
   10118 }
   10119 
   10120 static __inline__ vector signed long long __ATTRS_o_ai
   10121 vec_sro(vector signed long long __a, vector unsigned char __b) {
   10122   return (vector signed long long)__builtin_altivec_vsro((vector int)__a,
   10123                                                          (vector int)__b);
   10124 }
   10125 
   10126 static __inline__ vector unsigned long long __ATTRS_o_ai
   10127 vec_sro(vector unsigned long long __a, vector signed char __b) {
   10128   return (vector unsigned long long)__builtin_altivec_vsro((vector int)__a,
   10129                                                            (vector int)__b);
   10130 }
   10131 
   10132 static __inline__ vector unsigned long long __ATTRS_o_ai
   10133 vec_sro(vector unsigned long long __a, vector unsigned char __b) {
   10134   return (vector unsigned long long)__builtin_altivec_vsro((vector int)__a,
   10135                                                            (vector int)__b);
   10136 }
   10137 #endif
   10138 
   10139 /* vec_vsro */
   10140 
   10141 static __inline__ vector signed char __ATTRS_o_ai
   10142 vec_vsro(vector signed char __a, vector signed char __b) {
   10143   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
   10144                                                     (vector int)__b);
   10145 }
   10146 
   10147 static __inline__ vector signed char __ATTRS_o_ai
   10148 vec_vsro(vector signed char __a, vector unsigned char __b) {
   10149   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
   10150                                                     (vector int)__b);
   10151 }
   10152 
   10153 static __inline__ vector unsigned char __ATTRS_o_ai
   10154 vec_vsro(vector unsigned char __a, vector signed char __b) {
   10155   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
   10156                                                       (vector int)__b);
   10157 }
   10158 
   10159 static __inline__ vector unsigned char __ATTRS_o_ai
   10160 vec_vsro(vector unsigned char __a, vector unsigned char __b) {
   10161   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
   10162                                                       (vector int)__b);
   10163 }
   10164 
   10165 static __inline__ vector short __ATTRS_o_ai vec_vsro(vector short __a,
   10166                                                      vector signed char __b) {
   10167   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   10168 }
   10169 
   10170 static __inline__ vector short __ATTRS_o_ai vec_vsro(vector short __a,
   10171                                                      vector unsigned char __b) {
   10172   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   10173 }
   10174 
   10175 static __inline__ vector unsigned short __ATTRS_o_ai
   10176 vec_vsro(vector unsigned short __a, vector signed char __b) {
   10177   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
   10178                                                        (vector int)__b);
   10179 }
   10180 
   10181 static __inline__ vector unsigned short __ATTRS_o_ai
   10182 vec_vsro(vector unsigned short __a, vector unsigned char __b) {
   10183   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
   10184                                                        (vector int)__b);
   10185 }
   10186 
   10187 static __inline__ vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a,
   10188                                                      vector signed char __b) {
   10189   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   10190 }
   10191 
   10192 static __inline__ vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a,
   10193                                                      vector unsigned char __b) {
   10194   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   10195 }
   10196 
   10197 static __inline__ vector int __ATTRS_o_ai vec_vsro(vector int __a,
   10198                                                    vector signed char __b) {
   10199   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
   10200 }
   10201 
   10202 static __inline__ vector int __ATTRS_o_ai vec_vsro(vector int __a,
   10203                                                    vector unsigned char __b) {
   10204   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
   10205 }
   10206 
   10207 static __inline__ vector unsigned int __ATTRS_o_ai
   10208 vec_vsro(vector unsigned int __a, vector signed char __b) {
   10209   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
   10210                                                      (vector int)__b);
   10211 }
   10212 
   10213 static __inline__ vector unsigned int __ATTRS_o_ai
   10214 vec_vsro(vector unsigned int __a, vector unsigned char __b) {
   10215   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
   10216                                                      (vector int)__b);
   10217 }
   10218 
   10219 static __inline__ vector float __ATTRS_o_ai vec_vsro(vector float __a,
   10220                                                      vector signed char __b) {
   10221   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   10222 }
   10223 
   10224 static __inline__ vector float __ATTRS_o_ai vec_vsro(vector float __a,
   10225                                                      vector unsigned char __b) {
   10226   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
   10227 }
   10228 
   10229 /* vec_st */
   10230 
   10231 static __inline__ void __ATTRS_o_ai vec_st(vector signed char __a, int __b,
   10232                                            vector signed char *__c) {
   10233   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10234 }
   10235 
   10236 static __inline__ void __ATTRS_o_ai vec_st(vector signed char __a, int __b,
   10237                                            signed char *__c) {
   10238   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10239 }
   10240 
   10241 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b,
   10242                                            vector unsigned char *__c) {
   10243   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10244 }
   10245 
   10246 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b,
   10247                                            unsigned char *__c) {
   10248   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10249 }
   10250 
   10251 static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
   10252                                            signed char *__c) {
   10253   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10254 }
   10255 
   10256 static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
   10257                                            unsigned char *__c) {
   10258   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10259 }
   10260 
   10261 static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
   10262                                            vector bool char *__c) {
   10263   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10264 }
   10265 
   10266 static __inline__ void __ATTRS_o_ai vec_st(vector short __a, int __b,
   10267                                            vector short *__c) {
   10268   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10269 }
   10270 
   10271 static __inline__ void __ATTRS_o_ai vec_st(vector short __a, int __b,
   10272                                            short *__c) {
   10273   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10274 }
   10275 
   10276 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b,
   10277                                            vector unsigned short *__c) {
   10278   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10279 }
   10280 
   10281 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b,
   10282                                            unsigned short *__c) {
   10283   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10284 }
   10285 
   10286 static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
   10287                                            short *__c) {
   10288   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10289 }
   10290 
   10291 static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
   10292                                            unsigned short *__c) {
   10293   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10294 }
   10295 
   10296 static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
   10297                                            vector bool short *__c) {
   10298   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10299 }
   10300 
   10301 static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
   10302                                            short *__c) {
   10303   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10304 }
   10305 
   10306 static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
   10307                                            unsigned short *__c) {
   10308   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10309 }
   10310 
   10311 static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
   10312                                            vector pixel *__c) {
   10313   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10314 }
   10315 
   10316 static __inline__ void __ATTRS_o_ai vec_st(vector int __a, int __b,
   10317                                            vector int *__c) {
   10318   __builtin_altivec_stvx(__a, __b, __c);
   10319 }
   10320 
   10321 static __inline__ void __ATTRS_o_ai vec_st(vector int __a, int __b, int *__c) {
   10322   __builtin_altivec_stvx(__a, __b, __c);
   10323 }
   10324 
   10325 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b,
   10326                                            vector unsigned int *__c) {
   10327   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10328 }
   10329 
   10330 static __inline__ void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b,
   10331                                            unsigned int *__c) {
   10332   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10333 }
   10334 
   10335 static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
   10336                                            int *__c) {
   10337   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10338 }
   10339 
   10340 static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
   10341                                            unsigned int *__c) {
   10342   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10343 }
   10344 
   10345 static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
   10346                                            vector bool int *__c) {
   10347   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10348 }
   10349 
   10350 static __inline__ void __ATTRS_o_ai vec_st(vector float __a, int __b,
   10351                                            vector float *__c) {
   10352   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10353 }
   10354 
   10355 static __inline__ void __ATTRS_o_ai vec_st(vector float __a, int __b,
   10356                                            float *__c) {
   10357   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10358 }
   10359 
   10360 /* vec_stvx */
   10361 
   10362 static __inline__ void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b,
   10363                                              vector signed char *__c) {
   10364   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10365 }
   10366 
   10367 static __inline__ void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b,
   10368                                              signed char *__c) {
   10369   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10370 }
   10371 
   10372 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b,
   10373                                              vector unsigned char *__c) {
   10374   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10375 }
   10376 
   10377 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b,
   10378                                              unsigned char *__c) {
   10379   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10380 }
   10381 
   10382 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
   10383                                              signed char *__c) {
   10384   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10385 }
   10386 
   10387 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
   10388                                              unsigned char *__c) {
   10389   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10390 }
   10391 
   10392 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
   10393                                              vector bool char *__c) {
   10394   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10395 }
   10396 
   10397 static __inline__ void __ATTRS_o_ai vec_stvx(vector short __a, int __b,
   10398                                              vector short *__c) {
   10399   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10400 }
   10401 
   10402 static __inline__ void __ATTRS_o_ai vec_stvx(vector short __a, int __b,
   10403                                              short *__c) {
   10404   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10405 }
   10406 
   10407 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b,
   10408                                              vector unsigned short *__c) {
   10409   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10410 }
   10411 
   10412 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b,
   10413                                              unsigned short *__c) {
   10414   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10415 }
   10416 
   10417 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
   10418                                              short *__c) {
   10419   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10420 }
   10421 
   10422 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
   10423                                              unsigned short *__c) {
   10424   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10425 }
   10426 
   10427 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
   10428                                              vector bool short *__c) {
   10429   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10430 }
   10431 
   10432 static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
   10433                                              short *__c) {
   10434   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10435 }
   10436 
   10437 static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
   10438                                              unsigned short *__c) {
   10439   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10440 }
   10441 
   10442 static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
   10443                                              vector pixel *__c) {
   10444   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10445 }
   10446 
   10447 static __inline__ void __ATTRS_o_ai vec_stvx(vector int __a, int __b,
   10448                                              vector int *__c) {
   10449   __builtin_altivec_stvx(__a, __b, __c);
   10450 }
   10451 
   10452 static __inline__ void __ATTRS_o_ai vec_stvx(vector int __a, int __b,
   10453                                              int *__c) {
   10454   __builtin_altivec_stvx(__a, __b, __c);
   10455 }
   10456 
   10457 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b,
   10458                                              vector unsigned int *__c) {
   10459   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10460 }
   10461 
   10462 static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b,
   10463                                              unsigned int *__c) {
   10464   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10465 }
   10466 
   10467 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
   10468                                              int *__c) {
   10469   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10470 }
   10471 
   10472 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
   10473                                              unsigned int *__c) {
   10474   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10475 }
   10476 
   10477 static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
   10478                                              vector bool int *__c) {
   10479   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10480 }
   10481 
   10482 static __inline__ void __ATTRS_o_ai vec_stvx(vector float __a, int __b,
   10483                                              vector float *__c) {
   10484   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10485 }
   10486 
   10487 static __inline__ void __ATTRS_o_ai vec_stvx(vector float __a, int __b,
   10488                                              float *__c) {
   10489   __builtin_altivec_stvx((vector int)__a, __b, __c);
   10490 }
   10491 
   10492 /* vec_ste */
   10493 
   10494 static __inline__ void __ATTRS_o_ai vec_ste(vector signed char __a, int __b,
   10495                                             signed char *__c) {
   10496   __builtin_altivec_stvebx((vector char)__a, __b, __c);
   10497 }
   10498 
   10499 static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned char __a, int __b,
   10500                                             unsigned char *__c) {
   10501   __builtin_altivec_stvebx((vector char)__a, __b, __c);
   10502 }
   10503 
   10504 static __inline__ void __ATTRS_o_ai vec_ste(vector bool char __a, int __b,
   10505                                             signed char *__c) {
   10506   __builtin_altivec_stvebx((vector char)__a, __b, __c);
   10507 }
   10508 
   10509 static __inline__ void __ATTRS_o_ai vec_ste(vector bool char __a, int __b,
   10510                                             unsigned char *__c) {
   10511   __builtin_altivec_stvebx((vector char)__a, __b, __c);
   10512 }
   10513 
   10514 static __inline__ void __ATTRS_o_ai vec_ste(vector short __a, int __b,
   10515                                             short *__c) {
   10516   __builtin_altivec_stvehx(__a, __b, __c);
   10517 }
   10518 
   10519 static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned short __a, int __b,
   10520                                             unsigned short *__c) {
   10521   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   10522 }
   10523 
   10524 static __inline__ void __ATTRS_o_ai vec_ste(vector bool short __a, int __b,
   10525                                             short *__c) {
   10526   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   10527 }
   10528 
   10529 static __inline__ void __ATTRS_o_ai vec_ste(vector bool short __a, int __b,
   10530                                             unsigned short *__c) {
   10531   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   10532 }
   10533 
   10534 static __inline__ void __ATTRS_o_ai vec_ste(vector pixel __a, int __b,
   10535                                             short *__c) {
   10536   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   10537 }
   10538 
   10539 static __inline__ void __ATTRS_o_ai vec_ste(vector pixel __a, int __b,
   10540                                             unsigned short *__c) {
   10541   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   10542 }
   10543 
   10544 static __inline__ void __ATTRS_o_ai vec_ste(vector int __a, int __b, int *__c) {
   10545   __builtin_altivec_stvewx(__a, __b, __c);
   10546 }
   10547 
   10548 static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned int __a, int __b,
   10549                                             unsigned int *__c) {
   10550   __builtin_altivec_stvewx((vector int)__a, __b, __c);
   10551 }
   10552 
   10553 static __inline__ void __ATTRS_o_ai vec_ste(vector bool int __a, int __b,
   10554                                             int *__c) {
   10555   __builtin_altivec_stvewx((vector int)__a, __b, __c);
   10556 }
   10557 
   10558 static __inline__ void __ATTRS_o_ai vec_ste(vector bool int __a, int __b,
   10559                                             unsigned int *__c) {
   10560   __builtin_altivec_stvewx((vector int)__a, __b, __c);
   10561 }
   10562 
   10563 static __inline__ void __ATTRS_o_ai vec_ste(vector float __a, int __b,
   10564                                             float *__c) {
   10565   __builtin_altivec_stvewx((vector int)__a, __b, __c);
   10566 }
   10567 
   10568 /* vec_stvebx */
   10569 
   10570 static __inline__ void __ATTRS_o_ai vec_stvebx(vector signed char __a, int __b,
   10571                                                signed char *__c) {
   10572   __builtin_altivec_stvebx((vector char)__a, __b, __c);
   10573 }
   10574 
   10575 static __inline__ void __ATTRS_o_ai vec_stvebx(vector unsigned char __a,
   10576                                                int __b, unsigned char *__c) {
   10577   __builtin_altivec_stvebx((vector char)__a, __b, __c);
   10578 }
   10579 
   10580 static __inline__ void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b,
   10581                                                signed char *__c) {
   10582   __builtin_altivec_stvebx((vector char)__a, __b, __c);
   10583 }
   10584 
   10585 static __inline__ void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b,
   10586                                                unsigned char *__c) {
   10587   __builtin_altivec_stvebx((vector char)__a, __b, __c);
   10588 }
   10589 
   10590 /* vec_stvehx */
   10591 
   10592 static __inline__ void __ATTRS_o_ai vec_stvehx(vector short __a, int __b,
   10593                                                short *__c) {
   10594   __builtin_altivec_stvehx(__a, __b, __c);
   10595 }
   10596 
   10597 static __inline__ void __ATTRS_o_ai vec_stvehx(vector unsigned short __a,
   10598                                                int __b, unsigned short *__c) {
   10599   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   10600 }
   10601 
   10602 static __inline__ void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b,
   10603                                                short *__c) {
   10604   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   10605 }
   10606 
   10607 static __inline__ void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b,
   10608                                                unsigned short *__c) {
   10609   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   10610 }
   10611 
   10612 static __inline__ void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b,
   10613                                                short *__c) {
   10614   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   10615 }
   10616 
   10617 static __inline__ void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b,
   10618                                                unsigned short *__c) {
   10619   __builtin_altivec_stvehx((vector short)__a, __b, __c);
   10620 }
   10621 
   10622 /* vec_stvewx */
   10623 
   10624 static __inline__ void __ATTRS_o_ai vec_stvewx(vector int __a, int __b,
   10625                                                int *__c) {
   10626   __builtin_altivec_stvewx(__a, __b, __c);
   10627 }
   10628 
   10629 static __inline__ void __ATTRS_o_ai vec_stvewx(vector unsigned int __a, int __b,
   10630                                                unsigned int *__c) {
   10631   __builtin_altivec_stvewx((vector int)__a, __b, __c);
   10632 }
   10633 
   10634 static __inline__ void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b,
   10635                                                int *__c) {
   10636   __builtin_altivec_stvewx((vector int)__a, __b, __c);
   10637 }
   10638 
   10639 static __inline__ void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b,
   10640                                                unsigned int *__c) {
   10641   __builtin_altivec_stvewx((vector int)__a, __b, __c);
   10642 }
   10643 
   10644 static __inline__ void __ATTRS_o_ai vec_stvewx(vector float __a, int __b,
   10645                                                float *__c) {
   10646   __builtin_altivec_stvewx((vector int)__a, __b, __c);
   10647 }
   10648 
   10649 /* vec_stl */
   10650 
   10651 static __inline__ void __ATTRS_o_ai vec_stl(vector signed char __a, int __b,
   10652                                             vector signed char *__c) {
   10653   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10654 }
   10655 
   10656 static __inline__ void __ATTRS_o_ai vec_stl(vector signed char __a, int __b,
   10657                                             signed char *__c) {
   10658   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10659 }
   10660 
   10661 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b,
   10662                                             vector unsigned char *__c) {
   10663   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10664 }
   10665 
   10666 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b,
   10667                                             unsigned char *__c) {
   10668   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10669 }
   10670 
   10671 static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
   10672                                             signed char *__c) {
   10673   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10674 }
   10675 
   10676 static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
   10677                                             unsigned char *__c) {
   10678   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10679 }
   10680 
   10681 static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
   10682                                             vector bool char *__c) {
   10683   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10684 }
   10685 
   10686 static __inline__ void __ATTRS_o_ai vec_stl(vector short __a, int __b,
   10687                                             vector short *__c) {
   10688   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10689 }
   10690 
   10691 static __inline__ void __ATTRS_o_ai vec_stl(vector short __a, int __b,
   10692                                             short *__c) {
   10693   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10694 }
   10695 
   10696 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b,
   10697                                             vector unsigned short *__c) {
   10698   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10699 }
   10700 
   10701 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b,
   10702                                             unsigned short *__c) {
   10703   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10704 }
   10705 
   10706 static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
   10707                                             short *__c) {
   10708   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10709 }
   10710 
   10711 static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
   10712                                             unsigned short *__c) {
   10713   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10714 }
   10715 
   10716 static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
   10717                                             vector bool short *__c) {
   10718   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10719 }
   10720 
   10721 static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
   10722                                             short *__c) {
   10723   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10724 }
   10725 
   10726 static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
   10727                                             unsigned short *__c) {
   10728   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10729 }
   10730 
   10731 static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
   10732                                             vector pixel *__c) {
   10733   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10734 }
   10735 
   10736 static __inline__ void __ATTRS_o_ai vec_stl(vector int __a, int __b,
   10737                                             vector int *__c) {
   10738   __builtin_altivec_stvxl(__a, __b, __c);
   10739 }
   10740 
   10741 static __inline__ void __ATTRS_o_ai vec_stl(vector int __a, int __b, int *__c) {
   10742   __builtin_altivec_stvxl(__a, __b, __c);
   10743 }
   10744 
   10745 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b,
   10746                                             vector unsigned int *__c) {
   10747   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10748 }
   10749 
   10750 static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b,
   10751                                             unsigned int *__c) {
   10752   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10753 }
   10754 
   10755 static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
   10756                                             int *__c) {
   10757   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10758 }
   10759 
   10760 static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
   10761                                             unsigned int *__c) {
   10762   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10763 }
   10764 
   10765 static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
   10766                                             vector bool int *__c) {
   10767   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10768 }
   10769 
   10770 static __inline__ void __ATTRS_o_ai vec_stl(vector float __a, int __b,
   10771                                             vector float *__c) {
   10772   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10773 }
   10774 
   10775 static __inline__ void __ATTRS_o_ai vec_stl(vector float __a, int __b,
   10776                                             float *__c) {
   10777   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10778 }
   10779 
   10780 /* vec_stvxl */
   10781 
   10782 static __inline__ void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b,
   10783                                               vector signed char *__c) {
   10784   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10785 }
   10786 
   10787 static __inline__ void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b,
   10788                                               signed char *__c) {
   10789   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10790 }
   10791 
   10792 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b,
   10793                                               vector unsigned char *__c) {
   10794   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10795 }
   10796 
   10797 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b,
   10798                                               unsigned char *__c) {
   10799   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10800 }
   10801 
   10802 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
   10803                                               signed char *__c) {
   10804   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10805 }
   10806 
   10807 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
   10808                                               unsigned char *__c) {
   10809   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10810 }
   10811 
   10812 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
   10813                                               vector bool char *__c) {
   10814   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10815 }
   10816 
   10817 static __inline__ void __ATTRS_o_ai vec_stvxl(vector short __a, int __b,
   10818                                               vector short *__c) {
   10819   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10820 }
   10821 
   10822 static __inline__ void __ATTRS_o_ai vec_stvxl(vector short __a, int __b,
   10823                                               short *__c) {
   10824   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10825 }
   10826 
   10827 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned short __a,
   10828                                               int __b,
   10829                                               vector unsigned short *__c) {
   10830   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10831 }
   10832 
   10833 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned short __a,
   10834                                               int __b, unsigned short *__c) {
   10835   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10836 }
   10837 
   10838 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
   10839                                               short *__c) {
   10840   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10841 }
   10842 
   10843 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
   10844                                               unsigned short *__c) {
   10845   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10846 }
   10847 
   10848 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
   10849                                               vector bool short *__c) {
   10850   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10851 }
   10852 
   10853 static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
   10854                                               short *__c) {
   10855   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10856 }
   10857 
   10858 static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
   10859                                               unsigned short *__c) {
   10860   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10861 }
   10862 
   10863 static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
   10864                                               vector pixel *__c) {
   10865   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10866 }
   10867 
   10868 static __inline__ void __ATTRS_o_ai vec_stvxl(vector int __a, int __b,
   10869                                               vector int *__c) {
   10870   __builtin_altivec_stvxl(__a, __b, __c);
   10871 }
   10872 
   10873 static __inline__ void __ATTRS_o_ai vec_stvxl(vector int __a, int __b,
   10874                                               int *__c) {
   10875   __builtin_altivec_stvxl(__a, __b, __c);
   10876 }
   10877 
   10878 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b,
   10879                                               vector unsigned int *__c) {
   10880   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10881 }
   10882 
   10883 static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b,
   10884                                               unsigned int *__c) {
   10885   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10886 }
   10887 
   10888 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
   10889                                               int *__c) {
   10890   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10891 }
   10892 
   10893 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
   10894                                               unsigned int *__c) {
   10895   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10896 }
   10897 
   10898 static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
   10899                                               vector bool int *__c) {
   10900   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10901 }
   10902 
   10903 static __inline__ void __ATTRS_o_ai vec_stvxl(vector float __a, int __b,
   10904                                               vector float *__c) {
   10905   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10906 }
   10907 
   10908 static __inline__ void __ATTRS_o_ai vec_stvxl(vector float __a, int __b,
   10909                                               float *__c) {
   10910   __builtin_altivec_stvxl((vector int)__a, __b, __c);
   10911 }
   10912 
   10913 /* vec_sub */
   10914 
   10915 static __inline__ vector signed char __ATTRS_o_ai
   10916 vec_sub(vector signed char __a, vector signed char __b) {
   10917   return __a - __b;
   10918 }
   10919 
   10920 static __inline__ vector signed char __ATTRS_o_ai
   10921 vec_sub(vector bool char __a, vector signed char __b) {
   10922   return (vector signed char)__a - __b;
   10923 }
   10924 
   10925 static __inline__ vector signed char __ATTRS_o_ai
   10926 vec_sub(vector signed char __a, vector bool char __b) {
   10927   return __a - (vector signed char)__b;
   10928 }
   10929 
   10930 static __inline__ vector unsigned char __ATTRS_o_ai
   10931 vec_sub(vector unsigned char __a, vector unsigned char __b) {
   10932   return __a - __b;
   10933 }
   10934 
   10935 static __inline__ vector unsigned char __ATTRS_o_ai
   10936 vec_sub(vector bool char __a, vector unsigned char __b) {
   10937   return (vector unsigned char)__a - __b;
   10938 }
   10939 
   10940 static __inline__ vector unsigned char __ATTRS_o_ai
   10941 vec_sub(vector unsigned char __a, vector bool char __b) {
   10942   return __a - (vector unsigned char)__b;
   10943 }
   10944 
   10945 static __inline__ vector short __ATTRS_o_ai vec_sub(vector short __a,
   10946                                                     vector short __b) {
   10947   return __a - __b;
   10948 }
   10949 
   10950 static __inline__ vector short __ATTRS_o_ai vec_sub(vector bool short __a,
   10951                                                     vector short __b) {
   10952   return (vector short)__a - __b;
   10953 }
   10954 
   10955 static __inline__ vector short __ATTRS_o_ai vec_sub(vector short __a,
   10956                                                     vector bool short __b) {
   10957   return __a - (vector short)__b;
   10958 }
   10959 
   10960 static __inline__ vector unsigned short __ATTRS_o_ai
   10961 vec_sub(vector unsigned short __a, vector unsigned short __b) {
   10962   return __a - __b;
   10963 }
   10964 
   10965 static __inline__ vector unsigned short __ATTRS_o_ai
   10966 vec_sub(vector bool short __a, vector unsigned short __b) {
   10967   return (vector unsigned short)__a - __b;
   10968 }
   10969 
   10970 static __inline__ vector unsigned short __ATTRS_o_ai
   10971 vec_sub(vector unsigned short __a, vector bool short __b) {
   10972   return __a - (vector unsigned short)__b;
   10973 }
   10974 
   10975 static __inline__ vector int __ATTRS_o_ai vec_sub(vector int __a,
   10976                                                   vector int __b) {
   10977   return __a - __b;
   10978 }
   10979 
   10980 static __inline__ vector int __ATTRS_o_ai vec_sub(vector bool int __a,
   10981                                                   vector int __b) {
   10982   return (vector int)__a - __b;
   10983 }
   10984 
   10985 static __inline__ vector int __ATTRS_o_ai vec_sub(vector int __a,
   10986                                                   vector bool int __b) {
   10987   return __a - (vector int)__b;
   10988 }
   10989 
   10990 static __inline__ vector unsigned int __ATTRS_o_ai
   10991 vec_sub(vector unsigned int __a, vector unsigned int __b) {
   10992   return __a - __b;
   10993 }
   10994 
   10995 static __inline__ vector unsigned int __ATTRS_o_ai
   10996 vec_sub(vector bool int __a, vector unsigned int __b) {
   10997   return (vector unsigned int)__a - __b;
   10998 }
   10999 
   11000 static __inline__ vector unsigned int __ATTRS_o_ai
   11001 vec_sub(vector unsigned int __a, vector bool int __b) {
   11002   return __a - (vector unsigned int)__b;
   11003 }
   11004 
   11005 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   11006 static __inline__ vector signed __int128 __ATTRS_o_ai
   11007 vec_sub(vector signed __int128 __a, vector signed __int128 __b) {
   11008   return __a - __b;
   11009 }
   11010 
   11011 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   11012 vec_sub(vector unsigned __int128 __a, vector unsigned __int128 __b) {
   11013   return __a - __b;
   11014 }
   11015 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   11016 
   11017 #ifdef __VSX__
   11018 static __inline__ vector signed long long __ATTRS_o_ai
   11019 vec_sub(vector signed long long __a, vector signed long long __b) {
   11020   return __a - __b;
   11021 }
   11022 
   11023 static __inline__ vector unsigned long long __ATTRS_o_ai
   11024 vec_sub(vector unsigned long long __a, vector unsigned long long __b) {
   11025   return __a - __b;
   11026 }
   11027 
   11028 static __inline__ vector double __ATTRS_o_ai vec_sub(vector double __a,
   11029                                                      vector double __b) {
   11030   return __a - __b;
   11031 }
   11032 #endif
   11033 
   11034 static __inline__ vector float __ATTRS_o_ai vec_sub(vector float __a,
   11035                                                     vector float __b) {
   11036   return __a - __b;
   11037 }
   11038 
   11039 /* vec_vsububm */
   11040 
   11041 #define __builtin_altivec_vsububm vec_vsububm
   11042 
   11043 static __inline__ vector signed char __ATTRS_o_ai
   11044 vec_vsububm(vector signed char __a, vector signed char __b) {
   11045   return __a - __b;
   11046 }
   11047 
   11048 static __inline__ vector signed char __ATTRS_o_ai
   11049 vec_vsububm(vector bool char __a, vector signed char __b) {
   11050   return (vector signed char)__a - __b;
   11051 }
   11052 
   11053 static __inline__ vector signed char __ATTRS_o_ai
   11054 vec_vsububm(vector signed char __a, vector bool char __b) {
   11055   return __a - (vector signed char)__b;
   11056 }
   11057 
   11058 static __inline__ vector unsigned char __ATTRS_o_ai
   11059 vec_vsububm(vector unsigned char __a, vector unsigned char __b) {
   11060   return __a - __b;
   11061 }
   11062 
   11063 static __inline__ vector unsigned char __ATTRS_o_ai
   11064 vec_vsububm(vector bool char __a, vector unsigned char __b) {
   11065   return (vector unsigned char)__a - __b;
   11066 }
   11067 
   11068 static __inline__ vector unsigned char __ATTRS_o_ai
   11069 vec_vsububm(vector unsigned char __a, vector bool char __b) {
   11070   return __a - (vector unsigned char)__b;
   11071 }
   11072 
   11073 /* vec_vsubuhm */
   11074 
   11075 #define __builtin_altivec_vsubuhm vec_vsubuhm
   11076 
   11077 static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector short __a,
   11078                                                         vector short __b) {
   11079   return __a - __b;
   11080 }
   11081 
   11082 static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector bool short __a,
   11083                                                         vector short __b) {
   11084   return (vector short)__a - __b;
   11085 }
   11086 
   11087 static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector short __a,
   11088                                                         vector bool short __b) {
   11089   return __a - (vector short)__b;
   11090 }
   11091 
   11092 static __inline__ vector unsigned short __ATTRS_o_ai
   11093 vec_vsubuhm(vector unsigned short __a, vector unsigned short __b) {
   11094   return __a - __b;
   11095 }
   11096 
   11097 static __inline__ vector unsigned short __ATTRS_o_ai
   11098 vec_vsubuhm(vector bool short __a, vector unsigned short __b) {
   11099   return (vector unsigned short)__a - __b;
   11100 }
   11101 
   11102 static __inline__ vector unsigned short __ATTRS_o_ai
   11103 vec_vsubuhm(vector unsigned short __a, vector bool short __b) {
   11104   return __a - (vector unsigned short)__b;
   11105 }
   11106 
   11107 /* vec_vsubuwm */
   11108 
   11109 #define __builtin_altivec_vsubuwm vec_vsubuwm
   11110 
   11111 static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector int __a,
   11112                                                       vector int __b) {
   11113   return __a - __b;
   11114 }
   11115 
   11116 static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector bool int __a,
   11117                                                       vector int __b) {
   11118   return (vector int)__a - __b;
   11119 }
   11120 
   11121 static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector int __a,
   11122                                                       vector bool int __b) {
   11123   return __a - (vector int)__b;
   11124 }
   11125 
   11126 static __inline__ vector unsigned int __ATTRS_o_ai
   11127 vec_vsubuwm(vector unsigned int __a, vector unsigned int __b) {
   11128   return __a - __b;
   11129 }
   11130 
   11131 static __inline__ vector unsigned int __ATTRS_o_ai
   11132 vec_vsubuwm(vector bool int __a, vector unsigned int __b) {
   11133   return (vector unsigned int)__a - __b;
   11134 }
   11135 
   11136 static __inline__ vector unsigned int __ATTRS_o_ai
   11137 vec_vsubuwm(vector unsigned int __a, vector bool int __b) {
   11138   return __a - (vector unsigned int)__b;
   11139 }
   11140 
   11141 /* vec_vsubfp */
   11142 
   11143 #define __builtin_altivec_vsubfp vec_vsubfp
   11144 
   11145 static __inline__ vector float __attribute__((__always_inline__))
   11146 vec_vsubfp(vector float __a, vector float __b) {
   11147   return __a - __b;
   11148 }
   11149 
   11150 /* vec_subc */
   11151 
   11152 static __inline__ vector signed int __ATTRS_o_ai
   11153 vec_subc(vector signed int __a, vector signed int __b) {
   11154   return (vector signed int)__builtin_altivec_vsubcuw((vector unsigned int)__a,
   11155                                                       (vector unsigned int) __b);
   11156 }
   11157 
   11158 static __inline__ vector unsigned int __ATTRS_o_ai
   11159 vec_subc(vector unsigned int __a, vector unsigned int __b) {
   11160   return __builtin_altivec_vsubcuw(__a, __b);
   11161 }
   11162 
   11163 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   11164 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   11165 vec_subc(vector unsigned __int128 __a, vector unsigned __int128 __b) {
   11166   return __builtin_altivec_vsubcuq(__a, __b);
   11167 }
   11168 
   11169 static __inline__ vector signed __int128 __ATTRS_o_ai
   11170 vec_subc(vector signed __int128 __a, vector signed __int128 __b) {
   11171   return __builtin_altivec_vsubcuq(__a, __b);
   11172 }
   11173 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   11174 
   11175 /* vec_vsubcuw */
   11176 
   11177 static __inline__ vector unsigned int __attribute__((__always_inline__))
   11178 vec_vsubcuw(vector unsigned int __a, vector unsigned int __b) {
   11179   return __builtin_altivec_vsubcuw(__a, __b);
   11180 }
   11181 
   11182 /* vec_subs */
   11183 
   11184 static __inline__ vector signed char __ATTRS_o_ai
   11185 vec_subs(vector signed char __a, vector signed char __b) {
   11186   return __builtin_altivec_vsubsbs(__a, __b);
   11187 }
   11188 
   11189 static __inline__ vector signed char __ATTRS_o_ai
   11190 vec_subs(vector bool char __a, vector signed char __b) {
   11191   return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
   11192 }
   11193 
   11194 static __inline__ vector signed char __ATTRS_o_ai
   11195 vec_subs(vector signed char __a, vector bool char __b) {
   11196   return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
   11197 }
   11198 
   11199 static __inline__ vector unsigned char __ATTRS_o_ai
   11200 vec_subs(vector unsigned char __a, vector unsigned char __b) {
   11201   return __builtin_altivec_vsububs(__a, __b);
   11202 }
   11203 
   11204 static __inline__ vector unsigned char __ATTRS_o_ai
   11205 vec_subs(vector bool char __a, vector unsigned char __b) {
   11206   return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
   11207 }
   11208 
   11209 static __inline__ vector unsigned char __ATTRS_o_ai
   11210 vec_subs(vector unsigned char __a, vector bool char __b) {
   11211   return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
   11212 }
   11213 
   11214 static __inline__ vector short __ATTRS_o_ai vec_subs(vector short __a,
   11215                                                      vector short __b) {
   11216   return __builtin_altivec_vsubshs(__a, __b);
   11217 }
   11218 
   11219 static __inline__ vector short __ATTRS_o_ai vec_subs(vector bool short __a,
   11220                                                      vector short __b) {
   11221   return __builtin_altivec_vsubshs((vector short)__a, __b);
   11222 }
   11223 
   11224 static __inline__ vector short __ATTRS_o_ai vec_subs(vector short __a,
   11225                                                      vector bool short __b) {
   11226   return __builtin_altivec_vsubshs(__a, (vector short)__b);
   11227 }
   11228 
   11229 static __inline__ vector unsigned short __ATTRS_o_ai
   11230 vec_subs(vector unsigned short __a, vector unsigned short __b) {
   11231   return __builtin_altivec_vsubuhs(__a, __b);
   11232 }
   11233 
   11234 static __inline__ vector unsigned short __ATTRS_o_ai
   11235 vec_subs(vector bool short __a, vector unsigned short __b) {
   11236   return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
   11237 }
   11238 
   11239 static __inline__ vector unsigned short __ATTRS_o_ai
   11240 vec_subs(vector unsigned short __a, vector bool short __b) {
   11241   return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
   11242 }
   11243 
   11244 static __inline__ vector int __ATTRS_o_ai vec_subs(vector int __a,
   11245                                                    vector int __b) {
   11246   return __builtin_altivec_vsubsws(__a, __b);
   11247 }
   11248 
   11249 static __inline__ vector int __ATTRS_o_ai vec_subs(vector bool int __a,
   11250                                                    vector int __b) {
   11251   return __builtin_altivec_vsubsws((vector int)__a, __b);
   11252 }
   11253 
   11254 static __inline__ vector int __ATTRS_o_ai vec_subs(vector int __a,
   11255                                                    vector bool int __b) {
   11256   return __builtin_altivec_vsubsws(__a, (vector int)__b);
   11257 }
   11258 
   11259 static __inline__ vector unsigned int __ATTRS_o_ai
   11260 vec_subs(vector unsigned int __a, vector unsigned int __b) {
   11261   return __builtin_altivec_vsubuws(__a, __b);
   11262 }
   11263 
   11264 static __inline__ vector unsigned int __ATTRS_o_ai
   11265 vec_subs(vector bool int __a, vector unsigned int __b) {
   11266   return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
   11267 }
   11268 
   11269 static __inline__ vector unsigned int __ATTRS_o_ai
   11270 vec_subs(vector unsigned int __a, vector bool int __b) {
   11271   return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
   11272 }
   11273 
   11274 /* vec_vsubsbs */
   11275 
   11276 static __inline__ vector signed char __ATTRS_o_ai
   11277 vec_vsubsbs(vector signed char __a, vector signed char __b) {
   11278   return __builtin_altivec_vsubsbs(__a, __b);
   11279 }
   11280 
   11281 static __inline__ vector signed char __ATTRS_o_ai
   11282 vec_vsubsbs(vector bool char __a, vector signed char __b) {
   11283   return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
   11284 }
   11285 
   11286 static __inline__ vector signed char __ATTRS_o_ai
   11287 vec_vsubsbs(vector signed char __a, vector bool char __b) {
   11288   return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
   11289 }
   11290 
   11291 /* vec_vsububs */
   11292 
   11293 static __inline__ vector unsigned char __ATTRS_o_ai
   11294 vec_vsububs(vector unsigned char __a, vector unsigned char __b) {
   11295   return __builtin_altivec_vsububs(__a, __b);
   11296 }
   11297 
   11298 static __inline__ vector unsigned char __ATTRS_o_ai
   11299 vec_vsububs(vector bool char __a, vector unsigned char __b) {
   11300   return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
   11301 }
   11302 
   11303 static __inline__ vector unsigned char __ATTRS_o_ai
   11304 vec_vsububs(vector unsigned char __a, vector bool char __b) {
   11305   return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
   11306 }
   11307 
   11308 /* vec_vsubshs */
   11309 
   11310 static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector short __a,
   11311                                                         vector short __b) {
   11312   return __builtin_altivec_vsubshs(__a, __b);
   11313 }
   11314 
   11315 static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector bool short __a,
   11316                                                         vector short __b) {
   11317   return __builtin_altivec_vsubshs((vector short)__a, __b);
   11318 }
   11319 
   11320 static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector short __a,
   11321                                                         vector bool short __b) {
   11322   return __builtin_altivec_vsubshs(__a, (vector short)__b);
   11323 }
   11324 
   11325 /* vec_vsubuhs */
   11326 
   11327 static __inline__ vector unsigned short __ATTRS_o_ai
   11328 vec_vsubuhs(vector unsigned short __a, vector unsigned short __b) {
   11329   return __builtin_altivec_vsubuhs(__a, __b);
   11330 }
   11331 
   11332 static __inline__ vector unsigned short __ATTRS_o_ai
   11333 vec_vsubuhs(vector bool short __a, vector unsigned short __b) {
   11334   return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
   11335 }
   11336 
   11337 static __inline__ vector unsigned short __ATTRS_o_ai
   11338 vec_vsubuhs(vector unsigned short __a, vector bool short __b) {
   11339   return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
   11340 }
   11341 
   11342 /* vec_vsubsws */
   11343 
   11344 static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector int __a,
   11345                                                       vector int __b) {
   11346   return __builtin_altivec_vsubsws(__a, __b);
   11347 }
   11348 
   11349 static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector bool int __a,
   11350                                                       vector int __b) {
   11351   return __builtin_altivec_vsubsws((vector int)__a, __b);
   11352 }
   11353 
   11354 static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector int __a,
   11355                                                       vector bool int __b) {
   11356   return __builtin_altivec_vsubsws(__a, (vector int)__b);
   11357 }
   11358 
   11359 /* vec_vsubuws */
   11360 
   11361 static __inline__ vector unsigned int __ATTRS_o_ai
   11362 vec_vsubuws(vector unsigned int __a, vector unsigned int __b) {
   11363   return __builtin_altivec_vsubuws(__a, __b);
   11364 }
   11365 
   11366 static __inline__ vector unsigned int __ATTRS_o_ai
   11367 vec_vsubuws(vector bool int __a, vector unsigned int __b) {
   11368   return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
   11369 }
   11370 
   11371 static __inline__ vector unsigned int __ATTRS_o_ai
   11372 vec_vsubuws(vector unsigned int __a, vector bool int __b) {
   11373   return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
   11374 }
   11375 
   11376 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   11377 /* vec_vsubuqm */
   11378 
   11379 static __inline__ vector signed __int128 __ATTRS_o_ai
   11380 vec_vsubuqm(vector signed __int128 __a, vector signed __int128 __b) {
   11381   return __a - __b;
   11382 }
   11383 
   11384 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   11385 vec_vsubuqm(vector unsigned __int128 __a, vector unsigned __int128 __b) {
   11386   return __a - __b;
   11387 }
   11388 
   11389 /* vec_vsubeuqm */
   11390 
   11391 
   11392 static __inline__ vector signed __int128 __ATTRS_o_ai
   11393 vec_vsubeuqm(vector signed __int128 __a, vector signed __int128 __b,
   11394              vector signed __int128 __c) {
   11395   return __builtin_altivec_vsubeuqm(__a, __b, __c);
   11396 }
   11397 
   11398 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   11399 vec_vsubeuqm(vector unsigned __int128 __a, vector unsigned __int128 __b,
   11400              vector unsigned __int128 __c) {
   11401   return __builtin_altivec_vsubeuqm(__a, __b, __c);
   11402 }
   11403 
   11404 static __inline__ vector signed __int128 __ATTRS_o_ai
   11405 vec_sube(vector signed __int128 __a, vector signed __int128 __b,
   11406              vector signed __int128 __c) {
   11407   return __builtin_altivec_vsubeuqm(__a, __b, __c);
   11408 }
   11409 
   11410 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   11411 vec_sube(vector unsigned __int128 __a, vector unsigned __int128 __b,
   11412              vector unsigned __int128 __c) {
   11413   return __builtin_altivec_vsubeuqm(__a, __b, __c);
   11414 }
   11415 
   11416 /* vec_vsubcuq */
   11417 
   11418 static __inline__ vector signed __int128 __ATTRS_o_ai
   11419 vec_vsubcuq(vector signed __int128 __a, vector signed __int128 __b) {
   11420   return __builtin_altivec_vsubcuq(__a, __b);
   11421 }
   11422 
   11423 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   11424 vec_vsubcuq(vector unsigned __int128 __a, vector unsigned __int128 __b) {
   11425   return __builtin_altivec_vsubcuq(__a, __b);
   11426 }
   11427 
   11428 /* vec_vsubecuq */
   11429 
   11430 static __inline__ vector signed __int128 __ATTRS_o_ai
   11431 vec_vsubecuq(vector signed __int128 __a, vector signed __int128 __b,
   11432              vector signed __int128 __c) {
   11433   return __builtin_altivec_vsubecuq(__a, __b, __c);
   11434 }
   11435 
   11436 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   11437 vec_vsubecuq(vector unsigned __int128 __a, vector unsigned __int128 __b,
   11438              vector unsigned __int128 __c) {
   11439   return __builtin_altivec_vsubecuq(__a, __b, __c);
   11440 }
   11441 
   11442 static __inline__ vector signed int __ATTRS_o_ai
   11443 vec_subec(vector signed int __a, vector signed int __b,
   11444              vector signed int __c) {
   11445   return vec_addec(__a, ~__b, __c);
   11446 }
   11447 
   11448 static __inline__ vector unsigned int __ATTRS_o_ai
   11449 vec_subec(vector unsigned int __a, vector unsigned int __b,
   11450              vector unsigned int __c) {
   11451   return vec_addec(__a, ~__b, __c);
   11452 }
   11453 
   11454 static __inline__ vector signed __int128 __ATTRS_o_ai
   11455 vec_subec(vector signed __int128 __a, vector signed __int128 __b,
   11456              vector signed __int128 __c) {
   11457   return __builtin_altivec_vsubecuq(__a, __b, __c);
   11458 }
   11459 
   11460 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   11461 vec_subec(vector unsigned __int128 __a, vector unsigned __int128 __b,
   11462              vector unsigned __int128 __c) {
   11463   return __builtin_altivec_vsubecuq(__a, __b, __c);
   11464 }
   11465 #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   11466 
   11467 static __inline__ vector signed int __ATTRS_o_ai
   11468 vec_sube(vector signed int __a, vector signed int __b,
   11469          vector signed int __c) {
   11470   vector signed int __mask = {1, 1, 1, 1};
   11471   vector signed int __carry = __c & __mask;
   11472   return vec_adde(__a, ~__b, __carry);
   11473 }
   11474 
   11475 static __inline__ vector unsigned int __ATTRS_o_ai
   11476 vec_sube(vector unsigned int __a, vector unsigned int __b,
   11477          vector unsigned int __c) {
   11478   vector unsigned int __mask = {1, 1, 1, 1};
   11479   vector unsigned int __carry = __c & __mask;
   11480   return vec_adde(__a, ~__b, __carry);
   11481 }
   11482 /* vec_sum4s */
   11483 
   11484 static __inline__ vector int __ATTRS_o_ai vec_sum4s(vector signed char __a,
   11485                                                     vector int __b) {
   11486   return __builtin_altivec_vsum4sbs(__a, __b);
   11487 }
   11488 
   11489 static __inline__ vector unsigned int __ATTRS_o_ai
   11490 vec_sum4s(vector unsigned char __a, vector unsigned int __b) {
   11491   return __builtin_altivec_vsum4ubs(__a, __b);
   11492 }
   11493 
   11494 static __inline__ vector int __ATTRS_o_ai vec_sum4s(vector signed short __a,
   11495                                                     vector int __b) {
   11496   return __builtin_altivec_vsum4shs(__a, __b);
   11497 }
   11498 
   11499 /* vec_vsum4sbs */
   11500 
   11501 static __inline__ vector int __attribute__((__always_inline__))
   11502 vec_vsum4sbs(vector signed char __a, vector int __b) {
   11503   return __builtin_altivec_vsum4sbs(__a, __b);
   11504 }
   11505 
   11506 /* vec_vsum4ubs */
   11507 
   11508 static __inline__ vector unsigned int __attribute__((__always_inline__))
   11509 vec_vsum4ubs(vector unsigned char __a, vector unsigned int __b) {
   11510   return __builtin_altivec_vsum4ubs(__a, __b);
   11511 }
   11512 
   11513 /* vec_vsum4shs */
   11514 
   11515 static __inline__ vector int __attribute__((__always_inline__))
   11516 vec_vsum4shs(vector signed short __a, vector int __b) {
   11517   return __builtin_altivec_vsum4shs(__a, __b);
   11518 }
   11519 
   11520 /* vec_sum2s */
   11521 
   11522 /* The vsum2sws instruction has a big-endian bias, so that the second
   11523    input vector and the result always reference big-endian elements
   11524    1 and 3 (little-endian element 0 and 2).  For ease of porting the
   11525    programmer wants elements 1 and 3 in both cases, so for little
   11526    endian we must perform some permutes.  */
   11527 
   11528 static __inline__ vector signed int __attribute__((__always_inline__))
   11529 vec_sum2s(vector int __a, vector int __b) {
   11530 #ifdef __LITTLE_ENDIAN__
   11531   vector int __c = (vector signed int)vec_perm(
   11532       __b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
   11533                                        8, 9, 10, 11));
   11534   __c = __builtin_altivec_vsum2sws(__a, __c);
   11535   return (vector signed int)vec_perm(
   11536       __c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
   11537                                        8, 9, 10, 11));
   11538 #else
   11539   return __builtin_altivec_vsum2sws(__a, __b);
   11540 #endif
   11541 }
   11542 
   11543 /* vec_vsum2sws */
   11544 
   11545 static __inline__ vector signed int __attribute__((__always_inline__))
   11546 vec_vsum2sws(vector int __a, vector int __b) {
   11547 #ifdef __LITTLE_ENDIAN__
   11548   vector int __c = (vector signed int)vec_perm(
   11549       __b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
   11550                                        8, 9, 10, 11));
   11551   __c = __builtin_altivec_vsum2sws(__a, __c);
   11552   return (vector signed int)vec_perm(
   11553       __c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
   11554                                        8, 9, 10, 11));
   11555 #else
   11556   return __builtin_altivec_vsum2sws(__a, __b);
   11557 #endif
   11558 }
   11559 
   11560 /* vec_sums */
   11561 
   11562 /* The vsumsws instruction has a big-endian bias, so that the second
   11563    input vector and the result always reference big-endian element 3
   11564    (little-endian element 0).  For ease of porting the programmer
   11565    wants element 3 in both cases, so for little endian we must perform
   11566    some permutes.  */
   11567 
   11568 static __inline__ vector signed int __attribute__((__always_inline__))
   11569 vec_sums(vector signed int __a, vector signed int __b) {
   11570 #ifdef __LITTLE_ENDIAN__
   11571   __b = (vector signed int)vec_splat(__b, 3);
   11572   __b = __builtin_altivec_vsumsws(__a, __b);
   11573   return (vector signed int)(0, 0, 0, __b[0]);
   11574 #else
   11575   return __builtin_altivec_vsumsws(__a, __b);
   11576 #endif
   11577 }
   11578 
   11579 /* vec_vsumsws */
   11580 
   11581 static __inline__ vector signed int __attribute__((__always_inline__))
   11582 vec_vsumsws(vector signed int __a, vector signed int __b) {
   11583 #ifdef __LITTLE_ENDIAN__
   11584   __b = (vector signed int)vec_splat(__b, 3);
   11585   __b = __builtin_altivec_vsumsws(__a, __b);
   11586   return (vector signed int)(0, 0, 0, __b[0]);
   11587 #else
   11588   return __builtin_altivec_vsumsws(__a, __b);
   11589 #endif
   11590 }
   11591 
   11592 /* vec_trunc */
   11593 
   11594 static __inline__ vector float __ATTRS_o_ai vec_trunc(vector float __a) {
   11595 #ifdef __VSX__
   11596   return __builtin_vsx_xvrspiz(__a);
   11597 #else
   11598   return __builtin_altivec_vrfiz(__a);
   11599 #endif
   11600 }
   11601 
   11602 #ifdef __VSX__
   11603 static __inline__ vector double __ATTRS_o_ai vec_trunc(vector double __a) {
   11604   return __builtin_vsx_xvrdpiz(__a);
   11605 }
   11606 #endif
   11607 
   11608 /* vec_vrfiz */
   11609 
   11610 static __inline__ vector float __attribute__((__always_inline__))
   11611 vec_vrfiz(vector float __a) {
   11612   return __builtin_altivec_vrfiz(__a);
   11613 }
   11614 
   11615 /* vec_unpackh */
   11616 
   11617 /* The vector unpack instructions all have a big-endian bias, so for
   11618    little endian we must reverse the meanings of "high" and "low."  */
   11619 
   11620 static __inline__ vector short __ATTRS_o_ai
   11621 vec_unpackh(vector signed char __a) {
   11622 #ifdef __LITTLE_ENDIAN__
   11623   return __builtin_altivec_vupklsb((vector char)__a);
   11624 #else
   11625   return __builtin_altivec_vupkhsb((vector char)__a);
   11626 #endif
   11627 }
   11628 
   11629 static __inline__ vector bool short __ATTRS_o_ai
   11630 vec_unpackh(vector bool char __a) {
   11631 #ifdef __LITTLE_ENDIAN__
   11632   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
   11633 #else
   11634   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
   11635 #endif
   11636 }
   11637 
   11638 static __inline__ vector int __ATTRS_o_ai vec_unpackh(vector short __a) {
   11639 #ifdef __LITTLE_ENDIAN__
   11640   return __builtin_altivec_vupklsh(__a);
   11641 #else
   11642   return __builtin_altivec_vupkhsh(__a);
   11643 #endif
   11644 }
   11645 
   11646 static __inline__ vector bool int __ATTRS_o_ai
   11647 vec_unpackh(vector bool short __a) {
   11648 #ifdef __LITTLE_ENDIAN__
   11649   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
   11650 #else
   11651   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
   11652 #endif
   11653 }
   11654 
   11655 static __inline__ vector unsigned int __ATTRS_o_ai
   11656 vec_unpackh(vector pixel __a) {
   11657 #ifdef __LITTLE_ENDIAN__
   11658   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
   11659 #else
   11660   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
   11661 #endif
   11662 }
   11663 
   11664 #ifdef __POWER8_VECTOR__
   11665 static __inline__ vector long long __ATTRS_o_ai vec_unpackh(vector int __a) {
   11666 #ifdef __LITTLE_ENDIAN__
   11667   return __builtin_altivec_vupklsw(__a);
   11668 #else
   11669   return __builtin_altivec_vupkhsw(__a);
   11670 #endif
   11671 }
   11672 
   11673 static __inline__ vector bool long long __ATTRS_o_ai
   11674 vec_unpackh(vector bool int __a) {
   11675 #ifdef __LITTLE_ENDIAN__
   11676   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
   11677 #else
   11678   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
   11679 #endif
   11680 }
   11681 
   11682 static __inline__ vector double __ATTRS_o_ai
   11683 vec_unpackh(vector float __a) {
   11684   return (vector double)(__a[0], __a[1]);
   11685 }
   11686 #endif
   11687 
   11688 /* vec_vupkhsb */
   11689 
   11690 static __inline__ vector short __ATTRS_o_ai
   11691 vec_vupkhsb(vector signed char __a) {
   11692 #ifdef __LITTLE_ENDIAN__
   11693   return __builtin_altivec_vupklsb((vector char)__a);
   11694 #else
   11695   return __builtin_altivec_vupkhsb((vector char)__a);
   11696 #endif
   11697 }
   11698 
   11699 static __inline__ vector bool short __ATTRS_o_ai
   11700 vec_vupkhsb(vector bool char __a) {
   11701 #ifdef __LITTLE_ENDIAN__
   11702   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
   11703 #else
   11704   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
   11705 #endif
   11706 }
   11707 
   11708 /* vec_vupkhsh */
   11709 
   11710 static __inline__ vector int __ATTRS_o_ai vec_vupkhsh(vector short __a) {
   11711 #ifdef __LITTLE_ENDIAN__
   11712   return __builtin_altivec_vupklsh(__a);
   11713 #else
   11714   return __builtin_altivec_vupkhsh(__a);
   11715 #endif
   11716 }
   11717 
   11718 static __inline__ vector bool int __ATTRS_o_ai
   11719 vec_vupkhsh(vector bool short __a) {
   11720 #ifdef __LITTLE_ENDIAN__
   11721   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
   11722 #else
   11723   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
   11724 #endif
   11725 }
   11726 
   11727 static __inline__ vector unsigned int __ATTRS_o_ai
   11728 vec_vupkhsh(vector pixel __a) {
   11729 #ifdef __LITTLE_ENDIAN__
   11730   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
   11731 #else
   11732   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
   11733 #endif
   11734 }
   11735 
   11736 /* vec_vupkhsw */
   11737 
   11738 #ifdef __POWER8_VECTOR__
   11739 static __inline__ vector long long __ATTRS_o_ai vec_vupkhsw(vector int __a) {
   11740 #ifdef __LITTLE_ENDIAN__
   11741   return __builtin_altivec_vupklsw(__a);
   11742 #else
   11743   return __builtin_altivec_vupkhsw(__a);
   11744 #endif
   11745 }
   11746 
   11747 static __inline__ vector bool long long __ATTRS_o_ai
   11748 vec_vupkhsw(vector bool int __a) {
   11749 #ifdef __LITTLE_ENDIAN__
   11750   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
   11751 #else
   11752   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
   11753 #endif
   11754 }
   11755 #endif
   11756 
   11757 /* vec_unpackl */
   11758 
   11759 static __inline__ vector short __ATTRS_o_ai
   11760 vec_unpackl(vector signed char __a) {
   11761 #ifdef __LITTLE_ENDIAN__
   11762   return __builtin_altivec_vupkhsb((vector char)__a);
   11763 #else
   11764   return __builtin_altivec_vupklsb((vector char)__a);
   11765 #endif
   11766 }
   11767 
   11768 static __inline__ vector bool short __ATTRS_o_ai
   11769 vec_unpackl(vector bool char __a) {
   11770 #ifdef __LITTLE_ENDIAN__
   11771   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
   11772 #else
   11773   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
   11774 #endif
   11775 }
   11776 
   11777 static __inline__ vector int __ATTRS_o_ai vec_unpackl(vector short __a) {
   11778 #ifdef __LITTLE_ENDIAN__
   11779   return __builtin_altivec_vupkhsh(__a);
   11780 #else
   11781   return __builtin_altivec_vupklsh(__a);
   11782 #endif
   11783 }
   11784 
   11785 static __inline__ vector bool int __ATTRS_o_ai
   11786 vec_unpackl(vector bool short __a) {
   11787 #ifdef __LITTLE_ENDIAN__
   11788   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
   11789 #else
   11790   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
   11791 #endif
   11792 }
   11793 
   11794 static __inline__ vector unsigned int __ATTRS_o_ai
   11795 vec_unpackl(vector pixel __a) {
   11796 #ifdef __LITTLE_ENDIAN__
   11797   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
   11798 #else
   11799   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
   11800 #endif
   11801 }
   11802 
   11803 #ifdef __POWER8_VECTOR__
   11804 static __inline__ vector long long __ATTRS_o_ai vec_unpackl(vector int __a) {
   11805 #ifdef __LITTLE_ENDIAN__
   11806   return __builtin_altivec_vupkhsw(__a);
   11807 #else
   11808   return __builtin_altivec_vupklsw(__a);
   11809 #endif
   11810 }
   11811 
   11812 static __inline__ vector bool long long __ATTRS_o_ai
   11813 vec_unpackl(vector bool int __a) {
   11814 #ifdef __LITTLE_ENDIAN__
   11815   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
   11816 #else
   11817   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
   11818 #endif
   11819 }
   11820 
   11821 static __inline__ vector double __ATTRS_o_ai
   11822 vec_unpackl(vector float __a) {
   11823   return (vector double)(__a[2], __a[3]);
   11824 }
   11825 #endif
   11826 
   11827 /* vec_vupklsb */
   11828 
   11829 static __inline__ vector short __ATTRS_o_ai
   11830 vec_vupklsb(vector signed char __a) {
   11831 #ifdef __LITTLE_ENDIAN__
   11832   return __builtin_altivec_vupkhsb((vector char)__a);
   11833 #else
   11834   return __builtin_altivec_vupklsb((vector char)__a);
   11835 #endif
   11836 }
   11837 
   11838 static __inline__ vector bool short __ATTRS_o_ai
   11839 vec_vupklsb(vector bool char __a) {
   11840 #ifdef __LITTLE_ENDIAN__
   11841   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
   11842 #else
   11843   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
   11844 #endif
   11845 }
   11846 
   11847 /* vec_vupklsh */
   11848 
   11849 static __inline__ vector int __ATTRS_o_ai vec_vupklsh(vector short __a) {
   11850 #ifdef __LITTLE_ENDIAN__
   11851   return __builtin_altivec_vupkhsh(__a);
   11852 #else
   11853   return __builtin_altivec_vupklsh(__a);
   11854 #endif
   11855 }
   11856 
   11857 static __inline__ vector bool int __ATTRS_o_ai
   11858 vec_vupklsh(vector bool short __a) {
   11859 #ifdef __LITTLE_ENDIAN__
   11860   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
   11861 #else
   11862   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
   11863 #endif
   11864 }
   11865 
   11866 static __inline__ vector unsigned int __ATTRS_o_ai
   11867 vec_vupklsh(vector pixel __a) {
   11868 #ifdef __LITTLE_ENDIAN__
   11869   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
   11870 #else
   11871   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
   11872 #endif
   11873 }
   11874 
   11875 /* vec_vupklsw */
   11876 
   11877 #ifdef __POWER8_VECTOR__
   11878 static __inline__ vector long long __ATTRS_o_ai vec_vupklsw(vector int __a) {
   11879 #ifdef __LITTLE_ENDIAN__
   11880   return __builtin_altivec_vupkhsw(__a);
   11881 #else
   11882   return __builtin_altivec_vupklsw(__a);
   11883 #endif
   11884 }
   11885 
   11886 static __inline__ vector bool long long __ATTRS_o_ai
   11887 vec_vupklsw(vector bool int __a) {
   11888 #ifdef __LITTLE_ENDIAN__
   11889   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
   11890 #else
   11891   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
   11892 #endif
   11893 }
   11894 #endif
   11895 
   11896 /* vec_vsx_ld */
   11897 
   11898 #ifdef __VSX__
   11899 
   11900 static __inline__ vector bool int __ATTRS_o_ai
   11901 vec_vsx_ld(int __a, const vector bool int *__b) {
   11902   return (vector bool int)__builtin_vsx_lxvw4x(__a, __b);
   11903 }
   11904 
   11905 static __inline__ vector signed int __ATTRS_o_ai
   11906 vec_vsx_ld(int __a, const vector signed int *__b) {
   11907   return (vector signed int)__builtin_vsx_lxvw4x(__a, __b);
   11908 }
   11909 
   11910 static __inline__ vector signed int __ATTRS_o_ai
   11911 vec_vsx_ld(int __a, const signed int *__b) {
   11912   return (vector signed int)__builtin_vsx_lxvw4x(__a, __b);
   11913 }
   11914 
   11915 static __inline__ vector unsigned int __ATTRS_o_ai
   11916 vec_vsx_ld(int __a, const vector unsigned int *__b) {
   11917   return (vector unsigned int)__builtin_vsx_lxvw4x(__a, __b);
   11918 }
   11919 
   11920 static __inline__ vector unsigned int __ATTRS_o_ai
   11921 vec_vsx_ld(int __a, const unsigned int *__b) {
   11922   return (vector unsigned int)__builtin_vsx_lxvw4x(__a, __b);
   11923 }
   11924 
   11925 static __inline__ vector float __ATTRS_o_ai
   11926 vec_vsx_ld(int __a, const vector float *__b) {
   11927   return (vector float)__builtin_vsx_lxvw4x(__a, __b);
   11928 }
   11929 
   11930 static __inline__ vector float __ATTRS_o_ai vec_vsx_ld(int __a,
   11931                                                        const float *__b) {
   11932   return (vector float)__builtin_vsx_lxvw4x(__a, __b);
   11933 }
   11934 
   11935 static __inline__ vector signed long long __ATTRS_o_ai
   11936 vec_vsx_ld(int __a, const vector signed long long *__b) {
   11937   return (vector signed long long)__builtin_vsx_lxvd2x(__a, __b);
   11938 }
   11939 
   11940 static __inline__ vector unsigned long long __ATTRS_o_ai
   11941 vec_vsx_ld(int __a, const vector unsigned long long *__b) {
   11942   return (vector unsigned long long)__builtin_vsx_lxvd2x(__a, __b);
   11943 }
   11944 
   11945 static __inline__ vector double __ATTRS_o_ai
   11946 vec_vsx_ld(int __a, const vector double *__b) {
   11947   return (vector double)__builtin_vsx_lxvd2x(__a, __b);
   11948 }
   11949 
   11950 static __inline__ vector double __ATTRS_o_ai
   11951 vec_vsx_ld(int __a, const double *__b) {
   11952   return (vector double)__builtin_vsx_lxvd2x(__a, __b);
   11953 }
   11954 
   11955 static __inline__ vector bool short __ATTRS_o_ai
   11956 vec_vsx_ld(int __a, const vector bool short *__b) {
   11957   return (vector bool short)__builtin_vsx_lxvw4x(__a, __b);
   11958 }
   11959 
   11960 static __inline__ vector signed short __ATTRS_o_ai
   11961 vec_vsx_ld(int __a, const vector signed short *__b) {
   11962   return (vector signed short)__builtin_vsx_lxvw4x(__a, __b);
   11963 }
   11964 
   11965 static __inline__ vector signed short __ATTRS_o_ai
   11966 vec_vsx_ld(int __a, const signed short *__b) {
   11967   return (vector signed short)__builtin_vsx_lxvw4x(__a, __b);
   11968 }
   11969 
   11970 static __inline__ vector unsigned short __ATTRS_o_ai
   11971 vec_vsx_ld(int __a, const vector unsigned short *__b) {
   11972   return (vector unsigned short)__builtin_vsx_lxvw4x(__a, __b);
   11973 }
   11974 
   11975 static __inline__ vector unsigned short __ATTRS_o_ai
   11976 vec_vsx_ld(int __a, const unsigned short *__b) {
   11977   return (vector unsigned short)__builtin_vsx_lxvw4x(__a, __b);
   11978 }
   11979 
   11980 static __inline__ vector bool char __ATTRS_o_ai
   11981 vec_vsx_ld(int __a, const vector bool char *__b) {
   11982   return (vector bool char)__builtin_vsx_lxvw4x(__a, __b);
   11983 }
   11984 
   11985 static __inline__ vector signed char __ATTRS_o_ai
   11986 vec_vsx_ld(int __a, const vector signed char *__b) {
   11987   return (vector signed char)__builtin_vsx_lxvw4x(__a, __b);
   11988 }
   11989 
   11990 static __inline__ vector signed char __ATTRS_o_ai
   11991 vec_vsx_ld(int __a, const signed char *__b) {
   11992   return (vector signed char)__builtin_vsx_lxvw4x(__a, __b);
   11993 }
   11994 
   11995 static __inline__ vector unsigned char __ATTRS_o_ai
   11996 vec_vsx_ld(int __a, const vector unsigned char *__b) {
   11997   return (vector unsigned char)__builtin_vsx_lxvw4x(__a, __b);
   11998 }
   11999 
   12000 static __inline__ vector unsigned char __ATTRS_o_ai
   12001 vec_vsx_ld(int __a, const unsigned char *__b) {
   12002   return (vector unsigned char)__builtin_vsx_lxvw4x(__a, __b);
   12003 }
   12004 
   12005 #endif
   12006 
   12007 /* vec_vsx_st */
   12008 
   12009 #ifdef __VSX__
   12010 
   12011 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
   12012                                                vector bool int *__c) {
   12013   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12014 }
   12015 
   12016 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
   12017                                                signed int *__c) {
   12018   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12019 }
   12020 
   12021 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
   12022                                                unsigned int *__c) {
   12023   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12024 }
   12025 
   12026 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed int __a, int __b,
   12027                                                vector signed int *__c) {
   12028   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12029 }
   12030 
   12031 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed int __a, int __b,
   12032                                                signed int *__c) {
   12033   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12034 }
   12035 
   12036 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned int __a, int __b,
   12037                                                vector unsigned int *__c) {
   12038   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12039 }
   12040 
   12041 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned int __a, int __b,
   12042                                                unsigned int *__c) {
   12043   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12044 }
   12045 
   12046 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector float __a, int __b,
   12047                                                vector float *__c) {
   12048   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12049 }
   12050 
   12051 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector float __a, int __b,
   12052                                                float *__c) {
   12053   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12054 }
   12055 
   12056 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed long long __a,
   12057                                                int __b,
   12058                                                vector signed long long *__c) {
   12059   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
   12060 }
   12061 
   12062 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned long long __a,
   12063                                                int __b,
   12064                                                vector unsigned long long *__c) {
   12065   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
   12066 }
   12067 
   12068 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector double __a, int __b,
   12069                                                vector double *__c) {
   12070   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
   12071 }
   12072 
   12073 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector double __a, int __b,
   12074                                                double *__c) {
   12075   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
   12076 }
   12077 
   12078 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
   12079                                                vector bool short *__c) {
   12080   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12081 }
   12082 
   12083 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
   12084                                                signed short *__c) {
   12085   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12086 }
   12087 
   12088 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
   12089                                                unsigned short *__c) {
   12090   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12091 }
   12092 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed short __a, int __b,
   12093                                                vector signed short *__c) {
   12094   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12095 }
   12096 
   12097 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed short __a, int __b,
   12098                                                signed short *__c) {
   12099   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12100 }
   12101 
   12102 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned short __a,
   12103                                                int __b,
   12104                                                vector unsigned short *__c) {
   12105   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12106 }
   12107 
   12108 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned short __a,
   12109                                                int __b, unsigned short *__c) {
   12110   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12111 }
   12112 
   12113 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
   12114                                                vector bool char *__c) {
   12115   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12116 }
   12117 
   12118 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
   12119                                                signed char *__c) {
   12120   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12121 }
   12122 
   12123 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
   12124                                                unsigned char *__c) {
   12125   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12126 }
   12127 
   12128 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed char __a, int __b,
   12129                                                vector signed char *__c) {
   12130   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12131 }
   12132 
   12133 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed char __a, int __b,
   12134                                                signed char *__c) {
   12135   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12136 }
   12137 
   12138 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned char __a,
   12139                                                int __b,
   12140                                                vector unsigned char *__c) {
   12141   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12142 }
   12143 
   12144 static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned char __a,
   12145                                                int __b, unsigned char *__c) {
   12146   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
   12147 }
   12148 
   12149 #endif
   12150 
   12151 #ifdef __VSX__
   12152 #define vec_xxpermdi __builtin_vsx_xxpermdi
   12153 #define vec_xxsldwi __builtin_vsx_xxsldwi
   12154 #endif
   12155 
   12156 /* vec_xor */
   12157 
   12158 #define __builtin_altivec_vxor vec_xor
   12159 
   12160 static __inline__ vector signed char __ATTRS_o_ai
   12161 vec_xor(vector signed char __a, vector signed char __b) {
   12162   return __a ^ __b;
   12163 }
   12164 
   12165 static __inline__ vector signed char __ATTRS_o_ai
   12166 vec_xor(vector bool char __a, vector signed char __b) {
   12167   return (vector signed char)__a ^ __b;
   12168 }
   12169 
   12170 static __inline__ vector signed char __ATTRS_o_ai
   12171 vec_xor(vector signed char __a, vector bool char __b) {
   12172   return __a ^ (vector signed char)__b;
   12173 }
   12174 
   12175 static __inline__ vector unsigned char __ATTRS_o_ai
   12176 vec_xor(vector unsigned char __a, vector unsigned char __b) {
   12177   return __a ^ __b;
   12178 }
   12179 
   12180 static __inline__ vector unsigned char __ATTRS_o_ai
   12181 vec_xor(vector bool char __a, vector unsigned char __b) {
   12182   return (vector unsigned char)__a ^ __b;
   12183 }
   12184 
   12185 static __inline__ vector unsigned char __ATTRS_o_ai
   12186 vec_xor(vector unsigned char __a, vector bool char __b) {
   12187   return __a ^ (vector unsigned char)__b;
   12188 }
   12189 
   12190 static __inline__ vector bool char __ATTRS_o_ai vec_xor(vector bool char __a,
   12191                                                         vector bool char __b) {
   12192   return __a ^ __b;
   12193 }
   12194 
   12195 static __inline__ vector short __ATTRS_o_ai vec_xor(vector short __a,
   12196                                                     vector short __b) {
   12197   return __a ^ __b;
   12198 }
   12199 
   12200 static __inline__ vector short __ATTRS_o_ai vec_xor(vector bool short __a,
   12201                                                     vector short __b) {
   12202   return (vector short)__a ^ __b;
   12203 }
   12204 
   12205 static __inline__ vector short __ATTRS_o_ai vec_xor(vector short __a,
   12206                                                     vector bool short __b) {
   12207   return __a ^ (vector short)__b;
   12208 }
   12209 
   12210 static __inline__ vector unsigned short __ATTRS_o_ai
   12211 vec_xor(vector unsigned short __a, vector unsigned short __b) {
   12212   return __a ^ __b;
   12213 }
   12214 
   12215 static __inline__ vector unsigned short __ATTRS_o_ai
   12216 vec_xor(vector bool short __a, vector unsigned short __b) {
   12217   return (vector unsigned short)__a ^ __b;
   12218 }
   12219 
   12220 static __inline__ vector unsigned short __ATTRS_o_ai
   12221 vec_xor(vector unsigned short __a, vector bool short __b) {
   12222   return __a ^ (vector unsigned short)__b;
   12223 }
   12224 
   12225 static __inline__ vector bool short __ATTRS_o_ai
   12226 vec_xor(vector bool short __a, vector bool short __b) {
   12227   return __a ^ __b;
   12228 }
   12229 
   12230 static __inline__ vector int __ATTRS_o_ai vec_xor(vector int __a,
   12231                                                   vector int __b) {
   12232   return __a ^ __b;
   12233 }
   12234 
   12235 static __inline__ vector int __ATTRS_o_ai vec_xor(vector bool int __a,
   12236                                                   vector int __b) {
   12237   return (vector int)__a ^ __b;
   12238 }
   12239 
   12240 static __inline__ vector int __ATTRS_o_ai vec_xor(vector int __a,
   12241                                                   vector bool int __b) {
   12242   return __a ^ (vector int)__b;
   12243 }
   12244 
   12245 static __inline__ vector unsigned int __ATTRS_o_ai
   12246 vec_xor(vector unsigned int __a, vector unsigned int __b) {
   12247   return __a ^ __b;
   12248 }
   12249 
   12250 static __inline__ vector unsigned int __ATTRS_o_ai
   12251 vec_xor(vector bool int __a, vector unsigned int __b) {
   12252   return (vector unsigned int)__a ^ __b;
   12253 }
   12254 
   12255 static __inline__ vector unsigned int __ATTRS_o_ai
   12256 vec_xor(vector unsigned int __a, vector bool int __b) {
   12257   return __a ^ (vector unsigned int)__b;
   12258 }
   12259 
   12260 static __inline__ vector bool int __ATTRS_o_ai vec_xor(vector bool int __a,
   12261                                                        vector bool int __b) {
   12262   return __a ^ __b;
   12263 }
   12264 
   12265 static __inline__ vector float __ATTRS_o_ai vec_xor(vector float __a,
   12266                                                     vector float __b) {
   12267   vector unsigned int __res =
   12268       (vector unsigned int)__a ^ (vector unsigned int)__b;
   12269   return (vector float)__res;
   12270 }
   12271 
   12272 static __inline__ vector float __ATTRS_o_ai vec_xor(vector bool int __a,
   12273                                                     vector float __b) {
   12274   vector unsigned int __res =
   12275       (vector unsigned int)__a ^ (vector unsigned int)__b;
   12276   return (vector float)__res;
   12277 }
   12278 
   12279 static __inline__ vector float __ATTRS_o_ai vec_xor(vector float __a,
   12280                                                     vector bool int __b) {
   12281   vector unsigned int __res =
   12282       (vector unsigned int)__a ^ (vector unsigned int)__b;
   12283   return (vector float)__res;
   12284 }
   12285 
   12286 #ifdef __VSX__
   12287 static __inline__ vector signed long long __ATTRS_o_ai
   12288 vec_xor(vector signed long long __a, vector signed long long __b) {
   12289   return __a ^ __b;
   12290 }
   12291 
   12292 static __inline__ vector signed long long __ATTRS_o_ai
   12293 vec_xor(vector bool long long __a, vector signed long long __b) {
   12294   return (vector signed long long)__a ^ __b;
   12295 }
   12296 
   12297 static __inline__ vector signed long long __ATTRS_o_ai
   12298 vec_xor(vector signed long long __a, vector bool long long __b) {
   12299   return __a ^ (vector signed long long)__b;
   12300 }
   12301 
   12302 static __inline__ vector unsigned long long __ATTRS_o_ai
   12303 vec_xor(vector unsigned long long __a, vector unsigned long long __b) {
   12304   return __a ^ __b;
   12305 }
   12306 
   12307 static __inline__ vector unsigned long long __ATTRS_o_ai
   12308 vec_xor(vector bool long long __a, vector unsigned long long __b) {
   12309   return (vector unsigned long long)__a ^ __b;
   12310 }
   12311 
   12312 static __inline__ vector unsigned long long __ATTRS_o_ai
   12313 vec_xor(vector unsigned long long __a, vector bool long long __b) {
   12314   return __a ^ (vector unsigned long long)__b;
   12315 }
   12316 
   12317 static __inline__ vector bool long long __ATTRS_o_ai
   12318 vec_xor(vector bool long long __a, vector bool long long __b) {
   12319   return __a ^ __b;
   12320 }
   12321 
   12322 static __inline__ vector double __ATTRS_o_ai vec_xor(vector double __a,
   12323                                                      vector double __b) {
   12324   return (vector double)((vector unsigned long long)__a ^
   12325                          (vector unsigned long long)__b);
   12326 }
   12327 
   12328 static __inline__ vector double __ATTRS_o_ai
   12329 vec_xor(vector double __a, vector bool long long __b) {
   12330   return (vector double)((vector unsigned long long)__a ^
   12331                          (vector unsigned long long)__b);
   12332 }
   12333 
   12334 static __inline__ vector double __ATTRS_o_ai vec_xor(vector bool long long __a,
   12335                                                      vector double __b) {
   12336   return (vector double)((vector unsigned long long)__a ^
   12337                          (vector unsigned long long)__b);
   12338 }
   12339 #endif
   12340 
   12341 /* vec_vxor */
   12342 
   12343 static __inline__ vector signed char __ATTRS_o_ai
   12344 vec_vxor(vector signed char __a, vector signed char __b) {
   12345   return __a ^ __b;
   12346 }
   12347 
   12348 static __inline__ vector signed char __ATTRS_o_ai
   12349 vec_vxor(vector bool char __a, vector signed char __b) {
   12350   return (vector signed char)__a ^ __b;
   12351 }
   12352 
   12353 static __inline__ vector signed char __ATTRS_o_ai
   12354 vec_vxor(vector signed char __a, vector bool char __b) {
   12355   return __a ^ (vector signed char)__b;
   12356 }
   12357 
   12358 static __inline__ vector unsigned char __ATTRS_o_ai
   12359 vec_vxor(vector unsigned char __a, vector unsigned char __b) {
   12360   return __a ^ __b;
   12361 }
   12362 
   12363 static __inline__ vector unsigned char __ATTRS_o_ai
   12364 vec_vxor(vector bool char __a, vector unsigned char __b) {
   12365   return (vector unsigned char)__a ^ __b;
   12366 }
   12367 
   12368 static __inline__ vector unsigned char __ATTRS_o_ai
   12369 vec_vxor(vector unsigned char __a, vector bool char __b) {
   12370   return __a ^ (vector unsigned char)__b;
   12371 }
   12372 
   12373 static __inline__ vector bool char __ATTRS_o_ai vec_vxor(vector bool char __a,
   12374                                                          vector bool char __b) {
   12375   return __a ^ __b;
   12376 }
   12377 
   12378 static __inline__ vector short __ATTRS_o_ai vec_vxor(vector short __a,
   12379                                                      vector short __b) {
   12380   return __a ^ __b;
   12381 }
   12382 
   12383 static __inline__ vector short __ATTRS_o_ai vec_vxor(vector bool short __a,
   12384                                                      vector short __b) {
   12385   return (vector short)__a ^ __b;
   12386 }
   12387 
   12388 static __inline__ vector short __ATTRS_o_ai vec_vxor(vector short __a,
   12389                                                      vector bool short __b) {
   12390   return __a ^ (vector short)__b;
   12391 }
   12392 
   12393 static __inline__ vector unsigned short __ATTRS_o_ai
   12394 vec_vxor(vector unsigned short __a, vector unsigned short __b) {
   12395   return __a ^ __b;
   12396 }
   12397 
   12398 static __inline__ vector unsigned short __ATTRS_o_ai
   12399 vec_vxor(vector bool short __a, vector unsigned short __b) {
   12400   return (vector unsigned short)__a ^ __b;
   12401 }
   12402 
   12403 static __inline__ vector unsigned short __ATTRS_o_ai
   12404 vec_vxor(vector unsigned short __a, vector bool short __b) {
   12405   return __a ^ (vector unsigned short)__b;
   12406 }
   12407 
   12408 static __inline__ vector bool short __ATTRS_o_ai
   12409 vec_vxor(vector bool short __a, vector bool short __b) {
   12410   return __a ^ __b;
   12411 }
   12412 
   12413 static __inline__ vector int __ATTRS_o_ai vec_vxor(vector int __a,
   12414                                                    vector int __b) {
   12415   return __a ^ __b;
   12416 }
   12417 
   12418 static __inline__ vector int __ATTRS_o_ai vec_vxor(vector bool int __a,
   12419                                                    vector int __b) {
   12420   return (vector int)__a ^ __b;
   12421 }
   12422 
   12423 static __inline__ vector int __ATTRS_o_ai vec_vxor(vector int __a,
   12424                                                    vector bool int __b) {
   12425   return __a ^ (vector int)__b;
   12426 }
   12427 
   12428 static __inline__ vector unsigned int __ATTRS_o_ai
   12429 vec_vxor(vector unsigned int __a, vector unsigned int __b) {
   12430   return __a ^ __b;
   12431 }
   12432 
   12433 static __inline__ vector unsigned int __ATTRS_o_ai
   12434 vec_vxor(vector bool int __a, vector unsigned int __b) {
   12435   return (vector unsigned int)__a ^ __b;
   12436 }
   12437 
   12438 static __inline__ vector unsigned int __ATTRS_o_ai
   12439 vec_vxor(vector unsigned int __a, vector bool int __b) {
   12440   return __a ^ (vector unsigned int)__b;
   12441 }
   12442 
   12443 static __inline__ vector bool int __ATTRS_o_ai vec_vxor(vector bool int __a,
   12444                                                         vector bool int __b) {
   12445   return __a ^ __b;
   12446 }
   12447 
   12448 static __inline__ vector float __ATTRS_o_ai vec_vxor(vector float __a,
   12449                                                      vector float __b) {
   12450   vector unsigned int __res =
   12451       (vector unsigned int)__a ^ (vector unsigned int)__b;
   12452   return (vector float)__res;
   12453 }
   12454 
   12455 static __inline__ vector float __ATTRS_o_ai vec_vxor(vector bool int __a,
   12456                                                      vector float __b) {
   12457   vector unsigned int __res =
   12458       (vector unsigned int)__a ^ (vector unsigned int)__b;
   12459   return (vector float)__res;
   12460 }
   12461 
   12462 static __inline__ vector float __ATTRS_o_ai vec_vxor(vector float __a,
   12463                                                      vector bool int __b) {
   12464   vector unsigned int __res =
   12465       (vector unsigned int)__a ^ (vector unsigned int)__b;
   12466   return (vector float)__res;
   12467 }
   12468 
   12469 #ifdef __VSX__
   12470 static __inline__ vector signed long long __ATTRS_o_ai
   12471 vec_vxor(vector signed long long __a, vector signed long long __b) {
   12472   return __a ^ __b;
   12473 }
   12474 
   12475 static __inline__ vector signed long long __ATTRS_o_ai
   12476 vec_vxor(vector bool long long __a, vector signed long long __b) {
   12477   return (vector signed long long)__a ^ __b;
   12478 }
   12479 
   12480 static __inline__ vector signed long long __ATTRS_o_ai
   12481 vec_vxor(vector signed long long __a, vector bool long long __b) {
   12482   return __a ^ (vector signed long long)__b;
   12483 }
   12484 
   12485 static __inline__ vector unsigned long long __ATTRS_o_ai
   12486 vec_vxor(vector unsigned long long __a, vector unsigned long long __b) {
   12487   return __a ^ __b;
   12488 }
   12489 
   12490 static __inline__ vector unsigned long long __ATTRS_o_ai
   12491 vec_vxor(vector bool long long __a, vector unsigned long long __b) {
   12492   return (vector unsigned long long)__a ^ __b;
   12493 }
   12494 
   12495 static __inline__ vector unsigned long long __ATTRS_o_ai
   12496 vec_vxor(vector unsigned long long __a, vector bool long long __b) {
   12497   return __a ^ (vector unsigned long long)__b;
   12498 }
   12499 
   12500 static __inline__ vector bool long long __ATTRS_o_ai
   12501 vec_vxor(vector bool long long __a, vector bool long long __b) {
   12502   return __a ^ __b;
   12503 }
   12504 #endif
   12505 
   12506 /* ------------------------ extensions for CBEA ----------------------------- */
   12507 
   12508 /* vec_extract */
   12509 
   12510 static __inline__ signed char __ATTRS_o_ai vec_extract(vector signed char __a,
   12511                                                        int __b) {
   12512   return __a[__b];
   12513 }
   12514 
   12515 static __inline__ unsigned char __ATTRS_o_ai
   12516 vec_extract(vector unsigned char __a, int __b) {
   12517   return __a[__b];
   12518 }
   12519 
   12520 static __inline__ unsigned char __ATTRS_o_ai vec_extract(vector bool char __a,
   12521                                                          int __b) {
   12522   return __a[__b];
   12523 }
   12524 
   12525 static __inline__ signed short __ATTRS_o_ai vec_extract(vector signed short __a,
   12526                                                         int __b) {
   12527   return __a[__b];
   12528 }
   12529 
   12530 static __inline__ unsigned short __ATTRS_o_ai
   12531 vec_extract(vector unsigned short __a, int __b) {
   12532   return __a[__b];
   12533 }
   12534 
   12535 static __inline__ unsigned short __ATTRS_o_ai vec_extract(vector bool short __a,
   12536                                                           int __b) {
   12537   return __a[__b];
   12538 }
   12539 
   12540 static __inline__ signed int __ATTRS_o_ai vec_extract(vector signed int __a,
   12541                                                       int __b) {
   12542   return __a[__b];
   12543 }
   12544 
   12545 static __inline__ unsigned int __ATTRS_o_ai vec_extract(vector unsigned int __a,
   12546                                                         int __b) {
   12547   return __a[__b];
   12548 }
   12549 
   12550 static __inline__ unsigned int __ATTRS_o_ai vec_extract(vector bool int __a,
   12551                                                         int __b) {
   12552   return __a[__b];
   12553 }
   12554 
   12555 #ifdef __VSX__
   12556 static __inline__ signed long long __ATTRS_o_ai
   12557 vec_extract(vector signed long long __a, int __b) {
   12558   return __a[__b];
   12559 }
   12560 
   12561 static __inline__ unsigned long long __ATTRS_o_ai
   12562 vec_extract(vector unsigned long long __a, int __b) {
   12563   return __a[__b];
   12564 }
   12565 
   12566 static __inline__ unsigned long long __ATTRS_o_ai
   12567 vec_extract(vector bool long long __a, int __b) {
   12568   return __a[__b];
   12569 }
   12570 
   12571 static __inline__ double __ATTRS_o_ai vec_extract(vector double __a, int __b) {
   12572   return __a[__b];
   12573 }
   12574 #endif
   12575 
   12576 static __inline__ float __ATTRS_o_ai vec_extract(vector float __a, int __b) {
   12577   return __a[__b];
   12578 }
   12579 
   12580 #ifdef __POWER9_VECTOR__
   12581 
   12582 #define vec_insert4b __builtin_vsx_insertword
   12583 #define vec_extract4b __builtin_vsx_extractuword
   12584 
   12585 /* vec_extract_exp */
   12586 
   12587 static __inline__ vector unsigned int __ATTRS_o_ai
   12588 vec_extract_exp(vector float __a) {
   12589   return __builtin_vsx_xvxexpsp(__a);
   12590 }
   12591 
   12592 static __inline__ vector unsigned long long __ATTRS_o_ai
   12593 vec_extract_exp(vector double __a) {
   12594   return __builtin_vsx_xvxexpdp(__a);
   12595 }
   12596 
   12597 /* vec_extract_sig */
   12598 
   12599 static __inline__ vector unsigned int __ATTRS_o_ai
   12600 vec_extract_sig(vector float __a) {
   12601   return __builtin_vsx_xvxsigsp(__a);
   12602 }
   12603 
   12604 static __inline__ vector unsigned long long __ATTRS_o_ai
   12605 vec_extract_sig (vector double __a) {
   12606   return __builtin_vsx_xvxsigdp(__a);
   12607 }
   12608 
   12609 static __inline__ vector float __ATTRS_o_ai
   12610 vec_extract_fp32_from_shorth(vector unsigned short __a) {
   12611   vector unsigned short __b =
   12612 #ifdef __LITTLE_ENDIAN__
   12613             __builtin_shufflevector(__a, __a, 0, -1, 1, -1, 2, -1, 3, -1);
   12614 #else
   12615             __builtin_shufflevector(__a, __a, -1, 0, -1, 1, -1, 2, -1, 3);
   12616 #endif
   12617   return __builtin_vsx_xvcvhpsp(__b);
   12618 }
   12619 
   12620 static __inline__ vector float __ATTRS_o_ai
   12621 vec_extract_fp32_from_shortl(vector unsigned short __a) {
   12622   vector unsigned short __b =
   12623 #ifdef __LITTLE_ENDIAN__
   12624             __builtin_shufflevector(__a, __a, 4, -1, 5, -1, 6, -1, 7, -1);
   12625 #else
   12626             __builtin_shufflevector(__a, __a, -1, 4, -1, 5, -1, 6, -1, 7);
   12627 #endif
   12628   return __builtin_vsx_xvcvhpsp(__b);
   12629 }
   12630 #endif /* __POWER9_VECTOR__ */
   12631 
   12632 /* vec_insert */
   12633 
   12634 static __inline__ vector signed char __ATTRS_o_ai
   12635 vec_insert(signed char __a, vector signed char __b, int __c) {
   12636   __b[__c] = __a;
   12637   return __b;
   12638 }
   12639 
   12640 static __inline__ vector unsigned char __ATTRS_o_ai
   12641 vec_insert(unsigned char __a, vector unsigned char __b, int __c) {
   12642   __b[__c] = __a;
   12643   return __b;
   12644 }
   12645 
   12646 static __inline__ vector bool char __ATTRS_o_ai vec_insert(unsigned char __a,
   12647                                                            vector bool char __b,
   12648                                                            int __c) {
   12649   __b[__c] = __a;
   12650   return __b;
   12651 }
   12652 
   12653 static __inline__ vector signed short __ATTRS_o_ai
   12654 vec_insert(signed short __a, vector signed short __b, int __c) {
   12655   __b[__c] = __a;
   12656   return __b;
   12657 }
   12658 
   12659 static __inline__ vector unsigned short __ATTRS_o_ai
   12660 vec_insert(unsigned short __a, vector unsigned short __b, int __c) {
   12661   __b[__c] = __a;
   12662   return __b;
   12663 }
   12664 
   12665 static __inline__ vector bool short __ATTRS_o_ai
   12666 vec_insert(unsigned short __a, vector bool short __b, int __c) {
   12667   __b[__c] = __a;
   12668   return __b;
   12669 }
   12670 
   12671 static __inline__ vector signed int __ATTRS_o_ai
   12672 vec_insert(signed int __a, vector signed int __b, int __c) {
   12673   __b[__c] = __a;
   12674   return __b;
   12675 }
   12676 
   12677 static __inline__ vector unsigned int __ATTRS_o_ai
   12678 vec_insert(unsigned int __a, vector unsigned int __b, int __c) {
   12679   __b[__c] = __a;
   12680   return __b;
   12681 }
   12682 
   12683 static __inline__ vector bool int __ATTRS_o_ai vec_insert(unsigned int __a,
   12684                                                           vector bool int __b,
   12685                                                           int __c) {
   12686   __b[__c] = __a;
   12687   return __b;
   12688 }
   12689 
   12690 #ifdef __VSX__
   12691 static __inline__ vector signed long long __ATTRS_o_ai
   12692 vec_insert(signed long long __a, vector signed long long __b, int __c) {
   12693   __b[__c] = __a;
   12694   return __b;
   12695 }
   12696 
   12697 static __inline__ vector unsigned long long __ATTRS_o_ai
   12698 vec_insert(unsigned long long __a, vector unsigned long long __b, int __c) {
   12699   __b[__c] = __a;
   12700   return __b;
   12701 }
   12702 
   12703 static __inline__ vector bool long long __ATTRS_o_ai
   12704 vec_insert(unsigned long long __a, vector bool long long __b, int __c) {
   12705   __b[__c] = __a;
   12706   return __b;
   12707 }
   12708 static __inline__ vector double __ATTRS_o_ai vec_insert(double __a,
   12709                                                         vector double __b,
   12710                                                         int __c) {
   12711   __b[__c] = __a;
   12712   return __b;
   12713 }
   12714 #endif
   12715 
   12716 static __inline__ vector float __ATTRS_o_ai vec_insert(float __a,
   12717                                                        vector float __b,
   12718                                                        int __c) {
   12719   __b[__c] = __a;
   12720   return __b;
   12721 }
   12722 
   12723 /* vec_lvlx */
   12724 
   12725 static __inline__ vector signed char __ATTRS_o_ai
   12726 vec_lvlx(int __a, const signed char *__b) {
   12727   return vec_perm(vec_ld(__a, __b), (vector signed char)(0),
   12728                   vec_lvsl(__a, __b));
   12729 }
   12730 
   12731 static __inline__ vector signed char __ATTRS_o_ai
   12732 vec_lvlx(int __a, const vector signed char *__b) {
   12733   return vec_perm(vec_ld(__a, __b), (vector signed char)(0),
   12734                   vec_lvsl(__a, (unsigned char *)__b));
   12735 }
   12736 
   12737 static __inline__ vector unsigned char __ATTRS_o_ai
   12738 vec_lvlx(int __a, const unsigned char *__b) {
   12739   return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0),
   12740                   vec_lvsl(__a, __b));
   12741 }
   12742 
   12743 static __inline__ vector unsigned char __ATTRS_o_ai
   12744 vec_lvlx(int __a, const vector unsigned char *__b) {
   12745   return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0),
   12746                   vec_lvsl(__a, (unsigned char *)__b));
   12747 }
   12748 
   12749 static __inline__ vector bool char __ATTRS_o_ai
   12750 vec_lvlx(int __a, const vector bool char *__b) {
   12751   return vec_perm(vec_ld(__a, __b), (vector bool char)(0),
   12752                   vec_lvsl(__a, (unsigned char *)__b));
   12753 }
   12754 
   12755 static __inline__ vector short __ATTRS_o_ai vec_lvlx(int __a,
   12756                                                      const short *__b) {
   12757   return vec_perm(vec_ld(__a, __b), (vector short)(0), vec_lvsl(__a, __b));
   12758 }
   12759 
   12760 static __inline__ vector short __ATTRS_o_ai vec_lvlx(int __a,
   12761                                                      const vector short *__b) {
   12762   return vec_perm(vec_ld(__a, __b), (vector short)(0),
   12763                   vec_lvsl(__a, (unsigned char *)__b));
   12764 }
   12765 
   12766 static __inline__ vector unsigned short __ATTRS_o_ai
   12767 vec_lvlx(int __a, const unsigned short *__b) {
   12768   return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0),
   12769                   vec_lvsl(__a, __b));
   12770 }
   12771 
   12772 static __inline__ vector unsigned short __ATTRS_o_ai
   12773 vec_lvlx(int __a, const vector unsigned short *__b) {
   12774   return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0),
   12775                   vec_lvsl(__a, (unsigned char *)__b));
   12776 }
   12777 
   12778 static __inline__ vector bool short __ATTRS_o_ai
   12779 vec_lvlx(int __a, const vector bool short *__b) {
   12780   return vec_perm(vec_ld(__a, __b), (vector bool short)(0),
   12781                   vec_lvsl(__a, (unsigned char *)__b));
   12782 }
   12783 
   12784 static __inline__ vector pixel __ATTRS_o_ai vec_lvlx(int __a,
   12785                                                      const vector pixel *__b) {
   12786   return vec_perm(vec_ld(__a, __b), (vector pixel)(0),
   12787                   vec_lvsl(__a, (unsigned char *)__b));
   12788 }
   12789 
   12790 static __inline__ vector int __ATTRS_o_ai vec_lvlx(int __a, const int *__b) {
   12791   return vec_perm(vec_ld(__a, __b), (vector int)(0), vec_lvsl(__a, __b));
   12792 }
   12793 
   12794 static __inline__ vector int __ATTRS_o_ai vec_lvlx(int __a,
   12795                                                    const vector int *__b) {
   12796   return vec_perm(vec_ld(__a, __b), (vector int)(0),
   12797                   vec_lvsl(__a, (unsigned char *)__b));
   12798 }
   12799 
   12800 static __inline__ vector unsigned int __ATTRS_o_ai
   12801 vec_lvlx(int __a, const unsigned int *__b) {
   12802   return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0),
   12803                   vec_lvsl(__a, __b));
   12804 }
   12805 
   12806 static __inline__ vector unsigned int __ATTRS_o_ai
   12807 vec_lvlx(int __a, const vector unsigned int *__b) {
   12808   return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0),
   12809                   vec_lvsl(__a, (unsigned char *)__b));
   12810 }
   12811 
   12812 static __inline__ vector bool int __ATTRS_o_ai
   12813 vec_lvlx(int __a, const vector bool int *__b) {
   12814   return vec_perm(vec_ld(__a, __b), (vector bool int)(0),
   12815                   vec_lvsl(__a, (unsigned char *)__b));
   12816 }
   12817 
   12818 static __inline__ vector float __ATTRS_o_ai vec_lvlx(int __a,
   12819                                                      const float *__b) {
   12820   return vec_perm(vec_ld(__a, __b), (vector float)(0), vec_lvsl(__a, __b));
   12821 }
   12822 
   12823 static __inline__ vector float __ATTRS_o_ai vec_lvlx(int __a,
   12824                                                      const vector float *__b) {
   12825   return vec_perm(vec_ld(__a, __b), (vector float)(0),
   12826                   vec_lvsl(__a, (unsigned char *)__b));
   12827 }
   12828 
   12829 /* vec_lvlxl */
   12830 
   12831 static __inline__ vector signed char __ATTRS_o_ai
   12832 vec_lvlxl(int __a, const signed char *__b) {
   12833   return vec_perm(vec_ldl(__a, __b), (vector signed char)(0),
   12834                   vec_lvsl(__a, __b));
   12835 }
   12836 
   12837 static __inline__ vector signed char __ATTRS_o_ai
   12838 vec_lvlxl(int __a, const vector signed char *__b) {
   12839   return vec_perm(vec_ldl(__a, __b), (vector signed char)(0),
   12840                   vec_lvsl(__a, (unsigned char *)__b));
   12841 }
   12842 
   12843 static __inline__ vector unsigned char __ATTRS_o_ai
   12844 vec_lvlxl(int __a, const unsigned char *__b) {
   12845   return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0),
   12846                   vec_lvsl(__a, __b));
   12847 }
   12848 
   12849 static __inline__ vector unsigned char __ATTRS_o_ai
   12850 vec_lvlxl(int __a, const vector unsigned char *__b) {
   12851   return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0),
   12852                   vec_lvsl(__a, (unsigned char *)__b));
   12853 }
   12854 
   12855 static __inline__ vector bool char __ATTRS_o_ai
   12856 vec_lvlxl(int __a, const vector bool char *__b) {
   12857   return vec_perm(vec_ldl(__a, __b), (vector bool char)(0),
   12858                   vec_lvsl(__a, (unsigned char *)__b));
   12859 }
   12860 
   12861 static __inline__ vector short __ATTRS_o_ai vec_lvlxl(int __a,
   12862                                                       const short *__b) {
   12863   return vec_perm(vec_ldl(__a, __b), (vector short)(0), vec_lvsl(__a, __b));
   12864 }
   12865 
   12866 static __inline__ vector short __ATTRS_o_ai vec_lvlxl(int __a,
   12867                                                       const vector short *__b) {
   12868   return vec_perm(vec_ldl(__a, __b), (vector short)(0),
   12869                   vec_lvsl(__a, (unsigned char *)__b));
   12870 }
   12871 
   12872 static __inline__ vector unsigned short __ATTRS_o_ai
   12873 vec_lvlxl(int __a, const unsigned short *__b) {
   12874   return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0),
   12875                   vec_lvsl(__a, __b));
   12876 }
   12877 
   12878 static __inline__ vector unsigned short __ATTRS_o_ai
   12879 vec_lvlxl(int __a, const vector unsigned short *__b) {
   12880   return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0),
   12881                   vec_lvsl(__a, (unsigned char *)__b));
   12882 }
   12883 
   12884 static __inline__ vector bool short __ATTRS_o_ai
   12885 vec_lvlxl(int __a, const vector bool short *__b) {
   12886   return vec_perm(vec_ldl(__a, __b), (vector bool short)(0),
   12887                   vec_lvsl(__a, (unsigned char *)__b));
   12888 }
   12889 
   12890 static __inline__ vector pixel __ATTRS_o_ai vec_lvlxl(int __a,
   12891                                                       const vector pixel *__b) {
   12892   return vec_perm(vec_ldl(__a, __b), (vector pixel)(0),
   12893                   vec_lvsl(__a, (unsigned char *)__b));
   12894 }
   12895 
   12896 static __inline__ vector int __ATTRS_o_ai vec_lvlxl(int __a, const int *__b) {
   12897   return vec_perm(vec_ldl(__a, __b), (vector int)(0), vec_lvsl(__a, __b));
   12898 }
   12899 
   12900 static __inline__ vector int __ATTRS_o_ai vec_lvlxl(int __a,
   12901                                                     const vector int *__b) {
   12902   return vec_perm(vec_ldl(__a, __b), (vector int)(0),
   12903                   vec_lvsl(__a, (unsigned char *)__b));
   12904 }
   12905 
   12906 static __inline__ vector unsigned int __ATTRS_o_ai
   12907 vec_lvlxl(int __a, const unsigned int *__b) {
   12908   return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0),
   12909                   vec_lvsl(__a, __b));
   12910 }
   12911 
   12912 static __inline__ vector unsigned int __ATTRS_o_ai
   12913 vec_lvlxl(int __a, const vector unsigned int *__b) {
   12914   return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0),
   12915                   vec_lvsl(__a, (unsigned char *)__b));
   12916 }
   12917 
   12918 static __inline__ vector bool int __ATTRS_o_ai
   12919 vec_lvlxl(int __a, const vector bool int *__b) {
   12920   return vec_perm(vec_ldl(__a, __b), (vector bool int)(0),
   12921                   vec_lvsl(__a, (unsigned char *)__b));
   12922 }
   12923 
   12924 static __inline__ vector float __ATTRS_o_ai vec_lvlxl(int __a,
   12925                                                       const float *__b) {
   12926   return vec_perm(vec_ldl(__a, __b), (vector float)(0), vec_lvsl(__a, __b));
   12927 }
   12928 
   12929 static __inline__ vector float __ATTRS_o_ai vec_lvlxl(int __a,
   12930                                                       vector float *__b) {
   12931   return vec_perm(vec_ldl(__a, __b), (vector float)(0),
   12932                   vec_lvsl(__a, (unsigned char *)__b));
   12933 }
   12934 
   12935 /* vec_lvrx */
   12936 
   12937 static __inline__ vector signed char __ATTRS_o_ai
   12938 vec_lvrx(int __a, const signed char *__b) {
   12939   return vec_perm((vector signed char)(0), vec_ld(__a, __b),
   12940                   vec_lvsl(__a, __b));
   12941 }
   12942 
   12943 static __inline__ vector signed char __ATTRS_o_ai
   12944 vec_lvrx(int __a, const vector signed char *__b) {
   12945   return vec_perm((vector signed char)(0), vec_ld(__a, __b),
   12946                   vec_lvsl(__a, (unsigned char *)__b));
   12947 }
   12948 
   12949 static __inline__ vector unsigned char __ATTRS_o_ai
   12950 vec_lvrx(int __a, const unsigned char *__b) {
   12951   return vec_perm((vector unsigned char)(0), vec_ld(__a, __b),
   12952                   vec_lvsl(__a, __b));
   12953 }
   12954 
   12955 static __inline__ vector unsigned char __ATTRS_o_ai
   12956 vec_lvrx(int __a, const vector unsigned char *__b) {
   12957   return vec_perm((vector unsigned char)(0), vec_ld(__a, __b),
   12958                   vec_lvsl(__a, (unsigned char *)__b));
   12959 }
   12960 
   12961 static __inline__ vector bool char __ATTRS_o_ai
   12962 vec_lvrx(int __a, const vector bool char *__b) {
   12963   return vec_perm((vector bool char)(0), vec_ld(__a, __b),
   12964                   vec_lvsl(__a, (unsigned char *)__b));
   12965 }
   12966 
   12967 static __inline__ vector short __ATTRS_o_ai vec_lvrx(int __a,
   12968                                                      const short *__b) {
   12969   return vec_perm((vector short)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
   12970 }
   12971 
   12972 static __inline__ vector short __ATTRS_o_ai vec_lvrx(int __a,
   12973                                                      const vector short *__b) {
   12974   return vec_perm((vector short)(0), vec_ld(__a, __b),
   12975                   vec_lvsl(__a, (unsigned char *)__b));
   12976 }
   12977 
   12978 static __inline__ vector unsigned short __ATTRS_o_ai
   12979 vec_lvrx(int __a, const unsigned short *__b) {
   12980   return vec_perm((vector unsigned short)(0), vec_ld(__a, __b),
   12981                   vec_lvsl(__a, __b));
   12982 }
   12983 
   12984 static __inline__ vector unsigned short __ATTRS_o_ai
   12985 vec_lvrx(int __a, const vector unsigned short *__b) {
   12986   return vec_perm((vector unsigned short)(0), vec_ld(__a, __b),
   12987                   vec_lvsl(__a, (unsigned char *)__b));
   12988 }
   12989 
   12990 static __inline__ vector bool short __ATTRS_o_ai
   12991 vec_lvrx(int __a, const vector bool short *__b) {
   12992   return vec_perm((vector bool short)(0), vec_ld(__a, __b),
   12993                   vec_lvsl(__a, (unsigned char *)__b));
   12994 }
   12995 
   12996 static __inline__ vector pixel __ATTRS_o_ai vec_lvrx(int __a,
   12997                                                      const vector pixel *__b) {
   12998   return vec_perm((vector pixel)(0), vec_ld(__a, __b),
   12999                   vec_lvsl(__a, (unsigned char *)__b));
   13000 }
   13001 
   13002 static __inline__ vector int __ATTRS_o_ai vec_lvrx(int __a, const int *__b) {
   13003   return vec_perm((vector int)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
   13004 }
   13005 
   13006 static __inline__ vector int __ATTRS_o_ai vec_lvrx(int __a,
   13007                                                    const vector int *__b) {
   13008   return vec_perm((vector int)(0), vec_ld(__a, __b),
   13009                   vec_lvsl(__a, (unsigned char *)__b));
   13010 }
   13011 
   13012 static __inline__ vector unsigned int __ATTRS_o_ai
   13013 vec_lvrx(int __a, const unsigned int *__b) {
   13014   return vec_perm((vector unsigned int)(0), vec_ld(__a, __b),
   13015                   vec_lvsl(__a, __b));
   13016 }
   13017 
   13018 static __inline__ vector unsigned int __ATTRS_o_ai
   13019 vec_lvrx(int __a, const vector unsigned int *__b) {
   13020   return vec_perm((vector unsigned int)(0), vec_ld(__a, __b),
   13021                   vec_lvsl(__a, (unsigned char *)__b));
   13022 }
   13023 
   13024 static __inline__ vector bool int __ATTRS_o_ai
   13025 vec_lvrx(int __a, const vector bool int *__b) {
   13026   return vec_perm((vector bool int)(0), vec_ld(__a, __b),
   13027                   vec_lvsl(__a, (unsigned char *)__b));
   13028 }
   13029 
   13030 static __inline__ vector float __ATTRS_o_ai vec_lvrx(int __a,
   13031                                                      const float *__b) {
   13032   return vec_perm((vector float)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
   13033 }
   13034 
   13035 static __inline__ vector float __ATTRS_o_ai vec_lvrx(int __a,
   13036                                                      const vector float *__b) {
   13037   return vec_perm((vector float)(0), vec_ld(__a, __b),
   13038                   vec_lvsl(__a, (unsigned char *)__b));
   13039 }
   13040 
   13041 /* vec_lvrxl */
   13042 
   13043 static __inline__ vector signed char __ATTRS_o_ai
   13044 vec_lvrxl(int __a, const signed char *__b) {
   13045   return vec_perm((vector signed char)(0), vec_ldl(__a, __b),
   13046                   vec_lvsl(__a, __b));
   13047 }
   13048 
   13049 static __inline__ vector signed char __ATTRS_o_ai
   13050 vec_lvrxl(int __a, const vector signed char *__b) {
   13051   return vec_perm((vector signed char)(0), vec_ldl(__a, __b),
   13052                   vec_lvsl(__a, (unsigned char *)__b));
   13053 }
   13054 
   13055 static __inline__ vector unsigned char __ATTRS_o_ai
   13056 vec_lvrxl(int __a, const unsigned char *__b) {
   13057   return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b),
   13058                   vec_lvsl(__a, __b));
   13059 }
   13060 
   13061 static __inline__ vector unsigned char __ATTRS_o_ai
   13062 vec_lvrxl(int __a, const vector unsigned char *__b) {
   13063   return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b),
   13064                   vec_lvsl(__a, (unsigned char *)__b));
   13065 }
   13066 
   13067 static __inline__ vector bool char __ATTRS_o_ai
   13068 vec_lvrxl(int __a, const vector bool char *__b) {
   13069   return vec_perm((vector bool char)(0), vec_ldl(__a, __b),
   13070                   vec_lvsl(__a, (unsigned char *)__b));
   13071 }
   13072 
   13073 static __inline__ vector short __ATTRS_o_ai vec_lvrxl(int __a,
   13074                                                       const short *__b) {
   13075   return vec_perm((vector short)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
   13076 }
   13077 
   13078 static __inline__ vector short __ATTRS_o_ai vec_lvrxl(int __a,
   13079                                                       const vector short *__b) {
   13080   return vec_perm((vector short)(0), vec_ldl(__a, __b),
   13081                   vec_lvsl(__a, (unsigned char *)__b));
   13082 }
   13083 
   13084 static __inline__ vector unsigned short __ATTRS_o_ai
   13085 vec_lvrxl(int __a, const unsigned short *__b) {
   13086   return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b),
   13087                   vec_lvsl(__a, __b));
   13088 }
   13089 
   13090 static __inline__ vector unsigned short __ATTRS_o_ai
   13091 vec_lvrxl(int __a, const vector unsigned short *__b) {
   13092   return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b),
   13093                   vec_lvsl(__a, (unsigned char *)__b));
   13094 }
   13095 
   13096 static __inline__ vector bool short __ATTRS_o_ai
   13097 vec_lvrxl(int __a, const vector bool short *__b) {
   13098   return vec_perm((vector bool short)(0), vec_ldl(__a, __b),
   13099                   vec_lvsl(__a, (unsigned char *)__b));
   13100 }
   13101 
   13102 static __inline__ vector pixel __ATTRS_o_ai vec_lvrxl(int __a,
   13103                                                       const vector pixel *__b) {
   13104   return vec_perm((vector pixel)(0), vec_ldl(__a, __b),
   13105                   vec_lvsl(__a, (unsigned char *)__b));
   13106 }
   13107 
   13108 static __inline__ vector int __ATTRS_o_ai vec_lvrxl(int __a, const int *__b) {
   13109   return vec_perm((vector int)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
   13110 }
   13111 
   13112 static __inline__ vector int __ATTRS_o_ai vec_lvrxl(int __a,
   13113                                                     const vector int *__b) {
   13114   return vec_perm((vector int)(0), vec_ldl(__a, __b),
   13115                   vec_lvsl(__a, (unsigned char *)__b));
   13116 }
   13117 
   13118 static __inline__ vector unsigned int __ATTRS_o_ai
   13119 vec_lvrxl(int __a, const unsigned int *__b) {
   13120   return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b),
   13121                   vec_lvsl(__a, __b));
   13122 }
   13123 
   13124 static __inline__ vector unsigned int __ATTRS_o_ai
   13125 vec_lvrxl(int __a, const vector unsigned int *__b) {
   13126   return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b),
   13127                   vec_lvsl(__a, (unsigned char *)__b));
   13128 }
   13129 
   13130 static __inline__ vector bool int __ATTRS_o_ai
   13131 vec_lvrxl(int __a, const vector bool int *__b) {
   13132   return vec_perm((vector bool int)(0), vec_ldl(__a, __b),
   13133                   vec_lvsl(__a, (unsigned char *)__b));
   13134 }
   13135 
   13136 static __inline__ vector float __ATTRS_o_ai vec_lvrxl(int __a,
   13137                                                       const float *__b) {
   13138   return vec_perm((vector float)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
   13139 }
   13140 
   13141 static __inline__ vector float __ATTRS_o_ai vec_lvrxl(int __a,
   13142                                                       const vector float *__b) {
   13143   return vec_perm((vector float)(0), vec_ldl(__a, __b),
   13144                   vec_lvsl(__a, (unsigned char *)__b));
   13145 }
   13146 
   13147 /* vec_stvlx */
   13148 
   13149 static __inline__ void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b,
   13150                                               signed char *__c) {
   13151   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   13152                 __c);
   13153 }
   13154 
   13155 static __inline__ void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b,
   13156                                               vector signed char *__c) {
   13157   return vec_st(
   13158       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13159       __b, __c);
   13160 }
   13161 
   13162 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b,
   13163                                               unsigned char *__c) {
   13164   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   13165                 __c);
   13166 }
   13167 
   13168 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b,
   13169                                               vector unsigned char *__c) {
   13170   return vec_st(
   13171       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13172       __b, __c);
   13173 }
   13174 
   13175 static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool char __a, int __b,
   13176                                               vector bool char *__c) {
   13177   return vec_st(
   13178       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13179       __b, __c);
   13180 }
   13181 
   13182 static __inline__ void __ATTRS_o_ai vec_stvlx(vector short __a, int __b,
   13183                                               short *__c) {
   13184   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   13185                 __c);
   13186 }
   13187 
   13188 static __inline__ void __ATTRS_o_ai vec_stvlx(vector short __a, int __b,
   13189                                               vector short *__c) {
   13190   return vec_st(
   13191       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13192       __b, __c);
   13193 }
   13194 
   13195 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned short __a,
   13196                                               int __b, unsigned short *__c) {
   13197   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   13198                 __c);
   13199 }
   13200 
   13201 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned short __a,
   13202                                               int __b,
   13203                                               vector unsigned short *__c) {
   13204   return vec_st(
   13205       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13206       __b, __c);
   13207 }
   13208 
   13209 static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool short __a, int __b,
   13210                                               vector bool short *__c) {
   13211   return vec_st(
   13212       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13213       __b, __c);
   13214 }
   13215 
   13216 static __inline__ void __ATTRS_o_ai vec_stvlx(vector pixel __a, int __b,
   13217                                               vector pixel *__c) {
   13218   return vec_st(
   13219       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13220       __b, __c);
   13221 }
   13222 
   13223 static __inline__ void __ATTRS_o_ai vec_stvlx(vector int __a, int __b,
   13224                                               int *__c) {
   13225   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   13226                 __c);
   13227 }
   13228 
   13229 static __inline__ void __ATTRS_o_ai vec_stvlx(vector int __a, int __b,
   13230                                               vector int *__c) {
   13231   return vec_st(
   13232       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13233       __b, __c);
   13234 }
   13235 
   13236 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b,
   13237                                               unsigned int *__c) {
   13238   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   13239                 __c);
   13240 }
   13241 
   13242 static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b,
   13243                                               vector unsigned int *__c) {
   13244   return vec_st(
   13245       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13246       __b, __c);
   13247 }
   13248 
   13249 static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool int __a, int __b,
   13250                                               vector bool int *__c) {
   13251   return vec_st(
   13252       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13253       __b, __c);
   13254 }
   13255 
   13256 static __inline__ void __ATTRS_o_ai vec_stvlx(vector float __a, int __b,
   13257                                               vector float *__c) {
   13258   return vec_st(
   13259       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13260       __b, __c);
   13261 }
   13262 
   13263 /* vec_stvlxl */
   13264 
   13265 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b,
   13266                                                signed char *__c) {
   13267   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   13268                  __c);
   13269 }
   13270 
   13271 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b,
   13272                                                vector signed char *__c) {
   13273   return vec_stl(
   13274       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13275       __b, __c);
   13276 }
   13277 
   13278 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a,
   13279                                                int __b, unsigned char *__c) {
   13280   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   13281                  __c);
   13282 }
   13283 
   13284 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a,
   13285                                                int __b,
   13286                                                vector unsigned char *__c) {
   13287   return vec_stl(
   13288       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13289       __b, __c);
   13290 }
   13291 
   13292 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool char __a, int __b,
   13293                                                vector bool char *__c) {
   13294   return vec_stl(
   13295       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13296       __b, __c);
   13297 }
   13298 
   13299 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b,
   13300                                                short *__c) {
   13301   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   13302                  __c);
   13303 }
   13304 
   13305 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b,
   13306                                                vector short *__c) {
   13307   return vec_stl(
   13308       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13309       __b, __c);
   13310 }
   13311 
   13312 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a,
   13313                                                int __b, unsigned short *__c) {
   13314   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   13315                  __c);
   13316 }
   13317 
   13318 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a,
   13319                                                int __b,
   13320                                                vector unsigned short *__c) {
   13321   return vec_stl(
   13322       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13323       __b, __c);
   13324 }
   13325 
   13326 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool short __a, int __b,
   13327                                                vector bool short *__c) {
   13328   return vec_stl(
   13329       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13330       __b, __c);
   13331 }
   13332 
   13333 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector pixel __a, int __b,
   13334                                                vector pixel *__c) {
   13335   return vec_stl(
   13336       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13337       __b, __c);
   13338 }
   13339 
   13340 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b,
   13341                                                int *__c) {
   13342   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   13343                  __c);
   13344 }
   13345 
   13346 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b,
   13347                                                vector int *__c) {
   13348   return vec_stl(
   13349       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13350       __b, __c);
   13351 }
   13352 
   13353 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b,
   13354                                                unsigned int *__c) {
   13355   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
   13356                  __c);
   13357 }
   13358 
   13359 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b,
   13360                                                vector unsigned int *__c) {
   13361   return vec_stl(
   13362       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13363       __b, __c);
   13364 }
   13365 
   13366 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool int __a, int __b,
   13367                                                vector bool int *__c) {
   13368   return vec_stl(
   13369       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13370       __b, __c);
   13371 }
   13372 
   13373 static __inline__ void __ATTRS_o_ai vec_stvlxl(vector float __a, int __b,
   13374                                                vector float *__c) {
   13375   return vec_stl(
   13376       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
   13377       __b, __c);
   13378 }
   13379 
   13380 /* vec_stvrx */
   13381 
   13382 static __inline__ void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b,
   13383                                               signed char *__c) {
   13384   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   13385                 __c);
   13386 }
   13387 
   13388 static __inline__ void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b,
   13389                                               vector signed char *__c) {
   13390   return vec_st(
   13391       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13392       __b, __c);
   13393 }
   13394 
   13395 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b,
   13396                                               unsigned char *__c) {
   13397   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   13398                 __c);
   13399 }
   13400 
   13401 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b,
   13402                                               vector unsigned char *__c) {
   13403   return vec_st(
   13404       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13405       __b, __c);
   13406 }
   13407 
   13408 static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool char __a, int __b,
   13409                                               vector bool char *__c) {
   13410   return vec_st(
   13411       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13412       __b, __c);
   13413 }
   13414 
   13415 static __inline__ void __ATTRS_o_ai vec_stvrx(vector short __a, int __b,
   13416                                               short *__c) {
   13417   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   13418                 __c);
   13419 }
   13420 
   13421 static __inline__ void __ATTRS_o_ai vec_stvrx(vector short __a, int __b,
   13422                                               vector short *__c) {
   13423   return vec_st(
   13424       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13425       __b, __c);
   13426 }
   13427 
   13428 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned short __a,
   13429                                               int __b, unsigned short *__c) {
   13430   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   13431                 __c);
   13432 }
   13433 
   13434 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned short __a,
   13435                                               int __b,
   13436                                               vector unsigned short *__c) {
   13437   return vec_st(
   13438       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13439       __b, __c);
   13440 }
   13441 
   13442 static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool short __a, int __b,
   13443                                               vector bool short *__c) {
   13444   return vec_st(
   13445       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13446       __b, __c);
   13447 }
   13448 
   13449 static __inline__ void __ATTRS_o_ai vec_stvrx(vector pixel __a, int __b,
   13450                                               vector pixel *__c) {
   13451   return vec_st(
   13452       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13453       __b, __c);
   13454 }
   13455 
   13456 static __inline__ void __ATTRS_o_ai vec_stvrx(vector int __a, int __b,
   13457                                               int *__c) {
   13458   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   13459                 __c);
   13460 }
   13461 
   13462 static __inline__ void __ATTRS_o_ai vec_stvrx(vector int __a, int __b,
   13463                                               vector int *__c) {
   13464   return vec_st(
   13465       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13466       __b, __c);
   13467 }
   13468 
   13469 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b,
   13470                                               unsigned int *__c) {
   13471   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   13472                 __c);
   13473 }
   13474 
   13475 static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b,
   13476                                               vector unsigned int *__c) {
   13477   return vec_st(
   13478       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13479       __b, __c);
   13480 }
   13481 
   13482 static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool int __a, int __b,
   13483                                               vector bool int *__c) {
   13484   return vec_st(
   13485       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13486       __b, __c);
   13487 }
   13488 
   13489 static __inline__ void __ATTRS_o_ai vec_stvrx(vector float __a, int __b,
   13490                                               vector float *__c) {
   13491   return vec_st(
   13492       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13493       __b, __c);
   13494 }
   13495 
   13496 /* vec_stvrxl */
   13497 
   13498 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b,
   13499                                                signed char *__c) {
   13500   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   13501                  __c);
   13502 }
   13503 
   13504 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b,
   13505                                                vector signed char *__c) {
   13506   return vec_stl(
   13507       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13508       __b, __c);
   13509 }
   13510 
   13511 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a,
   13512                                                int __b, unsigned char *__c) {
   13513   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   13514                  __c);
   13515 }
   13516 
   13517 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a,
   13518                                                int __b,
   13519                                                vector unsigned char *__c) {
   13520   return vec_stl(
   13521       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13522       __b, __c);
   13523 }
   13524 
   13525 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool char __a, int __b,
   13526                                                vector bool char *__c) {
   13527   return vec_stl(
   13528       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13529       __b, __c);
   13530 }
   13531 
   13532 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b,
   13533                                                short *__c) {
   13534   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   13535                  __c);
   13536 }
   13537 
   13538 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b,
   13539                                                vector short *__c) {
   13540   return vec_stl(
   13541       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13542       __b, __c);
   13543 }
   13544 
   13545 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a,
   13546                                                int __b, unsigned short *__c) {
   13547   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   13548                  __c);
   13549 }
   13550 
   13551 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a,
   13552                                                int __b,
   13553                                                vector unsigned short *__c) {
   13554   return vec_stl(
   13555       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13556       __b, __c);
   13557 }
   13558 
   13559 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool short __a, int __b,
   13560                                                vector bool short *__c) {
   13561   return vec_stl(
   13562       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13563       __b, __c);
   13564 }
   13565 
   13566 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector pixel __a, int __b,
   13567                                                vector pixel *__c) {
   13568   return vec_stl(
   13569       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13570       __b, __c);
   13571 }
   13572 
   13573 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b,
   13574                                                int *__c) {
   13575   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   13576                  __c);
   13577 }
   13578 
   13579 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b,
   13580                                                vector int *__c) {
   13581   return vec_stl(
   13582       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13583       __b, __c);
   13584 }
   13585 
   13586 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b,
   13587                                                unsigned int *__c) {
   13588   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
   13589                  __c);
   13590 }
   13591 
   13592 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b,
   13593                                                vector unsigned int *__c) {
   13594   return vec_stl(
   13595       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13596       __b, __c);
   13597 }
   13598 
   13599 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool int __a, int __b,
   13600                                                vector bool int *__c) {
   13601   return vec_stl(
   13602       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13603       __b, __c);
   13604 }
   13605 
   13606 static __inline__ void __ATTRS_o_ai vec_stvrxl(vector float __a, int __b,
   13607                                                vector float *__c) {
   13608   return vec_stl(
   13609       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
   13610       __b, __c);
   13611 }
   13612 
   13613 /* vec_promote */
   13614 
   13615 static __inline__ vector signed char __ATTRS_o_ai vec_promote(signed char __a,
   13616                                                               int __b) {
   13617   vector signed char __res = (vector signed char)(0);
   13618   __res[__b] = __a;
   13619   return __res;
   13620 }
   13621 
   13622 static __inline__ vector unsigned char __ATTRS_o_ai
   13623 vec_promote(unsigned char __a, int __b) {
   13624   vector unsigned char __res = (vector unsigned char)(0);
   13625   __res[__b] = __a;
   13626   return __res;
   13627 }
   13628 
   13629 static __inline__ vector short __ATTRS_o_ai vec_promote(short __a, int __b) {
   13630   vector short __res = (vector short)(0);
   13631   __res[__b] = __a;
   13632   return __res;
   13633 }
   13634 
   13635 static __inline__ vector unsigned short __ATTRS_o_ai
   13636 vec_promote(unsigned short __a, int __b) {
   13637   vector unsigned short __res = (vector unsigned short)(0);
   13638   __res[__b] = __a;
   13639   return __res;
   13640 }
   13641 
   13642 static __inline__ vector int __ATTRS_o_ai vec_promote(int __a, int __b) {
   13643   vector int __res = (vector int)(0);
   13644   __res[__b] = __a;
   13645   return __res;
   13646 }
   13647 
   13648 static __inline__ vector unsigned int __ATTRS_o_ai vec_promote(unsigned int __a,
   13649                                                                int __b) {
   13650   vector unsigned int __res = (vector unsigned int)(0);
   13651   __res[__b] = __a;
   13652   return __res;
   13653 }
   13654 
   13655 static __inline__ vector float __ATTRS_o_ai vec_promote(float __a, int __b) {
   13656   vector float __res = (vector float)(0);
   13657   __res[__b] = __a;
   13658   return __res;
   13659 }
   13660 
   13661 /* vec_splats */
   13662 
   13663 static __inline__ vector signed char __ATTRS_o_ai vec_splats(signed char __a) {
   13664   return (vector signed char)(__a);
   13665 }
   13666 
   13667 static __inline__ vector unsigned char __ATTRS_o_ai
   13668 vec_splats(unsigned char __a) {
   13669   return (vector unsigned char)(__a);
   13670 }
   13671 
   13672 static __inline__ vector short __ATTRS_o_ai vec_splats(short __a) {
   13673   return (vector short)(__a);
   13674 }
   13675 
   13676 static __inline__ vector unsigned short __ATTRS_o_ai
   13677 vec_splats(unsigned short __a) {
   13678   return (vector unsigned short)(__a);
   13679 }
   13680 
   13681 static __inline__ vector int __ATTRS_o_ai vec_splats(int __a) {
   13682   return (vector int)(__a);
   13683 }
   13684 
   13685 static __inline__ vector unsigned int __ATTRS_o_ai
   13686 vec_splats(unsigned int __a) {
   13687   return (vector unsigned int)(__a);
   13688 }
   13689 
   13690 #ifdef __VSX__
   13691 static __inline__ vector signed long long __ATTRS_o_ai
   13692 vec_splats(signed long long __a) {
   13693   return (vector signed long long)(__a);
   13694 }
   13695 
   13696 static __inline__ vector unsigned long long __ATTRS_o_ai
   13697 vec_splats(unsigned long long __a) {
   13698   return (vector unsigned long long)(__a);
   13699 }
   13700 
   13701 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   13702 static __inline__ vector signed __int128 __ATTRS_o_ai
   13703 vec_splats(signed __int128 __a) {
   13704   return (vector signed __int128)(__a);
   13705 }
   13706 
   13707 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   13708 vec_splats(unsigned __int128 __a) {
   13709   return (vector unsigned __int128)(__a);
   13710 }
   13711 
   13712 #endif
   13713 
   13714 static __inline__ vector double __ATTRS_o_ai vec_splats(double __a) {
   13715   return (vector double)(__a);
   13716 }
   13717 #endif
   13718 
   13719 static __inline__ vector float __ATTRS_o_ai vec_splats(float __a) {
   13720   return (vector float)(__a);
   13721 }
   13722 
   13723 /* ----------------------------- predicates --------------------------------- */
   13724 
   13725 /* vec_all_eq */
   13726 
   13727 static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed char __a,
   13728                                               vector signed char __b) {
   13729   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
   13730                                       (vector char)__b);
   13731 }
   13732 
   13733 static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed char __a,
   13734                                               vector bool char __b) {
   13735   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
   13736                                       (vector char)__b);
   13737 }
   13738 
   13739 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned char __a,
   13740                                               vector unsigned char __b) {
   13741   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
   13742                                       (vector char)__b);
   13743 }
   13744 
   13745 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned char __a,
   13746                                               vector bool char __b) {
   13747   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
   13748                                       (vector char)__b);
   13749 }
   13750 
   13751 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
   13752                                               vector signed char __b) {
   13753   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
   13754                                       (vector char)__b);
   13755 }
   13756 
   13757 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
   13758                                               vector unsigned char __b) {
   13759   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
   13760                                       (vector char)__b);
   13761 }
   13762 
   13763 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
   13764                                               vector bool char __b) {
   13765   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
   13766                                       (vector char)__b);
   13767 }
   13768 
   13769 static __inline__ int __ATTRS_o_ai vec_all_eq(vector short __a,
   13770                                               vector short __b) {
   13771   return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, __b);
   13772 }
   13773 
   13774 static __inline__ int __ATTRS_o_ai vec_all_eq(vector short __a,
   13775                                               vector bool short __b) {
   13776   return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, (vector short)__b);
   13777 }
   13778 
   13779 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned short __a,
   13780                                               vector unsigned short __b) {
   13781   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
   13782                                       (vector short)__b);
   13783 }
   13784 
   13785 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned short __a,
   13786                                               vector bool short __b) {
   13787   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
   13788                                       (vector short)__b);
   13789 }
   13790 
   13791 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
   13792                                               vector short __b) {
   13793   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
   13794                                       (vector short)__b);
   13795 }
   13796 
   13797 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
   13798                                               vector unsigned short __b) {
   13799   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
   13800                                       (vector short)__b);
   13801 }
   13802 
   13803 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
   13804                                               vector bool short __b) {
   13805   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
   13806                                       (vector short)__b);
   13807 }
   13808 
   13809 static __inline__ int __ATTRS_o_ai vec_all_eq(vector pixel __a,
   13810                                               vector pixel __b) {
   13811   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
   13812                                       (vector short)__b);
   13813 }
   13814 
   13815 static __inline__ int __ATTRS_o_ai vec_all_eq(vector int __a, vector int __b) {
   13816   return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, __b);
   13817 }
   13818 
   13819 static __inline__ int __ATTRS_o_ai vec_all_eq(vector int __a,
   13820                                               vector bool int __b) {
   13821   return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, (vector int)__b);
   13822 }
   13823 
   13824 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned int __a,
   13825                                               vector unsigned int __b) {
   13826   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
   13827                                       (vector int)__b);
   13828 }
   13829 
   13830 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned int __a,
   13831                                               vector bool int __b) {
   13832   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
   13833                                       (vector int)__b);
   13834 }
   13835 
   13836 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
   13837                                               vector int __b) {
   13838   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
   13839                                       (vector int)__b);
   13840 }
   13841 
   13842 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
   13843                                               vector unsigned int __b) {
   13844   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
   13845                                       (vector int)__b);
   13846 }
   13847 
   13848 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
   13849                                               vector bool int __b) {
   13850   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
   13851                                       (vector int)__b);
   13852 }
   13853 
   13854 #ifdef __POWER8_VECTOR__
   13855 static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed long long __a,
   13856                                               vector signed long long __b) {
   13857   return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, __b);
   13858 }
   13859 
   13860 static __inline__ int __ATTRS_o_ai vec_all_eq(vector long long __a,
   13861                                               vector bool long long __b) {
   13862   return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, (vector long long)__b);
   13863 }
   13864 
   13865 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a,
   13866                                               vector unsigned long long __b) {
   13867   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
   13868                                       (vector long long)__b);
   13869 }
   13870 
   13871 static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a,
   13872                                               vector bool long long __b) {
   13873   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
   13874                                       (vector long long)__b);
   13875 }
   13876 
   13877 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
   13878                                               vector long long __b) {
   13879   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
   13880                                       (vector long long)__b);
   13881 }
   13882 
   13883 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
   13884                                               vector unsigned long long __b) {
   13885   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
   13886                                       (vector long long)__b);
   13887 }
   13888 
   13889 static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
   13890                                               vector bool long long __b) {
   13891   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
   13892                                       (vector long long)__b);
   13893 }
   13894 #endif
   13895 
   13896 static __inline__ int __ATTRS_o_ai vec_all_eq(vector float __a,
   13897                                               vector float __b) {
   13898 #ifdef __VSX__
   13899   return __builtin_vsx_xvcmpeqsp_p(__CR6_LT, __a, __b);
   13900 #else
   13901   return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __b);
   13902 #endif
   13903 }
   13904 
   13905 #ifdef __VSX__
   13906 static __inline__ int __ATTRS_o_ai vec_all_eq(vector double __a,
   13907                                               vector double __b) {
   13908   return __builtin_vsx_xvcmpeqdp_p(__CR6_LT, __a, __b);
   13909 }
   13910 #endif
   13911 
   13912 /* vec_all_ge */
   13913 
   13914 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed char __a,
   13915                                               vector signed char __b) {
   13916   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __b, __a);
   13917 }
   13918 
   13919 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed char __a,
   13920                                               vector bool char __b) {
   13921   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, (vector signed char)__b, __a);
   13922 }
   13923 
   13924 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned char __a,
   13925                                               vector unsigned char __b) {
   13926   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, __a);
   13927 }
   13928 
   13929 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned char __a,
   13930                                               vector bool char __b) {
   13931   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b, __a);
   13932 }
   13933 
   13934 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
   13935                                               vector signed char __b) {
   13936   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b,
   13937                                       (vector unsigned char)__a);
   13938 }
   13939 
   13940 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
   13941                                               vector unsigned char __b) {
   13942   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, (vector unsigned char)__a);
   13943 }
   13944 
   13945 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
   13946                                               vector bool char __b) {
   13947   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b,
   13948                                       (vector unsigned char)__a);
   13949 }
   13950 
   13951 static __inline__ int __ATTRS_o_ai vec_all_ge(vector short __a,
   13952                                               vector short __b) {
   13953   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __b, __a);
   13954 }
   13955 
   13956 static __inline__ int __ATTRS_o_ai vec_all_ge(vector short __a,
   13957                                               vector bool short __b) {
   13958   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, (vector short)__b, __a);
   13959 }
   13960 
   13961 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned short __a,
   13962                                               vector unsigned short __b) {
   13963   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b, __a);
   13964 }
   13965 
   13966 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned short __a,
   13967                                               vector bool short __b) {
   13968   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
   13969                                       __a);
   13970 }
   13971 
   13972 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
   13973                                               vector short __b) {
   13974   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
   13975                                       (vector unsigned short)__a);
   13976 }
   13977 
   13978 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
   13979                                               vector unsigned short __b) {
   13980   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b,
   13981                                       (vector unsigned short)__a);
   13982 }
   13983 
   13984 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
   13985                                               vector bool short __b) {
   13986   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
   13987                                       (vector unsigned short)__a);
   13988 }
   13989 
   13990 static __inline__ int __ATTRS_o_ai vec_all_ge(vector int __a, vector int __b) {
   13991   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __b, __a);
   13992 }
   13993 
   13994 static __inline__ int __ATTRS_o_ai vec_all_ge(vector int __a,
   13995                                               vector bool int __b) {
   13996   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, (vector int)__b, __a);
   13997 }
   13998 
   13999 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned int __a,
   14000                                               vector unsigned int __b) {
   14001   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, __a);
   14002 }
   14003 
   14004 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned int __a,
   14005                                               vector bool int __b) {
   14006   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b, __a);
   14007 }
   14008 
   14009 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
   14010                                               vector int __b) {
   14011   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b,
   14012                                       (vector unsigned int)__a);
   14013 }
   14014 
   14015 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
   14016                                               vector unsigned int __b) {
   14017   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, (vector unsigned int)__a);
   14018 }
   14019 
   14020 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
   14021                                               vector bool int __b) {
   14022   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b,
   14023                                       (vector unsigned int)__a);
   14024 }
   14025 
   14026 #ifdef __POWER8_VECTOR__
   14027 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed long long __a,
   14028                                               vector signed long long __b) {
   14029   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __b, __a);
   14030 }
   14031 static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed long long __a,
   14032                                               vector bool long long __b) {
   14033   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, (vector signed long long)__b,
   14034                                       __a);
   14035 }
   14036 
   14037 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a,
   14038                                               vector unsigned long long __b) {
   14039   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b, __a);
   14040 }
   14041 
   14042 static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a,
   14043                                               vector bool long long __b) {
   14044   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
   14045                                       __a);
   14046 }
   14047 
   14048 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
   14049                                               vector signed long long __b) {
   14050   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
   14051                                       (vector unsigned long long)__a);
   14052 }
   14053 
   14054 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
   14055                                               vector unsigned long long __b) {
   14056   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b,
   14057                                       (vector unsigned long long)__a);
   14058 }
   14059 
   14060 static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
   14061                                               vector bool long long __b) {
   14062   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
   14063                                       (vector unsigned long long)__a);
   14064 }
   14065 #endif
   14066 
   14067 static __inline__ int __ATTRS_o_ai vec_all_ge(vector float __a,
   14068                                               vector float __b) {
   14069 #ifdef __VSX__
   14070   return __builtin_vsx_xvcmpgesp_p(__CR6_LT, __a, __b);
   14071 #else
   14072   return __builtin_altivec_vcmpgefp_p(__CR6_LT, __a, __b);
   14073 #endif
   14074 }
   14075 
   14076 #ifdef __VSX__
   14077 static __inline__ int __ATTRS_o_ai vec_all_ge(vector double __a,
   14078                                               vector double __b) {
   14079   return __builtin_vsx_xvcmpgedp_p(__CR6_LT, __a, __b);
   14080 }
   14081 #endif
   14082 
   14083 /* vec_all_gt */
   14084 
   14085 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed char __a,
   14086                                               vector signed char __b) {
   14087   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, __b);
   14088 }
   14089 
   14090 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed char __a,
   14091                                               vector bool char __b) {
   14092   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, (vector signed char)__b);
   14093 }
   14094 
   14095 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned char __a,
   14096                                               vector unsigned char __b) {
   14097   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, __b);
   14098 }
   14099 
   14100 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned char __a,
   14101                                               vector bool char __b) {
   14102   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, (vector unsigned char)__b);
   14103 }
   14104 
   14105 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
   14106                                               vector signed char __b) {
   14107   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a,
   14108                                       (vector unsigned char)__b);
   14109 }
   14110 
   14111 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
   14112                                               vector unsigned char __b) {
   14113   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a, __b);
   14114 }
   14115 
   14116 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
   14117                                               vector bool char __b) {
   14118   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a,
   14119                                       (vector unsigned char)__b);
   14120 }
   14121 
   14122 static __inline__ int __ATTRS_o_ai vec_all_gt(vector short __a,
   14123                                               vector short __b) {
   14124   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, __b);
   14125 }
   14126 
   14127 static __inline__ int __ATTRS_o_ai vec_all_gt(vector short __a,
   14128                                               vector bool short __b) {
   14129   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, (vector short)__b);
   14130 }
   14131 
   14132 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned short __a,
   14133                                               vector unsigned short __b) {
   14134   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a, __b);
   14135 }
   14136 
   14137 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned short __a,
   14138                                               vector bool short __b) {
   14139   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a,
   14140                                       (vector unsigned short)__b);
   14141 }
   14142 
   14143 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
   14144                                               vector short __b) {
   14145   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
   14146                                       (vector unsigned short)__b);
   14147 }
   14148 
   14149 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
   14150                                               vector unsigned short __b) {
   14151   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
   14152                                       __b);
   14153 }
   14154 
   14155 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
   14156                                               vector bool short __b) {
   14157   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
   14158                                       (vector unsigned short)__b);
   14159 }
   14160 
   14161 static __inline__ int __ATTRS_o_ai vec_all_gt(vector int __a, vector int __b) {
   14162   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, __b);
   14163 }
   14164 
   14165 static __inline__ int __ATTRS_o_ai vec_all_gt(vector int __a,
   14166                                               vector bool int __b) {
   14167   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, (vector int)__b);
   14168 }
   14169 
   14170 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned int __a,
   14171                                               vector unsigned int __b) {
   14172   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, __b);
   14173 }
   14174 
   14175 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned int __a,
   14176                                               vector bool int __b) {
   14177   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, (vector unsigned int)__b);
   14178 }
   14179 
   14180 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
   14181                                               vector int __b) {
   14182   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a,
   14183                                       (vector unsigned int)__b);
   14184 }
   14185 
   14186 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
   14187                                               vector unsigned int __b) {
   14188   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a, __b);
   14189 }
   14190 
   14191 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
   14192                                               vector bool int __b) {
   14193   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a,
   14194                                       (vector unsigned int)__b);
   14195 }
   14196 
   14197 #ifdef __POWER8_VECTOR__
   14198 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed long long __a,
   14199                                               vector signed long long __b) {
   14200   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a, __b);
   14201 }
   14202 static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed long long __a,
   14203                                               vector bool long long __b) {
   14204   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a,
   14205                                       (vector signed long long)__b);
   14206 }
   14207 
   14208 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a,
   14209                                               vector unsigned long long __b) {
   14210   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a, __b);
   14211 }
   14212 
   14213 static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a,
   14214                                               vector bool long long __b) {
   14215   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a,
   14216                                       (vector unsigned long long)__b);
   14217 }
   14218 
   14219 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
   14220                                               vector signed long long __b) {
   14221   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
   14222                                       (vector unsigned long long)__b);
   14223 }
   14224 
   14225 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
   14226                                               vector unsigned long long __b) {
   14227   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
   14228                                       __b);
   14229 }
   14230 
   14231 static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
   14232                                               vector bool long long __b) {
   14233   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
   14234                                       (vector unsigned long long)__b);
   14235 }
   14236 #endif
   14237 
   14238 static __inline__ int __ATTRS_o_ai vec_all_gt(vector float __a,
   14239                                               vector float __b) {
   14240 #ifdef __VSX__
   14241   return __builtin_vsx_xvcmpgtsp_p(__CR6_LT, __a, __b);
   14242 #else
   14243   return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __a, __b);
   14244 #endif
   14245 }
   14246 
   14247 #ifdef __VSX__
   14248 static __inline__ int __ATTRS_o_ai vec_all_gt(vector double __a,
   14249                                               vector double __b) {
   14250   return __builtin_vsx_xvcmpgtdp_p(__CR6_LT, __a, __b);
   14251 }
   14252 #endif
   14253 
   14254 /* vec_all_in */
   14255 
   14256 static __inline__ int __attribute__((__always_inline__))
   14257 vec_all_in(vector float __a, vector float __b) {
   14258   return __builtin_altivec_vcmpbfp_p(__CR6_EQ, __a, __b);
   14259 }
   14260 
   14261 /* vec_all_le */
   14262 
   14263 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed char __a,
   14264                                               vector signed char __b) {
   14265   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, __b);
   14266 }
   14267 
   14268 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed char __a,
   14269                                               vector bool char __b) {
   14270   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, (vector signed char)__b);
   14271 }
   14272 
   14273 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned char __a,
   14274                                               vector unsigned char __b) {
   14275   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, __b);
   14276 }
   14277 
   14278 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned char __a,
   14279                                               vector bool char __b) {
   14280   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, (vector unsigned char)__b);
   14281 }
   14282 
   14283 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
   14284                                               vector signed char __b) {
   14285   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a,
   14286                                       (vector unsigned char)__b);
   14287 }
   14288 
   14289 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
   14290                                               vector unsigned char __b) {
   14291   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a, __b);
   14292 }
   14293 
   14294 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
   14295                                               vector bool char __b) {
   14296   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a,
   14297                                       (vector unsigned char)__b);
   14298 }
   14299 
   14300 static __inline__ int __ATTRS_o_ai vec_all_le(vector short __a,
   14301                                               vector short __b) {
   14302   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, __b);
   14303 }
   14304 
   14305 static __inline__ int __ATTRS_o_ai vec_all_le(vector short __a,
   14306                                               vector bool short __b) {
   14307   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, (vector short)__b);
   14308 }
   14309 
   14310 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned short __a,
   14311                                               vector unsigned short __b) {
   14312   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a, __b);
   14313 }
   14314 
   14315 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned short __a,
   14316                                               vector bool short __b) {
   14317   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a,
   14318                                       (vector unsigned short)__b);
   14319 }
   14320 
   14321 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
   14322                                               vector short __b) {
   14323   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
   14324                                       (vector unsigned short)__b);
   14325 }
   14326 
   14327 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
   14328                                               vector unsigned short __b) {
   14329   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
   14330                                       __b);
   14331 }
   14332 
   14333 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
   14334                                               vector bool short __b) {
   14335   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
   14336                                       (vector unsigned short)__b);
   14337 }
   14338 
   14339 static __inline__ int __ATTRS_o_ai vec_all_le(vector int __a, vector int __b) {
   14340   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, __b);
   14341 }
   14342 
   14343 static __inline__ int __ATTRS_o_ai vec_all_le(vector int __a,
   14344                                               vector bool int __b) {
   14345   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, (vector int)__b);
   14346 }
   14347 
   14348 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned int __a,
   14349                                               vector unsigned int __b) {
   14350   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, __b);
   14351 }
   14352 
   14353 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned int __a,
   14354                                               vector bool int __b) {
   14355   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, (vector unsigned int)__b);
   14356 }
   14357 
   14358 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
   14359                                               vector int __b) {
   14360   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a,
   14361                                       (vector unsigned int)__b);
   14362 }
   14363 
   14364 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
   14365                                               vector unsigned int __b) {
   14366   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a, __b);
   14367 }
   14368 
   14369 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
   14370                                               vector bool int __b) {
   14371   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a,
   14372                                       (vector unsigned int)__b);
   14373 }
   14374 
   14375 #ifdef __POWER8_VECTOR__
   14376 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed long long __a,
   14377                                               vector signed long long __b) {
   14378   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a, __b);
   14379 }
   14380 
   14381 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned long long __a,
   14382                                               vector unsigned long long __b) {
   14383   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a, __b);
   14384 }
   14385 
   14386 static __inline__ int __ATTRS_o_ai vec_all_le(vector signed long long __a,
   14387                                               vector bool long long __b) {
   14388   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a,
   14389                                       (vector signed long long)__b);
   14390 }
   14391 
   14392 static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned long long __a,
   14393                                               vector bool long long __b) {
   14394   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a,
   14395                                       (vector unsigned long long)__b);
   14396 }
   14397 
   14398 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
   14399                                               vector signed long long __b) {
   14400   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
   14401                                       (vector unsigned long long)__b);
   14402 }
   14403 
   14404 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
   14405                                               vector unsigned long long __b) {
   14406   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
   14407                                       __b);
   14408 }
   14409 
   14410 static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
   14411                                               vector bool long long __b) {
   14412   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
   14413                                       (vector unsigned long long)__b);
   14414 }
   14415 #endif
   14416 
   14417 static __inline__ int __ATTRS_o_ai vec_all_le(vector float __a,
   14418                                               vector float __b) {
   14419 #ifdef __VSX__
   14420   return __builtin_vsx_xvcmpgesp_p(__CR6_LT, __b, __a);
   14421 #else
   14422   return __builtin_altivec_vcmpgefp_p(__CR6_LT, __b, __a);
   14423 #endif
   14424 }
   14425 
   14426 #ifdef __VSX__
   14427 static __inline__ int __ATTRS_o_ai vec_all_le(vector double __a,
   14428                                               vector double __b) {
   14429   return __builtin_vsx_xvcmpgedp_p(__CR6_LT, __b, __a);
   14430 }
   14431 #endif
   14432 
   14433 /* vec_all_lt */
   14434 
   14435 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed char __a,
   14436                                               vector signed char __b) {
   14437   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __b, __a);
   14438 }
   14439 
   14440 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed char __a,
   14441                                               vector bool char __b) {
   14442   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, (vector signed char)__b, __a);
   14443 }
   14444 
   14445 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned char __a,
   14446                                               vector unsigned char __b) {
   14447   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, __a);
   14448 }
   14449 
   14450 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned char __a,
   14451                                               vector bool char __b) {
   14452   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b, __a);
   14453 }
   14454 
   14455 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
   14456                                               vector signed char __b) {
   14457   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b,
   14458                                       (vector unsigned char)__a);
   14459 }
   14460 
   14461 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
   14462                                               vector unsigned char __b) {
   14463   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, (vector unsigned char)__a);
   14464 }
   14465 
   14466 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
   14467                                               vector bool char __b) {
   14468   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b,
   14469                                       (vector unsigned char)__a);
   14470 }
   14471 
   14472 static __inline__ int __ATTRS_o_ai vec_all_lt(vector short __a,
   14473                                               vector short __b) {
   14474   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __b, __a);
   14475 }
   14476 
   14477 static __inline__ int __ATTRS_o_ai vec_all_lt(vector short __a,
   14478                                               vector bool short __b) {
   14479   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, (vector short)__b, __a);
   14480 }
   14481 
   14482 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned short __a,
   14483                                               vector unsigned short __b) {
   14484   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b, __a);
   14485 }
   14486 
   14487 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned short __a,
   14488                                               vector bool short __b) {
   14489   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
   14490                                       __a);
   14491 }
   14492 
   14493 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
   14494                                               vector short __b) {
   14495   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
   14496                                       (vector unsigned short)__a);
   14497 }
   14498 
   14499 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
   14500                                               vector unsigned short __b) {
   14501   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b,
   14502                                       (vector unsigned short)__a);
   14503 }
   14504 
   14505 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
   14506                                               vector bool short __b) {
   14507   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
   14508                                       (vector unsigned short)__a);
   14509 }
   14510 
   14511 static __inline__ int __ATTRS_o_ai vec_all_lt(vector int __a, vector int __b) {
   14512   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __b, __a);
   14513 }
   14514 
   14515 static __inline__ int __ATTRS_o_ai vec_all_lt(vector int __a,
   14516                                               vector bool int __b) {
   14517   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, (vector int)__b, __a);
   14518 }
   14519 
   14520 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned int __a,
   14521                                               vector unsigned int __b) {
   14522   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, __a);
   14523 }
   14524 
   14525 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned int __a,
   14526                                               vector bool int __b) {
   14527   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b, __a);
   14528 }
   14529 
   14530 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
   14531                                               vector int __b) {
   14532   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b,
   14533                                       (vector unsigned int)__a);
   14534 }
   14535 
   14536 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
   14537                                               vector unsigned int __b) {
   14538   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, (vector unsigned int)__a);
   14539 }
   14540 
   14541 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
   14542                                               vector bool int __b) {
   14543   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b,
   14544                                       (vector unsigned int)__a);
   14545 }
   14546 
   14547 #ifdef __POWER8_VECTOR__
   14548 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed long long __a,
   14549                                               vector signed long long __b) {
   14550   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __b, __a);
   14551 }
   14552 
   14553 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a,
   14554                                               vector unsigned long long __b) {
   14555   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b, __a);
   14556 }
   14557 
   14558 static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed long long __a,
   14559                                               vector bool long long __b) {
   14560   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, (vector signed long long)__b,
   14561                                       __a);
   14562 }
   14563 
   14564 static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a,
   14565                                               vector bool long long __b) {
   14566   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
   14567                                       __a);
   14568 }
   14569 
   14570 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
   14571                                               vector signed long long __b) {
   14572   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
   14573                                       (vector unsigned long long)__a);
   14574 }
   14575 
   14576 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
   14577                                               vector unsigned long long __b) {
   14578   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b,
   14579                                       (vector unsigned long long)__a);
   14580 }
   14581 
   14582 static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
   14583                                               vector bool long long __b) {
   14584   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
   14585                                       (vector unsigned long long)__a);
   14586 }
   14587 #endif
   14588 
   14589 static __inline__ int __ATTRS_o_ai vec_all_lt(vector float __a,
   14590                                               vector float __b) {
   14591 #ifdef __VSX__
   14592   return __builtin_vsx_xvcmpgtsp_p(__CR6_LT, __b, __a);
   14593 #else
   14594   return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __b, __a);
   14595 #endif
   14596 }
   14597 
   14598 #ifdef __VSX__
   14599 static __inline__ int __ATTRS_o_ai vec_all_lt(vector double __a,
   14600                                               vector double __b) {
   14601   return __builtin_vsx_xvcmpgtdp_p(__CR6_LT, __b, __a);
   14602 }
   14603 #endif
   14604 
   14605 /* vec_all_nan */
   14606 
   14607 static __inline__ int __ATTRS_o_ai vec_all_nan(vector float __a) {
   14608 #ifdef __VSX__
   14609   return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ, __a, __a);
   14610 #else
   14611   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __a);
   14612 #endif
   14613 }
   14614 
   14615 #ifdef __VSX__
   14616 static __inline__ int __ATTRS_o_ai vec_all_nan(vector double __a) {
   14617   return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __a);
   14618 }
   14619 #endif
   14620 
   14621 /* vec_all_ne */
   14622 
   14623 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed char __a,
   14624                                               vector signed char __b) {
   14625   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
   14626                                       (vector char)__b);
   14627 }
   14628 
   14629 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed char __a,
   14630                                               vector bool char __b) {
   14631   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
   14632                                       (vector char)__b);
   14633 }
   14634 
   14635 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned char __a,
   14636                                               vector unsigned char __b) {
   14637   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
   14638                                       (vector char)__b);
   14639 }
   14640 
   14641 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned char __a,
   14642                                               vector bool char __b) {
   14643   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
   14644                                       (vector char)__b);
   14645 }
   14646 
   14647 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
   14648                                               vector signed char __b) {
   14649   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
   14650                                       (vector char)__b);
   14651 }
   14652 
   14653 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
   14654                                               vector unsigned char __b) {
   14655   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
   14656                                       (vector char)__b);
   14657 }
   14658 
   14659 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
   14660                                               vector bool char __b) {
   14661   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
   14662                                       (vector char)__b);
   14663 }
   14664 
   14665 static __inline__ int __ATTRS_o_ai vec_all_ne(vector short __a,
   14666                                               vector short __b) {
   14667   return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, __b);
   14668 }
   14669 
   14670 static __inline__ int __ATTRS_o_ai vec_all_ne(vector short __a,
   14671                                               vector bool short __b) {
   14672   return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, (vector short)__b);
   14673 }
   14674 
   14675 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned short __a,
   14676                                               vector unsigned short __b) {
   14677   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
   14678                                       (vector short)__b);
   14679 }
   14680 
   14681 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned short __a,
   14682                                               vector bool short __b) {
   14683   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
   14684                                       (vector short)__b);
   14685 }
   14686 
   14687 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
   14688                                               vector short __b) {
   14689   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
   14690                                       (vector short)__b);
   14691 }
   14692 
   14693 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
   14694                                               vector unsigned short __b) {
   14695   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
   14696                                       (vector short)__b);
   14697 }
   14698 
   14699 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
   14700                                               vector bool short __b) {
   14701   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
   14702                                       (vector short)__b);
   14703 }
   14704 
   14705 static __inline__ int __ATTRS_o_ai vec_all_ne(vector pixel __a,
   14706                                               vector pixel __b) {
   14707   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
   14708                                       (vector short)__b);
   14709 }
   14710 
   14711 static __inline__ int __ATTRS_o_ai vec_all_ne(vector int __a, vector int __b) {
   14712   return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, __b);
   14713 }
   14714 
   14715 static __inline__ int __ATTRS_o_ai vec_all_ne(vector int __a,
   14716                                               vector bool int __b) {
   14717   return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, (vector int)__b);
   14718 }
   14719 
   14720 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned int __a,
   14721                                               vector unsigned int __b) {
   14722   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
   14723                                       (vector int)__b);
   14724 }
   14725 
   14726 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned int __a,
   14727                                               vector bool int __b) {
   14728   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
   14729                                       (vector int)__b);
   14730 }
   14731 
   14732 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
   14733                                               vector int __b) {
   14734   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
   14735                                       (vector int)__b);
   14736 }
   14737 
   14738 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
   14739                                               vector unsigned int __b) {
   14740   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
   14741                                       (vector int)__b);
   14742 }
   14743 
   14744 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
   14745                                               vector bool int __b) {
   14746   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
   14747                                       (vector int)__b);
   14748 }
   14749 
   14750 #ifdef __POWER8_VECTOR__
   14751 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed long long __a,
   14752                                               vector signed long long __b) {
   14753   return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a, __b);
   14754 }
   14755 
   14756 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a,
   14757                                               vector unsigned long long __b) {
   14758   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector long long)__a,
   14759                                       (vector long long)__b);
   14760 }
   14761 
   14762 static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed long long __a,
   14763                                               vector bool long long __b) {
   14764   return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a,
   14765                                       (vector signed long long)__b);
   14766 }
   14767 
   14768 static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a,
   14769                                               vector bool long long __b) {
   14770   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
   14771                                       (vector signed long long)__b);
   14772 }
   14773 
   14774 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
   14775                                               vector signed long long __b) {
   14776   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
   14777                                       (vector signed long long)__b);
   14778 }
   14779 
   14780 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
   14781                                               vector unsigned long long __b) {
   14782   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
   14783                                       (vector signed long long)__b);
   14784 }
   14785 
   14786 static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
   14787                                               vector bool long long __b) {
   14788   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
   14789                                       (vector signed long long)__b);
   14790 }
   14791 #endif
   14792 
   14793 static __inline__ int __ATTRS_o_ai vec_all_ne(vector float __a,
   14794                                               vector float __b) {
   14795 #ifdef __VSX__
   14796   return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __b);
   14797 #else
   14798   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __b);
   14799 #endif
   14800 }
   14801 
   14802 #ifdef __VSX__
   14803 static __inline__ int __ATTRS_o_ai vec_all_ne(vector double __a,
   14804                                               vector double __b) {
   14805   return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __b);
   14806 }
   14807 #endif
   14808 
   14809 /* vec_all_nge */
   14810 
   14811 static __inline__ int __ATTRS_o_ai vec_all_nge(vector float __a,
   14812                                                vector float __b) {
   14813 #ifdef __VSX__
   14814   return __builtin_vsx_xvcmpgesp_p(__CR6_EQ, __a, __b);
   14815 #else
   14816   return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __a, __b);
   14817 #endif
   14818 }
   14819 
   14820 #ifdef __VSX__
   14821 static __inline__ int __ATTRS_o_ai vec_all_nge(vector double __a,
   14822                                                vector double __b) {
   14823   return __builtin_vsx_xvcmpgedp_p(__CR6_EQ, __a, __b);
   14824 }
   14825 #endif
   14826 
   14827 /* vec_all_ngt */
   14828 
   14829 static __inline__ int __ATTRS_o_ai vec_all_ngt(vector float __a,
   14830                                                vector float __b) {
   14831 #ifdef __VSX__
   14832   return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ, __a, __b);
   14833 #else
   14834   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __a, __b);
   14835 #endif
   14836 }
   14837 
   14838 #ifdef __VSX__
   14839 static __inline__ int __ATTRS_o_ai vec_all_ngt(vector double __a,
   14840                                                vector double __b) {
   14841   return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ, __a, __b);
   14842 }
   14843 #endif
   14844 
   14845 /* vec_all_nle */
   14846 
   14847 static __inline__ int __attribute__((__always_inline__))
   14848 vec_all_nle(vector float __a, vector float __b) {
   14849   return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __b, __a);
   14850 }
   14851 
   14852 /* vec_all_nlt */
   14853 
   14854 static __inline__ int __attribute__((__always_inline__))
   14855 vec_all_nlt(vector float __a, vector float __b) {
   14856   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __b, __a);
   14857 }
   14858 
   14859 /* vec_all_numeric */
   14860 
   14861 static __inline__ int __attribute__((__always_inline__))
   14862 vec_all_numeric(vector float __a) {
   14863   return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __a);
   14864 }
   14865 
   14866 /* vec_any_eq */
   14867 
   14868 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed char __a,
   14869                                               vector signed char __b) {
   14870   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
   14871                                       (vector char)__b);
   14872 }
   14873 
   14874 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed char __a,
   14875                                               vector bool char __b) {
   14876   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
   14877                                       (vector char)__b);
   14878 }
   14879 
   14880 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned char __a,
   14881                                               vector unsigned char __b) {
   14882   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
   14883                                       (vector char)__b);
   14884 }
   14885 
   14886 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned char __a,
   14887                                               vector bool char __b) {
   14888   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
   14889                                       (vector char)__b);
   14890 }
   14891 
   14892 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
   14893                                               vector signed char __b) {
   14894   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
   14895                                       (vector char)__b);
   14896 }
   14897 
   14898 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
   14899                                               vector unsigned char __b) {
   14900   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
   14901                                       (vector char)__b);
   14902 }
   14903 
   14904 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
   14905                                               vector bool char __b) {
   14906   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
   14907                                       (vector char)__b);
   14908 }
   14909 
   14910 static __inline__ int __ATTRS_o_ai vec_any_eq(vector short __a,
   14911                                               vector short __b) {
   14912   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, __b);
   14913 }
   14914 
   14915 static __inline__ int __ATTRS_o_ai vec_any_eq(vector short __a,
   14916                                               vector bool short __b) {
   14917   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, (vector short)__b);
   14918 }
   14919 
   14920 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned short __a,
   14921                                               vector unsigned short __b) {
   14922   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
   14923                                       (vector short)__b);
   14924 }
   14925 
   14926 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned short __a,
   14927                                               vector bool short __b) {
   14928   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
   14929                                       (vector short)__b);
   14930 }
   14931 
   14932 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
   14933                                               vector short __b) {
   14934   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
   14935                                       (vector short)__b);
   14936 }
   14937 
   14938 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
   14939                                               vector unsigned short __b) {
   14940   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
   14941                                       (vector short)__b);
   14942 }
   14943 
   14944 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
   14945                                               vector bool short __b) {
   14946   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
   14947                                       (vector short)__b);
   14948 }
   14949 
   14950 static __inline__ int __ATTRS_o_ai vec_any_eq(vector pixel __a,
   14951                                               vector pixel __b) {
   14952   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
   14953                                       (vector short)__b);
   14954 }
   14955 
   14956 static __inline__ int __ATTRS_o_ai vec_any_eq(vector int __a, vector int __b) {
   14957   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, __b);
   14958 }
   14959 
   14960 static __inline__ int __ATTRS_o_ai vec_any_eq(vector int __a,
   14961                                               vector bool int __b) {
   14962   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, (vector int)__b);
   14963 }
   14964 
   14965 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned int __a,
   14966                                               vector unsigned int __b) {
   14967   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
   14968                                       (vector int)__b);
   14969 }
   14970 
   14971 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned int __a,
   14972                                               vector bool int __b) {
   14973   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
   14974                                       (vector int)__b);
   14975 }
   14976 
   14977 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
   14978                                               vector int __b) {
   14979   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
   14980                                       (vector int)__b);
   14981 }
   14982 
   14983 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
   14984                                               vector unsigned int __b) {
   14985   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
   14986                                       (vector int)__b);
   14987 }
   14988 
   14989 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
   14990                                               vector bool int __b) {
   14991   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
   14992                                       (vector int)__b);
   14993 }
   14994 
   14995 #ifdef __POWER8_VECTOR__
   14996 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed long long __a,
   14997                                               vector signed long long __b) {
   14998   return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a, __b);
   14999 }
   15000 
   15001 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a,
   15002                                               vector unsigned long long __b) {
   15003   return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, (vector long long)__a,
   15004                                       (vector long long)__b);
   15005 }
   15006 
   15007 static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed long long __a,
   15008                                               vector bool long long __b) {
   15009   return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a,
   15010                                       (vector signed long long)__b);
   15011 }
   15012 
   15013 static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a,
   15014                                               vector bool long long __b) {
   15015   return __builtin_altivec_vcmpequd_p(
   15016       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
   15017 }
   15018 
   15019 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
   15020                                               vector signed long long __b) {
   15021   return __builtin_altivec_vcmpequd_p(
   15022       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
   15023 }
   15024 
   15025 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
   15026                                               vector unsigned long long __b) {
   15027   return __builtin_altivec_vcmpequd_p(
   15028       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
   15029 }
   15030 
   15031 static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
   15032                                               vector bool long long __b) {
   15033   return __builtin_altivec_vcmpequd_p(
   15034       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
   15035 }
   15036 #endif
   15037 
   15038 static __inline__ int __ATTRS_o_ai vec_any_eq(vector float __a,
   15039                                               vector float __b) {
   15040 #ifdef __VSX__
   15041   return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ_REV, __a, __b);
   15042 #else
   15043   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __b);
   15044 #endif
   15045 }
   15046 
   15047 #ifdef __VSX__
   15048 static __inline__ int __ATTRS_o_ai vec_any_eq(vector double __a,
   15049                                               vector double __b) {
   15050   return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ_REV, __a, __b);
   15051 }
   15052 #endif
   15053 
   15054 /* vec_any_ge */
   15055 
   15056 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed char __a,
   15057                                               vector signed char __b) {
   15058   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __b, __a);
   15059 }
   15060 
   15061 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed char __a,
   15062                                               vector bool char __b) {
   15063   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, (vector signed char)__b,
   15064                                       __a);
   15065 }
   15066 
   15067 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned char __a,
   15068                                               vector unsigned char __b) {
   15069   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b, __a);
   15070 }
   15071 
   15072 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned char __a,
   15073                                               vector bool char __b) {
   15074   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
   15075                                       __a);
   15076 }
   15077 
   15078 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
   15079                                               vector signed char __b) {
   15080   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
   15081                                       (vector unsigned char)__a);
   15082 }
   15083 
   15084 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
   15085                                               vector unsigned char __b) {
   15086   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b,
   15087                                       (vector unsigned char)__a);
   15088 }
   15089 
   15090 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
   15091                                               vector bool char __b) {
   15092   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
   15093                                       (vector unsigned char)__a);
   15094 }
   15095 
   15096 static __inline__ int __ATTRS_o_ai vec_any_ge(vector short __a,
   15097                                               vector short __b) {
   15098   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __b, __a);
   15099 }
   15100 
   15101 static __inline__ int __ATTRS_o_ai vec_any_ge(vector short __a,
   15102                                               vector bool short __b) {
   15103   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, (vector short)__b, __a);
   15104 }
   15105 
   15106 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned short __a,
   15107                                               vector unsigned short __b) {
   15108   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b, __a);
   15109 }
   15110 
   15111 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned short __a,
   15112                                               vector bool short __b) {
   15113   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
   15114                                       __a);
   15115 }
   15116 
   15117 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
   15118                                               vector short __b) {
   15119   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
   15120                                       (vector unsigned short)__a);
   15121 }
   15122 
   15123 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
   15124                                               vector unsigned short __b) {
   15125   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b,
   15126                                       (vector unsigned short)__a);
   15127 }
   15128 
   15129 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
   15130                                               vector bool short __b) {
   15131   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
   15132                                       (vector unsigned short)__a);
   15133 }
   15134 
   15135 static __inline__ int __ATTRS_o_ai vec_any_ge(vector int __a, vector int __b) {
   15136   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __b, __a);
   15137 }
   15138 
   15139 static __inline__ int __ATTRS_o_ai vec_any_ge(vector int __a,
   15140                                               vector bool int __b) {
   15141   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, (vector int)__b, __a);
   15142 }
   15143 
   15144 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned int __a,
   15145                                               vector unsigned int __b) {
   15146   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b, __a);
   15147 }
   15148 
   15149 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned int __a,
   15150                                               vector bool int __b) {
   15151   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
   15152                                       __a);
   15153 }
   15154 
   15155 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
   15156                                               vector int __b) {
   15157   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
   15158                                       (vector unsigned int)__a);
   15159 }
   15160 
   15161 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
   15162                                               vector unsigned int __b) {
   15163   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b,
   15164                                       (vector unsigned int)__a);
   15165 }
   15166 
   15167 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
   15168                                               vector bool int __b) {
   15169   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
   15170                                       (vector unsigned int)__a);
   15171 }
   15172 
   15173 #ifdef __POWER8_VECTOR__
   15174 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed long long __a,
   15175                                               vector signed long long __b) {
   15176   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __b, __a);
   15177 }
   15178 
   15179 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a,
   15180                                               vector unsigned long long __b) {
   15181   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b, __a);
   15182 }
   15183 
   15184 static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed long long __a,
   15185                                               vector bool long long __b) {
   15186   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV,
   15187                                       (vector signed long long)__b, __a);
   15188 }
   15189 
   15190 static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a,
   15191                                               vector bool long long __b) {
   15192   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
   15193                                       (vector unsigned long long)__b, __a);
   15194 }
   15195 
   15196 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
   15197                                               vector signed long long __b) {
   15198   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
   15199                                       (vector unsigned long long)__b,
   15200                                       (vector unsigned long long)__a);
   15201 }
   15202 
   15203 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
   15204                                               vector unsigned long long __b) {
   15205   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b,
   15206                                       (vector unsigned long long)__a);
   15207 }
   15208 
   15209 static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
   15210                                               vector bool long long __b) {
   15211   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
   15212                                       (vector unsigned long long)__b,
   15213                                       (vector unsigned long long)__a);
   15214 }
   15215 #endif
   15216 
   15217 static __inline__ int __ATTRS_o_ai vec_any_ge(vector float __a,
   15218                                               vector float __b) {
   15219 #ifdef __VSX__
   15220   return __builtin_vsx_xvcmpgesp_p(__CR6_EQ_REV, __a, __b);
   15221 #else
   15222   return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __a, __b);
   15223 #endif
   15224 }
   15225 
   15226 #ifdef __VSX__
   15227 static __inline__ int __ATTRS_o_ai vec_any_ge(vector double __a,
   15228                                               vector double __b) {
   15229   return __builtin_vsx_xvcmpgedp_p(__CR6_EQ_REV, __a, __b);
   15230 }
   15231 #endif
   15232 
   15233 /* vec_any_gt */
   15234 
   15235 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed char __a,
   15236                                               vector signed char __b) {
   15237   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a, __b);
   15238 }
   15239 
   15240 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed char __a,
   15241                                               vector bool char __b) {
   15242   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a,
   15243                                       (vector signed char)__b);
   15244 }
   15245 
   15246 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned char __a,
   15247                                               vector unsigned char __b) {
   15248   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a, __b);
   15249 }
   15250 
   15251 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned char __a,
   15252                                               vector bool char __b) {
   15253   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a,
   15254                                       (vector unsigned char)__b);
   15255 }
   15256 
   15257 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
   15258                                               vector signed char __b) {
   15259   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
   15260                                       (vector unsigned char)__b);
   15261 }
   15262 
   15263 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
   15264                                               vector unsigned char __b) {
   15265   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
   15266                                       __b);
   15267 }
   15268 
   15269 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
   15270                                               vector bool char __b) {
   15271   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
   15272                                       (vector unsigned char)__b);
   15273 }
   15274 
   15275 static __inline__ int __ATTRS_o_ai vec_any_gt(vector short __a,
   15276                                               vector short __b) {
   15277   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, __b);
   15278 }
   15279 
   15280 static __inline__ int __ATTRS_o_ai vec_any_gt(vector short __a,
   15281                                               vector bool short __b) {
   15282   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, (vector short)__b);
   15283 }
   15284 
   15285 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned short __a,
   15286                                               vector unsigned short __b) {
   15287   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a, __b);
   15288 }
   15289 
   15290 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned short __a,
   15291                                               vector bool short __b) {
   15292   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a,
   15293                                       (vector unsigned short)__b);
   15294 }
   15295 
   15296 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
   15297                                               vector short __b) {
   15298   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
   15299                                       (vector unsigned short)__b);
   15300 }
   15301 
   15302 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
   15303                                               vector unsigned short __b) {
   15304   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
   15305                                       __b);
   15306 }
   15307 
   15308 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
   15309                                               vector bool short __b) {
   15310   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
   15311                                       (vector unsigned short)__b);
   15312 }
   15313 
   15314 static __inline__ int __ATTRS_o_ai vec_any_gt(vector int __a, vector int __b) {
   15315   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, __b);
   15316 }
   15317 
   15318 static __inline__ int __ATTRS_o_ai vec_any_gt(vector int __a,
   15319                                               vector bool int __b) {
   15320   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, (vector int)__b);
   15321 }
   15322 
   15323 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned int __a,
   15324                                               vector unsigned int __b) {
   15325   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a, __b);
   15326 }
   15327 
   15328 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned int __a,
   15329                                               vector bool int __b) {
   15330   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a,
   15331                                       (vector unsigned int)__b);
   15332 }
   15333 
   15334 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
   15335                                               vector int __b) {
   15336   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
   15337                                       (vector unsigned int)__b);
   15338 }
   15339 
   15340 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
   15341                                               vector unsigned int __b) {
   15342   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
   15343                                       __b);
   15344 }
   15345 
   15346 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
   15347                                               vector bool int __b) {
   15348   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
   15349                                       (vector unsigned int)__b);
   15350 }
   15351 
   15352 #ifdef __POWER8_VECTOR__
   15353 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed long long __a,
   15354                                               vector signed long long __b) {
   15355   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a, __b);
   15356 }
   15357 
   15358 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a,
   15359                                               vector unsigned long long __b) {
   15360   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a, __b);
   15361 }
   15362 
   15363 static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed long long __a,
   15364                                               vector bool long long __b) {
   15365   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a,
   15366                                       (vector signed long long)__b);
   15367 }
   15368 
   15369 static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a,
   15370                                               vector bool long long __b) {
   15371   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a,
   15372                                       (vector unsigned long long)__b);
   15373 }
   15374 
   15375 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
   15376                                               vector signed long long __b) {
   15377   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
   15378                                       (vector unsigned long long)__a,
   15379                                       (vector unsigned long long)__b);
   15380 }
   15381 
   15382 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
   15383                                               vector unsigned long long __b) {
   15384   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
   15385                                       (vector unsigned long long)__a, __b);
   15386 }
   15387 
   15388 static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
   15389                                               vector bool long long __b) {
   15390   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
   15391                                       (vector unsigned long long)__a,
   15392                                       (vector unsigned long long)__b);
   15393 }
   15394 #endif
   15395 
   15396 static __inline__ int __ATTRS_o_ai vec_any_gt(vector float __a,
   15397                                               vector float __b) {
   15398 #ifdef __VSX__
   15399   return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ_REV, __a, __b);
   15400 #else
   15401   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __a, __b);
   15402 #endif
   15403 }
   15404 
   15405 #ifdef __VSX__
   15406 static __inline__ int __ATTRS_o_ai vec_any_gt(vector double __a,
   15407                                               vector double __b) {
   15408   return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ_REV, __a, __b);
   15409 }
   15410 #endif
   15411 
   15412 /* vec_any_le */
   15413 
   15414 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed char __a,
   15415                                               vector signed char __b) {
   15416   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a, __b);
   15417 }
   15418 
   15419 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed char __a,
   15420                                               vector bool char __b) {
   15421   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a,
   15422                                       (vector signed char)__b);
   15423 }
   15424 
   15425 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned char __a,
   15426                                               vector unsigned char __b) {
   15427   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a, __b);
   15428 }
   15429 
   15430 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned char __a,
   15431                                               vector bool char __b) {
   15432   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a,
   15433                                       (vector unsigned char)__b);
   15434 }
   15435 
   15436 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
   15437                                               vector signed char __b) {
   15438   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
   15439                                       (vector unsigned char)__b);
   15440 }
   15441 
   15442 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
   15443                                               vector unsigned char __b) {
   15444   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
   15445                                       __b);
   15446 }
   15447 
   15448 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
   15449                                               vector bool char __b) {
   15450   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
   15451                                       (vector unsigned char)__b);
   15452 }
   15453 
   15454 static __inline__ int __ATTRS_o_ai vec_any_le(vector short __a,
   15455                                               vector short __b) {
   15456   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, __b);
   15457 }
   15458 
   15459 static __inline__ int __ATTRS_o_ai vec_any_le(vector short __a,
   15460                                               vector bool short __b) {
   15461   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, (vector short)__b);
   15462 }
   15463 
   15464 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned short __a,
   15465                                               vector unsigned short __b) {
   15466   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a, __b);
   15467 }
   15468 
   15469 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned short __a,
   15470                                               vector bool short __b) {
   15471   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a,
   15472                                       (vector unsigned short)__b);
   15473 }
   15474 
   15475 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
   15476                                               vector short __b) {
   15477   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
   15478                                       (vector unsigned short)__b);
   15479 }
   15480 
   15481 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
   15482                                               vector unsigned short __b) {
   15483   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
   15484                                       __b);
   15485 }
   15486 
   15487 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
   15488                                               vector bool short __b) {
   15489   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
   15490                                       (vector unsigned short)__b);
   15491 }
   15492 
   15493 static __inline__ int __ATTRS_o_ai vec_any_le(vector int __a, vector int __b) {
   15494   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, __b);
   15495 }
   15496 
   15497 static __inline__ int __ATTRS_o_ai vec_any_le(vector int __a,
   15498                                               vector bool int __b) {
   15499   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, (vector int)__b);
   15500 }
   15501 
   15502 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned int __a,
   15503                                               vector unsigned int __b) {
   15504   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a, __b);
   15505 }
   15506 
   15507 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned int __a,
   15508                                               vector bool int __b) {
   15509   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a,
   15510                                       (vector unsigned int)__b);
   15511 }
   15512 
   15513 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
   15514                                               vector int __b) {
   15515   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
   15516                                       (vector unsigned int)__b);
   15517 }
   15518 
   15519 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
   15520                                               vector unsigned int __b) {
   15521   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
   15522                                       __b);
   15523 }
   15524 
   15525 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
   15526                                               vector bool int __b) {
   15527   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
   15528                                       (vector unsigned int)__b);
   15529 }
   15530 
   15531 #ifdef __POWER8_VECTOR__
   15532 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed long long __a,
   15533                                               vector signed long long __b) {
   15534   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a, __b);
   15535 }
   15536 
   15537 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned long long __a,
   15538                                               vector unsigned long long __b) {
   15539   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a, __b);
   15540 }
   15541 
   15542 static __inline__ int __ATTRS_o_ai vec_any_le(vector signed long long __a,
   15543                                               vector bool long long __b) {
   15544   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a,
   15545                                       (vector signed long long)__b);
   15546 }
   15547 
   15548 static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned long long __a,
   15549                                               vector bool long long __b) {
   15550   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a,
   15551                                       (vector unsigned long long)__b);
   15552 }
   15553 
   15554 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
   15555                                               vector signed long long __b) {
   15556   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
   15557                                       (vector unsigned long long)__a,
   15558                                       (vector unsigned long long)__b);
   15559 }
   15560 
   15561 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
   15562                                               vector unsigned long long __b) {
   15563   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
   15564                                       (vector unsigned long long)__a, __b);
   15565 }
   15566 
   15567 static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
   15568                                               vector bool long long __b) {
   15569   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
   15570                                       (vector unsigned long long)__a,
   15571                                       (vector unsigned long long)__b);
   15572 }
   15573 #endif
   15574 
   15575 static __inline__ int __ATTRS_o_ai vec_any_le(vector float __a,
   15576                                               vector float __b) {
   15577 #ifdef __VSX__
   15578   return __builtin_vsx_xvcmpgesp_p(__CR6_EQ_REV, __b, __a);
   15579 #else
   15580   return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __b, __a);
   15581 #endif
   15582 }
   15583 
   15584 #ifdef __VSX__
   15585 static __inline__ int __ATTRS_o_ai vec_any_le(vector double __a,
   15586                                               vector double __b) {
   15587   return __builtin_vsx_xvcmpgedp_p(__CR6_EQ_REV, __b, __a);
   15588 }
   15589 #endif
   15590 
   15591 /* vec_any_lt */
   15592 
   15593 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed char __a,
   15594                                               vector signed char __b) {
   15595   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __b, __a);
   15596 }
   15597 
   15598 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed char __a,
   15599                                               vector bool char __b) {
   15600   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, (vector signed char)__b,
   15601                                       __a);
   15602 }
   15603 
   15604 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned char __a,
   15605                                               vector unsigned char __b) {
   15606   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b, __a);
   15607 }
   15608 
   15609 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned char __a,
   15610                                               vector bool char __b) {
   15611   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
   15612                                       __a);
   15613 }
   15614 
   15615 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
   15616                                               vector signed char __b) {
   15617   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
   15618                                       (vector unsigned char)__a);
   15619 }
   15620 
   15621 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
   15622                                               vector unsigned char __b) {
   15623   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b,
   15624                                       (vector unsigned char)__a);
   15625 }
   15626 
   15627 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
   15628                                               vector bool char __b) {
   15629   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
   15630                                       (vector unsigned char)__a);
   15631 }
   15632 
   15633 static __inline__ int __ATTRS_o_ai vec_any_lt(vector short __a,
   15634                                               vector short __b) {
   15635   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __b, __a);
   15636 }
   15637 
   15638 static __inline__ int __ATTRS_o_ai vec_any_lt(vector short __a,
   15639                                               vector bool short __b) {
   15640   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, (vector short)__b, __a);
   15641 }
   15642 
   15643 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned short __a,
   15644                                               vector unsigned short __b) {
   15645   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b, __a);
   15646 }
   15647 
   15648 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned short __a,
   15649                                               vector bool short __b) {
   15650   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
   15651                                       __a);
   15652 }
   15653 
   15654 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
   15655                                               vector short __b) {
   15656   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
   15657                                       (vector unsigned short)__a);
   15658 }
   15659 
   15660 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
   15661                                               vector unsigned short __b) {
   15662   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b,
   15663                                       (vector unsigned short)__a);
   15664 }
   15665 
   15666 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
   15667                                               vector bool short __b) {
   15668   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
   15669                                       (vector unsigned short)__a);
   15670 }
   15671 
   15672 static __inline__ int __ATTRS_o_ai vec_any_lt(vector int __a, vector int __b) {
   15673   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __b, __a);
   15674 }
   15675 
   15676 static __inline__ int __ATTRS_o_ai vec_any_lt(vector int __a,
   15677                                               vector bool int __b) {
   15678   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, (vector int)__b, __a);
   15679 }
   15680 
   15681 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned int __a,
   15682                                               vector unsigned int __b) {
   15683   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b, __a);
   15684 }
   15685 
   15686 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned int __a,
   15687                                               vector bool int __b) {
   15688   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
   15689                                       __a);
   15690 }
   15691 
   15692 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
   15693                                               vector int __b) {
   15694   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
   15695                                       (vector unsigned int)__a);
   15696 }
   15697 
   15698 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
   15699                                               vector unsigned int __b) {
   15700   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b,
   15701                                       (vector unsigned int)__a);
   15702 }
   15703 
   15704 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
   15705                                               vector bool int __b) {
   15706   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
   15707                                       (vector unsigned int)__a);
   15708 }
   15709 
   15710 #ifdef __POWER8_VECTOR__
   15711 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed long long __a,
   15712                                               vector signed long long __b) {
   15713   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __b, __a);
   15714 }
   15715 
   15716 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a,
   15717                                               vector unsigned long long __b) {
   15718   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b, __a);
   15719 }
   15720 
   15721 static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed long long __a,
   15722                                               vector bool long long __b) {
   15723   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV,
   15724                                       (vector signed long long)__b, __a);
   15725 }
   15726 
   15727 static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a,
   15728                                               vector bool long long __b) {
   15729   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
   15730                                       (vector unsigned long long)__b, __a);
   15731 }
   15732 
   15733 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
   15734                                               vector signed long long __b) {
   15735   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
   15736                                       (vector unsigned long long)__b,
   15737                                       (vector unsigned long long)__a);
   15738 }
   15739 
   15740 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
   15741                                               vector unsigned long long __b) {
   15742   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b,
   15743                                       (vector unsigned long long)__a);
   15744 }
   15745 
   15746 static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
   15747                                               vector bool long long __b) {
   15748   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
   15749                                       (vector unsigned long long)__b,
   15750                                       (vector unsigned long long)__a);
   15751 }
   15752 #endif
   15753 
   15754 static __inline__ int __ATTRS_o_ai vec_any_lt(vector float __a,
   15755                                               vector float __b) {
   15756 #ifdef __VSX__
   15757   return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ_REV, __b, __a);
   15758 #else
   15759   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __b, __a);
   15760 #endif
   15761 }
   15762 
   15763 #ifdef __VSX__
   15764 static __inline__ int __ATTRS_o_ai vec_any_lt(vector double __a,
   15765                                               vector double __b) {
   15766   return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ_REV, __b, __a);
   15767 }
   15768 #endif
   15769 
   15770 /* vec_any_nan */
   15771 
   15772 static __inline__ int __attribute__((__always_inline__))
   15773 vec_any_nan(vector float __a) {
   15774   return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __a);
   15775 }
   15776 
   15777 /* vec_any_ne */
   15778 
   15779 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed char __a,
   15780                                               vector signed char __b) {
   15781   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
   15782                                       (vector char)__b);
   15783 }
   15784 
   15785 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed char __a,
   15786                                               vector bool char __b) {
   15787   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
   15788                                       (vector char)__b);
   15789 }
   15790 
   15791 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned char __a,
   15792                                               vector unsigned char __b) {
   15793   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
   15794                                       (vector char)__b);
   15795 }
   15796 
   15797 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned char __a,
   15798                                               vector bool char __b) {
   15799   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
   15800                                       (vector char)__b);
   15801 }
   15802 
   15803 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
   15804                                               vector signed char __b) {
   15805   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
   15806                                       (vector char)__b);
   15807 }
   15808 
   15809 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
   15810                                               vector unsigned char __b) {
   15811   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
   15812                                       (vector char)__b);
   15813 }
   15814 
   15815 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
   15816                                               vector bool char __b) {
   15817   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
   15818                                       (vector char)__b);
   15819 }
   15820 
   15821 static __inline__ int __ATTRS_o_ai vec_any_ne(vector short __a,
   15822                                               vector short __b) {
   15823   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, __b);
   15824 }
   15825 
   15826 static __inline__ int __ATTRS_o_ai vec_any_ne(vector short __a,
   15827                                               vector bool short __b) {
   15828   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, (vector short)__b);
   15829 }
   15830 
   15831 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned short __a,
   15832                                               vector unsigned short __b) {
   15833   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
   15834                                       (vector short)__b);
   15835 }
   15836 
   15837 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned short __a,
   15838                                               vector bool short __b) {
   15839   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
   15840                                       (vector short)__b);
   15841 }
   15842 
   15843 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
   15844                                               vector short __b) {
   15845   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
   15846                                       (vector short)__b);
   15847 }
   15848 
   15849 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
   15850                                               vector unsigned short __b) {
   15851   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
   15852                                       (vector short)__b);
   15853 }
   15854 
   15855 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
   15856                                               vector bool short __b) {
   15857   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
   15858                                       (vector short)__b);
   15859 }
   15860 
   15861 static __inline__ int __ATTRS_o_ai vec_any_ne(vector pixel __a,
   15862                                               vector pixel __b) {
   15863   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
   15864                                       (vector short)__b);
   15865 }
   15866 
   15867 static __inline__ int __ATTRS_o_ai vec_any_ne(vector int __a, vector int __b) {
   15868   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, __b);
   15869 }
   15870 
   15871 static __inline__ int __ATTRS_o_ai vec_any_ne(vector int __a,
   15872                                               vector bool int __b) {
   15873   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, (vector int)__b);
   15874 }
   15875 
   15876 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned int __a,
   15877                                               vector unsigned int __b) {
   15878   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
   15879                                       (vector int)__b);
   15880 }
   15881 
   15882 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned int __a,
   15883                                               vector bool int __b) {
   15884   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
   15885                                       (vector int)__b);
   15886 }
   15887 
   15888 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
   15889                                               vector int __b) {
   15890   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
   15891                                       (vector int)__b);
   15892 }
   15893 
   15894 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
   15895                                               vector unsigned int __b) {
   15896   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
   15897                                       (vector int)__b);
   15898 }
   15899 
   15900 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
   15901                                               vector bool int __b) {
   15902   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
   15903                                       (vector int)__b);
   15904 }
   15905 
   15906 #ifdef __POWER8_VECTOR__
   15907 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed long long __a,
   15908                                               vector signed long long __b) {
   15909   return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a, __b);
   15910 }
   15911 
   15912 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a,
   15913                                               vector unsigned long long __b) {
   15914   return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, (vector long long)__a,
   15915                                       (vector long long)__b);
   15916 }
   15917 
   15918 static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed long long __a,
   15919                                               vector bool long long __b) {
   15920   return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a,
   15921                                       (vector signed long long)__b);
   15922 }
   15923 
   15924 static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a,
   15925                                               vector bool long long __b) {
   15926   return __builtin_altivec_vcmpequd_p(
   15927       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
   15928 }
   15929 
   15930 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
   15931                                               vector signed long long __b) {
   15932   return __builtin_altivec_vcmpequd_p(
   15933       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
   15934 }
   15935 
   15936 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
   15937                                               vector unsigned long long __b) {
   15938   return __builtin_altivec_vcmpequd_p(
   15939       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
   15940 }
   15941 
   15942 static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
   15943                                               vector bool long long __b) {
   15944   return __builtin_altivec_vcmpequd_p(
   15945       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
   15946 }
   15947 #endif
   15948 
   15949 static __inline__ int __ATTRS_o_ai vec_any_ne(vector float __a,
   15950                                               vector float __b) {
   15951 #ifdef __VSX__
   15952   return __builtin_vsx_xvcmpeqsp_p(__CR6_LT_REV, __a, __b);
   15953 #else
   15954   return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __b);
   15955 #endif
   15956 }
   15957 
   15958 #ifdef __VSX__
   15959 static __inline__ int __ATTRS_o_ai vec_any_ne(vector double __a,
   15960                                               vector double __b) {
   15961   return __builtin_vsx_xvcmpeqdp_p(__CR6_LT_REV, __a, __b);
   15962 }
   15963 #endif
   15964 
   15965 /* vec_any_nge */
   15966 
   15967 static __inline__ int __attribute__((__always_inline__))
   15968 vec_any_nge(vector float __a, vector float __b) {
   15969   return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __a, __b);
   15970 }
   15971 
   15972 /* vec_any_ngt */
   15973 
   15974 static __inline__ int __attribute__((__always_inline__))
   15975 vec_any_ngt(vector float __a, vector float __b) {
   15976   return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __a, __b);
   15977 }
   15978 
   15979 /* vec_any_nle */
   15980 
   15981 static __inline__ int __attribute__((__always_inline__))
   15982 vec_any_nle(vector float __a, vector float __b) {
   15983   return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __b, __a);
   15984 }
   15985 
   15986 /* vec_any_nlt */
   15987 
   15988 static __inline__ int __attribute__((__always_inline__))
   15989 vec_any_nlt(vector float __a, vector float __b) {
   15990   return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __b, __a);
   15991 }
   15992 
   15993 /* vec_any_numeric */
   15994 
   15995 static __inline__ int __attribute__((__always_inline__))
   15996 vec_any_numeric(vector float __a) {
   15997   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __a);
   15998 }
   15999 
   16000 /* vec_any_out */
   16001 
   16002 static __inline__ int __attribute__((__always_inline__))
   16003 vec_any_out(vector float __a, vector float __b) {
   16004   return __builtin_altivec_vcmpbfp_p(__CR6_EQ_REV, __a, __b);
   16005 }
   16006 
   16007 /* Power 8 Crypto functions
   16008 Note: We diverge from the current GCC implementation with regard
   16009 to cryptography and related functions as follows:
   16010 - Only the SHA and AES instructions and builtins are disabled by -mno-crypto
   16011 - The remaining ones are only available on Power8 and up so
   16012   require -mpower8-vector
   16013 The justification for this is that export requirements require that
   16014 Category:Vector.Crypto is optional (i.e. compliant hardware may not provide
   16015 support). As a result, we need to be able to turn off support for those.
   16016 The remaining ones (currently controlled by -mcrypto for GCC) still
   16017 need to be provided on compliant hardware even if Vector.Crypto is not
   16018 provided.
   16019 */
   16020 #ifdef __CRYPTO__
   16021 #define vec_sbox_be __builtin_altivec_crypto_vsbox
   16022 #define vec_cipher_be __builtin_altivec_crypto_vcipher
   16023 #define vec_cipherlast_be __builtin_altivec_crypto_vcipherlast
   16024 #define vec_ncipher_be __builtin_altivec_crypto_vncipher
   16025 #define vec_ncipherlast_be __builtin_altivec_crypto_vncipherlast
   16026 
   16027 static __inline__ vector unsigned long long __attribute__((__always_inline__))
   16028 __builtin_crypto_vsbox(vector unsigned long long __a) {
   16029   return __builtin_altivec_crypto_vsbox(__a);
   16030 }
   16031 
   16032 static __inline__ vector unsigned long long __attribute__((__always_inline__))
   16033 __builtin_crypto_vcipher(vector unsigned long long __a,
   16034                          vector unsigned long long __b) {
   16035   return __builtin_altivec_crypto_vcipher(__a, __b);
   16036 }
   16037 
   16038 static __inline__ vector unsigned long long __attribute__((__always_inline__))
   16039 __builtin_crypto_vcipherlast(vector unsigned long long __a,
   16040                              vector unsigned long long __b) {
   16041   return __builtin_altivec_crypto_vcipherlast(__a, __b);
   16042 }
   16043 
   16044 static __inline__ vector unsigned long long __attribute__((__always_inline__))
   16045 __builtin_crypto_vncipher(vector unsigned long long __a,
   16046                           vector unsigned long long __b) {
   16047   return __builtin_altivec_crypto_vncipher(__a, __b);
   16048 }
   16049 
   16050 static __inline__ vector unsigned long long __attribute__((__always_inline__))
   16051 __builtin_crypto_vncipherlast(vector unsigned long long __a,
   16052                               vector unsigned long long __b) {
   16053   return __builtin_altivec_crypto_vncipherlast(__a, __b);
   16054 }
   16055 
   16056 #define __builtin_crypto_vshasigmad __builtin_altivec_crypto_vshasigmad
   16057 #define __builtin_crypto_vshasigmaw __builtin_altivec_crypto_vshasigmaw
   16058 
   16059 #define vec_shasigma_be(X, Y, Z)                                               \
   16060   _Generic((X), vector unsigned int                                            \
   16061            : __builtin_crypto_vshasigmaw, vector unsigned long long            \
   16062            : __builtin_crypto_vshasigmad)((X), (Y), (Z))
   16063 #endif
   16064 
   16065 #ifdef __POWER8_VECTOR__
   16066 static __inline__ vector bool char __ATTRS_o_ai
   16067 vec_permxor(vector bool char __a, vector bool char __b,
   16068             vector bool char __c) {
   16069   return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
   16070 }
   16071 
   16072 static __inline__ vector signed char __ATTRS_o_ai
   16073 vec_permxor(vector signed char __a, vector signed char __b,
   16074             vector signed char __c) {
   16075   return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
   16076 }
   16077 
   16078 static __inline__ vector unsigned char __ATTRS_o_ai
   16079 vec_permxor(vector unsigned char __a, vector unsigned char __b,
   16080             vector unsigned char __c) {
   16081   return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
   16082 }
   16083 
   16084 static __inline__ vector unsigned char __ATTRS_o_ai
   16085 __builtin_crypto_vpermxor(vector unsigned char __a, vector unsigned char __b,
   16086                           vector unsigned char __c) {
   16087   return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
   16088 }
   16089 
   16090 static __inline__ vector unsigned short __ATTRS_o_ai
   16091 __builtin_crypto_vpermxor(vector unsigned short __a, vector unsigned short __b,
   16092                           vector unsigned short __c) {
   16093   return (vector unsigned short)__builtin_altivec_crypto_vpermxor(
   16094       (vector unsigned char)__a, (vector unsigned char)__b,
   16095       (vector unsigned char)__c);
   16096 }
   16097 
   16098 static __inline__ vector unsigned int __ATTRS_o_ai __builtin_crypto_vpermxor(
   16099     vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
   16100   return (vector unsigned int)__builtin_altivec_crypto_vpermxor(
   16101       (vector unsigned char)__a, (vector unsigned char)__b,
   16102       (vector unsigned char)__c);
   16103 }
   16104 
   16105 static __inline__ vector unsigned long long __ATTRS_o_ai
   16106 __builtin_crypto_vpermxor(vector unsigned long long __a,
   16107                           vector unsigned long long __b,
   16108                           vector unsigned long long __c) {
   16109   return (vector unsigned long long)__builtin_altivec_crypto_vpermxor(
   16110       (vector unsigned char)__a, (vector unsigned char)__b,
   16111       (vector unsigned char)__c);
   16112 }
   16113 
   16114 static __inline__ vector unsigned char __ATTRS_o_ai
   16115 __builtin_crypto_vpmsumb(vector unsigned char __a, vector unsigned char __b) {
   16116   return __builtin_altivec_crypto_vpmsumb(__a, __b);
   16117 }
   16118 
   16119 static __inline__ vector unsigned short __ATTRS_o_ai
   16120 __builtin_crypto_vpmsumb(vector unsigned short __a, vector unsigned short __b) {
   16121   return __builtin_altivec_crypto_vpmsumh(__a, __b);
   16122 }
   16123 
   16124 static __inline__ vector unsigned int __ATTRS_o_ai
   16125 __builtin_crypto_vpmsumb(vector unsigned int __a, vector unsigned int __b) {
   16126   return __builtin_altivec_crypto_vpmsumw(__a, __b);
   16127 }
   16128 
   16129 static __inline__ vector unsigned long long __ATTRS_o_ai
   16130 __builtin_crypto_vpmsumb(vector unsigned long long __a,
   16131                          vector unsigned long long __b) {
   16132   return __builtin_altivec_crypto_vpmsumd(__a, __b);
   16133 }
   16134 
   16135 static __inline__ vector signed char __ATTRS_o_ai
   16136 vec_vgbbd(vector signed char __a) {
   16137   return __builtin_altivec_vgbbd((vector unsigned char)__a);
   16138 }
   16139 
   16140 #define vec_pmsum_be __builtin_crypto_vpmsumb
   16141 #define vec_gb __builtin_altivec_vgbbd
   16142 
   16143 static __inline__ vector unsigned char __ATTRS_o_ai
   16144 vec_vgbbd(vector unsigned char __a) {
   16145   return __builtin_altivec_vgbbd(__a);
   16146 }
   16147 
   16148 static __inline__ vector long long __ATTRS_o_ai
   16149 vec_vbpermq(vector signed char __a, vector signed char __b) {
   16150   return __builtin_altivec_vbpermq((vector unsigned char)__a,
   16151                                    (vector unsigned char)__b);
   16152 }
   16153 
   16154 static __inline__ vector long long __ATTRS_o_ai
   16155 vec_vbpermq(vector unsigned char __a, vector unsigned char __b) {
   16156   return __builtin_altivec_vbpermq(__a, __b);
   16157 }
   16158 
   16159 #ifdef __powerpc64__
   16160 static __inline__ vector unsigned long long __attribute__((__always_inline__))
   16161 vec_bperm(vector unsigned __int128 __a, vector unsigned char __b) {
   16162   return __builtin_altivec_vbpermq((vector unsigned char)__a,
   16163                                    (vector unsigned char)__b);
   16164 }
   16165 #endif
   16166 #endif
   16167 
   16168 
   16169 /* vec_reve */
   16170 
   16171 static inline __ATTRS_o_ai vector bool char vec_reve(vector bool char __a) {
   16172   return __builtin_shufflevector(__a, __a, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
   16173                                  5, 4, 3, 2, 1, 0);
   16174 }
   16175 
   16176 static inline __ATTRS_o_ai vector signed char vec_reve(vector signed char __a) {
   16177   return __builtin_shufflevector(__a, __a, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
   16178                                  5, 4, 3, 2, 1, 0);
   16179 }
   16180 
   16181 static inline __ATTRS_o_ai vector unsigned char
   16182 vec_reve(vector unsigned char __a) {
   16183   return __builtin_shufflevector(__a, __a, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
   16184                                  5, 4, 3, 2, 1, 0);
   16185 }
   16186 
   16187 static inline __ATTRS_o_ai vector bool int vec_reve(vector bool int __a) {
   16188   return __builtin_shufflevector(__a, __a, 3, 2, 1, 0);
   16189 }
   16190 
   16191 static inline __ATTRS_o_ai vector signed int vec_reve(vector signed int __a) {
   16192   return __builtin_shufflevector(__a, __a, 3, 2, 1, 0);
   16193 }
   16194 
   16195 static inline __ATTRS_o_ai vector unsigned int
   16196 vec_reve(vector unsigned int __a) {
   16197   return __builtin_shufflevector(__a, __a, 3, 2, 1, 0);
   16198 }
   16199 
   16200 static inline __ATTRS_o_ai vector bool short vec_reve(vector bool short __a) {
   16201   return __builtin_shufflevector(__a, __a, 7, 6, 5, 4, 3, 2, 1, 0);
   16202 }
   16203 
   16204 static inline __ATTRS_o_ai vector signed short
   16205 vec_reve(vector signed short __a) {
   16206   return __builtin_shufflevector(__a, __a, 7, 6, 5, 4, 3, 2, 1, 0);
   16207 }
   16208 
   16209 static inline __ATTRS_o_ai vector unsigned short
   16210 vec_reve(vector unsigned short __a) {
   16211   return __builtin_shufflevector(__a, __a, 7, 6, 5, 4, 3, 2, 1, 0);
   16212 }
   16213 
   16214 static inline __ATTRS_o_ai vector float vec_reve(vector float __a) {
   16215   return __builtin_shufflevector(__a, __a, 3, 2, 1, 0);
   16216 }
   16217 
   16218 #ifdef __VSX__
   16219 static inline __ATTRS_o_ai vector bool long long
   16220 vec_reve(vector bool long long __a) {
   16221   return __builtin_shufflevector(__a, __a, 1, 0);
   16222 }
   16223 
   16224 static inline __ATTRS_o_ai vector signed long long
   16225 vec_reve(vector signed long long __a) {
   16226   return __builtin_shufflevector(__a, __a, 1, 0);
   16227 }
   16228 
   16229 static inline __ATTRS_o_ai vector unsigned long long
   16230 vec_reve(vector unsigned long long __a) {
   16231   return __builtin_shufflevector(__a, __a, 1, 0);
   16232 }
   16233 
   16234 static inline __ATTRS_o_ai vector double vec_reve(vector double __a) {
   16235   return __builtin_shufflevector(__a, __a, 1, 0);
   16236 }
   16237 #endif
   16238 
   16239 /* vec_revb */
   16240 static __inline__ vector bool char __ATTRS_o_ai
   16241 vec_revb(vector bool char __a) {
   16242   return __a;
   16243 }
   16244 
   16245 static __inline__ vector signed char __ATTRS_o_ai
   16246 vec_revb(vector signed char __a) {
   16247   return __a;
   16248 }
   16249 
   16250 static __inline__ vector unsigned char __ATTRS_o_ai
   16251 vec_revb(vector unsigned char __a) {
   16252   return __a;
   16253 }
   16254 
   16255 static __inline__ vector bool short __ATTRS_o_ai
   16256 vec_revb(vector bool short __a) {
   16257   vector unsigned char __indices =
   16258       { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 };
   16259   return vec_perm(__a, __a, __indices);
   16260 }
   16261 
   16262 static __inline__ vector signed short __ATTRS_o_ai
   16263 vec_revb(vector signed short __a) {
   16264   vector unsigned char __indices =
   16265       { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 };
   16266   return vec_perm(__a, __a, __indices);
   16267 }
   16268 
   16269 static __inline__ vector unsigned short __ATTRS_o_ai
   16270 vec_revb(vector unsigned short __a) {
   16271   vector unsigned char __indices =
   16272      { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14 };
   16273   return vec_perm(__a, __a, __indices);
   16274 }
   16275 
   16276 static __inline__ vector bool int __ATTRS_o_ai
   16277 vec_revb(vector bool int __a) {
   16278   vector unsigned char __indices =
   16279       { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 };
   16280   return vec_perm(__a, __a, __indices);
   16281 }
   16282 
   16283 static __inline__ vector signed int __ATTRS_o_ai
   16284 vec_revb(vector signed int __a) {
   16285   vector unsigned char __indices =
   16286       { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 };
   16287   return vec_perm(__a, __a, __indices);
   16288 }
   16289 
   16290 static __inline__ vector unsigned int __ATTRS_o_ai
   16291 vec_revb(vector unsigned int __a) {
   16292   vector unsigned char __indices =
   16293       { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 };
   16294   return vec_perm(__a, __a, __indices);
   16295 }
   16296 
   16297 static __inline__ vector float __ATTRS_o_ai
   16298 vec_revb(vector float __a) {
   16299  vector unsigned char __indices =
   16300       { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12 };
   16301  return vec_perm(__a, __a, __indices);
   16302 }
   16303 
   16304 #ifdef __VSX__
   16305 static __inline__ vector bool long long __ATTRS_o_ai
   16306 vec_revb(vector bool long long __a) {
   16307   vector unsigned char __indices =
   16308       { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 };
   16309   return vec_perm(__a, __a, __indices);
   16310 }
   16311 
   16312 static __inline__ vector signed long long __ATTRS_o_ai
   16313 vec_revb(vector signed long long __a) {
   16314   vector unsigned char __indices =
   16315       { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 };
   16316   return vec_perm(__a, __a, __indices);
   16317 }
   16318 
   16319 static __inline__ vector unsigned long long __ATTRS_o_ai
   16320 vec_revb(vector unsigned long long __a) {
   16321   vector unsigned char __indices =
   16322       { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 };
   16323   return vec_perm(__a, __a, __indices);
   16324 }
   16325 
   16326 static __inline__ vector double __ATTRS_o_ai
   16327 vec_revb(vector double __a) {
   16328   vector unsigned char __indices =
   16329       { 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8 };
   16330   return vec_perm(__a, __a, __indices);
   16331 }
   16332 #endif /* End __VSX__ */
   16333 
   16334 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   16335 static __inline__ vector signed __int128 __ATTRS_o_ai
   16336 vec_revb(vector signed __int128 __a) {
   16337   vector unsigned char __indices =
   16338       { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
   16339   return (vector signed __int128)vec_perm((vector signed int)__a,
   16340                                           (vector signed int)__a,
   16341                                            __indices);
   16342 }
   16343 
   16344 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   16345 vec_revb(vector unsigned __int128 __a) {
   16346   vector unsigned char __indices =
   16347       { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
   16348   return (vector unsigned __int128)vec_perm((vector signed int)__a,
   16349                                             (vector signed int)__a,
   16350                                              __indices);
   16351 }
   16352 #endif /* END __POWER8_VECTOR__ && __powerpc64__ */
   16353 
   16354 /* vec_xl */
   16355 
   16356 static inline __ATTRS_o_ai vector signed char vec_xl(signed long long __offset,
   16357                                                      signed char *__ptr) {
   16358   return *(vector signed char *)(__ptr + __offset);
   16359 }
   16360 
   16361 static inline __ATTRS_o_ai vector unsigned char
   16362 vec_xl(signed long long __offset, unsigned char *__ptr) {
   16363   return *(vector unsigned char *)(__ptr + __offset);
   16364 }
   16365 
   16366 static inline __ATTRS_o_ai vector signed short vec_xl(signed long long __offset,
   16367                                                       signed short *__ptr) {
   16368   return *(vector signed short *)(__ptr + __offset);
   16369 }
   16370 
   16371 static inline __ATTRS_o_ai vector unsigned short
   16372 vec_xl(signed long long __offset, unsigned short *__ptr) {
   16373   return *(vector unsigned short *)(__ptr + __offset);
   16374 }
   16375 
   16376 static inline __ATTRS_o_ai vector signed int vec_xl(signed long long __offset,
   16377                                                     signed int *__ptr) {
   16378   return *(vector signed int *)(__ptr + __offset);
   16379 }
   16380 
   16381 static inline __ATTRS_o_ai vector unsigned int vec_xl(signed long long __offset,
   16382                                                       unsigned int *__ptr) {
   16383   return *(vector unsigned int *)(__ptr + __offset);
   16384 }
   16385 
   16386 static inline __ATTRS_o_ai vector float vec_xl(signed long long __offset,
   16387                                                float *__ptr) {
   16388   return *(vector float *)(__ptr + __offset);
   16389 }
   16390 
   16391 #ifdef __VSX__
   16392 static inline __ATTRS_o_ai vector signed long long
   16393 vec_xl(signed long long __offset, signed long long *__ptr) {
   16394   return *(vector signed long long *)(__ptr + __offset);
   16395 }
   16396 
   16397 static inline __ATTRS_o_ai vector unsigned long long
   16398 vec_xl(signed long long __offset, unsigned long long *__ptr) {
   16399   return *(vector unsigned long long *)(__ptr + __offset);
   16400 }
   16401 
   16402 static inline __ATTRS_o_ai vector double vec_xl(signed long long __offset,
   16403                                                 double *__ptr) {
   16404   return *(vector double *)(__ptr + __offset);
   16405 }
   16406 #endif
   16407 
   16408 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   16409 static inline __ATTRS_o_ai vector signed __int128
   16410 vec_xl(signed long long __offset, signed __int128 *__ptr) {
   16411   return *(vector signed __int128 *)(__ptr + __offset);
   16412 }
   16413 
   16414 static inline __ATTRS_o_ai vector unsigned __int128
   16415 vec_xl(signed long long __offset, unsigned __int128 *__ptr) {
   16416   return *(vector unsigned __int128 *)(__ptr + __offset);
   16417 }
   16418 #endif
   16419 
   16420 /* vec_xl_be */
   16421 
   16422 #ifdef __LITTLE_ENDIAN__
   16423 static __inline__ vector signed char __ATTRS_o_ai
   16424 vec_xl_be(signed long long __offset, signed char *__ptr) {
   16425   vector signed char __vec = __builtin_vsx_lxvd2x_be(__offset, __ptr);
   16426   return __builtin_shufflevector(__vec, __vec, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14,
   16427                                  13, 12, 11, 10, 9, 8);
   16428 }
   16429 
   16430 static __inline__ vector unsigned char __ATTRS_o_ai
   16431 vec_xl_be(signed long long __offset, unsigned char *__ptr) {
   16432   vector unsigned char __vec = __builtin_vsx_lxvd2x_be(__offset, __ptr);
   16433   return __builtin_shufflevector(__vec, __vec, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14,
   16434                                  13, 12, 11, 10, 9, 8);
   16435 }
   16436 
   16437 static __inline__ vector signed short  __ATTRS_o_ai
   16438 vec_xl_be(signed long long __offset, signed short *__ptr) {
   16439   vector signed short __vec = __builtin_vsx_lxvd2x_be(__offset, __ptr);
   16440   return __builtin_shufflevector(__vec, __vec, 3, 2, 1, 0, 7, 6, 5, 4);
   16441 }
   16442 
   16443 static __inline__ vector unsigned short __ATTRS_o_ai
   16444 vec_xl_be(signed long long __offset, unsigned short *__ptr) {
   16445   vector unsigned short __vec = __builtin_vsx_lxvd2x_be(__offset, __ptr);
   16446   return __builtin_shufflevector(__vec, __vec, 3, 2, 1, 0, 7, 6, 5, 4);
   16447 }
   16448 
   16449 static __inline__ vector signed int __ATTRS_o_ai
   16450 vec_xl_be(signed long long  __offset, signed int *__ptr) {
   16451   return (vector signed int)__builtin_vsx_lxvw4x_be(__offset, __ptr);
   16452 }
   16453 
   16454 static __inline__ vector unsigned int __ATTRS_o_ai
   16455 vec_xl_be(signed long long  __offset, unsigned int *__ptr) {
   16456   return (vector unsigned int)__builtin_vsx_lxvw4x_be(__offset, __ptr);
   16457 }
   16458 
   16459 static __inline__ vector float __ATTRS_o_ai
   16460 vec_xl_be(signed long long  __offset, float *__ptr) {
   16461   return (vector float)__builtin_vsx_lxvw4x_be(__offset, __ptr);
   16462 }
   16463 
   16464 #ifdef __VSX__
   16465 static __inline__ vector signed long long __ATTRS_o_ai
   16466 vec_xl_be(signed long long  __offset, signed long long *__ptr) {
   16467   return (vector signed long long)__builtin_vsx_lxvd2x_be(__offset, __ptr);
   16468 }
   16469 
   16470 static __inline__ vector unsigned long long __ATTRS_o_ai
   16471 vec_xl_be(signed long long  __offset, unsigned long long *__ptr) {
   16472   return (vector unsigned long long)__builtin_vsx_lxvd2x_be(__offset, __ptr);
   16473 }
   16474 
   16475 static __inline__ vector double __ATTRS_o_ai
   16476 vec_xl_be(signed long long  __offset, double *__ptr) {
   16477   return (vector double)__builtin_vsx_lxvd2x_be(__offset, __ptr);
   16478 }
   16479 #endif
   16480 
   16481 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   16482 static __inline__ vector signed __int128 __ATTRS_o_ai
   16483 vec_xl_be(signed long long  __offset, signed __int128 *__ptr) {
   16484   return vec_xl(__offset, __ptr);
   16485 }
   16486 
   16487 static __inline__ vector unsigned __int128 __ATTRS_o_ai
   16488 vec_xl_be(signed long long  __offset, unsigned __int128 *__ptr) {
   16489   return vec_xl(__offset, __ptr);
   16490 }
   16491 #endif
   16492 #else
   16493   #define vec_xl_be vec_xl
   16494 #endif
   16495 
   16496 /* vec_xst */
   16497 
   16498 static inline __ATTRS_o_ai void vec_xst(vector signed char __vec,
   16499                                         signed long long __offset,
   16500                                         signed char *__ptr) {
   16501   *(vector signed char *)(__ptr + __offset) = __vec;
   16502 }
   16503 
   16504 static inline __ATTRS_o_ai void vec_xst(vector unsigned char __vec,
   16505                                         signed long long __offset,
   16506                                         unsigned char *__ptr) {
   16507   *(vector unsigned char *)(__ptr + __offset) = __vec;
   16508 }
   16509 
   16510 static inline __ATTRS_o_ai void vec_xst(vector signed short __vec,
   16511                                         signed long long __offset,
   16512                                         signed short *__ptr) {
   16513   *(vector signed short *)(__ptr + __offset) = __vec;
   16514 }
   16515 
   16516 static inline __ATTRS_o_ai void vec_xst(vector unsigned short __vec,
   16517                                         signed long long __offset,
   16518                                         unsigned short *__ptr) {
   16519   *(vector unsigned short *)(__ptr + __offset) = __vec;
   16520 }
   16521 
   16522 static inline __ATTRS_o_ai void vec_xst(vector signed int __vec,
   16523                                         signed long long __offset,
   16524                                         signed int *__ptr) {
   16525   *(vector signed int *)(__ptr + __offset) = __vec;
   16526 }
   16527 
   16528 static inline __ATTRS_o_ai void vec_xst(vector unsigned int __vec,
   16529                                         signed long long __offset,
   16530                                         unsigned int *__ptr) {
   16531   *(vector unsigned int *)(__ptr + __offset) = __vec;
   16532 }
   16533 
   16534 static inline __ATTRS_o_ai void vec_xst(vector float __vec,
   16535                                         signed long long __offset,
   16536                                         float *__ptr) {
   16537   *(vector float *)(__ptr + __offset) = __vec;
   16538 }
   16539 
   16540 #ifdef __VSX__
   16541 static inline __ATTRS_o_ai void vec_xst(vector signed long long __vec,
   16542                                         signed long long __offset,
   16543                                         signed long long *__ptr) {
   16544   *(vector signed long long *)(__ptr + __offset) = __vec;
   16545 }
   16546 
   16547 static inline __ATTRS_o_ai void vec_xst(vector unsigned long long __vec,
   16548                                         signed long long __offset,
   16549                                         unsigned long long *__ptr) {
   16550   *(vector unsigned long long *)(__ptr + __offset) = __vec;
   16551 }
   16552 
   16553 static inline __ATTRS_o_ai void vec_xst(vector double __vec,
   16554                                         signed long long __offset,
   16555                                         double *__ptr) {
   16556   *(vector double *)(__ptr + __offset) = __vec;
   16557 }
   16558 #endif
   16559 
   16560 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   16561 static inline __ATTRS_o_ai void vec_xst(vector signed __int128 __vec,
   16562                                         signed long long __offset,
   16563                                         signed __int128 *__ptr) {
   16564   *(vector signed __int128 *)(__ptr + __offset) = __vec;
   16565 }
   16566 
   16567 static inline __ATTRS_o_ai void vec_xst(vector unsigned __int128 __vec,
   16568                                         signed long long __offset,
   16569                                         unsigned __int128 *__ptr) {
   16570   *(vector unsigned __int128 *)(__ptr + __offset) = __vec;
   16571 }
   16572 #endif
   16573 
   16574 /* vec_xst_be */
   16575 
   16576 #ifdef __LITTLE_ENDIAN__
   16577 static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed char __vec,
   16578                                                signed long long  __offset,
   16579                                                signed char *__ptr) {
   16580   vector signed char __tmp =
   16581      __builtin_shufflevector(__vec, __vec, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14,
   16582                              13, 12, 11, 10, 9, 8);
   16583   __builtin_vsx_stxvd2x_be(__tmp, __offset, __ptr);
   16584 }
   16585 
   16586 static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned char __vec,
   16587                                                signed long long  __offset,
   16588                                                unsigned char *__ptr) {
   16589   vector unsigned char __tmp =
   16590      __builtin_shufflevector(__vec, __vec, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14,
   16591                              13, 12, 11, 10, 9, 8);
   16592   __builtin_vsx_stxvd2x_be(__tmp, __offset, __ptr);
   16593 }
   16594 
   16595 static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed short __vec,
   16596                                                signed long long  __offset,
   16597                                                signed short *__ptr) {
   16598   vector signed short __tmp =
   16599      __builtin_shufflevector(__vec, __vec, 3, 2, 1, 0, 7, 6, 5, 4);
   16600   __builtin_vsx_stxvd2x_be(__tmp, __offset, __ptr);
   16601 }
   16602 
   16603 static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned short __vec,
   16604                                                signed long long  __offset,
   16605                                                unsigned short *__ptr) {
   16606   vector unsigned short __tmp =
   16607      __builtin_shufflevector(__vec, __vec, 3, 2, 1, 0, 7, 6, 5, 4);
   16608   __builtin_vsx_stxvd2x_be(__tmp, __offset, __ptr);
   16609 }
   16610 
   16611 static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed int __vec,
   16612                                                signed long long  __offset,
   16613                                                signed int *__ptr) {
   16614   __builtin_vsx_stxvw4x_be(__vec, __offset, __ptr);
   16615 }
   16616 
   16617 static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned int __vec,
   16618                                                signed long long  __offset,
   16619                                                unsigned int *__ptr) {
   16620   __builtin_vsx_stxvw4x_be(__vec, __offset, __ptr);
   16621 }
   16622 
   16623 static __inline__ void __ATTRS_o_ai vec_xst_be(vector float __vec,
   16624                                                signed long long  __offset,
   16625                                                float *__ptr) {
   16626   __builtin_vsx_stxvw4x_be(__vec, __offset, __ptr);
   16627 }
   16628 
   16629 #ifdef __VSX__
   16630 static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed long long __vec,
   16631                                                signed long long  __offset,
   16632                                                signed long long *__ptr) {
   16633   __builtin_vsx_stxvd2x_be(__vec, __offset, __ptr);
   16634 }
   16635 
   16636 static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned long long __vec,
   16637                                                signed long long  __offset,
   16638                                                unsigned long long *__ptr) {
   16639   __builtin_vsx_stxvd2x_be(__vec, __offset, __ptr);
   16640 }
   16641 
   16642 static __inline__ void __ATTRS_o_ai vec_xst_be(vector double __vec,
   16643                                                signed long long  __offset,
   16644                                                double *__ptr) {
   16645   __builtin_vsx_stxvd2x_be(__vec, __offset, __ptr);
   16646 }
   16647 #endif
   16648 
   16649 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   16650 static __inline__ void __ATTRS_o_ai vec_xst_be(vector signed __int128 __vec,
   16651                                                signed long long  __offset,
   16652                                                signed __int128 *__ptr) {
   16653   vec_xst(__vec, __offset, __ptr);
   16654 }
   16655 
   16656 static __inline__ void __ATTRS_o_ai vec_xst_be(vector unsigned __int128 __vec,
   16657                                                signed long long  __offset,
   16658                                                unsigned __int128 *__ptr) {
   16659   vec_xst(__vec, __offset, __ptr);
   16660 }
   16661 #endif
   16662 #else
   16663   #define vec_xst_be vec_xst
   16664 #endif
   16665 
   16666 #ifdef __POWER9_VECTOR__
   16667 #define vec_test_data_class(__a, __b)                                      \
   16668         _Generic((__a),                                                    \
   16669            vector float:                                                   \
   16670              (vector bool int)__builtin_vsx_xvtstdcsp((__a), (__b)),       \
   16671            vector double:                                                  \
   16672              (vector bool long long)__builtin_vsx_xvtstdcdp((__a), (__b))  \
   16673         )
   16674 
   16675 #endif /* #ifdef __POWER9_VECTOR__ */
   16676 
   16677 static vector float __ATTRS_o_ai vec_neg(vector float __a) {
   16678   return -__a;
   16679 }
   16680 
   16681 #ifdef __VSX__
   16682 static vector double __ATTRS_o_ai vec_neg(vector double __a) {
   16683   return -__a;
   16684 }
   16685 
   16686 #endif
   16687 
   16688 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   16689 static vector long long __ATTRS_o_ai vec_neg(vector long long __a) {
   16690   return -__a;
   16691 }
   16692 #endif
   16693 
   16694 static vector signed int __ATTRS_o_ai vec_neg(vector signed int __a) {
   16695   return -__a;
   16696 }
   16697 
   16698 static vector signed short __ATTRS_o_ai vec_neg(vector signed short __a) {
   16699   return -__a;
   16700 }
   16701 
   16702 static vector signed char __ATTRS_o_ai vec_neg(vector signed char __a) {
   16703   return -__a;
   16704 }
   16705 
   16706 static vector float __ATTRS_o_ai vec_nabs(vector float __a) {
   16707   return - vec_abs(__a);
   16708 }
   16709 
   16710 #ifdef __VSX__
   16711 static vector double __ATTRS_o_ai vec_nabs(vector double __a) {
   16712   return - vec_abs(__a);
   16713 }
   16714 
   16715 #endif
   16716 
   16717 #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
   16718 static vector long long __ATTRS_o_ai vec_nabs(vector long long __a) {
   16719   return __builtin_altivec_vminsd(__a, -__a);
   16720 }
   16721 #endif
   16722 
   16723 static vector signed int __ATTRS_o_ai vec_nabs(vector signed int __a) {
   16724   return __builtin_altivec_vminsw(__a, -__a);
   16725 }
   16726 
   16727 static vector signed short __ATTRS_o_ai vec_nabs(vector signed short __a) {
   16728   return __builtin_altivec_vminsh(__a, -__a);
   16729 }
   16730 
   16731 static vector signed char __ATTRS_o_ai vec_nabs(vector signed char __a) {
   16732   return __builtin_altivec_vminsb(__a, -__a);
   16733 }
   16734 #undef __ATTRS_o_ai
   16735 
   16736 #endif /* __ALTIVEC_H */
   16737