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