xref: /freebsd/contrib/llvm-project/clang/lib/Headers/vecintrin.h (revision fe6060f10f634930ff71b7c50291ddc610da2475)
10b57cec5SDimitry Andric /*===---- vecintrin.h - Vector intrinsics ----------------------------------===
20b57cec5SDimitry Andric  *
30b57cec5SDimitry Andric  * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric  * See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric  * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric  *
70b57cec5SDimitry Andric  *===-----------------------------------------------------------------------===
80b57cec5SDimitry Andric  */
90b57cec5SDimitry Andric 
100b57cec5SDimitry Andric #if defined(__s390x__) && defined(__VEC__)
110b57cec5SDimitry Andric 
120b57cec5SDimitry Andric #define __ATTRS_ai __attribute__((__always_inline__))
130b57cec5SDimitry Andric #define __ATTRS_o __attribute__((__overloadable__))
140b57cec5SDimitry Andric #define __ATTRS_o_ai __attribute__((__overloadable__, __always_inline__))
150b57cec5SDimitry Andric 
160b57cec5SDimitry Andric #define __constant(PARM) \
170b57cec5SDimitry Andric   __attribute__((__enable_if__ ((PARM) == (PARM), \
180b57cec5SDimitry Andric      "argument must be a constant integer")))
190b57cec5SDimitry Andric #define __constant_range(PARM, LOW, HIGH) \
200b57cec5SDimitry Andric   __attribute__((__enable_if__ ((PARM) >= (LOW) && (PARM) <= (HIGH), \
210b57cec5SDimitry Andric      "argument must be a constant integer from " #LOW " to " #HIGH)))
220b57cec5SDimitry Andric #define __constant_pow2_range(PARM, LOW, HIGH) \
230b57cec5SDimitry Andric   __attribute__((__enable_if__ ((PARM) >= (LOW) && (PARM) <= (HIGH) && \
240b57cec5SDimitry Andric                                 ((PARM) & ((PARM) - 1)) == 0, \
250b57cec5SDimitry Andric      "argument must be a constant power of 2 from " #LOW " to " #HIGH)))
260b57cec5SDimitry Andric 
270b57cec5SDimitry Andric /*-- __lcbb -----------------------------------------------------------------*/
280b57cec5SDimitry Andric 
290b57cec5SDimitry Andric extern __ATTRS_o unsigned int
300b57cec5SDimitry Andric __lcbb(const void *__ptr, unsigned short __len)
310b57cec5SDimitry Andric   __constant_pow2_range(__len, 64, 4096);
320b57cec5SDimitry Andric 
330b57cec5SDimitry Andric #define __lcbb(X, Y) ((__typeof__((__lcbb)((X), (Y)))) \
340b57cec5SDimitry Andric   __builtin_s390_lcbb((X), __builtin_constant_p((Y))? \
350b57cec5SDimitry Andric                            ((Y) == 64 ? 0 : \
360b57cec5SDimitry Andric                             (Y) == 128 ? 1 : \
370b57cec5SDimitry Andric                             (Y) == 256 ? 2 : \
380b57cec5SDimitry Andric                             (Y) == 512 ? 3 : \
390b57cec5SDimitry Andric                             (Y) == 1024 ? 4 : \
400b57cec5SDimitry Andric                             (Y) == 2048 ? 5 : \
410b57cec5SDimitry Andric                             (Y) == 4096 ? 6 : 0) : 0))
420b57cec5SDimitry Andric 
430b57cec5SDimitry Andric /*-- vec_extract ------------------------------------------------------------*/
440b57cec5SDimitry Andric 
450b57cec5SDimitry Andric static inline __ATTRS_o_ai signed char
465ffd83dbSDimitry Andric vec_extract(__vector signed char __vec, int __index) {
470b57cec5SDimitry Andric   return __vec[__index & 15];
480b57cec5SDimitry Andric }
490b57cec5SDimitry Andric 
500b57cec5SDimitry Andric static inline __ATTRS_o_ai unsigned char
515ffd83dbSDimitry Andric vec_extract(__vector __bool char __vec, int __index) {
520b57cec5SDimitry Andric   return __vec[__index & 15];
530b57cec5SDimitry Andric }
540b57cec5SDimitry Andric 
550b57cec5SDimitry Andric static inline __ATTRS_o_ai unsigned char
565ffd83dbSDimitry Andric vec_extract(__vector unsigned char __vec, int __index) {
570b57cec5SDimitry Andric   return __vec[__index & 15];
580b57cec5SDimitry Andric }
590b57cec5SDimitry Andric 
600b57cec5SDimitry Andric static inline __ATTRS_o_ai signed short
615ffd83dbSDimitry Andric vec_extract(__vector signed short __vec, int __index) {
620b57cec5SDimitry Andric   return __vec[__index & 7];
630b57cec5SDimitry Andric }
640b57cec5SDimitry Andric 
650b57cec5SDimitry Andric static inline __ATTRS_o_ai unsigned short
665ffd83dbSDimitry Andric vec_extract(__vector __bool short __vec, int __index) {
670b57cec5SDimitry Andric   return __vec[__index & 7];
680b57cec5SDimitry Andric }
690b57cec5SDimitry Andric 
700b57cec5SDimitry Andric static inline __ATTRS_o_ai unsigned short
715ffd83dbSDimitry Andric vec_extract(__vector unsigned short __vec, int __index) {
720b57cec5SDimitry Andric   return __vec[__index & 7];
730b57cec5SDimitry Andric }
740b57cec5SDimitry Andric 
750b57cec5SDimitry Andric static inline __ATTRS_o_ai signed int
765ffd83dbSDimitry Andric vec_extract(__vector signed int __vec, int __index) {
770b57cec5SDimitry Andric   return __vec[__index & 3];
780b57cec5SDimitry Andric }
790b57cec5SDimitry Andric 
800b57cec5SDimitry Andric static inline __ATTRS_o_ai unsigned int
815ffd83dbSDimitry Andric vec_extract(__vector __bool int __vec, int __index) {
820b57cec5SDimitry Andric   return __vec[__index & 3];
830b57cec5SDimitry Andric }
840b57cec5SDimitry Andric 
850b57cec5SDimitry Andric static inline __ATTRS_o_ai unsigned int
865ffd83dbSDimitry Andric vec_extract(__vector unsigned int __vec, int __index) {
870b57cec5SDimitry Andric   return __vec[__index & 3];
880b57cec5SDimitry Andric }
890b57cec5SDimitry Andric 
900b57cec5SDimitry Andric static inline __ATTRS_o_ai signed long long
915ffd83dbSDimitry Andric vec_extract(__vector signed long long __vec, int __index) {
920b57cec5SDimitry Andric   return __vec[__index & 1];
930b57cec5SDimitry Andric }
940b57cec5SDimitry Andric 
950b57cec5SDimitry Andric static inline __ATTRS_o_ai unsigned long long
965ffd83dbSDimitry Andric vec_extract(__vector __bool long long __vec, int __index) {
970b57cec5SDimitry Andric   return __vec[__index & 1];
980b57cec5SDimitry Andric }
990b57cec5SDimitry Andric 
1000b57cec5SDimitry Andric static inline __ATTRS_o_ai unsigned long long
1015ffd83dbSDimitry Andric vec_extract(__vector unsigned long long __vec, int __index) {
1020b57cec5SDimitry Andric   return __vec[__index & 1];
1030b57cec5SDimitry Andric }
1040b57cec5SDimitry Andric 
1050b57cec5SDimitry Andric #if __ARCH__ >= 12
1060b57cec5SDimitry Andric static inline __ATTRS_o_ai float
1075ffd83dbSDimitry Andric vec_extract(__vector float __vec, int __index) {
1080b57cec5SDimitry Andric   return __vec[__index & 3];
1090b57cec5SDimitry Andric }
1100b57cec5SDimitry Andric #endif
1110b57cec5SDimitry Andric 
1120b57cec5SDimitry Andric static inline __ATTRS_o_ai double
1135ffd83dbSDimitry Andric vec_extract(__vector double __vec, int __index) {
1140b57cec5SDimitry Andric   return __vec[__index & 1];
1150b57cec5SDimitry Andric }
1160b57cec5SDimitry Andric 
1170b57cec5SDimitry Andric /*-- vec_insert -------------------------------------------------------------*/
1180b57cec5SDimitry Andric 
1195ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
1205ffd83dbSDimitry Andric vec_insert(signed char __scalar, __vector signed char __vec, int __index) {
1210b57cec5SDimitry Andric   __vec[__index & 15] = __scalar;
1220b57cec5SDimitry Andric   return __vec;
1230b57cec5SDimitry Andric }
1240b57cec5SDimitry Andric 
1250b57cec5SDimitry Andric // This prototype is deprecated.
1265ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
1275ffd83dbSDimitry Andric vec_insert(unsigned char __scalar, __vector __bool char __vec, int __index) {
1285ffd83dbSDimitry Andric   __vector unsigned char __newvec = (__vector unsigned char)__vec;
1290b57cec5SDimitry Andric   __newvec[__index & 15] = (unsigned char)__scalar;
1300b57cec5SDimitry Andric   return __newvec;
1310b57cec5SDimitry Andric }
1320b57cec5SDimitry Andric 
1335ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
1345ffd83dbSDimitry Andric vec_insert(unsigned char __scalar, __vector unsigned char __vec, int __index) {
1350b57cec5SDimitry Andric   __vec[__index & 15] = __scalar;
1360b57cec5SDimitry Andric   return __vec;
1370b57cec5SDimitry Andric }
1380b57cec5SDimitry Andric 
1395ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
1405ffd83dbSDimitry Andric vec_insert(signed short __scalar, __vector signed short __vec, int __index) {
1410b57cec5SDimitry Andric   __vec[__index & 7] = __scalar;
1420b57cec5SDimitry Andric   return __vec;
1430b57cec5SDimitry Andric }
1440b57cec5SDimitry Andric 
1450b57cec5SDimitry Andric // This prototype is deprecated.
1465ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
1475ffd83dbSDimitry Andric vec_insert(unsigned short __scalar, __vector __bool short __vec,
1485ffd83dbSDimitry Andric            int __index) {
1495ffd83dbSDimitry Andric   __vector unsigned short __newvec = (__vector unsigned short)__vec;
1500b57cec5SDimitry Andric   __newvec[__index & 7] = (unsigned short)__scalar;
1510b57cec5SDimitry Andric   return __newvec;
1520b57cec5SDimitry Andric }
1530b57cec5SDimitry Andric 
1545ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
1555ffd83dbSDimitry Andric vec_insert(unsigned short __scalar, __vector unsigned short __vec,
1565ffd83dbSDimitry Andric            int __index) {
1570b57cec5SDimitry Andric   __vec[__index & 7] = __scalar;
1580b57cec5SDimitry Andric   return __vec;
1590b57cec5SDimitry Andric }
1600b57cec5SDimitry Andric 
1615ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
1625ffd83dbSDimitry Andric vec_insert(signed int __scalar, __vector signed int __vec, int __index) {
1630b57cec5SDimitry Andric   __vec[__index & 3] = __scalar;
1640b57cec5SDimitry Andric   return __vec;
1650b57cec5SDimitry Andric }
1660b57cec5SDimitry Andric 
1670b57cec5SDimitry Andric // This prototype is deprecated.
1685ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
1695ffd83dbSDimitry Andric vec_insert(unsigned int __scalar, __vector __bool int __vec, int __index) {
1705ffd83dbSDimitry Andric   __vector unsigned int __newvec = (__vector unsigned int)__vec;
1710b57cec5SDimitry Andric   __newvec[__index & 3] = __scalar;
1720b57cec5SDimitry Andric   return __newvec;
1730b57cec5SDimitry Andric }
1740b57cec5SDimitry Andric 
1755ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
1765ffd83dbSDimitry Andric vec_insert(unsigned int __scalar, __vector unsigned int __vec, int __index) {
1770b57cec5SDimitry Andric   __vec[__index & 3] = __scalar;
1780b57cec5SDimitry Andric   return __vec;
1790b57cec5SDimitry Andric }
1800b57cec5SDimitry Andric 
1815ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
1825ffd83dbSDimitry Andric vec_insert(signed long long __scalar, __vector signed long long __vec,
1830b57cec5SDimitry Andric            int __index) {
1840b57cec5SDimitry Andric   __vec[__index & 1] = __scalar;
1850b57cec5SDimitry Andric   return __vec;
1860b57cec5SDimitry Andric }
1870b57cec5SDimitry Andric 
1880b57cec5SDimitry Andric // This prototype is deprecated.
1895ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
1905ffd83dbSDimitry Andric vec_insert(unsigned long long __scalar, __vector __bool long long __vec,
1910b57cec5SDimitry Andric            int __index) {
1925ffd83dbSDimitry Andric   __vector unsigned long long __newvec = (__vector unsigned long long)__vec;
1930b57cec5SDimitry Andric   __newvec[__index & 1] = __scalar;
1940b57cec5SDimitry Andric   return __newvec;
1950b57cec5SDimitry Andric }
1960b57cec5SDimitry Andric 
1975ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
1985ffd83dbSDimitry Andric vec_insert(unsigned long long __scalar, __vector unsigned long long __vec,
1990b57cec5SDimitry Andric            int __index) {
2000b57cec5SDimitry Andric   __vec[__index & 1] = __scalar;
2010b57cec5SDimitry Andric   return __vec;
2020b57cec5SDimitry Andric }
2030b57cec5SDimitry Andric 
2040b57cec5SDimitry Andric #if __ARCH__ >= 12
2055ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
2065ffd83dbSDimitry Andric vec_insert(float __scalar, __vector float __vec, int __index) {
2070b57cec5SDimitry Andric   __vec[__index & 1] = __scalar;
2080b57cec5SDimitry Andric   return __vec;
2090b57cec5SDimitry Andric }
2100b57cec5SDimitry Andric #endif
2110b57cec5SDimitry Andric 
2125ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
2135ffd83dbSDimitry Andric vec_insert(double __scalar, __vector double __vec, int __index) {
2140b57cec5SDimitry Andric   __vec[__index & 1] = __scalar;
2150b57cec5SDimitry Andric   return __vec;
2160b57cec5SDimitry Andric }
2170b57cec5SDimitry Andric 
2180b57cec5SDimitry Andric /*-- vec_promote ------------------------------------------------------------*/
2190b57cec5SDimitry Andric 
2205ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
2210b57cec5SDimitry Andric vec_promote(signed char __scalar, int __index) {
2225ffd83dbSDimitry Andric   const __vector signed char __zero = (__vector signed char)0;
2235ffd83dbSDimitry Andric   __vector signed char __vec = __builtin_shufflevector(__zero, __zero,
2240b57cec5SDimitry Andric     -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
2250b57cec5SDimitry Andric   __vec[__index & 15] = __scalar;
2260b57cec5SDimitry Andric   return __vec;
2270b57cec5SDimitry Andric }
2280b57cec5SDimitry Andric 
2295ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
2300b57cec5SDimitry Andric vec_promote(unsigned char __scalar, int __index) {
2315ffd83dbSDimitry Andric   const __vector unsigned char __zero = (__vector unsigned char)0;
2325ffd83dbSDimitry Andric   __vector unsigned char __vec = __builtin_shufflevector(__zero, __zero,
2330b57cec5SDimitry Andric     -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
2340b57cec5SDimitry Andric   __vec[__index & 15] = __scalar;
2350b57cec5SDimitry Andric   return __vec;
2360b57cec5SDimitry Andric }
2370b57cec5SDimitry Andric 
2385ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
2390b57cec5SDimitry Andric vec_promote(signed short __scalar, int __index) {
2405ffd83dbSDimitry Andric   const __vector signed short __zero = (__vector signed short)0;
2415ffd83dbSDimitry Andric   __vector signed short __vec = __builtin_shufflevector(__zero, __zero,
2420b57cec5SDimitry Andric                                 -1, -1, -1, -1, -1, -1, -1, -1);
2430b57cec5SDimitry Andric   __vec[__index & 7] = __scalar;
2440b57cec5SDimitry Andric   return __vec;
2450b57cec5SDimitry Andric }
2460b57cec5SDimitry Andric 
2475ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
2480b57cec5SDimitry Andric vec_promote(unsigned short __scalar, int __index) {
2495ffd83dbSDimitry Andric   const __vector unsigned short __zero = (__vector unsigned short)0;
2505ffd83dbSDimitry Andric   __vector unsigned short __vec = __builtin_shufflevector(__zero, __zero,
2510b57cec5SDimitry Andric                                   -1, -1, -1, -1, -1, -1, -1, -1);
2520b57cec5SDimitry Andric   __vec[__index & 7] = __scalar;
2530b57cec5SDimitry Andric   return __vec;
2540b57cec5SDimitry Andric }
2550b57cec5SDimitry Andric 
2565ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
2570b57cec5SDimitry Andric vec_promote(signed int __scalar, int __index) {
2585ffd83dbSDimitry Andric   const __vector signed int __zero = (__vector signed int)0;
2595ffd83dbSDimitry Andric   __vector signed int __vec = __builtin_shufflevector(__zero, __zero,
2600b57cec5SDimitry Andric                                                       -1, -1, -1, -1);
2610b57cec5SDimitry Andric   __vec[__index & 3] = __scalar;
2620b57cec5SDimitry Andric   return __vec;
2630b57cec5SDimitry Andric }
2640b57cec5SDimitry Andric 
2655ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
2660b57cec5SDimitry Andric vec_promote(unsigned int __scalar, int __index) {
2675ffd83dbSDimitry Andric   const __vector unsigned int __zero = (__vector unsigned int)0;
2685ffd83dbSDimitry Andric   __vector unsigned int __vec = __builtin_shufflevector(__zero, __zero,
2690b57cec5SDimitry Andric                                                         -1, -1, -1, -1);
2700b57cec5SDimitry Andric   __vec[__index & 3] = __scalar;
2710b57cec5SDimitry Andric   return __vec;
2720b57cec5SDimitry Andric }
2730b57cec5SDimitry Andric 
2745ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
2750b57cec5SDimitry Andric vec_promote(signed long long __scalar, int __index) {
2765ffd83dbSDimitry Andric   const __vector signed long long __zero = (__vector signed long long)0;
2775ffd83dbSDimitry Andric   __vector signed long long __vec = __builtin_shufflevector(__zero, __zero,
2780b57cec5SDimitry Andric                                                             -1, -1);
2790b57cec5SDimitry Andric   __vec[__index & 1] = __scalar;
2800b57cec5SDimitry Andric   return __vec;
2810b57cec5SDimitry Andric }
2820b57cec5SDimitry Andric 
2835ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
2840b57cec5SDimitry Andric vec_promote(unsigned long long __scalar, int __index) {
2855ffd83dbSDimitry Andric   const __vector unsigned long long __zero = (__vector unsigned long long)0;
2865ffd83dbSDimitry Andric   __vector unsigned long long __vec = __builtin_shufflevector(__zero, __zero,
2870b57cec5SDimitry Andric                                                               -1, -1);
2880b57cec5SDimitry Andric   __vec[__index & 1] = __scalar;
2890b57cec5SDimitry Andric   return __vec;
2900b57cec5SDimitry Andric }
2910b57cec5SDimitry Andric 
2920b57cec5SDimitry Andric #if __ARCH__ >= 12
2935ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
2940b57cec5SDimitry Andric vec_promote(float __scalar, int __index) {
2955ffd83dbSDimitry Andric   const __vector float __zero = (__vector float)0.0f;
2965ffd83dbSDimitry Andric   __vector float __vec = __builtin_shufflevector(__zero, __zero,
2975ffd83dbSDimitry Andric                                                  -1, -1, -1, -1);
2980b57cec5SDimitry Andric   __vec[__index & 3] = __scalar;
2990b57cec5SDimitry Andric   return __vec;
3000b57cec5SDimitry Andric }
3010b57cec5SDimitry Andric #endif
3020b57cec5SDimitry Andric 
3035ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
3040b57cec5SDimitry Andric vec_promote(double __scalar, int __index) {
3055ffd83dbSDimitry Andric   const __vector double __zero = (__vector double)0.0;
3065ffd83dbSDimitry Andric   __vector double __vec = __builtin_shufflevector(__zero, __zero, -1, -1);
3070b57cec5SDimitry Andric   __vec[__index & 1] = __scalar;
3080b57cec5SDimitry Andric   return __vec;
3090b57cec5SDimitry Andric }
3100b57cec5SDimitry Andric 
3110b57cec5SDimitry Andric /*-- vec_insert_and_zero ----------------------------------------------------*/
3120b57cec5SDimitry Andric 
3135ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
3140b57cec5SDimitry Andric vec_insert_and_zero(const signed char *__ptr) {
3155ffd83dbSDimitry Andric   __vector signed char __vec = (__vector signed char)0;
3160b57cec5SDimitry Andric   __vec[7] = *__ptr;
3170b57cec5SDimitry Andric   return __vec;
3180b57cec5SDimitry Andric }
3190b57cec5SDimitry Andric 
3205ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
3210b57cec5SDimitry Andric vec_insert_and_zero(const unsigned char *__ptr) {
3225ffd83dbSDimitry Andric   __vector unsigned char __vec = (__vector unsigned char)0;
3230b57cec5SDimitry Andric   __vec[7] = *__ptr;
3240b57cec5SDimitry Andric   return __vec;
3250b57cec5SDimitry Andric }
3260b57cec5SDimitry Andric 
3275ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
3280b57cec5SDimitry Andric vec_insert_and_zero(const signed short *__ptr) {
3295ffd83dbSDimitry Andric   __vector signed short __vec = (__vector signed short)0;
3300b57cec5SDimitry Andric   __vec[3] = *__ptr;
3310b57cec5SDimitry Andric   return __vec;
3320b57cec5SDimitry Andric }
3330b57cec5SDimitry Andric 
3345ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
3350b57cec5SDimitry Andric vec_insert_and_zero(const unsigned short *__ptr) {
3365ffd83dbSDimitry Andric   __vector unsigned short __vec = (__vector unsigned short)0;
3370b57cec5SDimitry Andric   __vec[3] = *__ptr;
3380b57cec5SDimitry Andric   return __vec;
3390b57cec5SDimitry Andric }
3400b57cec5SDimitry Andric 
3415ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
3420b57cec5SDimitry Andric vec_insert_and_zero(const signed int *__ptr) {
3435ffd83dbSDimitry Andric   __vector signed int __vec = (__vector signed int)0;
3440b57cec5SDimitry Andric   __vec[1] = *__ptr;
3450b57cec5SDimitry Andric   return __vec;
3460b57cec5SDimitry Andric }
3470b57cec5SDimitry Andric 
3485ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
3490b57cec5SDimitry Andric vec_insert_and_zero(const unsigned int *__ptr) {
3505ffd83dbSDimitry Andric   __vector unsigned int __vec = (__vector unsigned int)0;
3510b57cec5SDimitry Andric   __vec[1] = *__ptr;
3520b57cec5SDimitry Andric   return __vec;
3530b57cec5SDimitry Andric }
3540b57cec5SDimitry Andric 
3555ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
3560b57cec5SDimitry Andric vec_insert_and_zero(const signed long long *__ptr) {
3575ffd83dbSDimitry Andric   __vector signed long long __vec = (__vector signed long long)0;
3580b57cec5SDimitry Andric   __vec[0] = *__ptr;
3590b57cec5SDimitry Andric   return __vec;
3600b57cec5SDimitry Andric }
3610b57cec5SDimitry Andric 
3625ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
3630b57cec5SDimitry Andric vec_insert_and_zero(const unsigned long long *__ptr) {
3645ffd83dbSDimitry Andric   __vector unsigned long long __vec = (__vector unsigned long long)0;
3650b57cec5SDimitry Andric   __vec[0] = *__ptr;
3660b57cec5SDimitry Andric   return __vec;
3670b57cec5SDimitry Andric }
3680b57cec5SDimitry Andric 
3690b57cec5SDimitry Andric #if __ARCH__ >= 12
3705ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
3710b57cec5SDimitry Andric vec_insert_and_zero(const float *__ptr) {
3725ffd83dbSDimitry Andric   __vector float __vec = (__vector float)0.0f;
3730b57cec5SDimitry Andric   __vec[1] = *__ptr;
3740b57cec5SDimitry Andric   return __vec;
3750b57cec5SDimitry Andric }
3760b57cec5SDimitry Andric #endif
3770b57cec5SDimitry Andric 
3785ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
3790b57cec5SDimitry Andric vec_insert_and_zero(const double *__ptr) {
3805ffd83dbSDimitry Andric   __vector double __vec = (__vector double)0.0;
3810b57cec5SDimitry Andric   __vec[0] = *__ptr;
3820b57cec5SDimitry Andric   return __vec;
3830b57cec5SDimitry Andric }
3840b57cec5SDimitry Andric 
3850b57cec5SDimitry Andric /*-- vec_perm ---------------------------------------------------------------*/
3860b57cec5SDimitry Andric 
3875ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
3885ffd83dbSDimitry Andric vec_perm(__vector signed char __a, __vector signed char __b,
3895ffd83dbSDimitry Andric          __vector unsigned char __c) {
3905ffd83dbSDimitry Andric   return (__vector signed char)__builtin_s390_vperm(
3915ffd83dbSDimitry Andric            (__vector unsigned char)__a, (__vector unsigned char)__b, __c);
3920b57cec5SDimitry Andric }
3930b57cec5SDimitry Andric 
3945ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
3955ffd83dbSDimitry Andric vec_perm(__vector unsigned char __a, __vector unsigned char __b,
3965ffd83dbSDimitry Andric          __vector unsigned char __c) {
3975ffd83dbSDimitry Andric   return (__vector unsigned char)__builtin_s390_vperm(
3985ffd83dbSDimitry Andric            (__vector unsigned char)__a, (__vector unsigned char)__b, __c);
3990b57cec5SDimitry Andric }
4000b57cec5SDimitry Andric 
4015ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
4025ffd83dbSDimitry Andric vec_perm(__vector __bool char __a, __vector __bool char __b,
4035ffd83dbSDimitry Andric          __vector unsigned char __c) {
4045ffd83dbSDimitry Andric   return (__vector __bool char)__builtin_s390_vperm(
4055ffd83dbSDimitry Andric            (__vector unsigned char)__a, (__vector unsigned char)__b, __c);
4060b57cec5SDimitry Andric }
4070b57cec5SDimitry Andric 
4085ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
4095ffd83dbSDimitry Andric vec_perm(__vector signed short __a, __vector signed short __b,
4105ffd83dbSDimitry Andric          __vector unsigned char __c) {
4115ffd83dbSDimitry Andric   return (__vector signed short)__builtin_s390_vperm(
4125ffd83dbSDimitry Andric            (__vector unsigned char)__a, (__vector unsigned char)__b, __c);
4130b57cec5SDimitry Andric }
4140b57cec5SDimitry Andric 
4155ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
4165ffd83dbSDimitry Andric vec_perm(__vector unsigned short __a, __vector unsigned short __b,
4175ffd83dbSDimitry Andric          __vector unsigned char __c) {
4185ffd83dbSDimitry Andric   return (__vector unsigned short)__builtin_s390_vperm(
4195ffd83dbSDimitry Andric            (__vector unsigned char)__a, (__vector unsigned char)__b, __c);
4200b57cec5SDimitry Andric }
4210b57cec5SDimitry Andric 
4225ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
4235ffd83dbSDimitry Andric vec_perm(__vector __bool short __a, __vector __bool short __b,
4245ffd83dbSDimitry Andric          __vector unsigned char __c) {
4255ffd83dbSDimitry Andric   return (__vector __bool short)__builtin_s390_vperm(
4265ffd83dbSDimitry Andric            (__vector unsigned char)__a, (__vector unsigned char)__b, __c);
4270b57cec5SDimitry Andric }
4280b57cec5SDimitry Andric 
4295ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
4305ffd83dbSDimitry Andric vec_perm(__vector signed int __a, __vector signed int __b,
4315ffd83dbSDimitry Andric          __vector unsigned char __c) {
4325ffd83dbSDimitry Andric   return (__vector signed int)__builtin_s390_vperm(
4335ffd83dbSDimitry Andric            (__vector unsigned char)__a, (__vector unsigned char)__b, __c);
4340b57cec5SDimitry Andric }
4350b57cec5SDimitry Andric 
4365ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
4375ffd83dbSDimitry Andric vec_perm(__vector unsigned int __a, __vector unsigned int __b,
4385ffd83dbSDimitry Andric          __vector unsigned char __c) {
4395ffd83dbSDimitry Andric   return (__vector unsigned int)__builtin_s390_vperm(
4405ffd83dbSDimitry Andric            (__vector unsigned char)__a, (__vector unsigned char)__b, __c);
4410b57cec5SDimitry Andric }
4420b57cec5SDimitry Andric 
4435ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
4445ffd83dbSDimitry Andric vec_perm(__vector __bool int __a, __vector __bool int __b,
4455ffd83dbSDimitry Andric          __vector unsigned char __c) {
4465ffd83dbSDimitry Andric   return (__vector __bool int)__builtin_s390_vperm(
4475ffd83dbSDimitry Andric            (__vector unsigned char)__a, (__vector unsigned char)__b, __c);
4480b57cec5SDimitry Andric }
4490b57cec5SDimitry Andric 
4505ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
4515ffd83dbSDimitry Andric vec_perm(__vector signed long long __a, __vector signed long long __b,
4525ffd83dbSDimitry Andric          __vector unsigned char __c) {
4535ffd83dbSDimitry Andric   return (__vector signed long long)__builtin_s390_vperm(
4545ffd83dbSDimitry Andric            (__vector unsigned char)__a, (__vector unsigned char)__b, __c);
4550b57cec5SDimitry Andric }
4560b57cec5SDimitry Andric 
4575ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
4585ffd83dbSDimitry Andric vec_perm(__vector unsigned long long __a, __vector unsigned long long __b,
4595ffd83dbSDimitry Andric          __vector unsigned char __c) {
4605ffd83dbSDimitry Andric   return (__vector unsigned long long)__builtin_s390_vperm(
4615ffd83dbSDimitry Andric            (__vector unsigned char)__a, (__vector unsigned char)__b, __c);
4620b57cec5SDimitry Andric }
4630b57cec5SDimitry Andric 
4645ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
4655ffd83dbSDimitry Andric vec_perm(__vector __bool long long __a, __vector __bool long long __b,
4665ffd83dbSDimitry Andric          __vector unsigned char __c) {
4675ffd83dbSDimitry Andric   return (__vector __bool long long)__builtin_s390_vperm(
4685ffd83dbSDimitry Andric            (__vector unsigned char)__a, (__vector unsigned char)__b, __c);
4690b57cec5SDimitry Andric }
4700b57cec5SDimitry Andric 
4710b57cec5SDimitry Andric #if __ARCH__ >= 12
4725ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
4735ffd83dbSDimitry Andric vec_perm(__vector float __a, __vector float __b,
4745ffd83dbSDimitry Andric          __vector unsigned char __c) {
4755ffd83dbSDimitry Andric   return (__vector float)__builtin_s390_vperm(
4765ffd83dbSDimitry Andric            (__vector unsigned char)__a, (__vector unsigned char)__b, __c);
4770b57cec5SDimitry Andric }
4780b57cec5SDimitry Andric #endif
4790b57cec5SDimitry Andric 
4805ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
4815ffd83dbSDimitry Andric vec_perm(__vector double __a, __vector double __b,
4825ffd83dbSDimitry Andric          __vector unsigned char __c) {
4835ffd83dbSDimitry Andric   return (__vector double)__builtin_s390_vperm(
4845ffd83dbSDimitry Andric            (__vector unsigned char)__a, (__vector unsigned char)__b, __c);
4850b57cec5SDimitry Andric }
4860b57cec5SDimitry Andric 
4870b57cec5SDimitry Andric /*-- vec_permi --------------------------------------------------------------*/
4880b57cec5SDimitry Andric 
4890b57cec5SDimitry Andric // This prototype is deprecated.
4905ffd83dbSDimitry Andric extern __ATTRS_o __vector signed long long
4915ffd83dbSDimitry Andric vec_permi(__vector signed long long __a, __vector signed long long __b,
4925ffd83dbSDimitry Andric           int __c)
4930b57cec5SDimitry Andric   __constant_range(__c, 0, 3);
4940b57cec5SDimitry Andric 
4950b57cec5SDimitry Andric // This prototype is deprecated.
4965ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned long long
4975ffd83dbSDimitry Andric vec_permi(__vector unsigned long long __a, __vector unsigned long long __b,
4985ffd83dbSDimitry Andric           int __c)
4990b57cec5SDimitry Andric   __constant_range(__c, 0, 3);
5000b57cec5SDimitry Andric 
5010b57cec5SDimitry Andric // This prototype is deprecated.
5025ffd83dbSDimitry Andric extern __ATTRS_o __vector __bool long long
5035ffd83dbSDimitry Andric vec_permi(__vector __bool long long __a, __vector __bool long long __b,
5045ffd83dbSDimitry Andric           int __c)
5050b57cec5SDimitry Andric   __constant_range(__c, 0, 3);
5060b57cec5SDimitry Andric 
5070b57cec5SDimitry Andric // This prototype is deprecated.
5085ffd83dbSDimitry Andric extern __ATTRS_o __vector double
5095ffd83dbSDimitry Andric vec_permi(__vector double __a, __vector double __b, int __c)
5100b57cec5SDimitry Andric   __constant_range(__c, 0, 3);
5110b57cec5SDimitry Andric 
5120b57cec5SDimitry Andric #define vec_permi(X, Y, Z) ((__typeof__((vec_permi)((X), (Y), (Z)))) \
5135ffd83dbSDimitry Andric   __builtin_s390_vpdi((__vector unsigned long long)(X), \
5145ffd83dbSDimitry Andric                       (__vector unsigned long long)(Y), \
5150b57cec5SDimitry Andric                       (((Z) & 2) << 1) | ((Z) & 1)))
5160b57cec5SDimitry Andric 
5170b57cec5SDimitry Andric /*-- vec_bperm_u128 ---------------------------------------------------------*/
5180b57cec5SDimitry Andric 
5190b57cec5SDimitry Andric #if __ARCH__ >= 12
5205ffd83dbSDimitry Andric static inline __ATTRS_ai __vector unsigned long long
5215ffd83dbSDimitry Andric vec_bperm_u128(__vector unsigned char __a, __vector unsigned char __b) {
5220b57cec5SDimitry Andric   return __builtin_s390_vbperm(__a, __b);
5230b57cec5SDimitry Andric }
5240b57cec5SDimitry Andric #endif
5250b57cec5SDimitry Andric 
5260b57cec5SDimitry Andric /*-- vec_revb ---------------------------------------------------------------*/
5270b57cec5SDimitry Andric 
5285ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
5295ffd83dbSDimitry Andric vec_revb(__vector signed short __vec) {
5305ffd83dbSDimitry Andric   return (__vector signed short)
5315ffd83dbSDimitry Andric          __builtin_s390_vlbrh((__vector unsigned short)__vec);
5320b57cec5SDimitry Andric }
5330b57cec5SDimitry Andric 
5345ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
5355ffd83dbSDimitry Andric vec_revb(__vector unsigned short __vec) {
5360b57cec5SDimitry Andric   return __builtin_s390_vlbrh(__vec);
5370b57cec5SDimitry Andric }
5380b57cec5SDimitry Andric 
5395ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
5405ffd83dbSDimitry Andric vec_revb(__vector signed int __vec) {
5415ffd83dbSDimitry Andric   return (__vector signed int)
5425ffd83dbSDimitry Andric          __builtin_s390_vlbrf((__vector unsigned int)__vec);
5430b57cec5SDimitry Andric }
5440b57cec5SDimitry Andric 
5455ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
5465ffd83dbSDimitry Andric vec_revb(__vector unsigned int __vec) {
5470b57cec5SDimitry Andric   return __builtin_s390_vlbrf(__vec);
5480b57cec5SDimitry Andric }
5490b57cec5SDimitry Andric 
5505ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
5515ffd83dbSDimitry Andric vec_revb(__vector signed long long __vec) {
5525ffd83dbSDimitry Andric   return (__vector signed long long)
5535ffd83dbSDimitry Andric          __builtin_s390_vlbrg((__vector unsigned long long)__vec);
5540b57cec5SDimitry Andric }
5550b57cec5SDimitry Andric 
5565ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
5575ffd83dbSDimitry Andric vec_revb(__vector unsigned long long __vec) {
5580b57cec5SDimitry Andric   return __builtin_s390_vlbrg(__vec);
5590b57cec5SDimitry Andric }
5600b57cec5SDimitry Andric 
5610b57cec5SDimitry Andric #if __ARCH__ >= 12
5625ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
5635ffd83dbSDimitry Andric vec_revb(__vector float __vec) {
5645ffd83dbSDimitry Andric   return (__vector float)
5655ffd83dbSDimitry Andric          __builtin_s390_vlbrf((__vector unsigned int)__vec);
5660b57cec5SDimitry Andric }
5670b57cec5SDimitry Andric #endif
5680b57cec5SDimitry Andric 
5695ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
5705ffd83dbSDimitry Andric vec_revb(__vector double __vec) {
5715ffd83dbSDimitry Andric   return (__vector double)
5725ffd83dbSDimitry Andric          __builtin_s390_vlbrg((__vector unsigned long long)__vec);
5730b57cec5SDimitry Andric }
5740b57cec5SDimitry Andric 
5750b57cec5SDimitry Andric /*-- vec_reve ---------------------------------------------------------------*/
5760b57cec5SDimitry Andric 
5775ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
5785ffd83dbSDimitry Andric vec_reve(__vector signed char __vec) {
5795ffd83dbSDimitry Andric   return (__vector signed char) { __vec[15], __vec[14], __vec[13], __vec[12],
5800b57cec5SDimitry Andric                                   __vec[11], __vec[10], __vec[9], __vec[8],
5810b57cec5SDimitry Andric                                   __vec[7], __vec[6], __vec[5], __vec[4],
5820b57cec5SDimitry Andric                                   __vec[3], __vec[2], __vec[1], __vec[0] };
5830b57cec5SDimitry Andric }
5840b57cec5SDimitry Andric 
5855ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
5865ffd83dbSDimitry Andric vec_reve(__vector unsigned char __vec) {
5875ffd83dbSDimitry Andric   return (__vector unsigned char) { __vec[15], __vec[14], __vec[13], __vec[12],
5880b57cec5SDimitry Andric                                     __vec[11], __vec[10], __vec[9], __vec[8],
5890b57cec5SDimitry Andric                                     __vec[7], __vec[6], __vec[5], __vec[4],
5900b57cec5SDimitry Andric                                     __vec[3], __vec[2], __vec[1], __vec[0] };
5910b57cec5SDimitry Andric }
5920b57cec5SDimitry Andric 
5935ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
5945ffd83dbSDimitry Andric vec_reve(__vector __bool char __vec) {
5955ffd83dbSDimitry Andric   return (__vector __bool char) { __vec[15], __vec[14], __vec[13], __vec[12],
5960b57cec5SDimitry Andric                                   __vec[11], __vec[10], __vec[9], __vec[8],
5970b57cec5SDimitry Andric                                   __vec[7], __vec[6], __vec[5], __vec[4],
5980b57cec5SDimitry Andric                                   __vec[3], __vec[2], __vec[1], __vec[0] };
5990b57cec5SDimitry Andric }
6000b57cec5SDimitry Andric 
6015ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
6025ffd83dbSDimitry Andric vec_reve(__vector signed short __vec) {
6035ffd83dbSDimitry Andric   return (__vector signed short) { __vec[7], __vec[6], __vec[5], __vec[4],
6040b57cec5SDimitry Andric                                    __vec[3], __vec[2], __vec[1], __vec[0] };
6050b57cec5SDimitry Andric }
6060b57cec5SDimitry Andric 
6075ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
6085ffd83dbSDimitry Andric vec_reve(__vector unsigned short __vec) {
6095ffd83dbSDimitry Andric   return (__vector unsigned short) { __vec[7], __vec[6], __vec[5], __vec[4],
6100b57cec5SDimitry Andric                                      __vec[3], __vec[2], __vec[1], __vec[0] };
6110b57cec5SDimitry Andric }
6120b57cec5SDimitry Andric 
6135ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
6145ffd83dbSDimitry Andric vec_reve(__vector __bool short __vec) {
6155ffd83dbSDimitry Andric   return (__vector __bool short) { __vec[7], __vec[6], __vec[5], __vec[4],
6160b57cec5SDimitry Andric                                    __vec[3], __vec[2], __vec[1], __vec[0] };
6170b57cec5SDimitry Andric }
6180b57cec5SDimitry Andric 
6195ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
6205ffd83dbSDimitry Andric vec_reve(__vector signed int __vec) {
6215ffd83dbSDimitry Andric   return (__vector signed int) { __vec[3], __vec[2], __vec[1], __vec[0] };
6220b57cec5SDimitry Andric }
6230b57cec5SDimitry Andric 
6245ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
6255ffd83dbSDimitry Andric vec_reve(__vector unsigned int __vec) {
6265ffd83dbSDimitry Andric   return (__vector unsigned int) { __vec[3], __vec[2], __vec[1], __vec[0] };
6270b57cec5SDimitry Andric }
6280b57cec5SDimitry Andric 
6295ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
6305ffd83dbSDimitry Andric vec_reve(__vector __bool int __vec) {
6315ffd83dbSDimitry Andric   return (__vector __bool int) { __vec[3], __vec[2], __vec[1], __vec[0] };
6320b57cec5SDimitry Andric }
6330b57cec5SDimitry Andric 
6345ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
6355ffd83dbSDimitry Andric vec_reve(__vector signed long long __vec) {
6365ffd83dbSDimitry Andric   return (__vector signed long long) { __vec[1], __vec[0] };
6370b57cec5SDimitry Andric }
6380b57cec5SDimitry Andric 
6395ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
6405ffd83dbSDimitry Andric vec_reve(__vector unsigned long long __vec) {
6415ffd83dbSDimitry Andric   return (__vector unsigned long long) { __vec[1], __vec[0] };
6420b57cec5SDimitry Andric }
6430b57cec5SDimitry Andric 
6445ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
6455ffd83dbSDimitry Andric vec_reve(__vector __bool long long __vec) {
6465ffd83dbSDimitry Andric   return (__vector __bool long long) { __vec[1], __vec[0] };
6470b57cec5SDimitry Andric }
6480b57cec5SDimitry Andric 
6490b57cec5SDimitry Andric #if __ARCH__ >= 12
6505ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
6515ffd83dbSDimitry Andric vec_reve(__vector float __vec) {
6525ffd83dbSDimitry Andric   return (__vector float) { __vec[3], __vec[2], __vec[1], __vec[0] };
6530b57cec5SDimitry Andric }
6540b57cec5SDimitry Andric #endif
6550b57cec5SDimitry Andric 
6565ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
6575ffd83dbSDimitry Andric vec_reve(__vector double __vec) {
6585ffd83dbSDimitry Andric   return (__vector double) { __vec[1], __vec[0] };
6590b57cec5SDimitry Andric }
6600b57cec5SDimitry Andric 
6610b57cec5SDimitry Andric /*-- vec_sel ----------------------------------------------------------------*/
6620b57cec5SDimitry Andric 
6635ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
6645ffd83dbSDimitry Andric vec_sel(__vector signed char __a, __vector signed char __b,
6655ffd83dbSDimitry Andric         __vector unsigned char __c) {
6665ffd83dbSDimitry Andric   return (((__vector signed char)__c & __b) |
6675ffd83dbSDimitry Andric           (~(__vector signed char)__c & __a));
6680b57cec5SDimitry Andric }
6690b57cec5SDimitry Andric 
6705ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
6715ffd83dbSDimitry Andric vec_sel(__vector signed char __a, __vector signed char __b,
6725ffd83dbSDimitry Andric         __vector __bool char __c) {
6735ffd83dbSDimitry Andric   return (((__vector signed char)__c & __b) |
6745ffd83dbSDimitry Andric           (~(__vector signed char)__c & __a));
6750b57cec5SDimitry Andric }
6760b57cec5SDimitry Andric 
6775ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
6785ffd83dbSDimitry Andric vec_sel(__vector __bool char __a, __vector __bool char __b,
6795ffd83dbSDimitry Andric         __vector unsigned char __c) {
6805ffd83dbSDimitry Andric   return (((__vector __bool char)__c & __b) |
6815ffd83dbSDimitry Andric           (~(__vector __bool char)__c & __a));
6820b57cec5SDimitry Andric }
6830b57cec5SDimitry Andric 
6845ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
6855ffd83dbSDimitry Andric vec_sel(__vector __bool char __a, __vector __bool char __b,
6865ffd83dbSDimitry Andric         __vector __bool char __c) {
6870b57cec5SDimitry Andric   return (__c & __b) | (~__c & __a);
6880b57cec5SDimitry Andric }
6890b57cec5SDimitry Andric 
6905ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
6915ffd83dbSDimitry Andric vec_sel(__vector unsigned char __a, __vector unsigned char __b,
6925ffd83dbSDimitry Andric         __vector unsigned char __c) {
6930b57cec5SDimitry Andric   return (__c & __b) | (~__c & __a);
6940b57cec5SDimitry Andric }
6950b57cec5SDimitry Andric 
6965ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
6975ffd83dbSDimitry Andric vec_sel(__vector unsigned char __a, __vector unsigned char __b,
6985ffd83dbSDimitry Andric         __vector __bool char __c) {
6995ffd83dbSDimitry Andric   return (((__vector unsigned char)__c & __b) |
7005ffd83dbSDimitry Andric           (~(__vector unsigned char)__c & __a));
7010b57cec5SDimitry Andric }
7020b57cec5SDimitry Andric 
7035ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
7045ffd83dbSDimitry Andric vec_sel(__vector signed short __a, __vector signed short __b,
7055ffd83dbSDimitry Andric         __vector unsigned short __c) {
7065ffd83dbSDimitry Andric   return (((__vector signed short)__c & __b) |
7075ffd83dbSDimitry Andric           (~(__vector signed short)__c & __a));
7080b57cec5SDimitry Andric }
7090b57cec5SDimitry Andric 
7105ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
7115ffd83dbSDimitry Andric vec_sel(__vector signed short __a, __vector signed short __b,
7125ffd83dbSDimitry Andric         __vector __bool short __c) {
7135ffd83dbSDimitry Andric   return (((__vector signed short)__c & __b) |
7145ffd83dbSDimitry Andric           (~(__vector signed short)__c & __a));
7150b57cec5SDimitry Andric }
7160b57cec5SDimitry Andric 
7175ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
7185ffd83dbSDimitry Andric vec_sel(__vector __bool short __a, __vector __bool short __b,
7195ffd83dbSDimitry Andric         __vector unsigned short __c) {
7205ffd83dbSDimitry Andric   return (((__vector __bool short)__c & __b) |
7215ffd83dbSDimitry Andric           (~(__vector __bool short)__c & __a));
7220b57cec5SDimitry Andric }
7230b57cec5SDimitry Andric 
7245ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
7255ffd83dbSDimitry Andric vec_sel(__vector __bool short __a, __vector __bool short __b,
7265ffd83dbSDimitry Andric         __vector __bool short __c) {
7270b57cec5SDimitry Andric   return (__c & __b) | (~__c & __a);
7280b57cec5SDimitry Andric }
7290b57cec5SDimitry Andric 
7305ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
7315ffd83dbSDimitry Andric vec_sel(__vector unsigned short __a, __vector unsigned short __b,
7325ffd83dbSDimitry Andric         __vector unsigned short __c) {
7330b57cec5SDimitry Andric   return (__c & __b) | (~__c & __a);
7340b57cec5SDimitry Andric }
7350b57cec5SDimitry Andric 
7365ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
7375ffd83dbSDimitry Andric vec_sel(__vector unsigned short __a, __vector unsigned short __b,
7385ffd83dbSDimitry Andric         __vector __bool short __c) {
7395ffd83dbSDimitry Andric   return (((__vector unsigned short)__c & __b) |
7405ffd83dbSDimitry Andric           (~(__vector unsigned short)__c & __a));
7410b57cec5SDimitry Andric }
7420b57cec5SDimitry Andric 
7435ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
7445ffd83dbSDimitry Andric vec_sel(__vector signed int __a, __vector signed int __b,
7455ffd83dbSDimitry Andric         __vector unsigned int __c) {
7465ffd83dbSDimitry Andric   return (((__vector signed int)__c & __b) |
7475ffd83dbSDimitry Andric           (~(__vector signed int)__c & __a));
7480b57cec5SDimitry Andric }
7490b57cec5SDimitry Andric 
7505ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
7515ffd83dbSDimitry Andric vec_sel(__vector signed int __a, __vector signed int __b,
7525ffd83dbSDimitry Andric         __vector __bool int __c) {
7535ffd83dbSDimitry Andric   return (((__vector signed int)__c & __b) |
7545ffd83dbSDimitry Andric           (~(__vector signed int)__c & __a));
7550b57cec5SDimitry Andric }
7560b57cec5SDimitry Andric 
7575ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
7585ffd83dbSDimitry Andric vec_sel(__vector __bool int __a, __vector __bool int __b,
7595ffd83dbSDimitry Andric         __vector unsigned int __c) {
7605ffd83dbSDimitry Andric   return (((__vector __bool int)__c & __b) |
7615ffd83dbSDimitry Andric           (~(__vector __bool int)__c & __a));
7620b57cec5SDimitry Andric }
7630b57cec5SDimitry Andric 
7645ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
7655ffd83dbSDimitry Andric vec_sel(__vector __bool int __a, __vector __bool int __b,
7665ffd83dbSDimitry Andric         __vector __bool int __c) {
7670b57cec5SDimitry Andric   return (__c & __b) | (~__c & __a);
7680b57cec5SDimitry Andric }
7690b57cec5SDimitry Andric 
7705ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
7715ffd83dbSDimitry Andric vec_sel(__vector unsigned int __a, __vector unsigned int __b,
7725ffd83dbSDimitry Andric         __vector unsigned int __c) {
7730b57cec5SDimitry Andric   return (__c & __b) | (~__c & __a);
7740b57cec5SDimitry Andric }
7750b57cec5SDimitry Andric 
7765ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
7775ffd83dbSDimitry Andric vec_sel(__vector unsigned int __a, __vector unsigned int __b,
7785ffd83dbSDimitry Andric         __vector __bool int __c) {
7795ffd83dbSDimitry Andric   return (((__vector unsigned int)__c & __b) |
7805ffd83dbSDimitry Andric           (~(__vector unsigned int)__c & __a));
7810b57cec5SDimitry Andric }
7820b57cec5SDimitry Andric 
7835ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
7845ffd83dbSDimitry Andric vec_sel(__vector signed long long __a, __vector signed long long __b,
7855ffd83dbSDimitry Andric         __vector unsigned long long __c) {
7865ffd83dbSDimitry Andric   return (((__vector signed long long)__c & __b) |
7875ffd83dbSDimitry Andric           (~(__vector signed long long)__c & __a));
7880b57cec5SDimitry Andric }
7890b57cec5SDimitry Andric 
7905ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
7915ffd83dbSDimitry Andric vec_sel(__vector signed long long __a, __vector signed long long __b,
7925ffd83dbSDimitry Andric         __vector __bool long long __c) {
7935ffd83dbSDimitry Andric   return (((__vector signed long long)__c & __b) |
7945ffd83dbSDimitry Andric           (~(__vector signed long long)__c & __a));
7950b57cec5SDimitry Andric }
7960b57cec5SDimitry Andric 
7975ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
7985ffd83dbSDimitry Andric vec_sel(__vector __bool long long __a, __vector __bool long long __b,
7995ffd83dbSDimitry Andric         __vector unsigned long long __c) {
8005ffd83dbSDimitry Andric   return (((__vector __bool long long)__c & __b) |
8015ffd83dbSDimitry Andric           (~(__vector __bool long long)__c & __a));
8020b57cec5SDimitry Andric }
8030b57cec5SDimitry Andric 
8045ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
8055ffd83dbSDimitry Andric vec_sel(__vector __bool long long __a, __vector __bool long long __b,
8065ffd83dbSDimitry Andric         __vector __bool long long __c) {
8070b57cec5SDimitry Andric   return (__c & __b) | (~__c & __a);
8080b57cec5SDimitry Andric }
8090b57cec5SDimitry Andric 
8105ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
8115ffd83dbSDimitry Andric vec_sel(__vector unsigned long long __a, __vector unsigned long long __b,
8125ffd83dbSDimitry Andric         __vector unsigned long long __c) {
8130b57cec5SDimitry Andric   return (__c & __b) | (~__c & __a);
8140b57cec5SDimitry Andric }
8150b57cec5SDimitry Andric 
8165ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
8175ffd83dbSDimitry Andric vec_sel(__vector unsigned long long __a, __vector unsigned long long __b,
8185ffd83dbSDimitry Andric         __vector __bool long long __c) {
8195ffd83dbSDimitry Andric   return (((__vector unsigned long long)__c & __b) |
8205ffd83dbSDimitry Andric           (~(__vector unsigned long long)__c & __a));
8210b57cec5SDimitry Andric }
8220b57cec5SDimitry Andric 
8230b57cec5SDimitry Andric #if __ARCH__ >= 12
8245ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
8255ffd83dbSDimitry Andric vec_sel(__vector float __a, __vector float __b, __vector unsigned int __c) {
8265ffd83dbSDimitry Andric   return (__vector float)((__c & (__vector unsigned int)__b) |
8275ffd83dbSDimitry Andric                           (~__c & (__vector unsigned int)__a));
8280b57cec5SDimitry Andric }
8290b57cec5SDimitry Andric 
8305ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
8315ffd83dbSDimitry Andric vec_sel(__vector float __a, __vector float __b, __vector __bool int __c) {
8325ffd83dbSDimitry Andric   __vector unsigned int __ac = (__vector unsigned int)__a;
8335ffd83dbSDimitry Andric   __vector unsigned int __bc = (__vector unsigned int)__b;
8345ffd83dbSDimitry Andric   __vector unsigned int __cc = (__vector unsigned int)__c;
8355ffd83dbSDimitry Andric   return (__vector float)((__cc & __bc) | (~__cc & __ac));
8360b57cec5SDimitry Andric }
8370b57cec5SDimitry Andric #endif
8380b57cec5SDimitry Andric 
8395ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
8405ffd83dbSDimitry Andric vec_sel(__vector double __a, __vector double __b,
8415ffd83dbSDimitry Andric         __vector unsigned long long __c) {
8425ffd83dbSDimitry Andric   return (__vector double)((__c & (__vector unsigned long long)__b) |
8435ffd83dbSDimitry Andric                          (~__c & (__vector unsigned long long)__a));
8440b57cec5SDimitry Andric }
8450b57cec5SDimitry Andric 
8465ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
8475ffd83dbSDimitry Andric vec_sel(__vector double __a, __vector double __b,
8485ffd83dbSDimitry Andric         __vector __bool long long __c) {
8495ffd83dbSDimitry Andric   __vector unsigned long long __ac = (__vector unsigned long long)__a;
8505ffd83dbSDimitry Andric   __vector unsigned long long __bc = (__vector unsigned long long)__b;
8515ffd83dbSDimitry Andric   __vector unsigned long long __cc = (__vector unsigned long long)__c;
8525ffd83dbSDimitry Andric   return (__vector double)((__cc & __bc) | (~__cc & __ac));
8530b57cec5SDimitry Andric }
8540b57cec5SDimitry Andric 
8550b57cec5SDimitry Andric /*-- vec_gather_element -----------------------------------------------------*/
8560b57cec5SDimitry Andric 
8575ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
8585ffd83dbSDimitry Andric vec_gather_element(__vector signed int __vec,
8595ffd83dbSDimitry Andric                    __vector unsigned int __offset,
8600b57cec5SDimitry Andric                    const signed int *__ptr, int __index)
8610b57cec5SDimitry Andric   __constant_range(__index, 0, 3) {
8620b57cec5SDimitry Andric   __vec[__index] = *(const signed int *)(
8635ffd83dbSDimitry Andric     (const char *)__ptr + __offset[__index]);
8640b57cec5SDimitry Andric   return __vec;
8650b57cec5SDimitry Andric }
8660b57cec5SDimitry Andric 
8675ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
8685ffd83dbSDimitry Andric vec_gather_element(__vector __bool int __vec,
8695ffd83dbSDimitry Andric                    __vector unsigned int __offset,
8700b57cec5SDimitry Andric                    const unsigned int *__ptr, int __index)
8710b57cec5SDimitry Andric   __constant_range(__index, 0, 3) {
8720b57cec5SDimitry Andric   __vec[__index] = *(const unsigned int *)(
8735ffd83dbSDimitry Andric     (const char *)__ptr + __offset[__index]);
8740b57cec5SDimitry Andric   return __vec;
8750b57cec5SDimitry Andric }
8760b57cec5SDimitry Andric 
8775ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
8785ffd83dbSDimitry Andric vec_gather_element(__vector unsigned int __vec,
8795ffd83dbSDimitry Andric                    __vector unsigned int __offset,
8800b57cec5SDimitry Andric                    const unsigned int *__ptr, int __index)
8810b57cec5SDimitry Andric   __constant_range(__index, 0, 3) {
8820b57cec5SDimitry Andric   __vec[__index] = *(const unsigned int *)(
8835ffd83dbSDimitry Andric     (const char *)__ptr + __offset[__index]);
8840b57cec5SDimitry Andric   return __vec;
8850b57cec5SDimitry Andric }
8860b57cec5SDimitry Andric 
8875ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
8885ffd83dbSDimitry Andric vec_gather_element(__vector signed long long __vec,
8895ffd83dbSDimitry Andric                    __vector unsigned long long __offset,
8900b57cec5SDimitry Andric                    const signed long long *__ptr, int __index)
8910b57cec5SDimitry Andric   __constant_range(__index, 0, 1) {
8920b57cec5SDimitry Andric   __vec[__index] = *(const signed long long *)(
8935ffd83dbSDimitry Andric     (const char *)__ptr + __offset[__index]);
8940b57cec5SDimitry Andric   return __vec;
8950b57cec5SDimitry Andric }
8960b57cec5SDimitry Andric 
8975ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
8985ffd83dbSDimitry Andric vec_gather_element(__vector __bool long long __vec,
8995ffd83dbSDimitry Andric                    __vector unsigned long long __offset,
9000b57cec5SDimitry Andric                    const unsigned long long *__ptr, int __index)
9010b57cec5SDimitry Andric   __constant_range(__index, 0, 1) {
9020b57cec5SDimitry Andric   __vec[__index] = *(const unsigned long long *)(
9035ffd83dbSDimitry Andric     (const char *)__ptr + __offset[__index]);
9040b57cec5SDimitry Andric   return __vec;
9050b57cec5SDimitry Andric }
9060b57cec5SDimitry Andric 
9075ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
9085ffd83dbSDimitry Andric vec_gather_element(__vector unsigned long long __vec,
9095ffd83dbSDimitry Andric                    __vector unsigned long long __offset,
9100b57cec5SDimitry Andric                    const unsigned long long *__ptr, int __index)
9110b57cec5SDimitry Andric   __constant_range(__index, 0, 1) {
9120b57cec5SDimitry Andric   __vec[__index] = *(const unsigned long long *)(
9135ffd83dbSDimitry Andric     (const char *)__ptr + __offset[__index]);
9140b57cec5SDimitry Andric   return __vec;
9150b57cec5SDimitry Andric }
9160b57cec5SDimitry Andric 
9170b57cec5SDimitry Andric #if __ARCH__ >= 12
9185ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
9195ffd83dbSDimitry Andric vec_gather_element(__vector float __vec,
9205ffd83dbSDimitry Andric                    __vector unsigned int __offset,
9210b57cec5SDimitry Andric                    const float *__ptr, int __index)
9220b57cec5SDimitry Andric   __constant_range(__index, 0, 3) {
9230b57cec5SDimitry Andric   __vec[__index] = *(const float *)(
9245ffd83dbSDimitry Andric     (const char *)__ptr + __offset[__index]);
9250b57cec5SDimitry Andric   return __vec;
9260b57cec5SDimitry Andric }
9270b57cec5SDimitry Andric #endif
9280b57cec5SDimitry Andric 
9295ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
9305ffd83dbSDimitry Andric vec_gather_element(__vector double __vec,
9315ffd83dbSDimitry Andric                    __vector unsigned long long __offset,
9320b57cec5SDimitry Andric                    const double *__ptr, int __index)
9330b57cec5SDimitry Andric   __constant_range(__index, 0, 1) {
9340b57cec5SDimitry Andric   __vec[__index] = *(const double *)(
9355ffd83dbSDimitry Andric     (const char *)__ptr + __offset[__index]);
9360b57cec5SDimitry Andric   return __vec;
9370b57cec5SDimitry Andric }
9380b57cec5SDimitry Andric 
9390b57cec5SDimitry Andric /*-- vec_scatter_element ----------------------------------------------------*/
9400b57cec5SDimitry Andric 
9410b57cec5SDimitry Andric static inline __ATTRS_o_ai void
9425ffd83dbSDimitry Andric vec_scatter_element(__vector signed int __vec,
9435ffd83dbSDimitry Andric                     __vector unsigned int __offset,
9440b57cec5SDimitry Andric                     signed int *__ptr, int __index)
9450b57cec5SDimitry Andric   __constant_range(__index, 0, 3) {
9465ffd83dbSDimitry Andric   *(signed int *)((char *)__ptr + __offset[__index]) =
9470b57cec5SDimitry Andric     __vec[__index];
9480b57cec5SDimitry Andric }
9490b57cec5SDimitry Andric 
9500b57cec5SDimitry Andric static inline __ATTRS_o_ai void
9515ffd83dbSDimitry Andric vec_scatter_element(__vector __bool int __vec,
9525ffd83dbSDimitry Andric                     __vector unsigned int __offset,
9530b57cec5SDimitry Andric                     unsigned int *__ptr, int __index)
9540b57cec5SDimitry Andric   __constant_range(__index, 0, 3) {
9555ffd83dbSDimitry Andric   *(unsigned int *)((char *)__ptr + __offset[__index]) =
9560b57cec5SDimitry Andric     __vec[__index];
9570b57cec5SDimitry Andric }
9580b57cec5SDimitry Andric 
9590b57cec5SDimitry Andric static inline __ATTRS_o_ai void
9605ffd83dbSDimitry Andric vec_scatter_element(__vector unsigned int __vec,
9615ffd83dbSDimitry Andric                     __vector unsigned int __offset,
9620b57cec5SDimitry Andric                     unsigned int *__ptr, int __index)
9630b57cec5SDimitry Andric   __constant_range(__index, 0, 3) {
9645ffd83dbSDimitry Andric   *(unsigned int *)((char *)__ptr + __offset[__index]) =
9650b57cec5SDimitry Andric     __vec[__index];
9660b57cec5SDimitry Andric }
9670b57cec5SDimitry Andric 
9680b57cec5SDimitry Andric static inline __ATTRS_o_ai void
9695ffd83dbSDimitry Andric vec_scatter_element(__vector signed long long __vec,
9705ffd83dbSDimitry Andric                     __vector unsigned long long __offset,
9710b57cec5SDimitry Andric                     signed long long *__ptr, int __index)
9720b57cec5SDimitry Andric   __constant_range(__index, 0, 1) {
9735ffd83dbSDimitry Andric   *(signed long long *)((char *)__ptr + __offset[__index]) =
9740b57cec5SDimitry Andric     __vec[__index];
9750b57cec5SDimitry Andric }
9760b57cec5SDimitry Andric 
9770b57cec5SDimitry Andric static inline __ATTRS_o_ai void
9785ffd83dbSDimitry Andric vec_scatter_element(__vector __bool long long __vec,
9795ffd83dbSDimitry Andric                     __vector unsigned long long __offset,
9800b57cec5SDimitry Andric                     unsigned long long *__ptr, int __index)
9810b57cec5SDimitry Andric   __constant_range(__index, 0, 1) {
9825ffd83dbSDimitry Andric   *(unsigned long long *)((char *)__ptr + __offset[__index]) =
9830b57cec5SDimitry Andric     __vec[__index];
9840b57cec5SDimitry Andric }
9850b57cec5SDimitry Andric 
9860b57cec5SDimitry Andric static inline __ATTRS_o_ai void
9875ffd83dbSDimitry Andric vec_scatter_element(__vector unsigned long long __vec,
9885ffd83dbSDimitry Andric                     __vector unsigned long long __offset,
9890b57cec5SDimitry Andric                     unsigned long long *__ptr, int __index)
9900b57cec5SDimitry Andric   __constant_range(__index, 0, 1) {
9915ffd83dbSDimitry Andric   *(unsigned long long *)((char *)__ptr + __offset[__index]) =
9920b57cec5SDimitry Andric     __vec[__index];
9930b57cec5SDimitry Andric }
9940b57cec5SDimitry Andric 
9950b57cec5SDimitry Andric #if __ARCH__ >= 12
9960b57cec5SDimitry Andric static inline __ATTRS_o_ai void
9975ffd83dbSDimitry Andric vec_scatter_element(__vector float __vec,
9985ffd83dbSDimitry Andric                     __vector unsigned int __offset,
9990b57cec5SDimitry Andric                     float *__ptr, int __index)
10000b57cec5SDimitry Andric   __constant_range(__index, 0, 3) {
10015ffd83dbSDimitry Andric   *(float *)((char *)__ptr + __offset[__index]) =
10020b57cec5SDimitry Andric     __vec[__index];
10030b57cec5SDimitry Andric }
10040b57cec5SDimitry Andric #endif
10050b57cec5SDimitry Andric 
10060b57cec5SDimitry Andric static inline __ATTRS_o_ai void
10075ffd83dbSDimitry Andric vec_scatter_element(__vector double __vec,
10085ffd83dbSDimitry Andric                     __vector unsigned long long __offset,
10090b57cec5SDimitry Andric                     double *__ptr, int __index)
10100b57cec5SDimitry Andric   __constant_range(__index, 0, 1) {
10115ffd83dbSDimitry Andric   *(double *)((char *)__ptr + __offset[__index]) =
10120b57cec5SDimitry Andric     __vec[__index];
10130b57cec5SDimitry Andric }
10140b57cec5SDimitry Andric 
10150b57cec5SDimitry Andric /*-- vec_xl -----------------------------------------------------------------*/
10160b57cec5SDimitry Andric 
10175ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
10180b57cec5SDimitry Andric vec_xl(long __offset, const signed char *__ptr) {
1019*fe6060f1SDimitry Andric   __vector signed char V;
1020*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1021*fe6060f1SDimitry Andric                    sizeof(__vector signed char));
1022*fe6060f1SDimitry Andric   return V;
10230b57cec5SDimitry Andric }
10240b57cec5SDimitry Andric 
10255ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
10260b57cec5SDimitry Andric vec_xl(long __offset, const unsigned char *__ptr) {
1027*fe6060f1SDimitry Andric   __vector unsigned char V;
1028*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1029*fe6060f1SDimitry Andric                    sizeof(__vector unsigned char));
1030*fe6060f1SDimitry Andric   return V;
10310b57cec5SDimitry Andric }
10320b57cec5SDimitry Andric 
10335ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
10340b57cec5SDimitry Andric vec_xl(long __offset, const signed short *__ptr) {
1035*fe6060f1SDimitry Andric   __vector signed short V;
1036*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1037*fe6060f1SDimitry Andric                    sizeof(__vector signed short));
1038*fe6060f1SDimitry Andric   return V;
10390b57cec5SDimitry Andric }
10400b57cec5SDimitry Andric 
10415ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
10420b57cec5SDimitry Andric vec_xl(long __offset, const unsigned short *__ptr) {
1043*fe6060f1SDimitry Andric   __vector unsigned short V;
1044*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1045*fe6060f1SDimitry Andric                    sizeof(__vector unsigned short));
1046*fe6060f1SDimitry Andric   return V;
10470b57cec5SDimitry Andric }
10480b57cec5SDimitry Andric 
10495ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
10500b57cec5SDimitry Andric vec_xl(long __offset, const signed int *__ptr) {
1051*fe6060f1SDimitry Andric   __vector signed int V;
1052*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1053*fe6060f1SDimitry Andric                    sizeof(__vector signed int));
1054*fe6060f1SDimitry Andric   return V;
10550b57cec5SDimitry Andric }
10560b57cec5SDimitry Andric 
10575ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
10580b57cec5SDimitry Andric vec_xl(long __offset, const unsigned int *__ptr) {
1059*fe6060f1SDimitry Andric   __vector unsigned int V;
1060*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1061*fe6060f1SDimitry Andric                    sizeof(__vector unsigned int));
1062*fe6060f1SDimitry Andric   return V;
10630b57cec5SDimitry Andric }
10640b57cec5SDimitry Andric 
10655ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
10660b57cec5SDimitry Andric vec_xl(long __offset, const signed long long *__ptr) {
1067*fe6060f1SDimitry Andric   __vector signed long long V;
1068*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1069*fe6060f1SDimitry Andric                    sizeof(__vector signed long long));
1070*fe6060f1SDimitry Andric   return V;
10710b57cec5SDimitry Andric }
10720b57cec5SDimitry Andric 
10735ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
10740b57cec5SDimitry Andric vec_xl(long __offset, const unsigned long long *__ptr) {
1075*fe6060f1SDimitry Andric   __vector unsigned long long V;
1076*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1077*fe6060f1SDimitry Andric                    sizeof(__vector unsigned long long));
1078*fe6060f1SDimitry Andric   return V;
10790b57cec5SDimitry Andric }
10800b57cec5SDimitry Andric 
10810b57cec5SDimitry Andric #if __ARCH__ >= 12
10825ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
10830b57cec5SDimitry Andric vec_xl(long __offset, const float *__ptr) {
1084*fe6060f1SDimitry Andric   __vector float V;
1085*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1086*fe6060f1SDimitry Andric                    sizeof(__vector float));
1087*fe6060f1SDimitry Andric   return V;
10880b57cec5SDimitry Andric }
10890b57cec5SDimitry Andric #endif
10900b57cec5SDimitry Andric 
10915ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
10920b57cec5SDimitry Andric vec_xl(long __offset, const double *__ptr) {
1093*fe6060f1SDimitry Andric   __vector double V;
1094*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1095*fe6060f1SDimitry Andric                    sizeof(__vector double));
1096*fe6060f1SDimitry Andric   return V;
10970b57cec5SDimitry Andric }
10980b57cec5SDimitry Andric 
10990b57cec5SDimitry Andric /*-- vec_xld2 ---------------------------------------------------------------*/
11000b57cec5SDimitry Andric 
11010b57cec5SDimitry Andric // This prototype is deprecated.
11025ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
11030b57cec5SDimitry Andric vec_xld2(long __offset, const signed char *__ptr) {
1104*fe6060f1SDimitry Andric   __vector signed char V;
1105*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1106*fe6060f1SDimitry Andric                    sizeof(__vector signed char));
1107*fe6060f1SDimitry Andric   return V;
11080b57cec5SDimitry Andric }
11090b57cec5SDimitry Andric 
11100b57cec5SDimitry Andric // This prototype is deprecated.
11115ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
11120b57cec5SDimitry Andric vec_xld2(long __offset, const unsigned char *__ptr) {
1113*fe6060f1SDimitry Andric   __vector unsigned char V;
1114*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1115*fe6060f1SDimitry Andric                    sizeof(__vector unsigned char));
1116*fe6060f1SDimitry Andric   return V;
11170b57cec5SDimitry Andric }
11180b57cec5SDimitry Andric 
11190b57cec5SDimitry Andric // This prototype is deprecated.
11205ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
11210b57cec5SDimitry Andric vec_xld2(long __offset, const signed short *__ptr) {
1122*fe6060f1SDimitry Andric   __vector signed short V;
1123*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1124*fe6060f1SDimitry Andric                    sizeof(__vector signed short));
1125*fe6060f1SDimitry Andric   return V;
11260b57cec5SDimitry Andric }
11270b57cec5SDimitry Andric 
11280b57cec5SDimitry Andric // This prototype is deprecated.
11295ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
11300b57cec5SDimitry Andric vec_xld2(long __offset, const unsigned short *__ptr) {
1131*fe6060f1SDimitry Andric   __vector unsigned short V;
1132*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1133*fe6060f1SDimitry Andric                    sizeof(__vector unsigned short));
1134*fe6060f1SDimitry Andric   return V;
11350b57cec5SDimitry Andric }
11360b57cec5SDimitry Andric 
11370b57cec5SDimitry Andric // This prototype is deprecated.
11385ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
11390b57cec5SDimitry Andric vec_xld2(long __offset, const signed int *__ptr) {
1140*fe6060f1SDimitry Andric   __vector signed int V;
1141*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1142*fe6060f1SDimitry Andric                    sizeof(__vector signed int));
1143*fe6060f1SDimitry Andric   return V;
11440b57cec5SDimitry Andric }
11450b57cec5SDimitry Andric 
11460b57cec5SDimitry Andric // This prototype is deprecated.
11475ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
11480b57cec5SDimitry Andric vec_xld2(long __offset, const unsigned int *__ptr) {
1149*fe6060f1SDimitry Andric   __vector unsigned int V;
1150*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1151*fe6060f1SDimitry Andric                    sizeof(__vector unsigned int));
1152*fe6060f1SDimitry Andric   return V;
11530b57cec5SDimitry Andric }
11540b57cec5SDimitry Andric 
11550b57cec5SDimitry Andric // This prototype is deprecated.
11565ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
11570b57cec5SDimitry Andric vec_xld2(long __offset, const signed long long *__ptr) {
1158*fe6060f1SDimitry Andric   __vector signed long long V;
1159*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1160*fe6060f1SDimitry Andric                    sizeof(__vector signed long long));
1161*fe6060f1SDimitry Andric   return V;
11620b57cec5SDimitry Andric }
11630b57cec5SDimitry Andric 
11640b57cec5SDimitry Andric // This prototype is deprecated.
11655ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
11660b57cec5SDimitry Andric vec_xld2(long __offset, const unsigned long long *__ptr) {
1167*fe6060f1SDimitry Andric   __vector unsigned long long V;
1168*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1169*fe6060f1SDimitry Andric                    sizeof(__vector unsigned long long));
1170*fe6060f1SDimitry Andric   return V;
11710b57cec5SDimitry Andric }
11720b57cec5SDimitry Andric 
11730b57cec5SDimitry Andric // This prototype is deprecated.
11745ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
11750b57cec5SDimitry Andric vec_xld2(long __offset, const double *__ptr) {
1176*fe6060f1SDimitry Andric   __vector double V;
1177*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1178*fe6060f1SDimitry Andric                    sizeof(__vector double));
1179*fe6060f1SDimitry Andric   return V;
11800b57cec5SDimitry Andric }
11810b57cec5SDimitry Andric 
11820b57cec5SDimitry Andric /*-- vec_xlw4 ---------------------------------------------------------------*/
11830b57cec5SDimitry Andric 
11840b57cec5SDimitry Andric // This prototype is deprecated.
11855ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
11860b57cec5SDimitry Andric vec_xlw4(long __offset, const signed char *__ptr) {
1187*fe6060f1SDimitry Andric   __vector signed char V;
1188*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1189*fe6060f1SDimitry Andric                    sizeof(__vector signed char));
1190*fe6060f1SDimitry Andric   return V;
11910b57cec5SDimitry Andric }
11920b57cec5SDimitry Andric 
11930b57cec5SDimitry Andric // This prototype is deprecated.
11945ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
11950b57cec5SDimitry Andric vec_xlw4(long __offset, const unsigned char *__ptr) {
1196*fe6060f1SDimitry Andric   __vector unsigned char V;
1197*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1198*fe6060f1SDimitry Andric                    sizeof(__vector unsigned char));
1199*fe6060f1SDimitry Andric   return V;
12000b57cec5SDimitry Andric }
12010b57cec5SDimitry Andric 
12020b57cec5SDimitry Andric // This prototype is deprecated.
12035ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
12040b57cec5SDimitry Andric vec_xlw4(long __offset, const signed short *__ptr) {
1205*fe6060f1SDimitry Andric   __vector signed short V;
1206*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1207*fe6060f1SDimitry Andric                    sizeof(__vector signed short));
1208*fe6060f1SDimitry Andric   return V;
12090b57cec5SDimitry Andric }
12100b57cec5SDimitry Andric 
12110b57cec5SDimitry Andric // This prototype is deprecated.
12125ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
12130b57cec5SDimitry Andric vec_xlw4(long __offset, const unsigned short *__ptr) {
1214*fe6060f1SDimitry Andric   __vector unsigned short V;
1215*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1216*fe6060f1SDimitry Andric                    sizeof(__vector unsigned short));
1217*fe6060f1SDimitry Andric   return V;
12180b57cec5SDimitry Andric }
12190b57cec5SDimitry Andric 
12200b57cec5SDimitry Andric // This prototype is deprecated.
12215ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
12220b57cec5SDimitry Andric vec_xlw4(long __offset, const signed int *__ptr) {
1223*fe6060f1SDimitry Andric   __vector signed int V;
1224*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1225*fe6060f1SDimitry Andric                    sizeof(__vector signed int));
1226*fe6060f1SDimitry Andric   return V;
12270b57cec5SDimitry Andric }
12280b57cec5SDimitry Andric 
12290b57cec5SDimitry Andric // This prototype is deprecated.
12305ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
12310b57cec5SDimitry Andric vec_xlw4(long __offset, const unsigned int *__ptr) {
1232*fe6060f1SDimitry Andric   __vector unsigned int V;
1233*fe6060f1SDimitry Andric   __builtin_memcpy(&V, ((const char *)__ptr + __offset),
1234*fe6060f1SDimitry Andric                    sizeof(__vector unsigned int));
1235*fe6060f1SDimitry Andric   return V;
12360b57cec5SDimitry Andric }
12370b57cec5SDimitry Andric 
12380b57cec5SDimitry Andric /*-- vec_xst ----------------------------------------------------------------*/
12390b57cec5SDimitry Andric 
12400b57cec5SDimitry Andric static inline __ATTRS_o_ai void
12415ffd83dbSDimitry Andric vec_xst(__vector signed char __vec, long __offset, signed char *__ptr) {
1242*fe6060f1SDimitry Andric   __vector signed char V = __vec;
1243*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V,
1244*fe6060f1SDimitry Andric                    sizeof(__vector signed char));
12450b57cec5SDimitry Andric }
12460b57cec5SDimitry Andric 
12470b57cec5SDimitry Andric static inline __ATTRS_o_ai void
12485ffd83dbSDimitry Andric vec_xst(__vector unsigned char __vec, long __offset, unsigned char *__ptr) {
1249*fe6060f1SDimitry Andric   __vector unsigned char V = __vec;
1250*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V,
1251*fe6060f1SDimitry Andric                    sizeof(__vector unsigned char));
12520b57cec5SDimitry Andric }
12530b57cec5SDimitry Andric 
12540b57cec5SDimitry Andric static inline __ATTRS_o_ai void
12555ffd83dbSDimitry Andric vec_xst(__vector signed short __vec, long __offset, signed short *__ptr) {
1256*fe6060f1SDimitry Andric   __vector signed short V = __vec;
1257*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V,
1258*fe6060f1SDimitry Andric                    sizeof(__vector signed short));
12590b57cec5SDimitry Andric }
12600b57cec5SDimitry Andric 
12610b57cec5SDimitry Andric static inline __ATTRS_o_ai void
12625ffd83dbSDimitry Andric vec_xst(__vector unsigned short __vec, long __offset, unsigned short *__ptr) {
1263*fe6060f1SDimitry Andric   __vector unsigned short V = __vec;
1264*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V,
1265*fe6060f1SDimitry Andric                    sizeof(__vector unsigned short));
12660b57cec5SDimitry Andric }
12670b57cec5SDimitry Andric 
12680b57cec5SDimitry Andric static inline __ATTRS_o_ai void
12695ffd83dbSDimitry Andric vec_xst(__vector signed int __vec, long __offset, signed int *__ptr) {
1270*fe6060f1SDimitry Andric   __vector signed int V = __vec;
1271*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V, sizeof(__vector signed int));
12720b57cec5SDimitry Andric }
12730b57cec5SDimitry Andric 
12740b57cec5SDimitry Andric static inline __ATTRS_o_ai void
12755ffd83dbSDimitry Andric vec_xst(__vector unsigned int __vec, long __offset, unsigned int *__ptr) {
1276*fe6060f1SDimitry Andric   __vector unsigned int V = __vec;
1277*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V,
1278*fe6060f1SDimitry Andric                    sizeof(__vector unsigned int));
12790b57cec5SDimitry Andric }
12800b57cec5SDimitry Andric 
12810b57cec5SDimitry Andric static inline __ATTRS_o_ai void
12825ffd83dbSDimitry Andric vec_xst(__vector signed long long __vec, long __offset,
12830b57cec5SDimitry Andric         signed long long *__ptr) {
1284*fe6060f1SDimitry Andric   __vector signed long long V = __vec;
1285*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V,
1286*fe6060f1SDimitry Andric                    sizeof(__vector signed long long));
12870b57cec5SDimitry Andric }
12880b57cec5SDimitry Andric 
12890b57cec5SDimitry Andric static inline __ATTRS_o_ai void
12905ffd83dbSDimitry Andric vec_xst(__vector unsigned long long __vec, long __offset,
12910b57cec5SDimitry Andric         unsigned long long *__ptr) {
1292*fe6060f1SDimitry Andric   __vector unsigned long long V = __vec;
1293*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V,
1294*fe6060f1SDimitry Andric                    sizeof(__vector unsigned long long));
12950b57cec5SDimitry Andric }
12960b57cec5SDimitry Andric 
12970b57cec5SDimitry Andric #if __ARCH__ >= 12
12980b57cec5SDimitry Andric static inline __ATTRS_o_ai void
12995ffd83dbSDimitry Andric vec_xst(__vector float __vec, long __offset, float *__ptr) {
1300*fe6060f1SDimitry Andric   __vector float V = __vec;
1301*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V, sizeof(__vector float));
13020b57cec5SDimitry Andric }
13030b57cec5SDimitry Andric #endif
13040b57cec5SDimitry Andric 
13050b57cec5SDimitry Andric static inline __ATTRS_o_ai void
13065ffd83dbSDimitry Andric vec_xst(__vector double __vec, long __offset, double *__ptr) {
1307*fe6060f1SDimitry Andric   __vector double V = __vec;
1308*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V, sizeof(__vector double));
13090b57cec5SDimitry Andric }
13100b57cec5SDimitry Andric 
13110b57cec5SDimitry Andric /*-- vec_xstd2 --------------------------------------------------------------*/
13120b57cec5SDimitry Andric 
13130b57cec5SDimitry Andric // This prototype is deprecated.
13140b57cec5SDimitry Andric static inline __ATTRS_o_ai void
13155ffd83dbSDimitry Andric vec_xstd2(__vector signed char __vec, long __offset, signed char *__ptr) {
1316*fe6060f1SDimitry Andric   __vector signed char V = __vec;
1317*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V,
1318*fe6060f1SDimitry Andric                    sizeof(__vector signed char));
13190b57cec5SDimitry Andric }
13200b57cec5SDimitry Andric 
13210b57cec5SDimitry Andric // This prototype is deprecated.
13220b57cec5SDimitry Andric static inline __ATTRS_o_ai void
13235ffd83dbSDimitry Andric vec_xstd2(__vector unsigned char __vec, long __offset, unsigned char *__ptr) {
1324*fe6060f1SDimitry Andric   __vector unsigned char V = __vec;
1325*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V,
1326*fe6060f1SDimitry Andric                    sizeof(__vector unsigned char));
13270b57cec5SDimitry Andric }
13280b57cec5SDimitry Andric 
13290b57cec5SDimitry Andric // This prototype is deprecated.
13300b57cec5SDimitry Andric static inline __ATTRS_o_ai void
13315ffd83dbSDimitry Andric vec_xstd2(__vector signed short __vec, long __offset, signed short *__ptr) {
1332*fe6060f1SDimitry Andric   __vector signed short V = __vec;
1333*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V,
1334*fe6060f1SDimitry Andric                    sizeof(__vector signed short));
13350b57cec5SDimitry Andric }
13360b57cec5SDimitry Andric 
13370b57cec5SDimitry Andric // This prototype is deprecated.
13380b57cec5SDimitry Andric static inline __ATTRS_o_ai void
13395ffd83dbSDimitry Andric vec_xstd2(__vector unsigned short __vec, long __offset, unsigned short *__ptr) {
1340*fe6060f1SDimitry Andric   __vector unsigned short V = __vec;
1341*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V,
1342*fe6060f1SDimitry Andric                    sizeof(__vector unsigned short));
13430b57cec5SDimitry Andric }
13440b57cec5SDimitry Andric 
13450b57cec5SDimitry Andric // This prototype is deprecated.
13460b57cec5SDimitry Andric static inline __ATTRS_o_ai void
13475ffd83dbSDimitry Andric vec_xstd2(__vector signed int __vec, long __offset, signed int *__ptr) {
1348*fe6060f1SDimitry Andric   __vector signed int V = __vec;
1349*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V, sizeof(__vector signed int));
13500b57cec5SDimitry Andric }
13510b57cec5SDimitry Andric 
13520b57cec5SDimitry Andric // This prototype is deprecated.
13530b57cec5SDimitry Andric static inline __ATTRS_o_ai void
13545ffd83dbSDimitry Andric vec_xstd2(__vector unsigned int __vec, long __offset, unsigned int *__ptr) {
1355*fe6060f1SDimitry Andric   __vector unsigned int V = __vec;
1356*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V,
1357*fe6060f1SDimitry Andric                    sizeof(__vector unsigned int));
13580b57cec5SDimitry Andric }
13590b57cec5SDimitry Andric 
13600b57cec5SDimitry Andric // This prototype is deprecated.
13610b57cec5SDimitry Andric static inline __ATTRS_o_ai void
13625ffd83dbSDimitry Andric vec_xstd2(__vector signed long long __vec, long __offset,
13630b57cec5SDimitry Andric           signed long long *__ptr) {
1364*fe6060f1SDimitry Andric   __vector signed long long V = __vec;
1365*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V,
1366*fe6060f1SDimitry Andric                    sizeof(__vector signed long long));
13670b57cec5SDimitry Andric }
13680b57cec5SDimitry Andric 
13690b57cec5SDimitry Andric // This prototype is deprecated.
13700b57cec5SDimitry Andric static inline __ATTRS_o_ai void
13715ffd83dbSDimitry Andric vec_xstd2(__vector unsigned long long __vec, long __offset,
13720b57cec5SDimitry Andric           unsigned long long *__ptr) {
1373*fe6060f1SDimitry Andric   __vector unsigned long long V = __vec;
1374*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V,
1375*fe6060f1SDimitry Andric                    sizeof(__vector unsigned long long));
13760b57cec5SDimitry Andric }
13770b57cec5SDimitry Andric 
13780b57cec5SDimitry Andric // This prototype is deprecated.
13790b57cec5SDimitry Andric static inline __ATTRS_o_ai void
13805ffd83dbSDimitry Andric vec_xstd2(__vector double __vec, long __offset, double *__ptr) {
1381*fe6060f1SDimitry Andric   __vector double V = __vec;
1382*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V, sizeof(__vector double));
13830b57cec5SDimitry Andric }
13840b57cec5SDimitry Andric 
13850b57cec5SDimitry Andric /*-- vec_xstw4 --------------------------------------------------------------*/
13860b57cec5SDimitry Andric 
13870b57cec5SDimitry Andric // This prototype is deprecated.
13880b57cec5SDimitry Andric static inline __ATTRS_o_ai void
13895ffd83dbSDimitry Andric vec_xstw4(__vector signed char __vec, long __offset, signed char *__ptr) {
1390*fe6060f1SDimitry Andric   __vector signed char V = __vec;
1391*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V,
1392*fe6060f1SDimitry Andric                    sizeof(__vector signed char));
13930b57cec5SDimitry Andric }
13940b57cec5SDimitry Andric 
13950b57cec5SDimitry Andric // This prototype is deprecated.
13960b57cec5SDimitry Andric static inline __ATTRS_o_ai void
13975ffd83dbSDimitry Andric vec_xstw4(__vector unsigned char __vec, long __offset, unsigned char *__ptr) {
1398*fe6060f1SDimitry Andric   __vector unsigned char V = __vec;
1399*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V,
1400*fe6060f1SDimitry Andric                    sizeof(__vector unsigned char));
14010b57cec5SDimitry Andric }
14020b57cec5SDimitry Andric 
14030b57cec5SDimitry Andric // This prototype is deprecated.
14040b57cec5SDimitry Andric static inline __ATTRS_o_ai void
14055ffd83dbSDimitry Andric vec_xstw4(__vector signed short __vec, long __offset, signed short *__ptr) {
1406*fe6060f1SDimitry Andric   __vector signed short V = __vec;
1407*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V,
1408*fe6060f1SDimitry Andric                    sizeof(__vector signed short));
14090b57cec5SDimitry Andric }
14100b57cec5SDimitry Andric 
14110b57cec5SDimitry Andric // This prototype is deprecated.
14120b57cec5SDimitry Andric static inline __ATTRS_o_ai void
14135ffd83dbSDimitry Andric vec_xstw4(__vector unsigned short __vec, long __offset, unsigned short *__ptr) {
1414*fe6060f1SDimitry Andric   __vector unsigned short V = __vec;
1415*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V,
1416*fe6060f1SDimitry Andric                    sizeof(__vector unsigned short));
14170b57cec5SDimitry Andric }
14180b57cec5SDimitry Andric 
14190b57cec5SDimitry Andric // This prototype is deprecated.
14200b57cec5SDimitry Andric static inline __ATTRS_o_ai void
14215ffd83dbSDimitry Andric vec_xstw4(__vector signed int __vec, long __offset, signed int *__ptr) {
1422*fe6060f1SDimitry Andric   __vector signed int V = __vec;
1423*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V, sizeof(__vector signed int));
14240b57cec5SDimitry Andric }
14250b57cec5SDimitry Andric 
14260b57cec5SDimitry Andric // This prototype is deprecated.
14270b57cec5SDimitry Andric static inline __ATTRS_o_ai void
14285ffd83dbSDimitry Andric vec_xstw4(__vector unsigned int __vec, long __offset, unsigned int *__ptr) {
1429*fe6060f1SDimitry Andric   __vector unsigned int V = __vec;
1430*fe6060f1SDimitry Andric   __builtin_memcpy(((char *)__ptr + __offset), &V,
1431*fe6060f1SDimitry Andric                    sizeof(__vector unsigned int));
14320b57cec5SDimitry Andric }
14330b57cec5SDimitry Andric 
14340b57cec5SDimitry Andric /*-- vec_load_bndry ---------------------------------------------------------*/
14350b57cec5SDimitry Andric 
14365ffd83dbSDimitry Andric extern __ATTRS_o __vector signed char
14370b57cec5SDimitry Andric vec_load_bndry(const signed char *__ptr, unsigned short __len)
14380b57cec5SDimitry Andric   __constant_pow2_range(__len, 64, 4096);
14390b57cec5SDimitry Andric 
14405ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned char
14410b57cec5SDimitry Andric vec_load_bndry(const unsigned char *__ptr, unsigned short __len)
14420b57cec5SDimitry Andric   __constant_pow2_range(__len, 64, 4096);
14430b57cec5SDimitry Andric 
14445ffd83dbSDimitry Andric extern __ATTRS_o __vector signed short
14450b57cec5SDimitry Andric vec_load_bndry(const signed short *__ptr, unsigned short __len)
14460b57cec5SDimitry Andric   __constant_pow2_range(__len, 64, 4096);
14470b57cec5SDimitry Andric 
14485ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned short
14490b57cec5SDimitry Andric vec_load_bndry(const unsigned short *__ptr, unsigned short __len)
14500b57cec5SDimitry Andric   __constant_pow2_range(__len, 64, 4096);
14510b57cec5SDimitry Andric 
14525ffd83dbSDimitry Andric extern __ATTRS_o __vector signed int
14530b57cec5SDimitry Andric vec_load_bndry(const signed int *__ptr, unsigned short __len)
14540b57cec5SDimitry Andric   __constant_pow2_range(__len, 64, 4096);
14550b57cec5SDimitry Andric 
14565ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned int
14570b57cec5SDimitry Andric vec_load_bndry(const unsigned int *__ptr, unsigned short __len)
14580b57cec5SDimitry Andric   __constant_pow2_range(__len, 64, 4096);
14590b57cec5SDimitry Andric 
14605ffd83dbSDimitry Andric extern __ATTRS_o __vector signed long long
14610b57cec5SDimitry Andric vec_load_bndry(const signed long long *__ptr, unsigned short __len)
14620b57cec5SDimitry Andric   __constant_pow2_range(__len, 64, 4096);
14630b57cec5SDimitry Andric 
14645ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned long long
14650b57cec5SDimitry Andric vec_load_bndry(const unsigned long long *__ptr, unsigned short __len)
14660b57cec5SDimitry Andric   __constant_pow2_range(__len, 64, 4096);
14670b57cec5SDimitry Andric 
14680b57cec5SDimitry Andric #if __ARCH__ >= 12
14695ffd83dbSDimitry Andric extern __ATTRS_o __vector float
14700b57cec5SDimitry Andric vec_load_bndry(const float *__ptr, unsigned short __len)
14710b57cec5SDimitry Andric   __constant_pow2_range(__len, 64, 4096);
14720b57cec5SDimitry Andric #endif
14730b57cec5SDimitry Andric 
14745ffd83dbSDimitry Andric extern __ATTRS_o __vector double
14750b57cec5SDimitry Andric vec_load_bndry(const double *__ptr, unsigned short __len)
14760b57cec5SDimitry Andric   __constant_pow2_range(__len, 64, 4096);
14770b57cec5SDimitry Andric 
14780b57cec5SDimitry Andric #define vec_load_bndry(X, Y) ((__typeof__((vec_load_bndry)((X), (Y)))) \
14790b57cec5SDimitry Andric   __builtin_s390_vlbb((X), ((Y) == 64 ? 0 : \
14800b57cec5SDimitry Andric                             (Y) == 128 ? 1 : \
14810b57cec5SDimitry Andric                             (Y) == 256 ? 2 : \
14820b57cec5SDimitry Andric                             (Y) == 512 ? 3 : \
14830b57cec5SDimitry Andric                             (Y) == 1024 ? 4 : \
14840b57cec5SDimitry Andric                             (Y) == 2048 ? 5 : \
14850b57cec5SDimitry Andric                             (Y) == 4096 ? 6 : -1)))
14860b57cec5SDimitry Andric 
14870b57cec5SDimitry Andric /*-- vec_load_len -----------------------------------------------------------*/
14880b57cec5SDimitry Andric 
14895ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
14900b57cec5SDimitry Andric vec_load_len(const signed char *__ptr, unsigned int __len) {
14915ffd83dbSDimitry Andric   return (__vector signed char)__builtin_s390_vll(__len, __ptr);
14920b57cec5SDimitry Andric }
14930b57cec5SDimitry Andric 
14945ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
14950b57cec5SDimitry Andric vec_load_len(const unsigned char *__ptr, unsigned int __len) {
14965ffd83dbSDimitry Andric   return (__vector unsigned char)__builtin_s390_vll(__len, __ptr);
14970b57cec5SDimitry Andric }
14980b57cec5SDimitry Andric 
14995ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
15000b57cec5SDimitry Andric vec_load_len(const signed short *__ptr, unsigned int __len) {
15015ffd83dbSDimitry Andric   return (__vector signed short)__builtin_s390_vll(__len, __ptr);
15020b57cec5SDimitry Andric }
15030b57cec5SDimitry Andric 
15045ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
15050b57cec5SDimitry Andric vec_load_len(const unsigned short *__ptr, unsigned int __len) {
15065ffd83dbSDimitry Andric   return (__vector unsigned short)__builtin_s390_vll(__len, __ptr);
15070b57cec5SDimitry Andric }
15080b57cec5SDimitry Andric 
15095ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
15100b57cec5SDimitry Andric vec_load_len(const signed int *__ptr, unsigned int __len) {
15115ffd83dbSDimitry Andric   return (__vector signed int)__builtin_s390_vll(__len, __ptr);
15120b57cec5SDimitry Andric }
15130b57cec5SDimitry Andric 
15145ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
15150b57cec5SDimitry Andric vec_load_len(const unsigned int *__ptr, unsigned int __len) {
15165ffd83dbSDimitry Andric   return (__vector unsigned int)__builtin_s390_vll(__len, __ptr);
15170b57cec5SDimitry Andric }
15180b57cec5SDimitry Andric 
15195ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
15200b57cec5SDimitry Andric vec_load_len(const signed long long *__ptr, unsigned int __len) {
15215ffd83dbSDimitry Andric   return (__vector signed long long)__builtin_s390_vll(__len, __ptr);
15220b57cec5SDimitry Andric }
15230b57cec5SDimitry Andric 
15245ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
15250b57cec5SDimitry Andric vec_load_len(const unsigned long long *__ptr, unsigned int __len) {
15265ffd83dbSDimitry Andric   return (__vector unsigned long long)__builtin_s390_vll(__len, __ptr);
15270b57cec5SDimitry Andric }
15280b57cec5SDimitry Andric 
15290b57cec5SDimitry Andric #if __ARCH__ >= 12
15305ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
15310b57cec5SDimitry Andric vec_load_len(const float *__ptr, unsigned int __len) {
15325ffd83dbSDimitry Andric   return (__vector float)__builtin_s390_vll(__len, __ptr);
15330b57cec5SDimitry Andric }
15340b57cec5SDimitry Andric #endif
15350b57cec5SDimitry Andric 
15365ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
15370b57cec5SDimitry Andric vec_load_len(const double *__ptr, unsigned int __len) {
15385ffd83dbSDimitry Andric   return (__vector double)__builtin_s390_vll(__len, __ptr);
15390b57cec5SDimitry Andric }
15400b57cec5SDimitry Andric 
15410b57cec5SDimitry Andric /*-- vec_load_len_r ---------------------------------------------------------*/
15420b57cec5SDimitry Andric 
15430b57cec5SDimitry Andric #if __ARCH__ >= 12
15445ffd83dbSDimitry Andric static inline __ATTRS_ai __vector unsigned char
15450b57cec5SDimitry Andric vec_load_len_r(const unsigned char *__ptr, unsigned int __len) {
15465ffd83dbSDimitry Andric   return (__vector unsigned char)__builtin_s390_vlrl(__len, __ptr);
15470b57cec5SDimitry Andric }
15480b57cec5SDimitry Andric #endif
15490b57cec5SDimitry Andric 
15500b57cec5SDimitry Andric /*-- vec_store_len ----------------------------------------------------------*/
15510b57cec5SDimitry Andric 
15520b57cec5SDimitry Andric static inline __ATTRS_o_ai void
15535ffd83dbSDimitry Andric vec_store_len(__vector signed char __vec, signed char *__ptr,
15540b57cec5SDimitry Andric               unsigned int __len) {
15555ffd83dbSDimitry Andric   __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr);
15560b57cec5SDimitry Andric }
15570b57cec5SDimitry Andric 
15580b57cec5SDimitry Andric static inline __ATTRS_o_ai void
15595ffd83dbSDimitry Andric vec_store_len(__vector unsigned char __vec, unsigned char *__ptr,
15600b57cec5SDimitry Andric               unsigned int __len) {
15615ffd83dbSDimitry Andric   __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr);
15620b57cec5SDimitry Andric }
15630b57cec5SDimitry Andric 
15640b57cec5SDimitry Andric static inline __ATTRS_o_ai void
15655ffd83dbSDimitry Andric vec_store_len(__vector signed short __vec, signed short *__ptr,
15660b57cec5SDimitry Andric               unsigned int __len) {
15675ffd83dbSDimitry Andric   __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr);
15680b57cec5SDimitry Andric }
15690b57cec5SDimitry Andric 
15700b57cec5SDimitry Andric static inline __ATTRS_o_ai void
15715ffd83dbSDimitry Andric vec_store_len(__vector unsigned short __vec, unsigned short *__ptr,
15720b57cec5SDimitry Andric               unsigned int __len) {
15735ffd83dbSDimitry Andric   __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr);
15740b57cec5SDimitry Andric }
15750b57cec5SDimitry Andric 
15760b57cec5SDimitry Andric static inline __ATTRS_o_ai void
15775ffd83dbSDimitry Andric vec_store_len(__vector signed int __vec, signed int *__ptr,
15780b57cec5SDimitry Andric               unsigned int __len) {
15795ffd83dbSDimitry Andric   __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr);
15800b57cec5SDimitry Andric }
15810b57cec5SDimitry Andric 
15820b57cec5SDimitry Andric static inline __ATTRS_o_ai void
15835ffd83dbSDimitry Andric vec_store_len(__vector unsigned int __vec, unsigned int *__ptr,
15840b57cec5SDimitry Andric               unsigned int __len) {
15855ffd83dbSDimitry Andric   __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr);
15860b57cec5SDimitry Andric }
15870b57cec5SDimitry Andric 
15880b57cec5SDimitry Andric static inline __ATTRS_o_ai void
15895ffd83dbSDimitry Andric vec_store_len(__vector signed long long __vec, signed long long *__ptr,
15900b57cec5SDimitry Andric               unsigned int __len) {
15915ffd83dbSDimitry Andric   __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr);
15920b57cec5SDimitry Andric }
15930b57cec5SDimitry Andric 
15940b57cec5SDimitry Andric static inline __ATTRS_o_ai void
15955ffd83dbSDimitry Andric vec_store_len(__vector unsigned long long __vec, unsigned long long *__ptr,
15960b57cec5SDimitry Andric               unsigned int __len) {
15975ffd83dbSDimitry Andric   __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr);
15980b57cec5SDimitry Andric }
15990b57cec5SDimitry Andric 
16000b57cec5SDimitry Andric #if __ARCH__ >= 12
16010b57cec5SDimitry Andric static inline __ATTRS_o_ai void
16025ffd83dbSDimitry Andric vec_store_len(__vector float __vec, float *__ptr,
16030b57cec5SDimitry Andric               unsigned int __len) {
16045ffd83dbSDimitry Andric   __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr);
16050b57cec5SDimitry Andric }
16060b57cec5SDimitry Andric #endif
16070b57cec5SDimitry Andric 
16080b57cec5SDimitry Andric static inline __ATTRS_o_ai void
16095ffd83dbSDimitry Andric vec_store_len(__vector double __vec, double *__ptr,
16100b57cec5SDimitry Andric               unsigned int __len) {
16115ffd83dbSDimitry Andric   __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr);
16120b57cec5SDimitry Andric }
16130b57cec5SDimitry Andric 
16140b57cec5SDimitry Andric /*-- vec_store_len_r --------------------------------------------------------*/
16150b57cec5SDimitry Andric 
16160b57cec5SDimitry Andric #if __ARCH__ >= 12
16170b57cec5SDimitry Andric static inline __ATTRS_ai void
16185ffd83dbSDimitry Andric vec_store_len_r(__vector unsigned char __vec, unsigned char *__ptr,
16190b57cec5SDimitry Andric                 unsigned int __len) {
16205ffd83dbSDimitry Andric   __builtin_s390_vstrl((__vector signed char)__vec, __len, __ptr);
16210b57cec5SDimitry Andric }
16220b57cec5SDimitry Andric #endif
16230b57cec5SDimitry Andric 
16240b57cec5SDimitry Andric /*-- vec_load_pair ----------------------------------------------------------*/
16250b57cec5SDimitry Andric 
16265ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
16270b57cec5SDimitry Andric vec_load_pair(signed long long __a, signed long long __b) {
16285ffd83dbSDimitry Andric   return (__vector signed long long)(__a, __b);
16290b57cec5SDimitry Andric }
16300b57cec5SDimitry Andric 
16315ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
16320b57cec5SDimitry Andric vec_load_pair(unsigned long long __a, unsigned long long __b) {
16335ffd83dbSDimitry Andric   return (__vector unsigned long long)(__a, __b);
16340b57cec5SDimitry Andric }
16350b57cec5SDimitry Andric 
16360b57cec5SDimitry Andric /*-- vec_genmask ------------------------------------------------------------*/
16370b57cec5SDimitry Andric 
16385ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
16390b57cec5SDimitry Andric vec_genmask(unsigned short __mask)
16400b57cec5SDimitry Andric   __constant(__mask) {
16415ffd83dbSDimitry Andric   return (__vector unsigned char)(
16420b57cec5SDimitry Andric     __mask & 0x8000 ? 0xff : 0,
16430b57cec5SDimitry Andric     __mask & 0x4000 ? 0xff : 0,
16440b57cec5SDimitry Andric     __mask & 0x2000 ? 0xff : 0,
16450b57cec5SDimitry Andric     __mask & 0x1000 ? 0xff : 0,
16460b57cec5SDimitry Andric     __mask & 0x0800 ? 0xff : 0,
16470b57cec5SDimitry Andric     __mask & 0x0400 ? 0xff : 0,
16480b57cec5SDimitry Andric     __mask & 0x0200 ? 0xff : 0,
16490b57cec5SDimitry Andric     __mask & 0x0100 ? 0xff : 0,
16500b57cec5SDimitry Andric     __mask & 0x0080 ? 0xff : 0,
16510b57cec5SDimitry Andric     __mask & 0x0040 ? 0xff : 0,
16520b57cec5SDimitry Andric     __mask & 0x0020 ? 0xff : 0,
16530b57cec5SDimitry Andric     __mask & 0x0010 ? 0xff : 0,
16540b57cec5SDimitry Andric     __mask & 0x0008 ? 0xff : 0,
16550b57cec5SDimitry Andric     __mask & 0x0004 ? 0xff : 0,
16560b57cec5SDimitry Andric     __mask & 0x0002 ? 0xff : 0,
16570b57cec5SDimitry Andric     __mask & 0x0001 ? 0xff : 0);
16580b57cec5SDimitry Andric }
16590b57cec5SDimitry Andric 
16600b57cec5SDimitry Andric /*-- vec_genmasks_* ---------------------------------------------------------*/
16610b57cec5SDimitry Andric 
16625ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
16630b57cec5SDimitry Andric vec_genmasks_8(unsigned char __first, unsigned char __last)
16640b57cec5SDimitry Andric   __constant(__first) __constant(__last) {
16650b57cec5SDimitry Andric   unsigned char __bit1 = __first & 7;
16660b57cec5SDimitry Andric   unsigned char __bit2 = __last & 7;
16670b57cec5SDimitry Andric   unsigned char __mask1 = (unsigned char)(1U << (7 - __bit1) << 1) - 1;
16680b57cec5SDimitry Andric   unsigned char __mask2 = (unsigned char)(1U << (7 - __bit2)) - 1;
16690b57cec5SDimitry Andric   unsigned char __value = (__bit1 <= __bit2 ?
16700b57cec5SDimitry Andric                            __mask1 & ~__mask2 :
16710b57cec5SDimitry Andric                            __mask1 | ~__mask2);
16725ffd83dbSDimitry Andric   return (__vector unsigned char)__value;
16730b57cec5SDimitry Andric }
16740b57cec5SDimitry Andric 
16755ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
16760b57cec5SDimitry Andric vec_genmasks_16(unsigned char __first, unsigned char __last)
16770b57cec5SDimitry Andric   __constant(__first) __constant(__last) {
16780b57cec5SDimitry Andric   unsigned char __bit1 = __first & 15;
16790b57cec5SDimitry Andric   unsigned char __bit2 = __last & 15;
16800b57cec5SDimitry Andric   unsigned short __mask1 = (unsigned short)(1U << (15 - __bit1) << 1) - 1;
16810b57cec5SDimitry Andric   unsigned short __mask2 = (unsigned short)(1U << (15 - __bit2)) - 1;
16820b57cec5SDimitry Andric   unsigned short __value = (__bit1 <= __bit2 ?
16830b57cec5SDimitry Andric                             __mask1 & ~__mask2 :
16840b57cec5SDimitry Andric                             __mask1 | ~__mask2);
16855ffd83dbSDimitry Andric   return (__vector unsigned short)__value;
16860b57cec5SDimitry Andric }
16870b57cec5SDimitry Andric 
16885ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
16890b57cec5SDimitry Andric vec_genmasks_32(unsigned char __first, unsigned char __last)
16900b57cec5SDimitry Andric   __constant(__first) __constant(__last) {
16910b57cec5SDimitry Andric   unsigned char __bit1 = __first & 31;
16920b57cec5SDimitry Andric   unsigned char __bit2 = __last & 31;
16930b57cec5SDimitry Andric   unsigned int __mask1 = (1U << (31 - __bit1) << 1) - 1;
16940b57cec5SDimitry Andric   unsigned int __mask2 = (1U << (31 - __bit2)) - 1;
16950b57cec5SDimitry Andric   unsigned int __value = (__bit1 <= __bit2 ?
16960b57cec5SDimitry Andric                           __mask1 & ~__mask2 :
16970b57cec5SDimitry Andric                           __mask1 | ~__mask2);
16985ffd83dbSDimitry Andric   return (__vector unsigned int)__value;
16990b57cec5SDimitry Andric }
17000b57cec5SDimitry Andric 
17015ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
17020b57cec5SDimitry Andric vec_genmasks_64(unsigned char __first, unsigned char __last)
17030b57cec5SDimitry Andric   __constant(__first) __constant(__last) {
17040b57cec5SDimitry Andric   unsigned char __bit1 = __first & 63;
17050b57cec5SDimitry Andric   unsigned char __bit2 = __last & 63;
17060b57cec5SDimitry Andric   unsigned long long __mask1 = (1ULL << (63 - __bit1) << 1) - 1;
17070b57cec5SDimitry Andric   unsigned long long __mask2 = (1ULL << (63 - __bit2)) - 1;
17080b57cec5SDimitry Andric   unsigned long long __value = (__bit1 <= __bit2 ?
17090b57cec5SDimitry Andric                                 __mask1 & ~__mask2 :
17100b57cec5SDimitry Andric                                 __mask1 | ~__mask2);
17115ffd83dbSDimitry Andric   return (__vector unsigned long long)__value;
17120b57cec5SDimitry Andric }
17130b57cec5SDimitry Andric 
17140b57cec5SDimitry Andric /*-- vec_splat --------------------------------------------------------------*/
17150b57cec5SDimitry Andric 
17165ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
17175ffd83dbSDimitry Andric vec_splat(__vector signed char __vec, int __index)
17180b57cec5SDimitry Andric   __constant_range(__index, 0, 15) {
17195ffd83dbSDimitry Andric   return (__vector signed char)__vec[__index];
17200b57cec5SDimitry Andric }
17210b57cec5SDimitry Andric 
17225ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
17235ffd83dbSDimitry Andric vec_splat(__vector __bool char __vec, int __index)
17240b57cec5SDimitry Andric   __constant_range(__index, 0, 15) {
17255ffd83dbSDimitry Andric   return (__vector __bool char)(__vector unsigned char)__vec[__index];
17260b57cec5SDimitry Andric }
17270b57cec5SDimitry Andric 
17285ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
17295ffd83dbSDimitry Andric vec_splat(__vector unsigned char __vec, int __index)
17300b57cec5SDimitry Andric   __constant_range(__index, 0, 15) {
17315ffd83dbSDimitry Andric   return (__vector unsigned char)__vec[__index];
17320b57cec5SDimitry Andric }
17330b57cec5SDimitry Andric 
17345ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
17355ffd83dbSDimitry Andric vec_splat(__vector signed short __vec, int __index)
17360b57cec5SDimitry Andric   __constant_range(__index, 0, 7) {
17375ffd83dbSDimitry Andric   return (__vector signed short)__vec[__index];
17380b57cec5SDimitry Andric }
17390b57cec5SDimitry Andric 
17405ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
17415ffd83dbSDimitry Andric vec_splat(__vector __bool short __vec, int __index)
17420b57cec5SDimitry Andric   __constant_range(__index, 0, 7) {
17435ffd83dbSDimitry Andric   return (__vector __bool short)(__vector unsigned short)__vec[__index];
17440b57cec5SDimitry Andric }
17450b57cec5SDimitry Andric 
17465ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
17475ffd83dbSDimitry Andric vec_splat(__vector unsigned short __vec, int __index)
17480b57cec5SDimitry Andric   __constant_range(__index, 0, 7) {
17495ffd83dbSDimitry Andric   return (__vector unsigned short)__vec[__index];
17500b57cec5SDimitry Andric }
17510b57cec5SDimitry Andric 
17525ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
17535ffd83dbSDimitry Andric vec_splat(__vector signed int __vec, int __index)
17540b57cec5SDimitry Andric   __constant_range(__index, 0, 3) {
17555ffd83dbSDimitry Andric   return (__vector signed int)__vec[__index];
17560b57cec5SDimitry Andric }
17570b57cec5SDimitry Andric 
17585ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
17595ffd83dbSDimitry Andric vec_splat(__vector __bool int __vec, int __index)
17600b57cec5SDimitry Andric   __constant_range(__index, 0, 3) {
17615ffd83dbSDimitry Andric   return (__vector __bool int)(__vector unsigned int)__vec[__index];
17620b57cec5SDimitry Andric }
17630b57cec5SDimitry Andric 
17645ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
17655ffd83dbSDimitry Andric vec_splat(__vector unsigned int __vec, int __index)
17660b57cec5SDimitry Andric   __constant_range(__index, 0, 3) {
17675ffd83dbSDimitry Andric   return (__vector unsigned int)__vec[__index];
17680b57cec5SDimitry Andric }
17690b57cec5SDimitry Andric 
17705ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
17715ffd83dbSDimitry Andric vec_splat(__vector signed long long __vec, int __index)
17720b57cec5SDimitry Andric   __constant_range(__index, 0, 1) {
17735ffd83dbSDimitry Andric   return (__vector signed long long)__vec[__index];
17740b57cec5SDimitry Andric }
17750b57cec5SDimitry Andric 
17765ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
17775ffd83dbSDimitry Andric vec_splat(__vector __bool long long __vec, int __index)
17780b57cec5SDimitry Andric   __constant_range(__index, 0, 1) {
17795ffd83dbSDimitry Andric   return ((__vector __bool long long)
17805ffd83dbSDimitry Andric           (__vector unsigned long long)__vec[__index]);
17810b57cec5SDimitry Andric }
17820b57cec5SDimitry Andric 
17835ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
17845ffd83dbSDimitry Andric vec_splat(__vector unsigned long long __vec, int __index)
17850b57cec5SDimitry Andric   __constant_range(__index, 0, 1) {
17865ffd83dbSDimitry Andric   return (__vector unsigned long long)__vec[__index];
17870b57cec5SDimitry Andric }
17880b57cec5SDimitry Andric 
17890b57cec5SDimitry Andric #if __ARCH__ >= 12
17905ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
17915ffd83dbSDimitry Andric vec_splat(__vector float __vec, int __index)
17920b57cec5SDimitry Andric   __constant_range(__index, 0, 3) {
17935ffd83dbSDimitry Andric   return (__vector float)__vec[__index];
17940b57cec5SDimitry Andric }
17950b57cec5SDimitry Andric #endif
17960b57cec5SDimitry Andric 
17975ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
17985ffd83dbSDimitry Andric vec_splat(__vector double __vec, int __index)
17990b57cec5SDimitry Andric   __constant_range(__index, 0, 1) {
18005ffd83dbSDimitry Andric   return (__vector double)__vec[__index];
18010b57cec5SDimitry Andric }
18020b57cec5SDimitry Andric 
18030b57cec5SDimitry Andric /*-- vec_splat_s* -----------------------------------------------------------*/
18040b57cec5SDimitry Andric 
18055ffd83dbSDimitry Andric static inline __ATTRS_ai __vector signed char
18060b57cec5SDimitry Andric vec_splat_s8(signed char __scalar)
18070b57cec5SDimitry Andric   __constant(__scalar) {
18085ffd83dbSDimitry Andric   return (__vector signed char)__scalar;
18090b57cec5SDimitry Andric }
18100b57cec5SDimitry Andric 
18115ffd83dbSDimitry Andric static inline __ATTRS_ai __vector signed short
18120b57cec5SDimitry Andric vec_splat_s16(signed short __scalar)
18130b57cec5SDimitry Andric   __constant(__scalar) {
18145ffd83dbSDimitry Andric   return (__vector signed short)__scalar;
18150b57cec5SDimitry Andric }
18160b57cec5SDimitry Andric 
18175ffd83dbSDimitry Andric static inline __ATTRS_ai __vector signed int
18180b57cec5SDimitry Andric vec_splat_s32(signed short __scalar)
18190b57cec5SDimitry Andric   __constant(__scalar) {
18205ffd83dbSDimitry Andric   return (__vector signed int)(signed int)__scalar;
18210b57cec5SDimitry Andric }
18220b57cec5SDimitry Andric 
18235ffd83dbSDimitry Andric static inline __ATTRS_ai __vector signed long long
18240b57cec5SDimitry Andric vec_splat_s64(signed short __scalar)
18250b57cec5SDimitry Andric   __constant(__scalar) {
18265ffd83dbSDimitry Andric   return (__vector signed long long)(signed long)__scalar;
18270b57cec5SDimitry Andric }
18280b57cec5SDimitry Andric 
18290b57cec5SDimitry Andric /*-- vec_splat_u* -----------------------------------------------------------*/
18300b57cec5SDimitry Andric 
18315ffd83dbSDimitry Andric static inline __ATTRS_ai __vector unsigned char
18320b57cec5SDimitry Andric vec_splat_u8(unsigned char __scalar)
18330b57cec5SDimitry Andric   __constant(__scalar) {
18345ffd83dbSDimitry Andric   return (__vector unsigned char)__scalar;
18350b57cec5SDimitry Andric }
18360b57cec5SDimitry Andric 
18375ffd83dbSDimitry Andric static inline __ATTRS_ai __vector unsigned short
18380b57cec5SDimitry Andric vec_splat_u16(unsigned short __scalar)
18390b57cec5SDimitry Andric   __constant(__scalar) {
18405ffd83dbSDimitry Andric   return (__vector unsigned short)__scalar;
18410b57cec5SDimitry Andric }
18420b57cec5SDimitry Andric 
18435ffd83dbSDimitry Andric static inline __ATTRS_ai __vector unsigned int
18440b57cec5SDimitry Andric vec_splat_u32(signed short __scalar)
18450b57cec5SDimitry Andric   __constant(__scalar) {
18465ffd83dbSDimitry Andric   return (__vector unsigned int)(signed int)__scalar;
18470b57cec5SDimitry Andric }
18480b57cec5SDimitry Andric 
18495ffd83dbSDimitry Andric static inline __ATTRS_ai __vector unsigned long long
18500b57cec5SDimitry Andric vec_splat_u64(signed short __scalar)
18510b57cec5SDimitry Andric   __constant(__scalar) {
18525ffd83dbSDimitry Andric   return (__vector unsigned long long)(signed long long)__scalar;
18530b57cec5SDimitry Andric }
18540b57cec5SDimitry Andric 
18550b57cec5SDimitry Andric /*-- vec_splats -------------------------------------------------------------*/
18560b57cec5SDimitry Andric 
18575ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
18580b57cec5SDimitry Andric vec_splats(signed char __scalar) {
18595ffd83dbSDimitry Andric   return (__vector signed char)__scalar;
18600b57cec5SDimitry Andric }
18610b57cec5SDimitry Andric 
18625ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
18630b57cec5SDimitry Andric vec_splats(unsigned char __scalar) {
18645ffd83dbSDimitry Andric   return (__vector unsigned char)__scalar;
18650b57cec5SDimitry Andric }
18660b57cec5SDimitry Andric 
18675ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
18680b57cec5SDimitry Andric vec_splats(signed short __scalar) {
18695ffd83dbSDimitry Andric   return (__vector signed short)__scalar;
18700b57cec5SDimitry Andric }
18710b57cec5SDimitry Andric 
18725ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
18730b57cec5SDimitry Andric vec_splats(unsigned short __scalar) {
18745ffd83dbSDimitry Andric   return (__vector unsigned short)__scalar;
18750b57cec5SDimitry Andric }
18760b57cec5SDimitry Andric 
18775ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
18780b57cec5SDimitry Andric vec_splats(signed int __scalar) {
18795ffd83dbSDimitry Andric   return (__vector signed int)__scalar;
18800b57cec5SDimitry Andric }
18810b57cec5SDimitry Andric 
18825ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
18830b57cec5SDimitry Andric vec_splats(unsigned int __scalar) {
18845ffd83dbSDimitry Andric   return (__vector unsigned int)__scalar;
18850b57cec5SDimitry Andric }
18860b57cec5SDimitry Andric 
18875ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
18880b57cec5SDimitry Andric vec_splats(signed long long __scalar) {
18895ffd83dbSDimitry Andric   return (__vector signed long long)__scalar;
18900b57cec5SDimitry Andric }
18910b57cec5SDimitry Andric 
18925ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
18930b57cec5SDimitry Andric vec_splats(unsigned long long __scalar) {
18945ffd83dbSDimitry Andric   return (__vector unsigned long long)__scalar;
18950b57cec5SDimitry Andric }
18960b57cec5SDimitry Andric 
18970b57cec5SDimitry Andric #if __ARCH__ >= 12
18985ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
18990b57cec5SDimitry Andric vec_splats(float __scalar) {
19005ffd83dbSDimitry Andric   return (__vector float)__scalar;
19010b57cec5SDimitry Andric }
19020b57cec5SDimitry Andric #endif
19030b57cec5SDimitry Andric 
19045ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
19050b57cec5SDimitry Andric vec_splats(double __scalar) {
19065ffd83dbSDimitry Andric   return (__vector double)__scalar;
19070b57cec5SDimitry Andric }
19080b57cec5SDimitry Andric 
19090b57cec5SDimitry Andric /*-- vec_extend_s64 ---------------------------------------------------------*/
19100b57cec5SDimitry Andric 
19115ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
19125ffd83dbSDimitry Andric vec_extend_s64(__vector signed char __a) {
19135ffd83dbSDimitry Andric   return (__vector signed long long)(__a[7], __a[15]);
19140b57cec5SDimitry Andric }
19150b57cec5SDimitry Andric 
19165ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
19175ffd83dbSDimitry Andric vec_extend_s64(__vector signed short __a) {
19185ffd83dbSDimitry Andric   return (__vector signed long long)(__a[3], __a[7]);
19190b57cec5SDimitry Andric }
19200b57cec5SDimitry Andric 
19215ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
19225ffd83dbSDimitry Andric vec_extend_s64(__vector signed int __a) {
19235ffd83dbSDimitry Andric   return (__vector signed long long)(__a[1], __a[3]);
19240b57cec5SDimitry Andric }
19250b57cec5SDimitry Andric 
19260b57cec5SDimitry Andric /*-- vec_mergeh -------------------------------------------------------------*/
19270b57cec5SDimitry Andric 
19285ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
19295ffd83dbSDimitry Andric vec_mergeh(__vector signed char __a, __vector signed char __b) {
19305ffd83dbSDimitry Andric   return (__vector signed char)(
19310b57cec5SDimitry Andric     __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3],
19320b57cec5SDimitry Andric     __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
19330b57cec5SDimitry Andric }
19340b57cec5SDimitry Andric 
19355ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
19365ffd83dbSDimitry Andric vec_mergeh(__vector __bool char __a, __vector __bool char __b) {
19375ffd83dbSDimitry Andric   return (__vector __bool char)(
19380b57cec5SDimitry Andric     __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3],
19390b57cec5SDimitry Andric     __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
19400b57cec5SDimitry Andric }
19410b57cec5SDimitry Andric 
19425ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
19435ffd83dbSDimitry Andric vec_mergeh(__vector unsigned char __a, __vector unsigned char __b) {
19445ffd83dbSDimitry Andric   return (__vector unsigned char)(
19450b57cec5SDimitry Andric     __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3],
19460b57cec5SDimitry Andric     __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
19470b57cec5SDimitry Andric }
19480b57cec5SDimitry Andric 
19495ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
19505ffd83dbSDimitry Andric vec_mergeh(__vector signed short __a, __vector signed short __b) {
19515ffd83dbSDimitry Andric   return (__vector signed short)(
19520b57cec5SDimitry Andric     __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3]);
19530b57cec5SDimitry Andric }
19540b57cec5SDimitry Andric 
19555ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
19565ffd83dbSDimitry Andric vec_mergeh(__vector __bool short __a, __vector __bool short __b) {
19575ffd83dbSDimitry Andric   return (__vector __bool short)(
19580b57cec5SDimitry Andric     __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3]);
19590b57cec5SDimitry Andric }
19600b57cec5SDimitry Andric 
19615ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
19625ffd83dbSDimitry Andric vec_mergeh(__vector unsigned short __a, __vector unsigned short __b) {
19635ffd83dbSDimitry Andric   return (__vector unsigned short)(
19640b57cec5SDimitry Andric     __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3]);
19650b57cec5SDimitry Andric }
19660b57cec5SDimitry Andric 
19675ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
19685ffd83dbSDimitry Andric vec_mergeh(__vector signed int __a, __vector signed int __b) {
19695ffd83dbSDimitry Andric   return (__vector signed int)(__a[0], __b[0], __a[1], __b[1]);
19700b57cec5SDimitry Andric }
19710b57cec5SDimitry Andric 
19725ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
19735ffd83dbSDimitry Andric vec_mergeh(__vector __bool int __a, __vector __bool int __b) {
19745ffd83dbSDimitry Andric   return (__vector __bool int)(__a[0], __b[0], __a[1], __b[1]);
19750b57cec5SDimitry Andric }
19760b57cec5SDimitry Andric 
19775ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
19785ffd83dbSDimitry Andric vec_mergeh(__vector unsigned int __a, __vector unsigned int __b) {
19795ffd83dbSDimitry Andric   return (__vector unsigned int)(__a[0], __b[0], __a[1], __b[1]);
19800b57cec5SDimitry Andric }
19810b57cec5SDimitry Andric 
19825ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
19835ffd83dbSDimitry Andric vec_mergeh(__vector signed long long __a, __vector signed long long __b) {
19845ffd83dbSDimitry Andric   return (__vector signed long long)(__a[0], __b[0]);
19850b57cec5SDimitry Andric }
19860b57cec5SDimitry Andric 
19875ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
19885ffd83dbSDimitry Andric vec_mergeh(__vector __bool long long __a, __vector __bool long long __b) {
19895ffd83dbSDimitry Andric   return (__vector __bool long long)(__a[0], __b[0]);
19900b57cec5SDimitry Andric }
19910b57cec5SDimitry Andric 
19925ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
19935ffd83dbSDimitry Andric vec_mergeh(__vector unsigned long long __a, __vector unsigned long long __b) {
19945ffd83dbSDimitry Andric   return (__vector unsigned long long)(__a[0], __b[0]);
19950b57cec5SDimitry Andric }
19960b57cec5SDimitry Andric 
19970b57cec5SDimitry Andric #if __ARCH__ >= 12
19985ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
19995ffd83dbSDimitry Andric vec_mergeh(__vector float __a, __vector float __b) {
20005ffd83dbSDimitry Andric   return (__vector float)(__a[0], __b[0], __a[1], __b[1]);
20010b57cec5SDimitry Andric }
20020b57cec5SDimitry Andric #endif
20030b57cec5SDimitry Andric 
20045ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
20055ffd83dbSDimitry Andric vec_mergeh(__vector double __a, __vector double __b) {
20065ffd83dbSDimitry Andric   return (__vector double)(__a[0], __b[0]);
20070b57cec5SDimitry Andric }
20080b57cec5SDimitry Andric 
20090b57cec5SDimitry Andric /*-- vec_mergel -------------------------------------------------------------*/
20100b57cec5SDimitry Andric 
20115ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
20125ffd83dbSDimitry Andric vec_mergel(__vector signed char __a, __vector signed char __b) {
20135ffd83dbSDimitry Andric   return (__vector signed char)(
20140b57cec5SDimitry Andric     __a[8], __b[8], __a[9], __b[9], __a[10], __b[10], __a[11], __b[11],
20150b57cec5SDimitry Andric     __a[12], __b[12], __a[13], __b[13], __a[14], __b[14], __a[15], __b[15]);
20160b57cec5SDimitry Andric }
20170b57cec5SDimitry Andric 
20185ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
20195ffd83dbSDimitry Andric vec_mergel(__vector __bool char __a, __vector __bool char __b) {
20205ffd83dbSDimitry Andric   return (__vector __bool char)(
20210b57cec5SDimitry Andric     __a[8], __b[8], __a[9], __b[9], __a[10], __b[10], __a[11], __b[11],
20220b57cec5SDimitry Andric     __a[12], __b[12], __a[13], __b[13], __a[14], __b[14], __a[15], __b[15]);
20230b57cec5SDimitry Andric }
20240b57cec5SDimitry Andric 
20255ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
20265ffd83dbSDimitry Andric vec_mergel(__vector unsigned char __a, __vector unsigned char __b) {
20275ffd83dbSDimitry Andric   return (__vector unsigned char)(
20280b57cec5SDimitry Andric     __a[8], __b[8], __a[9], __b[9], __a[10], __b[10], __a[11], __b[11],
20290b57cec5SDimitry Andric     __a[12], __b[12], __a[13], __b[13], __a[14], __b[14], __a[15], __b[15]);
20300b57cec5SDimitry Andric }
20310b57cec5SDimitry Andric 
20325ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
20335ffd83dbSDimitry Andric vec_mergel(__vector signed short __a, __vector signed short __b) {
20345ffd83dbSDimitry Andric   return (__vector signed short)(
20350b57cec5SDimitry Andric     __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
20360b57cec5SDimitry Andric }
20370b57cec5SDimitry Andric 
20385ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
20395ffd83dbSDimitry Andric vec_mergel(__vector __bool short __a, __vector __bool short __b) {
20405ffd83dbSDimitry Andric   return (__vector __bool short)(
20410b57cec5SDimitry Andric     __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
20420b57cec5SDimitry Andric }
20430b57cec5SDimitry Andric 
20445ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
20455ffd83dbSDimitry Andric vec_mergel(__vector unsigned short __a, __vector unsigned short __b) {
20465ffd83dbSDimitry Andric   return (__vector unsigned short)(
20470b57cec5SDimitry Andric     __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
20480b57cec5SDimitry Andric }
20490b57cec5SDimitry Andric 
20505ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
20515ffd83dbSDimitry Andric vec_mergel(__vector signed int __a, __vector signed int __b) {
20525ffd83dbSDimitry Andric   return (__vector signed int)(__a[2], __b[2], __a[3], __b[3]);
20530b57cec5SDimitry Andric }
20540b57cec5SDimitry Andric 
20555ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
20565ffd83dbSDimitry Andric vec_mergel(__vector __bool int __a, __vector __bool int __b) {
20575ffd83dbSDimitry Andric   return (__vector __bool int)(__a[2], __b[2], __a[3], __b[3]);
20580b57cec5SDimitry Andric }
20590b57cec5SDimitry Andric 
20605ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
20615ffd83dbSDimitry Andric vec_mergel(__vector unsigned int __a, __vector unsigned int __b) {
20625ffd83dbSDimitry Andric   return (__vector unsigned int)(__a[2], __b[2], __a[3], __b[3]);
20630b57cec5SDimitry Andric }
20640b57cec5SDimitry Andric 
20655ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
20665ffd83dbSDimitry Andric vec_mergel(__vector signed long long __a, __vector signed long long __b) {
20675ffd83dbSDimitry Andric   return (__vector signed long long)(__a[1], __b[1]);
20680b57cec5SDimitry Andric }
20690b57cec5SDimitry Andric 
20705ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
20715ffd83dbSDimitry Andric vec_mergel(__vector __bool long long __a, __vector __bool long long __b) {
20725ffd83dbSDimitry Andric   return (__vector __bool long long)(__a[1], __b[1]);
20730b57cec5SDimitry Andric }
20740b57cec5SDimitry Andric 
20755ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
20765ffd83dbSDimitry Andric vec_mergel(__vector unsigned long long __a, __vector unsigned long long __b) {
20775ffd83dbSDimitry Andric   return (__vector unsigned long long)(__a[1], __b[1]);
20780b57cec5SDimitry Andric }
20790b57cec5SDimitry Andric 
20800b57cec5SDimitry Andric #if __ARCH__ >= 12
20815ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
20825ffd83dbSDimitry Andric vec_mergel(__vector float __a, __vector float __b) {
20835ffd83dbSDimitry Andric   return (__vector float)(__a[2], __b[2], __a[3], __b[3]);
20840b57cec5SDimitry Andric }
20850b57cec5SDimitry Andric #endif
20860b57cec5SDimitry Andric 
20875ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
20885ffd83dbSDimitry Andric vec_mergel(__vector double __a, __vector double __b) {
20895ffd83dbSDimitry Andric   return (__vector double)(__a[1], __b[1]);
20900b57cec5SDimitry Andric }
20910b57cec5SDimitry Andric 
20920b57cec5SDimitry Andric /*-- vec_pack ---------------------------------------------------------------*/
20930b57cec5SDimitry Andric 
20945ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
20955ffd83dbSDimitry Andric vec_pack(__vector signed short __a, __vector signed short __b) {
20965ffd83dbSDimitry Andric   __vector signed char __ac = (__vector signed char)__a;
20975ffd83dbSDimitry Andric   __vector signed char __bc = (__vector signed char)__b;
20985ffd83dbSDimitry Andric   return (__vector signed char)(
20990b57cec5SDimitry Andric     __ac[1], __ac[3], __ac[5], __ac[7], __ac[9], __ac[11], __ac[13], __ac[15],
21000b57cec5SDimitry Andric     __bc[1], __bc[3], __bc[5], __bc[7], __bc[9], __bc[11], __bc[13], __bc[15]);
21010b57cec5SDimitry Andric }
21020b57cec5SDimitry Andric 
21035ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
21045ffd83dbSDimitry Andric vec_pack(__vector __bool short __a, __vector __bool short __b) {
21055ffd83dbSDimitry Andric   __vector __bool char __ac = (__vector __bool char)__a;
21065ffd83dbSDimitry Andric   __vector __bool char __bc = (__vector __bool char)__b;
21075ffd83dbSDimitry Andric   return (__vector __bool char)(
21080b57cec5SDimitry Andric     __ac[1], __ac[3], __ac[5], __ac[7], __ac[9], __ac[11], __ac[13], __ac[15],
21090b57cec5SDimitry Andric     __bc[1], __bc[3], __bc[5], __bc[7], __bc[9], __bc[11], __bc[13], __bc[15]);
21100b57cec5SDimitry Andric }
21110b57cec5SDimitry Andric 
21125ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
21135ffd83dbSDimitry Andric vec_pack(__vector unsigned short __a, __vector unsigned short __b) {
21145ffd83dbSDimitry Andric   __vector unsigned char __ac = (__vector unsigned char)__a;
21155ffd83dbSDimitry Andric   __vector unsigned char __bc = (__vector unsigned char)__b;
21165ffd83dbSDimitry Andric   return (__vector unsigned char)(
21170b57cec5SDimitry Andric     __ac[1], __ac[3], __ac[5], __ac[7], __ac[9], __ac[11], __ac[13], __ac[15],
21180b57cec5SDimitry Andric     __bc[1], __bc[3], __bc[5], __bc[7], __bc[9], __bc[11], __bc[13], __bc[15]);
21190b57cec5SDimitry Andric }
21200b57cec5SDimitry Andric 
21215ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
21225ffd83dbSDimitry Andric vec_pack(__vector signed int __a, __vector signed int __b) {
21235ffd83dbSDimitry Andric   __vector signed short __ac = (__vector signed short)__a;
21245ffd83dbSDimitry Andric   __vector signed short __bc = (__vector signed short)__b;
21255ffd83dbSDimitry Andric   return (__vector signed short)(
21260b57cec5SDimitry Andric     __ac[1], __ac[3], __ac[5], __ac[7],
21270b57cec5SDimitry Andric     __bc[1], __bc[3], __bc[5], __bc[7]);
21280b57cec5SDimitry Andric }
21290b57cec5SDimitry Andric 
21305ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
21315ffd83dbSDimitry Andric vec_pack(__vector __bool int __a, __vector __bool int __b) {
21325ffd83dbSDimitry Andric   __vector __bool short __ac = (__vector __bool short)__a;
21335ffd83dbSDimitry Andric   __vector __bool short __bc = (__vector __bool short)__b;
21345ffd83dbSDimitry Andric   return (__vector __bool short)(
21350b57cec5SDimitry Andric     __ac[1], __ac[3], __ac[5], __ac[7],
21360b57cec5SDimitry Andric     __bc[1], __bc[3], __bc[5], __bc[7]);
21370b57cec5SDimitry Andric }
21380b57cec5SDimitry Andric 
21395ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
21405ffd83dbSDimitry Andric vec_pack(__vector unsigned int __a, __vector unsigned int __b) {
21415ffd83dbSDimitry Andric   __vector unsigned short __ac = (__vector unsigned short)__a;
21425ffd83dbSDimitry Andric   __vector unsigned short __bc = (__vector unsigned short)__b;
21435ffd83dbSDimitry Andric   return (__vector unsigned short)(
21440b57cec5SDimitry Andric     __ac[1], __ac[3], __ac[5], __ac[7],
21450b57cec5SDimitry Andric     __bc[1], __bc[3], __bc[5], __bc[7]);
21460b57cec5SDimitry Andric }
21470b57cec5SDimitry Andric 
21485ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
21495ffd83dbSDimitry Andric vec_pack(__vector signed long long __a, __vector signed long long __b) {
21505ffd83dbSDimitry Andric   __vector signed int __ac = (__vector signed int)__a;
21515ffd83dbSDimitry Andric   __vector signed int __bc = (__vector signed int)__b;
21525ffd83dbSDimitry Andric   return (__vector signed int)(__ac[1], __ac[3], __bc[1], __bc[3]);
21530b57cec5SDimitry Andric }
21540b57cec5SDimitry Andric 
21555ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
21565ffd83dbSDimitry Andric vec_pack(__vector __bool long long __a, __vector __bool long long __b) {
21575ffd83dbSDimitry Andric   __vector __bool int __ac = (__vector __bool int)__a;
21585ffd83dbSDimitry Andric   __vector __bool int __bc = (__vector __bool int)__b;
21595ffd83dbSDimitry Andric   return (__vector __bool int)(__ac[1], __ac[3], __bc[1], __bc[3]);
21600b57cec5SDimitry Andric }
21610b57cec5SDimitry Andric 
21625ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
21635ffd83dbSDimitry Andric vec_pack(__vector unsigned long long __a, __vector unsigned long long __b) {
21645ffd83dbSDimitry Andric   __vector unsigned int __ac = (__vector unsigned int)__a;
21655ffd83dbSDimitry Andric   __vector unsigned int __bc = (__vector unsigned int)__b;
21665ffd83dbSDimitry Andric   return (__vector unsigned int)(__ac[1], __ac[3], __bc[1], __bc[3]);
21670b57cec5SDimitry Andric }
21680b57cec5SDimitry Andric 
21690b57cec5SDimitry Andric /*-- vec_packs --------------------------------------------------------------*/
21700b57cec5SDimitry Andric 
21715ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
21725ffd83dbSDimitry Andric vec_packs(__vector signed short __a, __vector signed short __b) {
21730b57cec5SDimitry Andric   return __builtin_s390_vpksh(__a, __b);
21740b57cec5SDimitry Andric }
21750b57cec5SDimitry Andric 
21765ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
21775ffd83dbSDimitry Andric vec_packs(__vector unsigned short __a, __vector unsigned short __b) {
21780b57cec5SDimitry Andric   return __builtin_s390_vpklsh(__a, __b);
21790b57cec5SDimitry Andric }
21800b57cec5SDimitry Andric 
21815ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
21825ffd83dbSDimitry Andric vec_packs(__vector signed int __a, __vector signed int __b) {
21830b57cec5SDimitry Andric   return __builtin_s390_vpksf(__a, __b);
21840b57cec5SDimitry Andric }
21850b57cec5SDimitry Andric 
21865ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
21875ffd83dbSDimitry Andric vec_packs(__vector unsigned int __a, __vector unsigned int __b) {
21880b57cec5SDimitry Andric   return __builtin_s390_vpklsf(__a, __b);
21890b57cec5SDimitry Andric }
21900b57cec5SDimitry Andric 
21915ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
21925ffd83dbSDimitry Andric vec_packs(__vector signed long long __a, __vector signed long long __b) {
21930b57cec5SDimitry Andric   return __builtin_s390_vpksg(__a, __b);
21940b57cec5SDimitry Andric }
21950b57cec5SDimitry Andric 
21965ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
21975ffd83dbSDimitry Andric vec_packs(__vector unsigned long long __a, __vector unsigned long long __b) {
21980b57cec5SDimitry Andric   return __builtin_s390_vpklsg(__a, __b);
21990b57cec5SDimitry Andric }
22000b57cec5SDimitry Andric 
22010b57cec5SDimitry Andric /*-- vec_packs_cc -----------------------------------------------------------*/
22020b57cec5SDimitry Andric 
22035ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
22045ffd83dbSDimitry Andric vec_packs_cc(__vector signed short __a, __vector signed short __b, int *__cc) {
22050b57cec5SDimitry Andric   return __builtin_s390_vpkshs(__a, __b, __cc);
22060b57cec5SDimitry Andric }
22070b57cec5SDimitry Andric 
22085ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
22095ffd83dbSDimitry Andric vec_packs_cc(__vector unsigned short __a, __vector unsigned short __b,
22105ffd83dbSDimitry Andric              int *__cc) {
22110b57cec5SDimitry Andric   return __builtin_s390_vpklshs(__a, __b, __cc);
22120b57cec5SDimitry Andric }
22130b57cec5SDimitry Andric 
22145ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
22155ffd83dbSDimitry Andric vec_packs_cc(__vector signed int __a, __vector signed int __b, int *__cc) {
22160b57cec5SDimitry Andric   return __builtin_s390_vpksfs(__a, __b, __cc);
22170b57cec5SDimitry Andric }
22180b57cec5SDimitry Andric 
22195ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
22205ffd83dbSDimitry Andric vec_packs_cc(__vector unsigned int __a, __vector unsigned int __b, int *__cc) {
22210b57cec5SDimitry Andric   return __builtin_s390_vpklsfs(__a, __b, __cc);
22220b57cec5SDimitry Andric }
22230b57cec5SDimitry Andric 
22245ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
22255ffd83dbSDimitry Andric vec_packs_cc(__vector signed long long __a, __vector signed long long __b,
22260b57cec5SDimitry Andric              int *__cc) {
22270b57cec5SDimitry Andric   return __builtin_s390_vpksgs(__a, __b, __cc);
22280b57cec5SDimitry Andric }
22290b57cec5SDimitry Andric 
22305ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
22315ffd83dbSDimitry Andric vec_packs_cc(__vector unsigned long long __a, __vector unsigned long long __b,
22320b57cec5SDimitry Andric              int *__cc) {
22330b57cec5SDimitry Andric   return __builtin_s390_vpklsgs(__a, __b, __cc);
22340b57cec5SDimitry Andric }
22350b57cec5SDimitry Andric 
22360b57cec5SDimitry Andric /*-- vec_packsu -------------------------------------------------------------*/
22370b57cec5SDimitry Andric 
22385ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
22395ffd83dbSDimitry Andric vec_packsu(__vector signed short __a, __vector signed short __b) {
22405ffd83dbSDimitry Andric   const __vector signed short __zero = (__vector signed short)0;
22410b57cec5SDimitry Andric   return __builtin_s390_vpklsh(
22425ffd83dbSDimitry Andric     (__vector unsigned short)(__a >= __zero) & (__vector unsigned short)__a,
22435ffd83dbSDimitry Andric     (__vector unsigned short)(__b >= __zero) & (__vector unsigned short)__b);
22440b57cec5SDimitry Andric }
22450b57cec5SDimitry Andric 
22465ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
22475ffd83dbSDimitry Andric vec_packsu(__vector unsigned short __a, __vector unsigned short __b) {
22480b57cec5SDimitry Andric   return __builtin_s390_vpklsh(__a, __b);
22490b57cec5SDimitry Andric }
22500b57cec5SDimitry Andric 
22515ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
22525ffd83dbSDimitry Andric vec_packsu(__vector signed int __a, __vector signed int __b) {
22535ffd83dbSDimitry Andric   const __vector signed int __zero = (__vector signed int)0;
22540b57cec5SDimitry Andric   return __builtin_s390_vpklsf(
22555ffd83dbSDimitry Andric     (__vector unsigned int)(__a >= __zero) & (__vector unsigned int)__a,
22565ffd83dbSDimitry Andric     (__vector unsigned int)(__b >= __zero) & (__vector unsigned int)__b);
22570b57cec5SDimitry Andric }
22580b57cec5SDimitry Andric 
22595ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
22605ffd83dbSDimitry Andric vec_packsu(__vector unsigned int __a, __vector unsigned int __b) {
22610b57cec5SDimitry Andric   return __builtin_s390_vpklsf(__a, __b);
22620b57cec5SDimitry Andric }
22630b57cec5SDimitry Andric 
22645ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
22655ffd83dbSDimitry Andric vec_packsu(__vector signed long long __a, __vector signed long long __b) {
22665ffd83dbSDimitry Andric   const __vector signed long long __zero = (__vector signed long long)0;
22670b57cec5SDimitry Andric   return __builtin_s390_vpklsg(
22685ffd83dbSDimitry Andric     (__vector unsigned long long)(__a >= __zero) &
22695ffd83dbSDimitry Andric     (__vector unsigned long long)__a,
22705ffd83dbSDimitry Andric     (__vector unsigned long long)(__b >= __zero) &
22715ffd83dbSDimitry Andric     (__vector unsigned long long)__b);
22720b57cec5SDimitry Andric }
22730b57cec5SDimitry Andric 
22745ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
22755ffd83dbSDimitry Andric vec_packsu(__vector unsigned long long __a, __vector unsigned long long __b) {
22760b57cec5SDimitry Andric   return __builtin_s390_vpklsg(__a, __b);
22770b57cec5SDimitry Andric }
22780b57cec5SDimitry Andric 
22790b57cec5SDimitry Andric /*-- vec_packsu_cc ----------------------------------------------------------*/
22800b57cec5SDimitry Andric 
22815ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
22825ffd83dbSDimitry Andric vec_packsu_cc(__vector unsigned short __a, __vector unsigned short __b,
22835ffd83dbSDimitry Andric               int *__cc) {
22840b57cec5SDimitry Andric   return __builtin_s390_vpklshs(__a, __b, __cc);
22850b57cec5SDimitry Andric }
22860b57cec5SDimitry Andric 
22875ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
22885ffd83dbSDimitry Andric vec_packsu_cc(__vector unsigned int __a, __vector unsigned int __b, int *__cc) {
22890b57cec5SDimitry Andric   return __builtin_s390_vpklsfs(__a, __b, __cc);
22900b57cec5SDimitry Andric }
22910b57cec5SDimitry Andric 
22925ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
22935ffd83dbSDimitry Andric vec_packsu_cc(__vector unsigned long long __a, __vector unsigned long long __b,
22940b57cec5SDimitry Andric               int *__cc) {
22950b57cec5SDimitry Andric   return __builtin_s390_vpklsgs(__a, __b, __cc);
22960b57cec5SDimitry Andric }
22970b57cec5SDimitry Andric 
22980b57cec5SDimitry Andric /*-- vec_unpackh ------------------------------------------------------------*/
22990b57cec5SDimitry Andric 
23005ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
23015ffd83dbSDimitry Andric vec_unpackh(__vector signed char __a) {
23020b57cec5SDimitry Andric   return __builtin_s390_vuphb(__a);
23030b57cec5SDimitry Andric }
23040b57cec5SDimitry Andric 
23055ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
23065ffd83dbSDimitry Andric vec_unpackh(__vector __bool char __a) {
23075ffd83dbSDimitry Andric   return ((__vector __bool short)
23085ffd83dbSDimitry Andric           __builtin_s390_vuphb((__vector signed char)__a));
23090b57cec5SDimitry Andric }
23100b57cec5SDimitry Andric 
23115ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
23125ffd83dbSDimitry Andric vec_unpackh(__vector unsigned char __a) {
23130b57cec5SDimitry Andric   return __builtin_s390_vuplhb(__a);
23140b57cec5SDimitry Andric }
23150b57cec5SDimitry Andric 
23165ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
23175ffd83dbSDimitry Andric vec_unpackh(__vector signed short __a) {
23180b57cec5SDimitry Andric   return __builtin_s390_vuphh(__a);
23190b57cec5SDimitry Andric }
23200b57cec5SDimitry Andric 
23215ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
23225ffd83dbSDimitry Andric vec_unpackh(__vector __bool short __a) {
23235ffd83dbSDimitry Andric   return (__vector __bool int)__builtin_s390_vuphh((__vector signed short)__a);
23240b57cec5SDimitry Andric }
23250b57cec5SDimitry Andric 
23265ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
23275ffd83dbSDimitry Andric vec_unpackh(__vector unsigned short __a) {
23280b57cec5SDimitry Andric   return __builtin_s390_vuplhh(__a);
23290b57cec5SDimitry Andric }
23300b57cec5SDimitry Andric 
23315ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
23325ffd83dbSDimitry Andric vec_unpackh(__vector signed int __a) {
23330b57cec5SDimitry Andric   return __builtin_s390_vuphf(__a);
23340b57cec5SDimitry Andric }
23350b57cec5SDimitry Andric 
23365ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
23375ffd83dbSDimitry Andric vec_unpackh(__vector __bool int __a) {
23385ffd83dbSDimitry Andric   return ((__vector __bool long long)
23395ffd83dbSDimitry Andric           __builtin_s390_vuphf((__vector signed int)__a));
23400b57cec5SDimitry Andric }
23410b57cec5SDimitry Andric 
23425ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
23435ffd83dbSDimitry Andric vec_unpackh(__vector unsigned int __a) {
23440b57cec5SDimitry Andric   return __builtin_s390_vuplhf(__a);
23450b57cec5SDimitry Andric }
23460b57cec5SDimitry Andric 
23470b57cec5SDimitry Andric /*-- vec_unpackl ------------------------------------------------------------*/
23480b57cec5SDimitry Andric 
23495ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
23505ffd83dbSDimitry Andric vec_unpackl(__vector signed char __a) {
23510b57cec5SDimitry Andric   return __builtin_s390_vuplb(__a);
23520b57cec5SDimitry Andric }
23530b57cec5SDimitry Andric 
23545ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
23555ffd83dbSDimitry Andric vec_unpackl(__vector __bool char __a) {
23565ffd83dbSDimitry Andric   return ((__vector __bool short)
23575ffd83dbSDimitry Andric           __builtin_s390_vuplb((__vector signed char)__a));
23580b57cec5SDimitry Andric }
23590b57cec5SDimitry Andric 
23605ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
23615ffd83dbSDimitry Andric vec_unpackl(__vector unsigned char __a) {
23620b57cec5SDimitry Andric   return __builtin_s390_vupllb(__a);
23630b57cec5SDimitry Andric }
23640b57cec5SDimitry Andric 
23655ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
23665ffd83dbSDimitry Andric vec_unpackl(__vector signed short __a) {
23670b57cec5SDimitry Andric   return __builtin_s390_vuplhw(__a);
23680b57cec5SDimitry Andric }
23690b57cec5SDimitry Andric 
23705ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
23715ffd83dbSDimitry Andric vec_unpackl(__vector __bool short __a) {
23725ffd83dbSDimitry Andric   return ((__vector __bool int)
23735ffd83dbSDimitry Andric           __builtin_s390_vuplhw((__vector signed short)__a));
23740b57cec5SDimitry Andric }
23750b57cec5SDimitry Andric 
23765ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
23775ffd83dbSDimitry Andric vec_unpackl(__vector unsigned short __a) {
23780b57cec5SDimitry Andric   return __builtin_s390_vupllh(__a);
23790b57cec5SDimitry Andric }
23800b57cec5SDimitry Andric 
23815ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
23825ffd83dbSDimitry Andric vec_unpackl(__vector signed int __a) {
23830b57cec5SDimitry Andric   return __builtin_s390_vuplf(__a);
23840b57cec5SDimitry Andric }
23850b57cec5SDimitry Andric 
23865ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
23875ffd83dbSDimitry Andric vec_unpackl(__vector __bool int __a) {
23885ffd83dbSDimitry Andric   return ((__vector __bool long long)
23895ffd83dbSDimitry Andric           __builtin_s390_vuplf((__vector signed int)__a));
23900b57cec5SDimitry Andric }
23910b57cec5SDimitry Andric 
23925ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
23935ffd83dbSDimitry Andric vec_unpackl(__vector unsigned int __a) {
23940b57cec5SDimitry Andric   return __builtin_s390_vupllf(__a);
23950b57cec5SDimitry Andric }
23960b57cec5SDimitry Andric 
23970b57cec5SDimitry Andric /*-- vec_cmpeq --------------------------------------------------------------*/
23980b57cec5SDimitry Andric 
23995ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
24005ffd83dbSDimitry Andric vec_cmpeq(__vector __bool char __a, __vector __bool char __b) {
24015ffd83dbSDimitry Andric   return (__vector __bool char)(__a == __b);
24020b57cec5SDimitry Andric }
24030b57cec5SDimitry Andric 
24045ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
24055ffd83dbSDimitry Andric vec_cmpeq(__vector signed char __a, __vector signed char __b) {
24065ffd83dbSDimitry Andric   return (__vector __bool char)(__a == __b);
24070b57cec5SDimitry Andric }
24080b57cec5SDimitry Andric 
24095ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
24105ffd83dbSDimitry Andric vec_cmpeq(__vector unsigned char __a, __vector unsigned char __b) {
24115ffd83dbSDimitry Andric   return (__vector __bool char)(__a == __b);
24120b57cec5SDimitry Andric }
24130b57cec5SDimitry Andric 
24145ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
24155ffd83dbSDimitry Andric vec_cmpeq(__vector __bool short __a, __vector __bool short __b) {
24165ffd83dbSDimitry Andric   return (__vector __bool short)(__a == __b);
24170b57cec5SDimitry Andric }
24180b57cec5SDimitry Andric 
24195ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
24205ffd83dbSDimitry Andric vec_cmpeq(__vector signed short __a, __vector signed short __b) {
24215ffd83dbSDimitry Andric   return (__vector __bool short)(__a == __b);
24220b57cec5SDimitry Andric }
24230b57cec5SDimitry Andric 
24245ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
24255ffd83dbSDimitry Andric vec_cmpeq(__vector unsigned short __a, __vector unsigned short __b) {
24265ffd83dbSDimitry Andric   return (__vector __bool short)(__a == __b);
24270b57cec5SDimitry Andric }
24280b57cec5SDimitry Andric 
24295ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
24305ffd83dbSDimitry Andric vec_cmpeq(__vector __bool int __a, __vector __bool int __b) {
24315ffd83dbSDimitry Andric   return (__vector __bool int)(__a == __b);
24320b57cec5SDimitry Andric }
24330b57cec5SDimitry Andric 
24345ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
24355ffd83dbSDimitry Andric vec_cmpeq(__vector signed int __a, __vector signed int __b) {
24365ffd83dbSDimitry Andric   return (__vector __bool int)(__a == __b);
24370b57cec5SDimitry Andric }
24380b57cec5SDimitry Andric 
24395ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
24405ffd83dbSDimitry Andric vec_cmpeq(__vector unsigned int __a, __vector unsigned int __b) {
24415ffd83dbSDimitry Andric   return (__vector __bool int)(__a == __b);
24420b57cec5SDimitry Andric }
24430b57cec5SDimitry Andric 
24445ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
24455ffd83dbSDimitry Andric vec_cmpeq(__vector __bool long long __a, __vector __bool long long __b) {
24465ffd83dbSDimitry Andric   return (__vector __bool long long)(__a == __b);
24470b57cec5SDimitry Andric }
24480b57cec5SDimitry Andric 
24495ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
24505ffd83dbSDimitry Andric vec_cmpeq(__vector signed long long __a, __vector signed long long __b) {
24515ffd83dbSDimitry Andric   return (__vector __bool long long)(__a == __b);
24520b57cec5SDimitry Andric }
24530b57cec5SDimitry Andric 
24545ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
24555ffd83dbSDimitry Andric vec_cmpeq(__vector unsigned long long __a, __vector unsigned long long __b) {
24565ffd83dbSDimitry Andric   return (__vector __bool long long)(__a == __b);
24570b57cec5SDimitry Andric }
24580b57cec5SDimitry Andric 
24590b57cec5SDimitry Andric #if __ARCH__ >= 12
24605ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
24615ffd83dbSDimitry Andric vec_cmpeq(__vector float __a, __vector float __b) {
24625ffd83dbSDimitry Andric   return (__vector __bool int)(__a == __b);
24630b57cec5SDimitry Andric }
24640b57cec5SDimitry Andric #endif
24650b57cec5SDimitry Andric 
24665ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
24675ffd83dbSDimitry Andric vec_cmpeq(__vector double __a, __vector double __b) {
24685ffd83dbSDimitry Andric   return (__vector __bool long long)(__a == __b);
24690b57cec5SDimitry Andric }
24700b57cec5SDimitry Andric 
24710b57cec5SDimitry Andric /*-- vec_cmpge --------------------------------------------------------------*/
24720b57cec5SDimitry Andric 
24735ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
24745ffd83dbSDimitry Andric vec_cmpge(__vector signed char __a, __vector signed char __b) {
24755ffd83dbSDimitry Andric   return (__vector __bool char)(__a >= __b);
24760b57cec5SDimitry Andric }
24770b57cec5SDimitry Andric 
24785ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
24795ffd83dbSDimitry Andric vec_cmpge(__vector unsigned char __a, __vector unsigned char __b) {
24805ffd83dbSDimitry Andric   return (__vector __bool char)(__a >= __b);
24810b57cec5SDimitry Andric }
24820b57cec5SDimitry Andric 
24835ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
24845ffd83dbSDimitry Andric vec_cmpge(__vector signed short __a, __vector signed short __b) {
24855ffd83dbSDimitry Andric   return (__vector __bool short)(__a >= __b);
24860b57cec5SDimitry Andric }
24870b57cec5SDimitry Andric 
24885ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
24895ffd83dbSDimitry Andric vec_cmpge(__vector unsigned short __a, __vector unsigned short __b) {
24905ffd83dbSDimitry Andric   return (__vector __bool short)(__a >= __b);
24910b57cec5SDimitry Andric }
24920b57cec5SDimitry Andric 
24935ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
24945ffd83dbSDimitry Andric vec_cmpge(__vector signed int __a, __vector signed int __b) {
24955ffd83dbSDimitry Andric   return (__vector __bool int)(__a >= __b);
24960b57cec5SDimitry Andric }
24970b57cec5SDimitry Andric 
24985ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
24995ffd83dbSDimitry Andric vec_cmpge(__vector unsigned int __a, __vector unsigned int __b) {
25005ffd83dbSDimitry Andric   return (__vector __bool int)(__a >= __b);
25010b57cec5SDimitry Andric }
25020b57cec5SDimitry Andric 
25035ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
25045ffd83dbSDimitry Andric vec_cmpge(__vector signed long long __a, __vector signed long long __b) {
25055ffd83dbSDimitry Andric   return (__vector __bool long long)(__a >= __b);
25060b57cec5SDimitry Andric }
25070b57cec5SDimitry Andric 
25085ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
25095ffd83dbSDimitry Andric vec_cmpge(__vector unsigned long long __a, __vector unsigned long long __b) {
25105ffd83dbSDimitry Andric   return (__vector __bool long long)(__a >= __b);
25110b57cec5SDimitry Andric }
25120b57cec5SDimitry Andric 
25130b57cec5SDimitry Andric #if __ARCH__ >= 12
25145ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
25155ffd83dbSDimitry Andric vec_cmpge(__vector float __a, __vector float __b) {
25165ffd83dbSDimitry Andric   return (__vector __bool int)(__a >= __b);
25170b57cec5SDimitry Andric }
25180b57cec5SDimitry Andric #endif
25190b57cec5SDimitry Andric 
25205ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
25215ffd83dbSDimitry Andric vec_cmpge(__vector double __a, __vector double __b) {
25225ffd83dbSDimitry Andric   return (__vector __bool long long)(__a >= __b);
25230b57cec5SDimitry Andric }
25240b57cec5SDimitry Andric 
25250b57cec5SDimitry Andric /*-- vec_cmpgt --------------------------------------------------------------*/
25260b57cec5SDimitry Andric 
25275ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
25285ffd83dbSDimitry Andric vec_cmpgt(__vector signed char __a, __vector signed char __b) {
25295ffd83dbSDimitry Andric   return (__vector __bool char)(__a > __b);
25300b57cec5SDimitry Andric }
25310b57cec5SDimitry Andric 
25325ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
25335ffd83dbSDimitry Andric vec_cmpgt(__vector unsigned char __a, __vector unsigned char __b) {
25345ffd83dbSDimitry Andric   return (__vector __bool char)(__a > __b);
25350b57cec5SDimitry Andric }
25360b57cec5SDimitry Andric 
25375ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
25385ffd83dbSDimitry Andric vec_cmpgt(__vector signed short __a, __vector signed short __b) {
25395ffd83dbSDimitry Andric   return (__vector __bool short)(__a > __b);
25400b57cec5SDimitry Andric }
25410b57cec5SDimitry Andric 
25425ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
25435ffd83dbSDimitry Andric vec_cmpgt(__vector unsigned short __a, __vector unsigned short __b) {
25445ffd83dbSDimitry Andric   return (__vector __bool short)(__a > __b);
25450b57cec5SDimitry Andric }
25460b57cec5SDimitry Andric 
25475ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
25485ffd83dbSDimitry Andric vec_cmpgt(__vector signed int __a, __vector signed int __b) {
25495ffd83dbSDimitry Andric   return (__vector __bool int)(__a > __b);
25500b57cec5SDimitry Andric }
25510b57cec5SDimitry Andric 
25525ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
25535ffd83dbSDimitry Andric vec_cmpgt(__vector unsigned int __a, __vector unsigned int __b) {
25545ffd83dbSDimitry Andric   return (__vector __bool int)(__a > __b);
25550b57cec5SDimitry Andric }
25560b57cec5SDimitry Andric 
25575ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
25585ffd83dbSDimitry Andric vec_cmpgt(__vector signed long long __a, __vector signed long long __b) {
25595ffd83dbSDimitry Andric   return (__vector __bool long long)(__a > __b);
25600b57cec5SDimitry Andric }
25610b57cec5SDimitry Andric 
25625ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
25635ffd83dbSDimitry Andric vec_cmpgt(__vector unsigned long long __a, __vector unsigned long long __b) {
25645ffd83dbSDimitry Andric   return (__vector __bool long long)(__a > __b);
25650b57cec5SDimitry Andric }
25660b57cec5SDimitry Andric 
25670b57cec5SDimitry Andric #if __ARCH__ >= 12
25685ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
25695ffd83dbSDimitry Andric vec_cmpgt(__vector float __a, __vector float __b) {
25705ffd83dbSDimitry Andric   return (__vector __bool int)(__a > __b);
25710b57cec5SDimitry Andric }
25720b57cec5SDimitry Andric #endif
25730b57cec5SDimitry Andric 
25745ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
25755ffd83dbSDimitry Andric vec_cmpgt(__vector double __a, __vector double __b) {
25765ffd83dbSDimitry Andric   return (__vector __bool long long)(__a > __b);
25770b57cec5SDimitry Andric }
25780b57cec5SDimitry Andric 
25790b57cec5SDimitry Andric /*-- vec_cmple --------------------------------------------------------------*/
25800b57cec5SDimitry Andric 
25815ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
25825ffd83dbSDimitry Andric vec_cmple(__vector signed char __a, __vector signed char __b) {
25835ffd83dbSDimitry Andric   return (__vector __bool char)(__a <= __b);
25840b57cec5SDimitry Andric }
25850b57cec5SDimitry Andric 
25865ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
25875ffd83dbSDimitry Andric vec_cmple(__vector unsigned char __a, __vector unsigned char __b) {
25885ffd83dbSDimitry Andric   return (__vector __bool char)(__a <= __b);
25890b57cec5SDimitry Andric }
25900b57cec5SDimitry Andric 
25915ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
25925ffd83dbSDimitry Andric vec_cmple(__vector signed short __a, __vector signed short __b) {
25935ffd83dbSDimitry Andric   return (__vector __bool short)(__a <= __b);
25940b57cec5SDimitry Andric }
25950b57cec5SDimitry Andric 
25965ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
25975ffd83dbSDimitry Andric vec_cmple(__vector unsigned short __a, __vector unsigned short __b) {
25985ffd83dbSDimitry Andric   return (__vector __bool short)(__a <= __b);
25990b57cec5SDimitry Andric }
26000b57cec5SDimitry Andric 
26015ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
26025ffd83dbSDimitry Andric vec_cmple(__vector signed int __a, __vector signed int __b) {
26035ffd83dbSDimitry Andric   return (__vector __bool int)(__a <= __b);
26040b57cec5SDimitry Andric }
26050b57cec5SDimitry Andric 
26065ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
26075ffd83dbSDimitry Andric vec_cmple(__vector unsigned int __a, __vector unsigned int __b) {
26085ffd83dbSDimitry Andric   return (__vector __bool int)(__a <= __b);
26090b57cec5SDimitry Andric }
26100b57cec5SDimitry Andric 
26115ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
26125ffd83dbSDimitry Andric vec_cmple(__vector signed long long __a, __vector signed long long __b) {
26135ffd83dbSDimitry Andric   return (__vector __bool long long)(__a <= __b);
26140b57cec5SDimitry Andric }
26150b57cec5SDimitry Andric 
26165ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
26175ffd83dbSDimitry Andric vec_cmple(__vector unsigned long long __a, __vector unsigned long long __b) {
26185ffd83dbSDimitry Andric   return (__vector __bool long long)(__a <= __b);
26190b57cec5SDimitry Andric }
26200b57cec5SDimitry Andric 
26210b57cec5SDimitry Andric #if __ARCH__ >= 12
26225ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
26235ffd83dbSDimitry Andric vec_cmple(__vector float __a, __vector float __b) {
26245ffd83dbSDimitry Andric   return (__vector __bool int)(__a <= __b);
26250b57cec5SDimitry Andric }
26260b57cec5SDimitry Andric #endif
26270b57cec5SDimitry Andric 
26285ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
26295ffd83dbSDimitry Andric vec_cmple(__vector double __a, __vector double __b) {
26305ffd83dbSDimitry Andric   return (__vector __bool long long)(__a <= __b);
26310b57cec5SDimitry Andric }
26320b57cec5SDimitry Andric 
26330b57cec5SDimitry Andric /*-- vec_cmplt --------------------------------------------------------------*/
26340b57cec5SDimitry Andric 
26355ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
26365ffd83dbSDimitry Andric vec_cmplt(__vector signed char __a, __vector signed char __b) {
26375ffd83dbSDimitry Andric   return (__vector __bool char)(__a < __b);
26380b57cec5SDimitry Andric }
26390b57cec5SDimitry Andric 
26405ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
26415ffd83dbSDimitry Andric vec_cmplt(__vector unsigned char __a, __vector unsigned char __b) {
26425ffd83dbSDimitry Andric   return (__vector __bool char)(__a < __b);
26430b57cec5SDimitry Andric }
26440b57cec5SDimitry Andric 
26455ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
26465ffd83dbSDimitry Andric vec_cmplt(__vector signed short __a, __vector signed short __b) {
26475ffd83dbSDimitry Andric   return (__vector __bool short)(__a < __b);
26480b57cec5SDimitry Andric }
26490b57cec5SDimitry Andric 
26505ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
26515ffd83dbSDimitry Andric vec_cmplt(__vector unsigned short __a, __vector unsigned short __b) {
26525ffd83dbSDimitry Andric   return (__vector __bool short)(__a < __b);
26530b57cec5SDimitry Andric }
26540b57cec5SDimitry Andric 
26555ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
26565ffd83dbSDimitry Andric vec_cmplt(__vector signed int __a, __vector signed int __b) {
26575ffd83dbSDimitry Andric   return (__vector __bool int)(__a < __b);
26580b57cec5SDimitry Andric }
26590b57cec5SDimitry Andric 
26605ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
26615ffd83dbSDimitry Andric vec_cmplt(__vector unsigned int __a, __vector unsigned int __b) {
26625ffd83dbSDimitry Andric   return (__vector __bool int)(__a < __b);
26630b57cec5SDimitry Andric }
26640b57cec5SDimitry Andric 
26655ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
26665ffd83dbSDimitry Andric vec_cmplt(__vector signed long long __a, __vector signed long long __b) {
26675ffd83dbSDimitry Andric   return (__vector __bool long long)(__a < __b);
26680b57cec5SDimitry Andric }
26690b57cec5SDimitry Andric 
26705ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
26715ffd83dbSDimitry Andric vec_cmplt(__vector unsigned long long __a, __vector unsigned long long __b) {
26725ffd83dbSDimitry Andric   return (__vector __bool long long)(__a < __b);
26730b57cec5SDimitry Andric }
26740b57cec5SDimitry Andric 
26750b57cec5SDimitry Andric #if __ARCH__ >= 12
26765ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
26775ffd83dbSDimitry Andric vec_cmplt(__vector float __a, __vector float __b) {
26785ffd83dbSDimitry Andric   return (__vector __bool int)(__a < __b);
26790b57cec5SDimitry Andric }
26800b57cec5SDimitry Andric #endif
26810b57cec5SDimitry Andric 
26825ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
26835ffd83dbSDimitry Andric vec_cmplt(__vector double __a, __vector double __b) {
26845ffd83dbSDimitry Andric   return (__vector __bool long long)(__a < __b);
26850b57cec5SDimitry Andric }
26860b57cec5SDimitry Andric 
26870b57cec5SDimitry Andric /*-- vec_all_eq -------------------------------------------------------------*/
26880b57cec5SDimitry Andric 
26890b57cec5SDimitry Andric static inline __ATTRS_o_ai int
26905ffd83dbSDimitry Andric vec_all_eq(__vector signed char __a, __vector signed char __b) {
26910b57cec5SDimitry Andric   int __cc;
26920b57cec5SDimitry Andric   __builtin_s390_vceqbs(__a, __b, &__cc);
26930b57cec5SDimitry Andric   return __cc == 0;
26940b57cec5SDimitry Andric }
26950b57cec5SDimitry Andric 
26960b57cec5SDimitry Andric // This prototype is deprecated.
26970b57cec5SDimitry Andric static inline __ATTRS_o_ai int
26985ffd83dbSDimitry Andric vec_all_eq(__vector signed char __a, __vector __bool char __b) {
26990b57cec5SDimitry Andric   int __cc;
27005ffd83dbSDimitry Andric   __builtin_s390_vceqbs(__a, (__vector signed char)__b, &__cc);
27010b57cec5SDimitry Andric   return __cc == 0;
27020b57cec5SDimitry Andric }
27030b57cec5SDimitry Andric 
27040b57cec5SDimitry Andric // This prototype is deprecated.
27050b57cec5SDimitry Andric static inline __ATTRS_o_ai int
27065ffd83dbSDimitry Andric vec_all_eq(__vector __bool char __a, __vector signed char __b) {
27070b57cec5SDimitry Andric   int __cc;
27085ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a, __b, &__cc);
27090b57cec5SDimitry Andric   return __cc == 0;
27100b57cec5SDimitry Andric }
27110b57cec5SDimitry Andric 
27120b57cec5SDimitry Andric static inline __ATTRS_o_ai int
27135ffd83dbSDimitry Andric vec_all_eq(__vector unsigned char __a, __vector unsigned char __b) {
27140b57cec5SDimitry Andric   int __cc;
27155ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a,
27165ffd83dbSDimitry Andric                         (__vector signed char)__b, &__cc);
27170b57cec5SDimitry Andric   return __cc == 0;
27180b57cec5SDimitry Andric }
27190b57cec5SDimitry Andric 
27200b57cec5SDimitry Andric // This prototype is deprecated.
27210b57cec5SDimitry Andric static inline __ATTRS_o_ai int
27225ffd83dbSDimitry Andric vec_all_eq(__vector unsigned char __a, __vector __bool char __b) {
27230b57cec5SDimitry Andric   int __cc;
27245ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a,
27255ffd83dbSDimitry Andric                         (__vector signed char)__b, &__cc);
27260b57cec5SDimitry Andric   return __cc == 0;
27270b57cec5SDimitry Andric }
27280b57cec5SDimitry Andric 
27290b57cec5SDimitry Andric // This prototype is deprecated.
27300b57cec5SDimitry Andric static inline __ATTRS_o_ai int
27315ffd83dbSDimitry Andric vec_all_eq(__vector __bool char __a, __vector unsigned char __b) {
27320b57cec5SDimitry Andric   int __cc;
27335ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a,
27345ffd83dbSDimitry Andric                         (__vector signed char)__b, &__cc);
27350b57cec5SDimitry Andric   return __cc == 0;
27360b57cec5SDimitry Andric }
27370b57cec5SDimitry Andric 
27380b57cec5SDimitry Andric static inline __ATTRS_o_ai int
27395ffd83dbSDimitry Andric vec_all_eq(__vector __bool char __a, __vector __bool char __b) {
27400b57cec5SDimitry Andric   int __cc;
27415ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a,
27425ffd83dbSDimitry Andric                         (__vector signed char)__b, &__cc);
27430b57cec5SDimitry Andric   return __cc == 0;
27440b57cec5SDimitry Andric }
27450b57cec5SDimitry Andric 
27460b57cec5SDimitry Andric static inline __ATTRS_o_ai int
27475ffd83dbSDimitry Andric vec_all_eq(__vector signed short __a, __vector signed short __b) {
27480b57cec5SDimitry Andric   int __cc;
27490b57cec5SDimitry Andric   __builtin_s390_vceqhs(__a, __b, &__cc);
27500b57cec5SDimitry Andric   return __cc == 0;
27510b57cec5SDimitry Andric }
27520b57cec5SDimitry Andric 
27530b57cec5SDimitry Andric // This prototype is deprecated.
27540b57cec5SDimitry Andric static inline __ATTRS_o_ai int
27555ffd83dbSDimitry Andric vec_all_eq(__vector signed short __a, __vector __bool short __b) {
27560b57cec5SDimitry Andric   int __cc;
27575ffd83dbSDimitry Andric   __builtin_s390_vceqhs(__a, (__vector signed short)__b, &__cc);
27580b57cec5SDimitry Andric   return __cc == 0;
27590b57cec5SDimitry Andric }
27600b57cec5SDimitry Andric 
27610b57cec5SDimitry Andric // This prototype is deprecated.
27620b57cec5SDimitry Andric static inline __ATTRS_o_ai int
27635ffd83dbSDimitry Andric vec_all_eq(__vector __bool short __a, __vector signed short __b) {
27640b57cec5SDimitry Andric   int __cc;
27655ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a, __b, &__cc);
27660b57cec5SDimitry Andric   return __cc == 0;
27670b57cec5SDimitry Andric }
27680b57cec5SDimitry Andric 
27690b57cec5SDimitry Andric static inline __ATTRS_o_ai int
27705ffd83dbSDimitry Andric vec_all_eq(__vector unsigned short __a, __vector unsigned short __b) {
27710b57cec5SDimitry Andric   int __cc;
27725ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a,
27735ffd83dbSDimitry Andric                         (__vector signed short)__b, &__cc);
27740b57cec5SDimitry Andric   return __cc == 0;
27750b57cec5SDimitry Andric }
27760b57cec5SDimitry Andric 
27770b57cec5SDimitry Andric // This prototype is deprecated.
27780b57cec5SDimitry Andric static inline __ATTRS_o_ai int
27795ffd83dbSDimitry Andric vec_all_eq(__vector unsigned short __a, __vector __bool short __b) {
27800b57cec5SDimitry Andric   int __cc;
27815ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a,
27825ffd83dbSDimitry Andric                         (__vector signed short)__b, &__cc);
27830b57cec5SDimitry Andric   return __cc == 0;
27840b57cec5SDimitry Andric }
27850b57cec5SDimitry Andric 
27860b57cec5SDimitry Andric // This prototype is deprecated.
27870b57cec5SDimitry Andric static inline __ATTRS_o_ai int
27885ffd83dbSDimitry Andric vec_all_eq(__vector __bool short __a, __vector unsigned short __b) {
27890b57cec5SDimitry Andric   int __cc;
27905ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a,
27915ffd83dbSDimitry Andric                         (__vector signed short)__b, &__cc);
27920b57cec5SDimitry Andric   return __cc == 0;
27930b57cec5SDimitry Andric }
27940b57cec5SDimitry Andric 
27950b57cec5SDimitry Andric static inline __ATTRS_o_ai int
27965ffd83dbSDimitry Andric vec_all_eq(__vector __bool short __a, __vector __bool short __b) {
27970b57cec5SDimitry Andric   int __cc;
27985ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a,
27995ffd83dbSDimitry Andric                         (__vector signed short)__b, &__cc);
28000b57cec5SDimitry Andric   return __cc == 0;
28010b57cec5SDimitry Andric }
28020b57cec5SDimitry Andric 
28030b57cec5SDimitry Andric static inline __ATTRS_o_ai int
28045ffd83dbSDimitry Andric vec_all_eq(__vector signed int __a, __vector signed int __b) {
28050b57cec5SDimitry Andric   int __cc;
28060b57cec5SDimitry Andric   __builtin_s390_vceqfs(__a, __b, &__cc);
28070b57cec5SDimitry Andric   return __cc == 0;
28080b57cec5SDimitry Andric }
28090b57cec5SDimitry Andric 
28100b57cec5SDimitry Andric // This prototype is deprecated.
28110b57cec5SDimitry Andric static inline __ATTRS_o_ai int
28125ffd83dbSDimitry Andric vec_all_eq(__vector signed int __a, __vector __bool int __b) {
28130b57cec5SDimitry Andric   int __cc;
28145ffd83dbSDimitry Andric   __builtin_s390_vceqfs(__a, (__vector signed int)__b, &__cc);
28150b57cec5SDimitry Andric   return __cc == 0;
28160b57cec5SDimitry Andric }
28170b57cec5SDimitry Andric 
28180b57cec5SDimitry Andric // This prototype is deprecated.
28190b57cec5SDimitry Andric static inline __ATTRS_o_ai int
28205ffd83dbSDimitry Andric vec_all_eq(__vector __bool int __a, __vector signed int __b) {
28210b57cec5SDimitry Andric   int __cc;
28225ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a, __b, &__cc);
28230b57cec5SDimitry Andric   return __cc == 0;
28240b57cec5SDimitry Andric }
28250b57cec5SDimitry Andric 
28260b57cec5SDimitry Andric static inline __ATTRS_o_ai int
28275ffd83dbSDimitry Andric vec_all_eq(__vector unsigned int __a, __vector unsigned int __b) {
28280b57cec5SDimitry Andric   int __cc;
28295ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a,
28305ffd83dbSDimitry Andric                         (__vector signed int)__b, &__cc);
28310b57cec5SDimitry Andric   return __cc == 0;
28320b57cec5SDimitry Andric }
28330b57cec5SDimitry Andric 
28340b57cec5SDimitry Andric // This prototype is deprecated.
28350b57cec5SDimitry Andric static inline __ATTRS_o_ai int
28365ffd83dbSDimitry Andric vec_all_eq(__vector unsigned int __a, __vector __bool int __b) {
28370b57cec5SDimitry Andric   int __cc;
28385ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a,
28395ffd83dbSDimitry Andric                         (__vector signed int)__b, &__cc);
28400b57cec5SDimitry Andric   return __cc == 0;
28410b57cec5SDimitry Andric }
28420b57cec5SDimitry Andric 
28430b57cec5SDimitry Andric // This prototype is deprecated.
28440b57cec5SDimitry Andric static inline __ATTRS_o_ai int
28455ffd83dbSDimitry Andric vec_all_eq(__vector __bool int __a, __vector unsigned int __b) {
28460b57cec5SDimitry Andric   int __cc;
28475ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a,
28485ffd83dbSDimitry Andric                         (__vector signed int)__b, &__cc);
28490b57cec5SDimitry Andric   return __cc == 0;
28500b57cec5SDimitry Andric }
28510b57cec5SDimitry Andric 
28520b57cec5SDimitry Andric static inline __ATTRS_o_ai int
28535ffd83dbSDimitry Andric vec_all_eq(__vector __bool int __a, __vector __bool int __b) {
28540b57cec5SDimitry Andric   int __cc;
28555ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a,
28565ffd83dbSDimitry Andric                         (__vector signed int)__b, &__cc);
28570b57cec5SDimitry Andric   return __cc == 0;
28580b57cec5SDimitry Andric }
28590b57cec5SDimitry Andric 
28600b57cec5SDimitry Andric static inline __ATTRS_o_ai int
28615ffd83dbSDimitry Andric vec_all_eq(__vector signed long long __a, __vector signed long long __b) {
28620b57cec5SDimitry Andric   int __cc;
28630b57cec5SDimitry Andric   __builtin_s390_vceqgs(__a, __b, &__cc);
28640b57cec5SDimitry Andric   return __cc == 0;
28650b57cec5SDimitry Andric }
28660b57cec5SDimitry Andric 
28670b57cec5SDimitry Andric // This prototype is deprecated.
28680b57cec5SDimitry Andric static inline __ATTRS_o_ai int
28695ffd83dbSDimitry Andric vec_all_eq(__vector signed long long __a, __vector __bool long long __b) {
28700b57cec5SDimitry Andric   int __cc;
28715ffd83dbSDimitry Andric   __builtin_s390_vceqgs(__a, (__vector signed long long)__b, &__cc);
28720b57cec5SDimitry Andric   return __cc == 0;
28730b57cec5SDimitry Andric }
28740b57cec5SDimitry Andric 
28750b57cec5SDimitry Andric // This prototype is deprecated.
28760b57cec5SDimitry Andric static inline __ATTRS_o_ai int
28775ffd83dbSDimitry Andric vec_all_eq(__vector __bool long long __a, __vector signed long long __b) {
28780b57cec5SDimitry Andric   int __cc;
28795ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a, __b, &__cc);
28800b57cec5SDimitry Andric   return __cc == 0;
28810b57cec5SDimitry Andric }
28820b57cec5SDimitry Andric 
28830b57cec5SDimitry Andric static inline __ATTRS_o_ai int
28845ffd83dbSDimitry Andric vec_all_eq(__vector unsigned long long __a, __vector unsigned long long __b) {
28850b57cec5SDimitry Andric   int __cc;
28865ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a,
28875ffd83dbSDimitry Andric                         (__vector signed long long)__b, &__cc);
28880b57cec5SDimitry Andric   return __cc == 0;
28890b57cec5SDimitry Andric }
28900b57cec5SDimitry Andric 
28910b57cec5SDimitry Andric // This prototype is deprecated.
28920b57cec5SDimitry Andric static inline __ATTRS_o_ai int
28935ffd83dbSDimitry Andric vec_all_eq(__vector unsigned long long __a, __vector __bool long long __b) {
28940b57cec5SDimitry Andric   int __cc;
28955ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a,
28965ffd83dbSDimitry Andric                         (__vector signed long long)__b, &__cc);
28970b57cec5SDimitry Andric   return __cc == 0;
28980b57cec5SDimitry Andric }
28990b57cec5SDimitry Andric 
29000b57cec5SDimitry Andric // This prototype is deprecated.
29010b57cec5SDimitry Andric static inline __ATTRS_o_ai int
29025ffd83dbSDimitry Andric vec_all_eq(__vector __bool long long __a, __vector unsigned long long __b) {
29030b57cec5SDimitry Andric   int __cc;
29045ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a,
29055ffd83dbSDimitry Andric                         (__vector signed long long)__b, &__cc);
29060b57cec5SDimitry Andric   return __cc == 0;
29070b57cec5SDimitry Andric }
29080b57cec5SDimitry Andric 
29090b57cec5SDimitry Andric static inline __ATTRS_o_ai int
29105ffd83dbSDimitry Andric vec_all_eq(__vector __bool long long __a, __vector __bool long long __b) {
29110b57cec5SDimitry Andric   int __cc;
29125ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a,
29135ffd83dbSDimitry Andric                         (__vector signed long long)__b, &__cc);
29140b57cec5SDimitry Andric   return __cc == 0;
29150b57cec5SDimitry Andric }
29160b57cec5SDimitry Andric 
29170b57cec5SDimitry Andric #if __ARCH__ >= 12
29180b57cec5SDimitry Andric static inline __ATTRS_o_ai int
29195ffd83dbSDimitry Andric vec_all_eq(__vector float __a, __vector float __b) {
29200b57cec5SDimitry Andric   int __cc;
29210b57cec5SDimitry Andric   __builtin_s390_vfcesbs(__a, __b, &__cc);
29220b57cec5SDimitry Andric   return __cc == 0;
29230b57cec5SDimitry Andric }
29240b57cec5SDimitry Andric #endif
29250b57cec5SDimitry Andric 
29260b57cec5SDimitry Andric static inline __ATTRS_o_ai int
29275ffd83dbSDimitry Andric vec_all_eq(__vector double __a, __vector double __b) {
29280b57cec5SDimitry Andric   int __cc;
29290b57cec5SDimitry Andric   __builtin_s390_vfcedbs(__a, __b, &__cc);
29300b57cec5SDimitry Andric   return __cc == 0;
29310b57cec5SDimitry Andric }
29320b57cec5SDimitry Andric 
29330b57cec5SDimitry Andric /*-- vec_all_ne -------------------------------------------------------------*/
29340b57cec5SDimitry Andric 
29350b57cec5SDimitry Andric static inline __ATTRS_o_ai int
29365ffd83dbSDimitry Andric vec_all_ne(__vector signed char __a, __vector signed char __b) {
29370b57cec5SDimitry Andric   int __cc;
29380b57cec5SDimitry Andric   __builtin_s390_vceqbs(__a, __b, &__cc);
29390b57cec5SDimitry Andric   return __cc == 3;
29400b57cec5SDimitry Andric }
29410b57cec5SDimitry Andric 
29420b57cec5SDimitry Andric // This prototype is deprecated.
29430b57cec5SDimitry Andric static inline __ATTRS_o_ai int
29445ffd83dbSDimitry Andric vec_all_ne(__vector signed char __a, __vector __bool char __b) {
29450b57cec5SDimitry Andric   int __cc;
29465ffd83dbSDimitry Andric   __builtin_s390_vceqbs(__a, (__vector signed char)__b, &__cc);
29470b57cec5SDimitry Andric   return __cc == 3;
29480b57cec5SDimitry Andric }
29490b57cec5SDimitry Andric 
29500b57cec5SDimitry Andric // This prototype is deprecated.
29510b57cec5SDimitry Andric static inline __ATTRS_o_ai int
29525ffd83dbSDimitry Andric vec_all_ne(__vector __bool char __a, __vector signed char __b) {
29530b57cec5SDimitry Andric   int __cc;
29545ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a, __b, &__cc);
29550b57cec5SDimitry Andric   return __cc == 3;
29560b57cec5SDimitry Andric }
29570b57cec5SDimitry Andric 
29580b57cec5SDimitry Andric static inline __ATTRS_o_ai int
29595ffd83dbSDimitry Andric vec_all_ne(__vector unsigned char __a, __vector unsigned char __b) {
29600b57cec5SDimitry Andric   int __cc;
29615ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a,
29625ffd83dbSDimitry Andric                         (__vector signed char)__b, &__cc);
29630b57cec5SDimitry Andric   return __cc == 3;
29640b57cec5SDimitry Andric }
29650b57cec5SDimitry Andric 
29660b57cec5SDimitry Andric // This prototype is deprecated.
29670b57cec5SDimitry Andric static inline __ATTRS_o_ai int
29685ffd83dbSDimitry Andric vec_all_ne(__vector unsigned char __a, __vector __bool char __b) {
29690b57cec5SDimitry Andric   int __cc;
29705ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a,
29715ffd83dbSDimitry Andric                         (__vector signed char)__b, &__cc);
29720b57cec5SDimitry Andric   return __cc == 3;
29730b57cec5SDimitry Andric }
29740b57cec5SDimitry Andric 
29750b57cec5SDimitry Andric // This prototype is deprecated.
29760b57cec5SDimitry Andric static inline __ATTRS_o_ai int
29775ffd83dbSDimitry Andric vec_all_ne(__vector __bool char __a, __vector unsigned char __b) {
29780b57cec5SDimitry Andric   int __cc;
29795ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a,
29805ffd83dbSDimitry Andric                         (__vector signed char)__b, &__cc);
29810b57cec5SDimitry Andric   return __cc == 3;
29820b57cec5SDimitry Andric }
29830b57cec5SDimitry Andric 
29840b57cec5SDimitry Andric static inline __ATTRS_o_ai int
29855ffd83dbSDimitry Andric vec_all_ne(__vector __bool char __a, __vector __bool char __b) {
29860b57cec5SDimitry Andric   int __cc;
29875ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a,
29885ffd83dbSDimitry Andric                         (__vector signed char)__b, &__cc);
29890b57cec5SDimitry Andric   return __cc == 3;
29900b57cec5SDimitry Andric }
29910b57cec5SDimitry Andric 
29920b57cec5SDimitry Andric static inline __ATTRS_o_ai int
29935ffd83dbSDimitry Andric vec_all_ne(__vector signed short __a, __vector signed short __b) {
29940b57cec5SDimitry Andric   int __cc;
29950b57cec5SDimitry Andric   __builtin_s390_vceqhs(__a, __b, &__cc);
29960b57cec5SDimitry Andric   return __cc == 3;
29970b57cec5SDimitry Andric }
29980b57cec5SDimitry Andric 
29990b57cec5SDimitry Andric // This prototype is deprecated.
30000b57cec5SDimitry Andric static inline __ATTRS_o_ai int
30015ffd83dbSDimitry Andric vec_all_ne(__vector signed short __a, __vector __bool short __b) {
30020b57cec5SDimitry Andric   int __cc;
30035ffd83dbSDimitry Andric   __builtin_s390_vceqhs(__a, (__vector signed short)__b, &__cc);
30040b57cec5SDimitry Andric   return __cc == 3;
30050b57cec5SDimitry Andric }
30060b57cec5SDimitry Andric 
30070b57cec5SDimitry Andric // This prototype is deprecated.
30080b57cec5SDimitry Andric static inline __ATTRS_o_ai int
30095ffd83dbSDimitry Andric vec_all_ne(__vector __bool short __a, __vector signed short __b) {
30100b57cec5SDimitry Andric   int __cc;
30115ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a, __b, &__cc);
30120b57cec5SDimitry Andric   return __cc == 3;
30130b57cec5SDimitry Andric }
30140b57cec5SDimitry Andric 
30150b57cec5SDimitry Andric static inline __ATTRS_o_ai int
30165ffd83dbSDimitry Andric vec_all_ne(__vector unsigned short __a, __vector unsigned short __b) {
30170b57cec5SDimitry Andric   int __cc;
30185ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a,
30195ffd83dbSDimitry Andric                         (__vector signed short)__b, &__cc);
30200b57cec5SDimitry Andric   return __cc == 3;
30210b57cec5SDimitry Andric }
30220b57cec5SDimitry Andric 
30230b57cec5SDimitry Andric // This prototype is deprecated.
30240b57cec5SDimitry Andric static inline __ATTRS_o_ai int
30255ffd83dbSDimitry Andric vec_all_ne(__vector unsigned short __a, __vector __bool short __b) {
30260b57cec5SDimitry Andric   int __cc;
30275ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a,
30285ffd83dbSDimitry Andric                         (__vector signed short)__b, &__cc);
30290b57cec5SDimitry Andric   return __cc == 3;
30300b57cec5SDimitry Andric }
30310b57cec5SDimitry Andric 
30320b57cec5SDimitry Andric // This prototype is deprecated.
30330b57cec5SDimitry Andric static inline __ATTRS_o_ai int
30345ffd83dbSDimitry Andric vec_all_ne(__vector __bool short __a, __vector unsigned short __b) {
30350b57cec5SDimitry Andric   int __cc;
30365ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a,
30375ffd83dbSDimitry Andric                         (__vector signed short)__b, &__cc);
30380b57cec5SDimitry Andric   return __cc == 3;
30390b57cec5SDimitry Andric }
30400b57cec5SDimitry Andric 
30410b57cec5SDimitry Andric static inline __ATTRS_o_ai int
30425ffd83dbSDimitry Andric vec_all_ne(__vector __bool short __a, __vector __bool short __b) {
30430b57cec5SDimitry Andric   int __cc;
30445ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a,
30455ffd83dbSDimitry Andric                         (__vector signed short)__b, &__cc);
30460b57cec5SDimitry Andric   return __cc == 3;
30470b57cec5SDimitry Andric }
30480b57cec5SDimitry Andric 
30490b57cec5SDimitry Andric static inline __ATTRS_o_ai int
30505ffd83dbSDimitry Andric vec_all_ne(__vector signed int __a, __vector signed int __b) {
30510b57cec5SDimitry Andric   int __cc;
30520b57cec5SDimitry Andric   __builtin_s390_vceqfs(__a, __b, &__cc);
30530b57cec5SDimitry Andric   return __cc == 3;
30540b57cec5SDimitry Andric }
30550b57cec5SDimitry Andric 
30560b57cec5SDimitry Andric // This prototype is deprecated.
30570b57cec5SDimitry Andric static inline __ATTRS_o_ai int
30585ffd83dbSDimitry Andric vec_all_ne(__vector signed int __a, __vector __bool int __b) {
30590b57cec5SDimitry Andric   int __cc;
30605ffd83dbSDimitry Andric   __builtin_s390_vceqfs(__a, (__vector signed int)__b, &__cc);
30610b57cec5SDimitry Andric   return __cc == 3;
30620b57cec5SDimitry Andric }
30630b57cec5SDimitry Andric 
30640b57cec5SDimitry Andric // This prototype is deprecated.
30650b57cec5SDimitry Andric static inline __ATTRS_o_ai int
30665ffd83dbSDimitry Andric vec_all_ne(__vector __bool int __a, __vector signed int __b) {
30670b57cec5SDimitry Andric   int __cc;
30685ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a, __b, &__cc);
30690b57cec5SDimitry Andric   return __cc == 3;
30700b57cec5SDimitry Andric }
30710b57cec5SDimitry Andric 
30720b57cec5SDimitry Andric static inline __ATTRS_o_ai int
30735ffd83dbSDimitry Andric vec_all_ne(__vector unsigned int __a, __vector unsigned int __b) {
30740b57cec5SDimitry Andric   int __cc;
30755ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a,
30765ffd83dbSDimitry Andric                         (__vector signed int)__b, &__cc);
30770b57cec5SDimitry Andric   return __cc == 3;
30780b57cec5SDimitry Andric }
30790b57cec5SDimitry Andric 
30800b57cec5SDimitry Andric // This prototype is deprecated.
30810b57cec5SDimitry Andric static inline __ATTRS_o_ai int
30825ffd83dbSDimitry Andric vec_all_ne(__vector unsigned int __a, __vector __bool int __b) {
30830b57cec5SDimitry Andric   int __cc;
30845ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a,
30855ffd83dbSDimitry Andric                         (__vector signed int)__b, &__cc);
30860b57cec5SDimitry Andric   return __cc == 3;
30870b57cec5SDimitry Andric }
30880b57cec5SDimitry Andric 
30890b57cec5SDimitry Andric // This prototype is deprecated.
30900b57cec5SDimitry Andric static inline __ATTRS_o_ai int
30915ffd83dbSDimitry Andric vec_all_ne(__vector __bool int __a, __vector unsigned int __b) {
30920b57cec5SDimitry Andric   int __cc;
30935ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a,
30945ffd83dbSDimitry Andric                         (__vector signed int)__b, &__cc);
30950b57cec5SDimitry Andric   return __cc == 3;
30960b57cec5SDimitry Andric }
30970b57cec5SDimitry Andric 
30980b57cec5SDimitry Andric static inline __ATTRS_o_ai int
30995ffd83dbSDimitry Andric vec_all_ne(__vector __bool int __a, __vector __bool int __b) {
31000b57cec5SDimitry Andric   int __cc;
31015ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a,
31025ffd83dbSDimitry Andric                         (__vector signed int)__b, &__cc);
31030b57cec5SDimitry Andric   return __cc == 3;
31040b57cec5SDimitry Andric }
31050b57cec5SDimitry Andric 
31060b57cec5SDimitry Andric static inline __ATTRS_o_ai int
31075ffd83dbSDimitry Andric vec_all_ne(__vector signed long long __a, __vector signed long long __b) {
31080b57cec5SDimitry Andric   int __cc;
31090b57cec5SDimitry Andric   __builtin_s390_vceqgs(__a, __b, &__cc);
31100b57cec5SDimitry Andric   return __cc == 3;
31110b57cec5SDimitry Andric }
31120b57cec5SDimitry Andric 
31130b57cec5SDimitry Andric // This prototype is deprecated.
31140b57cec5SDimitry Andric static inline __ATTRS_o_ai int
31155ffd83dbSDimitry Andric vec_all_ne(__vector signed long long __a, __vector __bool long long __b) {
31160b57cec5SDimitry Andric   int __cc;
31175ffd83dbSDimitry Andric   __builtin_s390_vceqgs(__a, (__vector signed long long)__b, &__cc);
31180b57cec5SDimitry Andric   return __cc == 3;
31190b57cec5SDimitry Andric }
31200b57cec5SDimitry Andric 
31210b57cec5SDimitry Andric // This prototype is deprecated.
31220b57cec5SDimitry Andric static inline __ATTRS_o_ai int
31235ffd83dbSDimitry Andric vec_all_ne(__vector __bool long long __a, __vector signed long long __b) {
31240b57cec5SDimitry Andric   int __cc;
31255ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a, __b, &__cc);
31260b57cec5SDimitry Andric   return __cc == 3;
31270b57cec5SDimitry Andric }
31280b57cec5SDimitry Andric 
31290b57cec5SDimitry Andric static inline __ATTRS_o_ai int
31305ffd83dbSDimitry Andric vec_all_ne(__vector unsigned long long __a, __vector unsigned long long __b) {
31310b57cec5SDimitry Andric   int __cc;
31325ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a,
31335ffd83dbSDimitry Andric                         (__vector signed long long)__b, &__cc);
31340b57cec5SDimitry Andric   return __cc == 3;
31350b57cec5SDimitry Andric }
31360b57cec5SDimitry Andric 
31370b57cec5SDimitry Andric // This prototype is deprecated.
31380b57cec5SDimitry Andric static inline __ATTRS_o_ai int
31395ffd83dbSDimitry Andric vec_all_ne(__vector unsigned long long __a, __vector __bool long long __b) {
31400b57cec5SDimitry Andric   int __cc;
31415ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a,
31425ffd83dbSDimitry Andric                         (__vector signed long long)__b, &__cc);
31430b57cec5SDimitry Andric   return __cc == 3;
31440b57cec5SDimitry Andric }
31450b57cec5SDimitry Andric 
31460b57cec5SDimitry Andric // This prototype is deprecated.
31470b57cec5SDimitry Andric static inline __ATTRS_o_ai int
31485ffd83dbSDimitry Andric vec_all_ne(__vector __bool long long __a, __vector unsigned long long __b) {
31490b57cec5SDimitry Andric   int __cc;
31505ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a,
31515ffd83dbSDimitry Andric                         (__vector signed long long)__b, &__cc);
31520b57cec5SDimitry Andric   return __cc == 3;
31530b57cec5SDimitry Andric }
31540b57cec5SDimitry Andric 
31550b57cec5SDimitry Andric static inline __ATTRS_o_ai int
31565ffd83dbSDimitry Andric vec_all_ne(__vector __bool long long __a, __vector __bool long long __b) {
31570b57cec5SDimitry Andric   int __cc;
31585ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a,
31595ffd83dbSDimitry Andric                         (__vector signed long long)__b, &__cc);
31600b57cec5SDimitry Andric   return __cc == 3;
31610b57cec5SDimitry Andric }
31620b57cec5SDimitry Andric 
31630b57cec5SDimitry Andric #if __ARCH__ >= 12
31640b57cec5SDimitry Andric static inline __ATTRS_o_ai int
31655ffd83dbSDimitry Andric vec_all_ne(__vector float __a, __vector float __b) {
31660b57cec5SDimitry Andric   int __cc;
31670b57cec5SDimitry Andric   __builtin_s390_vfcesbs(__a, __b, &__cc);
31680b57cec5SDimitry Andric   return __cc == 3;
31690b57cec5SDimitry Andric }
31700b57cec5SDimitry Andric #endif
31710b57cec5SDimitry Andric 
31720b57cec5SDimitry Andric static inline __ATTRS_o_ai int
31735ffd83dbSDimitry Andric vec_all_ne(__vector double __a, __vector double __b) {
31740b57cec5SDimitry Andric   int __cc;
31750b57cec5SDimitry Andric   __builtin_s390_vfcedbs(__a, __b, &__cc);
31760b57cec5SDimitry Andric   return __cc == 3;
31770b57cec5SDimitry Andric }
31780b57cec5SDimitry Andric 
31790b57cec5SDimitry Andric /*-- vec_all_ge -------------------------------------------------------------*/
31800b57cec5SDimitry Andric 
31810b57cec5SDimitry Andric static inline __ATTRS_o_ai int
31825ffd83dbSDimitry Andric vec_all_ge(__vector signed char __a, __vector signed char __b) {
31830b57cec5SDimitry Andric   int __cc;
31840b57cec5SDimitry Andric   __builtin_s390_vchbs(__b, __a, &__cc);
31850b57cec5SDimitry Andric   return __cc == 3;
31860b57cec5SDimitry Andric }
31870b57cec5SDimitry Andric 
31880b57cec5SDimitry Andric // This prototype is deprecated.
31890b57cec5SDimitry Andric static inline __ATTRS_o_ai int
31905ffd83dbSDimitry Andric vec_all_ge(__vector signed char __a, __vector __bool char __b) {
31910b57cec5SDimitry Andric   int __cc;
31925ffd83dbSDimitry Andric   __builtin_s390_vchbs((__vector signed char)__b, __a, &__cc);
31930b57cec5SDimitry Andric   return __cc == 3;
31940b57cec5SDimitry Andric }
31950b57cec5SDimitry Andric 
31960b57cec5SDimitry Andric // This prototype is deprecated.
31970b57cec5SDimitry Andric static inline __ATTRS_o_ai int
31985ffd83dbSDimitry Andric vec_all_ge(__vector __bool char __a, __vector signed char __b) {
31990b57cec5SDimitry Andric   int __cc;
32005ffd83dbSDimitry Andric   __builtin_s390_vchbs(__b, (__vector signed char)__a, &__cc);
32010b57cec5SDimitry Andric   return __cc == 3;
32020b57cec5SDimitry Andric }
32030b57cec5SDimitry Andric 
32040b57cec5SDimitry Andric static inline __ATTRS_o_ai int
32055ffd83dbSDimitry Andric vec_all_ge(__vector unsigned char __a, __vector unsigned char __b) {
32060b57cec5SDimitry Andric   int __cc;
32070b57cec5SDimitry Andric   __builtin_s390_vchlbs(__b, __a, &__cc);
32080b57cec5SDimitry Andric   return __cc == 3;
32090b57cec5SDimitry Andric }
32100b57cec5SDimitry Andric 
32110b57cec5SDimitry Andric // This prototype is deprecated.
32120b57cec5SDimitry Andric static inline __ATTRS_o_ai int
32135ffd83dbSDimitry Andric vec_all_ge(__vector unsigned char __a, __vector __bool char __b) {
32140b57cec5SDimitry Andric   int __cc;
32155ffd83dbSDimitry Andric   __builtin_s390_vchlbs((__vector unsigned char)__b, __a, &__cc);
32160b57cec5SDimitry Andric   return __cc == 3;
32170b57cec5SDimitry Andric }
32180b57cec5SDimitry Andric 
32190b57cec5SDimitry Andric // This prototype is deprecated.
32200b57cec5SDimitry Andric static inline __ATTRS_o_ai int
32215ffd83dbSDimitry Andric vec_all_ge(__vector __bool char __a, __vector unsigned char __b) {
32220b57cec5SDimitry Andric   int __cc;
32235ffd83dbSDimitry Andric   __builtin_s390_vchlbs(__b, (__vector unsigned char)__a, &__cc);
32240b57cec5SDimitry Andric   return __cc == 3;
32250b57cec5SDimitry Andric }
32260b57cec5SDimitry Andric 
32270b57cec5SDimitry Andric // This prototype is deprecated.
32280b57cec5SDimitry Andric static inline __ATTRS_o_ai int
32295ffd83dbSDimitry Andric vec_all_ge(__vector __bool char __a, __vector __bool char __b) {
32300b57cec5SDimitry Andric   int __cc;
32315ffd83dbSDimitry Andric   __builtin_s390_vchlbs((__vector unsigned char)__b,
32325ffd83dbSDimitry Andric                         (__vector unsigned char)__a, &__cc);
32330b57cec5SDimitry Andric   return __cc == 3;
32340b57cec5SDimitry Andric }
32350b57cec5SDimitry Andric 
32360b57cec5SDimitry Andric static inline __ATTRS_o_ai int
32375ffd83dbSDimitry Andric vec_all_ge(__vector signed short __a, __vector signed short __b) {
32380b57cec5SDimitry Andric   int __cc;
32390b57cec5SDimitry Andric   __builtin_s390_vchhs(__b, __a, &__cc);
32400b57cec5SDimitry Andric   return __cc == 3;
32410b57cec5SDimitry Andric }
32420b57cec5SDimitry Andric 
32430b57cec5SDimitry Andric // This prototype is deprecated.
32440b57cec5SDimitry Andric static inline __ATTRS_o_ai int
32455ffd83dbSDimitry Andric vec_all_ge(__vector signed short __a, __vector __bool short __b) {
32460b57cec5SDimitry Andric   int __cc;
32475ffd83dbSDimitry Andric   __builtin_s390_vchhs((__vector signed short)__b, __a, &__cc);
32480b57cec5SDimitry Andric   return __cc == 3;
32490b57cec5SDimitry Andric }
32500b57cec5SDimitry Andric 
32510b57cec5SDimitry Andric // This prototype is deprecated.
32520b57cec5SDimitry Andric static inline __ATTRS_o_ai int
32535ffd83dbSDimitry Andric vec_all_ge(__vector __bool short __a, __vector signed short __b) {
32540b57cec5SDimitry Andric   int __cc;
32555ffd83dbSDimitry Andric   __builtin_s390_vchhs(__b, (__vector signed short)__a, &__cc);
32560b57cec5SDimitry Andric   return __cc == 3;
32570b57cec5SDimitry Andric }
32580b57cec5SDimitry Andric 
32590b57cec5SDimitry Andric static inline __ATTRS_o_ai int
32605ffd83dbSDimitry Andric vec_all_ge(__vector unsigned short __a, __vector unsigned short __b) {
32610b57cec5SDimitry Andric   int __cc;
32620b57cec5SDimitry Andric   __builtin_s390_vchlhs(__b, __a, &__cc);
32630b57cec5SDimitry Andric   return __cc == 3;
32640b57cec5SDimitry Andric }
32650b57cec5SDimitry Andric 
32660b57cec5SDimitry Andric // This prototype is deprecated.
32670b57cec5SDimitry Andric static inline __ATTRS_o_ai int
32685ffd83dbSDimitry Andric vec_all_ge(__vector unsigned short __a, __vector __bool short __b) {
32690b57cec5SDimitry Andric   int __cc;
32705ffd83dbSDimitry Andric   __builtin_s390_vchlhs((__vector unsigned short)__b, __a, &__cc);
32710b57cec5SDimitry Andric   return __cc == 3;
32720b57cec5SDimitry Andric }
32730b57cec5SDimitry Andric 
32740b57cec5SDimitry Andric // This prototype is deprecated.
32750b57cec5SDimitry Andric static inline __ATTRS_o_ai int
32765ffd83dbSDimitry Andric vec_all_ge(__vector __bool short __a, __vector unsigned short __b) {
32770b57cec5SDimitry Andric   int __cc;
32785ffd83dbSDimitry Andric   __builtin_s390_vchlhs(__b, (__vector unsigned short)__a, &__cc);
32790b57cec5SDimitry Andric   return __cc == 3;
32800b57cec5SDimitry Andric }
32810b57cec5SDimitry Andric 
32820b57cec5SDimitry Andric // This prototype is deprecated.
32830b57cec5SDimitry Andric static inline __ATTRS_o_ai int
32845ffd83dbSDimitry Andric vec_all_ge(__vector __bool short __a, __vector __bool short __b) {
32850b57cec5SDimitry Andric   int __cc;
32865ffd83dbSDimitry Andric   __builtin_s390_vchlhs((__vector unsigned short)__b,
32875ffd83dbSDimitry Andric                         (__vector unsigned short)__a, &__cc);
32880b57cec5SDimitry Andric   return __cc == 3;
32890b57cec5SDimitry Andric }
32900b57cec5SDimitry Andric 
32910b57cec5SDimitry Andric static inline __ATTRS_o_ai int
32925ffd83dbSDimitry Andric vec_all_ge(__vector signed int __a, __vector signed int __b) {
32930b57cec5SDimitry Andric   int __cc;
32940b57cec5SDimitry Andric   __builtin_s390_vchfs(__b, __a, &__cc);
32950b57cec5SDimitry Andric   return __cc == 3;
32960b57cec5SDimitry Andric }
32970b57cec5SDimitry Andric 
32980b57cec5SDimitry Andric // This prototype is deprecated.
32990b57cec5SDimitry Andric static inline __ATTRS_o_ai int
33005ffd83dbSDimitry Andric vec_all_ge(__vector signed int __a, __vector __bool int __b) {
33010b57cec5SDimitry Andric   int __cc;
33025ffd83dbSDimitry Andric   __builtin_s390_vchfs((__vector signed int)__b, __a, &__cc);
33030b57cec5SDimitry Andric   return __cc == 3;
33040b57cec5SDimitry Andric }
33050b57cec5SDimitry Andric 
33060b57cec5SDimitry Andric // This prototype is deprecated.
33070b57cec5SDimitry Andric static inline __ATTRS_o_ai int
33085ffd83dbSDimitry Andric vec_all_ge(__vector __bool int __a, __vector signed int __b) {
33090b57cec5SDimitry Andric   int __cc;
33105ffd83dbSDimitry Andric   __builtin_s390_vchfs(__b, (__vector signed int)__a, &__cc);
33110b57cec5SDimitry Andric   return __cc == 3;
33120b57cec5SDimitry Andric }
33130b57cec5SDimitry Andric 
33140b57cec5SDimitry Andric static inline __ATTRS_o_ai int
33155ffd83dbSDimitry Andric vec_all_ge(__vector unsigned int __a, __vector unsigned int __b) {
33160b57cec5SDimitry Andric   int __cc;
33170b57cec5SDimitry Andric   __builtin_s390_vchlfs(__b, __a, &__cc);
33180b57cec5SDimitry Andric   return __cc == 3;
33190b57cec5SDimitry Andric }
33200b57cec5SDimitry Andric 
33210b57cec5SDimitry Andric // This prototype is deprecated.
33220b57cec5SDimitry Andric static inline __ATTRS_o_ai int
33235ffd83dbSDimitry Andric vec_all_ge(__vector unsigned int __a, __vector __bool int __b) {
33240b57cec5SDimitry Andric   int __cc;
33255ffd83dbSDimitry Andric   __builtin_s390_vchlfs((__vector unsigned int)__b, __a, &__cc);
33260b57cec5SDimitry Andric   return __cc == 3;
33270b57cec5SDimitry Andric }
33280b57cec5SDimitry Andric 
33290b57cec5SDimitry Andric // This prototype is deprecated.
33300b57cec5SDimitry Andric static inline __ATTRS_o_ai int
33315ffd83dbSDimitry Andric vec_all_ge(__vector __bool int __a, __vector unsigned int __b) {
33320b57cec5SDimitry Andric   int __cc;
33335ffd83dbSDimitry Andric   __builtin_s390_vchlfs(__b, (__vector unsigned int)__a, &__cc);
33340b57cec5SDimitry Andric   return __cc == 3;
33350b57cec5SDimitry Andric }
33360b57cec5SDimitry Andric 
33370b57cec5SDimitry Andric // This prototype is deprecated.
33380b57cec5SDimitry Andric static inline __ATTRS_o_ai int
33395ffd83dbSDimitry Andric vec_all_ge(__vector __bool int __a, __vector __bool int __b) {
33400b57cec5SDimitry Andric   int __cc;
33415ffd83dbSDimitry Andric   __builtin_s390_vchlfs((__vector unsigned int)__b,
33425ffd83dbSDimitry Andric                         (__vector unsigned int)__a, &__cc);
33430b57cec5SDimitry Andric   return __cc == 3;
33440b57cec5SDimitry Andric }
33450b57cec5SDimitry Andric 
33460b57cec5SDimitry Andric static inline __ATTRS_o_ai int
33475ffd83dbSDimitry Andric vec_all_ge(__vector signed long long __a, __vector signed long long __b) {
33480b57cec5SDimitry Andric   int __cc;
33490b57cec5SDimitry Andric   __builtin_s390_vchgs(__b, __a, &__cc);
33500b57cec5SDimitry Andric   return __cc == 3;
33510b57cec5SDimitry Andric }
33520b57cec5SDimitry Andric 
33530b57cec5SDimitry Andric // This prototype is deprecated.
33540b57cec5SDimitry Andric static inline __ATTRS_o_ai int
33555ffd83dbSDimitry Andric vec_all_ge(__vector signed long long __a, __vector __bool long long __b) {
33560b57cec5SDimitry Andric   int __cc;
33575ffd83dbSDimitry Andric   __builtin_s390_vchgs((__vector signed long long)__b, __a, &__cc);
33580b57cec5SDimitry Andric   return __cc == 3;
33590b57cec5SDimitry Andric }
33600b57cec5SDimitry Andric 
33610b57cec5SDimitry Andric // This prototype is deprecated.
33620b57cec5SDimitry Andric static inline __ATTRS_o_ai int
33635ffd83dbSDimitry Andric vec_all_ge(__vector __bool long long __a, __vector signed long long __b) {
33640b57cec5SDimitry Andric   int __cc;
33655ffd83dbSDimitry Andric   __builtin_s390_vchgs(__b, (__vector signed long long)__a, &__cc);
33660b57cec5SDimitry Andric   return __cc == 3;
33670b57cec5SDimitry Andric }
33680b57cec5SDimitry Andric 
33690b57cec5SDimitry Andric static inline __ATTRS_o_ai int
33705ffd83dbSDimitry Andric vec_all_ge(__vector unsigned long long __a, __vector unsigned long long __b) {
33710b57cec5SDimitry Andric   int __cc;
33720b57cec5SDimitry Andric   __builtin_s390_vchlgs(__b, __a, &__cc);
33730b57cec5SDimitry Andric   return __cc == 3;
33740b57cec5SDimitry Andric }
33750b57cec5SDimitry Andric 
33760b57cec5SDimitry Andric // This prototype is deprecated.
33770b57cec5SDimitry Andric static inline __ATTRS_o_ai int
33785ffd83dbSDimitry Andric vec_all_ge(__vector unsigned long long __a, __vector __bool long long __b) {
33790b57cec5SDimitry Andric   int __cc;
33805ffd83dbSDimitry Andric   __builtin_s390_vchlgs((__vector unsigned long long)__b, __a, &__cc);
33810b57cec5SDimitry Andric   return __cc == 3;
33820b57cec5SDimitry Andric }
33830b57cec5SDimitry Andric 
33840b57cec5SDimitry Andric // This prototype is deprecated.
33850b57cec5SDimitry Andric static inline __ATTRS_o_ai int
33865ffd83dbSDimitry Andric vec_all_ge(__vector __bool long long __a, __vector unsigned long long __b) {
33870b57cec5SDimitry Andric   int __cc;
33885ffd83dbSDimitry Andric   __builtin_s390_vchlgs(__b, (__vector unsigned long long)__a, &__cc);
33890b57cec5SDimitry Andric   return __cc == 3;
33900b57cec5SDimitry Andric }
33910b57cec5SDimitry Andric 
33920b57cec5SDimitry Andric // This prototype is deprecated.
33930b57cec5SDimitry Andric static inline __ATTRS_o_ai int
33945ffd83dbSDimitry Andric vec_all_ge(__vector __bool long long __a, __vector __bool long long __b) {
33950b57cec5SDimitry Andric   int __cc;
33965ffd83dbSDimitry Andric   __builtin_s390_vchlgs((__vector unsigned long long)__b,
33975ffd83dbSDimitry Andric                         (__vector unsigned long long)__a, &__cc);
33980b57cec5SDimitry Andric   return __cc == 3;
33990b57cec5SDimitry Andric }
34000b57cec5SDimitry Andric 
34010b57cec5SDimitry Andric #if __ARCH__ >= 12
34020b57cec5SDimitry Andric static inline __ATTRS_o_ai int
34035ffd83dbSDimitry Andric vec_all_ge(__vector float __a, __vector float __b) {
34040b57cec5SDimitry Andric   int __cc;
34050b57cec5SDimitry Andric   __builtin_s390_vfchesbs(__a, __b, &__cc);
34060b57cec5SDimitry Andric   return __cc == 0;
34070b57cec5SDimitry Andric }
34080b57cec5SDimitry Andric #endif
34090b57cec5SDimitry Andric 
34100b57cec5SDimitry Andric static inline __ATTRS_o_ai int
34115ffd83dbSDimitry Andric vec_all_ge(__vector double __a, __vector double __b) {
34120b57cec5SDimitry Andric   int __cc;
34130b57cec5SDimitry Andric   __builtin_s390_vfchedbs(__a, __b, &__cc);
34140b57cec5SDimitry Andric   return __cc == 0;
34150b57cec5SDimitry Andric }
34160b57cec5SDimitry Andric 
34170b57cec5SDimitry Andric /*-- vec_all_gt -------------------------------------------------------------*/
34180b57cec5SDimitry Andric 
34190b57cec5SDimitry Andric static inline __ATTRS_o_ai int
34205ffd83dbSDimitry Andric vec_all_gt(__vector signed char __a, __vector signed char __b) {
34210b57cec5SDimitry Andric   int __cc;
34220b57cec5SDimitry Andric   __builtin_s390_vchbs(__a, __b, &__cc);
34230b57cec5SDimitry Andric   return __cc == 0;
34240b57cec5SDimitry Andric }
34250b57cec5SDimitry Andric 
34260b57cec5SDimitry Andric // This prototype is deprecated.
34270b57cec5SDimitry Andric static inline __ATTRS_o_ai int
34285ffd83dbSDimitry Andric vec_all_gt(__vector signed char __a, __vector __bool char __b) {
34290b57cec5SDimitry Andric   int __cc;
34305ffd83dbSDimitry Andric   __builtin_s390_vchbs(__a, (__vector signed char)__b, &__cc);
34310b57cec5SDimitry Andric   return __cc == 0;
34320b57cec5SDimitry Andric }
34330b57cec5SDimitry Andric 
34340b57cec5SDimitry Andric // This prototype is deprecated.
34350b57cec5SDimitry Andric static inline __ATTRS_o_ai int
34365ffd83dbSDimitry Andric vec_all_gt(__vector __bool char __a, __vector signed char __b) {
34370b57cec5SDimitry Andric   int __cc;
34385ffd83dbSDimitry Andric   __builtin_s390_vchbs((__vector signed char)__a, __b, &__cc);
34390b57cec5SDimitry Andric   return __cc == 0;
34400b57cec5SDimitry Andric }
34410b57cec5SDimitry Andric 
34420b57cec5SDimitry Andric static inline __ATTRS_o_ai int
34435ffd83dbSDimitry Andric vec_all_gt(__vector unsigned char __a, __vector unsigned char __b) {
34440b57cec5SDimitry Andric   int __cc;
34450b57cec5SDimitry Andric   __builtin_s390_vchlbs(__a, __b, &__cc);
34460b57cec5SDimitry Andric   return __cc == 0;
34470b57cec5SDimitry Andric }
34480b57cec5SDimitry Andric 
34490b57cec5SDimitry Andric // This prototype is deprecated.
34500b57cec5SDimitry Andric static inline __ATTRS_o_ai int
34515ffd83dbSDimitry Andric vec_all_gt(__vector unsigned char __a, __vector __bool char __b) {
34520b57cec5SDimitry Andric   int __cc;
34535ffd83dbSDimitry Andric   __builtin_s390_vchlbs(__a, (__vector unsigned char)__b, &__cc);
34540b57cec5SDimitry Andric   return __cc == 0;
34550b57cec5SDimitry Andric }
34560b57cec5SDimitry Andric 
34570b57cec5SDimitry Andric // This prototype is deprecated.
34580b57cec5SDimitry Andric static inline __ATTRS_o_ai int
34595ffd83dbSDimitry Andric vec_all_gt(__vector __bool char __a, __vector unsigned char __b) {
34600b57cec5SDimitry Andric   int __cc;
34615ffd83dbSDimitry Andric   __builtin_s390_vchlbs((__vector unsigned char)__a, __b, &__cc);
34620b57cec5SDimitry Andric   return __cc == 0;
34630b57cec5SDimitry Andric }
34640b57cec5SDimitry Andric 
34650b57cec5SDimitry Andric // This prototype is deprecated.
34660b57cec5SDimitry Andric static inline __ATTRS_o_ai int
34675ffd83dbSDimitry Andric vec_all_gt(__vector __bool char __a, __vector __bool char __b) {
34680b57cec5SDimitry Andric   int __cc;
34695ffd83dbSDimitry Andric   __builtin_s390_vchlbs((__vector unsigned char)__a,
34705ffd83dbSDimitry Andric                         (__vector unsigned char)__b, &__cc);
34710b57cec5SDimitry Andric   return __cc == 0;
34720b57cec5SDimitry Andric }
34730b57cec5SDimitry Andric 
34740b57cec5SDimitry Andric static inline __ATTRS_o_ai int
34755ffd83dbSDimitry Andric vec_all_gt(__vector signed short __a, __vector signed short __b) {
34760b57cec5SDimitry Andric   int __cc;
34770b57cec5SDimitry Andric   __builtin_s390_vchhs(__a, __b, &__cc);
34780b57cec5SDimitry Andric   return __cc == 0;
34790b57cec5SDimitry Andric }
34800b57cec5SDimitry Andric 
34810b57cec5SDimitry Andric // This prototype is deprecated.
34820b57cec5SDimitry Andric static inline __ATTRS_o_ai int
34835ffd83dbSDimitry Andric vec_all_gt(__vector signed short __a, __vector __bool short __b) {
34840b57cec5SDimitry Andric   int __cc;
34855ffd83dbSDimitry Andric   __builtin_s390_vchhs(__a, (__vector signed short)__b, &__cc);
34860b57cec5SDimitry Andric   return __cc == 0;
34870b57cec5SDimitry Andric }
34880b57cec5SDimitry Andric 
34890b57cec5SDimitry Andric // This prototype is deprecated.
34900b57cec5SDimitry Andric static inline __ATTRS_o_ai int
34915ffd83dbSDimitry Andric vec_all_gt(__vector __bool short __a, __vector signed short __b) {
34920b57cec5SDimitry Andric   int __cc;
34935ffd83dbSDimitry Andric   __builtin_s390_vchhs((__vector signed short)__a, __b, &__cc);
34940b57cec5SDimitry Andric   return __cc == 0;
34950b57cec5SDimitry Andric }
34960b57cec5SDimitry Andric 
34970b57cec5SDimitry Andric static inline __ATTRS_o_ai int
34985ffd83dbSDimitry Andric vec_all_gt(__vector unsigned short __a, __vector unsigned short __b) {
34990b57cec5SDimitry Andric   int __cc;
35000b57cec5SDimitry Andric   __builtin_s390_vchlhs(__a, __b, &__cc);
35010b57cec5SDimitry Andric   return __cc == 0;
35020b57cec5SDimitry Andric }
35030b57cec5SDimitry Andric 
35040b57cec5SDimitry Andric // This prototype is deprecated.
35050b57cec5SDimitry Andric static inline __ATTRS_o_ai int
35065ffd83dbSDimitry Andric vec_all_gt(__vector unsigned short __a, __vector __bool short __b) {
35070b57cec5SDimitry Andric   int __cc;
35085ffd83dbSDimitry Andric   __builtin_s390_vchlhs(__a, (__vector unsigned short)__b, &__cc);
35090b57cec5SDimitry Andric   return __cc == 0;
35100b57cec5SDimitry Andric }
35110b57cec5SDimitry Andric 
35120b57cec5SDimitry Andric // This prototype is deprecated.
35130b57cec5SDimitry Andric static inline __ATTRS_o_ai int
35145ffd83dbSDimitry Andric vec_all_gt(__vector __bool short __a, __vector unsigned short __b) {
35150b57cec5SDimitry Andric   int __cc;
35165ffd83dbSDimitry Andric   __builtin_s390_vchlhs((__vector unsigned short)__a, __b, &__cc);
35170b57cec5SDimitry Andric   return __cc == 0;
35180b57cec5SDimitry Andric }
35190b57cec5SDimitry Andric 
35200b57cec5SDimitry Andric // This prototype is deprecated.
35210b57cec5SDimitry Andric static inline __ATTRS_o_ai int
35225ffd83dbSDimitry Andric vec_all_gt(__vector __bool short __a, __vector __bool short __b) {
35230b57cec5SDimitry Andric   int __cc;
35245ffd83dbSDimitry Andric   __builtin_s390_vchlhs((__vector unsigned short)__a,
35255ffd83dbSDimitry Andric                         (__vector unsigned short)__b, &__cc);
35260b57cec5SDimitry Andric   return __cc == 0;
35270b57cec5SDimitry Andric }
35280b57cec5SDimitry Andric 
35290b57cec5SDimitry Andric static inline __ATTRS_o_ai int
35305ffd83dbSDimitry Andric vec_all_gt(__vector signed int __a, __vector signed int __b) {
35310b57cec5SDimitry Andric   int __cc;
35320b57cec5SDimitry Andric   __builtin_s390_vchfs(__a, __b, &__cc);
35330b57cec5SDimitry Andric   return __cc == 0;
35340b57cec5SDimitry Andric }
35350b57cec5SDimitry Andric 
35360b57cec5SDimitry Andric // This prototype is deprecated.
35370b57cec5SDimitry Andric static inline __ATTRS_o_ai int
35385ffd83dbSDimitry Andric vec_all_gt(__vector signed int __a, __vector __bool int __b) {
35390b57cec5SDimitry Andric   int __cc;
35405ffd83dbSDimitry Andric   __builtin_s390_vchfs(__a, (__vector signed int)__b, &__cc);
35410b57cec5SDimitry Andric   return __cc == 0;
35420b57cec5SDimitry Andric }
35430b57cec5SDimitry Andric 
35440b57cec5SDimitry Andric // This prototype is deprecated.
35450b57cec5SDimitry Andric static inline __ATTRS_o_ai int
35465ffd83dbSDimitry Andric vec_all_gt(__vector __bool int __a, __vector signed int __b) {
35470b57cec5SDimitry Andric   int __cc;
35485ffd83dbSDimitry Andric   __builtin_s390_vchfs((__vector signed int)__a, __b, &__cc);
35490b57cec5SDimitry Andric   return __cc == 0;
35500b57cec5SDimitry Andric }
35510b57cec5SDimitry Andric 
35520b57cec5SDimitry Andric static inline __ATTRS_o_ai int
35535ffd83dbSDimitry Andric vec_all_gt(__vector unsigned int __a, __vector unsigned int __b) {
35540b57cec5SDimitry Andric   int __cc;
35550b57cec5SDimitry Andric   __builtin_s390_vchlfs(__a, __b, &__cc);
35560b57cec5SDimitry Andric   return __cc == 0;
35570b57cec5SDimitry Andric }
35580b57cec5SDimitry Andric 
35590b57cec5SDimitry Andric // This prototype is deprecated.
35600b57cec5SDimitry Andric static inline __ATTRS_o_ai int
35615ffd83dbSDimitry Andric vec_all_gt(__vector unsigned int __a, __vector __bool int __b) {
35620b57cec5SDimitry Andric   int __cc;
35635ffd83dbSDimitry Andric   __builtin_s390_vchlfs(__a, (__vector unsigned int)__b, &__cc);
35640b57cec5SDimitry Andric   return __cc == 0;
35650b57cec5SDimitry Andric }
35660b57cec5SDimitry Andric 
35670b57cec5SDimitry Andric // This prototype is deprecated.
35680b57cec5SDimitry Andric static inline __ATTRS_o_ai int
35695ffd83dbSDimitry Andric vec_all_gt(__vector __bool int __a, __vector unsigned int __b) {
35700b57cec5SDimitry Andric   int __cc;
35715ffd83dbSDimitry Andric   __builtin_s390_vchlfs((__vector unsigned int)__a, __b, &__cc);
35720b57cec5SDimitry Andric   return __cc == 0;
35730b57cec5SDimitry Andric }
35740b57cec5SDimitry Andric 
35750b57cec5SDimitry Andric // This prototype is deprecated.
35760b57cec5SDimitry Andric static inline __ATTRS_o_ai int
35775ffd83dbSDimitry Andric vec_all_gt(__vector __bool int __a, __vector __bool int __b) {
35780b57cec5SDimitry Andric   int __cc;
35795ffd83dbSDimitry Andric   __builtin_s390_vchlfs((__vector unsigned int)__a,
35805ffd83dbSDimitry Andric                         (__vector unsigned int)__b, &__cc);
35810b57cec5SDimitry Andric   return __cc == 0;
35820b57cec5SDimitry Andric }
35830b57cec5SDimitry Andric 
35840b57cec5SDimitry Andric static inline __ATTRS_o_ai int
35855ffd83dbSDimitry Andric vec_all_gt(__vector signed long long __a, __vector signed long long __b) {
35860b57cec5SDimitry Andric   int __cc;
35870b57cec5SDimitry Andric   __builtin_s390_vchgs(__a, __b, &__cc);
35880b57cec5SDimitry Andric   return __cc == 0;
35890b57cec5SDimitry Andric }
35900b57cec5SDimitry Andric 
35910b57cec5SDimitry Andric // This prototype is deprecated.
35920b57cec5SDimitry Andric static inline __ATTRS_o_ai int
35935ffd83dbSDimitry Andric vec_all_gt(__vector signed long long __a, __vector __bool long long __b) {
35940b57cec5SDimitry Andric   int __cc;
35955ffd83dbSDimitry Andric   __builtin_s390_vchgs(__a, (__vector signed long long)__b, &__cc);
35960b57cec5SDimitry Andric   return __cc == 0;
35970b57cec5SDimitry Andric }
35980b57cec5SDimitry Andric 
35990b57cec5SDimitry Andric // This prototype is deprecated.
36000b57cec5SDimitry Andric static inline __ATTRS_o_ai int
36015ffd83dbSDimitry Andric vec_all_gt(__vector __bool long long __a, __vector signed long long __b) {
36020b57cec5SDimitry Andric   int __cc;
36035ffd83dbSDimitry Andric   __builtin_s390_vchgs((__vector signed long long)__a, __b, &__cc);
36040b57cec5SDimitry Andric   return __cc == 0;
36050b57cec5SDimitry Andric }
36060b57cec5SDimitry Andric 
36070b57cec5SDimitry Andric static inline __ATTRS_o_ai int
36085ffd83dbSDimitry Andric vec_all_gt(__vector unsigned long long __a, __vector unsigned long long __b) {
36090b57cec5SDimitry Andric   int __cc;
36100b57cec5SDimitry Andric   __builtin_s390_vchlgs(__a, __b, &__cc);
36110b57cec5SDimitry Andric   return __cc == 0;
36120b57cec5SDimitry Andric }
36130b57cec5SDimitry Andric 
36140b57cec5SDimitry Andric // This prototype is deprecated.
36150b57cec5SDimitry Andric static inline __ATTRS_o_ai int
36165ffd83dbSDimitry Andric vec_all_gt(__vector unsigned long long __a, __vector __bool long long __b) {
36170b57cec5SDimitry Andric   int __cc;
36185ffd83dbSDimitry Andric   __builtin_s390_vchlgs(__a, (__vector unsigned long long)__b, &__cc);
36190b57cec5SDimitry Andric   return __cc == 0;
36200b57cec5SDimitry Andric }
36210b57cec5SDimitry Andric 
36220b57cec5SDimitry Andric // This prototype is deprecated.
36230b57cec5SDimitry Andric static inline __ATTRS_o_ai int
36245ffd83dbSDimitry Andric vec_all_gt(__vector __bool long long __a, __vector unsigned long long __b) {
36250b57cec5SDimitry Andric   int __cc;
36265ffd83dbSDimitry Andric   __builtin_s390_vchlgs((__vector unsigned long long)__a, __b, &__cc);
36270b57cec5SDimitry Andric   return __cc == 0;
36280b57cec5SDimitry Andric }
36290b57cec5SDimitry Andric 
36300b57cec5SDimitry Andric // This prototype is deprecated.
36310b57cec5SDimitry Andric static inline __ATTRS_o_ai int
36325ffd83dbSDimitry Andric vec_all_gt(__vector __bool long long __a, __vector __bool long long __b) {
36330b57cec5SDimitry Andric   int __cc;
36345ffd83dbSDimitry Andric   __builtin_s390_vchlgs((__vector unsigned long long)__a,
36355ffd83dbSDimitry Andric                         (__vector unsigned long long)__b, &__cc);
36360b57cec5SDimitry Andric   return __cc == 0;
36370b57cec5SDimitry Andric }
36380b57cec5SDimitry Andric 
36390b57cec5SDimitry Andric #if __ARCH__ >= 12
36400b57cec5SDimitry Andric static inline __ATTRS_o_ai int
36415ffd83dbSDimitry Andric vec_all_gt(__vector float __a, __vector float __b) {
36420b57cec5SDimitry Andric   int __cc;
36430b57cec5SDimitry Andric   __builtin_s390_vfchsbs(__a, __b, &__cc);
36440b57cec5SDimitry Andric   return __cc == 0;
36450b57cec5SDimitry Andric }
36460b57cec5SDimitry Andric #endif
36470b57cec5SDimitry Andric 
36480b57cec5SDimitry Andric static inline __ATTRS_o_ai int
36495ffd83dbSDimitry Andric vec_all_gt(__vector double __a, __vector double __b) {
36500b57cec5SDimitry Andric   int __cc;
36510b57cec5SDimitry Andric   __builtin_s390_vfchdbs(__a, __b, &__cc);
36520b57cec5SDimitry Andric   return __cc == 0;
36530b57cec5SDimitry Andric }
36540b57cec5SDimitry Andric 
36550b57cec5SDimitry Andric /*-- vec_all_le -------------------------------------------------------------*/
36560b57cec5SDimitry Andric 
36570b57cec5SDimitry Andric static inline __ATTRS_o_ai int
36585ffd83dbSDimitry Andric vec_all_le(__vector signed char __a, __vector signed char __b) {
36590b57cec5SDimitry Andric   int __cc;
36600b57cec5SDimitry Andric   __builtin_s390_vchbs(__a, __b, &__cc);
36610b57cec5SDimitry Andric   return __cc == 3;
36620b57cec5SDimitry Andric }
36630b57cec5SDimitry Andric 
36640b57cec5SDimitry Andric // This prototype is deprecated.
36650b57cec5SDimitry Andric static inline __ATTRS_o_ai int
36665ffd83dbSDimitry Andric vec_all_le(__vector signed char __a, __vector __bool char __b) {
36670b57cec5SDimitry Andric   int __cc;
36685ffd83dbSDimitry Andric   __builtin_s390_vchbs(__a, (__vector signed char)__b, &__cc);
36690b57cec5SDimitry Andric   return __cc == 3;
36700b57cec5SDimitry Andric }
36710b57cec5SDimitry Andric 
36720b57cec5SDimitry Andric // This prototype is deprecated.
36730b57cec5SDimitry Andric static inline __ATTRS_o_ai int
36745ffd83dbSDimitry Andric vec_all_le(__vector __bool char __a, __vector signed char __b) {
36750b57cec5SDimitry Andric   int __cc;
36765ffd83dbSDimitry Andric   __builtin_s390_vchbs((__vector signed char)__a, __b, &__cc);
36770b57cec5SDimitry Andric   return __cc == 3;
36780b57cec5SDimitry Andric }
36790b57cec5SDimitry Andric 
36800b57cec5SDimitry Andric static inline __ATTRS_o_ai int
36815ffd83dbSDimitry Andric vec_all_le(__vector unsigned char __a, __vector unsigned char __b) {
36820b57cec5SDimitry Andric   int __cc;
36830b57cec5SDimitry Andric   __builtin_s390_vchlbs(__a, __b, &__cc);
36840b57cec5SDimitry Andric   return __cc == 3;
36850b57cec5SDimitry Andric }
36860b57cec5SDimitry Andric 
36870b57cec5SDimitry Andric // This prototype is deprecated.
36880b57cec5SDimitry Andric static inline __ATTRS_o_ai int
36895ffd83dbSDimitry Andric vec_all_le(__vector unsigned char __a, __vector __bool char __b) {
36900b57cec5SDimitry Andric   int __cc;
36915ffd83dbSDimitry Andric   __builtin_s390_vchlbs(__a, (__vector unsigned char)__b, &__cc);
36920b57cec5SDimitry Andric   return __cc == 3;
36930b57cec5SDimitry Andric }
36940b57cec5SDimitry Andric 
36950b57cec5SDimitry Andric // This prototype is deprecated.
36960b57cec5SDimitry Andric static inline __ATTRS_o_ai int
36975ffd83dbSDimitry Andric vec_all_le(__vector __bool char __a, __vector unsigned char __b) {
36980b57cec5SDimitry Andric   int __cc;
36995ffd83dbSDimitry Andric   __builtin_s390_vchlbs((__vector unsigned char)__a, __b, &__cc);
37000b57cec5SDimitry Andric   return __cc == 3;
37010b57cec5SDimitry Andric }
37020b57cec5SDimitry Andric 
37030b57cec5SDimitry Andric // This prototype is deprecated.
37040b57cec5SDimitry Andric static inline __ATTRS_o_ai int
37055ffd83dbSDimitry Andric vec_all_le(__vector __bool char __a, __vector __bool char __b) {
37060b57cec5SDimitry Andric   int __cc;
37075ffd83dbSDimitry Andric   __builtin_s390_vchlbs((__vector unsigned char)__a,
37085ffd83dbSDimitry Andric                         (__vector unsigned char)__b, &__cc);
37090b57cec5SDimitry Andric   return __cc == 3;
37100b57cec5SDimitry Andric }
37110b57cec5SDimitry Andric 
37120b57cec5SDimitry Andric static inline __ATTRS_o_ai int
37135ffd83dbSDimitry Andric vec_all_le(__vector signed short __a, __vector signed short __b) {
37140b57cec5SDimitry Andric   int __cc;
37150b57cec5SDimitry Andric   __builtin_s390_vchhs(__a, __b, &__cc);
37160b57cec5SDimitry Andric   return __cc == 3;
37170b57cec5SDimitry Andric }
37180b57cec5SDimitry Andric 
37190b57cec5SDimitry Andric // This prototype is deprecated.
37200b57cec5SDimitry Andric static inline __ATTRS_o_ai int
37215ffd83dbSDimitry Andric vec_all_le(__vector signed short __a, __vector __bool short __b) {
37220b57cec5SDimitry Andric   int __cc;
37235ffd83dbSDimitry Andric   __builtin_s390_vchhs(__a, (__vector signed short)__b, &__cc);
37240b57cec5SDimitry Andric   return __cc == 3;
37250b57cec5SDimitry Andric }
37260b57cec5SDimitry Andric 
37270b57cec5SDimitry Andric // This prototype is deprecated.
37280b57cec5SDimitry Andric static inline __ATTRS_o_ai int
37295ffd83dbSDimitry Andric vec_all_le(__vector __bool short __a, __vector signed short __b) {
37300b57cec5SDimitry Andric   int __cc;
37315ffd83dbSDimitry Andric   __builtin_s390_vchhs((__vector signed short)__a, __b, &__cc);
37320b57cec5SDimitry Andric   return __cc == 3;
37330b57cec5SDimitry Andric }
37340b57cec5SDimitry Andric 
37350b57cec5SDimitry Andric static inline __ATTRS_o_ai int
37365ffd83dbSDimitry Andric vec_all_le(__vector unsigned short __a, __vector unsigned short __b) {
37370b57cec5SDimitry Andric   int __cc;
37380b57cec5SDimitry Andric   __builtin_s390_vchlhs(__a, __b, &__cc);
37390b57cec5SDimitry Andric   return __cc == 3;
37400b57cec5SDimitry Andric }
37410b57cec5SDimitry Andric 
37420b57cec5SDimitry Andric // This prototype is deprecated.
37430b57cec5SDimitry Andric static inline __ATTRS_o_ai int
37445ffd83dbSDimitry Andric vec_all_le(__vector unsigned short __a, __vector __bool short __b) {
37450b57cec5SDimitry Andric   int __cc;
37465ffd83dbSDimitry Andric   __builtin_s390_vchlhs(__a, (__vector unsigned short)__b, &__cc);
37470b57cec5SDimitry Andric   return __cc == 3;
37480b57cec5SDimitry Andric }
37490b57cec5SDimitry Andric 
37500b57cec5SDimitry Andric // This prototype is deprecated.
37510b57cec5SDimitry Andric static inline __ATTRS_o_ai int
37525ffd83dbSDimitry Andric vec_all_le(__vector __bool short __a, __vector unsigned short __b) {
37530b57cec5SDimitry Andric   int __cc;
37545ffd83dbSDimitry Andric   __builtin_s390_vchlhs((__vector unsigned short)__a, __b, &__cc);
37550b57cec5SDimitry Andric   return __cc == 3;
37560b57cec5SDimitry Andric }
37570b57cec5SDimitry Andric 
37580b57cec5SDimitry Andric // This prototype is deprecated.
37590b57cec5SDimitry Andric static inline __ATTRS_o_ai int
37605ffd83dbSDimitry Andric vec_all_le(__vector __bool short __a, __vector __bool short __b) {
37610b57cec5SDimitry Andric   int __cc;
37625ffd83dbSDimitry Andric   __builtin_s390_vchlhs((__vector unsigned short)__a,
37635ffd83dbSDimitry Andric                         (__vector unsigned short)__b, &__cc);
37640b57cec5SDimitry Andric   return __cc == 3;
37650b57cec5SDimitry Andric }
37660b57cec5SDimitry Andric 
37670b57cec5SDimitry Andric static inline __ATTRS_o_ai int
37685ffd83dbSDimitry Andric vec_all_le(__vector signed int __a, __vector signed int __b) {
37690b57cec5SDimitry Andric   int __cc;
37700b57cec5SDimitry Andric   __builtin_s390_vchfs(__a, __b, &__cc);
37710b57cec5SDimitry Andric   return __cc == 3;
37720b57cec5SDimitry Andric }
37730b57cec5SDimitry Andric 
37740b57cec5SDimitry Andric // This prototype is deprecated.
37750b57cec5SDimitry Andric static inline __ATTRS_o_ai int
37765ffd83dbSDimitry Andric vec_all_le(__vector signed int __a, __vector __bool int __b) {
37770b57cec5SDimitry Andric   int __cc;
37785ffd83dbSDimitry Andric   __builtin_s390_vchfs(__a, (__vector signed int)__b, &__cc);
37790b57cec5SDimitry Andric   return __cc == 3;
37800b57cec5SDimitry Andric }
37810b57cec5SDimitry Andric 
37820b57cec5SDimitry Andric // This prototype is deprecated.
37830b57cec5SDimitry Andric static inline __ATTRS_o_ai int
37845ffd83dbSDimitry Andric vec_all_le(__vector __bool int __a, __vector signed int __b) {
37850b57cec5SDimitry Andric   int __cc;
37865ffd83dbSDimitry Andric   __builtin_s390_vchfs((__vector signed int)__a, __b, &__cc);
37870b57cec5SDimitry Andric   return __cc == 3;
37880b57cec5SDimitry Andric }
37890b57cec5SDimitry Andric 
37900b57cec5SDimitry Andric static inline __ATTRS_o_ai int
37915ffd83dbSDimitry Andric vec_all_le(__vector unsigned int __a, __vector unsigned int __b) {
37920b57cec5SDimitry Andric   int __cc;
37930b57cec5SDimitry Andric   __builtin_s390_vchlfs(__a, __b, &__cc);
37940b57cec5SDimitry Andric   return __cc == 3;
37950b57cec5SDimitry Andric }
37960b57cec5SDimitry Andric 
37970b57cec5SDimitry Andric // This prototype is deprecated.
37980b57cec5SDimitry Andric static inline __ATTRS_o_ai int
37995ffd83dbSDimitry Andric vec_all_le(__vector unsigned int __a, __vector __bool int __b) {
38000b57cec5SDimitry Andric   int __cc;
38015ffd83dbSDimitry Andric   __builtin_s390_vchlfs(__a, (__vector unsigned int)__b, &__cc);
38020b57cec5SDimitry Andric   return __cc == 3;
38030b57cec5SDimitry Andric }
38040b57cec5SDimitry Andric 
38050b57cec5SDimitry Andric // This prototype is deprecated.
38060b57cec5SDimitry Andric static inline __ATTRS_o_ai int
38075ffd83dbSDimitry Andric vec_all_le(__vector __bool int __a, __vector unsigned int __b) {
38080b57cec5SDimitry Andric   int __cc;
38095ffd83dbSDimitry Andric   __builtin_s390_vchlfs((__vector unsigned int)__a, __b, &__cc);
38100b57cec5SDimitry Andric   return __cc == 3;
38110b57cec5SDimitry Andric }
38120b57cec5SDimitry Andric 
38130b57cec5SDimitry Andric // This prototype is deprecated.
38140b57cec5SDimitry Andric static inline __ATTRS_o_ai int
38155ffd83dbSDimitry Andric vec_all_le(__vector __bool int __a, __vector __bool int __b) {
38160b57cec5SDimitry Andric   int __cc;
38175ffd83dbSDimitry Andric   __builtin_s390_vchlfs((__vector unsigned int)__a,
38185ffd83dbSDimitry Andric                         (__vector unsigned int)__b, &__cc);
38190b57cec5SDimitry Andric   return __cc == 3;
38200b57cec5SDimitry Andric }
38210b57cec5SDimitry Andric 
38220b57cec5SDimitry Andric static inline __ATTRS_o_ai int
38235ffd83dbSDimitry Andric vec_all_le(__vector signed long long __a, __vector signed long long __b) {
38240b57cec5SDimitry Andric   int __cc;
38250b57cec5SDimitry Andric   __builtin_s390_vchgs(__a, __b, &__cc);
38260b57cec5SDimitry Andric   return __cc == 3;
38270b57cec5SDimitry Andric }
38280b57cec5SDimitry Andric 
38290b57cec5SDimitry Andric // This prototype is deprecated.
38300b57cec5SDimitry Andric static inline __ATTRS_o_ai int
38315ffd83dbSDimitry Andric vec_all_le(__vector signed long long __a, __vector __bool long long __b) {
38320b57cec5SDimitry Andric   int __cc;
38335ffd83dbSDimitry Andric   __builtin_s390_vchgs(__a, (__vector signed long long)__b, &__cc);
38340b57cec5SDimitry Andric   return __cc == 3;
38350b57cec5SDimitry Andric }
38360b57cec5SDimitry Andric 
38370b57cec5SDimitry Andric // This prototype is deprecated.
38380b57cec5SDimitry Andric static inline __ATTRS_o_ai int
38395ffd83dbSDimitry Andric vec_all_le(__vector __bool long long __a, __vector signed long long __b) {
38400b57cec5SDimitry Andric   int __cc;
38415ffd83dbSDimitry Andric   __builtin_s390_vchgs((__vector signed long long)__a, __b, &__cc);
38420b57cec5SDimitry Andric   return __cc == 3;
38430b57cec5SDimitry Andric }
38440b57cec5SDimitry Andric 
38450b57cec5SDimitry Andric static inline __ATTRS_o_ai int
38465ffd83dbSDimitry Andric vec_all_le(__vector unsigned long long __a, __vector unsigned long long __b) {
38470b57cec5SDimitry Andric   int __cc;
38480b57cec5SDimitry Andric   __builtin_s390_vchlgs(__a, __b, &__cc);
38490b57cec5SDimitry Andric   return __cc == 3;
38500b57cec5SDimitry Andric }
38510b57cec5SDimitry Andric 
38520b57cec5SDimitry Andric // This prototype is deprecated.
38530b57cec5SDimitry Andric static inline __ATTRS_o_ai int
38545ffd83dbSDimitry Andric vec_all_le(__vector unsigned long long __a, __vector __bool long long __b) {
38550b57cec5SDimitry Andric   int __cc;
38565ffd83dbSDimitry Andric   __builtin_s390_vchlgs(__a, (__vector unsigned long long)__b, &__cc);
38570b57cec5SDimitry Andric   return __cc == 3;
38580b57cec5SDimitry Andric }
38590b57cec5SDimitry Andric 
38600b57cec5SDimitry Andric // This prototype is deprecated.
38610b57cec5SDimitry Andric static inline __ATTRS_o_ai int
38625ffd83dbSDimitry Andric vec_all_le(__vector __bool long long __a, __vector unsigned long long __b) {
38630b57cec5SDimitry Andric   int __cc;
38645ffd83dbSDimitry Andric   __builtin_s390_vchlgs((__vector unsigned long long)__a, __b, &__cc);
38650b57cec5SDimitry Andric   return __cc == 3;
38660b57cec5SDimitry Andric }
38670b57cec5SDimitry Andric 
38680b57cec5SDimitry Andric // This prototype is deprecated.
38690b57cec5SDimitry Andric static inline __ATTRS_o_ai int
38705ffd83dbSDimitry Andric vec_all_le(__vector __bool long long __a, __vector __bool long long __b) {
38710b57cec5SDimitry Andric   int __cc;
38725ffd83dbSDimitry Andric   __builtin_s390_vchlgs((__vector unsigned long long)__a,
38735ffd83dbSDimitry Andric                         (__vector unsigned long long)__b, &__cc);
38740b57cec5SDimitry Andric   return __cc == 3;
38750b57cec5SDimitry Andric }
38760b57cec5SDimitry Andric 
38770b57cec5SDimitry Andric #if __ARCH__ >= 12
38780b57cec5SDimitry Andric static inline __ATTRS_o_ai int
38795ffd83dbSDimitry Andric vec_all_le(__vector float __a, __vector float __b) {
38800b57cec5SDimitry Andric   int __cc;
38810b57cec5SDimitry Andric   __builtin_s390_vfchesbs(__b, __a, &__cc);
38820b57cec5SDimitry Andric   return __cc == 0;
38830b57cec5SDimitry Andric }
38840b57cec5SDimitry Andric #endif
38850b57cec5SDimitry Andric 
38860b57cec5SDimitry Andric static inline __ATTRS_o_ai int
38875ffd83dbSDimitry Andric vec_all_le(__vector double __a, __vector double __b) {
38880b57cec5SDimitry Andric   int __cc;
38890b57cec5SDimitry Andric   __builtin_s390_vfchedbs(__b, __a, &__cc);
38900b57cec5SDimitry Andric   return __cc == 0;
38910b57cec5SDimitry Andric }
38920b57cec5SDimitry Andric 
38930b57cec5SDimitry Andric /*-- vec_all_lt -------------------------------------------------------------*/
38940b57cec5SDimitry Andric 
38950b57cec5SDimitry Andric static inline __ATTRS_o_ai int
38965ffd83dbSDimitry Andric vec_all_lt(__vector signed char __a, __vector signed char __b) {
38970b57cec5SDimitry Andric   int __cc;
38980b57cec5SDimitry Andric   __builtin_s390_vchbs(__b, __a, &__cc);
38990b57cec5SDimitry Andric   return __cc == 0;
39000b57cec5SDimitry Andric }
39010b57cec5SDimitry Andric 
39020b57cec5SDimitry Andric // This prototype is deprecated.
39030b57cec5SDimitry Andric static inline __ATTRS_o_ai int
39045ffd83dbSDimitry Andric vec_all_lt(__vector signed char __a, __vector __bool char __b) {
39050b57cec5SDimitry Andric   int __cc;
39065ffd83dbSDimitry Andric   __builtin_s390_vchbs((__vector signed char)__b, __a, &__cc);
39070b57cec5SDimitry Andric   return __cc == 0;
39080b57cec5SDimitry Andric }
39090b57cec5SDimitry Andric 
39100b57cec5SDimitry Andric // This prototype is deprecated.
39110b57cec5SDimitry Andric static inline __ATTRS_o_ai int
39125ffd83dbSDimitry Andric vec_all_lt(__vector __bool char __a, __vector signed char __b) {
39130b57cec5SDimitry Andric   int __cc;
39145ffd83dbSDimitry Andric   __builtin_s390_vchbs(__b, (__vector signed char)__a, &__cc);
39150b57cec5SDimitry Andric   return __cc == 0;
39160b57cec5SDimitry Andric }
39170b57cec5SDimitry Andric 
39180b57cec5SDimitry Andric static inline __ATTRS_o_ai int
39195ffd83dbSDimitry Andric vec_all_lt(__vector unsigned char __a, __vector unsigned char __b) {
39200b57cec5SDimitry Andric   int __cc;
39210b57cec5SDimitry Andric   __builtin_s390_vchlbs(__b, __a, &__cc);
39220b57cec5SDimitry Andric   return __cc == 0;
39230b57cec5SDimitry Andric }
39240b57cec5SDimitry Andric 
39250b57cec5SDimitry Andric // This prototype is deprecated.
39260b57cec5SDimitry Andric static inline __ATTRS_o_ai int
39275ffd83dbSDimitry Andric vec_all_lt(__vector unsigned char __a, __vector __bool char __b) {
39280b57cec5SDimitry Andric   int __cc;
39295ffd83dbSDimitry Andric   __builtin_s390_vchlbs((__vector unsigned char)__b, __a, &__cc);
39300b57cec5SDimitry Andric   return __cc == 0;
39310b57cec5SDimitry Andric }
39320b57cec5SDimitry Andric 
39330b57cec5SDimitry Andric // This prototype is deprecated.
39340b57cec5SDimitry Andric static inline __ATTRS_o_ai int
39355ffd83dbSDimitry Andric vec_all_lt(__vector __bool char __a, __vector unsigned char __b) {
39360b57cec5SDimitry Andric   int __cc;
39375ffd83dbSDimitry Andric   __builtin_s390_vchlbs(__b, (__vector unsigned char)__a, &__cc);
39380b57cec5SDimitry Andric   return __cc == 0;
39390b57cec5SDimitry Andric }
39400b57cec5SDimitry Andric 
39410b57cec5SDimitry Andric // This prototype is deprecated.
39420b57cec5SDimitry Andric static inline __ATTRS_o_ai int
39435ffd83dbSDimitry Andric vec_all_lt(__vector __bool char __a, __vector __bool char __b) {
39440b57cec5SDimitry Andric   int __cc;
39455ffd83dbSDimitry Andric   __builtin_s390_vchlbs((__vector unsigned char)__b,
39465ffd83dbSDimitry Andric                         (__vector unsigned char)__a, &__cc);
39470b57cec5SDimitry Andric   return __cc == 0;
39480b57cec5SDimitry Andric }
39490b57cec5SDimitry Andric 
39500b57cec5SDimitry Andric static inline __ATTRS_o_ai int
39515ffd83dbSDimitry Andric vec_all_lt(__vector signed short __a, __vector signed short __b) {
39520b57cec5SDimitry Andric   int __cc;
39530b57cec5SDimitry Andric   __builtin_s390_vchhs(__b, __a, &__cc);
39540b57cec5SDimitry Andric   return __cc == 0;
39550b57cec5SDimitry Andric }
39560b57cec5SDimitry Andric 
39570b57cec5SDimitry Andric // This prototype is deprecated.
39580b57cec5SDimitry Andric static inline __ATTRS_o_ai int
39595ffd83dbSDimitry Andric vec_all_lt(__vector signed short __a, __vector __bool short __b) {
39600b57cec5SDimitry Andric   int __cc;
39615ffd83dbSDimitry Andric   __builtin_s390_vchhs((__vector signed short)__b, __a, &__cc);
39620b57cec5SDimitry Andric   return __cc == 0;
39630b57cec5SDimitry Andric }
39640b57cec5SDimitry Andric 
39650b57cec5SDimitry Andric // This prototype is deprecated.
39660b57cec5SDimitry Andric static inline __ATTRS_o_ai int
39675ffd83dbSDimitry Andric vec_all_lt(__vector __bool short __a, __vector signed short __b) {
39680b57cec5SDimitry Andric   int __cc;
39695ffd83dbSDimitry Andric   __builtin_s390_vchhs(__b, (__vector signed short)__a, &__cc);
39700b57cec5SDimitry Andric   return __cc == 0;
39710b57cec5SDimitry Andric }
39720b57cec5SDimitry Andric 
39730b57cec5SDimitry Andric static inline __ATTRS_o_ai int
39745ffd83dbSDimitry Andric vec_all_lt(__vector unsigned short __a, __vector unsigned short __b) {
39750b57cec5SDimitry Andric   int __cc;
39760b57cec5SDimitry Andric   __builtin_s390_vchlhs(__b, __a, &__cc);
39770b57cec5SDimitry Andric   return __cc == 0;
39780b57cec5SDimitry Andric }
39790b57cec5SDimitry Andric 
39800b57cec5SDimitry Andric // This prototype is deprecated.
39810b57cec5SDimitry Andric static inline __ATTRS_o_ai int
39825ffd83dbSDimitry Andric vec_all_lt(__vector unsigned short __a, __vector __bool short __b) {
39830b57cec5SDimitry Andric   int __cc;
39845ffd83dbSDimitry Andric   __builtin_s390_vchlhs((__vector unsigned short)__b, __a, &__cc);
39850b57cec5SDimitry Andric   return __cc == 0;
39860b57cec5SDimitry Andric }
39870b57cec5SDimitry Andric 
39880b57cec5SDimitry Andric // This prototype is deprecated.
39890b57cec5SDimitry Andric static inline __ATTRS_o_ai int
39905ffd83dbSDimitry Andric vec_all_lt(__vector __bool short __a, __vector unsigned short __b) {
39910b57cec5SDimitry Andric   int __cc;
39925ffd83dbSDimitry Andric   __builtin_s390_vchlhs(__b, (__vector unsigned short)__a, &__cc);
39930b57cec5SDimitry Andric   return __cc == 0;
39940b57cec5SDimitry Andric }
39950b57cec5SDimitry Andric 
39960b57cec5SDimitry Andric // This prototype is deprecated.
39970b57cec5SDimitry Andric static inline __ATTRS_o_ai int
39985ffd83dbSDimitry Andric vec_all_lt(__vector __bool short __a, __vector __bool short __b) {
39990b57cec5SDimitry Andric   int __cc;
40005ffd83dbSDimitry Andric   __builtin_s390_vchlhs((__vector unsigned short)__b,
40015ffd83dbSDimitry Andric                         (__vector unsigned short)__a, &__cc);
40020b57cec5SDimitry Andric   return __cc == 0;
40030b57cec5SDimitry Andric }
40040b57cec5SDimitry Andric 
40050b57cec5SDimitry Andric static inline __ATTRS_o_ai int
40065ffd83dbSDimitry Andric vec_all_lt(__vector signed int __a, __vector signed int __b) {
40070b57cec5SDimitry Andric   int __cc;
40080b57cec5SDimitry Andric   __builtin_s390_vchfs(__b, __a, &__cc);
40090b57cec5SDimitry Andric   return __cc == 0;
40100b57cec5SDimitry Andric }
40110b57cec5SDimitry Andric 
40120b57cec5SDimitry Andric // This prototype is deprecated.
40130b57cec5SDimitry Andric static inline __ATTRS_o_ai int
40145ffd83dbSDimitry Andric vec_all_lt(__vector signed int __a, __vector __bool int __b) {
40150b57cec5SDimitry Andric   int __cc;
40165ffd83dbSDimitry Andric   __builtin_s390_vchfs((__vector signed int)__b, __a, &__cc);
40170b57cec5SDimitry Andric   return __cc == 0;
40180b57cec5SDimitry Andric }
40190b57cec5SDimitry Andric 
40200b57cec5SDimitry Andric // This prototype is deprecated.
40210b57cec5SDimitry Andric static inline __ATTRS_o_ai int
40225ffd83dbSDimitry Andric vec_all_lt(__vector __bool int __a, __vector signed int __b) {
40230b57cec5SDimitry Andric   int __cc;
40245ffd83dbSDimitry Andric   __builtin_s390_vchfs(__b, (__vector signed int)__a, &__cc);
40250b57cec5SDimitry Andric   return __cc == 0;
40260b57cec5SDimitry Andric }
40270b57cec5SDimitry Andric 
40280b57cec5SDimitry Andric static inline __ATTRS_o_ai int
40295ffd83dbSDimitry Andric vec_all_lt(__vector unsigned int __a, __vector unsigned int __b) {
40300b57cec5SDimitry Andric   int __cc;
40310b57cec5SDimitry Andric   __builtin_s390_vchlfs(__b, __a, &__cc);
40320b57cec5SDimitry Andric   return __cc == 0;
40330b57cec5SDimitry Andric }
40340b57cec5SDimitry Andric 
40350b57cec5SDimitry Andric // This prototype is deprecated.
40360b57cec5SDimitry Andric static inline __ATTRS_o_ai int
40375ffd83dbSDimitry Andric vec_all_lt(__vector unsigned int __a, __vector __bool int __b) {
40380b57cec5SDimitry Andric   int __cc;
40395ffd83dbSDimitry Andric   __builtin_s390_vchlfs((__vector unsigned int)__b, __a, &__cc);
40400b57cec5SDimitry Andric   return __cc == 0;
40410b57cec5SDimitry Andric }
40420b57cec5SDimitry Andric 
40430b57cec5SDimitry Andric // This prototype is deprecated.
40440b57cec5SDimitry Andric static inline __ATTRS_o_ai int
40455ffd83dbSDimitry Andric vec_all_lt(__vector __bool int __a, __vector unsigned int __b) {
40460b57cec5SDimitry Andric   int __cc;
40475ffd83dbSDimitry Andric   __builtin_s390_vchlfs(__b, (__vector unsigned int)__a, &__cc);
40480b57cec5SDimitry Andric   return __cc == 0;
40490b57cec5SDimitry Andric }
40500b57cec5SDimitry Andric 
40510b57cec5SDimitry Andric // This prototype is deprecated.
40520b57cec5SDimitry Andric static inline __ATTRS_o_ai int
40535ffd83dbSDimitry Andric vec_all_lt(__vector __bool int __a, __vector __bool int __b) {
40540b57cec5SDimitry Andric   int __cc;
40555ffd83dbSDimitry Andric   __builtin_s390_vchlfs((__vector unsigned int)__b,
40565ffd83dbSDimitry Andric                         (__vector unsigned int)__a, &__cc);
40570b57cec5SDimitry Andric   return __cc == 0;
40580b57cec5SDimitry Andric }
40590b57cec5SDimitry Andric 
40600b57cec5SDimitry Andric static inline __ATTRS_o_ai int
40615ffd83dbSDimitry Andric vec_all_lt(__vector signed long long __a, __vector signed long long __b) {
40620b57cec5SDimitry Andric   int __cc;
40630b57cec5SDimitry Andric   __builtin_s390_vchgs(__b, __a, &__cc);
40640b57cec5SDimitry Andric   return __cc == 0;
40650b57cec5SDimitry Andric }
40660b57cec5SDimitry Andric 
40670b57cec5SDimitry Andric // This prototype is deprecated.
40680b57cec5SDimitry Andric static inline __ATTRS_o_ai int
40695ffd83dbSDimitry Andric vec_all_lt(__vector signed long long __a, __vector __bool long long __b) {
40700b57cec5SDimitry Andric   int __cc;
40715ffd83dbSDimitry Andric   __builtin_s390_vchgs((__vector signed long long)__b, __a, &__cc);
40720b57cec5SDimitry Andric   return __cc == 0;
40730b57cec5SDimitry Andric }
40740b57cec5SDimitry Andric 
40750b57cec5SDimitry Andric // This prototype is deprecated.
40760b57cec5SDimitry Andric static inline __ATTRS_o_ai int
40775ffd83dbSDimitry Andric vec_all_lt(__vector __bool long long __a, __vector signed long long __b) {
40780b57cec5SDimitry Andric   int __cc;
40795ffd83dbSDimitry Andric   __builtin_s390_vchgs(__b, (__vector signed long long)__a, &__cc);
40800b57cec5SDimitry Andric   return __cc == 0;
40810b57cec5SDimitry Andric }
40820b57cec5SDimitry Andric 
40830b57cec5SDimitry Andric static inline __ATTRS_o_ai int
40845ffd83dbSDimitry Andric vec_all_lt(__vector unsigned long long __a, __vector unsigned long long __b) {
40850b57cec5SDimitry Andric   int __cc;
40860b57cec5SDimitry Andric   __builtin_s390_vchlgs(__b, __a, &__cc);
40870b57cec5SDimitry Andric   return __cc == 0;
40880b57cec5SDimitry Andric }
40890b57cec5SDimitry Andric 
40900b57cec5SDimitry Andric // This prototype is deprecated.
40910b57cec5SDimitry Andric static inline __ATTRS_o_ai int
40925ffd83dbSDimitry Andric vec_all_lt(__vector unsigned long long __a, __vector __bool long long __b) {
40930b57cec5SDimitry Andric   int __cc;
40945ffd83dbSDimitry Andric   __builtin_s390_vchlgs((__vector unsigned long long)__b, __a, &__cc);
40950b57cec5SDimitry Andric   return __cc == 0;
40960b57cec5SDimitry Andric }
40970b57cec5SDimitry Andric 
40980b57cec5SDimitry Andric // This prototype is deprecated.
40990b57cec5SDimitry Andric static inline __ATTRS_o_ai int
41005ffd83dbSDimitry Andric vec_all_lt(__vector __bool long long __a, __vector unsigned long long __b) {
41010b57cec5SDimitry Andric   int __cc;
41025ffd83dbSDimitry Andric   __builtin_s390_vchlgs(__b, (__vector unsigned long long)__a, &__cc);
41030b57cec5SDimitry Andric   return __cc == 0;
41040b57cec5SDimitry Andric }
41050b57cec5SDimitry Andric 
41060b57cec5SDimitry Andric // This prototype is deprecated.
41070b57cec5SDimitry Andric static inline __ATTRS_o_ai int
41085ffd83dbSDimitry Andric vec_all_lt(__vector __bool long long __a, __vector __bool long long __b) {
41090b57cec5SDimitry Andric   int __cc;
41105ffd83dbSDimitry Andric   __builtin_s390_vchlgs((__vector unsigned long long)__b,
41115ffd83dbSDimitry Andric                         (__vector unsigned long long)__a, &__cc);
41120b57cec5SDimitry Andric   return __cc == 0;
41130b57cec5SDimitry Andric }
41140b57cec5SDimitry Andric 
41150b57cec5SDimitry Andric #if __ARCH__ >= 12
41160b57cec5SDimitry Andric static inline __ATTRS_o_ai int
41175ffd83dbSDimitry Andric vec_all_lt(__vector float __a, __vector float __b) {
41180b57cec5SDimitry Andric   int __cc;
41190b57cec5SDimitry Andric   __builtin_s390_vfchsbs(__b, __a, &__cc);
41200b57cec5SDimitry Andric   return __cc == 0;
41210b57cec5SDimitry Andric }
41220b57cec5SDimitry Andric #endif
41230b57cec5SDimitry Andric 
41240b57cec5SDimitry Andric static inline __ATTRS_o_ai int
41255ffd83dbSDimitry Andric vec_all_lt(__vector double __a, __vector double __b) {
41260b57cec5SDimitry Andric   int __cc;
41270b57cec5SDimitry Andric   __builtin_s390_vfchdbs(__b, __a, &__cc);
41280b57cec5SDimitry Andric   return __cc == 0;
41290b57cec5SDimitry Andric }
41300b57cec5SDimitry Andric 
41310b57cec5SDimitry Andric /*-- vec_all_nge ------------------------------------------------------------*/
41320b57cec5SDimitry Andric 
41330b57cec5SDimitry Andric #if __ARCH__ >= 12
41340b57cec5SDimitry Andric static inline __ATTRS_o_ai int
41355ffd83dbSDimitry Andric vec_all_nge(__vector float __a, __vector float __b) {
41360b57cec5SDimitry Andric   int __cc;
41370b57cec5SDimitry Andric   __builtin_s390_vfchesbs(__a, __b, &__cc);
41380b57cec5SDimitry Andric   return __cc == 3;
41390b57cec5SDimitry Andric }
41400b57cec5SDimitry Andric #endif
41410b57cec5SDimitry Andric 
41420b57cec5SDimitry Andric static inline __ATTRS_o_ai int
41435ffd83dbSDimitry Andric vec_all_nge(__vector double __a, __vector double __b) {
41440b57cec5SDimitry Andric   int __cc;
41450b57cec5SDimitry Andric   __builtin_s390_vfchedbs(__a, __b, &__cc);
41460b57cec5SDimitry Andric   return __cc == 3;
41470b57cec5SDimitry Andric }
41480b57cec5SDimitry Andric 
41490b57cec5SDimitry Andric /*-- vec_all_ngt ------------------------------------------------------------*/
41500b57cec5SDimitry Andric 
41510b57cec5SDimitry Andric #if __ARCH__ >= 12
41520b57cec5SDimitry Andric static inline __ATTRS_o_ai int
41535ffd83dbSDimitry Andric vec_all_ngt(__vector float __a, __vector float __b) {
41540b57cec5SDimitry Andric   int __cc;
41550b57cec5SDimitry Andric   __builtin_s390_vfchsbs(__a, __b, &__cc);
41560b57cec5SDimitry Andric   return __cc == 3;
41570b57cec5SDimitry Andric }
41580b57cec5SDimitry Andric #endif
41590b57cec5SDimitry Andric 
41600b57cec5SDimitry Andric static inline __ATTRS_o_ai int
41615ffd83dbSDimitry Andric vec_all_ngt(__vector double __a, __vector double __b) {
41620b57cec5SDimitry Andric   int __cc;
41630b57cec5SDimitry Andric   __builtin_s390_vfchdbs(__a, __b, &__cc);
41640b57cec5SDimitry Andric   return __cc == 3;
41650b57cec5SDimitry Andric }
41660b57cec5SDimitry Andric 
41670b57cec5SDimitry Andric /*-- vec_all_nle ------------------------------------------------------------*/
41680b57cec5SDimitry Andric 
41690b57cec5SDimitry Andric #if __ARCH__ >= 12
41700b57cec5SDimitry Andric static inline __ATTRS_o_ai int
41715ffd83dbSDimitry Andric vec_all_nle(__vector float __a, __vector float __b) {
41720b57cec5SDimitry Andric   int __cc;
41730b57cec5SDimitry Andric   __builtin_s390_vfchesbs(__b, __a, &__cc);
41740b57cec5SDimitry Andric   return __cc == 3;
41750b57cec5SDimitry Andric }
41760b57cec5SDimitry Andric #endif
41770b57cec5SDimitry Andric 
41780b57cec5SDimitry Andric static inline __ATTRS_o_ai int
41795ffd83dbSDimitry Andric vec_all_nle(__vector double __a, __vector double __b) {
41800b57cec5SDimitry Andric   int __cc;
41810b57cec5SDimitry Andric   __builtin_s390_vfchedbs(__b, __a, &__cc);
41820b57cec5SDimitry Andric   return __cc == 3;
41830b57cec5SDimitry Andric }
41840b57cec5SDimitry Andric 
41850b57cec5SDimitry Andric /*-- vec_all_nlt ------------------------------------------------------------*/
41860b57cec5SDimitry Andric 
41870b57cec5SDimitry Andric #if __ARCH__ >= 12
41880b57cec5SDimitry Andric static inline __ATTRS_o_ai int
41895ffd83dbSDimitry Andric vec_all_nlt(__vector float __a, __vector float __b) {
41900b57cec5SDimitry Andric   int __cc;
41910b57cec5SDimitry Andric   __builtin_s390_vfchsbs(__b, __a, &__cc);
41920b57cec5SDimitry Andric   return __cc == 3;
41930b57cec5SDimitry Andric }
41940b57cec5SDimitry Andric #endif
41950b57cec5SDimitry Andric 
41960b57cec5SDimitry Andric static inline __ATTRS_o_ai int
41975ffd83dbSDimitry Andric vec_all_nlt(__vector double __a, __vector double __b) {
41980b57cec5SDimitry Andric   int __cc;
41990b57cec5SDimitry Andric   __builtin_s390_vfchdbs(__b, __a, &__cc);
42000b57cec5SDimitry Andric   return __cc == 3;
42010b57cec5SDimitry Andric }
42020b57cec5SDimitry Andric 
42030b57cec5SDimitry Andric /*-- vec_all_nan ------------------------------------------------------------*/
42040b57cec5SDimitry Andric 
42050b57cec5SDimitry Andric #if __ARCH__ >= 12
42060b57cec5SDimitry Andric static inline __ATTRS_o_ai int
42075ffd83dbSDimitry Andric vec_all_nan(__vector float __a) {
42080b57cec5SDimitry Andric   int __cc;
42090b57cec5SDimitry Andric   __builtin_s390_vftcisb(__a, 15, &__cc);
42100b57cec5SDimitry Andric   return __cc == 0;
42110b57cec5SDimitry Andric }
42120b57cec5SDimitry Andric #endif
42130b57cec5SDimitry Andric 
42140b57cec5SDimitry Andric static inline __ATTRS_o_ai int
42155ffd83dbSDimitry Andric vec_all_nan(__vector double __a) {
42160b57cec5SDimitry Andric   int __cc;
42170b57cec5SDimitry Andric   __builtin_s390_vftcidb(__a, 15, &__cc);
42180b57cec5SDimitry Andric   return __cc == 0;
42190b57cec5SDimitry Andric }
42200b57cec5SDimitry Andric 
42210b57cec5SDimitry Andric /*-- vec_all_numeric --------------------------------------------------------*/
42220b57cec5SDimitry Andric 
42230b57cec5SDimitry Andric #if __ARCH__ >= 12
42240b57cec5SDimitry Andric static inline __ATTRS_o_ai int
42255ffd83dbSDimitry Andric vec_all_numeric(__vector float __a) {
42260b57cec5SDimitry Andric   int __cc;
42270b57cec5SDimitry Andric   __builtin_s390_vftcisb(__a, 15, &__cc);
42280b57cec5SDimitry Andric   return __cc == 3;
42290b57cec5SDimitry Andric }
42300b57cec5SDimitry Andric #endif
42310b57cec5SDimitry Andric 
42320b57cec5SDimitry Andric static inline __ATTRS_o_ai int
42335ffd83dbSDimitry Andric vec_all_numeric(__vector double __a) {
42340b57cec5SDimitry Andric   int __cc;
42350b57cec5SDimitry Andric   __builtin_s390_vftcidb(__a, 15, &__cc);
42360b57cec5SDimitry Andric   return __cc == 3;
42370b57cec5SDimitry Andric }
42380b57cec5SDimitry Andric 
42390b57cec5SDimitry Andric /*-- vec_any_eq -------------------------------------------------------------*/
42400b57cec5SDimitry Andric 
42410b57cec5SDimitry Andric static inline __ATTRS_o_ai int
42425ffd83dbSDimitry Andric vec_any_eq(__vector signed char __a, __vector signed char __b) {
42430b57cec5SDimitry Andric   int __cc;
42440b57cec5SDimitry Andric   __builtin_s390_vceqbs(__a, __b, &__cc);
42450b57cec5SDimitry Andric   return __cc <= 1;
42460b57cec5SDimitry Andric }
42470b57cec5SDimitry Andric 
42480b57cec5SDimitry Andric // This prototype is deprecated.
42490b57cec5SDimitry Andric static inline __ATTRS_o_ai int
42505ffd83dbSDimitry Andric vec_any_eq(__vector signed char __a, __vector __bool char __b) {
42510b57cec5SDimitry Andric   int __cc;
42525ffd83dbSDimitry Andric   __builtin_s390_vceqbs(__a, (__vector signed char)__b, &__cc);
42530b57cec5SDimitry Andric   return __cc <= 1;
42540b57cec5SDimitry Andric }
42550b57cec5SDimitry Andric 
42560b57cec5SDimitry Andric // This prototype is deprecated.
42570b57cec5SDimitry Andric static inline __ATTRS_o_ai int
42585ffd83dbSDimitry Andric vec_any_eq(__vector __bool char __a, __vector signed char __b) {
42590b57cec5SDimitry Andric   int __cc;
42605ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a, __b, &__cc);
42610b57cec5SDimitry Andric   return __cc <= 1;
42620b57cec5SDimitry Andric }
42630b57cec5SDimitry Andric 
42640b57cec5SDimitry Andric static inline __ATTRS_o_ai int
42655ffd83dbSDimitry Andric vec_any_eq(__vector unsigned char __a, __vector unsigned char __b) {
42660b57cec5SDimitry Andric   int __cc;
42675ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a,
42685ffd83dbSDimitry Andric                         (__vector signed char)__b, &__cc);
42690b57cec5SDimitry Andric   return __cc <= 1;
42700b57cec5SDimitry Andric }
42710b57cec5SDimitry Andric 
42720b57cec5SDimitry Andric // This prototype is deprecated.
42730b57cec5SDimitry Andric static inline __ATTRS_o_ai int
42745ffd83dbSDimitry Andric vec_any_eq(__vector unsigned char __a, __vector __bool char __b) {
42750b57cec5SDimitry Andric   int __cc;
42765ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a,
42775ffd83dbSDimitry Andric                         (__vector signed char)__b, &__cc);
42780b57cec5SDimitry Andric   return __cc <= 1;
42790b57cec5SDimitry Andric }
42800b57cec5SDimitry Andric 
42810b57cec5SDimitry Andric // This prototype is deprecated.
42820b57cec5SDimitry Andric static inline __ATTRS_o_ai int
42835ffd83dbSDimitry Andric vec_any_eq(__vector __bool char __a, __vector unsigned char __b) {
42840b57cec5SDimitry Andric   int __cc;
42855ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a,
42865ffd83dbSDimitry Andric                         (__vector signed char)__b, &__cc);
42870b57cec5SDimitry Andric   return __cc <= 1;
42880b57cec5SDimitry Andric }
42890b57cec5SDimitry Andric 
42900b57cec5SDimitry Andric static inline __ATTRS_o_ai int
42915ffd83dbSDimitry Andric vec_any_eq(__vector __bool char __a, __vector __bool char __b) {
42920b57cec5SDimitry Andric   int __cc;
42935ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a,
42945ffd83dbSDimitry Andric                         (__vector signed char)__b, &__cc);
42950b57cec5SDimitry Andric   return __cc <= 1;
42960b57cec5SDimitry Andric }
42970b57cec5SDimitry Andric 
42980b57cec5SDimitry Andric static inline __ATTRS_o_ai int
42995ffd83dbSDimitry Andric vec_any_eq(__vector signed short __a, __vector signed short __b) {
43000b57cec5SDimitry Andric   int __cc;
43010b57cec5SDimitry Andric   __builtin_s390_vceqhs(__a, __b, &__cc);
43020b57cec5SDimitry Andric   return __cc <= 1;
43030b57cec5SDimitry Andric }
43040b57cec5SDimitry Andric 
43050b57cec5SDimitry Andric // This prototype is deprecated.
43060b57cec5SDimitry Andric static inline __ATTRS_o_ai int
43075ffd83dbSDimitry Andric vec_any_eq(__vector signed short __a, __vector __bool short __b) {
43080b57cec5SDimitry Andric   int __cc;
43095ffd83dbSDimitry Andric   __builtin_s390_vceqhs(__a, (__vector signed short)__b, &__cc);
43100b57cec5SDimitry Andric   return __cc <= 1;
43110b57cec5SDimitry Andric }
43120b57cec5SDimitry Andric 
43130b57cec5SDimitry Andric // This prototype is deprecated.
43140b57cec5SDimitry Andric static inline __ATTRS_o_ai int
43155ffd83dbSDimitry Andric vec_any_eq(__vector __bool short __a, __vector signed short __b) {
43160b57cec5SDimitry Andric   int __cc;
43175ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a, __b, &__cc);
43180b57cec5SDimitry Andric   return __cc <= 1;
43190b57cec5SDimitry Andric }
43200b57cec5SDimitry Andric 
43210b57cec5SDimitry Andric static inline __ATTRS_o_ai int
43225ffd83dbSDimitry Andric vec_any_eq(__vector unsigned short __a, __vector unsigned short __b) {
43230b57cec5SDimitry Andric   int __cc;
43245ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a,
43255ffd83dbSDimitry Andric                         (__vector signed short)__b, &__cc);
43260b57cec5SDimitry Andric   return __cc <= 1;
43270b57cec5SDimitry Andric }
43280b57cec5SDimitry Andric 
43290b57cec5SDimitry Andric // This prototype is deprecated.
43300b57cec5SDimitry Andric static inline __ATTRS_o_ai int
43315ffd83dbSDimitry Andric vec_any_eq(__vector unsigned short __a, __vector __bool short __b) {
43320b57cec5SDimitry Andric   int __cc;
43335ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a,
43345ffd83dbSDimitry Andric                         (__vector signed short)__b, &__cc);
43350b57cec5SDimitry Andric   return __cc <= 1;
43360b57cec5SDimitry Andric }
43370b57cec5SDimitry Andric 
43380b57cec5SDimitry Andric // This prototype is deprecated.
43390b57cec5SDimitry Andric static inline __ATTRS_o_ai int
43405ffd83dbSDimitry Andric vec_any_eq(__vector __bool short __a, __vector unsigned short __b) {
43410b57cec5SDimitry Andric   int __cc;
43425ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a,
43435ffd83dbSDimitry Andric                         (__vector signed short)__b, &__cc);
43440b57cec5SDimitry Andric   return __cc <= 1;
43450b57cec5SDimitry Andric }
43460b57cec5SDimitry Andric 
43470b57cec5SDimitry Andric static inline __ATTRS_o_ai int
43485ffd83dbSDimitry Andric vec_any_eq(__vector __bool short __a, __vector __bool short __b) {
43490b57cec5SDimitry Andric   int __cc;
43505ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a,
43515ffd83dbSDimitry Andric                         (__vector signed short)__b, &__cc);
43520b57cec5SDimitry Andric   return __cc <= 1;
43530b57cec5SDimitry Andric }
43540b57cec5SDimitry Andric 
43550b57cec5SDimitry Andric static inline __ATTRS_o_ai int
43565ffd83dbSDimitry Andric vec_any_eq(__vector signed int __a, __vector signed int __b) {
43570b57cec5SDimitry Andric   int __cc;
43580b57cec5SDimitry Andric   __builtin_s390_vceqfs(__a, __b, &__cc);
43590b57cec5SDimitry Andric   return __cc <= 1;
43600b57cec5SDimitry Andric }
43610b57cec5SDimitry Andric 
43620b57cec5SDimitry Andric // This prototype is deprecated.
43630b57cec5SDimitry Andric static inline __ATTRS_o_ai int
43645ffd83dbSDimitry Andric vec_any_eq(__vector signed int __a, __vector __bool int __b) {
43650b57cec5SDimitry Andric   int __cc;
43665ffd83dbSDimitry Andric   __builtin_s390_vceqfs(__a, (__vector signed int)__b, &__cc);
43670b57cec5SDimitry Andric   return __cc <= 1;
43680b57cec5SDimitry Andric }
43690b57cec5SDimitry Andric 
43700b57cec5SDimitry Andric // This prototype is deprecated.
43710b57cec5SDimitry Andric static inline __ATTRS_o_ai int
43725ffd83dbSDimitry Andric vec_any_eq(__vector __bool int __a, __vector signed int __b) {
43730b57cec5SDimitry Andric   int __cc;
43745ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a, __b, &__cc);
43750b57cec5SDimitry Andric   return __cc <= 1;
43760b57cec5SDimitry Andric }
43770b57cec5SDimitry Andric 
43780b57cec5SDimitry Andric static inline __ATTRS_o_ai int
43795ffd83dbSDimitry Andric vec_any_eq(__vector unsigned int __a, __vector unsigned int __b) {
43800b57cec5SDimitry Andric   int __cc;
43815ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a,
43825ffd83dbSDimitry Andric                         (__vector signed int)__b, &__cc);
43830b57cec5SDimitry Andric   return __cc <= 1;
43840b57cec5SDimitry Andric }
43850b57cec5SDimitry Andric 
43860b57cec5SDimitry Andric // This prototype is deprecated.
43870b57cec5SDimitry Andric static inline __ATTRS_o_ai int
43885ffd83dbSDimitry Andric vec_any_eq(__vector unsigned int __a, __vector __bool int __b) {
43890b57cec5SDimitry Andric   int __cc;
43905ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a,
43915ffd83dbSDimitry Andric                         (__vector signed int)__b, &__cc);
43920b57cec5SDimitry Andric   return __cc <= 1;
43930b57cec5SDimitry Andric }
43940b57cec5SDimitry Andric 
43950b57cec5SDimitry Andric // This prototype is deprecated.
43960b57cec5SDimitry Andric static inline __ATTRS_o_ai int
43975ffd83dbSDimitry Andric vec_any_eq(__vector __bool int __a, __vector unsigned int __b) {
43980b57cec5SDimitry Andric   int __cc;
43995ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a,
44005ffd83dbSDimitry Andric                         (__vector signed int)__b, &__cc);
44010b57cec5SDimitry Andric   return __cc <= 1;
44020b57cec5SDimitry Andric }
44030b57cec5SDimitry Andric 
44040b57cec5SDimitry Andric static inline __ATTRS_o_ai int
44055ffd83dbSDimitry Andric vec_any_eq(__vector __bool int __a, __vector __bool int __b) {
44060b57cec5SDimitry Andric   int __cc;
44075ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a,
44085ffd83dbSDimitry Andric                         (__vector signed int)__b, &__cc);
44090b57cec5SDimitry Andric   return __cc <= 1;
44100b57cec5SDimitry Andric }
44110b57cec5SDimitry Andric 
44120b57cec5SDimitry Andric static inline __ATTRS_o_ai int
44135ffd83dbSDimitry Andric vec_any_eq(__vector signed long long __a, __vector signed long long __b) {
44140b57cec5SDimitry Andric   int __cc;
44150b57cec5SDimitry Andric   __builtin_s390_vceqgs(__a, __b, &__cc);
44160b57cec5SDimitry Andric   return __cc <= 1;
44170b57cec5SDimitry Andric }
44180b57cec5SDimitry Andric 
44190b57cec5SDimitry Andric // This prototype is deprecated.
44200b57cec5SDimitry Andric static inline __ATTRS_o_ai int
44215ffd83dbSDimitry Andric vec_any_eq(__vector signed long long __a, __vector __bool long long __b) {
44220b57cec5SDimitry Andric   int __cc;
44235ffd83dbSDimitry Andric   __builtin_s390_vceqgs(__a, (__vector signed long long)__b, &__cc);
44240b57cec5SDimitry Andric   return __cc <= 1;
44250b57cec5SDimitry Andric }
44260b57cec5SDimitry Andric 
44270b57cec5SDimitry Andric // This prototype is deprecated.
44280b57cec5SDimitry Andric static inline __ATTRS_o_ai int
44295ffd83dbSDimitry Andric vec_any_eq(__vector __bool long long __a, __vector signed long long __b) {
44300b57cec5SDimitry Andric   int __cc;
44315ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a, __b, &__cc);
44320b57cec5SDimitry Andric   return __cc <= 1;
44330b57cec5SDimitry Andric }
44340b57cec5SDimitry Andric 
44350b57cec5SDimitry Andric static inline __ATTRS_o_ai int
44365ffd83dbSDimitry Andric vec_any_eq(__vector unsigned long long __a, __vector unsigned long long __b) {
44370b57cec5SDimitry Andric   int __cc;
44385ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a,
44395ffd83dbSDimitry Andric                         (__vector signed long long)__b, &__cc);
44400b57cec5SDimitry Andric   return __cc <= 1;
44410b57cec5SDimitry Andric }
44420b57cec5SDimitry Andric 
44430b57cec5SDimitry Andric // This prototype is deprecated.
44440b57cec5SDimitry Andric static inline __ATTRS_o_ai int
44455ffd83dbSDimitry Andric vec_any_eq(__vector unsigned long long __a, __vector __bool long long __b) {
44460b57cec5SDimitry Andric   int __cc;
44475ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a,
44485ffd83dbSDimitry Andric                         (__vector signed long long)__b, &__cc);
44490b57cec5SDimitry Andric   return __cc <= 1;
44500b57cec5SDimitry Andric }
44510b57cec5SDimitry Andric 
44520b57cec5SDimitry Andric // This prototype is deprecated.
44530b57cec5SDimitry Andric static inline __ATTRS_o_ai int
44545ffd83dbSDimitry Andric vec_any_eq(__vector __bool long long __a, __vector unsigned long long __b) {
44550b57cec5SDimitry Andric   int __cc;
44565ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a,
44575ffd83dbSDimitry Andric                         (__vector signed long long)__b, &__cc);
44580b57cec5SDimitry Andric   return __cc <= 1;
44590b57cec5SDimitry Andric }
44600b57cec5SDimitry Andric 
44610b57cec5SDimitry Andric static inline __ATTRS_o_ai int
44625ffd83dbSDimitry Andric vec_any_eq(__vector __bool long long __a, __vector __bool long long __b) {
44630b57cec5SDimitry Andric   int __cc;
44645ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a,
44655ffd83dbSDimitry Andric                         (__vector signed long long)__b, &__cc);
44660b57cec5SDimitry Andric   return __cc <= 1;
44670b57cec5SDimitry Andric }
44680b57cec5SDimitry Andric 
44690b57cec5SDimitry Andric #if __ARCH__ >= 12
44700b57cec5SDimitry Andric static inline __ATTRS_o_ai int
44715ffd83dbSDimitry Andric vec_any_eq(__vector float __a, __vector float __b) {
44720b57cec5SDimitry Andric   int __cc;
44730b57cec5SDimitry Andric   __builtin_s390_vfcesbs(__a, __b, &__cc);
44740b57cec5SDimitry Andric   return __cc <= 1;
44750b57cec5SDimitry Andric }
44760b57cec5SDimitry Andric #endif
44770b57cec5SDimitry Andric 
44780b57cec5SDimitry Andric static inline __ATTRS_o_ai int
44795ffd83dbSDimitry Andric vec_any_eq(__vector double __a, __vector double __b) {
44800b57cec5SDimitry Andric   int __cc;
44810b57cec5SDimitry Andric   __builtin_s390_vfcedbs(__a, __b, &__cc);
44820b57cec5SDimitry Andric   return __cc <= 1;
44830b57cec5SDimitry Andric }
44840b57cec5SDimitry Andric 
44850b57cec5SDimitry Andric /*-- vec_any_ne -------------------------------------------------------------*/
44860b57cec5SDimitry Andric 
44870b57cec5SDimitry Andric static inline __ATTRS_o_ai int
44885ffd83dbSDimitry Andric vec_any_ne(__vector signed char __a, __vector signed char __b) {
44890b57cec5SDimitry Andric   int __cc;
44900b57cec5SDimitry Andric   __builtin_s390_vceqbs(__a, __b, &__cc);
44910b57cec5SDimitry Andric   return __cc != 0;
44920b57cec5SDimitry Andric }
44930b57cec5SDimitry Andric 
44940b57cec5SDimitry Andric // This prototype is deprecated.
44950b57cec5SDimitry Andric static inline __ATTRS_o_ai int
44965ffd83dbSDimitry Andric vec_any_ne(__vector signed char __a, __vector __bool char __b) {
44970b57cec5SDimitry Andric   int __cc;
44985ffd83dbSDimitry Andric   __builtin_s390_vceqbs(__a, (__vector signed char)__b, &__cc);
44990b57cec5SDimitry Andric   return __cc != 0;
45000b57cec5SDimitry Andric }
45010b57cec5SDimitry Andric 
45020b57cec5SDimitry Andric // This prototype is deprecated.
45030b57cec5SDimitry Andric static inline __ATTRS_o_ai int
45045ffd83dbSDimitry Andric vec_any_ne(__vector __bool char __a, __vector signed char __b) {
45050b57cec5SDimitry Andric   int __cc;
45065ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a, __b, &__cc);
45070b57cec5SDimitry Andric   return __cc != 0;
45080b57cec5SDimitry Andric }
45090b57cec5SDimitry Andric 
45100b57cec5SDimitry Andric static inline __ATTRS_o_ai int
45115ffd83dbSDimitry Andric vec_any_ne(__vector unsigned char __a, __vector unsigned char __b) {
45120b57cec5SDimitry Andric   int __cc;
45135ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a,
45145ffd83dbSDimitry Andric                         (__vector signed char)__b, &__cc);
45150b57cec5SDimitry Andric   return __cc != 0;
45160b57cec5SDimitry Andric }
45170b57cec5SDimitry Andric 
45180b57cec5SDimitry Andric // This prototype is deprecated.
45190b57cec5SDimitry Andric static inline __ATTRS_o_ai int
45205ffd83dbSDimitry Andric vec_any_ne(__vector unsigned char __a, __vector __bool char __b) {
45210b57cec5SDimitry Andric   int __cc;
45225ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a,
45235ffd83dbSDimitry Andric                         (__vector signed char)__b, &__cc);
45240b57cec5SDimitry Andric   return __cc != 0;
45250b57cec5SDimitry Andric }
45260b57cec5SDimitry Andric 
45270b57cec5SDimitry Andric // This prototype is deprecated.
45280b57cec5SDimitry Andric static inline __ATTRS_o_ai int
45295ffd83dbSDimitry Andric vec_any_ne(__vector __bool char __a, __vector unsigned char __b) {
45300b57cec5SDimitry Andric   int __cc;
45315ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a,
45325ffd83dbSDimitry Andric                         (__vector signed char)__b, &__cc);
45330b57cec5SDimitry Andric   return __cc != 0;
45340b57cec5SDimitry Andric }
45350b57cec5SDimitry Andric 
45360b57cec5SDimitry Andric static inline __ATTRS_o_ai int
45375ffd83dbSDimitry Andric vec_any_ne(__vector __bool char __a, __vector __bool char __b) {
45380b57cec5SDimitry Andric   int __cc;
45395ffd83dbSDimitry Andric   __builtin_s390_vceqbs((__vector signed char)__a,
45405ffd83dbSDimitry Andric                         (__vector signed char)__b, &__cc);
45410b57cec5SDimitry Andric   return __cc != 0;
45420b57cec5SDimitry Andric }
45430b57cec5SDimitry Andric 
45440b57cec5SDimitry Andric static inline __ATTRS_o_ai int
45455ffd83dbSDimitry Andric vec_any_ne(__vector signed short __a, __vector signed short __b) {
45460b57cec5SDimitry Andric   int __cc;
45470b57cec5SDimitry Andric   __builtin_s390_vceqhs(__a, __b, &__cc);
45480b57cec5SDimitry Andric   return __cc != 0;
45490b57cec5SDimitry Andric }
45500b57cec5SDimitry Andric 
45510b57cec5SDimitry Andric // This prototype is deprecated.
45520b57cec5SDimitry Andric static inline __ATTRS_o_ai int
45535ffd83dbSDimitry Andric vec_any_ne(__vector signed short __a, __vector __bool short __b) {
45540b57cec5SDimitry Andric   int __cc;
45555ffd83dbSDimitry Andric   __builtin_s390_vceqhs(__a, (__vector signed short)__b, &__cc);
45560b57cec5SDimitry Andric   return __cc != 0;
45570b57cec5SDimitry Andric }
45580b57cec5SDimitry Andric 
45590b57cec5SDimitry Andric // This prototype is deprecated.
45600b57cec5SDimitry Andric static inline __ATTRS_o_ai int
45615ffd83dbSDimitry Andric vec_any_ne(__vector __bool short __a, __vector signed short __b) {
45620b57cec5SDimitry Andric   int __cc;
45635ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a, __b, &__cc);
45640b57cec5SDimitry Andric   return __cc != 0;
45650b57cec5SDimitry Andric }
45660b57cec5SDimitry Andric 
45670b57cec5SDimitry Andric static inline __ATTRS_o_ai int
45685ffd83dbSDimitry Andric vec_any_ne(__vector unsigned short __a, __vector unsigned short __b) {
45690b57cec5SDimitry Andric   int __cc;
45705ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a,
45715ffd83dbSDimitry Andric                         (__vector signed short)__b, &__cc);
45720b57cec5SDimitry Andric   return __cc != 0;
45730b57cec5SDimitry Andric }
45740b57cec5SDimitry Andric 
45750b57cec5SDimitry Andric // This prototype is deprecated.
45760b57cec5SDimitry Andric static inline __ATTRS_o_ai int
45775ffd83dbSDimitry Andric vec_any_ne(__vector unsigned short __a, __vector __bool short __b) {
45780b57cec5SDimitry Andric   int __cc;
45795ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a,
45805ffd83dbSDimitry Andric                         (__vector signed short)__b, &__cc);
45810b57cec5SDimitry Andric   return __cc != 0;
45820b57cec5SDimitry Andric }
45830b57cec5SDimitry Andric 
45840b57cec5SDimitry Andric // This prototype is deprecated.
45850b57cec5SDimitry Andric static inline __ATTRS_o_ai int
45865ffd83dbSDimitry Andric vec_any_ne(__vector __bool short __a, __vector unsigned short __b) {
45870b57cec5SDimitry Andric   int __cc;
45885ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a,
45895ffd83dbSDimitry Andric                         (__vector signed short)__b, &__cc);
45900b57cec5SDimitry Andric   return __cc != 0;
45910b57cec5SDimitry Andric }
45920b57cec5SDimitry Andric 
45930b57cec5SDimitry Andric static inline __ATTRS_o_ai int
45945ffd83dbSDimitry Andric vec_any_ne(__vector __bool short __a, __vector __bool short __b) {
45950b57cec5SDimitry Andric   int __cc;
45965ffd83dbSDimitry Andric   __builtin_s390_vceqhs((__vector signed short)__a,
45975ffd83dbSDimitry Andric                         (__vector signed short)__b, &__cc);
45980b57cec5SDimitry Andric   return __cc != 0;
45990b57cec5SDimitry Andric }
46000b57cec5SDimitry Andric 
46010b57cec5SDimitry Andric static inline __ATTRS_o_ai int
46025ffd83dbSDimitry Andric vec_any_ne(__vector signed int __a, __vector signed int __b) {
46030b57cec5SDimitry Andric   int __cc;
46040b57cec5SDimitry Andric   __builtin_s390_vceqfs(__a, __b, &__cc);
46050b57cec5SDimitry Andric   return __cc != 0;
46060b57cec5SDimitry Andric }
46070b57cec5SDimitry Andric 
46080b57cec5SDimitry Andric // This prototype is deprecated.
46090b57cec5SDimitry Andric static inline __ATTRS_o_ai int
46105ffd83dbSDimitry Andric vec_any_ne(__vector signed int __a, __vector __bool int __b) {
46110b57cec5SDimitry Andric   int __cc;
46125ffd83dbSDimitry Andric   __builtin_s390_vceqfs(__a, (__vector signed int)__b, &__cc);
46130b57cec5SDimitry Andric   return __cc != 0;
46140b57cec5SDimitry Andric }
46150b57cec5SDimitry Andric 
46160b57cec5SDimitry Andric // This prototype is deprecated.
46170b57cec5SDimitry Andric static inline __ATTRS_o_ai int
46185ffd83dbSDimitry Andric vec_any_ne(__vector __bool int __a, __vector signed int __b) {
46190b57cec5SDimitry Andric   int __cc;
46205ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a, __b, &__cc);
46210b57cec5SDimitry Andric   return __cc != 0;
46220b57cec5SDimitry Andric }
46230b57cec5SDimitry Andric 
46240b57cec5SDimitry Andric static inline __ATTRS_o_ai int
46255ffd83dbSDimitry Andric vec_any_ne(__vector unsigned int __a, __vector unsigned int __b) {
46260b57cec5SDimitry Andric   int __cc;
46275ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a,
46285ffd83dbSDimitry Andric                         (__vector signed int)__b, &__cc);
46290b57cec5SDimitry Andric   return __cc != 0;
46300b57cec5SDimitry Andric }
46310b57cec5SDimitry Andric 
46320b57cec5SDimitry Andric // This prototype is deprecated.
46330b57cec5SDimitry Andric static inline __ATTRS_o_ai int
46345ffd83dbSDimitry Andric vec_any_ne(__vector unsigned int __a, __vector __bool int __b) {
46350b57cec5SDimitry Andric   int __cc;
46365ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a,
46375ffd83dbSDimitry Andric                         (__vector signed int)__b, &__cc);
46380b57cec5SDimitry Andric   return __cc != 0;
46390b57cec5SDimitry Andric }
46400b57cec5SDimitry Andric 
46410b57cec5SDimitry Andric // This prototype is deprecated.
46420b57cec5SDimitry Andric static inline __ATTRS_o_ai int
46435ffd83dbSDimitry Andric vec_any_ne(__vector __bool int __a, __vector unsigned int __b) {
46440b57cec5SDimitry Andric   int __cc;
46455ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a,
46465ffd83dbSDimitry Andric                         (__vector signed int)__b, &__cc);
46470b57cec5SDimitry Andric   return __cc != 0;
46480b57cec5SDimitry Andric }
46490b57cec5SDimitry Andric 
46500b57cec5SDimitry Andric static inline __ATTRS_o_ai int
46515ffd83dbSDimitry Andric vec_any_ne(__vector __bool int __a, __vector __bool int __b) {
46520b57cec5SDimitry Andric   int __cc;
46535ffd83dbSDimitry Andric   __builtin_s390_vceqfs((__vector signed int)__a,
46545ffd83dbSDimitry Andric                         (__vector signed int)__b, &__cc);
46550b57cec5SDimitry Andric   return __cc != 0;
46560b57cec5SDimitry Andric }
46570b57cec5SDimitry Andric 
46580b57cec5SDimitry Andric static inline __ATTRS_o_ai int
46595ffd83dbSDimitry Andric vec_any_ne(__vector signed long long __a, __vector signed long long __b) {
46600b57cec5SDimitry Andric   int __cc;
46610b57cec5SDimitry Andric   __builtin_s390_vceqgs(__a, __b, &__cc);
46620b57cec5SDimitry Andric   return __cc != 0;
46630b57cec5SDimitry Andric }
46640b57cec5SDimitry Andric 
46650b57cec5SDimitry Andric // This prototype is deprecated.
46660b57cec5SDimitry Andric static inline __ATTRS_o_ai int
46675ffd83dbSDimitry Andric vec_any_ne(__vector signed long long __a, __vector __bool long long __b) {
46680b57cec5SDimitry Andric   int __cc;
46695ffd83dbSDimitry Andric   __builtin_s390_vceqgs(__a, (__vector signed long long)__b, &__cc);
46700b57cec5SDimitry Andric   return __cc != 0;
46710b57cec5SDimitry Andric }
46720b57cec5SDimitry Andric 
46730b57cec5SDimitry Andric // This prototype is deprecated.
46740b57cec5SDimitry Andric static inline __ATTRS_o_ai int
46755ffd83dbSDimitry Andric vec_any_ne(__vector __bool long long __a, __vector signed long long __b) {
46760b57cec5SDimitry Andric   int __cc;
46775ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a, __b, &__cc);
46780b57cec5SDimitry Andric   return __cc != 0;
46790b57cec5SDimitry Andric }
46800b57cec5SDimitry Andric 
46810b57cec5SDimitry Andric static inline __ATTRS_o_ai int
46825ffd83dbSDimitry Andric vec_any_ne(__vector unsigned long long __a, __vector unsigned long long __b) {
46830b57cec5SDimitry Andric   int __cc;
46845ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a,
46855ffd83dbSDimitry Andric                         (__vector signed long long)__b, &__cc);
46860b57cec5SDimitry Andric   return __cc != 0;
46870b57cec5SDimitry Andric }
46880b57cec5SDimitry Andric 
46890b57cec5SDimitry Andric // This prototype is deprecated.
46900b57cec5SDimitry Andric static inline __ATTRS_o_ai int
46915ffd83dbSDimitry Andric vec_any_ne(__vector unsigned long long __a, __vector __bool long long __b) {
46920b57cec5SDimitry Andric   int __cc;
46935ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a,
46945ffd83dbSDimitry Andric                         (__vector signed long long)__b, &__cc);
46950b57cec5SDimitry Andric   return __cc != 0;
46960b57cec5SDimitry Andric }
46970b57cec5SDimitry Andric 
46980b57cec5SDimitry Andric // This prototype is deprecated.
46990b57cec5SDimitry Andric static inline __ATTRS_o_ai int
47005ffd83dbSDimitry Andric vec_any_ne(__vector __bool long long __a, __vector unsigned long long __b) {
47010b57cec5SDimitry Andric   int __cc;
47025ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a,
47035ffd83dbSDimitry Andric                         (__vector signed long long)__b, &__cc);
47040b57cec5SDimitry Andric   return __cc != 0;
47050b57cec5SDimitry Andric }
47060b57cec5SDimitry Andric 
47070b57cec5SDimitry Andric static inline __ATTRS_o_ai int
47085ffd83dbSDimitry Andric vec_any_ne(__vector __bool long long __a, __vector __bool long long __b) {
47090b57cec5SDimitry Andric   int __cc;
47105ffd83dbSDimitry Andric   __builtin_s390_vceqgs((__vector signed long long)__a,
47115ffd83dbSDimitry Andric                         (__vector signed long long)__b, &__cc);
47120b57cec5SDimitry Andric   return __cc != 0;
47130b57cec5SDimitry Andric }
47140b57cec5SDimitry Andric 
47150b57cec5SDimitry Andric #if __ARCH__ >= 12
47160b57cec5SDimitry Andric static inline __ATTRS_o_ai int
47175ffd83dbSDimitry Andric vec_any_ne(__vector float __a, __vector float __b) {
47180b57cec5SDimitry Andric   int __cc;
47190b57cec5SDimitry Andric   __builtin_s390_vfcesbs(__a, __b, &__cc);
47200b57cec5SDimitry Andric   return __cc != 0;
47210b57cec5SDimitry Andric }
47220b57cec5SDimitry Andric #endif
47230b57cec5SDimitry Andric 
47240b57cec5SDimitry Andric static inline __ATTRS_o_ai int
47255ffd83dbSDimitry Andric vec_any_ne(__vector double __a, __vector double __b) {
47260b57cec5SDimitry Andric   int __cc;
47270b57cec5SDimitry Andric   __builtin_s390_vfcedbs(__a, __b, &__cc);
47280b57cec5SDimitry Andric   return __cc != 0;
47290b57cec5SDimitry Andric }
47300b57cec5SDimitry Andric 
47310b57cec5SDimitry Andric /*-- vec_any_ge -------------------------------------------------------------*/
47320b57cec5SDimitry Andric 
47330b57cec5SDimitry Andric static inline __ATTRS_o_ai int
47345ffd83dbSDimitry Andric vec_any_ge(__vector signed char __a, __vector signed char __b) {
47350b57cec5SDimitry Andric   int __cc;
47360b57cec5SDimitry Andric   __builtin_s390_vchbs(__b, __a, &__cc);
47370b57cec5SDimitry Andric   return __cc != 0;
47380b57cec5SDimitry Andric }
47390b57cec5SDimitry Andric 
47400b57cec5SDimitry Andric // This prototype is deprecated.
47410b57cec5SDimitry Andric static inline __ATTRS_o_ai int
47425ffd83dbSDimitry Andric vec_any_ge(__vector signed char __a, __vector __bool char __b) {
47430b57cec5SDimitry Andric   int __cc;
47445ffd83dbSDimitry Andric   __builtin_s390_vchbs((__vector signed char)__b, __a, &__cc);
47450b57cec5SDimitry Andric   return __cc != 0;
47460b57cec5SDimitry Andric }
47470b57cec5SDimitry Andric 
47480b57cec5SDimitry Andric // This prototype is deprecated.
47490b57cec5SDimitry Andric static inline __ATTRS_o_ai int
47505ffd83dbSDimitry Andric vec_any_ge(__vector __bool char __a, __vector signed char __b) {
47510b57cec5SDimitry Andric   int __cc;
47525ffd83dbSDimitry Andric   __builtin_s390_vchbs(__b, (__vector signed char)__a, &__cc);
47530b57cec5SDimitry Andric   return __cc != 0;
47540b57cec5SDimitry Andric }
47550b57cec5SDimitry Andric 
47560b57cec5SDimitry Andric static inline __ATTRS_o_ai int
47575ffd83dbSDimitry Andric vec_any_ge(__vector unsigned char __a, __vector unsigned char __b) {
47580b57cec5SDimitry Andric   int __cc;
47590b57cec5SDimitry Andric   __builtin_s390_vchlbs(__b, __a, &__cc);
47600b57cec5SDimitry Andric   return __cc != 0;
47610b57cec5SDimitry Andric }
47620b57cec5SDimitry Andric 
47630b57cec5SDimitry Andric // This prototype is deprecated.
47640b57cec5SDimitry Andric static inline __ATTRS_o_ai int
47655ffd83dbSDimitry Andric vec_any_ge(__vector unsigned char __a, __vector __bool char __b) {
47660b57cec5SDimitry Andric   int __cc;
47675ffd83dbSDimitry Andric   __builtin_s390_vchlbs((__vector unsigned char)__b, __a, &__cc);
47680b57cec5SDimitry Andric   return __cc != 0;
47690b57cec5SDimitry Andric }
47700b57cec5SDimitry Andric 
47710b57cec5SDimitry Andric // This prototype is deprecated.
47720b57cec5SDimitry Andric static inline __ATTRS_o_ai int
47735ffd83dbSDimitry Andric vec_any_ge(__vector __bool char __a, __vector unsigned char __b) {
47740b57cec5SDimitry Andric   int __cc;
47755ffd83dbSDimitry Andric   __builtin_s390_vchlbs(__b, (__vector unsigned char)__a, &__cc);
47760b57cec5SDimitry Andric   return __cc != 0;
47770b57cec5SDimitry Andric }
47780b57cec5SDimitry Andric 
47790b57cec5SDimitry Andric // This prototype is deprecated.
47800b57cec5SDimitry Andric static inline __ATTRS_o_ai int
47815ffd83dbSDimitry Andric vec_any_ge(__vector __bool char __a, __vector __bool char __b) {
47820b57cec5SDimitry Andric   int __cc;
47835ffd83dbSDimitry Andric   __builtin_s390_vchlbs((__vector unsigned char)__b,
47845ffd83dbSDimitry Andric                         (__vector unsigned char)__a, &__cc);
47850b57cec5SDimitry Andric   return __cc != 0;
47860b57cec5SDimitry Andric }
47870b57cec5SDimitry Andric 
47880b57cec5SDimitry Andric static inline __ATTRS_o_ai int
47895ffd83dbSDimitry Andric vec_any_ge(__vector signed short __a, __vector signed short __b) {
47900b57cec5SDimitry Andric   int __cc;
47910b57cec5SDimitry Andric   __builtin_s390_vchhs(__b, __a, &__cc);
47920b57cec5SDimitry Andric   return __cc != 0;
47930b57cec5SDimitry Andric }
47940b57cec5SDimitry Andric 
47950b57cec5SDimitry Andric // This prototype is deprecated.
47960b57cec5SDimitry Andric static inline __ATTRS_o_ai int
47975ffd83dbSDimitry Andric vec_any_ge(__vector signed short __a, __vector __bool short __b) {
47980b57cec5SDimitry Andric   int __cc;
47995ffd83dbSDimitry Andric   __builtin_s390_vchhs((__vector signed short)__b, __a, &__cc);
48000b57cec5SDimitry Andric   return __cc != 0;
48010b57cec5SDimitry Andric }
48020b57cec5SDimitry Andric 
48030b57cec5SDimitry Andric // This prototype is deprecated.
48040b57cec5SDimitry Andric static inline __ATTRS_o_ai int
48055ffd83dbSDimitry Andric vec_any_ge(__vector __bool short __a, __vector signed short __b) {
48060b57cec5SDimitry Andric   int __cc;
48075ffd83dbSDimitry Andric   __builtin_s390_vchhs(__b, (__vector signed short)__a, &__cc);
48080b57cec5SDimitry Andric   return __cc != 0;
48090b57cec5SDimitry Andric }
48100b57cec5SDimitry Andric 
48110b57cec5SDimitry Andric static inline __ATTRS_o_ai int
48125ffd83dbSDimitry Andric vec_any_ge(__vector unsigned short __a, __vector unsigned short __b) {
48130b57cec5SDimitry Andric   int __cc;
48140b57cec5SDimitry Andric   __builtin_s390_vchlhs(__b, __a, &__cc);
48150b57cec5SDimitry Andric   return __cc != 0;
48160b57cec5SDimitry Andric }
48170b57cec5SDimitry Andric 
48180b57cec5SDimitry Andric // This prototype is deprecated.
48190b57cec5SDimitry Andric static inline __ATTRS_o_ai int
48205ffd83dbSDimitry Andric vec_any_ge(__vector unsigned short __a, __vector __bool short __b) {
48210b57cec5SDimitry Andric   int __cc;
48225ffd83dbSDimitry Andric   __builtin_s390_vchlhs((__vector unsigned short)__b, __a, &__cc);
48230b57cec5SDimitry Andric   return __cc != 0;
48240b57cec5SDimitry Andric }
48250b57cec5SDimitry Andric 
48260b57cec5SDimitry Andric // This prototype is deprecated.
48270b57cec5SDimitry Andric static inline __ATTRS_o_ai int
48285ffd83dbSDimitry Andric vec_any_ge(__vector __bool short __a, __vector unsigned short __b) {
48290b57cec5SDimitry Andric   int __cc;
48305ffd83dbSDimitry Andric   __builtin_s390_vchlhs(__b, (__vector unsigned short)__a, &__cc);
48310b57cec5SDimitry Andric   return __cc != 0;
48320b57cec5SDimitry Andric }
48330b57cec5SDimitry Andric 
48340b57cec5SDimitry Andric // This prototype is deprecated.
48350b57cec5SDimitry Andric static inline __ATTRS_o_ai int
48365ffd83dbSDimitry Andric vec_any_ge(__vector __bool short __a, __vector __bool short __b) {
48370b57cec5SDimitry Andric   int __cc;
48385ffd83dbSDimitry Andric   __builtin_s390_vchlhs((__vector unsigned short)__b,
48395ffd83dbSDimitry Andric                         (__vector unsigned short)__a, &__cc);
48400b57cec5SDimitry Andric   return __cc != 0;
48410b57cec5SDimitry Andric }
48420b57cec5SDimitry Andric 
48430b57cec5SDimitry Andric static inline __ATTRS_o_ai int
48445ffd83dbSDimitry Andric vec_any_ge(__vector signed int __a, __vector signed int __b) {
48450b57cec5SDimitry Andric   int __cc;
48460b57cec5SDimitry Andric   __builtin_s390_vchfs(__b, __a, &__cc);
48470b57cec5SDimitry Andric   return __cc != 0;
48480b57cec5SDimitry Andric }
48490b57cec5SDimitry Andric 
48500b57cec5SDimitry Andric // This prototype is deprecated.
48510b57cec5SDimitry Andric static inline __ATTRS_o_ai int
48525ffd83dbSDimitry Andric vec_any_ge(__vector signed int __a, __vector __bool int __b) {
48530b57cec5SDimitry Andric   int __cc;
48545ffd83dbSDimitry Andric   __builtin_s390_vchfs((__vector signed int)__b, __a, &__cc);
48550b57cec5SDimitry Andric   return __cc != 0;
48560b57cec5SDimitry Andric }
48570b57cec5SDimitry Andric 
48580b57cec5SDimitry Andric // This prototype is deprecated.
48590b57cec5SDimitry Andric static inline __ATTRS_o_ai int
48605ffd83dbSDimitry Andric vec_any_ge(__vector __bool int __a, __vector signed int __b) {
48610b57cec5SDimitry Andric   int __cc;
48625ffd83dbSDimitry Andric   __builtin_s390_vchfs(__b, (__vector signed int)__a, &__cc);
48630b57cec5SDimitry Andric   return __cc != 0;
48640b57cec5SDimitry Andric }
48650b57cec5SDimitry Andric 
48660b57cec5SDimitry Andric static inline __ATTRS_o_ai int
48675ffd83dbSDimitry Andric vec_any_ge(__vector unsigned int __a, __vector unsigned int __b) {
48680b57cec5SDimitry Andric   int __cc;
48690b57cec5SDimitry Andric   __builtin_s390_vchlfs(__b, __a, &__cc);
48700b57cec5SDimitry Andric   return __cc != 0;
48710b57cec5SDimitry Andric }
48720b57cec5SDimitry Andric 
48730b57cec5SDimitry Andric // This prototype is deprecated.
48740b57cec5SDimitry Andric static inline __ATTRS_o_ai int
48755ffd83dbSDimitry Andric vec_any_ge(__vector unsigned int __a, __vector __bool int __b) {
48760b57cec5SDimitry Andric   int __cc;
48775ffd83dbSDimitry Andric   __builtin_s390_vchlfs((__vector unsigned int)__b, __a, &__cc);
48780b57cec5SDimitry Andric   return __cc != 0;
48790b57cec5SDimitry Andric }
48800b57cec5SDimitry Andric 
48810b57cec5SDimitry Andric // This prototype is deprecated.
48820b57cec5SDimitry Andric static inline __ATTRS_o_ai int
48835ffd83dbSDimitry Andric vec_any_ge(__vector __bool int __a, __vector unsigned int __b) {
48840b57cec5SDimitry Andric   int __cc;
48855ffd83dbSDimitry Andric   __builtin_s390_vchlfs(__b, (__vector unsigned int)__a, &__cc);
48860b57cec5SDimitry Andric   return __cc != 0;
48870b57cec5SDimitry Andric }
48880b57cec5SDimitry Andric 
48890b57cec5SDimitry Andric // This prototype is deprecated.
48900b57cec5SDimitry Andric static inline __ATTRS_o_ai int
48915ffd83dbSDimitry Andric vec_any_ge(__vector __bool int __a, __vector __bool int __b) {
48920b57cec5SDimitry Andric   int __cc;
48935ffd83dbSDimitry Andric   __builtin_s390_vchlfs((__vector unsigned int)__b,
48945ffd83dbSDimitry Andric                         (__vector unsigned int)__a, &__cc);
48950b57cec5SDimitry Andric   return __cc != 0;
48960b57cec5SDimitry Andric }
48970b57cec5SDimitry Andric 
48980b57cec5SDimitry Andric static inline __ATTRS_o_ai int
48995ffd83dbSDimitry Andric vec_any_ge(__vector signed long long __a, __vector signed long long __b) {
49000b57cec5SDimitry Andric   int __cc;
49010b57cec5SDimitry Andric   __builtin_s390_vchgs(__b, __a, &__cc);
49020b57cec5SDimitry Andric   return __cc != 0;
49030b57cec5SDimitry Andric }
49040b57cec5SDimitry Andric 
49050b57cec5SDimitry Andric // This prototype is deprecated.
49060b57cec5SDimitry Andric static inline __ATTRS_o_ai int
49075ffd83dbSDimitry Andric vec_any_ge(__vector signed long long __a, __vector __bool long long __b) {
49080b57cec5SDimitry Andric   int __cc;
49095ffd83dbSDimitry Andric   __builtin_s390_vchgs((__vector signed long long)__b, __a, &__cc);
49100b57cec5SDimitry Andric   return __cc != 0;
49110b57cec5SDimitry Andric }
49120b57cec5SDimitry Andric 
49130b57cec5SDimitry Andric // This prototype is deprecated.
49140b57cec5SDimitry Andric static inline __ATTRS_o_ai int
49155ffd83dbSDimitry Andric vec_any_ge(__vector __bool long long __a, __vector signed long long __b) {
49160b57cec5SDimitry Andric   int __cc;
49175ffd83dbSDimitry Andric   __builtin_s390_vchgs(__b, (__vector signed long long)__a, &__cc);
49180b57cec5SDimitry Andric   return __cc != 0;
49190b57cec5SDimitry Andric }
49200b57cec5SDimitry Andric 
49210b57cec5SDimitry Andric static inline __ATTRS_o_ai int
49225ffd83dbSDimitry Andric vec_any_ge(__vector unsigned long long __a, __vector unsigned long long __b) {
49230b57cec5SDimitry Andric   int __cc;
49240b57cec5SDimitry Andric   __builtin_s390_vchlgs(__b, __a, &__cc);
49250b57cec5SDimitry Andric   return __cc != 0;
49260b57cec5SDimitry Andric }
49270b57cec5SDimitry Andric 
49280b57cec5SDimitry Andric // This prototype is deprecated.
49290b57cec5SDimitry Andric static inline __ATTRS_o_ai int
49305ffd83dbSDimitry Andric vec_any_ge(__vector unsigned long long __a, __vector __bool long long __b) {
49310b57cec5SDimitry Andric   int __cc;
49325ffd83dbSDimitry Andric   __builtin_s390_vchlgs((__vector unsigned long long)__b, __a, &__cc);
49330b57cec5SDimitry Andric   return __cc != 0;
49340b57cec5SDimitry Andric }
49350b57cec5SDimitry Andric 
49360b57cec5SDimitry Andric // This prototype is deprecated.
49370b57cec5SDimitry Andric static inline __ATTRS_o_ai int
49385ffd83dbSDimitry Andric vec_any_ge(__vector __bool long long __a, __vector unsigned long long __b) {
49390b57cec5SDimitry Andric   int __cc;
49405ffd83dbSDimitry Andric   __builtin_s390_vchlgs(__b, (__vector unsigned long long)__a, &__cc);
49410b57cec5SDimitry Andric   return __cc != 0;
49420b57cec5SDimitry Andric }
49430b57cec5SDimitry Andric 
49440b57cec5SDimitry Andric // This prototype is deprecated.
49450b57cec5SDimitry Andric static inline __ATTRS_o_ai int
49465ffd83dbSDimitry Andric vec_any_ge(__vector __bool long long __a, __vector __bool long long __b) {
49470b57cec5SDimitry Andric   int __cc;
49485ffd83dbSDimitry Andric   __builtin_s390_vchlgs((__vector unsigned long long)__b,
49495ffd83dbSDimitry Andric                         (__vector unsigned long long)__a, &__cc);
49500b57cec5SDimitry Andric   return __cc != 0;
49510b57cec5SDimitry Andric }
49520b57cec5SDimitry Andric 
49530b57cec5SDimitry Andric #if __ARCH__ >= 12
49540b57cec5SDimitry Andric static inline __ATTRS_o_ai int
49555ffd83dbSDimitry Andric vec_any_ge(__vector float __a, __vector float __b) {
49560b57cec5SDimitry Andric   int __cc;
49570b57cec5SDimitry Andric   __builtin_s390_vfchesbs(__a, __b, &__cc);
49580b57cec5SDimitry Andric   return __cc <= 1;
49590b57cec5SDimitry Andric }
49600b57cec5SDimitry Andric #endif
49610b57cec5SDimitry Andric 
49620b57cec5SDimitry Andric static inline __ATTRS_o_ai int
49635ffd83dbSDimitry Andric vec_any_ge(__vector double __a, __vector double __b) {
49640b57cec5SDimitry Andric   int __cc;
49650b57cec5SDimitry Andric   __builtin_s390_vfchedbs(__a, __b, &__cc);
49660b57cec5SDimitry Andric   return __cc <= 1;
49670b57cec5SDimitry Andric }
49680b57cec5SDimitry Andric 
49690b57cec5SDimitry Andric /*-- vec_any_gt -------------------------------------------------------------*/
49700b57cec5SDimitry Andric 
49710b57cec5SDimitry Andric static inline __ATTRS_o_ai int
49725ffd83dbSDimitry Andric vec_any_gt(__vector signed char __a, __vector signed char __b) {
49730b57cec5SDimitry Andric   int __cc;
49740b57cec5SDimitry Andric   __builtin_s390_vchbs(__a, __b, &__cc);
49750b57cec5SDimitry Andric   return __cc <= 1;
49760b57cec5SDimitry Andric }
49770b57cec5SDimitry Andric 
49780b57cec5SDimitry Andric // This prototype is deprecated.
49790b57cec5SDimitry Andric static inline __ATTRS_o_ai int
49805ffd83dbSDimitry Andric vec_any_gt(__vector signed char __a, __vector __bool char __b) {
49810b57cec5SDimitry Andric   int __cc;
49825ffd83dbSDimitry Andric   __builtin_s390_vchbs(__a, (__vector signed char)__b, &__cc);
49830b57cec5SDimitry Andric   return __cc <= 1;
49840b57cec5SDimitry Andric }
49850b57cec5SDimitry Andric 
49860b57cec5SDimitry Andric // This prototype is deprecated.
49870b57cec5SDimitry Andric static inline __ATTRS_o_ai int
49885ffd83dbSDimitry Andric vec_any_gt(__vector __bool char __a, __vector signed char __b) {
49890b57cec5SDimitry Andric   int __cc;
49905ffd83dbSDimitry Andric   __builtin_s390_vchbs((__vector signed char)__a, __b, &__cc);
49910b57cec5SDimitry Andric   return __cc <= 1;
49920b57cec5SDimitry Andric }
49930b57cec5SDimitry Andric 
49940b57cec5SDimitry Andric static inline __ATTRS_o_ai int
49955ffd83dbSDimitry Andric vec_any_gt(__vector unsigned char __a, __vector unsigned char __b) {
49960b57cec5SDimitry Andric   int __cc;
49970b57cec5SDimitry Andric   __builtin_s390_vchlbs(__a, __b, &__cc);
49980b57cec5SDimitry Andric   return __cc <= 1;
49990b57cec5SDimitry Andric }
50000b57cec5SDimitry Andric 
50010b57cec5SDimitry Andric // This prototype is deprecated.
50020b57cec5SDimitry Andric static inline __ATTRS_o_ai int
50035ffd83dbSDimitry Andric vec_any_gt(__vector unsigned char __a, __vector __bool char __b) {
50040b57cec5SDimitry Andric   int __cc;
50055ffd83dbSDimitry Andric   __builtin_s390_vchlbs(__a, (__vector unsigned char)__b, &__cc);
50060b57cec5SDimitry Andric   return __cc <= 1;
50070b57cec5SDimitry Andric }
50080b57cec5SDimitry Andric 
50090b57cec5SDimitry Andric // This prototype is deprecated.
50100b57cec5SDimitry Andric static inline __ATTRS_o_ai int
50115ffd83dbSDimitry Andric vec_any_gt(__vector __bool char __a, __vector unsigned char __b) {
50120b57cec5SDimitry Andric   int __cc;
50135ffd83dbSDimitry Andric   __builtin_s390_vchlbs((__vector unsigned char)__a, __b, &__cc);
50140b57cec5SDimitry Andric   return __cc <= 1;
50150b57cec5SDimitry Andric }
50160b57cec5SDimitry Andric 
50170b57cec5SDimitry Andric // This prototype is deprecated.
50180b57cec5SDimitry Andric static inline __ATTRS_o_ai int
50195ffd83dbSDimitry Andric vec_any_gt(__vector __bool char __a, __vector __bool char __b) {
50200b57cec5SDimitry Andric   int __cc;
50215ffd83dbSDimitry Andric   __builtin_s390_vchlbs((__vector unsigned char)__a,
50225ffd83dbSDimitry Andric                         (__vector unsigned char)__b, &__cc);
50230b57cec5SDimitry Andric   return __cc <= 1;
50240b57cec5SDimitry Andric }
50250b57cec5SDimitry Andric 
50260b57cec5SDimitry Andric static inline __ATTRS_o_ai int
50275ffd83dbSDimitry Andric vec_any_gt(__vector signed short __a, __vector signed short __b) {
50280b57cec5SDimitry Andric   int __cc;
50290b57cec5SDimitry Andric   __builtin_s390_vchhs(__a, __b, &__cc);
50300b57cec5SDimitry Andric   return __cc <= 1;
50310b57cec5SDimitry Andric }
50320b57cec5SDimitry Andric 
50330b57cec5SDimitry Andric // This prototype is deprecated.
50340b57cec5SDimitry Andric static inline __ATTRS_o_ai int
50355ffd83dbSDimitry Andric vec_any_gt(__vector signed short __a, __vector __bool short __b) {
50360b57cec5SDimitry Andric   int __cc;
50375ffd83dbSDimitry Andric   __builtin_s390_vchhs(__a, (__vector signed short)__b, &__cc);
50380b57cec5SDimitry Andric   return __cc <= 1;
50390b57cec5SDimitry Andric }
50400b57cec5SDimitry Andric 
50410b57cec5SDimitry Andric // This prototype is deprecated.
50420b57cec5SDimitry Andric static inline __ATTRS_o_ai int
50435ffd83dbSDimitry Andric vec_any_gt(__vector __bool short __a, __vector signed short __b) {
50440b57cec5SDimitry Andric   int __cc;
50455ffd83dbSDimitry Andric   __builtin_s390_vchhs((__vector signed short)__a, __b, &__cc);
50460b57cec5SDimitry Andric   return __cc <= 1;
50470b57cec5SDimitry Andric }
50480b57cec5SDimitry Andric 
50490b57cec5SDimitry Andric static inline __ATTRS_o_ai int
50505ffd83dbSDimitry Andric vec_any_gt(__vector unsigned short __a, __vector unsigned short __b) {
50510b57cec5SDimitry Andric   int __cc;
50520b57cec5SDimitry Andric   __builtin_s390_vchlhs(__a, __b, &__cc);
50530b57cec5SDimitry Andric   return __cc <= 1;
50540b57cec5SDimitry Andric }
50550b57cec5SDimitry Andric 
50560b57cec5SDimitry Andric // This prototype is deprecated.
50570b57cec5SDimitry Andric static inline __ATTRS_o_ai int
50585ffd83dbSDimitry Andric vec_any_gt(__vector unsigned short __a, __vector __bool short __b) {
50590b57cec5SDimitry Andric   int __cc;
50605ffd83dbSDimitry Andric   __builtin_s390_vchlhs(__a, (__vector unsigned short)__b, &__cc);
50610b57cec5SDimitry Andric   return __cc <= 1;
50620b57cec5SDimitry Andric }
50630b57cec5SDimitry Andric 
50640b57cec5SDimitry Andric // This prototype is deprecated.
50650b57cec5SDimitry Andric static inline __ATTRS_o_ai int
50665ffd83dbSDimitry Andric vec_any_gt(__vector __bool short __a, __vector unsigned short __b) {
50670b57cec5SDimitry Andric   int __cc;
50685ffd83dbSDimitry Andric   __builtin_s390_vchlhs((__vector unsigned short)__a, __b, &__cc);
50690b57cec5SDimitry Andric   return __cc <= 1;
50700b57cec5SDimitry Andric }
50710b57cec5SDimitry Andric 
50720b57cec5SDimitry Andric // This prototype is deprecated.
50730b57cec5SDimitry Andric static inline __ATTRS_o_ai int
50745ffd83dbSDimitry Andric vec_any_gt(__vector __bool short __a, __vector __bool short __b) {
50750b57cec5SDimitry Andric   int __cc;
50765ffd83dbSDimitry Andric   __builtin_s390_vchlhs((__vector unsigned short)__a,
50775ffd83dbSDimitry Andric                         (__vector unsigned short)__b, &__cc);
50780b57cec5SDimitry Andric   return __cc <= 1;
50790b57cec5SDimitry Andric }
50800b57cec5SDimitry Andric 
50810b57cec5SDimitry Andric static inline __ATTRS_o_ai int
50825ffd83dbSDimitry Andric vec_any_gt(__vector signed int __a, __vector signed int __b) {
50830b57cec5SDimitry Andric   int __cc;
50840b57cec5SDimitry Andric   __builtin_s390_vchfs(__a, __b, &__cc);
50850b57cec5SDimitry Andric   return __cc <= 1;
50860b57cec5SDimitry Andric }
50870b57cec5SDimitry Andric 
50880b57cec5SDimitry Andric // This prototype is deprecated.
50890b57cec5SDimitry Andric static inline __ATTRS_o_ai int
50905ffd83dbSDimitry Andric vec_any_gt(__vector signed int __a, __vector __bool int __b) {
50910b57cec5SDimitry Andric   int __cc;
50925ffd83dbSDimitry Andric   __builtin_s390_vchfs(__a, (__vector signed int)__b, &__cc);
50930b57cec5SDimitry Andric   return __cc <= 1;
50940b57cec5SDimitry Andric }
50950b57cec5SDimitry Andric 
50960b57cec5SDimitry Andric // This prototype is deprecated.
50970b57cec5SDimitry Andric static inline __ATTRS_o_ai int
50985ffd83dbSDimitry Andric vec_any_gt(__vector __bool int __a, __vector signed int __b) {
50990b57cec5SDimitry Andric   int __cc;
51005ffd83dbSDimitry Andric   __builtin_s390_vchfs((__vector signed int)__a, __b, &__cc);
51010b57cec5SDimitry Andric   return __cc <= 1;
51020b57cec5SDimitry Andric }
51030b57cec5SDimitry Andric 
51040b57cec5SDimitry Andric static inline __ATTRS_o_ai int
51055ffd83dbSDimitry Andric vec_any_gt(__vector unsigned int __a, __vector unsigned int __b) {
51060b57cec5SDimitry Andric   int __cc;
51070b57cec5SDimitry Andric   __builtin_s390_vchlfs(__a, __b, &__cc);
51080b57cec5SDimitry Andric   return __cc <= 1;
51090b57cec5SDimitry Andric }
51100b57cec5SDimitry Andric 
51110b57cec5SDimitry Andric // This prototype is deprecated.
51120b57cec5SDimitry Andric static inline __ATTRS_o_ai int
51135ffd83dbSDimitry Andric vec_any_gt(__vector unsigned int __a, __vector __bool int __b) {
51140b57cec5SDimitry Andric   int __cc;
51155ffd83dbSDimitry Andric   __builtin_s390_vchlfs(__a, (__vector unsigned int)__b, &__cc);
51160b57cec5SDimitry Andric   return __cc <= 1;
51170b57cec5SDimitry Andric }
51180b57cec5SDimitry Andric 
51190b57cec5SDimitry Andric // This prototype is deprecated.
51200b57cec5SDimitry Andric static inline __ATTRS_o_ai int
51215ffd83dbSDimitry Andric vec_any_gt(__vector __bool int __a, __vector unsigned int __b) {
51220b57cec5SDimitry Andric   int __cc;
51235ffd83dbSDimitry Andric   __builtin_s390_vchlfs((__vector unsigned int)__a, __b, &__cc);
51240b57cec5SDimitry Andric   return __cc <= 1;
51250b57cec5SDimitry Andric }
51260b57cec5SDimitry Andric 
51270b57cec5SDimitry Andric // This prototype is deprecated.
51280b57cec5SDimitry Andric static inline __ATTRS_o_ai int
51295ffd83dbSDimitry Andric vec_any_gt(__vector __bool int __a, __vector __bool int __b) {
51300b57cec5SDimitry Andric   int __cc;
51315ffd83dbSDimitry Andric   __builtin_s390_vchlfs((__vector unsigned int)__a,
51325ffd83dbSDimitry Andric                         (__vector unsigned int)__b, &__cc);
51330b57cec5SDimitry Andric   return __cc <= 1;
51340b57cec5SDimitry Andric }
51350b57cec5SDimitry Andric 
51360b57cec5SDimitry Andric static inline __ATTRS_o_ai int
51375ffd83dbSDimitry Andric vec_any_gt(__vector signed long long __a, __vector signed long long __b) {
51380b57cec5SDimitry Andric   int __cc;
51390b57cec5SDimitry Andric   __builtin_s390_vchgs(__a, __b, &__cc);
51400b57cec5SDimitry Andric   return __cc <= 1;
51410b57cec5SDimitry Andric }
51420b57cec5SDimitry Andric 
51430b57cec5SDimitry Andric // This prototype is deprecated.
51440b57cec5SDimitry Andric static inline __ATTRS_o_ai int
51455ffd83dbSDimitry Andric vec_any_gt(__vector signed long long __a, __vector __bool long long __b) {
51460b57cec5SDimitry Andric   int __cc;
51475ffd83dbSDimitry Andric   __builtin_s390_vchgs(__a, (__vector signed long long)__b, &__cc);
51480b57cec5SDimitry Andric   return __cc <= 1;
51490b57cec5SDimitry Andric }
51500b57cec5SDimitry Andric 
51510b57cec5SDimitry Andric // This prototype is deprecated.
51520b57cec5SDimitry Andric static inline __ATTRS_o_ai int
51535ffd83dbSDimitry Andric vec_any_gt(__vector __bool long long __a, __vector signed long long __b) {
51540b57cec5SDimitry Andric   int __cc;
51555ffd83dbSDimitry Andric   __builtin_s390_vchgs((__vector signed long long)__a, __b, &__cc);
51560b57cec5SDimitry Andric   return __cc <= 1;
51570b57cec5SDimitry Andric }
51580b57cec5SDimitry Andric 
51590b57cec5SDimitry Andric static inline __ATTRS_o_ai int
51605ffd83dbSDimitry Andric vec_any_gt(__vector unsigned long long __a, __vector unsigned long long __b) {
51610b57cec5SDimitry Andric   int __cc;
51620b57cec5SDimitry Andric   __builtin_s390_vchlgs(__a, __b, &__cc);
51630b57cec5SDimitry Andric   return __cc <= 1;
51640b57cec5SDimitry Andric }
51650b57cec5SDimitry Andric 
51660b57cec5SDimitry Andric // This prototype is deprecated.
51670b57cec5SDimitry Andric static inline __ATTRS_o_ai int
51685ffd83dbSDimitry Andric vec_any_gt(__vector unsigned long long __a, __vector __bool long long __b) {
51690b57cec5SDimitry Andric   int __cc;
51705ffd83dbSDimitry Andric   __builtin_s390_vchlgs(__a, (__vector unsigned long long)__b, &__cc);
51710b57cec5SDimitry Andric   return __cc <= 1;
51720b57cec5SDimitry Andric }
51730b57cec5SDimitry Andric 
51740b57cec5SDimitry Andric // This prototype is deprecated.
51750b57cec5SDimitry Andric static inline __ATTRS_o_ai int
51765ffd83dbSDimitry Andric vec_any_gt(__vector __bool long long __a, __vector unsigned long long __b) {
51770b57cec5SDimitry Andric   int __cc;
51785ffd83dbSDimitry Andric   __builtin_s390_vchlgs((__vector unsigned long long)__a, __b, &__cc);
51790b57cec5SDimitry Andric   return __cc <= 1;
51800b57cec5SDimitry Andric }
51810b57cec5SDimitry Andric 
51820b57cec5SDimitry Andric // This prototype is deprecated.
51830b57cec5SDimitry Andric static inline __ATTRS_o_ai int
51845ffd83dbSDimitry Andric vec_any_gt(__vector __bool long long __a, __vector __bool long long __b) {
51850b57cec5SDimitry Andric   int __cc;
51865ffd83dbSDimitry Andric   __builtin_s390_vchlgs((__vector unsigned long long)__a,
51875ffd83dbSDimitry Andric                         (__vector unsigned long long)__b, &__cc);
51880b57cec5SDimitry Andric   return __cc <= 1;
51890b57cec5SDimitry Andric }
51900b57cec5SDimitry Andric 
51910b57cec5SDimitry Andric #if __ARCH__ >= 12
51920b57cec5SDimitry Andric static inline __ATTRS_o_ai int
51935ffd83dbSDimitry Andric vec_any_gt(__vector float __a, __vector float __b) {
51940b57cec5SDimitry Andric   int __cc;
51950b57cec5SDimitry Andric   __builtin_s390_vfchsbs(__a, __b, &__cc);
51960b57cec5SDimitry Andric   return __cc <= 1;
51970b57cec5SDimitry Andric }
51980b57cec5SDimitry Andric #endif
51990b57cec5SDimitry Andric 
52000b57cec5SDimitry Andric static inline __ATTRS_o_ai int
52015ffd83dbSDimitry Andric vec_any_gt(__vector double __a, __vector double __b) {
52020b57cec5SDimitry Andric   int __cc;
52030b57cec5SDimitry Andric   __builtin_s390_vfchdbs(__a, __b, &__cc);
52040b57cec5SDimitry Andric   return __cc <= 1;
52050b57cec5SDimitry Andric }
52060b57cec5SDimitry Andric 
52070b57cec5SDimitry Andric /*-- vec_any_le -------------------------------------------------------------*/
52080b57cec5SDimitry Andric 
52090b57cec5SDimitry Andric static inline __ATTRS_o_ai int
52105ffd83dbSDimitry Andric vec_any_le(__vector signed char __a, __vector signed char __b) {
52110b57cec5SDimitry Andric   int __cc;
52120b57cec5SDimitry Andric   __builtin_s390_vchbs(__a, __b, &__cc);
52130b57cec5SDimitry Andric   return __cc != 0;
52140b57cec5SDimitry Andric }
52150b57cec5SDimitry Andric 
52160b57cec5SDimitry Andric // This prototype is deprecated.
52170b57cec5SDimitry Andric static inline __ATTRS_o_ai int
52185ffd83dbSDimitry Andric vec_any_le(__vector signed char __a, __vector __bool char __b) {
52190b57cec5SDimitry Andric   int __cc;
52205ffd83dbSDimitry Andric   __builtin_s390_vchbs(__a, (__vector signed char)__b, &__cc);
52210b57cec5SDimitry Andric   return __cc != 0;
52220b57cec5SDimitry Andric }
52230b57cec5SDimitry Andric 
52240b57cec5SDimitry Andric // This prototype is deprecated.
52250b57cec5SDimitry Andric static inline __ATTRS_o_ai int
52265ffd83dbSDimitry Andric vec_any_le(__vector __bool char __a, __vector signed char __b) {
52270b57cec5SDimitry Andric   int __cc;
52285ffd83dbSDimitry Andric   __builtin_s390_vchbs((__vector signed char)__a, __b, &__cc);
52290b57cec5SDimitry Andric   return __cc != 0;
52300b57cec5SDimitry Andric }
52310b57cec5SDimitry Andric 
52320b57cec5SDimitry Andric static inline __ATTRS_o_ai int
52335ffd83dbSDimitry Andric vec_any_le(__vector unsigned char __a, __vector unsigned char __b) {
52340b57cec5SDimitry Andric   int __cc;
52350b57cec5SDimitry Andric   __builtin_s390_vchlbs(__a, __b, &__cc);
52360b57cec5SDimitry Andric   return __cc != 0;
52370b57cec5SDimitry Andric }
52380b57cec5SDimitry Andric 
52390b57cec5SDimitry Andric // This prototype is deprecated.
52400b57cec5SDimitry Andric static inline __ATTRS_o_ai int
52415ffd83dbSDimitry Andric vec_any_le(__vector unsigned char __a, __vector __bool char __b) {
52420b57cec5SDimitry Andric   int __cc;
52435ffd83dbSDimitry Andric   __builtin_s390_vchlbs(__a, (__vector unsigned char)__b, &__cc);
52440b57cec5SDimitry Andric   return __cc != 0;
52450b57cec5SDimitry Andric }
52460b57cec5SDimitry Andric 
52470b57cec5SDimitry Andric // This prototype is deprecated.
52480b57cec5SDimitry Andric static inline __ATTRS_o_ai int
52495ffd83dbSDimitry Andric vec_any_le(__vector __bool char __a, __vector unsigned char __b) {
52500b57cec5SDimitry Andric   int __cc;
52515ffd83dbSDimitry Andric   __builtin_s390_vchlbs((__vector unsigned char)__a, __b, &__cc);
52520b57cec5SDimitry Andric   return __cc != 0;
52530b57cec5SDimitry Andric }
52540b57cec5SDimitry Andric 
52550b57cec5SDimitry Andric // This prototype is deprecated.
52560b57cec5SDimitry Andric static inline __ATTRS_o_ai int
52575ffd83dbSDimitry Andric vec_any_le(__vector __bool char __a, __vector __bool char __b) {
52580b57cec5SDimitry Andric   int __cc;
52595ffd83dbSDimitry Andric   __builtin_s390_vchlbs((__vector unsigned char)__a,
52605ffd83dbSDimitry Andric                         (__vector unsigned char)__b, &__cc);
52610b57cec5SDimitry Andric   return __cc != 0;
52620b57cec5SDimitry Andric }
52630b57cec5SDimitry Andric 
52640b57cec5SDimitry Andric static inline __ATTRS_o_ai int
52655ffd83dbSDimitry Andric vec_any_le(__vector signed short __a, __vector signed short __b) {
52660b57cec5SDimitry Andric   int __cc;
52670b57cec5SDimitry Andric   __builtin_s390_vchhs(__a, __b, &__cc);
52680b57cec5SDimitry Andric   return __cc != 0;
52690b57cec5SDimitry Andric }
52700b57cec5SDimitry Andric 
52710b57cec5SDimitry Andric // This prototype is deprecated.
52720b57cec5SDimitry Andric static inline __ATTRS_o_ai int
52735ffd83dbSDimitry Andric vec_any_le(__vector signed short __a, __vector __bool short __b) {
52740b57cec5SDimitry Andric   int __cc;
52755ffd83dbSDimitry Andric   __builtin_s390_vchhs(__a, (__vector signed short)__b, &__cc);
52760b57cec5SDimitry Andric   return __cc != 0;
52770b57cec5SDimitry Andric }
52780b57cec5SDimitry Andric 
52790b57cec5SDimitry Andric // This prototype is deprecated.
52800b57cec5SDimitry Andric static inline __ATTRS_o_ai int
52815ffd83dbSDimitry Andric vec_any_le(__vector __bool short __a, __vector signed short __b) {
52820b57cec5SDimitry Andric   int __cc;
52835ffd83dbSDimitry Andric   __builtin_s390_vchhs((__vector signed short)__a, __b, &__cc);
52840b57cec5SDimitry Andric   return __cc != 0;
52850b57cec5SDimitry Andric }
52860b57cec5SDimitry Andric 
52870b57cec5SDimitry Andric static inline __ATTRS_o_ai int
52885ffd83dbSDimitry Andric vec_any_le(__vector unsigned short __a, __vector unsigned short __b) {
52890b57cec5SDimitry Andric   int __cc;
52900b57cec5SDimitry Andric   __builtin_s390_vchlhs(__a, __b, &__cc);
52910b57cec5SDimitry Andric   return __cc != 0;
52920b57cec5SDimitry Andric }
52930b57cec5SDimitry Andric 
52940b57cec5SDimitry Andric // This prototype is deprecated.
52950b57cec5SDimitry Andric static inline __ATTRS_o_ai int
52965ffd83dbSDimitry Andric vec_any_le(__vector unsigned short __a, __vector __bool short __b) {
52970b57cec5SDimitry Andric   int __cc;
52985ffd83dbSDimitry Andric   __builtin_s390_vchlhs(__a, (__vector unsigned short)__b, &__cc);
52990b57cec5SDimitry Andric   return __cc != 0;
53000b57cec5SDimitry Andric }
53010b57cec5SDimitry Andric 
53020b57cec5SDimitry Andric // This prototype is deprecated.
53030b57cec5SDimitry Andric static inline __ATTRS_o_ai int
53045ffd83dbSDimitry Andric vec_any_le(__vector __bool short __a, __vector unsigned short __b) {
53050b57cec5SDimitry Andric   int __cc;
53065ffd83dbSDimitry Andric   __builtin_s390_vchlhs((__vector unsigned short)__a, __b, &__cc);
53070b57cec5SDimitry Andric   return __cc != 0;
53080b57cec5SDimitry Andric }
53090b57cec5SDimitry Andric 
53100b57cec5SDimitry Andric // This prototype is deprecated.
53110b57cec5SDimitry Andric static inline __ATTRS_o_ai int
53125ffd83dbSDimitry Andric vec_any_le(__vector __bool short __a, __vector __bool short __b) {
53130b57cec5SDimitry Andric   int __cc;
53145ffd83dbSDimitry Andric   __builtin_s390_vchlhs((__vector unsigned short)__a,
53155ffd83dbSDimitry Andric                         (__vector unsigned short)__b, &__cc);
53160b57cec5SDimitry Andric   return __cc != 0;
53170b57cec5SDimitry Andric }
53180b57cec5SDimitry Andric 
53190b57cec5SDimitry Andric static inline __ATTRS_o_ai int
53205ffd83dbSDimitry Andric vec_any_le(__vector signed int __a, __vector signed int __b) {
53210b57cec5SDimitry Andric   int __cc;
53220b57cec5SDimitry Andric   __builtin_s390_vchfs(__a, __b, &__cc);
53230b57cec5SDimitry Andric   return __cc != 0;
53240b57cec5SDimitry Andric }
53250b57cec5SDimitry Andric 
53260b57cec5SDimitry Andric // This prototype is deprecated.
53270b57cec5SDimitry Andric static inline __ATTRS_o_ai int
53285ffd83dbSDimitry Andric vec_any_le(__vector signed int __a, __vector __bool int __b) {
53290b57cec5SDimitry Andric   int __cc;
53305ffd83dbSDimitry Andric   __builtin_s390_vchfs(__a, (__vector signed int)__b, &__cc);
53310b57cec5SDimitry Andric   return __cc != 0;
53320b57cec5SDimitry Andric }
53330b57cec5SDimitry Andric 
53340b57cec5SDimitry Andric // This prototype is deprecated.
53350b57cec5SDimitry Andric static inline __ATTRS_o_ai int
53365ffd83dbSDimitry Andric vec_any_le(__vector __bool int __a, __vector signed int __b) {
53370b57cec5SDimitry Andric   int __cc;
53385ffd83dbSDimitry Andric   __builtin_s390_vchfs((__vector signed int)__a, __b, &__cc);
53390b57cec5SDimitry Andric   return __cc != 0;
53400b57cec5SDimitry Andric }
53410b57cec5SDimitry Andric 
53420b57cec5SDimitry Andric static inline __ATTRS_o_ai int
53435ffd83dbSDimitry Andric vec_any_le(__vector unsigned int __a, __vector unsigned int __b) {
53440b57cec5SDimitry Andric   int __cc;
53450b57cec5SDimitry Andric   __builtin_s390_vchlfs(__a, __b, &__cc);
53460b57cec5SDimitry Andric   return __cc != 0;
53470b57cec5SDimitry Andric }
53480b57cec5SDimitry Andric 
53490b57cec5SDimitry Andric // This prototype is deprecated.
53500b57cec5SDimitry Andric static inline __ATTRS_o_ai int
53515ffd83dbSDimitry Andric vec_any_le(__vector unsigned int __a, __vector __bool int __b) {
53520b57cec5SDimitry Andric   int __cc;
53535ffd83dbSDimitry Andric   __builtin_s390_vchlfs(__a, (__vector unsigned int)__b, &__cc);
53540b57cec5SDimitry Andric   return __cc != 0;
53550b57cec5SDimitry Andric }
53560b57cec5SDimitry Andric 
53570b57cec5SDimitry Andric // This prototype is deprecated.
53580b57cec5SDimitry Andric static inline __ATTRS_o_ai int
53595ffd83dbSDimitry Andric vec_any_le(__vector __bool int __a, __vector unsigned int __b) {
53600b57cec5SDimitry Andric   int __cc;
53615ffd83dbSDimitry Andric   __builtin_s390_vchlfs((__vector unsigned int)__a, __b, &__cc);
53620b57cec5SDimitry Andric   return __cc != 0;
53630b57cec5SDimitry Andric }
53640b57cec5SDimitry Andric 
53650b57cec5SDimitry Andric // This prototype is deprecated.
53660b57cec5SDimitry Andric static inline __ATTRS_o_ai int
53675ffd83dbSDimitry Andric vec_any_le(__vector __bool int __a, __vector __bool int __b) {
53680b57cec5SDimitry Andric   int __cc;
53695ffd83dbSDimitry Andric   __builtin_s390_vchlfs((__vector unsigned int)__a,
53705ffd83dbSDimitry Andric                         (__vector unsigned int)__b, &__cc);
53710b57cec5SDimitry Andric   return __cc != 0;
53720b57cec5SDimitry Andric }
53730b57cec5SDimitry Andric 
53740b57cec5SDimitry Andric static inline __ATTRS_o_ai int
53755ffd83dbSDimitry Andric vec_any_le(__vector signed long long __a, __vector signed long long __b) {
53760b57cec5SDimitry Andric   int __cc;
53770b57cec5SDimitry Andric   __builtin_s390_vchgs(__a, __b, &__cc);
53780b57cec5SDimitry Andric   return __cc != 0;
53790b57cec5SDimitry Andric }
53800b57cec5SDimitry Andric 
53810b57cec5SDimitry Andric // This prototype is deprecated.
53820b57cec5SDimitry Andric static inline __ATTRS_o_ai int
53835ffd83dbSDimitry Andric vec_any_le(__vector signed long long __a, __vector __bool long long __b) {
53840b57cec5SDimitry Andric   int __cc;
53855ffd83dbSDimitry Andric   __builtin_s390_vchgs(__a, (__vector signed long long)__b, &__cc);
53860b57cec5SDimitry Andric   return __cc != 0;
53870b57cec5SDimitry Andric }
53880b57cec5SDimitry Andric 
53890b57cec5SDimitry Andric // This prototype is deprecated.
53900b57cec5SDimitry Andric static inline __ATTRS_o_ai int
53915ffd83dbSDimitry Andric vec_any_le(__vector __bool long long __a, __vector signed long long __b) {
53920b57cec5SDimitry Andric   int __cc;
53935ffd83dbSDimitry Andric   __builtin_s390_vchgs((__vector signed long long)__a, __b, &__cc);
53940b57cec5SDimitry Andric   return __cc != 0;
53950b57cec5SDimitry Andric }
53960b57cec5SDimitry Andric 
53970b57cec5SDimitry Andric static inline __ATTRS_o_ai int
53985ffd83dbSDimitry Andric vec_any_le(__vector unsigned long long __a, __vector unsigned long long __b) {
53990b57cec5SDimitry Andric   int __cc;
54000b57cec5SDimitry Andric   __builtin_s390_vchlgs(__a, __b, &__cc);
54010b57cec5SDimitry Andric   return __cc != 0;
54020b57cec5SDimitry Andric }
54030b57cec5SDimitry Andric 
54040b57cec5SDimitry Andric // This prototype is deprecated.
54050b57cec5SDimitry Andric static inline __ATTRS_o_ai int
54065ffd83dbSDimitry Andric vec_any_le(__vector unsigned long long __a, __vector __bool long long __b) {
54070b57cec5SDimitry Andric   int __cc;
54085ffd83dbSDimitry Andric   __builtin_s390_vchlgs(__a, (__vector unsigned long long)__b, &__cc);
54090b57cec5SDimitry Andric   return __cc != 0;
54100b57cec5SDimitry Andric }
54110b57cec5SDimitry Andric 
54120b57cec5SDimitry Andric // This prototype is deprecated.
54130b57cec5SDimitry Andric static inline __ATTRS_o_ai int
54145ffd83dbSDimitry Andric vec_any_le(__vector __bool long long __a, __vector unsigned long long __b) {
54150b57cec5SDimitry Andric   int __cc;
54165ffd83dbSDimitry Andric   __builtin_s390_vchlgs((__vector unsigned long long)__a, __b, &__cc);
54170b57cec5SDimitry Andric   return __cc != 0;
54180b57cec5SDimitry Andric }
54190b57cec5SDimitry Andric 
54200b57cec5SDimitry Andric // This prototype is deprecated.
54210b57cec5SDimitry Andric static inline __ATTRS_o_ai int
54225ffd83dbSDimitry Andric vec_any_le(__vector __bool long long __a, __vector __bool long long __b) {
54230b57cec5SDimitry Andric   int __cc;
54245ffd83dbSDimitry Andric   __builtin_s390_vchlgs((__vector unsigned long long)__a,
54255ffd83dbSDimitry Andric                         (__vector unsigned long long)__b, &__cc);
54260b57cec5SDimitry Andric   return __cc != 0;
54270b57cec5SDimitry Andric }
54280b57cec5SDimitry Andric 
54290b57cec5SDimitry Andric #if __ARCH__ >= 12
54300b57cec5SDimitry Andric static inline __ATTRS_o_ai int
54315ffd83dbSDimitry Andric vec_any_le(__vector float __a, __vector float __b) {
54320b57cec5SDimitry Andric   int __cc;
54330b57cec5SDimitry Andric   __builtin_s390_vfchesbs(__b, __a, &__cc);
54340b57cec5SDimitry Andric   return __cc <= 1;
54350b57cec5SDimitry Andric }
54360b57cec5SDimitry Andric #endif
54370b57cec5SDimitry Andric 
54380b57cec5SDimitry Andric static inline __ATTRS_o_ai int
54395ffd83dbSDimitry Andric vec_any_le(__vector double __a, __vector double __b) {
54400b57cec5SDimitry Andric   int __cc;
54410b57cec5SDimitry Andric   __builtin_s390_vfchedbs(__b, __a, &__cc);
54420b57cec5SDimitry Andric   return __cc <= 1;
54430b57cec5SDimitry Andric }
54440b57cec5SDimitry Andric 
54450b57cec5SDimitry Andric /*-- vec_any_lt -------------------------------------------------------------*/
54460b57cec5SDimitry Andric 
54470b57cec5SDimitry Andric static inline __ATTRS_o_ai int
54485ffd83dbSDimitry Andric vec_any_lt(__vector signed char __a, __vector signed char __b) {
54490b57cec5SDimitry Andric   int __cc;
54500b57cec5SDimitry Andric   __builtin_s390_vchbs(__b, __a, &__cc);
54510b57cec5SDimitry Andric   return __cc <= 1;
54520b57cec5SDimitry Andric }
54530b57cec5SDimitry Andric 
54540b57cec5SDimitry Andric // This prototype is deprecated.
54550b57cec5SDimitry Andric static inline __ATTRS_o_ai int
54565ffd83dbSDimitry Andric vec_any_lt(__vector signed char __a, __vector __bool char __b) {
54570b57cec5SDimitry Andric   int __cc;
54585ffd83dbSDimitry Andric   __builtin_s390_vchbs((__vector signed char)__b, __a, &__cc);
54590b57cec5SDimitry Andric   return __cc <= 1;
54600b57cec5SDimitry Andric }
54610b57cec5SDimitry Andric 
54620b57cec5SDimitry Andric // This prototype is deprecated.
54630b57cec5SDimitry Andric static inline __ATTRS_o_ai int
54645ffd83dbSDimitry Andric vec_any_lt(__vector __bool char __a, __vector signed char __b) {
54650b57cec5SDimitry Andric   int __cc;
54665ffd83dbSDimitry Andric   __builtin_s390_vchbs(__b, (__vector signed char)__a, &__cc);
54670b57cec5SDimitry Andric   return __cc <= 1;
54680b57cec5SDimitry Andric }
54690b57cec5SDimitry Andric 
54700b57cec5SDimitry Andric static inline __ATTRS_o_ai int
54715ffd83dbSDimitry Andric vec_any_lt(__vector unsigned char __a, __vector unsigned char __b) {
54720b57cec5SDimitry Andric   int __cc;
54730b57cec5SDimitry Andric   __builtin_s390_vchlbs(__b, __a, &__cc);
54740b57cec5SDimitry Andric   return __cc <= 1;
54750b57cec5SDimitry Andric }
54760b57cec5SDimitry Andric 
54770b57cec5SDimitry Andric // This prototype is deprecated.
54780b57cec5SDimitry Andric static inline __ATTRS_o_ai int
54795ffd83dbSDimitry Andric vec_any_lt(__vector unsigned char __a, __vector __bool char __b) {
54800b57cec5SDimitry Andric   int __cc;
54815ffd83dbSDimitry Andric   __builtin_s390_vchlbs((__vector unsigned char)__b, __a, &__cc);
54820b57cec5SDimitry Andric   return __cc <= 1;
54830b57cec5SDimitry Andric }
54840b57cec5SDimitry Andric 
54850b57cec5SDimitry Andric // This prototype is deprecated.
54860b57cec5SDimitry Andric static inline __ATTRS_o_ai int
54875ffd83dbSDimitry Andric vec_any_lt(__vector __bool char __a, __vector unsigned char __b) {
54880b57cec5SDimitry Andric   int __cc;
54895ffd83dbSDimitry Andric   __builtin_s390_vchlbs(__b, (__vector unsigned char)__a, &__cc);
54900b57cec5SDimitry Andric   return __cc <= 1;
54910b57cec5SDimitry Andric }
54920b57cec5SDimitry Andric 
54930b57cec5SDimitry Andric // This prototype is deprecated.
54940b57cec5SDimitry Andric static inline __ATTRS_o_ai int
54955ffd83dbSDimitry Andric vec_any_lt(__vector __bool char __a, __vector __bool char __b) {
54960b57cec5SDimitry Andric   int __cc;
54975ffd83dbSDimitry Andric   __builtin_s390_vchlbs((__vector unsigned char)__b,
54985ffd83dbSDimitry Andric                         (__vector unsigned char)__a, &__cc);
54990b57cec5SDimitry Andric   return __cc <= 1;
55000b57cec5SDimitry Andric }
55010b57cec5SDimitry Andric 
55020b57cec5SDimitry Andric static inline __ATTRS_o_ai int
55035ffd83dbSDimitry Andric vec_any_lt(__vector signed short __a, __vector signed short __b) {
55040b57cec5SDimitry Andric   int __cc;
55050b57cec5SDimitry Andric   __builtin_s390_vchhs(__b, __a, &__cc);
55060b57cec5SDimitry Andric   return __cc <= 1;
55070b57cec5SDimitry Andric }
55080b57cec5SDimitry Andric 
55090b57cec5SDimitry Andric // This prototype is deprecated.
55100b57cec5SDimitry Andric static inline __ATTRS_o_ai int
55115ffd83dbSDimitry Andric vec_any_lt(__vector signed short __a, __vector __bool short __b) {
55120b57cec5SDimitry Andric   int __cc;
55135ffd83dbSDimitry Andric   __builtin_s390_vchhs((__vector signed short)__b, __a, &__cc);
55140b57cec5SDimitry Andric   return __cc <= 1;
55150b57cec5SDimitry Andric }
55160b57cec5SDimitry Andric 
55170b57cec5SDimitry Andric // This prototype is deprecated.
55180b57cec5SDimitry Andric static inline __ATTRS_o_ai int
55195ffd83dbSDimitry Andric vec_any_lt(__vector __bool short __a, __vector signed short __b) {
55200b57cec5SDimitry Andric   int __cc;
55215ffd83dbSDimitry Andric   __builtin_s390_vchhs(__b, (__vector signed short)__a, &__cc);
55220b57cec5SDimitry Andric   return __cc <= 1;
55230b57cec5SDimitry Andric }
55240b57cec5SDimitry Andric 
55250b57cec5SDimitry Andric static inline __ATTRS_o_ai int
55265ffd83dbSDimitry Andric vec_any_lt(__vector unsigned short __a, __vector unsigned short __b) {
55270b57cec5SDimitry Andric   int __cc;
55280b57cec5SDimitry Andric   __builtin_s390_vchlhs(__b, __a, &__cc);
55290b57cec5SDimitry Andric   return __cc <= 1;
55300b57cec5SDimitry Andric }
55310b57cec5SDimitry Andric 
55320b57cec5SDimitry Andric // This prototype is deprecated.
55330b57cec5SDimitry Andric static inline __ATTRS_o_ai int
55345ffd83dbSDimitry Andric vec_any_lt(__vector unsigned short __a, __vector __bool short __b) {
55350b57cec5SDimitry Andric   int __cc;
55365ffd83dbSDimitry Andric   __builtin_s390_vchlhs((__vector unsigned short)__b, __a, &__cc);
55370b57cec5SDimitry Andric   return __cc <= 1;
55380b57cec5SDimitry Andric }
55390b57cec5SDimitry Andric 
55400b57cec5SDimitry Andric // This prototype is deprecated.
55410b57cec5SDimitry Andric static inline __ATTRS_o_ai int
55425ffd83dbSDimitry Andric vec_any_lt(__vector __bool short __a, __vector unsigned short __b) {
55430b57cec5SDimitry Andric   int __cc;
55445ffd83dbSDimitry Andric   __builtin_s390_vchlhs(__b, (__vector unsigned short)__a, &__cc);
55450b57cec5SDimitry Andric   return __cc <= 1;
55460b57cec5SDimitry Andric }
55470b57cec5SDimitry Andric 
55480b57cec5SDimitry Andric // This prototype is deprecated.
55490b57cec5SDimitry Andric static inline __ATTRS_o_ai int
55505ffd83dbSDimitry Andric vec_any_lt(__vector __bool short __a, __vector __bool short __b) {
55510b57cec5SDimitry Andric   int __cc;
55525ffd83dbSDimitry Andric   __builtin_s390_vchlhs((__vector unsigned short)__b,
55535ffd83dbSDimitry Andric                         (__vector unsigned short)__a, &__cc);
55540b57cec5SDimitry Andric   return __cc <= 1;
55550b57cec5SDimitry Andric }
55560b57cec5SDimitry Andric 
55570b57cec5SDimitry Andric static inline __ATTRS_o_ai int
55585ffd83dbSDimitry Andric vec_any_lt(__vector signed int __a, __vector signed int __b) {
55590b57cec5SDimitry Andric   int __cc;
55600b57cec5SDimitry Andric   __builtin_s390_vchfs(__b, __a, &__cc);
55610b57cec5SDimitry Andric   return __cc <= 1;
55620b57cec5SDimitry Andric }
55630b57cec5SDimitry Andric 
55640b57cec5SDimitry Andric // This prototype is deprecated.
55650b57cec5SDimitry Andric static inline __ATTRS_o_ai int
55665ffd83dbSDimitry Andric vec_any_lt(__vector signed int __a, __vector __bool int __b) {
55670b57cec5SDimitry Andric   int __cc;
55685ffd83dbSDimitry Andric   __builtin_s390_vchfs((__vector signed int)__b, __a, &__cc);
55690b57cec5SDimitry Andric   return __cc <= 1;
55700b57cec5SDimitry Andric }
55710b57cec5SDimitry Andric 
55720b57cec5SDimitry Andric // This prototype is deprecated.
55730b57cec5SDimitry Andric static inline __ATTRS_o_ai int
55745ffd83dbSDimitry Andric vec_any_lt(__vector __bool int __a, __vector signed int __b) {
55750b57cec5SDimitry Andric   int __cc;
55765ffd83dbSDimitry Andric   __builtin_s390_vchfs(__b, (__vector signed int)__a, &__cc);
55770b57cec5SDimitry Andric   return __cc <= 1;
55780b57cec5SDimitry Andric }
55790b57cec5SDimitry Andric 
55800b57cec5SDimitry Andric static inline __ATTRS_o_ai int
55815ffd83dbSDimitry Andric vec_any_lt(__vector unsigned int __a, __vector unsigned int __b) {
55820b57cec5SDimitry Andric   int __cc;
55830b57cec5SDimitry Andric   __builtin_s390_vchlfs(__b, __a, &__cc);
55840b57cec5SDimitry Andric   return __cc <= 1;
55850b57cec5SDimitry Andric }
55860b57cec5SDimitry Andric 
55870b57cec5SDimitry Andric // This prototype is deprecated.
55880b57cec5SDimitry Andric static inline __ATTRS_o_ai int
55895ffd83dbSDimitry Andric vec_any_lt(__vector unsigned int __a, __vector __bool int __b) {
55900b57cec5SDimitry Andric   int __cc;
55915ffd83dbSDimitry Andric   __builtin_s390_vchlfs((__vector unsigned int)__b, __a, &__cc);
55920b57cec5SDimitry Andric   return __cc <= 1;
55930b57cec5SDimitry Andric }
55940b57cec5SDimitry Andric 
55950b57cec5SDimitry Andric // This prototype is deprecated.
55960b57cec5SDimitry Andric static inline __ATTRS_o_ai int
55975ffd83dbSDimitry Andric vec_any_lt(__vector __bool int __a, __vector unsigned int __b) {
55980b57cec5SDimitry Andric   int __cc;
55995ffd83dbSDimitry Andric   __builtin_s390_vchlfs(__b, (__vector unsigned int)__a, &__cc);
56000b57cec5SDimitry Andric   return __cc <= 1;
56010b57cec5SDimitry Andric }
56020b57cec5SDimitry Andric 
56030b57cec5SDimitry Andric // This prototype is deprecated.
56040b57cec5SDimitry Andric static inline __ATTRS_o_ai int
56055ffd83dbSDimitry Andric vec_any_lt(__vector __bool int __a, __vector __bool int __b) {
56060b57cec5SDimitry Andric   int __cc;
56075ffd83dbSDimitry Andric   __builtin_s390_vchlfs((__vector unsigned int)__b,
56085ffd83dbSDimitry Andric                         (__vector unsigned int)__a, &__cc);
56090b57cec5SDimitry Andric   return __cc <= 1;
56100b57cec5SDimitry Andric }
56110b57cec5SDimitry Andric 
56120b57cec5SDimitry Andric static inline __ATTRS_o_ai int
56135ffd83dbSDimitry Andric vec_any_lt(__vector signed long long __a, __vector signed long long __b) {
56140b57cec5SDimitry Andric   int __cc;
56150b57cec5SDimitry Andric   __builtin_s390_vchgs(__b, __a, &__cc);
56160b57cec5SDimitry Andric   return __cc <= 1;
56170b57cec5SDimitry Andric }
56180b57cec5SDimitry Andric 
56190b57cec5SDimitry Andric // This prototype is deprecated.
56200b57cec5SDimitry Andric static inline __ATTRS_o_ai int
56215ffd83dbSDimitry Andric vec_any_lt(__vector signed long long __a, __vector __bool long long __b) {
56220b57cec5SDimitry Andric   int __cc;
56235ffd83dbSDimitry Andric   __builtin_s390_vchgs((__vector signed long long)__b, __a, &__cc);
56240b57cec5SDimitry Andric   return __cc <= 1;
56250b57cec5SDimitry Andric }
56260b57cec5SDimitry Andric 
56270b57cec5SDimitry Andric // This prototype is deprecated.
56280b57cec5SDimitry Andric static inline __ATTRS_o_ai int
56295ffd83dbSDimitry Andric vec_any_lt(__vector __bool long long __a, __vector signed long long __b) {
56300b57cec5SDimitry Andric   int __cc;
56315ffd83dbSDimitry Andric   __builtin_s390_vchgs(__b, (__vector signed long long)__a, &__cc);
56320b57cec5SDimitry Andric   return __cc <= 1;
56330b57cec5SDimitry Andric }
56340b57cec5SDimitry Andric 
56350b57cec5SDimitry Andric static inline __ATTRS_o_ai int
56365ffd83dbSDimitry Andric vec_any_lt(__vector unsigned long long __a, __vector unsigned long long __b) {
56370b57cec5SDimitry Andric   int __cc;
56380b57cec5SDimitry Andric   __builtin_s390_vchlgs(__b, __a, &__cc);
56390b57cec5SDimitry Andric   return __cc <= 1;
56400b57cec5SDimitry Andric }
56410b57cec5SDimitry Andric 
56420b57cec5SDimitry Andric // This prototype is deprecated.
56430b57cec5SDimitry Andric static inline __ATTRS_o_ai int
56445ffd83dbSDimitry Andric vec_any_lt(__vector unsigned long long __a, __vector __bool long long __b) {
56450b57cec5SDimitry Andric   int __cc;
56465ffd83dbSDimitry Andric   __builtin_s390_vchlgs((__vector unsigned long long)__b, __a, &__cc);
56470b57cec5SDimitry Andric   return __cc <= 1;
56480b57cec5SDimitry Andric }
56490b57cec5SDimitry Andric 
56500b57cec5SDimitry Andric // This prototype is deprecated.
56510b57cec5SDimitry Andric static inline __ATTRS_o_ai int
56525ffd83dbSDimitry Andric vec_any_lt(__vector __bool long long __a, __vector unsigned long long __b) {
56530b57cec5SDimitry Andric   int __cc;
56545ffd83dbSDimitry Andric   __builtin_s390_vchlgs(__b, (__vector unsigned long long)__a, &__cc);
56550b57cec5SDimitry Andric   return __cc <= 1;
56560b57cec5SDimitry Andric }
56570b57cec5SDimitry Andric 
56580b57cec5SDimitry Andric // This prototype is deprecated.
56590b57cec5SDimitry Andric static inline __ATTRS_o_ai int
56605ffd83dbSDimitry Andric vec_any_lt(__vector __bool long long __a, __vector __bool long long __b) {
56610b57cec5SDimitry Andric   int __cc;
56625ffd83dbSDimitry Andric   __builtin_s390_vchlgs((__vector unsigned long long)__b,
56635ffd83dbSDimitry Andric                         (__vector unsigned long long)__a, &__cc);
56640b57cec5SDimitry Andric   return __cc <= 1;
56650b57cec5SDimitry Andric }
56660b57cec5SDimitry Andric 
56670b57cec5SDimitry Andric #if __ARCH__ >= 12
56680b57cec5SDimitry Andric static inline __ATTRS_o_ai int
56695ffd83dbSDimitry Andric vec_any_lt(__vector float __a, __vector float __b) {
56700b57cec5SDimitry Andric   int __cc;
56710b57cec5SDimitry Andric   __builtin_s390_vfchsbs(__b, __a, &__cc);
56720b57cec5SDimitry Andric   return __cc <= 1;
56730b57cec5SDimitry Andric }
56740b57cec5SDimitry Andric #endif
56750b57cec5SDimitry Andric 
56760b57cec5SDimitry Andric static inline __ATTRS_o_ai int
56775ffd83dbSDimitry Andric vec_any_lt(__vector double __a, __vector double __b) {
56780b57cec5SDimitry Andric   int __cc;
56790b57cec5SDimitry Andric   __builtin_s390_vfchdbs(__b, __a, &__cc);
56800b57cec5SDimitry Andric   return __cc <= 1;
56810b57cec5SDimitry Andric }
56820b57cec5SDimitry Andric 
56830b57cec5SDimitry Andric /*-- vec_any_nge ------------------------------------------------------------*/
56840b57cec5SDimitry Andric 
56850b57cec5SDimitry Andric #if __ARCH__ >= 12
56860b57cec5SDimitry Andric static inline __ATTRS_o_ai int
56875ffd83dbSDimitry Andric vec_any_nge(__vector float __a, __vector float __b) {
56880b57cec5SDimitry Andric   int __cc;
56890b57cec5SDimitry Andric   __builtin_s390_vfchesbs(__a, __b, &__cc);
56900b57cec5SDimitry Andric   return __cc != 0;
56910b57cec5SDimitry Andric }
56920b57cec5SDimitry Andric #endif
56930b57cec5SDimitry Andric 
56940b57cec5SDimitry Andric static inline __ATTRS_o_ai int
56955ffd83dbSDimitry Andric vec_any_nge(__vector double __a, __vector double __b) {
56960b57cec5SDimitry Andric   int __cc;
56970b57cec5SDimitry Andric   __builtin_s390_vfchedbs(__a, __b, &__cc);
56980b57cec5SDimitry Andric   return __cc != 0;
56990b57cec5SDimitry Andric }
57000b57cec5SDimitry Andric 
57010b57cec5SDimitry Andric /*-- vec_any_ngt ------------------------------------------------------------*/
57020b57cec5SDimitry Andric 
57030b57cec5SDimitry Andric #if __ARCH__ >= 12
57040b57cec5SDimitry Andric static inline __ATTRS_o_ai int
57055ffd83dbSDimitry Andric vec_any_ngt(__vector float __a, __vector float __b) {
57060b57cec5SDimitry Andric   int __cc;
57070b57cec5SDimitry Andric   __builtin_s390_vfchsbs(__a, __b, &__cc);
57080b57cec5SDimitry Andric   return __cc != 0;
57090b57cec5SDimitry Andric }
57100b57cec5SDimitry Andric #endif
57110b57cec5SDimitry Andric 
57120b57cec5SDimitry Andric static inline __ATTRS_o_ai int
57135ffd83dbSDimitry Andric vec_any_ngt(__vector double __a, __vector double __b) {
57140b57cec5SDimitry Andric   int __cc;
57150b57cec5SDimitry Andric   __builtin_s390_vfchdbs(__a, __b, &__cc);
57160b57cec5SDimitry Andric   return __cc != 0;
57170b57cec5SDimitry Andric }
57180b57cec5SDimitry Andric 
57190b57cec5SDimitry Andric /*-- vec_any_nle ------------------------------------------------------------*/
57200b57cec5SDimitry Andric 
57210b57cec5SDimitry Andric #if __ARCH__ >= 12
57220b57cec5SDimitry Andric static inline __ATTRS_o_ai int
57235ffd83dbSDimitry Andric vec_any_nle(__vector float __a, __vector float __b) {
57240b57cec5SDimitry Andric   int __cc;
57250b57cec5SDimitry Andric   __builtin_s390_vfchesbs(__b, __a, &__cc);
57260b57cec5SDimitry Andric   return __cc != 0;
57270b57cec5SDimitry Andric }
57280b57cec5SDimitry Andric #endif
57290b57cec5SDimitry Andric 
57300b57cec5SDimitry Andric static inline __ATTRS_o_ai int
57315ffd83dbSDimitry Andric vec_any_nle(__vector double __a, __vector double __b) {
57320b57cec5SDimitry Andric   int __cc;
57330b57cec5SDimitry Andric   __builtin_s390_vfchedbs(__b, __a, &__cc);
57340b57cec5SDimitry Andric   return __cc != 0;
57350b57cec5SDimitry Andric }
57360b57cec5SDimitry Andric 
57370b57cec5SDimitry Andric /*-- vec_any_nlt ------------------------------------------------------------*/
57380b57cec5SDimitry Andric 
57390b57cec5SDimitry Andric #if __ARCH__ >= 12
57400b57cec5SDimitry Andric static inline __ATTRS_o_ai int
57415ffd83dbSDimitry Andric vec_any_nlt(__vector float __a, __vector float __b) {
57420b57cec5SDimitry Andric   int __cc;
57430b57cec5SDimitry Andric   __builtin_s390_vfchsbs(__b, __a, &__cc);
57440b57cec5SDimitry Andric   return __cc != 0;
57450b57cec5SDimitry Andric }
57460b57cec5SDimitry Andric #endif
57470b57cec5SDimitry Andric 
57480b57cec5SDimitry Andric static inline __ATTRS_o_ai int
57495ffd83dbSDimitry Andric vec_any_nlt(__vector double __a, __vector double __b) {
57500b57cec5SDimitry Andric   int __cc;
57510b57cec5SDimitry Andric   __builtin_s390_vfchdbs(__b, __a, &__cc);
57520b57cec5SDimitry Andric   return __cc != 0;
57530b57cec5SDimitry Andric }
57540b57cec5SDimitry Andric 
57550b57cec5SDimitry Andric /*-- vec_any_nan ------------------------------------------------------------*/
57560b57cec5SDimitry Andric 
57570b57cec5SDimitry Andric #if __ARCH__ >= 12
57580b57cec5SDimitry Andric static inline __ATTRS_o_ai int
57595ffd83dbSDimitry Andric vec_any_nan(__vector float __a) {
57600b57cec5SDimitry Andric   int __cc;
57610b57cec5SDimitry Andric   __builtin_s390_vftcisb(__a, 15, &__cc);
57620b57cec5SDimitry Andric   return __cc != 3;
57630b57cec5SDimitry Andric }
57640b57cec5SDimitry Andric #endif
57650b57cec5SDimitry Andric 
57660b57cec5SDimitry Andric static inline __ATTRS_o_ai int
57675ffd83dbSDimitry Andric vec_any_nan(__vector double __a) {
57680b57cec5SDimitry Andric   int __cc;
57690b57cec5SDimitry Andric   __builtin_s390_vftcidb(__a, 15, &__cc);
57700b57cec5SDimitry Andric   return __cc != 3;
57710b57cec5SDimitry Andric }
57720b57cec5SDimitry Andric 
57730b57cec5SDimitry Andric /*-- vec_any_numeric --------------------------------------------------------*/
57740b57cec5SDimitry Andric 
57750b57cec5SDimitry Andric #if __ARCH__ >= 12
57760b57cec5SDimitry Andric static inline __ATTRS_o_ai int
57775ffd83dbSDimitry Andric vec_any_numeric(__vector float __a) {
57780b57cec5SDimitry Andric   int __cc;
57790b57cec5SDimitry Andric   __builtin_s390_vftcisb(__a, 15, &__cc);
57800b57cec5SDimitry Andric   return __cc != 0;
57810b57cec5SDimitry Andric }
57820b57cec5SDimitry Andric #endif
57830b57cec5SDimitry Andric 
57840b57cec5SDimitry Andric static inline __ATTRS_o_ai int
57855ffd83dbSDimitry Andric vec_any_numeric(__vector double __a) {
57860b57cec5SDimitry Andric   int __cc;
57870b57cec5SDimitry Andric   __builtin_s390_vftcidb(__a, 15, &__cc);
57880b57cec5SDimitry Andric   return __cc != 0;
57890b57cec5SDimitry Andric }
57900b57cec5SDimitry Andric 
57910b57cec5SDimitry Andric /*-- vec_andc ---------------------------------------------------------------*/
57920b57cec5SDimitry Andric 
57935ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
57945ffd83dbSDimitry Andric vec_andc(__vector __bool char __a, __vector __bool char __b) {
57950b57cec5SDimitry Andric   return __a & ~__b;
57960b57cec5SDimitry Andric }
57970b57cec5SDimitry Andric 
57985ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
57995ffd83dbSDimitry Andric vec_andc(__vector signed char __a, __vector signed char __b) {
58000b57cec5SDimitry Andric   return __a & ~__b;
58010b57cec5SDimitry Andric }
58020b57cec5SDimitry Andric 
58030b57cec5SDimitry Andric // This prototype is deprecated.
58045ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
58055ffd83dbSDimitry Andric vec_andc(__vector __bool char __a, __vector signed char __b) {
58060b57cec5SDimitry Andric   return __a & ~__b;
58070b57cec5SDimitry Andric }
58080b57cec5SDimitry Andric 
58090b57cec5SDimitry Andric // This prototype is deprecated.
58105ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
58115ffd83dbSDimitry Andric vec_andc(__vector signed char __a, __vector __bool char __b) {
58120b57cec5SDimitry Andric   return __a & ~__b;
58130b57cec5SDimitry Andric }
58140b57cec5SDimitry Andric 
58155ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
58165ffd83dbSDimitry Andric vec_andc(__vector unsigned char __a, __vector unsigned char __b) {
58170b57cec5SDimitry Andric   return __a & ~__b;
58180b57cec5SDimitry Andric }
58190b57cec5SDimitry Andric 
58200b57cec5SDimitry Andric // This prototype is deprecated.
58215ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
58225ffd83dbSDimitry Andric vec_andc(__vector __bool char __a, __vector unsigned char __b) {
58230b57cec5SDimitry Andric   return __a & ~__b;
58240b57cec5SDimitry Andric }
58250b57cec5SDimitry Andric 
58260b57cec5SDimitry Andric // This prototype is deprecated.
58275ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
58285ffd83dbSDimitry Andric vec_andc(__vector unsigned char __a, __vector __bool char __b) {
58290b57cec5SDimitry Andric   return __a & ~__b;
58300b57cec5SDimitry Andric }
58310b57cec5SDimitry Andric 
58325ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
58335ffd83dbSDimitry Andric vec_andc(__vector __bool short __a, __vector __bool short __b) {
58340b57cec5SDimitry Andric   return __a & ~__b;
58350b57cec5SDimitry Andric }
58360b57cec5SDimitry Andric 
58375ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
58385ffd83dbSDimitry Andric vec_andc(__vector signed short __a, __vector signed short __b) {
58390b57cec5SDimitry Andric   return __a & ~__b;
58400b57cec5SDimitry Andric }
58410b57cec5SDimitry Andric 
58420b57cec5SDimitry Andric // This prototype is deprecated.
58435ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
58445ffd83dbSDimitry Andric vec_andc(__vector __bool short __a, __vector signed short __b) {
58450b57cec5SDimitry Andric   return __a & ~__b;
58460b57cec5SDimitry Andric }
58470b57cec5SDimitry Andric 
58480b57cec5SDimitry Andric // This prototype is deprecated.
58495ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
58505ffd83dbSDimitry Andric vec_andc(__vector signed short __a, __vector __bool short __b) {
58510b57cec5SDimitry Andric   return __a & ~__b;
58520b57cec5SDimitry Andric }
58530b57cec5SDimitry Andric 
58545ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
58555ffd83dbSDimitry Andric vec_andc(__vector unsigned short __a, __vector unsigned short __b) {
58560b57cec5SDimitry Andric   return __a & ~__b;
58570b57cec5SDimitry Andric }
58580b57cec5SDimitry Andric 
58590b57cec5SDimitry Andric // This prototype is deprecated.
58605ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
58615ffd83dbSDimitry Andric vec_andc(__vector __bool short __a, __vector unsigned short __b) {
58620b57cec5SDimitry Andric   return __a & ~__b;
58630b57cec5SDimitry Andric }
58640b57cec5SDimitry Andric 
58650b57cec5SDimitry Andric // This prototype is deprecated.
58665ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
58675ffd83dbSDimitry Andric vec_andc(__vector unsigned short __a, __vector __bool short __b) {
58680b57cec5SDimitry Andric   return __a & ~__b;
58690b57cec5SDimitry Andric }
58700b57cec5SDimitry Andric 
58715ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
58725ffd83dbSDimitry Andric vec_andc(__vector __bool int __a, __vector __bool int __b) {
58730b57cec5SDimitry Andric   return __a & ~__b;
58740b57cec5SDimitry Andric }
58750b57cec5SDimitry Andric 
58765ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
58775ffd83dbSDimitry Andric vec_andc(__vector signed int __a, __vector signed int __b) {
58780b57cec5SDimitry Andric   return __a & ~__b;
58790b57cec5SDimitry Andric }
58800b57cec5SDimitry Andric 
58810b57cec5SDimitry Andric // This prototype is deprecated.
58825ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
58835ffd83dbSDimitry Andric vec_andc(__vector __bool int __a, __vector signed int __b) {
58840b57cec5SDimitry Andric   return __a & ~__b;
58850b57cec5SDimitry Andric }
58860b57cec5SDimitry Andric 
58870b57cec5SDimitry Andric // This prototype is deprecated.
58885ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
58895ffd83dbSDimitry Andric vec_andc(__vector signed int __a, __vector __bool int __b) {
58900b57cec5SDimitry Andric   return __a & ~__b;
58910b57cec5SDimitry Andric }
58920b57cec5SDimitry Andric 
58935ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
58945ffd83dbSDimitry Andric vec_andc(__vector unsigned int __a, __vector unsigned int __b) {
58950b57cec5SDimitry Andric   return __a & ~__b;
58960b57cec5SDimitry Andric }
58970b57cec5SDimitry Andric 
58980b57cec5SDimitry Andric // This prototype is deprecated.
58995ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
59005ffd83dbSDimitry Andric vec_andc(__vector __bool int __a, __vector unsigned int __b) {
59010b57cec5SDimitry Andric   return __a & ~__b;
59020b57cec5SDimitry Andric }
59030b57cec5SDimitry Andric 
59040b57cec5SDimitry Andric // This prototype is deprecated.
59055ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
59065ffd83dbSDimitry Andric vec_andc(__vector unsigned int __a, __vector __bool int __b) {
59070b57cec5SDimitry Andric   return __a & ~__b;
59080b57cec5SDimitry Andric }
59090b57cec5SDimitry Andric 
59105ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
59115ffd83dbSDimitry Andric vec_andc(__vector __bool long long __a, __vector __bool long long __b) {
59120b57cec5SDimitry Andric   return __a & ~__b;
59130b57cec5SDimitry Andric }
59140b57cec5SDimitry Andric 
59155ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
59165ffd83dbSDimitry Andric vec_andc(__vector signed long long __a, __vector signed long long __b) {
59170b57cec5SDimitry Andric   return __a & ~__b;
59180b57cec5SDimitry Andric }
59190b57cec5SDimitry Andric 
59200b57cec5SDimitry Andric // This prototype is deprecated.
59215ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
59225ffd83dbSDimitry Andric vec_andc(__vector __bool long long __a, __vector signed long long __b) {
59230b57cec5SDimitry Andric   return __a & ~__b;
59240b57cec5SDimitry Andric }
59250b57cec5SDimitry Andric 
59260b57cec5SDimitry Andric // This prototype is deprecated.
59275ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
59285ffd83dbSDimitry Andric vec_andc(__vector signed long long __a, __vector __bool long long __b) {
59290b57cec5SDimitry Andric   return __a & ~__b;
59300b57cec5SDimitry Andric }
59310b57cec5SDimitry Andric 
59325ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
59335ffd83dbSDimitry Andric vec_andc(__vector unsigned long long __a, __vector unsigned long long __b) {
59340b57cec5SDimitry Andric   return __a & ~__b;
59350b57cec5SDimitry Andric }
59360b57cec5SDimitry Andric 
59370b57cec5SDimitry Andric // This prototype is deprecated.
59385ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
59395ffd83dbSDimitry Andric vec_andc(__vector __bool long long __a, __vector unsigned long long __b) {
59400b57cec5SDimitry Andric   return __a & ~__b;
59410b57cec5SDimitry Andric }
59420b57cec5SDimitry Andric 
59430b57cec5SDimitry Andric // This prototype is deprecated.
59445ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
59455ffd83dbSDimitry Andric vec_andc(__vector unsigned long long __a, __vector __bool long long __b) {
59460b57cec5SDimitry Andric   return __a & ~__b;
59470b57cec5SDimitry Andric }
59480b57cec5SDimitry Andric 
59490b57cec5SDimitry Andric #if __ARCH__ >= 12
59505ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
59515ffd83dbSDimitry Andric vec_andc(__vector float __a, __vector float __b) {
59525ffd83dbSDimitry Andric   return (__vector float)((__vector unsigned int)__a &
59535ffd83dbSDimitry Andric                          ~(__vector unsigned int)__b);
59540b57cec5SDimitry Andric }
59550b57cec5SDimitry Andric #endif
59560b57cec5SDimitry Andric 
59575ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
59585ffd83dbSDimitry Andric vec_andc(__vector double __a, __vector double __b) {
59595ffd83dbSDimitry Andric   return (__vector double)((__vector unsigned long long)__a &
59605ffd83dbSDimitry Andric                          ~(__vector unsigned long long)__b);
59610b57cec5SDimitry Andric }
59620b57cec5SDimitry Andric 
59630b57cec5SDimitry Andric // This prototype is deprecated.
59645ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
59655ffd83dbSDimitry Andric vec_andc(__vector __bool long long __a, __vector double __b) {
59665ffd83dbSDimitry Andric   return (__vector double)((__vector unsigned long long)__a &
59675ffd83dbSDimitry Andric                          ~(__vector unsigned long long)__b);
59680b57cec5SDimitry Andric }
59690b57cec5SDimitry Andric 
59700b57cec5SDimitry Andric // This prototype is deprecated.
59715ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
59725ffd83dbSDimitry Andric vec_andc(__vector double __a, __vector __bool long long __b) {
59735ffd83dbSDimitry Andric   return (__vector double)((__vector unsigned long long)__a &
59745ffd83dbSDimitry Andric                          ~(__vector unsigned long long)__b);
59750b57cec5SDimitry Andric }
59760b57cec5SDimitry Andric 
59770b57cec5SDimitry Andric /*-- vec_nor ----------------------------------------------------------------*/
59780b57cec5SDimitry Andric 
59795ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
59805ffd83dbSDimitry Andric vec_nor(__vector __bool char __a, __vector __bool char __b) {
59810b57cec5SDimitry Andric   return ~(__a | __b);
59820b57cec5SDimitry Andric }
59830b57cec5SDimitry Andric 
59845ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
59855ffd83dbSDimitry Andric vec_nor(__vector signed char __a, __vector signed char __b) {
59860b57cec5SDimitry Andric   return ~(__a | __b);
59870b57cec5SDimitry Andric }
59880b57cec5SDimitry Andric 
59890b57cec5SDimitry Andric // This prototype is deprecated.
59905ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
59915ffd83dbSDimitry Andric vec_nor(__vector __bool char __a, __vector signed char __b) {
59920b57cec5SDimitry Andric   return ~(__a | __b);
59930b57cec5SDimitry Andric }
59940b57cec5SDimitry Andric 
59950b57cec5SDimitry Andric // This prototype is deprecated.
59965ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
59975ffd83dbSDimitry Andric vec_nor(__vector signed char __a, __vector __bool char __b) {
59980b57cec5SDimitry Andric   return ~(__a | __b);
59990b57cec5SDimitry Andric }
60000b57cec5SDimitry Andric 
60015ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
60025ffd83dbSDimitry Andric vec_nor(__vector unsigned char __a, __vector unsigned char __b) {
60030b57cec5SDimitry Andric   return ~(__a | __b);
60040b57cec5SDimitry Andric }
60050b57cec5SDimitry Andric 
60060b57cec5SDimitry Andric // This prototype is deprecated.
60075ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
60085ffd83dbSDimitry Andric vec_nor(__vector __bool char __a, __vector unsigned char __b) {
60090b57cec5SDimitry Andric   return ~(__a | __b);
60100b57cec5SDimitry Andric }
60110b57cec5SDimitry Andric 
60120b57cec5SDimitry Andric // This prototype is deprecated.
60135ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
60145ffd83dbSDimitry Andric vec_nor(__vector unsigned char __a, __vector __bool char __b) {
60150b57cec5SDimitry Andric   return ~(__a | __b);
60160b57cec5SDimitry Andric }
60170b57cec5SDimitry Andric 
60185ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
60195ffd83dbSDimitry Andric vec_nor(__vector __bool short __a, __vector __bool short __b) {
60200b57cec5SDimitry Andric   return ~(__a | __b);
60210b57cec5SDimitry Andric }
60220b57cec5SDimitry Andric 
60235ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
60245ffd83dbSDimitry Andric vec_nor(__vector signed short __a, __vector signed short __b) {
60250b57cec5SDimitry Andric   return ~(__a | __b);
60260b57cec5SDimitry Andric }
60270b57cec5SDimitry Andric 
60280b57cec5SDimitry Andric // This prototype is deprecated.
60295ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
60305ffd83dbSDimitry Andric vec_nor(__vector __bool short __a, __vector signed short __b) {
60310b57cec5SDimitry Andric   return ~(__a | __b);
60320b57cec5SDimitry Andric }
60330b57cec5SDimitry Andric 
60340b57cec5SDimitry Andric // This prototype is deprecated.
60355ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
60365ffd83dbSDimitry Andric vec_nor(__vector signed short __a, __vector __bool short __b) {
60370b57cec5SDimitry Andric   return ~(__a | __b);
60380b57cec5SDimitry Andric }
60390b57cec5SDimitry Andric 
60405ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
60415ffd83dbSDimitry Andric vec_nor(__vector unsigned short __a, __vector unsigned short __b) {
60420b57cec5SDimitry Andric   return ~(__a | __b);
60430b57cec5SDimitry Andric }
60440b57cec5SDimitry Andric 
60450b57cec5SDimitry Andric // This prototype is deprecated.
60465ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
60475ffd83dbSDimitry Andric vec_nor(__vector __bool short __a, __vector unsigned short __b) {
60480b57cec5SDimitry Andric   return ~(__a | __b);
60490b57cec5SDimitry Andric }
60500b57cec5SDimitry Andric 
60510b57cec5SDimitry Andric // This prototype is deprecated.
60525ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
60535ffd83dbSDimitry Andric vec_nor(__vector unsigned short __a, __vector __bool short __b) {
60540b57cec5SDimitry Andric   return ~(__a | __b);
60550b57cec5SDimitry Andric }
60560b57cec5SDimitry Andric 
60575ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
60585ffd83dbSDimitry Andric vec_nor(__vector __bool int __a, __vector __bool int __b) {
60590b57cec5SDimitry Andric   return ~(__a | __b);
60600b57cec5SDimitry Andric }
60610b57cec5SDimitry Andric 
60625ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
60635ffd83dbSDimitry Andric vec_nor(__vector signed int __a, __vector signed int __b) {
60640b57cec5SDimitry Andric   return ~(__a | __b);
60650b57cec5SDimitry Andric }
60660b57cec5SDimitry Andric 
60670b57cec5SDimitry Andric // This prototype is deprecated.
60685ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
60695ffd83dbSDimitry Andric vec_nor(__vector __bool int __a, __vector signed int __b) {
60700b57cec5SDimitry Andric   return ~(__a | __b);
60710b57cec5SDimitry Andric }
60720b57cec5SDimitry Andric 
60730b57cec5SDimitry Andric // This prototype is deprecated.
60745ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
60755ffd83dbSDimitry Andric vec_nor(__vector signed int __a, __vector __bool int __b) {
60760b57cec5SDimitry Andric   return ~(__a | __b);
60770b57cec5SDimitry Andric }
60780b57cec5SDimitry Andric 
60795ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
60805ffd83dbSDimitry Andric vec_nor(__vector unsigned int __a, __vector unsigned int __b) {
60810b57cec5SDimitry Andric   return ~(__a | __b);
60820b57cec5SDimitry Andric }
60830b57cec5SDimitry Andric 
60840b57cec5SDimitry Andric // This prototype is deprecated.
60855ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
60865ffd83dbSDimitry Andric vec_nor(__vector __bool int __a, __vector unsigned int __b) {
60870b57cec5SDimitry Andric   return ~(__a | __b);
60880b57cec5SDimitry Andric }
60890b57cec5SDimitry Andric 
60900b57cec5SDimitry Andric // This prototype is deprecated.
60915ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
60925ffd83dbSDimitry Andric vec_nor(__vector unsigned int __a, __vector __bool int __b) {
60930b57cec5SDimitry Andric   return ~(__a | __b);
60940b57cec5SDimitry Andric }
60950b57cec5SDimitry Andric 
60965ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
60975ffd83dbSDimitry Andric vec_nor(__vector __bool long long __a, __vector __bool long long __b) {
60980b57cec5SDimitry Andric   return ~(__a | __b);
60990b57cec5SDimitry Andric }
61000b57cec5SDimitry Andric 
61015ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
61025ffd83dbSDimitry Andric vec_nor(__vector signed long long __a, __vector signed long long __b) {
61030b57cec5SDimitry Andric   return ~(__a | __b);
61040b57cec5SDimitry Andric }
61050b57cec5SDimitry Andric 
61060b57cec5SDimitry Andric // This prototype is deprecated.
61075ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
61085ffd83dbSDimitry Andric vec_nor(__vector __bool long long __a, __vector signed long long __b) {
61090b57cec5SDimitry Andric   return ~(__a | __b);
61100b57cec5SDimitry Andric }
61110b57cec5SDimitry Andric 
61120b57cec5SDimitry Andric // This prototype is deprecated.
61135ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
61145ffd83dbSDimitry Andric vec_nor(__vector signed long long __a, __vector __bool long long __b) {
61150b57cec5SDimitry Andric   return ~(__a | __b);
61160b57cec5SDimitry Andric }
61170b57cec5SDimitry Andric 
61185ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
61195ffd83dbSDimitry Andric vec_nor(__vector unsigned long long __a, __vector unsigned long long __b) {
61200b57cec5SDimitry Andric   return ~(__a | __b);
61210b57cec5SDimitry Andric }
61220b57cec5SDimitry Andric 
61230b57cec5SDimitry Andric // This prototype is deprecated.
61245ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
61255ffd83dbSDimitry Andric vec_nor(__vector __bool long long __a, __vector unsigned long long __b) {
61260b57cec5SDimitry Andric   return ~(__a | __b);
61270b57cec5SDimitry Andric }
61280b57cec5SDimitry Andric 
61290b57cec5SDimitry Andric // This prototype is deprecated.
61305ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
61315ffd83dbSDimitry Andric vec_nor(__vector unsigned long long __a, __vector __bool long long __b) {
61320b57cec5SDimitry Andric   return ~(__a | __b);
61330b57cec5SDimitry Andric }
61340b57cec5SDimitry Andric 
61350b57cec5SDimitry Andric #if __ARCH__ >= 12
61365ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
61375ffd83dbSDimitry Andric vec_nor(__vector float __a, __vector float __b) {
61385ffd83dbSDimitry Andric   return (__vector float)~((__vector unsigned int)__a |
61395ffd83dbSDimitry Andric                          (__vector unsigned int)__b);
61400b57cec5SDimitry Andric }
61410b57cec5SDimitry Andric #endif
61420b57cec5SDimitry Andric 
61435ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
61445ffd83dbSDimitry Andric vec_nor(__vector double __a, __vector double __b) {
61455ffd83dbSDimitry Andric   return (__vector double)~((__vector unsigned long long)__a |
61465ffd83dbSDimitry Andric                           (__vector unsigned long long)__b);
61470b57cec5SDimitry Andric }
61480b57cec5SDimitry Andric 
61490b57cec5SDimitry Andric // This prototype is deprecated.
61505ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
61515ffd83dbSDimitry Andric vec_nor(__vector __bool long long __a, __vector double __b) {
61525ffd83dbSDimitry Andric   return (__vector double)~((__vector unsigned long long)__a |
61535ffd83dbSDimitry Andric                           (__vector unsigned long long)__b);
61540b57cec5SDimitry Andric }
61550b57cec5SDimitry Andric 
61560b57cec5SDimitry Andric // This prototype is deprecated.
61575ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
61585ffd83dbSDimitry Andric vec_nor(__vector double __a, __vector __bool long long __b) {
61595ffd83dbSDimitry Andric   return (__vector double)~((__vector unsigned long long)__a |
61605ffd83dbSDimitry Andric                           (__vector unsigned long long)__b);
61610b57cec5SDimitry Andric }
61620b57cec5SDimitry Andric 
61630b57cec5SDimitry Andric /*-- vec_orc ----------------------------------------------------------------*/
61640b57cec5SDimitry Andric 
61650b57cec5SDimitry Andric #if __ARCH__ >= 12
61665ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
61675ffd83dbSDimitry Andric vec_orc(__vector __bool char __a, __vector __bool char __b) {
61680b57cec5SDimitry Andric   return __a | ~__b;
61690b57cec5SDimitry Andric }
61700b57cec5SDimitry Andric 
61715ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
61725ffd83dbSDimitry Andric vec_orc(__vector signed char __a, __vector signed char __b) {
61730b57cec5SDimitry Andric   return __a | ~__b;
61740b57cec5SDimitry Andric }
61750b57cec5SDimitry Andric 
61765ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
61775ffd83dbSDimitry Andric vec_orc(__vector unsigned char __a, __vector unsigned char __b) {
61780b57cec5SDimitry Andric   return __a | ~__b;
61790b57cec5SDimitry Andric }
61800b57cec5SDimitry Andric 
61815ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
61825ffd83dbSDimitry Andric vec_orc(__vector __bool short __a, __vector __bool short __b) {
61830b57cec5SDimitry Andric   return __a | ~__b;
61840b57cec5SDimitry Andric }
61850b57cec5SDimitry Andric 
61865ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
61875ffd83dbSDimitry Andric vec_orc(__vector signed short __a, __vector signed short __b) {
61880b57cec5SDimitry Andric   return __a | ~__b;
61890b57cec5SDimitry Andric }
61900b57cec5SDimitry Andric 
61915ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
61925ffd83dbSDimitry Andric vec_orc(__vector unsigned short __a, __vector unsigned short __b) {
61930b57cec5SDimitry Andric   return __a | ~__b;
61940b57cec5SDimitry Andric }
61950b57cec5SDimitry Andric 
61965ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
61975ffd83dbSDimitry Andric vec_orc(__vector __bool int __a, __vector __bool int __b) {
61980b57cec5SDimitry Andric   return __a | ~__b;
61990b57cec5SDimitry Andric }
62000b57cec5SDimitry Andric 
62015ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
62025ffd83dbSDimitry Andric vec_orc(__vector signed int __a, __vector signed int __b) {
62030b57cec5SDimitry Andric   return __a | ~__b;
62040b57cec5SDimitry Andric }
62050b57cec5SDimitry Andric 
62065ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
62075ffd83dbSDimitry Andric vec_orc(__vector unsigned int __a, __vector unsigned int __b) {
62080b57cec5SDimitry Andric   return __a | ~__b;
62090b57cec5SDimitry Andric }
62100b57cec5SDimitry Andric 
62115ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
62125ffd83dbSDimitry Andric vec_orc(__vector __bool long long __a, __vector __bool long long __b) {
62130b57cec5SDimitry Andric   return __a | ~__b;
62140b57cec5SDimitry Andric }
62150b57cec5SDimitry Andric 
62165ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
62175ffd83dbSDimitry Andric vec_orc(__vector signed long long __a, __vector signed long long __b) {
62180b57cec5SDimitry Andric   return __a | ~__b;
62190b57cec5SDimitry Andric }
62200b57cec5SDimitry Andric 
62215ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
62225ffd83dbSDimitry Andric vec_orc(__vector unsigned long long __a, __vector unsigned long long __b) {
62230b57cec5SDimitry Andric   return __a | ~__b;
62240b57cec5SDimitry Andric }
62250b57cec5SDimitry Andric 
62265ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
62275ffd83dbSDimitry Andric vec_orc(__vector float __a, __vector float __b) {
62285ffd83dbSDimitry Andric   return (__vector float)((__vector unsigned int)__a |
62295ffd83dbSDimitry Andric                         ~(__vector unsigned int)__b);
62300b57cec5SDimitry Andric }
62310b57cec5SDimitry Andric 
62325ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
62335ffd83dbSDimitry Andric vec_orc(__vector double __a, __vector double __b) {
62345ffd83dbSDimitry Andric   return (__vector double)((__vector unsigned long long)__a |
62355ffd83dbSDimitry Andric                          ~(__vector unsigned long long)__b);
62360b57cec5SDimitry Andric }
62370b57cec5SDimitry Andric #endif
62380b57cec5SDimitry Andric 
62390b57cec5SDimitry Andric /*-- vec_nand ---------------------------------------------------------------*/
62400b57cec5SDimitry Andric 
62410b57cec5SDimitry Andric #if __ARCH__ >= 12
62425ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
62435ffd83dbSDimitry Andric vec_nand(__vector __bool char __a, __vector __bool char __b) {
62440b57cec5SDimitry Andric   return ~(__a & __b);
62450b57cec5SDimitry Andric }
62460b57cec5SDimitry Andric 
62475ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
62485ffd83dbSDimitry Andric vec_nand(__vector signed char __a, __vector signed char __b) {
62490b57cec5SDimitry Andric   return ~(__a & __b);
62500b57cec5SDimitry Andric }
62510b57cec5SDimitry Andric 
62525ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
62535ffd83dbSDimitry Andric vec_nand(__vector unsigned char __a, __vector unsigned char __b) {
62540b57cec5SDimitry Andric   return ~(__a & __b);
62550b57cec5SDimitry Andric }
62560b57cec5SDimitry Andric 
62575ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
62585ffd83dbSDimitry Andric vec_nand(__vector __bool short __a, __vector __bool short __b) {
62590b57cec5SDimitry Andric   return ~(__a & __b);
62600b57cec5SDimitry Andric }
62610b57cec5SDimitry Andric 
62625ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
62635ffd83dbSDimitry Andric vec_nand(__vector signed short __a, __vector signed short __b) {
62640b57cec5SDimitry Andric   return ~(__a & __b);
62650b57cec5SDimitry Andric }
62660b57cec5SDimitry Andric 
62675ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
62685ffd83dbSDimitry Andric vec_nand(__vector unsigned short __a, __vector unsigned short __b) {
62690b57cec5SDimitry Andric   return ~(__a & __b);
62700b57cec5SDimitry Andric }
62710b57cec5SDimitry Andric 
62725ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
62735ffd83dbSDimitry Andric vec_nand(__vector __bool int __a, __vector __bool int __b) {
62740b57cec5SDimitry Andric   return ~(__a & __b);
62750b57cec5SDimitry Andric }
62760b57cec5SDimitry Andric 
62775ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
62785ffd83dbSDimitry Andric vec_nand(__vector signed int __a, __vector signed int __b) {
62790b57cec5SDimitry Andric   return ~(__a & __b);
62800b57cec5SDimitry Andric }
62810b57cec5SDimitry Andric 
62825ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
62835ffd83dbSDimitry Andric vec_nand(__vector unsigned int __a, __vector unsigned int __b) {
62840b57cec5SDimitry Andric   return ~(__a & __b);
62850b57cec5SDimitry Andric }
62860b57cec5SDimitry Andric 
62875ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
62885ffd83dbSDimitry Andric vec_nand(__vector __bool long long __a, __vector __bool long long __b) {
62890b57cec5SDimitry Andric   return ~(__a & __b);
62900b57cec5SDimitry Andric }
62910b57cec5SDimitry Andric 
62925ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
62935ffd83dbSDimitry Andric vec_nand(__vector signed long long __a, __vector signed long long __b) {
62940b57cec5SDimitry Andric   return ~(__a & __b);
62950b57cec5SDimitry Andric }
62960b57cec5SDimitry Andric 
62975ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
62985ffd83dbSDimitry Andric vec_nand(__vector unsigned long long __a, __vector unsigned long long __b) {
62990b57cec5SDimitry Andric   return ~(__a & __b);
63000b57cec5SDimitry Andric }
63010b57cec5SDimitry Andric 
63025ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
63035ffd83dbSDimitry Andric vec_nand(__vector float __a, __vector float __b) {
63045ffd83dbSDimitry Andric   return (__vector float)~((__vector unsigned int)__a &
63055ffd83dbSDimitry Andric                          (__vector unsigned int)__b);
63060b57cec5SDimitry Andric }
63070b57cec5SDimitry Andric 
63085ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
63095ffd83dbSDimitry Andric vec_nand(__vector double __a, __vector double __b) {
63105ffd83dbSDimitry Andric   return (__vector double)~((__vector unsigned long long)__a &
63115ffd83dbSDimitry Andric                           (__vector unsigned long long)__b);
63120b57cec5SDimitry Andric }
63130b57cec5SDimitry Andric #endif
63140b57cec5SDimitry Andric 
63150b57cec5SDimitry Andric /*-- vec_eqv ----------------------------------------------------------------*/
63160b57cec5SDimitry Andric 
63170b57cec5SDimitry Andric #if __ARCH__ >= 12
63185ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
63195ffd83dbSDimitry Andric vec_eqv(__vector __bool char __a, __vector __bool char __b) {
63200b57cec5SDimitry Andric   return ~(__a ^ __b);
63210b57cec5SDimitry Andric }
63220b57cec5SDimitry Andric 
63235ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
63245ffd83dbSDimitry Andric vec_eqv(__vector signed char __a, __vector signed char __b) {
63250b57cec5SDimitry Andric   return ~(__a ^ __b);
63260b57cec5SDimitry Andric }
63270b57cec5SDimitry Andric 
63285ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
63295ffd83dbSDimitry Andric vec_eqv(__vector unsigned char __a, __vector unsigned char __b) {
63300b57cec5SDimitry Andric   return ~(__a ^ __b);
63310b57cec5SDimitry Andric }
63320b57cec5SDimitry Andric 
63335ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
63345ffd83dbSDimitry Andric vec_eqv(__vector __bool short __a, __vector __bool short __b) {
63350b57cec5SDimitry Andric   return ~(__a ^ __b);
63360b57cec5SDimitry Andric }
63370b57cec5SDimitry Andric 
63385ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
63395ffd83dbSDimitry Andric vec_eqv(__vector signed short __a, __vector signed short __b) {
63400b57cec5SDimitry Andric   return ~(__a ^ __b);
63410b57cec5SDimitry Andric }
63420b57cec5SDimitry Andric 
63435ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
63445ffd83dbSDimitry Andric vec_eqv(__vector unsigned short __a, __vector unsigned short __b) {
63450b57cec5SDimitry Andric   return ~(__a ^ __b);
63460b57cec5SDimitry Andric }
63470b57cec5SDimitry Andric 
63485ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
63495ffd83dbSDimitry Andric vec_eqv(__vector __bool int __a, __vector __bool int __b) {
63500b57cec5SDimitry Andric   return ~(__a ^ __b);
63510b57cec5SDimitry Andric }
63520b57cec5SDimitry Andric 
63535ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
63545ffd83dbSDimitry Andric vec_eqv(__vector signed int __a, __vector signed int __b) {
63550b57cec5SDimitry Andric   return ~(__a ^ __b);
63560b57cec5SDimitry Andric }
63570b57cec5SDimitry Andric 
63585ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
63595ffd83dbSDimitry Andric vec_eqv(__vector unsigned int __a, __vector unsigned int __b) {
63600b57cec5SDimitry Andric   return ~(__a ^ __b);
63610b57cec5SDimitry Andric }
63620b57cec5SDimitry Andric 
63635ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
63645ffd83dbSDimitry Andric vec_eqv(__vector __bool long long __a, __vector __bool long long __b) {
63650b57cec5SDimitry Andric   return ~(__a ^ __b);
63660b57cec5SDimitry Andric }
63670b57cec5SDimitry Andric 
63685ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
63695ffd83dbSDimitry Andric vec_eqv(__vector signed long long __a, __vector signed long long __b) {
63700b57cec5SDimitry Andric   return ~(__a ^ __b);
63710b57cec5SDimitry Andric }
63720b57cec5SDimitry Andric 
63735ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
63745ffd83dbSDimitry Andric vec_eqv(__vector unsigned long long __a, __vector unsigned long long __b) {
63750b57cec5SDimitry Andric   return ~(__a ^ __b);
63760b57cec5SDimitry Andric }
63770b57cec5SDimitry Andric 
63785ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
63795ffd83dbSDimitry Andric vec_eqv(__vector float __a, __vector float __b) {
63805ffd83dbSDimitry Andric   return (__vector float)~((__vector unsigned int)__a ^
63815ffd83dbSDimitry Andric                          (__vector unsigned int)__b);
63820b57cec5SDimitry Andric }
63830b57cec5SDimitry Andric 
63845ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
63855ffd83dbSDimitry Andric vec_eqv(__vector double __a, __vector double __b) {
63865ffd83dbSDimitry Andric   return (__vector double)~((__vector unsigned long long)__a ^
63875ffd83dbSDimitry Andric                           (__vector unsigned long long)__b);
63880b57cec5SDimitry Andric }
63890b57cec5SDimitry Andric #endif
63900b57cec5SDimitry Andric 
63910b57cec5SDimitry Andric /*-- vec_cntlz --------------------------------------------------------------*/
63920b57cec5SDimitry Andric 
63935ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
63945ffd83dbSDimitry Andric vec_cntlz(__vector signed char __a) {
63955ffd83dbSDimitry Andric   return __builtin_s390_vclzb((__vector unsigned char)__a);
63960b57cec5SDimitry Andric }
63970b57cec5SDimitry Andric 
63985ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
63995ffd83dbSDimitry Andric vec_cntlz(__vector unsigned char __a) {
64000b57cec5SDimitry Andric   return __builtin_s390_vclzb(__a);
64010b57cec5SDimitry Andric }
64020b57cec5SDimitry Andric 
64035ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
64045ffd83dbSDimitry Andric vec_cntlz(__vector signed short __a) {
64055ffd83dbSDimitry Andric   return __builtin_s390_vclzh((__vector unsigned short)__a);
64060b57cec5SDimitry Andric }
64070b57cec5SDimitry Andric 
64085ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
64095ffd83dbSDimitry Andric vec_cntlz(__vector unsigned short __a) {
64100b57cec5SDimitry Andric   return __builtin_s390_vclzh(__a);
64110b57cec5SDimitry Andric }
64120b57cec5SDimitry Andric 
64135ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
64145ffd83dbSDimitry Andric vec_cntlz(__vector signed int __a) {
64155ffd83dbSDimitry Andric   return __builtin_s390_vclzf((__vector unsigned int)__a);
64160b57cec5SDimitry Andric }
64170b57cec5SDimitry Andric 
64185ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
64195ffd83dbSDimitry Andric vec_cntlz(__vector unsigned int __a) {
64200b57cec5SDimitry Andric   return __builtin_s390_vclzf(__a);
64210b57cec5SDimitry Andric }
64220b57cec5SDimitry Andric 
64235ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
64245ffd83dbSDimitry Andric vec_cntlz(__vector signed long long __a) {
64255ffd83dbSDimitry Andric   return __builtin_s390_vclzg((__vector unsigned long long)__a);
64260b57cec5SDimitry Andric }
64270b57cec5SDimitry Andric 
64285ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
64295ffd83dbSDimitry Andric vec_cntlz(__vector unsigned long long __a) {
64300b57cec5SDimitry Andric   return __builtin_s390_vclzg(__a);
64310b57cec5SDimitry Andric }
64320b57cec5SDimitry Andric 
64330b57cec5SDimitry Andric /*-- vec_cnttz --------------------------------------------------------------*/
64340b57cec5SDimitry Andric 
64355ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
64365ffd83dbSDimitry Andric vec_cnttz(__vector signed char __a) {
64375ffd83dbSDimitry Andric   return __builtin_s390_vctzb((__vector unsigned char)__a);
64380b57cec5SDimitry Andric }
64390b57cec5SDimitry Andric 
64405ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
64415ffd83dbSDimitry Andric vec_cnttz(__vector unsigned char __a) {
64420b57cec5SDimitry Andric   return __builtin_s390_vctzb(__a);
64430b57cec5SDimitry Andric }
64440b57cec5SDimitry Andric 
64455ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
64465ffd83dbSDimitry Andric vec_cnttz(__vector signed short __a) {
64475ffd83dbSDimitry Andric   return __builtin_s390_vctzh((__vector unsigned short)__a);
64480b57cec5SDimitry Andric }
64490b57cec5SDimitry Andric 
64505ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
64515ffd83dbSDimitry Andric vec_cnttz(__vector unsigned short __a) {
64520b57cec5SDimitry Andric   return __builtin_s390_vctzh(__a);
64530b57cec5SDimitry Andric }
64540b57cec5SDimitry Andric 
64555ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
64565ffd83dbSDimitry Andric vec_cnttz(__vector signed int __a) {
64575ffd83dbSDimitry Andric   return __builtin_s390_vctzf((__vector unsigned int)__a);
64580b57cec5SDimitry Andric }
64590b57cec5SDimitry Andric 
64605ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
64615ffd83dbSDimitry Andric vec_cnttz(__vector unsigned int __a) {
64620b57cec5SDimitry Andric   return __builtin_s390_vctzf(__a);
64630b57cec5SDimitry Andric }
64640b57cec5SDimitry Andric 
64655ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
64665ffd83dbSDimitry Andric vec_cnttz(__vector signed long long __a) {
64675ffd83dbSDimitry Andric   return __builtin_s390_vctzg((__vector unsigned long long)__a);
64680b57cec5SDimitry Andric }
64690b57cec5SDimitry Andric 
64705ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
64715ffd83dbSDimitry Andric vec_cnttz(__vector unsigned long long __a) {
64720b57cec5SDimitry Andric   return __builtin_s390_vctzg(__a);
64730b57cec5SDimitry Andric }
64740b57cec5SDimitry Andric 
64750b57cec5SDimitry Andric /*-- vec_popcnt -------------------------------------------------------------*/
64760b57cec5SDimitry Andric 
64775ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
64785ffd83dbSDimitry Andric vec_popcnt(__vector signed char __a) {
64795ffd83dbSDimitry Andric   return __builtin_s390_vpopctb((__vector unsigned char)__a);
64800b57cec5SDimitry Andric }
64810b57cec5SDimitry Andric 
64825ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
64835ffd83dbSDimitry Andric vec_popcnt(__vector unsigned char __a) {
64840b57cec5SDimitry Andric   return __builtin_s390_vpopctb(__a);
64850b57cec5SDimitry Andric }
64860b57cec5SDimitry Andric 
64875ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
64885ffd83dbSDimitry Andric vec_popcnt(__vector signed short __a) {
64895ffd83dbSDimitry Andric   return __builtin_s390_vpopcth((__vector unsigned short)__a);
64900b57cec5SDimitry Andric }
64910b57cec5SDimitry Andric 
64925ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
64935ffd83dbSDimitry Andric vec_popcnt(__vector unsigned short __a) {
64940b57cec5SDimitry Andric   return __builtin_s390_vpopcth(__a);
64950b57cec5SDimitry Andric }
64960b57cec5SDimitry Andric 
64975ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
64985ffd83dbSDimitry Andric vec_popcnt(__vector signed int __a) {
64995ffd83dbSDimitry Andric   return __builtin_s390_vpopctf((__vector unsigned int)__a);
65000b57cec5SDimitry Andric }
65010b57cec5SDimitry Andric 
65025ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
65035ffd83dbSDimitry Andric vec_popcnt(__vector unsigned int __a) {
65040b57cec5SDimitry Andric   return __builtin_s390_vpopctf(__a);
65050b57cec5SDimitry Andric }
65060b57cec5SDimitry Andric 
65075ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
65085ffd83dbSDimitry Andric vec_popcnt(__vector signed long long __a) {
65095ffd83dbSDimitry Andric   return __builtin_s390_vpopctg((__vector unsigned long long)__a);
65100b57cec5SDimitry Andric }
65110b57cec5SDimitry Andric 
65125ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
65135ffd83dbSDimitry Andric vec_popcnt(__vector unsigned long long __a) {
65140b57cec5SDimitry Andric   return __builtin_s390_vpopctg(__a);
65150b57cec5SDimitry Andric }
65160b57cec5SDimitry Andric 
65170b57cec5SDimitry Andric /*-- vec_rl -----------------------------------------------------------------*/
65180b57cec5SDimitry Andric 
65195ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
65205ffd83dbSDimitry Andric vec_rl(__vector signed char __a, __vector unsigned char __b) {
65215ffd83dbSDimitry Andric   return (__vector signed char)__builtin_s390_verllvb(
65225ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
65230b57cec5SDimitry Andric }
65240b57cec5SDimitry Andric 
65255ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
65265ffd83dbSDimitry Andric vec_rl(__vector unsigned char __a, __vector unsigned char __b) {
65270b57cec5SDimitry Andric   return __builtin_s390_verllvb(__a, __b);
65280b57cec5SDimitry Andric }
65290b57cec5SDimitry Andric 
65305ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
65315ffd83dbSDimitry Andric vec_rl(__vector signed short __a, __vector unsigned short __b) {
65325ffd83dbSDimitry Andric   return (__vector signed short)__builtin_s390_verllvh(
65335ffd83dbSDimitry Andric     (__vector unsigned short)__a, __b);
65340b57cec5SDimitry Andric }
65350b57cec5SDimitry Andric 
65365ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
65375ffd83dbSDimitry Andric vec_rl(__vector unsigned short __a, __vector unsigned short __b) {
65380b57cec5SDimitry Andric   return __builtin_s390_verllvh(__a, __b);
65390b57cec5SDimitry Andric }
65400b57cec5SDimitry Andric 
65415ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
65425ffd83dbSDimitry Andric vec_rl(__vector signed int __a, __vector unsigned int __b) {
65435ffd83dbSDimitry Andric   return (__vector signed int)__builtin_s390_verllvf(
65445ffd83dbSDimitry Andric     (__vector unsigned int)__a, __b);
65450b57cec5SDimitry Andric }
65460b57cec5SDimitry Andric 
65475ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
65485ffd83dbSDimitry Andric vec_rl(__vector unsigned int __a, __vector unsigned int __b) {
65490b57cec5SDimitry Andric   return __builtin_s390_verllvf(__a, __b);
65500b57cec5SDimitry Andric }
65510b57cec5SDimitry Andric 
65525ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
65535ffd83dbSDimitry Andric vec_rl(__vector signed long long __a, __vector unsigned long long __b) {
65545ffd83dbSDimitry Andric   return (__vector signed long long)__builtin_s390_verllvg(
65555ffd83dbSDimitry Andric     (__vector unsigned long long)__a, __b);
65560b57cec5SDimitry Andric }
65570b57cec5SDimitry Andric 
65585ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
65595ffd83dbSDimitry Andric vec_rl(__vector unsigned long long __a, __vector unsigned long long __b) {
65600b57cec5SDimitry Andric   return __builtin_s390_verllvg(__a, __b);
65610b57cec5SDimitry Andric }
65620b57cec5SDimitry Andric 
65630b57cec5SDimitry Andric /*-- vec_rli ----------------------------------------------------------------*/
65640b57cec5SDimitry Andric 
65655ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
65665ffd83dbSDimitry Andric vec_rli(__vector signed char __a, unsigned long __b) {
65675ffd83dbSDimitry Andric   return (__vector signed char)__builtin_s390_verllb(
65685ffd83dbSDimitry Andric     (__vector unsigned char)__a, (int)__b);
65690b57cec5SDimitry Andric }
65700b57cec5SDimitry Andric 
65715ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
65725ffd83dbSDimitry Andric vec_rli(__vector unsigned char __a, unsigned long __b) {
65730b57cec5SDimitry Andric   return __builtin_s390_verllb(__a, (int)__b);
65740b57cec5SDimitry Andric }
65750b57cec5SDimitry Andric 
65765ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
65775ffd83dbSDimitry Andric vec_rli(__vector signed short __a, unsigned long __b) {
65785ffd83dbSDimitry Andric   return (__vector signed short)__builtin_s390_verllh(
65795ffd83dbSDimitry Andric     (__vector unsigned short)__a, (int)__b);
65800b57cec5SDimitry Andric }
65810b57cec5SDimitry Andric 
65825ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
65835ffd83dbSDimitry Andric vec_rli(__vector unsigned short __a, unsigned long __b) {
65840b57cec5SDimitry Andric   return __builtin_s390_verllh(__a, (int)__b);
65850b57cec5SDimitry Andric }
65860b57cec5SDimitry Andric 
65875ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
65885ffd83dbSDimitry Andric vec_rli(__vector signed int __a, unsigned long __b) {
65895ffd83dbSDimitry Andric   return (__vector signed int)__builtin_s390_verllf(
65905ffd83dbSDimitry Andric     (__vector unsigned int)__a, (int)__b);
65910b57cec5SDimitry Andric }
65920b57cec5SDimitry Andric 
65935ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
65945ffd83dbSDimitry Andric vec_rli(__vector unsigned int __a, unsigned long __b) {
65950b57cec5SDimitry Andric   return __builtin_s390_verllf(__a, (int)__b);
65960b57cec5SDimitry Andric }
65970b57cec5SDimitry Andric 
65985ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
65995ffd83dbSDimitry Andric vec_rli(__vector signed long long __a, unsigned long __b) {
66005ffd83dbSDimitry Andric   return (__vector signed long long)__builtin_s390_verllg(
66015ffd83dbSDimitry Andric     (__vector unsigned long long)__a, (int)__b);
66020b57cec5SDimitry Andric }
66030b57cec5SDimitry Andric 
66045ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
66055ffd83dbSDimitry Andric vec_rli(__vector unsigned long long __a, unsigned long __b) {
66060b57cec5SDimitry Andric   return __builtin_s390_verllg(__a, (int)__b);
66070b57cec5SDimitry Andric }
66080b57cec5SDimitry Andric 
66090b57cec5SDimitry Andric /*-- vec_rl_mask ------------------------------------------------------------*/
66100b57cec5SDimitry Andric 
66115ffd83dbSDimitry Andric extern __ATTRS_o __vector signed char
66125ffd83dbSDimitry Andric vec_rl_mask(__vector signed char __a, __vector unsigned char __b,
66130b57cec5SDimitry Andric             unsigned char __c) __constant(__c);
66140b57cec5SDimitry Andric 
66155ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned char
66165ffd83dbSDimitry Andric vec_rl_mask(__vector unsigned char __a, __vector unsigned char __b,
66170b57cec5SDimitry Andric             unsigned char __c) __constant(__c);
66180b57cec5SDimitry Andric 
66195ffd83dbSDimitry Andric extern __ATTRS_o __vector signed short
66205ffd83dbSDimitry Andric vec_rl_mask(__vector signed short __a, __vector unsigned short __b,
66210b57cec5SDimitry Andric             unsigned char __c) __constant(__c);
66220b57cec5SDimitry Andric 
66235ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned short
66245ffd83dbSDimitry Andric vec_rl_mask(__vector unsigned short __a, __vector unsigned short __b,
66250b57cec5SDimitry Andric             unsigned char __c) __constant(__c);
66260b57cec5SDimitry Andric 
66275ffd83dbSDimitry Andric extern __ATTRS_o __vector signed int
66285ffd83dbSDimitry Andric vec_rl_mask(__vector signed int __a, __vector unsigned int __b,
66290b57cec5SDimitry Andric             unsigned char __c) __constant(__c);
66300b57cec5SDimitry Andric 
66315ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned int
66325ffd83dbSDimitry Andric vec_rl_mask(__vector unsigned int __a, __vector unsigned int __b,
66330b57cec5SDimitry Andric             unsigned char __c) __constant(__c);
66340b57cec5SDimitry Andric 
66355ffd83dbSDimitry Andric extern __ATTRS_o __vector signed long long
66365ffd83dbSDimitry Andric vec_rl_mask(__vector signed long long __a, __vector unsigned long long __b,
66370b57cec5SDimitry Andric             unsigned char __c) __constant(__c);
66380b57cec5SDimitry Andric 
66395ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned long long
66405ffd83dbSDimitry Andric vec_rl_mask(__vector unsigned long long __a, __vector unsigned long long __b,
66410b57cec5SDimitry Andric             unsigned char __c) __constant(__c);
66420b57cec5SDimitry Andric 
66430b57cec5SDimitry Andric #define vec_rl_mask(X, Y, Z) ((__typeof__((vec_rl_mask)((X), (Y), (Z)))) \
66440b57cec5SDimitry Andric   __extension__ ({ \
66455ffd83dbSDimitry Andric     __vector unsigned char __res; \
66465ffd83dbSDimitry Andric     __vector unsigned char __x = (__vector unsigned char)(X); \
66475ffd83dbSDimitry Andric     __vector unsigned char __y = (__vector unsigned char)(Y); \
66480b57cec5SDimitry Andric     switch (sizeof ((X)[0])) { \
66495ffd83dbSDimitry Andric     case 1: __res = (__vector unsigned char) __builtin_s390_verimb( \
66505ffd83dbSDimitry Andric              (__vector unsigned char)__x, (__vector unsigned char)__x, \
66515ffd83dbSDimitry Andric              (__vector unsigned char)__y, (Z)); break; \
66525ffd83dbSDimitry Andric     case 2: __res = (__vector unsigned char) __builtin_s390_verimh( \
66535ffd83dbSDimitry Andric              (__vector unsigned short)__x, (__vector unsigned short)__x, \
66545ffd83dbSDimitry Andric              (__vector unsigned short)__y, (Z)); break; \
66555ffd83dbSDimitry Andric     case 4: __res = (__vector unsigned char) __builtin_s390_verimf( \
66565ffd83dbSDimitry Andric              (__vector unsigned int)__x, (__vector unsigned int)__x, \
66575ffd83dbSDimitry Andric              (__vector unsigned int)__y, (Z)); break; \
66585ffd83dbSDimitry Andric     default: __res = (__vector unsigned char) __builtin_s390_verimg( \
66595ffd83dbSDimitry Andric              (__vector unsigned long long)__x, (__vector unsigned long long)__x, \
66605ffd83dbSDimitry Andric              (__vector unsigned long long)__y, (Z)); break; \
66610b57cec5SDimitry Andric     } __res; }))
66620b57cec5SDimitry Andric 
66630b57cec5SDimitry Andric /*-- vec_sll ----------------------------------------------------------------*/
66640b57cec5SDimitry Andric 
66655ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
66665ffd83dbSDimitry Andric vec_sll(__vector signed char __a, __vector unsigned char __b) {
66675ffd83dbSDimitry Andric   return (__vector signed char)__builtin_s390_vsl(
66685ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
66690b57cec5SDimitry Andric }
66700b57cec5SDimitry Andric 
66710b57cec5SDimitry Andric // This prototype is deprecated.
66725ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
66735ffd83dbSDimitry Andric vec_sll(__vector signed char __a, __vector unsigned short __b) {
66745ffd83dbSDimitry Andric   return (__vector signed char)__builtin_s390_vsl(
66755ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
66760b57cec5SDimitry Andric }
66770b57cec5SDimitry Andric 
66780b57cec5SDimitry Andric // This prototype is deprecated.
66795ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
66805ffd83dbSDimitry Andric vec_sll(__vector signed char __a, __vector unsigned int __b) {
66815ffd83dbSDimitry Andric   return (__vector signed char)__builtin_s390_vsl(
66825ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
66830b57cec5SDimitry Andric }
66840b57cec5SDimitry Andric 
66850b57cec5SDimitry Andric // This prototype is deprecated.
66865ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
66875ffd83dbSDimitry Andric vec_sll(__vector __bool char __a, __vector unsigned char __b) {
66885ffd83dbSDimitry Andric   return (__vector __bool char)__builtin_s390_vsl(
66895ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
66900b57cec5SDimitry Andric }
66910b57cec5SDimitry Andric 
66920b57cec5SDimitry Andric // This prototype is deprecated.
66935ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
66945ffd83dbSDimitry Andric vec_sll(__vector __bool char __a, __vector unsigned short __b) {
66955ffd83dbSDimitry Andric   return (__vector __bool char)__builtin_s390_vsl(
66965ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
66970b57cec5SDimitry Andric }
66980b57cec5SDimitry Andric 
66990b57cec5SDimitry Andric // This prototype is deprecated.
67005ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
67015ffd83dbSDimitry Andric vec_sll(__vector __bool char __a, __vector unsigned int __b) {
67025ffd83dbSDimitry Andric   return (__vector __bool char)__builtin_s390_vsl(
67035ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
67040b57cec5SDimitry Andric }
67050b57cec5SDimitry Andric 
67065ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
67075ffd83dbSDimitry Andric vec_sll(__vector unsigned char __a, __vector unsigned char __b) {
67080b57cec5SDimitry Andric   return __builtin_s390_vsl(__a, __b);
67090b57cec5SDimitry Andric }
67100b57cec5SDimitry Andric 
67110b57cec5SDimitry Andric // This prototype is deprecated.
67125ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
67135ffd83dbSDimitry Andric vec_sll(__vector unsigned char __a, __vector unsigned short __b) {
67145ffd83dbSDimitry Andric   return __builtin_s390_vsl(__a, (__vector unsigned char)__b);
67150b57cec5SDimitry Andric }
67160b57cec5SDimitry Andric 
67170b57cec5SDimitry Andric // This prototype is deprecated.
67185ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
67195ffd83dbSDimitry Andric vec_sll(__vector unsigned char __a, __vector unsigned int __b) {
67205ffd83dbSDimitry Andric   return __builtin_s390_vsl(__a, (__vector unsigned char)__b);
67210b57cec5SDimitry Andric }
67220b57cec5SDimitry Andric 
67235ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
67245ffd83dbSDimitry Andric vec_sll(__vector signed short __a, __vector unsigned char __b) {
67255ffd83dbSDimitry Andric   return (__vector signed short)__builtin_s390_vsl(
67265ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
67270b57cec5SDimitry Andric }
67280b57cec5SDimitry Andric 
67290b57cec5SDimitry Andric // This prototype is deprecated.
67305ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
67315ffd83dbSDimitry Andric vec_sll(__vector signed short __a, __vector unsigned short __b) {
67325ffd83dbSDimitry Andric   return (__vector signed short)__builtin_s390_vsl(
67335ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
67340b57cec5SDimitry Andric }
67350b57cec5SDimitry Andric 
67360b57cec5SDimitry Andric // This prototype is deprecated.
67375ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
67385ffd83dbSDimitry Andric vec_sll(__vector signed short __a, __vector unsigned int __b) {
67395ffd83dbSDimitry Andric   return (__vector signed short)__builtin_s390_vsl(
67405ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
67410b57cec5SDimitry Andric }
67420b57cec5SDimitry Andric 
67430b57cec5SDimitry Andric // This prototype is deprecated.
67445ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
67455ffd83dbSDimitry Andric vec_sll(__vector __bool short __a, __vector unsigned char __b) {
67465ffd83dbSDimitry Andric   return (__vector __bool short)__builtin_s390_vsl(
67475ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
67480b57cec5SDimitry Andric }
67490b57cec5SDimitry Andric 
67500b57cec5SDimitry Andric // This prototype is deprecated.
67515ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
67525ffd83dbSDimitry Andric vec_sll(__vector __bool short __a, __vector unsigned short __b) {
67535ffd83dbSDimitry Andric   return (__vector __bool short)__builtin_s390_vsl(
67545ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
67550b57cec5SDimitry Andric }
67560b57cec5SDimitry Andric 
67570b57cec5SDimitry Andric // This prototype is deprecated.
67585ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
67595ffd83dbSDimitry Andric vec_sll(__vector __bool short __a, __vector unsigned int __b) {
67605ffd83dbSDimitry Andric   return (__vector __bool short)__builtin_s390_vsl(
67615ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
67620b57cec5SDimitry Andric }
67630b57cec5SDimitry Andric 
67645ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
67655ffd83dbSDimitry Andric vec_sll(__vector unsigned short __a, __vector unsigned char __b) {
67665ffd83dbSDimitry Andric   return (__vector unsigned short)__builtin_s390_vsl(
67675ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
67680b57cec5SDimitry Andric }
67690b57cec5SDimitry Andric 
67700b57cec5SDimitry Andric // This prototype is deprecated.
67715ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
67725ffd83dbSDimitry Andric vec_sll(__vector unsigned short __a, __vector unsigned short __b) {
67735ffd83dbSDimitry Andric   return (__vector unsigned short)__builtin_s390_vsl(
67745ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
67750b57cec5SDimitry Andric }
67760b57cec5SDimitry Andric 
67770b57cec5SDimitry Andric // This prototype is deprecated.
67785ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
67795ffd83dbSDimitry Andric vec_sll(__vector unsigned short __a, __vector unsigned int __b) {
67805ffd83dbSDimitry Andric   return (__vector unsigned short)__builtin_s390_vsl(
67815ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
67820b57cec5SDimitry Andric }
67830b57cec5SDimitry Andric 
67845ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
67855ffd83dbSDimitry Andric vec_sll(__vector signed int __a, __vector unsigned char __b) {
67865ffd83dbSDimitry Andric   return (__vector signed int)__builtin_s390_vsl(
67875ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
67880b57cec5SDimitry Andric }
67890b57cec5SDimitry Andric 
67900b57cec5SDimitry Andric // This prototype is deprecated.
67915ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
67925ffd83dbSDimitry Andric vec_sll(__vector signed int __a, __vector unsigned short __b) {
67935ffd83dbSDimitry Andric   return (__vector signed int)__builtin_s390_vsl(
67945ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
67950b57cec5SDimitry Andric }
67960b57cec5SDimitry Andric 
67970b57cec5SDimitry Andric // This prototype is deprecated.
67985ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
67995ffd83dbSDimitry Andric vec_sll(__vector signed int __a, __vector unsigned int __b) {
68005ffd83dbSDimitry Andric   return (__vector signed int)__builtin_s390_vsl(
68015ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
68020b57cec5SDimitry Andric }
68030b57cec5SDimitry Andric 
68040b57cec5SDimitry Andric // This prototype is deprecated.
68055ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
68065ffd83dbSDimitry Andric vec_sll(__vector __bool int __a, __vector unsigned char __b) {
68075ffd83dbSDimitry Andric   return (__vector __bool int)__builtin_s390_vsl(
68085ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
68090b57cec5SDimitry Andric }
68100b57cec5SDimitry Andric 
68110b57cec5SDimitry Andric // This prototype is deprecated.
68125ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
68135ffd83dbSDimitry Andric vec_sll(__vector __bool int __a, __vector unsigned short __b) {
68145ffd83dbSDimitry Andric   return (__vector __bool int)__builtin_s390_vsl(
68155ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
68160b57cec5SDimitry Andric }
68170b57cec5SDimitry Andric 
68180b57cec5SDimitry Andric // This prototype is deprecated.
68195ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
68205ffd83dbSDimitry Andric vec_sll(__vector __bool int __a, __vector unsigned int __b) {
68215ffd83dbSDimitry Andric   return (__vector __bool int)__builtin_s390_vsl(
68225ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
68230b57cec5SDimitry Andric }
68240b57cec5SDimitry Andric 
68255ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
68265ffd83dbSDimitry Andric vec_sll(__vector unsigned int __a, __vector unsigned char __b) {
68275ffd83dbSDimitry Andric   return (__vector unsigned int)__builtin_s390_vsl(
68285ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
68290b57cec5SDimitry Andric }
68300b57cec5SDimitry Andric 
68310b57cec5SDimitry Andric // This prototype is deprecated.
68325ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
68335ffd83dbSDimitry Andric vec_sll(__vector unsigned int __a, __vector unsigned short __b) {
68345ffd83dbSDimitry Andric   return (__vector unsigned int)__builtin_s390_vsl(
68355ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
68360b57cec5SDimitry Andric }
68370b57cec5SDimitry Andric 
68380b57cec5SDimitry Andric // This prototype is deprecated.
68395ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
68405ffd83dbSDimitry Andric vec_sll(__vector unsigned int __a, __vector unsigned int __b) {
68415ffd83dbSDimitry Andric   return (__vector unsigned int)__builtin_s390_vsl(
68425ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
68430b57cec5SDimitry Andric }
68440b57cec5SDimitry Andric 
68455ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
68465ffd83dbSDimitry Andric vec_sll(__vector signed long long __a, __vector unsigned char __b) {
68475ffd83dbSDimitry Andric   return (__vector signed long long)__builtin_s390_vsl(
68485ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
68490b57cec5SDimitry Andric }
68500b57cec5SDimitry Andric 
68510b57cec5SDimitry Andric // This prototype is deprecated.
68525ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
68535ffd83dbSDimitry Andric vec_sll(__vector signed long long __a, __vector unsigned short __b) {
68545ffd83dbSDimitry Andric   return (__vector signed long long)__builtin_s390_vsl(
68555ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
68560b57cec5SDimitry Andric }
68570b57cec5SDimitry Andric 
68580b57cec5SDimitry Andric // This prototype is deprecated.
68595ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
68605ffd83dbSDimitry Andric vec_sll(__vector signed long long __a, __vector unsigned int __b) {
68615ffd83dbSDimitry Andric   return (__vector signed long long)__builtin_s390_vsl(
68625ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
68630b57cec5SDimitry Andric }
68640b57cec5SDimitry Andric 
68650b57cec5SDimitry Andric // This prototype is deprecated.
68665ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
68675ffd83dbSDimitry Andric vec_sll(__vector __bool long long __a, __vector unsigned char __b) {
68685ffd83dbSDimitry Andric   return (__vector __bool long long)__builtin_s390_vsl(
68695ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
68700b57cec5SDimitry Andric }
68710b57cec5SDimitry Andric 
68720b57cec5SDimitry Andric // This prototype is deprecated.
68735ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
68745ffd83dbSDimitry Andric vec_sll(__vector __bool long long __a, __vector unsigned short __b) {
68755ffd83dbSDimitry Andric   return (__vector __bool long long)__builtin_s390_vsl(
68765ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
68770b57cec5SDimitry Andric }
68780b57cec5SDimitry Andric 
68790b57cec5SDimitry Andric // This prototype is deprecated.
68805ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
68815ffd83dbSDimitry Andric vec_sll(__vector __bool long long __a, __vector unsigned int __b) {
68825ffd83dbSDimitry Andric   return (__vector __bool long long)__builtin_s390_vsl(
68835ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
68840b57cec5SDimitry Andric }
68850b57cec5SDimitry Andric 
68865ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
68875ffd83dbSDimitry Andric vec_sll(__vector unsigned long long __a, __vector unsigned char __b) {
68885ffd83dbSDimitry Andric   return (__vector unsigned long long)__builtin_s390_vsl(
68895ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
68900b57cec5SDimitry Andric }
68910b57cec5SDimitry Andric 
68920b57cec5SDimitry Andric // This prototype is deprecated.
68935ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
68945ffd83dbSDimitry Andric vec_sll(__vector unsigned long long __a, __vector unsigned short __b) {
68955ffd83dbSDimitry Andric   return (__vector unsigned long long)__builtin_s390_vsl(
68965ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
68970b57cec5SDimitry Andric }
68980b57cec5SDimitry Andric 
68990b57cec5SDimitry Andric // This prototype is deprecated.
69005ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
69015ffd83dbSDimitry Andric vec_sll(__vector unsigned long long __a, __vector unsigned int __b) {
69025ffd83dbSDimitry Andric   return (__vector unsigned long long)__builtin_s390_vsl(
69035ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
69040b57cec5SDimitry Andric }
69050b57cec5SDimitry Andric 
69060b57cec5SDimitry Andric /*-- vec_slb ----------------------------------------------------------------*/
69070b57cec5SDimitry Andric 
69085ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
69095ffd83dbSDimitry Andric vec_slb(__vector signed char __a, __vector signed char __b) {
69105ffd83dbSDimitry Andric   return (__vector signed char)__builtin_s390_vslb(
69115ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
69120b57cec5SDimitry Andric }
69130b57cec5SDimitry Andric 
69145ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
69155ffd83dbSDimitry Andric vec_slb(__vector signed char __a, __vector unsigned char __b) {
69165ffd83dbSDimitry Andric   return (__vector signed char)__builtin_s390_vslb(
69175ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
69180b57cec5SDimitry Andric }
69190b57cec5SDimitry Andric 
69205ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
69215ffd83dbSDimitry Andric vec_slb(__vector unsigned char __a, __vector signed char __b) {
69225ffd83dbSDimitry Andric   return __builtin_s390_vslb(__a, (__vector unsigned char)__b);
69230b57cec5SDimitry Andric }
69240b57cec5SDimitry Andric 
69255ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
69265ffd83dbSDimitry Andric vec_slb(__vector unsigned char __a, __vector unsigned char __b) {
69270b57cec5SDimitry Andric   return __builtin_s390_vslb(__a, __b);
69280b57cec5SDimitry Andric }
69290b57cec5SDimitry Andric 
69305ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
69315ffd83dbSDimitry Andric vec_slb(__vector signed short __a, __vector signed short __b) {
69325ffd83dbSDimitry Andric   return (__vector signed short)__builtin_s390_vslb(
69335ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
69340b57cec5SDimitry Andric }
69350b57cec5SDimitry Andric 
69365ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
69375ffd83dbSDimitry Andric vec_slb(__vector signed short __a, __vector unsigned short __b) {
69385ffd83dbSDimitry Andric   return (__vector signed short)__builtin_s390_vslb(
69395ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
69400b57cec5SDimitry Andric }
69410b57cec5SDimitry Andric 
69425ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
69435ffd83dbSDimitry Andric vec_slb(__vector unsigned short __a, __vector signed short __b) {
69445ffd83dbSDimitry Andric   return (__vector unsigned short)__builtin_s390_vslb(
69455ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
69460b57cec5SDimitry Andric }
69470b57cec5SDimitry Andric 
69485ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
69495ffd83dbSDimitry Andric vec_slb(__vector unsigned short __a, __vector unsigned short __b) {
69505ffd83dbSDimitry Andric   return (__vector unsigned short)__builtin_s390_vslb(
69515ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
69520b57cec5SDimitry Andric }
69530b57cec5SDimitry Andric 
69545ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
69555ffd83dbSDimitry Andric vec_slb(__vector signed int __a, __vector signed int __b) {
69565ffd83dbSDimitry Andric   return (__vector signed int)__builtin_s390_vslb(
69575ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
69580b57cec5SDimitry Andric }
69590b57cec5SDimitry Andric 
69605ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
69615ffd83dbSDimitry Andric vec_slb(__vector signed int __a, __vector unsigned int __b) {
69625ffd83dbSDimitry Andric   return (__vector signed int)__builtin_s390_vslb(
69635ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
69640b57cec5SDimitry Andric }
69650b57cec5SDimitry Andric 
69665ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
69675ffd83dbSDimitry Andric vec_slb(__vector unsigned int __a, __vector signed int __b) {
69685ffd83dbSDimitry Andric   return (__vector unsigned int)__builtin_s390_vslb(
69695ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
69700b57cec5SDimitry Andric }
69710b57cec5SDimitry Andric 
69725ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
69735ffd83dbSDimitry Andric vec_slb(__vector unsigned int __a, __vector unsigned int __b) {
69745ffd83dbSDimitry Andric   return (__vector unsigned int)__builtin_s390_vslb(
69755ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
69760b57cec5SDimitry Andric }
69770b57cec5SDimitry Andric 
69785ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
69795ffd83dbSDimitry Andric vec_slb(__vector signed long long __a, __vector signed long long __b) {
69805ffd83dbSDimitry Andric   return (__vector signed long long)__builtin_s390_vslb(
69815ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
69820b57cec5SDimitry Andric }
69830b57cec5SDimitry Andric 
69845ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
69855ffd83dbSDimitry Andric vec_slb(__vector signed long long __a, __vector unsigned long long __b) {
69865ffd83dbSDimitry Andric   return (__vector signed long long)__builtin_s390_vslb(
69875ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
69880b57cec5SDimitry Andric }
69890b57cec5SDimitry Andric 
69905ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
69915ffd83dbSDimitry Andric vec_slb(__vector unsigned long long __a, __vector signed long long __b) {
69925ffd83dbSDimitry Andric   return (__vector unsigned long long)__builtin_s390_vslb(
69935ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
69940b57cec5SDimitry Andric }
69950b57cec5SDimitry Andric 
69965ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
69975ffd83dbSDimitry Andric vec_slb(__vector unsigned long long __a, __vector unsigned long long __b) {
69985ffd83dbSDimitry Andric   return (__vector unsigned long long)__builtin_s390_vslb(
69995ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
70000b57cec5SDimitry Andric }
70010b57cec5SDimitry Andric 
70020b57cec5SDimitry Andric #if __ARCH__ >= 12
70035ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
70045ffd83dbSDimitry Andric vec_slb(__vector float __a, __vector signed int __b) {
70055ffd83dbSDimitry Andric   return (__vector float)__builtin_s390_vslb(
70065ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
70070b57cec5SDimitry Andric }
70080b57cec5SDimitry Andric 
70095ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
70105ffd83dbSDimitry Andric vec_slb(__vector float __a, __vector unsigned int __b) {
70115ffd83dbSDimitry Andric   return (__vector float)__builtin_s390_vslb(
70125ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
70130b57cec5SDimitry Andric }
70140b57cec5SDimitry Andric #endif
70150b57cec5SDimitry Andric 
70165ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
70175ffd83dbSDimitry Andric vec_slb(__vector double __a, __vector signed long long __b) {
70185ffd83dbSDimitry Andric   return (__vector double)__builtin_s390_vslb(
70195ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
70200b57cec5SDimitry Andric }
70210b57cec5SDimitry Andric 
70225ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
70235ffd83dbSDimitry Andric vec_slb(__vector double __a, __vector unsigned long long __b) {
70245ffd83dbSDimitry Andric   return (__vector double)__builtin_s390_vslb(
70255ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
70260b57cec5SDimitry Andric }
70270b57cec5SDimitry Andric 
70280b57cec5SDimitry Andric /*-- vec_sld ----------------------------------------------------------------*/
70290b57cec5SDimitry Andric 
70305ffd83dbSDimitry Andric extern __ATTRS_o __vector signed char
70315ffd83dbSDimitry Andric vec_sld(__vector signed char __a, __vector signed char __b, int __c)
70320b57cec5SDimitry Andric   __constant_range(__c, 0, 15);
70330b57cec5SDimitry Andric 
70345ffd83dbSDimitry Andric extern __ATTRS_o __vector __bool char
70355ffd83dbSDimitry Andric vec_sld(__vector __bool char __a, __vector __bool char __b, int __c)
70360b57cec5SDimitry Andric   __constant_range(__c, 0, 15);
70370b57cec5SDimitry Andric 
70385ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned char
70395ffd83dbSDimitry Andric vec_sld(__vector unsigned char __a, __vector unsigned char __b, int __c)
70400b57cec5SDimitry Andric   __constant_range(__c, 0, 15);
70410b57cec5SDimitry Andric 
70425ffd83dbSDimitry Andric extern __ATTRS_o __vector signed short
70435ffd83dbSDimitry Andric vec_sld(__vector signed short __a, __vector signed short __b, int __c)
70440b57cec5SDimitry Andric   __constant_range(__c, 0, 15);
70450b57cec5SDimitry Andric 
70465ffd83dbSDimitry Andric extern __ATTRS_o __vector __bool short
70475ffd83dbSDimitry Andric vec_sld(__vector __bool short __a, __vector __bool short __b, int __c)
70480b57cec5SDimitry Andric   __constant_range(__c, 0, 15);
70490b57cec5SDimitry Andric 
70505ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned short
70515ffd83dbSDimitry Andric vec_sld(__vector unsigned short __a, __vector unsigned short __b, int __c)
70520b57cec5SDimitry Andric   __constant_range(__c, 0, 15);
70530b57cec5SDimitry Andric 
70545ffd83dbSDimitry Andric extern __ATTRS_o __vector signed int
70555ffd83dbSDimitry Andric vec_sld(__vector signed int __a, __vector signed int __b, int __c)
70560b57cec5SDimitry Andric   __constant_range(__c, 0, 15);
70570b57cec5SDimitry Andric 
70585ffd83dbSDimitry Andric extern __ATTRS_o __vector __bool int
70595ffd83dbSDimitry Andric vec_sld(__vector __bool int __a, __vector __bool int __b, int __c)
70600b57cec5SDimitry Andric   __constant_range(__c, 0, 15);
70610b57cec5SDimitry Andric 
70625ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned int
70635ffd83dbSDimitry Andric vec_sld(__vector unsigned int __a, __vector unsigned int __b, int __c)
70640b57cec5SDimitry Andric   __constant_range(__c, 0, 15);
70650b57cec5SDimitry Andric 
70665ffd83dbSDimitry Andric extern __ATTRS_o __vector signed long long
70675ffd83dbSDimitry Andric vec_sld(__vector signed long long __a, __vector signed long long __b, int __c)
70680b57cec5SDimitry Andric   __constant_range(__c, 0, 15);
70690b57cec5SDimitry Andric 
70705ffd83dbSDimitry Andric extern __ATTRS_o __vector __bool long long
70715ffd83dbSDimitry Andric vec_sld(__vector __bool long long __a, __vector __bool long long __b, int __c)
70720b57cec5SDimitry Andric   __constant_range(__c, 0, 15);
70730b57cec5SDimitry Andric 
70745ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned long long
70755ffd83dbSDimitry Andric vec_sld(__vector unsigned long long __a, __vector unsigned long long __b,
70765ffd83dbSDimitry Andric         int __c)
70770b57cec5SDimitry Andric   __constant_range(__c, 0, 15);
70780b57cec5SDimitry Andric 
70790b57cec5SDimitry Andric #if __ARCH__ >= 12
70805ffd83dbSDimitry Andric extern __ATTRS_o __vector float
70815ffd83dbSDimitry Andric vec_sld(__vector float __a, __vector float __b, int __c)
70820b57cec5SDimitry Andric   __constant_range(__c, 0, 15);
70830b57cec5SDimitry Andric #endif
70840b57cec5SDimitry Andric 
70855ffd83dbSDimitry Andric extern __ATTRS_o __vector double
70865ffd83dbSDimitry Andric vec_sld(__vector double __a, __vector double __b, int __c)
70870b57cec5SDimitry Andric   __constant_range(__c, 0, 15);
70880b57cec5SDimitry Andric 
70890b57cec5SDimitry Andric #define vec_sld(X, Y, Z) ((__typeof__((vec_sld)((X), (Y), (Z)))) \
70905ffd83dbSDimitry Andric   __builtin_s390_vsldb((__vector unsigned char)(X), \
70915ffd83dbSDimitry Andric                        (__vector unsigned char)(Y), (Z)))
70920b57cec5SDimitry Andric 
70930b57cec5SDimitry Andric /*-- vec_sldw ---------------------------------------------------------------*/
70940b57cec5SDimitry Andric 
70955ffd83dbSDimitry Andric extern __ATTRS_o __vector signed char
70965ffd83dbSDimitry Andric vec_sldw(__vector signed char __a, __vector signed char __b, int __c)
70970b57cec5SDimitry Andric   __constant_range(__c, 0, 3);
70980b57cec5SDimitry Andric 
70995ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned char
71005ffd83dbSDimitry Andric vec_sldw(__vector unsigned char __a, __vector unsigned char __b, int __c)
71010b57cec5SDimitry Andric   __constant_range(__c, 0, 3);
71020b57cec5SDimitry Andric 
71035ffd83dbSDimitry Andric extern __ATTRS_o __vector signed short
71045ffd83dbSDimitry Andric vec_sldw(__vector signed short __a, __vector signed short __b, int __c)
71050b57cec5SDimitry Andric   __constant_range(__c, 0, 3);
71060b57cec5SDimitry Andric 
71075ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned short
71085ffd83dbSDimitry Andric vec_sldw(__vector unsigned short __a, __vector unsigned short __b, int __c)
71090b57cec5SDimitry Andric   __constant_range(__c, 0, 3);
71100b57cec5SDimitry Andric 
71115ffd83dbSDimitry Andric extern __ATTRS_o __vector signed int
71125ffd83dbSDimitry Andric vec_sldw(__vector signed int __a, __vector signed int __b, int __c)
71130b57cec5SDimitry Andric   __constant_range(__c, 0, 3);
71140b57cec5SDimitry Andric 
71155ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned int
71165ffd83dbSDimitry Andric vec_sldw(__vector unsigned int __a, __vector unsigned int __b, int __c)
71170b57cec5SDimitry Andric   __constant_range(__c, 0, 3);
71180b57cec5SDimitry Andric 
71195ffd83dbSDimitry Andric extern __ATTRS_o __vector signed long long
71205ffd83dbSDimitry Andric vec_sldw(__vector signed long long __a, __vector signed long long __b, int __c)
71210b57cec5SDimitry Andric   __constant_range(__c, 0, 3);
71220b57cec5SDimitry Andric 
71235ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned long long
71245ffd83dbSDimitry Andric vec_sldw(__vector unsigned long long __a, __vector unsigned long long __b,
71255ffd83dbSDimitry Andric          int __c)
71260b57cec5SDimitry Andric   __constant_range(__c, 0, 3);
71270b57cec5SDimitry Andric 
71280b57cec5SDimitry Andric // This prototype is deprecated.
71295ffd83dbSDimitry Andric extern __ATTRS_o __vector double
71305ffd83dbSDimitry Andric vec_sldw(__vector double __a, __vector double __b, int __c)
71310b57cec5SDimitry Andric   __constant_range(__c, 0, 3);
71320b57cec5SDimitry Andric 
71330b57cec5SDimitry Andric #define vec_sldw(X, Y, Z) ((__typeof__((vec_sldw)((X), (Y), (Z)))) \
71345ffd83dbSDimitry Andric   __builtin_s390_vsldb((__vector unsigned char)(X), \
71355ffd83dbSDimitry Andric                        (__vector unsigned char)(Y), (Z) * 4))
71360b57cec5SDimitry Andric 
71370b57cec5SDimitry Andric /*-- vec_sldb ---------------------------------------------------------------*/
71380b57cec5SDimitry Andric 
71390b57cec5SDimitry Andric #if __ARCH__ >= 13
71400b57cec5SDimitry Andric 
71415ffd83dbSDimitry Andric extern __ATTRS_o __vector signed char
71425ffd83dbSDimitry Andric vec_sldb(__vector signed char __a, __vector signed char __b, int __c)
71430b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
71440b57cec5SDimitry Andric 
71455ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned char
71465ffd83dbSDimitry Andric vec_sldb(__vector unsigned char __a, __vector unsigned char __b, int __c)
71470b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
71480b57cec5SDimitry Andric 
71495ffd83dbSDimitry Andric extern __ATTRS_o __vector signed short
71505ffd83dbSDimitry Andric vec_sldb(__vector signed short __a, __vector signed short __b, int __c)
71510b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
71520b57cec5SDimitry Andric 
71535ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned short
71545ffd83dbSDimitry Andric vec_sldb(__vector unsigned short __a, __vector unsigned short __b, int __c)
71550b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
71560b57cec5SDimitry Andric 
71575ffd83dbSDimitry Andric extern __ATTRS_o __vector signed int
71585ffd83dbSDimitry Andric vec_sldb(__vector signed int __a, __vector signed int __b, int __c)
71590b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
71600b57cec5SDimitry Andric 
71615ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned int
71625ffd83dbSDimitry Andric vec_sldb(__vector unsigned int __a, __vector unsigned int __b, int __c)
71630b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
71640b57cec5SDimitry Andric 
71655ffd83dbSDimitry Andric extern __ATTRS_o __vector signed long long
71665ffd83dbSDimitry Andric vec_sldb(__vector signed long long __a, __vector signed long long __b, int __c)
71670b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
71680b57cec5SDimitry Andric 
71695ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned long long
71705ffd83dbSDimitry Andric vec_sldb(__vector unsigned long long __a, __vector unsigned long long __b,
71715ffd83dbSDimitry Andric          int __c)
71720b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
71730b57cec5SDimitry Andric 
71745ffd83dbSDimitry Andric extern __ATTRS_o __vector float
71755ffd83dbSDimitry Andric vec_sldb(__vector float __a, __vector float __b, int __c)
71760b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
71770b57cec5SDimitry Andric 
71785ffd83dbSDimitry Andric extern __ATTRS_o __vector double
71795ffd83dbSDimitry Andric vec_sldb(__vector double __a, __vector double __b, int __c)
71800b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
71810b57cec5SDimitry Andric 
71820b57cec5SDimitry Andric #define vec_sldb(X, Y, Z) ((__typeof__((vec_sldb)((X), (Y), (Z)))) \
71835ffd83dbSDimitry Andric   __builtin_s390_vsld((__vector unsigned char)(X), \
71845ffd83dbSDimitry Andric                       (__vector unsigned char)(Y), (Z)))
71850b57cec5SDimitry Andric 
71860b57cec5SDimitry Andric #endif
71870b57cec5SDimitry Andric 
71880b57cec5SDimitry Andric /*-- vec_sral ---------------------------------------------------------------*/
71890b57cec5SDimitry Andric 
71905ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
71915ffd83dbSDimitry Andric vec_sral(__vector signed char __a, __vector unsigned char __b) {
71925ffd83dbSDimitry Andric   return (__vector signed char)__builtin_s390_vsra(
71935ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
71940b57cec5SDimitry Andric }
71950b57cec5SDimitry Andric 
71960b57cec5SDimitry Andric // This prototype is deprecated.
71975ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
71985ffd83dbSDimitry Andric vec_sral(__vector signed char __a, __vector unsigned short __b) {
71995ffd83dbSDimitry Andric   return (__vector signed char)__builtin_s390_vsra(
72005ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
72010b57cec5SDimitry Andric }
72020b57cec5SDimitry Andric 
72030b57cec5SDimitry Andric // This prototype is deprecated.
72045ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
72055ffd83dbSDimitry Andric vec_sral(__vector signed char __a, __vector unsigned int __b) {
72065ffd83dbSDimitry Andric   return (__vector signed char)__builtin_s390_vsra(
72075ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
72080b57cec5SDimitry Andric }
72090b57cec5SDimitry Andric 
72100b57cec5SDimitry Andric // This prototype is deprecated.
72115ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
72125ffd83dbSDimitry Andric vec_sral(__vector __bool char __a, __vector unsigned char __b) {
72135ffd83dbSDimitry Andric   return (__vector __bool char)__builtin_s390_vsra(
72145ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
72150b57cec5SDimitry Andric }
72160b57cec5SDimitry Andric 
72170b57cec5SDimitry Andric // This prototype is deprecated.
72185ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
72195ffd83dbSDimitry Andric vec_sral(__vector __bool char __a, __vector unsigned short __b) {
72205ffd83dbSDimitry Andric   return (__vector __bool char)__builtin_s390_vsra(
72215ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
72220b57cec5SDimitry Andric }
72230b57cec5SDimitry Andric 
72240b57cec5SDimitry Andric // This prototype is deprecated.
72255ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
72265ffd83dbSDimitry Andric vec_sral(__vector __bool char __a, __vector unsigned int __b) {
72275ffd83dbSDimitry Andric   return (__vector __bool char)__builtin_s390_vsra(
72285ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
72290b57cec5SDimitry Andric }
72300b57cec5SDimitry Andric 
72315ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
72325ffd83dbSDimitry Andric vec_sral(__vector unsigned char __a, __vector unsigned char __b) {
72330b57cec5SDimitry Andric   return __builtin_s390_vsra(__a, __b);
72340b57cec5SDimitry Andric }
72350b57cec5SDimitry Andric 
72360b57cec5SDimitry Andric // This prototype is deprecated.
72375ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
72385ffd83dbSDimitry Andric vec_sral(__vector unsigned char __a, __vector unsigned short __b) {
72395ffd83dbSDimitry Andric   return __builtin_s390_vsra(__a, (__vector unsigned char)__b);
72400b57cec5SDimitry Andric }
72410b57cec5SDimitry Andric 
72420b57cec5SDimitry Andric // This prototype is deprecated.
72435ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
72445ffd83dbSDimitry Andric vec_sral(__vector unsigned char __a, __vector unsigned int __b) {
72455ffd83dbSDimitry Andric   return __builtin_s390_vsra(__a, (__vector unsigned char)__b);
72460b57cec5SDimitry Andric }
72470b57cec5SDimitry Andric 
72485ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
72495ffd83dbSDimitry Andric vec_sral(__vector signed short __a, __vector unsigned char __b) {
72505ffd83dbSDimitry Andric   return (__vector signed short)__builtin_s390_vsra(
72515ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
72520b57cec5SDimitry Andric }
72530b57cec5SDimitry Andric 
72540b57cec5SDimitry Andric // This prototype is deprecated.
72555ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
72565ffd83dbSDimitry Andric vec_sral(__vector signed short __a, __vector unsigned short __b) {
72575ffd83dbSDimitry Andric   return (__vector signed short)__builtin_s390_vsra(
72585ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
72590b57cec5SDimitry Andric }
72600b57cec5SDimitry Andric 
72610b57cec5SDimitry Andric // This prototype is deprecated.
72625ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
72635ffd83dbSDimitry Andric vec_sral(__vector signed short __a, __vector unsigned int __b) {
72645ffd83dbSDimitry Andric   return (__vector signed short)__builtin_s390_vsra(
72655ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
72660b57cec5SDimitry Andric }
72670b57cec5SDimitry Andric 
72680b57cec5SDimitry Andric // This prototype is deprecated.
72695ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
72705ffd83dbSDimitry Andric vec_sral(__vector __bool short __a, __vector unsigned char __b) {
72715ffd83dbSDimitry Andric   return (__vector __bool short)__builtin_s390_vsra(
72725ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
72730b57cec5SDimitry Andric }
72740b57cec5SDimitry Andric 
72750b57cec5SDimitry Andric // This prototype is deprecated.
72765ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
72775ffd83dbSDimitry Andric vec_sral(__vector __bool short __a, __vector unsigned short __b) {
72785ffd83dbSDimitry Andric   return (__vector __bool short)__builtin_s390_vsra(
72795ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
72800b57cec5SDimitry Andric }
72810b57cec5SDimitry Andric 
72820b57cec5SDimitry Andric // This prototype is deprecated.
72835ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
72845ffd83dbSDimitry Andric vec_sral(__vector __bool short __a, __vector unsigned int __b) {
72855ffd83dbSDimitry Andric   return (__vector __bool short)__builtin_s390_vsra(
72865ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
72870b57cec5SDimitry Andric }
72880b57cec5SDimitry Andric 
72895ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
72905ffd83dbSDimitry Andric vec_sral(__vector unsigned short __a, __vector unsigned char __b) {
72915ffd83dbSDimitry Andric   return (__vector unsigned short)__builtin_s390_vsra(
72925ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
72930b57cec5SDimitry Andric }
72940b57cec5SDimitry Andric 
72950b57cec5SDimitry Andric // This prototype is deprecated.
72965ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
72975ffd83dbSDimitry Andric vec_sral(__vector unsigned short __a, __vector unsigned short __b) {
72985ffd83dbSDimitry Andric   return (__vector unsigned short)__builtin_s390_vsra(
72995ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
73000b57cec5SDimitry Andric }
73010b57cec5SDimitry Andric 
73020b57cec5SDimitry Andric // This prototype is deprecated.
73035ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
73045ffd83dbSDimitry Andric vec_sral(__vector unsigned short __a, __vector unsigned int __b) {
73055ffd83dbSDimitry Andric   return (__vector unsigned short)__builtin_s390_vsra(
73065ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
73070b57cec5SDimitry Andric }
73080b57cec5SDimitry Andric 
73095ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
73105ffd83dbSDimitry Andric vec_sral(__vector signed int __a, __vector unsigned char __b) {
73115ffd83dbSDimitry Andric   return (__vector signed int)__builtin_s390_vsra(
73125ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
73130b57cec5SDimitry Andric }
73140b57cec5SDimitry Andric 
73150b57cec5SDimitry Andric // This prototype is deprecated.
73165ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
73175ffd83dbSDimitry Andric vec_sral(__vector signed int __a, __vector unsigned short __b) {
73185ffd83dbSDimitry Andric   return (__vector signed int)__builtin_s390_vsra(
73195ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
73200b57cec5SDimitry Andric }
73210b57cec5SDimitry Andric 
73220b57cec5SDimitry Andric // This prototype is deprecated.
73235ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
73245ffd83dbSDimitry Andric vec_sral(__vector signed int __a, __vector unsigned int __b) {
73255ffd83dbSDimitry Andric   return (__vector signed int)__builtin_s390_vsra(
73265ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
73270b57cec5SDimitry Andric }
73280b57cec5SDimitry Andric 
73290b57cec5SDimitry Andric // This prototype is deprecated.
73305ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
73315ffd83dbSDimitry Andric vec_sral(__vector __bool int __a, __vector unsigned char __b) {
73325ffd83dbSDimitry Andric   return (__vector __bool int)__builtin_s390_vsra(
73335ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
73340b57cec5SDimitry Andric }
73350b57cec5SDimitry Andric 
73360b57cec5SDimitry Andric // This prototype is deprecated.
73375ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
73385ffd83dbSDimitry Andric vec_sral(__vector __bool int __a, __vector unsigned short __b) {
73395ffd83dbSDimitry Andric   return (__vector __bool int)__builtin_s390_vsra(
73405ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
73410b57cec5SDimitry Andric }
73420b57cec5SDimitry Andric 
73430b57cec5SDimitry Andric // This prototype is deprecated.
73445ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
73455ffd83dbSDimitry Andric vec_sral(__vector __bool int __a, __vector unsigned int __b) {
73465ffd83dbSDimitry Andric   return (__vector __bool int)__builtin_s390_vsra(
73475ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
73480b57cec5SDimitry Andric }
73490b57cec5SDimitry Andric 
73505ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
73515ffd83dbSDimitry Andric vec_sral(__vector unsigned int __a, __vector unsigned char __b) {
73525ffd83dbSDimitry Andric   return (__vector unsigned int)__builtin_s390_vsra(
73535ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
73540b57cec5SDimitry Andric }
73550b57cec5SDimitry Andric 
73560b57cec5SDimitry Andric // This prototype is deprecated.
73575ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
73585ffd83dbSDimitry Andric vec_sral(__vector unsigned int __a, __vector unsigned short __b) {
73595ffd83dbSDimitry Andric   return (__vector unsigned int)__builtin_s390_vsra(
73605ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
73610b57cec5SDimitry Andric }
73620b57cec5SDimitry Andric 
73630b57cec5SDimitry Andric // This prototype is deprecated.
73645ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
73655ffd83dbSDimitry Andric vec_sral(__vector unsigned int __a, __vector unsigned int __b) {
73665ffd83dbSDimitry Andric   return (__vector unsigned int)__builtin_s390_vsra(
73675ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
73680b57cec5SDimitry Andric }
73690b57cec5SDimitry Andric 
73705ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
73715ffd83dbSDimitry Andric vec_sral(__vector signed long long __a, __vector unsigned char __b) {
73725ffd83dbSDimitry Andric   return (__vector signed long long)__builtin_s390_vsra(
73735ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
73740b57cec5SDimitry Andric }
73750b57cec5SDimitry Andric 
73760b57cec5SDimitry Andric // This prototype is deprecated.
73775ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
73785ffd83dbSDimitry Andric vec_sral(__vector signed long long __a, __vector unsigned short __b) {
73795ffd83dbSDimitry Andric   return (__vector signed long long)__builtin_s390_vsra(
73805ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
73810b57cec5SDimitry Andric }
73820b57cec5SDimitry Andric 
73830b57cec5SDimitry Andric // This prototype is deprecated.
73845ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
73855ffd83dbSDimitry Andric vec_sral(__vector signed long long __a, __vector unsigned int __b) {
73865ffd83dbSDimitry Andric   return (__vector signed long long)__builtin_s390_vsra(
73875ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
73880b57cec5SDimitry Andric }
73890b57cec5SDimitry Andric 
73900b57cec5SDimitry Andric // This prototype is deprecated.
73915ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
73925ffd83dbSDimitry Andric vec_sral(__vector __bool long long __a, __vector unsigned char __b) {
73935ffd83dbSDimitry Andric   return (__vector __bool long long)__builtin_s390_vsra(
73945ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
73950b57cec5SDimitry Andric }
73960b57cec5SDimitry Andric 
73970b57cec5SDimitry Andric // This prototype is deprecated.
73985ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
73995ffd83dbSDimitry Andric vec_sral(__vector __bool long long __a, __vector unsigned short __b) {
74005ffd83dbSDimitry Andric   return (__vector __bool long long)__builtin_s390_vsra(
74015ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
74020b57cec5SDimitry Andric }
74030b57cec5SDimitry Andric 
74040b57cec5SDimitry Andric // This prototype is deprecated.
74055ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
74065ffd83dbSDimitry Andric vec_sral(__vector __bool long long __a, __vector unsigned int __b) {
74075ffd83dbSDimitry Andric   return (__vector __bool long long)__builtin_s390_vsra(
74085ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
74090b57cec5SDimitry Andric }
74100b57cec5SDimitry Andric 
74115ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
74125ffd83dbSDimitry Andric vec_sral(__vector unsigned long long __a, __vector unsigned char __b) {
74135ffd83dbSDimitry Andric   return (__vector unsigned long long)__builtin_s390_vsra(
74145ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
74150b57cec5SDimitry Andric }
74160b57cec5SDimitry Andric 
74170b57cec5SDimitry Andric // This prototype is deprecated.
74185ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
74195ffd83dbSDimitry Andric vec_sral(__vector unsigned long long __a, __vector unsigned short __b) {
74205ffd83dbSDimitry Andric   return (__vector unsigned long long)__builtin_s390_vsra(
74215ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
74220b57cec5SDimitry Andric }
74230b57cec5SDimitry Andric 
74240b57cec5SDimitry Andric // This prototype is deprecated.
74255ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
74265ffd83dbSDimitry Andric vec_sral(__vector unsigned long long __a, __vector unsigned int __b) {
74275ffd83dbSDimitry Andric   return (__vector unsigned long long)__builtin_s390_vsra(
74285ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
74290b57cec5SDimitry Andric }
74300b57cec5SDimitry Andric 
74310b57cec5SDimitry Andric /*-- vec_srab ---------------------------------------------------------------*/
74320b57cec5SDimitry Andric 
74335ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
74345ffd83dbSDimitry Andric vec_srab(__vector signed char __a, __vector signed char __b) {
74355ffd83dbSDimitry Andric   return (__vector signed char)__builtin_s390_vsrab(
74365ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
74370b57cec5SDimitry Andric }
74380b57cec5SDimitry Andric 
74395ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
74405ffd83dbSDimitry Andric vec_srab(__vector signed char __a, __vector unsigned char __b) {
74415ffd83dbSDimitry Andric   return (__vector signed char)__builtin_s390_vsrab(
74425ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
74430b57cec5SDimitry Andric }
74440b57cec5SDimitry Andric 
74455ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
74465ffd83dbSDimitry Andric vec_srab(__vector unsigned char __a, __vector signed char __b) {
74475ffd83dbSDimitry Andric   return __builtin_s390_vsrab(__a, (__vector unsigned char)__b);
74480b57cec5SDimitry Andric }
74490b57cec5SDimitry Andric 
74505ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
74515ffd83dbSDimitry Andric vec_srab(__vector unsigned char __a, __vector unsigned char __b) {
74520b57cec5SDimitry Andric   return __builtin_s390_vsrab(__a, __b);
74530b57cec5SDimitry Andric }
74540b57cec5SDimitry Andric 
74555ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
74565ffd83dbSDimitry Andric vec_srab(__vector signed short __a, __vector signed short __b) {
74575ffd83dbSDimitry Andric   return (__vector signed short)__builtin_s390_vsrab(
74585ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
74590b57cec5SDimitry Andric }
74600b57cec5SDimitry Andric 
74615ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
74625ffd83dbSDimitry Andric vec_srab(__vector signed short __a, __vector unsigned short __b) {
74635ffd83dbSDimitry Andric   return (__vector signed short)__builtin_s390_vsrab(
74645ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
74650b57cec5SDimitry Andric }
74660b57cec5SDimitry Andric 
74675ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
74685ffd83dbSDimitry Andric vec_srab(__vector unsigned short __a, __vector signed short __b) {
74695ffd83dbSDimitry Andric   return (__vector unsigned short)__builtin_s390_vsrab(
74705ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
74710b57cec5SDimitry Andric }
74720b57cec5SDimitry Andric 
74735ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
74745ffd83dbSDimitry Andric vec_srab(__vector unsigned short __a, __vector unsigned short __b) {
74755ffd83dbSDimitry Andric   return (__vector unsigned short)__builtin_s390_vsrab(
74765ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
74770b57cec5SDimitry Andric }
74780b57cec5SDimitry Andric 
74795ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
74805ffd83dbSDimitry Andric vec_srab(__vector signed int __a, __vector signed int __b) {
74815ffd83dbSDimitry Andric   return (__vector signed int)__builtin_s390_vsrab(
74825ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
74830b57cec5SDimitry Andric }
74840b57cec5SDimitry Andric 
74855ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
74865ffd83dbSDimitry Andric vec_srab(__vector signed int __a, __vector unsigned int __b) {
74875ffd83dbSDimitry Andric   return (__vector signed int)__builtin_s390_vsrab(
74885ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
74890b57cec5SDimitry Andric }
74900b57cec5SDimitry Andric 
74915ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
74925ffd83dbSDimitry Andric vec_srab(__vector unsigned int __a, __vector signed int __b) {
74935ffd83dbSDimitry Andric   return (__vector unsigned int)__builtin_s390_vsrab(
74945ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
74950b57cec5SDimitry Andric }
74960b57cec5SDimitry Andric 
74975ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
74985ffd83dbSDimitry Andric vec_srab(__vector unsigned int __a, __vector unsigned int __b) {
74995ffd83dbSDimitry Andric   return (__vector unsigned int)__builtin_s390_vsrab(
75005ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
75010b57cec5SDimitry Andric }
75020b57cec5SDimitry Andric 
75035ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
75045ffd83dbSDimitry Andric vec_srab(__vector signed long long __a, __vector signed long long __b) {
75055ffd83dbSDimitry Andric   return (__vector signed long long)__builtin_s390_vsrab(
75065ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
75070b57cec5SDimitry Andric }
75080b57cec5SDimitry Andric 
75095ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
75105ffd83dbSDimitry Andric vec_srab(__vector signed long long __a, __vector unsigned long long __b) {
75115ffd83dbSDimitry Andric   return (__vector signed long long)__builtin_s390_vsrab(
75125ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
75130b57cec5SDimitry Andric }
75140b57cec5SDimitry Andric 
75155ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
75165ffd83dbSDimitry Andric vec_srab(__vector unsigned long long __a, __vector signed long long __b) {
75175ffd83dbSDimitry Andric   return (__vector unsigned long long)__builtin_s390_vsrab(
75185ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
75190b57cec5SDimitry Andric }
75200b57cec5SDimitry Andric 
75215ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
75225ffd83dbSDimitry Andric vec_srab(__vector unsigned long long __a, __vector unsigned long long __b) {
75235ffd83dbSDimitry Andric   return (__vector unsigned long long)__builtin_s390_vsrab(
75245ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
75250b57cec5SDimitry Andric }
75260b57cec5SDimitry Andric 
75270b57cec5SDimitry Andric #if __ARCH__ >= 12
75285ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
75295ffd83dbSDimitry Andric vec_srab(__vector float __a, __vector signed int __b) {
75305ffd83dbSDimitry Andric   return (__vector float)__builtin_s390_vsrab(
75315ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
75320b57cec5SDimitry Andric }
75330b57cec5SDimitry Andric 
75345ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
75355ffd83dbSDimitry Andric vec_srab(__vector float __a, __vector unsigned int __b) {
75365ffd83dbSDimitry Andric   return (__vector float)__builtin_s390_vsrab(
75375ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
75380b57cec5SDimitry Andric }
75390b57cec5SDimitry Andric #endif
75400b57cec5SDimitry Andric 
75415ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
75425ffd83dbSDimitry Andric vec_srab(__vector double __a, __vector signed long long __b) {
75435ffd83dbSDimitry Andric   return (__vector double)__builtin_s390_vsrab(
75445ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
75450b57cec5SDimitry Andric }
75460b57cec5SDimitry Andric 
75475ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
75485ffd83dbSDimitry Andric vec_srab(__vector double __a, __vector unsigned long long __b) {
75495ffd83dbSDimitry Andric   return (__vector double)__builtin_s390_vsrab(
75505ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
75510b57cec5SDimitry Andric }
75520b57cec5SDimitry Andric 
75530b57cec5SDimitry Andric /*-- vec_srl ----------------------------------------------------------------*/
75540b57cec5SDimitry Andric 
75555ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
75565ffd83dbSDimitry Andric vec_srl(__vector signed char __a, __vector unsigned char __b) {
75575ffd83dbSDimitry Andric   return (__vector signed char)__builtin_s390_vsrl(
75585ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
75590b57cec5SDimitry Andric }
75600b57cec5SDimitry Andric 
75610b57cec5SDimitry Andric // This prototype is deprecated.
75625ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
75635ffd83dbSDimitry Andric vec_srl(__vector signed char __a, __vector unsigned short __b) {
75645ffd83dbSDimitry Andric   return (__vector signed char)__builtin_s390_vsrl(
75655ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
75660b57cec5SDimitry Andric }
75670b57cec5SDimitry Andric 
75680b57cec5SDimitry Andric // This prototype is deprecated.
75695ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
75705ffd83dbSDimitry Andric vec_srl(__vector signed char __a, __vector unsigned int __b) {
75715ffd83dbSDimitry Andric   return (__vector signed char)__builtin_s390_vsrl(
75725ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
75730b57cec5SDimitry Andric }
75740b57cec5SDimitry Andric 
75750b57cec5SDimitry Andric // This prototype is deprecated.
75765ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
75775ffd83dbSDimitry Andric vec_srl(__vector __bool char __a, __vector unsigned char __b) {
75785ffd83dbSDimitry Andric   return (__vector __bool char)__builtin_s390_vsrl(
75795ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
75800b57cec5SDimitry Andric }
75810b57cec5SDimitry Andric 
75820b57cec5SDimitry Andric // This prototype is deprecated.
75835ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
75845ffd83dbSDimitry Andric vec_srl(__vector __bool char __a, __vector unsigned short __b) {
75855ffd83dbSDimitry Andric   return (__vector __bool char)__builtin_s390_vsrl(
75865ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
75870b57cec5SDimitry Andric }
75880b57cec5SDimitry Andric 
75890b57cec5SDimitry Andric // This prototype is deprecated.
75905ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
75915ffd83dbSDimitry Andric vec_srl(__vector __bool char __a, __vector unsigned int __b) {
75925ffd83dbSDimitry Andric   return (__vector __bool char)__builtin_s390_vsrl(
75935ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
75940b57cec5SDimitry Andric }
75950b57cec5SDimitry Andric 
75965ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
75975ffd83dbSDimitry Andric vec_srl(__vector unsigned char __a, __vector unsigned char __b) {
75980b57cec5SDimitry Andric   return __builtin_s390_vsrl(__a, __b);
75990b57cec5SDimitry Andric }
76000b57cec5SDimitry Andric 
76010b57cec5SDimitry Andric // This prototype is deprecated.
76025ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
76035ffd83dbSDimitry Andric vec_srl(__vector unsigned char __a, __vector unsigned short __b) {
76045ffd83dbSDimitry Andric   return __builtin_s390_vsrl(__a, (__vector unsigned char)__b);
76050b57cec5SDimitry Andric }
76060b57cec5SDimitry Andric 
76070b57cec5SDimitry Andric // This prototype is deprecated.
76085ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
76095ffd83dbSDimitry Andric vec_srl(__vector unsigned char __a, __vector unsigned int __b) {
76105ffd83dbSDimitry Andric   return __builtin_s390_vsrl(__a, (__vector unsigned char)__b);
76110b57cec5SDimitry Andric }
76120b57cec5SDimitry Andric 
76135ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
76145ffd83dbSDimitry Andric vec_srl(__vector signed short __a, __vector unsigned char __b) {
76155ffd83dbSDimitry Andric   return (__vector signed short)__builtin_s390_vsrl(
76165ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
76170b57cec5SDimitry Andric }
76180b57cec5SDimitry Andric 
76190b57cec5SDimitry Andric // This prototype is deprecated.
76205ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
76215ffd83dbSDimitry Andric vec_srl(__vector signed short __a, __vector unsigned short __b) {
76225ffd83dbSDimitry Andric   return (__vector signed short)__builtin_s390_vsrl(
76235ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
76240b57cec5SDimitry Andric }
76250b57cec5SDimitry Andric 
76260b57cec5SDimitry Andric // This prototype is deprecated.
76275ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
76285ffd83dbSDimitry Andric vec_srl(__vector signed short __a, __vector unsigned int __b) {
76295ffd83dbSDimitry Andric   return (__vector signed short)__builtin_s390_vsrl(
76305ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
76310b57cec5SDimitry Andric }
76320b57cec5SDimitry Andric 
76330b57cec5SDimitry Andric // This prototype is deprecated.
76345ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
76355ffd83dbSDimitry Andric vec_srl(__vector __bool short __a, __vector unsigned char __b) {
76365ffd83dbSDimitry Andric   return (__vector __bool short)__builtin_s390_vsrl(
76375ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
76380b57cec5SDimitry Andric }
76390b57cec5SDimitry Andric 
76400b57cec5SDimitry Andric // This prototype is deprecated.
76415ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
76425ffd83dbSDimitry Andric vec_srl(__vector __bool short __a, __vector unsigned short __b) {
76435ffd83dbSDimitry Andric   return (__vector __bool short)__builtin_s390_vsrl(
76445ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
76450b57cec5SDimitry Andric }
76460b57cec5SDimitry Andric 
76470b57cec5SDimitry Andric // This prototype is deprecated.
76485ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
76495ffd83dbSDimitry Andric vec_srl(__vector __bool short __a, __vector unsigned int __b) {
76505ffd83dbSDimitry Andric   return (__vector __bool short)__builtin_s390_vsrl(
76515ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
76520b57cec5SDimitry Andric }
76530b57cec5SDimitry Andric 
76545ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
76555ffd83dbSDimitry Andric vec_srl(__vector unsigned short __a, __vector unsigned char __b) {
76565ffd83dbSDimitry Andric   return (__vector unsigned short)__builtin_s390_vsrl(
76575ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
76580b57cec5SDimitry Andric }
76590b57cec5SDimitry Andric 
76600b57cec5SDimitry Andric // This prototype is deprecated.
76615ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
76625ffd83dbSDimitry Andric vec_srl(__vector unsigned short __a, __vector unsigned short __b) {
76635ffd83dbSDimitry Andric   return (__vector unsigned short)__builtin_s390_vsrl(
76645ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
76650b57cec5SDimitry Andric }
76660b57cec5SDimitry Andric 
76670b57cec5SDimitry Andric // This prototype is deprecated.
76685ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
76695ffd83dbSDimitry Andric vec_srl(__vector unsigned short __a, __vector unsigned int __b) {
76705ffd83dbSDimitry Andric   return (__vector unsigned short)__builtin_s390_vsrl(
76715ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
76720b57cec5SDimitry Andric }
76730b57cec5SDimitry Andric 
76745ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
76755ffd83dbSDimitry Andric vec_srl(__vector signed int __a, __vector unsigned char __b) {
76765ffd83dbSDimitry Andric   return (__vector signed int)__builtin_s390_vsrl(
76775ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
76780b57cec5SDimitry Andric }
76790b57cec5SDimitry Andric 
76800b57cec5SDimitry Andric // This prototype is deprecated.
76815ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
76825ffd83dbSDimitry Andric vec_srl(__vector signed int __a, __vector unsigned short __b) {
76835ffd83dbSDimitry Andric   return (__vector signed int)__builtin_s390_vsrl(
76845ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
76850b57cec5SDimitry Andric }
76860b57cec5SDimitry Andric 
76870b57cec5SDimitry Andric // This prototype is deprecated.
76885ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
76895ffd83dbSDimitry Andric vec_srl(__vector signed int __a, __vector unsigned int __b) {
76905ffd83dbSDimitry Andric   return (__vector signed int)__builtin_s390_vsrl(
76915ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
76920b57cec5SDimitry Andric }
76930b57cec5SDimitry Andric 
76940b57cec5SDimitry Andric // This prototype is deprecated.
76955ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
76965ffd83dbSDimitry Andric vec_srl(__vector __bool int __a, __vector unsigned char __b) {
76975ffd83dbSDimitry Andric   return (__vector __bool int)__builtin_s390_vsrl(
76985ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
76990b57cec5SDimitry Andric }
77000b57cec5SDimitry Andric 
77010b57cec5SDimitry Andric // This prototype is deprecated.
77025ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
77035ffd83dbSDimitry Andric vec_srl(__vector __bool int __a, __vector unsigned short __b) {
77045ffd83dbSDimitry Andric   return (__vector __bool int)__builtin_s390_vsrl(
77055ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
77060b57cec5SDimitry Andric }
77070b57cec5SDimitry Andric 
77080b57cec5SDimitry Andric // This prototype is deprecated.
77095ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
77105ffd83dbSDimitry Andric vec_srl(__vector __bool int __a, __vector unsigned int __b) {
77115ffd83dbSDimitry Andric   return (__vector __bool int)__builtin_s390_vsrl(
77125ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
77130b57cec5SDimitry Andric }
77140b57cec5SDimitry Andric 
77155ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
77165ffd83dbSDimitry Andric vec_srl(__vector unsigned int __a, __vector unsigned char __b) {
77175ffd83dbSDimitry Andric   return (__vector unsigned int)__builtin_s390_vsrl(
77185ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
77190b57cec5SDimitry Andric }
77200b57cec5SDimitry Andric 
77210b57cec5SDimitry Andric // This prototype is deprecated.
77225ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
77235ffd83dbSDimitry Andric vec_srl(__vector unsigned int __a, __vector unsigned short __b) {
77245ffd83dbSDimitry Andric   return (__vector unsigned int)__builtin_s390_vsrl(
77255ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
77260b57cec5SDimitry Andric }
77270b57cec5SDimitry Andric 
77280b57cec5SDimitry Andric // This prototype is deprecated.
77295ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
77305ffd83dbSDimitry Andric vec_srl(__vector unsigned int __a, __vector unsigned int __b) {
77315ffd83dbSDimitry Andric   return (__vector unsigned int)__builtin_s390_vsrl(
77325ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
77330b57cec5SDimitry Andric }
77340b57cec5SDimitry Andric 
77355ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
77365ffd83dbSDimitry Andric vec_srl(__vector signed long long __a, __vector unsigned char __b) {
77375ffd83dbSDimitry Andric   return (__vector signed long long)__builtin_s390_vsrl(
77385ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
77390b57cec5SDimitry Andric }
77400b57cec5SDimitry Andric 
77410b57cec5SDimitry Andric // This prototype is deprecated.
77425ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
77435ffd83dbSDimitry Andric vec_srl(__vector signed long long __a, __vector unsigned short __b) {
77445ffd83dbSDimitry Andric   return (__vector signed long long)__builtin_s390_vsrl(
77455ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
77460b57cec5SDimitry Andric }
77470b57cec5SDimitry Andric 
77480b57cec5SDimitry Andric // This prototype is deprecated.
77495ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
77505ffd83dbSDimitry Andric vec_srl(__vector signed long long __a, __vector unsigned int __b) {
77515ffd83dbSDimitry Andric   return (__vector signed long long)__builtin_s390_vsrl(
77525ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
77530b57cec5SDimitry Andric }
77540b57cec5SDimitry Andric 
77550b57cec5SDimitry Andric // This prototype is deprecated.
77565ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
77575ffd83dbSDimitry Andric vec_srl(__vector __bool long long __a, __vector unsigned char __b) {
77585ffd83dbSDimitry Andric   return (__vector __bool long long)__builtin_s390_vsrl(
77595ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
77600b57cec5SDimitry Andric }
77610b57cec5SDimitry Andric 
77620b57cec5SDimitry Andric // This prototype is deprecated.
77635ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
77645ffd83dbSDimitry Andric vec_srl(__vector __bool long long __a, __vector unsigned short __b) {
77655ffd83dbSDimitry Andric   return (__vector __bool long long)__builtin_s390_vsrl(
77665ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
77670b57cec5SDimitry Andric }
77680b57cec5SDimitry Andric 
77690b57cec5SDimitry Andric // This prototype is deprecated.
77705ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool long long
77715ffd83dbSDimitry Andric vec_srl(__vector __bool long long __a, __vector unsigned int __b) {
77725ffd83dbSDimitry Andric   return (__vector __bool long long)__builtin_s390_vsrl(
77735ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
77740b57cec5SDimitry Andric }
77750b57cec5SDimitry Andric 
77765ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
77775ffd83dbSDimitry Andric vec_srl(__vector unsigned long long __a, __vector unsigned char __b) {
77785ffd83dbSDimitry Andric   return (__vector unsigned long long)__builtin_s390_vsrl(
77795ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
77800b57cec5SDimitry Andric }
77810b57cec5SDimitry Andric 
77820b57cec5SDimitry Andric // This prototype is deprecated.
77835ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
77845ffd83dbSDimitry Andric vec_srl(__vector unsigned long long __a, __vector unsigned short __b) {
77855ffd83dbSDimitry Andric   return (__vector unsigned long long)__builtin_s390_vsrl(
77865ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
77870b57cec5SDimitry Andric }
77880b57cec5SDimitry Andric 
77890b57cec5SDimitry Andric // This prototype is deprecated.
77905ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
77915ffd83dbSDimitry Andric vec_srl(__vector unsigned long long __a, __vector unsigned int __b) {
77925ffd83dbSDimitry Andric   return (__vector unsigned long long)__builtin_s390_vsrl(
77935ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
77940b57cec5SDimitry Andric }
77950b57cec5SDimitry Andric 
77960b57cec5SDimitry Andric /*-- vec_srb ----------------------------------------------------------------*/
77970b57cec5SDimitry Andric 
77985ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
77995ffd83dbSDimitry Andric vec_srb(__vector signed char __a, __vector signed char __b) {
78005ffd83dbSDimitry Andric   return (__vector signed char)__builtin_s390_vsrlb(
78015ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
78020b57cec5SDimitry Andric }
78030b57cec5SDimitry Andric 
78045ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
78055ffd83dbSDimitry Andric vec_srb(__vector signed char __a, __vector unsigned char __b) {
78065ffd83dbSDimitry Andric   return (__vector signed char)__builtin_s390_vsrlb(
78075ffd83dbSDimitry Andric     (__vector unsigned char)__a, __b);
78080b57cec5SDimitry Andric }
78090b57cec5SDimitry Andric 
78105ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
78115ffd83dbSDimitry Andric vec_srb(__vector unsigned char __a, __vector signed char __b) {
78125ffd83dbSDimitry Andric   return __builtin_s390_vsrlb(__a, (__vector unsigned char)__b);
78130b57cec5SDimitry Andric }
78140b57cec5SDimitry Andric 
78155ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
78165ffd83dbSDimitry Andric vec_srb(__vector unsigned char __a, __vector unsigned char __b) {
78170b57cec5SDimitry Andric   return __builtin_s390_vsrlb(__a, __b);
78180b57cec5SDimitry Andric }
78190b57cec5SDimitry Andric 
78205ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
78215ffd83dbSDimitry Andric vec_srb(__vector signed short __a, __vector signed short __b) {
78225ffd83dbSDimitry Andric   return (__vector signed short)__builtin_s390_vsrlb(
78235ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
78240b57cec5SDimitry Andric }
78250b57cec5SDimitry Andric 
78265ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
78275ffd83dbSDimitry Andric vec_srb(__vector signed short __a, __vector unsigned short __b) {
78285ffd83dbSDimitry Andric   return (__vector signed short)__builtin_s390_vsrlb(
78295ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
78300b57cec5SDimitry Andric }
78310b57cec5SDimitry Andric 
78325ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
78335ffd83dbSDimitry Andric vec_srb(__vector unsigned short __a, __vector signed short __b) {
78345ffd83dbSDimitry Andric   return (__vector unsigned short)__builtin_s390_vsrlb(
78355ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
78360b57cec5SDimitry Andric }
78370b57cec5SDimitry Andric 
78385ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
78395ffd83dbSDimitry Andric vec_srb(__vector unsigned short __a, __vector unsigned short __b) {
78405ffd83dbSDimitry Andric   return (__vector unsigned short)__builtin_s390_vsrlb(
78415ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
78420b57cec5SDimitry Andric }
78430b57cec5SDimitry Andric 
78445ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
78455ffd83dbSDimitry Andric vec_srb(__vector signed int __a, __vector signed int __b) {
78465ffd83dbSDimitry Andric   return (__vector signed int)__builtin_s390_vsrlb(
78475ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
78480b57cec5SDimitry Andric }
78490b57cec5SDimitry Andric 
78505ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
78515ffd83dbSDimitry Andric vec_srb(__vector signed int __a, __vector unsigned int __b) {
78525ffd83dbSDimitry Andric   return (__vector signed int)__builtin_s390_vsrlb(
78535ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
78540b57cec5SDimitry Andric }
78550b57cec5SDimitry Andric 
78565ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
78575ffd83dbSDimitry Andric vec_srb(__vector unsigned int __a, __vector signed int __b) {
78585ffd83dbSDimitry Andric   return (__vector unsigned int)__builtin_s390_vsrlb(
78595ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
78600b57cec5SDimitry Andric }
78610b57cec5SDimitry Andric 
78625ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
78635ffd83dbSDimitry Andric vec_srb(__vector unsigned int __a, __vector unsigned int __b) {
78645ffd83dbSDimitry Andric   return (__vector unsigned int)__builtin_s390_vsrlb(
78655ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
78660b57cec5SDimitry Andric }
78670b57cec5SDimitry Andric 
78685ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
78695ffd83dbSDimitry Andric vec_srb(__vector signed long long __a, __vector signed long long __b) {
78705ffd83dbSDimitry Andric   return (__vector signed long long)__builtin_s390_vsrlb(
78715ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
78720b57cec5SDimitry Andric }
78730b57cec5SDimitry Andric 
78745ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
78755ffd83dbSDimitry Andric vec_srb(__vector signed long long __a, __vector unsigned long long __b) {
78765ffd83dbSDimitry Andric   return (__vector signed long long)__builtin_s390_vsrlb(
78775ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
78780b57cec5SDimitry Andric }
78790b57cec5SDimitry Andric 
78805ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
78815ffd83dbSDimitry Andric vec_srb(__vector unsigned long long __a, __vector signed long long __b) {
78825ffd83dbSDimitry Andric   return (__vector unsigned long long)__builtin_s390_vsrlb(
78835ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
78840b57cec5SDimitry Andric }
78850b57cec5SDimitry Andric 
78865ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
78875ffd83dbSDimitry Andric vec_srb(__vector unsigned long long __a, __vector unsigned long long __b) {
78885ffd83dbSDimitry Andric   return (__vector unsigned long long)__builtin_s390_vsrlb(
78895ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
78900b57cec5SDimitry Andric }
78910b57cec5SDimitry Andric 
78920b57cec5SDimitry Andric #if __ARCH__ >= 12
78935ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
78945ffd83dbSDimitry Andric vec_srb(__vector float __a, __vector signed int __b) {
78955ffd83dbSDimitry Andric   return (__vector float)__builtin_s390_vsrlb(
78965ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
78970b57cec5SDimitry Andric }
78980b57cec5SDimitry Andric 
78995ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
79005ffd83dbSDimitry Andric vec_srb(__vector float __a, __vector unsigned int __b) {
79015ffd83dbSDimitry Andric   return (__vector float)__builtin_s390_vsrlb(
79025ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
79030b57cec5SDimitry Andric }
79040b57cec5SDimitry Andric #endif
79050b57cec5SDimitry Andric 
79065ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
79075ffd83dbSDimitry Andric vec_srb(__vector double __a, __vector signed long long __b) {
79085ffd83dbSDimitry Andric   return (__vector double)__builtin_s390_vsrlb(
79095ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
79100b57cec5SDimitry Andric }
79110b57cec5SDimitry Andric 
79125ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
79135ffd83dbSDimitry Andric vec_srb(__vector double __a, __vector unsigned long long __b) {
79145ffd83dbSDimitry Andric   return (__vector double)__builtin_s390_vsrlb(
79155ffd83dbSDimitry Andric     (__vector unsigned char)__a, (__vector unsigned char)__b);
79160b57cec5SDimitry Andric }
79170b57cec5SDimitry Andric 
79180b57cec5SDimitry Andric /*-- vec_srdb ---------------------------------------------------------------*/
79190b57cec5SDimitry Andric 
79200b57cec5SDimitry Andric #if __ARCH__ >= 13
79210b57cec5SDimitry Andric 
79225ffd83dbSDimitry Andric extern __ATTRS_o __vector signed char
79235ffd83dbSDimitry Andric vec_srdb(__vector signed char __a, __vector signed char __b, int __c)
79240b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
79250b57cec5SDimitry Andric 
79265ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned char
79275ffd83dbSDimitry Andric vec_srdb(__vector unsigned char __a, __vector unsigned char __b, int __c)
79280b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
79290b57cec5SDimitry Andric 
79305ffd83dbSDimitry Andric extern __ATTRS_o __vector signed short
79315ffd83dbSDimitry Andric vec_srdb(__vector signed short __a, __vector signed short __b, int __c)
79320b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
79330b57cec5SDimitry Andric 
79345ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned short
79355ffd83dbSDimitry Andric vec_srdb(__vector unsigned short __a, __vector unsigned short __b, int __c)
79360b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
79370b57cec5SDimitry Andric 
79385ffd83dbSDimitry Andric extern __ATTRS_o __vector signed int
79395ffd83dbSDimitry Andric vec_srdb(__vector signed int __a, __vector signed int __b, int __c)
79400b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
79410b57cec5SDimitry Andric 
79425ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned int
79435ffd83dbSDimitry Andric vec_srdb(__vector unsigned int __a, __vector unsigned int __b, int __c)
79440b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
79450b57cec5SDimitry Andric 
79465ffd83dbSDimitry Andric extern __ATTRS_o __vector signed long long
79475ffd83dbSDimitry Andric vec_srdb(__vector signed long long __a, __vector signed long long __b, int __c)
79480b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
79490b57cec5SDimitry Andric 
79505ffd83dbSDimitry Andric extern __ATTRS_o __vector unsigned long long
79515ffd83dbSDimitry Andric vec_srdb(__vector unsigned long long __a, __vector unsigned long long __b,
79525ffd83dbSDimitry Andric          int __c)
79530b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
79540b57cec5SDimitry Andric 
79555ffd83dbSDimitry Andric extern __ATTRS_o __vector float
79565ffd83dbSDimitry Andric vec_srdb(__vector float __a, __vector float __b, int __c)
79570b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
79580b57cec5SDimitry Andric 
79595ffd83dbSDimitry Andric extern __ATTRS_o __vector double
79605ffd83dbSDimitry Andric vec_srdb(__vector double __a, __vector double __b, int __c)
79610b57cec5SDimitry Andric   __constant_range(__c, 0, 7);
79620b57cec5SDimitry Andric 
79630b57cec5SDimitry Andric #define vec_srdb(X, Y, Z) ((__typeof__((vec_srdb)((X), (Y), (Z)))) \
79645ffd83dbSDimitry Andric   __builtin_s390_vsrd((__vector unsigned char)(X), \
79655ffd83dbSDimitry Andric                       (__vector unsigned char)(Y), (Z)))
79660b57cec5SDimitry Andric 
79670b57cec5SDimitry Andric #endif
79680b57cec5SDimitry Andric 
79690b57cec5SDimitry Andric /*-- vec_abs ----------------------------------------------------------------*/
79700b57cec5SDimitry Andric 
79715ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
79725ffd83dbSDimitry Andric vec_abs(__vector signed char __a) {
79735ffd83dbSDimitry Andric   return vec_sel(__a, -__a, vec_cmplt(__a, (__vector signed char)0));
79740b57cec5SDimitry Andric }
79750b57cec5SDimitry Andric 
79765ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
79775ffd83dbSDimitry Andric vec_abs(__vector signed short __a) {
79785ffd83dbSDimitry Andric   return vec_sel(__a, -__a, vec_cmplt(__a, (__vector signed short)0));
79790b57cec5SDimitry Andric }
79800b57cec5SDimitry Andric 
79815ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
79825ffd83dbSDimitry Andric vec_abs(__vector signed int __a) {
79835ffd83dbSDimitry Andric   return vec_sel(__a, -__a, vec_cmplt(__a, (__vector signed int)0));
79840b57cec5SDimitry Andric }
79850b57cec5SDimitry Andric 
79865ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
79875ffd83dbSDimitry Andric vec_abs(__vector signed long long __a) {
79885ffd83dbSDimitry Andric   return vec_sel(__a, -__a, vec_cmplt(__a, (__vector signed long long)0));
79890b57cec5SDimitry Andric }
79900b57cec5SDimitry Andric 
79910b57cec5SDimitry Andric #if __ARCH__ >= 12
79925ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
79935ffd83dbSDimitry Andric vec_abs(__vector float __a) {
79940b57cec5SDimitry Andric   return __builtin_s390_vflpsb(__a);
79950b57cec5SDimitry Andric }
79960b57cec5SDimitry Andric #endif
79970b57cec5SDimitry Andric 
79985ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
79995ffd83dbSDimitry Andric vec_abs(__vector double __a) {
80000b57cec5SDimitry Andric   return __builtin_s390_vflpdb(__a);
80010b57cec5SDimitry Andric }
80020b57cec5SDimitry Andric 
80030b57cec5SDimitry Andric /*-- vec_nabs ---------------------------------------------------------------*/
80040b57cec5SDimitry Andric 
80050b57cec5SDimitry Andric #if __ARCH__ >= 12
80065ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
80075ffd83dbSDimitry Andric vec_nabs(__vector float __a) {
80080b57cec5SDimitry Andric   return __builtin_s390_vflnsb(__a);
80090b57cec5SDimitry Andric }
80100b57cec5SDimitry Andric #endif
80110b57cec5SDimitry Andric 
80125ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
80135ffd83dbSDimitry Andric vec_nabs(__vector double __a) {
80140b57cec5SDimitry Andric   return __builtin_s390_vflndb(__a);
80150b57cec5SDimitry Andric }
80160b57cec5SDimitry Andric 
80170b57cec5SDimitry Andric /*-- vec_max ----------------------------------------------------------------*/
80180b57cec5SDimitry Andric 
80195ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
80205ffd83dbSDimitry Andric vec_max(__vector signed char __a, __vector signed char __b) {
80210b57cec5SDimitry Andric   return vec_sel(__b, __a, vec_cmpgt(__a, __b));
80220b57cec5SDimitry Andric }
80230b57cec5SDimitry Andric 
80240b57cec5SDimitry Andric // This prototype is deprecated.
80255ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
80265ffd83dbSDimitry Andric vec_max(__vector signed char __a, __vector __bool char __b) {
80275ffd83dbSDimitry Andric   __vector signed char __bc = (__vector signed char)__b;
80280b57cec5SDimitry Andric   return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
80290b57cec5SDimitry Andric }
80300b57cec5SDimitry Andric 
80310b57cec5SDimitry Andric // This prototype is deprecated.
80325ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
80335ffd83dbSDimitry Andric vec_max(__vector __bool char __a, __vector signed char __b) {
80345ffd83dbSDimitry Andric   __vector signed char __ac = (__vector signed char)__a;
80350b57cec5SDimitry Andric   return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
80360b57cec5SDimitry Andric }
80370b57cec5SDimitry Andric 
80385ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
80395ffd83dbSDimitry Andric vec_max(__vector unsigned char __a, __vector unsigned char __b) {
80400b57cec5SDimitry Andric   return vec_sel(__b, __a, vec_cmpgt(__a, __b));
80410b57cec5SDimitry Andric }
80420b57cec5SDimitry Andric 
80430b57cec5SDimitry Andric // This prototype is deprecated.
80445ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
80455ffd83dbSDimitry Andric vec_max(__vector unsigned char __a, __vector __bool char __b) {
80465ffd83dbSDimitry Andric   __vector unsigned char __bc = (__vector unsigned char)__b;
80470b57cec5SDimitry Andric   return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
80480b57cec5SDimitry Andric }
80490b57cec5SDimitry Andric 
80500b57cec5SDimitry Andric // This prototype is deprecated.
80515ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
80525ffd83dbSDimitry Andric vec_max(__vector __bool char __a, __vector unsigned char __b) {
80535ffd83dbSDimitry Andric   __vector unsigned char __ac = (__vector unsigned char)__a;
80540b57cec5SDimitry Andric   return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
80550b57cec5SDimitry Andric }
80560b57cec5SDimitry Andric 
80575ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
80585ffd83dbSDimitry Andric vec_max(__vector signed short __a, __vector signed short __b) {
80590b57cec5SDimitry Andric   return vec_sel(__b, __a, vec_cmpgt(__a, __b));
80600b57cec5SDimitry Andric }
80610b57cec5SDimitry Andric 
80620b57cec5SDimitry Andric // This prototype is deprecated.
80635ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
80645ffd83dbSDimitry Andric vec_max(__vector signed short __a, __vector __bool short __b) {
80655ffd83dbSDimitry Andric   __vector signed short __bc = (__vector signed short)__b;
80660b57cec5SDimitry Andric   return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
80670b57cec5SDimitry Andric }
80680b57cec5SDimitry Andric 
80690b57cec5SDimitry Andric // This prototype is deprecated.
80705ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
80715ffd83dbSDimitry Andric vec_max(__vector __bool short __a, __vector signed short __b) {
80725ffd83dbSDimitry Andric   __vector signed short __ac = (__vector signed short)__a;
80730b57cec5SDimitry Andric   return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
80740b57cec5SDimitry Andric }
80750b57cec5SDimitry Andric 
80765ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
80775ffd83dbSDimitry Andric vec_max(__vector unsigned short __a, __vector unsigned short __b) {
80780b57cec5SDimitry Andric   return vec_sel(__b, __a, vec_cmpgt(__a, __b));
80790b57cec5SDimitry Andric }
80800b57cec5SDimitry Andric 
80810b57cec5SDimitry Andric // This prototype is deprecated.
80825ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
80835ffd83dbSDimitry Andric vec_max(__vector unsigned short __a, __vector __bool short __b) {
80845ffd83dbSDimitry Andric   __vector unsigned short __bc = (__vector unsigned short)__b;
80850b57cec5SDimitry Andric   return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
80860b57cec5SDimitry Andric }
80870b57cec5SDimitry Andric 
80880b57cec5SDimitry Andric // This prototype is deprecated.
80895ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
80905ffd83dbSDimitry Andric vec_max(__vector __bool short __a, __vector unsigned short __b) {
80915ffd83dbSDimitry Andric   __vector unsigned short __ac = (__vector unsigned short)__a;
80920b57cec5SDimitry Andric   return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
80930b57cec5SDimitry Andric }
80940b57cec5SDimitry Andric 
80955ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
80965ffd83dbSDimitry Andric vec_max(__vector signed int __a, __vector signed int __b) {
80970b57cec5SDimitry Andric   return vec_sel(__b, __a, vec_cmpgt(__a, __b));
80980b57cec5SDimitry Andric }
80990b57cec5SDimitry Andric 
81000b57cec5SDimitry Andric // This prototype is deprecated.
81015ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
81025ffd83dbSDimitry Andric vec_max(__vector signed int __a, __vector __bool int __b) {
81035ffd83dbSDimitry Andric   __vector signed int __bc = (__vector signed int)__b;
81040b57cec5SDimitry Andric   return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
81050b57cec5SDimitry Andric }
81060b57cec5SDimitry Andric 
81070b57cec5SDimitry Andric // This prototype is deprecated.
81085ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
81095ffd83dbSDimitry Andric vec_max(__vector __bool int __a, __vector signed int __b) {
81105ffd83dbSDimitry Andric   __vector signed int __ac = (__vector signed int)__a;
81110b57cec5SDimitry Andric   return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
81120b57cec5SDimitry Andric }
81130b57cec5SDimitry Andric 
81145ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
81155ffd83dbSDimitry Andric vec_max(__vector unsigned int __a, __vector unsigned int __b) {
81160b57cec5SDimitry Andric   return vec_sel(__b, __a, vec_cmpgt(__a, __b));
81170b57cec5SDimitry Andric }
81180b57cec5SDimitry Andric 
81190b57cec5SDimitry Andric // This prototype is deprecated.
81205ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
81215ffd83dbSDimitry Andric vec_max(__vector unsigned int __a, __vector __bool int __b) {
81225ffd83dbSDimitry Andric   __vector unsigned int __bc = (__vector unsigned int)__b;
81230b57cec5SDimitry Andric   return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
81240b57cec5SDimitry Andric }
81250b57cec5SDimitry Andric 
81260b57cec5SDimitry Andric // This prototype is deprecated.
81275ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
81285ffd83dbSDimitry Andric vec_max(__vector __bool int __a, __vector unsigned int __b) {
81295ffd83dbSDimitry Andric   __vector unsigned int __ac = (__vector unsigned int)__a;
81300b57cec5SDimitry Andric   return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
81310b57cec5SDimitry Andric }
81320b57cec5SDimitry Andric 
81335ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
81345ffd83dbSDimitry Andric vec_max(__vector signed long long __a, __vector signed long long __b) {
81350b57cec5SDimitry Andric   return vec_sel(__b, __a, vec_cmpgt(__a, __b));
81360b57cec5SDimitry Andric }
81370b57cec5SDimitry Andric 
81380b57cec5SDimitry Andric // This prototype is deprecated.
81395ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
81405ffd83dbSDimitry Andric vec_max(__vector signed long long __a, __vector __bool long long __b) {
81415ffd83dbSDimitry Andric   __vector signed long long __bc = (__vector signed long long)__b;
81420b57cec5SDimitry Andric   return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
81430b57cec5SDimitry Andric }
81440b57cec5SDimitry Andric 
81450b57cec5SDimitry Andric // This prototype is deprecated.
81465ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
81475ffd83dbSDimitry Andric vec_max(__vector __bool long long __a, __vector signed long long __b) {
81485ffd83dbSDimitry Andric   __vector signed long long __ac = (__vector signed long long)__a;
81490b57cec5SDimitry Andric   return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
81500b57cec5SDimitry Andric }
81510b57cec5SDimitry Andric 
81525ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
81535ffd83dbSDimitry Andric vec_max(__vector unsigned long long __a, __vector unsigned long long __b) {
81540b57cec5SDimitry Andric   return vec_sel(__b, __a, vec_cmpgt(__a, __b));
81550b57cec5SDimitry Andric }
81560b57cec5SDimitry Andric 
81570b57cec5SDimitry Andric // This prototype is deprecated.
81585ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
81595ffd83dbSDimitry Andric vec_max(__vector unsigned long long __a, __vector __bool long long __b) {
81605ffd83dbSDimitry Andric   __vector unsigned long long __bc = (__vector unsigned long long)__b;
81610b57cec5SDimitry Andric   return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
81620b57cec5SDimitry Andric }
81630b57cec5SDimitry Andric 
81640b57cec5SDimitry Andric // This prototype is deprecated.
81655ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
81665ffd83dbSDimitry Andric vec_max(__vector __bool long long __a, __vector unsigned long long __b) {
81675ffd83dbSDimitry Andric   __vector unsigned long long __ac = (__vector unsigned long long)__a;
81680b57cec5SDimitry Andric   return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
81690b57cec5SDimitry Andric }
81700b57cec5SDimitry Andric 
81710b57cec5SDimitry Andric #if __ARCH__ >= 12
81725ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
81735ffd83dbSDimitry Andric vec_max(__vector float __a, __vector float __b) {
81740b57cec5SDimitry Andric   return __builtin_s390_vfmaxsb(__a, __b, 0);
81750b57cec5SDimitry Andric }
81760b57cec5SDimitry Andric #endif
81770b57cec5SDimitry Andric 
81785ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
81795ffd83dbSDimitry Andric vec_max(__vector double __a, __vector double __b) {
81800b57cec5SDimitry Andric #if __ARCH__ >= 12
81810b57cec5SDimitry Andric   return __builtin_s390_vfmaxdb(__a, __b, 0);
81820b57cec5SDimitry Andric #else
81830b57cec5SDimitry Andric   return vec_sel(__b, __a, vec_cmpgt(__a, __b));
81840b57cec5SDimitry Andric #endif
81850b57cec5SDimitry Andric }
81860b57cec5SDimitry Andric 
81870b57cec5SDimitry Andric /*-- vec_min ----------------------------------------------------------------*/
81880b57cec5SDimitry Andric 
81895ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
81905ffd83dbSDimitry Andric vec_min(__vector signed char __a, __vector signed char __b) {
81910b57cec5SDimitry Andric   return vec_sel(__a, __b, vec_cmpgt(__a, __b));
81920b57cec5SDimitry Andric }
81930b57cec5SDimitry Andric 
81940b57cec5SDimitry Andric // This prototype is deprecated.
81955ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
81965ffd83dbSDimitry Andric vec_min(__vector signed char __a, __vector __bool char __b) {
81975ffd83dbSDimitry Andric   __vector signed char __bc = (__vector signed char)__b;
81980b57cec5SDimitry Andric   return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
81990b57cec5SDimitry Andric }
82000b57cec5SDimitry Andric 
82010b57cec5SDimitry Andric // This prototype is deprecated.
82025ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
82035ffd83dbSDimitry Andric vec_min(__vector __bool char __a, __vector signed char __b) {
82045ffd83dbSDimitry Andric   __vector signed char __ac = (__vector signed char)__a;
82050b57cec5SDimitry Andric   return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
82060b57cec5SDimitry Andric }
82070b57cec5SDimitry Andric 
82085ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
82095ffd83dbSDimitry Andric vec_min(__vector unsigned char __a, __vector unsigned char __b) {
82100b57cec5SDimitry Andric   return vec_sel(__a, __b, vec_cmpgt(__a, __b));
82110b57cec5SDimitry Andric }
82120b57cec5SDimitry Andric 
82130b57cec5SDimitry Andric // This prototype is deprecated.
82145ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
82155ffd83dbSDimitry Andric vec_min(__vector unsigned char __a, __vector __bool char __b) {
82165ffd83dbSDimitry Andric   __vector unsigned char __bc = (__vector unsigned char)__b;
82170b57cec5SDimitry Andric   return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
82180b57cec5SDimitry Andric }
82190b57cec5SDimitry Andric 
82200b57cec5SDimitry Andric // This prototype is deprecated.
82215ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
82225ffd83dbSDimitry Andric vec_min(__vector __bool char __a, __vector unsigned char __b) {
82235ffd83dbSDimitry Andric   __vector unsigned char __ac = (__vector unsigned char)__a;
82240b57cec5SDimitry Andric   return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
82250b57cec5SDimitry Andric }
82260b57cec5SDimitry Andric 
82275ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
82285ffd83dbSDimitry Andric vec_min(__vector signed short __a, __vector signed short __b) {
82290b57cec5SDimitry Andric   return vec_sel(__a, __b, vec_cmpgt(__a, __b));
82300b57cec5SDimitry Andric }
82310b57cec5SDimitry Andric 
82320b57cec5SDimitry Andric // This prototype is deprecated.
82335ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
82345ffd83dbSDimitry Andric vec_min(__vector signed short __a, __vector __bool short __b) {
82355ffd83dbSDimitry Andric   __vector signed short __bc = (__vector signed short)__b;
82360b57cec5SDimitry Andric   return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
82370b57cec5SDimitry Andric }
82380b57cec5SDimitry Andric 
82390b57cec5SDimitry Andric // This prototype is deprecated.
82405ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
82415ffd83dbSDimitry Andric vec_min(__vector __bool short __a, __vector signed short __b) {
82425ffd83dbSDimitry Andric   __vector signed short __ac = (__vector signed short)__a;
82430b57cec5SDimitry Andric   return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
82440b57cec5SDimitry Andric }
82450b57cec5SDimitry Andric 
82465ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
82475ffd83dbSDimitry Andric vec_min(__vector unsigned short __a, __vector unsigned short __b) {
82480b57cec5SDimitry Andric   return vec_sel(__a, __b, vec_cmpgt(__a, __b));
82490b57cec5SDimitry Andric }
82500b57cec5SDimitry Andric 
82510b57cec5SDimitry Andric // This prototype is deprecated.
82525ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
82535ffd83dbSDimitry Andric vec_min(__vector unsigned short __a, __vector __bool short __b) {
82545ffd83dbSDimitry Andric   __vector unsigned short __bc = (__vector unsigned short)__b;
82550b57cec5SDimitry Andric   return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
82560b57cec5SDimitry Andric }
82570b57cec5SDimitry Andric 
82580b57cec5SDimitry Andric // This prototype is deprecated.
82595ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
82605ffd83dbSDimitry Andric vec_min(__vector __bool short __a, __vector unsigned short __b) {
82615ffd83dbSDimitry Andric   __vector unsigned short __ac = (__vector unsigned short)__a;
82620b57cec5SDimitry Andric   return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
82630b57cec5SDimitry Andric }
82640b57cec5SDimitry Andric 
82655ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
82665ffd83dbSDimitry Andric vec_min(__vector signed int __a, __vector signed int __b) {
82670b57cec5SDimitry Andric   return vec_sel(__a, __b, vec_cmpgt(__a, __b));
82680b57cec5SDimitry Andric }
82690b57cec5SDimitry Andric 
82700b57cec5SDimitry Andric // This prototype is deprecated.
82715ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
82725ffd83dbSDimitry Andric vec_min(__vector signed int __a, __vector __bool int __b) {
82735ffd83dbSDimitry Andric   __vector signed int __bc = (__vector signed int)__b;
82740b57cec5SDimitry Andric   return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
82750b57cec5SDimitry Andric }
82760b57cec5SDimitry Andric 
82770b57cec5SDimitry Andric // This prototype is deprecated.
82785ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
82795ffd83dbSDimitry Andric vec_min(__vector __bool int __a, __vector signed int __b) {
82805ffd83dbSDimitry Andric   __vector signed int __ac = (__vector signed int)__a;
82810b57cec5SDimitry Andric   return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
82820b57cec5SDimitry Andric }
82830b57cec5SDimitry Andric 
82845ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
82855ffd83dbSDimitry Andric vec_min(__vector unsigned int __a, __vector unsigned int __b) {
82860b57cec5SDimitry Andric   return vec_sel(__a, __b, vec_cmpgt(__a, __b));
82870b57cec5SDimitry Andric }
82880b57cec5SDimitry Andric 
82890b57cec5SDimitry Andric // This prototype is deprecated.
82905ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
82915ffd83dbSDimitry Andric vec_min(__vector unsigned int __a, __vector __bool int __b) {
82925ffd83dbSDimitry Andric   __vector unsigned int __bc = (__vector unsigned int)__b;
82930b57cec5SDimitry Andric   return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
82940b57cec5SDimitry Andric }
82950b57cec5SDimitry Andric 
82960b57cec5SDimitry Andric // This prototype is deprecated.
82975ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
82985ffd83dbSDimitry Andric vec_min(__vector __bool int __a, __vector unsigned int __b) {
82995ffd83dbSDimitry Andric   __vector unsigned int __ac = (__vector unsigned int)__a;
83000b57cec5SDimitry Andric   return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
83010b57cec5SDimitry Andric }
83020b57cec5SDimitry Andric 
83035ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
83045ffd83dbSDimitry Andric vec_min(__vector signed long long __a, __vector signed long long __b) {
83050b57cec5SDimitry Andric   return vec_sel(__a, __b, vec_cmpgt(__a, __b));
83060b57cec5SDimitry Andric }
83070b57cec5SDimitry Andric 
83080b57cec5SDimitry Andric // This prototype is deprecated.
83095ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
83105ffd83dbSDimitry Andric vec_min(__vector signed long long __a, __vector __bool long long __b) {
83115ffd83dbSDimitry Andric   __vector signed long long __bc = (__vector signed long long)__b;
83120b57cec5SDimitry Andric   return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
83130b57cec5SDimitry Andric }
83140b57cec5SDimitry Andric 
83150b57cec5SDimitry Andric // This prototype is deprecated.
83165ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
83175ffd83dbSDimitry Andric vec_min(__vector __bool long long __a, __vector signed long long __b) {
83185ffd83dbSDimitry Andric   __vector signed long long __ac = (__vector signed long long)__a;
83190b57cec5SDimitry Andric   return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
83200b57cec5SDimitry Andric }
83210b57cec5SDimitry Andric 
83225ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
83235ffd83dbSDimitry Andric vec_min(__vector unsigned long long __a, __vector unsigned long long __b) {
83240b57cec5SDimitry Andric   return vec_sel(__a, __b, vec_cmpgt(__a, __b));
83250b57cec5SDimitry Andric }
83260b57cec5SDimitry Andric 
83270b57cec5SDimitry Andric // This prototype is deprecated.
83285ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
83295ffd83dbSDimitry Andric vec_min(__vector unsigned long long __a, __vector __bool long long __b) {
83305ffd83dbSDimitry Andric   __vector unsigned long long __bc = (__vector unsigned long long)__b;
83310b57cec5SDimitry Andric   return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
83320b57cec5SDimitry Andric }
83330b57cec5SDimitry Andric 
83340b57cec5SDimitry Andric // This prototype is deprecated.
83355ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
83365ffd83dbSDimitry Andric vec_min(__vector __bool long long __a, __vector unsigned long long __b) {
83375ffd83dbSDimitry Andric   __vector unsigned long long __ac = (__vector unsigned long long)__a;
83380b57cec5SDimitry Andric   return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
83390b57cec5SDimitry Andric }
83400b57cec5SDimitry Andric 
83410b57cec5SDimitry Andric #if __ARCH__ >= 12
83425ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
83435ffd83dbSDimitry Andric vec_min(__vector float __a, __vector float __b) {
83440b57cec5SDimitry Andric   return __builtin_s390_vfminsb(__a, __b, 0);
83450b57cec5SDimitry Andric }
83460b57cec5SDimitry Andric #endif
83470b57cec5SDimitry Andric 
83485ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
83495ffd83dbSDimitry Andric vec_min(__vector double __a, __vector double __b) {
83500b57cec5SDimitry Andric #if __ARCH__ >= 12
83510b57cec5SDimitry Andric   return __builtin_s390_vfmindb(__a, __b, 0);
83520b57cec5SDimitry Andric #else
83530b57cec5SDimitry Andric   return vec_sel(__a, __b, vec_cmpgt(__a, __b));
83540b57cec5SDimitry Andric #endif
83550b57cec5SDimitry Andric }
83560b57cec5SDimitry Andric 
83570b57cec5SDimitry Andric /*-- vec_add_u128 -----------------------------------------------------------*/
83580b57cec5SDimitry Andric 
83595ffd83dbSDimitry Andric static inline __ATTRS_ai __vector unsigned char
83605ffd83dbSDimitry Andric vec_add_u128(__vector unsigned char __a, __vector unsigned char __b) {
83610b57cec5SDimitry Andric   return __builtin_s390_vaq(__a, __b);
83620b57cec5SDimitry Andric }
83630b57cec5SDimitry Andric 
83640b57cec5SDimitry Andric /*-- vec_addc ---------------------------------------------------------------*/
83650b57cec5SDimitry Andric 
83665ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
83675ffd83dbSDimitry Andric vec_addc(__vector unsigned char __a, __vector unsigned char __b) {
83680b57cec5SDimitry Andric   return __builtin_s390_vaccb(__a, __b);
83690b57cec5SDimitry Andric }
83700b57cec5SDimitry Andric 
83715ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
83725ffd83dbSDimitry Andric vec_addc(__vector unsigned short __a, __vector unsigned short __b) {
83730b57cec5SDimitry Andric   return __builtin_s390_vacch(__a, __b);
83740b57cec5SDimitry Andric }
83750b57cec5SDimitry Andric 
83765ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
83775ffd83dbSDimitry Andric vec_addc(__vector unsigned int __a, __vector unsigned int __b) {
83780b57cec5SDimitry Andric   return __builtin_s390_vaccf(__a, __b);
83790b57cec5SDimitry Andric }
83800b57cec5SDimitry Andric 
83815ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
83825ffd83dbSDimitry Andric vec_addc(__vector unsigned long long __a, __vector unsigned long long __b) {
83830b57cec5SDimitry Andric   return __builtin_s390_vaccg(__a, __b);
83840b57cec5SDimitry Andric }
83850b57cec5SDimitry Andric 
83860b57cec5SDimitry Andric /*-- vec_addc_u128 ----------------------------------------------------------*/
83870b57cec5SDimitry Andric 
83885ffd83dbSDimitry Andric static inline __ATTRS_ai __vector unsigned char
83895ffd83dbSDimitry Andric vec_addc_u128(__vector unsigned char __a, __vector unsigned char __b) {
83900b57cec5SDimitry Andric   return __builtin_s390_vaccq(__a, __b);
83910b57cec5SDimitry Andric }
83920b57cec5SDimitry Andric 
83930b57cec5SDimitry Andric /*-- vec_adde_u128 ----------------------------------------------------------*/
83940b57cec5SDimitry Andric 
83955ffd83dbSDimitry Andric static inline __ATTRS_ai __vector unsigned char
83965ffd83dbSDimitry Andric vec_adde_u128(__vector unsigned char __a, __vector unsigned char __b,
83975ffd83dbSDimitry Andric               __vector unsigned char __c) {
83980b57cec5SDimitry Andric   return __builtin_s390_vacq(__a, __b, __c);
83990b57cec5SDimitry Andric }
84000b57cec5SDimitry Andric 
84010b57cec5SDimitry Andric /*-- vec_addec_u128 ---------------------------------------------------------*/
84020b57cec5SDimitry Andric 
84035ffd83dbSDimitry Andric static inline __ATTRS_ai __vector unsigned char
84045ffd83dbSDimitry Andric vec_addec_u128(__vector unsigned char __a, __vector unsigned char __b,
84055ffd83dbSDimitry Andric                __vector unsigned char __c) {
84060b57cec5SDimitry Andric   return __builtin_s390_vacccq(__a, __b, __c);
84070b57cec5SDimitry Andric }
84080b57cec5SDimitry Andric 
84090b57cec5SDimitry Andric /*-- vec_avg ----------------------------------------------------------------*/
84100b57cec5SDimitry Andric 
84115ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
84125ffd83dbSDimitry Andric vec_avg(__vector signed char __a, __vector signed char __b) {
84130b57cec5SDimitry Andric   return __builtin_s390_vavgb(__a, __b);
84140b57cec5SDimitry Andric }
84150b57cec5SDimitry Andric 
84165ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
84175ffd83dbSDimitry Andric vec_avg(__vector signed short __a, __vector signed short __b) {
84180b57cec5SDimitry Andric   return __builtin_s390_vavgh(__a, __b);
84190b57cec5SDimitry Andric }
84200b57cec5SDimitry Andric 
84215ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
84225ffd83dbSDimitry Andric vec_avg(__vector signed int __a, __vector signed int __b) {
84230b57cec5SDimitry Andric   return __builtin_s390_vavgf(__a, __b);
84240b57cec5SDimitry Andric }
84250b57cec5SDimitry Andric 
84265ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
84275ffd83dbSDimitry Andric vec_avg(__vector signed long long __a, __vector signed long long __b) {
84280b57cec5SDimitry Andric   return __builtin_s390_vavgg(__a, __b);
84290b57cec5SDimitry Andric }
84300b57cec5SDimitry Andric 
84315ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
84325ffd83dbSDimitry Andric vec_avg(__vector unsigned char __a, __vector unsigned char __b) {
84330b57cec5SDimitry Andric   return __builtin_s390_vavglb(__a, __b);
84340b57cec5SDimitry Andric }
84350b57cec5SDimitry Andric 
84365ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
84375ffd83dbSDimitry Andric vec_avg(__vector unsigned short __a, __vector unsigned short __b) {
84380b57cec5SDimitry Andric   return __builtin_s390_vavglh(__a, __b);
84390b57cec5SDimitry Andric }
84400b57cec5SDimitry Andric 
84415ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
84425ffd83dbSDimitry Andric vec_avg(__vector unsigned int __a, __vector unsigned int __b) {
84430b57cec5SDimitry Andric   return __builtin_s390_vavglf(__a, __b);
84440b57cec5SDimitry Andric }
84450b57cec5SDimitry Andric 
84465ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
84475ffd83dbSDimitry Andric vec_avg(__vector unsigned long long __a, __vector unsigned long long __b) {
84480b57cec5SDimitry Andric   return __builtin_s390_vavglg(__a, __b);
84490b57cec5SDimitry Andric }
84500b57cec5SDimitry Andric 
84510b57cec5SDimitry Andric /*-- vec_checksum -----------------------------------------------------------*/
84520b57cec5SDimitry Andric 
84535ffd83dbSDimitry Andric static inline __ATTRS_ai __vector unsigned int
84545ffd83dbSDimitry Andric vec_checksum(__vector unsigned int __a, __vector unsigned int __b) {
84550b57cec5SDimitry Andric   return __builtin_s390_vcksm(__a, __b);
84560b57cec5SDimitry Andric }
84570b57cec5SDimitry Andric 
84580b57cec5SDimitry Andric /*-- vec_gfmsum -------------------------------------------------------------*/
84590b57cec5SDimitry Andric 
84605ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
84615ffd83dbSDimitry Andric vec_gfmsum(__vector unsigned char __a, __vector unsigned char __b) {
84620b57cec5SDimitry Andric   return __builtin_s390_vgfmb(__a, __b);
84630b57cec5SDimitry Andric }
84640b57cec5SDimitry Andric 
84655ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
84665ffd83dbSDimitry Andric vec_gfmsum(__vector unsigned short __a, __vector unsigned short __b) {
84670b57cec5SDimitry Andric   return __builtin_s390_vgfmh(__a, __b);
84680b57cec5SDimitry Andric }
84690b57cec5SDimitry Andric 
84705ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
84715ffd83dbSDimitry Andric vec_gfmsum(__vector unsigned int __a, __vector unsigned int __b) {
84720b57cec5SDimitry Andric   return __builtin_s390_vgfmf(__a, __b);
84730b57cec5SDimitry Andric }
84740b57cec5SDimitry Andric 
84750b57cec5SDimitry Andric /*-- vec_gfmsum_128 ---------------------------------------------------------*/
84760b57cec5SDimitry Andric 
84775ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
84785ffd83dbSDimitry Andric vec_gfmsum_128(__vector unsigned long long __a,
84795ffd83dbSDimitry Andric                __vector unsigned long long __b) {
84800b57cec5SDimitry Andric   return __builtin_s390_vgfmg(__a, __b);
84810b57cec5SDimitry Andric }
84820b57cec5SDimitry Andric 
84830b57cec5SDimitry Andric /*-- vec_gfmsum_accum -------------------------------------------------------*/
84840b57cec5SDimitry Andric 
84855ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
84865ffd83dbSDimitry Andric vec_gfmsum_accum(__vector unsigned char __a, __vector unsigned char __b,
84875ffd83dbSDimitry Andric                  __vector unsigned short __c) {
84880b57cec5SDimitry Andric   return __builtin_s390_vgfmab(__a, __b, __c);
84890b57cec5SDimitry Andric }
84900b57cec5SDimitry Andric 
84915ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
84925ffd83dbSDimitry Andric vec_gfmsum_accum(__vector unsigned short __a, __vector unsigned short __b,
84935ffd83dbSDimitry Andric                  __vector unsigned int __c) {
84940b57cec5SDimitry Andric   return __builtin_s390_vgfmah(__a, __b, __c);
84950b57cec5SDimitry Andric }
84960b57cec5SDimitry Andric 
84975ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
84985ffd83dbSDimitry Andric vec_gfmsum_accum(__vector unsigned int __a, __vector unsigned int __b,
84995ffd83dbSDimitry Andric                  __vector unsigned long long __c) {
85000b57cec5SDimitry Andric   return __builtin_s390_vgfmaf(__a, __b, __c);
85010b57cec5SDimitry Andric }
85020b57cec5SDimitry Andric 
85030b57cec5SDimitry Andric /*-- vec_gfmsum_accum_128 ---------------------------------------------------*/
85040b57cec5SDimitry Andric 
85055ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
85065ffd83dbSDimitry Andric vec_gfmsum_accum_128(__vector unsigned long long __a,
85075ffd83dbSDimitry Andric                      __vector unsigned long long __b,
85085ffd83dbSDimitry Andric                      __vector unsigned char __c) {
85090b57cec5SDimitry Andric   return __builtin_s390_vgfmag(__a, __b, __c);
85100b57cec5SDimitry Andric }
85110b57cec5SDimitry Andric 
85120b57cec5SDimitry Andric /*-- vec_mladd --------------------------------------------------------------*/
85130b57cec5SDimitry Andric 
85145ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
85155ffd83dbSDimitry Andric vec_mladd(__vector signed char __a, __vector signed char __b,
85165ffd83dbSDimitry Andric           __vector signed char __c) {
85170b57cec5SDimitry Andric   return __a * __b + __c;
85180b57cec5SDimitry Andric }
85190b57cec5SDimitry Andric 
85205ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
85215ffd83dbSDimitry Andric vec_mladd(__vector unsigned char __a, __vector signed char __b,
85225ffd83dbSDimitry Andric           __vector signed char __c) {
85235ffd83dbSDimitry Andric   return (__vector signed char)__a * __b + __c;
85240b57cec5SDimitry Andric }
85250b57cec5SDimitry Andric 
85265ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
85275ffd83dbSDimitry Andric vec_mladd(__vector signed char __a, __vector unsigned char __b,
85285ffd83dbSDimitry Andric           __vector unsigned char __c) {
85295ffd83dbSDimitry Andric   return __a * (__vector signed char)__b + (__vector signed char)__c;
85300b57cec5SDimitry Andric }
85310b57cec5SDimitry Andric 
85325ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
85335ffd83dbSDimitry Andric vec_mladd(__vector unsigned char __a, __vector unsigned char __b,
85345ffd83dbSDimitry Andric           __vector unsigned char __c) {
85350b57cec5SDimitry Andric   return __a * __b + __c;
85360b57cec5SDimitry Andric }
85370b57cec5SDimitry Andric 
85385ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
85395ffd83dbSDimitry Andric vec_mladd(__vector signed short __a, __vector signed short __b,
85405ffd83dbSDimitry Andric           __vector signed short __c) {
85410b57cec5SDimitry Andric   return __a * __b + __c;
85420b57cec5SDimitry Andric }
85430b57cec5SDimitry Andric 
85445ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
85455ffd83dbSDimitry Andric vec_mladd(__vector unsigned short __a, __vector signed short __b,
85465ffd83dbSDimitry Andric           __vector signed short __c) {
85475ffd83dbSDimitry Andric   return (__vector signed short)__a * __b + __c;
85480b57cec5SDimitry Andric }
85490b57cec5SDimitry Andric 
85505ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
85515ffd83dbSDimitry Andric vec_mladd(__vector signed short __a, __vector unsigned short __b,
85525ffd83dbSDimitry Andric           __vector unsigned short __c) {
85535ffd83dbSDimitry Andric   return __a * (__vector signed short)__b + (__vector signed short)__c;
85540b57cec5SDimitry Andric }
85550b57cec5SDimitry Andric 
85565ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
85575ffd83dbSDimitry Andric vec_mladd(__vector unsigned short __a, __vector unsigned short __b,
85585ffd83dbSDimitry Andric           __vector unsigned short __c) {
85590b57cec5SDimitry Andric   return __a * __b + __c;
85600b57cec5SDimitry Andric }
85610b57cec5SDimitry Andric 
85625ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
85635ffd83dbSDimitry Andric vec_mladd(__vector signed int __a, __vector signed int __b,
85645ffd83dbSDimitry Andric           __vector signed int __c) {
85650b57cec5SDimitry Andric   return __a * __b + __c;
85660b57cec5SDimitry Andric }
85670b57cec5SDimitry Andric 
85685ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
85695ffd83dbSDimitry Andric vec_mladd(__vector unsigned int __a, __vector signed int __b,
85705ffd83dbSDimitry Andric           __vector signed int __c) {
85715ffd83dbSDimitry Andric   return (__vector signed int)__a * __b + __c;
85720b57cec5SDimitry Andric }
85730b57cec5SDimitry Andric 
85745ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
85755ffd83dbSDimitry Andric vec_mladd(__vector signed int __a, __vector unsigned int __b,
85765ffd83dbSDimitry Andric           __vector unsigned int __c) {
85775ffd83dbSDimitry Andric   return __a * (__vector signed int)__b + (__vector signed int)__c;
85780b57cec5SDimitry Andric }
85790b57cec5SDimitry Andric 
85805ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
85815ffd83dbSDimitry Andric vec_mladd(__vector unsigned int __a, __vector unsigned int __b,
85825ffd83dbSDimitry Andric           __vector unsigned int __c) {
85830b57cec5SDimitry Andric   return __a * __b + __c;
85840b57cec5SDimitry Andric }
85850b57cec5SDimitry Andric 
85860b57cec5SDimitry Andric /*-- vec_mhadd --------------------------------------------------------------*/
85870b57cec5SDimitry Andric 
85885ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
85895ffd83dbSDimitry Andric vec_mhadd(__vector signed char __a, __vector signed char __b,
85905ffd83dbSDimitry Andric           __vector signed char __c) {
85910b57cec5SDimitry Andric   return __builtin_s390_vmahb(__a, __b, __c);
85920b57cec5SDimitry Andric }
85930b57cec5SDimitry Andric 
85945ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
85955ffd83dbSDimitry Andric vec_mhadd(__vector unsigned char __a, __vector unsigned char __b,
85965ffd83dbSDimitry Andric           __vector unsigned char __c) {
85970b57cec5SDimitry Andric   return __builtin_s390_vmalhb(__a, __b, __c);
85980b57cec5SDimitry Andric }
85990b57cec5SDimitry Andric 
86005ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
86015ffd83dbSDimitry Andric vec_mhadd(__vector signed short __a, __vector signed short __b,
86025ffd83dbSDimitry Andric           __vector signed short __c) {
86030b57cec5SDimitry Andric   return __builtin_s390_vmahh(__a, __b, __c);
86040b57cec5SDimitry Andric }
86050b57cec5SDimitry Andric 
86065ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
86075ffd83dbSDimitry Andric vec_mhadd(__vector unsigned short __a, __vector unsigned short __b,
86085ffd83dbSDimitry Andric           __vector unsigned short __c) {
86090b57cec5SDimitry Andric   return __builtin_s390_vmalhh(__a, __b, __c);
86100b57cec5SDimitry Andric }
86110b57cec5SDimitry Andric 
86125ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
86135ffd83dbSDimitry Andric vec_mhadd(__vector signed int __a, __vector signed int __b,
86145ffd83dbSDimitry Andric           __vector signed int __c) {
86150b57cec5SDimitry Andric   return __builtin_s390_vmahf(__a, __b, __c);
86160b57cec5SDimitry Andric }
86170b57cec5SDimitry Andric 
86185ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
86195ffd83dbSDimitry Andric vec_mhadd(__vector unsigned int __a, __vector unsigned int __b,
86205ffd83dbSDimitry Andric           __vector unsigned int __c) {
86210b57cec5SDimitry Andric   return __builtin_s390_vmalhf(__a, __b, __c);
86220b57cec5SDimitry Andric }
86230b57cec5SDimitry Andric 
86240b57cec5SDimitry Andric /*-- vec_meadd --------------------------------------------------------------*/
86250b57cec5SDimitry Andric 
86265ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
86275ffd83dbSDimitry Andric vec_meadd(__vector signed char __a, __vector signed char __b,
86285ffd83dbSDimitry Andric           __vector signed short __c) {
86290b57cec5SDimitry Andric   return __builtin_s390_vmaeb(__a, __b, __c);
86300b57cec5SDimitry Andric }
86310b57cec5SDimitry Andric 
86325ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
86335ffd83dbSDimitry Andric vec_meadd(__vector unsigned char __a, __vector unsigned char __b,
86345ffd83dbSDimitry Andric           __vector unsigned short __c) {
86350b57cec5SDimitry Andric   return __builtin_s390_vmaleb(__a, __b, __c);
86360b57cec5SDimitry Andric }
86370b57cec5SDimitry Andric 
86385ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
86395ffd83dbSDimitry Andric vec_meadd(__vector signed short __a, __vector signed short __b,
86405ffd83dbSDimitry Andric           __vector signed int __c) {
86410b57cec5SDimitry Andric   return __builtin_s390_vmaeh(__a, __b, __c);
86420b57cec5SDimitry Andric }
86430b57cec5SDimitry Andric 
86445ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
86455ffd83dbSDimitry Andric vec_meadd(__vector unsigned short __a, __vector unsigned short __b,
86465ffd83dbSDimitry Andric           __vector unsigned int __c) {
86470b57cec5SDimitry Andric   return __builtin_s390_vmaleh(__a, __b, __c);
86480b57cec5SDimitry Andric }
86490b57cec5SDimitry Andric 
86505ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
86515ffd83dbSDimitry Andric vec_meadd(__vector signed int __a, __vector signed int __b,
86525ffd83dbSDimitry Andric           __vector signed long long __c) {
86530b57cec5SDimitry Andric   return __builtin_s390_vmaef(__a, __b, __c);
86540b57cec5SDimitry Andric }
86550b57cec5SDimitry Andric 
86565ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
86575ffd83dbSDimitry Andric vec_meadd(__vector unsigned int __a, __vector unsigned int __b,
86585ffd83dbSDimitry Andric           __vector unsigned long long __c) {
86590b57cec5SDimitry Andric   return __builtin_s390_vmalef(__a, __b, __c);
86600b57cec5SDimitry Andric }
86610b57cec5SDimitry Andric 
86620b57cec5SDimitry Andric /*-- vec_moadd --------------------------------------------------------------*/
86630b57cec5SDimitry Andric 
86645ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
86655ffd83dbSDimitry Andric vec_moadd(__vector signed char __a, __vector signed char __b,
86665ffd83dbSDimitry Andric           __vector signed short __c) {
86670b57cec5SDimitry Andric   return __builtin_s390_vmaob(__a, __b, __c);
86680b57cec5SDimitry Andric }
86690b57cec5SDimitry Andric 
86705ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
86715ffd83dbSDimitry Andric vec_moadd(__vector unsigned char __a, __vector unsigned char __b,
86725ffd83dbSDimitry Andric           __vector unsigned short __c) {
86730b57cec5SDimitry Andric   return __builtin_s390_vmalob(__a, __b, __c);
86740b57cec5SDimitry Andric }
86750b57cec5SDimitry Andric 
86765ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
86775ffd83dbSDimitry Andric vec_moadd(__vector signed short __a, __vector signed short __b,
86785ffd83dbSDimitry Andric           __vector signed int __c) {
86790b57cec5SDimitry Andric   return __builtin_s390_vmaoh(__a, __b, __c);
86800b57cec5SDimitry Andric }
86810b57cec5SDimitry Andric 
86825ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
86835ffd83dbSDimitry Andric vec_moadd(__vector unsigned short __a, __vector unsigned short __b,
86845ffd83dbSDimitry Andric           __vector unsigned int __c) {
86850b57cec5SDimitry Andric   return __builtin_s390_vmaloh(__a, __b, __c);
86860b57cec5SDimitry Andric }
86870b57cec5SDimitry Andric 
86885ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
86895ffd83dbSDimitry Andric vec_moadd(__vector signed int __a, __vector signed int __b,
86905ffd83dbSDimitry Andric           __vector signed long long __c) {
86910b57cec5SDimitry Andric   return __builtin_s390_vmaof(__a, __b, __c);
86920b57cec5SDimitry Andric }
86930b57cec5SDimitry Andric 
86945ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
86955ffd83dbSDimitry Andric vec_moadd(__vector unsigned int __a, __vector unsigned int __b,
86965ffd83dbSDimitry Andric           __vector unsigned long long __c) {
86970b57cec5SDimitry Andric   return __builtin_s390_vmalof(__a, __b, __c);
86980b57cec5SDimitry Andric }
86990b57cec5SDimitry Andric 
87000b57cec5SDimitry Andric /*-- vec_mulh ---------------------------------------------------------------*/
87010b57cec5SDimitry Andric 
87025ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
87035ffd83dbSDimitry Andric vec_mulh(__vector signed char __a, __vector signed char __b) {
87040b57cec5SDimitry Andric   return __builtin_s390_vmhb(__a, __b);
87050b57cec5SDimitry Andric }
87060b57cec5SDimitry Andric 
87075ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
87085ffd83dbSDimitry Andric vec_mulh(__vector unsigned char __a, __vector unsigned char __b) {
87090b57cec5SDimitry Andric   return __builtin_s390_vmlhb(__a, __b);
87100b57cec5SDimitry Andric }
87110b57cec5SDimitry Andric 
87125ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
87135ffd83dbSDimitry Andric vec_mulh(__vector signed short __a, __vector signed short __b) {
87140b57cec5SDimitry Andric   return __builtin_s390_vmhh(__a, __b);
87150b57cec5SDimitry Andric }
87160b57cec5SDimitry Andric 
87175ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
87185ffd83dbSDimitry Andric vec_mulh(__vector unsigned short __a, __vector unsigned short __b) {
87190b57cec5SDimitry Andric   return __builtin_s390_vmlhh(__a, __b);
87200b57cec5SDimitry Andric }
87210b57cec5SDimitry Andric 
87225ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
87235ffd83dbSDimitry Andric vec_mulh(__vector signed int __a, __vector signed int __b) {
87240b57cec5SDimitry Andric   return __builtin_s390_vmhf(__a, __b);
87250b57cec5SDimitry Andric }
87260b57cec5SDimitry Andric 
87275ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
87285ffd83dbSDimitry Andric vec_mulh(__vector unsigned int __a, __vector unsigned int __b) {
87290b57cec5SDimitry Andric   return __builtin_s390_vmlhf(__a, __b);
87300b57cec5SDimitry Andric }
87310b57cec5SDimitry Andric 
87320b57cec5SDimitry Andric /*-- vec_mule ---------------------------------------------------------------*/
87330b57cec5SDimitry Andric 
87345ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
87355ffd83dbSDimitry Andric vec_mule(__vector signed char __a, __vector signed char __b) {
87360b57cec5SDimitry Andric   return __builtin_s390_vmeb(__a, __b);
87370b57cec5SDimitry Andric }
87380b57cec5SDimitry Andric 
87395ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
87405ffd83dbSDimitry Andric vec_mule(__vector unsigned char __a, __vector unsigned char __b) {
87410b57cec5SDimitry Andric   return __builtin_s390_vmleb(__a, __b);
87420b57cec5SDimitry Andric }
87430b57cec5SDimitry Andric 
87445ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
87455ffd83dbSDimitry Andric vec_mule(__vector signed short __a, __vector signed short __b) {
87460b57cec5SDimitry Andric   return __builtin_s390_vmeh(__a, __b);
87470b57cec5SDimitry Andric }
87480b57cec5SDimitry Andric 
87495ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
87505ffd83dbSDimitry Andric vec_mule(__vector unsigned short __a, __vector unsigned short __b) {
87510b57cec5SDimitry Andric   return __builtin_s390_vmleh(__a, __b);
87520b57cec5SDimitry Andric }
87530b57cec5SDimitry Andric 
87545ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
87555ffd83dbSDimitry Andric vec_mule(__vector signed int __a, __vector signed int __b) {
87560b57cec5SDimitry Andric   return __builtin_s390_vmef(__a, __b);
87570b57cec5SDimitry Andric }
87580b57cec5SDimitry Andric 
87595ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
87605ffd83dbSDimitry Andric vec_mule(__vector unsigned int __a, __vector unsigned int __b) {
87610b57cec5SDimitry Andric   return __builtin_s390_vmlef(__a, __b);
87620b57cec5SDimitry Andric }
87630b57cec5SDimitry Andric 
87640b57cec5SDimitry Andric /*-- vec_mulo ---------------------------------------------------------------*/
87650b57cec5SDimitry Andric 
87665ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
87675ffd83dbSDimitry Andric vec_mulo(__vector signed char __a, __vector signed char __b) {
87680b57cec5SDimitry Andric   return __builtin_s390_vmob(__a, __b);
87690b57cec5SDimitry Andric }
87700b57cec5SDimitry Andric 
87715ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
87725ffd83dbSDimitry Andric vec_mulo(__vector unsigned char __a, __vector unsigned char __b) {
87730b57cec5SDimitry Andric   return __builtin_s390_vmlob(__a, __b);
87740b57cec5SDimitry Andric }
87750b57cec5SDimitry Andric 
87765ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
87775ffd83dbSDimitry Andric vec_mulo(__vector signed short __a, __vector signed short __b) {
87780b57cec5SDimitry Andric   return __builtin_s390_vmoh(__a, __b);
87790b57cec5SDimitry Andric }
87800b57cec5SDimitry Andric 
87815ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
87825ffd83dbSDimitry Andric vec_mulo(__vector unsigned short __a, __vector unsigned short __b) {
87830b57cec5SDimitry Andric   return __builtin_s390_vmloh(__a, __b);
87840b57cec5SDimitry Andric }
87850b57cec5SDimitry Andric 
87865ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
87875ffd83dbSDimitry Andric vec_mulo(__vector signed int __a, __vector signed int __b) {
87880b57cec5SDimitry Andric   return __builtin_s390_vmof(__a, __b);
87890b57cec5SDimitry Andric }
87900b57cec5SDimitry Andric 
87915ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
87925ffd83dbSDimitry Andric vec_mulo(__vector unsigned int __a, __vector unsigned int __b) {
87930b57cec5SDimitry Andric   return __builtin_s390_vmlof(__a, __b);
87940b57cec5SDimitry Andric }
87950b57cec5SDimitry Andric 
87960b57cec5SDimitry Andric /*-- vec_msum_u128 ----------------------------------------------------------*/
87970b57cec5SDimitry Andric 
87980b57cec5SDimitry Andric #if __ARCH__ >= 12
87990b57cec5SDimitry Andric #define vec_msum_u128(X, Y, Z, W) \
88005ffd83dbSDimitry Andric   ((__vector unsigned char)__builtin_s390_vmslg((X), (Y), (Z), (W)));
88010b57cec5SDimitry Andric #endif
88020b57cec5SDimitry Andric 
88030b57cec5SDimitry Andric /*-- vec_sub_u128 -----------------------------------------------------------*/
88040b57cec5SDimitry Andric 
88055ffd83dbSDimitry Andric static inline __ATTRS_ai __vector unsigned char
88065ffd83dbSDimitry Andric vec_sub_u128(__vector unsigned char __a, __vector unsigned char __b) {
88070b57cec5SDimitry Andric   return __builtin_s390_vsq(__a, __b);
88080b57cec5SDimitry Andric }
88090b57cec5SDimitry Andric 
88100b57cec5SDimitry Andric /*-- vec_subc ---------------------------------------------------------------*/
88110b57cec5SDimitry Andric 
88125ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
88135ffd83dbSDimitry Andric vec_subc(__vector unsigned char __a, __vector unsigned char __b) {
88140b57cec5SDimitry Andric   return __builtin_s390_vscbib(__a, __b);
88150b57cec5SDimitry Andric }
88160b57cec5SDimitry Andric 
88175ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
88185ffd83dbSDimitry Andric vec_subc(__vector unsigned short __a, __vector unsigned short __b) {
88190b57cec5SDimitry Andric   return __builtin_s390_vscbih(__a, __b);
88200b57cec5SDimitry Andric }
88210b57cec5SDimitry Andric 
88225ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
88235ffd83dbSDimitry Andric vec_subc(__vector unsigned int __a, __vector unsigned int __b) {
88240b57cec5SDimitry Andric   return __builtin_s390_vscbif(__a, __b);
88250b57cec5SDimitry Andric }
88260b57cec5SDimitry Andric 
88275ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
88285ffd83dbSDimitry Andric vec_subc(__vector unsigned long long __a, __vector unsigned long long __b) {
88290b57cec5SDimitry Andric   return __builtin_s390_vscbig(__a, __b);
88300b57cec5SDimitry Andric }
88310b57cec5SDimitry Andric 
88320b57cec5SDimitry Andric /*-- vec_subc_u128 ----------------------------------------------------------*/
88330b57cec5SDimitry Andric 
88345ffd83dbSDimitry Andric static inline __ATTRS_ai __vector unsigned char
88355ffd83dbSDimitry Andric vec_subc_u128(__vector unsigned char __a, __vector unsigned char __b) {
88360b57cec5SDimitry Andric   return __builtin_s390_vscbiq(__a, __b);
88370b57cec5SDimitry Andric }
88380b57cec5SDimitry Andric 
88390b57cec5SDimitry Andric /*-- vec_sube_u128 ----------------------------------------------------------*/
88400b57cec5SDimitry Andric 
88415ffd83dbSDimitry Andric static inline __ATTRS_ai __vector unsigned char
88425ffd83dbSDimitry Andric vec_sube_u128(__vector unsigned char __a, __vector unsigned char __b,
88435ffd83dbSDimitry Andric               __vector unsigned char __c) {
88440b57cec5SDimitry Andric   return __builtin_s390_vsbiq(__a, __b, __c);
88450b57cec5SDimitry Andric }
88460b57cec5SDimitry Andric 
88470b57cec5SDimitry Andric /*-- vec_subec_u128 ---------------------------------------------------------*/
88480b57cec5SDimitry Andric 
88495ffd83dbSDimitry Andric static inline __ATTRS_ai __vector unsigned char
88505ffd83dbSDimitry Andric vec_subec_u128(__vector unsigned char __a, __vector unsigned char __b,
88515ffd83dbSDimitry Andric                __vector unsigned char __c) {
88520b57cec5SDimitry Andric   return __builtin_s390_vsbcbiq(__a, __b, __c);
88530b57cec5SDimitry Andric }
88540b57cec5SDimitry Andric 
88550b57cec5SDimitry Andric /*-- vec_sum2 ---------------------------------------------------------------*/
88560b57cec5SDimitry Andric 
88575ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
88585ffd83dbSDimitry Andric vec_sum2(__vector unsigned short __a, __vector unsigned short __b) {
88590b57cec5SDimitry Andric   return __builtin_s390_vsumgh(__a, __b);
88600b57cec5SDimitry Andric }
88610b57cec5SDimitry Andric 
88625ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
88635ffd83dbSDimitry Andric vec_sum2(__vector unsigned int __a, __vector unsigned int __b) {
88640b57cec5SDimitry Andric   return __builtin_s390_vsumgf(__a, __b);
88650b57cec5SDimitry Andric }
88660b57cec5SDimitry Andric 
88670b57cec5SDimitry Andric /*-- vec_sum_u128 -----------------------------------------------------------*/
88680b57cec5SDimitry Andric 
88695ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
88705ffd83dbSDimitry Andric vec_sum_u128(__vector unsigned int __a, __vector unsigned int __b) {
88710b57cec5SDimitry Andric   return __builtin_s390_vsumqf(__a, __b);
88720b57cec5SDimitry Andric }
88730b57cec5SDimitry Andric 
88745ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
88755ffd83dbSDimitry Andric vec_sum_u128(__vector unsigned long long __a, __vector unsigned long long __b) {
88760b57cec5SDimitry Andric   return __builtin_s390_vsumqg(__a, __b);
88770b57cec5SDimitry Andric }
88780b57cec5SDimitry Andric 
88790b57cec5SDimitry Andric /*-- vec_sum4 ---------------------------------------------------------------*/
88800b57cec5SDimitry Andric 
88815ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
88825ffd83dbSDimitry Andric vec_sum4(__vector unsigned char __a, __vector unsigned char __b) {
88830b57cec5SDimitry Andric   return __builtin_s390_vsumb(__a, __b);
88840b57cec5SDimitry Andric }
88850b57cec5SDimitry Andric 
88865ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
88875ffd83dbSDimitry Andric vec_sum4(__vector unsigned short __a, __vector unsigned short __b) {
88880b57cec5SDimitry Andric   return __builtin_s390_vsumh(__a, __b);
88890b57cec5SDimitry Andric }
88900b57cec5SDimitry Andric 
88910b57cec5SDimitry Andric /*-- vec_test_mask ----------------------------------------------------------*/
88920b57cec5SDimitry Andric 
88930b57cec5SDimitry Andric static inline __ATTRS_o_ai int
88945ffd83dbSDimitry Andric vec_test_mask(__vector signed char __a, __vector unsigned char __b) {
88955ffd83dbSDimitry Andric   return __builtin_s390_vtm((__vector unsigned char)__a,
88965ffd83dbSDimitry Andric                             (__vector unsigned char)__b);
88970b57cec5SDimitry Andric }
88980b57cec5SDimitry Andric 
88990b57cec5SDimitry Andric static inline __ATTRS_o_ai int
89005ffd83dbSDimitry Andric vec_test_mask(__vector unsigned char __a, __vector unsigned char __b) {
89010b57cec5SDimitry Andric   return __builtin_s390_vtm(__a, __b);
89020b57cec5SDimitry Andric }
89030b57cec5SDimitry Andric 
89040b57cec5SDimitry Andric static inline __ATTRS_o_ai int
89055ffd83dbSDimitry Andric vec_test_mask(__vector signed short __a, __vector unsigned short __b) {
89065ffd83dbSDimitry Andric   return __builtin_s390_vtm((__vector unsigned char)__a,
89075ffd83dbSDimitry Andric                             (__vector unsigned char)__b);
89080b57cec5SDimitry Andric }
89090b57cec5SDimitry Andric 
89100b57cec5SDimitry Andric static inline __ATTRS_o_ai int
89115ffd83dbSDimitry Andric vec_test_mask(__vector unsigned short __a, __vector unsigned short __b) {
89125ffd83dbSDimitry Andric   return __builtin_s390_vtm((__vector unsigned char)__a,
89135ffd83dbSDimitry Andric                             (__vector unsigned char)__b);
89140b57cec5SDimitry Andric }
89150b57cec5SDimitry Andric 
89160b57cec5SDimitry Andric static inline __ATTRS_o_ai int
89175ffd83dbSDimitry Andric vec_test_mask(__vector signed int __a, __vector unsigned int __b) {
89185ffd83dbSDimitry Andric   return __builtin_s390_vtm((__vector unsigned char)__a,
89195ffd83dbSDimitry Andric                             (__vector unsigned char)__b);
89200b57cec5SDimitry Andric }
89210b57cec5SDimitry Andric 
89220b57cec5SDimitry Andric static inline __ATTRS_o_ai int
89235ffd83dbSDimitry Andric vec_test_mask(__vector unsigned int __a, __vector unsigned int __b) {
89245ffd83dbSDimitry Andric   return __builtin_s390_vtm((__vector unsigned char)__a,
89255ffd83dbSDimitry Andric                             (__vector unsigned char)__b);
89260b57cec5SDimitry Andric }
89270b57cec5SDimitry Andric 
89280b57cec5SDimitry Andric static inline __ATTRS_o_ai int
89295ffd83dbSDimitry Andric vec_test_mask(__vector signed long long __a, __vector unsigned long long __b) {
89305ffd83dbSDimitry Andric   return __builtin_s390_vtm((__vector unsigned char)__a,
89315ffd83dbSDimitry Andric                             (__vector unsigned char)__b);
89320b57cec5SDimitry Andric }
89330b57cec5SDimitry Andric 
89340b57cec5SDimitry Andric static inline __ATTRS_o_ai int
89355ffd83dbSDimitry Andric vec_test_mask(__vector unsigned long long __a,
89365ffd83dbSDimitry Andric               __vector unsigned long long __b) {
89375ffd83dbSDimitry Andric   return __builtin_s390_vtm((__vector unsigned char)__a,
89385ffd83dbSDimitry Andric                             (__vector unsigned char)__b);
89390b57cec5SDimitry Andric }
89400b57cec5SDimitry Andric 
89410b57cec5SDimitry Andric #if __ARCH__ >= 12
89420b57cec5SDimitry Andric static inline __ATTRS_o_ai int
89435ffd83dbSDimitry Andric vec_test_mask(__vector float __a, __vector unsigned int __b) {
89445ffd83dbSDimitry Andric   return __builtin_s390_vtm((__vector unsigned char)__a,
89455ffd83dbSDimitry Andric                             (__vector unsigned char)__b);
89460b57cec5SDimitry Andric }
89470b57cec5SDimitry Andric #endif
89480b57cec5SDimitry Andric 
89490b57cec5SDimitry Andric static inline __ATTRS_o_ai int
89505ffd83dbSDimitry Andric vec_test_mask(__vector double __a, __vector unsigned long long __b) {
89515ffd83dbSDimitry Andric   return __builtin_s390_vtm((__vector unsigned char)__a,
89525ffd83dbSDimitry Andric                             (__vector unsigned char)__b);
89530b57cec5SDimitry Andric }
89540b57cec5SDimitry Andric 
89550b57cec5SDimitry Andric /*-- vec_madd ---------------------------------------------------------------*/
89560b57cec5SDimitry Andric 
89570b57cec5SDimitry Andric #if __ARCH__ >= 12
89585ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
89595ffd83dbSDimitry Andric vec_madd(__vector float __a, __vector float __b, __vector float __c) {
89600b57cec5SDimitry Andric   return __builtin_s390_vfmasb(__a, __b, __c);
89610b57cec5SDimitry Andric }
89620b57cec5SDimitry Andric #endif
89630b57cec5SDimitry Andric 
89645ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
89655ffd83dbSDimitry Andric vec_madd(__vector double __a, __vector double __b, __vector double __c) {
89660b57cec5SDimitry Andric   return __builtin_s390_vfmadb(__a, __b, __c);
89670b57cec5SDimitry Andric }
89680b57cec5SDimitry Andric 
89690b57cec5SDimitry Andric /*-- vec_msub ---------------------------------------------------------------*/
89700b57cec5SDimitry Andric 
89710b57cec5SDimitry Andric #if __ARCH__ >= 12
89725ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
89735ffd83dbSDimitry Andric vec_msub(__vector float __a, __vector float __b, __vector float __c) {
89740b57cec5SDimitry Andric   return __builtin_s390_vfmssb(__a, __b, __c);
89750b57cec5SDimitry Andric }
89760b57cec5SDimitry Andric #endif
89770b57cec5SDimitry Andric 
89785ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
89795ffd83dbSDimitry Andric vec_msub(__vector double __a, __vector double __b, __vector double __c) {
89800b57cec5SDimitry Andric   return __builtin_s390_vfmsdb(__a, __b, __c);
89810b57cec5SDimitry Andric }
89820b57cec5SDimitry Andric 
89830b57cec5SDimitry Andric /*-- vec_nmadd ---------------------------------------------------------------*/
89840b57cec5SDimitry Andric 
89850b57cec5SDimitry Andric #if __ARCH__ >= 12
89865ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
89875ffd83dbSDimitry Andric vec_nmadd(__vector float __a, __vector float __b, __vector float __c) {
89880b57cec5SDimitry Andric   return __builtin_s390_vfnmasb(__a, __b, __c);
89890b57cec5SDimitry Andric }
89900b57cec5SDimitry Andric 
89915ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
89925ffd83dbSDimitry Andric vec_nmadd(__vector double __a, __vector double __b, __vector double __c) {
89930b57cec5SDimitry Andric   return __builtin_s390_vfnmadb(__a, __b, __c);
89940b57cec5SDimitry Andric }
89950b57cec5SDimitry Andric #endif
89960b57cec5SDimitry Andric 
89970b57cec5SDimitry Andric /*-- vec_nmsub ---------------------------------------------------------------*/
89980b57cec5SDimitry Andric 
89990b57cec5SDimitry Andric #if __ARCH__ >= 12
90005ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
90015ffd83dbSDimitry Andric vec_nmsub(__vector float __a, __vector float __b, __vector float __c) {
90020b57cec5SDimitry Andric   return __builtin_s390_vfnmssb(__a, __b, __c);
90030b57cec5SDimitry Andric }
90040b57cec5SDimitry Andric 
90055ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
90065ffd83dbSDimitry Andric vec_nmsub(__vector double __a, __vector double __b, __vector double __c) {
90070b57cec5SDimitry Andric   return __builtin_s390_vfnmsdb(__a, __b, __c);
90080b57cec5SDimitry Andric }
90090b57cec5SDimitry Andric #endif
90100b57cec5SDimitry Andric 
90110b57cec5SDimitry Andric /*-- vec_sqrt ---------------------------------------------------------------*/
90120b57cec5SDimitry Andric 
90130b57cec5SDimitry Andric #if __ARCH__ >= 12
90145ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
90155ffd83dbSDimitry Andric vec_sqrt(__vector float __a) {
90160b57cec5SDimitry Andric   return __builtin_s390_vfsqsb(__a);
90170b57cec5SDimitry Andric }
90180b57cec5SDimitry Andric #endif
90190b57cec5SDimitry Andric 
90205ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
90215ffd83dbSDimitry Andric vec_sqrt(__vector double __a) {
90220b57cec5SDimitry Andric   return __builtin_s390_vfsqdb(__a);
90230b57cec5SDimitry Andric }
90240b57cec5SDimitry Andric 
90250b57cec5SDimitry Andric /*-- vec_ld2f ---------------------------------------------------------------*/
90260b57cec5SDimitry Andric 
90270b57cec5SDimitry Andric // This prototype is deprecated.
90285ffd83dbSDimitry Andric static inline __ATTRS_ai __vector double
90290b57cec5SDimitry Andric vec_ld2f(const float *__ptr) {
90300b57cec5SDimitry Andric   typedef float __v2f32 __attribute__((__vector_size__(8)));
90315ffd83dbSDimitry Andric   return __builtin_convertvector(*(const __v2f32 *)__ptr, __vector double);
90320b57cec5SDimitry Andric }
90330b57cec5SDimitry Andric 
90340b57cec5SDimitry Andric /*-- vec_st2f ---------------------------------------------------------------*/
90350b57cec5SDimitry Andric 
90360b57cec5SDimitry Andric // This prototype is deprecated.
90370b57cec5SDimitry Andric static inline __ATTRS_ai void
90385ffd83dbSDimitry Andric vec_st2f(__vector double __a, float *__ptr) {
90390b57cec5SDimitry Andric   typedef float __v2f32 __attribute__((__vector_size__(8)));
90400b57cec5SDimitry Andric   *(__v2f32 *)__ptr = __builtin_convertvector(__a, __v2f32);
90410b57cec5SDimitry Andric }
90420b57cec5SDimitry Andric 
90430b57cec5SDimitry Andric /*-- vec_ctd ----------------------------------------------------------------*/
90440b57cec5SDimitry Andric 
90450b57cec5SDimitry Andric // This prototype is deprecated.
90465ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
90475ffd83dbSDimitry Andric vec_ctd(__vector signed long long __a, int __b)
90480b57cec5SDimitry Andric   __constant_range(__b, 0, 31) {
90495ffd83dbSDimitry Andric   __vector double __conv = __builtin_convertvector(__a, __vector double);
90505ffd83dbSDimitry Andric   __conv *= ((__vector double)(__vector unsigned long long)
90515ffd83dbSDimitry Andric              ((0x3ffULL - __b) << 52));
90520b57cec5SDimitry Andric   return __conv;
90530b57cec5SDimitry Andric }
90540b57cec5SDimitry Andric 
90550b57cec5SDimitry Andric // This prototype is deprecated.
90565ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
90575ffd83dbSDimitry Andric vec_ctd(__vector unsigned long long __a, int __b)
90580b57cec5SDimitry Andric   __constant_range(__b, 0, 31) {
90595ffd83dbSDimitry Andric   __vector double __conv = __builtin_convertvector(__a, __vector double);
90605ffd83dbSDimitry Andric   __conv *= ((__vector double)(__vector unsigned long long)
90615ffd83dbSDimitry Andric              ((0x3ffULL - __b) << 52));
90620b57cec5SDimitry Andric   return __conv;
90630b57cec5SDimitry Andric }
90640b57cec5SDimitry Andric 
90650b57cec5SDimitry Andric /*-- vec_ctsl ---------------------------------------------------------------*/
90660b57cec5SDimitry Andric 
90670b57cec5SDimitry Andric // This prototype is deprecated.
90685ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
90695ffd83dbSDimitry Andric vec_ctsl(__vector double __a, int __b)
90700b57cec5SDimitry Andric   __constant_range(__b, 0, 31) {
90715ffd83dbSDimitry Andric   __a *= ((__vector double)(__vector unsigned long long)
90725ffd83dbSDimitry Andric           ((0x3ffULL + __b) << 52));
90735ffd83dbSDimitry Andric   return __builtin_convertvector(__a, __vector signed long long);
90740b57cec5SDimitry Andric }
90750b57cec5SDimitry Andric 
90760b57cec5SDimitry Andric /*-- vec_ctul ---------------------------------------------------------------*/
90770b57cec5SDimitry Andric 
90780b57cec5SDimitry Andric // This prototype is deprecated.
90795ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
90805ffd83dbSDimitry Andric vec_ctul(__vector double __a, int __b)
90810b57cec5SDimitry Andric   __constant_range(__b, 0, 31) {
90825ffd83dbSDimitry Andric   __a *= ((__vector double)(__vector unsigned long long)
90835ffd83dbSDimitry Andric           ((0x3ffULL + __b) << 52));
90845ffd83dbSDimitry Andric   return __builtin_convertvector(__a, __vector unsigned long long);
90850b57cec5SDimitry Andric }
90860b57cec5SDimitry Andric 
90870b57cec5SDimitry Andric /*-- vec_doublee ------------------------------------------------------------*/
90880b57cec5SDimitry Andric 
90890b57cec5SDimitry Andric #if __ARCH__ >= 12
90905ffd83dbSDimitry Andric static inline __ATTRS_ai __vector double
90915ffd83dbSDimitry Andric vec_doublee(__vector float __a) {
90920b57cec5SDimitry Andric   typedef float __v2f32 __attribute__((__vector_size__(8)));
90930b57cec5SDimitry Andric   __v2f32 __pack = __builtin_shufflevector(__a, __a, 0, 2);
90945ffd83dbSDimitry Andric   return __builtin_convertvector(__pack, __vector double);
90950b57cec5SDimitry Andric }
90960b57cec5SDimitry Andric #endif
90970b57cec5SDimitry Andric 
90980b57cec5SDimitry Andric /*-- vec_floate -------------------------------------------------------------*/
90990b57cec5SDimitry Andric 
91000b57cec5SDimitry Andric #if __ARCH__ >= 12
91015ffd83dbSDimitry Andric static inline __ATTRS_ai __vector float
91025ffd83dbSDimitry Andric vec_floate(__vector double __a) {
91030b57cec5SDimitry Andric   typedef float __v2f32 __attribute__((__vector_size__(8)));
91040b57cec5SDimitry Andric   __v2f32 __pack = __builtin_convertvector(__a, __v2f32);
91050b57cec5SDimitry Andric   return __builtin_shufflevector(__pack, __pack, 0, -1, 1, -1);
91060b57cec5SDimitry Andric }
91070b57cec5SDimitry Andric #endif
91080b57cec5SDimitry Andric 
91090b57cec5SDimitry Andric /*-- vec_double -------------------------------------------------------------*/
91100b57cec5SDimitry Andric 
91115ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
91125ffd83dbSDimitry Andric vec_double(__vector signed long long __a) {
91135ffd83dbSDimitry Andric   return __builtin_convertvector(__a, __vector double);
91140b57cec5SDimitry Andric }
91150b57cec5SDimitry Andric 
91165ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
91175ffd83dbSDimitry Andric vec_double(__vector unsigned long long __a) {
91185ffd83dbSDimitry Andric   return __builtin_convertvector(__a, __vector double);
91190b57cec5SDimitry Andric }
91200b57cec5SDimitry Andric 
91210b57cec5SDimitry Andric /*-- vec_float --------------------------------------------------------------*/
91220b57cec5SDimitry Andric 
91230b57cec5SDimitry Andric #if __ARCH__ >= 13
91240b57cec5SDimitry Andric 
91255ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
91265ffd83dbSDimitry Andric vec_float(__vector signed int __a) {
91275ffd83dbSDimitry Andric   return __builtin_convertvector(__a, __vector float);
91280b57cec5SDimitry Andric }
91290b57cec5SDimitry Andric 
91305ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
91315ffd83dbSDimitry Andric vec_float(__vector unsigned int __a) {
91325ffd83dbSDimitry Andric   return __builtin_convertvector(__a, __vector float);
91330b57cec5SDimitry Andric }
91340b57cec5SDimitry Andric 
91350b57cec5SDimitry Andric #endif
91360b57cec5SDimitry Andric 
91370b57cec5SDimitry Andric /*-- vec_signed -------------------------------------------------------------*/
91380b57cec5SDimitry Andric 
91395ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed long long
91405ffd83dbSDimitry Andric vec_signed(__vector double __a) {
91415ffd83dbSDimitry Andric   return __builtin_convertvector(__a, __vector signed long long);
91420b57cec5SDimitry Andric }
91430b57cec5SDimitry Andric 
91440b57cec5SDimitry Andric #if __ARCH__ >= 13
91455ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
91465ffd83dbSDimitry Andric vec_signed(__vector float __a) {
91475ffd83dbSDimitry Andric   return __builtin_convertvector(__a, __vector signed int);
91480b57cec5SDimitry Andric }
91490b57cec5SDimitry Andric #endif
91500b57cec5SDimitry Andric 
91510b57cec5SDimitry Andric /*-- vec_unsigned -----------------------------------------------------------*/
91520b57cec5SDimitry Andric 
91535ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned long long
91545ffd83dbSDimitry Andric vec_unsigned(__vector double __a) {
91555ffd83dbSDimitry Andric   return __builtin_convertvector(__a, __vector unsigned long long);
91560b57cec5SDimitry Andric }
91570b57cec5SDimitry Andric 
91580b57cec5SDimitry Andric #if __ARCH__ >= 13
91595ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
91605ffd83dbSDimitry Andric vec_unsigned(__vector float __a) {
91615ffd83dbSDimitry Andric   return __builtin_convertvector(__a, __vector unsigned int);
91620b57cec5SDimitry Andric }
91630b57cec5SDimitry Andric #endif
91640b57cec5SDimitry Andric 
91650b57cec5SDimitry Andric /*-- vec_roundp -------------------------------------------------------------*/
91660b57cec5SDimitry Andric 
91670b57cec5SDimitry Andric #if __ARCH__ >= 12
91685ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
91695ffd83dbSDimitry Andric vec_roundp(__vector float __a) {
91700b57cec5SDimitry Andric   return __builtin_s390_vfisb(__a, 4, 6);
91710b57cec5SDimitry Andric }
91720b57cec5SDimitry Andric #endif
91730b57cec5SDimitry Andric 
91745ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
91755ffd83dbSDimitry Andric vec_roundp(__vector double __a) {
91760b57cec5SDimitry Andric   return __builtin_s390_vfidb(__a, 4, 6);
91770b57cec5SDimitry Andric }
91780b57cec5SDimitry Andric 
91790b57cec5SDimitry Andric /*-- vec_ceil ---------------------------------------------------------------*/
91800b57cec5SDimitry Andric 
91810b57cec5SDimitry Andric #if __ARCH__ >= 12
91825ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
91835ffd83dbSDimitry Andric vec_ceil(__vector float __a) {
91840b57cec5SDimitry Andric   // On this platform, vec_ceil never triggers the IEEE-inexact exception.
91850b57cec5SDimitry Andric   return __builtin_s390_vfisb(__a, 4, 6);
91860b57cec5SDimitry Andric }
91870b57cec5SDimitry Andric #endif
91880b57cec5SDimitry Andric 
91895ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
91905ffd83dbSDimitry Andric vec_ceil(__vector double __a) {
91910b57cec5SDimitry Andric   // On this platform, vec_ceil never triggers the IEEE-inexact exception.
91920b57cec5SDimitry Andric   return __builtin_s390_vfidb(__a, 4, 6);
91930b57cec5SDimitry Andric }
91940b57cec5SDimitry Andric 
91950b57cec5SDimitry Andric /*-- vec_roundm -------------------------------------------------------------*/
91960b57cec5SDimitry Andric 
91970b57cec5SDimitry Andric #if __ARCH__ >= 12
91985ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
91995ffd83dbSDimitry Andric vec_roundm(__vector float __a) {
92000b57cec5SDimitry Andric   return __builtin_s390_vfisb(__a, 4, 7);
92010b57cec5SDimitry Andric }
92020b57cec5SDimitry Andric #endif
92030b57cec5SDimitry Andric 
92045ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
92055ffd83dbSDimitry Andric vec_roundm(__vector double __a) {
92060b57cec5SDimitry Andric   return __builtin_s390_vfidb(__a, 4, 7);
92070b57cec5SDimitry Andric }
92080b57cec5SDimitry Andric 
92090b57cec5SDimitry Andric /*-- vec_floor --------------------------------------------------------------*/
92100b57cec5SDimitry Andric 
92110b57cec5SDimitry Andric #if __ARCH__ >= 12
92125ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
92135ffd83dbSDimitry Andric vec_floor(__vector float __a) {
92140b57cec5SDimitry Andric   // On this platform, vec_floor never triggers the IEEE-inexact exception.
92150b57cec5SDimitry Andric   return __builtin_s390_vfisb(__a, 4, 7);
92160b57cec5SDimitry Andric }
92170b57cec5SDimitry Andric #endif
92180b57cec5SDimitry Andric 
92195ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
92205ffd83dbSDimitry Andric vec_floor(__vector double __a) {
92210b57cec5SDimitry Andric   // On this platform, vec_floor never triggers the IEEE-inexact exception.
92220b57cec5SDimitry Andric   return __builtin_s390_vfidb(__a, 4, 7);
92230b57cec5SDimitry Andric }
92240b57cec5SDimitry Andric 
92250b57cec5SDimitry Andric /*-- vec_roundz -------------------------------------------------------------*/
92260b57cec5SDimitry Andric 
92270b57cec5SDimitry Andric #if __ARCH__ >= 12
92285ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
92295ffd83dbSDimitry Andric vec_roundz(__vector float __a) {
92300b57cec5SDimitry Andric   return __builtin_s390_vfisb(__a, 4, 5);
92310b57cec5SDimitry Andric }
92320b57cec5SDimitry Andric #endif
92330b57cec5SDimitry Andric 
92345ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
92355ffd83dbSDimitry Andric vec_roundz(__vector double __a) {
92360b57cec5SDimitry Andric   return __builtin_s390_vfidb(__a, 4, 5);
92370b57cec5SDimitry Andric }
92380b57cec5SDimitry Andric 
92390b57cec5SDimitry Andric /*-- vec_trunc --------------------------------------------------------------*/
92400b57cec5SDimitry Andric 
92410b57cec5SDimitry Andric #if __ARCH__ >= 12
92425ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
92435ffd83dbSDimitry Andric vec_trunc(__vector float __a) {
92440b57cec5SDimitry Andric   // On this platform, vec_trunc never triggers the IEEE-inexact exception.
92450b57cec5SDimitry Andric   return __builtin_s390_vfisb(__a, 4, 5);
92460b57cec5SDimitry Andric }
92470b57cec5SDimitry Andric #endif
92480b57cec5SDimitry Andric 
92495ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
92505ffd83dbSDimitry Andric vec_trunc(__vector double __a) {
92510b57cec5SDimitry Andric   // On this platform, vec_trunc never triggers the IEEE-inexact exception.
92520b57cec5SDimitry Andric   return __builtin_s390_vfidb(__a, 4, 5);
92530b57cec5SDimitry Andric }
92540b57cec5SDimitry Andric 
92550b57cec5SDimitry Andric /*-- vec_roundc -------------------------------------------------------------*/
92560b57cec5SDimitry Andric 
92570b57cec5SDimitry Andric #if __ARCH__ >= 12
92585ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
92595ffd83dbSDimitry Andric vec_roundc(__vector float __a) {
92600b57cec5SDimitry Andric   return __builtin_s390_vfisb(__a, 4, 0);
92610b57cec5SDimitry Andric }
92620b57cec5SDimitry Andric #endif
92630b57cec5SDimitry Andric 
92645ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
92655ffd83dbSDimitry Andric vec_roundc(__vector double __a) {
92660b57cec5SDimitry Andric   return __builtin_s390_vfidb(__a, 4, 0);
92670b57cec5SDimitry Andric }
92680b57cec5SDimitry Andric 
92690b57cec5SDimitry Andric /*-- vec_rint ---------------------------------------------------------------*/
92700b57cec5SDimitry Andric 
92710b57cec5SDimitry Andric #if __ARCH__ >= 12
92725ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
92735ffd83dbSDimitry Andric vec_rint(__vector float __a) {
92740b57cec5SDimitry Andric   // vec_rint may trigger the IEEE-inexact exception.
92750b57cec5SDimitry Andric   return __builtin_s390_vfisb(__a, 0, 0);
92760b57cec5SDimitry Andric }
92770b57cec5SDimitry Andric #endif
92780b57cec5SDimitry Andric 
92795ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
92805ffd83dbSDimitry Andric vec_rint(__vector double __a) {
92810b57cec5SDimitry Andric   // vec_rint may trigger the IEEE-inexact exception.
92820b57cec5SDimitry Andric   return __builtin_s390_vfidb(__a, 0, 0);
92830b57cec5SDimitry Andric }
92840b57cec5SDimitry Andric 
92850b57cec5SDimitry Andric /*-- vec_round --------------------------------------------------------------*/
92860b57cec5SDimitry Andric 
92870b57cec5SDimitry Andric #if __ARCH__ >= 12
92885ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector float
92895ffd83dbSDimitry Andric vec_round(__vector float __a) {
92900b57cec5SDimitry Andric   return __builtin_s390_vfisb(__a, 4, 4);
92910b57cec5SDimitry Andric }
92920b57cec5SDimitry Andric #endif
92930b57cec5SDimitry Andric 
92945ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector double
92955ffd83dbSDimitry Andric vec_round(__vector double __a) {
92960b57cec5SDimitry Andric   return __builtin_s390_vfidb(__a, 4, 4);
92970b57cec5SDimitry Andric }
92980b57cec5SDimitry Andric 
92990b57cec5SDimitry Andric /*-- vec_fp_test_data_class -------------------------------------------------*/
93000b57cec5SDimitry Andric 
93010b57cec5SDimitry Andric #if __ARCH__ >= 12
93025ffd83dbSDimitry Andric extern __ATTRS_o __vector __bool int
93035ffd83dbSDimitry Andric vec_fp_test_data_class(__vector float __a, int __b, int *__c)
93040b57cec5SDimitry Andric   __constant_range(__b, 0, 4095);
93050b57cec5SDimitry Andric 
93065ffd83dbSDimitry Andric extern __ATTRS_o __vector __bool long long
93075ffd83dbSDimitry Andric vec_fp_test_data_class(__vector double __a, int __b, int *__c)
93080b57cec5SDimitry Andric   __constant_range(__b, 0, 4095);
93090b57cec5SDimitry Andric 
93100b57cec5SDimitry Andric #define vec_fp_test_data_class(X, Y, Z) \
93110b57cec5SDimitry Andric   ((__typeof__((vec_fp_test_data_class)((X), (Y), (Z)))) \
93120b57cec5SDimitry Andric    __extension__ ({ \
93135ffd83dbSDimitry Andric      __vector unsigned char __res; \
93145ffd83dbSDimitry Andric      __vector unsigned char __x = (__vector unsigned char)(X); \
93150b57cec5SDimitry Andric      int *__z = (Z); \
93160b57cec5SDimitry Andric      switch (sizeof ((X)[0])) { \
93175ffd83dbSDimitry Andric      case 4:  __res = (__vector unsigned char) \
93185ffd83dbSDimitry Andric                       __builtin_s390_vftcisb((__vector float)__x, (Y), __z); \
93190b57cec5SDimitry Andric               break; \
93205ffd83dbSDimitry Andric      default: __res = (__vector unsigned char) \
93215ffd83dbSDimitry Andric                       __builtin_s390_vftcidb((__vector double)__x, (Y), __z); \
93220b57cec5SDimitry Andric               break; \
93230b57cec5SDimitry Andric      } __res; }))
93240b57cec5SDimitry Andric #else
93250b57cec5SDimitry Andric #define vec_fp_test_data_class(X, Y, Z) \
93265ffd83dbSDimitry Andric   ((__vector __bool long long)__builtin_s390_vftcidb((X), (Y), (Z)))
93270b57cec5SDimitry Andric #endif
93280b57cec5SDimitry Andric 
93290b57cec5SDimitry Andric #define __VEC_CLASS_FP_ZERO_P (1 << 11)
93300b57cec5SDimitry Andric #define __VEC_CLASS_FP_ZERO_N (1 << 10)
93310b57cec5SDimitry Andric #define __VEC_CLASS_FP_ZERO (__VEC_CLASS_FP_ZERO_P | __VEC_CLASS_FP_ZERO_N)
93320b57cec5SDimitry Andric #define __VEC_CLASS_FP_NORMAL_P (1 << 9)
93330b57cec5SDimitry Andric #define __VEC_CLASS_FP_NORMAL_N (1 << 8)
93340b57cec5SDimitry Andric #define __VEC_CLASS_FP_NORMAL (__VEC_CLASS_FP_NORMAL_P | \
93350b57cec5SDimitry Andric                                __VEC_CLASS_FP_NORMAL_N)
93360b57cec5SDimitry Andric #define __VEC_CLASS_FP_SUBNORMAL_P (1 << 7)
93370b57cec5SDimitry Andric #define __VEC_CLASS_FP_SUBNORMAL_N (1 << 6)
93380b57cec5SDimitry Andric #define __VEC_CLASS_FP_SUBNORMAL (__VEC_CLASS_FP_SUBNORMAL_P | \
93390b57cec5SDimitry Andric                                   __VEC_CLASS_FP_SUBNORMAL_N)
93400b57cec5SDimitry Andric #define __VEC_CLASS_FP_INFINITY_P (1 << 5)
93410b57cec5SDimitry Andric #define __VEC_CLASS_FP_INFINITY_N (1 << 4)
93420b57cec5SDimitry Andric #define __VEC_CLASS_FP_INFINITY (__VEC_CLASS_FP_INFINITY_P | \
93430b57cec5SDimitry Andric                                  __VEC_CLASS_FP_INFINITY_N)
93440b57cec5SDimitry Andric #define __VEC_CLASS_FP_QNAN_P (1 << 3)
93450b57cec5SDimitry Andric #define __VEC_CLASS_FP_QNAN_N (1 << 2)
93460b57cec5SDimitry Andric #define __VEC_CLASS_FP_QNAN (__VEC_CLASS_FP_QNAN_P | __VEC_CLASS_FP_QNAN_N)
93470b57cec5SDimitry Andric #define __VEC_CLASS_FP_SNAN_P (1 << 1)
93480b57cec5SDimitry Andric #define __VEC_CLASS_FP_SNAN_N (1 << 0)
93490b57cec5SDimitry Andric #define __VEC_CLASS_FP_SNAN (__VEC_CLASS_FP_SNAN_P | __VEC_CLASS_FP_SNAN_N)
93500b57cec5SDimitry Andric #define __VEC_CLASS_FP_NAN (__VEC_CLASS_FP_QNAN | __VEC_CLASS_FP_SNAN)
93510b57cec5SDimitry Andric #define __VEC_CLASS_FP_NOT_NORMAL (__VEC_CLASS_FP_NAN | \
93520b57cec5SDimitry Andric                                    __VEC_CLASS_FP_SUBNORMAL | \
93530b57cec5SDimitry Andric                                    __VEC_CLASS_FP_ZERO | \
93540b57cec5SDimitry Andric                                    __VEC_CLASS_FP_INFINITY)
93550b57cec5SDimitry Andric 
9356*fe6060f1SDimitry Andric /*-- vec_extend_to_fp32_hi --------------------------------------------------*/
9357*fe6060f1SDimitry Andric 
9358*fe6060f1SDimitry Andric #if __ARCH__ >= 14
9359*fe6060f1SDimitry Andric #define vec_extend_to_fp32_hi(X, W) \
9360*fe6060f1SDimitry Andric   ((__vector float)__builtin_s390_vclfnhs((X), (W)));
9361*fe6060f1SDimitry Andric #endif
9362*fe6060f1SDimitry Andric 
9363*fe6060f1SDimitry Andric /*-- vec_extend_to_fp32_hi --------------------------------------------------*/
9364*fe6060f1SDimitry Andric 
9365*fe6060f1SDimitry Andric #if __ARCH__ >= 14
9366*fe6060f1SDimitry Andric #define vec_extend_to_fp32_lo(X, W) \
9367*fe6060f1SDimitry Andric   ((__vector float)__builtin_s390_vclfnls((X), (W)));
9368*fe6060f1SDimitry Andric #endif
9369*fe6060f1SDimitry Andric 
9370*fe6060f1SDimitry Andric /*-- vec_round_from_fp32 ----------------------------------------------------*/
9371*fe6060f1SDimitry Andric 
9372*fe6060f1SDimitry Andric #if __ARCH__ >= 14
9373*fe6060f1SDimitry Andric #define vec_round_from_fp32(X, Y, W) \
9374*fe6060f1SDimitry Andric   ((__vector unsigned short)__builtin_s390_vcrnfs((X), (Y), (W)));
9375*fe6060f1SDimitry Andric #endif
9376*fe6060f1SDimitry Andric 
9377*fe6060f1SDimitry Andric /*-- vec_convert_to_fp16 ----------------------------------------------------*/
9378*fe6060f1SDimitry Andric 
9379*fe6060f1SDimitry Andric #if __ARCH__ >= 14
9380*fe6060f1SDimitry Andric #define vec_convert_to_fp16(X, W) \
9381*fe6060f1SDimitry Andric   ((__vector unsigned short)__builtin_s390_vcfn((X), (W)));
9382*fe6060f1SDimitry Andric #endif
9383*fe6060f1SDimitry Andric 
9384*fe6060f1SDimitry Andric /*-- vec_convert_from_fp16 --------------------------------------------------*/
9385*fe6060f1SDimitry Andric 
9386*fe6060f1SDimitry Andric #if __ARCH__ >= 14
9387*fe6060f1SDimitry Andric #define vec_convert_from_fp16(X, W) \
9388*fe6060f1SDimitry Andric   ((__vector unsigned short)__builtin_s390_vcnf((X), (W)));
9389*fe6060f1SDimitry Andric #endif
9390*fe6060f1SDimitry Andric 
93910b57cec5SDimitry Andric /*-- vec_cp_until_zero ------------------------------------------------------*/
93920b57cec5SDimitry Andric 
93935ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
93945ffd83dbSDimitry Andric vec_cp_until_zero(__vector signed char __a) {
93955ffd83dbSDimitry Andric   return ((__vector signed char)
93965ffd83dbSDimitry Andric           __builtin_s390_vistrb((__vector unsigned char)__a));
93970b57cec5SDimitry Andric }
93980b57cec5SDimitry Andric 
93995ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
94005ffd83dbSDimitry Andric vec_cp_until_zero(__vector __bool char __a) {
94015ffd83dbSDimitry Andric   return ((__vector __bool char)
94025ffd83dbSDimitry Andric           __builtin_s390_vistrb((__vector unsigned char)__a));
94030b57cec5SDimitry Andric }
94040b57cec5SDimitry Andric 
94055ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
94065ffd83dbSDimitry Andric vec_cp_until_zero(__vector unsigned char __a) {
94070b57cec5SDimitry Andric   return __builtin_s390_vistrb(__a);
94080b57cec5SDimitry Andric }
94090b57cec5SDimitry Andric 
94105ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
94115ffd83dbSDimitry Andric vec_cp_until_zero(__vector signed short __a) {
94125ffd83dbSDimitry Andric   return ((__vector signed short)
94135ffd83dbSDimitry Andric           __builtin_s390_vistrh((__vector unsigned short)__a));
94140b57cec5SDimitry Andric }
94150b57cec5SDimitry Andric 
94165ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
94175ffd83dbSDimitry Andric vec_cp_until_zero(__vector __bool short __a) {
94185ffd83dbSDimitry Andric   return ((__vector __bool short)
94195ffd83dbSDimitry Andric           __builtin_s390_vistrh((__vector unsigned short)__a));
94200b57cec5SDimitry Andric }
94210b57cec5SDimitry Andric 
94225ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
94235ffd83dbSDimitry Andric vec_cp_until_zero(__vector unsigned short __a) {
94240b57cec5SDimitry Andric   return __builtin_s390_vistrh(__a);
94250b57cec5SDimitry Andric }
94260b57cec5SDimitry Andric 
94275ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
94285ffd83dbSDimitry Andric vec_cp_until_zero(__vector signed int __a) {
94295ffd83dbSDimitry Andric   return ((__vector signed int)
94305ffd83dbSDimitry Andric           __builtin_s390_vistrf((__vector unsigned int)__a));
94310b57cec5SDimitry Andric }
94320b57cec5SDimitry Andric 
94335ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
94345ffd83dbSDimitry Andric vec_cp_until_zero(__vector __bool int __a) {
94355ffd83dbSDimitry Andric   return ((__vector __bool int)
94365ffd83dbSDimitry Andric           __builtin_s390_vistrf((__vector unsigned int)__a));
94370b57cec5SDimitry Andric }
94380b57cec5SDimitry Andric 
94395ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
94405ffd83dbSDimitry Andric vec_cp_until_zero(__vector unsigned int __a) {
94410b57cec5SDimitry Andric   return __builtin_s390_vistrf(__a);
94420b57cec5SDimitry Andric }
94430b57cec5SDimitry Andric 
94440b57cec5SDimitry Andric /*-- vec_cp_until_zero_cc ---------------------------------------------------*/
94450b57cec5SDimitry Andric 
94465ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
94475ffd83dbSDimitry Andric vec_cp_until_zero_cc(__vector signed char __a, int *__cc) {
94485ffd83dbSDimitry Andric   return (__vector signed char)
94495ffd83dbSDimitry Andric     __builtin_s390_vistrbs((__vector unsigned char)__a, __cc);
94500b57cec5SDimitry Andric }
94510b57cec5SDimitry Andric 
94525ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
94535ffd83dbSDimitry Andric vec_cp_until_zero_cc(__vector __bool char __a, int *__cc) {
94545ffd83dbSDimitry Andric   return (__vector __bool char)
94555ffd83dbSDimitry Andric     __builtin_s390_vistrbs((__vector unsigned char)__a, __cc);
94560b57cec5SDimitry Andric }
94570b57cec5SDimitry Andric 
94585ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
94595ffd83dbSDimitry Andric vec_cp_until_zero_cc(__vector unsigned char __a, int *__cc) {
94600b57cec5SDimitry Andric   return __builtin_s390_vistrbs(__a, __cc);
94610b57cec5SDimitry Andric }
94620b57cec5SDimitry Andric 
94635ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
94645ffd83dbSDimitry Andric vec_cp_until_zero_cc(__vector signed short __a, int *__cc) {
94655ffd83dbSDimitry Andric   return (__vector signed short)
94665ffd83dbSDimitry Andric     __builtin_s390_vistrhs((__vector unsigned short)__a, __cc);
94670b57cec5SDimitry Andric }
94680b57cec5SDimitry Andric 
94695ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
94705ffd83dbSDimitry Andric vec_cp_until_zero_cc(__vector __bool short __a, int *__cc) {
94715ffd83dbSDimitry Andric   return (__vector __bool short)
94725ffd83dbSDimitry Andric     __builtin_s390_vistrhs((__vector unsigned short)__a, __cc);
94730b57cec5SDimitry Andric }
94740b57cec5SDimitry Andric 
94755ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
94765ffd83dbSDimitry Andric vec_cp_until_zero_cc(__vector unsigned short __a, int *__cc) {
94770b57cec5SDimitry Andric   return __builtin_s390_vistrhs(__a, __cc);
94780b57cec5SDimitry Andric }
94790b57cec5SDimitry Andric 
94805ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
94815ffd83dbSDimitry Andric vec_cp_until_zero_cc(__vector signed int __a, int *__cc) {
94825ffd83dbSDimitry Andric   return (__vector signed int)
94835ffd83dbSDimitry Andric     __builtin_s390_vistrfs((__vector unsigned int)__a, __cc);
94840b57cec5SDimitry Andric }
94850b57cec5SDimitry Andric 
94865ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
94875ffd83dbSDimitry Andric vec_cp_until_zero_cc(__vector __bool int __a, int *__cc) {
94885ffd83dbSDimitry Andric   return (__vector __bool int)
94895ffd83dbSDimitry Andric     __builtin_s390_vistrfs((__vector unsigned int)__a, __cc);
94900b57cec5SDimitry Andric }
94910b57cec5SDimitry Andric 
94925ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
94935ffd83dbSDimitry Andric vec_cp_until_zero_cc(__vector unsigned int __a, int *__cc) {
94940b57cec5SDimitry Andric   return __builtin_s390_vistrfs(__a, __cc);
94950b57cec5SDimitry Andric }
94960b57cec5SDimitry Andric 
94970b57cec5SDimitry Andric /*-- vec_cmpeq_idx ----------------------------------------------------------*/
94980b57cec5SDimitry Andric 
94995ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
95005ffd83dbSDimitry Andric vec_cmpeq_idx(__vector signed char __a, __vector signed char __b) {
95015ffd83dbSDimitry Andric   return (__vector signed char)
95025ffd83dbSDimitry Andric     __builtin_s390_vfeeb((__vector unsigned char)__a,
95035ffd83dbSDimitry Andric                          (__vector unsigned char)__b);
95040b57cec5SDimitry Andric }
95050b57cec5SDimitry Andric 
95065ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
95075ffd83dbSDimitry Andric vec_cmpeq_idx(__vector __bool char __a, __vector __bool char __b) {
95085ffd83dbSDimitry Andric   return __builtin_s390_vfeeb((__vector unsigned char)__a,
95095ffd83dbSDimitry Andric                               (__vector unsigned char)__b);
95100b57cec5SDimitry Andric }
95110b57cec5SDimitry Andric 
95125ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
95135ffd83dbSDimitry Andric vec_cmpeq_idx(__vector unsigned char __a, __vector unsigned char __b) {
95140b57cec5SDimitry Andric   return __builtin_s390_vfeeb(__a, __b);
95150b57cec5SDimitry Andric }
95160b57cec5SDimitry Andric 
95175ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
95185ffd83dbSDimitry Andric vec_cmpeq_idx(__vector signed short __a, __vector signed short __b) {
95195ffd83dbSDimitry Andric   return (__vector signed short)
95205ffd83dbSDimitry Andric     __builtin_s390_vfeeh((__vector unsigned short)__a,
95215ffd83dbSDimitry Andric                          (__vector unsigned short)__b);
95220b57cec5SDimitry Andric }
95230b57cec5SDimitry Andric 
95245ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
95255ffd83dbSDimitry Andric vec_cmpeq_idx(__vector __bool short __a, __vector __bool short __b) {
95265ffd83dbSDimitry Andric   return __builtin_s390_vfeeh((__vector unsigned short)__a,
95275ffd83dbSDimitry Andric                               (__vector unsigned short)__b);
95280b57cec5SDimitry Andric }
95290b57cec5SDimitry Andric 
95305ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
95315ffd83dbSDimitry Andric vec_cmpeq_idx(__vector unsigned short __a, __vector unsigned short __b) {
95320b57cec5SDimitry Andric   return __builtin_s390_vfeeh(__a, __b);
95330b57cec5SDimitry Andric }
95340b57cec5SDimitry Andric 
95355ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
95365ffd83dbSDimitry Andric vec_cmpeq_idx(__vector signed int __a, __vector signed int __b) {
95375ffd83dbSDimitry Andric   return (__vector signed int)
95385ffd83dbSDimitry Andric     __builtin_s390_vfeef((__vector unsigned int)__a,
95395ffd83dbSDimitry Andric                          (__vector unsigned int)__b);
95400b57cec5SDimitry Andric }
95410b57cec5SDimitry Andric 
95425ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
95435ffd83dbSDimitry Andric vec_cmpeq_idx(__vector __bool int __a, __vector __bool int __b) {
95445ffd83dbSDimitry Andric   return __builtin_s390_vfeef((__vector unsigned int)__a,
95455ffd83dbSDimitry Andric                               (__vector unsigned int)__b);
95460b57cec5SDimitry Andric }
95470b57cec5SDimitry Andric 
95485ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
95495ffd83dbSDimitry Andric vec_cmpeq_idx(__vector unsigned int __a, __vector unsigned int __b) {
95500b57cec5SDimitry Andric   return __builtin_s390_vfeef(__a, __b);
95510b57cec5SDimitry Andric }
95520b57cec5SDimitry Andric 
95530b57cec5SDimitry Andric /*-- vec_cmpeq_idx_cc -------------------------------------------------------*/
95540b57cec5SDimitry Andric 
95555ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
95565ffd83dbSDimitry Andric vec_cmpeq_idx_cc(__vector signed char __a, __vector signed char __b, int *__cc) {
95575ffd83dbSDimitry Andric   return (__vector signed char)
95585ffd83dbSDimitry Andric     __builtin_s390_vfeebs((__vector unsigned char)__a,
95595ffd83dbSDimitry Andric                           (__vector unsigned char)__b, __cc);
95600b57cec5SDimitry Andric }
95610b57cec5SDimitry Andric 
95625ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
95635ffd83dbSDimitry Andric vec_cmpeq_idx_cc(__vector __bool char __a, __vector __bool char __b, int *__cc) {
95645ffd83dbSDimitry Andric   return __builtin_s390_vfeebs((__vector unsigned char)__a,
95655ffd83dbSDimitry Andric                                (__vector unsigned char)__b, __cc);
95660b57cec5SDimitry Andric }
95670b57cec5SDimitry Andric 
95685ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
95695ffd83dbSDimitry Andric vec_cmpeq_idx_cc(__vector unsigned char __a, __vector unsigned char __b,
95700b57cec5SDimitry Andric                  int *__cc) {
95710b57cec5SDimitry Andric   return __builtin_s390_vfeebs(__a, __b, __cc);
95720b57cec5SDimitry Andric }
95730b57cec5SDimitry Andric 
95745ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
95755ffd83dbSDimitry Andric vec_cmpeq_idx_cc(__vector signed short __a, __vector signed short __b,
95765ffd83dbSDimitry Andric                  int *__cc) {
95775ffd83dbSDimitry Andric   return (__vector signed short)
95785ffd83dbSDimitry Andric     __builtin_s390_vfeehs((__vector unsigned short)__a,
95795ffd83dbSDimitry Andric                           (__vector unsigned short)__b, __cc);
95800b57cec5SDimitry Andric }
95810b57cec5SDimitry Andric 
95825ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
95835ffd83dbSDimitry Andric vec_cmpeq_idx_cc(__vector __bool short __a, __vector __bool short __b, int *__cc) {
95845ffd83dbSDimitry Andric   return __builtin_s390_vfeehs((__vector unsigned short)__a,
95855ffd83dbSDimitry Andric                                (__vector unsigned short)__b, __cc);
95860b57cec5SDimitry Andric }
95870b57cec5SDimitry Andric 
95885ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
95895ffd83dbSDimitry Andric vec_cmpeq_idx_cc(__vector unsigned short __a, __vector unsigned short __b,
95900b57cec5SDimitry Andric                  int *__cc) {
95910b57cec5SDimitry Andric   return __builtin_s390_vfeehs(__a, __b, __cc);
95920b57cec5SDimitry Andric }
95930b57cec5SDimitry Andric 
95945ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
95955ffd83dbSDimitry Andric vec_cmpeq_idx_cc(__vector signed int __a, __vector signed int __b, int *__cc) {
95965ffd83dbSDimitry Andric   return (__vector signed int)
95975ffd83dbSDimitry Andric     __builtin_s390_vfeefs((__vector unsigned int)__a,
95985ffd83dbSDimitry Andric                           (__vector unsigned int)__b, __cc);
95990b57cec5SDimitry Andric }
96000b57cec5SDimitry Andric 
96015ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
96025ffd83dbSDimitry Andric vec_cmpeq_idx_cc(__vector __bool int __a, __vector __bool int __b, int *__cc) {
96035ffd83dbSDimitry Andric   return __builtin_s390_vfeefs((__vector unsigned int)__a,
96045ffd83dbSDimitry Andric                                (__vector unsigned int)__b, __cc);
96050b57cec5SDimitry Andric }
96060b57cec5SDimitry Andric 
96075ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
96085ffd83dbSDimitry Andric vec_cmpeq_idx_cc(__vector unsigned int __a, __vector unsigned int __b,
96095ffd83dbSDimitry Andric                  int *__cc) {
96100b57cec5SDimitry Andric   return __builtin_s390_vfeefs(__a, __b, __cc);
96110b57cec5SDimitry Andric }
96120b57cec5SDimitry Andric 
96130b57cec5SDimitry Andric /*-- vec_cmpeq_or_0_idx -----------------------------------------------------*/
96140b57cec5SDimitry Andric 
96155ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
96165ffd83dbSDimitry Andric vec_cmpeq_or_0_idx(__vector signed char __a, __vector signed char __b) {
96175ffd83dbSDimitry Andric   return (__vector signed char)
96185ffd83dbSDimitry Andric     __builtin_s390_vfeezb((__vector unsigned char)__a,
96195ffd83dbSDimitry Andric                           (__vector unsigned char)__b);
96200b57cec5SDimitry Andric }
96210b57cec5SDimitry Andric 
96225ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
96235ffd83dbSDimitry Andric vec_cmpeq_or_0_idx(__vector __bool char __a, __vector __bool char __b) {
96245ffd83dbSDimitry Andric   return __builtin_s390_vfeezb((__vector unsigned char)__a,
96255ffd83dbSDimitry Andric                                (__vector unsigned char)__b);
96260b57cec5SDimitry Andric }
96270b57cec5SDimitry Andric 
96285ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
96295ffd83dbSDimitry Andric vec_cmpeq_or_0_idx(__vector unsigned char __a, __vector unsigned char __b) {
96300b57cec5SDimitry Andric   return __builtin_s390_vfeezb(__a, __b);
96310b57cec5SDimitry Andric }
96320b57cec5SDimitry Andric 
96335ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
96345ffd83dbSDimitry Andric vec_cmpeq_or_0_idx(__vector signed short __a, __vector signed short __b) {
96355ffd83dbSDimitry Andric   return (__vector signed short)
96365ffd83dbSDimitry Andric     __builtin_s390_vfeezh((__vector unsigned short)__a,
96375ffd83dbSDimitry Andric                           (__vector unsigned short)__b);
96380b57cec5SDimitry Andric }
96390b57cec5SDimitry Andric 
96405ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
96415ffd83dbSDimitry Andric vec_cmpeq_or_0_idx(__vector __bool short __a, __vector __bool short __b) {
96425ffd83dbSDimitry Andric   return __builtin_s390_vfeezh((__vector unsigned short)__a,
96435ffd83dbSDimitry Andric                                (__vector unsigned short)__b);
96440b57cec5SDimitry Andric }
96450b57cec5SDimitry Andric 
96465ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
96475ffd83dbSDimitry Andric vec_cmpeq_or_0_idx(__vector unsigned short __a, __vector unsigned short __b) {
96480b57cec5SDimitry Andric   return __builtin_s390_vfeezh(__a, __b);
96490b57cec5SDimitry Andric }
96500b57cec5SDimitry Andric 
96515ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
96525ffd83dbSDimitry Andric vec_cmpeq_or_0_idx(__vector signed int __a, __vector signed int __b) {
96535ffd83dbSDimitry Andric   return (__vector signed int)
96545ffd83dbSDimitry Andric     __builtin_s390_vfeezf((__vector unsigned int)__a,
96555ffd83dbSDimitry Andric                           (__vector unsigned int)__b);
96560b57cec5SDimitry Andric }
96570b57cec5SDimitry Andric 
96585ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
96595ffd83dbSDimitry Andric vec_cmpeq_or_0_idx(__vector __bool int __a, __vector __bool int __b) {
96605ffd83dbSDimitry Andric   return __builtin_s390_vfeezf((__vector unsigned int)__a,
96615ffd83dbSDimitry Andric                                (__vector unsigned int)__b);
96620b57cec5SDimitry Andric }
96630b57cec5SDimitry Andric 
96645ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
96655ffd83dbSDimitry Andric vec_cmpeq_or_0_idx(__vector unsigned int __a, __vector unsigned int __b) {
96660b57cec5SDimitry Andric   return __builtin_s390_vfeezf(__a, __b);
96670b57cec5SDimitry Andric }
96680b57cec5SDimitry Andric 
96690b57cec5SDimitry Andric /*-- vec_cmpeq_or_0_idx_cc --------------------------------------------------*/
96700b57cec5SDimitry Andric 
96715ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
96725ffd83dbSDimitry Andric vec_cmpeq_or_0_idx_cc(__vector signed char __a, __vector signed char __b,
96730b57cec5SDimitry Andric                       int *__cc) {
96745ffd83dbSDimitry Andric   return (__vector signed char)
96755ffd83dbSDimitry Andric     __builtin_s390_vfeezbs((__vector unsigned char)__a,
96765ffd83dbSDimitry Andric                            (__vector unsigned char)__b, __cc);
96770b57cec5SDimitry Andric }
96780b57cec5SDimitry Andric 
96795ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
96805ffd83dbSDimitry Andric vec_cmpeq_or_0_idx_cc(__vector __bool char __a, __vector __bool char __b,
96815ffd83dbSDimitry Andric                       int *__cc) {
96825ffd83dbSDimitry Andric   return __builtin_s390_vfeezbs((__vector unsigned char)__a,
96835ffd83dbSDimitry Andric                                 (__vector unsigned char)__b, __cc);
96840b57cec5SDimitry Andric }
96850b57cec5SDimitry Andric 
96865ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
96875ffd83dbSDimitry Andric vec_cmpeq_or_0_idx_cc(__vector unsigned char __a, __vector unsigned char __b,
96880b57cec5SDimitry Andric                       int *__cc) {
96890b57cec5SDimitry Andric   return __builtin_s390_vfeezbs(__a, __b, __cc);
96900b57cec5SDimitry Andric }
96910b57cec5SDimitry Andric 
96925ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
96935ffd83dbSDimitry Andric vec_cmpeq_or_0_idx_cc(__vector signed short __a, __vector signed short __b,
96940b57cec5SDimitry Andric                       int *__cc) {
96955ffd83dbSDimitry Andric   return (__vector signed short)
96965ffd83dbSDimitry Andric     __builtin_s390_vfeezhs((__vector unsigned short)__a,
96975ffd83dbSDimitry Andric                            (__vector unsigned short)__b, __cc);
96980b57cec5SDimitry Andric }
96990b57cec5SDimitry Andric 
97005ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
97015ffd83dbSDimitry Andric vec_cmpeq_or_0_idx_cc(__vector __bool short __a, __vector __bool short __b,
97025ffd83dbSDimitry Andric                       int *__cc) {
97035ffd83dbSDimitry Andric   return __builtin_s390_vfeezhs((__vector unsigned short)__a,
97045ffd83dbSDimitry Andric                                 (__vector unsigned short)__b, __cc);
97050b57cec5SDimitry Andric }
97060b57cec5SDimitry Andric 
97075ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
97085ffd83dbSDimitry Andric vec_cmpeq_or_0_idx_cc(__vector unsigned short __a, __vector unsigned short __b,
97090b57cec5SDimitry Andric                       int *__cc) {
97100b57cec5SDimitry Andric   return __builtin_s390_vfeezhs(__a, __b, __cc);
97110b57cec5SDimitry Andric }
97120b57cec5SDimitry Andric 
97135ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
97145ffd83dbSDimitry Andric vec_cmpeq_or_0_idx_cc(__vector signed int __a, __vector signed int __b,
97155ffd83dbSDimitry Andric                       int *__cc) {
97165ffd83dbSDimitry Andric   return (__vector signed int)
97175ffd83dbSDimitry Andric     __builtin_s390_vfeezfs((__vector unsigned int)__a,
97185ffd83dbSDimitry Andric                            (__vector unsigned int)__b, __cc);
97190b57cec5SDimitry Andric }
97200b57cec5SDimitry Andric 
97215ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
97225ffd83dbSDimitry Andric vec_cmpeq_or_0_idx_cc(__vector __bool int __a, __vector __bool int __b,
97235ffd83dbSDimitry Andric                       int *__cc) {
97245ffd83dbSDimitry Andric   return __builtin_s390_vfeezfs((__vector unsigned int)__a,
97255ffd83dbSDimitry Andric                                 (__vector unsigned int)__b, __cc);
97260b57cec5SDimitry Andric }
97270b57cec5SDimitry Andric 
97285ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
97295ffd83dbSDimitry Andric vec_cmpeq_or_0_idx_cc(__vector unsigned int __a, __vector unsigned int __b,
97300b57cec5SDimitry Andric                       int *__cc) {
97310b57cec5SDimitry Andric   return __builtin_s390_vfeezfs(__a, __b, __cc);
97320b57cec5SDimitry Andric }
97330b57cec5SDimitry Andric 
97340b57cec5SDimitry Andric /*-- vec_cmpne_idx ----------------------------------------------------------*/
97350b57cec5SDimitry Andric 
97365ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
97375ffd83dbSDimitry Andric vec_cmpne_idx(__vector signed char __a, __vector signed char __b) {
97385ffd83dbSDimitry Andric   return (__vector signed char)
97395ffd83dbSDimitry Andric     __builtin_s390_vfeneb((__vector unsigned char)__a,
97405ffd83dbSDimitry Andric                           (__vector unsigned char)__b);
97410b57cec5SDimitry Andric }
97420b57cec5SDimitry Andric 
97435ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
97445ffd83dbSDimitry Andric vec_cmpne_idx(__vector __bool char __a, __vector __bool char __b) {
97455ffd83dbSDimitry Andric   return __builtin_s390_vfeneb((__vector unsigned char)__a,
97465ffd83dbSDimitry Andric                                (__vector unsigned char)__b);
97470b57cec5SDimitry Andric }
97480b57cec5SDimitry Andric 
97495ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
97505ffd83dbSDimitry Andric vec_cmpne_idx(__vector unsigned char __a, __vector unsigned char __b) {
97510b57cec5SDimitry Andric   return __builtin_s390_vfeneb(__a, __b);
97520b57cec5SDimitry Andric }
97530b57cec5SDimitry Andric 
97545ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
97555ffd83dbSDimitry Andric vec_cmpne_idx(__vector signed short __a, __vector signed short __b) {
97565ffd83dbSDimitry Andric   return (__vector signed short)
97575ffd83dbSDimitry Andric     __builtin_s390_vfeneh((__vector unsigned short)__a,
97585ffd83dbSDimitry Andric                           (__vector unsigned short)__b);
97590b57cec5SDimitry Andric }
97600b57cec5SDimitry Andric 
97615ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
97625ffd83dbSDimitry Andric vec_cmpne_idx(__vector __bool short __a, __vector __bool short __b) {
97635ffd83dbSDimitry Andric   return __builtin_s390_vfeneh((__vector unsigned short)__a,
97645ffd83dbSDimitry Andric                                (__vector unsigned short)__b);
97650b57cec5SDimitry Andric }
97660b57cec5SDimitry Andric 
97675ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
97685ffd83dbSDimitry Andric vec_cmpne_idx(__vector unsigned short __a, __vector unsigned short __b) {
97690b57cec5SDimitry Andric   return __builtin_s390_vfeneh(__a, __b);
97700b57cec5SDimitry Andric }
97710b57cec5SDimitry Andric 
97725ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
97735ffd83dbSDimitry Andric vec_cmpne_idx(__vector signed int __a, __vector signed int __b) {
97745ffd83dbSDimitry Andric   return (__vector signed int)
97755ffd83dbSDimitry Andric     __builtin_s390_vfenef((__vector unsigned int)__a,
97765ffd83dbSDimitry Andric                           (__vector unsigned int)__b);
97770b57cec5SDimitry Andric }
97780b57cec5SDimitry Andric 
97795ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
97805ffd83dbSDimitry Andric vec_cmpne_idx(__vector __bool int __a, __vector __bool int __b) {
97815ffd83dbSDimitry Andric   return __builtin_s390_vfenef((__vector unsigned int)__a,
97825ffd83dbSDimitry Andric                                (__vector unsigned int)__b);
97830b57cec5SDimitry Andric }
97840b57cec5SDimitry Andric 
97855ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
97865ffd83dbSDimitry Andric vec_cmpne_idx(__vector unsigned int __a, __vector unsigned int __b) {
97870b57cec5SDimitry Andric   return __builtin_s390_vfenef(__a, __b);
97880b57cec5SDimitry Andric }
97890b57cec5SDimitry Andric 
97900b57cec5SDimitry Andric /*-- vec_cmpne_idx_cc -------------------------------------------------------*/
97910b57cec5SDimitry Andric 
97925ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
97935ffd83dbSDimitry Andric vec_cmpne_idx_cc(__vector signed char __a, __vector signed char __b, int *__cc) {
97945ffd83dbSDimitry Andric   return (__vector signed char)
97955ffd83dbSDimitry Andric     __builtin_s390_vfenebs((__vector unsigned char)__a,
97965ffd83dbSDimitry Andric                            (__vector unsigned char)__b, __cc);
97970b57cec5SDimitry Andric }
97980b57cec5SDimitry Andric 
97995ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
98005ffd83dbSDimitry Andric vec_cmpne_idx_cc(__vector __bool char __a, __vector __bool char __b, int *__cc) {
98015ffd83dbSDimitry Andric   return __builtin_s390_vfenebs((__vector unsigned char)__a,
98025ffd83dbSDimitry Andric                                 (__vector unsigned char)__b, __cc);
98030b57cec5SDimitry Andric }
98040b57cec5SDimitry Andric 
98055ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
98065ffd83dbSDimitry Andric vec_cmpne_idx_cc(__vector unsigned char __a, __vector unsigned char __b,
98070b57cec5SDimitry Andric                  int *__cc) {
98080b57cec5SDimitry Andric   return __builtin_s390_vfenebs(__a, __b, __cc);
98090b57cec5SDimitry Andric }
98100b57cec5SDimitry Andric 
98115ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
98125ffd83dbSDimitry Andric vec_cmpne_idx_cc(__vector signed short __a, __vector signed short __b,
98135ffd83dbSDimitry Andric                  int *__cc) {
98145ffd83dbSDimitry Andric   return (__vector signed short)
98155ffd83dbSDimitry Andric     __builtin_s390_vfenehs((__vector unsigned short)__a,
98165ffd83dbSDimitry Andric                            (__vector unsigned short)__b, __cc);
98170b57cec5SDimitry Andric }
98180b57cec5SDimitry Andric 
98195ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
98205ffd83dbSDimitry Andric vec_cmpne_idx_cc(__vector __bool short __a, __vector __bool short __b,
98215ffd83dbSDimitry Andric                  int *__cc) {
98225ffd83dbSDimitry Andric   return __builtin_s390_vfenehs((__vector unsigned short)__a,
98235ffd83dbSDimitry Andric                                 (__vector unsigned short)__b, __cc);
98240b57cec5SDimitry Andric }
98250b57cec5SDimitry Andric 
98265ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
98275ffd83dbSDimitry Andric vec_cmpne_idx_cc(__vector unsigned short __a, __vector unsigned short __b,
98280b57cec5SDimitry Andric                  int *__cc) {
98290b57cec5SDimitry Andric   return __builtin_s390_vfenehs(__a, __b, __cc);
98300b57cec5SDimitry Andric }
98310b57cec5SDimitry Andric 
98325ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
98335ffd83dbSDimitry Andric vec_cmpne_idx_cc(__vector signed int __a, __vector signed int __b, int *__cc) {
98345ffd83dbSDimitry Andric   return (__vector signed int)
98355ffd83dbSDimitry Andric     __builtin_s390_vfenefs((__vector unsigned int)__a,
98365ffd83dbSDimitry Andric                            (__vector unsigned int)__b, __cc);
98370b57cec5SDimitry Andric }
98380b57cec5SDimitry Andric 
98395ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
98405ffd83dbSDimitry Andric vec_cmpne_idx_cc(__vector __bool int __a, __vector __bool int __b, int *__cc) {
98415ffd83dbSDimitry Andric   return __builtin_s390_vfenefs((__vector unsigned int)__a,
98425ffd83dbSDimitry Andric                                 (__vector unsigned int)__b, __cc);
98430b57cec5SDimitry Andric }
98440b57cec5SDimitry Andric 
98455ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
98465ffd83dbSDimitry Andric vec_cmpne_idx_cc(__vector unsigned int __a, __vector unsigned int __b,
98475ffd83dbSDimitry Andric                  int *__cc) {
98480b57cec5SDimitry Andric   return __builtin_s390_vfenefs(__a, __b, __cc);
98490b57cec5SDimitry Andric }
98500b57cec5SDimitry Andric 
98510b57cec5SDimitry Andric /*-- vec_cmpne_or_0_idx -----------------------------------------------------*/
98520b57cec5SDimitry Andric 
98535ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
98545ffd83dbSDimitry Andric vec_cmpne_or_0_idx(__vector signed char __a, __vector signed char __b) {
98555ffd83dbSDimitry Andric   return (__vector signed char)
98565ffd83dbSDimitry Andric     __builtin_s390_vfenezb((__vector unsigned char)__a,
98575ffd83dbSDimitry Andric                            (__vector unsigned char)__b);
98580b57cec5SDimitry Andric }
98590b57cec5SDimitry Andric 
98605ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
98615ffd83dbSDimitry Andric vec_cmpne_or_0_idx(__vector __bool char __a, __vector __bool char __b) {
98625ffd83dbSDimitry Andric   return __builtin_s390_vfenezb((__vector unsigned char)__a,
98635ffd83dbSDimitry Andric                                 (__vector unsigned char)__b);
98640b57cec5SDimitry Andric }
98650b57cec5SDimitry Andric 
98665ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
98675ffd83dbSDimitry Andric vec_cmpne_or_0_idx(__vector unsigned char __a, __vector unsigned char __b) {
98680b57cec5SDimitry Andric   return __builtin_s390_vfenezb(__a, __b);
98690b57cec5SDimitry Andric }
98700b57cec5SDimitry Andric 
98715ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
98725ffd83dbSDimitry Andric vec_cmpne_or_0_idx(__vector signed short __a, __vector signed short __b) {
98735ffd83dbSDimitry Andric   return (__vector signed short)
98745ffd83dbSDimitry Andric     __builtin_s390_vfenezh((__vector unsigned short)__a,
98755ffd83dbSDimitry Andric                            (__vector unsigned short)__b);
98760b57cec5SDimitry Andric }
98770b57cec5SDimitry Andric 
98785ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
98795ffd83dbSDimitry Andric vec_cmpne_or_0_idx(__vector __bool short __a, __vector __bool short __b) {
98805ffd83dbSDimitry Andric   return __builtin_s390_vfenezh((__vector unsigned short)__a,
98815ffd83dbSDimitry Andric                                 (__vector unsigned short)__b);
98820b57cec5SDimitry Andric }
98830b57cec5SDimitry Andric 
98845ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
98855ffd83dbSDimitry Andric vec_cmpne_or_0_idx(__vector unsigned short __a, __vector unsigned short __b) {
98860b57cec5SDimitry Andric   return __builtin_s390_vfenezh(__a, __b);
98870b57cec5SDimitry Andric }
98880b57cec5SDimitry Andric 
98895ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
98905ffd83dbSDimitry Andric vec_cmpne_or_0_idx(__vector signed int __a, __vector signed int __b) {
98915ffd83dbSDimitry Andric   return (__vector signed int)
98925ffd83dbSDimitry Andric     __builtin_s390_vfenezf((__vector unsigned int)__a,
98935ffd83dbSDimitry Andric                            (__vector unsigned int)__b);
98940b57cec5SDimitry Andric }
98950b57cec5SDimitry Andric 
98965ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
98975ffd83dbSDimitry Andric vec_cmpne_or_0_idx(__vector __bool int __a, __vector __bool int __b) {
98985ffd83dbSDimitry Andric   return __builtin_s390_vfenezf((__vector unsigned int)__a,
98995ffd83dbSDimitry Andric                                 (__vector unsigned int)__b);
99000b57cec5SDimitry Andric }
99010b57cec5SDimitry Andric 
99025ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
99035ffd83dbSDimitry Andric vec_cmpne_or_0_idx(__vector unsigned int __a, __vector unsigned int __b) {
99040b57cec5SDimitry Andric   return __builtin_s390_vfenezf(__a, __b);
99050b57cec5SDimitry Andric }
99060b57cec5SDimitry Andric 
99070b57cec5SDimitry Andric /*-- vec_cmpne_or_0_idx_cc --------------------------------------------------*/
99080b57cec5SDimitry Andric 
99095ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
99105ffd83dbSDimitry Andric vec_cmpne_or_0_idx_cc(__vector signed char __a, __vector signed char __b,
99110b57cec5SDimitry Andric                       int *__cc) {
99125ffd83dbSDimitry Andric   return (__vector signed char)
99135ffd83dbSDimitry Andric     __builtin_s390_vfenezbs((__vector unsigned char)__a,
99145ffd83dbSDimitry Andric                             (__vector unsigned char)__b, __cc);
99150b57cec5SDimitry Andric }
99160b57cec5SDimitry Andric 
99175ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
99185ffd83dbSDimitry Andric vec_cmpne_or_0_idx_cc(__vector __bool char __a, __vector __bool char __b,
99195ffd83dbSDimitry Andric                       int *__cc) {
99205ffd83dbSDimitry Andric   return __builtin_s390_vfenezbs((__vector unsigned char)__a,
99215ffd83dbSDimitry Andric                                  (__vector unsigned char)__b, __cc);
99220b57cec5SDimitry Andric }
99230b57cec5SDimitry Andric 
99245ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
99255ffd83dbSDimitry Andric vec_cmpne_or_0_idx_cc(__vector unsigned char __a, __vector unsigned char __b,
99260b57cec5SDimitry Andric                       int *__cc) {
99270b57cec5SDimitry Andric   return __builtin_s390_vfenezbs(__a, __b, __cc);
99280b57cec5SDimitry Andric }
99290b57cec5SDimitry Andric 
99305ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
99315ffd83dbSDimitry Andric vec_cmpne_or_0_idx_cc(__vector signed short __a, __vector signed short __b,
99320b57cec5SDimitry Andric                       int *__cc) {
99335ffd83dbSDimitry Andric   return (__vector signed short)
99345ffd83dbSDimitry Andric     __builtin_s390_vfenezhs((__vector unsigned short)__a,
99355ffd83dbSDimitry Andric                             (__vector unsigned short)__b, __cc);
99360b57cec5SDimitry Andric }
99370b57cec5SDimitry Andric 
99385ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
99395ffd83dbSDimitry Andric vec_cmpne_or_0_idx_cc(__vector __bool short __a, __vector __bool short __b,
99405ffd83dbSDimitry Andric                       int *__cc) {
99415ffd83dbSDimitry Andric   return __builtin_s390_vfenezhs((__vector unsigned short)__a,
99425ffd83dbSDimitry Andric                                  (__vector unsigned short)__b, __cc);
99430b57cec5SDimitry Andric }
99440b57cec5SDimitry Andric 
99455ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
99465ffd83dbSDimitry Andric vec_cmpne_or_0_idx_cc(__vector unsigned short __a, __vector unsigned short __b,
99470b57cec5SDimitry Andric                       int *__cc) {
99480b57cec5SDimitry Andric   return __builtin_s390_vfenezhs(__a, __b, __cc);
99490b57cec5SDimitry Andric }
99500b57cec5SDimitry Andric 
99515ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
99525ffd83dbSDimitry Andric vec_cmpne_or_0_idx_cc(__vector signed int __a, __vector signed int __b,
99535ffd83dbSDimitry Andric                       int *__cc) {
99545ffd83dbSDimitry Andric   return (__vector signed int)
99555ffd83dbSDimitry Andric     __builtin_s390_vfenezfs((__vector unsigned int)__a,
99565ffd83dbSDimitry Andric                             (__vector unsigned int)__b, __cc);
99570b57cec5SDimitry Andric }
99580b57cec5SDimitry Andric 
99595ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
99605ffd83dbSDimitry Andric vec_cmpne_or_0_idx_cc(__vector __bool int __a, __vector __bool int __b,
99615ffd83dbSDimitry Andric                       int *__cc) {
99625ffd83dbSDimitry Andric   return __builtin_s390_vfenezfs((__vector unsigned int)__a,
99635ffd83dbSDimitry Andric                                  (__vector unsigned int)__b, __cc);
99640b57cec5SDimitry Andric }
99650b57cec5SDimitry Andric 
99665ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
99675ffd83dbSDimitry Andric vec_cmpne_or_0_idx_cc(__vector unsigned int __a, __vector unsigned int __b,
99680b57cec5SDimitry Andric                       int *__cc) {
99690b57cec5SDimitry Andric   return __builtin_s390_vfenezfs(__a, __b, __cc);
99700b57cec5SDimitry Andric }
99710b57cec5SDimitry Andric 
99720b57cec5SDimitry Andric /*-- vec_cmprg --------------------------------------------------------------*/
99730b57cec5SDimitry Andric 
99745ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
99755ffd83dbSDimitry Andric vec_cmprg(__vector unsigned char __a, __vector unsigned char __b,
99765ffd83dbSDimitry Andric           __vector unsigned char __c) {
99775ffd83dbSDimitry Andric   return (__vector __bool char)__builtin_s390_vstrcb(__a, __b, __c, 4);
99780b57cec5SDimitry Andric }
99790b57cec5SDimitry Andric 
99805ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
99815ffd83dbSDimitry Andric vec_cmprg(__vector unsigned short __a, __vector unsigned short __b,
99825ffd83dbSDimitry Andric           __vector unsigned short __c) {
99835ffd83dbSDimitry Andric   return (__vector __bool short)__builtin_s390_vstrch(__a, __b, __c, 4);
99840b57cec5SDimitry Andric }
99850b57cec5SDimitry Andric 
99865ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
99875ffd83dbSDimitry Andric vec_cmprg(__vector unsigned int __a, __vector unsigned int __b,
99885ffd83dbSDimitry Andric           __vector unsigned int __c) {
99895ffd83dbSDimitry Andric   return (__vector __bool int)__builtin_s390_vstrcf(__a, __b, __c, 4);
99900b57cec5SDimitry Andric }
99910b57cec5SDimitry Andric 
99920b57cec5SDimitry Andric /*-- vec_cmprg_cc -----------------------------------------------------------*/
99930b57cec5SDimitry Andric 
99945ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
99955ffd83dbSDimitry Andric vec_cmprg_cc(__vector unsigned char __a, __vector unsigned char __b,
99965ffd83dbSDimitry Andric              __vector unsigned char __c, int *__cc) {
99975ffd83dbSDimitry Andric   return (__vector __bool char)__builtin_s390_vstrcbs(__a, __b, __c, 4, __cc);
99980b57cec5SDimitry Andric }
99990b57cec5SDimitry Andric 
100005ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
100015ffd83dbSDimitry Andric vec_cmprg_cc(__vector unsigned short __a, __vector unsigned short __b,
100025ffd83dbSDimitry Andric              __vector unsigned short __c, int *__cc) {
100035ffd83dbSDimitry Andric   return (__vector __bool short)__builtin_s390_vstrchs(__a, __b, __c, 4, __cc);
100040b57cec5SDimitry Andric }
100050b57cec5SDimitry Andric 
100065ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
100075ffd83dbSDimitry Andric vec_cmprg_cc(__vector unsigned int __a, __vector unsigned int __b,
100085ffd83dbSDimitry Andric              __vector unsigned int __c, int *__cc) {
100095ffd83dbSDimitry Andric   return (__vector __bool int)__builtin_s390_vstrcfs(__a, __b, __c, 4, __cc);
100100b57cec5SDimitry Andric }
100110b57cec5SDimitry Andric 
100120b57cec5SDimitry Andric /*-- vec_cmprg_idx ----------------------------------------------------------*/
100130b57cec5SDimitry Andric 
100145ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
100155ffd83dbSDimitry Andric vec_cmprg_idx(__vector unsigned char __a, __vector unsigned char __b,
100165ffd83dbSDimitry Andric               __vector unsigned char __c) {
100170b57cec5SDimitry Andric   return __builtin_s390_vstrcb(__a, __b, __c, 0);
100180b57cec5SDimitry Andric }
100190b57cec5SDimitry Andric 
100205ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
100215ffd83dbSDimitry Andric vec_cmprg_idx(__vector unsigned short __a, __vector unsigned short __b,
100225ffd83dbSDimitry Andric               __vector unsigned short __c) {
100230b57cec5SDimitry Andric   return __builtin_s390_vstrch(__a, __b, __c, 0);
100240b57cec5SDimitry Andric }
100250b57cec5SDimitry Andric 
100265ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
100275ffd83dbSDimitry Andric vec_cmprg_idx(__vector unsigned int __a, __vector unsigned int __b,
100285ffd83dbSDimitry Andric               __vector unsigned int __c) {
100290b57cec5SDimitry Andric   return __builtin_s390_vstrcf(__a, __b, __c, 0);
100300b57cec5SDimitry Andric }
100310b57cec5SDimitry Andric 
100320b57cec5SDimitry Andric /*-- vec_cmprg_idx_cc -------------------------------------------------------*/
100330b57cec5SDimitry Andric 
100345ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
100355ffd83dbSDimitry Andric vec_cmprg_idx_cc(__vector unsigned char __a, __vector unsigned char __b,
100365ffd83dbSDimitry Andric                  __vector unsigned char __c, int *__cc) {
100370b57cec5SDimitry Andric   return __builtin_s390_vstrcbs(__a, __b, __c, 0, __cc);
100380b57cec5SDimitry Andric }
100390b57cec5SDimitry Andric 
100405ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
100415ffd83dbSDimitry Andric vec_cmprg_idx_cc(__vector unsigned short __a, __vector unsigned short __b,
100425ffd83dbSDimitry Andric                  __vector unsigned short __c, int *__cc) {
100430b57cec5SDimitry Andric   return __builtin_s390_vstrchs(__a, __b, __c, 0, __cc);
100440b57cec5SDimitry Andric }
100450b57cec5SDimitry Andric 
100465ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
100475ffd83dbSDimitry Andric vec_cmprg_idx_cc(__vector unsigned int __a, __vector unsigned int __b,
100485ffd83dbSDimitry Andric                  __vector unsigned int __c, int *__cc) {
100490b57cec5SDimitry Andric   return __builtin_s390_vstrcfs(__a, __b, __c, 0, __cc);
100500b57cec5SDimitry Andric }
100510b57cec5SDimitry Andric 
100520b57cec5SDimitry Andric /*-- vec_cmprg_or_0_idx -----------------------------------------------------*/
100530b57cec5SDimitry Andric 
100545ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
100555ffd83dbSDimitry Andric vec_cmprg_or_0_idx(__vector unsigned char __a, __vector unsigned char __b,
100565ffd83dbSDimitry Andric                    __vector unsigned char __c) {
100570b57cec5SDimitry Andric   return __builtin_s390_vstrczb(__a, __b, __c, 0);
100580b57cec5SDimitry Andric }
100590b57cec5SDimitry Andric 
100605ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
100615ffd83dbSDimitry Andric vec_cmprg_or_0_idx(__vector unsigned short __a, __vector unsigned short __b,
100625ffd83dbSDimitry Andric                    __vector unsigned short __c) {
100630b57cec5SDimitry Andric   return __builtin_s390_vstrczh(__a, __b, __c, 0);
100640b57cec5SDimitry Andric }
100650b57cec5SDimitry Andric 
100665ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
100675ffd83dbSDimitry Andric vec_cmprg_or_0_idx(__vector unsigned int __a, __vector unsigned int __b,
100685ffd83dbSDimitry Andric                    __vector unsigned int __c) {
100690b57cec5SDimitry Andric   return __builtin_s390_vstrczf(__a, __b, __c, 0);
100700b57cec5SDimitry Andric }
100710b57cec5SDimitry Andric 
100720b57cec5SDimitry Andric /*-- vec_cmprg_or_0_idx_cc --------------------------------------------------*/
100730b57cec5SDimitry Andric 
100745ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
100755ffd83dbSDimitry Andric vec_cmprg_or_0_idx_cc(__vector unsigned char __a, __vector unsigned char __b,
100765ffd83dbSDimitry Andric                       __vector unsigned char __c, int *__cc) {
100770b57cec5SDimitry Andric   return __builtin_s390_vstrczbs(__a, __b, __c, 0, __cc);
100780b57cec5SDimitry Andric }
100790b57cec5SDimitry Andric 
100805ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
100815ffd83dbSDimitry Andric vec_cmprg_or_0_idx_cc(__vector unsigned short __a, __vector unsigned short __b,
100825ffd83dbSDimitry Andric                       __vector unsigned short __c, int *__cc) {
100830b57cec5SDimitry Andric   return __builtin_s390_vstrczhs(__a, __b, __c, 0, __cc);
100840b57cec5SDimitry Andric }
100850b57cec5SDimitry Andric 
100865ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
100875ffd83dbSDimitry Andric vec_cmprg_or_0_idx_cc(__vector unsigned int __a, __vector unsigned int __b,
100885ffd83dbSDimitry Andric                       __vector unsigned int __c, int *__cc) {
100890b57cec5SDimitry Andric   return __builtin_s390_vstrczfs(__a, __b, __c, 0, __cc);
100900b57cec5SDimitry Andric }
100910b57cec5SDimitry Andric 
100920b57cec5SDimitry Andric /*-- vec_cmpnrg -------------------------------------------------------------*/
100930b57cec5SDimitry Andric 
100945ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
100955ffd83dbSDimitry Andric vec_cmpnrg(__vector unsigned char __a, __vector unsigned char __b,
100965ffd83dbSDimitry Andric            __vector unsigned char __c) {
100975ffd83dbSDimitry Andric   return (__vector __bool char)__builtin_s390_vstrcb(__a, __b, __c, 12);
100980b57cec5SDimitry Andric }
100990b57cec5SDimitry Andric 
101005ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
101015ffd83dbSDimitry Andric vec_cmpnrg(__vector unsigned short __a, __vector unsigned short __b,
101025ffd83dbSDimitry Andric            __vector unsigned short __c) {
101035ffd83dbSDimitry Andric   return (__vector __bool short)__builtin_s390_vstrch(__a, __b, __c, 12);
101040b57cec5SDimitry Andric }
101050b57cec5SDimitry Andric 
101065ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
101075ffd83dbSDimitry Andric vec_cmpnrg(__vector unsigned int __a, __vector unsigned int __b,
101085ffd83dbSDimitry Andric            __vector unsigned int __c) {
101095ffd83dbSDimitry Andric   return (__vector __bool int)__builtin_s390_vstrcf(__a, __b, __c, 12);
101100b57cec5SDimitry Andric }
101110b57cec5SDimitry Andric 
101120b57cec5SDimitry Andric /*-- vec_cmpnrg_cc ----------------------------------------------------------*/
101130b57cec5SDimitry Andric 
101145ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
101155ffd83dbSDimitry Andric vec_cmpnrg_cc(__vector unsigned char __a, __vector unsigned char __b,
101165ffd83dbSDimitry Andric               __vector unsigned char __c, int *__cc) {
101175ffd83dbSDimitry Andric   return (__vector __bool char)
101185ffd83dbSDimitry Andric     __builtin_s390_vstrcbs(__a, __b, __c, 12, __cc);
101190b57cec5SDimitry Andric }
101200b57cec5SDimitry Andric 
101215ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
101225ffd83dbSDimitry Andric vec_cmpnrg_cc(__vector unsigned short __a, __vector unsigned short __b,
101235ffd83dbSDimitry Andric               __vector unsigned short __c, int *__cc) {
101245ffd83dbSDimitry Andric   return (__vector __bool short)
101255ffd83dbSDimitry Andric     __builtin_s390_vstrchs(__a, __b, __c, 12, __cc);
101260b57cec5SDimitry Andric }
101270b57cec5SDimitry Andric 
101285ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
101295ffd83dbSDimitry Andric vec_cmpnrg_cc(__vector unsigned int __a, __vector unsigned int __b,
101305ffd83dbSDimitry Andric               __vector unsigned int __c, int *__cc) {
101315ffd83dbSDimitry Andric   return (__vector __bool int)
101325ffd83dbSDimitry Andric     __builtin_s390_vstrcfs(__a, __b, __c, 12, __cc);
101330b57cec5SDimitry Andric }
101340b57cec5SDimitry Andric 
101350b57cec5SDimitry Andric /*-- vec_cmpnrg_idx ---------------------------------------------------------*/
101360b57cec5SDimitry Andric 
101375ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
101385ffd83dbSDimitry Andric vec_cmpnrg_idx(__vector unsigned char __a, __vector unsigned char __b,
101395ffd83dbSDimitry Andric                __vector unsigned char __c) {
101400b57cec5SDimitry Andric   return __builtin_s390_vstrcb(__a, __b, __c, 8);
101410b57cec5SDimitry Andric }
101420b57cec5SDimitry Andric 
101435ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
101445ffd83dbSDimitry Andric vec_cmpnrg_idx(__vector unsigned short __a, __vector unsigned short __b,
101455ffd83dbSDimitry Andric                __vector unsigned short __c) {
101460b57cec5SDimitry Andric   return __builtin_s390_vstrch(__a, __b, __c, 8);
101470b57cec5SDimitry Andric }
101480b57cec5SDimitry Andric 
101495ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
101505ffd83dbSDimitry Andric vec_cmpnrg_idx(__vector unsigned int __a, __vector unsigned int __b,
101515ffd83dbSDimitry Andric                __vector unsigned int __c) {
101520b57cec5SDimitry Andric   return __builtin_s390_vstrcf(__a, __b, __c, 8);
101530b57cec5SDimitry Andric }
101540b57cec5SDimitry Andric 
101550b57cec5SDimitry Andric /*-- vec_cmpnrg_idx_cc ------------------------------------------------------*/
101560b57cec5SDimitry Andric 
101575ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
101585ffd83dbSDimitry Andric vec_cmpnrg_idx_cc(__vector unsigned char __a, __vector unsigned char __b,
101595ffd83dbSDimitry Andric                   __vector unsigned char __c, int *__cc) {
101600b57cec5SDimitry Andric   return __builtin_s390_vstrcbs(__a, __b, __c, 8, __cc);
101610b57cec5SDimitry Andric }
101620b57cec5SDimitry Andric 
101635ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
101645ffd83dbSDimitry Andric vec_cmpnrg_idx_cc(__vector unsigned short __a, __vector unsigned short __b,
101655ffd83dbSDimitry Andric                   __vector unsigned short __c, int *__cc) {
101660b57cec5SDimitry Andric   return __builtin_s390_vstrchs(__a, __b, __c, 8, __cc);
101670b57cec5SDimitry Andric }
101680b57cec5SDimitry Andric 
101695ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
101705ffd83dbSDimitry Andric vec_cmpnrg_idx_cc(__vector unsigned int __a, __vector unsigned int __b,
101715ffd83dbSDimitry Andric                   __vector unsigned int __c, int *__cc) {
101720b57cec5SDimitry Andric   return __builtin_s390_vstrcfs(__a, __b, __c, 8, __cc);
101730b57cec5SDimitry Andric }
101740b57cec5SDimitry Andric 
101750b57cec5SDimitry Andric /*-- vec_cmpnrg_or_0_idx ----------------------------------------------------*/
101760b57cec5SDimitry Andric 
101775ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
101785ffd83dbSDimitry Andric vec_cmpnrg_or_0_idx(__vector unsigned char __a, __vector unsigned char __b,
101795ffd83dbSDimitry Andric                     __vector unsigned char __c) {
101800b57cec5SDimitry Andric   return __builtin_s390_vstrczb(__a, __b, __c, 8);
101810b57cec5SDimitry Andric }
101820b57cec5SDimitry Andric 
101835ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
101845ffd83dbSDimitry Andric vec_cmpnrg_or_0_idx(__vector unsigned short __a, __vector unsigned short __b,
101855ffd83dbSDimitry Andric                     __vector unsigned short __c) {
101860b57cec5SDimitry Andric   return __builtin_s390_vstrczh(__a, __b, __c, 8);
101870b57cec5SDimitry Andric }
101880b57cec5SDimitry Andric 
101895ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
101905ffd83dbSDimitry Andric vec_cmpnrg_or_0_idx(__vector unsigned int __a, __vector unsigned int __b,
101915ffd83dbSDimitry Andric                     __vector unsigned int __c) {
101920b57cec5SDimitry Andric   return __builtin_s390_vstrczf(__a, __b, __c, 8);
101930b57cec5SDimitry Andric }
101940b57cec5SDimitry Andric 
101950b57cec5SDimitry Andric /*-- vec_cmpnrg_or_0_idx_cc -------------------------------------------------*/
101960b57cec5SDimitry Andric 
101975ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
101985ffd83dbSDimitry Andric vec_cmpnrg_or_0_idx_cc(__vector unsigned char __a,
101995ffd83dbSDimitry Andric                        __vector unsigned char __b,
102005ffd83dbSDimitry Andric                        __vector unsigned char __c, int *__cc) {
102010b57cec5SDimitry Andric   return __builtin_s390_vstrczbs(__a, __b, __c, 8, __cc);
102020b57cec5SDimitry Andric }
102030b57cec5SDimitry Andric 
102045ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
102055ffd83dbSDimitry Andric vec_cmpnrg_or_0_idx_cc(__vector unsigned short __a,
102065ffd83dbSDimitry Andric                        __vector unsigned short __b,
102075ffd83dbSDimitry Andric                        __vector unsigned short __c, int *__cc) {
102080b57cec5SDimitry Andric   return __builtin_s390_vstrczhs(__a, __b, __c, 8, __cc);
102090b57cec5SDimitry Andric }
102100b57cec5SDimitry Andric 
102115ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
102125ffd83dbSDimitry Andric vec_cmpnrg_or_0_idx_cc(__vector unsigned int __a,
102135ffd83dbSDimitry Andric                        __vector unsigned int __b,
102145ffd83dbSDimitry Andric                        __vector unsigned int __c, int *__cc) {
102150b57cec5SDimitry Andric   return __builtin_s390_vstrczfs(__a, __b, __c, 8, __cc);
102160b57cec5SDimitry Andric }
102170b57cec5SDimitry Andric 
102180b57cec5SDimitry Andric /*-- vec_find_any_eq --------------------------------------------------------*/
102190b57cec5SDimitry Andric 
102205ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
102215ffd83dbSDimitry Andric vec_find_any_eq(__vector signed char __a, __vector signed char __b) {
102225ffd83dbSDimitry Andric   return (__vector __bool char)
102235ffd83dbSDimitry Andric     __builtin_s390_vfaeb((__vector unsigned char)__a,
102245ffd83dbSDimitry Andric                          (__vector unsigned char)__b, 4);
102250b57cec5SDimitry Andric }
102260b57cec5SDimitry Andric 
102275ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
102285ffd83dbSDimitry Andric vec_find_any_eq(__vector __bool char __a, __vector __bool char __b) {
102295ffd83dbSDimitry Andric   return (__vector __bool char)
102305ffd83dbSDimitry Andric     __builtin_s390_vfaeb((__vector unsigned char)__a,
102315ffd83dbSDimitry Andric                          (__vector unsigned char)__b, 4);
102320b57cec5SDimitry Andric }
102330b57cec5SDimitry Andric 
102345ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
102355ffd83dbSDimitry Andric vec_find_any_eq(__vector unsigned char __a, __vector unsigned char __b) {
102365ffd83dbSDimitry Andric   return (__vector __bool char)__builtin_s390_vfaeb(__a, __b, 4);
102370b57cec5SDimitry Andric }
102380b57cec5SDimitry Andric 
102395ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
102405ffd83dbSDimitry Andric vec_find_any_eq(__vector signed short __a, __vector signed short __b) {
102415ffd83dbSDimitry Andric   return (__vector __bool short)
102425ffd83dbSDimitry Andric     __builtin_s390_vfaeh((__vector unsigned short)__a,
102435ffd83dbSDimitry Andric                          (__vector unsigned short)__b, 4);
102440b57cec5SDimitry Andric }
102450b57cec5SDimitry Andric 
102465ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
102475ffd83dbSDimitry Andric vec_find_any_eq(__vector __bool short __a, __vector __bool short __b) {
102485ffd83dbSDimitry Andric   return (__vector __bool short)
102495ffd83dbSDimitry Andric     __builtin_s390_vfaeh((__vector unsigned short)__a,
102505ffd83dbSDimitry Andric                          (__vector unsigned short)__b, 4);
102510b57cec5SDimitry Andric }
102520b57cec5SDimitry Andric 
102535ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
102545ffd83dbSDimitry Andric vec_find_any_eq(__vector unsigned short __a, __vector unsigned short __b) {
102555ffd83dbSDimitry Andric   return (__vector __bool short)__builtin_s390_vfaeh(__a, __b, 4);
102560b57cec5SDimitry Andric }
102570b57cec5SDimitry Andric 
102585ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
102595ffd83dbSDimitry Andric vec_find_any_eq(__vector signed int __a, __vector signed int __b) {
102605ffd83dbSDimitry Andric   return (__vector __bool int)
102615ffd83dbSDimitry Andric     __builtin_s390_vfaef((__vector unsigned int)__a,
102625ffd83dbSDimitry Andric                          (__vector unsigned int)__b, 4);
102630b57cec5SDimitry Andric }
102640b57cec5SDimitry Andric 
102655ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
102665ffd83dbSDimitry Andric vec_find_any_eq(__vector __bool int __a, __vector __bool int __b) {
102675ffd83dbSDimitry Andric   return (__vector __bool int)
102685ffd83dbSDimitry Andric     __builtin_s390_vfaef((__vector unsigned int)__a,
102695ffd83dbSDimitry Andric                          (__vector unsigned int)__b, 4);
102700b57cec5SDimitry Andric }
102710b57cec5SDimitry Andric 
102725ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
102735ffd83dbSDimitry Andric vec_find_any_eq(__vector unsigned int __a, __vector unsigned int __b) {
102745ffd83dbSDimitry Andric   return (__vector __bool int)__builtin_s390_vfaef(__a, __b, 4);
102750b57cec5SDimitry Andric }
102760b57cec5SDimitry Andric 
102770b57cec5SDimitry Andric /*-- vec_find_any_eq_cc -----------------------------------------------------*/
102780b57cec5SDimitry Andric 
102795ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
102805ffd83dbSDimitry Andric vec_find_any_eq_cc(__vector signed char __a, __vector signed char __b,
102810b57cec5SDimitry Andric                    int *__cc) {
102825ffd83dbSDimitry Andric   return (__vector __bool char)
102835ffd83dbSDimitry Andric     __builtin_s390_vfaebs((__vector unsigned char)__a,
102845ffd83dbSDimitry Andric                           (__vector unsigned char)__b, 4, __cc);
102850b57cec5SDimitry Andric }
102860b57cec5SDimitry Andric 
102875ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
102885ffd83dbSDimitry Andric vec_find_any_eq_cc(__vector __bool char __a, __vector __bool char __b,
102890b57cec5SDimitry Andric                    int *__cc) {
102905ffd83dbSDimitry Andric   return (__vector __bool char)
102915ffd83dbSDimitry Andric     __builtin_s390_vfaebs((__vector unsigned char)__a,
102925ffd83dbSDimitry Andric                           (__vector unsigned char)__b, 4, __cc);
102930b57cec5SDimitry Andric }
102940b57cec5SDimitry Andric 
102955ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
102965ffd83dbSDimitry Andric vec_find_any_eq_cc(__vector unsigned char __a, __vector unsigned char __b,
102970b57cec5SDimitry Andric                    int *__cc) {
102985ffd83dbSDimitry Andric   return (__vector __bool char)__builtin_s390_vfaebs(__a, __b, 4, __cc);
102990b57cec5SDimitry Andric }
103000b57cec5SDimitry Andric 
103015ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
103025ffd83dbSDimitry Andric vec_find_any_eq_cc(__vector signed short __a, __vector signed short __b,
103030b57cec5SDimitry Andric                    int *__cc) {
103045ffd83dbSDimitry Andric   return (__vector __bool short)
103055ffd83dbSDimitry Andric     __builtin_s390_vfaehs((__vector unsigned short)__a,
103065ffd83dbSDimitry Andric                           (__vector unsigned short)__b, 4, __cc);
103075ffd83dbSDimitry Andric }
103085ffd83dbSDimitry Andric 
103095ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
103105ffd83dbSDimitry Andric vec_find_any_eq_cc(__vector __bool short __a, __vector __bool short __b,
103115ffd83dbSDimitry Andric                    int *__cc) {
103125ffd83dbSDimitry Andric   return (__vector __bool short)
103135ffd83dbSDimitry Andric     __builtin_s390_vfaehs((__vector unsigned short)__a,
103145ffd83dbSDimitry Andric                           (__vector unsigned short)__b, 4, __cc);
103155ffd83dbSDimitry Andric }
103165ffd83dbSDimitry Andric 
103175ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
103185ffd83dbSDimitry Andric vec_find_any_eq_cc(__vector unsigned short __a, __vector unsigned short __b,
103195ffd83dbSDimitry Andric                    int *__cc) {
103205ffd83dbSDimitry Andric   return (__vector __bool short)__builtin_s390_vfaehs(__a, __b, 4, __cc);
103215ffd83dbSDimitry Andric }
103225ffd83dbSDimitry Andric 
103235ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
103245ffd83dbSDimitry Andric vec_find_any_eq_cc(__vector signed int __a, __vector signed int __b,
103255ffd83dbSDimitry Andric                    int *__cc) {
103265ffd83dbSDimitry Andric   return (__vector __bool int)
103275ffd83dbSDimitry Andric     __builtin_s390_vfaefs((__vector unsigned int)__a,
103285ffd83dbSDimitry Andric                           (__vector unsigned int)__b, 4, __cc);
103295ffd83dbSDimitry Andric }
103305ffd83dbSDimitry Andric 
103315ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
103325ffd83dbSDimitry Andric vec_find_any_eq_cc(__vector __bool int __a, __vector __bool int __b,
103335ffd83dbSDimitry Andric                    int *__cc) {
103345ffd83dbSDimitry Andric   return (__vector __bool int)
103355ffd83dbSDimitry Andric     __builtin_s390_vfaefs((__vector unsigned int)__a,
103365ffd83dbSDimitry Andric                           (__vector unsigned int)__b, 4, __cc);
103375ffd83dbSDimitry Andric }
103385ffd83dbSDimitry Andric 
103395ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
103405ffd83dbSDimitry Andric vec_find_any_eq_cc(__vector unsigned int __a, __vector unsigned int __b,
103415ffd83dbSDimitry Andric                    int *__cc) {
103425ffd83dbSDimitry Andric   return (__vector __bool int)__builtin_s390_vfaefs(__a, __b, 4, __cc);
103430b57cec5SDimitry Andric }
103440b57cec5SDimitry Andric 
103450b57cec5SDimitry Andric /*-- vec_find_any_eq_idx ----------------------------------------------------*/
103460b57cec5SDimitry Andric 
103475ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
103485ffd83dbSDimitry Andric vec_find_any_eq_idx(__vector signed char __a, __vector signed char __b) {
103495ffd83dbSDimitry Andric   return (__vector signed char)
103505ffd83dbSDimitry Andric     __builtin_s390_vfaeb((__vector unsigned char)__a,
103515ffd83dbSDimitry Andric                          (__vector unsigned char)__b, 0);
103520b57cec5SDimitry Andric }
103530b57cec5SDimitry Andric 
103545ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
103555ffd83dbSDimitry Andric vec_find_any_eq_idx(__vector __bool char __a, __vector __bool char __b) {
103565ffd83dbSDimitry Andric   return __builtin_s390_vfaeb((__vector unsigned char)__a,
103575ffd83dbSDimitry Andric                               (__vector unsigned char)__b, 0);
103580b57cec5SDimitry Andric }
103590b57cec5SDimitry Andric 
103605ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
103615ffd83dbSDimitry Andric vec_find_any_eq_idx(__vector unsigned char __a, __vector unsigned char __b) {
103620b57cec5SDimitry Andric   return __builtin_s390_vfaeb(__a, __b, 0);
103630b57cec5SDimitry Andric }
103640b57cec5SDimitry Andric 
103655ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
103665ffd83dbSDimitry Andric vec_find_any_eq_idx(__vector signed short __a, __vector signed short __b) {
103675ffd83dbSDimitry Andric   return (__vector signed short)
103685ffd83dbSDimitry Andric     __builtin_s390_vfaeh((__vector unsigned short)__a,
103695ffd83dbSDimitry Andric                          (__vector unsigned short)__b, 0);
103700b57cec5SDimitry Andric }
103710b57cec5SDimitry Andric 
103725ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
103735ffd83dbSDimitry Andric vec_find_any_eq_idx(__vector __bool short __a, __vector __bool short __b) {
103745ffd83dbSDimitry Andric   return __builtin_s390_vfaeh((__vector unsigned short)__a,
103755ffd83dbSDimitry Andric                               (__vector unsigned short)__b, 0);
103760b57cec5SDimitry Andric }
103770b57cec5SDimitry Andric 
103785ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
103795ffd83dbSDimitry Andric vec_find_any_eq_idx(__vector unsigned short __a, __vector unsigned short __b) {
103800b57cec5SDimitry Andric   return __builtin_s390_vfaeh(__a, __b, 0);
103810b57cec5SDimitry Andric }
103820b57cec5SDimitry Andric 
103835ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
103845ffd83dbSDimitry Andric vec_find_any_eq_idx(__vector signed int __a, __vector signed int __b) {
103855ffd83dbSDimitry Andric   return (__vector signed int)
103865ffd83dbSDimitry Andric     __builtin_s390_vfaef((__vector unsigned int)__a,
103875ffd83dbSDimitry Andric                          (__vector unsigned int)__b, 0);
103880b57cec5SDimitry Andric }
103890b57cec5SDimitry Andric 
103905ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
103915ffd83dbSDimitry Andric vec_find_any_eq_idx(__vector __bool int __a, __vector __bool int __b) {
103925ffd83dbSDimitry Andric   return __builtin_s390_vfaef((__vector unsigned int)__a,
103935ffd83dbSDimitry Andric                               (__vector unsigned int)__b, 0);
103940b57cec5SDimitry Andric }
103950b57cec5SDimitry Andric 
103965ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
103975ffd83dbSDimitry Andric vec_find_any_eq_idx(__vector unsigned int __a, __vector unsigned int __b) {
103980b57cec5SDimitry Andric   return __builtin_s390_vfaef(__a, __b, 0);
103990b57cec5SDimitry Andric }
104000b57cec5SDimitry Andric 
104010b57cec5SDimitry Andric /*-- vec_find_any_eq_idx_cc -------------------------------------------------*/
104020b57cec5SDimitry Andric 
104035ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
104045ffd83dbSDimitry Andric vec_find_any_eq_idx_cc(__vector signed char __a,
104055ffd83dbSDimitry Andric                        __vector signed char __b, int *__cc) {
104065ffd83dbSDimitry Andric   return (__vector signed char)
104075ffd83dbSDimitry Andric     __builtin_s390_vfaebs((__vector unsigned char)__a,
104085ffd83dbSDimitry Andric                           (__vector unsigned char)__b, 0, __cc);
104090b57cec5SDimitry Andric }
104100b57cec5SDimitry Andric 
104115ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
104125ffd83dbSDimitry Andric vec_find_any_eq_idx_cc(__vector __bool char __a,
104135ffd83dbSDimitry Andric                        __vector __bool char __b, int *__cc) {
104145ffd83dbSDimitry Andric   return __builtin_s390_vfaebs((__vector unsigned char)__a,
104155ffd83dbSDimitry Andric                                (__vector unsigned char)__b, 0, __cc);
104160b57cec5SDimitry Andric }
104170b57cec5SDimitry Andric 
104185ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
104195ffd83dbSDimitry Andric vec_find_any_eq_idx_cc(__vector unsigned char __a,
104205ffd83dbSDimitry Andric                        __vector unsigned char __b, int *__cc) {
104210b57cec5SDimitry Andric   return __builtin_s390_vfaebs(__a, __b, 0, __cc);
104220b57cec5SDimitry Andric }
104230b57cec5SDimitry Andric 
104245ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
104255ffd83dbSDimitry Andric vec_find_any_eq_idx_cc(__vector signed short __a,
104265ffd83dbSDimitry Andric                        __vector signed short __b, int *__cc) {
104275ffd83dbSDimitry Andric   return (__vector signed short)
104285ffd83dbSDimitry Andric     __builtin_s390_vfaehs((__vector unsigned short)__a,
104295ffd83dbSDimitry Andric                           (__vector unsigned short)__b, 0, __cc);
104300b57cec5SDimitry Andric }
104310b57cec5SDimitry Andric 
104325ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
104335ffd83dbSDimitry Andric vec_find_any_eq_idx_cc(__vector __bool short __a,
104345ffd83dbSDimitry Andric                        __vector __bool short __b, int *__cc) {
104355ffd83dbSDimitry Andric   return __builtin_s390_vfaehs((__vector unsigned short)__a,
104365ffd83dbSDimitry Andric                                (__vector unsigned short)__b, 0, __cc);
104370b57cec5SDimitry Andric }
104380b57cec5SDimitry Andric 
104395ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
104405ffd83dbSDimitry Andric vec_find_any_eq_idx_cc(__vector unsigned short __a,
104415ffd83dbSDimitry Andric                        __vector unsigned short __b, int *__cc) {
104420b57cec5SDimitry Andric   return __builtin_s390_vfaehs(__a, __b, 0, __cc);
104430b57cec5SDimitry Andric }
104440b57cec5SDimitry Andric 
104455ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
104465ffd83dbSDimitry Andric vec_find_any_eq_idx_cc(__vector signed int __a,
104475ffd83dbSDimitry Andric                        __vector signed int __b, int *__cc) {
104485ffd83dbSDimitry Andric   return (__vector signed int)
104495ffd83dbSDimitry Andric     __builtin_s390_vfaefs((__vector unsigned int)__a,
104505ffd83dbSDimitry Andric                           (__vector unsigned int)__b, 0, __cc);
104510b57cec5SDimitry Andric }
104520b57cec5SDimitry Andric 
104535ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
104545ffd83dbSDimitry Andric vec_find_any_eq_idx_cc(__vector __bool int __a,
104555ffd83dbSDimitry Andric                        __vector __bool int __b, int *__cc) {
104565ffd83dbSDimitry Andric   return __builtin_s390_vfaefs((__vector unsigned int)__a,
104575ffd83dbSDimitry Andric                                (__vector unsigned int)__b, 0, __cc);
104580b57cec5SDimitry Andric }
104590b57cec5SDimitry Andric 
104605ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
104615ffd83dbSDimitry Andric vec_find_any_eq_idx_cc(__vector unsigned int __a,
104625ffd83dbSDimitry Andric                        __vector unsigned int __b, int *__cc) {
104630b57cec5SDimitry Andric   return __builtin_s390_vfaefs(__a, __b, 0, __cc);
104640b57cec5SDimitry Andric }
104650b57cec5SDimitry Andric 
104660b57cec5SDimitry Andric /*-- vec_find_any_eq_or_0_idx -----------------------------------------------*/
104670b57cec5SDimitry Andric 
104685ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
104695ffd83dbSDimitry Andric vec_find_any_eq_or_0_idx(__vector signed char __a,
104705ffd83dbSDimitry Andric                          __vector signed char __b) {
104715ffd83dbSDimitry Andric   return (__vector signed char)
104725ffd83dbSDimitry Andric     __builtin_s390_vfaezb((__vector unsigned char)__a,
104735ffd83dbSDimitry Andric                           (__vector unsigned char)__b, 0);
104740b57cec5SDimitry Andric }
104750b57cec5SDimitry Andric 
104765ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
104775ffd83dbSDimitry Andric vec_find_any_eq_or_0_idx(__vector __bool char __a,
104785ffd83dbSDimitry Andric                          __vector __bool char __b) {
104795ffd83dbSDimitry Andric   return __builtin_s390_vfaezb((__vector unsigned char)__a,
104805ffd83dbSDimitry Andric                                (__vector unsigned char)__b, 0);
104810b57cec5SDimitry Andric }
104820b57cec5SDimitry Andric 
104835ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
104845ffd83dbSDimitry Andric vec_find_any_eq_or_0_idx(__vector unsigned char __a,
104855ffd83dbSDimitry Andric                          __vector unsigned char __b) {
104860b57cec5SDimitry Andric   return __builtin_s390_vfaezb(__a, __b, 0);
104870b57cec5SDimitry Andric }
104880b57cec5SDimitry Andric 
104895ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
104905ffd83dbSDimitry Andric vec_find_any_eq_or_0_idx(__vector signed short __a,
104915ffd83dbSDimitry Andric                          __vector signed short __b) {
104925ffd83dbSDimitry Andric   return (__vector signed short)
104935ffd83dbSDimitry Andric     __builtin_s390_vfaezh((__vector unsigned short)__a,
104945ffd83dbSDimitry Andric                           (__vector unsigned short)__b, 0);
104950b57cec5SDimitry Andric }
104960b57cec5SDimitry Andric 
104975ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
104985ffd83dbSDimitry Andric vec_find_any_eq_or_0_idx(__vector __bool short __a,
104995ffd83dbSDimitry Andric                          __vector __bool short __b) {
105005ffd83dbSDimitry Andric   return __builtin_s390_vfaezh((__vector unsigned short)__a,
105015ffd83dbSDimitry Andric                                (__vector unsigned short)__b, 0);
105020b57cec5SDimitry Andric }
105030b57cec5SDimitry Andric 
105045ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
105055ffd83dbSDimitry Andric vec_find_any_eq_or_0_idx(__vector unsigned short __a,
105065ffd83dbSDimitry Andric                          __vector unsigned short __b) {
105070b57cec5SDimitry Andric   return __builtin_s390_vfaezh(__a, __b, 0);
105080b57cec5SDimitry Andric }
105090b57cec5SDimitry Andric 
105105ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
105115ffd83dbSDimitry Andric vec_find_any_eq_or_0_idx(__vector signed int __a,
105125ffd83dbSDimitry Andric                          __vector signed int __b) {
105135ffd83dbSDimitry Andric   return (__vector signed int)
105145ffd83dbSDimitry Andric     __builtin_s390_vfaezf((__vector unsigned int)__a,
105155ffd83dbSDimitry Andric                           (__vector unsigned int)__b, 0);
105160b57cec5SDimitry Andric }
105170b57cec5SDimitry Andric 
105185ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
105195ffd83dbSDimitry Andric vec_find_any_eq_or_0_idx(__vector __bool int __a,
105205ffd83dbSDimitry Andric                          __vector __bool int __b) {
105215ffd83dbSDimitry Andric   return __builtin_s390_vfaezf((__vector unsigned int)__a,
105225ffd83dbSDimitry Andric                                (__vector unsigned int)__b, 0);
105230b57cec5SDimitry Andric }
105240b57cec5SDimitry Andric 
105255ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
105265ffd83dbSDimitry Andric vec_find_any_eq_or_0_idx(__vector unsigned int __a,
105275ffd83dbSDimitry Andric                          __vector unsigned int __b) {
105280b57cec5SDimitry Andric   return __builtin_s390_vfaezf(__a, __b, 0);
105290b57cec5SDimitry Andric }
105300b57cec5SDimitry Andric 
105310b57cec5SDimitry Andric /*-- vec_find_any_eq_or_0_idx_cc --------------------------------------------*/
105320b57cec5SDimitry Andric 
105335ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
105345ffd83dbSDimitry Andric vec_find_any_eq_or_0_idx_cc(__vector signed char __a,
105355ffd83dbSDimitry Andric                             __vector signed char __b, int *__cc) {
105365ffd83dbSDimitry Andric   return (__vector signed char)
105375ffd83dbSDimitry Andric     __builtin_s390_vfaezbs((__vector unsigned char)__a,
105385ffd83dbSDimitry Andric                            (__vector unsigned char)__b, 0, __cc);
105390b57cec5SDimitry Andric }
105400b57cec5SDimitry Andric 
105415ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
105425ffd83dbSDimitry Andric vec_find_any_eq_or_0_idx_cc(__vector __bool char __a,
105435ffd83dbSDimitry Andric                             __vector __bool char __b, int *__cc) {
105445ffd83dbSDimitry Andric   return __builtin_s390_vfaezbs((__vector unsigned char)__a,
105455ffd83dbSDimitry Andric                                 (__vector unsigned char)__b, 0, __cc);
105460b57cec5SDimitry Andric }
105470b57cec5SDimitry Andric 
105485ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
105495ffd83dbSDimitry Andric vec_find_any_eq_or_0_idx_cc(__vector unsigned char __a,
105505ffd83dbSDimitry Andric                             __vector unsigned char __b, int *__cc) {
105510b57cec5SDimitry Andric   return __builtin_s390_vfaezbs(__a, __b, 0, __cc);
105520b57cec5SDimitry Andric }
105530b57cec5SDimitry Andric 
105545ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
105555ffd83dbSDimitry Andric vec_find_any_eq_or_0_idx_cc(__vector signed short __a,
105565ffd83dbSDimitry Andric                             __vector signed short __b, int *__cc) {
105575ffd83dbSDimitry Andric   return (__vector signed short)
105585ffd83dbSDimitry Andric     __builtin_s390_vfaezhs((__vector unsigned short)__a,
105595ffd83dbSDimitry Andric                            (__vector unsigned short)__b, 0, __cc);
105600b57cec5SDimitry Andric }
105610b57cec5SDimitry Andric 
105625ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
105635ffd83dbSDimitry Andric vec_find_any_eq_or_0_idx_cc(__vector __bool short __a,
105645ffd83dbSDimitry Andric                             __vector __bool short __b, int *__cc) {
105655ffd83dbSDimitry Andric   return __builtin_s390_vfaezhs((__vector unsigned short)__a,
105665ffd83dbSDimitry Andric                                 (__vector unsigned short)__b, 0, __cc);
105670b57cec5SDimitry Andric }
105680b57cec5SDimitry Andric 
105695ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
105705ffd83dbSDimitry Andric vec_find_any_eq_or_0_idx_cc(__vector unsigned short __a,
105715ffd83dbSDimitry Andric                             __vector unsigned short __b, int *__cc) {
105720b57cec5SDimitry Andric   return __builtin_s390_vfaezhs(__a, __b, 0, __cc);
105730b57cec5SDimitry Andric }
105740b57cec5SDimitry Andric 
105755ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
105765ffd83dbSDimitry Andric vec_find_any_eq_or_0_idx_cc(__vector signed int __a,
105775ffd83dbSDimitry Andric                             __vector signed int __b, int *__cc) {
105785ffd83dbSDimitry Andric   return (__vector signed int)
105795ffd83dbSDimitry Andric     __builtin_s390_vfaezfs((__vector unsigned int)__a,
105805ffd83dbSDimitry Andric                            (__vector unsigned int)__b, 0, __cc);
105810b57cec5SDimitry Andric }
105820b57cec5SDimitry Andric 
105835ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
105845ffd83dbSDimitry Andric vec_find_any_eq_or_0_idx_cc(__vector __bool int __a,
105855ffd83dbSDimitry Andric                             __vector __bool int __b, int *__cc) {
105865ffd83dbSDimitry Andric   return __builtin_s390_vfaezfs((__vector unsigned int)__a,
105875ffd83dbSDimitry Andric                                 (__vector unsigned int)__b, 0, __cc);
105880b57cec5SDimitry Andric }
105890b57cec5SDimitry Andric 
105905ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
105915ffd83dbSDimitry Andric vec_find_any_eq_or_0_idx_cc(__vector unsigned int __a,
105925ffd83dbSDimitry Andric                             __vector unsigned int __b, int *__cc) {
105930b57cec5SDimitry Andric   return __builtin_s390_vfaezfs(__a, __b, 0, __cc);
105940b57cec5SDimitry Andric }
105950b57cec5SDimitry Andric 
105960b57cec5SDimitry Andric /*-- vec_find_any_ne --------------------------------------------------------*/
105970b57cec5SDimitry Andric 
105985ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
105995ffd83dbSDimitry Andric vec_find_any_ne(__vector signed char __a, __vector signed char __b) {
106005ffd83dbSDimitry Andric   return (__vector __bool char)
106015ffd83dbSDimitry Andric     __builtin_s390_vfaeb((__vector unsigned char)__a,
106025ffd83dbSDimitry Andric                          (__vector unsigned char)__b, 12);
106030b57cec5SDimitry Andric }
106040b57cec5SDimitry Andric 
106055ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
106065ffd83dbSDimitry Andric vec_find_any_ne(__vector __bool char __a, __vector __bool char __b) {
106075ffd83dbSDimitry Andric   return (__vector __bool char)
106085ffd83dbSDimitry Andric     __builtin_s390_vfaeb((__vector unsigned char)__a,
106095ffd83dbSDimitry Andric                          (__vector unsigned char)__b, 12);
106100b57cec5SDimitry Andric }
106110b57cec5SDimitry Andric 
106125ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
106135ffd83dbSDimitry Andric vec_find_any_ne(__vector unsigned char __a, __vector unsigned char __b) {
106145ffd83dbSDimitry Andric   return (__vector __bool char)__builtin_s390_vfaeb(__a, __b, 12);
106150b57cec5SDimitry Andric }
106160b57cec5SDimitry Andric 
106175ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
106185ffd83dbSDimitry Andric vec_find_any_ne(__vector signed short __a, __vector signed short __b) {
106195ffd83dbSDimitry Andric   return (__vector __bool short)
106205ffd83dbSDimitry Andric     __builtin_s390_vfaeh((__vector unsigned short)__a,
106215ffd83dbSDimitry Andric                          (__vector unsigned short)__b, 12);
106220b57cec5SDimitry Andric }
106230b57cec5SDimitry Andric 
106245ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
106255ffd83dbSDimitry Andric vec_find_any_ne(__vector __bool short __a, __vector __bool short __b) {
106265ffd83dbSDimitry Andric   return (__vector __bool short)
106275ffd83dbSDimitry Andric     __builtin_s390_vfaeh((__vector unsigned short)__a,
106285ffd83dbSDimitry Andric                          (__vector unsigned short)__b, 12);
106290b57cec5SDimitry Andric }
106300b57cec5SDimitry Andric 
106315ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
106325ffd83dbSDimitry Andric vec_find_any_ne(__vector unsigned short __a, __vector unsigned short __b) {
106335ffd83dbSDimitry Andric   return (__vector __bool short)__builtin_s390_vfaeh(__a, __b, 12);
106340b57cec5SDimitry Andric }
106350b57cec5SDimitry Andric 
106365ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
106375ffd83dbSDimitry Andric vec_find_any_ne(__vector signed int __a, __vector signed int __b) {
106385ffd83dbSDimitry Andric   return (__vector __bool int)
106395ffd83dbSDimitry Andric     __builtin_s390_vfaef((__vector unsigned int)__a,
106405ffd83dbSDimitry Andric                          (__vector unsigned int)__b, 12);
106410b57cec5SDimitry Andric }
106420b57cec5SDimitry Andric 
106435ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
106445ffd83dbSDimitry Andric vec_find_any_ne(__vector __bool int __a, __vector __bool int __b) {
106455ffd83dbSDimitry Andric   return (__vector __bool int)
106465ffd83dbSDimitry Andric     __builtin_s390_vfaef((__vector unsigned int)__a,
106475ffd83dbSDimitry Andric                          (__vector unsigned int)__b, 12);
106480b57cec5SDimitry Andric }
106490b57cec5SDimitry Andric 
106505ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
106515ffd83dbSDimitry Andric vec_find_any_ne(__vector unsigned int __a, __vector unsigned int __b) {
106525ffd83dbSDimitry Andric   return (__vector __bool int)__builtin_s390_vfaef(__a, __b, 12);
106530b57cec5SDimitry Andric }
106540b57cec5SDimitry Andric 
106550b57cec5SDimitry Andric /*-- vec_find_any_ne_cc -----------------------------------------------------*/
106560b57cec5SDimitry Andric 
106575ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
106585ffd83dbSDimitry Andric vec_find_any_ne_cc(__vector signed char __a,
106595ffd83dbSDimitry Andric                    __vector signed char __b, int *__cc) {
106605ffd83dbSDimitry Andric   return (__vector __bool char)
106615ffd83dbSDimitry Andric     __builtin_s390_vfaebs((__vector unsigned char)__a,
106625ffd83dbSDimitry Andric                           (__vector unsigned char)__b, 12, __cc);
106630b57cec5SDimitry Andric }
106640b57cec5SDimitry Andric 
106655ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
106665ffd83dbSDimitry Andric vec_find_any_ne_cc(__vector __bool char __a,
106675ffd83dbSDimitry Andric                    __vector __bool char __b, int *__cc) {
106685ffd83dbSDimitry Andric   return (__vector __bool char)
106695ffd83dbSDimitry Andric     __builtin_s390_vfaebs((__vector unsigned char)__a,
106705ffd83dbSDimitry Andric                           (__vector unsigned char)__b, 12, __cc);
106710b57cec5SDimitry Andric }
106720b57cec5SDimitry Andric 
106735ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool char
106745ffd83dbSDimitry Andric vec_find_any_ne_cc(__vector unsigned char __a,
106755ffd83dbSDimitry Andric                    __vector unsigned char __b, int *__cc) {
106765ffd83dbSDimitry Andric   return (__vector __bool char)__builtin_s390_vfaebs(__a, __b, 12, __cc);
106770b57cec5SDimitry Andric }
106780b57cec5SDimitry Andric 
106795ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
106805ffd83dbSDimitry Andric vec_find_any_ne_cc(__vector signed short __a,
106815ffd83dbSDimitry Andric                    __vector signed short __b, int *__cc) {
106825ffd83dbSDimitry Andric   return (__vector __bool short)
106835ffd83dbSDimitry Andric     __builtin_s390_vfaehs((__vector unsigned short)__a,
106845ffd83dbSDimitry Andric                           (__vector unsigned short)__b, 12, __cc);
106850b57cec5SDimitry Andric }
106860b57cec5SDimitry Andric 
106875ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
106885ffd83dbSDimitry Andric vec_find_any_ne_cc(__vector __bool short __a,
106895ffd83dbSDimitry Andric                    __vector __bool short __b, int *__cc) {
106905ffd83dbSDimitry Andric   return (__vector __bool short)
106915ffd83dbSDimitry Andric     __builtin_s390_vfaehs((__vector unsigned short)__a,
106925ffd83dbSDimitry Andric                           (__vector unsigned short)__b, 12, __cc);
106930b57cec5SDimitry Andric }
106940b57cec5SDimitry Andric 
106955ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool short
106965ffd83dbSDimitry Andric vec_find_any_ne_cc(__vector unsigned short __a,
106975ffd83dbSDimitry Andric                    __vector unsigned short __b, int *__cc) {
106985ffd83dbSDimitry Andric   return (__vector __bool short)__builtin_s390_vfaehs(__a, __b, 12, __cc);
106990b57cec5SDimitry Andric }
107000b57cec5SDimitry Andric 
107015ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
107025ffd83dbSDimitry Andric vec_find_any_ne_cc(__vector signed int __a,
107035ffd83dbSDimitry Andric                    __vector signed int __b, int *__cc) {
107045ffd83dbSDimitry Andric   return (__vector __bool int)
107055ffd83dbSDimitry Andric     __builtin_s390_vfaefs((__vector unsigned int)__a,
107065ffd83dbSDimitry Andric                           (__vector unsigned int)__b, 12, __cc);
107070b57cec5SDimitry Andric }
107080b57cec5SDimitry Andric 
107095ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
107105ffd83dbSDimitry Andric vec_find_any_ne_cc(__vector __bool int __a,
107115ffd83dbSDimitry Andric                    __vector __bool int __b, int *__cc) {
107125ffd83dbSDimitry Andric   return (__vector __bool int)
107135ffd83dbSDimitry Andric     __builtin_s390_vfaefs((__vector unsigned int)__a,
107145ffd83dbSDimitry Andric                           (__vector unsigned int)__b, 12, __cc);
107150b57cec5SDimitry Andric }
107160b57cec5SDimitry Andric 
107175ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector __bool int
107185ffd83dbSDimitry Andric vec_find_any_ne_cc(__vector unsigned int __a,
107195ffd83dbSDimitry Andric                    __vector unsigned int __b, int *__cc) {
107205ffd83dbSDimitry Andric   return (__vector __bool int)__builtin_s390_vfaefs(__a, __b, 12, __cc);
107210b57cec5SDimitry Andric }
107220b57cec5SDimitry Andric 
107230b57cec5SDimitry Andric /*-- vec_find_any_ne_idx ----------------------------------------------------*/
107240b57cec5SDimitry Andric 
107255ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
107265ffd83dbSDimitry Andric vec_find_any_ne_idx(__vector signed char __a, __vector signed char __b) {
107275ffd83dbSDimitry Andric   return (__vector signed char)
107285ffd83dbSDimitry Andric     __builtin_s390_vfaeb((__vector unsigned char)__a,
107295ffd83dbSDimitry Andric                          (__vector unsigned char)__b, 8);
107300b57cec5SDimitry Andric }
107310b57cec5SDimitry Andric 
107325ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
107335ffd83dbSDimitry Andric vec_find_any_ne_idx(__vector __bool char __a, __vector __bool char __b) {
107345ffd83dbSDimitry Andric   return __builtin_s390_vfaeb((__vector unsigned char)__a,
107355ffd83dbSDimitry Andric                               (__vector unsigned char)__b, 8);
107360b57cec5SDimitry Andric }
107370b57cec5SDimitry Andric 
107385ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
107395ffd83dbSDimitry Andric vec_find_any_ne_idx(__vector unsigned char __a, __vector unsigned char __b) {
107400b57cec5SDimitry Andric   return __builtin_s390_vfaeb(__a, __b, 8);
107410b57cec5SDimitry Andric }
107420b57cec5SDimitry Andric 
107435ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
107445ffd83dbSDimitry Andric vec_find_any_ne_idx(__vector signed short __a, __vector signed short __b) {
107455ffd83dbSDimitry Andric   return (__vector signed short)
107465ffd83dbSDimitry Andric     __builtin_s390_vfaeh((__vector unsigned short)__a,
107475ffd83dbSDimitry Andric                          (__vector unsigned short)__b, 8);
107480b57cec5SDimitry Andric }
107490b57cec5SDimitry Andric 
107505ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
107515ffd83dbSDimitry Andric vec_find_any_ne_idx(__vector __bool short __a, __vector __bool short __b) {
107525ffd83dbSDimitry Andric   return __builtin_s390_vfaeh((__vector unsigned short)__a,
107535ffd83dbSDimitry Andric                               (__vector unsigned short)__b, 8);
107540b57cec5SDimitry Andric }
107550b57cec5SDimitry Andric 
107565ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
107575ffd83dbSDimitry Andric vec_find_any_ne_idx(__vector unsigned short __a, __vector unsigned short __b) {
107580b57cec5SDimitry Andric   return __builtin_s390_vfaeh(__a, __b, 8);
107590b57cec5SDimitry Andric }
107600b57cec5SDimitry Andric 
107615ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
107625ffd83dbSDimitry Andric vec_find_any_ne_idx(__vector signed int __a, __vector signed int __b) {
107635ffd83dbSDimitry Andric   return (__vector signed int)
107645ffd83dbSDimitry Andric     __builtin_s390_vfaef((__vector unsigned int)__a,
107655ffd83dbSDimitry Andric                          (__vector unsigned int)__b, 8);
107660b57cec5SDimitry Andric }
107670b57cec5SDimitry Andric 
107685ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
107695ffd83dbSDimitry Andric vec_find_any_ne_idx(__vector __bool int __a, __vector __bool int __b) {
107705ffd83dbSDimitry Andric   return __builtin_s390_vfaef((__vector unsigned int)__a,
107715ffd83dbSDimitry Andric                               (__vector unsigned int)__b, 8);
107720b57cec5SDimitry Andric }
107730b57cec5SDimitry Andric 
107745ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
107755ffd83dbSDimitry Andric vec_find_any_ne_idx(__vector unsigned int __a, __vector unsigned int __b) {
107760b57cec5SDimitry Andric   return __builtin_s390_vfaef(__a, __b, 8);
107770b57cec5SDimitry Andric }
107780b57cec5SDimitry Andric 
107790b57cec5SDimitry Andric /*-- vec_find_any_ne_idx_cc -------------------------------------------------*/
107800b57cec5SDimitry Andric 
107815ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
107825ffd83dbSDimitry Andric vec_find_any_ne_idx_cc(__vector signed char __a,
107835ffd83dbSDimitry Andric                        __vector signed char __b, int *__cc) {
107845ffd83dbSDimitry Andric   return (__vector signed char)
107855ffd83dbSDimitry Andric     __builtin_s390_vfaebs((__vector unsigned char)__a,
107865ffd83dbSDimitry Andric                           (__vector unsigned char)__b, 8, __cc);
107870b57cec5SDimitry Andric }
107880b57cec5SDimitry Andric 
107895ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
107905ffd83dbSDimitry Andric vec_find_any_ne_idx_cc(__vector __bool char __a,
107915ffd83dbSDimitry Andric                        __vector __bool char __b, int *__cc) {
107925ffd83dbSDimitry Andric   return __builtin_s390_vfaebs((__vector unsigned char)__a,
107935ffd83dbSDimitry Andric                                (__vector unsigned char)__b, 8, __cc);
107940b57cec5SDimitry Andric }
107950b57cec5SDimitry Andric 
107965ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
107975ffd83dbSDimitry Andric vec_find_any_ne_idx_cc(__vector unsigned char __a,
107985ffd83dbSDimitry Andric                        __vector unsigned char __b,
107990b57cec5SDimitry Andric                        int *__cc) {
108000b57cec5SDimitry Andric   return __builtin_s390_vfaebs(__a, __b, 8, __cc);
108010b57cec5SDimitry Andric }
108020b57cec5SDimitry Andric 
108035ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
108045ffd83dbSDimitry Andric vec_find_any_ne_idx_cc(__vector signed short __a,
108055ffd83dbSDimitry Andric                        __vector signed short __b, int *__cc) {
108065ffd83dbSDimitry Andric   return (__vector signed short)
108075ffd83dbSDimitry Andric     __builtin_s390_vfaehs((__vector unsigned short)__a,
108085ffd83dbSDimitry Andric                           (__vector unsigned short)__b, 8, __cc);
108090b57cec5SDimitry Andric }
108100b57cec5SDimitry Andric 
108115ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
108125ffd83dbSDimitry Andric vec_find_any_ne_idx_cc(__vector __bool short __a,
108135ffd83dbSDimitry Andric                        __vector __bool short __b, int *__cc) {
108145ffd83dbSDimitry Andric   return __builtin_s390_vfaehs((__vector unsigned short)__a,
108155ffd83dbSDimitry Andric                                (__vector unsigned short)__b, 8, __cc);
108160b57cec5SDimitry Andric }
108170b57cec5SDimitry Andric 
108185ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
108195ffd83dbSDimitry Andric vec_find_any_ne_idx_cc(__vector unsigned short __a,
108205ffd83dbSDimitry Andric                        __vector unsigned short __b, int *__cc) {
108210b57cec5SDimitry Andric   return __builtin_s390_vfaehs(__a, __b, 8, __cc);
108220b57cec5SDimitry Andric }
108230b57cec5SDimitry Andric 
108245ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
108255ffd83dbSDimitry Andric vec_find_any_ne_idx_cc(__vector signed int __a,
108265ffd83dbSDimitry Andric                        __vector signed int __b, int *__cc) {
108275ffd83dbSDimitry Andric   return (__vector signed int)
108285ffd83dbSDimitry Andric     __builtin_s390_vfaefs((__vector unsigned int)__a,
108295ffd83dbSDimitry Andric                           (__vector unsigned int)__b, 8, __cc);
108300b57cec5SDimitry Andric }
108310b57cec5SDimitry Andric 
108325ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
108335ffd83dbSDimitry Andric vec_find_any_ne_idx_cc(__vector __bool int __a,
108345ffd83dbSDimitry Andric                        __vector __bool int __b, int *__cc) {
108355ffd83dbSDimitry Andric   return __builtin_s390_vfaefs((__vector unsigned int)__a,
108365ffd83dbSDimitry Andric                                (__vector unsigned int)__b, 8, __cc);
108370b57cec5SDimitry Andric }
108380b57cec5SDimitry Andric 
108395ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
108405ffd83dbSDimitry Andric vec_find_any_ne_idx_cc(__vector unsigned int __a,
108415ffd83dbSDimitry Andric                        __vector unsigned int __b, int *__cc) {
108420b57cec5SDimitry Andric   return __builtin_s390_vfaefs(__a, __b, 8, __cc);
108430b57cec5SDimitry Andric }
108440b57cec5SDimitry Andric 
108450b57cec5SDimitry Andric /*-- vec_find_any_ne_or_0_idx -----------------------------------------------*/
108460b57cec5SDimitry Andric 
108475ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
108485ffd83dbSDimitry Andric vec_find_any_ne_or_0_idx(__vector signed char __a,
108495ffd83dbSDimitry Andric                          __vector signed char __b) {
108505ffd83dbSDimitry Andric   return (__vector signed char)
108515ffd83dbSDimitry Andric     __builtin_s390_vfaezb((__vector unsigned char)__a,
108525ffd83dbSDimitry Andric                           (__vector unsigned char)__b, 8);
108530b57cec5SDimitry Andric }
108540b57cec5SDimitry Andric 
108555ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
108565ffd83dbSDimitry Andric vec_find_any_ne_or_0_idx(__vector __bool char __a,
108575ffd83dbSDimitry Andric                          __vector __bool char __b) {
108585ffd83dbSDimitry Andric   return __builtin_s390_vfaezb((__vector unsigned char)__a,
108595ffd83dbSDimitry Andric                                (__vector unsigned char)__b, 8);
108600b57cec5SDimitry Andric }
108610b57cec5SDimitry Andric 
108625ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
108635ffd83dbSDimitry Andric vec_find_any_ne_or_0_idx(__vector unsigned char __a,
108645ffd83dbSDimitry Andric                          __vector unsigned char __b) {
108650b57cec5SDimitry Andric   return __builtin_s390_vfaezb(__a, __b, 8);
108660b57cec5SDimitry Andric }
108670b57cec5SDimitry Andric 
108685ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
108695ffd83dbSDimitry Andric vec_find_any_ne_or_0_idx(__vector signed short __a,
108705ffd83dbSDimitry Andric                          __vector signed short __b) {
108715ffd83dbSDimitry Andric   return (__vector signed short)
108725ffd83dbSDimitry Andric     __builtin_s390_vfaezh((__vector unsigned short)__a,
108735ffd83dbSDimitry Andric                           (__vector unsigned short)__b, 8);
108740b57cec5SDimitry Andric }
108750b57cec5SDimitry Andric 
108765ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
108775ffd83dbSDimitry Andric vec_find_any_ne_or_0_idx(__vector __bool short __a,
108785ffd83dbSDimitry Andric                          __vector __bool short __b) {
108795ffd83dbSDimitry Andric   return __builtin_s390_vfaezh((__vector unsigned short)__a,
108805ffd83dbSDimitry Andric                                (__vector unsigned short)__b, 8);
108810b57cec5SDimitry Andric }
108820b57cec5SDimitry Andric 
108835ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
108845ffd83dbSDimitry Andric vec_find_any_ne_or_0_idx(__vector unsigned short __a,
108855ffd83dbSDimitry Andric                          __vector unsigned short __b) {
108860b57cec5SDimitry Andric   return __builtin_s390_vfaezh(__a, __b, 8);
108870b57cec5SDimitry Andric }
108880b57cec5SDimitry Andric 
108895ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
108905ffd83dbSDimitry Andric vec_find_any_ne_or_0_idx(__vector signed int __a,
108915ffd83dbSDimitry Andric                          __vector signed int __b) {
108925ffd83dbSDimitry Andric   return (__vector signed int)
108935ffd83dbSDimitry Andric     __builtin_s390_vfaezf((__vector unsigned int)__a,
108945ffd83dbSDimitry Andric                           (__vector unsigned int)__b, 8);
108950b57cec5SDimitry Andric }
108960b57cec5SDimitry Andric 
108975ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
108985ffd83dbSDimitry Andric vec_find_any_ne_or_0_idx(__vector __bool int __a,
108995ffd83dbSDimitry Andric                          __vector __bool int __b) {
109005ffd83dbSDimitry Andric   return __builtin_s390_vfaezf((__vector unsigned int)__a,
109015ffd83dbSDimitry Andric                                (__vector unsigned int)__b, 8);
109020b57cec5SDimitry Andric }
109030b57cec5SDimitry Andric 
109045ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
109055ffd83dbSDimitry Andric vec_find_any_ne_or_0_idx(__vector unsigned int __a,
109065ffd83dbSDimitry Andric                          __vector unsigned int __b) {
109070b57cec5SDimitry Andric   return __builtin_s390_vfaezf(__a, __b, 8);
109080b57cec5SDimitry Andric }
109090b57cec5SDimitry Andric 
109100b57cec5SDimitry Andric /*-- vec_find_any_ne_or_0_idx_cc --------------------------------------------*/
109110b57cec5SDimitry Andric 
109125ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed char
109135ffd83dbSDimitry Andric vec_find_any_ne_or_0_idx_cc(__vector signed char __a,
109145ffd83dbSDimitry Andric                             __vector signed char __b, int *__cc) {
109155ffd83dbSDimitry Andric   return (__vector signed char)
109165ffd83dbSDimitry Andric     __builtin_s390_vfaezbs((__vector unsigned char)__a,
109175ffd83dbSDimitry Andric                            (__vector unsigned char)__b, 8, __cc);
109180b57cec5SDimitry Andric }
109190b57cec5SDimitry Andric 
109205ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
109215ffd83dbSDimitry Andric vec_find_any_ne_or_0_idx_cc(__vector __bool char __a,
109225ffd83dbSDimitry Andric                             __vector __bool char __b, int *__cc) {
109235ffd83dbSDimitry Andric   return __builtin_s390_vfaezbs((__vector unsigned char)__a,
109245ffd83dbSDimitry Andric                                 (__vector unsigned char)__b, 8, __cc);
109250b57cec5SDimitry Andric }
109260b57cec5SDimitry Andric 
109275ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
109285ffd83dbSDimitry Andric vec_find_any_ne_or_0_idx_cc(__vector unsigned char __a,
109295ffd83dbSDimitry Andric                             __vector unsigned char __b, int *__cc) {
109300b57cec5SDimitry Andric   return __builtin_s390_vfaezbs(__a, __b, 8, __cc);
109310b57cec5SDimitry Andric }
109320b57cec5SDimitry Andric 
109335ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed short
109345ffd83dbSDimitry Andric vec_find_any_ne_or_0_idx_cc(__vector signed short __a,
109355ffd83dbSDimitry Andric                             __vector signed short __b, int *__cc) {
109365ffd83dbSDimitry Andric   return (__vector signed short)
109375ffd83dbSDimitry Andric     __builtin_s390_vfaezhs((__vector unsigned short)__a,
109385ffd83dbSDimitry Andric                            (__vector unsigned short)__b, 8, __cc);
109390b57cec5SDimitry Andric }
109400b57cec5SDimitry Andric 
109415ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
109425ffd83dbSDimitry Andric vec_find_any_ne_or_0_idx_cc(__vector __bool short __a,
109435ffd83dbSDimitry Andric                             __vector __bool short __b, int *__cc) {
109445ffd83dbSDimitry Andric   return __builtin_s390_vfaezhs((__vector unsigned short)__a,
109455ffd83dbSDimitry Andric                                 (__vector unsigned short)__b, 8, __cc);
109460b57cec5SDimitry Andric }
109470b57cec5SDimitry Andric 
109485ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned short
109495ffd83dbSDimitry Andric vec_find_any_ne_or_0_idx_cc(__vector unsigned short __a,
109505ffd83dbSDimitry Andric                             __vector unsigned short __b, int *__cc) {
109510b57cec5SDimitry Andric   return __builtin_s390_vfaezhs(__a, __b, 8, __cc);
109520b57cec5SDimitry Andric }
109530b57cec5SDimitry Andric 
109545ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector signed int
109555ffd83dbSDimitry Andric vec_find_any_ne_or_0_idx_cc(__vector signed int __a,
109565ffd83dbSDimitry Andric                             __vector signed int __b, int *__cc) {
109575ffd83dbSDimitry Andric   return (__vector signed int)
109585ffd83dbSDimitry Andric     __builtin_s390_vfaezfs((__vector unsigned int)__a,
109595ffd83dbSDimitry Andric                            (__vector unsigned int)__b, 8, __cc);
109600b57cec5SDimitry Andric }
109610b57cec5SDimitry Andric 
109625ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
109635ffd83dbSDimitry Andric vec_find_any_ne_or_0_idx_cc(__vector __bool int __a,
109645ffd83dbSDimitry Andric                             __vector __bool int __b, int *__cc) {
109655ffd83dbSDimitry Andric   return __builtin_s390_vfaezfs((__vector unsigned int)__a,
109665ffd83dbSDimitry Andric                                 (__vector unsigned int)__b, 8, __cc);
109670b57cec5SDimitry Andric }
109680b57cec5SDimitry Andric 
109695ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned int
109705ffd83dbSDimitry Andric vec_find_any_ne_or_0_idx_cc(__vector unsigned int __a,
109715ffd83dbSDimitry Andric                             __vector unsigned int __b, int *__cc) {
109720b57cec5SDimitry Andric   return __builtin_s390_vfaezfs(__a, __b, 8, __cc);
109730b57cec5SDimitry Andric }
109740b57cec5SDimitry Andric 
109750b57cec5SDimitry Andric /*-- vec_search_string_cc ---------------------------------------------------*/
109760b57cec5SDimitry Andric 
109770b57cec5SDimitry Andric #if __ARCH__ >= 13
109780b57cec5SDimitry Andric 
109795ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
109805ffd83dbSDimitry Andric vec_search_string_cc(__vector signed char __a, __vector signed char __b,
109815ffd83dbSDimitry Andric                      __vector unsigned char __c, int *__cc) {
109825ffd83dbSDimitry Andric   return __builtin_s390_vstrsb((__vector unsigned char)__a,
109835ffd83dbSDimitry Andric                                (__vector unsigned char)__b, __c, __cc);
109840b57cec5SDimitry Andric }
109850b57cec5SDimitry Andric 
109865ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
109875ffd83dbSDimitry Andric vec_search_string_cc(__vector __bool char __a, __vector __bool char __b,
109885ffd83dbSDimitry Andric                      __vector unsigned char __c, int *__cc) {
109895ffd83dbSDimitry Andric   return __builtin_s390_vstrsb((__vector unsigned char)__a,
109905ffd83dbSDimitry Andric                                (__vector unsigned char)__b, __c, __cc);
109910b57cec5SDimitry Andric }
109920b57cec5SDimitry Andric 
109935ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
109945ffd83dbSDimitry Andric vec_search_string_cc(__vector unsigned char __a, __vector unsigned char __b,
109955ffd83dbSDimitry Andric                      __vector unsigned char __c, int *__cc) {
109960b57cec5SDimitry Andric   return __builtin_s390_vstrsb(__a, __b, __c, __cc);
109970b57cec5SDimitry Andric }
109980b57cec5SDimitry Andric 
109995ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
110005ffd83dbSDimitry Andric vec_search_string_cc(__vector signed short __a, __vector signed short __b,
110015ffd83dbSDimitry Andric                      __vector unsigned char __c, int *__cc) {
110025ffd83dbSDimitry Andric   return __builtin_s390_vstrsh((__vector unsigned short)__a,
110035ffd83dbSDimitry Andric                                (__vector unsigned short)__b, __c, __cc);
110040b57cec5SDimitry Andric }
110050b57cec5SDimitry Andric 
110065ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
110075ffd83dbSDimitry Andric vec_search_string_cc(__vector __bool short __a, __vector __bool short __b,
110085ffd83dbSDimitry Andric                      __vector unsigned char __c, int *__cc) {
110095ffd83dbSDimitry Andric   return __builtin_s390_vstrsh((__vector unsigned short)__a,
110105ffd83dbSDimitry Andric                                (__vector unsigned short)__b, __c, __cc);
110110b57cec5SDimitry Andric }
110120b57cec5SDimitry Andric 
110135ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
110145ffd83dbSDimitry Andric vec_search_string_cc(__vector unsigned short __a, __vector unsigned short __b,
110155ffd83dbSDimitry Andric                      __vector unsigned char __c, int *__cc) {
110160b57cec5SDimitry Andric   return __builtin_s390_vstrsh(__a, __b, __c, __cc);
110170b57cec5SDimitry Andric }
110180b57cec5SDimitry Andric 
110195ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
110205ffd83dbSDimitry Andric vec_search_string_cc(__vector signed int __a, __vector signed int __b,
110215ffd83dbSDimitry Andric                      __vector unsigned char __c, int *__cc) {
110225ffd83dbSDimitry Andric   return __builtin_s390_vstrsf((__vector unsigned int)__a,
110235ffd83dbSDimitry Andric                                (__vector unsigned int)__b, __c, __cc);
110240b57cec5SDimitry Andric }
110250b57cec5SDimitry Andric 
110265ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
110275ffd83dbSDimitry Andric vec_search_string_cc(__vector __bool int __a, __vector __bool int __b,
110285ffd83dbSDimitry Andric                      __vector unsigned char __c, int *__cc) {
110295ffd83dbSDimitry Andric   return __builtin_s390_vstrsf((__vector unsigned int)__a,
110305ffd83dbSDimitry Andric                                (__vector unsigned int)__b, __c, __cc);
110310b57cec5SDimitry Andric }
110320b57cec5SDimitry Andric 
110335ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
110345ffd83dbSDimitry Andric vec_search_string_cc(__vector unsigned int __a, __vector unsigned int __b,
110355ffd83dbSDimitry Andric                      __vector unsigned char __c, int *__cc) {
110360b57cec5SDimitry Andric   return __builtin_s390_vstrsf(__a, __b, __c, __cc);
110370b57cec5SDimitry Andric }
110380b57cec5SDimitry Andric 
110390b57cec5SDimitry Andric #endif
110400b57cec5SDimitry Andric 
110410b57cec5SDimitry Andric /*-- vec_search_string_until_zero_cc ----------------------------------------*/
110420b57cec5SDimitry Andric 
110430b57cec5SDimitry Andric #if __ARCH__ >= 13
110440b57cec5SDimitry Andric 
110455ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
110465ffd83dbSDimitry Andric vec_search_string_until_zero_cc(__vector signed char __a,
110475ffd83dbSDimitry Andric                                 __vector signed char __b,
110485ffd83dbSDimitry Andric                                 __vector unsigned char __c, int *__cc) {
110495ffd83dbSDimitry Andric   return __builtin_s390_vstrszb((__vector unsigned char)__a,
110505ffd83dbSDimitry Andric                                 (__vector unsigned char)__b, __c, __cc);
110510b57cec5SDimitry Andric }
110520b57cec5SDimitry Andric 
110535ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
110545ffd83dbSDimitry Andric vec_search_string_until_zero_cc(__vector __bool char __a,
110555ffd83dbSDimitry Andric                                 __vector __bool char __b,
110565ffd83dbSDimitry Andric                                 __vector unsigned char __c, int *__cc) {
110575ffd83dbSDimitry Andric   return __builtin_s390_vstrszb((__vector unsigned char)__a,
110585ffd83dbSDimitry Andric                                 (__vector unsigned char)__b, __c, __cc);
110590b57cec5SDimitry Andric }
110600b57cec5SDimitry Andric 
110615ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
110625ffd83dbSDimitry Andric vec_search_string_until_zero_cc(__vector unsigned char __a,
110635ffd83dbSDimitry Andric                                 __vector unsigned char __b,
110645ffd83dbSDimitry Andric                                 __vector unsigned char __c, int *__cc) {
110650b57cec5SDimitry Andric   return __builtin_s390_vstrszb(__a, __b, __c, __cc);
110660b57cec5SDimitry Andric }
110670b57cec5SDimitry Andric 
110685ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
110695ffd83dbSDimitry Andric vec_search_string_until_zero_cc(__vector signed short __a,
110705ffd83dbSDimitry Andric                                 __vector signed short __b,
110715ffd83dbSDimitry Andric                                 __vector unsigned char __c, int *__cc) {
110725ffd83dbSDimitry Andric   return __builtin_s390_vstrszh((__vector unsigned short)__a,
110735ffd83dbSDimitry Andric                                 (__vector unsigned short)__b, __c, __cc);
110740b57cec5SDimitry Andric }
110750b57cec5SDimitry Andric 
110765ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
110775ffd83dbSDimitry Andric vec_search_string_until_zero_cc(__vector __bool short __a,
110785ffd83dbSDimitry Andric                                 __vector __bool short __b,
110795ffd83dbSDimitry Andric                                 __vector unsigned char __c, int *__cc) {
110805ffd83dbSDimitry Andric   return __builtin_s390_vstrszh((__vector unsigned short)__a,
110815ffd83dbSDimitry Andric                                 (__vector unsigned short)__b, __c, __cc);
110820b57cec5SDimitry Andric }
110830b57cec5SDimitry Andric 
110845ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
110855ffd83dbSDimitry Andric vec_search_string_until_zero_cc(__vector unsigned short __a,
110865ffd83dbSDimitry Andric                                 __vector unsigned short __b,
110875ffd83dbSDimitry Andric                                 __vector unsigned char __c, int *__cc) {
110880b57cec5SDimitry Andric   return __builtin_s390_vstrszh(__a, __b, __c, __cc);
110890b57cec5SDimitry Andric }
110900b57cec5SDimitry Andric 
110915ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
110925ffd83dbSDimitry Andric vec_search_string_until_zero_cc(__vector signed int __a,
110935ffd83dbSDimitry Andric                                 __vector signed int __b,
110945ffd83dbSDimitry Andric                                 __vector unsigned char __c, int *__cc) {
110955ffd83dbSDimitry Andric   return __builtin_s390_vstrszf((__vector unsigned int)__a,
110965ffd83dbSDimitry Andric                                 (__vector unsigned int)__b, __c, __cc);
110970b57cec5SDimitry Andric }
110980b57cec5SDimitry Andric 
110995ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
111005ffd83dbSDimitry Andric vec_search_string_until_zero_cc(__vector __bool int __a,
111015ffd83dbSDimitry Andric                                 __vector __bool int __b,
111025ffd83dbSDimitry Andric                                 __vector unsigned char __c, int *__cc) {
111035ffd83dbSDimitry Andric   return __builtin_s390_vstrszf((__vector unsigned int)__a,
111045ffd83dbSDimitry Andric                                 (__vector unsigned int)__b, __c, __cc);
111050b57cec5SDimitry Andric }
111060b57cec5SDimitry Andric 
111075ffd83dbSDimitry Andric static inline __ATTRS_o_ai __vector unsigned char
111085ffd83dbSDimitry Andric vec_search_string_until_zero_cc(__vector unsigned int __a,
111095ffd83dbSDimitry Andric                                 __vector unsigned int __b,
111105ffd83dbSDimitry Andric                                 __vector unsigned char __c, int *__cc) {
111110b57cec5SDimitry Andric   return __builtin_s390_vstrszf(__a, __b, __c, __cc);
111120b57cec5SDimitry Andric }
111130b57cec5SDimitry Andric 
111140b57cec5SDimitry Andric #endif
111150b57cec5SDimitry Andric 
111160b57cec5SDimitry Andric #undef __constant_pow2_range
111170b57cec5SDimitry Andric #undef __constant_range
111180b57cec5SDimitry Andric #undef __constant
111190b57cec5SDimitry Andric #undef __ATTRS_o
111200b57cec5SDimitry Andric #undef __ATTRS_o_ai
111210b57cec5SDimitry Andric #undef __ATTRS_ai
111220b57cec5SDimitry Andric 
111230b57cec5SDimitry Andric #else
111240b57cec5SDimitry Andric 
111250b57cec5SDimitry Andric #error "Use -fzvector to enable vector extensions"
111260b57cec5SDimitry Andric 
111270b57cec5SDimitry Andric #endif
11128