xref: /aosp_15_r20/external/clang/lib/Headers/vecintrin.h (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li /*===---- vecintrin.h - Vector intrinsics ----------------------------------===
2*67e74705SXin Li  *
3*67e74705SXin Li  * Permission is hereby granted, free of charge, to any person obtaining a copy
4*67e74705SXin Li  * of this software and associated documentation files (the "Software"), to deal
5*67e74705SXin Li  * in the Software without restriction, including without limitation the rights
6*67e74705SXin Li  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7*67e74705SXin Li  * copies of the Software, and to permit persons to whom the Software is
8*67e74705SXin Li  * furnished to do so, subject to the following conditions:
9*67e74705SXin Li  *
10*67e74705SXin Li  * The above copyright notice and this permission notice shall be included in
11*67e74705SXin Li  * all copies or substantial portions of the Software.
12*67e74705SXin Li  *
13*67e74705SXin Li  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14*67e74705SXin Li  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15*67e74705SXin Li  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16*67e74705SXin Li  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17*67e74705SXin Li  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18*67e74705SXin Li  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19*67e74705SXin Li  * THE SOFTWARE.
20*67e74705SXin Li  *
21*67e74705SXin Li  *===-----------------------------------------------------------------------===
22*67e74705SXin Li  */
23*67e74705SXin Li 
24*67e74705SXin Li #if defined(__s390x__) && defined(__VEC__)
25*67e74705SXin Li 
26*67e74705SXin Li #define __ATTRS_ai __attribute__((__always_inline__))
27*67e74705SXin Li #define __ATTRS_o __attribute__((__overloadable__))
28*67e74705SXin Li #define __ATTRS_o_ai __attribute__((__overloadable__, __always_inline__))
29*67e74705SXin Li 
30*67e74705SXin Li #define __constant(PARM) \
31*67e74705SXin Li   __attribute__((__enable_if__ ((PARM) == (PARM), \
32*67e74705SXin Li      "argument must be a constant integer")))
33*67e74705SXin Li #define __constant_range(PARM, LOW, HIGH) \
34*67e74705SXin Li   __attribute__((__enable_if__ ((PARM) >= (LOW) && (PARM) <= (HIGH), \
35*67e74705SXin Li      "argument must be a constant integer from " #LOW " to " #HIGH)))
36*67e74705SXin Li #define __constant_pow2_range(PARM, LOW, HIGH) \
37*67e74705SXin Li   __attribute__((__enable_if__ ((PARM) >= (LOW) && (PARM) <= (HIGH) && \
38*67e74705SXin Li                                 ((PARM) & ((PARM) - 1)) == 0, \
39*67e74705SXin Li      "argument must be a constant power of 2 from " #LOW " to " #HIGH)))
40*67e74705SXin Li 
41*67e74705SXin Li /*-- __lcbb -----------------------------------------------------------------*/
42*67e74705SXin Li 
43*67e74705SXin Li extern __ATTRS_o unsigned int
44*67e74705SXin Li __lcbb(const void *__ptr, unsigned short __len)
45*67e74705SXin Li   __constant_pow2_range(__len, 64, 4096);
46*67e74705SXin Li 
47*67e74705SXin Li #define __lcbb(X, Y) ((__typeof__((__lcbb)((X), (Y)))) \
48*67e74705SXin Li   __builtin_s390_lcbb((X), __builtin_constant_p((Y))? \
49*67e74705SXin Li                            ((Y) == 64 ? 0 : \
50*67e74705SXin Li                             (Y) == 128 ? 1 : \
51*67e74705SXin Li                             (Y) == 256 ? 2 : \
52*67e74705SXin Li                             (Y) == 512 ? 3 : \
53*67e74705SXin Li                             (Y) == 1024 ? 4 : \
54*67e74705SXin Li                             (Y) == 2048 ? 5 : \
55*67e74705SXin Li                             (Y) == 4096 ? 6 : 0) : 0))
56*67e74705SXin Li 
57*67e74705SXin Li /*-- vec_extract ------------------------------------------------------------*/
58*67e74705SXin Li 
59*67e74705SXin Li static inline __ATTRS_o_ai signed char
vec_extract(vector signed char __vec,int __index)60*67e74705SXin Li vec_extract(vector signed char __vec, int __index) {
61*67e74705SXin Li   return __vec[__index & 15];
62*67e74705SXin Li }
63*67e74705SXin Li 
64*67e74705SXin Li static inline __ATTRS_o_ai unsigned char
vec_extract(vector bool char __vec,int __index)65*67e74705SXin Li vec_extract(vector bool char __vec, int __index) {
66*67e74705SXin Li   return __vec[__index & 15];
67*67e74705SXin Li }
68*67e74705SXin Li 
69*67e74705SXin Li static inline __ATTRS_o_ai unsigned char
vec_extract(vector unsigned char __vec,int __index)70*67e74705SXin Li vec_extract(vector unsigned char __vec, int __index) {
71*67e74705SXin Li   return __vec[__index & 15];
72*67e74705SXin Li }
73*67e74705SXin Li 
74*67e74705SXin Li static inline __ATTRS_o_ai signed short
vec_extract(vector signed short __vec,int __index)75*67e74705SXin Li vec_extract(vector signed short __vec, int __index) {
76*67e74705SXin Li   return __vec[__index & 7];
77*67e74705SXin Li }
78*67e74705SXin Li 
79*67e74705SXin Li static inline __ATTRS_o_ai unsigned short
vec_extract(vector bool short __vec,int __index)80*67e74705SXin Li vec_extract(vector bool short __vec, int __index) {
81*67e74705SXin Li   return __vec[__index & 7];
82*67e74705SXin Li }
83*67e74705SXin Li 
84*67e74705SXin Li static inline __ATTRS_o_ai unsigned short
vec_extract(vector unsigned short __vec,int __index)85*67e74705SXin Li vec_extract(vector unsigned short __vec, int __index) {
86*67e74705SXin Li   return __vec[__index & 7];
87*67e74705SXin Li }
88*67e74705SXin Li 
89*67e74705SXin Li static inline __ATTRS_o_ai signed int
vec_extract(vector signed int __vec,int __index)90*67e74705SXin Li vec_extract(vector signed int __vec, int __index) {
91*67e74705SXin Li   return __vec[__index & 3];
92*67e74705SXin Li }
93*67e74705SXin Li 
94*67e74705SXin Li static inline __ATTRS_o_ai unsigned int
vec_extract(vector bool int __vec,int __index)95*67e74705SXin Li vec_extract(vector bool int __vec, int __index) {
96*67e74705SXin Li   return __vec[__index & 3];
97*67e74705SXin Li }
98*67e74705SXin Li 
99*67e74705SXin Li static inline __ATTRS_o_ai unsigned int
vec_extract(vector unsigned int __vec,int __index)100*67e74705SXin Li vec_extract(vector unsigned int __vec, int __index) {
101*67e74705SXin Li   return __vec[__index & 3];
102*67e74705SXin Li }
103*67e74705SXin Li 
104*67e74705SXin Li static inline __ATTRS_o_ai signed long long
vec_extract(vector signed long long __vec,int __index)105*67e74705SXin Li vec_extract(vector signed long long __vec, int __index) {
106*67e74705SXin Li   return __vec[__index & 1];
107*67e74705SXin Li }
108*67e74705SXin Li 
109*67e74705SXin Li static inline __ATTRS_o_ai unsigned long long
vec_extract(vector bool long long __vec,int __index)110*67e74705SXin Li vec_extract(vector bool long long __vec, int __index) {
111*67e74705SXin Li   return __vec[__index & 1];
112*67e74705SXin Li }
113*67e74705SXin Li 
114*67e74705SXin Li static inline __ATTRS_o_ai unsigned long long
vec_extract(vector unsigned long long __vec,int __index)115*67e74705SXin Li vec_extract(vector unsigned long long __vec, int __index) {
116*67e74705SXin Li   return __vec[__index & 1];
117*67e74705SXin Li }
118*67e74705SXin Li 
119*67e74705SXin Li static inline __ATTRS_o_ai double
vec_extract(vector double __vec,int __index)120*67e74705SXin Li vec_extract(vector double __vec, int __index) {
121*67e74705SXin Li   return __vec[__index & 1];
122*67e74705SXin Li }
123*67e74705SXin Li 
124*67e74705SXin Li /*-- vec_insert -------------------------------------------------------------*/
125*67e74705SXin Li 
126*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_insert(signed char __scalar,vector signed char __vec,int __index)127*67e74705SXin Li vec_insert(signed char __scalar, vector signed char __vec, int __index) {
128*67e74705SXin Li   __vec[__index & 15] = __scalar;
129*67e74705SXin Li   return __vec;
130*67e74705SXin Li }
131*67e74705SXin Li 
132*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_insert(unsigned char __scalar,vector bool char __vec,int __index)133*67e74705SXin Li vec_insert(unsigned char __scalar, vector bool char __vec, int __index) {
134*67e74705SXin Li   vector unsigned char __newvec = (vector unsigned char)__vec;
135*67e74705SXin Li   __newvec[__index & 15] = (unsigned char)__scalar;
136*67e74705SXin Li   return __newvec;
137*67e74705SXin Li }
138*67e74705SXin Li 
139*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_insert(unsigned char __scalar,vector unsigned char __vec,int __index)140*67e74705SXin Li vec_insert(unsigned char __scalar, vector unsigned char __vec, int __index) {
141*67e74705SXin Li   __vec[__index & 15] = __scalar;
142*67e74705SXin Li   return __vec;
143*67e74705SXin Li }
144*67e74705SXin Li 
145*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_insert(signed short __scalar,vector signed short __vec,int __index)146*67e74705SXin Li vec_insert(signed short __scalar, vector signed short __vec, int __index) {
147*67e74705SXin Li   __vec[__index & 7] = __scalar;
148*67e74705SXin Li   return __vec;
149*67e74705SXin Li }
150*67e74705SXin Li 
151*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_insert(unsigned short __scalar,vector bool short __vec,int __index)152*67e74705SXin Li vec_insert(unsigned short __scalar, vector bool short __vec, int __index) {
153*67e74705SXin Li   vector unsigned short __newvec = (vector unsigned short)__vec;
154*67e74705SXin Li   __newvec[__index & 7] = (unsigned short)__scalar;
155*67e74705SXin Li   return __newvec;
156*67e74705SXin Li }
157*67e74705SXin Li 
158*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_insert(unsigned short __scalar,vector unsigned short __vec,int __index)159*67e74705SXin Li vec_insert(unsigned short __scalar, vector unsigned short __vec, int __index) {
160*67e74705SXin Li   __vec[__index & 7] = __scalar;
161*67e74705SXin Li   return __vec;
162*67e74705SXin Li }
163*67e74705SXin Li 
164*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_insert(signed int __scalar,vector signed int __vec,int __index)165*67e74705SXin Li vec_insert(signed int __scalar, vector signed int __vec, int __index) {
166*67e74705SXin Li   __vec[__index & 3] = __scalar;
167*67e74705SXin Li   return __vec;
168*67e74705SXin Li }
169*67e74705SXin Li 
170*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_insert(unsigned int __scalar,vector bool int __vec,int __index)171*67e74705SXin Li vec_insert(unsigned int __scalar, vector bool int __vec, int __index) {
172*67e74705SXin Li   vector unsigned int __newvec = (vector unsigned int)__vec;
173*67e74705SXin Li   __newvec[__index & 3] = __scalar;
174*67e74705SXin Li   return __newvec;
175*67e74705SXin Li }
176*67e74705SXin Li 
177*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_insert(unsigned int __scalar,vector unsigned int __vec,int __index)178*67e74705SXin Li vec_insert(unsigned int __scalar, vector unsigned int __vec, int __index) {
179*67e74705SXin Li   __vec[__index & 3] = __scalar;
180*67e74705SXin Li   return __vec;
181*67e74705SXin Li }
182*67e74705SXin Li 
183*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_insert(signed long long __scalar,vector signed long long __vec,int __index)184*67e74705SXin Li vec_insert(signed long long __scalar, vector signed long long __vec,
185*67e74705SXin Li            int __index) {
186*67e74705SXin Li   __vec[__index & 1] = __scalar;
187*67e74705SXin Li   return __vec;
188*67e74705SXin Li }
189*67e74705SXin Li 
190*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_insert(unsigned long long __scalar,vector bool long long __vec,int __index)191*67e74705SXin Li vec_insert(unsigned long long __scalar, vector bool long long __vec,
192*67e74705SXin Li            int __index) {
193*67e74705SXin Li   vector unsigned long long __newvec = (vector unsigned long long)__vec;
194*67e74705SXin Li   __newvec[__index & 1] = __scalar;
195*67e74705SXin Li   return __newvec;
196*67e74705SXin Li }
197*67e74705SXin Li 
198*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_insert(unsigned long long __scalar,vector unsigned long long __vec,int __index)199*67e74705SXin Li vec_insert(unsigned long long __scalar, vector unsigned long long __vec,
200*67e74705SXin Li            int __index) {
201*67e74705SXin Li   __vec[__index & 1] = __scalar;
202*67e74705SXin Li   return __vec;
203*67e74705SXin Li }
204*67e74705SXin Li 
205*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_insert(double __scalar,vector double __vec,int __index)206*67e74705SXin Li vec_insert(double __scalar, vector double __vec, int __index) {
207*67e74705SXin Li   __vec[__index & 1] = __scalar;
208*67e74705SXin Li   return __vec;
209*67e74705SXin Li }
210*67e74705SXin Li 
211*67e74705SXin Li /*-- vec_promote ------------------------------------------------------------*/
212*67e74705SXin Li 
213*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_promote(signed char __scalar,int __index)214*67e74705SXin Li vec_promote(signed char __scalar, int __index) {
215*67e74705SXin Li   const vector signed char __zero = (vector signed char)0;
216*67e74705SXin Li   vector signed char __vec = __builtin_shufflevector(__zero, __zero,
217*67e74705SXin Li     -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
218*67e74705SXin Li   __vec[__index & 15] = __scalar;
219*67e74705SXin Li   return __vec;
220*67e74705SXin Li }
221*67e74705SXin Li 
222*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_promote(unsigned char __scalar,int __index)223*67e74705SXin Li vec_promote(unsigned char __scalar, int __index) {
224*67e74705SXin Li   const vector unsigned char __zero = (vector unsigned char)0;
225*67e74705SXin Li   vector unsigned char __vec = __builtin_shufflevector(__zero, __zero,
226*67e74705SXin Li     -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
227*67e74705SXin Li   __vec[__index & 15] = __scalar;
228*67e74705SXin Li   return __vec;
229*67e74705SXin Li }
230*67e74705SXin Li 
231*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_promote(signed short __scalar,int __index)232*67e74705SXin Li vec_promote(signed short __scalar, int __index) {
233*67e74705SXin Li   const vector signed short __zero = (vector signed short)0;
234*67e74705SXin Li   vector signed short __vec = __builtin_shufflevector(__zero, __zero,
235*67e74705SXin Li                                 -1, -1, -1, -1, -1, -1, -1, -1);
236*67e74705SXin Li   __vec[__index & 7] = __scalar;
237*67e74705SXin Li   return __vec;
238*67e74705SXin Li }
239*67e74705SXin Li 
240*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_promote(unsigned short __scalar,int __index)241*67e74705SXin Li vec_promote(unsigned short __scalar, int __index) {
242*67e74705SXin Li   const vector unsigned short __zero = (vector unsigned short)0;
243*67e74705SXin Li   vector unsigned short __vec = __builtin_shufflevector(__zero, __zero,
244*67e74705SXin Li                                   -1, -1, -1, -1, -1, -1, -1, -1);
245*67e74705SXin Li   __vec[__index & 7] = __scalar;
246*67e74705SXin Li   return __vec;
247*67e74705SXin Li }
248*67e74705SXin Li 
249*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_promote(signed int __scalar,int __index)250*67e74705SXin Li vec_promote(signed int __scalar, int __index) {
251*67e74705SXin Li   const vector signed int __zero = (vector signed int)0;
252*67e74705SXin Li   vector signed int __vec = __builtin_shufflevector(__zero, __zero,
253*67e74705SXin Li                                                     -1, -1, -1, -1);
254*67e74705SXin Li   __vec[__index & 3] = __scalar;
255*67e74705SXin Li   return __vec;
256*67e74705SXin Li }
257*67e74705SXin Li 
258*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_promote(unsigned int __scalar,int __index)259*67e74705SXin Li vec_promote(unsigned int __scalar, int __index) {
260*67e74705SXin Li   const vector unsigned int __zero = (vector unsigned int)0;
261*67e74705SXin Li   vector unsigned int __vec = __builtin_shufflevector(__zero, __zero,
262*67e74705SXin Li                                                       -1, -1, -1, -1);
263*67e74705SXin Li   __vec[__index & 3] = __scalar;
264*67e74705SXin Li   return __vec;
265*67e74705SXin Li }
266*67e74705SXin Li 
267*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_promote(signed long long __scalar,int __index)268*67e74705SXin Li vec_promote(signed long long __scalar, int __index) {
269*67e74705SXin Li   const vector signed long long __zero = (vector signed long long)0;
270*67e74705SXin Li   vector signed long long __vec = __builtin_shufflevector(__zero, __zero,
271*67e74705SXin Li                                                           -1, -1);
272*67e74705SXin Li   __vec[__index & 1] = __scalar;
273*67e74705SXin Li   return __vec;
274*67e74705SXin Li }
275*67e74705SXin Li 
276*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_promote(unsigned long long __scalar,int __index)277*67e74705SXin Li vec_promote(unsigned long long __scalar, int __index) {
278*67e74705SXin Li   const vector unsigned long long __zero = (vector unsigned long long)0;
279*67e74705SXin Li   vector unsigned long long __vec = __builtin_shufflevector(__zero, __zero,
280*67e74705SXin Li                                                             -1, -1);
281*67e74705SXin Li   __vec[__index & 1] = __scalar;
282*67e74705SXin Li   return __vec;
283*67e74705SXin Li }
284*67e74705SXin Li 
285*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_promote(double __scalar,int __index)286*67e74705SXin Li vec_promote(double __scalar, int __index) {
287*67e74705SXin Li   const vector double __zero = (vector double)0;
288*67e74705SXin Li   vector double __vec = __builtin_shufflevector(__zero, __zero, -1, -1);
289*67e74705SXin Li   __vec[__index & 1] = __scalar;
290*67e74705SXin Li   return __vec;
291*67e74705SXin Li }
292*67e74705SXin Li 
293*67e74705SXin Li /*-- vec_insert_and_zero ----------------------------------------------------*/
294*67e74705SXin Li 
295*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_insert_and_zero(const signed char * __ptr)296*67e74705SXin Li vec_insert_and_zero(const signed char *__ptr) {
297*67e74705SXin Li   vector signed char __vec = (vector signed char)0;
298*67e74705SXin Li   __vec[7] = *__ptr;
299*67e74705SXin Li   return __vec;
300*67e74705SXin Li }
301*67e74705SXin Li 
302*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_insert_and_zero(const unsigned char * __ptr)303*67e74705SXin Li vec_insert_and_zero(const unsigned char *__ptr) {
304*67e74705SXin Li   vector unsigned char __vec = (vector unsigned char)0;
305*67e74705SXin Li   __vec[7] = *__ptr;
306*67e74705SXin Li   return __vec;
307*67e74705SXin Li }
308*67e74705SXin Li 
309*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_insert_and_zero(const signed short * __ptr)310*67e74705SXin Li vec_insert_and_zero(const signed short *__ptr) {
311*67e74705SXin Li   vector signed short __vec = (vector signed short)0;
312*67e74705SXin Li   __vec[3] = *__ptr;
313*67e74705SXin Li   return __vec;
314*67e74705SXin Li }
315*67e74705SXin Li 
316*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_insert_and_zero(const unsigned short * __ptr)317*67e74705SXin Li vec_insert_and_zero(const unsigned short *__ptr) {
318*67e74705SXin Li   vector unsigned short __vec = (vector unsigned short)0;
319*67e74705SXin Li   __vec[3] = *__ptr;
320*67e74705SXin Li   return __vec;
321*67e74705SXin Li }
322*67e74705SXin Li 
323*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_insert_and_zero(const signed int * __ptr)324*67e74705SXin Li vec_insert_and_zero(const signed int *__ptr) {
325*67e74705SXin Li   vector signed int __vec = (vector signed int)0;
326*67e74705SXin Li   __vec[1] = *__ptr;
327*67e74705SXin Li   return __vec;
328*67e74705SXin Li }
329*67e74705SXin Li 
330*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_insert_and_zero(const unsigned int * __ptr)331*67e74705SXin Li vec_insert_and_zero(const unsigned int *__ptr) {
332*67e74705SXin Li   vector unsigned int __vec = (vector unsigned int)0;
333*67e74705SXin Li   __vec[1] = *__ptr;
334*67e74705SXin Li   return __vec;
335*67e74705SXin Li }
336*67e74705SXin Li 
337*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_insert_and_zero(const signed long long * __ptr)338*67e74705SXin Li vec_insert_and_zero(const signed long long *__ptr) {
339*67e74705SXin Li   vector signed long long __vec = (vector signed long long)0;
340*67e74705SXin Li   __vec[0] = *__ptr;
341*67e74705SXin Li   return __vec;
342*67e74705SXin Li }
343*67e74705SXin Li 
344*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_insert_and_zero(const unsigned long long * __ptr)345*67e74705SXin Li vec_insert_and_zero(const unsigned long long *__ptr) {
346*67e74705SXin Li   vector unsigned long long __vec = (vector unsigned long long)0;
347*67e74705SXin Li   __vec[0] = *__ptr;
348*67e74705SXin Li   return __vec;
349*67e74705SXin Li }
350*67e74705SXin Li 
351*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_insert_and_zero(const double * __ptr)352*67e74705SXin Li vec_insert_and_zero(const double *__ptr) {
353*67e74705SXin Li   vector double __vec = (vector double)0;
354*67e74705SXin Li   __vec[0] = *__ptr;
355*67e74705SXin Li   return __vec;
356*67e74705SXin Li }
357*67e74705SXin Li 
358*67e74705SXin Li /*-- vec_perm ---------------------------------------------------------------*/
359*67e74705SXin Li 
360*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_perm(vector signed char __a,vector signed char __b,vector unsigned char __c)361*67e74705SXin Li vec_perm(vector signed char __a, vector signed char __b,
362*67e74705SXin Li          vector unsigned char __c) {
363*67e74705SXin Li   return (vector signed char)__builtin_s390_vperm(
364*67e74705SXin Li            (vector unsigned char)__a, (vector unsigned char)__b, __c);
365*67e74705SXin Li }
366*67e74705SXin Li 
367*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_perm(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)368*67e74705SXin Li vec_perm(vector unsigned char __a, vector unsigned char __b,
369*67e74705SXin Li          vector unsigned char __c) {
370*67e74705SXin Li   return (vector unsigned char)__builtin_s390_vperm(
371*67e74705SXin Li            (vector unsigned char)__a, (vector unsigned char)__b, __c);
372*67e74705SXin Li }
373*67e74705SXin Li 
374*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_perm(vector bool char __a,vector bool char __b,vector unsigned char __c)375*67e74705SXin Li vec_perm(vector bool char __a, vector bool char __b,
376*67e74705SXin Li          vector unsigned char __c) {
377*67e74705SXin Li   return (vector bool char)__builtin_s390_vperm(
378*67e74705SXin Li            (vector unsigned char)__a, (vector unsigned char)__b, __c);
379*67e74705SXin Li }
380*67e74705SXin Li 
381*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_perm(vector signed short __a,vector signed short __b,vector unsigned char __c)382*67e74705SXin Li vec_perm(vector signed short __a, vector signed short __b,
383*67e74705SXin Li          vector unsigned char __c) {
384*67e74705SXin Li   return (vector signed short)__builtin_s390_vperm(
385*67e74705SXin Li            (vector unsigned char)__a, (vector unsigned char)__b, __c);
386*67e74705SXin Li }
387*67e74705SXin Li 
388*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_perm(vector unsigned short __a,vector unsigned short __b,vector unsigned char __c)389*67e74705SXin Li vec_perm(vector unsigned short __a, vector unsigned short __b,
390*67e74705SXin Li          vector unsigned char __c) {
391*67e74705SXin Li   return (vector unsigned short)__builtin_s390_vperm(
392*67e74705SXin Li            (vector unsigned char)__a, (vector unsigned char)__b, __c);
393*67e74705SXin Li }
394*67e74705SXin Li 
395*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_perm(vector bool short __a,vector bool short __b,vector unsigned char __c)396*67e74705SXin Li vec_perm(vector bool short __a, vector bool short __b,
397*67e74705SXin Li          vector unsigned char __c) {
398*67e74705SXin Li   return (vector bool short)__builtin_s390_vperm(
399*67e74705SXin Li            (vector unsigned char)__a, (vector unsigned char)__b, __c);
400*67e74705SXin Li }
401*67e74705SXin Li 
402*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_perm(vector signed int __a,vector signed int __b,vector unsigned char __c)403*67e74705SXin Li vec_perm(vector signed int __a, vector signed int __b,
404*67e74705SXin Li          vector unsigned char __c) {
405*67e74705SXin Li   return (vector signed int)__builtin_s390_vperm(
406*67e74705SXin Li            (vector unsigned char)__a, (vector unsigned char)__b, __c);
407*67e74705SXin Li }
408*67e74705SXin Li 
409*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_perm(vector unsigned int __a,vector unsigned int __b,vector unsigned char __c)410*67e74705SXin Li vec_perm(vector unsigned int __a, vector unsigned int __b,
411*67e74705SXin Li          vector unsigned char __c) {
412*67e74705SXin Li   return (vector unsigned int)__builtin_s390_vperm(
413*67e74705SXin Li            (vector unsigned char)__a, (vector unsigned char)__b, __c);
414*67e74705SXin Li }
415*67e74705SXin Li 
416*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_perm(vector bool int __a,vector bool int __b,vector unsigned char __c)417*67e74705SXin Li vec_perm(vector bool int __a, vector bool int __b,
418*67e74705SXin Li          vector unsigned char __c) {
419*67e74705SXin Li   return (vector bool int)__builtin_s390_vperm(
420*67e74705SXin Li            (vector unsigned char)__a, (vector unsigned char)__b, __c);
421*67e74705SXin Li }
422*67e74705SXin Li 
423*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_perm(vector signed long long __a,vector signed long long __b,vector unsigned char __c)424*67e74705SXin Li vec_perm(vector signed long long __a, vector signed long long __b,
425*67e74705SXin Li          vector unsigned char __c) {
426*67e74705SXin Li   return (vector signed long long)__builtin_s390_vperm(
427*67e74705SXin Li            (vector unsigned char)__a, (vector unsigned char)__b, __c);
428*67e74705SXin Li }
429*67e74705SXin Li 
430*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_perm(vector unsigned long long __a,vector unsigned long long __b,vector unsigned char __c)431*67e74705SXin Li vec_perm(vector unsigned long long __a, vector unsigned long long __b,
432*67e74705SXin Li          vector unsigned char __c) {
433*67e74705SXin Li   return (vector unsigned long long)__builtin_s390_vperm(
434*67e74705SXin Li            (vector unsigned char)__a, (vector unsigned char)__b, __c);
435*67e74705SXin Li }
436*67e74705SXin Li 
437*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_perm(vector bool long long __a,vector bool long long __b,vector unsigned char __c)438*67e74705SXin Li vec_perm(vector bool long long __a, vector bool long long __b,
439*67e74705SXin Li          vector unsigned char __c) {
440*67e74705SXin Li   return (vector bool long long)__builtin_s390_vperm(
441*67e74705SXin Li            (vector unsigned char)__a, (vector unsigned char)__b, __c);
442*67e74705SXin Li }
443*67e74705SXin Li 
444*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_perm(vector double __a,vector double __b,vector unsigned char __c)445*67e74705SXin Li vec_perm(vector double __a, vector double __b,
446*67e74705SXin Li          vector unsigned char __c) {
447*67e74705SXin Li   return (vector double)__builtin_s390_vperm(
448*67e74705SXin Li            (vector unsigned char)__a, (vector unsigned char)__b, __c);
449*67e74705SXin Li }
450*67e74705SXin Li 
451*67e74705SXin Li /*-- vec_permi --------------------------------------------------------------*/
452*67e74705SXin Li 
453*67e74705SXin Li extern __ATTRS_o vector signed long long
454*67e74705SXin Li vec_permi(vector signed long long __a, vector signed long long __b, int __c)
455*67e74705SXin Li   __constant_range(__c, 0, 3);
456*67e74705SXin Li 
457*67e74705SXin Li extern __ATTRS_o vector unsigned long long
458*67e74705SXin Li vec_permi(vector unsigned long long __a, vector unsigned long long __b, int __c)
459*67e74705SXin Li   __constant_range(__c, 0, 3);
460*67e74705SXin Li 
461*67e74705SXin Li extern __ATTRS_o vector bool long long
462*67e74705SXin Li vec_permi(vector bool long long __a, vector bool long long __b, int __c)
463*67e74705SXin Li   __constant_range(__c, 0, 3);
464*67e74705SXin Li 
465*67e74705SXin Li extern __ATTRS_o vector double
466*67e74705SXin Li vec_permi(vector double __a, vector double __b, int __c)
467*67e74705SXin Li   __constant_range(__c, 0, 3);
468*67e74705SXin Li 
469*67e74705SXin Li #define vec_permi(X, Y, Z) ((__typeof__((vec_permi)((X), (Y), (Z)))) \
470*67e74705SXin Li   __builtin_s390_vpdi((vector unsigned long long)(X), \
471*67e74705SXin Li                       (vector unsigned long long)(Y), \
472*67e74705SXin Li                       (((Z) & 2) << 1) | ((Z) & 1)))
473*67e74705SXin Li 
474*67e74705SXin Li /*-- vec_sel ----------------------------------------------------------------*/
475*67e74705SXin Li 
476*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_sel(vector signed char __a,vector signed char __b,vector unsigned char __c)477*67e74705SXin Li vec_sel(vector signed char __a, vector signed char __b,
478*67e74705SXin Li         vector unsigned char __c) {
479*67e74705SXin Li   return ((vector signed char)__c & __b) | (~(vector signed char)__c & __a);
480*67e74705SXin Li }
481*67e74705SXin Li 
482*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_sel(vector signed char __a,vector signed char __b,vector bool char __c)483*67e74705SXin Li vec_sel(vector signed char __a, vector signed char __b, vector bool char __c) {
484*67e74705SXin Li   return ((vector signed char)__c & __b) | (~(vector signed char)__c & __a);
485*67e74705SXin Li }
486*67e74705SXin Li 
487*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_sel(vector bool char __a,vector bool char __b,vector unsigned char __c)488*67e74705SXin Li vec_sel(vector bool char __a, vector bool char __b, vector unsigned char __c) {
489*67e74705SXin Li   return ((vector bool char)__c & __b) | (~(vector bool char)__c & __a);
490*67e74705SXin Li }
491*67e74705SXin Li 
492*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_sel(vector bool char __a,vector bool char __b,vector bool char __c)493*67e74705SXin Li vec_sel(vector bool char __a, vector bool char __b, vector bool char __c) {
494*67e74705SXin Li   return (__c & __b) | (~__c & __a);
495*67e74705SXin Li }
496*67e74705SXin Li 
497*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_sel(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)498*67e74705SXin Li vec_sel(vector unsigned char __a, vector unsigned char __b,
499*67e74705SXin Li         vector unsigned char __c) {
500*67e74705SXin Li   return (__c & __b) | (~__c & __a);
501*67e74705SXin Li }
502*67e74705SXin Li 
503*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_sel(vector unsigned char __a,vector unsigned char __b,vector bool char __c)504*67e74705SXin Li vec_sel(vector unsigned char __a, vector unsigned char __b,
505*67e74705SXin Li         vector bool char __c) {
506*67e74705SXin Li   return ((vector unsigned char)__c & __b) | (~(vector unsigned char)__c & __a);
507*67e74705SXin Li }
508*67e74705SXin Li 
509*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_sel(vector signed short __a,vector signed short __b,vector unsigned short __c)510*67e74705SXin Li vec_sel(vector signed short __a, vector signed short __b,
511*67e74705SXin Li         vector unsigned short __c) {
512*67e74705SXin Li   return ((vector signed short)__c & __b) | (~(vector signed short)__c & __a);
513*67e74705SXin Li }
514*67e74705SXin Li 
515*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_sel(vector signed short __a,vector signed short __b,vector bool short __c)516*67e74705SXin Li vec_sel(vector signed short __a, vector signed short __b,
517*67e74705SXin Li         vector bool short __c) {
518*67e74705SXin Li   return ((vector signed short)__c & __b) | (~(vector signed short)__c & __a);
519*67e74705SXin Li }
520*67e74705SXin Li 
521*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_sel(vector bool short __a,vector bool short __b,vector unsigned short __c)522*67e74705SXin Li vec_sel(vector bool short __a, vector bool short __b,
523*67e74705SXin Li         vector unsigned short __c) {
524*67e74705SXin Li   return ((vector bool short)__c & __b) | (~(vector bool short)__c & __a);
525*67e74705SXin Li }
526*67e74705SXin Li 
527*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_sel(vector bool short __a,vector bool short __b,vector bool short __c)528*67e74705SXin Li vec_sel(vector bool short __a, vector bool short __b, vector bool short __c) {
529*67e74705SXin Li   return (__c & __b) | (~__c & __a);
530*67e74705SXin Li }
531*67e74705SXin Li 
532*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_sel(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)533*67e74705SXin Li vec_sel(vector unsigned short __a, vector unsigned short __b,
534*67e74705SXin Li         vector unsigned short __c) {
535*67e74705SXin Li   return (__c & __b) | (~__c & __a);
536*67e74705SXin Li }
537*67e74705SXin Li 
538*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_sel(vector unsigned short __a,vector unsigned short __b,vector bool short __c)539*67e74705SXin Li vec_sel(vector unsigned short __a, vector unsigned short __b,
540*67e74705SXin Li         vector bool short __c) {
541*67e74705SXin Li   return (((vector unsigned short)__c & __b) |
542*67e74705SXin Li           (~(vector unsigned short)__c & __a));
543*67e74705SXin Li }
544*67e74705SXin Li 
545*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_sel(vector signed int __a,vector signed int __b,vector unsigned int __c)546*67e74705SXin Li vec_sel(vector signed int __a, vector signed int __b,
547*67e74705SXin Li         vector unsigned int __c) {
548*67e74705SXin Li   return ((vector signed int)__c & __b) | (~(vector signed int)__c & __a);
549*67e74705SXin Li }
550*67e74705SXin Li 
551*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_sel(vector signed int __a,vector signed int __b,vector bool int __c)552*67e74705SXin Li vec_sel(vector signed int __a, vector signed int __b, vector bool int __c) {
553*67e74705SXin Li   return ((vector signed int)__c & __b) | (~(vector signed int)__c & __a);
554*67e74705SXin Li }
555*67e74705SXin Li 
556*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_sel(vector bool int __a,vector bool int __b,vector unsigned int __c)557*67e74705SXin Li vec_sel(vector bool int __a, vector bool int __b, vector unsigned int __c) {
558*67e74705SXin Li   return ((vector bool int)__c & __b) | (~(vector bool int)__c & __a);
559*67e74705SXin Li }
560*67e74705SXin Li 
561*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_sel(vector bool int __a,vector bool int __b,vector bool int __c)562*67e74705SXin Li vec_sel(vector bool int __a, vector bool int __b, vector bool int __c) {
563*67e74705SXin Li   return (__c & __b) | (~__c & __a);
564*67e74705SXin Li }
565*67e74705SXin Li 
566*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_sel(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)567*67e74705SXin Li vec_sel(vector unsigned int __a, vector unsigned int __b,
568*67e74705SXin Li         vector unsigned int __c) {
569*67e74705SXin Li   return (__c & __b) | (~__c & __a);
570*67e74705SXin Li }
571*67e74705SXin Li 
572*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_sel(vector unsigned int __a,vector unsigned int __b,vector bool int __c)573*67e74705SXin Li vec_sel(vector unsigned int __a, vector unsigned int __b, vector bool int __c) {
574*67e74705SXin Li   return ((vector unsigned int)__c & __b) | (~(vector unsigned int)__c & __a);
575*67e74705SXin Li }
576*67e74705SXin Li 
577*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_sel(vector signed long long __a,vector signed long long __b,vector unsigned long long __c)578*67e74705SXin Li vec_sel(vector signed long long __a, vector signed long long __b,
579*67e74705SXin Li         vector unsigned long long __c) {
580*67e74705SXin Li   return (((vector signed long long)__c & __b) |
581*67e74705SXin Li           (~(vector signed long long)__c & __a));
582*67e74705SXin Li }
583*67e74705SXin Li 
584*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_sel(vector signed long long __a,vector signed long long __b,vector bool long long __c)585*67e74705SXin Li vec_sel(vector signed long long __a, vector signed long long __b,
586*67e74705SXin Li         vector bool long long __c) {
587*67e74705SXin Li   return (((vector signed long long)__c & __b) |
588*67e74705SXin Li           (~(vector signed long long)__c & __a));
589*67e74705SXin Li }
590*67e74705SXin Li 
591*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_sel(vector bool long long __a,vector bool long long __b,vector unsigned long long __c)592*67e74705SXin Li vec_sel(vector bool long long __a, vector bool long long __b,
593*67e74705SXin Li         vector unsigned long long __c) {
594*67e74705SXin Li   return (((vector bool long long)__c & __b) |
595*67e74705SXin Li           (~(vector bool long long)__c & __a));
596*67e74705SXin Li }
597*67e74705SXin Li 
598*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_sel(vector bool long long __a,vector bool long long __b,vector bool long long __c)599*67e74705SXin Li vec_sel(vector bool long long __a, vector bool long long __b,
600*67e74705SXin Li         vector bool long long __c) {
601*67e74705SXin Li   return (__c & __b) | (~__c & __a);
602*67e74705SXin Li }
603*67e74705SXin Li 
604*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_sel(vector unsigned long long __a,vector unsigned long long __b,vector unsigned long long __c)605*67e74705SXin Li vec_sel(vector unsigned long long __a, vector unsigned long long __b,
606*67e74705SXin Li         vector unsigned long long __c) {
607*67e74705SXin Li   return (__c & __b) | (~__c & __a);
608*67e74705SXin Li }
609*67e74705SXin Li 
610*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_sel(vector unsigned long long __a,vector unsigned long long __b,vector bool long long __c)611*67e74705SXin Li vec_sel(vector unsigned long long __a, vector unsigned long long __b,
612*67e74705SXin Li         vector bool long long __c) {
613*67e74705SXin Li   return (((vector unsigned long long)__c & __b) |
614*67e74705SXin Li           (~(vector unsigned long long)__c & __a));
615*67e74705SXin Li }
616*67e74705SXin Li 
617*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_sel(vector double __a,vector double __b,vector unsigned long long __c)618*67e74705SXin Li vec_sel(vector double __a, vector double __b, vector unsigned long long __c) {
619*67e74705SXin Li   return (vector double)((__c & (vector unsigned long long)__b) |
620*67e74705SXin Li                          (~__c & (vector unsigned long long)__a));
621*67e74705SXin Li }
622*67e74705SXin Li 
623*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_sel(vector double __a,vector double __b,vector bool long long __c)624*67e74705SXin Li vec_sel(vector double __a, vector double __b, vector bool long long __c) {
625*67e74705SXin Li   vector unsigned long long __ac = (vector unsigned long long)__a;
626*67e74705SXin Li   vector unsigned long long __bc = (vector unsigned long long)__b;
627*67e74705SXin Li   vector unsigned long long __cc = (vector unsigned long long)__c;
628*67e74705SXin Li   return (vector double)((__cc & __bc) | (~__cc & __ac));
629*67e74705SXin Li }
630*67e74705SXin Li 
631*67e74705SXin Li /*-- vec_gather_element -----------------------------------------------------*/
632*67e74705SXin Li 
633*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_gather_element(vector signed int __vec,vector unsigned int __offset,const signed int * __ptr,int __index)634*67e74705SXin Li vec_gather_element(vector signed int __vec, vector unsigned int __offset,
635*67e74705SXin Li                    const signed int *__ptr, int __index)
636*67e74705SXin Li   __constant_range(__index, 0, 3) {
637*67e74705SXin Li   __vec[__index] = *(const signed int *)(
638*67e74705SXin Li     (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
639*67e74705SXin Li   return __vec;
640*67e74705SXin Li }
641*67e74705SXin Li 
642*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_gather_element(vector bool int __vec,vector unsigned int __offset,const unsigned int * __ptr,int __index)643*67e74705SXin Li vec_gather_element(vector bool int __vec, vector unsigned int __offset,
644*67e74705SXin Li                    const unsigned int *__ptr, int __index)
645*67e74705SXin Li   __constant_range(__index, 0, 3) {
646*67e74705SXin Li   __vec[__index] = *(const unsigned int *)(
647*67e74705SXin Li     (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
648*67e74705SXin Li   return __vec;
649*67e74705SXin Li }
650*67e74705SXin Li 
651*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_gather_element(vector unsigned int __vec,vector unsigned int __offset,const unsigned int * __ptr,int __index)652*67e74705SXin Li vec_gather_element(vector unsigned int __vec, vector unsigned int __offset,
653*67e74705SXin Li                    const unsigned int *__ptr, int __index)
654*67e74705SXin Li   __constant_range(__index, 0, 3) {
655*67e74705SXin Li   __vec[__index] = *(const unsigned int *)(
656*67e74705SXin Li     (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
657*67e74705SXin Li   return __vec;
658*67e74705SXin Li }
659*67e74705SXin Li 
660*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_gather_element(vector signed long long __vec,vector unsigned long long __offset,const signed long long * __ptr,int __index)661*67e74705SXin Li vec_gather_element(vector signed long long __vec,
662*67e74705SXin Li                    vector unsigned long long __offset,
663*67e74705SXin Li                    const signed long long *__ptr, int __index)
664*67e74705SXin Li   __constant_range(__index, 0, 1) {
665*67e74705SXin Li   __vec[__index] = *(const signed long long *)(
666*67e74705SXin Li     (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
667*67e74705SXin Li   return __vec;
668*67e74705SXin Li }
669*67e74705SXin Li 
670*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_gather_element(vector bool long long __vec,vector unsigned long long __offset,const unsigned long long * __ptr,int __index)671*67e74705SXin Li vec_gather_element(vector bool long long __vec,
672*67e74705SXin Li                    vector unsigned long long __offset,
673*67e74705SXin Li                    const unsigned long long *__ptr, int __index)
674*67e74705SXin Li   __constant_range(__index, 0, 1) {
675*67e74705SXin Li   __vec[__index] = *(const unsigned long long *)(
676*67e74705SXin Li     (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
677*67e74705SXin Li   return __vec;
678*67e74705SXin Li }
679*67e74705SXin Li 
680*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_gather_element(vector unsigned long long __vec,vector unsigned long long __offset,const unsigned long long * __ptr,int __index)681*67e74705SXin Li vec_gather_element(vector unsigned long long __vec,
682*67e74705SXin Li                    vector unsigned long long __offset,
683*67e74705SXin Li                    const unsigned long long *__ptr, int __index)
684*67e74705SXin Li   __constant_range(__index, 0, 1) {
685*67e74705SXin Li   __vec[__index] = *(const unsigned long long *)(
686*67e74705SXin Li     (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
687*67e74705SXin Li   return __vec;
688*67e74705SXin Li }
689*67e74705SXin Li 
690*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_gather_element(vector double __vec,vector unsigned long long __offset,const double * __ptr,int __index)691*67e74705SXin Li vec_gather_element(vector double __vec, vector unsigned long long __offset,
692*67e74705SXin Li                    const double *__ptr, int __index)
693*67e74705SXin Li   __constant_range(__index, 0, 1) {
694*67e74705SXin Li   __vec[__index] = *(const double *)(
695*67e74705SXin Li     (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
696*67e74705SXin Li   return __vec;
697*67e74705SXin Li }
698*67e74705SXin Li 
699*67e74705SXin Li /*-- vec_scatter_element ----------------------------------------------------*/
700*67e74705SXin Li 
701*67e74705SXin Li static inline __ATTRS_o_ai void
vec_scatter_element(vector signed int __vec,vector unsigned int __offset,signed int * __ptr,int __index)702*67e74705SXin Li vec_scatter_element(vector signed int __vec, vector unsigned int __offset,
703*67e74705SXin Li                     signed int *__ptr, int __index)
704*67e74705SXin Li   __constant_range(__index, 0, 3) {
705*67e74705SXin Li   *(signed int *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
706*67e74705SXin Li     __vec[__index];
707*67e74705SXin Li }
708*67e74705SXin Li 
709*67e74705SXin Li static inline __ATTRS_o_ai void
vec_scatter_element(vector bool int __vec,vector unsigned int __offset,unsigned int * __ptr,int __index)710*67e74705SXin Li vec_scatter_element(vector bool int __vec, vector unsigned int __offset,
711*67e74705SXin Li                     unsigned int *__ptr, int __index)
712*67e74705SXin Li   __constant_range(__index, 0, 3) {
713*67e74705SXin Li   *(unsigned int *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
714*67e74705SXin Li     __vec[__index];
715*67e74705SXin Li }
716*67e74705SXin Li 
717*67e74705SXin Li static inline __ATTRS_o_ai void
vec_scatter_element(vector unsigned int __vec,vector unsigned int __offset,unsigned int * __ptr,int __index)718*67e74705SXin Li vec_scatter_element(vector unsigned int __vec, vector unsigned int __offset,
719*67e74705SXin Li                     unsigned int *__ptr, int __index)
720*67e74705SXin Li   __constant_range(__index, 0, 3) {
721*67e74705SXin Li   *(unsigned int *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
722*67e74705SXin Li     __vec[__index];
723*67e74705SXin Li }
724*67e74705SXin Li 
725*67e74705SXin Li static inline __ATTRS_o_ai void
vec_scatter_element(vector signed long long __vec,vector unsigned long long __offset,signed long long * __ptr,int __index)726*67e74705SXin Li vec_scatter_element(vector signed long long __vec,
727*67e74705SXin Li                     vector unsigned long long __offset,
728*67e74705SXin Li                     signed long long *__ptr, int __index)
729*67e74705SXin Li   __constant_range(__index, 0, 1) {
730*67e74705SXin Li   *(signed long long *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
731*67e74705SXin Li     __vec[__index];
732*67e74705SXin Li }
733*67e74705SXin Li 
734*67e74705SXin Li static inline __ATTRS_o_ai void
vec_scatter_element(vector bool long long __vec,vector unsigned long long __offset,unsigned long long * __ptr,int __index)735*67e74705SXin Li vec_scatter_element(vector bool long long __vec,
736*67e74705SXin Li                     vector unsigned long long __offset,
737*67e74705SXin Li                     unsigned long long *__ptr, int __index)
738*67e74705SXin Li   __constant_range(__index, 0, 1) {
739*67e74705SXin Li   *(unsigned long long *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
740*67e74705SXin Li     __vec[__index];
741*67e74705SXin Li }
742*67e74705SXin Li 
743*67e74705SXin Li static inline __ATTRS_o_ai void
vec_scatter_element(vector unsigned long long __vec,vector unsigned long long __offset,unsigned long long * __ptr,int __index)744*67e74705SXin Li vec_scatter_element(vector unsigned long long __vec,
745*67e74705SXin Li                     vector unsigned long long __offset,
746*67e74705SXin Li                     unsigned long long *__ptr, int __index)
747*67e74705SXin Li   __constant_range(__index, 0, 1) {
748*67e74705SXin Li   *(unsigned long long *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
749*67e74705SXin Li     __vec[__index];
750*67e74705SXin Li }
751*67e74705SXin Li 
752*67e74705SXin Li static inline __ATTRS_o_ai void
vec_scatter_element(vector double __vec,vector unsigned long long __offset,double * __ptr,int __index)753*67e74705SXin Li vec_scatter_element(vector double __vec, vector unsigned long long __offset,
754*67e74705SXin Li                     double *__ptr, int __index)
755*67e74705SXin Li   __constant_range(__index, 0, 1) {
756*67e74705SXin Li   *(double *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
757*67e74705SXin Li     __vec[__index];
758*67e74705SXin Li }
759*67e74705SXin Li 
760*67e74705SXin Li /*-- vec_xld2 ---------------------------------------------------------------*/
761*67e74705SXin Li 
762*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_xld2(long __offset,const signed char * __ptr)763*67e74705SXin Li vec_xld2(long __offset, const signed char *__ptr) {
764*67e74705SXin Li   return *(const vector signed char *)((__INTPTR_TYPE__)__ptr + __offset);
765*67e74705SXin Li }
766*67e74705SXin Li 
767*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_xld2(long __offset,const unsigned char * __ptr)768*67e74705SXin Li vec_xld2(long __offset, const unsigned char *__ptr) {
769*67e74705SXin Li   return *(const vector unsigned char *)((__INTPTR_TYPE__)__ptr + __offset);
770*67e74705SXin Li }
771*67e74705SXin Li 
772*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_xld2(long __offset,const signed short * __ptr)773*67e74705SXin Li vec_xld2(long __offset, const signed short *__ptr) {
774*67e74705SXin Li   return *(const vector signed short *)((__INTPTR_TYPE__)__ptr + __offset);
775*67e74705SXin Li }
776*67e74705SXin Li 
777*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_xld2(long __offset,const unsigned short * __ptr)778*67e74705SXin Li vec_xld2(long __offset, const unsigned short *__ptr) {
779*67e74705SXin Li   return *(const vector unsigned short *)((__INTPTR_TYPE__)__ptr + __offset);
780*67e74705SXin Li }
781*67e74705SXin Li 
782*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_xld2(long __offset,const signed int * __ptr)783*67e74705SXin Li vec_xld2(long __offset, const signed int *__ptr) {
784*67e74705SXin Li   return *(const vector signed int *)((__INTPTR_TYPE__)__ptr + __offset);
785*67e74705SXin Li }
786*67e74705SXin Li 
787*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_xld2(long __offset,const unsigned int * __ptr)788*67e74705SXin Li vec_xld2(long __offset, const unsigned int *__ptr) {
789*67e74705SXin Li   return *(const vector unsigned int *)((__INTPTR_TYPE__)__ptr + __offset);
790*67e74705SXin Li }
791*67e74705SXin Li 
792*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_xld2(long __offset,const signed long long * __ptr)793*67e74705SXin Li vec_xld2(long __offset, const signed long long *__ptr) {
794*67e74705SXin Li   return *(const vector signed long long *)((__INTPTR_TYPE__)__ptr + __offset);
795*67e74705SXin Li }
796*67e74705SXin Li 
797*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_xld2(long __offset,const unsigned long long * __ptr)798*67e74705SXin Li vec_xld2(long __offset, const unsigned long long *__ptr) {
799*67e74705SXin Li   return *(const vector unsigned long long *)((__INTPTR_TYPE__)__ptr + __offset);
800*67e74705SXin Li }
801*67e74705SXin Li 
802*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_xld2(long __offset,const double * __ptr)803*67e74705SXin Li vec_xld2(long __offset, const double *__ptr) {
804*67e74705SXin Li   return *(const vector double *)((__INTPTR_TYPE__)__ptr + __offset);
805*67e74705SXin Li }
806*67e74705SXin Li 
807*67e74705SXin Li /*-- vec_xlw4 ---------------------------------------------------------------*/
808*67e74705SXin Li 
809*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_xlw4(long __offset,const signed char * __ptr)810*67e74705SXin Li vec_xlw4(long __offset, const signed char *__ptr) {
811*67e74705SXin Li   return *(const vector signed char *)((__INTPTR_TYPE__)__ptr + __offset);
812*67e74705SXin Li }
813*67e74705SXin Li 
814*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_xlw4(long __offset,const unsigned char * __ptr)815*67e74705SXin Li vec_xlw4(long __offset, const unsigned char *__ptr) {
816*67e74705SXin Li   return *(const vector unsigned char *)((__INTPTR_TYPE__)__ptr + __offset);
817*67e74705SXin Li }
818*67e74705SXin Li 
819*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_xlw4(long __offset,const signed short * __ptr)820*67e74705SXin Li vec_xlw4(long __offset, const signed short *__ptr) {
821*67e74705SXin Li   return *(const vector signed short *)((__INTPTR_TYPE__)__ptr + __offset);
822*67e74705SXin Li }
823*67e74705SXin Li 
824*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_xlw4(long __offset,const unsigned short * __ptr)825*67e74705SXin Li vec_xlw4(long __offset, const unsigned short *__ptr) {
826*67e74705SXin Li   return *(const vector unsigned short *)((__INTPTR_TYPE__)__ptr + __offset);
827*67e74705SXin Li }
828*67e74705SXin Li 
829*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_xlw4(long __offset,const signed int * __ptr)830*67e74705SXin Li vec_xlw4(long __offset, const signed int *__ptr) {
831*67e74705SXin Li   return *(const vector signed int *)((__INTPTR_TYPE__)__ptr + __offset);
832*67e74705SXin Li }
833*67e74705SXin Li 
834*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_xlw4(long __offset,const unsigned int * __ptr)835*67e74705SXin Li vec_xlw4(long __offset, const unsigned int *__ptr) {
836*67e74705SXin Li   return *(const vector unsigned int *)((__INTPTR_TYPE__)__ptr + __offset);
837*67e74705SXin Li }
838*67e74705SXin Li 
839*67e74705SXin Li /*-- vec_xstd2 --------------------------------------------------------------*/
840*67e74705SXin Li 
841*67e74705SXin Li static inline __ATTRS_o_ai void
vec_xstd2(vector signed char __vec,long __offset,signed char * __ptr)842*67e74705SXin Li vec_xstd2(vector signed char __vec, long __offset, signed char *__ptr) {
843*67e74705SXin Li   *(vector signed char *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
844*67e74705SXin Li }
845*67e74705SXin Li 
846*67e74705SXin Li static inline __ATTRS_o_ai void
vec_xstd2(vector unsigned char __vec,long __offset,unsigned char * __ptr)847*67e74705SXin Li vec_xstd2(vector unsigned char __vec, long __offset, unsigned char *__ptr) {
848*67e74705SXin Li   *(vector unsigned char *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
849*67e74705SXin Li }
850*67e74705SXin Li 
851*67e74705SXin Li static inline __ATTRS_o_ai void
vec_xstd2(vector signed short __vec,long __offset,signed short * __ptr)852*67e74705SXin Li vec_xstd2(vector signed short __vec, long __offset, signed short *__ptr) {
853*67e74705SXin Li   *(vector signed short *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
854*67e74705SXin Li }
855*67e74705SXin Li 
856*67e74705SXin Li static inline __ATTRS_o_ai void
vec_xstd2(vector unsigned short __vec,long __offset,unsigned short * __ptr)857*67e74705SXin Li vec_xstd2(vector unsigned short __vec, long __offset, unsigned short *__ptr) {
858*67e74705SXin Li   *(vector unsigned short *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
859*67e74705SXin Li }
860*67e74705SXin Li 
861*67e74705SXin Li static inline __ATTRS_o_ai void
vec_xstd2(vector signed int __vec,long __offset,signed int * __ptr)862*67e74705SXin Li vec_xstd2(vector signed int __vec, long __offset, signed int *__ptr) {
863*67e74705SXin Li   *(vector signed int *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
864*67e74705SXin Li }
865*67e74705SXin Li 
866*67e74705SXin Li static inline __ATTRS_o_ai void
vec_xstd2(vector unsigned int __vec,long __offset,unsigned int * __ptr)867*67e74705SXin Li vec_xstd2(vector unsigned int __vec, long __offset, unsigned int *__ptr) {
868*67e74705SXin Li   *(vector unsigned int *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
869*67e74705SXin Li }
870*67e74705SXin Li 
871*67e74705SXin Li static inline __ATTRS_o_ai void
vec_xstd2(vector signed long long __vec,long __offset,signed long long * __ptr)872*67e74705SXin Li vec_xstd2(vector signed long long __vec, long __offset,
873*67e74705SXin Li           signed long long *__ptr) {
874*67e74705SXin Li   *(vector signed long long *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
875*67e74705SXin Li }
876*67e74705SXin Li 
877*67e74705SXin Li static inline __ATTRS_o_ai void
vec_xstd2(vector unsigned long long __vec,long __offset,unsigned long long * __ptr)878*67e74705SXin Li vec_xstd2(vector unsigned long long __vec, long __offset,
879*67e74705SXin Li           unsigned long long *__ptr) {
880*67e74705SXin Li   *(vector unsigned long long *)((__INTPTR_TYPE__)__ptr + __offset) =
881*67e74705SXin Li     __vec;
882*67e74705SXin Li }
883*67e74705SXin Li 
884*67e74705SXin Li static inline __ATTRS_o_ai void
vec_xstd2(vector double __vec,long __offset,double * __ptr)885*67e74705SXin Li vec_xstd2(vector double __vec, long __offset, double *__ptr) {
886*67e74705SXin Li   *(vector double *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
887*67e74705SXin Li }
888*67e74705SXin Li 
889*67e74705SXin Li /*-- vec_xstw4 --------------------------------------------------------------*/
890*67e74705SXin Li 
891*67e74705SXin Li static inline __ATTRS_o_ai void
vec_xstw4(vector signed char __vec,long __offset,signed char * __ptr)892*67e74705SXin Li vec_xstw4(vector signed char __vec, long __offset, signed char *__ptr) {
893*67e74705SXin Li   *(vector signed char *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
894*67e74705SXin Li }
895*67e74705SXin Li 
896*67e74705SXin Li static inline __ATTRS_o_ai void
vec_xstw4(vector unsigned char __vec,long __offset,unsigned char * __ptr)897*67e74705SXin Li vec_xstw4(vector unsigned char __vec, long __offset, unsigned char *__ptr) {
898*67e74705SXin Li   *(vector unsigned char *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
899*67e74705SXin Li }
900*67e74705SXin Li 
901*67e74705SXin Li static inline __ATTRS_o_ai void
vec_xstw4(vector signed short __vec,long __offset,signed short * __ptr)902*67e74705SXin Li vec_xstw4(vector signed short __vec, long __offset, signed short *__ptr) {
903*67e74705SXin Li   *(vector signed short *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
904*67e74705SXin Li }
905*67e74705SXin Li 
906*67e74705SXin Li static inline __ATTRS_o_ai void
vec_xstw4(vector unsigned short __vec,long __offset,unsigned short * __ptr)907*67e74705SXin Li vec_xstw4(vector unsigned short __vec, long __offset, unsigned short *__ptr) {
908*67e74705SXin Li   *(vector unsigned short *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
909*67e74705SXin Li }
910*67e74705SXin Li 
911*67e74705SXin Li static inline __ATTRS_o_ai void
vec_xstw4(vector signed int __vec,long __offset,signed int * __ptr)912*67e74705SXin Li vec_xstw4(vector signed int __vec, long __offset, signed int *__ptr) {
913*67e74705SXin Li   *(vector signed int *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
914*67e74705SXin Li }
915*67e74705SXin Li 
916*67e74705SXin Li static inline __ATTRS_o_ai void
vec_xstw4(vector unsigned int __vec,long __offset,unsigned int * __ptr)917*67e74705SXin Li vec_xstw4(vector unsigned int __vec, long __offset, unsigned int *__ptr) {
918*67e74705SXin Li   *(vector unsigned int *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
919*67e74705SXin Li }
920*67e74705SXin Li 
921*67e74705SXin Li /*-- vec_load_bndry ---------------------------------------------------------*/
922*67e74705SXin Li 
923*67e74705SXin Li extern __ATTRS_o vector signed char
924*67e74705SXin Li vec_load_bndry(const signed char *__ptr, unsigned short __len)
925*67e74705SXin Li   __constant_pow2_range(__len, 64, 4096);
926*67e74705SXin Li 
927*67e74705SXin Li extern __ATTRS_o vector unsigned char
928*67e74705SXin Li vec_load_bndry(const unsigned char *__ptr, unsigned short __len)
929*67e74705SXin Li   __constant_pow2_range(__len, 64, 4096);
930*67e74705SXin Li 
931*67e74705SXin Li extern __ATTRS_o vector signed short
932*67e74705SXin Li vec_load_bndry(const signed short *__ptr, unsigned short __len)
933*67e74705SXin Li   __constant_pow2_range(__len, 64, 4096);
934*67e74705SXin Li 
935*67e74705SXin Li extern __ATTRS_o vector unsigned short
936*67e74705SXin Li vec_load_bndry(const unsigned short *__ptr, unsigned short __len)
937*67e74705SXin Li   __constant_pow2_range(__len, 64, 4096);
938*67e74705SXin Li 
939*67e74705SXin Li extern __ATTRS_o vector signed int
940*67e74705SXin Li vec_load_bndry(const signed int *__ptr, unsigned short __len)
941*67e74705SXin Li   __constant_pow2_range(__len, 64, 4096);
942*67e74705SXin Li 
943*67e74705SXin Li extern __ATTRS_o vector unsigned int
944*67e74705SXin Li vec_load_bndry(const unsigned int *__ptr, unsigned short __len)
945*67e74705SXin Li   __constant_pow2_range(__len, 64, 4096);
946*67e74705SXin Li 
947*67e74705SXin Li extern __ATTRS_o vector signed long long
948*67e74705SXin Li vec_load_bndry(const signed long long *__ptr, unsigned short __len)
949*67e74705SXin Li   __constant_pow2_range(__len, 64, 4096);
950*67e74705SXin Li 
951*67e74705SXin Li extern __ATTRS_o vector unsigned long long
952*67e74705SXin Li vec_load_bndry(const unsigned long long *__ptr, unsigned short __len)
953*67e74705SXin Li   __constant_pow2_range(__len, 64, 4096);
954*67e74705SXin Li 
955*67e74705SXin Li extern __ATTRS_o vector double
956*67e74705SXin Li vec_load_bndry(const double *__ptr, unsigned short __len)
957*67e74705SXin Li   __constant_pow2_range(__len, 64, 4096);
958*67e74705SXin Li 
959*67e74705SXin Li #define vec_load_bndry(X, Y) ((__typeof__((vec_load_bndry)((X), (Y)))) \
960*67e74705SXin Li   __builtin_s390_vlbb((X), ((Y) == 64 ? 0 : \
961*67e74705SXin Li                             (Y) == 128 ? 1 : \
962*67e74705SXin Li                             (Y) == 256 ? 2 : \
963*67e74705SXin Li                             (Y) == 512 ? 3 : \
964*67e74705SXin Li                             (Y) == 1024 ? 4 : \
965*67e74705SXin Li                             (Y) == 2048 ? 5 : \
966*67e74705SXin Li                             (Y) == 4096 ? 6 : -1)))
967*67e74705SXin Li 
968*67e74705SXin Li /*-- vec_load_len -----------------------------------------------------------*/
969*67e74705SXin Li 
970*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_load_len(const signed char * __ptr,unsigned int __len)971*67e74705SXin Li vec_load_len(const signed char *__ptr, unsigned int __len) {
972*67e74705SXin Li   return (vector signed char)__builtin_s390_vll(__len, __ptr);
973*67e74705SXin Li }
974*67e74705SXin Li 
975*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_load_len(const unsigned char * __ptr,unsigned int __len)976*67e74705SXin Li vec_load_len(const unsigned char *__ptr, unsigned int __len) {
977*67e74705SXin Li   return (vector unsigned char)__builtin_s390_vll(__len, __ptr);
978*67e74705SXin Li }
979*67e74705SXin Li 
980*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_load_len(const signed short * __ptr,unsigned int __len)981*67e74705SXin Li vec_load_len(const signed short *__ptr, unsigned int __len) {
982*67e74705SXin Li   return (vector signed short)__builtin_s390_vll(__len, __ptr);
983*67e74705SXin Li }
984*67e74705SXin Li 
985*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_load_len(const unsigned short * __ptr,unsigned int __len)986*67e74705SXin Li vec_load_len(const unsigned short *__ptr, unsigned int __len) {
987*67e74705SXin Li   return (vector unsigned short)__builtin_s390_vll(__len, __ptr);
988*67e74705SXin Li }
989*67e74705SXin Li 
990*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_load_len(const signed int * __ptr,unsigned int __len)991*67e74705SXin Li vec_load_len(const signed int *__ptr, unsigned int __len) {
992*67e74705SXin Li   return (vector signed int)__builtin_s390_vll(__len, __ptr);
993*67e74705SXin Li }
994*67e74705SXin Li 
995*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_load_len(const unsigned int * __ptr,unsigned int __len)996*67e74705SXin Li vec_load_len(const unsigned int *__ptr, unsigned int __len) {
997*67e74705SXin Li   return (vector unsigned int)__builtin_s390_vll(__len, __ptr);
998*67e74705SXin Li }
999*67e74705SXin Li 
1000*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_load_len(const signed long long * __ptr,unsigned int __len)1001*67e74705SXin Li vec_load_len(const signed long long *__ptr, unsigned int __len) {
1002*67e74705SXin Li   return (vector signed long long)__builtin_s390_vll(__len, __ptr);
1003*67e74705SXin Li }
1004*67e74705SXin Li 
1005*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_load_len(const unsigned long long * __ptr,unsigned int __len)1006*67e74705SXin Li vec_load_len(const unsigned long long *__ptr, unsigned int __len) {
1007*67e74705SXin Li   return (vector unsigned long long)__builtin_s390_vll(__len, __ptr);
1008*67e74705SXin Li }
1009*67e74705SXin Li 
1010*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_load_len(const double * __ptr,unsigned int __len)1011*67e74705SXin Li vec_load_len(const double *__ptr, unsigned int __len) {
1012*67e74705SXin Li   return (vector double)__builtin_s390_vll(__len, __ptr);
1013*67e74705SXin Li }
1014*67e74705SXin Li 
1015*67e74705SXin Li /*-- vec_store_len ----------------------------------------------------------*/
1016*67e74705SXin Li 
1017*67e74705SXin Li static inline __ATTRS_o_ai void
vec_store_len(vector signed char __vec,signed char * __ptr,unsigned int __len)1018*67e74705SXin Li vec_store_len(vector signed char __vec, signed char *__ptr,
1019*67e74705SXin Li               unsigned int __len) {
1020*67e74705SXin Li   __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1021*67e74705SXin Li }
1022*67e74705SXin Li 
1023*67e74705SXin Li static inline __ATTRS_o_ai void
vec_store_len(vector unsigned char __vec,unsigned char * __ptr,unsigned int __len)1024*67e74705SXin Li vec_store_len(vector unsigned char __vec, unsigned char *__ptr,
1025*67e74705SXin Li               unsigned int __len) {
1026*67e74705SXin Li   __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1027*67e74705SXin Li }
1028*67e74705SXin Li 
1029*67e74705SXin Li static inline __ATTRS_o_ai void
vec_store_len(vector signed short __vec,signed short * __ptr,unsigned int __len)1030*67e74705SXin Li vec_store_len(vector signed short __vec, signed short *__ptr,
1031*67e74705SXin Li               unsigned int __len) {
1032*67e74705SXin Li   __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1033*67e74705SXin Li }
1034*67e74705SXin Li 
1035*67e74705SXin Li static inline __ATTRS_o_ai void
vec_store_len(vector unsigned short __vec,unsigned short * __ptr,unsigned int __len)1036*67e74705SXin Li vec_store_len(vector unsigned short __vec, unsigned short *__ptr,
1037*67e74705SXin Li               unsigned int __len) {
1038*67e74705SXin Li   __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1039*67e74705SXin Li }
1040*67e74705SXin Li 
1041*67e74705SXin Li static inline __ATTRS_o_ai void
vec_store_len(vector signed int __vec,signed int * __ptr,unsigned int __len)1042*67e74705SXin Li vec_store_len(vector signed int __vec, signed int *__ptr,
1043*67e74705SXin Li               unsigned int __len) {
1044*67e74705SXin Li   __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1045*67e74705SXin Li }
1046*67e74705SXin Li 
1047*67e74705SXin Li static inline __ATTRS_o_ai void
vec_store_len(vector unsigned int __vec,unsigned int * __ptr,unsigned int __len)1048*67e74705SXin Li vec_store_len(vector unsigned int __vec, unsigned int *__ptr,
1049*67e74705SXin Li               unsigned int __len) {
1050*67e74705SXin Li   __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1051*67e74705SXin Li }
1052*67e74705SXin Li 
1053*67e74705SXin Li static inline __ATTRS_o_ai void
vec_store_len(vector signed long long __vec,signed long long * __ptr,unsigned int __len)1054*67e74705SXin Li vec_store_len(vector signed long long __vec, signed long long *__ptr,
1055*67e74705SXin Li               unsigned int __len) {
1056*67e74705SXin Li   __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1057*67e74705SXin Li }
1058*67e74705SXin Li 
1059*67e74705SXin Li static inline __ATTRS_o_ai void
vec_store_len(vector unsigned long long __vec,unsigned long long * __ptr,unsigned int __len)1060*67e74705SXin Li vec_store_len(vector unsigned long long __vec, unsigned long long *__ptr,
1061*67e74705SXin Li               unsigned int __len) {
1062*67e74705SXin Li   __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1063*67e74705SXin Li }
1064*67e74705SXin Li 
1065*67e74705SXin Li static inline __ATTRS_o_ai void
vec_store_len(vector double __vec,double * __ptr,unsigned int __len)1066*67e74705SXin Li vec_store_len(vector double __vec, double *__ptr,
1067*67e74705SXin Li               unsigned int __len) {
1068*67e74705SXin Li   __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1069*67e74705SXin Li }
1070*67e74705SXin Li 
1071*67e74705SXin Li /*-- vec_load_pair ----------------------------------------------------------*/
1072*67e74705SXin Li 
1073*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_load_pair(signed long long __a,signed long long __b)1074*67e74705SXin Li vec_load_pair(signed long long __a, signed long long __b) {
1075*67e74705SXin Li   return (vector signed long long)(__a, __b);
1076*67e74705SXin Li }
1077*67e74705SXin Li 
1078*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_load_pair(unsigned long long __a,unsigned long long __b)1079*67e74705SXin Li vec_load_pair(unsigned long long __a, unsigned long long __b) {
1080*67e74705SXin Li   return (vector unsigned long long)(__a, __b);
1081*67e74705SXin Li }
1082*67e74705SXin Li 
1083*67e74705SXin Li /*-- vec_genmask ------------------------------------------------------------*/
1084*67e74705SXin Li 
1085*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_genmask(unsigned short __mask)1086*67e74705SXin Li vec_genmask(unsigned short __mask)
1087*67e74705SXin Li   __constant(__mask) {
1088*67e74705SXin Li   return (vector unsigned char)(
1089*67e74705SXin Li     __mask & 0x8000 ? 0xff : 0,
1090*67e74705SXin Li     __mask & 0x4000 ? 0xff : 0,
1091*67e74705SXin Li     __mask & 0x2000 ? 0xff : 0,
1092*67e74705SXin Li     __mask & 0x1000 ? 0xff : 0,
1093*67e74705SXin Li     __mask & 0x0800 ? 0xff : 0,
1094*67e74705SXin Li     __mask & 0x0400 ? 0xff : 0,
1095*67e74705SXin Li     __mask & 0x0200 ? 0xff : 0,
1096*67e74705SXin Li     __mask & 0x0100 ? 0xff : 0,
1097*67e74705SXin Li     __mask & 0x0080 ? 0xff : 0,
1098*67e74705SXin Li     __mask & 0x0040 ? 0xff : 0,
1099*67e74705SXin Li     __mask & 0x0020 ? 0xff : 0,
1100*67e74705SXin Li     __mask & 0x0010 ? 0xff : 0,
1101*67e74705SXin Li     __mask & 0x0008 ? 0xff : 0,
1102*67e74705SXin Li     __mask & 0x0004 ? 0xff : 0,
1103*67e74705SXin Li     __mask & 0x0002 ? 0xff : 0,
1104*67e74705SXin Li     __mask & 0x0001 ? 0xff : 0);
1105*67e74705SXin Li }
1106*67e74705SXin Li 
1107*67e74705SXin Li /*-- vec_genmasks_* ---------------------------------------------------------*/
1108*67e74705SXin Li 
1109*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_genmasks_8(unsigned char __first,unsigned char __last)1110*67e74705SXin Li vec_genmasks_8(unsigned char __first, unsigned char __last)
1111*67e74705SXin Li   __constant(__first) __constant(__last) {
1112*67e74705SXin Li   unsigned char __bit1 = __first & 7;
1113*67e74705SXin Li   unsigned char __bit2 = __last & 7;
1114*67e74705SXin Li   unsigned char __mask1 = (unsigned char)(1U << (7 - __bit1) << 1) - 1;
1115*67e74705SXin Li   unsigned char __mask2 = (unsigned char)(1U << (7 - __bit2)) - 1;
1116*67e74705SXin Li   unsigned char __value = (__bit1 <= __bit2 ?
1117*67e74705SXin Li                            __mask1 & ~__mask2 :
1118*67e74705SXin Li                            __mask1 | ~__mask2);
1119*67e74705SXin Li   return (vector unsigned char)__value;
1120*67e74705SXin Li }
1121*67e74705SXin Li 
1122*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_genmasks_16(unsigned char __first,unsigned char __last)1123*67e74705SXin Li vec_genmasks_16(unsigned char __first, unsigned char __last)
1124*67e74705SXin Li   __constant(__first) __constant(__last) {
1125*67e74705SXin Li   unsigned char __bit1 = __first & 15;
1126*67e74705SXin Li   unsigned char __bit2 = __last & 15;
1127*67e74705SXin Li   unsigned short __mask1 = (unsigned short)(1U << (15 - __bit1) << 1) - 1;
1128*67e74705SXin Li   unsigned short __mask2 = (unsigned short)(1U << (15 - __bit2)) - 1;
1129*67e74705SXin Li   unsigned short __value = (__bit1 <= __bit2 ?
1130*67e74705SXin Li                             __mask1 & ~__mask2 :
1131*67e74705SXin Li                             __mask1 | ~__mask2);
1132*67e74705SXin Li   return (vector unsigned short)__value;
1133*67e74705SXin Li }
1134*67e74705SXin Li 
1135*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_genmasks_32(unsigned char __first,unsigned char __last)1136*67e74705SXin Li vec_genmasks_32(unsigned char __first, unsigned char __last)
1137*67e74705SXin Li   __constant(__first) __constant(__last) {
1138*67e74705SXin Li   unsigned char __bit1 = __first & 31;
1139*67e74705SXin Li   unsigned char __bit2 = __last & 31;
1140*67e74705SXin Li   unsigned int __mask1 = (1U << (31 - __bit1) << 1) - 1;
1141*67e74705SXin Li   unsigned int __mask2 = (1U << (31 - __bit2)) - 1;
1142*67e74705SXin Li   unsigned int __value = (__bit1 <= __bit2 ?
1143*67e74705SXin Li                           __mask1 & ~__mask2 :
1144*67e74705SXin Li                           __mask1 | ~__mask2);
1145*67e74705SXin Li   return (vector unsigned int)__value;
1146*67e74705SXin Li }
1147*67e74705SXin Li 
1148*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_genmasks_64(unsigned char __first,unsigned char __last)1149*67e74705SXin Li vec_genmasks_64(unsigned char __first, unsigned char __last)
1150*67e74705SXin Li   __constant(__first) __constant(__last) {
1151*67e74705SXin Li   unsigned char __bit1 = __first & 63;
1152*67e74705SXin Li   unsigned char __bit2 = __last & 63;
1153*67e74705SXin Li   unsigned long long __mask1 = (1ULL << (63 - __bit1) << 1) - 1;
1154*67e74705SXin Li   unsigned long long __mask2 = (1ULL << (63 - __bit2)) - 1;
1155*67e74705SXin Li   unsigned long long __value = (__bit1 <= __bit2 ?
1156*67e74705SXin Li                                 __mask1 & ~__mask2 :
1157*67e74705SXin Li                                 __mask1 | ~__mask2);
1158*67e74705SXin Li   return (vector unsigned long long)__value;
1159*67e74705SXin Li }
1160*67e74705SXin Li 
1161*67e74705SXin Li /*-- vec_splat --------------------------------------------------------------*/
1162*67e74705SXin Li 
1163*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_splat(vector signed char __vec,int __index)1164*67e74705SXin Li vec_splat(vector signed char __vec, int __index)
1165*67e74705SXin Li   __constant_range(__index, 0, 15) {
1166*67e74705SXin Li   return (vector signed char)__vec[__index];
1167*67e74705SXin Li }
1168*67e74705SXin Li 
1169*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_splat(vector bool char __vec,int __index)1170*67e74705SXin Li vec_splat(vector bool char __vec, int __index)
1171*67e74705SXin Li   __constant_range(__index, 0, 15) {
1172*67e74705SXin Li   return (vector bool char)(vector unsigned char)__vec[__index];
1173*67e74705SXin Li }
1174*67e74705SXin Li 
1175*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_splat(vector unsigned char __vec,int __index)1176*67e74705SXin Li vec_splat(vector unsigned char __vec, int __index)
1177*67e74705SXin Li   __constant_range(__index, 0, 15) {
1178*67e74705SXin Li   return (vector unsigned char)__vec[__index];
1179*67e74705SXin Li }
1180*67e74705SXin Li 
1181*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_splat(vector signed short __vec,int __index)1182*67e74705SXin Li vec_splat(vector signed short __vec, int __index)
1183*67e74705SXin Li   __constant_range(__index, 0, 7) {
1184*67e74705SXin Li   return (vector signed short)__vec[__index];
1185*67e74705SXin Li }
1186*67e74705SXin Li 
1187*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_splat(vector bool short __vec,int __index)1188*67e74705SXin Li vec_splat(vector bool short __vec, int __index)
1189*67e74705SXin Li   __constant_range(__index, 0, 7) {
1190*67e74705SXin Li   return (vector bool short)(vector unsigned short)__vec[__index];
1191*67e74705SXin Li }
1192*67e74705SXin Li 
1193*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_splat(vector unsigned short __vec,int __index)1194*67e74705SXin Li vec_splat(vector unsigned short __vec, int __index)
1195*67e74705SXin Li   __constant_range(__index, 0, 7) {
1196*67e74705SXin Li   return (vector unsigned short)__vec[__index];
1197*67e74705SXin Li }
1198*67e74705SXin Li 
1199*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_splat(vector signed int __vec,int __index)1200*67e74705SXin Li vec_splat(vector signed int __vec, int __index)
1201*67e74705SXin Li   __constant_range(__index, 0, 3) {
1202*67e74705SXin Li   return (vector signed int)__vec[__index];
1203*67e74705SXin Li }
1204*67e74705SXin Li 
1205*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_splat(vector bool int __vec,int __index)1206*67e74705SXin Li vec_splat(vector bool int __vec, int __index)
1207*67e74705SXin Li   __constant_range(__index, 0, 3) {
1208*67e74705SXin Li   return (vector bool int)(vector unsigned int)__vec[__index];
1209*67e74705SXin Li }
1210*67e74705SXin Li 
1211*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_splat(vector unsigned int __vec,int __index)1212*67e74705SXin Li vec_splat(vector unsigned int __vec, int __index)
1213*67e74705SXin Li   __constant_range(__index, 0, 3) {
1214*67e74705SXin Li   return (vector unsigned int)__vec[__index];
1215*67e74705SXin Li }
1216*67e74705SXin Li 
1217*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_splat(vector signed long long __vec,int __index)1218*67e74705SXin Li vec_splat(vector signed long long __vec, int __index)
1219*67e74705SXin Li   __constant_range(__index, 0, 1) {
1220*67e74705SXin Li   return (vector signed long long)__vec[__index];
1221*67e74705SXin Li }
1222*67e74705SXin Li 
1223*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_splat(vector bool long long __vec,int __index)1224*67e74705SXin Li vec_splat(vector bool long long __vec, int __index)
1225*67e74705SXin Li   __constant_range(__index, 0, 1) {
1226*67e74705SXin Li   return (vector bool long long)(vector unsigned long long)__vec[__index];
1227*67e74705SXin Li }
1228*67e74705SXin Li 
1229*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_splat(vector unsigned long long __vec,int __index)1230*67e74705SXin Li vec_splat(vector unsigned long long __vec, int __index)
1231*67e74705SXin Li   __constant_range(__index, 0, 1) {
1232*67e74705SXin Li   return (vector unsigned long long)__vec[__index];
1233*67e74705SXin Li }
1234*67e74705SXin Li 
1235*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_splat(vector double __vec,int __index)1236*67e74705SXin Li vec_splat(vector double __vec, int __index)
1237*67e74705SXin Li   __constant_range(__index, 0, 1) {
1238*67e74705SXin Li   return (vector double)__vec[__index];
1239*67e74705SXin Li }
1240*67e74705SXin Li 
1241*67e74705SXin Li /*-- vec_splat_s* -----------------------------------------------------------*/
1242*67e74705SXin Li 
1243*67e74705SXin Li static inline __ATTRS_ai vector signed char
vec_splat_s8(signed char __scalar)1244*67e74705SXin Li vec_splat_s8(signed char __scalar)
1245*67e74705SXin Li   __constant(__scalar) {
1246*67e74705SXin Li   return (vector signed char)__scalar;
1247*67e74705SXin Li }
1248*67e74705SXin Li 
1249*67e74705SXin Li static inline __ATTRS_ai vector signed short
vec_splat_s16(signed short __scalar)1250*67e74705SXin Li vec_splat_s16(signed short __scalar)
1251*67e74705SXin Li   __constant(__scalar) {
1252*67e74705SXin Li   return (vector signed short)__scalar;
1253*67e74705SXin Li }
1254*67e74705SXin Li 
1255*67e74705SXin Li static inline __ATTRS_ai vector signed int
vec_splat_s32(signed short __scalar)1256*67e74705SXin Li vec_splat_s32(signed short __scalar)
1257*67e74705SXin Li   __constant(__scalar) {
1258*67e74705SXin Li   return (vector signed int)(signed int)__scalar;
1259*67e74705SXin Li }
1260*67e74705SXin Li 
1261*67e74705SXin Li static inline __ATTRS_ai vector signed long long
vec_splat_s64(signed short __scalar)1262*67e74705SXin Li vec_splat_s64(signed short __scalar)
1263*67e74705SXin Li   __constant(__scalar) {
1264*67e74705SXin Li   return (vector signed long long)(signed long)__scalar;
1265*67e74705SXin Li }
1266*67e74705SXin Li 
1267*67e74705SXin Li /*-- vec_splat_u* -----------------------------------------------------------*/
1268*67e74705SXin Li 
1269*67e74705SXin Li static inline __ATTRS_ai vector unsigned char
vec_splat_u8(unsigned char __scalar)1270*67e74705SXin Li vec_splat_u8(unsigned char __scalar)
1271*67e74705SXin Li   __constant(__scalar) {
1272*67e74705SXin Li   return (vector unsigned char)__scalar;
1273*67e74705SXin Li }
1274*67e74705SXin Li 
1275*67e74705SXin Li static inline __ATTRS_ai vector unsigned short
vec_splat_u16(unsigned short __scalar)1276*67e74705SXin Li vec_splat_u16(unsigned short __scalar)
1277*67e74705SXin Li   __constant(__scalar) {
1278*67e74705SXin Li   return (vector unsigned short)__scalar;
1279*67e74705SXin Li }
1280*67e74705SXin Li 
1281*67e74705SXin Li static inline __ATTRS_ai vector unsigned int
vec_splat_u32(signed short __scalar)1282*67e74705SXin Li vec_splat_u32(signed short __scalar)
1283*67e74705SXin Li   __constant(__scalar) {
1284*67e74705SXin Li   return (vector unsigned int)(signed int)__scalar;
1285*67e74705SXin Li }
1286*67e74705SXin Li 
1287*67e74705SXin Li static inline __ATTRS_ai vector unsigned long long
vec_splat_u64(signed short __scalar)1288*67e74705SXin Li vec_splat_u64(signed short __scalar)
1289*67e74705SXin Li   __constant(__scalar) {
1290*67e74705SXin Li   return (vector unsigned long long)(signed long long)__scalar;
1291*67e74705SXin Li }
1292*67e74705SXin Li 
1293*67e74705SXin Li /*-- vec_splats -------------------------------------------------------------*/
1294*67e74705SXin Li 
1295*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_splats(signed char __scalar)1296*67e74705SXin Li vec_splats(signed char __scalar) {
1297*67e74705SXin Li   return (vector signed char)__scalar;
1298*67e74705SXin Li }
1299*67e74705SXin Li 
1300*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_splats(unsigned char __scalar)1301*67e74705SXin Li vec_splats(unsigned char __scalar) {
1302*67e74705SXin Li   return (vector unsigned char)__scalar;
1303*67e74705SXin Li }
1304*67e74705SXin Li 
1305*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_splats(signed short __scalar)1306*67e74705SXin Li vec_splats(signed short __scalar) {
1307*67e74705SXin Li   return (vector signed short)__scalar;
1308*67e74705SXin Li }
1309*67e74705SXin Li 
1310*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_splats(unsigned short __scalar)1311*67e74705SXin Li vec_splats(unsigned short __scalar) {
1312*67e74705SXin Li   return (vector unsigned short)__scalar;
1313*67e74705SXin Li }
1314*67e74705SXin Li 
1315*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_splats(signed int __scalar)1316*67e74705SXin Li vec_splats(signed int __scalar) {
1317*67e74705SXin Li   return (vector signed int)__scalar;
1318*67e74705SXin Li }
1319*67e74705SXin Li 
1320*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_splats(unsigned int __scalar)1321*67e74705SXin Li vec_splats(unsigned int __scalar) {
1322*67e74705SXin Li   return (vector unsigned int)__scalar;
1323*67e74705SXin Li }
1324*67e74705SXin Li 
1325*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_splats(signed long long __scalar)1326*67e74705SXin Li vec_splats(signed long long __scalar) {
1327*67e74705SXin Li   return (vector signed long long)__scalar;
1328*67e74705SXin Li }
1329*67e74705SXin Li 
1330*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_splats(unsigned long long __scalar)1331*67e74705SXin Li vec_splats(unsigned long long __scalar) {
1332*67e74705SXin Li   return (vector unsigned long long)__scalar;
1333*67e74705SXin Li }
1334*67e74705SXin Li 
1335*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_splats(double __scalar)1336*67e74705SXin Li vec_splats(double __scalar) {
1337*67e74705SXin Li   return (vector double)__scalar;
1338*67e74705SXin Li }
1339*67e74705SXin Li 
1340*67e74705SXin Li /*-- vec_extend_s64 ---------------------------------------------------------*/
1341*67e74705SXin Li 
1342*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_extend_s64(vector signed char __a)1343*67e74705SXin Li vec_extend_s64(vector signed char __a) {
1344*67e74705SXin Li   return (vector signed long long)(__a[7], __a[15]);
1345*67e74705SXin Li }
1346*67e74705SXin Li 
1347*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_extend_s64(vector signed short __a)1348*67e74705SXin Li vec_extend_s64(vector signed short __a) {
1349*67e74705SXin Li   return (vector signed long long)(__a[3], __a[7]);
1350*67e74705SXin Li }
1351*67e74705SXin Li 
1352*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_extend_s64(vector signed int __a)1353*67e74705SXin Li vec_extend_s64(vector signed int __a) {
1354*67e74705SXin Li   return (vector signed long long)(__a[1], __a[3]);
1355*67e74705SXin Li }
1356*67e74705SXin Li 
1357*67e74705SXin Li /*-- vec_mergeh -------------------------------------------------------------*/
1358*67e74705SXin Li 
1359*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_mergeh(vector signed char __a,vector signed char __b)1360*67e74705SXin Li vec_mergeh(vector signed char __a, vector signed char __b) {
1361*67e74705SXin Li   return (vector signed char)(
1362*67e74705SXin Li     __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3],
1363*67e74705SXin Li     __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
1364*67e74705SXin Li }
1365*67e74705SXin Li 
1366*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_mergeh(vector bool char __a,vector bool char __b)1367*67e74705SXin Li vec_mergeh(vector bool char __a, vector bool char __b) {
1368*67e74705SXin Li   return (vector bool char)(
1369*67e74705SXin Li     __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3],
1370*67e74705SXin Li     __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
1371*67e74705SXin Li }
1372*67e74705SXin Li 
1373*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_mergeh(vector unsigned char __a,vector unsigned char __b)1374*67e74705SXin Li vec_mergeh(vector unsigned char __a, vector unsigned char __b) {
1375*67e74705SXin Li   return (vector unsigned char)(
1376*67e74705SXin Li     __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3],
1377*67e74705SXin Li     __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
1378*67e74705SXin Li }
1379*67e74705SXin Li 
1380*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_mergeh(vector signed short __a,vector signed short __b)1381*67e74705SXin Li vec_mergeh(vector signed short __a, vector signed short __b) {
1382*67e74705SXin Li   return (vector signed short)(
1383*67e74705SXin Li     __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3]);
1384*67e74705SXin Li }
1385*67e74705SXin Li 
1386*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_mergeh(vector bool short __a,vector bool short __b)1387*67e74705SXin Li vec_mergeh(vector bool short __a, vector bool short __b) {
1388*67e74705SXin Li   return (vector bool short)(
1389*67e74705SXin Li     __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3]);
1390*67e74705SXin Li }
1391*67e74705SXin Li 
1392*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_mergeh(vector unsigned short __a,vector unsigned short __b)1393*67e74705SXin Li vec_mergeh(vector unsigned short __a, vector unsigned short __b) {
1394*67e74705SXin Li   return (vector unsigned short)(
1395*67e74705SXin Li     __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3]);
1396*67e74705SXin Li }
1397*67e74705SXin Li 
1398*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_mergeh(vector signed int __a,vector signed int __b)1399*67e74705SXin Li vec_mergeh(vector signed int __a, vector signed int __b) {
1400*67e74705SXin Li   return (vector signed int)(__a[0], __b[0], __a[1], __b[1]);
1401*67e74705SXin Li }
1402*67e74705SXin Li 
1403*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_mergeh(vector bool int __a,vector bool int __b)1404*67e74705SXin Li vec_mergeh(vector bool int __a, vector bool int __b) {
1405*67e74705SXin Li   return (vector bool int)(__a[0], __b[0], __a[1], __b[1]);
1406*67e74705SXin Li }
1407*67e74705SXin Li 
1408*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_mergeh(vector unsigned int __a,vector unsigned int __b)1409*67e74705SXin Li vec_mergeh(vector unsigned int __a, vector unsigned int __b) {
1410*67e74705SXin Li   return (vector unsigned int)(__a[0], __b[0], __a[1], __b[1]);
1411*67e74705SXin Li }
1412*67e74705SXin Li 
1413*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_mergeh(vector signed long long __a,vector signed long long __b)1414*67e74705SXin Li vec_mergeh(vector signed long long __a, vector signed long long __b) {
1415*67e74705SXin Li   return (vector signed long long)(__a[0], __b[0]);
1416*67e74705SXin Li }
1417*67e74705SXin Li 
1418*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_mergeh(vector bool long long __a,vector bool long long __b)1419*67e74705SXin Li vec_mergeh(vector bool long long __a, vector bool long long __b) {
1420*67e74705SXin Li   return (vector bool long long)(__a[0], __b[0]);
1421*67e74705SXin Li }
1422*67e74705SXin Li 
1423*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_mergeh(vector unsigned long long __a,vector unsigned long long __b)1424*67e74705SXin Li vec_mergeh(vector unsigned long long __a, vector unsigned long long __b) {
1425*67e74705SXin Li   return (vector unsigned long long)(__a[0], __b[0]);
1426*67e74705SXin Li }
1427*67e74705SXin Li 
1428*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_mergeh(vector double __a,vector double __b)1429*67e74705SXin Li vec_mergeh(vector double __a, vector double __b) {
1430*67e74705SXin Li   return (vector double)(__a[0], __b[0]);
1431*67e74705SXin Li }
1432*67e74705SXin Li 
1433*67e74705SXin Li /*-- vec_mergel -------------------------------------------------------------*/
1434*67e74705SXin Li 
1435*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_mergel(vector signed char __a,vector signed char __b)1436*67e74705SXin Li vec_mergel(vector signed char __a, vector signed char __b) {
1437*67e74705SXin Li   return (vector signed char)(
1438*67e74705SXin Li     __a[8], __b[8], __a[9], __b[9], __a[10], __b[10], __a[11], __b[11],
1439*67e74705SXin Li     __a[12], __b[12], __a[13], __b[13], __a[14], __b[14], __a[15], __b[15]);
1440*67e74705SXin Li }
1441*67e74705SXin Li 
1442*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_mergel(vector bool char __a,vector bool char __b)1443*67e74705SXin Li vec_mergel(vector bool char __a, vector bool char __b) {
1444*67e74705SXin Li   return (vector bool char)(
1445*67e74705SXin Li     __a[8], __b[8], __a[9], __b[9], __a[10], __b[10], __a[11], __b[11],
1446*67e74705SXin Li     __a[12], __b[12], __a[13], __b[13], __a[14], __b[14], __a[15], __b[15]);
1447*67e74705SXin Li }
1448*67e74705SXin Li 
1449*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_mergel(vector unsigned char __a,vector unsigned char __b)1450*67e74705SXin Li vec_mergel(vector unsigned char __a, vector unsigned char __b) {
1451*67e74705SXin Li   return (vector unsigned char)(
1452*67e74705SXin Li     __a[8], __b[8], __a[9], __b[9], __a[10], __b[10], __a[11], __b[11],
1453*67e74705SXin Li     __a[12], __b[12], __a[13], __b[13], __a[14], __b[14], __a[15], __b[15]);
1454*67e74705SXin Li }
1455*67e74705SXin Li 
1456*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_mergel(vector signed short __a,vector signed short __b)1457*67e74705SXin Li vec_mergel(vector signed short __a, vector signed short __b) {
1458*67e74705SXin Li   return (vector signed short)(
1459*67e74705SXin Li     __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
1460*67e74705SXin Li }
1461*67e74705SXin Li 
1462*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_mergel(vector bool short __a,vector bool short __b)1463*67e74705SXin Li vec_mergel(vector bool short __a, vector bool short __b) {
1464*67e74705SXin Li   return (vector bool short)(
1465*67e74705SXin Li     __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
1466*67e74705SXin Li }
1467*67e74705SXin Li 
1468*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_mergel(vector unsigned short __a,vector unsigned short __b)1469*67e74705SXin Li vec_mergel(vector unsigned short __a, vector unsigned short __b) {
1470*67e74705SXin Li   return (vector unsigned short)(
1471*67e74705SXin Li     __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
1472*67e74705SXin Li }
1473*67e74705SXin Li 
1474*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_mergel(vector signed int __a,vector signed int __b)1475*67e74705SXin Li vec_mergel(vector signed int __a, vector signed int __b) {
1476*67e74705SXin Li   return (vector signed int)(__a[2], __b[2], __a[3], __b[3]);
1477*67e74705SXin Li }
1478*67e74705SXin Li 
1479*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_mergel(vector bool int __a,vector bool int __b)1480*67e74705SXin Li vec_mergel(vector bool int __a, vector bool int __b) {
1481*67e74705SXin Li   return (vector bool int)(__a[2], __b[2], __a[3], __b[3]);
1482*67e74705SXin Li }
1483*67e74705SXin Li 
1484*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_mergel(vector unsigned int __a,vector unsigned int __b)1485*67e74705SXin Li vec_mergel(vector unsigned int __a, vector unsigned int __b) {
1486*67e74705SXin Li   return (vector unsigned int)(__a[2], __b[2], __a[3], __b[3]);
1487*67e74705SXin Li }
1488*67e74705SXin Li 
1489*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_mergel(vector signed long long __a,vector signed long long __b)1490*67e74705SXin Li vec_mergel(vector signed long long __a, vector signed long long __b) {
1491*67e74705SXin Li   return (vector signed long long)(__a[1], __b[1]);
1492*67e74705SXin Li }
1493*67e74705SXin Li 
1494*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_mergel(vector bool long long __a,vector bool long long __b)1495*67e74705SXin Li vec_mergel(vector bool long long __a, vector bool long long __b) {
1496*67e74705SXin Li   return (vector bool long long)(__a[1], __b[1]);
1497*67e74705SXin Li }
1498*67e74705SXin Li 
1499*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_mergel(vector unsigned long long __a,vector unsigned long long __b)1500*67e74705SXin Li vec_mergel(vector unsigned long long __a, vector unsigned long long __b) {
1501*67e74705SXin Li   return (vector unsigned long long)(__a[1], __b[1]);
1502*67e74705SXin Li }
1503*67e74705SXin Li 
1504*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_mergel(vector double __a,vector double __b)1505*67e74705SXin Li vec_mergel(vector double __a, vector double __b) {
1506*67e74705SXin Li   return (vector double)(__a[1], __b[1]);
1507*67e74705SXin Li }
1508*67e74705SXin Li 
1509*67e74705SXin Li /*-- vec_pack ---------------------------------------------------------------*/
1510*67e74705SXin Li 
1511*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_pack(vector signed short __a,vector signed short __b)1512*67e74705SXin Li vec_pack(vector signed short __a, vector signed short __b) {
1513*67e74705SXin Li   vector signed char __ac = (vector signed char)__a;
1514*67e74705SXin Li   vector signed char __bc = (vector signed char)__b;
1515*67e74705SXin Li   return (vector signed char)(
1516*67e74705SXin Li     __ac[1], __ac[3], __ac[5], __ac[7], __ac[9], __ac[11], __ac[13], __ac[15],
1517*67e74705SXin Li     __bc[1], __bc[3], __bc[5], __bc[7], __bc[9], __bc[11], __bc[13], __bc[15]);
1518*67e74705SXin Li }
1519*67e74705SXin Li 
1520*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_pack(vector bool short __a,vector bool short __b)1521*67e74705SXin Li vec_pack(vector bool short __a, vector bool short __b) {
1522*67e74705SXin Li   vector bool char __ac = (vector bool char)__a;
1523*67e74705SXin Li   vector bool char __bc = (vector bool char)__b;
1524*67e74705SXin Li   return (vector bool char)(
1525*67e74705SXin Li     __ac[1], __ac[3], __ac[5], __ac[7], __ac[9], __ac[11], __ac[13], __ac[15],
1526*67e74705SXin Li     __bc[1], __bc[3], __bc[5], __bc[7], __bc[9], __bc[11], __bc[13], __bc[15]);
1527*67e74705SXin Li }
1528*67e74705SXin Li 
1529*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_pack(vector unsigned short __a,vector unsigned short __b)1530*67e74705SXin Li vec_pack(vector unsigned short __a, vector unsigned short __b) {
1531*67e74705SXin Li   vector unsigned char __ac = (vector unsigned char)__a;
1532*67e74705SXin Li   vector unsigned char __bc = (vector unsigned char)__b;
1533*67e74705SXin Li   return (vector unsigned char)(
1534*67e74705SXin Li     __ac[1], __ac[3], __ac[5], __ac[7], __ac[9], __ac[11], __ac[13], __ac[15],
1535*67e74705SXin Li     __bc[1], __bc[3], __bc[5], __bc[7], __bc[9], __bc[11], __bc[13], __bc[15]);
1536*67e74705SXin Li }
1537*67e74705SXin Li 
1538*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_pack(vector signed int __a,vector signed int __b)1539*67e74705SXin Li vec_pack(vector signed int __a, vector signed int __b) {
1540*67e74705SXin Li   vector signed short __ac = (vector signed short)__a;
1541*67e74705SXin Li   vector signed short __bc = (vector signed short)__b;
1542*67e74705SXin Li   return (vector signed short)(
1543*67e74705SXin Li     __ac[1], __ac[3], __ac[5], __ac[7],
1544*67e74705SXin Li     __bc[1], __bc[3], __bc[5], __bc[7]);
1545*67e74705SXin Li }
1546*67e74705SXin Li 
1547*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_pack(vector bool int __a,vector bool int __b)1548*67e74705SXin Li vec_pack(vector bool int __a, vector bool int __b) {
1549*67e74705SXin Li   vector bool short __ac = (vector bool short)__a;
1550*67e74705SXin Li   vector bool short __bc = (vector bool short)__b;
1551*67e74705SXin Li   return (vector bool short)(
1552*67e74705SXin Li     __ac[1], __ac[3], __ac[5], __ac[7],
1553*67e74705SXin Li     __bc[1], __bc[3], __bc[5], __bc[7]);
1554*67e74705SXin Li }
1555*67e74705SXin Li 
1556*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_pack(vector unsigned int __a,vector unsigned int __b)1557*67e74705SXin Li vec_pack(vector unsigned int __a, vector unsigned int __b) {
1558*67e74705SXin Li   vector unsigned short __ac = (vector unsigned short)__a;
1559*67e74705SXin Li   vector unsigned short __bc = (vector unsigned short)__b;
1560*67e74705SXin Li   return (vector unsigned short)(
1561*67e74705SXin Li     __ac[1], __ac[3], __ac[5], __ac[7],
1562*67e74705SXin Li     __bc[1], __bc[3], __bc[5], __bc[7]);
1563*67e74705SXin Li }
1564*67e74705SXin Li 
1565*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_pack(vector signed long long __a,vector signed long long __b)1566*67e74705SXin Li vec_pack(vector signed long long __a, vector signed long long __b) {
1567*67e74705SXin Li   vector signed int __ac = (vector signed int)__a;
1568*67e74705SXin Li   vector signed int __bc = (vector signed int)__b;
1569*67e74705SXin Li   return (vector signed int)(__ac[1], __ac[3], __bc[1], __bc[3]);
1570*67e74705SXin Li }
1571*67e74705SXin Li 
1572*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_pack(vector bool long long __a,vector bool long long __b)1573*67e74705SXin Li vec_pack(vector bool long long __a, vector bool long long __b) {
1574*67e74705SXin Li   vector bool int __ac = (vector bool int)__a;
1575*67e74705SXin Li   vector bool int __bc = (vector bool int)__b;
1576*67e74705SXin Li   return (vector bool int)(__ac[1], __ac[3], __bc[1], __bc[3]);
1577*67e74705SXin Li }
1578*67e74705SXin Li 
1579*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_pack(vector unsigned long long __a,vector unsigned long long __b)1580*67e74705SXin Li vec_pack(vector unsigned long long __a, vector unsigned long long __b) {
1581*67e74705SXin Li   vector unsigned int __ac = (vector unsigned int)__a;
1582*67e74705SXin Li   vector unsigned int __bc = (vector unsigned int)__b;
1583*67e74705SXin Li   return (vector unsigned int)(__ac[1], __ac[3], __bc[1], __bc[3]);
1584*67e74705SXin Li }
1585*67e74705SXin Li 
1586*67e74705SXin Li /*-- vec_packs --------------------------------------------------------------*/
1587*67e74705SXin Li 
1588*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_packs(vector signed short __a,vector signed short __b)1589*67e74705SXin Li vec_packs(vector signed short __a, vector signed short __b) {
1590*67e74705SXin Li   return __builtin_s390_vpksh(__a, __b);
1591*67e74705SXin Li }
1592*67e74705SXin Li 
1593*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_packs(vector unsigned short __a,vector unsigned short __b)1594*67e74705SXin Li vec_packs(vector unsigned short __a, vector unsigned short __b) {
1595*67e74705SXin Li   return __builtin_s390_vpklsh(__a, __b);
1596*67e74705SXin Li }
1597*67e74705SXin Li 
1598*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_packs(vector signed int __a,vector signed int __b)1599*67e74705SXin Li vec_packs(vector signed int __a, vector signed int __b) {
1600*67e74705SXin Li   return __builtin_s390_vpksf(__a, __b);
1601*67e74705SXin Li }
1602*67e74705SXin Li 
1603*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_packs(vector unsigned int __a,vector unsigned int __b)1604*67e74705SXin Li vec_packs(vector unsigned int __a, vector unsigned int __b) {
1605*67e74705SXin Li   return __builtin_s390_vpklsf(__a, __b);
1606*67e74705SXin Li }
1607*67e74705SXin Li 
1608*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_packs(vector signed long long __a,vector signed long long __b)1609*67e74705SXin Li vec_packs(vector signed long long __a, vector signed long long __b) {
1610*67e74705SXin Li   return __builtin_s390_vpksg(__a, __b);
1611*67e74705SXin Li }
1612*67e74705SXin Li 
1613*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_packs(vector unsigned long long __a,vector unsigned long long __b)1614*67e74705SXin Li vec_packs(vector unsigned long long __a, vector unsigned long long __b) {
1615*67e74705SXin Li   return __builtin_s390_vpklsg(__a, __b);
1616*67e74705SXin Li }
1617*67e74705SXin Li 
1618*67e74705SXin Li /*-- vec_packs_cc -----------------------------------------------------------*/
1619*67e74705SXin Li 
1620*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_packs_cc(vector signed short __a,vector signed short __b,int * __cc)1621*67e74705SXin Li vec_packs_cc(vector signed short __a, vector signed short __b, int *__cc) {
1622*67e74705SXin Li   return __builtin_s390_vpkshs(__a, __b, __cc);
1623*67e74705SXin Li }
1624*67e74705SXin Li 
1625*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_packs_cc(vector unsigned short __a,vector unsigned short __b,int * __cc)1626*67e74705SXin Li vec_packs_cc(vector unsigned short __a, vector unsigned short __b, int *__cc) {
1627*67e74705SXin Li   return __builtin_s390_vpklshs(__a, __b, __cc);
1628*67e74705SXin Li }
1629*67e74705SXin Li 
1630*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_packs_cc(vector signed int __a,vector signed int __b,int * __cc)1631*67e74705SXin Li vec_packs_cc(vector signed int __a, vector signed int __b, int *__cc) {
1632*67e74705SXin Li   return __builtin_s390_vpksfs(__a, __b, __cc);
1633*67e74705SXin Li }
1634*67e74705SXin Li 
1635*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_packs_cc(vector unsigned int __a,vector unsigned int __b,int * __cc)1636*67e74705SXin Li vec_packs_cc(vector unsigned int __a, vector unsigned int __b, int *__cc) {
1637*67e74705SXin Li   return __builtin_s390_vpklsfs(__a, __b, __cc);
1638*67e74705SXin Li }
1639*67e74705SXin Li 
1640*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_packs_cc(vector signed long long __a,vector signed long long __b,int * __cc)1641*67e74705SXin Li vec_packs_cc(vector signed long long __a, vector signed long long __b,
1642*67e74705SXin Li              int *__cc) {
1643*67e74705SXin Li   return __builtin_s390_vpksgs(__a, __b, __cc);
1644*67e74705SXin Li }
1645*67e74705SXin Li 
1646*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_packs_cc(vector unsigned long long __a,vector unsigned long long __b,int * __cc)1647*67e74705SXin Li vec_packs_cc(vector unsigned long long __a, vector unsigned long long __b,
1648*67e74705SXin Li              int *__cc) {
1649*67e74705SXin Li   return __builtin_s390_vpklsgs(__a, __b, __cc);
1650*67e74705SXin Li }
1651*67e74705SXin Li 
1652*67e74705SXin Li /*-- vec_packsu -------------------------------------------------------------*/
1653*67e74705SXin Li 
1654*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_packsu(vector signed short __a,vector signed short __b)1655*67e74705SXin Li vec_packsu(vector signed short __a, vector signed short __b) {
1656*67e74705SXin Li   const vector signed short __zero = (vector signed short)0;
1657*67e74705SXin Li   return __builtin_s390_vpklsh(
1658*67e74705SXin Li     (vector unsigned short)(__a >= __zero) & (vector unsigned short)__a,
1659*67e74705SXin Li     (vector unsigned short)(__b >= __zero) & (vector unsigned short)__b);
1660*67e74705SXin Li }
1661*67e74705SXin Li 
1662*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_packsu(vector unsigned short __a,vector unsigned short __b)1663*67e74705SXin Li vec_packsu(vector unsigned short __a, vector unsigned short __b) {
1664*67e74705SXin Li   return __builtin_s390_vpklsh(__a, __b);
1665*67e74705SXin Li }
1666*67e74705SXin Li 
1667*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_packsu(vector signed int __a,vector signed int __b)1668*67e74705SXin Li vec_packsu(vector signed int __a, vector signed int __b) {
1669*67e74705SXin Li   const vector signed int __zero = (vector signed int)0;
1670*67e74705SXin Li   return __builtin_s390_vpklsf(
1671*67e74705SXin Li     (vector unsigned int)(__a >= __zero) & (vector unsigned int)__a,
1672*67e74705SXin Li     (vector unsigned int)(__b >= __zero) & (vector unsigned int)__b);
1673*67e74705SXin Li }
1674*67e74705SXin Li 
1675*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_packsu(vector unsigned int __a,vector unsigned int __b)1676*67e74705SXin Li vec_packsu(vector unsigned int __a, vector unsigned int __b) {
1677*67e74705SXin Li   return __builtin_s390_vpklsf(__a, __b);
1678*67e74705SXin Li }
1679*67e74705SXin Li 
1680*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_packsu(vector signed long long __a,vector signed long long __b)1681*67e74705SXin Li vec_packsu(vector signed long long __a, vector signed long long __b) {
1682*67e74705SXin Li   const vector signed long long __zero = (vector signed long long)0;
1683*67e74705SXin Li   return __builtin_s390_vpklsg(
1684*67e74705SXin Li     (vector unsigned long long)(__a >= __zero) &
1685*67e74705SXin Li     (vector unsigned long long)__a,
1686*67e74705SXin Li     (vector unsigned long long)(__b >= __zero) &
1687*67e74705SXin Li     (vector unsigned long long)__b);
1688*67e74705SXin Li }
1689*67e74705SXin Li 
1690*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_packsu(vector unsigned long long __a,vector unsigned long long __b)1691*67e74705SXin Li vec_packsu(vector unsigned long long __a, vector unsigned long long __b) {
1692*67e74705SXin Li   return __builtin_s390_vpklsg(__a, __b);
1693*67e74705SXin Li }
1694*67e74705SXin Li 
1695*67e74705SXin Li /*-- vec_packsu_cc ----------------------------------------------------------*/
1696*67e74705SXin Li 
1697*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_packsu_cc(vector unsigned short __a,vector unsigned short __b,int * __cc)1698*67e74705SXin Li vec_packsu_cc(vector unsigned short __a, vector unsigned short __b, int *__cc) {
1699*67e74705SXin Li   return __builtin_s390_vpklshs(__a, __b, __cc);
1700*67e74705SXin Li }
1701*67e74705SXin Li 
1702*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_packsu_cc(vector unsigned int __a,vector unsigned int __b,int * __cc)1703*67e74705SXin Li vec_packsu_cc(vector unsigned int __a, vector unsigned int __b, int *__cc) {
1704*67e74705SXin Li   return __builtin_s390_vpklsfs(__a, __b, __cc);
1705*67e74705SXin Li }
1706*67e74705SXin Li 
1707*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_packsu_cc(vector unsigned long long __a,vector unsigned long long __b,int * __cc)1708*67e74705SXin Li vec_packsu_cc(vector unsigned long long __a, vector unsigned long long __b,
1709*67e74705SXin Li               int *__cc) {
1710*67e74705SXin Li   return __builtin_s390_vpklsgs(__a, __b, __cc);
1711*67e74705SXin Li }
1712*67e74705SXin Li 
1713*67e74705SXin Li /*-- vec_unpackh ------------------------------------------------------------*/
1714*67e74705SXin Li 
1715*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_unpackh(vector signed char __a)1716*67e74705SXin Li vec_unpackh(vector signed char __a) {
1717*67e74705SXin Li   return __builtin_s390_vuphb(__a);
1718*67e74705SXin Li }
1719*67e74705SXin Li 
1720*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_unpackh(vector bool char __a)1721*67e74705SXin Li vec_unpackh(vector bool char __a) {
1722*67e74705SXin Li   return (vector bool short)__builtin_s390_vuphb((vector signed char)__a);
1723*67e74705SXin Li }
1724*67e74705SXin Li 
1725*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_unpackh(vector unsigned char __a)1726*67e74705SXin Li vec_unpackh(vector unsigned char __a) {
1727*67e74705SXin Li   return __builtin_s390_vuplhb(__a);
1728*67e74705SXin Li }
1729*67e74705SXin Li 
1730*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_unpackh(vector signed short __a)1731*67e74705SXin Li vec_unpackh(vector signed short __a) {
1732*67e74705SXin Li   return __builtin_s390_vuphh(__a);
1733*67e74705SXin Li }
1734*67e74705SXin Li 
1735*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_unpackh(vector bool short __a)1736*67e74705SXin Li vec_unpackh(vector bool short __a) {
1737*67e74705SXin Li   return (vector bool int)__builtin_s390_vuphh((vector signed short)__a);
1738*67e74705SXin Li }
1739*67e74705SXin Li 
1740*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_unpackh(vector unsigned short __a)1741*67e74705SXin Li vec_unpackh(vector unsigned short __a) {
1742*67e74705SXin Li   return __builtin_s390_vuplhh(__a);
1743*67e74705SXin Li }
1744*67e74705SXin Li 
1745*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_unpackh(vector signed int __a)1746*67e74705SXin Li vec_unpackh(vector signed int __a) {
1747*67e74705SXin Li   return __builtin_s390_vuphf(__a);
1748*67e74705SXin Li }
1749*67e74705SXin Li 
1750*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_unpackh(vector bool int __a)1751*67e74705SXin Li vec_unpackh(vector bool int __a) {
1752*67e74705SXin Li   return (vector bool long long)__builtin_s390_vuphf((vector signed int)__a);
1753*67e74705SXin Li }
1754*67e74705SXin Li 
1755*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_unpackh(vector unsigned int __a)1756*67e74705SXin Li vec_unpackh(vector unsigned int __a) {
1757*67e74705SXin Li   return __builtin_s390_vuplhf(__a);
1758*67e74705SXin Li }
1759*67e74705SXin Li 
1760*67e74705SXin Li /*-- vec_unpackl ------------------------------------------------------------*/
1761*67e74705SXin Li 
1762*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_unpackl(vector signed char __a)1763*67e74705SXin Li vec_unpackl(vector signed char __a) {
1764*67e74705SXin Li   return __builtin_s390_vuplb(__a);
1765*67e74705SXin Li }
1766*67e74705SXin Li 
1767*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_unpackl(vector bool char __a)1768*67e74705SXin Li vec_unpackl(vector bool char __a) {
1769*67e74705SXin Li   return (vector bool short)__builtin_s390_vuplb((vector signed char)__a);
1770*67e74705SXin Li }
1771*67e74705SXin Li 
1772*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_unpackl(vector unsigned char __a)1773*67e74705SXin Li vec_unpackl(vector unsigned char __a) {
1774*67e74705SXin Li   return __builtin_s390_vupllb(__a);
1775*67e74705SXin Li }
1776*67e74705SXin Li 
1777*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_unpackl(vector signed short __a)1778*67e74705SXin Li vec_unpackl(vector signed short __a) {
1779*67e74705SXin Li   return __builtin_s390_vuplhw(__a);
1780*67e74705SXin Li }
1781*67e74705SXin Li 
1782*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_unpackl(vector bool short __a)1783*67e74705SXin Li vec_unpackl(vector bool short __a) {
1784*67e74705SXin Li   return (vector bool int)__builtin_s390_vuplhw((vector signed short)__a);
1785*67e74705SXin Li }
1786*67e74705SXin Li 
1787*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_unpackl(vector unsigned short __a)1788*67e74705SXin Li vec_unpackl(vector unsigned short __a) {
1789*67e74705SXin Li   return __builtin_s390_vupllh(__a);
1790*67e74705SXin Li }
1791*67e74705SXin Li 
1792*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_unpackl(vector signed int __a)1793*67e74705SXin Li vec_unpackl(vector signed int __a) {
1794*67e74705SXin Li   return __builtin_s390_vuplf(__a);
1795*67e74705SXin Li }
1796*67e74705SXin Li 
1797*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_unpackl(vector bool int __a)1798*67e74705SXin Li vec_unpackl(vector bool int __a) {
1799*67e74705SXin Li   return (vector bool long long)__builtin_s390_vuplf((vector signed int)__a);
1800*67e74705SXin Li }
1801*67e74705SXin Li 
1802*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_unpackl(vector unsigned int __a)1803*67e74705SXin Li vec_unpackl(vector unsigned int __a) {
1804*67e74705SXin Li   return __builtin_s390_vupllf(__a);
1805*67e74705SXin Li }
1806*67e74705SXin Li 
1807*67e74705SXin Li /*-- vec_cmpeq --------------------------------------------------------------*/
1808*67e74705SXin Li 
1809*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_cmpeq(vector bool char __a,vector bool char __b)1810*67e74705SXin Li vec_cmpeq(vector bool char __a, vector bool char __b) {
1811*67e74705SXin Li   return (vector bool char)(__a == __b);
1812*67e74705SXin Li }
1813*67e74705SXin Li 
1814*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_cmpeq(vector signed char __a,vector signed char __b)1815*67e74705SXin Li vec_cmpeq(vector signed char __a, vector signed char __b) {
1816*67e74705SXin Li   return (vector bool char)(__a == __b);
1817*67e74705SXin Li }
1818*67e74705SXin Li 
1819*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_cmpeq(vector unsigned char __a,vector unsigned char __b)1820*67e74705SXin Li vec_cmpeq(vector unsigned char __a, vector unsigned char __b) {
1821*67e74705SXin Li   return (vector bool char)(__a == __b);
1822*67e74705SXin Li }
1823*67e74705SXin Li 
1824*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_cmpeq(vector bool short __a,vector bool short __b)1825*67e74705SXin Li vec_cmpeq(vector bool short __a, vector bool short __b) {
1826*67e74705SXin Li   return (vector bool short)(__a == __b);
1827*67e74705SXin Li }
1828*67e74705SXin Li 
1829*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_cmpeq(vector signed short __a,vector signed short __b)1830*67e74705SXin Li vec_cmpeq(vector signed short __a, vector signed short __b) {
1831*67e74705SXin Li   return (vector bool short)(__a == __b);
1832*67e74705SXin Li }
1833*67e74705SXin Li 
1834*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_cmpeq(vector unsigned short __a,vector unsigned short __b)1835*67e74705SXin Li vec_cmpeq(vector unsigned short __a, vector unsigned short __b) {
1836*67e74705SXin Li   return (vector bool short)(__a == __b);
1837*67e74705SXin Li }
1838*67e74705SXin Li 
1839*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_cmpeq(vector bool int __a,vector bool int __b)1840*67e74705SXin Li vec_cmpeq(vector bool int __a, vector bool int __b) {
1841*67e74705SXin Li   return (vector bool int)(__a == __b);
1842*67e74705SXin Li }
1843*67e74705SXin Li 
1844*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_cmpeq(vector signed int __a,vector signed int __b)1845*67e74705SXin Li vec_cmpeq(vector signed int __a, vector signed int __b) {
1846*67e74705SXin Li   return (vector bool int)(__a == __b);
1847*67e74705SXin Li }
1848*67e74705SXin Li 
1849*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_cmpeq(vector unsigned int __a,vector unsigned int __b)1850*67e74705SXin Li vec_cmpeq(vector unsigned int __a, vector unsigned int __b) {
1851*67e74705SXin Li   return (vector bool int)(__a == __b);
1852*67e74705SXin Li }
1853*67e74705SXin Li 
1854*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_cmpeq(vector bool long long __a,vector bool long long __b)1855*67e74705SXin Li vec_cmpeq(vector bool long long __a, vector bool long long __b) {
1856*67e74705SXin Li   return (vector bool long long)(__a == __b);
1857*67e74705SXin Li }
1858*67e74705SXin Li 
1859*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_cmpeq(vector signed long long __a,vector signed long long __b)1860*67e74705SXin Li vec_cmpeq(vector signed long long __a, vector signed long long __b) {
1861*67e74705SXin Li   return (vector bool long long)(__a == __b);
1862*67e74705SXin Li }
1863*67e74705SXin Li 
1864*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_cmpeq(vector unsigned long long __a,vector unsigned long long __b)1865*67e74705SXin Li vec_cmpeq(vector unsigned long long __a, vector unsigned long long __b) {
1866*67e74705SXin Li   return (vector bool long long)(__a == __b);
1867*67e74705SXin Li }
1868*67e74705SXin Li 
1869*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_cmpeq(vector double __a,vector double __b)1870*67e74705SXin Li vec_cmpeq(vector double __a, vector double __b) {
1871*67e74705SXin Li   return (vector bool long long)(__a == __b);
1872*67e74705SXin Li }
1873*67e74705SXin Li 
1874*67e74705SXin Li /*-- vec_cmpge --------------------------------------------------------------*/
1875*67e74705SXin Li 
1876*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_cmpge(vector signed char __a,vector signed char __b)1877*67e74705SXin Li vec_cmpge(vector signed char __a, vector signed char __b) {
1878*67e74705SXin Li   return (vector bool char)(__a >= __b);
1879*67e74705SXin Li }
1880*67e74705SXin Li 
1881*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_cmpge(vector unsigned char __a,vector unsigned char __b)1882*67e74705SXin Li vec_cmpge(vector unsigned char __a, vector unsigned char __b) {
1883*67e74705SXin Li   return (vector bool char)(__a >= __b);
1884*67e74705SXin Li }
1885*67e74705SXin Li 
1886*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_cmpge(vector signed short __a,vector signed short __b)1887*67e74705SXin Li vec_cmpge(vector signed short __a, vector signed short __b) {
1888*67e74705SXin Li   return (vector bool short)(__a >= __b);
1889*67e74705SXin Li }
1890*67e74705SXin Li 
1891*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_cmpge(vector unsigned short __a,vector unsigned short __b)1892*67e74705SXin Li vec_cmpge(vector unsigned short __a, vector unsigned short __b) {
1893*67e74705SXin Li   return (vector bool short)(__a >= __b);
1894*67e74705SXin Li }
1895*67e74705SXin Li 
1896*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_cmpge(vector signed int __a,vector signed int __b)1897*67e74705SXin Li vec_cmpge(vector signed int __a, vector signed int __b) {
1898*67e74705SXin Li   return (vector bool int)(__a >= __b);
1899*67e74705SXin Li }
1900*67e74705SXin Li 
1901*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_cmpge(vector unsigned int __a,vector unsigned int __b)1902*67e74705SXin Li vec_cmpge(vector unsigned int __a, vector unsigned int __b) {
1903*67e74705SXin Li   return (vector bool int)(__a >= __b);
1904*67e74705SXin Li }
1905*67e74705SXin Li 
1906*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_cmpge(vector signed long long __a,vector signed long long __b)1907*67e74705SXin Li vec_cmpge(vector signed long long __a, vector signed long long __b) {
1908*67e74705SXin Li   return (vector bool long long)(__a >= __b);
1909*67e74705SXin Li }
1910*67e74705SXin Li 
1911*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_cmpge(vector unsigned long long __a,vector unsigned long long __b)1912*67e74705SXin Li vec_cmpge(vector unsigned long long __a, vector unsigned long long __b) {
1913*67e74705SXin Li   return (vector bool long long)(__a >= __b);
1914*67e74705SXin Li }
1915*67e74705SXin Li 
1916*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_cmpge(vector double __a,vector double __b)1917*67e74705SXin Li vec_cmpge(vector double __a, vector double __b) {
1918*67e74705SXin Li   return (vector bool long long)(__a >= __b);
1919*67e74705SXin Li }
1920*67e74705SXin Li 
1921*67e74705SXin Li /*-- vec_cmpgt --------------------------------------------------------------*/
1922*67e74705SXin Li 
1923*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_cmpgt(vector signed char __a,vector signed char __b)1924*67e74705SXin Li vec_cmpgt(vector signed char __a, vector signed char __b) {
1925*67e74705SXin Li   return (vector bool char)(__a > __b);
1926*67e74705SXin Li }
1927*67e74705SXin Li 
1928*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_cmpgt(vector unsigned char __a,vector unsigned char __b)1929*67e74705SXin Li vec_cmpgt(vector unsigned char __a, vector unsigned char __b) {
1930*67e74705SXin Li   return (vector bool char)(__a > __b);
1931*67e74705SXin Li }
1932*67e74705SXin Li 
1933*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_cmpgt(vector signed short __a,vector signed short __b)1934*67e74705SXin Li vec_cmpgt(vector signed short __a, vector signed short __b) {
1935*67e74705SXin Li   return (vector bool short)(__a > __b);
1936*67e74705SXin Li }
1937*67e74705SXin Li 
1938*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_cmpgt(vector unsigned short __a,vector unsigned short __b)1939*67e74705SXin Li vec_cmpgt(vector unsigned short __a, vector unsigned short __b) {
1940*67e74705SXin Li   return (vector bool short)(__a > __b);
1941*67e74705SXin Li }
1942*67e74705SXin Li 
1943*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_cmpgt(vector signed int __a,vector signed int __b)1944*67e74705SXin Li vec_cmpgt(vector signed int __a, vector signed int __b) {
1945*67e74705SXin Li   return (vector bool int)(__a > __b);
1946*67e74705SXin Li }
1947*67e74705SXin Li 
1948*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_cmpgt(vector unsigned int __a,vector unsigned int __b)1949*67e74705SXin Li vec_cmpgt(vector unsigned int __a, vector unsigned int __b) {
1950*67e74705SXin Li   return (vector bool int)(__a > __b);
1951*67e74705SXin Li }
1952*67e74705SXin Li 
1953*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_cmpgt(vector signed long long __a,vector signed long long __b)1954*67e74705SXin Li vec_cmpgt(vector signed long long __a, vector signed long long __b) {
1955*67e74705SXin Li   return (vector bool long long)(__a > __b);
1956*67e74705SXin Li }
1957*67e74705SXin Li 
1958*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_cmpgt(vector unsigned long long __a,vector unsigned long long __b)1959*67e74705SXin Li vec_cmpgt(vector unsigned long long __a, vector unsigned long long __b) {
1960*67e74705SXin Li   return (vector bool long long)(__a > __b);
1961*67e74705SXin Li }
1962*67e74705SXin Li 
1963*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_cmpgt(vector double __a,vector double __b)1964*67e74705SXin Li vec_cmpgt(vector double __a, vector double __b) {
1965*67e74705SXin Li   return (vector bool long long)(__a > __b);
1966*67e74705SXin Li }
1967*67e74705SXin Li 
1968*67e74705SXin Li /*-- vec_cmple --------------------------------------------------------------*/
1969*67e74705SXin Li 
1970*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_cmple(vector signed char __a,vector signed char __b)1971*67e74705SXin Li vec_cmple(vector signed char __a, vector signed char __b) {
1972*67e74705SXin Li   return (vector bool char)(__a <= __b);
1973*67e74705SXin Li }
1974*67e74705SXin Li 
1975*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_cmple(vector unsigned char __a,vector unsigned char __b)1976*67e74705SXin Li vec_cmple(vector unsigned char __a, vector unsigned char __b) {
1977*67e74705SXin Li   return (vector bool char)(__a <= __b);
1978*67e74705SXin Li }
1979*67e74705SXin Li 
1980*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_cmple(vector signed short __a,vector signed short __b)1981*67e74705SXin Li vec_cmple(vector signed short __a, vector signed short __b) {
1982*67e74705SXin Li   return (vector bool short)(__a <= __b);
1983*67e74705SXin Li }
1984*67e74705SXin Li 
1985*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_cmple(vector unsigned short __a,vector unsigned short __b)1986*67e74705SXin Li vec_cmple(vector unsigned short __a, vector unsigned short __b) {
1987*67e74705SXin Li   return (vector bool short)(__a <= __b);
1988*67e74705SXin Li }
1989*67e74705SXin Li 
1990*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_cmple(vector signed int __a,vector signed int __b)1991*67e74705SXin Li vec_cmple(vector signed int __a, vector signed int __b) {
1992*67e74705SXin Li   return (vector bool int)(__a <= __b);
1993*67e74705SXin Li }
1994*67e74705SXin Li 
1995*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_cmple(vector unsigned int __a,vector unsigned int __b)1996*67e74705SXin Li vec_cmple(vector unsigned int __a, vector unsigned int __b) {
1997*67e74705SXin Li   return (vector bool int)(__a <= __b);
1998*67e74705SXin Li }
1999*67e74705SXin Li 
2000*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_cmple(vector signed long long __a,vector signed long long __b)2001*67e74705SXin Li vec_cmple(vector signed long long __a, vector signed long long __b) {
2002*67e74705SXin Li   return (vector bool long long)(__a <= __b);
2003*67e74705SXin Li }
2004*67e74705SXin Li 
2005*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_cmple(vector unsigned long long __a,vector unsigned long long __b)2006*67e74705SXin Li vec_cmple(vector unsigned long long __a, vector unsigned long long __b) {
2007*67e74705SXin Li   return (vector bool long long)(__a <= __b);
2008*67e74705SXin Li }
2009*67e74705SXin Li 
2010*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_cmple(vector double __a,vector double __b)2011*67e74705SXin Li vec_cmple(vector double __a, vector double __b) {
2012*67e74705SXin Li   return (vector bool long long)(__a <= __b);
2013*67e74705SXin Li }
2014*67e74705SXin Li 
2015*67e74705SXin Li /*-- vec_cmplt --------------------------------------------------------------*/
2016*67e74705SXin Li 
2017*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_cmplt(vector signed char __a,vector signed char __b)2018*67e74705SXin Li vec_cmplt(vector signed char __a, vector signed char __b) {
2019*67e74705SXin Li   return (vector bool char)(__a < __b);
2020*67e74705SXin Li }
2021*67e74705SXin Li 
2022*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_cmplt(vector unsigned char __a,vector unsigned char __b)2023*67e74705SXin Li vec_cmplt(vector unsigned char __a, vector unsigned char __b) {
2024*67e74705SXin Li   return (vector bool char)(__a < __b);
2025*67e74705SXin Li }
2026*67e74705SXin Li 
2027*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_cmplt(vector signed short __a,vector signed short __b)2028*67e74705SXin Li vec_cmplt(vector signed short __a, vector signed short __b) {
2029*67e74705SXin Li   return (vector bool short)(__a < __b);
2030*67e74705SXin Li }
2031*67e74705SXin Li 
2032*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_cmplt(vector unsigned short __a,vector unsigned short __b)2033*67e74705SXin Li vec_cmplt(vector unsigned short __a, vector unsigned short __b) {
2034*67e74705SXin Li   return (vector bool short)(__a < __b);
2035*67e74705SXin Li }
2036*67e74705SXin Li 
2037*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_cmplt(vector signed int __a,vector signed int __b)2038*67e74705SXin Li vec_cmplt(vector signed int __a, vector signed int __b) {
2039*67e74705SXin Li   return (vector bool int)(__a < __b);
2040*67e74705SXin Li }
2041*67e74705SXin Li 
2042*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_cmplt(vector unsigned int __a,vector unsigned int __b)2043*67e74705SXin Li vec_cmplt(vector unsigned int __a, vector unsigned int __b) {
2044*67e74705SXin Li   return (vector bool int)(__a < __b);
2045*67e74705SXin Li }
2046*67e74705SXin Li 
2047*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_cmplt(vector signed long long __a,vector signed long long __b)2048*67e74705SXin Li vec_cmplt(vector signed long long __a, vector signed long long __b) {
2049*67e74705SXin Li   return (vector bool long long)(__a < __b);
2050*67e74705SXin Li }
2051*67e74705SXin Li 
2052*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_cmplt(vector unsigned long long __a,vector unsigned long long __b)2053*67e74705SXin Li vec_cmplt(vector unsigned long long __a, vector unsigned long long __b) {
2054*67e74705SXin Li   return (vector bool long long)(__a < __b);
2055*67e74705SXin Li }
2056*67e74705SXin Li 
2057*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_cmplt(vector double __a,vector double __b)2058*67e74705SXin Li vec_cmplt(vector double __a, vector double __b) {
2059*67e74705SXin Li   return (vector bool long long)(__a < __b);
2060*67e74705SXin Li }
2061*67e74705SXin Li 
2062*67e74705SXin Li /*-- vec_all_eq -------------------------------------------------------------*/
2063*67e74705SXin Li 
2064*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector signed char __a,vector signed char __b)2065*67e74705SXin Li vec_all_eq(vector signed char __a, vector signed char __b) {
2066*67e74705SXin Li   int __cc;
2067*67e74705SXin Li   __builtin_s390_vceqbs(__a, __b, &__cc);
2068*67e74705SXin Li   return __cc == 0;
2069*67e74705SXin Li }
2070*67e74705SXin Li 
2071*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector signed char __a,vector bool char __b)2072*67e74705SXin Li vec_all_eq(vector signed char __a, vector bool char __b) {
2073*67e74705SXin Li   int __cc;
2074*67e74705SXin Li   __builtin_s390_vceqbs(__a, (vector signed char)__b, &__cc);
2075*67e74705SXin Li   return __cc == 0;
2076*67e74705SXin Li }
2077*67e74705SXin Li 
2078*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector bool char __a,vector signed char __b)2079*67e74705SXin Li vec_all_eq(vector bool char __a, vector signed char __b) {
2080*67e74705SXin Li   int __cc;
2081*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a, __b, &__cc);
2082*67e74705SXin Li   return __cc == 0;
2083*67e74705SXin Li }
2084*67e74705SXin Li 
2085*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector unsigned char __a,vector unsigned char __b)2086*67e74705SXin Li vec_all_eq(vector unsigned char __a, vector unsigned char __b) {
2087*67e74705SXin Li   int __cc;
2088*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a,
2089*67e74705SXin Li                         (vector signed char)__b, &__cc);
2090*67e74705SXin Li   return __cc == 0;
2091*67e74705SXin Li }
2092*67e74705SXin Li 
2093*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector unsigned char __a,vector bool char __b)2094*67e74705SXin Li vec_all_eq(vector unsigned char __a, vector bool char __b) {
2095*67e74705SXin Li   int __cc;
2096*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a,
2097*67e74705SXin Li                         (vector signed char)__b, &__cc);
2098*67e74705SXin Li   return __cc == 0;
2099*67e74705SXin Li }
2100*67e74705SXin Li 
2101*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector bool char __a,vector unsigned char __b)2102*67e74705SXin Li vec_all_eq(vector bool char __a, vector unsigned char __b) {
2103*67e74705SXin Li   int __cc;
2104*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a,
2105*67e74705SXin Li                         (vector signed char)__b, &__cc);
2106*67e74705SXin Li   return __cc == 0;
2107*67e74705SXin Li }
2108*67e74705SXin Li 
2109*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector bool char __a,vector bool char __b)2110*67e74705SXin Li vec_all_eq(vector bool char __a, vector bool char __b) {
2111*67e74705SXin Li   int __cc;
2112*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a,
2113*67e74705SXin Li                         (vector signed char)__b, &__cc);
2114*67e74705SXin Li   return __cc == 0;
2115*67e74705SXin Li }
2116*67e74705SXin Li 
2117*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector signed short __a,vector signed short __b)2118*67e74705SXin Li vec_all_eq(vector signed short __a, vector signed short __b) {
2119*67e74705SXin Li   int __cc;
2120*67e74705SXin Li   __builtin_s390_vceqhs(__a, __b, &__cc);
2121*67e74705SXin Li   return __cc == 0;
2122*67e74705SXin Li }
2123*67e74705SXin Li 
2124*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector signed short __a,vector bool short __b)2125*67e74705SXin Li vec_all_eq(vector signed short __a, vector bool short __b) {
2126*67e74705SXin Li   int __cc;
2127*67e74705SXin Li   __builtin_s390_vceqhs(__a, (vector signed short)__b, &__cc);
2128*67e74705SXin Li   return __cc == 0;
2129*67e74705SXin Li }
2130*67e74705SXin Li 
2131*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector bool short __a,vector signed short __b)2132*67e74705SXin Li vec_all_eq(vector bool short __a, vector signed short __b) {
2133*67e74705SXin Li   int __cc;
2134*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a, __b, &__cc);
2135*67e74705SXin Li   return __cc == 0;
2136*67e74705SXin Li }
2137*67e74705SXin Li 
2138*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector unsigned short __a,vector unsigned short __b)2139*67e74705SXin Li vec_all_eq(vector unsigned short __a, vector unsigned short __b) {
2140*67e74705SXin Li   int __cc;
2141*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a,
2142*67e74705SXin Li                         (vector signed short)__b, &__cc);
2143*67e74705SXin Li   return __cc == 0;
2144*67e74705SXin Li }
2145*67e74705SXin Li 
2146*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector unsigned short __a,vector bool short __b)2147*67e74705SXin Li vec_all_eq(vector unsigned short __a, vector bool short __b) {
2148*67e74705SXin Li   int __cc;
2149*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a,
2150*67e74705SXin Li                         (vector signed short)__b, &__cc);
2151*67e74705SXin Li   return __cc == 0;
2152*67e74705SXin Li }
2153*67e74705SXin Li 
2154*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector bool short __a,vector unsigned short __b)2155*67e74705SXin Li vec_all_eq(vector bool short __a, vector unsigned short __b) {
2156*67e74705SXin Li   int __cc;
2157*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a,
2158*67e74705SXin Li                         (vector signed short)__b, &__cc);
2159*67e74705SXin Li   return __cc == 0;
2160*67e74705SXin Li }
2161*67e74705SXin Li 
2162*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector bool short __a,vector bool short __b)2163*67e74705SXin Li vec_all_eq(vector bool short __a, vector bool short __b) {
2164*67e74705SXin Li   int __cc;
2165*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a,
2166*67e74705SXin Li                         (vector signed short)__b, &__cc);
2167*67e74705SXin Li   return __cc == 0;
2168*67e74705SXin Li }
2169*67e74705SXin Li 
2170*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector signed int __a,vector signed int __b)2171*67e74705SXin Li vec_all_eq(vector signed int __a, vector signed int __b) {
2172*67e74705SXin Li   int __cc;
2173*67e74705SXin Li   __builtin_s390_vceqfs(__a, __b, &__cc);
2174*67e74705SXin Li   return __cc == 0;
2175*67e74705SXin Li }
2176*67e74705SXin Li 
2177*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector signed int __a,vector bool int __b)2178*67e74705SXin Li vec_all_eq(vector signed int __a, vector bool int __b) {
2179*67e74705SXin Li   int __cc;
2180*67e74705SXin Li   __builtin_s390_vceqfs(__a, (vector signed int)__b, &__cc);
2181*67e74705SXin Li   return __cc == 0;
2182*67e74705SXin Li }
2183*67e74705SXin Li 
2184*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector bool int __a,vector signed int __b)2185*67e74705SXin Li vec_all_eq(vector bool int __a, vector signed int __b) {
2186*67e74705SXin Li   int __cc;
2187*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a, __b, &__cc);
2188*67e74705SXin Li   return __cc == 0;
2189*67e74705SXin Li }
2190*67e74705SXin Li 
2191*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector unsigned int __a,vector unsigned int __b)2192*67e74705SXin Li vec_all_eq(vector unsigned int __a, vector unsigned int __b) {
2193*67e74705SXin Li   int __cc;
2194*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a,
2195*67e74705SXin Li                         (vector signed int)__b, &__cc);
2196*67e74705SXin Li   return __cc == 0;
2197*67e74705SXin Li }
2198*67e74705SXin Li 
2199*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector unsigned int __a,vector bool int __b)2200*67e74705SXin Li vec_all_eq(vector unsigned int __a, vector bool int __b) {
2201*67e74705SXin Li   int __cc;
2202*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a,
2203*67e74705SXin Li                         (vector signed int)__b, &__cc);
2204*67e74705SXin Li   return __cc == 0;
2205*67e74705SXin Li }
2206*67e74705SXin Li 
2207*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector bool int __a,vector unsigned int __b)2208*67e74705SXin Li vec_all_eq(vector bool int __a, vector unsigned int __b) {
2209*67e74705SXin Li   int __cc;
2210*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a,
2211*67e74705SXin Li                         (vector signed int)__b, &__cc);
2212*67e74705SXin Li   return __cc == 0;
2213*67e74705SXin Li }
2214*67e74705SXin Li 
2215*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector bool int __a,vector bool int __b)2216*67e74705SXin Li vec_all_eq(vector bool int __a, vector bool int __b) {
2217*67e74705SXin Li   int __cc;
2218*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a,
2219*67e74705SXin Li                         (vector signed int)__b, &__cc);
2220*67e74705SXin Li   return __cc == 0;
2221*67e74705SXin Li }
2222*67e74705SXin Li 
2223*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector signed long long __a,vector signed long long __b)2224*67e74705SXin Li vec_all_eq(vector signed long long __a, vector signed long long __b) {
2225*67e74705SXin Li   int __cc;
2226*67e74705SXin Li   __builtin_s390_vceqgs(__a, __b, &__cc);
2227*67e74705SXin Li   return __cc == 0;
2228*67e74705SXin Li }
2229*67e74705SXin Li 
2230*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector signed long long __a,vector bool long long __b)2231*67e74705SXin Li vec_all_eq(vector signed long long __a, vector bool long long __b) {
2232*67e74705SXin Li   int __cc;
2233*67e74705SXin Li   __builtin_s390_vceqgs(__a, (vector signed long long)__b, &__cc);
2234*67e74705SXin Li   return __cc == 0;
2235*67e74705SXin Li }
2236*67e74705SXin Li 
2237*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector bool long long __a,vector signed long long __b)2238*67e74705SXin Li vec_all_eq(vector bool long long __a, vector signed long long __b) {
2239*67e74705SXin Li   int __cc;
2240*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a, __b, &__cc);
2241*67e74705SXin Li   return __cc == 0;
2242*67e74705SXin Li }
2243*67e74705SXin Li 
2244*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector unsigned long long __a,vector unsigned long long __b)2245*67e74705SXin Li vec_all_eq(vector unsigned long long __a, vector unsigned long long __b) {
2246*67e74705SXin Li   int __cc;
2247*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a,
2248*67e74705SXin Li                         (vector signed long long)__b, &__cc);
2249*67e74705SXin Li   return __cc == 0;
2250*67e74705SXin Li }
2251*67e74705SXin Li 
2252*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector unsigned long long __a,vector bool long long __b)2253*67e74705SXin Li vec_all_eq(vector unsigned long long __a, vector bool long long __b) {
2254*67e74705SXin Li   int __cc;
2255*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a,
2256*67e74705SXin Li                         (vector signed long long)__b, &__cc);
2257*67e74705SXin Li   return __cc == 0;
2258*67e74705SXin Li }
2259*67e74705SXin Li 
2260*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector bool long long __a,vector unsigned long long __b)2261*67e74705SXin Li vec_all_eq(vector bool long long __a, vector unsigned long long __b) {
2262*67e74705SXin Li   int __cc;
2263*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a,
2264*67e74705SXin Li                         (vector signed long long)__b, &__cc);
2265*67e74705SXin Li   return __cc == 0;
2266*67e74705SXin Li }
2267*67e74705SXin Li 
2268*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector bool long long __a,vector bool long long __b)2269*67e74705SXin Li vec_all_eq(vector bool long long __a, vector bool long long __b) {
2270*67e74705SXin Li   int __cc;
2271*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a,
2272*67e74705SXin Li                         (vector signed long long)__b, &__cc);
2273*67e74705SXin Li   return __cc == 0;
2274*67e74705SXin Li }
2275*67e74705SXin Li 
2276*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_eq(vector double __a,vector double __b)2277*67e74705SXin Li vec_all_eq(vector double __a, vector double __b) {
2278*67e74705SXin Li   int __cc;
2279*67e74705SXin Li   __builtin_s390_vfcedbs(__a, __b, &__cc);
2280*67e74705SXin Li   return __cc == 0;
2281*67e74705SXin Li }
2282*67e74705SXin Li 
2283*67e74705SXin Li /*-- vec_all_ne -------------------------------------------------------------*/
2284*67e74705SXin Li 
2285*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector signed char __a,vector signed char __b)2286*67e74705SXin Li vec_all_ne(vector signed char __a, vector signed char __b) {
2287*67e74705SXin Li   int __cc;
2288*67e74705SXin Li   __builtin_s390_vceqbs(__a, __b, &__cc);
2289*67e74705SXin Li   return __cc == 3;
2290*67e74705SXin Li }
2291*67e74705SXin Li 
2292*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector signed char __a,vector bool char __b)2293*67e74705SXin Li vec_all_ne(vector signed char __a, vector bool char __b) {
2294*67e74705SXin Li   int __cc;
2295*67e74705SXin Li   __builtin_s390_vceqbs(__a, (vector signed char)__b, &__cc);
2296*67e74705SXin Li   return __cc == 3;
2297*67e74705SXin Li }
2298*67e74705SXin Li 
2299*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector bool char __a,vector signed char __b)2300*67e74705SXin Li vec_all_ne(vector bool char __a, vector signed char __b) {
2301*67e74705SXin Li   int __cc;
2302*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a, __b, &__cc);
2303*67e74705SXin Li   return __cc == 3;
2304*67e74705SXin Li }
2305*67e74705SXin Li 
2306*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector unsigned char __a,vector unsigned char __b)2307*67e74705SXin Li vec_all_ne(vector unsigned char __a, vector unsigned char __b) {
2308*67e74705SXin Li   int __cc;
2309*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a,
2310*67e74705SXin Li                         (vector signed char)__b, &__cc);
2311*67e74705SXin Li   return __cc == 3;
2312*67e74705SXin Li }
2313*67e74705SXin Li 
2314*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector unsigned char __a,vector bool char __b)2315*67e74705SXin Li vec_all_ne(vector unsigned char __a, vector bool char __b) {
2316*67e74705SXin Li   int __cc;
2317*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a,
2318*67e74705SXin Li                         (vector signed char)__b, &__cc);
2319*67e74705SXin Li   return __cc == 3;
2320*67e74705SXin Li }
2321*67e74705SXin Li 
2322*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector bool char __a,vector unsigned char __b)2323*67e74705SXin Li vec_all_ne(vector bool char __a, vector unsigned char __b) {
2324*67e74705SXin Li   int __cc;
2325*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a,
2326*67e74705SXin Li                         (vector signed char)__b, &__cc);
2327*67e74705SXin Li   return __cc == 3;
2328*67e74705SXin Li }
2329*67e74705SXin Li 
2330*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector bool char __a,vector bool char __b)2331*67e74705SXin Li vec_all_ne(vector bool char __a, vector bool char __b) {
2332*67e74705SXin Li   int __cc;
2333*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a,
2334*67e74705SXin Li                         (vector signed char)__b, &__cc);
2335*67e74705SXin Li   return __cc == 3;
2336*67e74705SXin Li }
2337*67e74705SXin Li 
2338*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector signed short __a,vector signed short __b)2339*67e74705SXin Li vec_all_ne(vector signed short __a, vector signed short __b) {
2340*67e74705SXin Li   int __cc;
2341*67e74705SXin Li   __builtin_s390_vceqhs(__a, __b, &__cc);
2342*67e74705SXin Li   return __cc == 3;
2343*67e74705SXin Li }
2344*67e74705SXin Li 
2345*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector signed short __a,vector bool short __b)2346*67e74705SXin Li vec_all_ne(vector signed short __a, vector bool short __b) {
2347*67e74705SXin Li   int __cc;
2348*67e74705SXin Li   __builtin_s390_vceqhs(__a, (vector signed short)__b, &__cc);
2349*67e74705SXin Li   return __cc == 3;
2350*67e74705SXin Li }
2351*67e74705SXin Li 
2352*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector bool short __a,vector signed short __b)2353*67e74705SXin Li vec_all_ne(vector bool short __a, vector signed short __b) {
2354*67e74705SXin Li   int __cc;
2355*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a, __b, &__cc);
2356*67e74705SXin Li   return __cc == 3;
2357*67e74705SXin Li }
2358*67e74705SXin Li 
2359*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector unsigned short __a,vector unsigned short __b)2360*67e74705SXin Li vec_all_ne(vector unsigned short __a, vector unsigned short __b) {
2361*67e74705SXin Li   int __cc;
2362*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a,
2363*67e74705SXin Li                         (vector signed short)__b, &__cc);
2364*67e74705SXin Li   return __cc == 3;
2365*67e74705SXin Li }
2366*67e74705SXin Li 
2367*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector unsigned short __a,vector bool short __b)2368*67e74705SXin Li vec_all_ne(vector unsigned short __a, vector bool short __b) {
2369*67e74705SXin Li   int __cc;
2370*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a,
2371*67e74705SXin Li                         (vector signed short)__b, &__cc);
2372*67e74705SXin Li   return __cc == 3;
2373*67e74705SXin Li }
2374*67e74705SXin Li 
2375*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector bool short __a,vector unsigned short __b)2376*67e74705SXin Li vec_all_ne(vector bool short __a, vector unsigned short __b) {
2377*67e74705SXin Li   int __cc;
2378*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a,
2379*67e74705SXin Li                         (vector signed short)__b, &__cc);
2380*67e74705SXin Li   return __cc == 3;
2381*67e74705SXin Li }
2382*67e74705SXin Li 
2383*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector bool short __a,vector bool short __b)2384*67e74705SXin Li vec_all_ne(vector bool short __a, vector bool short __b) {
2385*67e74705SXin Li   int __cc;
2386*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a,
2387*67e74705SXin Li                         (vector signed short)__b, &__cc);
2388*67e74705SXin Li   return __cc == 3;
2389*67e74705SXin Li }
2390*67e74705SXin Li 
2391*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector signed int __a,vector signed int __b)2392*67e74705SXin Li vec_all_ne(vector signed int __a, vector signed int __b) {
2393*67e74705SXin Li   int __cc;
2394*67e74705SXin Li   __builtin_s390_vceqfs(__a, __b, &__cc);
2395*67e74705SXin Li   return __cc == 3;
2396*67e74705SXin Li }
2397*67e74705SXin Li 
2398*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector signed int __a,vector bool int __b)2399*67e74705SXin Li vec_all_ne(vector signed int __a, vector bool int __b) {
2400*67e74705SXin Li   int __cc;
2401*67e74705SXin Li   __builtin_s390_vceqfs(__a, (vector signed int)__b, &__cc);
2402*67e74705SXin Li   return __cc == 3;
2403*67e74705SXin Li }
2404*67e74705SXin Li 
2405*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector bool int __a,vector signed int __b)2406*67e74705SXin Li vec_all_ne(vector bool int __a, vector signed int __b) {
2407*67e74705SXin Li   int __cc;
2408*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a, __b, &__cc);
2409*67e74705SXin Li   return __cc == 3;
2410*67e74705SXin Li }
2411*67e74705SXin Li 
2412*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector unsigned int __a,vector unsigned int __b)2413*67e74705SXin Li vec_all_ne(vector unsigned int __a, vector unsigned int __b) {
2414*67e74705SXin Li   int __cc;
2415*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a,
2416*67e74705SXin Li                         (vector signed int)__b, &__cc);
2417*67e74705SXin Li   return __cc == 3;
2418*67e74705SXin Li }
2419*67e74705SXin Li 
2420*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector unsigned int __a,vector bool int __b)2421*67e74705SXin Li vec_all_ne(vector unsigned int __a, vector bool int __b) {
2422*67e74705SXin Li   int __cc;
2423*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a,
2424*67e74705SXin Li                         (vector signed int)__b, &__cc);
2425*67e74705SXin Li   return __cc == 3;
2426*67e74705SXin Li }
2427*67e74705SXin Li 
2428*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector bool int __a,vector unsigned int __b)2429*67e74705SXin Li vec_all_ne(vector bool int __a, vector unsigned int __b) {
2430*67e74705SXin Li   int __cc;
2431*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a,
2432*67e74705SXin Li                         (vector signed int)__b, &__cc);
2433*67e74705SXin Li   return __cc == 3;
2434*67e74705SXin Li }
2435*67e74705SXin Li 
2436*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector bool int __a,vector bool int __b)2437*67e74705SXin Li vec_all_ne(vector bool int __a, vector bool int __b) {
2438*67e74705SXin Li   int __cc;
2439*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a,
2440*67e74705SXin Li                         (vector signed int)__b, &__cc);
2441*67e74705SXin Li   return __cc == 3;
2442*67e74705SXin Li }
2443*67e74705SXin Li 
2444*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector signed long long __a,vector signed long long __b)2445*67e74705SXin Li vec_all_ne(vector signed long long __a, vector signed long long __b) {
2446*67e74705SXin Li   int __cc;
2447*67e74705SXin Li   __builtin_s390_vceqgs(__a, __b, &__cc);
2448*67e74705SXin Li   return __cc == 3;
2449*67e74705SXin Li }
2450*67e74705SXin Li 
2451*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector signed long long __a,vector bool long long __b)2452*67e74705SXin Li vec_all_ne(vector signed long long __a, vector bool long long __b) {
2453*67e74705SXin Li   int __cc;
2454*67e74705SXin Li   __builtin_s390_vceqgs(__a, (vector signed long long)__b, &__cc);
2455*67e74705SXin Li   return __cc == 3;
2456*67e74705SXin Li }
2457*67e74705SXin Li 
2458*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector bool long long __a,vector signed long long __b)2459*67e74705SXin Li vec_all_ne(vector bool long long __a, vector signed long long __b) {
2460*67e74705SXin Li   int __cc;
2461*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a, __b, &__cc);
2462*67e74705SXin Li   return __cc == 3;
2463*67e74705SXin Li }
2464*67e74705SXin Li 
2465*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector unsigned long long __a,vector unsigned long long __b)2466*67e74705SXin Li vec_all_ne(vector unsigned long long __a, vector unsigned long long __b) {
2467*67e74705SXin Li   int __cc;
2468*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a,
2469*67e74705SXin Li                         (vector signed long long)__b, &__cc);
2470*67e74705SXin Li   return __cc == 3;
2471*67e74705SXin Li }
2472*67e74705SXin Li 
2473*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector unsigned long long __a,vector bool long long __b)2474*67e74705SXin Li vec_all_ne(vector unsigned long long __a, vector bool long long __b) {
2475*67e74705SXin Li   int __cc;
2476*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a,
2477*67e74705SXin Li                         (vector signed long long)__b, &__cc);
2478*67e74705SXin Li   return __cc == 3;
2479*67e74705SXin Li }
2480*67e74705SXin Li 
2481*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector bool long long __a,vector unsigned long long __b)2482*67e74705SXin Li vec_all_ne(vector bool long long __a, vector unsigned long long __b) {
2483*67e74705SXin Li   int __cc;
2484*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a,
2485*67e74705SXin Li                         (vector signed long long)__b, &__cc);
2486*67e74705SXin Li   return __cc == 3;
2487*67e74705SXin Li }
2488*67e74705SXin Li 
2489*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector bool long long __a,vector bool long long __b)2490*67e74705SXin Li vec_all_ne(vector bool long long __a, vector bool long long __b) {
2491*67e74705SXin Li   int __cc;
2492*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a,
2493*67e74705SXin Li                         (vector signed long long)__b, &__cc);
2494*67e74705SXin Li   return __cc == 3;
2495*67e74705SXin Li }
2496*67e74705SXin Li 
2497*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ne(vector double __a,vector double __b)2498*67e74705SXin Li vec_all_ne(vector double __a, vector double __b) {
2499*67e74705SXin Li   int __cc;
2500*67e74705SXin Li   __builtin_s390_vfcedbs(__a, __b, &__cc);
2501*67e74705SXin Li   return __cc == 3;
2502*67e74705SXin Li }
2503*67e74705SXin Li 
2504*67e74705SXin Li /*-- vec_all_ge -------------------------------------------------------------*/
2505*67e74705SXin Li 
2506*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector signed char __a,vector signed char __b)2507*67e74705SXin Li vec_all_ge(vector signed char __a, vector signed char __b) {
2508*67e74705SXin Li   int __cc;
2509*67e74705SXin Li   __builtin_s390_vchbs(__b, __a, &__cc);
2510*67e74705SXin Li   return __cc == 3;
2511*67e74705SXin Li }
2512*67e74705SXin Li 
2513*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector signed char __a,vector bool char __b)2514*67e74705SXin Li vec_all_ge(vector signed char __a, vector bool char __b) {
2515*67e74705SXin Li   int __cc;
2516*67e74705SXin Li   __builtin_s390_vchbs((vector signed char)__b, __a, &__cc);
2517*67e74705SXin Li   return __cc == 3;
2518*67e74705SXin Li }
2519*67e74705SXin Li 
2520*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector bool char __a,vector signed char __b)2521*67e74705SXin Li vec_all_ge(vector bool char __a, vector signed char __b) {
2522*67e74705SXin Li   int __cc;
2523*67e74705SXin Li   __builtin_s390_vchbs(__b, (vector signed char)__a, &__cc);
2524*67e74705SXin Li   return __cc == 3;
2525*67e74705SXin Li }
2526*67e74705SXin Li 
2527*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector unsigned char __a,vector unsigned char __b)2528*67e74705SXin Li vec_all_ge(vector unsigned char __a, vector unsigned char __b) {
2529*67e74705SXin Li   int __cc;
2530*67e74705SXin Li   __builtin_s390_vchlbs(__b, __a, &__cc);
2531*67e74705SXin Li   return __cc == 3;
2532*67e74705SXin Li }
2533*67e74705SXin Li 
2534*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector unsigned char __a,vector bool char __b)2535*67e74705SXin Li vec_all_ge(vector unsigned char __a, vector bool char __b) {
2536*67e74705SXin Li   int __cc;
2537*67e74705SXin Li   __builtin_s390_vchlbs((vector unsigned char)__b, __a, &__cc);
2538*67e74705SXin Li   return __cc == 3;
2539*67e74705SXin Li }
2540*67e74705SXin Li 
2541*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector bool char __a,vector unsigned char __b)2542*67e74705SXin Li vec_all_ge(vector bool char __a, vector unsigned char __b) {
2543*67e74705SXin Li   int __cc;
2544*67e74705SXin Li   __builtin_s390_vchlbs(__b, (vector unsigned char)__a, &__cc);
2545*67e74705SXin Li   return __cc == 3;
2546*67e74705SXin Li }
2547*67e74705SXin Li 
2548*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector bool char __a,vector bool char __b)2549*67e74705SXin Li vec_all_ge(vector bool char __a, vector bool char __b) {
2550*67e74705SXin Li   int __cc;
2551*67e74705SXin Li   __builtin_s390_vchlbs((vector unsigned char)__b,
2552*67e74705SXin Li                         (vector unsigned char)__a, &__cc);
2553*67e74705SXin Li   return __cc == 3;
2554*67e74705SXin Li }
2555*67e74705SXin Li 
2556*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector signed short __a,vector signed short __b)2557*67e74705SXin Li vec_all_ge(vector signed short __a, vector signed short __b) {
2558*67e74705SXin Li   int __cc;
2559*67e74705SXin Li   __builtin_s390_vchhs(__b, __a, &__cc);
2560*67e74705SXin Li   return __cc == 3;
2561*67e74705SXin Li }
2562*67e74705SXin Li 
2563*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector signed short __a,vector bool short __b)2564*67e74705SXin Li vec_all_ge(vector signed short __a, vector bool short __b) {
2565*67e74705SXin Li   int __cc;
2566*67e74705SXin Li   __builtin_s390_vchhs((vector signed short)__b, __a, &__cc);
2567*67e74705SXin Li   return __cc == 3;
2568*67e74705SXin Li }
2569*67e74705SXin Li 
2570*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector bool short __a,vector signed short __b)2571*67e74705SXin Li vec_all_ge(vector bool short __a, vector signed short __b) {
2572*67e74705SXin Li   int __cc;
2573*67e74705SXin Li   __builtin_s390_vchhs(__b, (vector signed short)__a, &__cc);
2574*67e74705SXin Li   return __cc == 3;
2575*67e74705SXin Li }
2576*67e74705SXin Li 
2577*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector unsigned short __a,vector unsigned short __b)2578*67e74705SXin Li vec_all_ge(vector unsigned short __a, vector unsigned short __b) {
2579*67e74705SXin Li   int __cc;
2580*67e74705SXin Li   __builtin_s390_vchlhs(__b, __a, &__cc);
2581*67e74705SXin Li   return __cc == 3;
2582*67e74705SXin Li }
2583*67e74705SXin Li 
2584*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector unsigned short __a,vector bool short __b)2585*67e74705SXin Li vec_all_ge(vector unsigned short __a, vector bool short __b) {
2586*67e74705SXin Li   int __cc;
2587*67e74705SXin Li   __builtin_s390_vchlhs((vector unsigned short)__b, __a, &__cc);
2588*67e74705SXin Li   return __cc == 3;
2589*67e74705SXin Li }
2590*67e74705SXin Li 
2591*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector bool short __a,vector unsigned short __b)2592*67e74705SXin Li vec_all_ge(vector bool short __a, vector unsigned short __b) {
2593*67e74705SXin Li   int __cc;
2594*67e74705SXin Li   __builtin_s390_vchlhs(__b, (vector unsigned short)__a, &__cc);
2595*67e74705SXin Li   return __cc == 3;
2596*67e74705SXin Li }
2597*67e74705SXin Li 
2598*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector bool short __a,vector bool short __b)2599*67e74705SXin Li vec_all_ge(vector bool short __a, vector bool short __b) {
2600*67e74705SXin Li   int __cc;
2601*67e74705SXin Li   __builtin_s390_vchlhs((vector unsigned short)__b,
2602*67e74705SXin Li                         (vector unsigned short)__a, &__cc);
2603*67e74705SXin Li   return __cc == 3;
2604*67e74705SXin Li }
2605*67e74705SXin Li 
2606*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector signed int __a,vector signed int __b)2607*67e74705SXin Li vec_all_ge(vector signed int __a, vector signed int __b) {
2608*67e74705SXin Li   int __cc;
2609*67e74705SXin Li   __builtin_s390_vchfs(__b, __a, &__cc);
2610*67e74705SXin Li   return __cc == 3;
2611*67e74705SXin Li }
2612*67e74705SXin Li 
2613*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector signed int __a,vector bool int __b)2614*67e74705SXin Li vec_all_ge(vector signed int __a, vector bool int __b) {
2615*67e74705SXin Li   int __cc;
2616*67e74705SXin Li   __builtin_s390_vchfs((vector signed int)__b, __a, &__cc);
2617*67e74705SXin Li   return __cc == 3;
2618*67e74705SXin Li }
2619*67e74705SXin Li 
2620*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector bool int __a,vector signed int __b)2621*67e74705SXin Li vec_all_ge(vector bool int __a, vector signed int __b) {
2622*67e74705SXin Li   int __cc;
2623*67e74705SXin Li   __builtin_s390_vchfs(__b, (vector signed int)__a, &__cc);
2624*67e74705SXin Li   return __cc == 3;
2625*67e74705SXin Li }
2626*67e74705SXin Li 
2627*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector unsigned int __a,vector unsigned int __b)2628*67e74705SXin Li vec_all_ge(vector unsigned int __a, vector unsigned int __b) {
2629*67e74705SXin Li   int __cc;
2630*67e74705SXin Li   __builtin_s390_vchlfs(__b, __a, &__cc);
2631*67e74705SXin Li   return __cc == 3;
2632*67e74705SXin Li }
2633*67e74705SXin Li 
2634*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector unsigned int __a,vector bool int __b)2635*67e74705SXin Li vec_all_ge(vector unsigned int __a, vector bool int __b) {
2636*67e74705SXin Li   int __cc;
2637*67e74705SXin Li   __builtin_s390_vchlfs((vector unsigned int)__b, __a, &__cc);
2638*67e74705SXin Li   return __cc == 3;
2639*67e74705SXin Li }
2640*67e74705SXin Li 
2641*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector bool int __a,vector unsigned int __b)2642*67e74705SXin Li vec_all_ge(vector bool int __a, vector unsigned int __b) {
2643*67e74705SXin Li   int __cc;
2644*67e74705SXin Li   __builtin_s390_vchlfs(__b, (vector unsigned int)__a, &__cc);
2645*67e74705SXin Li   return __cc == 3;
2646*67e74705SXin Li }
2647*67e74705SXin Li 
2648*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector bool int __a,vector bool int __b)2649*67e74705SXin Li vec_all_ge(vector bool int __a, vector bool int __b) {
2650*67e74705SXin Li   int __cc;
2651*67e74705SXin Li   __builtin_s390_vchlfs((vector unsigned int)__b,
2652*67e74705SXin Li                         (vector unsigned int)__a, &__cc);
2653*67e74705SXin Li   return __cc == 3;
2654*67e74705SXin Li }
2655*67e74705SXin Li 
2656*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector signed long long __a,vector signed long long __b)2657*67e74705SXin Li vec_all_ge(vector signed long long __a, vector signed long long __b) {
2658*67e74705SXin Li   int __cc;
2659*67e74705SXin Li   __builtin_s390_vchgs(__b, __a, &__cc);
2660*67e74705SXin Li   return __cc == 3;
2661*67e74705SXin Li }
2662*67e74705SXin Li 
2663*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector signed long long __a,vector bool long long __b)2664*67e74705SXin Li vec_all_ge(vector signed long long __a, vector bool long long __b) {
2665*67e74705SXin Li   int __cc;
2666*67e74705SXin Li   __builtin_s390_vchgs((vector signed long long)__b, __a, &__cc);
2667*67e74705SXin Li   return __cc == 3;
2668*67e74705SXin Li }
2669*67e74705SXin Li 
2670*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector bool long long __a,vector signed long long __b)2671*67e74705SXin Li vec_all_ge(vector bool long long __a, vector signed long long __b) {
2672*67e74705SXin Li   int __cc;
2673*67e74705SXin Li   __builtin_s390_vchgs(__b, (vector signed long long)__a, &__cc);
2674*67e74705SXin Li   return __cc == 3;
2675*67e74705SXin Li }
2676*67e74705SXin Li 
2677*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector unsigned long long __a,vector unsigned long long __b)2678*67e74705SXin Li vec_all_ge(vector unsigned long long __a, vector unsigned long long __b) {
2679*67e74705SXin Li   int __cc;
2680*67e74705SXin Li   __builtin_s390_vchlgs(__b, __a, &__cc);
2681*67e74705SXin Li   return __cc == 3;
2682*67e74705SXin Li }
2683*67e74705SXin Li 
2684*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector unsigned long long __a,vector bool long long __b)2685*67e74705SXin Li vec_all_ge(vector unsigned long long __a, vector bool long long __b) {
2686*67e74705SXin Li   int __cc;
2687*67e74705SXin Li   __builtin_s390_vchlgs((vector unsigned long long)__b, __a, &__cc);
2688*67e74705SXin Li   return __cc == 3;
2689*67e74705SXin Li }
2690*67e74705SXin Li 
2691*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector bool long long __a,vector unsigned long long __b)2692*67e74705SXin Li vec_all_ge(vector bool long long __a, vector unsigned long long __b) {
2693*67e74705SXin Li   int __cc;
2694*67e74705SXin Li   __builtin_s390_vchlgs(__b, (vector unsigned long long)__a, &__cc);
2695*67e74705SXin Li   return __cc == 3;
2696*67e74705SXin Li }
2697*67e74705SXin Li 
2698*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector bool long long __a,vector bool long long __b)2699*67e74705SXin Li vec_all_ge(vector bool long long __a, vector bool long long __b) {
2700*67e74705SXin Li   int __cc;
2701*67e74705SXin Li   __builtin_s390_vchlgs((vector unsigned long long)__b,
2702*67e74705SXin Li                         (vector unsigned long long)__a, &__cc);
2703*67e74705SXin Li   return __cc == 3;
2704*67e74705SXin Li }
2705*67e74705SXin Li 
2706*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_ge(vector double __a,vector double __b)2707*67e74705SXin Li vec_all_ge(vector double __a, vector double __b) {
2708*67e74705SXin Li   int __cc;
2709*67e74705SXin Li   __builtin_s390_vfchedbs(__a, __b, &__cc);
2710*67e74705SXin Li   return __cc == 0;
2711*67e74705SXin Li }
2712*67e74705SXin Li 
2713*67e74705SXin Li /*-- vec_all_gt -------------------------------------------------------------*/
2714*67e74705SXin Li 
2715*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector signed char __a,vector signed char __b)2716*67e74705SXin Li vec_all_gt(vector signed char __a, vector signed char __b) {
2717*67e74705SXin Li   int __cc;
2718*67e74705SXin Li   __builtin_s390_vchbs(__a, __b, &__cc);
2719*67e74705SXin Li   return __cc == 0;
2720*67e74705SXin Li }
2721*67e74705SXin Li 
2722*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector signed char __a,vector bool char __b)2723*67e74705SXin Li vec_all_gt(vector signed char __a, vector bool char __b) {
2724*67e74705SXin Li   int __cc;
2725*67e74705SXin Li   __builtin_s390_vchbs(__a, (vector signed char)__b, &__cc);
2726*67e74705SXin Li   return __cc == 0;
2727*67e74705SXin Li }
2728*67e74705SXin Li 
2729*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector bool char __a,vector signed char __b)2730*67e74705SXin Li vec_all_gt(vector bool char __a, vector signed char __b) {
2731*67e74705SXin Li   int __cc;
2732*67e74705SXin Li   __builtin_s390_vchbs((vector signed char)__a, __b, &__cc);
2733*67e74705SXin Li   return __cc == 0;
2734*67e74705SXin Li }
2735*67e74705SXin Li 
2736*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector unsigned char __a,vector unsigned char __b)2737*67e74705SXin Li vec_all_gt(vector unsigned char __a, vector unsigned char __b) {
2738*67e74705SXin Li   int __cc;
2739*67e74705SXin Li   __builtin_s390_vchlbs(__a, __b, &__cc);
2740*67e74705SXin Li   return __cc == 0;
2741*67e74705SXin Li }
2742*67e74705SXin Li 
2743*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector unsigned char __a,vector bool char __b)2744*67e74705SXin Li vec_all_gt(vector unsigned char __a, vector bool char __b) {
2745*67e74705SXin Li   int __cc;
2746*67e74705SXin Li   __builtin_s390_vchlbs(__a, (vector unsigned char)__b, &__cc);
2747*67e74705SXin Li   return __cc == 0;
2748*67e74705SXin Li }
2749*67e74705SXin Li 
2750*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector bool char __a,vector unsigned char __b)2751*67e74705SXin Li vec_all_gt(vector bool char __a, vector unsigned char __b) {
2752*67e74705SXin Li   int __cc;
2753*67e74705SXin Li   __builtin_s390_vchlbs((vector unsigned char)__a, __b, &__cc);
2754*67e74705SXin Li   return __cc == 0;
2755*67e74705SXin Li }
2756*67e74705SXin Li 
2757*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector bool char __a,vector bool char __b)2758*67e74705SXin Li vec_all_gt(vector bool char __a, vector bool char __b) {
2759*67e74705SXin Li   int __cc;
2760*67e74705SXin Li   __builtin_s390_vchlbs((vector unsigned char)__a,
2761*67e74705SXin Li                         (vector unsigned char)__b, &__cc);
2762*67e74705SXin Li   return __cc == 0;
2763*67e74705SXin Li }
2764*67e74705SXin Li 
2765*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector signed short __a,vector signed short __b)2766*67e74705SXin Li vec_all_gt(vector signed short __a, vector signed short __b) {
2767*67e74705SXin Li   int __cc;
2768*67e74705SXin Li   __builtin_s390_vchhs(__a, __b, &__cc);
2769*67e74705SXin Li   return __cc == 0;
2770*67e74705SXin Li }
2771*67e74705SXin Li 
2772*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector signed short __a,vector bool short __b)2773*67e74705SXin Li vec_all_gt(vector signed short __a, vector bool short __b) {
2774*67e74705SXin Li   int __cc;
2775*67e74705SXin Li   __builtin_s390_vchhs(__a, (vector signed short)__b, &__cc);
2776*67e74705SXin Li   return __cc == 0;
2777*67e74705SXin Li }
2778*67e74705SXin Li 
2779*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector bool short __a,vector signed short __b)2780*67e74705SXin Li vec_all_gt(vector bool short __a, vector signed short __b) {
2781*67e74705SXin Li   int __cc;
2782*67e74705SXin Li   __builtin_s390_vchhs((vector signed short)__a, __b, &__cc);
2783*67e74705SXin Li   return __cc == 0;
2784*67e74705SXin Li }
2785*67e74705SXin Li 
2786*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector unsigned short __a,vector unsigned short __b)2787*67e74705SXin Li vec_all_gt(vector unsigned short __a, vector unsigned short __b) {
2788*67e74705SXin Li   int __cc;
2789*67e74705SXin Li   __builtin_s390_vchlhs(__a, __b, &__cc);
2790*67e74705SXin Li   return __cc == 0;
2791*67e74705SXin Li }
2792*67e74705SXin Li 
2793*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector unsigned short __a,vector bool short __b)2794*67e74705SXin Li vec_all_gt(vector unsigned short __a, vector bool short __b) {
2795*67e74705SXin Li   int __cc;
2796*67e74705SXin Li   __builtin_s390_vchlhs(__a, (vector unsigned short)__b, &__cc);
2797*67e74705SXin Li   return __cc == 0;
2798*67e74705SXin Li }
2799*67e74705SXin Li 
2800*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector bool short __a,vector unsigned short __b)2801*67e74705SXin Li vec_all_gt(vector bool short __a, vector unsigned short __b) {
2802*67e74705SXin Li   int __cc;
2803*67e74705SXin Li   __builtin_s390_vchlhs((vector unsigned short)__a, __b, &__cc);
2804*67e74705SXin Li   return __cc == 0;
2805*67e74705SXin Li }
2806*67e74705SXin Li 
2807*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector bool short __a,vector bool short __b)2808*67e74705SXin Li vec_all_gt(vector bool short __a, vector bool short __b) {
2809*67e74705SXin Li   int __cc;
2810*67e74705SXin Li   __builtin_s390_vchlhs((vector unsigned short)__a,
2811*67e74705SXin Li                         (vector unsigned short)__b, &__cc);
2812*67e74705SXin Li   return __cc == 0;
2813*67e74705SXin Li }
2814*67e74705SXin Li 
2815*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector signed int __a,vector signed int __b)2816*67e74705SXin Li vec_all_gt(vector signed int __a, vector signed int __b) {
2817*67e74705SXin Li   int __cc;
2818*67e74705SXin Li   __builtin_s390_vchfs(__a, __b, &__cc);
2819*67e74705SXin Li   return __cc == 0;
2820*67e74705SXin Li }
2821*67e74705SXin Li 
2822*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector signed int __a,vector bool int __b)2823*67e74705SXin Li vec_all_gt(vector signed int __a, vector bool int __b) {
2824*67e74705SXin Li   int __cc;
2825*67e74705SXin Li   __builtin_s390_vchfs(__a, (vector signed int)__b, &__cc);
2826*67e74705SXin Li   return __cc == 0;
2827*67e74705SXin Li }
2828*67e74705SXin Li 
2829*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector bool int __a,vector signed int __b)2830*67e74705SXin Li vec_all_gt(vector bool int __a, vector signed int __b) {
2831*67e74705SXin Li   int __cc;
2832*67e74705SXin Li   __builtin_s390_vchfs((vector signed int)__a, __b, &__cc);
2833*67e74705SXin Li   return __cc == 0;
2834*67e74705SXin Li }
2835*67e74705SXin Li 
2836*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector unsigned int __a,vector unsigned int __b)2837*67e74705SXin Li vec_all_gt(vector unsigned int __a, vector unsigned int __b) {
2838*67e74705SXin Li   int __cc;
2839*67e74705SXin Li   __builtin_s390_vchlfs(__a, __b, &__cc);
2840*67e74705SXin Li   return __cc == 0;
2841*67e74705SXin Li }
2842*67e74705SXin Li 
2843*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector unsigned int __a,vector bool int __b)2844*67e74705SXin Li vec_all_gt(vector unsigned int __a, vector bool int __b) {
2845*67e74705SXin Li   int __cc;
2846*67e74705SXin Li   __builtin_s390_vchlfs(__a, (vector unsigned int)__b, &__cc);
2847*67e74705SXin Li   return __cc == 0;
2848*67e74705SXin Li }
2849*67e74705SXin Li 
2850*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector bool int __a,vector unsigned int __b)2851*67e74705SXin Li vec_all_gt(vector bool int __a, vector unsigned int __b) {
2852*67e74705SXin Li   int __cc;
2853*67e74705SXin Li   __builtin_s390_vchlfs((vector unsigned int)__a, __b, &__cc);
2854*67e74705SXin Li   return __cc == 0;
2855*67e74705SXin Li }
2856*67e74705SXin Li 
2857*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector bool int __a,vector bool int __b)2858*67e74705SXin Li vec_all_gt(vector bool int __a, vector bool int __b) {
2859*67e74705SXin Li   int __cc;
2860*67e74705SXin Li   __builtin_s390_vchlfs((vector unsigned int)__a,
2861*67e74705SXin Li                         (vector unsigned int)__b, &__cc);
2862*67e74705SXin Li   return __cc == 0;
2863*67e74705SXin Li }
2864*67e74705SXin Li 
2865*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector signed long long __a,vector signed long long __b)2866*67e74705SXin Li vec_all_gt(vector signed long long __a, vector signed long long __b) {
2867*67e74705SXin Li   int __cc;
2868*67e74705SXin Li   __builtin_s390_vchgs(__a, __b, &__cc);
2869*67e74705SXin Li   return __cc == 0;
2870*67e74705SXin Li }
2871*67e74705SXin Li 
2872*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector signed long long __a,vector bool long long __b)2873*67e74705SXin Li vec_all_gt(vector signed long long __a, vector bool long long __b) {
2874*67e74705SXin Li   int __cc;
2875*67e74705SXin Li   __builtin_s390_vchgs(__a, (vector signed long long)__b, &__cc);
2876*67e74705SXin Li   return __cc == 0;
2877*67e74705SXin Li }
2878*67e74705SXin Li 
2879*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector bool long long __a,vector signed long long __b)2880*67e74705SXin Li vec_all_gt(vector bool long long __a, vector signed long long __b) {
2881*67e74705SXin Li   int __cc;
2882*67e74705SXin Li   __builtin_s390_vchgs((vector signed long long)__a, __b, &__cc);
2883*67e74705SXin Li   return __cc == 0;
2884*67e74705SXin Li }
2885*67e74705SXin Li 
2886*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector unsigned long long __a,vector unsigned long long __b)2887*67e74705SXin Li vec_all_gt(vector unsigned long long __a, vector unsigned long long __b) {
2888*67e74705SXin Li   int __cc;
2889*67e74705SXin Li   __builtin_s390_vchlgs(__a, __b, &__cc);
2890*67e74705SXin Li   return __cc == 0;
2891*67e74705SXin Li }
2892*67e74705SXin Li 
2893*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector unsigned long long __a,vector bool long long __b)2894*67e74705SXin Li vec_all_gt(vector unsigned long long __a, vector bool long long __b) {
2895*67e74705SXin Li   int __cc;
2896*67e74705SXin Li   __builtin_s390_vchlgs(__a, (vector unsigned long long)__b, &__cc);
2897*67e74705SXin Li   return __cc == 0;
2898*67e74705SXin Li }
2899*67e74705SXin Li 
2900*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector bool long long __a,vector unsigned long long __b)2901*67e74705SXin Li vec_all_gt(vector bool long long __a, vector unsigned long long __b) {
2902*67e74705SXin Li   int __cc;
2903*67e74705SXin Li   __builtin_s390_vchlgs((vector unsigned long long)__a, __b, &__cc);
2904*67e74705SXin Li   return __cc == 0;
2905*67e74705SXin Li }
2906*67e74705SXin Li 
2907*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector bool long long __a,vector bool long long __b)2908*67e74705SXin Li vec_all_gt(vector bool long long __a, vector bool long long __b) {
2909*67e74705SXin Li   int __cc;
2910*67e74705SXin Li   __builtin_s390_vchlgs((vector unsigned long long)__a,
2911*67e74705SXin Li                         (vector unsigned long long)__b, &__cc);
2912*67e74705SXin Li   return __cc == 0;
2913*67e74705SXin Li }
2914*67e74705SXin Li 
2915*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_gt(vector double __a,vector double __b)2916*67e74705SXin Li vec_all_gt(vector double __a, vector double __b) {
2917*67e74705SXin Li   int __cc;
2918*67e74705SXin Li   __builtin_s390_vfchdbs(__a, __b, &__cc);
2919*67e74705SXin Li   return __cc == 0;
2920*67e74705SXin Li }
2921*67e74705SXin Li 
2922*67e74705SXin Li /*-- vec_all_le -------------------------------------------------------------*/
2923*67e74705SXin Li 
2924*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector signed char __a,vector signed char __b)2925*67e74705SXin Li vec_all_le(vector signed char __a, vector signed char __b) {
2926*67e74705SXin Li   int __cc;
2927*67e74705SXin Li   __builtin_s390_vchbs(__a, __b, &__cc);
2928*67e74705SXin Li   return __cc == 3;
2929*67e74705SXin Li }
2930*67e74705SXin Li 
2931*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector signed char __a,vector bool char __b)2932*67e74705SXin Li vec_all_le(vector signed char __a, vector bool char __b) {
2933*67e74705SXin Li   int __cc;
2934*67e74705SXin Li   __builtin_s390_vchbs(__a, (vector signed char)__b, &__cc);
2935*67e74705SXin Li   return __cc == 3;
2936*67e74705SXin Li }
2937*67e74705SXin Li 
2938*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector bool char __a,vector signed char __b)2939*67e74705SXin Li vec_all_le(vector bool char __a, vector signed char __b) {
2940*67e74705SXin Li   int __cc;
2941*67e74705SXin Li   __builtin_s390_vchbs((vector signed char)__a, __b, &__cc);
2942*67e74705SXin Li   return __cc == 3;
2943*67e74705SXin Li }
2944*67e74705SXin Li 
2945*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector unsigned char __a,vector unsigned char __b)2946*67e74705SXin Li vec_all_le(vector unsigned char __a, vector unsigned char __b) {
2947*67e74705SXin Li   int __cc;
2948*67e74705SXin Li   __builtin_s390_vchlbs(__a, __b, &__cc);
2949*67e74705SXin Li   return __cc == 3;
2950*67e74705SXin Li }
2951*67e74705SXin Li 
2952*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector unsigned char __a,vector bool char __b)2953*67e74705SXin Li vec_all_le(vector unsigned char __a, vector bool char __b) {
2954*67e74705SXin Li   int __cc;
2955*67e74705SXin Li   __builtin_s390_vchlbs(__a, (vector unsigned char)__b, &__cc);
2956*67e74705SXin Li   return __cc == 3;
2957*67e74705SXin Li }
2958*67e74705SXin Li 
2959*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector bool char __a,vector unsigned char __b)2960*67e74705SXin Li vec_all_le(vector bool char __a, vector unsigned char __b) {
2961*67e74705SXin Li   int __cc;
2962*67e74705SXin Li   __builtin_s390_vchlbs((vector unsigned char)__a, __b, &__cc);
2963*67e74705SXin Li   return __cc == 3;
2964*67e74705SXin Li }
2965*67e74705SXin Li 
2966*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector bool char __a,vector bool char __b)2967*67e74705SXin Li vec_all_le(vector bool char __a, vector bool char __b) {
2968*67e74705SXin Li   int __cc;
2969*67e74705SXin Li   __builtin_s390_vchlbs((vector unsigned char)__a,
2970*67e74705SXin Li                         (vector unsigned char)__b, &__cc);
2971*67e74705SXin Li   return __cc == 3;
2972*67e74705SXin Li }
2973*67e74705SXin Li 
2974*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector signed short __a,vector signed short __b)2975*67e74705SXin Li vec_all_le(vector signed short __a, vector signed short __b) {
2976*67e74705SXin Li   int __cc;
2977*67e74705SXin Li   __builtin_s390_vchhs(__a, __b, &__cc);
2978*67e74705SXin Li   return __cc == 3;
2979*67e74705SXin Li }
2980*67e74705SXin Li 
2981*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector signed short __a,vector bool short __b)2982*67e74705SXin Li vec_all_le(vector signed short __a, vector bool short __b) {
2983*67e74705SXin Li   int __cc;
2984*67e74705SXin Li   __builtin_s390_vchhs(__a, (vector signed short)__b, &__cc);
2985*67e74705SXin Li   return __cc == 3;
2986*67e74705SXin Li }
2987*67e74705SXin Li 
2988*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector bool short __a,vector signed short __b)2989*67e74705SXin Li vec_all_le(vector bool short __a, vector signed short __b) {
2990*67e74705SXin Li   int __cc;
2991*67e74705SXin Li   __builtin_s390_vchhs((vector signed short)__a, __b, &__cc);
2992*67e74705SXin Li   return __cc == 3;
2993*67e74705SXin Li }
2994*67e74705SXin Li 
2995*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector unsigned short __a,vector unsigned short __b)2996*67e74705SXin Li vec_all_le(vector unsigned short __a, vector unsigned short __b) {
2997*67e74705SXin Li   int __cc;
2998*67e74705SXin Li   __builtin_s390_vchlhs(__a, __b, &__cc);
2999*67e74705SXin Li   return __cc == 3;
3000*67e74705SXin Li }
3001*67e74705SXin Li 
3002*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector unsigned short __a,vector bool short __b)3003*67e74705SXin Li vec_all_le(vector unsigned short __a, vector bool short __b) {
3004*67e74705SXin Li   int __cc;
3005*67e74705SXin Li   __builtin_s390_vchlhs(__a, (vector unsigned short)__b, &__cc);
3006*67e74705SXin Li   return __cc == 3;
3007*67e74705SXin Li }
3008*67e74705SXin Li 
3009*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector bool short __a,vector unsigned short __b)3010*67e74705SXin Li vec_all_le(vector bool short __a, vector unsigned short __b) {
3011*67e74705SXin Li   int __cc;
3012*67e74705SXin Li   __builtin_s390_vchlhs((vector unsigned short)__a, __b, &__cc);
3013*67e74705SXin Li   return __cc == 3;
3014*67e74705SXin Li }
3015*67e74705SXin Li 
3016*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector bool short __a,vector bool short __b)3017*67e74705SXin Li vec_all_le(vector bool short __a, vector bool short __b) {
3018*67e74705SXin Li   int __cc;
3019*67e74705SXin Li   __builtin_s390_vchlhs((vector unsigned short)__a,
3020*67e74705SXin Li                         (vector unsigned short)__b, &__cc);
3021*67e74705SXin Li   return __cc == 3;
3022*67e74705SXin Li }
3023*67e74705SXin Li 
3024*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector signed int __a,vector signed int __b)3025*67e74705SXin Li vec_all_le(vector signed int __a, vector signed int __b) {
3026*67e74705SXin Li   int __cc;
3027*67e74705SXin Li   __builtin_s390_vchfs(__a, __b, &__cc);
3028*67e74705SXin Li   return __cc == 3;
3029*67e74705SXin Li }
3030*67e74705SXin Li 
3031*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector signed int __a,vector bool int __b)3032*67e74705SXin Li vec_all_le(vector signed int __a, vector bool int __b) {
3033*67e74705SXin Li   int __cc;
3034*67e74705SXin Li   __builtin_s390_vchfs(__a, (vector signed int)__b, &__cc);
3035*67e74705SXin Li   return __cc == 3;
3036*67e74705SXin Li }
3037*67e74705SXin Li 
3038*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector bool int __a,vector signed int __b)3039*67e74705SXin Li vec_all_le(vector bool int __a, vector signed int __b) {
3040*67e74705SXin Li   int __cc;
3041*67e74705SXin Li   __builtin_s390_vchfs((vector signed int)__a, __b, &__cc);
3042*67e74705SXin Li   return __cc == 3;
3043*67e74705SXin Li }
3044*67e74705SXin Li 
3045*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector unsigned int __a,vector unsigned int __b)3046*67e74705SXin Li vec_all_le(vector unsigned int __a, vector unsigned int __b) {
3047*67e74705SXin Li   int __cc;
3048*67e74705SXin Li   __builtin_s390_vchlfs(__a, __b, &__cc);
3049*67e74705SXin Li   return __cc == 3;
3050*67e74705SXin Li }
3051*67e74705SXin Li 
3052*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector unsigned int __a,vector bool int __b)3053*67e74705SXin Li vec_all_le(vector unsigned int __a, vector bool int __b) {
3054*67e74705SXin Li   int __cc;
3055*67e74705SXin Li   __builtin_s390_vchlfs(__a, (vector unsigned int)__b, &__cc);
3056*67e74705SXin Li   return __cc == 3;
3057*67e74705SXin Li }
3058*67e74705SXin Li 
3059*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector bool int __a,vector unsigned int __b)3060*67e74705SXin Li vec_all_le(vector bool int __a, vector unsigned int __b) {
3061*67e74705SXin Li   int __cc;
3062*67e74705SXin Li   __builtin_s390_vchlfs((vector unsigned int)__a, __b, &__cc);
3063*67e74705SXin Li   return __cc == 3;
3064*67e74705SXin Li }
3065*67e74705SXin Li 
3066*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector bool int __a,vector bool int __b)3067*67e74705SXin Li vec_all_le(vector bool int __a, vector bool int __b) {
3068*67e74705SXin Li   int __cc;
3069*67e74705SXin Li   __builtin_s390_vchlfs((vector unsigned int)__a,
3070*67e74705SXin Li                         (vector unsigned int)__b, &__cc);
3071*67e74705SXin Li   return __cc == 3;
3072*67e74705SXin Li }
3073*67e74705SXin Li 
3074*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector signed long long __a,vector signed long long __b)3075*67e74705SXin Li vec_all_le(vector signed long long __a, vector signed long long __b) {
3076*67e74705SXin Li   int __cc;
3077*67e74705SXin Li   __builtin_s390_vchgs(__a, __b, &__cc);
3078*67e74705SXin Li   return __cc == 3;
3079*67e74705SXin Li }
3080*67e74705SXin Li 
3081*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector signed long long __a,vector bool long long __b)3082*67e74705SXin Li vec_all_le(vector signed long long __a, vector bool long long __b) {
3083*67e74705SXin Li   int __cc;
3084*67e74705SXin Li   __builtin_s390_vchgs(__a, (vector signed long long)__b, &__cc);
3085*67e74705SXin Li   return __cc == 3;
3086*67e74705SXin Li }
3087*67e74705SXin Li 
3088*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector bool long long __a,vector signed long long __b)3089*67e74705SXin Li vec_all_le(vector bool long long __a, vector signed long long __b) {
3090*67e74705SXin Li   int __cc;
3091*67e74705SXin Li   __builtin_s390_vchgs((vector signed long long)__a, __b, &__cc);
3092*67e74705SXin Li   return __cc == 3;
3093*67e74705SXin Li }
3094*67e74705SXin Li 
3095*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector unsigned long long __a,vector unsigned long long __b)3096*67e74705SXin Li vec_all_le(vector unsigned long long __a, vector unsigned long long __b) {
3097*67e74705SXin Li   int __cc;
3098*67e74705SXin Li   __builtin_s390_vchlgs(__a, __b, &__cc);
3099*67e74705SXin Li   return __cc == 3;
3100*67e74705SXin Li }
3101*67e74705SXin Li 
3102*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector unsigned long long __a,vector bool long long __b)3103*67e74705SXin Li vec_all_le(vector unsigned long long __a, vector bool long long __b) {
3104*67e74705SXin Li   int __cc;
3105*67e74705SXin Li   __builtin_s390_vchlgs(__a, (vector unsigned long long)__b, &__cc);
3106*67e74705SXin Li   return __cc == 3;
3107*67e74705SXin Li }
3108*67e74705SXin Li 
3109*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector bool long long __a,vector unsigned long long __b)3110*67e74705SXin Li vec_all_le(vector bool long long __a, vector unsigned long long __b) {
3111*67e74705SXin Li   int __cc;
3112*67e74705SXin Li   __builtin_s390_vchlgs((vector unsigned long long)__a, __b, &__cc);
3113*67e74705SXin Li   return __cc == 3;
3114*67e74705SXin Li }
3115*67e74705SXin Li 
3116*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector bool long long __a,vector bool long long __b)3117*67e74705SXin Li vec_all_le(vector bool long long __a, vector bool long long __b) {
3118*67e74705SXin Li   int __cc;
3119*67e74705SXin Li   __builtin_s390_vchlgs((vector unsigned long long)__a,
3120*67e74705SXin Li                         (vector unsigned long long)__b, &__cc);
3121*67e74705SXin Li   return __cc == 3;
3122*67e74705SXin Li }
3123*67e74705SXin Li 
3124*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_le(vector double __a,vector double __b)3125*67e74705SXin Li vec_all_le(vector double __a, vector double __b) {
3126*67e74705SXin Li   int __cc;
3127*67e74705SXin Li   __builtin_s390_vfchedbs(__b, __a, &__cc);
3128*67e74705SXin Li   return __cc == 0;
3129*67e74705SXin Li }
3130*67e74705SXin Li 
3131*67e74705SXin Li /*-- vec_all_lt -------------------------------------------------------------*/
3132*67e74705SXin Li 
3133*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector signed char __a,vector signed char __b)3134*67e74705SXin Li vec_all_lt(vector signed char __a, vector signed char __b) {
3135*67e74705SXin Li   int __cc;
3136*67e74705SXin Li   __builtin_s390_vchbs(__b, __a, &__cc);
3137*67e74705SXin Li   return __cc == 0;
3138*67e74705SXin Li }
3139*67e74705SXin Li 
3140*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector signed char __a,vector bool char __b)3141*67e74705SXin Li vec_all_lt(vector signed char __a, vector bool char __b) {
3142*67e74705SXin Li   int __cc;
3143*67e74705SXin Li   __builtin_s390_vchbs((vector signed char)__b, __a, &__cc);
3144*67e74705SXin Li   return __cc == 0;
3145*67e74705SXin Li }
3146*67e74705SXin Li 
3147*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector bool char __a,vector signed char __b)3148*67e74705SXin Li vec_all_lt(vector bool char __a, vector signed char __b) {
3149*67e74705SXin Li   int __cc;
3150*67e74705SXin Li   __builtin_s390_vchbs(__b, (vector signed char)__a, &__cc);
3151*67e74705SXin Li   return __cc == 0;
3152*67e74705SXin Li }
3153*67e74705SXin Li 
3154*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector unsigned char __a,vector unsigned char __b)3155*67e74705SXin Li vec_all_lt(vector unsigned char __a, vector unsigned char __b) {
3156*67e74705SXin Li   int __cc;
3157*67e74705SXin Li   __builtin_s390_vchlbs(__b, __a, &__cc);
3158*67e74705SXin Li   return __cc == 0;
3159*67e74705SXin Li }
3160*67e74705SXin Li 
3161*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector unsigned char __a,vector bool char __b)3162*67e74705SXin Li vec_all_lt(vector unsigned char __a, vector bool char __b) {
3163*67e74705SXin Li   int __cc;
3164*67e74705SXin Li   __builtin_s390_vchlbs((vector unsigned char)__b, __a, &__cc);
3165*67e74705SXin Li   return __cc == 0;
3166*67e74705SXin Li }
3167*67e74705SXin Li 
3168*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector bool char __a,vector unsigned char __b)3169*67e74705SXin Li vec_all_lt(vector bool char __a, vector unsigned char __b) {
3170*67e74705SXin Li   int __cc;
3171*67e74705SXin Li   __builtin_s390_vchlbs(__b, (vector unsigned char)__a, &__cc);
3172*67e74705SXin Li   return __cc == 0;
3173*67e74705SXin Li }
3174*67e74705SXin Li 
3175*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector bool char __a,vector bool char __b)3176*67e74705SXin Li vec_all_lt(vector bool char __a, vector bool char __b) {
3177*67e74705SXin Li   int __cc;
3178*67e74705SXin Li   __builtin_s390_vchlbs((vector unsigned char)__b,
3179*67e74705SXin Li                         (vector unsigned char)__a, &__cc);
3180*67e74705SXin Li   return __cc == 0;
3181*67e74705SXin Li }
3182*67e74705SXin Li 
3183*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector signed short __a,vector signed short __b)3184*67e74705SXin Li vec_all_lt(vector signed short __a, vector signed short __b) {
3185*67e74705SXin Li   int __cc;
3186*67e74705SXin Li   __builtin_s390_vchhs(__b, __a, &__cc);
3187*67e74705SXin Li   return __cc == 0;
3188*67e74705SXin Li }
3189*67e74705SXin Li 
3190*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector signed short __a,vector bool short __b)3191*67e74705SXin Li vec_all_lt(vector signed short __a, vector bool short __b) {
3192*67e74705SXin Li   int __cc;
3193*67e74705SXin Li   __builtin_s390_vchhs((vector signed short)__b, __a, &__cc);
3194*67e74705SXin Li   return __cc == 0;
3195*67e74705SXin Li }
3196*67e74705SXin Li 
3197*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector bool short __a,vector signed short __b)3198*67e74705SXin Li vec_all_lt(vector bool short __a, vector signed short __b) {
3199*67e74705SXin Li   int __cc;
3200*67e74705SXin Li   __builtin_s390_vchhs(__b, (vector signed short)__a, &__cc);
3201*67e74705SXin Li   return __cc == 0;
3202*67e74705SXin Li }
3203*67e74705SXin Li 
3204*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector unsigned short __a,vector unsigned short __b)3205*67e74705SXin Li vec_all_lt(vector unsigned short __a, vector unsigned short __b) {
3206*67e74705SXin Li   int __cc;
3207*67e74705SXin Li   __builtin_s390_vchlhs(__b, __a, &__cc);
3208*67e74705SXin Li   return __cc == 0;
3209*67e74705SXin Li }
3210*67e74705SXin Li 
3211*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector unsigned short __a,vector bool short __b)3212*67e74705SXin Li vec_all_lt(vector unsigned short __a, vector bool short __b) {
3213*67e74705SXin Li   int __cc;
3214*67e74705SXin Li   __builtin_s390_vchlhs((vector unsigned short)__b, __a, &__cc);
3215*67e74705SXin Li   return __cc == 0;
3216*67e74705SXin Li }
3217*67e74705SXin Li 
3218*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector bool short __a,vector unsigned short __b)3219*67e74705SXin Li vec_all_lt(vector bool short __a, vector unsigned short __b) {
3220*67e74705SXin Li   int __cc;
3221*67e74705SXin Li   __builtin_s390_vchlhs(__b, (vector unsigned short)__a, &__cc);
3222*67e74705SXin Li   return __cc == 0;
3223*67e74705SXin Li }
3224*67e74705SXin Li 
3225*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector bool short __a,vector bool short __b)3226*67e74705SXin Li vec_all_lt(vector bool short __a, vector bool short __b) {
3227*67e74705SXin Li   int __cc;
3228*67e74705SXin Li   __builtin_s390_vchlhs((vector unsigned short)__b,
3229*67e74705SXin Li                         (vector unsigned short)__a, &__cc);
3230*67e74705SXin Li   return __cc == 0;
3231*67e74705SXin Li }
3232*67e74705SXin Li 
3233*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector signed int __a,vector signed int __b)3234*67e74705SXin Li vec_all_lt(vector signed int __a, vector signed int __b) {
3235*67e74705SXin Li   int __cc;
3236*67e74705SXin Li   __builtin_s390_vchfs(__b, __a, &__cc);
3237*67e74705SXin Li   return __cc == 0;
3238*67e74705SXin Li }
3239*67e74705SXin Li 
3240*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector signed int __a,vector bool int __b)3241*67e74705SXin Li vec_all_lt(vector signed int __a, vector bool int __b) {
3242*67e74705SXin Li   int __cc;
3243*67e74705SXin Li   __builtin_s390_vchfs((vector signed int)__b, __a, &__cc);
3244*67e74705SXin Li   return __cc == 0;
3245*67e74705SXin Li }
3246*67e74705SXin Li 
3247*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector bool int __a,vector signed int __b)3248*67e74705SXin Li vec_all_lt(vector bool int __a, vector signed int __b) {
3249*67e74705SXin Li   int __cc;
3250*67e74705SXin Li   __builtin_s390_vchfs(__b, (vector signed int)__a, &__cc);
3251*67e74705SXin Li   return __cc == 0;
3252*67e74705SXin Li }
3253*67e74705SXin Li 
3254*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector unsigned int __a,vector unsigned int __b)3255*67e74705SXin Li vec_all_lt(vector unsigned int __a, vector unsigned int __b) {
3256*67e74705SXin Li   int __cc;
3257*67e74705SXin Li   __builtin_s390_vchlfs(__b, __a, &__cc);
3258*67e74705SXin Li   return __cc == 0;
3259*67e74705SXin Li }
3260*67e74705SXin Li 
3261*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector unsigned int __a,vector bool int __b)3262*67e74705SXin Li vec_all_lt(vector unsigned int __a, vector bool int __b) {
3263*67e74705SXin Li   int __cc;
3264*67e74705SXin Li   __builtin_s390_vchlfs((vector unsigned int)__b, __a, &__cc);
3265*67e74705SXin Li   return __cc == 0;
3266*67e74705SXin Li }
3267*67e74705SXin Li 
3268*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector bool int __a,vector unsigned int __b)3269*67e74705SXin Li vec_all_lt(vector bool int __a, vector unsigned int __b) {
3270*67e74705SXin Li   int __cc;
3271*67e74705SXin Li   __builtin_s390_vchlfs(__b, (vector unsigned int)__a, &__cc);
3272*67e74705SXin Li   return __cc == 0;
3273*67e74705SXin Li }
3274*67e74705SXin Li 
3275*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector bool int __a,vector bool int __b)3276*67e74705SXin Li vec_all_lt(vector bool int __a, vector bool int __b) {
3277*67e74705SXin Li   int __cc;
3278*67e74705SXin Li   __builtin_s390_vchlfs((vector unsigned int)__b,
3279*67e74705SXin Li                         (vector unsigned int)__a, &__cc);
3280*67e74705SXin Li   return __cc == 0;
3281*67e74705SXin Li }
3282*67e74705SXin Li 
3283*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector signed long long __a,vector signed long long __b)3284*67e74705SXin Li vec_all_lt(vector signed long long __a, vector signed long long __b) {
3285*67e74705SXin Li   int __cc;
3286*67e74705SXin Li   __builtin_s390_vchgs(__b, __a, &__cc);
3287*67e74705SXin Li   return __cc == 0;
3288*67e74705SXin Li }
3289*67e74705SXin Li 
3290*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector signed long long __a,vector bool long long __b)3291*67e74705SXin Li vec_all_lt(vector signed long long __a, vector bool long long __b) {
3292*67e74705SXin Li   int __cc;
3293*67e74705SXin Li   __builtin_s390_vchgs((vector signed long long)__b, __a, &__cc);
3294*67e74705SXin Li   return __cc == 0;
3295*67e74705SXin Li }
3296*67e74705SXin Li 
3297*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector bool long long __a,vector signed long long __b)3298*67e74705SXin Li vec_all_lt(vector bool long long __a, vector signed long long __b) {
3299*67e74705SXin Li   int __cc;
3300*67e74705SXin Li   __builtin_s390_vchgs(__b, (vector signed long long)__a, &__cc);
3301*67e74705SXin Li   return __cc == 0;
3302*67e74705SXin Li }
3303*67e74705SXin Li 
3304*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector unsigned long long __a,vector unsigned long long __b)3305*67e74705SXin Li vec_all_lt(vector unsigned long long __a, vector unsigned long long __b) {
3306*67e74705SXin Li   int __cc;
3307*67e74705SXin Li   __builtin_s390_vchlgs(__b, __a, &__cc);
3308*67e74705SXin Li   return __cc == 0;
3309*67e74705SXin Li }
3310*67e74705SXin Li 
3311*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector unsigned long long __a,vector bool long long __b)3312*67e74705SXin Li vec_all_lt(vector unsigned long long __a, vector bool long long __b) {
3313*67e74705SXin Li   int __cc;
3314*67e74705SXin Li   __builtin_s390_vchlgs((vector unsigned long long)__b, __a, &__cc);
3315*67e74705SXin Li   return __cc == 0;
3316*67e74705SXin Li }
3317*67e74705SXin Li 
3318*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector bool long long __a,vector unsigned long long __b)3319*67e74705SXin Li vec_all_lt(vector bool long long __a, vector unsigned long long __b) {
3320*67e74705SXin Li   int __cc;
3321*67e74705SXin Li   __builtin_s390_vchlgs(__b, (vector unsigned long long)__a, &__cc);
3322*67e74705SXin Li   return __cc == 0;
3323*67e74705SXin Li }
3324*67e74705SXin Li 
3325*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector bool long long __a,vector bool long long __b)3326*67e74705SXin Li vec_all_lt(vector bool long long __a, vector bool long long __b) {
3327*67e74705SXin Li   int __cc;
3328*67e74705SXin Li   __builtin_s390_vchlgs((vector unsigned long long)__b,
3329*67e74705SXin Li                         (vector unsigned long long)__a, &__cc);
3330*67e74705SXin Li   return __cc == 0;
3331*67e74705SXin Li }
3332*67e74705SXin Li 
3333*67e74705SXin Li static inline __ATTRS_o_ai int
vec_all_lt(vector double __a,vector double __b)3334*67e74705SXin Li vec_all_lt(vector double __a, vector double __b) {
3335*67e74705SXin Li   int __cc;
3336*67e74705SXin Li   __builtin_s390_vfchdbs(__b, __a, &__cc);
3337*67e74705SXin Li   return __cc == 0;
3338*67e74705SXin Li }
3339*67e74705SXin Li 
3340*67e74705SXin Li /*-- vec_all_nge ------------------------------------------------------------*/
3341*67e74705SXin Li 
3342*67e74705SXin Li static inline __ATTRS_ai int
vec_all_nge(vector double __a,vector double __b)3343*67e74705SXin Li vec_all_nge(vector double __a, vector double __b) {
3344*67e74705SXin Li   int __cc;
3345*67e74705SXin Li   __builtin_s390_vfchedbs(__a, __b, &__cc);
3346*67e74705SXin Li   return __cc == 3;
3347*67e74705SXin Li }
3348*67e74705SXin Li 
3349*67e74705SXin Li /*-- vec_all_ngt ------------------------------------------------------------*/
3350*67e74705SXin Li 
3351*67e74705SXin Li static inline __ATTRS_ai int
vec_all_ngt(vector double __a,vector double __b)3352*67e74705SXin Li vec_all_ngt(vector double __a, vector double __b) {
3353*67e74705SXin Li   int __cc;
3354*67e74705SXin Li   __builtin_s390_vfchdbs(__a, __b, &__cc);
3355*67e74705SXin Li   return __cc == 3;
3356*67e74705SXin Li }
3357*67e74705SXin Li 
3358*67e74705SXin Li /*-- vec_all_nle ------------------------------------------------------------*/
3359*67e74705SXin Li 
3360*67e74705SXin Li static inline __ATTRS_ai int
vec_all_nle(vector double __a,vector double __b)3361*67e74705SXin Li vec_all_nle(vector double __a, vector double __b) {
3362*67e74705SXin Li   int __cc;
3363*67e74705SXin Li   __builtin_s390_vfchedbs(__b, __a, &__cc);
3364*67e74705SXin Li   return __cc == 3;
3365*67e74705SXin Li }
3366*67e74705SXin Li 
3367*67e74705SXin Li /*-- vec_all_nlt ------------------------------------------------------------*/
3368*67e74705SXin Li 
3369*67e74705SXin Li static inline __ATTRS_ai int
vec_all_nlt(vector double __a,vector double __b)3370*67e74705SXin Li vec_all_nlt(vector double __a, vector double __b) {
3371*67e74705SXin Li   int __cc;
3372*67e74705SXin Li   __builtin_s390_vfchdbs(__b, __a, &__cc);
3373*67e74705SXin Li   return __cc == 3;
3374*67e74705SXin Li }
3375*67e74705SXin Li 
3376*67e74705SXin Li /*-- vec_all_nan ------------------------------------------------------------*/
3377*67e74705SXin Li 
3378*67e74705SXin Li static inline __ATTRS_ai int
vec_all_nan(vector double __a)3379*67e74705SXin Li vec_all_nan(vector double __a) {
3380*67e74705SXin Li   int __cc;
3381*67e74705SXin Li   __builtin_s390_vftcidb(__a, 15, &__cc);
3382*67e74705SXin Li   return __cc == 0;
3383*67e74705SXin Li }
3384*67e74705SXin Li 
3385*67e74705SXin Li /*-- vec_all_numeric --------------------------------------------------------*/
3386*67e74705SXin Li 
3387*67e74705SXin Li static inline __ATTRS_ai int
vec_all_numeric(vector double __a)3388*67e74705SXin Li vec_all_numeric(vector double __a) {
3389*67e74705SXin Li   int __cc;
3390*67e74705SXin Li   __builtin_s390_vftcidb(__a, 15, &__cc);
3391*67e74705SXin Li   return __cc == 3;
3392*67e74705SXin Li }
3393*67e74705SXin Li 
3394*67e74705SXin Li /*-- vec_any_eq -------------------------------------------------------------*/
3395*67e74705SXin Li 
3396*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector signed char __a,vector signed char __b)3397*67e74705SXin Li vec_any_eq(vector signed char __a, vector signed char __b) {
3398*67e74705SXin Li   int __cc;
3399*67e74705SXin Li   __builtin_s390_vceqbs(__a, __b, &__cc);
3400*67e74705SXin Li   return __cc <= 1;
3401*67e74705SXin Li }
3402*67e74705SXin Li 
3403*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector signed char __a,vector bool char __b)3404*67e74705SXin Li vec_any_eq(vector signed char __a, vector bool char __b) {
3405*67e74705SXin Li   int __cc;
3406*67e74705SXin Li   __builtin_s390_vceqbs(__a, (vector signed char)__b, &__cc);
3407*67e74705SXin Li   return __cc <= 1;
3408*67e74705SXin Li }
3409*67e74705SXin Li 
3410*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector bool char __a,vector signed char __b)3411*67e74705SXin Li vec_any_eq(vector bool char __a, vector signed char __b) {
3412*67e74705SXin Li   int __cc;
3413*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a, __b, &__cc);
3414*67e74705SXin Li   return __cc <= 1;
3415*67e74705SXin Li }
3416*67e74705SXin Li 
3417*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector unsigned char __a,vector unsigned char __b)3418*67e74705SXin Li vec_any_eq(vector unsigned char __a, vector unsigned char __b) {
3419*67e74705SXin Li   int __cc;
3420*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a,
3421*67e74705SXin Li                         (vector signed char)__b, &__cc);
3422*67e74705SXin Li   return __cc <= 1;
3423*67e74705SXin Li }
3424*67e74705SXin Li 
3425*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector unsigned char __a,vector bool char __b)3426*67e74705SXin Li vec_any_eq(vector unsigned char __a, vector bool char __b) {
3427*67e74705SXin Li   int __cc;
3428*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a,
3429*67e74705SXin Li                         (vector signed char)__b, &__cc);
3430*67e74705SXin Li   return __cc <= 1;
3431*67e74705SXin Li }
3432*67e74705SXin Li 
3433*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector bool char __a,vector unsigned char __b)3434*67e74705SXin Li vec_any_eq(vector bool char __a, vector unsigned char __b) {
3435*67e74705SXin Li   int __cc;
3436*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a,
3437*67e74705SXin Li                         (vector signed char)__b, &__cc);
3438*67e74705SXin Li   return __cc <= 1;
3439*67e74705SXin Li }
3440*67e74705SXin Li 
3441*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector bool char __a,vector bool char __b)3442*67e74705SXin Li vec_any_eq(vector bool char __a, vector bool char __b) {
3443*67e74705SXin Li   int __cc;
3444*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a,
3445*67e74705SXin Li                         (vector signed char)__b, &__cc);
3446*67e74705SXin Li   return __cc <= 1;
3447*67e74705SXin Li }
3448*67e74705SXin Li 
3449*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector signed short __a,vector signed short __b)3450*67e74705SXin Li vec_any_eq(vector signed short __a, vector signed short __b) {
3451*67e74705SXin Li   int __cc;
3452*67e74705SXin Li   __builtin_s390_vceqhs(__a, __b, &__cc);
3453*67e74705SXin Li   return __cc <= 1;
3454*67e74705SXin Li }
3455*67e74705SXin Li 
3456*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector signed short __a,vector bool short __b)3457*67e74705SXin Li vec_any_eq(vector signed short __a, vector bool short __b) {
3458*67e74705SXin Li   int __cc;
3459*67e74705SXin Li   __builtin_s390_vceqhs(__a, (vector signed short)__b, &__cc);
3460*67e74705SXin Li   return __cc <= 1;
3461*67e74705SXin Li }
3462*67e74705SXin Li 
3463*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector bool short __a,vector signed short __b)3464*67e74705SXin Li vec_any_eq(vector bool short __a, vector signed short __b) {
3465*67e74705SXin Li   int __cc;
3466*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a, __b, &__cc);
3467*67e74705SXin Li   return __cc <= 1;
3468*67e74705SXin Li }
3469*67e74705SXin Li 
3470*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector unsigned short __a,vector unsigned short __b)3471*67e74705SXin Li vec_any_eq(vector unsigned short __a, vector unsigned short __b) {
3472*67e74705SXin Li   int __cc;
3473*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a,
3474*67e74705SXin Li                         (vector signed short)__b, &__cc);
3475*67e74705SXin Li   return __cc <= 1;
3476*67e74705SXin Li }
3477*67e74705SXin Li 
3478*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector unsigned short __a,vector bool short __b)3479*67e74705SXin Li vec_any_eq(vector unsigned short __a, vector bool short __b) {
3480*67e74705SXin Li   int __cc;
3481*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a,
3482*67e74705SXin Li                         (vector signed short)__b, &__cc);
3483*67e74705SXin Li   return __cc <= 1;
3484*67e74705SXin Li }
3485*67e74705SXin Li 
3486*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector bool short __a,vector unsigned short __b)3487*67e74705SXin Li vec_any_eq(vector bool short __a, vector unsigned short __b) {
3488*67e74705SXin Li   int __cc;
3489*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a,
3490*67e74705SXin Li                         (vector signed short)__b, &__cc);
3491*67e74705SXin Li   return __cc <= 1;
3492*67e74705SXin Li }
3493*67e74705SXin Li 
3494*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector bool short __a,vector bool short __b)3495*67e74705SXin Li vec_any_eq(vector bool short __a, vector bool short __b) {
3496*67e74705SXin Li   int __cc;
3497*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a,
3498*67e74705SXin Li                         (vector signed short)__b, &__cc);
3499*67e74705SXin Li   return __cc <= 1;
3500*67e74705SXin Li }
3501*67e74705SXin Li 
3502*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector signed int __a,vector signed int __b)3503*67e74705SXin Li vec_any_eq(vector signed int __a, vector signed int __b) {
3504*67e74705SXin Li   int __cc;
3505*67e74705SXin Li   __builtin_s390_vceqfs(__a, __b, &__cc);
3506*67e74705SXin Li   return __cc <= 1;
3507*67e74705SXin Li }
3508*67e74705SXin Li 
3509*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector signed int __a,vector bool int __b)3510*67e74705SXin Li vec_any_eq(vector signed int __a, vector bool int __b) {
3511*67e74705SXin Li   int __cc;
3512*67e74705SXin Li   __builtin_s390_vceqfs(__a, (vector signed int)__b, &__cc);
3513*67e74705SXin Li   return __cc <= 1;
3514*67e74705SXin Li }
3515*67e74705SXin Li 
3516*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector bool int __a,vector signed int __b)3517*67e74705SXin Li vec_any_eq(vector bool int __a, vector signed int __b) {
3518*67e74705SXin Li   int __cc;
3519*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a, __b, &__cc);
3520*67e74705SXin Li   return __cc <= 1;
3521*67e74705SXin Li }
3522*67e74705SXin Li 
3523*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector unsigned int __a,vector unsigned int __b)3524*67e74705SXin Li vec_any_eq(vector unsigned int __a, vector unsigned int __b) {
3525*67e74705SXin Li   int __cc;
3526*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a,
3527*67e74705SXin Li                         (vector signed int)__b, &__cc);
3528*67e74705SXin Li   return __cc <= 1;
3529*67e74705SXin Li }
3530*67e74705SXin Li 
3531*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector unsigned int __a,vector bool int __b)3532*67e74705SXin Li vec_any_eq(vector unsigned int __a, vector bool int __b) {
3533*67e74705SXin Li   int __cc;
3534*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a,
3535*67e74705SXin Li                         (vector signed int)__b, &__cc);
3536*67e74705SXin Li   return __cc <= 1;
3537*67e74705SXin Li }
3538*67e74705SXin Li 
3539*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector bool int __a,vector unsigned int __b)3540*67e74705SXin Li vec_any_eq(vector bool int __a, vector unsigned int __b) {
3541*67e74705SXin Li   int __cc;
3542*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a,
3543*67e74705SXin Li                         (vector signed int)__b, &__cc);
3544*67e74705SXin Li   return __cc <= 1;
3545*67e74705SXin Li }
3546*67e74705SXin Li 
3547*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector bool int __a,vector bool int __b)3548*67e74705SXin Li vec_any_eq(vector bool int __a, vector bool int __b) {
3549*67e74705SXin Li   int __cc;
3550*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a,
3551*67e74705SXin Li                         (vector signed int)__b, &__cc);
3552*67e74705SXin Li   return __cc <= 1;
3553*67e74705SXin Li }
3554*67e74705SXin Li 
3555*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector signed long long __a,vector signed long long __b)3556*67e74705SXin Li vec_any_eq(vector signed long long __a, vector signed long long __b) {
3557*67e74705SXin Li   int __cc;
3558*67e74705SXin Li   __builtin_s390_vceqgs(__a, __b, &__cc);
3559*67e74705SXin Li   return __cc <= 1;
3560*67e74705SXin Li }
3561*67e74705SXin Li 
3562*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector signed long long __a,vector bool long long __b)3563*67e74705SXin Li vec_any_eq(vector signed long long __a, vector bool long long __b) {
3564*67e74705SXin Li   int __cc;
3565*67e74705SXin Li   __builtin_s390_vceqgs(__a, (vector signed long long)__b, &__cc);
3566*67e74705SXin Li   return __cc <= 1;
3567*67e74705SXin Li }
3568*67e74705SXin Li 
3569*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector bool long long __a,vector signed long long __b)3570*67e74705SXin Li vec_any_eq(vector bool long long __a, vector signed long long __b) {
3571*67e74705SXin Li   int __cc;
3572*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a, __b, &__cc);
3573*67e74705SXin Li   return __cc <= 1;
3574*67e74705SXin Li }
3575*67e74705SXin Li 
3576*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector unsigned long long __a,vector unsigned long long __b)3577*67e74705SXin Li vec_any_eq(vector unsigned long long __a, vector unsigned long long __b) {
3578*67e74705SXin Li   int __cc;
3579*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a,
3580*67e74705SXin Li                         (vector signed long long)__b, &__cc);
3581*67e74705SXin Li   return __cc <= 1;
3582*67e74705SXin Li }
3583*67e74705SXin Li 
3584*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector unsigned long long __a,vector bool long long __b)3585*67e74705SXin Li vec_any_eq(vector unsigned long long __a, vector bool long long __b) {
3586*67e74705SXin Li   int __cc;
3587*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a,
3588*67e74705SXin Li                         (vector signed long long)__b, &__cc);
3589*67e74705SXin Li   return __cc <= 1;
3590*67e74705SXin Li }
3591*67e74705SXin Li 
3592*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector bool long long __a,vector unsigned long long __b)3593*67e74705SXin Li vec_any_eq(vector bool long long __a, vector unsigned long long __b) {
3594*67e74705SXin Li   int __cc;
3595*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a,
3596*67e74705SXin Li                         (vector signed long long)__b, &__cc);
3597*67e74705SXin Li   return __cc <= 1;
3598*67e74705SXin Li }
3599*67e74705SXin Li 
3600*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector bool long long __a,vector bool long long __b)3601*67e74705SXin Li vec_any_eq(vector bool long long __a, vector bool long long __b) {
3602*67e74705SXin Li   int __cc;
3603*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a,
3604*67e74705SXin Li                         (vector signed long long)__b, &__cc);
3605*67e74705SXin Li   return __cc <= 1;
3606*67e74705SXin Li }
3607*67e74705SXin Li 
3608*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_eq(vector double __a,vector double __b)3609*67e74705SXin Li vec_any_eq(vector double __a, vector double __b) {
3610*67e74705SXin Li   int __cc;
3611*67e74705SXin Li   __builtin_s390_vfcedbs(__a, __b, &__cc);
3612*67e74705SXin Li   return __cc <= 1;
3613*67e74705SXin Li }
3614*67e74705SXin Li 
3615*67e74705SXin Li /*-- vec_any_ne -------------------------------------------------------------*/
3616*67e74705SXin Li 
3617*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector signed char __a,vector signed char __b)3618*67e74705SXin Li vec_any_ne(vector signed char __a, vector signed char __b) {
3619*67e74705SXin Li   int __cc;
3620*67e74705SXin Li   __builtin_s390_vceqbs(__a, __b, &__cc);
3621*67e74705SXin Li   return __cc != 0;
3622*67e74705SXin Li }
3623*67e74705SXin Li 
3624*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector signed char __a,vector bool char __b)3625*67e74705SXin Li vec_any_ne(vector signed char __a, vector bool char __b) {
3626*67e74705SXin Li   int __cc;
3627*67e74705SXin Li   __builtin_s390_vceqbs(__a, (vector signed char)__b, &__cc);
3628*67e74705SXin Li   return __cc != 0;
3629*67e74705SXin Li }
3630*67e74705SXin Li 
3631*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector bool char __a,vector signed char __b)3632*67e74705SXin Li vec_any_ne(vector bool char __a, vector signed char __b) {
3633*67e74705SXin Li   int __cc;
3634*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a, __b, &__cc);
3635*67e74705SXin Li   return __cc != 0;
3636*67e74705SXin Li }
3637*67e74705SXin Li 
3638*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector unsigned char __a,vector unsigned char __b)3639*67e74705SXin Li vec_any_ne(vector unsigned char __a, vector unsigned char __b) {
3640*67e74705SXin Li   int __cc;
3641*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a,
3642*67e74705SXin Li                         (vector signed char)__b, &__cc);
3643*67e74705SXin Li   return __cc != 0;
3644*67e74705SXin Li }
3645*67e74705SXin Li 
3646*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector unsigned char __a,vector bool char __b)3647*67e74705SXin Li vec_any_ne(vector unsigned char __a, vector bool char __b) {
3648*67e74705SXin Li   int __cc;
3649*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a,
3650*67e74705SXin Li                         (vector signed char)__b, &__cc);
3651*67e74705SXin Li   return __cc != 0;
3652*67e74705SXin Li }
3653*67e74705SXin Li 
3654*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector bool char __a,vector unsigned char __b)3655*67e74705SXin Li vec_any_ne(vector bool char __a, vector unsigned char __b) {
3656*67e74705SXin Li   int __cc;
3657*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a,
3658*67e74705SXin Li                         (vector signed char)__b, &__cc);
3659*67e74705SXin Li   return __cc != 0;
3660*67e74705SXin Li }
3661*67e74705SXin Li 
3662*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector bool char __a,vector bool char __b)3663*67e74705SXin Li vec_any_ne(vector bool char __a, vector bool char __b) {
3664*67e74705SXin Li   int __cc;
3665*67e74705SXin Li   __builtin_s390_vceqbs((vector signed char)__a,
3666*67e74705SXin Li                         (vector signed char)__b, &__cc);
3667*67e74705SXin Li   return __cc != 0;
3668*67e74705SXin Li }
3669*67e74705SXin Li 
3670*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector signed short __a,vector signed short __b)3671*67e74705SXin Li vec_any_ne(vector signed short __a, vector signed short __b) {
3672*67e74705SXin Li   int __cc;
3673*67e74705SXin Li   __builtin_s390_vceqhs(__a, __b, &__cc);
3674*67e74705SXin Li   return __cc != 0;
3675*67e74705SXin Li }
3676*67e74705SXin Li 
3677*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector signed short __a,vector bool short __b)3678*67e74705SXin Li vec_any_ne(vector signed short __a, vector bool short __b) {
3679*67e74705SXin Li   int __cc;
3680*67e74705SXin Li   __builtin_s390_vceqhs(__a, (vector signed short)__b, &__cc);
3681*67e74705SXin Li   return __cc != 0;
3682*67e74705SXin Li }
3683*67e74705SXin Li 
3684*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector bool short __a,vector signed short __b)3685*67e74705SXin Li vec_any_ne(vector bool short __a, vector signed short __b) {
3686*67e74705SXin Li   int __cc;
3687*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a, __b, &__cc);
3688*67e74705SXin Li   return __cc != 0;
3689*67e74705SXin Li }
3690*67e74705SXin Li 
3691*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector unsigned short __a,vector unsigned short __b)3692*67e74705SXin Li vec_any_ne(vector unsigned short __a, vector unsigned short __b) {
3693*67e74705SXin Li   int __cc;
3694*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a,
3695*67e74705SXin Li                         (vector signed short)__b, &__cc);
3696*67e74705SXin Li   return __cc != 0;
3697*67e74705SXin Li }
3698*67e74705SXin Li 
3699*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector unsigned short __a,vector bool short __b)3700*67e74705SXin Li vec_any_ne(vector unsigned short __a, vector bool short __b) {
3701*67e74705SXin Li   int __cc;
3702*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a,
3703*67e74705SXin Li                         (vector signed short)__b, &__cc);
3704*67e74705SXin Li   return __cc != 0;
3705*67e74705SXin Li }
3706*67e74705SXin Li 
3707*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector bool short __a,vector unsigned short __b)3708*67e74705SXin Li vec_any_ne(vector bool short __a, vector unsigned short __b) {
3709*67e74705SXin Li   int __cc;
3710*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a,
3711*67e74705SXin Li                         (vector signed short)__b, &__cc);
3712*67e74705SXin Li   return __cc != 0;
3713*67e74705SXin Li }
3714*67e74705SXin Li 
3715*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector bool short __a,vector bool short __b)3716*67e74705SXin Li vec_any_ne(vector bool short __a, vector bool short __b) {
3717*67e74705SXin Li   int __cc;
3718*67e74705SXin Li   __builtin_s390_vceqhs((vector signed short)__a,
3719*67e74705SXin Li                         (vector signed short)__b, &__cc);
3720*67e74705SXin Li   return __cc != 0;
3721*67e74705SXin Li }
3722*67e74705SXin Li 
3723*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector signed int __a,vector signed int __b)3724*67e74705SXin Li vec_any_ne(vector signed int __a, vector signed int __b) {
3725*67e74705SXin Li   int __cc;
3726*67e74705SXin Li   __builtin_s390_vceqfs(__a, __b, &__cc);
3727*67e74705SXin Li   return __cc != 0;
3728*67e74705SXin Li }
3729*67e74705SXin Li 
3730*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector signed int __a,vector bool int __b)3731*67e74705SXin Li vec_any_ne(vector signed int __a, vector bool int __b) {
3732*67e74705SXin Li   int __cc;
3733*67e74705SXin Li   __builtin_s390_vceqfs(__a, (vector signed int)__b, &__cc);
3734*67e74705SXin Li   return __cc != 0;
3735*67e74705SXin Li }
3736*67e74705SXin Li 
3737*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector bool int __a,vector signed int __b)3738*67e74705SXin Li vec_any_ne(vector bool int __a, vector signed int __b) {
3739*67e74705SXin Li   int __cc;
3740*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a, __b, &__cc);
3741*67e74705SXin Li   return __cc != 0;
3742*67e74705SXin Li }
3743*67e74705SXin Li 
3744*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector unsigned int __a,vector unsigned int __b)3745*67e74705SXin Li vec_any_ne(vector unsigned int __a, vector unsigned int __b) {
3746*67e74705SXin Li   int __cc;
3747*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a,
3748*67e74705SXin Li                         (vector signed int)__b, &__cc);
3749*67e74705SXin Li   return __cc != 0;
3750*67e74705SXin Li }
3751*67e74705SXin Li 
3752*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector unsigned int __a,vector bool int __b)3753*67e74705SXin Li vec_any_ne(vector unsigned int __a, vector bool int __b) {
3754*67e74705SXin Li   int __cc;
3755*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a,
3756*67e74705SXin Li                         (vector signed int)__b, &__cc);
3757*67e74705SXin Li   return __cc != 0;
3758*67e74705SXin Li }
3759*67e74705SXin Li 
3760*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector bool int __a,vector unsigned int __b)3761*67e74705SXin Li vec_any_ne(vector bool int __a, vector unsigned int __b) {
3762*67e74705SXin Li   int __cc;
3763*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a,
3764*67e74705SXin Li                         (vector signed int)__b, &__cc);
3765*67e74705SXin Li   return __cc != 0;
3766*67e74705SXin Li }
3767*67e74705SXin Li 
3768*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector bool int __a,vector bool int __b)3769*67e74705SXin Li vec_any_ne(vector bool int __a, vector bool int __b) {
3770*67e74705SXin Li   int __cc;
3771*67e74705SXin Li   __builtin_s390_vceqfs((vector signed int)__a,
3772*67e74705SXin Li                         (vector signed int)__b, &__cc);
3773*67e74705SXin Li   return __cc != 0;
3774*67e74705SXin Li }
3775*67e74705SXin Li 
3776*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector signed long long __a,vector signed long long __b)3777*67e74705SXin Li vec_any_ne(vector signed long long __a, vector signed long long __b) {
3778*67e74705SXin Li   int __cc;
3779*67e74705SXin Li   __builtin_s390_vceqgs(__a, __b, &__cc);
3780*67e74705SXin Li   return __cc != 0;
3781*67e74705SXin Li }
3782*67e74705SXin Li 
3783*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector signed long long __a,vector bool long long __b)3784*67e74705SXin Li vec_any_ne(vector signed long long __a, vector bool long long __b) {
3785*67e74705SXin Li   int __cc;
3786*67e74705SXin Li   __builtin_s390_vceqgs(__a, (vector signed long long)__b, &__cc);
3787*67e74705SXin Li   return __cc != 0;
3788*67e74705SXin Li }
3789*67e74705SXin Li 
3790*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector bool long long __a,vector signed long long __b)3791*67e74705SXin Li vec_any_ne(vector bool long long __a, vector signed long long __b) {
3792*67e74705SXin Li   int __cc;
3793*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a, __b, &__cc);
3794*67e74705SXin Li   return __cc != 0;
3795*67e74705SXin Li }
3796*67e74705SXin Li 
3797*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector unsigned long long __a,vector unsigned long long __b)3798*67e74705SXin Li vec_any_ne(vector unsigned long long __a, vector unsigned long long __b) {
3799*67e74705SXin Li   int __cc;
3800*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a,
3801*67e74705SXin Li                         (vector signed long long)__b, &__cc);
3802*67e74705SXin Li   return __cc != 0;
3803*67e74705SXin Li }
3804*67e74705SXin Li 
3805*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector unsigned long long __a,vector bool long long __b)3806*67e74705SXin Li vec_any_ne(vector unsigned long long __a, vector bool long long __b) {
3807*67e74705SXin Li   int __cc;
3808*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a,
3809*67e74705SXin Li                         (vector signed long long)__b, &__cc);
3810*67e74705SXin Li   return __cc != 0;
3811*67e74705SXin Li }
3812*67e74705SXin Li 
3813*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector bool long long __a,vector unsigned long long __b)3814*67e74705SXin Li vec_any_ne(vector bool long long __a, vector unsigned long long __b) {
3815*67e74705SXin Li   int __cc;
3816*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a,
3817*67e74705SXin Li                         (vector signed long long)__b, &__cc);
3818*67e74705SXin Li   return __cc != 0;
3819*67e74705SXin Li }
3820*67e74705SXin Li 
3821*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector bool long long __a,vector bool long long __b)3822*67e74705SXin Li vec_any_ne(vector bool long long __a, vector bool long long __b) {
3823*67e74705SXin Li   int __cc;
3824*67e74705SXin Li   __builtin_s390_vceqgs((vector signed long long)__a,
3825*67e74705SXin Li                         (vector signed long long)__b, &__cc);
3826*67e74705SXin Li   return __cc != 0;
3827*67e74705SXin Li }
3828*67e74705SXin Li 
3829*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ne(vector double __a,vector double __b)3830*67e74705SXin Li vec_any_ne(vector double __a, vector double __b) {
3831*67e74705SXin Li   int __cc;
3832*67e74705SXin Li   __builtin_s390_vfcedbs(__a, __b, &__cc);
3833*67e74705SXin Li   return __cc != 0;
3834*67e74705SXin Li }
3835*67e74705SXin Li 
3836*67e74705SXin Li /*-- vec_any_ge -------------------------------------------------------------*/
3837*67e74705SXin Li 
3838*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector signed char __a,vector signed char __b)3839*67e74705SXin Li vec_any_ge(vector signed char __a, vector signed char __b) {
3840*67e74705SXin Li   int __cc;
3841*67e74705SXin Li   __builtin_s390_vchbs(__b, __a, &__cc);
3842*67e74705SXin Li   return __cc != 0;
3843*67e74705SXin Li }
3844*67e74705SXin Li 
3845*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector signed char __a,vector bool char __b)3846*67e74705SXin Li vec_any_ge(vector signed char __a, vector bool char __b) {
3847*67e74705SXin Li   int __cc;
3848*67e74705SXin Li   __builtin_s390_vchbs((vector signed char)__b, __a, &__cc);
3849*67e74705SXin Li   return __cc != 0;
3850*67e74705SXin Li }
3851*67e74705SXin Li 
3852*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector bool char __a,vector signed char __b)3853*67e74705SXin Li vec_any_ge(vector bool char __a, vector signed char __b) {
3854*67e74705SXin Li   int __cc;
3855*67e74705SXin Li   __builtin_s390_vchbs(__b, (vector signed char)__a, &__cc);
3856*67e74705SXin Li   return __cc != 0;
3857*67e74705SXin Li }
3858*67e74705SXin Li 
3859*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector unsigned char __a,vector unsigned char __b)3860*67e74705SXin Li vec_any_ge(vector unsigned char __a, vector unsigned char __b) {
3861*67e74705SXin Li   int __cc;
3862*67e74705SXin Li   __builtin_s390_vchlbs(__b, __a, &__cc);
3863*67e74705SXin Li   return __cc != 0;
3864*67e74705SXin Li }
3865*67e74705SXin Li 
3866*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector unsigned char __a,vector bool char __b)3867*67e74705SXin Li vec_any_ge(vector unsigned char __a, vector bool char __b) {
3868*67e74705SXin Li   int __cc;
3869*67e74705SXin Li   __builtin_s390_vchlbs((vector unsigned char)__b, __a, &__cc);
3870*67e74705SXin Li   return __cc != 0;
3871*67e74705SXin Li }
3872*67e74705SXin Li 
3873*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector bool char __a,vector unsigned char __b)3874*67e74705SXin Li vec_any_ge(vector bool char __a, vector unsigned char __b) {
3875*67e74705SXin Li   int __cc;
3876*67e74705SXin Li   __builtin_s390_vchlbs(__b, (vector unsigned char)__a, &__cc);
3877*67e74705SXin Li   return __cc != 0;
3878*67e74705SXin Li }
3879*67e74705SXin Li 
3880*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector bool char __a,vector bool char __b)3881*67e74705SXin Li vec_any_ge(vector bool char __a, vector bool char __b) {
3882*67e74705SXin Li   int __cc;
3883*67e74705SXin Li   __builtin_s390_vchlbs((vector unsigned char)__b,
3884*67e74705SXin Li                         (vector unsigned char)__a, &__cc);
3885*67e74705SXin Li   return __cc != 0;
3886*67e74705SXin Li }
3887*67e74705SXin Li 
3888*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector signed short __a,vector signed short __b)3889*67e74705SXin Li vec_any_ge(vector signed short __a, vector signed short __b) {
3890*67e74705SXin Li   int __cc;
3891*67e74705SXin Li   __builtin_s390_vchhs(__b, __a, &__cc);
3892*67e74705SXin Li   return __cc != 0;
3893*67e74705SXin Li }
3894*67e74705SXin Li 
3895*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector signed short __a,vector bool short __b)3896*67e74705SXin Li vec_any_ge(vector signed short __a, vector bool short __b) {
3897*67e74705SXin Li   int __cc;
3898*67e74705SXin Li   __builtin_s390_vchhs((vector signed short)__b, __a, &__cc);
3899*67e74705SXin Li   return __cc != 0;
3900*67e74705SXin Li }
3901*67e74705SXin Li 
3902*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector bool short __a,vector signed short __b)3903*67e74705SXin Li vec_any_ge(vector bool short __a, vector signed short __b) {
3904*67e74705SXin Li   int __cc;
3905*67e74705SXin Li   __builtin_s390_vchhs(__b, (vector signed short)__a, &__cc);
3906*67e74705SXin Li   return __cc != 0;
3907*67e74705SXin Li }
3908*67e74705SXin Li 
3909*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector unsigned short __a,vector unsigned short __b)3910*67e74705SXin Li vec_any_ge(vector unsigned short __a, vector unsigned short __b) {
3911*67e74705SXin Li   int __cc;
3912*67e74705SXin Li   __builtin_s390_vchlhs(__b, __a, &__cc);
3913*67e74705SXin Li   return __cc != 0;
3914*67e74705SXin Li }
3915*67e74705SXin Li 
3916*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector unsigned short __a,vector bool short __b)3917*67e74705SXin Li vec_any_ge(vector unsigned short __a, vector bool short __b) {
3918*67e74705SXin Li   int __cc;
3919*67e74705SXin Li   __builtin_s390_vchlhs((vector unsigned short)__b, __a, &__cc);
3920*67e74705SXin Li   return __cc != 0;
3921*67e74705SXin Li }
3922*67e74705SXin Li 
3923*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector bool short __a,vector unsigned short __b)3924*67e74705SXin Li vec_any_ge(vector bool short __a, vector unsigned short __b) {
3925*67e74705SXin Li   int __cc;
3926*67e74705SXin Li   __builtin_s390_vchlhs(__b, (vector unsigned short)__a, &__cc);
3927*67e74705SXin Li   return __cc != 0;
3928*67e74705SXin Li }
3929*67e74705SXin Li 
3930*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector bool short __a,vector bool short __b)3931*67e74705SXin Li vec_any_ge(vector bool short __a, vector bool short __b) {
3932*67e74705SXin Li   int __cc;
3933*67e74705SXin Li   __builtin_s390_vchlhs((vector unsigned short)__b,
3934*67e74705SXin Li                         (vector unsigned short)__a, &__cc);
3935*67e74705SXin Li   return __cc != 0;
3936*67e74705SXin Li }
3937*67e74705SXin Li 
3938*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector signed int __a,vector signed int __b)3939*67e74705SXin Li vec_any_ge(vector signed int __a, vector signed int __b) {
3940*67e74705SXin Li   int __cc;
3941*67e74705SXin Li   __builtin_s390_vchfs(__b, __a, &__cc);
3942*67e74705SXin Li   return __cc != 0;
3943*67e74705SXin Li }
3944*67e74705SXin Li 
3945*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector signed int __a,vector bool int __b)3946*67e74705SXin Li vec_any_ge(vector signed int __a, vector bool int __b) {
3947*67e74705SXin Li   int __cc;
3948*67e74705SXin Li   __builtin_s390_vchfs((vector signed int)__b, __a, &__cc);
3949*67e74705SXin Li   return __cc != 0;
3950*67e74705SXin Li }
3951*67e74705SXin Li 
3952*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector bool int __a,vector signed int __b)3953*67e74705SXin Li vec_any_ge(vector bool int __a, vector signed int __b) {
3954*67e74705SXin Li   int __cc;
3955*67e74705SXin Li   __builtin_s390_vchfs(__b, (vector signed int)__a, &__cc);
3956*67e74705SXin Li   return __cc != 0;
3957*67e74705SXin Li }
3958*67e74705SXin Li 
3959*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector unsigned int __a,vector unsigned int __b)3960*67e74705SXin Li vec_any_ge(vector unsigned int __a, vector unsigned int __b) {
3961*67e74705SXin Li   int __cc;
3962*67e74705SXin Li   __builtin_s390_vchlfs(__b, __a, &__cc);
3963*67e74705SXin Li   return __cc != 0;
3964*67e74705SXin Li }
3965*67e74705SXin Li 
3966*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector unsigned int __a,vector bool int __b)3967*67e74705SXin Li vec_any_ge(vector unsigned int __a, vector bool int __b) {
3968*67e74705SXin Li   int __cc;
3969*67e74705SXin Li   __builtin_s390_vchlfs((vector unsigned int)__b, __a, &__cc);
3970*67e74705SXin Li   return __cc != 0;
3971*67e74705SXin Li }
3972*67e74705SXin Li 
3973*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector bool int __a,vector unsigned int __b)3974*67e74705SXin Li vec_any_ge(vector bool int __a, vector unsigned int __b) {
3975*67e74705SXin Li   int __cc;
3976*67e74705SXin Li   __builtin_s390_vchlfs(__b, (vector unsigned int)__a, &__cc);
3977*67e74705SXin Li   return __cc != 0;
3978*67e74705SXin Li }
3979*67e74705SXin Li 
3980*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector bool int __a,vector bool int __b)3981*67e74705SXin Li vec_any_ge(vector bool int __a, vector bool int __b) {
3982*67e74705SXin Li   int __cc;
3983*67e74705SXin Li   __builtin_s390_vchlfs((vector unsigned int)__b,
3984*67e74705SXin Li                         (vector unsigned int)__a, &__cc);
3985*67e74705SXin Li   return __cc != 0;
3986*67e74705SXin Li }
3987*67e74705SXin Li 
3988*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector signed long long __a,vector signed long long __b)3989*67e74705SXin Li vec_any_ge(vector signed long long __a, vector signed long long __b) {
3990*67e74705SXin Li   int __cc;
3991*67e74705SXin Li   __builtin_s390_vchgs(__b, __a, &__cc);
3992*67e74705SXin Li   return __cc != 0;
3993*67e74705SXin Li }
3994*67e74705SXin Li 
3995*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector signed long long __a,vector bool long long __b)3996*67e74705SXin Li vec_any_ge(vector signed long long __a, vector bool long long __b) {
3997*67e74705SXin Li   int __cc;
3998*67e74705SXin Li   __builtin_s390_vchgs((vector signed long long)__b, __a, &__cc);
3999*67e74705SXin Li   return __cc != 0;
4000*67e74705SXin Li }
4001*67e74705SXin Li 
4002*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector bool long long __a,vector signed long long __b)4003*67e74705SXin Li vec_any_ge(vector bool long long __a, vector signed long long __b) {
4004*67e74705SXin Li   int __cc;
4005*67e74705SXin Li   __builtin_s390_vchgs(__b, (vector signed long long)__a, &__cc);
4006*67e74705SXin Li   return __cc != 0;
4007*67e74705SXin Li }
4008*67e74705SXin Li 
4009*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector unsigned long long __a,vector unsigned long long __b)4010*67e74705SXin Li vec_any_ge(vector unsigned long long __a, vector unsigned long long __b) {
4011*67e74705SXin Li   int __cc;
4012*67e74705SXin Li   __builtin_s390_vchlgs(__b, __a, &__cc);
4013*67e74705SXin Li   return __cc != 0;
4014*67e74705SXin Li }
4015*67e74705SXin Li 
4016*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector unsigned long long __a,vector bool long long __b)4017*67e74705SXin Li vec_any_ge(vector unsigned long long __a, vector bool long long __b) {
4018*67e74705SXin Li   int __cc;
4019*67e74705SXin Li   __builtin_s390_vchlgs((vector unsigned long long)__b, __a, &__cc);
4020*67e74705SXin Li   return __cc != 0;
4021*67e74705SXin Li }
4022*67e74705SXin Li 
4023*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector bool long long __a,vector unsigned long long __b)4024*67e74705SXin Li vec_any_ge(vector bool long long __a, vector unsigned long long __b) {
4025*67e74705SXin Li   int __cc;
4026*67e74705SXin Li   __builtin_s390_vchlgs(__b, (vector unsigned long long)__a, &__cc);
4027*67e74705SXin Li   return __cc != 0;
4028*67e74705SXin Li }
4029*67e74705SXin Li 
4030*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector bool long long __a,vector bool long long __b)4031*67e74705SXin Li vec_any_ge(vector bool long long __a, vector bool long long __b) {
4032*67e74705SXin Li   int __cc;
4033*67e74705SXin Li   __builtin_s390_vchlgs((vector unsigned long long)__b,
4034*67e74705SXin Li                         (vector unsigned long long)__a, &__cc);
4035*67e74705SXin Li   return __cc != 0;
4036*67e74705SXin Li }
4037*67e74705SXin Li 
4038*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_ge(vector double __a,vector double __b)4039*67e74705SXin Li vec_any_ge(vector double __a, vector double __b) {
4040*67e74705SXin Li   int __cc;
4041*67e74705SXin Li   __builtin_s390_vfchedbs(__a, __b, &__cc);
4042*67e74705SXin Li   return __cc <= 1;
4043*67e74705SXin Li }
4044*67e74705SXin Li 
4045*67e74705SXin Li /*-- vec_any_gt -------------------------------------------------------------*/
4046*67e74705SXin Li 
4047*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector signed char __a,vector signed char __b)4048*67e74705SXin Li vec_any_gt(vector signed char __a, vector signed char __b) {
4049*67e74705SXin Li   int __cc;
4050*67e74705SXin Li   __builtin_s390_vchbs(__a, __b, &__cc);
4051*67e74705SXin Li   return __cc <= 1;
4052*67e74705SXin Li }
4053*67e74705SXin Li 
4054*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector signed char __a,vector bool char __b)4055*67e74705SXin Li vec_any_gt(vector signed char __a, vector bool char __b) {
4056*67e74705SXin Li   int __cc;
4057*67e74705SXin Li   __builtin_s390_vchbs(__a, (vector signed char)__b, &__cc);
4058*67e74705SXin Li   return __cc <= 1;
4059*67e74705SXin Li }
4060*67e74705SXin Li 
4061*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector bool char __a,vector signed char __b)4062*67e74705SXin Li vec_any_gt(vector bool char __a, vector signed char __b) {
4063*67e74705SXin Li   int __cc;
4064*67e74705SXin Li   __builtin_s390_vchbs((vector signed char)__a, __b, &__cc);
4065*67e74705SXin Li   return __cc <= 1;
4066*67e74705SXin Li }
4067*67e74705SXin Li 
4068*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector unsigned char __a,vector unsigned char __b)4069*67e74705SXin Li vec_any_gt(vector unsigned char __a, vector unsigned char __b) {
4070*67e74705SXin Li   int __cc;
4071*67e74705SXin Li   __builtin_s390_vchlbs(__a, __b, &__cc);
4072*67e74705SXin Li   return __cc <= 1;
4073*67e74705SXin Li }
4074*67e74705SXin Li 
4075*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector unsigned char __a,vector bool char __b)4076*67e74705SXin Li vec_any_gt(vector unsigned char __a, vector bool char __b) {
4077*67e74705SXin Li   int __cc;
4078*67e74705SXin Li   __builtin_s390_vchlbs(__a, (vector unsigned char)__b, &__cc);
4079*67e74705SXin Li   return __cc <= 1;
4080*67e74705SXin Li }
4081*67e74705SXin Li 
4082*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector bool char __a,vector unsigned char __b)4083*67e74705SXin Li vec_any_gt(vector bool char __a, vector unsigned char __b) {
4084*67e74705SXin Li   int __cc;
4085*67e74705SXin Li   __builtin_s390_vchlbs((vector unsigned char)__a, __b, &__cc);
4086*67e74705SXin Li   return __cc <= 1;
4087*67e74705SXin Li }
4088*67e74705SXin Li 
4089*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector bool char __a,vector bool char __b)4090*67e74705SXin Li vec_any_gt(vector bool char __a, vector bool char __b) {
4091*67e74705SXin Li   int __cc;
4092*67e74705SXin Li   __builtin_s390_vchlbs((vector unsigned char)__a,
4093*67e74705SXin Li                         (vector unsigned char)__b, &__cc);
4094*67e74705SXin Li   return __cc <= 1;
4095*67e74705SXin Li }
4096*67e74705SXin Li 
4097*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector signed short __a,vector signed short __b)4098*67e74705SXin Li vec_any_gt(vector signed short __a, vector signed short __b) {
4099*67e74705SXin Li   int __cc;
4100*67e74705SXin Li   __builtin_s390_vchhs(__a, __b, &__cc);
4101*67e74705SXin Li   return __cc <= 1;
4102*67e74705SXin Li }
4103*67e74705SXin Li 
4104*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector signed short __a,vector bool short __b)4105*67e74705SXin Li vec_any_gt(vector signed short __a, vector bool short __b) {
4106*67e74705SXin Li   int __cc;
4107*67e74705SXin Li   __builtin_s390_vchhs(__a, (vector signed short)__b, &__cc);
4108*67e74705SXin Li   return __cc <= 1;
4109*67e74705SXin Li }
4110*67e74705SXin Li 
4111*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector bool short __a,vector signed short __b)4112*67e74705SXin Li vec_any_gt(vector bool short __a, vector signed short __b) {
4113*67e74705SXin Li   int __cc;
4114*67e74705SXin Li   __builtin_s390_vchhs((vector signed short)__a, __b, &__cc);
4115*67e74705SXin Li   return __cc <= 1;
4116*67e74705SXin Li }
4117*67e74705SXin Li 
4118*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector unsigned short __a,vector unsigned short __b)4119*67e74705SXin Li vec_any_gt(vector unsigned short __a, vector unsigned short __b) {
4120*67e74705SXin Li   int __cc;
4121*67e74705SXin Li   __builtin_s390_vchlhs(__a, __b, &__cc);
4122*67e74705SXin Li   return __cc <= 1;
4123*67e74705SXin Li }
4124*67e74705SXin Li 
4125*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector unsigned short __a,vector bool short __b)4126*67e74705SXin Li vec_any_gt(vector unsigned short __a, vector bool short __b) {
4127*67e74705SXin Li   int __cc;
4128*67e74705SXin Li   __builtin_s390_vchlhs(__a, (vector unsigned short)__b, &__cc);
4129*67e74705SXin Li   return __cc <= 1;
4130*67e74705SXin Li }
4131*67e74705SXin Li 
4132*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector bool short __a,vector unsigned short __b)4133*67e74705SXin Li vec_any_gt(vector bool short __a, vector unsigned short __b) {
4134*67e74705SXin Li   int __cc;
4135*67e74705SXin Li   __builtin_s390_vchlhs((vector unsigned short)__a, __b, &__cc);
4136*67e74705SXin Li   return __cc <= 1;
4137*67e74705SXin Li }
4138*67e74705SXin Li 
4139*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector bool short __a,vector bool short __b)4140*67e74705SXin Li vec_any_gt(vector bool short __a, vector bool short __b) {
4141*67e74705SXin Li   int __cc;
4142*67e74705SXin Li   __builtin_s390_vchlhs((vector unsigned short)__a,
4143*67e74705SXin Li                         (vector unsigned short)__b, &__cc);
4144*67e74705SXin Li   return __cc <= 1;
4145*67e74705SXin Li }
4146*67e74705SXin Li 
4147*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector signed int __a,vector signed int __b)4148*67e74705SXin Li vec_any_gt(vector signed int __a, vector signed int __b) {
4149*67e74705SXin Li   int __cc;
4150*67e74705SXin Li   __builtin_s390_vchfs(__a, __b, &__cc);
4151*67e74705SXin Li   return __cc <= 1;
4152*67e74705SXin Li }
4153*67e74705SXin Li 
4154*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector signed int __a,vector bool int __b)4155*67e74705SXin Li vec_any_gt(vector signed int __a, vector bool int __b) {
4156*67e74705SXin Li   int __cc;
4157*67e74705SXin Li   __builtin_s390_vchfs(__a, (vector signed int)__b, &__cc);
4158*67e74705SXin Li   return __cc <= 1;
4159*67e74705SXin Li }
4160*67e74705SXin Li 
4161*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector bool int __a,vector signed int __b)4162*67e74705SXin Li vec_any_gt(vector bool int __a, vector signed int __b) {
4163*67e74705SXin Li   int __cc;
4164*67e74705SXin Li   __builtin_s390_vchfs((vector signed int)__a, __b, &__cc);
4165*67e74705SXin Li   return __cc <= 1;
4166*67e74705SXin Li }
4167*67e74705SXin Li 
4168*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector unsigned int __a,vector unsigned int __b)4169*67e74705SXin Li vec_any_gt(vector unsigned int __a, vector unsigned int __b) {
4170*67e74705SXin Li   int __cc;
4171*67e74705SXin Li   __builtin_s390_vchlfs(__a, __b, &__cc);
4172*67e74705SXin Li   return __cc <= 1;
4173*67e74705SXin Li }
4174*67e74705SXin Li 
4175*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector unsigned int __a,vector bool int __b)4176*67e74705SXin Li vec_any_gt(vector unsigned int __a, vector bool int __b) {
4177*67e74705SXin Li   int __cc;
4178*67e74705SXin Li   __builtin_s390_vchlfs(__a, (vector unsigned int)__b, &__cc);
4179*67e74705SXin Li   return __cc <= 1;
4180*67e74705SXin Li }
4181*67e74705SXin Li 
4182*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector bool int __a,vector unsigned int __b)4183*67e74705SXin Li vec_any_gt(vector bool int __a, vector unsigned int __b) {
4184*67e74705SXin Li   int __cc;
4185*67e74705SXin Li   __builtin_s390_vchlfs((vector unsigned int)__a, __b, &__cc);
4186*67e74705SXin Li   return __cc <= 1;
4187*67e74705SXin Li }
4188*67e74705SXin Li 
4189*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector bool int __a,vector bool int __b)4190*67e74705SXin Li vec_any_gt(vector bool int __a, vector bool int __b) {
4191*67e74705SXin Li   int __cc;
4192*67e74705SXin Li   __builtin_s390_vchlfs((vector unsigned int)__a,
4193*67e74705SXin Li                         (vector unsigned int)__b, &__cc);
4194*67e74705SXin Li   return __cc <= 1;
4195*67e74705SXin Li }
4196*67e74705SXin Li 
4197*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector signed long long __a,vector signed long long __b)4198*67e74705SXin Li vec_any_gt(vector signed long long __a, vector signed long long __b) {
4199*67e74705SXin Li   int __cc;
4200*67e74705SXin Li   __builtin_s390_vchgs(__a, __b, &__cc);
4201*67e74705SXin Li   return __cc <= 1;
4202*67e74705SXin Li }
4203*67e74705SXin Li 
4204*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector signed long long __a,vector bool long long __b)4205*67e74705SXin Li vec_any_gt(vector signed long long __a, vector bool long long __b) {
4206*67e74705SXin Li   int __cc;
4207*67e74705SXin Li   __builtin_s390_vchgs(__a, (vector signed long long)__b, &__cc);
4208*67e74705SXin Li   return __cc <= 1;
4209*67e74705SXin Li }
4210*67e74705SXin Li 
4211*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector bool long long __a,vector signed long long __b)4212*67e74705SXin Li vec_any_gt(vector bool long long __a, vector signed long long __b) {
4213*67e74705SXin Li   int __cc;
4214*67e74705SXin Li   __builtin_s390_vchgs((vector signed long long)__a, __b, &__cc);
4215*67e74705SXin Li   return __cc <= 1;
4216*67e74705SXin Li }
4217*67e74705SXin Li 
4218*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector unsigned long long __a,vector unsigned long long __b)4219*67e74705SXin Li vec_any_gt(vector unsigned long long __a, vector unsigned long long __b) {
4220*67e74705SXin Li   int __cc;
4221*67e74705SXin Li   __builtin_s390_vchlgs(__a, __b, &__cc);
4222*67e74705SXin Li   return __cc <= 1;
4223*67e74705SXin Li }
4224*67e74705SXin Li 
4225*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector unsigned long long __a,vector bool long long __b)4226*67e74705SXin Li vec_any_gt(vector unsigned long long __a, vector bool long long __b) {
4227*67e74705SXin Li   int __cc;
4228*67e74705SXin Li   __builtin_s390_vchlgs(__a, (vector unsigned long long)__b, &__cc);
4229*67e74705SXin Li   return __cc <= 1;
4230*67e74705SXin Li }
4231*67e74705SXin Li 
4232*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector bool long long __a,vector unsigned long long __b)4233*67e74705SXin Li vec_any_gt(vector bool long long __a, vector unsigned long long __b) {
4234*67e74705SXin Li   int __cc;
4235*67e74705SXin Li   __builtin_s390_vchlgs((vector unsigned long long)__a, __b, &__cc);
4236*67e74705SXin Li   return __cc <= 1;
4237*67e74705SXin Li }
4238*67e74705SXin Li 
4239*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector bool long long __a,vector bool long long __b)4240*67e74705SXin Li vec_any_gt(vector bool long long __a, vector bool long long __b) {
4241*67e74705SXin Li   int __cc;
4242*67e74705SXin Li   __builtin_s390_vchlgs((vector unsigned long long)__a,
4243*67e74705SXin Li                         (vector unsigned long long)__b, &__cc);
4244*67e74705SXin Li   return __cc <= 1;
4245*67e74705SXin Li }
4246*67e74705SXin Li 
4247*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_gt(vector double __a,vector double __b)4248*67e74705SXin Li vec_any_gt(vector double __a, vector double __b) {
4249*67e74705SXin Li   int __cc;
4250*67e74705SXin Li   __builtin_s390_vfchdbs(__a, __b, &__cc);
4251*67e74705SXin Li   return __cc <= 1;
4252*67e74705SXin Li }
4253*67e74705SXin Li 
4254*67e74705SXin Li /*-- vec_any_le -------------------------------------------------------------*/
4255*67e74705SXin Li 
4256*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector signed char __a,vector signed char __b)4257*67e74705SXin Li vec_any_le(vector signed char __a, vector signed char __b) {
4258*67e74705SXin Li   int __cc;
4259*67e74705SXin Li   __builtin_s390_vchbs(__a, __b, &__cc);
4260*67e74705SXin Li   return __cc != 0;
4261*67e74705SXin Li }
4262*67e74705SXin Li 
4263*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector signed char __a,vector bool char __b)4264*67e74705SXin Li vec_any_le(vector signed char __a, vector bool char __b) {
4265*67e74705SXin Li   int __cc;
4266*67e74705SXin Li   __builtin_s390_vchbs(__a, (vector signed char)__b, &__cc);
4267*67e74705SXin Li   return __cc != 0;
4268*67e74705SXin Li }
4269*67e74705SXin Li 
4270*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector bool char __a,vector signed char __b)4271*67e74705SXin Li vec_any_le(vector bool char __a, vector signed char __b) {
4272*67e74705SXin Li   int __cc;
4273*67e74705SXin Li   __builtin_s390_vchbs((vector signed char)__a, __b, &__cc);
4274*67e74705SXin Li   return __cc != 0;
4275*67e74705SXin Li }
4276*67e74705SXin Li 
4277*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector unsigned char __a,vector unsigned char __b)4278*67e74705SXin Li vec_any_le(vector unsigned char __a, vector unsigned char __b) {
4279*67e74705SXin Li   int __cc;
4280*67e74705SXin Li   __builtin_s390_vchlbs(__a, __b, &__cc);
4281*67e74705SXin Li   return __cc != 0;
4282*67e74705SXin Li }
4283*67e74705SXin Li 
4284*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector unsigned char __a,vector bool char __b)4285*67e74705SXin Li vec_any_le(vector unsigned char __a, vector bool char __b) {
4286*67e74705SXin Li   int __cc;
4287*67e74705SXin Li   __builtin_s390_vchlbs(__a, (vector unsigned char)__b, &__cc);
4288*67e74705SXin Li   return __cc != 0;
4289*67e74705SXin Li }
4290*67e74705SXin Li 
4291*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector bool char __a,vector unsigned char __b)4292*67e74705SXin Li vec_any_le(vector bool char __a, vector unsigned char __b) {
4293*67e74705SXin Li   int __cc;
4294*67e74705SXin Li   __builtin_s390_vchlbs((vector unsigned char)__a, __b, &__cc);
4295*67e74705SXin Li   return __cc != 0;
4296*67e74705SXin Li }
4297*67e74705SXin Li 
4298*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector bool char __a,vector bool char __b)4299*67e74705SXin Li vec_any_le(vector bool char __a, vector bool char __b) {
4300*67e74705SXin Li   int __cc;
4301*67e74705SXin Li   __builtin_s390_vchlbs((vector unsigned char)__a,
4302*67e74705SXin Li                         (vector unsigned char)__b, &__cc);
4303*67e74705SXin Li   return __cc != 0;
4304*67e74705SXin Li }
4305*67e74705SXin Li 
4306*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector signed short __a,vector signed short __b)4307*67e74705SXin Li vec_any_le(vector signed short __a, vector signed short __b) {
4308*67e74705SXin Li   int __cc;
4309*67e74705SXin Li   __builtin_s390_vchhs(__a, __b, &__cc);
4310*67e74705SXin Li   return __cc != 0;
4311*67e74705SXin Li }
4312*67e74705SXin Li 
4313*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector signed short __a,vector bool short __b)4314*67e74705SXin Li vec_any_le(vector signed short __a, vector bool short __b) {
4315*67e74705SXin Li   int __cc;
4316*67e74705SXin Li   __builtin_s390_vchhs(__a, (vector signed short)__b, &__cc);
4317*67e74705SXin Li   return __cc != 0;
4318*67e74705SXin Li }
4319*67e74705SXin Li 
4320*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector bool short __a,vector signed short __b)4321*67e74705SXin Li vec_any_le(vector bool short __a, vector signed short __b) {
4322*67e74705SXin Li   int __cc;
4323*67e74705SXin Li   __builtin_s390_vchhs((vector signed short)__a, __b, &__cc);
4324*67e74705SXin Li   return __cc != 0;
4325*67e74705SXin Li }
4326*67e74705SXin Li 
4327*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector unsigned short __a,vector unsigned short __b)4328*67e74705SXin Li vec_any_le(vector unsigned short __a, vector unsigned short __b) {
4329*67e74705SXin Li   int __cc;
4330*67e74705SXin Li   __builtin_s390_vchlhs(__a, __b, &__cc);
4331*67e74705SXin Li   return __cc != 0;
4332*67e74705SXin Li }
4333*67e74705SXin Li 
4334*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector unsigned short __a,vector bool short __b)4335*67e74705SXin Li vec_any_le(vector unsigned short __a, vector bool short __b) {
4336*67e74705SXin Li   int __cc;
4337*67e74705SXin Li   __builtin_s390_vchlhs(__a, (vector unsigned short)__b, &__cc);
4338*67e74705SXin Li   return __cc != 0;
4339*67e74705SXin Li }
4340*67e74705SXin Li 
4341*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector bool short __a,vector unsigned short __b)4342*67e74705SXin Li vec_any_le(vector bool short __a, vector unsigned short __b) {
4343*67e74705SXin Li   int __cc;
4344*67e74705SXin Li   __builtin_s390_vchlhs((vector unsigned short)__a, __b, &__cc);
4345*67e74705SXin Li   return __cc != 0;
4346*67e74705SXin Li }
4347*67e74705SXin Li 
4348*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector bool short __a,vector bool short __b)4349*67e74705SXin Li vec_any_le(vector bool short __a, vector bool short __b) {
4350*67e74705SXin Li   int __cc;
4351*67e74705SXin Li   __builtin_s390_vchlhs((vector unsigned short)__a,
4352*67e74705SXin Li                         (vector unsigned short)__b, &__cc);
4353*67e74705SXin Li   return __cc != 0;
4354*67e74705SXin Li }
4355*67e74705SXin Li 
4356*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector signed int __a,vector signed int __b)4357*67e74705SXin Li vec_any_le(vector signed int __a, vector signed int __b) {
4358*67e74705SXin Li   int __cc;
4359*67e74705SXin Li   __builtin_s390_vchfs(__a, __b, &__cc);
4360*67e74705SXin Li   return __cc != 0;
4361*67e74705SXin Li }
4362*67e74705SXin Li 
4363*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector signed int __a,vector bool int __b)4364*67e74705SXin Li vec_any_le(vector signed int __a, vector bool int __b) {
4365*67e74705SXin Li   int __cc;
4366*67e74705SXin Li   __builtin_s390_vchfs(__a, (vector signed int)__b, &__cc);
4367*67e74705SXin Li   return __cc != 0;
4368*67e74705SXin Li }
4369*67e74705SXin Li 
4370*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector bool int __a,vector signed int __b)4371*67e74705SXin Li vec_any_le(vector bool int __a, vector signed int __b) {
4372*67e74705SXin Li   int __cc;
4373*67e74705SXin Li   __builtin_s390_vchfs((vector signed int)__a, __b, &__cc);
4374*67e74705SXin Li   return __cc != 0;
4375*67e74705SXin Li }
4376*67e74705SXin Li 
4377*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector unsigned int __a,vector unsigned int __b)4378*67e74705SXin Li vec_any_le(vector unsigned int __a, vector unsigned int __b) {
4379*67e74705SXin Li   int __cc;
4380*67e74705SXin Li   __builtin_s390_vchlfs(__a, __b, &__cc);
4381*67e74705SXin Li   return __cc != 0;
4382*67e74705SXin Li }
4383*67e74705SXin Li 
4384*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector unsigned int __a,vector bool int __b)4385*67e74705SXin Li vec_any_le(vector unsigned int __a, vector bool int __b) {
4386*67e74705SXin Li   int __cc;
4387*67e74705SXin Li   __builtin_s390_vchlfs(__a, (vector unsigned int)__b, &__cc);
4388*67e74705SXin Li   return __cc != 0;
4389*67e74705SXin Li }
4390*67e74705SXin Li 
4391*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector bool int __a,vector unsigned int __b)4392*67e74705SXin Li vec_any_le(vector bool int __a, vector unsigned int __b) {
4393*67e74705SXin Li   int __cc;
4394*67e74705SXin Li   __builtin_s390_vchlfs((vector unsigned int)__a, __b, &__cc);
4395*67e74705SXin Li   return __cc != 0;
4396*67e74705SXin Li }
4397*67e74705SXin Li 
4398*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector bool int __a,vector bool int __b)4399*67e74705SXin Li vec_any_le(vector bool int __a, vector bool int __b) {
4400*67e74705SXin Li   int __cc;
4401*67e74705SXin Li   __builtin_s390_vchlfs((vector unsigned int)__a,
4402*67e74705SXin Li                         (vector unsigned int)__b, &__cc);
4403*67e74705SXin Li   return __cc != 0;
4404*67e74705SXin Li }
4405*67e74705SXin Li 
4406*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector signed long long __a,vector signed long long __b)4407*67e74705SXin Li vec_any_le(vector signed long long __a, vector signed long long __b) {
4408*67e74705SXin Li   int __cc;
4409*67e74705SXin Li   __builtin_s390_vchgs(__a, __b, &__cc);
4410*67e74705SXin Li   return __cc != 0;
4411*67e74705SXin Li }
4412*67e74705SXin Li 
4413*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector signed long long __a,vector bool long long __b)4414*67e74705SXin Li vec_any_le(vector signed long long __a, vector bool long long __b) {
4415*67e74705SXin Li   int __cc;
4416*67e74705SXin Li   __builtin_s390_vchgs(__a, (vector signed long long)__b, &__cc);
4417*67e74705SXin Li   return __cc != 0;
4418*67e74705SXin Li }
4419*67e74705SXin Li 
4420*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector bool long long __a,vector signed long long __b)4421*67e74705SXin Li vec_any_le(vector bool long long __a, vector signed long long __b) {
4422*67e74705SXin Li   int __cc;
4423*67e74705SXin Li   __builtin_s390_vchgs((vector signed long long)__a, __b, &__cc);
4424*67e74705SXin Li   return __cc != 0;
4425*67e74705SXin Li }
4426*67e74705SXin Li 
4427*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector unsigned long long __a,vector unsigned long long __b)4428*67e74705SXin Li vec_any_le(vector unsigned long long __a, vector unsigned long long __b) {
4429*67e74705SXin Li   int __cc;
4430*67e74705SXin Li   __builtin_s390_vchlgs(__a, __b, &__cc);
4431*67e74705SXin Li   return __cc != 0;
4432*67e74705SXin Li }
4433*67e74705SXin Li 
4434*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector unsigned long long __a,vector bool long long __b)4435*67e74705SXin Li vec_any_le(vector unsigned long long __a, vector bool long long __b) {
4436*67e74705SXin Li   int __cc;
4437*67e74705SXin Li   __builtin_s390_vchlgs(__a, (vector unsigned long long)__b, &__cc);
4438*67e74705SXin Li   return __cc != 0;
4439*67e74705SXin Li }
4440*67e74705SXin Li 
4441*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector bool long long __a,vector unsigned long long __b)4442*67e74705SXin Li vec_any_le(vector bool long long __a, vector unsigned long long __b) {
4443*67e74705SXin Li   int __cc;
4444*67e74705SXin Li   __builtin_s390_vchlgs((vector unsigned long long)__a, __b, &__cc);
4445*67e74705SXin Li   return __cc != 0;
4446*67e74705SXin Li }
4447*67e74705SXin Li 
4448*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector bool long long __a,vector bool long long __b)4449*67e74705SXin Li vec_any_le(vector bool long long __a, vector bool long long __b) {
4450*67e74705SXin Li   int __cc;
4451*67e74705SXin Li   __builtin_s390_vchlgs((vector unsigned long long)__a,
4452*67e74705SXin Li                         (vector unsigned long long)__b, &__cc);
4453*67e74705SXin Li   return __cc != 0;
4454*67e74705SXin Li }
4455*67e74705SXin Li 
4456*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_le(vector double __a,vector double __b)4457*67e74705SXin Li vec_any_le(vector double __a, vector double __b) {
4458*67e74705SXin Li   int __cc;
4459*67e74705SXin Li   __builtin_s390_vfchedbs(__b, __a, &__cc);
4460*67e74705SXin Li   return __cc <= 1;
4461*67e74705SXin Li }
4462*67e74705SXin Li 
4463*67e74705SXin Li /*-- vec_any_lt -------------------------------------------------------------*/
4464*67e74705SXin Li 
4465*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector signed char __a,vector signed char __b)4466*67e74705SXin Li vec_any_lt(vector signed char __a, vector signed char __b) {
4467*67e74705SXin Li   int __cc;
4468*67e74705SXin Li   __builtin_s390_vchbs(__b, __a, &__cc);
4469*67e74705SXin Li   return __cc <= 1;
4470*67e74705SXin Li }
4471*67e74705SXin Li 
4472*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector signed char __a,vector bool char __b)4473*67e74705SXin Li vec_any_lt(vector signed char __a, vector bool char __b) {
4474*67e74705SXin Li   int __cc;
4475*67e74705SXin Li   __builtin_s390_vchbs((vector signed char)__b, __a, &__cc);
4476*67e74705SXin Li   return __cc <= 1;
4477*67e74705SXin Li }
4478*67e74705SXin Li 
4479*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector bool char __a,vector signed char __b)4480*67e74705SXin Li vec_any_lt(vector bool char __a, vector signed char __b) {
4481*67e74705SXin Li   int __cc;
4482*67e74705SXin Li   __builtin_s390_vchbs(__b, (vector signed char)__a, &__cc);
4483*67e74705SXin Li   return __cc <= 1;
4484*67e74705SXin Li }
4485*67e74705SXin Li 
4486*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector unsigned char __a,vector unsigned char __b)4487*67e74705SXin Li vec_any_lt(vector unsigned char __a, vector unsigned char __b) {
4488*67e74705SXin Li   int __cc;
4489*67e74705SXin Li   __builtin_s390_vchlbs(__b, __a, &__cc);
4490*67e74705SXin Li   return __cc <= 1;
4491*67e74705SXin Li }
4492*67e74705SXin Li 
4493*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector unsigned char __a,vector bool char __b)4494*67e74705SXin Li vec_any_lt(vector unsigned char __a, vector bool char __b) {
4495*67e74705SXin Li   int __cc;
4496*67e74705SXin Li   __builtin_s390_vchlbs((vector unsigned char)__b, __a, &__cc);
4497*67e74705SXin Li   return __cc <= 1;
4498*67e74705SXin Li }
4499*67e74705SXin Li 
4500*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector bool char __a,vector unsigned char __b)4501*67e74705SXin Li vec_any_lt(vector bool char __a, vector unsigned char __b) {
4502*67e74705SXin Li   int __cc;
4503*67e74705SXin Li   __builtin_s390_vchlbs(__b, (vector unsigned char)__a, &__cc);
4504*67e74705SXin Li   return __cc <= 1;
4505*67e74705SXin Li }
4506*67e74705SXin Li 
4507*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector bool char __a,vector bool char __b)4508*67e74705SXin Li vec_any_lt(vector bool char __a, vector bool char __b) {
4509*67e74705SXin Li   int __cc;
4510*67e74705SXin Li   __builtin_s390_vchlbs((vector unsigned char)__b,
4511*67e74705SXin Li                         (vector unsigned char)__a, &__cc);
4512*67e74705SXin Li   return __cc <= 1;
4513*67e74705SXin Li }
4514*67e74705SXin Li 
4515*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector signed short __a,vector signed short __b)4516*67e74705SXin Li vec_any_lt(vector signed short __a, vector signed short __b) {
4517*67e74705SXin Li   int __cc;
4518*67e74705SXin Li   __builtin_s390_vchhs(__b, __a, &__cc);
4519*67e74705SXin Li   return __cc <= 1;
4520*67e74705SXin Li }
4521*67e74705SXin Li 
4522*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector signed short __a,vector bool short __b)4523*67e74705SXin Li vec_any_lt(vector signed short __a, vector bool short __b) {
4524*67e74705SXin Li   int __cc;
4525*67e74705SXin Li   __builtin_s390_vchhs((vector signed short)__b, __a, &__cc);
4526*67e74705SXin Li   return __cc <= 1;
4527*67e74705SXin Li }
4528*67e74705SXin Li 
4529*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector bool short __a,vector signed short __b)4530*67e74705SXin Li vec_any_lt(vector bool short __a, vector signed short __b) {
4531*67e74705SXin Li   int __cc;
4532*67e74705SXin Li   __builtin_s390_vchhs(__b, (vector signed short)__a, &__cc);
4533*67e74705SXin Li   return __cc <= 1;
4534*67e74705SXin Li }
4535*67e74705SXin Li 
4536*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector unsigned short __a,vector unsigned short __b)4537*67e74705SXin Li vec_any_lt(vector unsigned short __a, vector unsigned short __b) {
4538*67e74705SXin Li   int __cc;
4539*67e74705SXin Li   __builtin_s390_vchlhs(__b, __a, &__cc);
4540*67e74705SXin Li   return __cc <= 1;
4541*67e74705SXin Li }
4542*67e74705SXin Li 
4543*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector unsigned short __a,vector bool short __b)4544*67e74705SXin Li vec_any_lt(vector unsigned short __a, vector bool short __b) {
4545*67e74705SXin Li   int __cc;
4546*67e74705SXin Li   __builtin_s390_vchlhs((vector unsigned short)__b, __a, &__cc);
4547*67e74705SXin Li   return __cc <= 1;
4548*67e74705SXin Li }
4549*67e74705SXin Li 
4550*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector bool short __a,vector unsigned short __b)4551*67e74705SXin Li vec_any_lt(vector bool short __a, vector unsigned short __b) {
4552*67e74705SXin Li   int __cc;
4553*67e74705SXin Li   __builtin_s390_vchlhs(__b, (vector unsigned short)__a, &__cc);
4554*67e74705SXin Li   return __cc <= 1;
4555*67e74705SXin Li }
4556*67e74705SXin Li 
4557*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector bool short __a,vector bool short __b)4558*67e74705SXin Li vec_any_lt(vector bool short __a, vector bool short __b) {
4559*67e74705SXin Li   int __cc;
4560*67e74705SXin Li   __builtin_s390_vchlhs((vector unsigned short)__b,
4561*67e74705SXin Li                         (vector unsigned short)__a, &__cc);
4562*67e74705SXin Li   return __cc <= 1;
4563*67e74705SXin Li }
4564*67e74705SXin Li 
4565*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector signed int __a,vector signed int __b)4566*67e74705SXin Li vec_any_lt(vector signed int __a, vector signed int __b) {
4567*67e74705SXin Li   int __cc;
4568*67e74705SXin Li   __builtin_s390_vchfs(__b, __a, &__cc);
4569*67e74705SXin Li   return __cc <= 1;
4570*67e74705SXin Li }
4571*67e74705SXin Li 
4572*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector signed int __a,vector bool int __b)4573*67e74705SXin Li vec_any_lt(vector signed int __a, vector bool int __b) {
4574*67e74705SXin Li   int __cc;
4575*67e74705SXin Li   __builtin_s390_vchfs((vector signed int)__b, __a, &__cc);
4576*67e74705SXin Li   return __cc <= 1;
4577*67e74705SXin Li }
4578*67e74705SXin Li 
4579*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector bool int __a,vector signed int __b)4580*67e74705SXin Li vec_any_lt(vector bool int __a, vector signed int __b) {
4581*67e74705SXin Li   int __cc;
4582*67e74705SXin Li   __builtin_s390_vchfs(__b, (vector signed int)__a, &__cc);
4583*67e74705SXin Li   return __cc <= 1;
4584*67e74705SXin Li }
4585*67e74705SXin Li 
4586*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector unsigned int __a,vector unsigned int __b)4587*67e74705SXin Li vec_any_lt(vector unsigned int __a, vector unsigned int __b) {
4588*67e74705SXin Li   int __cc;
4589*67e74705SXin Li   __builtin_s390_vchlfs(__b, __a, &__cc);
4590*67e74705SXin Li   return __cc <= 1;
4591*67e74705SXin Li }
4592*67e74705SXin Li 
4593*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector unsigned int __a,vector bool int __b)4594*67e74705SXin Li vec_any_lt(vector unsigned int __a, vector bool int __b) {
4595*67e74705SXin Li   int __cc;
4596*67e74705SXin Li   __builtin_s390_vchlfs((vector unsigned int)__b, __a, &__cc);
4597*67e74705SXin Li   return __cc <= 1;
4598*67e74705SXin Li }
4599*67e74705SXin Li 
4600*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector bool int __a,vector unsigned int __b)4601*67e74705SXin Li vec_any_lt(vector bool int __a, vector unsigned int __b) {
4602*67e74705SXin Li   int __cc;
4603*67e74705SXin Li   __builtin_s390_vchlfs(__b, (vector unsigned int)__a, &__cc);
4604*67e74705SXin Li   return __cc <= 1;
4605*67e74705SXin Li }
4606*67e74705SXin Li 
4607*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector bool int __a,vector bool int __b)4608*67e74705SXin Li vec_any_lt(vector bool int __a, vector bool int __b) {
4609*67e74705SXin Li   int __cc;
4610*67e74705SXin Li   __builtin_s390_vchlfs((vector unsigned int)__b,
4611*67e74705SXin Li                         (vector unsigned int)__a, &__cc);
4612*67e74705SXin Li   return __cc <= 1;
4613*67e74705SXin Li }
4614*67e74705SXin Li 
4615*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector signed long long __a,vector signed long long __b)4616*67e74705SXin Li vec_any_lt(vector signed long long __a, vector signed long long __b) {
4617*67e74705SXin Li   int __cc;
4618*67e74705SXin Li   __builtin_s390_vchgs(__b, __a, &__cc);
4619*67e74705SXin Li   return __cc <= 1;
4620*67e74705SXin Li }
4621*67e74705SXin Li 
4622*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector signed long long __a,vector bool long long __b)4623*67e74705SXin Li vec_any_lt(vector signed long long __a, vector bool long long __b) {
4624*67e74705SXin Li   int __cc;
4625*67e74705SXin Li   __builtin_s390_vchgs((vector signed long long)__b, __a, &__cc);
4626*67e74705SXin Li   return __cc <= 1;
4627*67e74705SXin Li }
4628*67e74705SXin Li 
4629*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector bool long long __a,vector signed long long __b)4630*67e74705SXin Li vec_any_lt(vector bool long long __a, vector signed long long __b) {
4631*67e74705SXin Li   int __cc;
4632*67e74705SXin Li   __builtin_s390_vchgs(__b, (vector signed long long)__a, &__cc);
4633*67e74705SXin Li   return __cc <= 1;
4634*67e74705SXin Li }
4635*67e74705SXin Li 
4636*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector unsigned long long __a,vector unsigned long long __b)4637*67e74705SXin Li vec_any_lt(vector unsigned long long __a, vector unsigned long long __b) {
4638*67e74705SXin Li   int __cc;
4639*67e74705SXin Li   __builtin_s390_vchlgs(__b, __a, &__cc);
4640*67e74705SXin Li   return __cc <= 1;
4641*67e74705SXin Li }
4642*67e74705SXin Li 
4643*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector unsigned long long __a,vector bool long long __b)4644*67e74705SXin Li vec_any_lt(vector unsigned long long __a, vector bool long long __b) {
4645*67e74705SXin Li   int __cc;
4646*67e74705SXin Li   __builtin_s390_vchlgs((vector unsigned long long)__b, __a, &__cc);
4647*67e74705SXin Li   return __cc <= 1;
4648*67e74705SXin Li }
4649*67e74705SXin Li 
4650*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector bool long long __a,vector unsigned long long __b)4651*67e74705SXin Li vec_any_lt(vector bool long long __a, vector unsigned long long __b) {
4652*67e74705SXin Li   int __cc;
4653*67e74705SXin Li   __builtin_s390_vchlgs(__b, (vector unsigned long long)__a, &__cc);
4654*67e74705SXin Li   return __cc <= 1;
4655*67e74705SXin Li }
4656*67e74705SXin Li 
4657*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector bool long long __a,vector bool long long __b)4658*67e74705SXin Li vec_any_lt(vector bool long long __a, vector bool long long __b) {
4659*67e74705SXin Li   int __cc;
4660*67e74705SXin Li   __builtin_s390_vchlgs((vector unsigned long long)__b,
4661*67e74705SXin Li                         (vector unsigned long long)__a, &__cc);
4662*67e74705SXin Li   return __cc <= 1;
4663*67e74705SXin Li }
4664*67e74705SXin Li 
4665*67e74705SXin Li static inline __ATTRS_o_ai int
vec_any_lt(vector double __a,vector double __b)4666*67e74705SXin Li vec_any_lt(vector double __a, vector double __b) {
4667*67e74705SXin Li   int __cc;
4668*67e74705SXin Li   __builtin_s390_vfchdbs(__b, __a, &__cc);
4669*67e74705SXin Li   return __cc <= 1;
4670*67e74705SXin Li }
4671*67e74705SXin Li 
4672*67e74705SXin Li /*-- vec_any_nge ------------------------------------------------------------*/
4673*67e74705SXin Li 
4674*67e74705SXin Li static inline __ATTRS_ai int
vec_any_nge(vector double __a,vector double __b)4675*67e74705SXin Li vec_any_nge(vector double __a, vector double __b) {
4676*67e74705SXin Li   int __cc;
4677*67e74705SXin Li   __builtin_s390_vfchedbs(__a, __b, &__cc);
4678*67e74705SXin Li   return __cc != 0;
4679*67e74705SXin Li }
4680*67e74705SXin Li 
4681*67e74705SXin Li /*-- vec_any_ngt ------------------------------------------------------------*/
4682*67e74705SXin Li 
4683*67e74705SXin Li static inline __ATTRS_ai int
vec_any_ngt(vector double __a,vector double __b)4684*67e74705SXin Li vec_any_ngt(vector double __a, vector double __b) {
4685*67e74705SXin Li   int __cc;
4686*67e74705SXin Li   __builtin_s390_vfchdbs(__a, __b, &__cc);
4687*67e74705SXin Li   return __cc != 0;
4688*67e74705SXin Li }
4689*67e74705SXin Li 
4690*67e74705SXin Li /*-- vec_any_nle ------------------------------------------------------------*/
4691*67e74705SXin Li 
4692*67e74705SXin Li static inline __ATTRS_ai int
vec_any_nle(vector double __a,vector double __b)4693*67e74705SXin Li vec_any_nle(vector double __a, vector double __b) {
4694*67e74705SXin Li   int __cc;
4695*67e74705SXin Li   __builtin_s390_vfchedbs(__b, __a, &__cc);
4696*67e74705SXin Li   return __cc != 0;
4697*67e74705SXin Li }
4698*67e74705SXin Li 
4699*67e74705SXin Li /*-- vec_any_nlt ------------------------------------------------------------*/
4700*67e74705SXin Li 
4701*67e74705SXin Li static inline __ATTRS_ai int
vec_any_nlt(vector double __a,vector double __b)4702*67e74705SXin Li vec_any_nlt(vector double __a, vector double __b) {
4703*67e74705SXin Li   int __cc;
4704*67e74705SXin Li   __builtin_s390_vfchdbs(__b, __a, &__cc);
4705*67e74705SXin Li   return __cc != 0;
4706*67e74705SXin Li }
4707*67e74705SXin Li 
4708*67e74705SXin Li /*-- vec_any_nan ------------------------------------------------------------*/
4709*67e74705SXin Li 
4710*67e74705SXin Li static inline __ATTRS_ai int
vec_any_nan(vector double __a)4711*67e74705SXin Li vec_any_nan(vector double __a) {
4712*67e74705SXin Li   int __cc;
4713*67e74705SXin Li   __builtin_s390_vftcidb(__a, 15, &__cc);
4714*67e74705SXin Li   return __cc != 3;
4715*67e74705SXin Li }
4716*67e74705SXin Li 
4717*67e74705SXin Li /*-- vec_any_numeric --------------------------------------------------------*/
4718*67e74705SXin Li 
4719*67e74705SXin Li static inline __ATTRS_ai int
vec_any_numeric(vector double __a)4720*67e74705SXin Li vec_any_numeric(vector double __a) {
4721*67e74705SXin Li   int __cc;
4722*67e74705SXin Li   __builtin_s390_vftcidb(__a, 15, &__cc);
4723*67e74705SXin Li   return __cc != 0;
4724*67e74705SXin Li }
4725*67e74705SXin Li 
4726*67e74705SXin Li /*-- vec_andc ---------------------------------------------------------------*/
4727*67e74705SXin Li 
4728*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_andc(vector bool char __a,vector bool char __b)4729*67e74705SXin Li vec_andc(vector bool char __a, vector bool char __b) {
4730*67e74705SXin Li   return __a & ~__b;
4731*67e74705SXin Li }
4732*67e74705SXin Li 
4733*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_andc(vector signed char __a,vector signed char __b)4734*67e74705SXin Li vec_andc(vector signed char __a, vector signed char __b) {
4735*67e74705SXin Li   return __a & ~__b;
4736*67e74705SXin Li }
4737*67e74705SXin Li 
4738*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_andc(vector bool char __a,vector signed char __b)4739*67e74705SXin Li vec_andc(vector bool char __a, vector signed char __b) {
4740*67e74705SXin Li   return __a & ~__b;
4741*67e74705SXin Li }
4742*67e74705SXin Li 
4743*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_andc(vector signed char __a,vector bool char __b)4744*67e74705SXin Li vec_andc(vector signed char __a, vector bool char __b) {
4745*67e74705SXin Li   return __a & ~__b;
4746*67e74705SXin Li }
4747*67e74705SXin Li 
4748*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_andc(vector unsigned char __a,vector unsigned char __b)4749*67e74705SXin Li vec_andc(vector unsigned char __a, vector unsigned char __b) {
4750*67e74705SXin Li   return __a & ~__b;
4751*67e74705SXin Li }
4752*67e74705SXin Li 
4753*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_andc(vector bool char __a,vector unsigned char __b)4754*67e74705SXin Li vec_andc(vector bool char __a, vector unsigned char __b) {
4755*67e74705SXin Li   return __a & ~__b;
4756*67e74705SXin Li }
4757*67e74705SXin Li 
4758*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_andc(vector unsigned char __a,vector bool char __b)4759*67e74705SXin Li vec_andc(vector unsigned char __a, vector bool char __b) {
4760*67e74705SXin Li   return __a & ~__b;
4761*67e74705SXin Li }
4762*67e74705SXin Li 
4763*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_andc(vector bool short __a,vector bool short __b)4764*67e74705SXin Li vec_andc(vector bool short __a, vector bool short __b) {
4765*67e74705SXin Li   return __a & ~__b;
4766*67e74705SXin Li }
4767*67e74705SXin Li 
4768*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_andc(vector signed short __a,vector signed short __b)4769*67e74705SXin Li vec_andc(vector signed short __a, vector signed short __b) {
4770*67e74705SXin Li   return __a & ~__b;
4771*67e74705SXin Li }
4772*67e74705SXin Li 
4773*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_andc(vector bool short __a,vector signed short __b)4774*67e74705SXin Li vec_andc(vector bool short __a, vector signed short __b) {
4775*67e74705SXin Li   return __a & ~__b;
4776*67e74705SXin Li }
4777*67e74705SXin Li 
4778*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_andc(vector signed short __a,vector bool short __b)4779*67e74705SXin Li vec_andc(vector signed short __a, vector bool short __b) {
4780*67e74705SXin Li   return __a & ~__b;
4781*67e74705SXin Li }
4782*67e74705SXin Li 
4783*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_andc(vector unsigned short __a,vector unsigned short __b)4784*67e74705SXin Li vec_andc(vector unsigned short __a, vector unsigned short __b) {
4785*67e74705SXin Li   return __a & ~__b;
4786*67e74705SXin Li }
4787*67e74705SXin Li 
4788*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_andc(vector bool short __a,vector unsigned short __b)4789*67e74705SXin Li vec_andc(vector bool short __a, vector unsigned short __b) {
4790*67e74705SXin Li   return __a & ~__b;
4791*67e74705SXin Li }
4792*67e74705SXin Li 
4793*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_andc(vector unsigned short __a,vector bool short __b)4794*67e74705SXin Li vec_andc(vector unsigned short __a, vector bool short __b) {
4795*67e74705SXin Li   return __a & ~__b;
4796*67e74705SXin Li }
4797*67e74705SXin Li 
4798*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_andc(vector bool int __a,vector bool int __b)4799*67e74705SXin Li vec_andc(vector bool int __a, vector bool int __b) {
4800*67e74705SXin Li   return __a & ~__b;
4801*67e74705SXin Li }
4802*67e74705SXin Li 
4803*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_andc(vector signed int __a,vector signed int __b)4804*67e74705SXin Li vec_andc(vector signed int __a, vector signed int __b) {
4805*67e74705SXin Li   return __a & ~__b;
4806*67e74705SXin Li }
4807*67e74705SXin Li 
4808*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_andc(vector bool int __a,vector signed int __b)4809*67e74705SXin Li vec_andc(vector bool int __a, vector signed int __b) {
4810*67e74705SXin Li   return __a & ~__b;
4811*67e74705SXin Li }
4812*67e74705SXin Li 
4813*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_andc(vector signed int __a,vector bool int __b)4814*67e74705SXin Li vec_andc(vector signed int __a, vector bool int __b) {
4815*67e74705SXin Li   return __a & ~__b;
4816*67e74705SXin Li }
4817*67e74705SXin Li 
4818*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_andc(vector unsigned int __a,vector unsigned int __b)4819*67e74705SXin Li vec_andc(vector unsigned int __a, vector unsigned int __b) {
4820*67e74705SXin Li   return __a & ~__b;
4821*67e74705SXin Li }
4822*67e74705SXin Li 
4823*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_andc(vector bool int __a,vector unsigned int __b)4824*67e74705SXin Li vec_andc(vector bool int __a, vector unsigned int __b) {
4825*67e74705SXin Li   return __a & ~__b;
4826*67e74705SXin Li }
4827*67e74705SXin Li 
4828*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_andc(vector unsigned int __a,vector bool int __b)4829*67e74705SXin Li vec_andc(vector unsigned int __a, vector bool int __b) {
4830*67e74705SXin Li   return __a & ~__b;
4831*67e74705SXin Li }
4832*67e74705SXin Li 
4833*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_andc(vector bool long long __a,vector bool long long __b)4834*67e74705SXin Li vec_andc(vector bool long long __a, vector bool long long __b) {
4835*67e74705SXin Li   return __a & ~__b;
4836*67e74705SXin Li }
4837*67e74705SXin Li 
4838*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_andc(vector signed long long __a,vector signed long long __b)4839*67e74705SXin Li vec_andc(vector signed long long __a, vector signed long long __b) {
4840*67e74705SXin Li   return __a & ~__b;
4841*67e74705SXin Li }
4842*67e74705SXin Li 
4843*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_andc(vector bool long long __a,vector signed long long __b)4844*67e74705SXin Li vec_andc(vector bool long long __a, vector signed long long __b) {
4845*67e74705SXin Li   return __a & ~__b;
4846*67e74705SXin Li }
4847*67e74705SXin Li 
4848*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_andc(vector signed long long __a,vector bool long long __b)4849*67e74705SXin Li vec_andc(vector signed long long __a, vector bool long long __b) {
4850*67e74705SXin Li   return __a & ~__b;
4851*67e74705SXin Li }
4852*67e74705SXin Li 
4853*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_andc(vector unsigned long long __a,vector unsigned long long __b)4854*67e74705SXin Li vec_andc(vector unsigned long long __a, vector unsigned long long __b) {
4855*67e74705SXin Li   return __a & ~__b;
4856*67e74705SXin Li }
4857*67e74705SXin Li 
4858*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_andc(vector bool long long __a,vector unsigned long long __b)4859*67e74705SXin Li vec_andc(vector bool long long __a, vector unsigned long long __b) {
4860*67e74705SXin Li   return __a & ~__b;
4861*67e74705SXin Li }
4862*67e74705SXin Li 
4863*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_andc(vector unsigned long long __a,vector bool long long __b)4864*67e74705SXin Li vec_andc(vector unsigned long long __a, vector bool long long __b) {
4865*67e74705SXin Li   return __a & ~__b;
4866*67e74705SXin Li }
4867*67e74705SXin Li 
4868*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_andc(vector double __a,vector double __b)4869*67e74705SXin Li vec_andc(vector double __a, vector double __b) {
4870*67e74705SXin Li   return (vector double)((vector unsigned long long)__a &
4871*67e74705SXin Li                          ~(vector unsigned long long)__b);
4872*67e74705SXin Li }
4873*67e74705SXin Li 
4874*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_andc(vector bool long long __a,vector double __b)4875*67e74705SXin Li vec_andc(vector bool long long __a, vector double __b) {
4876*67e74705SXin Li   return (vector double)((vector unsigned long long)__a &
4877*67e74705SXin Li                          ~(vector unsigned long long)__b);
4878*67e74705SXin Li }
4879*67e74705SXin Li 
4880*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_andc(vector double __a,vector bool long long __b)4881*67e74705SXin Li vec_andc(vector double __a, vector bool long long __b) {
4882*67e74705SXin Li   return (vector double)((vector unsigned long long)__a &
4883*67e74705SXin Li                          ~(vector unsigned long long)__b);
4884*67e74705SXin Li }
4885*67e74705SXin Li 
4886*67e74705SXin Li /*-- vec_nor ----------------------------------------------------------------*/
4887*67e74705SXin Li 
4888*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_nor(vector bool char __a,vector bool char __b)4889*67e74705SXin Li vec_nor(vector bool char __a, vector bool char __b) {
4890*67e74705SXin Li   return ~(__a | __b);
4891*67e74705SXin Li }
4892*67e74705SXin Li 
4893*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_nor(vector signed char __a,vector signed char __b)4894*67e74705SXin Li vec_nor(vector signed char __a, vector signed char __b) {
4895*67e74705SXin Li   return ~(__a | __b);
4896*67e74705SXin Li }
4897*67e74705SXin Li 
4898*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_nor(vector bool char __a,vector signed char __b)4899*67e74705SXin Li vec_nor(vector bool char __a, vector signed char __b) {
4900*67e74705SXin Li   return ~(__a | __b);
4901*67e74705SXin Li }
4902*67e74705SXin Li 
4903*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_nor(vector signed char __a,vector bool char __b)4904*67e74705SXin Li vec_nor(vector signed char __a, vector bool char __b) {
4905*67e74705SXin Li   return ~(__a | __b);
4906*67e74705SXin Li }
4907*67e74705SXin Li 
4908*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_nor(vector unsigned char __a,vector unsigned char __b)4909*67e74705SXin Li vec_nor(vector unsigned char __a, vector unsigned char __b) {
4910*67e74705SXin Li   return ~(__a | __b);
4911*67e74705SXin Li }
4912*67e74705SXin Li 
4913*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_nor(vector bool char __a,vector unsigned char __b)4914*67e74705SXin Li vec_nor(vector bool char __a, vector unsigned char __b) {
4915*67e74705SXin Li   return ~(__a | __b);
4916*67e74705SXin Li }
4917*67e74705SXin Li 
4918*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_nor(vector unsigned char __a,vector bool char __b)4919*67e74705SXin Li vec_nor(vector unsigned char __a, vector bool char __b) {
4920*67e74705SXin Li   return ~(__a | __b);
4921*67e74705SXin Li }
4922*67e74705SXin Li 
4923*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_nor(vector bool short __a,vector bool short __b)4924*67e74705SXin Li vec_nor(vector bool short __a, vector bool short __b) {
4925*67e74705SXin Li   return ~(__a | __b);
4926*67e74705SXin Li }
4927*67e74705SXin Li 
4928*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_nor(vector signed short __a,vector signed short __b)4929*67e74705SXin Li vec_nor(vector signed short __a, vector signed short __b) {
4930*67e74705SXin Li   return ~(__a | __b);
4931*67e74705SXin Li }
4932*67e74705SXin Li 
4933*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_nor(vector bool short __a,vector signed short __b)4934*67e74705SXin Li vec_nor(vector bool short __a, vector signed short __b) {
4935*67e74705SXin Li   return ~(__a | __b);
4936*67e74705SXin Li }
4937*67e74705SXin Li 
4938*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_nor(vector signed short __a,vector bool short __b)4939*67e74705SXin Li vec_nor(vector signed short __a, vector bool short __b) {
4940*67e74705SXin Li   return ~(__a | __b);
4941*67e74705SXin Li }
4942*67e74705SXin Li 
4943*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_nor(vector unsigned short __a,vector unsigned short __b)4944*67e74705SXin Li vec_nor(vector unsigned short __a, vector unsigned short __b) {
4945*67e74705SXin Li   return ~(__a | __b);
4946*67e74705SXin Li }
4947*67e74705SXin Li 
4948*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_nor(vector bool short __a,vector unsigned short __b)4949*67e74705SXin Li vec_nor(vector bool short __a, vector unsigned short __b) {
4950*67e74705SXin Li   return ~(__a | __b);
4951*67e74705SXin Li }
4952*67e74705SXin Li 
4953*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_nor(vector unsigned short __a,vector bool short __b)4954*67e74705SXin Li vec_nor(vector unsigned short __a, vector bool short __b) {
4955*67e74705SXin Li   return ~(__a | __b);
4956*67e74705SXin Li }
4957*67e74705SXin Li 
4958*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_nor(vector bool int __a,vector bool int __b)4959*67e74705SXin Li vec_nor(vector bool int __a, vector bool int __b) {
4960*67e74705SXin Li   return ~(__a | __b);
4961*67e74705SXin Li }
4962*67e74705SXin Li 
4963*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_nor(vector signed int __a,vector signed int __b)4964*67e74705SXin Li vec_nor(vector signed int __a, vector signed int __b) {
4965*67e74705SXin Li   return ~(__a | __b);
4966*67e74705SXin Li }
4967*67e74705SXin Li 
4968*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_nor(vector bool int __a,vector signed int __b)4969*67e74705SXin Li vec_nor(vector bool int __a, vector signed int __b) {
4970*67e74705SXin Li   return ~(__a | __b);
4971*67e74705SXin Li }
4972*67e74705SXin Li 
4973*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_nor(vector signed int __a,vector bool int __b)4974*67e74705SXin Li vec_nor(vector signed int __a, vector bool int __b) {
4975*67e74705SXin Li   return ~(__a | __b);
4976*67e74705SXin Li }
4977*67e74705SXin Li 
4978*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_nor(vector unsigned int __a,vector unsigned int __b)4979*67e74705SXin Li vec_nor(vector unsigned int __a, vector unsigned int __b) {
4980*67e74705SXin Li   return ~(__a | __b);
4981*67e74705SXin Li }
4982*67e74705SXin Li 
4983*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_nor(vector bool int __a,vector unsigned int __b)4984*67e74705SXin Li vec_nor(vector bool int __a, vector unsigned int __b) {
4985*67e74705SXin Li   return ~(__a | __b);
4986*67e74705SXin Li }
4987*67e74705SXin Li 
4988*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_nor(vector unsigned int __a,vector bool int __b)4989*67e74705SXin Li vec_nor(vector unsigned int __a, vector bool int __b) {
4990*67e74705SXin Li   return ~(__a | __b);
4991*67e74705SXin Li }
4992*67e74705SXin Li 
4993*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_nor(vector bool long long __a,vector bool long long __b)4994*67e74705SXin Li vec_nor(vector bool long long __a, vector bool long long __b) {
4995*67e74705SXin Li   return ~(__a | __b);
4996*67e74705SXin Li }
4997*67e74705SXin Li 
4998*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_nor(vector signed long long __a,vector signed long long __b)4999*67e74705SXin Li vec_nor(vector signed long long __a, vector signed long long __b) {
5000*67e74705SXin Li   return ~(__a | __b);
5001*67e74705SXin Li }
5002*67e74705SXin Li 
5003*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_nor(vector bool long long __a,vector signed long long __b)5004*67e74705SXin Li vec_nor(vector bool long long __a, vector signed long long __b) {
5005*67e74705SXin Li   return ~(__a | __b);
5006*67e74705SXin Li }
5007*67e74705SXin Li 
5008*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_nor(vector signed long long __a,vector bool long long __b)5009*67e74705SXin Li vec_nor(vector signed long long __a, vector bool long long __b) {
5010*67e74705SXin Li   return ~(__a | __b);
5011*67e74705SXin Li }
5012*67e74705SXin Li 
5013*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_nor(vector unsigned long long __a,vector unsigned long long __b)5014*67e74705SXin Li vec_nor(vector unsigned long long __a, vector unsigned long long __b) {
5015*67e74705SXin Li   return ~(__a | __b);
5016*67e74705SXin Li }
5017*67e74705SXin Li 
5018*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_nor(vector bool long long __a,vector unsigned long long __b)5019*67e74705SXin Li vec_nor(vector bool long long __a, vector unsigned long long __b) {
5020*67e74705SXin Li   return ~(__a | __b);
5021*67e74705SXin Li }
5022*67e74705SXin Li 
5023*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_nor(vector unsigned long long __a,vector bool long long __b)5024*67e74705SXin Li vec_nor(vector unsigned long long __a, vector bool long long __b) {
5025*67e74705SXin Li   return ~(__a | __b);
5026*67e74705SXin Li }
5027*67e74705SXin Li 
5028*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_nor(vector double __a,vector double __b)5029*67e74705SXin Li vec_nor(vector double __a, vector double __b) {
5030*67e74705SXin Li   return (vector double)~((vector unsigned long long)__a |
5031*67e74705SXin Li                           (vector unsigned long long)__b);
5032*67e74705SXin Li }
5033*67e74705SXin Li 
5034*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_nor(vector bool long long __a,vector double __b)5035*67e74705SXin Li vec_nor(vector bool long long __a, vector double __b) {
5036*67e74705SXin Li   return (vector double)~((vector unsigned long long)__a |
5037*67e74705SXin Li                           (vector unsigned long long)__b);
5038*67e74705SXin Li }
5039*67e74705SXin Li 
5040*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_nor(vector double __a,vector bool long long __b)5041*67e74705SXin Li vec_nor(vector double __a, vector bool long long __b) {
5042*67e74705SXin Li   return (vector double)~((vector unsigned long long)__a |
5043*67e74705SXin Li                           (vector unsigned long long)__b);
5044*67e74705SXin Li }
5045*67e74705SXin Li 
5046*67e74705SXin Li /*-- vec_cntlz --------------------------------------------------------------*/
5047*67e74705SXin Li 
5048*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cntlz(vector signed char __a)5049*67e74705SXin Li vec_cntlz(vector signed char __a) {
5050*67e74705SXin Li   return __builtin_s390_vclzb((vector unsigned char)__a);
5051*67e74705SXin Li }
5052*67e74705SXin Li 
5053*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cntlz(vector unsigned char __a)5054*67e74705SXin Li vec_cntlz(vector unsigned char __a) {
5055*67e74705SXin Li   return __builtin_s390_vclzb(__a);
5056*67e74705SXin Li }
5057*67e74705SXin Li 
5058*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cntlz(vector signed short __a)5059*67e74705SXin Li vec_cntlz(vector signed short __a) {
5060*67e74705SXin Li   return __builtin_s390_vclzh((vector unsigned short)__a);
5061*67e74705SXin Li }
5062*67e74705SXin Li 
5063*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cntlz(vector unsigned short __a)5064*67e74705SXin Li vec_cntlz(vector unsigned short __a) {
5065*67e74705SXin Li   return __builtin_s390_vclzh(__a);
5066*67e74705SXin Li }
5067*67e74705SXin Li 
5068*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cntlz(vector signed int __a)5069*67e74705SXin Li vec_cntlz(vector signed int __a) {
5070*67e74705SXin Li   return __builtin_s390_vclzf((vector unsigned int)__a);
5071*67e74705SXin Li }
5072*67e74705SXin Li 
5073*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cntlz(vector unsigned int __a)5074*67e74705SXin Li vec_cntlz(vector unsigned int __a) {
5075*67e74705SXin Li   return __builtin_s390_vclzf(__a);
5076*67e74705SXin Li }
5077*67e74705SXin Li 
5078*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_cntlz(vector signed long long __a)5079*67e74705SXin Li vec_cntlz(vector signed long long __a) {
5080*67e74705SXin Li   return __builtin_s390_vclzg((vector unsigned long long)__a);
5081*67e74705SXin Li }
5082*67e74705SXin Li 
5083*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_cntlz(vector unsigned long long __a)5084*67e74705SXin Li vec_cntlz(vector unsigned long long __a) {
5085*67e74705SXin Li   return __builtin_s390_vclzg(__a);
5086*67e74705SXin Li }
5087*67e74705SXin Li 
5088*67e74705SXin Li /*-- vec_cnttz --------------------------------------------------------------*/
5089*67e74705SXin Li 
5090*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cnttz(vector signed char __a)5091*67e74705SXin Li vec_cnttz(vector signed char __a) {
5092*67e74705SXin Li   return __builtin_s390_vctzb((vector unsigned char)__a);
5093*67e74705SXin Li }
5094*67e74705SXin Li 
5095*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cnttz(vector unsigned char __a)5096*67e74705SXin Li vec_cnttz(vector unsigned char __a) {
5097*67e74705SXin Li   return __builtin_s390_vctzb(__a);
5098*67e74705SXin Li }
5099*67e74705SXin Li 
5100*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cnttz(vector signed short __a)5101*67e74705SXin Li vec_cnttz(vector signed short __a) {
5102*67e74705SXin Li   return __builtin_s390_vctzh((vector unsigned short)__a);
5103*67e74705SXin Li }
5104*67e74705SXin Li 
5105*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cnttz(vector unsigned short __a)5106*67e74705SXin Li vec_cnttz(vector unsigned short __a) {
5107*67e74705SXin Li   return __builtin_s390_vctzh(__a);
5108*67e74705SXin Li }
5109*67e74705SXin Li 
5110*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cnttz(vector signed int __a)5111*67e74705SXin Li vec_cnttz(vector signed int __a) {
5112*67e74705SXin Li   return __builtin_s390_vctzf((vector unsigned int)__a);
5113*67e74705SXin Li }
5114*67e74705SXin Li 
5115*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cnttz(vector unsigned int __a)5116*67e74705SXin Li vec_cnttz(vector unsigned int __a) {
5117*67e74705SXin Li   return __builtin_s390_vctzf(__a);
5118*67e74705SXin Li }
5119*67e74705SXin Li 
5120*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_cnttz(vector signed long long __a)5121*67e74705SXin Li vec_cnttz(vector signed long long __a) {
5122*67e74705SXin Li   return __builtin_s390_vctzg((vector unsigned long long)__a);
5123*67e74705SXin Li }
5124*67e74705SXin Li 
5125*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_cnttz(vector unsigned long long __a)5126*67e74705SXin Li vec_cnttz(vector unsigned long long __a) {
5127*67e74705SXin Li   return __builtin_s390_vctzg(__a);
5128*67e74705SXin Li }
5129*67e74705SXin Li 
5130*67e74705SXin Li /*-- vec_popcnt -------------------------------------------------------------*/
5131*67e74705SXin Li 
5132*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_popcnt(vector signed char __a)5133*67e74705SXin Li vec_popcnt(vector signed char __a) {
5134*67e74705SXin Li   return __builtin_s390_vpopctb((vector unsigned char)__a);
5135*67e74705SXin Li }
5136*67e74705SXin Li 
5137*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_popcnt(vector unsigned char __a)5138*67e74705SXin Li vec_popcnt(vector unsigned char __a) {
5139*67e74705SXin Li   return __builtin_s390_vpopctb(__a);
5140*67e74705SXin Li }
5141*67e74705SXin Li 
5142*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_popcnt(vector signed short __a)5143*67e74705SXin Li vec_popcnt(vector signed short __a) {
5144*67e74705SXin Li   return __builtin_s390_vpopcth((vector unsigned short)__a);
5145*67e74705SXin Li }
5146*67e74705SXin Li 
5147*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_popcnt(vector unsigned short __a)5148*67e74705SXin Li vec_popcnt(vector unsigned short __a) {
5149*67e74705SXin Li   return __builtin_s390_vpopcth(__a);
5150*67e74705SXin Li }
5151*67e74705SXin Li 
5152*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_popcnt(vector signed int __a)5153*67e74705SXin Li vec_popcnt(vector signed int __a) {
5154*67e74705SXin Li   return __builtin_s390_vpopctf((vector unsigned int)__a);
5155*67e74705SXin Li }
5156*67e74705SXin Li 
5157*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_popcnt(vector unsigned int __a)5158*67e74705SXin Li vec_popcnt(vector unsigned int __a) {
5159*67e74705SXin Li   return __builtin_s390_vpopctf(__a);
5160*67e74705SXin Li }
5161*67e74705SXin Li 
5162*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_popcnt(vector signed long long __a)5163*67e74705SXin Li vec_popcnt(vector signed long long __a) {
5164*67e74705SXin Li   return __builtin_s390_vpopctg((vector unsigned long long)__a);
5165*67e74705SXin Li }
5166*67e74705SXin Li 
5167*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_popcnt(vector unsigned long long __a)5168*67e74705SXin Li vec_popcnt(vector unsigned long long __a) {
5169*67e74705SXin Li   return __builtin_s390_vpopctg(__a);
5170*67e74705SXin Li }
5171*67e74705SXin Li 
5172*67e74705SXin Li /*-- vec_rl -----------------------------------------------------------------*/
5173*67e74705SXin Li 
5174*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_rl(vector signed char __a,vector unsigned char __b)5175*67e74705SXin Li vec_rl(vector signed char __a, vector unsigned char __b) {
5176*67e74705SXin Li   return (vector signed char)__builtin_s390_verllvb(
5177*67e74705SXin Li     (vector unsigned char)__a, __b);
5178*67e74705SXin Li }
5179*67e74705SXin Li 
5180*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_rl(vector unsigned char __a,vector unsigned char __b)5181*67e74705SXin Li vec_rl(vector unsigned char __a, vector unsigned char __b) {
5182*67e74705SXin Li   return __builtin_s390_verllvb(__a, __b);
5183*67e74705SXin Li }
5184*67e74705SXin Li 
5185*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_rl(vector signed short __a,vector unsigned short __b)5186*67e74705SXin Li vec_rl(vector signed short __a, vector unsigned short __b) {
5187*67e74705SXin Li   return (vector signed short)__builtin_s390_verllvh(
5188*67e74705SXin Li     (vector unsigned short)__a, __b);
5189*67e74705SXin Li }
5190*67e74705SXin Li 
5191*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_rl(vector unsigned short __a,vector unsigned short __b)5192*67e74705SXin Li vec_rl(vector unsigned short __a, vector unsigned short __b) {
5193*67e74705SXin Li   return __builtin_s390_verllvh(__a, __b);
5194*67e74705SXin Li }
5195*67e74705SXin Li 
5196*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_rl(vector signed int __a,vector unsigned int __b)5197*67e74705SXin Li vec_rl(vector signed int __a, vector unsigned int __b) {
5198*67e74705SXin Li   return (vector signed int)__builtin_s390_verllvf(
5199*67e74705SXin Li     (vector unsigned int)__a, __b);
5200*67e74705SXin Li }
5201*67e74705SXin Li 
5202*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_rl(vector unsigned int __a,vector unsigned int __b)5203*67e74705SXin Li vec_rl(vector unsigned int __a, vector unsigned int __b) {
5204*67e74705SXin Li   return __builtin_s390_verllvf(__a, __b);
5205*67e74705SXin Li }
5206*67e74705SXin Li 
5207*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_rl(vector signed long long __a,vector unsigned long long __b)5208*67e74705SXin Li vec_rl(vector signed long long __a, vector unsigned long long __b) {
5209*67e74705SXin Li   return (vector signed long long)__builtin_s390_verllvg(
5210*67e74705SXin Li     (vector unsigned long long)__a, __b);
5211*67e74705SXin Li }
5212*67e74705SXin Li 
5213*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_rl(vector unsigned long long __a,vector unsigned long long __b)5214*67e74705SXin Li vec_rl(vector unsigned long long __a, vector unsigned long long __b) {
5215*67e74705SXin Li   return __builtin_s390_verllvg(__a, __b);
5216*67e74705SXin Li }
5217*67e74705SXin Li 
5218*67e74705SXin Li /*-- vec_rli ----------------------------------------------------------------*/
5219*67e74705SXin Li 
5220*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_rli(vector signed char __a,unsigned long __b)5221*67e74705SXin Li vec_rli(vector signed char __a, unsigned long __b) {
5222*67e74705SXin Li   return (vector signed char)__builtin_s390_verllb(
5223*67e74705SXin Li     (vector unsigned char)__a, (int)__b);
5224*67e74705SXin Li }
5225*67e74705SXin Li 
5226*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_rli(vector unsigned char __a,unsigned long __b)5227*67e74705SXin Li vec_rli(vector unsigned char __a, unsigned long __b) {
5228*67e74705SXin Li   return __builtin_s390_verllb(__a, (int)__b);
5229*67e74705SXin Li }
5230*67e74705SXin Li 
5231*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_rli(vector signed short __a,unsigned long __b)5232*67e74705SXin Li vec_rli(vector signed short __a, unsigned long __b) {
5233*67e74705SXin Li   return (vector signed short)__builtin_s390_verllh(
5234*67e74705SXin Li     (vector unsigned short)__a, (int)__b);
5235*67e74705SXin Li }
5236*67e74705SXin Li 
5237*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_rli(vector unsigned short __a,unsigned long __b)5238*67e74705SXin Li vec_rli(vector unsigned short __a, unsigned long __b) {
5239*67e74705SXin Li   return __builtin_s390_verllh(__a, (int)__b);
5240*67e74705SXin Li }
5241*67e74705SXin Li 
5242*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_rli(vector signed int __a,unsigned long __b)5243*67e74705SXin Li vec_rli(vector signed int __a, unsigned long __b) {
5244*67e74705SXin Li   return (vector signed int)__builtin_s390_verllf(
5245*67e74705SXin Li     (vector unsigned int)__a, (int)__b);
5246*67e74705SXin Li }
5247*67e74705SXin Li 
5248*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_rli(vector unsigned int __a,unsigned long __b)5249*67e74705SXin Li vec_rli(vector unsigned int __a, unsigned long __b) {
5250*67e74705SXin Li   return __builtin_s390_verllf(__a, (int)__b);
5251*67e74705SXin Li }
5252*67e74705SXin Li 
5253*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_rli(vector signed long long __a,unsigned long __b)5254*67e74705SXin Li vec_rli(vector signed long long __a, unsigned long __b) {
5255*67e74705SXin Li   return (vector signed long long)__builtin_s390_verllg(
5256*67e74705SXin Li     (vector unsigned long long)__a, (int)__b);
5257*67e74705SXin Li }
5258*67e74705SXin Li 
5259*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_rli(vector unsigned long long __a,unsigned long __b)5260*67e74705SXin Li vec_rli(vector unsigned long long __a, unsigned long __b) {
5261*67e74705SXin Li   return __builtin_s390_verllg(__a, (int)__b);
5262*67e74705SXin Li }
5263*67e74705SXin Li 
5264*67e74705SXin Li /*-- vec_rl_mask ------------------------------------------------------------*/
5265*67e74705SXin Li 
5266*67e74705SXin Li extern __ATTRS_o vector signed char
5267*67e74705SXin Li vec_rl_mask(vector signed char __a, vector unsigned char __b,
5268*67e74705SXin Li             unsigned char __c) __constant(__c);
5269*67e74705SXin Li 
5270*67e74705SXin Li extern __ATTRS_o vector unsigned char
5271*67e74705SXin Li vec_rl_mask(vector unsigned char __a, vector unsigned char __b,
5272*67e74705SXin Li             unsigned char __c) __constant(__c);
5273*67e74705SXin Li 
5274*67e74705SXin Li extern __ATTRS_o vector signed short
5275*67e74705SXin Li vec_rl_mask(vector signed short __a, vector unsigned short __b,
5276*67e74705SXin Li             unsigned char __c) __constant(__c);
5277*67e74705SXin Li 
5278*67e74705SXin Li extern __ATTRS_o vector unsigned short
5279*67e74705SXin Li vec_rl_mask(vector unsigned short __a, vector unsigned short __b,
5280*67e74705SXin Li             unsigned char __c) __constant(__c);
5281*67e74705SXin Li 
5282*67e74705SXin Li extern __ATTRS_o vector signed int
5283*67e74705SXin Li vec_rl_mask(vector signed int __a, vector unsigned int __b,
5284*67e74705SXin Li             unsigned char __c) __constant(__c);
5285*67e74705SXin Li 
5286*67e74705SXin Li extern __ATTRS_o vector unsigned int
5287*67e74705SXin Li vec_rl_mask(vector unsigned int __a, vector unsigned int __b,
5288*67e74705SXin Li             unsigned char __c) __constant(__c);
5289*67e74705SXin Li 
5290*67e74705SXin Li extern __ATTRS_o vector signed long long
5291*67e74705SXin Li vec_rl_mask(vector signed long long __a, vector unsigned long long __b,
5292*67e74705SXin Li             unsigned char __c) __constant(__c);
5293*67e74705SXin Li 
5294*67e74705SXin Li extern __ATTRS_o vector unsigned long long
5295*67e74705SXin Li vec_rl_mask(vector unsigned long long __a, vector unsigned long long __b,
5296*67e74705SXin Li             unsigned char __c) __constant(__c);
5297*67e74705SXin Li 
5298*67e74705SXin Li #define vec_rl_mask(X, Y, Z) ((__typeof__((vec_rl_mask)((X), (Y), (Z)))) \
5299*67e74705SXin Li   __extension__ ({ \
5300*67e74705SXin Li     vector unsigned char __res; \
5301*67e74705SXin Li     vector unsigned char __x = (vector unsigned char)(X); \
5302*67e74705SXin Li     vector unsigned char __y = (vector unsigned char)(Y); \
5303*67e74705SXin Li     switch (sizeof ((X)[0])) { \
5304*67e74705SXin Li     case 1: __res = (vector unsigned char) __builtin_s390_verimb( \
5305*67e74705SXin Li              (vector unsigned char)__x, (vector unsigned char)__x, \
5306*67e74705SXin Li              (vector unsigned char)__y, (Z)); break; \
5307*67e74705SXin Li     case 2: __res = (vector unsigned char) __builtin_s390_verimh( \
5308*67e74705SXin Li              (vector unsigned short)__x, (vector unsigned short)__x, \
5309*67e74705SXin Li              (vector unsigned short)__y, (Z)); break; \
5310*67e74705SXin Li     case 4: __res = (vector unsigned char) __builtin_s390_verimf( \
5311*67e74705SXin Li              (vector unsigned int)__x, (vector unsigned int)__x, \
5312*67e74705SXin Li              (vector unsigned int)__y, (Z)); break; \
5313*67e74705SXin Li     default: __res = (vector unsigned char) __builtin_s390_verimg( \
5314*67e74705SXin Li              (vector unsigned long long)__x, (vector unsigned long long)__x, \
5315*67e74705SXin Li              (vector unsigned long long)__y, (Z)); break; \
5316*67e74705SXin Li     } __res; }))
5317*67e74705SXin Li 
5318*67e74705SXin Li /*-- vec_sll ----------------------------------------------------------------*/
5319*67e74705SXin Li 
5320*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_sll(vector signed char __a,vector unsigned char __b)5321*67e74705SXin Li vec_sll(vector signed char __a, vector unsigned char __b) {
5322*67e74705SXin Li   return (vector signed char)__builtin_s390_vsl(
5323*67e74705SXin Li     (vector unsigned char)__a, __b);
5324*67e74705SXin Li }
5325*67e74705SXin Li 
5326*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_sll(vector signed char __a,vector unsigned short __b)5327*67e74705SXin Li vec_sll(vector signed char __a, vector unsigned short __b) {
5328*67e74705SXin Li   return (vector signed char)__builtin_s390_vsl(
5329*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5330*67e74705SXin Li }
5331*67e74705SXin Li 
5332*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_sll(vector signed char __a,vector unsigned int __b)5333*67e74705SXin Li vec_sll(vector signed char __a, vector unsigned int __b) {
5334*67e74705SXin Li   return (vector signed char)__builtin_s390_vsl(
5335*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5336*67e74705SXin Li }
5337*67e74705SXin Li 
5338*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_sll(vector bool char __a,vector unsigned char __b)5339*67e74705SXin Li vec_sll(vector bool char __a, vector unsigned char __b) {
5340*67e74705SXin Li   return (vector bool char)__builtin_s390_vsl(
5341*67e74705SXin Li     (vector unsigned char)__a, __b);
5342*67e74705SXin Li }
5343*67e74705SXin Li 
5344*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_sll(vector bool char __a,vector unsigned short __b)5345*67e74705SXin Li vec_sll(vector bool char __a, vector unsigned short __b) {
5346*67e74705SXin Li   return (vector bool char)__builtin_s390_vsl(
5347*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5348*67e74705SXin Li }
5349*67e74705SXin Li 
5350*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_sll(vector bool char __a,vector unsigned int __b)5351*67e74705SXin Li vec_sll(vector bool char __a, vector unsigned int __b) {
5352*67e74705SXin Li   return (vector bool char)__builtin_s390_vsl(
5353*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5354*67e74705SXin Li }
5355*67e74705SXin Li 
5356*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_sll(vector unsigned char __a,vector unsigned char __b)5357*67e74705SXin Li vec_sll(vector unsigned char __a, vector unsigned char __b) {
5358*67e74705SXin Li   return __builtin_s390_vsl(__a, __b);
5359*67e74705SXin Li }
5360*67e74705SXin Li 
5361*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_sll(vector unsigned char __a,vector unsigned short __b)5362*67e74705SXin Li vec_sll(vector unsigned char __a, vector unsigned short __b) {
5363*67e74705SXin Li   return __builtin_s390_vsl(__a, (vector unsigned char)__b);
5364*67e74705SXin Li }
5365*67e74705SXin Li 
5366*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_sll(vector unsigned char __a,vector unsigned int __b)5367*67e74705SXin Li vec_sll(vector unsigned char __a, vector unsigned int __b) {
5368*67e74705SXin Li   return __builtin_s390_vsl(__a, (vector unsigned char)__b);
5369*67e74705SXin Li }
5370*67e74705SXin Li 
5371*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_sll(vector signed short __a,vector unsigned char __b)5372*67e74705SXin Li vec_sll(vector signed short __a, vector unsigned char __b) {
5373*67e74705SXin Li   return (vector signed short)__builtin_s390_vsl(
5374*67e74705SXin Li     (vector unsigned char)__a, __b);
5375*67e74705SXin Li }
5376*67e74705SXin Li 
5377*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_sll(vector signed short __a,vector unsigned short __b)5378*67e74705SXin Li vec_sll(vector signed short __a, vector unsigned short __b) {
5379*67e74705SXin Li   return (vector signed short)__builtin_s390_vsl(
5380*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5381*67e74705SXin Li }
5382*67e74705SXin Li 
5383*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_sll(vector signed short __a,vector unsigned int __b)5384*67e74705SXin Li vec_sll(vector signed short __a, vector unsigned int __b) {
5385*67e74705SXin Li   return (vector signed short)__builtin_s390_vsl(
5386*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5387*67e74705SXin Li }
5388*67e74705SXin Li 
5389*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_sll(vector bool short __a,vector unsigned char __b)5390*67e74705SXin Li vec_sll(vector bool short __a, vector unsigned char __b) {
5391*67e74705SXin Li   return (vector bool short)__builtin_s390_vsl(
5392*67e74705SXin Li     (vector unsigned char)__a, __b);
5393*67e74705SXin Li }
5394*67e74705SXin Li 
5395*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_sll(vector bool short __a,vector unsigned short __b)5396*67e74705SXin Li vec_sll(vector bool short __a, vector unsigned short __b) {
5397*67e74705SXin Li   return (vector bool short)__builtin_s390_vsl(
5398*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5399*67e74705SXin Li }
5400*67e74705SXin Li 
5401*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_sll(vector bool short __a,vector unsigned int __b)5402*67e74705SXin Li vec_sll(vector bool short __a, vector unsigned int __b) {
5403*67e74705SXin Li   return (vector bool short)__builtin_s390_vsl(
5404*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5405*67e74705SXin Li }
5406*67e74705SXin Li 
5407*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_sll(vector unsigned short __a,vector unsigned char __b)5408*67e74705SXin Li vec_sll(vector unsigned short __a, vector unsigned char __b) {
5409*67e74705SXin Li   return (vector unsigned short)__builtin_s390_vsl(
5410*67e74705SXin Li     (vector unsigned char)__a, __b);
5411*67e74705SXin Li }
5412*67e74705SXin Li 
5413*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_sll(vector unsigned short __a,vector unsigned short __b)5414*67e74705SXin Li vec_sll(vector unsigned short __a, vector unsigned short __b) {
5415*67e74705SXin Li   return (vector unsigned short)__builtin_s390_vsl(
5416*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5417*67e74705SXin Li }
5418*67e74705SXin Li 
5419*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_sll(vector unsigned short __a,vector unsigned int __b)5420*67e74705SXin Li vec_sll(vector unsigned short __a, vector unsigned int __b) {
5421*67e74705SXin Li   return (vector unsigned short)__builtin_s390_vsl(
5422*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5423*67e74705SXin Li }
5424*67e74705SXin Li 
5425*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_sll(vector signed int __a,vector unsigned char __b)5426*67e74705SXin Li vec_sll(vector signed int __a, vector unsigned char __b) {
5427*67e74705SXin Li   return (vector signed int)__builtin_s390_vsl(
5428*67e74705SXin Li     (vector unsigned char)__a, __b);
5429*67e74705SXin Li }
5430*67e74705SXin Li 
5431*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_sll(vector signed int __a,vector unsigned short __b)5432*67e74705SXin Li vec_sll(vector signed int __a, vector unsigned short __b) {
5433*67e74705SXin Li   return (vector signed int)__builtin_s390_vsl(
5434*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5435*67e74705SXin Li }
5436*67e74705SXin Li 
5437*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_sll(vector signed int __a,vector unsigned int __b)5438*67e74705SXin Li vec_sll(vector signed int __a, vector unsigned int __b) {
5439*67e74705SXin Li   return (vector signed int)__builtin_s390_vsl(
5440*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5441*67e74705SXin Li }
5442*67e74705SXin Li 
5443*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_sll(vector bool int __a,vector unsigned char __b)5444*67e74705SXin Li vec_sll(vector bool int __a, vector unsigned char __b) {
5445*67e74705SXin Li   return (vector bool int)__builtin_s390_vsl(
5446*67e74705SXin Li     (vector unsigned char)__a, __b);
5447*67e74705SXin Li }
5448*67e74705SXin Li 
5449*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_sll(vector bool int __a,vector unsigned short __b)5450*67e74705SXin Li vec_sll(vector bool int __a, vector unsigned short __b) {
5451*67e74705SXin Li   return (vector bool int)__builtin_s390_vsl(
5452*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5453*67e74705SXin Li }
5454*67e74705SXin Li 
5455*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_sll(vector bool int __a,vector unsigned int __b)5456*67e74705SXin Li vec_sll(vector bool int __a, vector unsigned int __b) {
5457*67e74705SXin Li   return (vector bool int)__builtin_s390_vsl(
5458*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5459*67e74705SXin Li }
5460*67e74705SXin Li 
5461*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_sll(vector unsigned int __a,vector unsigned char __b)5462*67e74705SXin Li vec_sll(vector unsigned int __a, vector unsigned char __b) {
5463*67e74705SXin Li   return (vector unsigned int)__builtin_s390_vsl(
5464*67e74705SXin Li     (vector unsigned char)__a, __b);
5465*67e74705SXin Li }
5466*67e74705SXin Li 
5467*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_sll(vector unsigned int __a,vector unsigned short __b)5468*67e74705SXin Li vec_sll(vector unsigned int __a, vector unsigned short __b) {
5469*67e74705SXin Li   return (vector unsigned int)__builtin_s390_vsl(
5470*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5471*67e74705SXin Li }
5472*67e74705SXin Li 
5473*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_sll(vector unsigned int __a,vector unsigned int __b)5474*67e74705SXin Li vec_sll(vector unsigned int __a, vector unsigned int __b) {
5475*67e74705SXin Li   return (vector unsigned int)__builtin_s390_vsl(
5476*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5477*67e74705SXin Li }
5478*67e74705SXin Li 
5479*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_sll(vector signed long long __a,vector unsigned char __b)5480*67e74705SXin Li vec_sll(vector signed long long __a, vector unsigned char __b) {
5481*67e74705SXin Li   return (vector signed long long)__builtin_s390_vsl(
5482*67e74705SXin Li     (vector unsigned char)__a, __b);
5483*67e74705SXin Li }
5484*67e74705SXin Li 
5485*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_sll(vector signed long long __a,vector unsigned short __b)5486*67e74705SXin Li vec_sll(vector signed long long __a, vector unsigned short __b) {
5487*67e74705SXin Li   return (vector signed long long)__builtin_s390_vsl(
5488*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5489*67e74705SXin Li }
5490*67e74705SXin Li 
5491*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_sll(vector signed long long __a,vector unsigned int __b)5492*67e74705SXin Li vec_sll(vector signed long long __a, vector unsigned int __b) {
5493*67e74705SXin Li   return (vector signed long long)__builtin_s390_vsl(
5494*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5495*67e74705SXin Li }
5496*67e74705SXin Li 
5497*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_sll(vector bool long long __a,vector unsigned char __b)5498*67e74705SXin Li vec_sll(vector bool long long __a, vector unsigned char __b) {
5499*67e74705SXin Li   return (vector bool long long)__builtin_s390_vsl(
5500*67e74705SXin Li     (vector unsigned char)__a, __b);
5501*67e74705SXin Li }
5502*67e74705SXin Li 
5503*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_sll(vector bool long long __a,vector unsigned short __b)5504*67e74705SXin Li vec_sll(vector bool long long __a, vector unsigned short __b) {
5505*67e74705SXin Li   return (vector bool long long)__builtin_s390_vsl(
5506*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5507*67e74705SXin Li }
5508*67e74705SXin Li 
5509*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_sll(vector bool long long __a,vector unsigned int __b)5510*67e74705SXin Li vec_sll(vector bool long long __a, vector unsigned int __b) {
5511*67e74705SXin Li   return (vector bool long long)__builtin_s390_vsl(
5512*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5513*67e74705SXin Li }
5514*67e74705SXin Li 
5515*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_sll(vector unsigned long long __a,vector unsigned char __b)5516*67e74705SXin Li vec_sll(vector unsigned long long __a, vector unsigned char __b) {
5517*67e74705SXin Li   return (vector unsigned long long)__builtin_s390_vsl(
5518*67e74705SXin Li     (vector unsigned char)__a, __b);
5519*67e74705SXin Li }
5520*67e74705SXin Li 
5521*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_sll(vector unsigned long long __a,vector unsigned short __b)5522*67e74705SXin Li vec_sll(vector unsigned long long __a, vector unsigned short __b) {
5523*67e74705SXin Li   return (vector unsigned long long)__builtin_s390_vsl(
5524*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5525*67e74705SXin Li }
5526*67e74705SXin Li 
5527*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_sll(vector unsigned long long __a,vector unsigned int __b)5528*67e74705SXin Li vec_sll(vector unsigned long long __a, vector unsigned int __b) {
5529*67e74705SXin Li   return (vector unsigned long long)__builtin_s390_vsl(
5530*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5531*67e74705SXin Li }
5532*67e74705SXin Li 
5533*67e74705SXin Li /*-- vec_slb ----------------------------------------------------------------*/
5534*67e74705SXin Li 
5535*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_slb(vector signed char __a,vector signed char __b)5536*67e74705SXin Li vec_slb(vector signed char __a, vector signed char __b) {
5537*67e74705SXin Li   return (vector signed char)__builtin_s390_vslb(
5538*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5539*67e74705SXin Li }
5540*67e74705SXin Li 
5541*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_slb(vector signed char __a,vector unsigned char __b)5542*67e74705SXin Li vec_slb(vector signed char __a, vector unsigned char __b) {
5543*67e74705SXin Li   return (vector signed char)__builtin_s390_vslb(
5544*67e74705SXin Li     (vector unsigned char)__a, __b);
5545*67e74705SXin Li }
5546*67e74705SXin Li 
5547*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_slb(vector unsigned char __a,vector signed char __b)5548*67e74705SXin Li vec_slb(vector unsigned char __a, vector signed char __b) {
5549*67e74705SXin Li   return __builtin_s390_vslb(__a, (vector unsigned char)__b);
5550*67e74705SXin Li }
5551*67e74705SXin Li 
5552*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_slb(vector unsigned char __a,vector unsigned char __b)5553*67e74705SXin Li vec_slb(vector unsigned char __a, vector unsigned char __b) {
5554*67e74705SXin Li   return __builtin_s390_vslb(__a, __b);
5555*67e74705SXin Li }
5556*67e74705SXin Li 
5557*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_slb(vector signed short __a,vector signed short __b)5558*67e74705SXin Li vec_slb(vector signed short __a, vector signed short __b) {
5559*67e74705SXin Li   return (vector signed short)__builtin_s390_vslb(
5560*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5561*67e74705SXin Li }
5562*67e74705SXin Li 
5563*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_slb(vector signed short __a,vector unsigned short __b)5564*67e74705SXin Li vec_slb(vector signed short __a, vector unsigned short __b) {
5565*67e74705SXin Li   return (vector signed short)__builtin_s390_vslb(
5566*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5567*67e74705SXin Li }
5568*67e74705SXin Li 
5569*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_slb(vector unsigned short __a,vector signed short __b)5570*67e74705SXin Li vec_slb(vector unsigned short __a, vector signed short __b) {
5571*67e74705SXin Li   return (vector unsigned short)__builtin_s390_vslb(
5572*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5573*67e74705SXin Li }
5574*67e74705SXin Li 
5575*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_slb(vector unsigned short __a,vector unsigned short __b)5576*67e74705SXin Li vec_slb(vector unsigned short __a, vector unsigned short __b) {
5577*67e74705SXin Li   return (vector unsigned short)__builtin_s390_vslb(
5578*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5579*67e74705SXin Li }
5580*67e74705SXin Li 
5581*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_slb(vector signed int __a,vector signed int __b)5582*67e74705SXin Li vec_slb(vector signed int __a, vector signed int __b) {
5583*67e74705SXin Li   return (vector signed int)__builtin_s390_vslb(
5584*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5585*67e74705SXin Li }
5586*67e74705SXin Li 
5587*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_slb(vector signed int __a,vector unsigned int __b)5588*67e74705SXin Li vec_slb(vector signed int __a, vector unsigned int __b) {
5589*67e74705SXin Li   return (vector signed int)__builtin_s390_vslb(
5590*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5591*67e74705SXin Li }
5592*67e74705SXin Li 
5593*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_slb(vector unsigned int __a,vector signed int __b)5594*67e74705SXin Li vec_slb(vector unsigned int __a, vector signed int __b) {
5595*67e74705SXin Li   return (vector unsigned int)__builtin_s390_vslb(
5596*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5597*67e74705SXin Li }
5598*67e74705SXin Li 
5599*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_slb(vector unsigned int __a,vector unsigned int __b)5600*67e74705SXin Li vec_slb(vector unsigned int __a, vector unsigned int __b) {
5601*67e74705SXin Li   return (vector unsigned int)__builtin_s390_vslb(
5602*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5603*67e74705SXin Li }
5604*67e74705SXin Li 
5605*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_slb(vector signed long long __a,vector signed long long __b)5606*67e74705SXin Li vec_slb(vector signed long long __a, vector signed long long __b) {
5607*67e74705SXin Li   return (vector signed long long)__builtin_s390_vslb(
5608*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5609*67e74705SXin Li }
5610*67e74705SXin Li 
5611*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_slb(vector signed long long __a,vector unsigned long long __b)5612*67e74705SXin Li vec_slb(vector signed long long __a, vector unsigned long long __b) {
5613*67e74705SXin Li   return (vector signed long long)__builtin_s390_vslb(
5614*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5615*67e74705SXin Li }
5616*67e74705SXin Li 
5617*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_slb(vector unsigned long long __a,vector signed long long __b)5618*67e74705SXin Li vec_slb(vector unsigned long long __a, vector signed long long __b) {
5619*67e74705SXin Li   return (vector unsigned long long)__builtin_s390_vslb(
5620*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5621*67e74705SXin Li }
5622*67e74705SXin Li 
5623*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_slb(vector unsigned long long __a,vector unsigned long long __b)5624*67e74705SXin Li vec_slb(vector unsigned long long __a, vector unsigned long long __b) {
5625*67e74705SXin Li   return (vector unsigned long long)__builtin_s390_vslb(
5626*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5627*67e74705SXin Li }
5628*67e74705SXin Li 
5629*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_slb(vector double __a,vector signed long long __b)5630*67e74705SXin Li vec_slb(vector double __a, vector signed long long __b) {
5631*67e74705SXin Li   return (vector double)__builtin_s390_vslb(
5632*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5633*67e74705SXin Li }
5634*67e74705SXin Li 
5635*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_slb(vector double __a,vector unsigned long long __b)5636*67e74705SXin Li vec_slb(vector double __a, vector unsigned long long __b) {
5637*67e74705SXin Li   return (vector double)__builtin_s390_vslb(
5638*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5639*67e74705SXin Li }
5640*67e74705SXin Li 
5641*67e74705SXin Li /*-- vec_sld ----------------------------------------------------------------*/
5642*67e74705SXin Li 
5643*67e74705SXin Li extern __ATTRS_o vector signed char
5644*67e74705SXin Li vec_sld(vector signed char __a, vector signed char __b, int __c)
5645*67e74705SXin Li   __constant_range(__c, 0, 15);
5646*67e74705SXin Li 
5647*67e74705SXin Li extern __ATTRS_o vector unsigned char
5648*67e74705SXin Li vec_sld(vector unsigned char __a, vector unsigned char __b, int __c)
5649*67e74705SXin Li   __constant_range(__c, 0, 15);
5650*67e74705SXin Li 
5651*67e74705SXin Li extern __ATTRS_o vector signed short
5652*67e74705SXin Li vec_sld(vector signed short __a, vector signed short __b, int __c)
5653*67e74705SXin Li   __constant_range(__c, 0, 15);
5654*67e74705SXin Li 
5655*67e74705SXin Li extern __ATTRS_o vector unsigned short
5656*67e74705SXin Li vec_sld(vector unsigned short __a, vector unsigned short __b, int __c)
5657*67e74705SXin Li   __constant_range(__c, 0, 15);
5658*67e74705SXin Li 
5659*67e74705SXin Li extern __ATTRS_o vector signed int
5660*67e74705SXin Li vec_sld(vector signed int __a, vector signed int __b, int __c)
5661*67e74705SXin Li   __constant_range(__c, 0, 15);
5662*67e74705SXin Li 
5663*67e74705SXin Li extern __ATTRS_o vector unsigned int
5664*67e74705SXin Li vec_sld(vector unsigned int __a, vector unsigned int __b, int __c)
5665*67e74705SXin Li   __constant_range(__c, 0, 15);
5666*67e74705SXin Li 
5667*67e74705SXin Li extern __ATTRS_o vector signed long long
5668*67e74705SXin Li vec_sld(vector signed long long __a, vector signed long long __b, int __c)
5669*67e74705SXin Li   __constant_range(__c, 0, 15);
5670*67e74705SXin Li 
5671*67e74705SXin Li extern __ATTRS_o vector unsigned long long
5672*67e74705SXin Li vec_sld(vector unsigned long long __a, vector unsigned long long __b, int __c)
5673*67e74705SXin Li   __constant_range(__c, 0, 15);
5674*67e74705SXin Li 
5675*67e74705SXin Li extern __ATTRS_o vector double
5676*67e74705SXin Li vec_sld(vector double __a, vector double __b, int __c)
5677*67e74705SXin Li   __constant_range(__c, 0, 15);
5678*67e74705SXin Li 
5679*67e74705SXin Li #define vec_sld(X, Y, Z) ((__typeof__((vec_sld)((X), (Y), (Z)))) \
5680*67e74705SXin Li   __builtin_s390_vsldb((vector unsigned char)(X), \
5681*67e74705SXin Li                        (vector unsigned char)(Y), (Z)))
5682*67e74705SXin Li 
5683*67e74705SXin Li /*-- vec_sldw ---------------------------------------------------------------*/
5684*67e74705SXin Li 
5685*67e74705SXin Li extern __ATTRS_o vector signed char
5686*67e74705SXin Li vec_sldw(vector signed char __a, vector signed char __b, int __c)
5687*67e74705SXin Li   __constant_range(__c, 0, 3);
5688*67e74705SXin Li 
5689*67e74705SXin Li extern __ATTRS_o vector unsigned char
5690*67e74705SXin Li vec_sldw(vector unsigned char __a, vector unsigned char __b, int __c)
5691*67e74705SXin Li   __constant_range(__c, 0, 3);
5692*67e74705SXin Li 
5693*67e74705SXin Li extern __ATTRS_o vector signed short
5694*67e74705SXin Li vec_sldw(vector signed short __a, vector signed short __b, int __c)
5695*67e74705SXin Li   __constant_range(__c, 0, 3);
5696*67e74705SXin Li 
5697*67e74705SXin Li extern __ATTRS_o vector unsigned short
5698*67e74705SXin Li vec_sldw(vector unsigned short __a, vector unsigned short __b, int __c)
5699*67e74705SXin Li   __constant_range(__c, 0, 3);
5700*67e74705SXin Li 
5701*67e74705SXin Li extern __ATTRS_o vector signed int
5702*67e74705SXin Li vec_sldw(vector signed int __a, vector signed int __b, int __c)
5703*67e74705SXin Li   __constant_range(__c, 0, 3);
5704*67e74705SXin Li 
5705*67e74705SXin Li extern __ATTRS_o vector unsigned int
5706*67e74705SXin Li vec_sldw(vector unsigned int __a, vector unsigned int __b, int __c)
5707*67e74705SXin Li   __constant_range(__c, 0, 3);
5708*67e74705SXin Li 
5709*67e74705SXin Li extern __ATTRS_o vector signed long long
5710*67e74705SXin Li vec_sldw(vector signed long long __a, vector signed long long __b, int __c)
5711*67e74705SXin Li   __constant_range(__c, 0, 3);
5712*67e74705SXin Li 
5713*67e74705SXin Li extern __ATTRS_o vector unsigned long long
5714*67e74705SXin Li vec_sldw(vector unsigned long long __a, vector unsigned long long __b, int __c)
5715*67e74705SXin Li   __constant_range(__c, 0, 3);
5716*67e74705SXin Li 
5717*67e74705SXin Li extern __ATTRS_o vector double
5718*67e74705SXin Li vec_sldw(vector double __a, vector double __b, int __c)
5719*67e74705SXin Li   __constant_range(__c, 0, 3);
5720*67e74705SXin Li 
5721*67e74705SXin Li #define vec_sldw(X, Y, Z) ((__typeof__((vec_sldw)((X), (Y), (Z)))) \
5722*67e74705SXin Li   __builtin_s390_vsldb((vector unsigned char)(X), \
5723*67e74705SXin Li                        (vector unsigned char)(Y), (Z) * 4))
5724*67e74705SXin Li 
5725*67e74705SXin Li /*-- vec_sral ---------------------------------------------------------------*/
5726*67e74705SXin Li 
5727*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_sral(vector signed char __a,vector unsigned char __b)5728*67e74705SXin Li vec_sral(vector signed char __a, vector unsigned char __b) {
5729*67e74705SXin Li   return (vector signed char)__builtin_s390_vsra(
5730*67e74705SXin Li     (vector unsigned char)__a, __b);
5731*67e74705SXin Li }
5732*67e74705SXin Li 
5733*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_sral(vector signed char __a,vector unsigned short __b)5734*67e74705SXin Li vec_sral(vector signed char __a, vector unsigned short __b) {
5735*67e74705SXin Li   return (vector signed char)__builtin_s390_vsra(
5736*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5737*67e74705SXin Li }
5738*67e74705SXin Li 
5739*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_sral(vector signed char __a,vector unsigned int __b)5740*67e74705SXin Li vec_sral(vector signed char __a, vector unsigned int __b) {
5741*67e74705SXin Li   return (vector signed char)__builtin_s390_vsra(
5742*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5743*67e74705SXin Li }
5744*67e74705SXin Li 
5745*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_sral(vector bool char __a,vector unsigned char __b)5746*67e74705SXin Li vec_sral(vector bool char __a, vector unsigned char __b) {
5747*67e74705SXin Li   return (vector bool char)__builtin_s390_vsra(
5748*67e74705SXin Li     (vector unsigned char)__a, __b);
5749*67e74705SXin Li }
5750*67e74705SXin Li 
5751*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_sral(vector bool char __a,vector unsigned short __b)5752*67e74705SXin Li vec_sral(vector bool char __a, vector unsigned short __b) {
5753*67e74705SXin Li   return (vector bool char)__builtin_s390_vsra(
5754*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5755*67e74705SXin Li }
5756*67e74705SXin Li 
5757*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_sral(vector bool char __a,vector unsigned int __b)5758*67e74705SXin Li vec_sral(vector bool char __a, vector unsigned int __b) {
5759*67e74705SXin Li   return (vector bool char)__builtin_s390_vsra(
5760*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5761*67e74705SXin Li }
5762*67e74705SXin Li 
5763*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_sral(vector unsigned char __a,vector unsigned char __b)5764*67e74705SXin Li vec_sral(vector unsigned char __a, vector unsigned char __b) {
5765*67e74705SXin Li   return __builtin_s390_vsra(__a, __b);
5766*67e74705SXin Li }
5767*67e74705SXin Li 
5768*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_sral(vector unsigned char __a,vector unsigned short __b)5769*67e74705SXin Li vec_sral(vector unsigned char __a, vector unsigned short __b) {
5770*67e74705SXin Li   return __builtin_s390_vsra(__a, (vector unsigned char)__b);
5771*67e74705SXin Li }
5772*67e74705SXin Li 
5773*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_sral(vector unsigned char __a,vector unsigned int __b)5774*67e74705SXin Li vec_sral(vector unsigned char __a, vector unsigned int __b) {
5775*67e74705SXin Li   return __builtin_s390_vsra(__a, (vector unsigned char)__b);
5776*67e74705SXin Li }
5777*67e74705SXin Li 
5778*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_sral(vector signed short __a,vector unsigned char __b)5779*67e74705SXin Li vec_sral(vector signed short __a, vector unsigned char __b) {
5780*67e74705SXin Li   return (vector signed short)__builtin_s390_vsra(
5781*67e74705SXin Li     (vector unsigned char)__a, __b);
5782*67e74705SXin Li }
5783*67e74705SXin Li 
5784*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_sral(vector signed short __a,vector unsigned short __b)5785*67e74705SXin Li vec_sral(vector signed short __a, vector unsigned short __b) {
5786*67e74705SXin Li   return (vector signed short)__builtin_s390_vsra(
5787*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5788*67e74705SXin Li }
5789*67e74705SXin Li 
5790*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_sral(vector signed short __a,vector unsigned int __b)5791*67e74705SXin Li vec_sral(vector signed short __a, vector unsigned int __b) {
5792*67e74705SXin Li   return (vector signed short)__builtin_s390_vsra(
5793*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5794*67e74705SXin Li }
5795*67e74705SXin Li 
5796*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_sral(vector bool short __a,vector unsigned char __b)5797*67e74705SXin Li vec_sral(vector bool short __a, vector unsigned char __b) {
5798*67e74705SXin Li   return (vector bool short)__builtin_s390_vsra(
5799*67e74705SXin Li     (vector unsigned char)__a, __b);
5800*67e74705SXin Li }
5801*67e74705SXin Li 
5802*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_sral(vector bool short __a,vector unsigned short __b)5803*67e74705SXin Li vec_sral(vector bool short __a, vector unsigned short __b) {
5804*67e74705SXin Li   return (vector bool short)__builtin_s390_vsra(
5805*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5806*67e74705SXin Li }
5807*67e74705SXin Li 
5808*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_sral(vector bool short __a,vector unsigned int __b)5809*67e74705SXin Li vec_sral(vector bool short __a, vector unsigned int __b) {
5810*67e74705SXin Li   return (vector bool short)__builtin_s390_vsra(
5811*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5812*67e74705SXin Li }
5813*67e74705SXin Li 
5814*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_sral(vector unsigned short __a,vector unsigned char __b)5815*67e74705SXin Li vec_sral(vector unsigned short __a, vector unsigned char __b) {
5816*67e74705SXin Li   return (vector unsigned short)__builtin_s390_vsra(
5817*67e74705SXin Li     (vector unsigned char)__a, __b);
5818*67e74705SXin Li }
5819*67e74705SXin Li 
5820*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_sral(vector unsigned short __a,vector unsigned short __b)5821*67e74705SXin Li vec_sral(vector unsigned short __a, vector unsigned short __b) {
5822*67e74705SXin Li   return (vector unsigned short)__builtin_s390_vsra(
5823*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5824*67e74705SXin Li }
5825*67e74705SXin Li 
5826*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_sral(vector unsigned short __a,vector unsigned int __b)5827*67e74705SXin Li vec_sral(vector unsigned short __a, vector unsigned int __b) {
5828*67e74705SXin Li   return (vector unsigned short)__builtin_s390_vsra(
5829*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5830*67e74705SXin Li }
5831*67e74705SXin Li 
5832*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_sral(vector signed int __a,vector unsigned char __b)5833*67e74705SXin Li vec_sral(vector signed int __a, vector unsigned char __b) {
5834*67e74705SXin Li   return (vector signed int)__builtin_s390_vsra(
5835*67e74705SXin Li     (vector unsigned char)__a, __b);
5836*67e74705SXin Li }
5837*67e74705SXin Li 
5838*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_sral(vector signed int __a,vector unsigned short __b)5839*67e74705SXin Li vec_sral(vector signed int __a, vector unsigned short __b) {
5840*67e74705SXin Li   return (vector signed int)__builtin_s390_vsra(
5841*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5842*67e74705SXin Li }
5843*67e74705SXin Li 
5844*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_sral(vector signed int __a,vector unsigned int __b)5845*67e74705SXin Li vec_sral(vector signed int __a, vector unsigned int __b) {
5846*67e74705SXin Li   return (vector signed int)__builtin_s390_vsra(
5847*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5848*67e74705SXin Li }
5849*67e74705SXin Li 
5850*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_sral(vector bool int __a,vector unsigned char __b)5851*67e74705SXin Li vec_sral(vector bool int __a, vector unsigned char __b) {
5852*67e74705SXin Li   return (vector bool int)__builtin_s390_vsra(
5853*67e74705SXin Li     (vector unsigned char)__a, __b);
5854*67e74705SXin Li }
5855*67e74705SXin Li 
5856*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_sral(vector bool int __a,vector unsigned short __b)5857*67e74705SXin Li vec_sral(vector bool int __a, vector unsigned short __b) {
5858*67e74705SXin Li   return (vector bool int)__builtin_s390_vsra(
5859*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5860*67e74705SXin Li }
5861*67e74705SXin Li 
5862*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_sral(vector bool int __a,vector unsigned int __b)5863*67e74705SXin Li vec_sral(vector bool int __a, vector unsigned int __b) {
5864*67e74705SXin Li   return (vector bool int)__builtin_s390_vsra(
5865*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5866*67e74705SXin Li }
5867*67e74705SXin Li 
5868*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_sral(vector unsigned int __a,vector unsigned char __b)5869*67e74705SXin Li vec_sral(vector unsigned int __a, vector unsigned char __b) {
5870*67e74705SXin Li   return (vector unsigned int)__builtin_s390_vsra(
5871*67e74705SXin Li     (vector unsigned char)__a, __b);
5872*67e74705SXin Li }
5873*67e74705SXin Li 
5874*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_sral(vector unsigned int __a,vector unsigned short __b)5875*67e74705SXin Li vec_sral(vector unsigned int __a, vector unsigned short __b) {
5876*67e74705SXin Li   return (vector unsigned int)__builtin_s390_vsra(
5877*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5878*67e74705SXin Li }
5879*67e74705SXin Li 
5880*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_sral(vector unsigned int __a,vector unsigned int __b)5881*67e74705SXin Li vec_sral(vector unsigned int __a, vector unsigned int __b) {
5882*67e74705SXin Li   return (vector unsigned int)__builtin_s390_vsra(
5883*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5884*67e74705SXin Li }
5885*67e74705SXin Li 
5886*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_sral(vector signed long long __a,vector unsigned char __b)5887*67e74705SXin Li vec_sral(vector signed long long __a, vector unsigned char __b) {
5888*67e74705SXin Li   return (vector signed long long)__builtin_s390_vsra(
5889*67e74705SXin Li     (vector unsigned char)__a, __b);
5890*67e74705SXin Li }
5891*67e74705SXin Li 
5892*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_sral(vector signed long long __a,vector unsigned short __b)5893*67e74705SXin Li vec_sral(vector signed long long __a, vector unsigned short __b) {
5894*67e74705SXin Li   return (vector signed long long)__builtin_s390_vsra(
5895*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5896*67e74705SXin Li }
5897*67e74705SXin Li 
5898*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_sral(vector signed long long __a,vector unsigned int __b)5899*67e74705SXin Li vec_sral(vector signed long long __a, vector unsigned int __b) {
5900*67e74705SXin Li   return (vector signed long long)__builtin_s390_vsra(
5901*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5902*67e74705SXin Li }
5903*67e74705SXin Li 
5904*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_sral(vector bool long long __a,vector unsigned char __b)5905*67e74705SXin Li vec_sral(vector bool long long __a, vector unsigned char __b) {
5906*67e74705SXin Li   return (vector bool long long)__builtin_s390_vsra(
5907*67e74705SXin Li     (vector unsigned char)__a, __b);
5908*67e74705SXin Li }
5909*67e74705SXin Li 
5910*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_sral(vector bool long long __a,vector unsigned short __b)5911*67e74705SXin Li vec_sral(vector bool long long __a, vector unsigned short __b) {
5912*67e74705SXin Li   return (vector bool long long)__builtin_s390_vsra(
5913*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5914*67e74705SXin Li }
5915*67e74705SXin Li 
5916*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_sral(vector bool long long __a,vector unsigned int __b)5917*67e74705SXin Li vec_sral(vector bool long long __a, vector unsigned int __b) {
5918*67e74705SXin Li   return (vector bool long long)__builtin_s390_vsra(
5919*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5920*67e74705SXin Li }
5921*67e74705SXin Li 
5922*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_sral(vector unsigned long long __a,vector unsigned char __b)5923*67e74705SXin Li vec_sral(vector unsigned long long __a, vector unsigned char __b) {
5924*67e74705SXin Li   return (vector unsigned long long)__builtin_s390_vsra(
5925*67e74705SXin Li     (vector unsigned char)__a, __b);
5926*67e74705SXin Li }
5927*67e74705SXin Li 
5928*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_sral(vector unsigned long long __a,vector unsigned short __b)5929*67e74705SXin Li vec_sral(vector unsigned long long __a, vector unsigned short __b) {
5930*67e74705SXin Li   return (vector unsigned long long)__builtin_s390_vsra(
5931*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5932*67e74705SXin Li }
5933*67e74705SXin Li 
5934*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_sral(vector unsigned long long __a,vector unsigned int __b)5935*67e74705SXin Li vec_sral(vector unsigned long long __a, vector unsigned int __b) {
5936*67e74705SXin Li   return (vector unsigned long long)__builtin_s390_vsra(
5937*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5938*67e74705SXin Li }
5939*67e74705SXin Li 
5940*67e74705SXin Li /*-- vec_srab ---------------------------------------------------------------*/
5941*67e74705SXin Li 
5942*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_srab(vector signed char __a,vector signed char __b)5943*67e74705SXin Li vec_srab(vector signed char __a, vector signed char __b) {
5944*67e74705SXin Li   return (vector signed char)__builtin_s390_vsrab(
5945*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5946*67e74705SXin Li }
5947*67e74705SXin Li 
5948*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_srab(vector signed char __a,vector unsigned char __b)5949*67e74705SXin Li vec_srab(vector signed char __a, vector unsigned char __b) {
5950*67e74705SXin Li   return (vector signed char)__builtin_s390_vsrab(
5951*67e74705SXin Li     (vector unsigned char)__a, __b);
5952*67e74705SXin Li }
5953*67e74705SXin Li 
5954*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_srab(vector unsigned char __a,vector signed char __b)5955*67e74705SXin Li vec_srab(vector unsigned char __a, vector signed char __b) {
5956*67e74705SXin Li   return __builtin_s390_vsrab(__a, (vector unsigned char)__b);
5957*67e74705SXin Li }
5958*67e74705SXin Li 
5959*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_srab(vector unsigned char __a,vector unsigned char __b)5960*67e74705SXin Li vec_srab(vector unsigned char __a, vector unsigned char __b) {
5961*67e74705SXin Li   return __builtin_s390_vsrab(__a, __b);
5962*67e74705SXin Li }
5963*67e74705SXin Li 
5964*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_srab(vector signed short __a,vector signed short __b)5965*67e74705SXin Li vec_srab(vector signed short __a, vector signed short __b) {
5966*67e74705SXin Li   return (vector signed short)__builtin_s390_vsrab(
5967*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5968*67e74705SXin Li }
5969*67e74705SXin Li 
5970*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_srab(vector signed short __a,vector unsigned short __b)5971*67e74705SXin Li vec_srab(vector signed short __a, vector unsigned short __b) {
5972*67e74705SXin Li   return (vector signed short)__builtin_s390_vsrab(
5973*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5974*67e74705SXin Li }
5975*67e74705SXin Li 
5976*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_srab(vector unsigned short __a,vector signed short __b)5977*67e74705SXin Li vec_srab(vector unsigned short __a, vector signed short __b) {
5978*67e74705SXin Li   return (vector unsigned short)__builtin_s390_vsrab(
5979*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5980*67e74705SXin Li }
5981*67e74705SXin Li 
5982*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_srab(vector unsigned short __a,vector unsigned short __b)5983*67e74705SXin Li vec_srab(vector unsigned short __a, vector unsigned short __b) {
5984*67e74705SXin Li   return (vector unsigned short)__builtin_s390_vsrab(
5985*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5986*67e74705SXin Li }
5987*67e74705SXin Li 
5988*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_srab(vector signed int __a,vector signed int __b)5989*67e74705SXin Li vec_srab(vector signed int __a, vector signed int __b) {
5990*67e74705SXin Li   return (vector signed int)__builtin_s390_vsrab(
5991*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5992*67e74705SXin Li }
5993*67e74705SXin Li 
5994*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_srab(vector signed int __a,vector unsigned int __b)5995*67e74705SXin Li vec_srab(vector signed int __a, vector unsigned int __b) {
5996*67e74705SXin Li   return (vector signed int)__builtin_s390_vsrab(
5997*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
5998*67e74705SXin Li }
5999*67e74705SXin Li 
6000*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_srab(vector unsigned int __a,vector signed int __b)6001*67e74705SXin Li vec_srab(vector unsigned int __a, vector signed int __b) {
6002*67e74705SXin Li   return (vector unsigned int)__builtin_s390_vsrab(
6003*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6004*67e74705SXin Li }
6005*67e74705SXin Li 
6006*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_srab(vector unsigned int __a,vector unsigned int __b)6007*67e74705SXin Li vec_srab(vector unsigned int __a, vector unsigned int __b) {
6008*67e74705SXin Li   return (vector unsigned int)__builtin_s390_vsrab(
6009*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6010*67e74705SXin Li }
6011*67e74705SXin Li 
6012*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_srab(vector signed long long __a,vector signed long long __b)6013*67e74705SXin Li vec_srab(vector signed long long __a, vector signed long long __b) {
6014*67e74705SXin Li   return (vector signed long long)__builtin_s390_vsrab(
6015*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6016*67e74705SXin Li }
6017*67e74705SXin Li 
6018*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_srab(vector signed long long __a,vector unsigned long long __b)6019*67e74705SXin Li vec_srab(vector signed long long __a, vector unsigned long long __b) {
6020*67e74705SXin Li   return (vector signed long long)__builtin_s390_vsrab(
6021*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6022*67e74705SXin Li }
6023*67e74705SXin Li 
6024*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_srab(vector unsigned long long __a,vector signed long long __b)6025*67e74705SXin Li vec_srab(vector unsigned long long __a, vector signed long long __b) {
6026*67e74705SXin Li   return (vector unsigned long long)__builtin_s390_vsrab(
6027*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6028*67e74705SXin Li }
6029*67e74705SXin Li 
6030*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_srab(vector unsigned long long __a,vector unsigned long long __b)6031*67e74705SXin Li vec_srab(vector unsigned long long __a, vector unsigned long long __b) {
6032*67e74705SXin Li   return (vector unsigned long long)__builtin_s390_vsrab(
6033*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6034*67e74705SXin Li }
6035*67e74705SXin Li 
6036*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_srab(vector double __a,vector signed long long __b)6037*67e74705SXin Li vec_srab(vector double __a, vector signed long long __b) {
6038*67e74705SXin Li   return (vector double)__builtin_s390_vsrab(
6039*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6040*67e74705SXin Li }
6041*67e74705SXin Li 
6042*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_srab(vector double __a,vector unsigned long long __b)6043*67e74705SXin Li vec_srab(vector double __a, vector unsigned long long __b) {
6044*67e74705SXin Li   return (vector double)__builtin_s390_vsrab(
6045*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6046*67e74705SXin Li }
6047*67e74705SXin Li 
6048*67e74705SXin Li /*-- vec_srl ----------------------------------------------------------------*/
6049*67e74705SXin Li 
6050*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_srl(vector signed char __a,vector unsigned char __b)6051*67e74705SXin Li vec_srl(vector signed char __a, vector unsigned char __b) {
6052*67e74705SXin Li   return (vector signed char)__builtin_s390_vsrl(
6053*67e74705SXin Li     (vector unsigned char)__a, __b);
6054*67e74705SXin Li }
6055*67e74705SXin Li 
6056*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_srl(vector signed char __a,vector unsigned short __b)6057*67e74705SXin Li vec_srl(vector signed char __a, vector unsigned short __b) {
6058*67e74705SXin Li   return (vector signed char)__builtin_s390_vsrl(
6059*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6060*67e74705SXin Li }
6061*67e74705SXin Li 
6062*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_srl(vector signed char __a,vector unsigned int __b)6063*67e74705SXin Li vec_srl(vector signed char __a, vector unsigned int __b) {
6064*67e74705SXin Li   return (vector signed char)__builtin_s390_vsrl(
6065*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6066*67e74705SXin Li }
6067*67e74705SXin Li 
6068*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_srl(vector bool char __a,vector unsigned char __b)6069*67e74705SXin Li vec_srl(vector bool char __a, vector unsigned char __b) {
6070*67e74705SXin Li   return (vector bool char)__builtin_s390_vsrl(
6071*67e74705SXin Li     (vector unsigned char)__a, __b);
6072*67e74705SXin Li }
6073*67e74705SXin Li 
6074*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_srl(vector bool char __a,vector unsigned short __b)6075*67e74705SXin Li vec_srl(vector bool char __a, vector unsigned short __b) {
6076*67e74705SXin Li   return (vector bool char)__builtin_s390_vsrl(
6077*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6078*67e74705SXin Li }
6079*67e74705SXin Li 
6080*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_srl(vector bool char __a,vector unsigned int __b)6081*67e74705SXin Li vec_srl(vector bool char __a, vector unsigned int __b) {
6082*67e74705SXin Li   return (vector bool char)__builtin_s390_vsrl(
6083*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6084*67e74705SXin Li }
6085*67e74705SXin Li 
6086*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_srl(vector unsigned char __a,vector unsigned char __b)6087*67e74705SXin Li vec_srl(vector unsigned char __a, vector unsigned char __b) {
6088*67e74705SXin Li   return __builtin_s390_vsrl(__a, __b);
6089*67e74705SXin Li }
6090*67e74705SXin Li 
6091*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_srl(vector unsigned char __a,vector unsigned short __b)6092*67e74705SXin Li vec_srl(vector unsigned char __a, vector unsigned short __b) {
6093*67e74705SXin Li   return __builtin_s390_vsrl(__a, (vector unsigned char)__b);
6094*67e74705SXin Li }
6095*67e74705SXin Li 
6096*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_srl(vector unsigned char __a,vector unsigned int __b)6097*67e74705SXin Li vec_srl(vector unsigned char __a, vector unsigned int __b) {
6098*67e74705SXin Li   return __builtin_s390_vsrl(__a, (vector unsigned char)__b);
6099*67e74705SXin Li }
6100*67e74705SXin Li 
6101*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_srl(vector signed short __a,vector unsigned char __b)6102*67e74705SXin Li vec_srl(vector signed short __a, vector unsigned char __b) {
6103*67e74705SXin Li   return (vector signed short)__builtin_s390_vsrl(
6104*67e74705SXin Li     (vector unsigned char)__a, __b);
6105*67e74705SXin Li }
6106*67e74705SXin Li 
6107*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_srl(vector signed short __a,vector unsigned short __b)6108*67e74705SXin Li vec_srl(vector signed short __a, vector unsigned short __b) {
6109*67e74705SXin Li   return (vector signed short)__builtin_s390_vsrl(
6110*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6111*67e74705SXin Li }
6112*67e74705SXin Li 
6113*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_srl(vector signed short __a,vector unsigned int __b)6114*67e74705SXin Li vec_srl(vector signed short __a, vector unsigned int __b) {
6115*67e74705SXin Li   return (vector signed short)__builtin_s390_vsrl(
6116*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6117*67e74705SXin Li }
6118*67e74705SXin Li 
6119*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_srl(vector bool short __a,vector unsigned char __b)6120*67e74705SXin Li vec_srl(vector bool short __a, vector unsigned char __b) {
6121*67e74705SXin Li   return (vector bool short)__builtin_s390_vsrl(
6122*67e74705SXin Li     (vector unsigned char)__a, __b);
6123*67e74705SXin Li }
6124*67e74705SXin Li 
6125*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_srl(vector bool short __a,vector unsigned short __b)6126*67e74705SXin Li vec_srl(vector bool short __a, vector unsigned short __b) {
6127*67e74705SXin Li   return (vector bool short)__builtin_s390_vsrl(
6128*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6129*67e74705SXin Li }
6130*67e74705SXin Li 
6131*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_srl(vector bool short __a,vector unsigned int __b)6132*67e74705SXin Li vec_srl(vector bool short __a, vector unsigned int __b) {
6133*67e74705SXin Li   return (vector bool short)__builtin_s390_vsrl(
6134*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6135*67e74705SXin Li }
6136*67e74705SXin Li 
6137*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_srl(vector unsigned short __a,vector unsigned char __b)6138*67e74705SXin Li vec_srl(vector unsigned short __a, vector unsigned char __b) {
6139*67e74705SXin Li   return (vector unsigned short)__builtin_s390_vsrl(
6140*67e74705SXin Li     (vector unsigned char)__a, __b);
6141*67e74705SXin Li }
6142*67e74705SXin Li 
6143*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_srl(vector unsigned short __a,vector unsigned short __b)6144*67e74705SXin Li vec_srl(vector unsigned short __a, vector unsigned short __b) {
6145*67e74705SXin Li   return (vector unsigned short)__builtin_s390_vsrl(
6146*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6147*67e74705SXin Li }
6148*67e74705SXin Li 
6149*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_srl(vector unsigned short __a,vector unsigned int __b)6150*67e74705SXin Li vec_srl(vector unsigned short __a, vector unsigned int __b) {
6151*67e74705SXin Li   return (vector unsigned short)__builtin_s390_vsrl(
6152*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6153*67e74705SXin Li }
6154*67e74705SXin Li 
6155*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_srl(vector signed int __a,vector unsigned char __b)6156*67e74705SXin Li vec_srl(vector signed int __a, vector unsigned char __b) {
6157*67e74705SXin Li   return (vector signed int)__builtin_s390_vsrl(
6158*67e74705SXin Li     (vector unsigned char)__a, __b);
6159*67e74705SXin Li }
6160*67e74705SXin Li 
6161*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_srl(vector signed int __a,vector unsigned short __b)6162*67e74705SXin Li vec_srl(vector signed int __a, vector unsigned short __b) {
6163*67e74705SXin Li   return (vector signed int)__builtin_s390_vsrl(
6164*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6165*67e74705SXin Li }
6166*67e74705SXin Li 
6167*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_srl(vector signed int __a,vector unsigned int __b)6168*67e74705SXin Li vec_srl(vector signed int __a, vector unsigned int __b) {
6169*67e74705SXin Li   return (vector signed int)__builtin_s390_vsrl(
6170*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6171*67e74705SXin Li }
6172*67e74705SXin Li 
6173*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_srl(vector bool int __a,vector unsigned char __b)6174*67e74705SXin Li vec_srl(vector bool int __a, vector unsigned char __b) {
6175*67e74705SXin Li   return (vector bool int)__builtin_s390_vsrl(
6176*67e74705SXin Li     (vector unsigned char)__a, __b);
6177*67e74705SXin Li }
6178*67e74705SXin Li 
6179*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_srl(vector bool int __a,vector unsigned short __b)6180*67e74705SXin Li vec_srl(vector bool int __a, vector unsigned short __b) {
6181*67e74705SXin Li   return (vector bool int)__builtin_s390_vsrl(
6182*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6183*67e74705SXin Li }
6184*67e74705SXin Li 
6185*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_srl(vector bool int __a,vector unsigned int __b)6186*67e74705SXin Li vec_srl(vector bool int __a, vector unsigned int __b) {
6187*67e74705SXin Li   return (vector bool int)__builtin_s390_vsrl(
6188*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6189*67e74705SXin Li }
6190*67e74705SXin Li 
6191*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_srl(vector unsigned int __a,vector unsigned char __b)6192*67e74705SXin Li vec_srl(vector unsigned int __a, vector unsigned char __b) {
6193*67e74705SXin Li   return (vector unsigned int)__builtin_s390_vsrl(
6194*67e74705SXin Li     (vector unsigned char)__a, __b);
6195*67e74705SXin Li }
6196*67e74705SXin Li 
6197*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_srl(vector unsigned int __a,vector unsigned short __b)6198*67e74705SXin Li vec_srl(vector unsigned int __a, vector unsigned short __b) {
6199*67e74705SXin Li   return (vector unsigned int)__builtin_s390_vsrl(
6200*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6201*67e74705SXin Li }
6202*67e74705SXin Li 
6203*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_srl(vector unsigned int __a,vector unsigned int __b)6204*67e74705SXin Li vec_srl(vector unsigned int __a, vector unsigned int __b) {
6205*67e74705SXin Li   return (vector unsigned int)__builtin_s390_vsrl(
6206*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6207*67e74705SXin Li }
6208*67e74705SXin Li 
6209*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_srl(vector signed long long __a,vector unsigned char __b)6210*67e74705SXin Li vec_srl(vector signed long long __a, vector unsigned char __b) {
6211*67e74705SXin Li   return (vector signed long long)__builtin_s390_vsrl(
6212*67e74705SXin Li     (vector unsigned char)__a, __b);
6213*67e74705SXin Li }
6214*67e74705SXin Li 
6215*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_srl(vector signed long long __a,vector unsigned short __b)6216*67e74705SXin Li vec_srl(vector signed long long __a, vector unsigned short __b) {
6217*67e74705SXin Li   return (vector signed long long)__builtin_s390_vsrl(
6218*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6219*67e74705SXin Li }
6220*67e74705SXin Li 
6221*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_srl(vector signed long long __a,vector unsigned int __b)6222*67e74705SXin Li vec_srl(vector signed long long __a, vector unsigned int __b) {
6223*67e74705SXin Li   return (vector signed long long)__builtin_s390_vsrl(
6224*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6225*67e74705SXin Li }
6226*67e74705SXin Li 
6227*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_srl(vector bool long long __a,vector unsigned char __b)6228*67e74705SXin Li vec_srl(vector bool long long __a, vector unsigned char __b) {
6229*67e74705SXin Li   return (vector bool long long)__builtin_s390_vsrl(
6230*67e74705SXin Li     (vector unsigned char)__a, __b);
6231*67e74705SXin Li }
6232*67e74705SXin Li 
6233*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_srl(vector bool long long __a,vector unsigned short __b)6234*67e74705SXin Li vec_srl(vector bool long long __a, vector unsigned short __b) {
6235*67e74705SXin Li   return (vector bool long long)__builtin_s390_vsrl(
6236*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6237*67e74705SXin Li }
6238*67e74705SXin Li 
6239*67e74705SXin Li static inline __ATTRS_o_ai vector bool long long
vec_srl(vector bool long long __a,vector unsigned int __b)6240*67e74705SXin Li vec_srl(vector bool long long __a, vector unsigned int __b) {
6241*67e74705SXin Li   return (vector bool long long)__builtin_s390_vsrl(
6242*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6243*67e74705SXin Li }
6244*67e74705SXin Li 
6245*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_srl(vector unsigned long long __a,vector unsigned char __b)6246*67e74705SXin Li vec_srl(vector unsigned long long __a, vector unsigned char __b) {
6247*67e74705SXin Li   return (vector unsigned long long)__builtin_s390_vsrl(
6248*67e74705SXin Li     (vector unsigned char)__a, __b);
6249*67e74705SXin Li }
6250*67e74705SXin Li 
6251*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_srl(vector unsigned long long __a,vector unsigned short __b)6252*67e74705SXin Li vec_srl(vector unsigned long long __a, vector unsigned short __b) {
6253*67e74705SXin Li   return (vector unsigned long long)__builtin_s390_vsrl(
6254*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6255*67e74705SXin Li }
6256*67e74705SXin Li 
6257*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_srl(vector unsigned long long __a,vector unsigned int __b)6258*67e74705SXin Li vec_srl(vector unsigned long long __a, vector unsigned int __b) {
6259*67e74705SXin Li   return (vector unsigned long long)__builtin_s390_vsrl(
6260*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6261*67e74705SXin Li }
6262*67e74705SXin Li 
6263*67e74705SXin Li /*-- vec_srb ----------------------------------------------------------------*/
6264*67e74705SXin Li 
6265*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_srb(vector signed char __a,vector signed char __b)6266*67e74705SXin Li vec_srb(vector signed char __a, vector signed char __b) {
6267*67e74705SXin Li   return (vector signed char)__builtin_s390_vsrlb(
6268*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6269*67e74705SXin Li }
6270*67e74705SXin Li 
6271*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_srb(vector signed char __a,vector unsigned char __b)6272*67e74705SXin Li vec_srb(vector signed char __a, vector unsigned char __b) {
6273*67e74705SXin Li   return (vector signed char)__builtin_s390_vsrlb(
6274*67e74705SXin Li     (vector unsigned char)__a, __b);
6275*67e74705SXin Li }
6276*67e74705SXin Li 
6277*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_srb(vector unsigned char __a,vector signed char __b)6278*67e74705SXin Li vec_srb(vector unsigned char __a, vector signed char __b) {
6279*67e74705SXin Li   return __builtin_s390_vsrlb(__a, (vector unsigned char)__b);
6280*67e74705SXin Li }
6281*67e74705SXin Li 
6282*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_srb(vector unsigned char __a,vector unsigned char __b)6283*67e74705SXin Li vec_srb(vector unsigned char __a, vector unsigned char __b) {
6284*67e74705SXin Li   return __builtin_s390_vsrlb(__a, __b);
6285*67e74705SXin Li }
6286*67e74705SXin Li 
6287*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_srb(vector signed short __a,vector signed short __b)6288*67e74705SXin Li vec_srb(vector signed short __a, vector signed short __b) {
6289*67e74705SXin Li   return (vector signed short)__builtin_s390_vsrlb(
6290*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6291*67e74705SXin Li }
6292*67e74705SXin Li 
6293*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_srb(vector signed short __a,vector unsigned short __b)6294*67e74705SXin Li vec_srb(vector signed short __a, vector unsigned short __b) {
6295*67e74705SXin Li   return (vector signed short)__builtin_s390_vsrlb(
6296*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6297*67e74705SXin Li }
6298*67e74705SXin Li 
6299*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_srb(vector unsigned short __a,vector signed short __b)6300*67e74705SXin Li vec_srb(vector unsigned short __a, vector signed short __b) {
6301*67e74705SXin Li   return (vector unsigned short)__builtin_s390_vsrlb(
6302*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6303*67e74705SXin Li }
6304*67e74705SXin Li 
6305*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_srb(vector unsigned short __a,vector unsigned short __b)6306*67e74705SXin Li vec_srb(vector unsigned short __a, vector unsigned short __b) {
6307*67e74705SXin Li   return (vector unsigned short)__builtin_s390_vsrlb(
6308*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6309*67e74705SXin Li }
6310*67e74705SXin Li 
6311*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_srb(vector signed int __a,vector signed int __b)6312*67e74705SXin Li vec_srb(vector signed int __a, vector signed int __b) {
6313*67e74705SXin Li   return (vector signed int)__builtin_s390_vsrlb(
6314*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6315*67e74705SXin Li }
6316*67e74705SXin Li 
6317*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_srb(vector signed int __a,vector unsigned int __b)6318*67e74705SXin Li vec_srb(vector signed int __a, vector unsigned int __b) {
6319*67e74705SXin Li   return (vector signed int)__builtin_s390_vsrlb(
6320*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6321*67e74705SXin Li }
6322*67e74705SXin Li 
6323*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_srb(vector unsigned int __a,vector signed int __b)6324*67e74705SXin Li vec_srb(vector unsigned int __a, vector signed int __b) {
6325*67e74705SXin Li   return (vector unsigned int)__builtin_s390_vsrlb(
6326*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6327*67e74705SXin Li }
6328*67e74705SXin Li 
6329*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_srb(vector unsigned int __a,vector unsigned int __b)6330*67e74705SXin Li vec_srb(vector unsigned int __a, vector unsigned int __b) {
6331*67e74705SXin Li   return (vector unsigned int)__builtin_s390_vsrlb(
6332*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6333*67e74705SXin Li }
6334*67e74705SXin Li 
6335*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_srb(vector signed long long __a,vector signed long long __b)6336*67e74705SXin Li vec_srb(vector signed long long __a, vector signed long long __b) {
6337*67e74705SXin Li   return (vector signed long long)__builtin_s390_vsrlb(
6338*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6339*67e74705SXin Li }
6340*67e74705SXin Li 
6341*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_srb(vector signed long long __a,vector unsigned long long __b)6342*67e74705SXin Li vec_srb(vector signed long long __a, vector unsigned long long __b) {
6343*67e74705SXin Li   return (vector signed long long)__builtin_s390_vsrlb(
6344*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6345*67e74705SXin Li }
6346*67e74705SXin Li 
6347*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_srb(vector unsigned long long __a,vector signed long long __b)6348*67e74705SXin Li vec_srb(vector unsigned long long __a, vector signed long long __b) {
6349*67e74705SXin Li   return (vector unsigned long long)__builtin_s390_vsrlb(
6350*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6351*67e74705SXin Li }
6352*67e74705SXin Li 
6353*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_srb(vector unsigned long long __a,vector unsigned long long __b)6354*67e74705SXin Li vec_srb(vector unsigned long long __a, vector unsigned long long __b) {
6355*67e74705SXin Li   return (vector unsigned long long)__builtin_s390_vsrlb(
6356*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6357*67e74705SXin Li }
6358*67e74705SXin Li 
6359*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_srb(vector double __a,vector signed long long __b)6360*67e74705SXin Li vec_srb(vector double __a, vector signed long long __b) {
6361*67e74705SXin Li   return (vector double)__builtin_s390_vsrlb(
6362*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6363*67e74705SXin Li }
6364*67e74705SXin Li 
6365*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_srb(vector double __a,vector unsigned long long __b)6366*67e74705SXin Li vec_srb(vector double __a, vector unsigned long long __b) {
6367*67e74705SXin Li   return (vector double)__builtin_s390_vsrlb(
6368*67e74705SXin Li     (vector unsigned char)__a, (vector unsigned char)__b);
6369*67e74705SXin Li }
6370*67e74705SXin Li 
6371*67e74705SXin Li /*-- vec_abs ----------------------------------------------------------------*/
6372*67e74705SXin Li 
6373*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_abs(vector signed char __a)6374*67e74705SXin Li vec_abs(vector signed char __a) {
6375*67e74705SXin Li   return vec_sel(__a, -__a, vec_cmplt(__a, (vector signed char)0));
6376*67e74705SXin Li }
6377*67e74705SXin Li 
6378*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_abs(vector signed short __a)6379*67e74705SXin Li vec_abs(vector signed short __a) {
6380*67e74705SXin Li   return vec_sel(__a, -__a, vec_cmplt(__a, (vector signed short)0));
6381*67e74705SXin Li }
6382*67e74705SXin Li 
6383*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_abs(vector signed int __a)6384*67e74705SXin Li vec_abs(vector signed int __a) {
6385*67e74705SXin Li   return vec_sel(__a, -__a, vec_cmplt(__a, (vector signed int)0));
6386*67e74705SXin Li }
6387*67e74705SXin Li 
6388*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_abs(vector signed long long __a)6389*67e74705SXin Li vec_abs(vector signed long long __a) {
6390*67e74705SXin Li   return vec_sel(__a, -__a, vec_cmplt(__a, (vector signed long long)0));
6391*67e74705SXin Li }
6392*67e74705SXin Li 
6393*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_abs(vector double __a)6394*67e74705SXin Li vec_abs(vector double __a) {
6395*67e74705SXin Li   return __builtin_s390_vflpdb(__a);
6396*67e74705SXin Li }
6397*67e74705SXin Li 
6398*67e74705SXin Li /*-- vec_nabs ---------------------------------------------------------------*/
6399*67e74705SXin Li 
6400*67e74705SXin Li static inline __ATTRS_ai vector double
vec_nabs(vector double __a)6401*67e74705SXin Li vec_nabs(vector double __a) {
6402*67e74705SXin Li   return __builtin_s390_vflndb(__a);
6403*67e74705SXin Li }
6404*67e74705SXin Li 
6405*67e74705SXin Li /*-- vec_max ----------------------------------------------------------------*/
6406*67e74705SXin Li 
6407*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_max(vector signed char __a,vector signed char __b)6408*67e74705SXin Li vec_max(vector signed char __a, vector signed char __b) {
6409*67e74705SXin Li   return vec_sel(__b, __a, vec_cmpgt(__a, __b));
6410*67e74705SXin Li }
6411*67e74705SXin Li 
6412*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_max(vector signed char __a,vector bool char __b)6413*67e74705SXin Li vec_max(vector signed char __a, vector bool char __b) {
6414*67e74705SXin Li   vector signed char __bc = (vector signed char)__b;
6415*67e74705SXin Li   return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
6416*67e74705SXin Li }
6417*67e74705SXin Li 
6418*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_max(vector bool char __a,vector signed char __b)6419*67e74705SXin Li vec_max(vector bool char __a, vector signed char __b) {
6420*67e74705SXin Li   vector signed char __ac = (vector signed char)__a;
6421*67e74705SXin Li   return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
6422*67e74705SXin Li }
6423*67e74705SXin Li 
6424*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_max(vector unsigned char __a,vector unsigned char __b)6425*67e74705SXin Li vec_max(vector unsigned char __a, vector unsigned char __b) {
6426*67e74705SXin Li   return vec_sel(__b, __a, vec_cmpgt(__a, __b));
6427*67e74705SXin Li }
6428*67e74705SXin Li 
6429*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_max(vector unsigned char __a,vector bool char __b)6430*67e74705SXin Li vec_max(vector unsigned char __a, vector bool char __b) {
6431*67e74705SXin Li   vector unsigned char __bc = (vector unsigned char)__b;
6432*67e74705SXin Li   return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
6433*67e74705SXin Li }
6434*67e74705SXin Li 
6435*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_max(vector bool char __a,vector unsigned char __b)6436*67e74705SXin Li vec_max(vector bool char __a, vector unsigned char __b) {
6437*67e74705SXin Li   vector unsigned char __ac = (vector unsigned char)__a;
6438*67e74705SXin Li   return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
6439*67e74705SXin Li }
6440*67e74705SXin Li 
6441*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_max(vector signed short __a,vector signed short __b)6442*67e74705SXin Li vec_max(vector signed short __a, vector signed short __b) {
6443*67e74705SXin Li   return vec_sel(__b, __a, vec_cmpgt(__a, __b));
6444*67e74705SXin Li }
6445*67e74705SXin Li 
6446*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_max(vector signed short __a,vector bool short __b)6447*67e74705SXin Li vec_max(vector signed short __a, vector bool short __b) {
6448*67e74705SXin Li   vector signed short __bc = (vector signed short)__b;
6449*67e74705SXin Li   return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
6450*67e74705SXin Li }
6451*67e74705SXin Li 
6452*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_max(vector bool short __a,vector signed short __b)6453*67e74705SXin Li vec_max(vector bool short __a, vector signed short __b) {
6454*67e74705SXin Li   vector signed short __ac = (vector signed short)__a;
6455*67e74705SXin Li   return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
6456*67e74705SXin Li }
6457*67e74705SXin Li 
6458*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_max(vector unsigned short __a,vector unsigned short __b)6459*67e74705SXin Li vec_max(vector unsigned short __a, vector unsigned short __b) {
6460*67e74705SXin Li   return vec_sel(__b, __a, vec_cmpgt(__a, __b));
6461*67e74705SXin Li }
6462*67e74705SXin Li 
6463*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_max(vector unsigned short __a,vector bool short __b)6464*67e74705SXin Li vec_max(vector unsigned short __a, vector bool short __b) {
6465*67e74705SXin Li   vector unsigned short __bc = (vector unsigned short)__b;
6466*67e74705SXin Li   return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
6467*67e74705SXin Li }
6468*67e74705SXin Li 
6469*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_max(vector bool short __a,vector unsigned short __b)6470*67e74705SXin Li vec_max(vector bool short __a, vector unsigned short __b) {
6471*67e74705SXin Li   vector unsigned short __ac = (vector unsigned short)__a;
6472*67e74705SXin Li   return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
6473*67e74705SXin Li }
6474*67e74705SXin Li 
6475*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_max(vector signed int __a,vector signed int __b)6476*67e74705SXin Li vec_max(vector signed int __a, vector signed int __b) {
6477*67e74705SXin Li   return vec_sel(__b, __a, vec_cmpgt(__a, __b));
6478*67e74705SXin Li }
6479*67e74705SXin Li 
6480*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_max(vector signed int __a,vector bool int __b)6481*67e74705SXin Li vec_max(vector signed int __a, vector bool int __b) {
6482*67e74705SXin Li   vector signed int __bc = (vector signed int)__b;
6483*67e74705SXin Li   return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
6484*67e74705SXin Li }
6485*67e74705SXin Li 
6486*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_max(vector bool int __a,vector signed int __b)6487*67e74705SXin Li vec_max(vector bool int __a, vector signed int __b) {
6488*67e74705SXin Li   vector signed int __ac = (vector signed int)__a;
6489*67e74705SXin Li   return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
6490*67e74705SXin Li }
6491*67e74705SXin Li 
6492*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_max(vector unsigned int __a,vector unsigned int __b)6493*67e74705SXin Li vec_max(vector unsigned int __a, vector unsigned int __b) {
6494*67e74705SXin Li   return vec_sel(__b, __a, vec_cmpgt(__a, __b));
6495*67e74705SXin Li }
6496*67e74705SXin Li 
6497*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_max(vector unsigned int __a,vector bool int __b)6498*67e74705SXin Li vec_max(vector unsigned int __a, vector bool int __b) {
6499*67e74705SXin Li   vector unsigned int __bc = (vector unsigned int)__b;
6500*67e74705SXin Li   return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
6501*67e74705SXin Li }
6502*67e74705SXin Li 
6503*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_max(vector bool int __a,vector unsigned int __b)6504*67e74705SXin Li vec_max(vector bool int __a, vector unsigned int __b) {
6505*67e74705SXin Li   vector unsigned int __ac = (vector unsigned int)__a;
6506*67e74705SXin Li   return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
6507*67e74705SXin Li }
6508*67e74705SXin Li 
6509*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_max(vector signed long long __a,vector signed long long __b)6510*67e74705SXin Li vec_max(vector signed long long __a, vector signed long long __b) {
6511*67e74705SXin Li   return vec_sel(__b, __a, vec_cmpgt(__a, __b));
6512*67e74705SXin Li }
6513*67e74705SXin Li 
6514*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_max(vector signed long long __a,vector bool long long __b)6515*67e74705SXin Li vec_max(vector signed long long __a, vector bool long long __b) {
6516*67e74705SXin Li   vector signed long long __bc = (vector signed long long)__b;
6517*67e74705SXin Li   return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
6518*67e74705SXin Li }
6519*67e74705SXin Li 
6520*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_max(vector bool long long __a,vector signed long long __b)6521*67e74705SXin Li vec_max(vector bool long long __a, vector signed long long __b) {
6522*67e74705SXin Li   vector signed long long __ac = (vector signed long long)__a;
6523*67e74705SXin Li   return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
6524*67e74705SXin Li }
6525*67e74705SXin Li 
6526*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_max(vector unsigned long long __a,vector unsigned long long __b)6527*67e74705SXin Li vec_max(vector unsigned long long __a, vector unsigned long long __b) {
6528*67e74705SXin Li   return vec_sel(__b, __a, vec_cmpgt(__a, __b));
6529*67e74705SXin Li }
6530*67e74705SXin Li 
6531*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_max(vector unsigned long long __a,vector bool long long __b)6532*67e74705SXin Li vec_max(vector unsigned long long __a, vector bool long long __b) {
6533*67e74705SXin Li   vector unsigned long long __bc = (vector unsigned long long)__b;
6534*67e74705SXin Li   return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
6535*67e74705SXin Li }
6536*67e74705SXin Li 
6537*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_max(vector bool long long __a,vector unsigned long long __b)6538*67e74705SXin Li vec_max(vector bool long long __a, vector unsigned long long __b) {
6539*67e74705SXin Li   vector unsigned long long __ac = (vector unsigned long long)__a;
6540*67e74705SXin Li   return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
6541*67e74705SXin Li }
6542*67e74705SXin Li 
6543*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_max(vector double __a,vector double __b)6544*67e74705SXin Li vec_max(vector double __a, vector double __b) {
6545*67e74705SXin Li   return vec_sel(__b, __a, vec_cmpgt(__a, __b));
6546*67e74705SXin Li }
6547*67e74705SXin Li 
6548*67e74705SXin Li /*-- vec_min ----------------------------------------------------------------*/
6549*67e74705SXin Li 
6550*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_min(vector signed char __a,vector signed char __b)6551*67e74705SXin Li vec_min(vector signed char __a, vector signed char __b) {
6552*67e74705SXin Li   return vec_sel(__a, __b, vec_cmpgt(__a, __b));
6553*67e74705SXin Li }
6554*67e74705SXin Li 
6555*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_min(vector signed char __a,vector bool char __b)6556*67e74705SXin Li vec_min(vector signed char __a, vector bool char __b) {
6557*67e74705SXin Li   vector signed char __bc = (vector signed char)__b;
6558*67e74705SXin Li   return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
6559*67e74705SXin Li }
6560*67e74705SXin Li 
6561*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_min(vector bool char __a,vector signed char __b)6562*67e74705SXin Li vec_min(vector bool char __a, vector signed char __b) {
6563*67e74705SXin Li   vector signed char __ac = (vector signed char)__a;
6564*67e74705SXin Li   return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
6565*67e74705SXin Li }
6566*67e74705SXin Li 
6567*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_min(vector unsigned char __a,vector unsigned char __b)6568*67e74705SXin Li vec_min(vector unsigned char __a, vector unsigned char __b) {
6569*67e74705SXin Li   return vec_sel(__a, __b, vec_cmpgt(__a, __b));
6570*67e74705SXin Li }
6571*67e74705SXin Li 
6572*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_min(vector unsigned char __a,vector bool char __b)6573*67e74705SXin Li vec_min(vector unsigned char __a, vector bool char __b) {
6574*67e74705SXin Li   vector unsigned char __bc = (vector unsigned char)__b;
6575*67e74705SXin Li   return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
6576*67e74705SXin Li }
6577*67e74705SXin Li 
6578*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_min(vector bool char __a,vector unsigned char __b)6579*67e74705SXin Li vec_min(vector bool char __a, vector unsigned char __b) {
6580*67e74705SXin Li   vector unsigned char __ac = (vector unsigned char)__a;
6581*67e74705SXin Li   return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
6582*67e74705SXin Li }
6583*67e74705SXin Li 
6584*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_min(vector signed short __a,vector signed short __b)6585*67e74705SXin Li vec_min(vector signed short __a, vector signed short __b) {
6586*67e74705SXin Li   return vec_sel(__a, __b, vec_cmpgt(__a, __b));
6587*67e74705SXin Li }
6588*67e74705SXin Li 
6589*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_min(vector signed short __a,vector bool short __b)6590*67e74705SXin Li vec_min(vector signed short __a, vector bool short __b) {
6591*67e74705SXin Li   vector signed short __bc = (vector signed short)__b;
6592*67e74705SXin Li   return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
6593*67e74705SXin Li }
6594*67e74705SXin Li 
6595*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_min(vector bool short __a,vector signed short __b)6596*67e74705SXin Li vec_min(vector bool short __a, vector signed short __b) {
6597*67e74705SXin Li   vector signed short __ac = (vector signed short)__a;
6598*67e74705SXin Li   return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
6599*67e74705SXin Li }
6600*67e74705SXin Li 
6601*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_min(vector unsigned short __a,vector unsigned short __b)6602*67e74705SXin Li vec_min(vector unsigned short __a, vector unsigned short __b) {
6603*67e74705SXin Li   return vec_sel(__a, __b, vec_cmpgt(__a, __b));
6604*67e74705SXin Li }
6605*67e74705SXin Li 
6606*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_min(vector unsigned short __a,vector bool short __b)6607*67e74705SXin Li vec_min(vector unsigned short __a, vector bool short __b) {
6608*67e74705SXin Li   vector unsigned short __bc = (vector unsigned short)__b;
6609*67e74705SXin Li   return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
6610*67e74705SXin Li }
6611*67e74705SXin Li 
6612*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_min(vector bool short __a,vector unsigned short __b)6613*67e74705SXin Li vec_min(vector bool short __a, vector unsigned short __b) {
6614*67e74705SXin Li   vector unsigned short __ac = (vector unsigned short)__a;
6615*67e74705SXin Li   return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
6616*67e74705SXin Li }
6617*67e74705SXin Li 
6618*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_min(vector signed int __a,vector signed int __b)6619*67e74705SXin Li vec_min(vector signed int __a, vector signed int __b) {
6620*67e74705SXin Li   return vec_sel(__a, __b, vec_cmpgt(__a, __b));
6621*67e74705SXin Li }
6622*67e74705SXin Li 
6623*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_min(vector signed int __a,vector bool int __b)6624*67e74705SXin Li vec_min(vector signed int __a, vector bool int __b) {
6625*67e74705SXin Li   vector signed int __bc = (vector signed int)__b;
6626*67e74705SXin Li   return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
6627*67e74705SXin Li }
6628*67e74705SXin Li 
6629*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_min(vector bool int __a,vector signed int __b)6630*67e74705SXin Li vec_min(vector bool int __a, vector signed int __b) {
6631*67e74705SXin Li   vector signed int __ac = (vector signed int)__a;
6632*67e74705SXin Li   return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
6633*67e74705SXin Li }
6634*67e74705SXin Li 
6635*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_min(vector unsigned int __a,vector unsigned int __b)6636*67e74705SXin Li vec_min(vector unsigned int __a, vector unsigned int __b) {
6637*67e74705SXin Li   return vec_sel(__a, __b, vec_cmpgt(__a, __b));
6638*67e74705SXin Li }
6639*67e74705SXin Li 
6640*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_min(vector unsigned int __a,vector bool int __b)6641*67e74705SXin Li vec_min(vector unsigned int __a, vector bool int __b) {
6642*67e74705SXin Li   vector unsigned int __bc = (vector unsigned int)__b;
6643*67e74705SXin Li   return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
6644*67e74705SXin Li }
6645*67e74705SXin Li 
6646*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_min(vector bool int __a,vector unsigned int __b)6647*67e74705SXin Li vec_min(vector bool int __a, vector unsigned int __b) {
6648*67e74705SXin Li   vector unsigned int __ac = (vector unsigned int)__a;
6649*67e74705SXin Li   return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
6650*67e74705SXin Li }
6651*67e74705SXin Li 
6652*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_min(vector signed long long __a,vector signed long long __b)6653*67e74705SXin Li vec_min(vector signed long long __a, vector signed long long __b) {
6654*67e74705SXin Li   return vec_sel(__a, __b, vec_cmpgt(__a, __b));
6655*67e74705SXin Li }
6656*67e74705SXin Li 
6657*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_min(vector signed long long __a,vector bool long long __b)6658*67e74705SXin Li vec_min(vector signed long long __a, vector bool long long __b) {
6659*67e74705SXin Li   vector signed long long __bc = (vector signed long long)__b;
6660*67e74705SXin Li   return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
6661*67e74705SXin Li }
6662*67e74705SXin Li 
6663*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_min(vector bool long long __a,vector signed long long __b)6664*67e74705SXin Li vec_min(vector bool long long __a, vector signed long long __b) {
6665*67e74705SXin Li   vector signed long long __ac = (vector signed long long)__a;
6666*67e74705SXin Li   return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
6667*67e74705SXin Li }
6668*67e74705SXin Li 
6669*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_min(vector unsigned long long __a,vector unsigned long long __b)6670*67e74705SXin Li vec_min(vector unsigned long long __a, vector unsigned long long __b) {
6671*67e74705SXin Li   return vec_sel(__a, __b, vec_cmpgt(__a, __b));
6672*67e74705SXin Li }
6673*67e74705SXin Li 
6674*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_min(vector unsigned long long __a,vector bool long long __b)6675*67e74705SXin Li vec_min(vector unsigned long long __a, vector bool long long __b) {
6676*67e74705SXin Li   vector unsigned long long __bc = (vector unsigned long long)__b;
6677*67e74705SXin Li   return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
6678*67e74705SXin Li }
6679*67e74705SXin Li 
6680*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_min(vector bool long long __a,vector unsigned long long __b)6681*67e74705SXin Li vec_min(vector bool long long __a, vector unsigned long long __b) {
6682*67e74705SXin Li   vector unsigned long long __ac = (vector unsigned long long)__a;
6683*67e74705SXin Li   return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
6684*67e74705SXin Li }
6685*67e74705SXin Li 
6686*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_min(vector double __a,vector double __b)6687*67e74705SXin Li vec_min(vector double __a, vector double __b) {
6688*67e74705SXin Li   return vec_sel(__a, __b, vec_cmpgt(__a, __b));
6689*67e74705SXin Li }
6690*67e74705SXin Li 
6691*67e74705SXin Li /*-- vec_add_u128 -----------------------------------------------------------*/
6692*67e74705SXin Li 
6693*67e74705SXin Li static inline __ATTRS_ai vector unsigned char
vec_add_u128(vector unsigned char __a,vector unsigned char __b)6694*67e74705SXin Li vec_add_u128(vector unsigned char __a, vector unsigned char __b) {
6695*67e74705SXin Li   return __builtin_s390_vaq(__a, __b);
6696*67e74705SXin Li }
6697*67e74705SXin Li 
6698*67e74705SXin Li /*-- vec_addc ---------------------------------------------------------------*/
6699*67e74705SXin Li 
6700*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_addc(vector unsigned char __a,vector unsigned char __b)6701*67e74705SXin Li vec_addc(vector unsigned char __a, vector unsigned char __b) {
6702*67e74705SXin Li   return __builtin_s390_vaccb(__a, __b);
6703*67e74705SXin Li }
6704*67e74705SXin Li 
6705*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_addc(vector unsigned short __a,vector unsigned short __b)6706*67e74705SXin Li vec_addc(vector unsigned short __a, vector unsigned short __b) {
6707*67e74705SXin Li   return __builtin_s390_vacch(__a, __b);
6708*67e74705SXin Li }
6709*67e74705SXin Li 
6710*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_addc(vector unsigned int __a,vector unsigned int __b)6711*67e74705SXin Li vec_addc(vector unsigned int __a, vector unsigned int __b) {
6712*67e74705SXin Li   return __builtin_s390_vaccf(__a, __b);
6713*67e74705SXin Li }
6714*67e74705SXin Li 
6715*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_addc(vector unsigned long long __a,vector unsigned long long __b)6716*67e74705SXin Li vec_addc(vector unsigned long long __a, vector unsigned long long __b) {
6717*67e74705SXin Li   return __builtin_s390_vaccg(__a, __b);
6718*67e74705SXin Li }
6719*67e74705SXin Li 
6720*67e74705SXin Li /*-- vec_addc_u128 ----------------------------------------------------------*/
6721*67e74705SXin Li 
6722*67e74705SXin Li static inline __ATTRS_ai vector unsigned char
vec_addc_u128(vector unsigned char __a,vector unsigned char __b)6723*67e74705SXin Li vec_addc_u128(vector unsigned char __a, vector unsigned char __b) {
6724*67e74705SXin Li   return __builtin_s390_vaccq(__a, __b);
6725*67e74705SXin Li }
6726*67e74705SXin Li 
6727*67e74705SXin Li /*-- vec_adde_u128 ----------------------------------------------------------*/
6728*67e74705SXin Li 
6729*67e74705SXin Li static inline __ATTRS_ai vector unsigned char
vec_adde_u128(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)6730*67e74705SXin Li vec_adde_u128(vector unsigned char __a, vector unsigned char __b,
6731*67e74705SXin Li               vector unsigned char __c) {
6732*67e74705SXin Li   return __builtin_s390_vacq(__a, __b, __c);
6733*67e74705SXin Li }
6734*67e74705SXin Li 
6735*67e74705SXin Li /*-- vec_addec_u128 ---------------------------------------------------------*/
6736*67e74705SXin Li 
6737*67e74705SXin Li static inline __ATTRS_ai vector unsigned char
vec_addec_u128(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)6738*67e74705SXin Li vec_addec_u128(vector unsigned char __a, vector unsigned char __b,
6739*67e74705SXin Li                vector unsigned char __c) {
6740*67e74705SXin Li   return __builtin_s390_vacccq(__a, __b, __c);
6741*67e74705SXin Li }
6742*67e74705SXin Li 
6743*67e74705SXin Li /*-- vec_avg ----------------------------------------------------------------*/
6744*67e74705SXin Li 
6745*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_avg(vector signed char __a,vector signed char __b)6746*67e74705SXin Li vec_avg(vector signed char __a, vector signed char __b) {
6747*67e74705SXin Li   return __builtin_s390_vavgb(__a, __b);
6748*67e74705SXin Li }
6749*67e74705SXin Li 
6750*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_avg(vector signed short __a,vector signed short __b)6751*67e74705SXin Li vec_avg(vector signed short __a, vector signed short __b) {
6752*67e74705SXin Li   return __builtin_s390_vavgh(__a, __b);
6753*67e74705SXin Li }
6754*67e74705SXin Li 
6755*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_avg(vector signed int __a,vector signed int __b)6756*67e74705SXin Li vec_avg(vector signed int __a, vector signed int __b) {
6757*67e74705SXin Li   return __builtin_s390_vavgf(__a, __b);
6758*67e74705SXin Li }
6759*67e74705SXin Li 
6760*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_avg(vector signed long long __a,vector signed long long __b)6761*67e74705SXin Li vec_avg(vector signed long long __a, vector signed long long __b) {
6762*67e74705SXin Li   return __builtin_s390_vavgg(__a, __b);
6763*67e74705SXin Li }
6764*67e74705SXin Li 
6765*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_avg(vector unsigned char __a,vector unsigned char __b)6766*67e74705SXin Li vec_avg(vector unsigned char __a, vector unsigned char __b) {
6767*67e74705SXin Li   return __builtin_s390_vavglb(__a, __b);
6768*67e74705SXin Li }
6769*67e74705SXin Li 
6770*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_avg(vector unsigned short __a,vector unsigned short __b)6771*67e74705SXin Li vec_avg(vector unsigned short __a, vector unsigned short __b) {
6772*67e74705SXin Li   return __builtin_s390_vavglh(__a, __b);
6773*67e74705SXin Li }
6774*67e74705SXin Li 
6775*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_avg(vector unsigned int __a,vector unsigned int __b)6776*67e74705SXin Li vec_avg(vector unsigned int __a, vector unsigned int __b) {
6777*67e74705SXin Li   return __builtin_s390_vavglf(__a, __b);
6778*67e74705SXin Li }
6779*67e74705SXin Li 
6780*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_avg(vector unsigned long long __a,vector unsigned long long __b)6781*67e74705SXin Li vec_avg(vector unsigned long long __a, vector unsigned long long __b) {
6782*67e74705SXin Li   return __builtin_s390_vavglg(__a, __b);
6783*67e74705SXin Li }
6784*67e74705SXin Li 
6785*67e74705SXin Li /*-- vec_checksum -----------------------------------------------------------*/
6786*67e74705SXin Li 
6787*67e74705SXin Li static inline __ATTRS_ai vector unsigned int
vec_checksum(vector unsigned int __a,vector unsigned int __b)6788*67e74705SXin Li vec_checksum(vector unsigned int __a, vector unsigned int __b) {
6789*67e74705SXin Li   return __builtin_s390_vcksm(__a, __b);
6790*67e74705SXin Li }
6791*67e74705SXin Li 
6792*67e74705SXin Li /*-- vec_gfmsum -------------------------------------------------------------*/
6793*67e74705SXin Li 
6794*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_gfmsum(vector unsigned char __a,vector unsigned char __b)6795*67e74705SXin Li vec_gfmsum(vector unsigned char __a, vector unsigned char __b) {
6796*67e74705SXin Li   return __builtin_s390_vgfmb(__a, __b);
6797*67e74705SXin Li }
6798*67e74705SXin Li 
6799*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_gfmsum(vector unsigned short __a,vector unsigned short __b)6800*67e74705SXin Li vec_gfmsum(vector unsigned short __a, vector unsigned short __b) {
6801*67e74705SXin Li   return __builtin_s390_vgfmh(__a, __b);
6802*67e74705SXin Li }
6803*67e74705SXin Li 
6804*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_gfmsum(vector unsigned int __a,vector unsigned int __b)6805*67e74705SXin Li vec_gfmsum(vector unsigned int __a, vector unsigned int __b) {
6806*67e74705SXin Li   return __builtin_s390_vgfmf(__a, __b);
6807*67e74705SXin Li }
6808*67e74705SXin Li 
6809*67e74705SXin Li /*-- vec_gfmsum_128 ---------------------------------------------------------*/
6810*67e74705SXin Li 
6811*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_gfmsum_128(vector unsigned long long __a,vector unsigned long long __b)6812*67e74705SXin Li vec_gfmsum_128(vector unsigned long long __a, vector unsigned long long __b) {
6813*67e74705SXin Li   return __builtin_s390_vgfmg(__a, __b);
6814*67e74705SXin Li }
6815*67e74705SXin Li 
6816*67e74705SXin Li /*-- vec_gfmsum_accum -------------------------------------------------------*/
6817*67e74705SXin Li 
6818*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_gfmsum_accum(vector unsigned char __a,vector unsigned char __b,vector unsigned short __c)6819*67e74705SXin Li vec_gfmsum_accum(vector unsigned char __a, vector unsigned char __b,
6820*67e74705SXin Li                  vector unsigned short __c) {
6821*67e74705SXin Li   return __builtin_s390_vgfmab(__a, __b, __c);
6822*67e74705SXin Li }
6823*67e74705SXin Li 
6824*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_gfmsum_accum(vector unsigned short __a,vector unsigned short __b,vector unsigned int __c)6825*67e74705SXin Li vec_gfmsum_accum(vector unsigned short __a, vector unsigned short __b,
6826*67e74705SXin Li                  vector unsigned int __c) {
6827*67e74705SXin Li   return __builtin_s390_vgfmah(__a, __b, __c);
6828*67e74705SXin Li }
6829*67e74705SXin Li 
6830*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_gfmsum_accum(vector unsigned int __a,vector unsigned int __b,vector unsigned long long __c)6831*67e74705SXin Li vec_gfmsum_accum(vector unsigned int __a, vector unsigned int __b,
6832*67e74705SXin Li                  vector unsigned long long __c) {
6833*67e74705SXin Li   return __builtin_s390_vgfmaf(__a, __b, __c);
6834*67e74705SXin Li }
6835*67e74705SXin Li 
6836*67e74705SXin Li /*-- vec_gfmsum_accum_128 ---------------------------------------------------*/
6837*67e74705SXin Li 
6838*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_gfmsum_accum_128(vector unsigned long long __a,vector unsigned long long __b,vector unsigned char __c)6839*67e74705SXin Li vec_gfmsum_accum_128(vector unsigned long long __a,
6840*67e74705SXin Li                      vector unsigned long long __b,
6841*67e74705SXin Li                      vector unsigned char __c) {
6842*67e74705SXin Li   return __builtin_s390_vgfmag(__a, __b, __c);
6843*67e74705SXin Li }
6844*67e74705SXin Li 
6845*67e74705SXin Li /*-- vec_mladd --------------------------------------------------------------*/
6846*67e74705SXin Li 
6847*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_mladd(vector signed char __a,vector signed char __b,vector signed char __c)6848*67e74705SXin Li vec_mladd(vector signed char __a, vector signed char __b,
6849*67e74705SXin Li           vector signed char __c) {
6850*67e74705SXin Li   return __a * __b + __c;
6851*67e74705SXin Li }
6852*67e74705SXin Li 
6853*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_mladd(vector unsigned char __a,vector signed char __b,vector signed char __c)6854*67e74705SXin Li vec_mladd(vector unsigned char __a, vector signed char __b,
6855*67e74705SXin Li           vector signed char __c) {
6856*67e74705SXin Li   return (vector signed char)__a * __b + __c;
6857*67e74705SXin Li }
6858*67e74705SXin Li 
6859*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_mladd(vector signed char __a,vector unsigned char __b,vector unsigned char __c)6860*67e74705SXin Li vec_mladd(vector signed char __a, vector unsigned char __b,
6861*67e74705SXin Li           vector unsigned char __c) {
6862*67e74705SXin Li   return __a * (vector signed char)__b + (vector signed char)__c;
6863*67e74705SXin Li }
6864*67e74705SXin Li 
6865*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_mladd(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)6866*67e74705SXin Li vec_mladd(vector unsigned char __a, vector unsigned char __b,
6867*67e74705SXin Li           vector unsigned char __c) {
6868*67e74705SXin Li   return __a * __b + __c;
6869*67e74705SXin Li }
6870*67e74705SXin Li 
6871*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_mladd(vector signed short __a,vector signed short __b,vector signed short __c)6872*67e74705SXin Li vec_mladd(vector signed short __a, vector signed short __b,
6873*67e74705SXin Li           vector signed short __c) {
6874*67e74705SXin Li   return __a * __b + __c;
6875*67e74705SXin Li }
6876*67e74705SXin Li 
6877*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_mladd(vector unsigned short __a,vector signed short __b,vector signed short __c)6878*67e74705SXin Li vec_mladd(vector unsigned short __a, vector signed short __b,
6879*67e74705SXin Li           vector signed short __c) {
6880*67e74705SXin Li   return (vector signed short)__a * __b + __c;
6881*67e74705SXin Li }
6882*67e74705SXin Li 
6883*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_mladd(vector signed short __a,vector unsigned short __b,vector unsigned short __c)6884*67e74705SXin Li vec_mladd(vector signed short __a, vector unsigned short __b,
6885*67e74705SXin Li           vector unsigned short __c) {
6886*67e74705SXin Li   return __a * (vector signed short)__b + (vector signed short)__c;
6887*67e74705SXin Li }
6888*67e74705SXin Li 
6889*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_mladd(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)6890*67e74705SXin Li vec_mladd(vector unsigned short __a, vector unsigned short __b,
6891*67e74705SXin Li           vector unsigned short __c) {
6892*67e74705SXin Li   return __a * __b + __c;
6893*67e74705SXin Li }
6894*67e74705SXin Li 
6895*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_mladd(vector signed int __a,vector signed int __b,vector signed int __c)6896*67e74705SXin Li vec_mladd(vector signed int __a, vector signed int __b,
6897*67e74705SXin Li           vector signed int __c) {
6898*67e74705SXin Li   return __a * __b + __c;
6899*67e74705SXin Li }
6900*67e74705SXin Li 
6901*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_mladd(vector unsigned int __a,vector signed int __b,vector signed int __c)6902*67e74705SXin Li vec_mladd(vector unsigned int __a, vector signed int __b,
6903*67e74705SXin Li           vector signed int __c) {
6904*67e74705SXin Li   return (vector signed int)__a * __b + __c;
6905*67e74705SXin Li }
6906*67e74705SXin Li 
6907*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_mladd(vector signed int __a,vector unsigned int __b,vector unsigned int __c)6908*67e74705SXin Li vec_mladd(vector signed int __a, vector unsigned int __b,
6909*67e74705SXin Li           vector unsigned int __c) {
6910*67e74705SXin Li   return __a * (vector signed int)__b + (vector signed int)__c;
6911*67e74705SXin Li }
6912*67e74705SXin Li 
6913*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_mladd(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)6914*67e74705SXin Li vec_mladd(vector unsigned int __a, vector unsigned int __b,
6915*67e74705SXin Li           vector unsigned int __c) {
6916*67e74705SXin Li   return __a * __b + __c;
6917*67e74705SXin Li }
6918*67e74705SXin Li 
6919*67e74705SXin Li /*-- vec_mhadd --------------------------------------------------------------*/
6920*67e74705SXin Li 
6921*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_mhadd(vector signed char __a,vector signed char __b,vector signed char __c)6922*67e74705SXin Li vec_mhadd(vector signed char __a, vector signed char __b,
6923*67e74705SXin Li           vector signed char __c) {
6924*67e74705SXin Li   return __builtin_s390_vmahb(__a, __b, __c);
6925*67e74705SXin Li }
6926*67e74705SXin Li 
6927*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_mhadd(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)6928*67e74705SXin Li vec_mhadd(vector unsigned char __a, vector unsigned char __b,
6929*67e74705SXin Li           vector unsigned char __c) {
6930*67e74705SXin Li   return __builtin_s390_vmalhb(__a, __b, __c);
6931*67e74705SXin Li }
6932*67e74705SXin Li 
6933*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_mhadd(vector signed short __a,vector signed short __b,vector signed short __c)6934*67e74705SXin Li vec_mhadd(vector signed short __a, vector signed short __b,
6935*67e74705SXin Li           vector signed short __c) {
6936*67e74705SXin Li   return __builtin_s390_vmahh(__a, __b, __c);
6937*67e74705SXin Li }
6938*67e74705SXin Li 
6939*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_mhadd(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)6940*67e74705SXin Li vec_mhadd(vector unsigned short __a, vector unsigned short __b,
6941*67e74705SXin Li           vector unsigned short __c) {
6942*67e74705SXin Li   return __builtin_s390_vmalhh(__a, __b, __c);
6943*67e74705SXin Li }
6944*67e74705SXin Li 
6945*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_mhadd(vector signed int __a,vector signed int __b,vector signed int __c)6946*67e74705SXin Li vec_mhadd(vector signed int __a, vector signed int __b,
6947*67e74705SXin Li           vector signed int __c) {
6948*67e74705SXin Li   return __builtin_s390_vmahf(__a, __b, __c);
6949*67e74705SXin Li }
6950*67e74705SXin Li 
6951*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_mhadd(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)6952*67e74705SXin Li vec_mhadd(vector unsigned int __a, vector unsigned int __b,
6953*67e74705SXin Li           vector unsigned int __c) {
6954*67e74705SXin Li   return __builtin_s390_vmalhf(__a, __b, __c);
6955*67e74705SXin Li }
6956*67e74705SXin Li 
6957*67e74705SXin Li /*-- vec_meadd --------------------------------------------------------------*/
6958*67e74705SXin Li 
6959*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_meadd(vector signed char __a,vector signed char __b,vector signed short __c)6960*67e74705SXin Li vec_meadd(vector signed char __a, vector signed char __b,
6961*67e74705SXin Li           vector signed short __c) {
6962*67e74705SXin Li   return __builtin_s390_vmaeb(__a, __b, __c);
6963*67e74705SXin Li }
6964*67e74705SXin Li 
6965*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_meadd(vector unsigned char __a,vector unsigned char __b,vector unsigned short __c)6966*67e74705SXin Li vec_meadd(vector unsigned char __a, vector unsigned char __b,
6967*67e74705SXin Li           vector unsigned short __c) {
6968*67e74705SXin Li   return __builtin_s390_vmaleb(__a, __b, __c);
6969*67e74705SXin Li }
6970*67e74705SXin Li 
6971*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_meadd(vector signed short __a,vector signed short __b,vector signed int __c)6972*67e74705SXin Li vec_meadd(vector signed short __a, vector signed short __b,
6973*67e74705SXin Li           vector signed int __c) {
6974*67e74705SXin Li   return __builtin_s390_vmaeh(__a, __b, __c);
6975*67e74705SXin Li }
6976*67e74705SXin Li 
6977*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_meadd(vector unsigned short __a,vector unsigned short __b,vector unsigned int __c)6978*67e74705SXin Li vec_meadd(vector unsigned short __a, vector unsigned short __b,
6979*67e74705SXin Li           vector unsigned int __c) {
6980*67e74705SXin Li   return __builtin_s390_vmaleh(__a, __b, __c);
6981*67e74705SXin Li }
6982*67e74705SXin Li 
6983*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_meadd(vector signed int __a,vector signed int __b,vector signed long long __c)6984*67e74705SXin Li vec_meadd(vector signed int __a, vector signed int __b,
6985*67e74705SXin Li           vector signed long long __c) {
6986*67e74705SXin Li   return __builtin_s390_vmaef(__a, __b, __c);
6987*67e74705SXin Li }
6988*67e74705SXin Li 
6989*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_meadd(vector unsigned int __a,vector unsigned int __b,vector unsigned long long __c)6990*67e74705SXin Li vec_meadd(vector unsigned int __a, vector unsigned int __b,
6991*67e74705SXin Li           vector unsigned long long __c) {
6992*67e74705SXin Li   return __builtin_s390_vmalef(__a, __b, __c);
6993*67e74705SXin Li }
6994*67e74705SXin Li 
6995*67e74705SXin Li /*-- vec_moadd --------------------------------------------------------------*/
6996*67e74705SXin Li 
6997*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_moadd(vector signed char __a,vector signed char __b,vector signed short __c)6998*67e74705SXin Li vec_moadd(vector signed char __a, vector signed char __b,
6999*67e74705SXin Li           vector signed short __c) {
7000*67e74705SXin Li   return __builtin_s390_vmaob(__a, __b, __c);
7001*67e74705SXin Li }
7002*67e74705SXin Li 
7003*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_moadd(vector unsigned char __a,vector unsigned char __b,vector unsigned short __c)7004*67e74705SXin Li vec_moadd(vector unsigned char __a, vector unsigned char __b,
7005*67e74705SXin Li           vector unsigned short __c) {
7006*67e74705SXin Li   return __builtin_s390_vmalob(__a, __b, __c);
7007*67e74705SXin Li }
7008*67e74705SXin Li 
7009*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_moadd(vector signed short __a,vector signed short __b,vector signed int __c)7010*67e74705SXin Li vec_moadd(vector signed short __a, vector signed short __b,
7011*67e74705SXin Li           vector signed int __c) {
7012*67e74705SXin Li   return __builtin_s390_vmaoh(__a, __b, __c);
7013*67e74705SXin Li }
7014*67e74705SXin Li 
7015*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_moadd(vector unsigned short __a,vector unsigned short __b,vector unsigned int __c)7016*67e74705SXin Li vec_moadd(vector unsigned short __a, vector unsigned short __b,
7017*67e74705SXin Li           vector unsigned int __c) {
7018*67e74705SXin Li   return __builtin_s390_vmaloh(__a, __b, __c);
7019*67e74705SXin Li }
7020*67e74705SXin Li 
7021*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_moadd(vector signed int __a,vector signed int __b,vector signed long long __c)7022*67e74705SXin Li vec_moadd(vector signed int __a, vector signed int __b,
7023*67e74705SXin Li           vector signed long long __c) {
7024*67e74705SXin Li   return __builtin_s390_vmaof(__a, __b, __c);
7025*67e74705SXin Li }
7026*67e74705SXin Li 
7027*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_moadd(vector unsigned int __a,vector unsigned int __b,vector unsigned long long __c)7028*67e74705SXin Li vec_moadd(vector unsigned int __a, vector unsigned int __b,
7029*67e74705SXin Li           vector unsigned long long __c) {
7030*67e74705SXin Li   return __builtin_s390_vmalof(__a, __b, __c);
7031*67e74705SXin Li }
7032*67e74705SXin Li 
7033*67e74705SXin Li /*-- vec_mulh ---------------------------------------------------------------*/
7034*67e74705SXin Li 
7035*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_mulh(vector signed char __a,vector signed char __b)7036*67e74705SXin Li vec_mulh(vector signed char __a, vector signed char __b) {
7037*67e74705SXin Li   return __builtin_s390_vmhb(__a, __b);
7038*67e74705SXin Li }
7039*67e74705SXin Li 
7040*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_mulh(vector unsigned char __a,vector unsigned char __b)7041*67e74705SXin Li vec_mulh(vector unsigned char __a, vector unsigned char __b) {
7042*67e74705SXin Li   return __builtin_s390_vmlhb(__a, __b);
7043*67e74705SXin Li }
7044*67e74705SXin Li 
7045*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_mulh(vector signed short __a,vector signed short __b)7046*67e74705SXin Li vec_mulh(vector signed short __a, vector signed short __b) {
7047*67e74705SXin Li   return __builtin_s390_vmhh(__a, __b);
7048*67e74705SXin Li }
7049*67e74705SXin Li 
7050*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_mulh(vector unsigned short __a,vector unsigned short __b)7051*67e74705SXin Li vec_mulh(vector unsigned short __a, vector unsigned short __b) {
7052*67e74705SXin Li   return __builtin_s390_vmlhh(__a, __b);
7053*67e74705SXin Li }
7054*67e74705SXin Li 
7055*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_mulh(vector signed int __a,vector signed int __b)7056*67e74705SXin Li vec_mulh(vector signed int __a, vector signed int __b) {
7057*67e74705SXin Li   return __builtin_s390_vmhf(__a, __b);
7058*67e74705SXin Li }
7059*67e74705SXin Li 
7060*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_mulh(vector unsigned int __a,vector unsigned int __b)7061*67e74705SXin Li vec_mulh(vector unsigned int __a, vector unsigned int __b) {
7062*67e74705SXin Li   return __builtin_s390_vmlhf(__a, __b);
7063*67e74705SXin Li }
7064*67e74705SXin Li 
7065*67e74705SXin Li /*-- vec_mule ---------------------------------------------------------------*/
7066*67e74705SXin Li 
7067*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_mule(vector signed char __a,vector signed char __b)7068*67e74705SXin Li vec_mule(vector signed char __a, vector signed char __b) {
7069*67e74705SXin Li   return __builtin_s390_vmeb(__a, __b);
7070*67e74705SXin Li }
7071*67e74705SXin Li 
7072*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_mule(vector unsigned char __a,vector unsigned char __b)7073*67e74705SXin Li vec_mule(vector unsigned char __a, vector unsigned char __b) {
7074*67e74705SXin Li   return __builtin_s390_vmleb(__a, __b);
7075*67e74705SXin Li }
7076*67e74705SXin Li 
7077*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_mule(vector signed short __a,vector signed short __b)7078*67e74705SXin Li vec_mule(vector signed short __a, vector signed short __b) {
7079*67e74705SXin Li   return __builtin_s390_vmeh(__a, __b);
7080*67e74705SXin Li }
7081*67e74705SXin Li 
7082*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_mule(vector unsigned short __a,vector unsigned short __b)7083*67e74705SXin Li vec_mule(vector unsigned short __a, vector unsigned short __b) {
7084*67e74705SXin Li   return __builtin_s390_vmleh(__a, __b);
7085*67e74705SXin Li }
7086*67e74705SXin Li 
7087*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_mule(vector signed int __a,vector signed int __b)7088*67e74705SXin Li vec_mule(vector signed int __a, vector signed int __b) {
7089*67e74705SXin Li   return __builtin_s390_vmef(__a, __b);
7090*67e74705SXin Li }
7091*67e74705SXin Li 
7092*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_mule(vector unsigned int __a,vector unsigned int __b)7093*67e74705SXin Li vec_mule(vector unsigned int __a, vector unsigned int __b) {
7094*67e74705SXin Li   return __builtin_s390_vmlef(__a, __b);
7095*67e74705SXin Li }
7096*67e74705SXin Li 
7097*67e74705SXin Li /*-- vec_mulo ---------------------------------------------------------------*/
7098*67e74705SXin Li 
7099*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_mulo(vector signed char __a,vector signed char __b)7100*67e74705SXin Li vec_mulo(vector signed char __a, vector signed char __b) {
7101*67e74705SXin Li   return __builtin_s390_vmob(__a, __b);
7102*67e74705SXin Li }
7103*67e74705SXin Li 
7104*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_mulo(vector unsigned char __a,vector unsigned char __b)7105*67e74705SXin Li vec_mulo(vector unsigned char __a, vector unsigned char __b) {
7106*67e74705SXin Li   return __builtin_s390_vmlob(__a, __b);
7107*67e74705SXin Li }
7108*67e74705SXin Li 
7109*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_mulo(vector signed short __a,vector signed short __b)7110*67e74705SXin Li vec_mulo(vector signed short __a, vector signed short __b) {
7111*67e74705SXin Li   return __builtin_s390_vmoh(__a, __b);
7112*67e74705SXin Li }
7113*67e74705SXin Li 
7114*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_mulo(vector unsigned short __a,vector unsigned short __b)7115*67e74705SXin Li vec_mulo(vector unsigned short __a, vector unsigned short __b) {
7116*67e74705SXin Li   return __builtin_s390_vmloh(__a, __b);
7117*67e74705SXin Li }
7118*67e74705SXin Li 
7119*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_mulo(vector signed int __a,vector signed int __b)7120*67e74705SXin Li vec_mulo(vector signed int __a, vector signed int __b) {
7121*67e74705SXin Li   return __builtin_s390_vmof(__a, __b);
7122*67e74705SXin Li }
7123*67e74705SXin Li 
7124*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_mulo(vector unsigned int __a,vector unsigned int __b)7125*67e74705SXin Li vec_mulo(vector unsigned int __a, vector unsigned int __b) {
7126*67e74705SXin Li   return __builtin_s390_vmlof(__a, __b);
7127*67e74705SXin Li }
7128*67e74705SXin Li 
7129*67e74705SXin Li /*-- vec_sub_u128 -----------------------------------------------------------*/
7130*67e74705SXin Li 
7131*67e74705SXin Li static inline __ATTRS_ai vector unsigned char
vec_sub_u128(vector unsigned char __a,vector unsigned char __b)7132*67e74705SXin Li vec_sub_u128(vector unsigned char __a, vector unsigned char __b) {
7133*67e74705SXin Li   return __builtin_s390_vsq(__a, __b);
7134*67e74705SXin Li }
7135*67e74705SXin Li 
7136*67e74705SXin Li /*-- vec_subc ---------------------------------------------------------------*/
7137*67e74705SXin Li 
7138*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_subc(vector unsigned char __a,vector unsigned char __b)7139*67e74705SXin Li vec_subc(vector unsigned char __a, vector unsigned char __b) {
7140*67e74705SXin Li   return __builtin_s390_vscbib(__a, __b);
7141*67e74705SXin Li }
7142*67e74705SXin Li 
7143*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_subc(vector unsigned short __a,vector unsigned short __b)7144*67e74705SXin Li vec_subc(vector unsigned short __a, vector unsigned short __b) {
7145*67e74705SXin Li   return __builtin_s390_vscbih(__a, __b);
7146*67e74705SXin Li }
7147*67e74705SXin Li 
7148*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_subc(vector unsigned int __a,vector unsigned int __b)7149*67e74705SXin Li vec_subc(vector unsigned int __a, vector unsigned int __b) {
7150*67e74705SXin Li   return __builtin_s390_vscbif(__a, __b);
7151*67e74705SXin Li }
7152*67e74705SXin Li 
7153*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_subc(vector unsigned long long __a,vector unsigned long long __b)7154*67e74705SXin Li vec_subc(vector unsigned long long __a, vector unsigned long long __b) {
7155*67e74705SXin Li   return __builtin_s390_vscbig(__a, __b);
7156*67e74705SXin Li }
7157*67e74705SXin Li 
7158*67e74705SXin Li /*-- vec_subc_u128 ----------------------------------------------------------*/
7159*67e74705SXin Li 
7160*67e74705SXin Li static inline __ATTRS_ai vector unsigned char
vec_subc_u128(vector unsigned char __a,vector unsigned char __b)7161*67e74705SXin Li vec_subc_u128(vector unsigned char __a, vector unsigned char __b) {
7162*67e74705SXin Li   return __builtin_s390_vscbiq(__a, __b);
7163*67e74705SXin Li }
7164*67e74705SXin Li 
7165*67e74705SXin Li /*-- vec_sube_u128 ----------------------------------------------------------*/
7166*67e74705SXin Li 
7167*67e74705SXin Li static inline __ATTRS_ai vector unsigned char
vec_sube_u128(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)7168*67e74705SXin Li vec_sube_u128(vector unsigned char __a, vector unsigned char __b,
7169*67e74705SXin Li               vector unsigned char __c) {
7170*67e74705SXin Li   return __builtin_s390_vsbiq(__a, __b, __c);
7171*67e74705SXin Li }
7172*67e74705SXin Li 
7173*67e74705SXin Li /*-- vec_subec_u128 ---------------------------------------------------------*/
7174*67e74705SXin Li 
7175*67e74705SXin Li static inline __ATTRS_ai vector unsigned char
vec_subec_u128(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)7176*67e74705SXin Li vec_subec_u128(vector unsigned char __a, vector unsigned char __b,
7177*67e74705SXin Li                vector unsigned char __c) {
7178*67e74705SXin Li   return __builtin_s390_vsbcbiq(__a, __b, __c);
7179*67e74705SXin Li }
7180*67e74705SXin Li 
7181*67e74705SXin Li /*-- vec_sum2 ---------------------------------------------------------------*/
7182*67e74705SXin Li 
7183*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_sum2(vector unsigned short __a,vector unsigned short __b)7184*67e74705SXin Li vec_sum2(vector unsigned short __a, vector unsigned short __b) {
7185*67e74705SXin Li   return __builtin_s390_vsumgh(__a, __b);
7186*67e74705SXin Li }
7187*67e74705SXin Li 
7188*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_sum2(vector unsigned int __a,vector unsigned int __b)7189*67e74705SXin Li vec_sum2(vector unsigned int __a, vector unsigned int __b) {
7190*67e74705SXin Li   return __builtin_s390_vsumgf(__a, __b);
7191*67e74705SXin Li }
7192*67e74705SXin Li 
7193*67e74705SXin Li /*-- vec_sum_u128 -----------------------------------------------------------*/
7194*67e74705SXin Li 
7195*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_sum_u128(vector unsigned int __a,vector unsigned int __b)7196*67e74705SXin Li vec_sum_u128(vector unsigned int __a, vector unsigned int __b) {
7197*67e74705SXin Li   return __builtin_s390_vsumqf(__a, __b);
7198*67e74705SXin Li }
7199*67e74705SXin Li 
7200*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_sum_u128(vector unsigned long long __a,vector unsigned long long __b)7201*67e74705SXin Li vec_sum_u128(vector unsigned long long __a, vector unsigned long long __b) {
7202*67e74705SXin Li   return __builtin_s390_vsumqg(__a, __b);
7203*67e74705SXin Li }
7204*67e74705SXin Li 
7205*67e74705SXin Li /*-- vec_sum4 ---------------------------------------------------------------*/
7206*67e74705SXin Li 
7207*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_sum4(vector unsigned char __a,vector unsigned char __b)7208*67e74705SXin Li vec_sum4(vector unsigned char __a, vector unsigned char __b) {
7209*67e74705SXin Li   return __builtin_s390_vsumb(__a, __b);
7210*67e74705SXin Li }
7211*67e74705SXin Li 
7212*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_sum4(vector unsigned short __a,vector unsigned short __b)7213*67e74705SXin Li vec_sum4(vector unsigned short __a, vector unsigned short __b) {
7214*67e74705SXin Li   return __builtin_s390_vsumh(__a, __b);
7215*67e74705SXin Li }
7216*67e74705SXin Li 
7217*67e74705SXin Li /*-- vec_test_mask ----------------------------------------------------------*/
7218*67e74705SXin Li 
7219*67e74705SXin Li static inline __ATTRS_o_ai int
vec_test_mask(vector signed char __a,vector unsigned char __b)7220*67e74705SXin Li vec_test_mask(vector signed char __a, vector unsigned char __b) {
7221*67e74705SXin Li   return __builtin_s390_vtm((vector unsigned char)__a,
7222*67e74705SXin Li                             (vector unsigned char)__b);
7223*67e74705SXin Li }
7224*67e74705SXin Li 
7225*67e74705SXin Li static inline __ATTRS_o_ai int
vec_test_mask(vector unsigned char __a,vector unsigned char __b)7226*67e74705SXin Li vec_test_mask(vector unsigned char __a, vector unsigned char __b) {
7227*67e74705SXin Li   return __builtin_s390_vtm(__a, __b);
7228*67e74705SXin Li }
7229*67e74705SXin Li 
7230*67e74705SXin Li static inline __ATTRS_o_ai int
vec_test_mask(vector signed short __a,vector unsigned short __b)7231*67e74705SXin Li vec_test_mask(vector signed short __a, vector unsigned short __b) {
7232*67e74705SXin Li   return __builtin_s390_vtm((vector unsigned char)__a,
7233*67e74705SXin Li                             (vector unsigned char)__b);
7234*67e74705SXin Li }
7235*67e74705SXin Li 
7236*67e74705SXin Li static inline __ATTRS_o_ai int
vec_test_mask(vector unsigned short __a,vector unsigned short __b)7237*67e74705SXin Li vec_test_mask(vector unsigned short __a, vector unsigned short __b) {
7238*67e74705SXin Li   return __builtin_s390_vtm((vector unsigned char)__a,
7239*67e74705SXin Li                             (vector unsigned char)__b);
7240*67e74705SXin Li }
7241*67e74705SXin Li 
7242*67e74705SXin Li static inline __ATTRS_o_ai int
vec_test_mask(vector signed int __a,vector unsigned int __b)7243*67e74705SXin Li vec_test_mask(vector signed int __a, vector unsigned int __b) {
7244*67e74705SXin Li   return __builtin_s390_vtm((vector unsigned char)__a,
7245*67e74705SXin Li                             (vector unsigned char)__b);
7246*67e74705SXin Li }
7247*67e74705SXin Li 
7248*67e74705SXin Li static inline __ATTRS_o_ai int
vec_test_mask(vector unsigned int __a,vector unsigned int __b)7249*67e74705SXin Li vec_test_mask(vector unsigned int __a, vector unsigned int __b) {
7250*67e74705SXin Li   return __builtin_s390_vtm((vector unsigned char)__a,
7251*67e74705SXin Li                             (vector unsigned char)__b);
7252*67e74705SXin Li }
7253*67e74705SXin Li 
7254*67e74705SXin Li static inline __ATTRS_o_ai int
vec_test_mask(vector signed long long __a,vector unsigned long long __b)7255*67e74705SXin Li vec_test_mask(vector signed long long __a, vector unsigned long long __b) {
7256*67e74705SXin Li   return __builtin_s390_vtm((vector unsigned char)__a,
7257*67e74705SXin Li                             (vector unsigned char)__b);
7258*67e74705SXin Li }
7259*67e74705SXin Li 
7260*67e74705SXin Li static inline __ATTRS_o_ai int
vec_test_mask(vector unsigned long long __a,vector unsigned long long __b)7261*67e74705SXin Li vec_test_mask(vector unsigned long long __a, vector unsigned long long __b) {
7262*67e74705SXin Li   return __builtin_s390_vtm((vector unsigned char)__a,
7263*67e74705SXin Li                             (vector unsigned char)__b);
7264*67e74705SXin Li }
7265*67e74705SXin Li 
7266*67e74705SXin Li static inline __ATTRS_o_ai int
vec_test_mask(vector double __a,vector unsigned long long __b)7267*67e74705SXin Li vec_test_mask(vector double __a, vector unsigned long long __b) {
7268*67e74705SXin Li   return __builtin_s390_vtm((vector unsigned char)__a,
7269*67e74705SXin Li                             (vector unsigned char)__b);
7270*67e74705SXin Li }
7271*67e74705SXin Li 
7272*67e74705SXin Li /*-- vec_madd ---------------------------------------------------------------*/
7273*67e74705SXin Li 
7274*67e74705SXin Li static inline __ATTRS_ai vector double
vec_madd(vector double __a,vector double __b,vector double __c)7275*67e74705SXin Li vec_madd(vector double __a, vector double __b, vector double __c) {
7276*67e74705SXin Li   return __builtin_s390_vfmadb(__a, __b, __c);
7277*67e74705SXin Li }
7278*67e74705SXin Li 
7279*67e74705SXin Li /*-- vec_msub ---------------------------------------------------------------*/
7280*67e74705SXin Li 
7281*67e74705SXin Li static inline __ATTRS_ai vector double
vec_msub(vector double __a,vector double __b,vector double __c)7282*67e74705SXin Li vec_msub(vector double __a, vector double __b, vector double __c) {
7283*67e74705SXin Li   return __builtin_s390_vfmsdb(__a, __b, __c);
7284*67e74705SXin Li }
7285*67e74705SXin Li 
7286*67e74705SXin Li /*-- vec_sqrt ---------------------------------------------------------------*/
7287*67e74705SXin Li 
7288*67e74705SXin Li static inline __ATTRS_ai vector double
vec_sqrt(vector double __a)7289*67e74705SXin Li vec_sqrt(vector double __a) {
7290*67e74705SXin Li   return __builtin_s390_vfsqdb(__a);
7291*67e74705SXin Li }
7292*67e74705SXin Li 
7293*67e74705SXin Li /*-- vec_ld2f ---------------------------------------------------------------*/
7294*67e74705SXin Li 
7295*67e74705SXin Li static inline __ATTRS_ai vector double
vec_ld2f(const float * __ptr)7296*67e74705SXin Li vec_ld2f(const float *__ptr) {
7297*67e74705SXin Li   typedef float __v2f32 __attribute__((__vector_size__(8)));
7298*67e74705SXin Li   return __builtin_convertvector(*(const __v2f32 *)__ptr, vector double);
7299*67e74705SXin Li }
7300*67e74705SXin Li 
7301*67e74705SXin Li /*-- vec_st2f ---------------------------------------------------------------*/
7302*67e74705SXin Li 
7303*67e74705SXin Li static inline __ATTRS_ai void
vec_st2f(vector double __a,float * __ptr)7304*67e74705SXin Li vec_st2f(vector double __a, float *__ptr) {
7305*67e74705SXin Li   typedef float __v2f32 __attribute__((__vector_size__(8)));
7306*67e74705SXin Li   *(__v2f32 *)__ptr = __builtin_convertvector(__a, __v2f32);
7307*67e74705SXin Li }
7308*67e74705SXin Li 
7309*67e74705SXin Li /*-- vec_ctd ----------------------------------------------------------------*/
7310*67e74705SXin Li 
7311*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_ctd(vector signed long long __a,int __b)7312*67e74705SXin Li vec_ctd(vector signed long long __a, int __b)
7313*67e74705SXin Li   __constant_range(__b, 0, 31) {
7314*67e74705SXin Li   vector double __conv = __builtin_convertvector(__a, vector double);
7315*67e74705SXin Li   __conv *= (vector double)(vector unsigned long long)((0x3ffULL - __b) << 52);
7316*67e74705SXin Li   return __conv;
7317*67e74705SXin Li }
7318*67e74705SXin Li 
7319*67e74705SXin Li static inline __ATTRS_o_ai vector double
vec_ctd(vector unsigned long long __a,int __b)7320*67e74705SXin Li vec_ctd(vector unsigned long long __a, int __b)
7321*67e74705SXin Li   __constant_range(__b, 0, 31) {
7322*67e74705SXin Li   vector double __conv = __builtin_convertvector(__a, vector double);
7323*67e74705SXin Li   __conv *= (vector double)(vector unsigned long long)((0x3ffULL - __b) << 52);
7324*67e74705SXin Li   return __conv;
7325*67e74705SXin Li }
7326*67e74705SXin Li 
7327*67e74705SXin Li /*-- vec_ctsl ---------------------------------------------------------------*/
7328*67e74705SXin Li 
7329*67e74705SXin Li static inline __ATTRS_o_ai vector signed long long
vec_ctsl(vector double __a,int __b)7330*67e74705SXin Li vec_ctsl(vector double __a, int __b)
7331*67e74705SXin Li   __constant_range(__b, 0, 31) {
7332*67e74705SXin Li   __a *= (vector double)(vector unsigned long long)((0x3ffULL + __b) << 52);
7333*67e74705SXin Li   return __builtin_convertvector(__a, vector signed long long);
7334*67e74705SXin Li }
7335*67e74705SXin Li 
7336*67e74705SXin Li /*-- vec_ctul ---------------------------------------------------------------*/
7337*67e74705SXin Li 
7338*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned long long
vec_ctul(vector double __a,int __b)7339*67e74705SXin Li vec_ctul(vector double __a, int __b)
7340*67e74705SXin Li   __constant_range(__b, 0, 31) {
7341*67e74705SXin Li   __a *= (vector double)(vector unsigned long long)((0x3ffULL + __b) << 52);
7342*67e74705SXin Li   return __builtin_convertvector(__a, vector unsigned long long);
7343*67e74705SXin Li }
7344*67e74705SXin Li 
7345*67e74705SXin Li /*-- vec_roundp -------------------------------------------------------------*/
7346*67e74705SXin Li 
7347*67e74705SXin Li static inline __ATTRS_ai vector double
vec_roundp(vector double __a)7348*67e74705SXin Li vec_roundp(vector double __a) {
7349*67e74705SXin Li   return __builtin_s390_vfidb(__a, 4, 6);
7350*67e74705SXin Li }
7351*67e74705SXin Li 
7352*67e74705SXin Li /*-- vec_ceil ---------------------------------------------------------------*/
7353*67e74705SXin Li 
7354*67e74705SXin Li static inline __ATTRS_ai vector double
vec_ceil(vector double __a)7355*67e74705SXin Li vec_ceil(vector double __a) {
7356*67e74705SXin Li   // On this platform, vec_ceil never triggers the IEEE-inexact exception.
7357*67e74705SXin Li   return __builtin_s390_vfidb(__a, 4, 6);
7358*67e74705SXin Li }
7359*67e74705SXin Li 
7360*67e74705SXin Li /*-- vec_roundm -------------------------------------------------------------*/
7361*67e74705SXin Li 
7362*67e74705SXin Li static inline __ATTRS_ai vector double
vec_roundm(vector double __a)7363*67e74705SXin Li vec_roundm(vector double __a) {
7364*67e74705SXin Li   return __builtin_s390_vfidb(__a, 4, 7);
7365*67e74705SXin Li }
7366*67e74705SXin Li 
7367*67e74705SXin Li /*-- vec_floor --------------------------------------------------------------*/
7368*67e74705SXin Li 
7369*67e74705SXin Li static inline __ATTRS_ai vector double
vec_floor(vector double __a)7370*67e74705SXin Li vec_floor(vector double __a) {
7371*67e74705SXin Li   // On this platform, vec_floor never triggers the IEEE-inexact exception.
7372*67e74705SXin Li   return __builtin_s390_vfidb(__a, 4, 7);
7373*67e74705SXin Li }
7374*67e74705SXin Li 
7375*67e74705SXin Li /*-- vec_roundz -------------------------------------------------------------*/
7376*67e74705SXin Li 
7377*67e74705SXin Li static inline __ATTRS_ai vector double
vec_roundz(vector double __a)7378*67e74705SXin Li vec_roundz(vector double __a) {
7379*67e74705SXin Li   return __builtin_s390_vfidb(__a, 4, 5);
7380*67e74705SXin Li }
7381*67e74705SXin Li 
7382*67e74705SXin Li /*-- vec_trunc --------------------------------------------------------------*/
7383*67e74705SXin Li 
7384*67e74705SXin Li static inline __ATTRS_ai vector double
vec_trunc(vector double __a)7385*67e74705SXin Li vec_trunc(vector double __a) {
7386*67e74705SXin Li   // On this platform, vec_trunc never triggers the IEEE-inexact exception.
7387*67e74705SXin Li   return __builtin_s390_vfidb(__a, 4, 5);
7388*67e74705SXin Li }
7389*67e74705SXin Li 
7390*67e74705SXin Li /*-- vec_roundc -------------------------------------------------------------*/
7391*67e74705SXin Li 
7392*67e74705SXin Li static inline __ATTRS_ai vector double
vec_roundc(vector double __a)7393*67e74705SXin Li vec_roundc(vector double __a) {
7394*67e74705SXin Li   return __builtin_s390_vfidb(__a, 4, 0);
7395*67e74705SXin Li }
7396*67e74705SXin Li 
7397*67e74705SXin Li /*-- vec_round --------------------------------------------------------------*/
7398*67e74705SXin Li 
7399*67e74705SXin Li static inline __ATTRS_ai vector double
vec_round(vector double __a)7400*67e74705SXin Li vec_round(vector double __a) {
7401*67e74705SXin Li   return __builtin_s390_vfidb(__a, 4, 4);
7402*67e74705SXin Li }
7403*67e74705SXin Li 
7404*67e74705SXin Li /*-- vec_fp_test_data_class -------------------------------------------------*/
7405*67e74705SXin Li 
7406*67e74705SXin Li #define vec_fp_test_data_class(X, Y, Z) \
7407*67e74705SXin Li   ((vector bool long long)__builtin_s390_vftcidb((X), (Y), (Z)))
7408*67e74705SXin Li 
7409*67e74705SXin Li /*-- vec_cp_until_zero ------------------------------------------------------*/
7410*67e74705SXin Li 
7411*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_cp_until_zero(vector signed char __a)7412*67e74705SXin Li vec_cp_until_zero(vector signed char __a) {
7413*67e74705SXin Li   return (vector signed char)__builtin_s390_vistrb((vector unsigned char)__a);
7414*67e74705SXin Li }
7415*67e74705SXin Li 
7416*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_cp_until_zero(vector bool char __a)7417*67e74705SXin Li vec_cp_until_zero(vector bool char __a) {
7418*67e74705SXin Li   return (vector bool char)__builtin_s390_vistrb((vector unsigned char)__a);
7419*67e74705SXin Li }
7420*67e74705SXin Li 
7421*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cp_until_zero(vector unsigned char __a)7422*67e74705SXin Li vec_cp_until_zero(vector unsigned char __a) {
7423*67e74705SXin Li   return __builtin_s390_vistrb(__a);
7424*67e74705SXin Li }
7425*67e74705SXin Li 
7426*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_cp_until_zero(vector signed short __a)7427*67e74705SXin Li vec_cp_until_zero(vector signed short __a) {
7428*67e74705SXin Li   return (vector signed short)__builtin_s390_vistrh((vector unsigned short)__a);
7429*67e74705SXin Li }
7430*67e74705SXin Li 
7431*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_cp_until_zero(vector bool short __a)7432*67e74705SXin Li vec_cp_until_zero(vector bool short __a) {
7433*67e74705SXin Li   return (vector bool short)__builtin_s390_vistrh((vector unsigned short)__a);
7434*67e74705SXin Li }
7435*67e74705SXin Li 
7436*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cp_until_zero(vector unsigned short __a)7437*67e74705SXin Li vec_cp_until_zero(vector unsigned short __a) {
7438*67e74705SXin Li   return __builtin_s390_vistrh(__a);
7439*67e74705SXin Li }
7440*67e74705SXin Li 
7441*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_cp_until_zero(vector signed int __a)7442*67e74705SXin Li vec_cp_until_zero(vector signed int __a) {
7443*67e74705SXin Li   return (vector signed int)__builtin_s390_vistrf((vector unsigned int)__a);
7444*67e74705SXin Li }
7445*67e74705SXin Li 
7446*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_cp_until_zero(vector bool int __a)7447*67e74705SXin Li vec_cp_until_zero(vector bool int __a) {
7448*67e74705SXin Li   return (vector bool int)__builtin_s390_vistrf((vector unsigned int)__a);
7449*67e74705SXin Li }
7450*67e74705SXin Li 
7451*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cp_until_zero(vector unsigned int __a)7452*67e74705SXin Li vec_cp_until_zero(vector unsigned int __a) {
7453*67e74705SXin Li   return __builtin_s390_vistrf(__a);
7454*67e74705SXin Li }
7455*67e74705SXin Li 
7456*67e74705SXin Li /*-- vec_cp_until_zero_cc ---------------------------------------------------*/
7457*67e74705SXin Li 
7458*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_cp_until_zero_cc(vector signed char __a,int * __cc)7459*67e74705SXin Li vec_cp_until_zero_cc(vector signed char __a, int *__cc) {
7460*67e74705SXin Li   return (vector signed char)
7461*67e74705SXin Li     __builtin_s390_vistrbs((vector unsigned char)__a, __cc);
7462*67e74705SXin Li }
7463*67e74705SXin Li 
7464*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_cp_until_zero_cc(vector bool char __a,int * __cc)7465*67e74705SXin Li vec_cp_until_zero_cc(vector bool char __a, int *__cc) {
7466*67e74705SXin Li   return (vector bool char)
7467*67e74705SXin Li     __builtin_s390_vistrbs((vector unsigned char)__a, __cc);
7468*67e74705SXin Li }
7469*67e74705SXin Li 
7470*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cp_until_zero_cc(vector unsigned char __a,int * __cc)7471*67e74705SXin Li vec_cp_until_zero_cc(vector unsigned char __a, int *__cc) {
7472*67e74705SXin Li   return __builtin_s390_vistrbs(__a, __cc);
7473*67e74705SXin Li }
7474*67e74705SXin Li 
7475*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_cp_until_zero_cc(vector signed short __a,int * __cc)7476*67e74705SXin Li vec_cp_until_zero_cc(vector signed short __a, int *__cc) {
7477*67e74705SXin Li   return (vector signed short)
7478*67e74705SXin Li     __builtin_s390_vistrhs((vector unsigned short)__a, __cc);
7479*67e74705SXin Li }
7480*67e74705SXin Li 
7481*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_cp_until_zero_cc(vector bool short __a,int * __cc)7482*67e74705SXin Li vec_cp_until_zero_cc(vector bool short __a, int *__cc) {
7483*67e74705SXin Li   return (vector bool short)
7484*67e74705SXin Li     __builtin_s390_vistrhs((vector unsigned short)__a, __cc);
7485*67e74705SXin Li }
7486*67e74705SXin Li 
7487*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cp_until_zero_cc(vector unsigned short __a,int * __cc)7488*67e74705SXin Li vec_cp_until_zero_cc(vector unsigned short __a, int *__cc) {
7489*67e74705SXin Li   return __builtin_s390_vistrhs(__a, __cc);
7490*67e74705SXin Li }
7491*67e74705SXin Li 
7492*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_cp_until_zero_cc(vector signed int __a,int * __cc)7493*67e74705SXin Li vec_cp_until_zero_cc(vector signed int __a, int *__cc) {
7494*67e74705SXin Li   return (vector signed int)
7495*67e74705SXin Li     __builtin_s390_vistrfs((vector unsigned int)__a, __cc);
7496*67e74705SXin Li }
7497*67e74705SXin Li 
7498*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_cp_until_zero_cc(vector bool int __a,int * __cc)7499*67e74705SXin Li vec_cp_until_zero_cc(vector bool int __a, int *__cc) {
7500*67e74705SXin Li   return (vector bool int)__builtin_s390_vistrfs((vector unsigned int)__a,
7501*67e74705SXin Li                                                  __cc);
7502*67e74705SXin Li }
7503*67e74705SXin Li 
7504*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cp_until_zero_cc(vector unsigned int __a,int * __cc)7505*67e74705SXin Li vec_cp_until_zero_cc(vector unsigned int __a, int *__cc) {
7506*67e74705SXin Li   return __builtin_s390_vistrfs(__a, __cc);
7507*67e74705SXin Li }
7508*67e74705SXin Li 
7509*67e74705SXin Li /*-- vec_cmpeq_idx ----------------------------------------------------------*/
7510*67e74705SXin Li 
7511*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_cmpeq_idx(vector signed char __a,vector signed char __b)7512*67e74705SXin Li vec_cmpeq_idx(vector signed char __a, vector signed char __b) {
7513*67e74705SXin Li   return (vector signed char)
7514*67e74705SXin Li     __builtin_s390_vfeeb((vector unsigned char)__a,
7515*67e74705SXin Li                          (vector unsigned char)__b);
7516*67e74705SXin Li }
7517*67e74705SXin Li 
7518*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpeq_idx(vector bool char __a,vector bool char __b)7519*67e74705SXin Li vec_cmpeq_idx(vector bool char __a, vector bool char __b) {
7520*67e74705SXin Li   return __builtin_s390_vfeeb((vector unsigned char)__a,
7521*67e74705SXin Li                               (vector unsigned char)__b);
7522*67e74705SXin Li }
7523*67e74705SXin Li 
7524*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpeq_idx(vector unsigned char __a,vector unsigned char __b)7525*67e74705SXin Li vec_cmpeq_idx(vector unsigned char __a, vector unsigned char __b) {
7526*67e74705SXin Li   return __builtin_s390_vfeeb(__a, __b);
7527*67e74705SXin Li }
7528*67e74705SXin Li 
7529*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_cmpeq_idx(vector signed short __a,vector signed short __b)7530*67e74705SXin Li vec_cmpeq_idx(vector signed short __a, vector signed short __b) {
7531*67e74705SXin Li   return (vector signed short)
7532*67e74705SXin Li     __builtin_s390_vfeeh((vector unsigned short)__a,
7533*67e74705SXin Li                          (vector unsigned short)__b);
7534*67e74705SXin Li }
7535*67e74705SXin Li 
7536*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpeq_idx(vector bool short __a,vector bool short __b)7537*67e74705SXin Li vec_cmpeq_idx(vector bool short __a, vector bool short __b) {
7538*67e74705SXin Li   return __builtin_s390_vfeeh((vector unsigned short)__a,
7539*67e74705SXin Li                               (vector unsigned short)__b);
7540*67e74705SXin Li }
7541*67e74705SXin Li 
7542*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpeq_idx(vector unsigned short __a,vector unsigned short __b)7543*67e74705SXin Li vec_cmpeq_idx(vector unsigned short __a, vector unsigned short __b) {
7544*67e74705SXin Li   return __builtin_s390_vfeeh(__a, __b);
7545*67e74705SXin Li }
7546*67e74705SXin Li 
7547*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_cmpeq_idx(vector signed int __a,vector signed int __b)7548*67e74705SXin Li vec_cmpeq_idx(vector signed int __a, vector signed int __b) {
7549*67e74705SXin Li   return (vector signed int)
7550*67e74705SXin Li     __builtin_s390_vfeef((vector unsigned int)__a,
7551*67e74705SXin Li                          (vector unsigned int)__b);
7552*67e74705SXin Li }
7553*67e74705SXin Li 
7554*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpeq_idx(vector bool int __a,vector bool int __b)7555*67e74705SXin Li vec_cmpeq_idx(vector bool int __a, vector bool int __b) {
7556*67e74705SXin Li   return __builtin_s390_vfeef((vector unsigned int)__a,
7557*67e74705SXin Li                               (vector unsigned int)__b);
7558*67e74705SXin Li }
7559*67e74705SXin Li 
7560*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpeq_idx(vector unsigned int __a,vector unsigned int __b)7561*67e74705SXin Li vec_cmpeq_idx(vector unsigned int __a, vector unsigned int __b) {
7562*67e74705SXin Li   return __builtin_s390_vfeef(__a, __b);
7563*67e74705SXin Li }
7564*67e74705SXin Li 
7565*67e74705SXin Li /*-- vec_cmpeq_idx_cc -------------------------------------------------------*/
7566*67e74705SXin Li 
7567*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_cmpeq_idx_cc(vector signed char __a,vector signed char __b,int * __cc)7568*67e74705SXin Li vec_cmpeq_idx_cc(vector signed char __a, vector signed char __b, int *__cc) {
7569*67e74705SXin Li   return (vector signed char)
7570*67e74705SXin Li     __builtin_s390_vfeebs((vector unsigned char)__a,
7571*67e74705SXin Li                           (vector unsigned char)__b, __cc);
7572*67e74705SXin Li }
7573*67e74705SXin Li 
7574*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpeq_idx_cc(vector bool char __a,vector bool char __b,int * __cc)7575*67e74705SXin Li vec_cmpeq_idx_cc(vector bool char __a, vector bool char __b, int *__cc) {
7576*67e74705SXin Li   return __builtin_s390_vfeebs((vector unsigned char)__a,
7577*67e74705SXin Li                                (vector unsigned char)__b, __cc);
7578*67e74705SXin Li }
7579*67e74705SXin Li 
7580*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpeq_idx_cc(vector unsigned char __a,vector unsigned char __b,int * __cc)7581*67e74705SXin Li vec_cmpeq_idx_cc(vector unsigned char __a, vector unsigned char __b,
7582*67e74705SXin Li                  int *__cc) {
7583*67e74705SXin Li   return __builtin_s390_vfeebs(__a, __b, __cc);
7584*67e74705SXin Li }
7585*67e74705SXin Li 
7586*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_cmpeq_idx_cc(vector signed short __a,vector signed short __b,int * __cc)7587*67e74705SXin Li vec_cmpeq_idx_cc(vector signed short __a, vector signed short __b, int *__cc) {
7588*67e74705SXin Li   return (vector signed short)
7589*67e74705SXin Li     __builtin_s390_vfeehs((vector unsigned short)__a,
7590*67e74705SXin Li                           (vector unsigned short)__b, __cc);
7591*67e74705SXin Li }
7592*67e74705SXin Li 
7593*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpeq_idx_cc(vector bool short __a,vector bool short __b,int * __cc)7594*67e74705SXin Li vec_cmpeq_idx_cc(vector bool short __a, vector bool short __b, int *__cc) {
7595*67e74705SXin Li   return __builtin_s390_vfeehs((vector unsigned short)__a,
7596*67e74705SXin Li                                (vector unsigned short)__b, __cc);
7597*67e74705SXin Li }
7598*67e74705SXin Li 
7599*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpeq_idx_cc(vector unsigned short __a,vector unsigned short __b,int * __cc)7600*67e74705SXin Li vec_cmpeq_idx_cc(vector unsigned short __a, vector unsigned short __b,
7601*67e74705SXin Li                  int *__cc) {
7602*67e74705SXin Li   return __builtin_s390_vfeehs(__a, __b, __cc);
7603*67e74705SXin Li }
7604*67e74705SXin Li 
7605*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_cmpeq_idx_cc(vector signed int __a,vector signed int __b,int * __cc)7606*67e74705SXin Li vec_cmpeq_idx_cc(vector signed int __a, vector signed int __b, int *__cc) {
7607*67e74705SXin Li   return (vector signed int)
7608*67e74705SXin Li     __builtin_s390_vfeefs((vector unsigned int)__a,
7609*67e74705SXin Li                           (vector unsigned int)__b, __cc);
7610*67e74705SXin Li }
7611*67e74705SXin Li 
7612*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpeq_idx_cc(vector bool int __a,vector bool int __b,int * __cc)7613*67e74705SXin Li vec_cmpeq_idx_cc(vector bool int __a, vector bool int __b, int *__cc) {
7614*67e74705SXin Li   return __builtin_s390_vfeefs((vector unsigned int)__a,
7615*67e74705SXin Li                                (vector unsigned int)__b, __cc);
7616*67e74705SXin Li }
7617*67e74705SXin Li 
7618*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpeq_idx_cc(vector unsigned int __a,vector unsigned int __b,int * __cc)7619*67e74705SXin Li vec_cmpeq_idx_cc(vector unsigned int __a, vector unsigned int __b, int *__cc) {
7620*67e74705SXin Li   return __builtin_s390_vfeefs(__a, __b, __cc);
7621*67e74705SXin Li }
7622*67e74705SXin Li 
7623*67e74705SXin Li /*-- vec_cmpeq_or_0_idx -----------------------------------------------------*/
7624*67e74705SXin Li 
7625*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_cmpeq_or_0_idx(vector signed char __a,vector signed char __b)7626*67e74705SXin Li vec_cmpeq_or_0_idx(vector signed char __a, vector signed char __b) {
7627*67e74705SXin Li   return (vector signed char)
7628*67e74705SXin Li     __builtin_s390_vfeezb((vector unsigned char)__a,
7629*67e74705SXin Li                           (vector unsigned char)__b);
7630*67e74705SXin Li }
7631*67e74705SXin Li 
7632*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpeq_or_0_idx(vector bool char __a,vector bool char __b)7633*67e74705SXin Li vec_cmpeq_or_0_idx(vector bool char __a, vector bool char __b) {
7634*67e74705SXin Li   return __builtin_s390_vfeezb((vector unsigned char)__a,
7635*67e74705SXin Li                                (vector unsigned char)__b);
7636*67e74705SXin Li }
7637*67e74705SXin Li 
7638*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpeq_or_0_idx(vector unsigned char __a,vector unsigned char __b)7639*67e74705SXin Li vec_cmpeq_or_0_idx(vector unsigned char __a, vector unsigned char __b) {
7640*67e74705SXin Li   return __builtin_s390_vfeezb(__a, __b);
7641*67e74705SXin Li }
7642*67e74705SXin Li 
7643*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_cmpeq_or_0_idx(vector signed short __a,vector signed short __b)7644*67e74705SXin Li vec_cmpeq_or_0_idx(vector signed short __a, vector signed short __b) {
7645*67e74705SXin Li   return (vector signed short)
7646*67e74705SXin Li     __builtin_s390_vfeezh((vector unsigned short)__a,
7647*67e74705SXin Li                           (vector unsigned short)__b);
7648*67e74705SXin Li }
7649*67e74705SXin Li 
7650*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpeq_or_0_idx(vector bool short __a,vector bool short __b)7651*67e74705SXin Li vec_cmpeq_or_0_idx(vector bool short __a, vector bool short __b) {
7652*67e74705SXin Li   return __builtin_s390_vfeezh((vector unsigned short)__a,
7653*67e74705SXin Li                                (vector unsigned short)__b);
7654*67e74705SXin Li }
7655*67e74705SXin Li 
7656*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpeq_or_0_idx(vector unsigned short __a,vector unsigned short __b)7657*67e74705SXin Li vec_cmpeq_or_0_idx(vector unsigned short __a, vector unsigned short __b) {
7658*67e74705SXin Li   return __builtin_s390_vfeezh(__a, __b);
7659*67e74705SXin Li }
7660*67e74705SXin Li 
7661*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_cmpeq_or_0_idx(vector signed int __a,vector signed int __b)7662*67e74705SXin Li vec_cmpeq_or_0_idx(vector signed int __a, vector signed int __b) {
7663*67e74705SXin Li   return (vector signed int)
7664*67e74705SXin Li     __builtin_s390_vfeezf((vector unsigned int)__a,
7665*67e74705SXin Li                           (vector unsigned int)__b);
7666*67e74705SXin Li }
7667*67e74705SXin Li 
7668*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpeq_or_0_idx(vector bool int __a,vector bool int __b)7669*67e74705SXin Li vec_cmpeq_or_0_idx(vector bool int __a, vector bool int __b) {
7670*67e74705SXin Li   return __builtin_s390_vfeezf((vector unsigned int)__a,
7671*67e74705SXin Li                                (vector unsigned int)__b);
7672*67e74705SXin Li }
7673*67e74705SXin Li 
7674*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpeq_or_0_idx(vector unsigned int __a,vector unsigned int __b)7675*67e74705SXin Li vec_cmpeq_or_0_idx(vector unsigned int __a, vector unsigned int __b) {
7676*67e74705SXin Li   return __builtin_s390_vfeezf(__a, __b);
7677*67e74705SXin Li }
7678*67e74705SXin Li 
7679*67e74705SXin Li /*-- vec_cmpeq_or_0_idx_cc --------------------------------------------------*/
7680*67e74705SXin Li 
7681*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_cmpeq_or_0_idx_cc(vector signed char __a,vector signed char __b,int * __cc)7682*67e74705SXin Li vec_cmpeq_or_0_idx_cc(vector signed char __a, vector signed char __b,
7683*67e74705SXin Li                       int *__cc) {
7684*67e74705SXin Li   return (vector signed char)
7685*67e74705SXin Li     __builtin_s390_vfeezbs((vector unsigned char)__a,
7686*67e74705SXin Li                            (vector unsigned char)__b, __cc);
7687*67e74705SXin Li }
7688*67e74705SXin Li 
7689*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpeq_or_0_idx_cc(vector bool char __a,vector bool char __b,int * __cc)7690*67e74705SXin Li vec_cmpeq_or_0_idx_cc(vector bool char __a, vector bool char __b, int *__cc) {
7691*67e74705SXin Li   return __builtin_s390_vfeezbs((vector unsigned char)__a,
7692*67e74705SXin Li                                 (vector unsigned char)__b, __cc);
7693*67e74705SXin Li }
7694*67e74705SXin Li 
7695*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpeq_or_0_idx_cc(vector unsigned char __a,vector unsigned char __b,int * __cc)7696*67e74705SXin Li vec_cmpeq_or_0_idx_cc(vector unsigned char __a, vector unsigned char __b,
7697*67e74705SXin Li                       int *__cc) {
7698*67e74705SXin Li   return __builtin_s390_vfeezbs(__a, __b, __cc);
7699*67e74705SXin Li }
7700*67e74705SXin Li 
7701*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_cmpeq_or_0_idx_cc(vector signed short __a,vector signed short __b,int * __cc)7702*67e74705SXin Li vec_cmpeq_or_0_idx_cc(vector signed short __a, vector signed short __b,
7703*67e74705SXin Li                       int *__cc) {
7704*67e74705SXin Li   return (vector signed short)
7705*67e74705SXin Li     __builtin_s390_vfeezhs((vector unsigned short)__a,
7706*67e74705SXin Li                            (vector unsigned short)__b, __cc);
7707*67e74705SXin Li }
7708*67e74705SXin Li 
7709*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpeq_or_0_idx_cc(vector bool short __a,vector bool short __b,int * __cc)7710*67e74705SXin Li vec_cmpeq_or_0_idx_cc(vector bool short __a, vector bool short __b, int *__cc) {
7711*67e74705SXin Li   return __builtin_s390_vfeezhs((vector unsigned short)__a,
7712*67e74705SXin Li                                 (vector unsigned short)__b, __cc);
7713*67e74705SXin Li }
7714*67e74705SXin Li 
7715*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpeq_or_0_idx_cc(vector unsigned short __a,vector unsigned short __b,int * __cc)7716*67e74705SXin Li vec_cmpeq_or_0_idx_cc(vector unsigned short __a, vector unsigned short __b,
7717*67e74705SXin Li                       int *__cc) {
7718*67e74705SXin Li   return __builtin_s390_vfeezhs(__a, __b, __cc);
7719*67e74705SXin Li }
7720*67e74705SXin Li 
7721*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_cmpeq_or_0_idx_cc(vector signed int __a,vector signed int __b,int * __cc)7722*67e74705SXin Li vec_cmpeq_or_0_idx_cc(vector signed int __a, vector signed int __b, int *__cc) {
7723*67e74705SXin Li   return (vector signed int)
7724*67e74705SXin Li     __builtin_s390_vfeezfs((vector unsigned int)__a,
7725*67e74705SXin Li                            (vector unsigned int)__b, __cc);
7726*67e74705SXin Li }
7727*67e74705SXin Li 
7728*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpeq_or_0_idx_cc(vector bool int __a,vector bool int __b,int * __cc)7729*67e74705SXin Li vec_cmpeq_or_0_idx_cc(vector bool int __a, vector bool int __b, int *__cc) {
7730*67e74705SXin Li   return __builtin_s390_vfeezfs((vector unsigned int)__a,
7731*67e74705SXin Li                                 (vector unsigned int)__b, __cc);
7732*67e74705SXin Li }
7733*67e74705SXin Li 
7734*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpeq_or_0_idx_cc(vector unsigned int __a,vector unsigned int __b,int * __cc)7735*67e74705SXin Li vec_cmpeq_or_0_idx_cc(vector unsigned int __a, vector unsigned int __b,
7736*67e74705SXin Li                       int *__cc) {
7737*67e74705SXin Li   return __builtin_s390_vfeezfs(__a, __b, __cc);
7738*67e74705SXin Li }
7739*67e74705SXin Li 
7740*67e74705SXin Li /*-- vec_cmpne_idx ----------------------------------------------------------*/
7741*67e74705SXin Li 
7742*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_cmpne_idx(vector signed char __a,vector signed char __b)7743*67e74705SXin Li vec_cmpne_idx(vector signed char __a, vector signed char __b) {
7744*67e74705SXin Li   return (vector signed char)
7745*67e74705SXin Li     __builtin_s390_vfeneb((vector unsigned char)__a,
7746*67e74705SXin Li                           (vector unsigned char)__b);
7747*67e74705SXin Li }
7748*67e74705SXin Li 
7749*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpne_idx(vector bool char __a,vector bool char __b)7750*67e74705SXin Li vec_cmpne_idx(vector bool char __a, vector bool char __b) {
7751*67e74705SXin Li   return __builtin_s390_vfeneb((vector unsigned char)__a,
7752*67e74705SXin Li                                (vector unsigned char)__b);
7753*67e74705SXin Li }
7754*67e74705SXin Li 
7755*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpne_idx(vector unsigned char __a,vector unsigned char __b)7756*67e74705SXin Li vec_cmpne_idx(vector unsigned char __a, vector unsigned char __b) {
7757*67e74705SXin Li   return __builtin_s390_vfeneb(__a, __b);
7758*67e74705SXin Li }
7759*67e74705SXin Li 
7760*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_cmpne_idx(vector signed short __a,vector signed short __b)7761*67e74705SXin Li vec_cmpne_idx(vector signed short __a, vector signed short __b) {
7762*67e74705SXin Li   return (vector signed short)
7763*67e74705SXin Li     __builtin_s390_vfeneh((vector unsigned short)__a,
7764*67e74705SXin Li                           (vector unsigned short)__b);
7765*67e74705SXin Li }
7766*67e74705SXin Li 
7767*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpne_idx(vector bool short __a,vector bool short __b)7768*67e74705SXin Li vec_cmpne_idx(vector bool short __a, vector bool short __b) {
7769*67e74705SXin Li   return __builtin_s390_vfeneh((vector unsigned short)__a,
7770*67e74705SXin Li                                (vector unsigned short)__b);
7771*67e74705SXin Li }
7772*67e74705SXin Li 
7773*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpne_idx(vector unsigned short __a,vector unsigned short __b)7774*67e74705SXin Li vec_cmpne_idx(vector unsigned short __a, vector unsigned short __b) {
7775*67e74705SXin Li   return __builtin_s390_vfeneh(__a, __b);
7776*67e74705SXin Li }
7777*67e74705SXin Li 
7778*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_cmpne_idx(vector signed int __a,vector signed int __b)7779*67e74705SXin Li vec_cmpne_idx(vector signed int __a, vector signed int __b) {
7780*67e74705SXin Li   return (vector signed int)
7781*67e74705SXin Li     __builtin_s390_vfenef((vector unsigned int)__a,
7782*67e74705SXin Li                           (vector unsigned int)__b);
7783*67e74705SXin Li }
7784*67e74705SXin Li 
7785*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpne_idx(vector bool int __a,vector bool int __b)7786*67e74705SXin Li vec_cmpne_idx(vector bool int __a, vector bool int __b) {
7787*67e74705SXin Li   return __builtin_s390_vfenef((vector unsigned int)__a,
7788*67e74705SXin Li                                (vector unsigned int)__b);
7789*67e74705SXin Li }
7790*67e74705SXin Li 
7791*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpne_idx(vector unsigned int __a,vector unsigned int __b)7792*67e74705SXin Li vec_cmpne_idx(vector unsigned int __a, vector unsigned int __b) {
7793*67e74705SXin Li   return __builtin_s390_vfenef(__a, __b);
7794*67e74705SXin Li }
7795*67e74705SXin Li 
7796*67e74705SXin Li /*-- vec_cmpne_idx_cc -------------------------------------------------------*/
7797*67e74705SXin Li 
7798*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_cmpne_idx_cc(vector signed char __a,vector signed char __b,int * __cc)7799*67e74705SXin Li vec_cmpne_idx_cc(vector signed char __a, vector signed char __b, int *__cc) {
7800*67e74705SXin Li   return (vector signed char)
7801*67e74705SXin Li     __builtin_s390_vfenebs((vector unsigned char)__a,
7802*67e74705SXin Li                            (vector unsigned char)__b, __cc);
7803*67e74705SXin Li }
7804*67e74705SXin Li 
7805*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpne_idx_cc(vector bool char __a,vector bool char __b,int * __cc)7806*67e74705SXin Li vec_cmpne_idx_cc(vector bool char __a, vector bool char __b, int *__cc) {
7807*67e74705SXin Li   return __builtin_s390_vfenebs((vector unsigned char)__a,
7808*67e74705SXin Li                                 (vector unsigned char)__b, __cc);
7809*67e74705SXin Li }
7810*67e74705SXin Li 
7811*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpne_idx_cc(vector unsigned char __a,vector unsigned char __b,int * __cc)7812*67e74705SXin Li vec_cmpne_idx_cc(vector unsigned char __a, vector unsigned char __b,
7813*67e74705SXin Li                  int *__cc) {
7814*67e74705SXin Li   return __builtin_s390_vfenebs(__a, __b, __cc);
7815*67e74705SXin Li }
7816*67e74705SXin Li 
7817*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_cmpne_idx_cc(vector signed short __a,vector signed short __b,int * __cc)7818*67e74705SXin Li vec_cmpne_idx_cc(vector signed short __a, vector signed short __b, int *__cc) {
7819*67e74705SXin Li   return (vector signed short)
7820*67e74705SXin Li     __builtin_s390_vfenehs((vector unsigned short)__a,
7821*67e74705SXin Li                            (vector unsigned short)__b, __cc);
7822*67e74705SXin Li }
7823*67e74705SXin Li 
7824*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpne_idx_cc(vector bool short __a,vector bool short __b,int * __cc)7825*67e74705SXin Li vec_cmpne_idx_cc(vector bool short __a, vector bool short __b, int *__cc) {
7826*67e74705SXin Li   return __builtin_s390_vfenehs((vector unsigned short)__a,
7827*67e74705SXin Li                                 (vector unsigned short)__b, __cc);
7828*67e74705SXin Li }
7829*67e74705SXin Li 
7830*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpne_idx_cc(vector unsigned short __a,vector unsigned short __b,int * __cc)7831*67e74705SXin Li vec_cmpne_idx_cc(vector unsigned short __a, vector unsigned short __b,
7832*67e74705SXin Li                  int *__cc) {
7833*67e74705SXin Li   return __builtin_s390_vfenehs(__a, __b, __cc);
7834*67e74705SXin Li }
7835*67e74705SXin Li 
7836*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_cmpne_idx_cc(vector signed int __a,vector signed int __b,int * __cc)7837*67e74705SXin Li vec_cmpne_idx_cc(vector signed int __a, vector signed int __b, int *__cc) {
7838*67e74705SXin Li   return (vector signed int)
7839*67e74705SXin Li     __builtin_s390_vfenefs((vector unsigned int)__a,
7840*67e74705SXin Li                            (vector unsigned int)__b, __cc);
7841*67e74705SXin Li }
7842*67e74705SXin Li 
7843*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpne_idx_cc(vector bool int __a,vector bool int __b,int * __cc)7844*67e74705SXin Li vec_cmpne_idx_cc(vector bool int __a, vector bool int __b, int *__cc) {
7845*67e74705SXin Li   return __builtin_s390_vfenefs((vector unsigned int)__a,
7846*67e74705SXin Li                                 (vector unsigned int)__b, __cc);
7847*67e74705SXin Li }
7848*67e74705SXin Li 
7849*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpne_idx_cc(vector unsigned int __a,vector unsigned int __b,int * __cc)7850*67e74705SXin Li vec_cmpne_idx_cc(vector unsigned int __a, vector unsigned int __b, int *__cc) {
7851*67e74705SXin Li   return __builtin_s390_vfenefs(__a, __b, __cc);
7852*67e74705SXin Li }
7853*67e74705SXin Li 
7854*67e74705SXin Li /*-- vec_cmpne_or_0_idx -----------------------------------------------------*/
7855*67e74705SXin Li 
7856*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_cmpne_or_0_idx(vector signed char __a,vector signed char __b)7857*67e74705SXin Li vec_cmpne_or_0_idx(vector signed char __a, vector signed char __b) {
7858*67e74705SXin Li   return (vector signed char)
7859*67e74705SXin Li     __builtin_s390_vfenezb((vector unsigned char)__a,
7860*67e74705SXin Li                            (vector unsigned char)__b);
7861*67e74705SXin Li }
7862*67e74705SXin Li 
7863*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpne_or_0_idx(vector bool char __a,vector bool char __b)7864*67e74705SXin Li vec_cmpne_or_0_idx(vector bool char __a, vector bool char __b) {
7865*67e74705SXin Li   return __builtin_s390_vfenezb((vector unsigned char)__a,
7866*67e74705SXin Li                                 (vector unsigned char)__b);
7867*67e74705SXin Li }
7868*67e74705SXin Li 
7869*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpne_or_0_idx(vector unsigned char __a,vector unsigned char __b)7870*67e74705SXin Li vec_cmpne_or_0_idx(vector unsigned char __a, vector unsigned char __b) {
7871*67e74705SXin Li   return __builtin_s390_vfenezb(__a, __b);
7872*67e74705SXin Li }
7873*67e74705SXin Li 
7874*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_cmpne_or_0_idx(vector signed short __a,vector signed short __b)7875*67e74705SXin Li vec_cmpne_or_0_idx(vector signed short __a, vector signed short __b) {
7876*67e74705SXin Li   return (vector signed short)
7877*67e74705SXin Li     __builtin_s390_vfenezh((vector unsigned short)__a,
7878*67e74705SXin Li                            (vector unsigned short)__b);
7879*67e74705SXin Li }
7880*67e74705SXin Li 
7881*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpne_or_0_idx(vector bool short __a,vector bool short __b)7882*67e74705SXin Li vec_cmpne_or_0_idx(vector bool short __a, vector bool short __b) {
7883*67e74705SXin Li   return __builtin_s390_vfenezh((vector unsigned short)__a,
7884*67e74705SXin Li                                 (vector unsigned short)__b);
7885*67e74705SXin Li }
7886*67e74705SXin Li 
7887*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpne_or_0_idx(vector unsigned short __a,vector unsigned short __b)7888*67e74705SXin Li vec_cmpne_or_0_idx(vector unsigned short __a, vector unsigned short __b) {
7889*67e74705SXin Li   return __builtin_s390_vfenezh(__a, __b);
7890*67e74705SXin Li }
7891*67e74705SXin Li 
7892*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_cmpne_or_0_idx(vector signed int __a,vector signed int __b)7893*67e74705SXin Li vec_cmpne_or_0_idx(vector signed int __a, vector signed int __b) {
7894*67e74705SXin Li   return (vector signed int)
7895*67e74705SXin Li     __builtin_s390_vfenezf((vector unsigned int)__a,
7896*67e74705SXin Li                            (vector unsigned int)__b);
7897*67e74705SXin Li }
7898*67e74705SXin Li 
7899*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpne_or_0_idx(vector bool int __a,vector bool int __b)7900*67e74705SXin Li vec_cmpne_or_0_idx(vector bool int __a, vector bool int __b) {
7901*67e74705SXin Li   return __builtin_s390_vfenezf((vector unsigned int)__a,
7902*67e74705SXin Li                                 (vector unsigned int)__b);
7903*67e74705SXin Li }
7904*67e74705SXin Li 
7905*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpne_or_0_idx(vector unsigned int __a,vector unsigned int __b)7906*67e74705SXin Li vec_cmpne_or_0_idx(vector unsigned int __a, vector unsigned int __b) {
7907*67e74705SXin Li   return __builtin_s390_vfenezf(__a, __b);
7908*67e74705SXin Li }
7909*67e74705SXin Li 
7910*67e74705SXin Li /*-- vec_cmpne_or_0_idx_cc --------------------------------------------------*/
7911*67e74705SXin Li 
7912*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_cmpne_or_0_idx_cc(vector signed char __a,vector signed char __b,int * __cc)7913*67e74705SXin Li vec_cmpne_or_0_idx_cc(vector signed char __a, vector signed char __b,
7914*67e74705SXin Li                       int *__cc) {
7915*67e74705SXin Li   return (vector signed char)
7916*67e74705SXin Li     __builtin_s390_vfenezbs((vector unsigned char)__a,
7917*67e74705SXin Li                             (vector unsigned char)__b, __cc);
7918*67e74705SXin Li }
7919*67e74705SXin Li 
7920*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpne_or_0_idx_cc(vector bool char __a,vector bool char __b,int * __cc)7921*67e74705SXin Li vec_cmpne_or_0_idx_cc(vector bool char __a, vector bool char __b, int *__cc) {
7922*67e74705SXin Li   return __builtin_s390_vfenezbs((vector unsigned char)__a,
7923*67e74705SXin Li                                  (vector unsigned char)__b, __cc);
7924*67e74705SXin Li }
7925*67e74705SXin Li 
7926*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpne_or_0_idx_cc(vector unsigned char __a,vector unsigned char __b,int * __cc)7927*67e74705SXin Li vec_cmpne_or_0_idx_cc(vector unsigned char __a, vector unsigned char __b,
7928*67e74705SXin Li                       int *__cc) {
7929*67e74705SXin Li   return __builtin_s390_vfenezbs(__a, __b, __cc);
7930*67e74705SXin Li }
7931*67e74705SXin Li 
7932*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_cmpne_or_0_idx_cc(vector signed short __a,vector signed short __b,int * __cc)7933*67e74705SXin Li vec_cmpne_or_0_idx_cc(vector signed short __a, vector signed short __b,
7934*67e74705SXin Li                       int *__cc) {
7935*67e74705SXin Li   return (vector signed short)
7936*67e74705SXin Li     __builtin_s390_vfenezhs((vector unsigned short)__a,
7937*67e74705SXin Li                             (vector unsigned short)__b, __cc);
7938*67e74705SXin Li }
7939*67e74705SXin Li 
7940*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpne_or_0_idx_cc(vector bool short __a,vector bool short __b,int * __cc)7941*67e74705SXin Li vec_cmpne_or_0_idx_cc(vector bool short __a, vector bool short __b, int *__cc) {
7942*67e74705SXin Li   return __builtin_s390_vfenezhs((vector unsigned short)__a,
7943*67e74705SXin Li                                  (vector unsigned short)__b, __cc);
7944*67e74705SXin Li }
7945*67e74705SXin Li 
7946*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpne_or_0_idx_cc(vector unsigned short __a,vector unsigned short __b,int * __cc)7947*67e74705SXin Li vec_cmpne_or_0_idx_cc(vector unsigned short __a, vector unsigned short __b,
7948*67e74705SXin Li                       int *__cc) {
7949*67e74705SXin Li   return __builtin_s390_vfenezhs(__a, __b, __cc);
7950*67e74705SXin Li }
7951*67e74705SXin Li 
7952*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_cmpne_or_0_idx_cc(vector signed int __a,vector signed int __b,int * __cc)7953*67e74705SXin Li vec_cmpne_or_0_idx_cc(vector signed int __a, vector signed int __b, int *__cc) {
7954*67e74705SXin Li   return (vector signed int)
7955*67e74705SXin Li     __builtin_s390_vfenezfs((vector unsigned int)__a,
7956*67e74705SXin Li                             (vector unsigned int)__b, __cc);
7957*67e74705SXin Li }
7958*67e74705SXin Li 
7959*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpne_or_0_idx_cc(vector bool int __a,vector bool int __b,int * __cc)7960*67e74705SXin Li vec_cmpne_or_0_idx_cc(vector bool int __a, vector bool int __b, int *__cc) {
7961*67e74705SXin Li   return __builtin_s390_vfenezfs((vector unsigned int)__a,
7962*67e74705SXin Li                                  (vector unsigned int)__b, __cc);
7963*67e74705SXin Li }
7964*67e74705SXin Li 
7965*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpne_or_0_idx_cc(vector unsigned int __a,vector unsigned int __b,int * __cc)7966*67e74705SXin Li vec_cmpne_or_0_idx_cc(vector unsigned int __a, vector unsigned int __b,
7967*67e74705SXin Li                       int *__cc) {
7968*67e74705SXin Li   return __builtin_s390_vfenezfs(__a, __b, __cc);
7969*67e74705SXin Li }
7970*67e74705SXin Li 
7971*67e74705SXin Li /*-- vec_cmprg --------------------------------------------------------------*/
7972*67e74705SXin Li 
7973*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_cmprg(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)7974*67e74705SXin Li vec_cmprg(vector unsigned char __a, vector unsigned char __b,
7975*67e74705SXin Li           vector unsigned char __c) {
7976*67e74705SXin Li   return (vector bool char)__builtin_s390_vstrcb(__a, __b, __c, 4);
7977*67e74705SXin Li }
7978*67e74705SXin Li 
7979*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_cmprg(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)7980*67e74705SXin Li vec_cmprg(vector unsigned short __a, vector unsigned short __b,
7981*67e74705SXin Li           vector unsigned short __c) {
7982*67e74705SXin Li   return (vector bool short)__builtin_s390_vstrch(__a, __b, __c, 4);
7983*67e74705SXin Li }
7984*67e74705SXin Li 
7985*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_cmprg(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)7986*67e74705SXin Li vec_cmprg(vector unsigned int __a, vector unsigned int __b,
7987*67e74705SXin Li           vector unsigned int __c) {
7988*67e74705SXin Li   return (vector bool int)__builtin_s390_vstrcf(__a, __b, __c, 4);
7989*67e74705SXin Li }
7990*67e74705SXin Li 
7991*67e74705SXin Li /*-- vec_cmprg_cc -----------------------------------------------------------*/
7992*67e74705SXin Li 
7993*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_cmprg_cc(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c,int * __cc)7994*67e74705SXin Li vec_cmprg_cc(vector unsigned char __a, vector unsigned char __b,
7995*67e74705SXin Li              vector unsigned char __c, int *__cc) {
7996*67e74705SXin Li   return (vector bool char)__builtin_s390_vstrcbs(__a, __b, __c, 4, __cc);
7997*67e74705SXin Li }
7998*67e74705SXin Li 
7999*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_cmprg_cc(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c,int * __cc)8000*67e74705SXin Li vec_cmprg_cc(vector unsigned short __a, vector unsigned short __b,
8001*67e74705SXin Li              vector unsigned short __c, int *__cc) {
8002*67e74705SXin Li   return (vector bool short)__builtin_s390_vstrchs(__a, __b, __c, 4, __cc);
8003*67e74705SXin Li }
8004*67e74705SXin Li 
8005*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_cmprg_cc(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c,int * __cc)8006*67e74705SXin Li vec_cmprg_cc(vector unsigned int __a, vector unsigned int __b,
8007*67e74705SXin Li              vector unsigned int __c, int *__cc) {
8008*67e74705SXin Li   return (vector bool int)__builtin_s390_vstrcfs(__a, __b, __c, 4, __cc);
8009*67e74705SXin Li }
8010*67e74705SXin Li 
8011*67e74705SXin Li /*-- vec_cmprg_idx ----------------------------------------------------------*/
8012*67e74705SXin Li 
8013*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmprg_idx(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)8014*67e74705SXin Li vec_cmprg_idx(vector unsigned char __a, vector unsigned char __b,
8015*67e74705SXin Li               vector unsigned char __c) {
8016*67e74705SXin Li   return __builtin_s390_vstrcb(__a, __b, __c, 0);
8017*67e74705SXin Li }
8018*67e74705SXin Li 
8019*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmprg_idx(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)8020*67e74705SXin Li vec_cmprg_idx(vector unsigned short __a, vector unsigned short __b,
8021*67e74705SXin Li               vector unsigned short __c) {
8022*67e74705SXin Li   return __builtin_s390_vstrch(__a, __b, __c, 0);
8023*67e74705SXin Li }
8024*67e74705SXin Li 
8025*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmprg_idx(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)8026*67e74705SXin Li vec_cmprg_idx(vector unsigned int __a, vector unsigned int __b,
8027*67e74705SXin Li               vector unsigned int __c) {
8028*67e74705SXin Li   return __builtin_s390_vstrcf(__a, __b, __c, 0);
8029*67e74705SXin Li }
8030*67e74705SXin Li 
8031*67e74705SXin Li /*-- vec_cmprg_idx_cc -------------------------------------------------------*/
8032*67e74705SXin Li 
8033*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmprg_idx_cc(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c,int * __cc)8034*67e74705SXin Li vec_cmprg_idx_cc(vector unsigned char __a, vector unsigned char __b,
8035*67e74705SXin Li                  vector unsigned char __c, int *__cc) {
8036*67e74705SXin Li   return __builtin_s390_vstrcbs(__a, __b, __c, 0, __cc);
8037*67e74705SXin Li }
8038*67e74705SXin Li 
8039*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmprg_idx_cc(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c,int * __cc)8040*67e74705SXin Li vec_cmprg_idx_cc(vector unsigned short __a, vector unsigned short __b,
8041*67e74705SXin Li                  vector unsigned short __c, int *__cc) {
8042*67e74705SXin Li   return __builtin_s390_vstrchs(__a, __b, __c, 0, __cc);
8043*67e74705SXin Li }
8044*67e74705SXin Li 
8045*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmprg_idx_cc(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c,int * __cc)8046*67e74705SXin Li vec_cmprg_idx_cc(vector unsigned int __a, vector unsigned int __b,
8047*67e74705SXin Li                  vector unsigned int __c, int *__cc) {
8048*67e74705SXin Li   return __builtin_s390_vstrcfs(__a, __b, __c, 0, __cc);
8049*67e74705SXin Li }
8050*67e74705SXin Li 
8051*67e74705SXin Li /*-- vec_cmprg_or_0_idx -----------------------------------------------------*/
8052*67e74705SXin Li 
8053*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmprg_or_0_idx(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)8054*67e74705SXin Li vec_cmprg_or_0_idx(vector unsigned char __a, vector unsigned char __b,
8055*67e74705SXin Li                    vector unsigned char __c) {
8056*67e74705SXin Li   return __builtin_s390_vstrczb(__a, __b, __c, 0);
8057*67e74705SXin Li }
8058*67e74705SXin Li 
8059*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmprg_or_0_idx(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)8060*67e74705SXin Li vec_cmprg_or_0_idx(vector unsigned short __a, vector unsigned short __b,
8061*67e74705SXin Li                    vector unsigned short __c) {
8062*67e74705SXin Li   return __builtin_s390_vstrczh(__a, __b, __c, 0);
8063*67e74705SXin Li }
8064*67e74705SXin Li 
8065*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmprg_or_0_idx(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)8066*67e74705SXin Li vec_cmprg_or_0_idx(vector unsigned int __a, vector unsigned int __b,
8067*67e74705SXin Li                    vector unsigned int __c) {
8068*67e74705SXin Li   return __builtin_s390_vstrczf(__a, __b, __c, 0);
8069*67e74705SXin Li }
8070*67e74705SXin Li 
8071*67e74705SXin Li /*-- vec_cmprg_or_0_idx_cc --------------------------------------------------*/
8072*67e74705SXin Li 
8073*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmprg_or_0_idx_cc(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c,int * __cc)8074*67e74705SXin Li vec_cmprg_or_0_idx_cc(vector unsigned char __a, vector unsigned char __b,
8075*67e74705SXin Li                       vector unsigned char __c, int *__cc) {
8076*67e74705SXin Li   return __builtin_s390_vstrczbs(__a, __b, __c, 0, __cc);
8077*67e74705SXin Li }
8078*67e74705SXin Li 
8079*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmprg_or_0_idx_cc(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c,int * __cc)8080*67e74705SXin Li vec_cmprg_or_0_idx_cc(vector unsigned short __a, vector unsigned short __b,
8081*67e74705SXin Li                       vector unsigned short __c, int *__cc) {
8082*67e74705SXin Li   return __builtin_s390_vstrczhs(__a, __b, __c, 0, __cc);
8083*67e74705SXin Li }
8084*67e74705SXin Li 
8085*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmprg_or_0_idx_cc(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c,int * __cc)8086*67e74705SXin Li vec_cmprg_or_0_idx_cc(vector unsigned int __a, vector unsigned int __b,
8087*67e74705SXin Li                       vector unsigned int __c, int *__cc) {
8088*67e74705SXin Li   return __builtin_s390_vstrczfs(__a, __b, __c, 0, __cc);
8089*67e74705SXin Li }
8090*67e74705SXin Li 
8091*67e74705SXin Li /*-- vec_cmpnrg -------------------------------------------------------------*/
8092*67e74705SXin Li 
8093*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_cmpnrg(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)8094*67e74705SXin Li vec_cmpnrg(vector unsigned char __a, vector unsigned char __b,
8095*67e74705SXin Li            vector unsigned char __c) {
8096*67e74705SXin Li   return (vector bool char)__builtin_s390_vstrcb(__a, __b, __c, 12);
8097*67e74705SXin Li }
8098*67e74705SXin Li 
8099*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_cmpnrg(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)8100*67e74705SXin Li vec_cmpnrg(vector unsigned short __a, vector unsigned short __b,
8101*67e74705SXin Li            vector unsigned short __c) {
8102*67e74705SXin Li   return (vector bool short)__builtin_s390_vstrch(__a, __b, __c, 12);
8103*67e74705SXin Li }
8104*67e74705SXin Li 
8105*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_cmpnrg(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)8106*67e74705SXin Li vec_cmpnrg(vector unsigned int __a, vector unsigned int __b,
8107*67e74705SXin Li            vector unsigned int __c) {
8108*67e74705SXin Li   return (vector bool int)__builtin_s390_vstrcf(__a, __b, __c, 12);
8109*67e74705SXin Li }
8110*67e74705SXin Li 
8111*67e74705SXin Li /*-- vec_cmpnrg_cc ----------------------------------------------------------*/
8112*67e74705SXin Li 
8113*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_cmpnrg_cc(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c,int * __cc)8114*67e74705SXin Li vec_cmpnrg_cc(vector unsigned char __a, vector unsigned char __b,
8115*67e74705SXin Li               vector unsigned char __c, int *__cc) {
8116*67e74705SXin Li   return (vector bool char)__builtin_s390_vstrcbs(__a, __b, __c, 12, __cc);
8117*67e74705SXin Li }
8118*67e74705SXin Li 
8119*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_cmpnrg_cc(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c,int * __cc)8120*67e74705SXin Li vec_cmpnrg_cc(vector unsigned short __a, vector unsigned short __b,
8121*67e74705SXin Li               vector unsigned short __c, int *__cc) {
8122*67e74705SXin Li   return (vector bool short)__builtin_s390_vstrchs(__a, __b, __c, 12, __cc);
8123*67e74705SXin Li }
8124*67e74705SXin Li 
8125*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_cmpnrg_cc(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c,int * __cc)8126*67e74705SXin Li vec_cmpnrg_cc(vector unsigned int __a, vector unsigned int __b,
8127*67e74705SXin Li               vector unsigned int __c, int *__cc) {
8128*67e74705SXin Li   return (vector bool int)__builtin_s390_vstrcfs(__a, __b, __c, 12, __cc);
8129*67e74705SXin Li }
8130*67e74705SXin Li 
8131*67e74705SXin Li /*-- vec_cmpnrg_idx ---------------------------------------------------------*/
8132*67e74705SXin Li 
8133*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpnrg_idx(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)8134*67e74705SXin Li vec_cmpnrg_idx(vector unsigned char __a, vector unsigned char __b,
8135*67e74705SXin Li                vector unsigned char __c) {
8136*67e74705SXin Li   return __builtin_s390_vstrcb(__a, __b, __c, 8);
8137*67e74705SXin Li }
8138*67e74705SXin Li 
8139*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpnrg_idx(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)8140*67e74705SXin Li vec_cmpnrg_idx(vector unsigned short __a, vector unsigned short __b,
8141*67e74705SXin Li                vector unsigned short __c) {
8142*67e74705SXin Li   return __builtin_s390_vstrch(__a, __b, __c, 8);
8143*67e74705SXin Li }
8144*67e74705SXin Li 
8145*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpnrg_idx(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)8146*67e74705SXin Li vec_cmpnrg_idx(vector unsigned int __a, vector unsigned int __b,
8147*67e74705SXin Li                vector unsigned int __c) {
8148*67e74705SXin Li   return __builtin_s390_vstrcf(__a, __b, __c, 8);
8149*67e74705SXin Li }
8150*67e74705SXin Li 
8151*67e74705SXin Li /*-- vec_cmpnrg_idx_cc ------------------------------------------------------*/
8152*67e74705SXin Li 
8153*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpnrg_idx_cc(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c,int * __cc)8154*67e74705SXin Li vec_cmpnrg_idx_cc(vector unsigned char __a, vector unsigned char __b,
8155*67e74705SXin Li                   vector unsigned char __c, int *__cc) {
8156*67e74705SXin Li   return __builtin_s390_vstrcbs(__a, __b, __c, 8, __cc);
8157*67e74705SXin Li }
8158*67e74705SXin Li 
8159*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpnrg_idx_cc(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c,int * __cc)8160*67e74705SXin Li vec_cmpnrg_idx_cc(vector unsigned short __a, vector unsigned short __b,
8161*67e74705SXin Li                   vector unsigned short __c, int *__cc) {
8162*67e74705SXin Li   return __builtin_s390_vstrchs(__a, __b, __c, 8, __cc);
8163*67e74705SXin Li }
8164*67e74705SXin Li 
8165*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpnrg_idx_cc(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c,int * __cc)8166*67e74705SXin Li vec_cmpnrg_idx_cc(vector unsigned int __a, vector unsigned int __b,
8167*67e74705SXin Li                   vector unsigned int __c, int *__cc) {
8168*67e74705SXin Li   return __builtin_s390_vstrcfs(__a, __b, __c, 8, __cc);
8169*67e74705SXin Li }
8170*67e74705SXin Li 
8171*67e74705SXin Li /*-- vec_cmpnrg_or_0_idx ----------------------------------------------------*/
8172*67e74705SXin Li 
8173*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpnrg_or_0_idx(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)8174*67e74705SXin Li vec_cmpnrg_or_0_idx(vector unsigned char __a, vector unsigned char __b,
8175*67e74705SXin Li                     vector unsigned char __c) {
8176*67e74705SXin Li   return __builtin_s390_vstrczb(__a, __b, __c, 8);
8177*67e74705SXin Li }
8178*67e74705SXin Li 
8179*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpnrg_or_0_idx(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)8180*67e74705SXin Li vec_cmpnrg_or_0_idx(vector unsigned short __a, vector unsigned short __b,
8181*67e74705SXin Li                     vector unsigned short __c) {
8182*67e74705SXin Li   return __builtin_s390_vstrczh(__a, __b, __c, 8);
8183*67e74705SXin Li }
8184*67e74705SXin Li 
8185*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpnrg_or_0_idx(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)8186*67e74705SXin Li vec_cmpnrg_or_0_idx(vector unsigned int __a, vector unsigned int __b,
8187*67e74705SXin Li                     vector unsigned int __c) {
8188*67e74705SXin Li   return __builtin_s390_vstrczf(__a, __b, __c, 8);
8189*67e74705SXin Li }
8190*67e74705SXin Li 
8191*67e74705SXin Li /*-- vec_cmpnrg_or_0_idx_cc -------------------------------------------------*/
8192*67e74705SXin Li 
8193*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_cmpnrg_or_0_idx_cc(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c,int * __cc)8194*67e74705SXin Li vec_cmpnrg_or_0_idx_cc(vector unsigned char __a, vector unsigned char __b,
8195*67e74705SXin Li                        vector unsigned char __c, int *__cc) {
8196*67e74705SXin Li   return __builtin_s390_vstrczbs(__a, __b, __c, 8, __cc);
8197*67e74705SXin Li }
8198*67e74705SXin Li 
8199*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_cmpnrg_or_0_idx_cc(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c,int * __cc)8200*67e74705SXin Li vec_cmpnrg_or_0_idx_cc(vector unsigned short __a, vector unsigned short __b,
8201*67e74705SXin Li                        vector unsigned short __c, int *__cc) {
8202*67e74705SXin Li   return __builtin_s390_vstrczhs(__a, __b, __c, 8, __cc);
8203*67e74705SXin Li }
8204*67e74705SXin Li 
8205*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_cmpnrg_or_0_idx_cc(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c,int * __cc)8206*67e74705SXin Li vec_cmpnrg_or_0_idx_cc(vector unsigned int __a, vector unsigned int __b,
8207*67e74705SXin Li                        vector unsigned int __c, int *__cc) {
8208*67e74705SXin Li   return __builtin_s390_vstrczfs(__a, __b, __c, 8, __cc);
8209*67e74705SXin Li }
8210*67e74705SXin Li 
8211*67e74705SXin Li /*-- vec_find_any_eq --------------------------------------------------------*/
8212*67e74705SXin Li 
8213*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_find_any_eq(vector signed char __a,vector signed char __b)8214*67e74705SXin Li vec_find_any_eq(vector signed char __a, vector signed char __b) {
8215*67e74705SXin Li   return (vector bool char)
8216*67e74705SXin Li     __builtin_s390_vfaeb((vector unsigned char)__a,
8217*67e74705SXin Li                          (vector unsigned char)__b, 4);
8218*67e74705SXin Li }
8219*67e74705SXin Li 
8220*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_find_any_eq(vector bool char __a,vector bool char __b)8221*67e74705SXin Li vec_find_any_eq(vector bool char __a, vector bool char __b) {
8222*67e74705SXin Li   return (vector bool char)
8223*67e74705SXin Li     __builtin_s390_vfaeb((vector unsigned char)__a,
8224*67e74705SXin Li                          (vector unsigned char)__b, 4);
8225*67e74705SXin Li }
8226*67e74705SXin Li 
8227*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_find_any_eq(vector unsigned char __a,vector unsigned char __b)8228*67e74705SXin Li vec_find_any_eq(vector unsigned char __a, vector unsigned char __b) {
8229*67e74705SXin Li   return (vector bool char)__builtin_s390_vfaeb(__a, __b, 4);
8230*67e74705SXin Li }
8231*67e74705SXin Li 
8232*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_find_any_eq(vector signed short __a,vector signed short __b)8233*67e74705SXin Li vec_find_any_eq(vector signed short __a, vector signed short __b) {
8234*67e74705SXin Li   return (vector bool short)
8235*67e74705SXin Li     __builtin_s390_vfaeh((vector unsigned short)__a,
8236*67e74705SXin Li                          (vector unsigned short)__b, 4);
8237*67e74705SXin Li }
8238*67e74705SXin Li 
8239*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_find_any_eq(vector bool short __a,vector bool short __b)8240*67e74705SXin Li vec_find_any_eq(vector bool short __a, vector bool short __b) {
8241*67e74705SXin Li   return (vector bool short)
8242*67e74705SXin Li     __builtin_s390_vfaeh((vector unsigned short)__a,
8243*67e74705SXin Li                          (vector unsigned short)__b, 4);
8244*67e74705SXin Li }
8245*67e74705SXin Li 
8246*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_find_any_eq(vector unsigned short __a,vector unsigned short __b)8247*67e74705SXin Li vec_find_any_eq(vector unsigned short __a, vector unsigned short __b) {
8248*67e74705SXin Li   return (vector bool short)__builtin_s390_vfaeh(__a, __b, 4);
8249*67e74705SXin Li }
8250*67e74705SXin Li 
8251*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_find_any_eq(vector signed int __a,vector signed int __b)8252*67e74705SXin Li vec_find_any_eq(vector signed int __a, vector signed int __b) {
8253*67e74705SXin Li   return (vector bool int)
8254*67e74705SXin Li     __builtin_s390_vfaef((vector unsigned int)__a,
8255*67e74705SXin Li                          (vector unsigned int)__b, 4);
8256*67e74705SXin Li }
8257*67e74705SXin Li 
8258*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_find_any_eq(vector bool int __a,vector bool int __b)8259*67e74705SXin Li vec_find_any_eq(vector bool int __a, vector bool int __b) {
8260*67e74705SXin Li   return (vector bool int)
8261*67e74705SXin Li     __builtin_s390_vfaef((vector unsigned int)__a,
8262*67e74705SXin Li                          (vector unsigned int)__b, 4);
8263*67e74705SXin Li }
8264*67e74705SXin Li 
8265*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_find_any_eq(vector unsigned int __a,vector unsigned int __b)8266*67e74705SXin Li vec_find_any_eq(vector unsigned int __a, vector unsigned int __b) {
8267*67e74705SXin Li   return (vector bool int)__builtin_s390_vfaef(__a, __b, 4);
8268*67e74705SXin Li }
8269*67e74705SXin Li 
8270*67e74705SXin Li /*-- vec_find_any_eq_cc -----------------------------------------------------*/
8271*67e74705SXin Li 
8272*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_find_any_eq_cc(vector signed char __a,vector signed char __b,int * __cc)8273*67e74705SXin Li vec_find_any_eq_cc(vector signed char __a, vector signed char __b, int *__cc) {
8274*67e74705SXin Li   return (vector bool char)
8275*67e74705SXin Li     __builtin_s390_vfaebs((vector unsigned char)__a,
8276*67e74705SXin Li                           (vector unsigned char)__b, 4, __cc);
8277*67e74705SXin Li }
8278*67e74705SXin Li 
8279*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_find_any_eq_cc(vector bool char __a,vector bool char __b,int * __cc)8280*67e74705SXin Li vec_find_any_eq_cc(vector bool char __a, vector bool char __b, int *__cc) {
8281*67e74705SXin Li   return (vector bool char)
8282*67e74705SXin Li     __builtin_s390_vfaebs((vector unsigned char)__a,
8283*67e74705SXin Li                           (vector unsigned char)__b, 4, __cc);
8284*67e74705SXin Li }
8285*67e74705SXin Li 
8286*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_find_any_eq_cc(vector unsigned char __a,vector unsigned char __b,int * __cc)8287*67e74705SXin Li vec_find_any_eq_cc(vector unsigned char __a, vector unsigned char __b,
8288*67e74705SXin Li                    int *__cc) {
8289*67e74705SXin Li   return (vector bool char)__builtin_s390_vfaebs(__a, __b, 4, __cc);
8290*67e74705SXin Li }
8291*67e74705SXin Li 
8292*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_find_any_eq_cc(vector signed short __a,vector signed short __b,int * __cc)8293*67e74705SXin Li vec_find_any_eq_cc(vector signed short __a, vector signed short __b,
8294*67e74705SXin Li                    int *__cc) {
8295*67e74705SXin Li   return (vector bool short)
8296*67e74705SXin Li     __builtin_s390_vfaehs((vector unsigned short)__a,
8297*67e74705SXin Li                           (vector unsigned short)__b, 4, __cc);
8298*67e74705SXin Li }
8299*67e74705SXin Li 
8300*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_find_any_eq_cc(vector bool short __a,vector bool short __b,int * __cc)8301*67e74705SXin Li vec_find_any_eq_cc(vector bool short __a, vector bool short __b, int *__cc) {
8302*67e74705SXin Li   return (vector bool short)
8303*67e74705SXin Li     __builtin_s390_vfaehs((vector unsigned short)__a,
8304*67e74705SXin Li                           (vector unsigned short)__b, 4, __cc);
8305*67e74705SXin Li }
8306*67e74705SXin Li 
8307*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_find_any_eq_cc(vector unsigned short __a,vector unsigned short __b,int * __cc)8308*67e74705SXin Li vec_find_any_eq_cc(vector unsigned short __a, vector unsigned short __b,
8309*67e74705SXin Li                    int *__cc) {
8310*67e74705SXin Li   return (vector bool short)__builtin_s390_vfaehs(__a, __b, 4, __cc);
8311*67e74705SXin Li }
8312*67e74705SXin Li 
8313*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_find_any_eq_cc(vector signed int __a,vector signed int __b,int * __cc)8314*67e74705SXin Li vec_find_any_eq_cc(vector signed int __a, vector signed int __b, int *__cc) {
8315*67e74705SXin Li   return (vector bool int)
8316*67e74705SXin Li     __builtin_s390_vfaefs((vector unsigned int)__a,
8317*67e74705SXin Li                           (vector unsigned int)__b, 4, __cc);
8318*67e74705SXin Li }
8319*67e74705SXin Li 
8320*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_find_any_eq_cc(vector bool int __a,vector bool int __b,int * __cc)8321*67e74705SXin Li vec_find_any_eq_cc(vector bool int __a, vector bool int __b, int *__cc) {
8322*67e74705SXin Li   return (vector bool int)
8323*67e74705SXin Li     __builtin_s390_vfaefs((vector unsigned int)__a,
8324*67e74705SXin Li                           (vector unsigned int)__b, 4, __cc);
8325*67e74705SXin Li }
8326*67e74705SXin Li 
8327*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_find_any_eq_cc(vector unsigned int __a,vector unsigned int __b,int * __cc)8328*67e74705SXin Li vec_find_any_eq_cc(vector unsigned int __a, vector unsigned int __b,
8329*67e74705SXin Li                    int *__cc) {
8330*67e74705SXin Li   return (vector bool int)__builtin_s390_vfaefs(__a, __b, 4, __cc);
8331*67e74705SXin Li }
8332*67e74705SXin Li 
8333*67e74705SXin Li /*-- vec_find_any_eq_idx ----------------------------------------------------*/
8334*67e74705SXin Li 
8335*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_find_any_eq_idx(vector signed char __a,vector signed char __b)8336*67e74705SXin Li vec_find_any_eq_idx(vector signed char __a, vector signed char __b) {
8337*67e74705SXin Li   return (vector signed char)
8338*67e74705SXin Li     __builtin_s390_vfaeb((vector unsigned char)__a,
8339*67e74705SXin Li                          (vector unsigned char)__b, 0);
8340*67e74705SXin Li }
8341*67e74705SXin Li 
8342*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_find_any_eq_idx(vector bool char __a,vector bool char __b)8343*67e74705SXin Li vec_find_any_eq_idx(vector bool char __a, vector bool char __b) {
8344*67e74705SXin Li   return __builtin_s390_vfaeb((vector unsigned char)__a,
8345*67e74705SXin Li                               (vector unsigned char)__b, 0);
8346*67e74705SXin Li }
8347*67e74705SXin Li 
8348*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_find_any_eq_idx(vector unsigned char __a,vector unsigned char __b)8349*67e74705SXin Li vec_find_any_eq_idx(vector unsigned char __a, vector unsigned char __b) {
8350*67e74705SXin Li   return __builtin_s390_vfaeb(__a, __b, 0);
8351*67e74705SXin Li }
8352*67e74705SXin Li 
8353*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_find_any_eq_idx(vector signed short __a,vector signed short __b)8354*67e74705SXin Li vec_find_any_eq_idx(vector signed short __a, vector signed short __b) {
8355*67e74705SXin Li   return (vector signed short)
8356*67e74705SXin Li     __builtin_s390_vfaeh((vector unsigned short)__a,
8357*67e74705SXin Li                          (vector unsigned short)__b, 0);
8358*67e74705SXin Li }
8359*67e74705SXin Li 
8360*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_find_any_eq_idx(vector bool short __a,vector bool short __b)8361*67e74705SXin Li vec_find_any_eq_idx(vector bool short __a, vector bool short __b) {
8362*67e74705SXin Li   return __builtin_s390_vfaeh((vector unsigned short)__a,
8363*67e74705SXin Li                               (vector unsigned short)__b, 0);
8364*67e74705SXin Li }
8365*67e74705SXin Li 
8366*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_find_any_eq_idx(vector unsigned short __a,vector unsigned short __b)8367*67e74705SXin Li vec_find_any_eq_idx(vector unsigned short __a, vector unsigned short __b) {
8368*67e74705SXin Li   return __builtin_s390_vfaeh(__a, __b, 0);
8369*67e74705SXin Li }
8370*67e74705SXin Li 
8371*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_find_any_eq_idx(vector signed int __a,vector signed int __b)8372*67e74705SXin Li vec_find_any_eq_idx(vector signed int __a, vector signed int __b) {
8373*67e74705SXin Li   return (vector signed int)
8374*67e74705SXin Li     __builtin_s390_vfaef((vector unsigned int)__a,
8375*67e74705SXin Li                          (vector unsigned int)__b, 0);
8376*67e74705SXin Li }
8377*67e74705SXin Li 
8378*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_find_any_eq_idx(vector bool int __a,vector bool int __b)8379*67e74705SXin Li vec_find_any_eq_idx(vector bool int __a, vector bool int __b) {
8380*67e74705SXin Li   return __builtin_s390_vfaef((vector unsigned int)__a,
8381*67e74705SXin Li                               (vector unsigned int)__b, 0);
8382*67e74705SXin Li }
8383*67e74705SXin Li 
8384*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_find_any_eq_idx(vector unsigned int __a,vector unsigned int __b)8385*67e74705SXin Li vec_find_any_eq_idx(vector unsigned int __a, vector unsigned int __b) {
8386*67e74705SXin Li   return __builtin_s390_vfaef(__a, __b, 0);
8387*67e74705SXin Li }
8388*67e74705SXin Li 
8389*67e74705SXin Li /*-- vec_find_any_eq_idx_cc -------------------------------------------------*/
8390*67e74705SXin Li 
8391*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_find_any_eq_idx_cc(vector signed char __a,vector signed char __b,int * __cc)8392*67e74705SXin Li vec_find_any_eq_idx_cc(vector signed char __a, vector signed char __b,
8393*67e74705SXin Li                        int *__cc) {
8394*67e74705SXin Li   return (vector signed char)
8395*67e74705SXin Li     __builtin_s390_vfaebs((vector unsigned char)__a,
8396*67e74705SXin Li                           (vector unsigned char)__b, 0, __cc);
8397*67e74705SXin Li }
8398*67e74705SXin Li 
8399*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_find_any_eq_idx_cc(vector bool char __a,vector bool char __b,int * __cc)8400*67e74705SXin Li vec_find_any_eq_idx_cc(vector bool char __a, vector bool char __b, int *__cc) {
8401*67e74705SXin Li   return __builtin_s390_vfaebs((vector unsigned char)__a,
8402*67e74705SXin Li                                (vector unsigned char)__b, 0, __cc);
8403*67e74705SXin Li }
8404*67e74705SXin Li 
8405*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_find_any_eq_idx_cc(vector unsigned char __a,vector unsigned char __b,int * __cc)8406*67e74705SXin Li vec_find_any_eq_idx_cc(vector unsigned char __a, vector unsigned char __b,
8407*67e74705SXin Li                        int *__cc) {
8408*67e74705SXin Li   return __builtin_s390_vfaebs(__a, __b, 0, __cc);
8409*67e74705SXin Li }
8410*67e74705SXin Li 
8411*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_find_any_eq_idx_cc(vector signed short __a,vector signed short __b,int * __cc)8412*67e74705SXin Li vec_find_any_eq_idx_cc(vector signed short __a, vector signed short __b,
8413*67e74705SXin Li                        int *__cc) {
8414*67e74705SXin Li   return (vector signed short)
8415*67e74705SXin Li     __builtin_s390_vfaehs((vector unsigned short)__a,
8416*67e74705SXin Li                           (vector unsigned short)__b, 0, __cc);
8417*67e74705SXin Li }
8418*67e74705SXin Li 
8419*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_find_any_eq_idx_cc(vector bool short __a,vector bool short __b,int * __cc)8420*67e74705SXin Li vec_find_any_eq_idx_cc(vector bool short __a, vector bool short __b,
8421*67e74705SXin Li                        int *__cc) {
8422*67e74705SXin Li   return __builtin_s390_vfaehs((vector unsigned short)__a,
8423*67e74705SXin Li                                (vector unsigned short)__b, 0, __cc);
8424*67e74705SXin Li }
8425*67e74705SXin Li 
8426*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_find_any_eq_idx_cc(vector unsigned short __a,vector unsigned short __b,int * __cc)8427*67e74705SXin Li vec_find_any_eq_idx_cc(vector unsigned short __a, vector unsigned short __b,
8428*67e74705SXin Li                        int *__cc) {
8429*67e74705SXin Li   return __builtin_s390_vfaehs(__a, __b, 0, __cc);
8430*67e74705SXin Li }
8431*67e74705SXin Li 
8432*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_find_any_eq_idx_cc(vector signed int __a,vector signed int __b,int * __cc)8433*67e74705SXin Li vec_find_any_eq_idx_cc(vector signed int __a, vector signed int __b,
8434*67e74705SXin Li                        int *__cc) {
8435*67e74705SXin Li   return (vector signed int)
8436*67e74705SXin Li     __builtin_s390_vfaefs((vector unsigned int)__a,
8437*67e74705SXin Li                           (vector unsigned int)__b, 0, __cc);
8438*67e74705SXin Li }
8439*67e74705SXin Li 
8440*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_find_any_eq_idx_cc(vector bool int __a,vector bool int __b,int * __cc)8441*67e74705SXin Li vec_find_any_eq_idx_cc(vector bool int __a, vector bool int __b, int *__cc) {
8442*67e74705SXin Li   return __builtin_s390_vfaefs((vector unsigned int)__a,
8443*67e74705SXin Li                                (vector unsigned int)__b, 0, __cc);
8444*67e74705SXin Li }
8445*67e74705SXin Li 
8446*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_find_any_eq_idx_cc(vector unsigned int __a,vector unsigned int __b,int * __cc)8447*67e74705SXin Li vec_find_any_eq_idx_cc(vector unsigned int __a, vector unsigned int __b,
8448*67e74705SXin Li                        int *__cc) {
8449*67e74705SXin Li   return __builtin_s390_vfaefs(__a, __b, 0, __cc);
8450*67e74705SXin Li }
8451*67e74705SXin Li 
8452*67e74705SXin Li /*-- vec_find_any_eq_or_0_idx -----------------------------------------------*/
8453*67e74705SXin Li 
8454*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_find_any_eq_or_0_idx(vector signed char __a,vector signed char __b)8455*67e74705SXin Li vec_find_any_eq_or_0_idx(vector signed char __a, vector signed char __b) {
8456*67e74705SXin Li   return (vector signed char)
8457*67e74705SXin Li     __builtin_s390_vfaezb((vector unsigned char)__a,
8458*67e74705SXin Li                           (vector unsigned char)__b, 0);
8459*67e74705SXin Li }
8460*67e74705SXin Li 
8461*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_find_any_eq_or_0_idx(vector bool char __a,vector bool char __b)8462*67e74705SXin Li vec_find_any_eq_or_0_idx(vector bool char __a, vector bool char __b) {
8463*67e74705SXin Li   return __builtin_s390_vfaezb((vector unsigned char)__a,
8464*67e74705SXin Li                                (vector unsigned char)__b, 0);
8465*67e74705SXin Li }
8466*67e74705SXin Li 
8467*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_find_any_eq_or_0_idx(vector unsigned char __a,vector unsigned char __b)8468*67e74705SXin Li vec_find_any_eq_or_0_idx(vector unsigned char __a, vector unsigned char __b) {
8469*67e74705SXin Li   return __builtin_s390_vfaezb(__a, __b, 0);
8470*67e74705SXin Li }
8471*67e74705SXin Li 
8472*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_find_any_eq_or_0_idx(vector signed short __a,vector signed short __b)8473*67e74705SXin Li vec_find_any_eq_or_0_idx(vector signed short __a, vector signed short __b) {
8474*67e74705SXin Li   return (vector signed short)
8475*67e74705SXin Li     __builtin_s390_vfaezh((vector unsigned short)__a,
8476*67e74705SXin Li                           (vector unsigned short)__b, 0);
8477*67e74705SXin Li }
8478*67e74705SXin Li 
8479*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_find_any_eq_or_0_idx(vector bool short __a,vector bool short __b)8480*67e74705SXin Li vec_find_any_eq_or_0_idx(vector bool short __a, vector bool short __b) {
8481*67e74705SXin Li   return __builtin_s390_vfaezh((vector unsigned short)__a,
8482*67e74705SXin Li                                (vector unsigned short)__b, 0);
8483*67e74705SXin Li }
8484*67e74705SXin Li 
8485*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_find_any_eq_or_0_idx(vector unsigned short __a,vector unsigned short __b)8486*67e74705SXin Li vec_find_any_eq_or_0_idx(vector unsigned short __a, vector unsigned short __b) {
8487*67e74705SXin Li   return __builtin_s390_vfaezh(__a, __b, 0);
8488*67e74705SXin Li }
8489*67e74705SXin Li 
8490*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_find_any_eq_or_0_idx(vector signed int __a,vector signed int __b)8491*67e74705SXin Li vec_find_any_eq_or_0_idx(vector signed int __a, vector signed int __b) {
8492*67e74705SXin Li   return (vector signed int)
8493*67e74705SXin Li     __builtin_s390_vfaezf((vector unsigned int)__a,
8494*67e74705SXin Li                           (vector unsigned int)__b, 0);
8495*67e74705SXin Li }
8496*67e74705SXin Li 
8497*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_find_any_eq_or_0_idx(vector bool int __a,vector bool int __b)8498*67e74705SXin Li vec_find_any_eq_or_0_idx(vector bool int __a, vector bool int __b) {
8499*67e74705SXin Li   return __builtin_s390_vfaezf((vector unsigned int)__a,
8500*67e74705SXin Li                                (vector unsigned int)__b, 0);
8501*67e74705SXin Li }
8502*67e74705SXin Li 
8503*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_find_any_eq_or_0_idx(vector unsigned int __a,vector unsigned int __b)8504*67e74705SXin Li vec_find_any_eq_or_0_idx(vector unsigned int __a, vector unsigned int __b) {
8505*67e74705SXin Li   return __builtin_s390_vfaezf(__a, __b, 0);
8506*67e74705SXin Li }
8507*67e74705SXin Li 
8508*67e74705SXin Li /*-- vec_find_any_eq_or_0_idx_cc --------------------------------------------*/
8509*67e74705SXin Li 
8510*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_find_any_eq_or_0_idx_cc(vector signed char __a,vector signed char __b,int * __cc)8511*67e74705SXin Li vec_find_any_eq_or_0_idx_cc(vector signed char __a, vector signed char __b,
8512*67e74705SXin Li                             int *__cc) {
8513*67e74705SXin Li   return (vector signed char)
8514*67e74705SXin Li     __builtin_s390_vfaezbs((vector unsigned char)__a,
8515*67e74705SXin Li                            (vector unsigned char)__b, 0, __cc);
8516*67e74705SXin Li }
8517*67e74705SXin Li 
8518*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_find_any_eq_or_0_idx_cc(vector bool char __a,vector bool char __b,int * __cc)8519*67e74705SXin Li vec_find_any_eq_or_0_idx_cc(vector bool char __a, vector bool char __b,
8520*67e74705SXin Li                             int *__cc) {
8521*67e74705SXin Li   return __builtin_s390_vfaezbs((vector unsigned char)__a,
8522*67e74705SXin Li                                 (vector unsigned char)__b, 0, __cc);
8523*67e74705SXin Li }
8524*67e74705SXin Li 
8525*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_find_any_eq_or_0_idx_cc(vector unsigned char __a,vector unsigned char __b,int * __cc)8526*67e74705SXin Li vec_find_any_eq_or_0_idx_cc(vector unsigned char __a, vector unsigned char __b,
8527*67e74705SXin Li                             int *__cc) {
8528*67e74705SXin Li   return __builtin_s390_vfaezbs(__a, __b, 0, __cc);
8529*67e74705SXin Li }
8530*67e74705SXin Li 
8531*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_find_any_eq_or_0_idx_cc(vector signed short __a,vector signed short __b,int * __cc)8532*67e74705SXin Li vec_find_any_eq_or_0_idx_cc(vector signed short __a, vector signed short __b,
8533*67e74705SXin Li                             int *__cc) {
8534*67e74705SXin Li   return (vector signed short)
8535*67e74705SXin Li     __builtin_s390_vfaezhs((vector unsigned short)__a,
8536*67e74705SXin Li                            (vector unsigned short)__b, 0, __cc);
8537*67e74705SXin Li }
8538*67e74705SXin Li 
8539*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_find_any_eq_or_0_idx_cc(vector bool short __a,vector bool short __b,int * __cc)8540*67e74705SXin Li vec_find_any_eq_or_0_idx_cc(vector bool short __a, vector bool short __b,
8541*67e74705SXin Li                             int *__cc) {
8542*67e74705SXin Li   return __builtin_s390_vfaezhs((vector unsigned short)__a,
8543*67e74705SXin Li                                 (vector unsigned short)__b, 0, __cc);
8544*67e74705SXin Li }
8545*67e74705SXin Li 
8546*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_find_any_eq_or_0_idx_cc(vector unsigned short __a,vector unsigned short __b,int * __cc)8547*67e74705SXin Li vec_find_any_eq_or_0_idx_cc(vector unsigned short __a,
8548*67e74705SXin Li                             vector unsigned short __b, int *__cc) {
8549*67e74705SXin Li   return __builtin_s390_vfaezhs(__a, __b, 0, __cc);
8550*67e74705SXin Li }
8551*67e74705SXin Li 
8552*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_find_any_eq_or_0_idx_cc(vector signed int __a,vector signed int __b,int * __cc)8553*67e74705SXin Li vec_find_any_eq_or_0_idx_cc(vector signed int __a, vector signed int __b,
8554*67e74705SXin Li                             int *__cc) {
8555*67e74705SXin Li   return (vector signed int)
8556*67e74705SXin Li     __builtin_s390_vfaezfs((vector unsigned int)__a,
8557*67e74705SXin Li                            (vector unsigned int)__b, 0, __cc);
8558*67e74705SXin Li }
8559*67e74705SXin Li 
8560*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_find_any_eq_or_0_idx_cc(vector bool int __a,vector bool int __b,int * __cc)8561*67e74705SXin Li vec_find_any_eq_or_0_idx_cc(vector bool int __a, vector bool int __b,
8562*67e74705SXin Li                             int *__cc) {
8563*67e74705SXin Li   return __builtin_s390_vfaezfs((vector unsigned int)__a,
8564*67e74705SXin Li                                 (vector unsigned int)__b, 0, __cc);
8565*67e74705SXin Li }
8566*67e74705SXin Li 
8567*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_find_any_eq_or_0_idx_cc(vector unsigned int __a,vector unsigned int __b,int * __cc)8568*67e74705SXin Li vec_find_any_eq_or_0_idx_cc(vector unsigned int __a, vector unsigned int __b,
8569*67e74705SXin Li                             int *__cc) {
8570*67e74705SXin Li   return __builtin_s390_vfaezfs(__a, __b, 0, __cc);
8571*67e74705SXin Li }
8572*67e74705SXin Li 
8573*67e74705SXin Li /*-- vec_find_any_ne --------------------------------------------------------*/
8574*67e74705SXin Li 
8575*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_find_any_ne(vector signed char __a,vector signed char __b)8576*67e74705SXin Li vec_find_any_ne(vector signed char __a, vector signed char __b) {
8577*67e74705SXin Li   return (vector bool char)
8578*67e74705SXin Li     __builtin_s390_vfaeb((vector unsigned char)__a,
8579*67e74705SXin Li                          (vector unsigned char)__b, 12);
8580*67e74705SXin Li }
8581*67e74705SXin Li 
8582*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_find_any_ne(vector bool char __a,vector bool char __b)8583*67e74705SXin Li vec_find_any_ne(vector bool char __a, vector bool char __b) {
8584*67e74705SXin Li   return (vector bool char)
8585*67e74705SXin Li     __builtin_s390_vfaeb((vector unsigned char)__a,
8586*67e74705SXin Li                          (vector unsigned char)__b, 12);
8587*67e74705SXin Li }
8588*67e74705SXin Li 
8589*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_find_any_ne(vector unsigned char __a,vector unsigned char __b)8590*67e74705SXin Li vec_find_any_ne(vector unsigned char __a, vector unsigned char __b) {
8591*67e74705SXin Li   return (vector bool char)__builtin_s390_vfaeb(__a, __b, 12);
8592*67e74705SXin Li }
8593*67e74705SXin Li 
8594*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_find_any_ne(vector signed short __a,vector signed short __b)8595*67e74705SXin Li vec_find_any_ne(vector signed short __a, vector signed short __b) {
8596*67e74705SXin Li   return (vector bool short)
8597*67e74705SXin Li     __builtin_s390_vfaeh((vector unsigned short)__a,
8598*67e74705SXin Li                          (vector unsigned short)__b, 12);
8599*67e74705SXin Li }
8600*67e74705SXin Li 
8601*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_find_any_ne(vector bool short __a,vector bool short __b)8602*67e74705SXin Li vec_find_any_ne(vector bool short __a, vector bool short __b) {
8603*67e74705SXin Li   return (vector bool short)
8604*67e74705SXin Li     __builtin_s390_vfaeh((vector unsigned short)__a,
8605*67e74705SXin Li                          (vector unsigned short)__b, 12);
8606*67e74705SXin Li }
8607*67e74705SXin Li 
8608*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_find_any_ne(vector unsigned short __a,vector unsigned short __b)8609*67e74705SXin Li vec_find_any_ne(vector unsigned short __a, vector unsigned short __b) {
8610*67e74705SXin Li   return (vector bool short)__builtin_s390_vfaeh(__a, __b, 12);
8611*67e74705SXin Li }
8612*67e74705SXin Li 
8613*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_find_any_ne(vector signed int __a,vector signed int __b)8614*67e74705SXin Li vec_find_any_ne(vector signed int __a, vector signed int __b) {
8615*67e74705SXin Li   return (vector bool int)
8616*67e74705SXin Li     __builtin_s390_vfaef((vector unsigned int)__a,
8617*67e74705SXin Li                          (vector unsigned int)__b, 12);
8618*67e74705SXin Li }
8619*67e74705SXin Li 
8620*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_find_any_ne(vector bool int __a,vector bool int __b)8621*67e74705SXin Li vec_find_any_ne(vector bool int __a, vector bool int __b) {
8622*67e74705SXin Li   return (vector bool int)
8623*67e74705SXin Li     __builtin_s390_vfaef((vector unsigned int)__a,
8624*67e74705SXin Li                          (vector unsigned int)__b, 12);
8625*67e74705SXin Li }
8626*67e74705SXin Li 
8627*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_find_any_ne(vector unsigned int __a,vector unsigned int __b)8628*67e74705SXin Li vec_find_any_ne(vector unsigned int __a, vector unsigned int __b) {
8629*67e74705SXin Li   return (vector bool int)__builtin_s390_vfaef(__a, __b, 12);
8630*67e74705SXin Li }
8631*67e74705SXin Li 
8632*67e74705SXin Li /*-- vec_find_any_ne_cc -----------------------------------------------------*/
8633*67e74705SXin Li 
8634*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_find_any_ne_cc(vector signed char __a,vector signed char __b,int * __cc)8635*67e74705SXin Li vec_find_any_ne_cc(vector signed char __a, vector signed char __b, int *__cc) {
8636*67e74705SXin Li   return (vector bool char)
8637*67e74705SXin Li     __builtin_s390_vfaebs((vector unsigned char)__a,
8638*67e74705SXin Li                           (vector unsigned char)__b, 12, __cc);
8639*67e74705SXin Li }
8640*67e74705SXin Li 
8641*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_find_any_ne_cc(vector bool char __a,vector bool char __b,int * __cc)8642*67e74705SXin Li vec_find_any_ne_cc(vector bool char __a, vector bool char __b, int *__cc) {
8643*67e74705SXin Li   return (vector bool char)
8644*67e74705SXin Li     __builtin_s390_vfaebs((vector unsigned char)__a,
8645*67e74705SXin Li                           (vector unsigned char)__b, 12, __cc);
8646*67e74705SXin Li }
8647*67e74705SXin Li 
8648*67e74705SXin Li static inline __ATTRS_o_ai vector bool char
vec_find_any_ne_cc(vector unsigned char __a,vector unsigned char __b,int * __cc)8649*67e74705SXin Li vec_find_any_ne_cc(vector unsigned char __a, vector unsigned char __b,
8650*67e74705SXin Li                    int *__cc) {
8651*67e74705SXin Li   return (vector bool char)__builtin_s390_vfaebs(__a, __b, 12, __cc);
8652*67e74705SXin Li }
8653*67e74705SXin Li 
8654*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_find_any_ne_cc(vector signed short __a,vector signed short __b,int * __cc)8655*67e74705SXin Li vec_find_any_ne_cc(vector signed short __a, vector signed short __b,
8656*67e74705SXin Li                    int *__cc) {
8657*67e74705SXin Li   return (vector bool short)
8658*67e74705SXin Li     __builtin_s390_vfaehs((vector unsigned short)__a,
8659*67e74705SXin Li                           (vector unsigned short)__b, 12, __cc);
8660*67e74705SXin Li }
8661*67e74705SXin Li 
8662*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_find_any_ne_cc(vector bool short __a,vector bool short __b,int * __cc)8663*67e74705SXin Li vec_find_any_ne_cc(vector bool short __a, vector bool short __b, int *__cc) {
8664*67e74705SXin Li   return (vector bool short)
8665*67e74705SXin Li     __builtin_s390_vfaehs((vector unsigned short)__a,
8666*67e74705SXin Li                           (vector unsigned short)__b, 12, __cc);
8667*67e74705SXin Li }
8668*67e74705SXin Li 
8669*67e74705SXin Li static inline __ATTRS_o_ai vector bool short
vec_find_any_ne_cc(vector unsigned short __a,vector unsigned short __b,int * __cc)8670*67e74705SXin Li vec_find_any_ne_cc(vector unsigned short __a, vector unsigned short __b,
8671*67e74705SXin Li                    int *__cc) {
8672*67e74705SXin Li   return (vector bool short)__builtin_s390_vfaehs(__a, __b, 12, __cc);
8673*67e74705SXin Li }
8674*67e74705SXin Li 
8675*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_find_any_ne_cc(vector signed int __a,vector signed int __b,int * __cc)8676*67e74705SXin Li vec_find_any_ne_cc(vector signed int __a, vector signed int __b, int *__cc) {
8677*67e74705SXin Li   return (vector bool int)
8678*67e74705SXin Li     __builtin_s390_vfaefs((vector unsigned int)__a,
8679*67e74705SXin Li                           (vector unsigned int)__b, 12, __cc);
8680*67e74705SXin Li }
8681*67e74705SXin Li 
8682*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_find_any_ne_cc(vector bool int __a,vector bool int __b,int * __cc)8683*67e74705SXin Li vec_find_any_ne_cc(vector bool int __a, vector bool int __b, int *__cc) {
8684*67e74705SXin Li   return (vector bool int)
8685*67e74705SXin Li     __builtin_s390_vfaefs((vector unsigned int)__a,
8686*67e74705SXin Li                           (vector unsigned int)__b, 12, __cc);
8687*67e74705SXin Li }
8688*67e74705SXin Li 
8689*67e74705SXin Li static inline __ATTRS_o_ai vector bool int
vec_find_any_ne_cc(vector unsigned int __a,vector unsigned int __b,int * __cc)8690*67e74705SXin Li vec_find_any_ne_cc(vector unsigned int __a, vector unsigned int __b,
8691*67e74705SXin Li                    int *__cc) {
8692*67e74705SXin Li   return (vector bool int)__builtin_s390_vfaefs(__a, __b, 12, __cc);
8693*67e74705SXin Li }
8694*67e74705SXin Li 
8695*67e74705SXin Li /*-- vec_find_any_ne_idx ----------------------------------------------------*/
8696*67e74705SXin Li 
8697*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_find_any_ne_idx(vector signed char __a,vector signed char __b)8698*67e74705SXin Li vec_find_any_ne_idx(vector signed char __a, vector signed char __b) {
8699*67e74705SXin Li   return (vector signed char)
8700*67e74705SXin Li     __builtin_s390_vfaeb((vector unsigned char)__a,
8701*67e74705SXin Li                          (vector unsigned char)__b, 8);
8702*67e74705SXin Li }
8703*67e74705SXin Li 
8704*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_find_any_ne_idx(vector bool char __a,vector bool char __b)8705*67e74705SXin Li vec_find_any_ne_idx(vector bool char __a, vector bool char __b) {
8706*67e74705SXin Li   return __builtin_s390_vfaeb((vector unsigned char)__a,
8707*67e74705SXin Li                               (vector unsigned char)__b, 8);
8708*67e74705SXin Li }
8709*67e74705SXin Li 
8710*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_find_any_ne_idx(vector unsigned char __a,vector unsigned char __b)8711*67e74705SXin Li vec_find_any_ne_idx(vector unsigned char __a, vector unsigned char __b) {
8712*67e74705SXin Li   return __builtin_s390_vfaeb(__a, __b, 8);
8713*67e74705SXin Li }
8714*67e74705SXin Li 
8715*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_find_any_ne_idx(vector signed short __a,vector signed short __b)8716*67e74705SXin Li vec_find_any_ne_idx(vector signed short __a, vector signed short __b) {
8717*67e74705SXin Li   return (vector signed short)
8718*67e74705SXin Li     __builtin_s390_vfaeh((vector unsigned short)__a,
8719*67e74705SXin Li                          (vector unsigned short)__b, 8);
8720*67e74705SXin Li }
8721*67e74705SXin Li 
8722*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_find_any_ne_idx(vector bool short __a,vector bool short __b)8723*67e74705SXin Li vec_find_any_ne_idx(vector bool short __a, vector bool short __b) {
8724*67e74705SXin Li   return __builtin_s390_vfaeh((vector unsigned short)__a,
8725*67e74705SXin Li                               (vector unsigned short)__b, 8);
8726*67e74705SXin Li }
8727*67e74705SXin Li 
8728*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_find_any_ne_idx(vector unsigned short __a,vector unsigned short __b)8729*67e74705SXin Li vec_find_any_ne_idx(vector unsigned short __a, vector unsigned short __b) {
8730*67e74705SXin Li   return __builtin_s390_vfaeh(__a, __b, 8);
8731*67e74705SXin Li }
8732*67e74705SXin Li 
8733*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_find_any_ne_idx(vector signed int __a,vector signed int __b)8734*67e74705SXin Li vec_find_any_ne_idx(vector signed int __a, vector signed int __b) {
8735*67e74705SXin Li   return (vector signed int)
8736*67e74705SXin Li     __builtin_s390_vfaef((vector unsigned int)__a,
8737*67e74705SXin Li                          (vector unsigned int)__b, 8);
8738*67e74705SXin Li }
8739*67e74705SXin Li 
8740*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_find_any_ne_idx(vector bool int __a,vector bool int __b)8741*67e74705SXin Li vec_find_any_ne_idx(vector bool int __a, vector bool int __b) {
8742*67e74705SXin Li   return __builtin_s390_vfaef((vector unsigned int)__a,
8743*67e74705SXin Li                               (vector unsigned int)__b, 8);
8744*67e74705SXin Li }
8745*67e74705SXin Li 
8746*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_find_any_ne_idx(vector unsigned int __a,vector unsigned int __b)8747*67e74705SXin Li vec_find_any_ne_idx(vector unsigned int __a, vector unsigned int __b) {
8748*67e74705SXin Li   return __builtin_s390_vfaef(__a, __b, 8);
8749*67e74705SXin Li }
8750*67e74705SXin Li 
8751*67e74705SXin Li /*-- vec_find_any_ne_idx_cc -------------------------------------------------*/
8752*67e74705SXin Li 
8753*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_find_any_ne_idx_cc(vector signed char __a,vector signed char __b,int * __cc)8754*67e74705SXin Li vec_find_any_ne_idx_cc(vector signed char __a, vector signed char __b,
8755*67e74705SXin Li                        int *__cc) {
8756*67e74705SXin Li   return (vector signed char)
8757*67e74705SXin Li     __builtin_s390_vfaebs((vector unsigned char)__a,
8758*67e74705SXin Li                           (vector unsigned char)__b, 8, __cc);
8759*67e74705SXin Li }
8760*67e74705SXin Li 
8761*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_find_any_ne_idx_cc(vector bool char __a,vector bool char __b,int * __cc)8762*67e74705SXin Li vec_find_any_ne_idx_cc(vector bool char __a, vector bool char __b, int *__cc) {
8763*67e74705SXin Li   return __builtin_s390_vfaebs((vector unsigned char)__a,
8764*67e74705SXin Li                                (vector unsigned char)__b, 8, __cc);
8765*67e74705SXin Li }
8766*67e74705SXin Li 
8767*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_find_any_ne_idx_cc(vector unsigned char __a,vector unsigned char __b,int * __cc)8768*67e74705SXin Li vec_find_any_ne_idx_cc(vector unsigned char __a, vector unsigned char __b,
8769*67e74705SXin Li                        int *__cc) {
8770*67e74705SXin Li   return __builtin_s390_vfaebs(__a, __b, 8, __cc);
8771*67e74705SXin Li }
8772*67e74705SXin Li 
8773*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_find_any_ne_idx_cc(vector signed short __a,vector signed short __b,int * __cc)8774*67e74705SXin Li vec_find_any_ne_idx_cc(vector signed short __a, vector signed short __b,
8775*67e74705SXin Li                        int *__cc) {
8776*67e74705SXin Li   return (vector signed short)
8777*67e74705SXin Li     __builtin_s390_vfaehs((vector unsigned short)__a,
8778*67e74705SXin Li                           (vector unsigned short)__b, 8, __cc);
8779*67e74705SXin Li }
8780*67e74705SXin Li 
8781*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_find_any_ne_idx_cc(vector bool short __a,vector bool short __b,int * __cc)8782*67e74705SXin Li vec_find_any_ne_idx_cc(vector bool short __a, vector bool short __b,
8783*67e74705SXin Li                        int *__cc) {
8784*67e74705SXin Li   return __builtin_s390_vfaehs((vector unsigned short)__a,
8785*67e74705SXin Li                                (vector unsigned short)__b, 8, __cc);
8786*67e74705SXin Li }
8787*67e74705SXin Li 
8788*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_find_any_ne_idx_cc(vector unsigned short __a,vector unsigned short __b,int * __cc)8789*67e74705SXin Li vec_find_any_ne_idx_cc(vector unsigned short __a, vector unsigned short __b,
8790*67e74705SXin Li                        int *__cc) {
8791*67e74705SXin Li   return __builtin_s390_vfaehs(__a, __b, 8, __cc);
8792*67e74705SXin Li }
8793*67e74705SXin Li 
8794*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_find_any_ne_idx_cc(vector signed int __a,vector signed int __b,int * __cc)8795*67e74705SXin Li vec_find_any_ne_idx_cc(vector signed int __a, vector signed int __b,
8796*67e74705SXin Li                        int *__cc) {
8797*67e74705SXin Li   return (vector signed int)
8798*67e74705SXin Li     __builtin_s390_vfaefs((vector unsigned int)__a,
8799*67e74705SXin Li                           (vector unsigned int)__b, 8, __cc);
8800*67e74705SXin Li }
8801*67e74705SXin Li 
8802*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_find_any_ne_idx_cc(vector bool int __a,vector bool int __b,int * __cc)8803*67e74705SXin Li vec_find_any_ne_idx_cc(vector bool int __a, vector bool int __b, int *__cc) {
8804*67e74705SXin Li   return __builtin_s390_vfaefs((vector unsigned int)__a,
8805*67e74705SXin Li                                (vector unsigned int)__b, 8, __cc);
8806*67e74705SXin Li }
8807*67e74705SXin Li 
8808*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_find_any_ne_idx_cc(vector unsigned int __a,vector unsigned int __b,int * __cc)8809*67e74705SXin Li vec_find_any_ne_idx_cc(vector unsigned int __a, vector unsigned int __b,
8810*67e74705SXin Li                        int *__cc) {
8811*67e74705SXin Li   return __builtin_s390_vfaefs(__a, __b, 8, __cc);
8812*67e74705SXin Li }
8813*67e74705SXin Li 
8814*67e74705SXin Li /*-- vec_find_any_ne_or_0_idx -----------------------------------------------*/
8815*67e74705SXin Li 
8816*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_find_any_ne_or_0_idx(vector signed char __a,vector signed char __b)8817*67e74705SXin Li vec_find_any_ne_or_0_idx(vector signed char __a, vector signed char __b) {
8818*67e74705SXin Li   return (vector signed char)
8819*67e74705SXin Li     __builtin_s390_vfaezb((vector unsigned char)__a,
8820*67e74705SXin Li                           (vector unsigned char)__b, 8);
8821*67e74705SXin Li }
8822*67e74705SXin Li 
8823*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_find_any_ne_or_0_idx(vector bool char __a,vector bool char __b)8824*67e74705SXin Li vec_find_any_ne_or_0_idx(vector bool char __a, vector bool char __b) {
8825*67e74705SXin Li   return __builtin_s390_vfaezb((vector unsigned char)__a,
8826*67e74705SXin Li                                (vector unsigned char)__b, 8);
8827*67e74705SXin Li }
8828*67e74705SXin Li 
8829*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_find_any_ne_or_0_idx(vector unsigned char __a,vector unsigned char __b)8830*67e74705SXin Li vec_find_any_ne_or_0_idx(vector unsigned char __a, vector unsigned char __b) {
8831*67e74705SXin Li   return __builtin_s390_vfaezb(__a, __b, 8);
8832*67e74705SXin Li }
8833*67e74705SXin Li 
8834*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_find_any_ne_or_0_idx(vector signed short __a,vector signed short __b)8835*67e74705SXin Li vec_find_any_ne_or_0_idx(vector signed short __a, vector signed short __b) {
8836*67e74705SXin Li   return (vector signed short)
8837*67e74705SXin Li     __builtin_s390_vfaezh((vector unsigned short)__a,
8838*67e74705SXin Li                           (vector unsigned short)__b, 8);
8839*67e74705SXin Li }
8840*67e74705SXin Li 
8841*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_find_any_ne_or_0_idx(vector bool short __a,vector bool short __b)8842*67e74705SXin Li vec_find_any_ne_or_0_idx(vector bool short __a, vector bool short __b) {
8843*67e74705SXin Li   return __builtin_s390_vfaezh((vector unsigned short)__a,
8844*67e74705SXin Li                                (vector unsigned short)__b, 8);
8845*67e74705SXin Li }
8846*67e74705SXin Li 
8847*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_find_any_ne_or_0_idx(vector unsigned short __a,vector unsigned short __b)8848*67e74705SXin Li vec_find_any_ne_or_0_idx(vector unsigned short __a, vector unsigned short __b) {
8849*67e74705SXin Li   return __builtin_s390_vfaezh(__a, __b, 8);
8850*67e74705SXin Li }
8851*67e74705SXin Li 
8852*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_find_any_ne_or_0_idx(vector signed int __a,vector signed int __b)8853*67e74705SXin Li vec_find_any_ne_or_0_idx(vector signed int __a, vector signed int __b) {
8854*67e74705SXin Li   return (vector signed int)
8855*67e74705SXin Li     __builtin_s390_vfaezf((vector unsigned int)__a,
8856*67e74705SXin Li                           (vector unsigned int)__b, 8);
8857*67e74705SXin Li }
8858*67e74705SXin Li 
8859*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_find_any_ne_or_0_idx(vector bool int __a,vector bool int __b)8860*67e74705SXin Li vec_find_any_ne_or_0_idx(vector bool int __a, vector bool int __b) {
8861*67e74705SXin Li   return __builtin_s390_vfaezf((vector unsigned int)__a,
8862*67e74705SXin Li                                (vector unsigned int)__b, 8);
8863*67e74705SXin Li }
8864*67e74705SXin Li 
8865*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_find_any_ne_or_0_idx(vector unsigned int __a,vector unsigned int __b)8866*67e74705SXin Li vec_find_any_ne_or_0_idx(vector unsigned int __a, vector unsigned int __b) {
8867*67e74705SXin Li   return __builtin_s390_vfaezf(__a, __b, 8);
8868*67e74705SXin Li }
8869*67e74705SXin Li 
8870*67e74705SXin Li /*-- vec_find_any_ne_or_0_idx_cc --------------------------------------------*/
8871*67e74705SXin Li 
8872*67e74705SXin Li static inline __ATTRS_o_ai vector signed char
vec_find_any_ne_or_0_idx_cc(vector signed char __a,vector signed char __b,int * __cc)8873*67e74705SXin Li vec_find_any_ne_or_0_idx_cc(vector signed char __a, vector signed char __b,
8874*67e74705SXin Li                             int *__cc) {
8875*67e74705SXin Li   return (vector signed char)
8876*67e74705SXin Li     __builtin_s390_vfaezbs((vector unsigned char)__a,
8877*67e74705SXin Li                            (vector unsigned char)__b, 8, __cc);
8878*67e74705SXin Li }
8879*67e74705SXin Li 
8880*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_find_any_ne_or_0_idx_cc(vector bool char __a,vector bool char __b,int * __cc)8881*67e74705SXin Li vec_find_any_ne_or_0_idx_cc(vector bool char __a, vector bool char __b,
8882*67e74705SXin Li                             int *__cc) {
8883*67e74705SXin Li   return __builtin_s390_vfaezbs((vector unsigned char)__a,
8884*67e74705SXin Li                                 (vector unsigned char)__b, 8, __cc);
8885*67e74705SXin Li }
8886*67e74705SXin Li 
8887*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned char
vec_find_any_ne_or_0_idx_cc(vector unsigned char __a,vector unsigned char __b,int * __cc)8888*67e74705SXin Li vec_find_any_ne_or_0_idx_cc(vector unsigned char __a, vector unsigned char __b,
8889*67e74705SXin Li                             int *__cc) {
8890*67e74705SXin Li   return __builtin_s390_vfaezbs(__a, __b, 8, __cc);
8891*67e74705SXin Li }
8892*67e74705SXin Li 
8893*67e74705SXin Li static inline __ATTRS_o_ai vector signed short
vec_find_any_ne_or_0_idx_cc(vector signed short __a,vector signed short __b,int * __cc)8894*67e74705SXin Li vec_find_any_ne_or_0_idx_cc(vector signed short __a, vector signed short __b,
8895*67e74705SXin Li                             int *__cc) {
8896*67e74705SXin Li   return (vector signed short)
8897*67e74705SXin Li     __builtin_s390_vfaezhs((vector unsigned short)__a,
8898*67e74705SXin Li                            (vector unsigned short)__b, 8, __cc);
8899*67e74705SXin Li }
8900*67e74705SXin Li 
8901*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_find_any_ne_or_0_idx_cc(vector bool short __a,vector bool short __b,int * __cc)8902*67e74705SXin Li vec_find_any_ne_or_0_idx_cc(vector bool short __a, vector bool short __b,
8903*67e74705SXin Li                             int *__cc) {
8904*67e74705SXin Li   return __builtin_s390_vfaezhs((vector unsigned short)__a,
8905*67e74705SXin Li                                 (vector unsigned short)__b, 8, __cc);
8906*67e74705SXin Li }
8907*67e74705SXin Li 
8908*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned short
vec_find_any_ne_or_0_idx_cc(vector unsigned short __a,vector unsigned short __b,int * __cc)8909*67e74705SXin Li vec_find_any_ne_or_0_idx_cc(vector unsigned short __a,
8910*67e74705SXin Li                             vector unsigned short __b, int *__cc) {
8911*67e74705SXin Li   return __builtin_s390_vfaezhs(__a, __b, 8, __cc);
8912*67e74705SXin Li }
8913*67e74705SXin Li 
8914*67e74705SXin Li static inline __ATTRS_o_ai vector signed int
vec_find_any_ne_or_0_idx_cc(vector signed int __a,vector signed int __b,int * __cc)8915*67e74705SXin Li vec_find_any_ne_or_0_idx_cc(vector signed int __a, vector signed int __b,
8916*67e74705SXin Li                             int *__cc) {
8917*67e74705SXin Li   return (vector signed int)
8918*67e74705SXin Li     __builtin_s390_vfaezfs((vector unsigned int)__a,
8919*67e74705SXin Li                            (vector unsigned int)__b, 8, __cc);
8920*67e74705SXin Li }
8921*67e74705SXin Li 
8922*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_find_any_ne_or_0_idx_cc(vector bool int __a,vector bool int __b,int * __cc)8923*67e74705SXin Li vec_find_any_ne_or_0_idx_cc(vector bool int __a, vector bool int __b,
8924*67e74705SXin Li                             int *__cc) {
8925*67e74705SXin Li   return __builtin_s390_vfaezfs((vector unsigned int)__a,
8926*67e74705SXin Li                                 (vector unsigned int)__b, 8, __cc);
8927*67e74705SXin Li }
8928*67e74705SXin Li 
8929*67e74705SXin Li static inline __ATTRS_o_ai vector unsigned int
vec_find_any_ne_or_0_idx_cc(vector unsigned int __a,vector unsigned int __b,int * __cc)8930*67e74705SXin Li vec_find_any_ne_or_0_idx_cc(vector unsigned int __a, vector unsigned int __b,
8931*67e74705SXin Li                             int *__cc) {
8932*67e74705SXin Li   return __builtin_s390_vfaezfs(__a, __b, 8, __cc);
8933*67e74705SXin Li }
8934*67e74705SXin Li 
8935*67e74705SXin Li #undef __constant_pow2_range
8936*67e74705SXin Li #undef __constant_range
8937*67e74705SXin Li #undef __constant
8938*67e74705SXin Li #undef __ATTRS_o
8939*67e74705SXin Li #undef __ATTRS_o_ai
8940*67e74705SXin Li #undef __ATTRS_ai
8941*67e74705SXin Li 
8942*67e74705SXin Li #else
8943*67e74705SXin Li 
8944*67e74705SXin Li #error "Use -fzvector to enable vector extensions"
8945*67e74705SXin Li 
8946*67e74705SXin Li #endif
8947