1287512Sdim/*===---- vecintrin.h - Vector intrinsics ----------------------------------===
2287512Sdim *
3353358Sdim * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4353358Sdim * See https://llvm.org/LICENSE.txt for license information.
5353358Sdim * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6287512Sdim *
7287512Sdim *===-----------------------------------------------------------------------===
8287512Sdim */
9287512Sdim
10287512Sdim#if defined(__s390x__) && defined(__VEC__)
11287512Sdim
12287512Sdim#define __ATTRS_ai __attribute__((__always_inline__))
13287512Sdim#define __ATTRS_o __attribute__((__overloadable__))
14287512Sdim#define __ATTRS_o_ai __attribute__((__overloadable__, __always_inline__))
15287512Sdim
16287512Sdim#define __constant(PARM) \
17287512Sdim  __attribute__((__enable_if__ ((PARM) == (PARM), \
18287512Sdim     "argument must be a constant integer")))
19287512Sdim#define __constant_range(PARM, LOW, HIGH) \
20287512Sdim  __attribute__((__enable_if__ ((PARM) >= (LOW) && (PARM) <= (HIGH), \
21287512Sdim     "argument must be a constant integer from " #LOW " to " #HIGH)))
22287512Sdim#define __constant_pow2_range(PARM, LOW, HIGH) \
23287512Sdim  __attribute__((__enable_if__ ((PARM) >= (LOW) && (PARM) <= (HIGH) && \
24287512Sdim                                ((PARM) & ((PARM) - 1)) == 0, \
25287512Sdim     "argument must be a constant power of 2 from " #LOW " to " #HIGH)))
26287512Sdim
27287512Sdim/*-- __lcbb -----------------------------------------------------------------*/
28287512Sdim
29287512Sdimextern __ATTRS_o unsigned int
30287512Sdim__lcbb(const void *__ptr, unsigned short __len)
31287512Sdim  __constant_pow2_range(__len, 64, 4096);
32287512Sdim
33287512Sdim#define __lcbb(X, Y) ((__typeof__((__lcbb)((X), (Y)))) \
34287512Sdim  __builtin_s390_lcbb((X), __builtin_constant_p((Y))? \
35287512Sdim                           ((Y) == 64 ? 0 : \
36287512Sdim                            (Y) == 128 ? 1 : \
37287512Sdim                            (Y) == 256 ? 2 : \
38287512Sdim                            (Y) == 512 ? 3 : \
39287512Sdim                            (Y) == 1024 ? 4 : \
40287512Sdim                            (Y) == 2048 ? 5 : \
41287512Sdim                            (Y) == 4096 ? 6 : 0) : 0))
42287512Sdim
43287512Sdim/*-- vec_extract ------------------------------------------------------------*/
44287512Sdim
45287512Sdimstatic inline __ATTRS_o_ai signed char
46287512Sdimvec_extract(vector signed char __vec, int __index) {
47287512Sdim  return __vec[__index & 15];
48287512Sdim}
49287512Sdim
50287512Sdimstatic inline __ATTRS_o_ai unsigned char
51287512Sdimvec_extract(vector bool char __vec, int __index) {
52287512Sdim  return __vec[__index & 15];
53287512Sdim}
54287512Sdim
55287512Sdimstatic inline __ATTRS_o_ai unsigned char
56287512Sdimvec_extract(vector unsigned char __vec, int __index) {
57287512Sdim  return __vec[__index & 15];
58287512Sdim}
59287512Sdim
60287512Sdimstatic inline __ATTRS_o_ai signed short
61287512Sdimvec_extract(vector signed short __vec, int __index) {
62287512Sdim  return __vec[__index & 7];
63287512Sdim}
64287512Sdim
65287512Sdimstatic inline __ATTRS_o_ai unsigned short
66287512Sdimvec_extract(vector bool short __vec, int __index) {
67287512Sdim  return __vec[__index & 7];
68287512Sdim}
69287512Sdim
70287512Sdimstatic inline __ATTRS_o_ai unsigned short
71287512Sdimvec_extract(vector unsigned short __vec, int __index) {
72287512Sdim  return __vec[__index & 7];
73287512Sdim}
74287512Sdim
75287512Sdimstatic inline __ATTRS_o_ai signed int
76287512Sdimvec_extract(vector signed int __vec, int __index) {
77287512Sdim  return __vec[__index & 3];
78287512Sdim}
79287512Sdim
80287512Sdimstatic inline __ATTRS_o_ai unsigned int
81287512Sdimvec_extract(vector bool int __vec, int __index) {
82287512Sdim  return __vec[__index & 3];
83287512Sdim}
84287512Sdim
85287512Sdimstatic inline __ATTRS_o_ai unsigned int
86287512Sdimvec_extract(vector unsigned int __vec, int __index) {
87287512Sdim  return __vec[__index & 3];
88287512Sdim}
89287512Sdim
90287512Sdimstatic inline __ATTRS_o_ai signed long long
91287512Sdimvec_extract(vector signed long long __vec, int __index) {
92287512Sdim  return __vec[__index & 1];
93287512Sdim}
94287512Sdim
95287512Sdimstatic inline __ATTRS_o_ai unsigned long long
96287512Sdimvec_extract(vector bool long long __vec, int __index) {
97287512Sdim  return __vec[__index & 1];
98287512Sdim}
99287512Sdim
100287512Sdimstatic inline __ATTRS_o_ai unsigned long long
101287512Sdimvec_extract(vector unsigned long long __vec, int __index) {
102287512Sdim  return __vec[__index & 1];
103287512Sdim}
104287512Sdim
105321369Sdim#if __ARCH__ >= 12
106321369Sdimstatic inline __ATTRS_o_ai float
107321369Sdimvec_extract(vector float __vec, int __index) {
108321369Sdim  return __vec[__index & 3];
109321369Sdim}
110321369Sdim#endif
111321369Sdim
112287512Sdimstatic inline __ATTRS_o_ai double
113287512Sdimvec_extract(vector double __vec, int __index) {
114287512Sdim  return __vec[__index & 1];
115287512Sdim}
116287512Sdim
117287512Sdim/*-- vec_insert -------------------------------------------------------------*/
118287512Sdim
119287512Sdimstatic inline __ATTRS_o_ai vector signed char
120287512Sdimvec_insert(signed char __scalar, vector signed char __vec, int __index) {
121287512Sdim  __vec[__index & 15] = __scalar;
122287512Sdim  return __vec;
123287512Sdim}
124287512Sdim
125321369Sdim// This prototype is deprecated.
126287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
127287512Sdimvec_insert(unsigned char __scalar, vector bool char __vec, int __index) {
128287512Sdim  vector unsigned char __newvec = (vector unsigned char)__vec;
129287512Sdim  __newvec[__index & 15] = (unsigned char)__scalar;
130287512Sdim  return __newvec;
131287512Sdim}
132287512Sdim
133287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
134287512Sdimvec_insert(unsigned char __scalar, vector unsigned char __vec, int __index) {
135287512Sdim  __vec[__index & 15] = __scalar;
136287512Sdim  return __vec;
137287512Sdim}
138287512Sdim
139287512Sdimstatic inline __ATTRS_o_ai vector signed short
140287512Sdimvec_insert(signed short __scalar, vector signed short __vec, int __index) {
141287512Sdim  __vec[__index & 7] = __scalar;
142287512Sdim  return __vec;
143287512Sdim}
144287512Sdim
145321369Sdim// This prototype is deprecated.
146287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
147287512Sdimvec_insert(unsigned short __scalar, vector bool short __vec, int __index) {
148287512Sdim  vector unsigned short __newvec = (vector unsigned short)__vec;
149287512Sdim  __newvec[__index & 7] = (unsigned short)__scalar;
150287512Sdim  return __newvec;
151287512Sdim}
152287512Sdim
153287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
154287512Sdimvec_insert(unsigned short __scalar, vector unsigned short __vec, int __index) {
155287512Sdim  __vec[__index & 7] = __scalar;
156287512Sdim  return __vec;
157287512Sdim}
158287512Sdim
159287512Sdimstatic inline __ATTRS_o_ai vector signed int
160287512Sdimvec_insert(signed int __scalar, vector signed int __vec, int __index) {
161287512Sdim  __vec[__index & 3] = __scalar;
162287512Sdim  return __vec;
163287512Sdim}
164287512Sdim
165321369Sdim// This prototype is deprecated.
166287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
167287512Sdimvec_insert(unsigned int __scalar, vector bool int __vec, int __index) {
168287512Sdim  vector unsigned int __newvec = (vector unsigned int)__vec;
169287512Sdim  __newvec[__index & 3] = __scalar;
170287512Sdim  return __newvec;
171287512Sdim}
172287512Sdim
173287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
174287512Sdimvec_insert(unsigned int __scalar, vector unsigned int __vec, int __index) {
175287512Sdim  __vec[__index & 3] = __scalar;
176287512Sdim  return __vec;
177287512Sdim}
178287512Sdim
179287512Sdimstatic inline __ATTRS_o_ai vector signed long long
180287512Sdimvec_insert(signed long long __scalar, vector signed long long __vec,
181287512Sdim           int __index) {
182287512Sdim  __vec[__index & 1] = __scalar;
183287512Sdim  return __vec;
184287512Sdim}
185287512Sdim
186321369Sdim// This prototype is deprecated.
187287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
188287512Sdimvec_insert(unsigned long long __scalar, vector bool long long __vec,
189287512Sdim           int __index) {
190287512Sdim  vector unsigned long long __newvec = (vector unsigned long long)__vec;
191287512Sdim  __newvec[__index & 1] = __scalar;
192287512Sdim  return __newvec;
193287512Sdim}
194287512Sdim
195287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
196287512Sdimvec_insert(unsigned long long __scalar, vector unsigned long long __vec,
197287512Sdim           int __index) {
198287512Sdim  __vec[__index & 1] = __scalar;
199287512Sdim  return __vec;
200287512Sdim}
201287512Sdim
202321369Sdim#if __ARCH__ >= 12
203321369Sdimstatic inline __ATTRS_o_ai vector float
204321369Sdimvec_insert(float __scalar, vector float __vec, int __index) {
205321369Sdim  __vec[__index & 1] = __scalar;
206321369Sdim  return __vec;
207321369Sdim}
208321369Sdim#endif
209321369Sdim
210287512Sdimstatic inline __ATTRS_o_ai vector double
211287512Sdimvec_insert(double __scalar, vector double __vec, int __index) {
212287512Sdim  __vec[__index & 1] = __scalar;
213287512Sdim  return __vec;
214287512Sdim}
215287512Sdim
216287512Sdim/*-- vec_promote ------------------------------------------------------------*/
217287512Sdim
218287512Sdimstatic inline __ATTRS_o_ai vector signed char
219287512Sdimvec_promote(signed char __scalar, int __index) {
220287512Sdim  const vector signed char __zero = (vector signed char)0;
221287512Sdim  vector signed char __vec = __builtin_shufflevector(__zero, __zero,
222287512Sdim    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
223287512Sdim  __vec[__index & 15] = __scalar;
224287512Sdim  return __vec;
225287512Sdim}
226287512Sdim
227287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
228287512Sdimvec_promote(unsigned char __scalar, int __index) {
229287512Sdim  const vector unsigned char __zero = (vector unsigned char)0;
230287512Sdim  vector unsigned char __vec = __builtin_shufflevector(__zero, __zero,
231287512Sdim    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
232287512Sdim  __vec[__index & 15] = __scalar;
233287512Sdim  return __vec;
234287512Sdim}
235287512Sdim
236287512Sdimstatic inline __ATTRS_o_ai vector signed short
237287512Sdimvec_promote(signed short __scalar, int __index) {
238287512Sdim  const vector signed short __zero = (vector signed short)0;
239287512Sdim  vector signed short __vec = __builtin_shufflevector(__zero, __zero,
240287512Sdim                                -1, -1, -1, -1, -1, -1, -1, -1);
241287512Sdim  __vec[__index & 7] = __scalar;
242287512Sdim  return __vec;
243287512Sdim}
244287512Sdim
245287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
246287512Sdimvec_promote(unsigned short __scalar, int __index) {
247287512Sdim  const vector unsigned short __zero = (vector unsigned short)0;
248287512Sdim  vector unsigned short __vec = __builtin_shufflevector(__zero, __zero,
249287512Sdim                                  -1, -1, -1, -1, -1, -1, -1, -1);
250287512Sdim  __vec[__index & 7] = __scalar;
251287512Sdim  return __vec;
252287512Sdim}
253287512Sdim
254287512Sdimstatic inline __ATTRS_o_ai vector signed int
255287512Sdimvec_promote(signed int __scalar, int __index) {
256287512Sdim  const vector signed int __zero = (vector signed int)0;
257287512Sdim  vector signed int __vec = __builtin_shufflevector(__zero, __zero,
258287512Sdim                                                    -1, -1, -1, -1);
259287512Sdim  __vec[__index & 3] = __scalar;
260287512Sdim  return __vec;
261287512Sdim}
262287512Sdim
263287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
264287512Sdimvec_promote(unsigned int __scalar, int __index) {
265287512Sdim  const vector unsigned int __zero = (vector unsigned int)0;
266287512Sdim  vector unsigned int __vec = __builtin_shufflevector(__zero, __zero,
267287512Sdim                                                      -1, -1, -1, -1);
268287512Sdim  __vec[__index & 3] = __scalar;
269287512Sdim  return __vec;
270287512Sdim}
271287512Sdim
272287512Sdimstatic inline __ATTRS_o_ai vector signed long long
273287512Sdimvec_promote(signed long long __scalar, int __index) {
274287512Sdim  const vector signed long long __zero = (vector signed long long)0;
275287512Sdim  vector signed long long __vec = __builtin_shufflevector(__zero, __zero,
276287512Sdim                                                          -1, -1);
277287512Sdim  __vec[__index & 1] = __scalar;
278287512Sdim  return __vec;
279287512Sdim}
280287512Sdim
281287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
282287512Sdimvec_promote(unsigned long long __scalar, int __index) {
283287512Sdim  const vector unsigned long long __zero = (vector unsigned long long)0;
284287512Sdim  vector unsigned long long __vec = __builtin_shufflevector(__zero, __zero,
285287512Sdim                                                            -1, -1);
286287512Sdim  __vec[__index & 1] = __scalar;
287287512Sdim  return __vec;
288287512Sdim}
289287512Sdim
290321369Sdim#if __ARCH__ >= 12
291321369Sdimstatic inline __ATTRS_o_ai vector float
292321369Sdimvec_promote(float __scalar, int __index) {
293321369Sdim  const vector float __zero = (vector float)0;
294321369Sdim  vector float __vec = __builtin_shufflevector(__zero, __zero, -1, -1, -1, -1);
295321369Sdim  __vec[__index & 3] = __scalar;
296321369Sdim  return __vec;
297321369Sdim}
298321369Sdim#endif
299321369Sdim
300287512Sdimstatic inline __ATTRS_o_ai vector double
301287512Sdimvec_promote(double __scalar, int __index) {
302287512Sdim  const vector double __zero = (vector double)0;
303287512Sdim  vector double __vec = __builtin_shufflevector(__zero, __zero, -1, -1);
304287512Sdim  __vec[__index & 1] = __scalar;
305287512Sdim  return __vec;
306287512Sdim}
307287512Sdim
308287512Sdim/*-- vec_insert_and_zero ----------------------------------------------------*/
309287512Sdim
310287512Sdimstatic inline __ATTRS_o_ai vector signed char
311287512Sdimvec_insert_and_zero(const signed char *__ptr) {
312287512Sdim  vector signed char __vec = (vector signed char)0;
313287512Sdim  __vec[7] = *__ptr;
314287512Sdim  return __vec;
315287512Sdim}
316287512Sdim
317287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
318287512Sdimvec_insert_and_zero(const unsigned char *__ptr) {
319287512Sdim  vector unsigned char __vec = (vector unsigned char)0;
320287512Sdim  __vec[7] = *__ptr;
321287512Sdim  return __vec;
322287512Sdim}
323287512Sdim
324287512Sdimstatic inline __ATTRS_o_ai vector signed short
325287512Sdimvec_insert_and_zero(const signed short *__ptr) {
326287512Sdim  vector signed short __vec = (vector signed short)0;
327287512Sdim  __vec[3] = *__ptr;
328287512Sdim  return __vec;
329287512Sdim}
330287512Sdim
331287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
332287512Sdimvec_insert_and_zero(const unsigned short *__ptr) {
333287512Sdim  vector unsigned short __vec = (vector unsigned short)0;
334287512Sdim  __vec[3] = *__ptr;
335287512Sdim  return __vec;
336287512Sdim}
337287512Sdim
338287512Sdimstatic inline __ATTRS_o_ai vector signed int
339287512Sdimvec_insert_and_zero(const signed int *__ptr) {
340287512Sdim  vector signed int __vec = (vector signed int)0;
341287512Sdim  __vec[1] = *__ptr;
342287512Sdim  return __vec;
343287512Sdim}
344287512Sdim
345287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
346287512Sdimvec_insert_and_zero(const unsigned int *__ptr) {
347287512Sdim  vector unsigned int __vec = (vector unsigned int)0;
348287512Sdim  __vec[1] = *__ptr;
349287512Sdim  return __vec;
350287512Sdim}
351287512Sdim
352287512Sdimstatic inline __ATTRS_o_ai vector signed long long
353287512Sdimvec_insert_and_zero(const signed long long *__ptr) {
354287512Sdim  vector signed long long __vec = (vector signed long long)0;
355287512Sdim  __vec[0] = *__ptr;
356287512Sdim  return __vec;
357287512Sdim}
358287512Sdim
359287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
360287512Sdimvec_insert_and_zero(const unsigned long long *__ptr) {
361287512Sdim  vector unsigned long long __vec = (vector unsigned long long)0;
362287512Sdim  __vec[0] = *__ptr;
363287512Sdim  return __vec;
364287512Sdim}
365287512Sdim
366321369Sdim#if __ARCH__ >= 12
367321369Sdimstatic inline __ATTRS_o_ai vector float
368321369Sdimvec_insert_and_zero(const float *__ptr) {
369321369Sdim  vector float __vec = (vector float)0;
370344779Sdim  __vec[1] = *__ptr;
371321369Sdim  return __vec;
372321369Sdim}
373321369Sdim#endif
374321369Sdim
375287512Sdimstatic inline __ATTRS_o_ai vector double
376287512Sdimvec_insert_and_zero(const double *__ptr) {
377287512Sdim  vector double __vec = (vector double)0;
378287512Sdim  __vec[0] = *__ptr;
379287512Sdim  return __vec;
380287512Sdim}
381287512Sdim
382287512Sdim/*-- vec_perm ---------------------------------------------------------------*/
383287512Sdim
384287512Sdimstatic inline __ATTRS_o_ai vector signed char
385287512Sdimvec_perm(vector signed char __a, vector signed char __b,
386287512Sdim         vector unsigned char __c) {
387287512Sdim  return (vector signed char)__builtin_s390_vperm(
388287512Sdim           (vector unsigned char)__a, (vector unsigned char)__b, __c);
389287512Sdim}
390287512Sdim
391287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
392287512Sdimvec_perm(vector unsigned char __a, vector unsigned char __b,
393287512Sdim         vector unsigned char __c) {
394287512Sdim  return (vector unsigned char)__builtin_s390_vperm(
395287512Sdim           (vector unsigned char)__a, (vector unsigned char)__b, __c);
396287512Sdim}
397287512Sdim
398287512Sdimstatic inline __ATTRS_o_ai vector bool char
399287512Sdimvec_perm(vector bool char __a, vector bool char __b,
400287512Sdim         vector unsigned char __c) {
401287512Sdim  return (vector bool char)__builtin_s390_vperm(
402287512Sdim           (vector unsigned char)__a, (vector unsigned char)__b, __c);
403287512Sdim}
404287512Sdim
405287512Sdimstatic inline __ATTRS_o_ai vector signed short
406287512Sdimvec_perm(vector signed short __a, vector signed short __b,
407287512Sdim         vector unsigned char __c) {
408287512Sdim  return (vector signed short)__builtin_s390_vperm(
409287512Sdim           (vector unsigned char)__a, (vector unsigned char)__b, __c);
410287512Sdim}
411287512Sdim
412287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
413287512Sdimvec_perm(vector unsigned short __a, vector unsigned short __b,
414287512Sdim         vector unsigned char __c) {
415287512Sdim  return (vector unsigned short)__builtin_s390_vperm(
416287512Sdim           (vector unsigned char)__a, (vector unsigned char)__b, __c);
417287512Sdim}
418287512Sdim
419287512Sdimstatic inline __ATTRS_o_ai vector bool short
420287512Sdimvec_perm(vector bool short __a, vector bool short __b,
421287512Sdim         vector unsigned char __c) {
422287512Sdim  return (vector bool short)__builtin_s390_vperm(
423287512Sdim           (vector unsigned char)__a, (vector unsigned char)__b, __c);
424287512Sdim}
425287512Sdim
426287512Sdimstatic inline __ATTRS_o_ai vector signed int
427287512Sdimvec_perm(vector signed int __a, vector signed int __b,
428287512Sdim         vector unsigned char __c) {
429287512Sdim  return (vector signed int)__builtin_s390_vperm(
430287512Sdim           (vector unsigned char)__a, (vector unsigned char)__b, __c);
431287512Sdim}
432287512Sdim
433287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
434287512Sdimvec_perm(vector unsigned int __a, vector unsigned int __b,
435287512Sdim         vector unsigned char __c) {
436287512Sdim  return (vector unsigned int)__builtin_s390_vperm(
437287512Sdim           (vector unsigned char)__a, (vector unsigned char)__b, __c);
438287512Sdim}
439287512Sdim
440287512Sdimstatic inline __ATTRS_o_ai vector bool int
441287512Sdimvec_perm(vector bool int __a, vector bool int __b,
442287512Sdim         vector unsigned char __c) {
443287512Sdim  return (vector bool int)__builtin_s390_vperm(
444287512Sdim           (vector unsigned char)__a, (vector unsigned char)__b, __c);
445287512Sdim}
446287512Sdim
447287512Sdimstatic inline __ATTRS_o_ai vector signed long long
448287512Sdimvec_perm(vector signed long long __a, vector signed long long __b,
449287512Sdim         vector unsigned char __c) {
450287512Sdim  return (vector signed long long)__builtin_s390_vperm(
451287512Sdim           (vector unsigned char)__a, (vector unsigned char)__b, __c);
452287512Sdim}
453287512Sdim
454287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
455287512Sdimvec_perm(vector unsigned long long __a, vector unsigned long long __b,
456287512Sdim         vector unsigned char __c) {
457287512Sdim  return (vector unsigned long long)__builtin_s390_vperm(
458287512Sdim           (vector unsigned char)__a, (vector unsigned char)__b, __c);
459287512Sdim}
460287512Sdim
461287512Sdimstatic inline __ATTRS_o_ai vector bool long long
462287512Sdimvec_perm(vector bool long long __a, vector bool long long __b,
463287512Sdim         vector unsigned char __c) {
464287512Sdim  return (vector bool long long)__builtin_s390_vperm(
465287512Sdim           (vector unsigned char)__a, (vector unsigned char)__b, __c);
466287512Sdim}
467287512Sdim
468321369Sdim#if __ARCH__ >= 12
469321369Sdimstatic inline __ATTRS_o_ai vector float
470321369Sdimvec_perm(vector float __a, vector float __b,
471321369Sdim         vector unsigned char __c) {
472321369Sdim  return (vector float)__builtin_s390_vperm(
473321369Sdim           (vector unsigned char)__a, (vector unsigned char)__b, __c);
474321369Sdim}
475321369Sdim#endif
476321369Sdim
477287512Sdimstatic inline __ATTRS_o_ai vector double
478287512Sdimvec_perm(vector double __a, vector double __b,
479287512Sdim         vector unsigned char __c) {
480287512Sdim  return (vector double)__builtin_s390_vperm(
481287512Sdim           (vector unsigned char)__a, (vector unsigned char)__b, __c);
482287512Sdim}
483287512Sdim
484287512Sdim/*-- vec_permi --------------------------------------------------------------*/
485287512Sdim
486321369Sdim// This prototype is deprecated.
487287512Sdimextern __ATTRS_o vector signed long long
488287512Sdimvec_permi(vector signed long long __a, vector signed long long __b, int __c)
489287512Sdim  __constant_range(__c, 0, 3);
490287512Sdim
491321369Sdim// This prototype is deprecated.
492287512Sdimextern __ATTRS_o vector unsigned long long
493287512Sdimvec_permi(vector unsigned long long __a, vector unsigned long long __b, int __c)
494287512Sdim  __constant_range(__c, 0, 3);
495287512Sdim
496321369Sdim// This prototype is deprecated.
497287512Sdimextern __ATTRS_o vector bool long long
498287512Sdimvec_permi(vector bool long long __a, vector bool long long __b, int __c)
499287512Sdim  __constant_range(__c, 0, 3);
500287512Sdim
501321369Sdim// This prototype is deprecated.
502287512Sdimextern __ATTRS_o vector double
503287512Sdimvec_permi(vector double __a, vector double __b, int __c)
504287512Sdim  __constant_range(__c, 0, 3);
505287512Sdim
506287512Sdim#define vec_permi(X, Y, Z) ((__typeof__((vec_permi)((X), (Y), (Z)))) \
507287512Sdim  __builtin_s390_vpdi((vector unsigned long long)(X), \
508287512Sdim                      (vector unsigned long long)(Y), \
509287512Sdim                      (((Z) & 2) << 1) | ((Z) & 1)))
510287512Sdim
511321369Sdim/*-- vec_bperm_u128 ---------------------------------------------------------*/
512321369Sdim
513321369Sdim#if __ARCH__ >= 12
514321369Sdimstatic inline __ATTRS_ai vector unsigned long long
515321369Sdimvec_bperm_u128(vector unsigned char __a, vector unsigned char __b) {
516321369Sdim  return __builtin_s390_vbperm(__a, __b);
517321369Sdim}
518321369Sdim#endif
519321369Sdim
520353358Sdim/*-- vec_revb ---------------------------------------------------------------*/
521353358Sdim
522353358Sdimstatic inline __ATTRS_o_ai vector signed short
523353358Sdimvec_revb(vector signed short __vec) {
524353358Sdim  return (vector signed short)
525353358Sdim         __builtin_s390_vlbrh((vector unsigned short)__vec);
526353358Sdim}
527353358Sdim
528353358Sdimstatic inline __ATTRS_o_ai vector unsigned short
529353358Sdimvec_revb(vector unsigned short __vec) {
530353358Sdim  return __builtin_s390_vlbrh(__vec);
531353358Sdim}
532353358Sdim
533353358Sdimstatic inline __ATTRS_o_ai vector signed int
534353358Sdimvec_revb(vector signed int __vec) {
535353358Sdim  return (vector signed int)
536353358Sdim         __builtin_s390_vlbrf((vector unsigned int)__vec);
537353358Sdim}
538353358Sdim
539353358Sdimstatic inline __ATTRS_o_ai vector unsigned int
540353358Sdimvec_revb(vector unsigned int __vec) {
541353358Sdim  return __builtin_s390_vlbrf(__vec);
542353358Sdim}
543353358Sdim
544353358Sdimstatic inline __ATTRS_o_ai vector signed long long
545353358Sdimvec_revb(vector signed long long __vec) {
546353358Sdim  return (vector signed long long)
547353358Sdim         __builtin_s390_vlbrg((vector unsigned long long)__vec);
548353358Sdim}
549353358Sdim
550353358Sdimstatic inline __ATTRS_o_ai vector unsigned long long
551353358Sdimvec_revb(vector unsigned long long __vec) {
552353358Sdim  return __builtin_s390_vlbrg(__vec);
553353358Sdim}
554353358Sdim
555353358Sdim#if __ARCH__ >= 12
556353358Sdimstatic inline __ATTRS_o_ai vector float
557353358Sdimvec_revb(vector float __vec) {
558353358Sdim  return (vector float)
559353358Sdim         __builtin_s390_vlbrf((vector unsigned int)__vec);
560353358Sdim}
561353358Sdim#endif
562353358Sdim
563353358Sdimstatic inline __ATTRS_o_ai vector double
564353358Sdimvec_revb(vector double __vec) {
565353358Sdim  return (vector double)
566353358Sdim         __builtin_s390_vlbrg((vector unsigned long long)__vec);
567353358Sdim}
568353358Sdim
569353358Sdim/*-- vec_reve ---------------------------------------------------------------*/
570353358Sdim
571353358Sdimstatic inline __ATTRS_o_ai vector signed char
572353358Sdimvec_reve(vector signed char __vec) {
573353358Sdim  return (vector signed char) { __vec[15], __vec[14], __vec[13], __vec[12],
574353358Sdim                                __vec[11], __vec[10], __vec[9], __vec[8],
575353358Sdim                                __vec[7], __vec[6], __vec[5], __vec[4],
576353358Sdim                                __vec[3], __vec[2], __vec[1], __vec[0] };
577353358Sdim}
578353358Sdim
579353358Sdimstatic inline __ATTRS_o_ai vector unsigned char
580353358Sdimvec_reve(vector unsigned char __vec) {
581353358Sdim  return (vector unsigned char) { __vec[15], __vec[14], __vec[13], __vec[12],
582353358Sdim                                  __vec[11], __vec[10], __vec[9], __vec[8],
583353358Sdim                                  __vec[7], __vec[6], __vec[5], __vec[4],
584353358Sdim                                  __vec[3], __vec[2], __vec[1], __vec[0] };
585353358Sdim}
586353358Sdim
587353358Sdimstatic inline __ATTRS_o_ai vector bool char
588353358Sdimvec_reve(vector bool char __vec) {
589353358Sdim  return (vector bool char) { __vec[15], __vec[14], __vec[13], __vec[12],
590353358Sdim                              __vec[11], __vec[10], __vec[9], __vec[8],
591353358Sdim                              __vec[7], __vec[6], __vec[5], __vec[4],
592353358Sdim                              __vec[3], __vec[2], __vec[1], __vec[0] };
593353358Sdim}
594353358Sdim
595353358Sdimstatic inline __ATTRS_o_ai vector signed short
596353358Sdimvec_reve(vector signed short __vec) {
597353358Sdim  return (vector signed short) { __vec[7], __vec[6], __vec[5], __vec[4],
598353358Sdim                                 __vec[3], __vec[2], __vec[1], __vec[0] };
599353358Sdim}
600353358Sdim
601353358Sdimstatic inline __ATTRS_o_ai vector unsigned short
602353358Sdimvec_reve(vector unsigned short __vec) {
603353358Sdim  return (vector unsigned short) { __vec[7], __vec[6], __vec[5], __vec[4],
604353358Sdim                                   __vec[3], __vec[2], __vec[1], __vec[0] };
605353358Sdim}
606353358Sdim
607353358Sdimstatic inline __ATTRS_o_ai vector bool short
608353358Sdimvec_reve(vector bool short __vec) {
609353358Sdim  return (vector bool short) { __vec[7], __vec[6], __vec[5], __vec[4],
610353358Sdim                               __vec[3], __vec[2], __vec[1], __vec[0] };
611353358Sdim}
612353358Sdim
613353358Sdimstatic inline __ATTRS_o_ai vector signed int
614353358Sdimvec_reve(vector signed int __vec) {
615353358Sdim  return (vector signed int) { __vec[3], __vec[2], __vec[1], __vec[0] };
616353358Sdim}
617353358Sdim
618353358Sdimstatic inline __ATTRS_o_ai vector unsigned int
619353358Sdimvec_reve(vector unsigned int __vec) {
620353358Sdim  return (vector unsigned int) { __vec[3], __vec[2], __vec[1], __vec[0] };
621353358Sdim}
622353358Sdim
623353358Sdimstatic inline __ATTRS_o_ai vector bool int
624353358Sdimvec_reve(vector bool int __vec) {
625353358Sdim  return (vector bool int) { __vec[3], __vec[2], __vec[1], __vec[0] };
626353358Sdim}
627353358Sdim
628353358Sdimstatic inline __ATTRS_o_ai vector signed long long
629353358Sdimvec_reve(vector signed long long __vec) {
630353358Sdim  return (vector signed long long) { __vec[1], __vec[0] };
631353358Sdim}
632353358Sdim
633353358Sdimstatic inline __ATTRS_o_ai vector unsigned long long
634353358Sdimvec_reve(vector unsigned long long __vec) {
635353358Sdim  return (vector unsigned long long) { __vec[1], __vec[0] };
636353358Sdim}
637353358Sdim
638353358Sdimstatic inline __ATTRS_o_ai vector bool long long
639353358Sdimvec_reve(vector bool long long __vec) {
640353358Sdim  return (vector bool long long) { __vec[1], __vec[0] };
641353358Sdim}
642353358Sdim
643353358Sdim#if __ARCH__ >= 12
644353358Sdimstatic inline __ATTRS_o_ai vector float
645353358Sdimvec_reve(vector float __vec) {
646353358Sdim  return (vector float) { __vec[3], __vec[2], __vec[1], __vec[0] };
647353358Sdim}
648353358Sdim#endif
649353358Sdim
650353358Sdimstatic inline __ATTRS_o_ai vector double
651353358Sdimvec_reve(vector double __vec) {
652353358Sdim  return (vector double) { __vec[1], __vec[0] };
653353358Sdim}
654353358Sdim
655287512Sdim/*-- vec_sel ----------------------------------------------------------------*/
656287512Sdim
657287512Sdimstatic inline __ATTRS_o_ai vector signed char
658287512Sdimvec_sel(vector signed char __a, vector signed char __b,
659287512Sdim        vector unsigned char __c) {
660287512Sdim  return ((vector signed char)__c & __b) | (~(vector signed char)__c & __a);
661287512Sdim}
662287512Sdim
663287512Sdimstatic inline __ATTRS_o_ai vector signed char
664287512Sdimvec_sel(vector signed char __a, vector signed char __b, vector bool char __c) {
665287512Sdim  return ((vector signed char)__c & __b) | (~(vector signed char)__c & __a);
666287512Sdim}
667287512Sdim
668287512Sdimstatic inline __ATTRS_o_ai vector bool char
669287512Sdimvec_sel(vector bool char __a, vector bool char __b, vector unsigned char __c) {
670287512Sdim  return ((vector bool char)__c & __b) | (~(vector bool char)__c & __a);
671287512Sdim}
672287512Sdim
673287512Sdimstatic inline __ATTRS_o_ai vector bool char
674287512Sdimvec_sel(vector bool char __a, vector bool char __b, vector bool char __c) {
675287512Sdim  return (__c & __b) | (~__c & __a);
676287512Sdim}
677287512Sdim
678287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
679287512Sdimvec_sel(vector unsigned char __a, vector unsigned char __b,
680287512Sdim        vector unsigned char __c) {
681287512Sdim  return (__c & __b) | (~__c & __a);
682287512Sdim}
683287512Sdim
684287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
685287512Sdimvec_sel(vector unsigned char __a, vector unsigned char __b,
686287512Sdim        vector bool char __c) {
687287512Sdim  return ((vector unsigned char)__c & __b) | (~(vector unsigned char)__c & __a);
688287512Sdim}
689287512Sdim
690287512Sdimstatic inline __ATTRS_o_ai vector signed short
691287512Sdimvec_sel(vector signed short __a, vector signed short __b,
692287512Sdim        vector unsigned short __c) {
693287512Sdim  return ((vector signed short)__c & __b) | (~(vector signed short)__c & __a);
694287512Sdim}
695287512Sdim
696287512Sdimstatic inline __ATTRS_o_ai vector signed short
697287512Sdimvec_sel(vector signed short __a, vector signed short __b,
698287512Sdim        vector bool short __c) {
699287512Sdim  return ((vector signed short)__c & __b) | (~(vector signed short)__c & __a);
700287512Sdim}
701287512Sdim
702287512Sdimstatic inline __ATTRS_o_ai vector bool short
703287512Sdimvec_sel(vector bool short __a, vector bool short __b,
704287512Sdim        vector unsigned short __c) {
705287512Sdim  return ((vector bool short)__c & __b) | (~(vector bool short)__c & __a);
706287512Sdim}
707287512Sdim
708287512Sdimstatic inline __ATTRS_o_ai vector bool short
709287512Sdimvec_sel(vector bool short __a, vector bool short __b, vector bool short __c) {
710287512Sdim  return (__c & __b) | (~__c & __a);
711287512Sdim}
712287512Sdim
713287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
714287512Sdimvec_sel(vector unsigned short __a, vector unsigned short __b,
715287512Sdim        vector unsigned short __c) {
716287512Sdim  return (__c & __b) | (~__c & __a);
717287512Sdim}
718287512Sdim
719287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
720287512Sdimvec_sel(vector unsigned short __a, vector unsigned short __b,
721287512Sdim        vector bool short __c) {
722287512Sdim  return (((vector unsigned short)__c & __b) |
723287512Sdim          (~(vector unsigned short)__c & __a));
724287512Sdim}
725287512Sdim
726287512Sdimstatic inline __ATTRS_o_ai vector signed int
727287512Sdimvec_sel(vector signed int __a, vector signed int __b,
728287512Sdim        vector unsigned int __c) {
729287512Sdim  return ((vector signed int)__c & __b) | (~(vector signed int)__c & __a);
730287512Sdim}
731287512Sdim
732287512Sdimstatic inline __ATTRS_o_ai vector signed int
733287512Sdimvec_sel(vector signed int __a, vector signed int __b, vector bool int __c) {
734287512Sdim  return ((vector signed int)__c & __b) | (~(vector signed int)__c & __a);
735287512Sdim}
736287512Sdim
737287512Sdimstatic inline __ATTRS_o_ai vector bool int
738287512Sdimvec_sel(vector bool int __a, vector bool int __b, vector unsigned int __c) {
739287512Sdim  return ((vector bool int)__c & __b) | (~(vector bool int)__c & __a);
740287512Sdim}
741287512Sdim
742287512Sdimstatic inline __ATTRS_o_ai vector bool int
743287512Sdimvec_sel(vector bool int __a, vector bool int __b, vector bool int __c) {
744287512Sdim  return (__c & __b) | (~__c & __a);
745287512Sdim}
746287512Sdim
747287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
748287512Sdimvec_sel(vector unsigned int __a, vector unsigned int __b,
749287512Sdim        vector unsigned int __c) {
750287512Sdim  return (__c & __b) | (~__c & __a);
751287512Sdim}
752287512Sdim
753287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
754287512Sdimvec_sel(vector unsigned int __a, vector unsigned int __b, vector bool int __c) {
755287512Sdim  return ((vector unsigned int)__c & __b) | (~(vector unsigned int)__c & __a);
756287512Sdim}
757287512Sdim
758287512Sdimstatic inline __ATTRS_o_ai vector signed long long
759287512Sdimvec_sel(vector signed long long __a, vector signed long long __b,
760287512Sdim        vector unsigned long long __c) {
761287512Sdim  return (((vector signed long long)__c & __b) |
762287512Sdim          (~(vector signed long long)__c & __a));
763287512Sdim}
764287512Sdim
765287512Sdimstatic inline __ATTRS_o_ai vector signed long long
766287512Sdimvec_sel(vector signed long long __a, vector signed long long __b,
767287512Sdim        vector bool long long __c) {
768287512Sdim  return (((vector signed long long)__c & __b) |
769287512Sdim          (~(vector signed long long)__c & __a));
770287512Sdim}
771287512Sdim
772287512Sdimstatic inline __ATTRS_o_ai vector bool long long
773287512Sdimvec_sel(vector bool long long __a, vector bool long long __b,
774287512Sdim        vector unsigned long long __c) {
775287512Sdim  return (((vector bool long long)__c & __b) |
776287512Sdim          (~(vector bool long long)__c & __a));
777287512Sdim}
778287512Sdim
779287512Sdimstatic inline __ATTRS_o_ai vector bool long long
780287512Sdimvec_sel(vector bool long long __a, vector bool long long __b,
781287512Sdim        vector bool long long __c) {
782287512Sdim  return (__c & __b) | (~__c & __a);
783287512Sdim}
784287512Sdim
785287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
786287512Sdimvec_sel(vector unsigned long long __a, vector unsigned long long __b,
787287512Sdim        vector unsigned long long __c) {
788287512Sdim  return (__c & __b) | (~__c & __a);
789287512Sdim}
790287512Sdim
791287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
792287512Sdimvec_sel(vector unsigned long long __a, vector unsigned long long __b,
793287512Sdim        vector bool long long __c) {
794287512Sdim  return (((vector unsigned long long)__c & __b) |
795287512Sdim          (~(vector unsigned long long)__c & __a));
796287512Sdim}
797287512Sdim
798321369Sdim#if __ARCH__ >= 12
799321369Sdimstatic inline __ATTRS_o_ai vector float
800321369Sdimvec_sel(vector float __a, vector float __b, vector unsigned int __c) {
801321369Sdim  return (vector float)((__c & (vector unsigned int)__b) |
802321369Sdim                        (~__c & (vector unsigned int)__a));
803321369Sdim}
804321369Sdim
805321369Sdimstatic inline __ATTRS_o_ai vector float
806321369Sdimvec_sel(vector float __a, vector float __b, vector bool int __c) {
807321369Sdim  vector unsigned int __ac = (vector unsigned int)__a;
808321369Sdim  vector unsigned int __bc = (vector unsigned int)__b;
809321369Sdim  vector unsigned int __cc = (vector unsigned int)__c;
810321369Sdim  return (vector float)((__cc & __bc) | (~__cc & __ac));
811321369Sdim}
812321369Sdim#endif
813321369Sdim
814287512Sdimstatic inline __ATTRS_o_ai vector double
815287512Sdimvec_sel(vector double __a, vector double __b, vector unsigned long long __c) {
816287512Sdim  return (vector double)((__c & (vector unsigned long long)__b) |
817287512Sdim                         (~__c & (vector unsigned long long)__a));
818287512Sdim}
819287512Sdim
820287512Sdimstatic inline __ATTRS_o_ai vector double
821287512Sdimvec_sel(vector double __a, vector double __b, vector bool long long __c) {
822287512Sdim  vector unsigned long long __ac = (vector unsigned long long)__a;
823287512Sdim  vector unsigned long long __bc = (vector unsigned long long)__b;
824287512Sdim  vector unsigned long long __cc = (vector unsigned long long)__c;
825287512Sdim  return (vector double)((__cc & __bc) | (~__cc & __ac));
826287512Sdim}
827287512Sdim
828287512Sdim/*-- vec_gather_element -----------------------------------------------------*/
829287512Sdim
830287512Sdimstatic inline __ATTRS_o_ai vector signed int
831287512Sdimvec_gather_element(vector signed int __vec, vector unsigned int __offset,
832287512Sdim                   const signed int *__ptr, int __index)
833287512Sdim  __constant_range(__index, 0, 3) {
834287512Sdim  __vec[__index] = *(const signed int *)(
835287512Sdim    (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
836287512Sdim  return __vec;
837287512Sdim}
838287512Sdim
839287512Sdimstatic inline __ATTRS_o_ai vector bool int
840287512Sdimvec_gather_element(vector bool int __vec, vector unsigned int __offset,
841287512Sdim                   const unsigned int *__ptr, int __index)
842287512Sdim  __constant_range(__index, 0, 3) {
843287512Sdim  __vec[__index] = *(const unsigned int *)(
844287512Sdim    (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
845287512Sdim  return __vec;
846287512Sdim}
847287512Sdim
848287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
849287512Sdimvec_gather_element(vector unsigned int __vec, vector unsigned int __offset,
850287512Sdim                   const unsigned int *__ptr, int __index)
851287512Sdim  __constant_range(__index, 0, 3) {
852287512Sdim  __vec[__index] = *(const unsigned int *)(
853287512Sdim    (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
854287512Sdim  return __vec;
855287512Sdim}
856287512Sdim
857287512Sdimstatic inline __ATTRS_o_ai vector signed long long
858287512Sdimvec_gather_element(vector signed long long __vec,
859287512Sdim                   vector unsigned long long __offset,
860287512Sdim                   const signed long long *__ptr, int __index)
861287512Sdim  __constant_range(__index, 0, 1) {
862287512Sdim  __vec[__index] = *(const signed long long *)(
863287512Sdim    (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
864287512Sdim  return __vec;
865287512Sdim}
866287512Sdim
867287512Sdimstatic inline __ATTRS_o_ai vector bool long long
868287512Sdimvec_gather_element(vector bool long long __vec,
869287512Sdim                   vector unsigned long long __offset,
870287512Sdim                   const unsigned long long *__ptr, int __index)
871287512Sdim  __constant_range(__index, 0, 1) {
872287512Sdim  __vec[__index] = *(const unsigned long long *)(
873287512Sdim    (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
874287512Sdim  return __vec;
875287512Sdim}
876287512Sdim
877287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
878287512Sdimvec_gather_element(vector unsigned long long __vec,
879287512Sdim                   vector unsigned long long __offset,
880287512Sdim                   const unsigned long long *__ptr, int __index)
881287512Sdim  __constant_range(__index, 0, 1) {
882287512Sdim  __vec[__index] = *(const unsigned long long *)(
883287512Sdim    (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
884287512Sdim  return __vec;
885287512Sdim}
886287512Sdim
887321369Sdim#if __ARCH__ >= 12
888321369Sdimstatic inline __ATTRS_o_ai vector float
889321369Sdimvec_gather_element(vector float __vec, vector unsigned int __offset,
890321369Sdim                   const float *__ptr, int __index)
891321369Sdim  __constant_range(__index, 0, 3) {
892321369Sdim  __vec[__index] = *(const float *)(
893321369Sdim    (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
894321369Sdim  return __vec;
895321369Sdim}
896321369Sdim#endif
897321369Sdim
898287512Sdimstatic inline __ATTRS_o_ai vector double
899287512Sdimvec_gather_element(vector double __vec, vector unsigned long long __offset,
900287512Sdim                   const double *__ptr, int __index)
901287512Sdim  __constant_range(__index, 0, 1) {
902287512Sdim  __vec[__index] = *(const double *)(
903287512Sdim    (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
904287512Sdim  return __vec;
905287512Sdim}
906287512Sdim
907287512Sdim/*-- vec_scatter_element ----------------------------------------------------*/
908287512Sdim
909287512Sdimstatic inline __ATTRS_o_ai void
910287512Sdimvec_scatter_element(vector signed int __vec, vector unsigned int __offset,
911287512Sdim                    signed int *__ptr, int __index)
912287512Sdim  __constant_range(__index, 0, 3) {
913287512Sdim  *(signed int *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
914287512Sdim    __vec[__index];
915287512Sdim}
916287512Sdim
917287512Sdimstatic inline __ATTRS_o_ai void
918287512Sdimvec_scatter_element(vector bool int __vec, vector unsigned int __offset,
919287512Sdim                    unsigned int *__ptr, int __index)
920287512Sdim  __constant_range(__index, 0, 3) {
921287512Sdim  *(unsigned int *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
922287512Sdim    __vec[__index];
923287512Sdim}
924287512Sdim
925287512Sdimstatic inline __ATTRS_o_ai void
926287512Sdimvec_scatter_element(vector unsigned int __vec, vector unsigned int __offset,
927287512Sdim                    unsigned int *__ptr, int __index)
928287512Sdim  __constant_range(__index, 0, 3) {
929287512Sdim  *(unsigned int *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
930287512Sdim    __vec[__index];
931287512Sdim}
932287512Sdim
933287512Sdimstatic inline __ATTRS_o_ai void
934287512Sdimvec_scatter_element(vector signed long long __vec,
935287512Sdim                    vector unsigned long long __offset,
936287512Sdim                    signed long long *__ptr, int __index)
937287512Sdim  __constant_range(__index, 0, 1) {
938287512Sdim  *(signed long long *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
939287512Sdim    __vec[__index];
940287512Sdim}
941287512Sdim
942287512Sdimstatic inline __ATTRS_o_ai void
943287512Sdimvec_scatter_element(vector bool long long __vec,
944287512Sdim                    vector unsigned long long __offset,
945287512Sdim                    unsigned long long *__ptr, int __index)
946287512Sdim  __constant_range(__index, 0, 1) {
947287512Sdim  *(unsigned long long *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
948287512Sdim    __vec[__index];
949287512Sdim}
950287512Sdim
951287512Sdimstatic inline __ATTRS_o_ai void
952287512Sdimvec_scatter_element(vector unsigned long long __vec,
953287512Sdim                    vector unsigned long long __offset,
954287512Sdim                    unsigned long long *__ptr, int __index)
955287512Sdim  __constant_range(__index, 0, 1) {
956287512Sdim  *(unsigned long long *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
957287512Sdim    __vec[__index];
958287512Sdim}
959287512Sdim
960321369Sdim#if __ARCH__ >= 12
961287512Sdimstatic inline __ATTRS_o_ai void
962321369Sdimvec_scatter_element(vector float __vec, vector unsigned int __offset,
963321369Sdim                    float *__ptr, int __index)
964321369Sdim  __constant_range(__index, 0, 3) {
965321369Sdim  *(float *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
966321369Sdim    __vec[__index];
967321369Sdim}
968321369Sdim#endif
969321369Sdim
970321369Sdimstatic inline __ATTRS_o_ai void
971287512Sdimvec_scatter_element(vector double __vec, vector unsigned long long __offset,
972287512Sdim                    double *__ptr, int __index)
973287512Sdim  __constant_range(__index, 0, 1) {
974287512Sdim  *(double *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
975287512Sdim    __vec[__index];
976287512Sdim}
977287512Sdim
978321369Sdim/*-- vec_xl -----------------------------------------------------------------*/
979321369Sdim
980321369Sdimstatic inline __ATTRS_o_ai vector signed char
981321369Sdimvec_xl(long __offset, const signed char *__ptr) {
982321369Sdim  return *(const vector signed char *)((__INTPTR_TYPE__)__ptr + __offset);
983321369Sdim}
984321369Sdim
985321369Sdimstatic inline __ATTRS_o_ai vector unsigned char
986321369Sdimvec_xl(long __offset, const unsigned char *__ptr) {
987321369Sdim  return *(const vector unsigned char *)((__INTPTR_TYPE__)__ptr + __offset);
988321369Sdim}
989321369Sdim
990321369Sdimstatic inline __ATTRS_o_ai vector signed short
991321369Sdimvec_xl(long __offset, const signed short *__ptr) {
992321369Sdim  return *(const vector signed short *)((__INTPTR_TYPE__)__ptr + __offset);
993321369Sdim}
994321369Sdim
995321369Sdimstatic inline __ATTRS_o_ai vector unsigned short
996321369Sdimvec_xl(long __offset, const unsigned short *__ptr) {
997321369Sdim  return *(const vector unsigned short *)((__INTPTR_TYPE__)__ptr + __offset);
998321369Sdim}
999321369Sdim
1000321369Sdimstatic inline __ATTRS_o_ai vector signed int
1001321369Sdimvec_xl(long __offset, const signed int *__ptr) {
1002321369Sdim  return *(const vector signed int *)((__INTPTR_TYPE__)__ptr + __offset);
1003321369Sdim}
1004321369Sdim
1005321369Sdimstatic inline __ATTRS_o_ai vector unsigned int
1006321369Sdimvec_xl(long __offset, const unsigned int *__ptr) {
1007321369Sdim  return *(const vector unsigned int *)((__INTPTR_TYPE__)__ptr + __offset);
1008321369Sdim}
1009321369Sdim
1010321369Sdimstatic inline __ATTRS_o_ai vector signed long long
1011321369Sdimvec_xl(long __offset, const signed long long *__ptr) {
1012321369Sdim  return *(const vector signed long long *)((__INTPTR_TYPE__)__ptr + __offset);
1013321369Sdim}
1014321369Sdim
1015321369Sdimstatic inline __ATTRS_o_ai vector unsigned long long
1016321369Sdimvec_xl(long __offset, const unsigned long long *__ptr) {
1017321369Sdim  return *(const vector unsigned long long *)((__INTPTR_TYPE__)__ptr + __offset);
1018321369Sdim}
1019321369Sdim
1020321369Sdim#if __ARCH__ >= 12
1021321369Sdimstatic inline __ATTRS_o_ai vector float
1022321369Sdimvec_xl(long __offset, const float *__ptr) {
1023321369Sdim  return *(const vector float *)((__INTPTR_TYPE__)__ptr + __offset);
1024321369Sdim}
1025321369Sdim#endif
1026321369Sdim
1027321369Sdimstatic inline __ATTRS_o_ai vector double
1028321369Sdimvec_xl(long __offset, const double *__ptr) {
1029321369Sdim  return *(const vector double *)((__INTPTR_TYPE__)__ptr + __offset);
1030321369Sdim}
1031321369Sdim
1032287512Sdim/*-- vec_xld2 ---------------------------------------------------------------*/
1033287512Sdim
1034321369Sdim// This prototype is deprecated.
1035287512Sdimstatic inline __ATTRS_o_ai vector signed char
1036287512Sdimvec_xld2(long __offset, const signed char *__ptr) {
1037287512Sdim  return *(const vector signed char *)((__INTPTR_TYPE__)__ptr + __offset);
1038287512Sdim}
1039287512Sdim
1040321369Sdim// This prototype is deprecated.
1041287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
1042287512Sdimvec_xld2(long __offset, const unsigned char *__ptr) {
1043287512Sdim  return *(const vector unsigned char *)((__INTPTR_TYPE__)__ptr + __offset);
1044287512Sdim}
1045287512Sdim
1046321369Sdim// This prototype is deprecated.
1047287512Sdimstatic inline __ATTRS_o_ai vector signed short
1048287512Sdimvec_xld2(long __offset, const signed short *__ptr) {
1049287512Sdim  return *(const vector signed short *)((__INTPTR_TYPE__)__ptr + __offset);
1050287512Sdim}
1051287512Sdim
1052321369Sdim// This prototype is deprecated.
1053287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
1054287512Sdimvec_xld2(long __offset, const unsigned short *__ptr) {
1055287512Sdim  return *(const vector unsigned short *)((__INTPTR_TYPE__)__ptr + __offset);
1056287512Sdim}
1057287512Sdim
1058321369Sdim// This prototype is deprecated.
1059287512Sdimstatic inline __ATTRS_o_ai vector signed int
1060287512Sdimvec_xld2(long __offset, const signed int *__ptr) {
1061287512Sdim  return *(const vector signed int *)((__INTPTR_TYPE__)__ptr + __offset);
1062287512Sdim}
1063287512Sdim
1064321369Sdim// This prototype is deprecated.
1065287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
1066287512Sdimvec_xld2(long __offset, const unsigned int *__ptr) {
1067287512Sdim  return *(const vector unsigned int *)((__INTPTR_TYPE__)__ptr + __offset);
1068287512Sdim}
1069287512Sdim
1070321369Sdim// This prototype is deprecated.
1071287512Sdimstatic inline __ATTRS_o_ai vector signed long long
1072287512Sdimvec_xld2(long __offset, const signed long long *__ptr) {
1073287512Sdim  return *(const vector signed long long *)((__INTPTR_TYPE__)__ptr + __offset);
1074287512Sdim}
1075287512Sdim
1076321369Sdim// This prototype is deprecated.
1077287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
1078287512Sdimvec_xld2(long __offset, const unsigned long long *__ptr) {
1079287512Sdim  return *(const vector unsigned long long *)((__INTPTR_TYPE__)__ptr + __offset);
1080287512Sdim}
1081287512Sdim
1082321369Sdim// This prototype is deprecated.
1083287512Sdimstatic inline __ATTRS_o_ai vector double
1084287512Sdimvec_xld2(long __offset, const double *__ptr) {
1085287512Sdim  return *(const vector double *)((__INTPTR_TYPE__)__ptr + __offset);
1086287512Sdim}
1087287512Sdim
1088287512Sdim/*-- vec_xlw4 ---------------------------------------------------------------*/
1089287512Sdim
1090321369Sdim// This prototype is deprecated.
1091287512Sdimstatic inline __ATTRS_o_ai vector signed char
1092287512Sdimvec_xlw4(long __offset, const signed char *__ptr) {
1093287512Sdim  return *(const vector signed char *)((__INTPTR_TYPE__)__ptr + __offset);
1094287512Sdim}
1095287512Sdim
1096321369Sdim// This prototype is deprecated.
1097287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
1098287512Sdimvec_xlw4(long __offset, const unsigned char *__ptr) {
1099287512Sdim  return *(const vector unsigned char *)((__INTPTR_TYPE__)__ptr + __offset);
1100287512Sdim}
1101287512Sdim
1102321369Sdim// This prototype is deprecated.
1103287512Sdimstatic inline __ATTRS_o_ai vector signed short
1104287512Sdimvec_xlw4(long __offset, const signed short *__ptr) {
1105287512Sdim  return *(const vector signed short *)((__INTPTR_TYPE__)__ptr + __offset);
1106287512Sdim}
1107287512Sdim
1108321369Sdim// This prototype is deprecated.
1109287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
1110287512Sdimvec_xlw4(long __offset, const unsigned short *__ptr) {
1111287512Sdim  return *(const vector unsigned short *)((__INTPTR_TYPE__)__ptr + __offset);
1112287512Sdim}
1113287512Sdim
1114321369Sdim// This prototype is deprecated.
1115287512Sdimstatic inline __ATTRS_o_ai vector signed int
1116287512Sdimvec_xlw4(long __offset, const signed int *__ptr) {
1117287512Sdim  return *(const vector signed int *)((__INTPTR_TYPE__)__ptr + __offset);
1118287512Sdim}
1119287512Sdim
1120321369Sdim// This prototype is deprecated.
1121287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
1122287512Sdimvec_xlw4(long __offset, const unsigned int *__ptr) {
1123287512Sdim  return *(const vector unsigned int *)((__INTPTR_TYPE__)__ptr + __offset);
1124287512Sdim}
1125287512Sdim
1126321369Sdim/*-- vec_xst ----------------------------------------------------------------*/
1127321369Sdim
1128321369Sdimstatic inline __ATTRS_o_ai void
1129321369Sdimvec_xst(vector signed char __vec, long __offset, signed char *__ptr) {
1130321369Sdim  *(vector signed char *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1131321369Sdim}
1132321369Sdim
1133321369Sdimstatic inline __ATTRS_o_ai void
1134321369Sdimvec_xst(vector unsigned char __vec, long __offset, unsigned char *__ptr) {
1135321369Sdim  *(vector unsigned char *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1136321369Sdim}
1137321369Sdim
1138321369Sdimstatic inline __ATTRS_o_ai void
1139321369Sdimvec_xst(vector signed short __vec, long __offset, signed short *__ptr) {
1140321369Sdim  *(vector signed short *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1141321369Sdim}
1142321369Sdim
1143321369Sdimstatic inline __ATTRS_o_ai void
1144321369Sdimvec_xst(vector unsigned short __vec, long __offset, unsigned short *__ptr) {
1145321369Sdim  *(vector unsigned short *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1146321369Sdim}
1147321369Sdim
1148321369Sdimstatic inline __ATTRS_o_ai void
1149321369Sdimvec_xst(vector signed int __vec, long __offset, signed int *__ptr) {
1150321369Sdim  *(vector signed int *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1151321369Sdim}
1152321369Sdim
1153321369Sdimstatic inline __ATTRS_o_ai void
1154321369Sdimvec_xst(vector unsigned int __vec, long __offset, unsigned int *__ptr) {
1155321369Sdim  *(vector unsigned int *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1156321369Sdim}
1157321369Sdim
1158321369Sdimstatic inline __ATTRS_o_ai void
1159321369Sdimvec_xst(vector signed long long __vec, long __offset,
1160321369Sdim          signed long long *__ptr) {
1161321369Sdim  *(vector signed long long *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1162321369Sdim}
1163321369Sdim
1164321369Sdimstatic inline __ATTRS_o_ai void
1165321369Sdimvec_xst(vector unsigned long long __vec, long __offset,
1166321369Sdim          unsigned long long *__ptr) {
1167321369Sdim  *(vector unsigned long long *)((__INTPTR_TYPE__)__ptr + __offset) =
1168321369Sdim    __vec;
1169321369Sdim}
1170321369Sdim
1171321369Sdim#if __ARCH__ >= 12
1172321369Sdimstatic inline __ATTRS_o_ai void
1173321369Sdimvec_xst(vector float __vec, long __offset, float *__ptr) {
1174321369Sdim  *(vector float *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1175321369Sdim}
1176321369Sdim#endif
1177321369Sdim
1178321369Sdimstatic inline __ATTRS_o_ai void
1179321369Sdimvec_xst(vector double __vec, long __offset, double *__ptr) {
1180321369Sdim  *(vector double *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1181321369Sdim}
1182321369Sdim
1183287512Sdim/*-- vec_xstd2 --------------------------------------------------------------*/
1184287512Sdim
1185321369Sdim// This prototype is deprecated.
1186287512Sdimstatic inline __ATTRS_o_ai void
1187287512Sdimvec_xstd2(vector signed char __vec, long __offset, signed char *__ptr) {
1188287512Sdim  *(vector signed char *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1189287512Sdim}
1190287512Sdim
1191321369Sdim// This prototype is deprecated.
1192287512Sdimstatic inline __ATTRS_o_ai void
1193287512Sdimvec_xstd2(vector unsigned char __vec, long __offset, unsigned char *__ptr) {
1194287512Sdim  *(vector unsigned char *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1195287512Sdim}
1196287512Sdim
1197321369Sdim// This prototype is deprecated.
1198287512Sdimstatic inline __ATTRS_o_ai void
1199287512Sdimvec_xstd2(vector signed short __vec, long __offset, signed short *__ptr) {
1200287512Sdim  *(vector signed short *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1201287512Sdim}
1202287512Sdim
1203321369Sdim// This prototype is deprecated.
1204287512Sdimstatic inline __ATTRS_o_ai void
1205287512Sdimvec_xstd2(vector unsigned short __vec, long __offset, unsigned short *__ptr) {
1206287512Sdim  *(vector unsigned short *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1207287512Sdim}
1208287512Sdim
1209321369Sdim// This prototype is deprecated.
1210287512Sdimstatic inline __ATTRS_o_ai void
1211287512Sdimvec_xstd2(vector signed int __vec, long __offset, signed int *__ptr) {
1212287512Sdim  *(vector signed int *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1213287512Sdim}
1214287512Sdim
1215321369Sdim// This prototype is deprecated.
1216287512Sdimstatic inline __ATTRS_o_ai void
1217287512Sdimvec_xstd2(vector unsigned int __vec, long __offset, unsigned int *__ptr) {
1218287512Sdim  *(vector unsigned int *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1219287512Sdim}
1220287512Sdim
1221321369Sdim// This prototype is deprecated.
1222287512Sdimstatic inline __ATTRS_o_ai void
1223287512Sdimvec_xstd2(vector signed long long __vec, long __offset,
1224287512Sdim          signed long long *__ptr) {
1225287512Sdim  *(vector signed long long *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1226287512Sdim}
1227287512Sdim
1228321369Sdim// This prototype is deprecated.
1229287512Sdimstatic inline __ATTRS_o_ai void
1230287512Sdimvec_xstd2(vector unsigned long long __vec, long __offset,
1231287512Sdim          unsigned long long *__ptr) {
1232287512Sdim  *(vector unsigned long long *)((__INTPTR_TYPE__)__ptr + __offset) =
1233287512Sdim    __vec;
1234287512Sdim}
1235287512Sdim
1236321369Sdim// This prototype is deprecated.
1237287512Sdimstatic inline __ATTRS_o_ai void
1238287512Sdimvec_xstd2(vector double __vec, long __offset, double *__ptr) {
1239287512Sdim  *(vector double *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1240287512Sdim}
1241287512Sdim
1242287512Sdim/*-- vec_xstw4 --------------------------------------------------------------*/
1243287512Sdim
1244321369Sdim// This prototype is deprecated.
1245287512Sdimstatic inline __ATTRS_o_ai void
1246287512Sdimvec_xstw4(vector signed char __vec, long __offset, signed char *__ptr) {
1247287512Sdim  *(vector signed char *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1248287512Sdim}
1249287512Sdim
1250321369Sdim// This prototype is deprecated.
1251287512Sdimstatic inline __ATTRS_o_ai void
1252287512Sdimvec_xstw4(vector unsigned char __vec, long __offset, unsigned char *__ptr) {
1253287512Sdim  *(vector unsigned char *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1254287512Sdim}
1255287512Sdim
1256321369Sdim// This prototype is deprecated.
1257287512Sdimstatic inline __ATTRS_o_ai void
1258287512Sdimvec_xstw4(vector signed short __vec, long __offset, signed short *__ptr) {
1259287512Sdim  *(vector signed short *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1260287512Sdim}
1261287512Sdim
1262321369Sdim// This prototype is deprecated.
1263287512Sdimstatic inline __ATTRS_o_ai void
1264287512Sdimvec_xstw4(vector unsigned short __vec, long __offset, unsigned short *__ptr) {
1265287512Sdim  *(vector unsigned short *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1266287512Sdim}
1267287512Sdim
1268321369Sdim// This prototype is deprecated.
1269287512Sdimstatic inline __ATTRS_o_ai void
1270287512Sdimvec_xstw4(vector signed int __vec, long __offset, signed int *__ptr) {
1271287512Sdim  *(vector signed int *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1272287512Sdim}
1273287512Sdim
1274321369Sdim// This prototype is deprecated.
1275287512Sdimstatic inline __ATTRS_o_ai void
1276287512Sdimvec_xstw4(vector unsigned int __vec, long __offset, unsigned int *__ptr) {
1277287512Sdim  *(vector unsigned int *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1278287512Sdim}
1279287512Sdim
1280287512Sdim/*-- vec_load_bndry ---------------------------------------------------------*/
1281287512Sdim
1282287512Sdimextern __ATTRS_o vector signed char
1283287512Sdimvec_load_bndry(const signed char *__ptr, unsigned short __len)
1284287512Sdim  __constant_pow2_range(__len, 64, 4096);
1285287512Sdim
1286287512Sdimextern __ATTRS_o vector unsigned char
1287287512Sdimvec_load_bndry(const unsigned char *__ptr, unsigned short __len)
1288287512Sdim  __constant_pow2_range(__len, 64, 4096);
1289287512Sdim
1290287512Sdimextern __ATTRS_o vector signed short
1291287512Sdimvec_load_bndry(const signed short *__ptr, unsigned short __len)
1292287512Sdim  __constant_pow2_range(__len, 64, 4096);
1293287512Sdim
1294287512Sdimextern __ATTRS_o vector unsigned short
1295287512Sdimvec_load_bndry(const unsigned short *__ptr, unsigned short __len)
1296287512Sdim  __constant_pow2_range(__len, 64, 4096);
1297287512Sdim
1298287512Sdimextern __ATTRS_o vector signed int
1299287512Sdimvec_load_bndry(const signed int *__ptr, unsigned short __len)
1300287512Sdim  __constant_pow2_range(__len, 64, 4096);
1301287512Sdim
1302287512Sdimextern __ATTRS_o vector unsigned int
1303287512Sdimvec_load_bndry(const unsigned int *__ptr, unsigned short __len)
1304287512Sdim  __constant_pow2_range(__len, 64, 4096);
1305287512Sdim
1306287512Sdimextern __ATTRS_o vector signed long long
1307287512Sdimvec_load_bndry(const signed long long *__ptr, unsigned short __len)
1308287512Sdim  __constant_pow2_range(__len, 64, 4096);
1309287512Sdim
1310287512Sdimextern __ATTRS_o vector unsigned long long
1311287512Sdimvec_load_bndry(const unsigned long long *__ptr, unsigned short __len)
1312287512Sdim  __constant_pow2_range(__len, 64, 4096);
1313287512Sdim
1314321369Sdim#if __ARCH__ >= 12
1315321369Sdimextern __ATTRS_o vector float
1316321369Sdimvec_load_bndry(const float *__ptr, unsigned short __len)
1317321369Sdim  __constant_pow2_range(__len, 64, 4096);
1318321369Sdim#endif
1319321369Sdim
1320287512Sdimextern __ATTRS_o vector double
1321287512Sdimvec_load_bndry(const double *__ptr, unsigned short __len)
1322287512Sdim  __constant_pow2_range(__len, 64, 4096);
1323287512Sdim
1324287512Sdim#define vec_load_bndry(X, Y) ((__typeof__((vec_load_bndry)((X), (Y)))) \
1325287512Sdim  __builtin_s390_vlbb((X), ((Y) == 64 ? 0 : \
1326287512Sdim                            (Y) == 128 ? 1 : \
1327287512Sdim                            (Y) == 256 ? 2 : \
1328287512Sdim                            (Y) == 512 ? 3 : \
1329287512Sdim                            (Y) == 1024 ? 4 : \
1330287512Sdim                            (Y) == 2048 ? 5 : \
1331287512Sdim                            (Y) == 4096 ? 6 : -1)))
1332287512Sdim
1333287512Sdim/*-- vec_load_len -----------------------------------------------------------*/
1334287512Sdim
1335287512Sdimstatic inline __ATTRS_o_ai vector signed char
1336287512Sdimvec_load_len(const signed char *__ptr, unsigned int __len) {
1337287512Sdim  return (vector signed char)__builtin_s390_vll(__len, __ptr);
1338287512Sdim}
1339287512Sdim
1340287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
1341287512Sdimvec_load_len(const unsigned char *__ptr, unsigned int __len) {
1342287512Sdim  return (vector unsigned char)__builtin_s390_vll(__len, __ptr);
1343287512Sdim}
1344287512Sdim
1345287512Sdimstatic inline __ATTRS_o_ai vector signed short
1346287512Sdimvec_load_len(const signed short *__ptr, unsigned int __len) {
1347287512Sdim  return (vector signed short)__builtin_s390_vll(__len, __ptr);
1348287512Sdim}
1349287512Sdim
1350287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
1351287512Sdimvec_load_len(const unsigned short *__ptr, unsigned int __len) {
1352287512Sdim  return (vector unsigned short)__builtin_s390_vll(__len, __ptr);
1353287512Sdim}
1354287512Sdim
1355287512Sdimstatic inline __ATTRS_o_ai vector signed int
1356287512Sdimvec_load_len(const signed int *__ptr, unsigned int __len) {
1357287512Sdim  return (vector signed int)__builtin_s390_vll(__len, __ptr);
1358287512Sdim}
1359287512Sdim
1360287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
1361287512Sdimvec_load_len(const unsigned int *__ptr, unsigned int __len) {
1362287512Sdim  return (vector unsigned int)__builtin_s390_vll(__len, __ptr);
1363287512Sdim}
1364287512Sdim
1365287512Sdimstatic inline __ATTRS_o_ai vector signed long long
1366287512Sdimvec_load_len(const signed long long *__ptr, unsigned int __len) {
1367287512Sdim  return (vector signed long long)__builtin_s390_vll(__len, __ptr);
1368287512Sdim}
1369287512Sdim
1370287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
1371287512Sdimvec_load_len(const unsigned long long *__ptr, unsigned int __len) {
1372287512Sdim  return (vector unsigned long long)__builtin_s390_vll(__len, __ptr);
1373287512Sdim}
1374287512Sdim
1375321369Sdim#if __ARCH__ >= 12
1376321369Sdimstatic inline __ATTRS_o_ai vector float
1377321369Sdimvec_load_len(const float *__ptr, unsigned int __len) {
1378321369Sdim  return (vector float)__builtin_s390_vll(__len, __ptr);
1379321369Sdim}
1380321369Sdim#endif
1381321369Sdim
1382287512Sdimstatic inline __ATTRS_o_ai vector double
1383287512Sdimvec_load_len(const double *__ptr, unsigned int __len) {
1384287512Sdim  return (vector double)__builtin_s390_vll(__len, __ptr);
1385287512Sdim}
1386287512Sdim
1387321369Sdim/*-- vec_load_len_r ---------------------------------------------------------*/
1388321369Sdim
1389321369Sdim#if __ARCH__ >= 12
1390321369Sdimstatic inline __ATTRS_ai vector unsigned char
1391321369Sdimvec_load_len_r(const unsigned char *__ptr, unsigned int __len) {
1392321369Sdim  return (vector unsigned char)__builtin_s390_vlrl(__len, __ptr);
1393321369Sdim}
1394321369Sdim#endif
1395321369Sdim
1396287512Sdim/*-- vec_store_len ----------------------------------------------------------*/
1397287512Sdim
1398287512Sdimstatic inline __ATTRS_o_ai void
1399287512Sdimvec_store_len(vector signed char __vec, signed char *__ptr,
1400287512Sdim              unsigned int __len) {
1401287512Sdim  __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1402287512Sdim}
1403287512Sdim
1404287512Sdimstatic inline __ATTRS_o_ai void
1405287512Sdimvec_store_len(vector unsigned char __vec, unsigned char *__ptr,
1406287512Sdim              unsigned int __len) {
1407287512Sdim  __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1408287512Sdim}
1409287512Sdim
1410287512Sdimstatic inline __ATTRS_o_ai void
1411287512Sdimvec_store_len(vector signed short __vec, signed short *__ptr,
1412287512Sdim              unsigned int __len) {
1413287512Sdim  __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1414287512Sdim}
1415287512Sdim
1416287512Sdimstatic inline __ATTRS_o_ai void
1417287512Sdimvec_store_len(vector unsigned short __vec, unsigned short *__ptr,
1418287512Sdim              unsigned int __len) {
1419287512Sdim  __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1420287512Sdim}
1421287512Sdim
1422287512Sdimstatic inline __ATTRS_o_ai void
1423287512Sdimvec_store_len(vector signed int __vec, signed int *__ptr,
1424287512Sdim              unsigned int __len) {
1425287512Sdim  __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1426287512Sdim}
1427287512Sdim
1428287512Sdimstatic inline __ATTRS_o_ai void
1429287512Sdimvec_store_len(vector unsigned int __vec, unsigned int *__ptr,
1430287512Sdim              unsigned int __len) {
1431287512Sdim  __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1432287512Sdim}
1433287512Sdim
1434287512Sdimstatic inline __ATTRS_o_ai void
1435287512Sdimvec_store_len(vector signed long long __vec, signed long long *__ptr,
1436287512Sdim              unsigned int __len) {
1437287512Sdim  __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1438287512Sdim}
1439287512Sdim
1440287512Sdimstatic inline __ATTRS_o_ai void
1441287512Sdimvec_store_len(vector unsigned long long __vec, unsigned long long *__ptr,
1442287512Sdim              unsigned int __len) {
1443287512Sdim  __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1444287512Sdim}
1445287512Sdim
1446321369Sdim#if __ARCH__ >= 12
1447287512Sdimstatic inline __ATTRS_o_ai void
1448321369Sdimvec_store_len(vector float __vec, float *__ptr,
1449321369Sdim              unsigned int __len) {
1450321369Sdim  __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1451321369Sdim}
1452321369Sdim#endif
1453321369Sdim
1454321369Sdimstatic inline __ATTRS_o_ai void
1455287512Sdimvec_store_len(vector double __vec, double *__ptr,
1456287512Sdim              unsigned int __len) {
1457287512Sdim  __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1458287512Sdim}
1459287512Sdim
1460321369Sdim/*-- vec_store_len_r --------------------------------------------------------*/
1461321369Sdim
1462321369Sdim#if __ARCH__ >= 12
1463321369Sdimstatic inline __ATTRS_ai void
1464321369Sdimvec_store_len_r(vector unsigned char __vec, unsigned char *__ptr,
1465321369Sdim                unsigned int __len) {
1466321369Sdim  __builtin_s390_vstrl((vector signed char)__vec, __len, __ptr);
1467321369Sdim}
1468321369Sdim#endif
1469321369Sdim
1470287512Sdim/*-- vec_load_pair ----------------------------------------------------------*/
1471287512Sdim
1472287512Sdimstatic inline __ATTRS_o_ai vector signed long long
1473287512Sdimvec_load_pair(signed long long __a, signed long long __b) {
1474287512Sdim  return (vector signed long long)(__a, __b);
1475287512Sdim}
1476287512Sdim
1477287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
1478287512Sdimvec_load_pair(unsigned long long __a, unsigned long long __b) {
1479287512Sdim  return (vector unsigned long long)(__a, __b);
1480287512Sdim}
1481287512Sdim
1482287512Sdim/*-- vec_genmask ------------------------------------------------------------*/
1483287512Sdim
1484287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
1485287512Sdimvec_genmask(unsigned short __mask)
1486287512Sdim  __constant(__mask) {
1487287512Sdim  return (vector unsigned char)(
1488287512Sdim    __mask & 0x8000 ? 0xff : 0,
1489287512Sdim    __mask & 0x4000 ? 0xff : 0,
1490287512Sdim    __mask & 0x2000 ? 0xff : 0,
1491287512Sdim    __mask & 0x1000 ? 0xff : 0,
1492287512Sdim    __mask & 0x0800 ? 0xff : 0,
1493287512Sdim    __mask & 0x0400 ? 0xff : 0,
1494287512Sdim    __mask & 0x0200 ? 0xff : 0,
1495287512Sdim    __mask & 0x0100 ? 0xff : 0,
1496287512Sdim    __mask & 0x0080 ? 0xff : 0,
1497287512Sdim    __mask & 0x0040 ? 0xff : 0,
1498287512Sdim    __mask & 0x0020 ? 0xff : 0,
1499287512Sdim    __mask & 0x0010 ? 0xff : 0,
1500287512Sdim    __mask & 0x0008 ? 0xff : 0,
1501287512Sdim    __mask & 0x0004 ? 0xff : 0,
1502287512Sdim    __mask & 0x0002 ? 0xff : 0,
1503287512Sdim    __mask & 0x0001 ? 0xff : 0);
1504287512Sdim}
1505287512Sdim
1506287512Sdim/*-- vec_genmasks_* ---------------------------------------------------------*/
1507287512Sdim
1508287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
1509287512Sdimvec_genmasks_8(unsigned char __first, unsigned char __last)
1510287512Sdim  __constant(__first) __constant(__last) {
1511287512Sdim  unsigned char __bit1 = __first & 7;
1512287512Sdim  unsigned char __bit2 = __last & 7;
1513287512Sdim  unsigned char __mask1 = (unsigned char)(1U << (7 - __bit1) << 1) - 1;
1514287512Sdim  unsigned char __mask2 = (unsigned char)(1U << (7 - __bit2)) - 1;
1515287512Sdim  unsigned char __value = (__bit1 <= __bit2 ?
1516287512Sdim                           __mask1 & ~__mask2 :
1517287512Sdim                           __mask1 | ~__mask2);
1518287512Sdim  return (vector unsigned char)__value;
1519287512Sdim}
1520287512Sdim
1521287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
1522287512Sdimvec_genmasks_16(unsigned char __first, unsigned char __last)
1523287512Sdim  __constant(__first) __constant(__last) {
1524287512Sdim  unsigned char __bit1 = __first & 15;
1525287512Sdim  unsigned char __bit2 = __last & 15;
1526287512Sdim  unsigned short __mask1 = (unsigned short)(1U << (15 - __bit1) << 1) - 1;
1527287512Sdim  unsigned short __mask2 = (unsigned short)(1U << (15 - __bit2)) - 1;
1528287512Sdim  unsigned short __value = (__bit1 <= __bit2 ?
1529287512Sdim                            __mask1 & ~__mask2 :
1530287512Sdim                            __mask1 | ~__mask2);
1531287512Sdim  return (vector unsigned short)__value;
1532287512Sdim}
1533287512Sdim
1534287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
1535287512Sdimvec_genmasks_32(unsigned char __first, unsigned char __last)
1536287512Sdim  __constant(__first) __constant(__last) {
1537287512Sdim  unsigned char __bit1 = __first & 31;
1538287512Sdim  unsigned char __bit2 = __last & 31;
1539287512Sdim  unsigned int __mask1 = (1U << (31 - __bit1) << 1) - 1;
1540287512Sdim  unsigned int __mask2 = (1U << (31 - __bit2)) - 1;
1541287512Sdim  unsigned int __value = (__bit1 <= __bit2 ?
1542287512Sdim                          __mask1 & ~__mask2 :
1543287512Sdim                          __mask1 | ~__mask2);
1544287512Sdim  return (vector unsigned int)__value;
1545287512Sdim}
1546287512Sdim
1547287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
1548287512Sdimvec_genmasks_64(unsigned char __first, unsigned char __last)
1549287512Sdim  __constant(__first) __constant(__last) {
1550287512Sdim  unsigned char __bit1 = __first & 63;
1551287512Sdim  unsigned char __bit2 = __last & 63;
1552287512Sdim  unsigned long long __mask1 = (1ULL << (63 - __bit1) << 1) - 1;
1553287512Sdim  unsigned long long __mask2 = (1ULL << (63 - __bit2)) - 1;
1554287512Sdim  unsigned long long __value = (__bit1 <= __bit2 ?
1555287512Sdim                                __mask1 & ~__mask2 :
1556287512Sdim                                __mask1 | ~__mask2);
1557287512Sdim  return (vector unsigned long long)__value;
1558287512Sdim}
1559287512Sdim
1560287512Sdim/*-- vec_splat --------------------------------------------------------------*/
1561287512Sdim
1562287512Sdimstatic inline __ATTRS_o_ai vector signed char
1563287512Sdimvec_splat(vector signed char __vec, int __index)
1564287512Sdim  __constant_range(__index, 0, 15) {
1565287512Sdim  return (vector signed char)__vec[__index];
1566287512Sdim}
1567287512Sdim
1568287512Sdimstatic inline __ATTRS_o_ai vector bool char
1569287512Sdimvec_splat(vector bool char __vec, int __index)
1570287512Sdim  __constant_range(__index, 0, 15) {
1571287512Sdim  return (vector bool char)(vector unsigned char)__vec[__index];
1572287512Sdim}
1573287512Sdim
1574287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
1575287512Sdimvec_splat(vector unsigned char __vec, int __index)
1576287512Sdim  __constant_range(__index, 0, 15) {
1577287512Sdim  return (vector unsigned char)__vec[__index];
1578287512Sdim}
1579287512Sdim
1580287512Sdimstatic inline __ATTRS_o_ai vector signed short
1581287512Sdimvec_splat(vector signed short __vec, int __index)
1582287512Sdim  __constant_range(__index, 0, 7) {
1583287512Sdim  return (vector signed short)__vec[__index];
1584287512Sdim}
1585287512Sdim
1586287512Sdimstatic inline __ATTRS_o_ai vector bool short
1587287512Sdimvec_splat(vector bool short __vec, int __index)
1588287512Sdim  __constant_range(__index, 0, 7) {
1589287512Sdim  return (vector bool short)(vector unsigned short)__vec[__index];
1590287512Sdim}
1591287512Sdim
1592287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
1593287512Sdimvec_splat(vector unsigned short __vec, int __index)
1594287512Sdim  __constant_range(__index, 0, 7) {
1595287512Sdim  return (vector unsigned short)__vec[__index];
1596287512Sdim}
1597287512Sdim
1598287512Sdimstatic inline __ATTRS_o_ai vector signed int
1599287512Sdimvec_splat(vector signed int __vec, int __index)
1600287512Sdim  __constant_range(__index, 0, 3) {
1601287512Sdim  return (vector signed int)__vec[__index];
1602287512Sdim}
1603287512Sdim
1604287512Sdimstatic inline __ATTRS_o_ai vector bool int
1605287512Sdimvec_splat(vector bool int __vec, int __index)
1606287512Sdim  __constant_range(__index, 0, 3) {
1607287512Sdim  return (vector bool int)(vector unsigned int)__vec[__index];
1608287512Sdim}
1609287512Sdim
1610287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
1611287512Sdimvec_splat(vector unsigned int __vec, int __index)
1612287512Sdim  __constant_range(__index, 0, 3) {
1613287512Sdim  return (vector unsigned int)__vec[__index];
1614287512Sdim}
1615287512Sdim
1616287512Sdimstatic inline __ATTRS_o_ai vector signed long long
1617287512Sdimvec_splat(vector signed long long __vec, int __index)
1618287512Sdim  __constant_range(__index, 0, 1) {
1619287512Sdim  return (vector signed long long)__vec[__index];
1620287512Sdim}
1621287512Sdim
1622287512Sdimstatic inline __ATTRS_o_ai vector bool long long
1623287512Sdimvec_splat(vector bool long long __vec, int __index)
1624287512Sdim  __constant_range(__index, 0, 1) {
1625287512Sdim  return (vector bool long long)(vector unsigned long long)__vec[__index];
1626287512Sdim}
1627287512Sdim
1628287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
1629287512Sdimvec_splat(vector unsigned long long __vec, int __index)
1630287512Sdim  __constant_range(__index, 0, 1) {
1631287512Sdim  return (vector unsigned long long)__vec[__index];
1632287512Sdim}
1633287512Sdim
1634321369Sdim#if __ARCH__ >= 12
1635321369Sdimstatic inline __ATTRS_o_ai vector float
1636321369Sdimvec_splat(vector float __vec, int __index)
1637321369Sdim  __constant_range(__index, 0, 3) {
1638321369Sdim  return (vector float)__vec[__index];
1639321369Sdim}
1640321369Sdim#endif
1641321369Sdim
1642287512Sdimstatic inline __ATTRS_o_ai vector double
1643287512Sdimvec_splat(vector double __vec, int __index)
1644287512Sdim  __constant_range(__index, 0, 1) {
1645287512Sdim  return (vector double)__vec[__index];
1646287512Sdim}
1647287512Sdim
1648287512Sdim/*-- vec_splat_s* -----------------------------------------------------------*/
1649287512Sdim
1650287512Sdimstatic inline __ATTRS_ai vector signed char
1651287512Sdimvec_splat_s8(signed char __scalar)
1652287512Sdim  __constant(__scalar) {
1653287512Sdim  return (vector signed char)__scalar;
1654287512Sdim}
1655287512Sdim
1656287512Sdimstatic inline __ATTRS_ai vector signed short
1657287512Sdimvec_splat_s16(signed short __scalar)
1658287512Sdim  __constant(__scalar) {
1659287512Sdim  return (vector signed short)__scalar;
1660287512Sdim}
1661287512Sdim
1662287512Sdimstatic inline __ATTRS_ai vector signed int
1663287512Sdimvec_splat_s32(signed short __scalar)
1664287512Sdim  __constant(__scalar) {
1665287512Sdim  return (vector signed int)(signed int)__scalar;
1666287512Sdim}
1667287512Sdim
1668287512Sdimstatic inline __ATTRS_ai vector signed long long
1669287512Sdimvec_splat_s64(signed short __scalar)
1670287512Sdim  __constant(__scalar) {
1671287512Sdim  return (vector signed long long)(signed long)__scalar;
1672287512Sdim}
1673287512Sdim
1674287512Sdim/*-- vec_splat_u* -----------------------------------------------------------*/
1675287512Sdim
1676287512Sdimstatic inline __ATTRS_ai vector unsigned char
1677287512Sdimvec_splat_u8(unsigned char __scalar)
1678287512Sdim  __constant(__scalar) {
1679287512Sdim  return (vector unsigned char)__scalar;
1680287512Sdim}
1681287512Sdim
1682287512Sdimstatic inline __ATTRS_ai vector unsigned short
1683287512Sdimvec_splat_u16(unsigned short __scalar)
1684287512Sdim  __constant(__scalar) {
1685287512Sdim  return (vector unsigned short)__scalar;
1686287512Sdim}
1687287512Sdim
1688287512Sdimstatic inline __ATTRS_ai vector unsigned int
1689287512Sdimvec_splat_u32(signed short __scalar)
1690287512Sdim  __constant(__scalar) {
1691287512Sdim  return (vector unsigned int)(signed int)__scalar;
1692287512Sdim}
1693287512Sdim
1694287512Sdimstatic inline __ATTRS_ai vector unsigned long long
1695287512Sdimvec_splat_u64(signed short __scalar)
1696287512Sdim  __constant(__scalar) {
1697287512Sdim  return (vector unsigned long long)(signed long long)__scalar;
1698287512Sdim}
1699287512Sdim
1700287512Sdim/*-- vec_splats -------------------------------------------------------------*/
1701287512Sdim
1702287512Sdimstatic inline __ATTRS_o_ai vector signed char
1703287512Sdimvec_splats(signed char __scalar) {
1704287512Sdim  return (vector signed char)__scalar;
1705287512Sdim}
1706287512Sdim
1707287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
1708287512Sdimvec_splats(unsigned char __scalar) {
1709287512Sdim  return (vector unsigned char)__scalar;
1710287512Sdim}
1711287512Sdim
1712287512Sdimstatic inline __ATTRS_o_ai vector signed short
1713287512Sdimvec_splats(signed short __scalar) {
1714287512Sdim  return (vector signed short)__scalar;
1715287512Sdim}
1716287512Sdim
1717287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
1718287512Sdimvec_splats(unsigned short __scalar) {
1719287512Sdim  return (vector unsigned short)__scalar;
1720287512Sdim}
1721287512Sdim
1722287512Sdimstatic inline __ATTRS_o_ai vector signed int
1723287512Sdimvec_splats(signed int __scalar) {
1724287512Sdim  return (vector signed int)__scalar;
1725287512Sdim}
1726287512Sdim
1727287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
1728287512Sdimvec_splats(unsigned int __scalar) {
1729287512Sdim  return (vector unsigned int)__scalar;
1730287512Sdim}
1731287512Sdim
1732287512Sdimstatic inline __ATTRS_o_ai vector signed long long
1733287512Sdimvec_splats(signed long long __scalar) {
1734287512Sdim  return (vector signed long long)__scalar;
1735287512Sdim}
1736287512Sdim
1737287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
1738287512Sdimvec_splats(unsigned long long __scalar) {
1739287512Sdim  return (vector unsigned long long)__scalar;
1740287512Sdim}
1741287512Sdim
1742321369Sdim#if __ARCH__ >= 12
1743321369Sdimstatic inline __ATTRS_o_ai vector float
1744321369Sdimvec_splats(float __scalar) {
1745321369Sdim  return (vector float)__scalar;
1746321369Sdim}
1747321369Sdim#endif
1748321369Sdim
1749287512Sdimstatic inline __ATTRS_o_ai vector double
1750287512Sdimvec_splats(double __scalar) {
1751287512Sdim  return (vector double)__scalar;
1752287512Sdim}
1753287512Sdim
1754287512Sdim/*-- vec_extend_s64 ---------------------------------------------------------*/
1755287512Sdim
1756287512Sdimstatic inline __ATTRS_o_ai vector signed long long
1757287512Sdimvec_extend_s64(vector signed char __a) {
1758287512Sdim  return (vector signed long long)(__a[7], __a[15]);
1759287512Sdim}
1760287512Sdim
1761287512Sdimstatic inline __ATTRS_o_ai vector signed long long
1762287512Sdimvec_extend_s64(vector signed short __a) {
1763287512Sdim  return (vector signed long long)(__a[3], __a[7]);
1764287512Sdim}
1765287512Sdim
1766287512Sdimstatic inline __ATTRS_o_ai vector signed long long
1767287512Sdimvec_extend_s64(vector signed int __a) {
1768287512Sdim  return (vector signed long long)(__a[1], __a[3]);
1769287512Sdim}
1770287512Sdim
1771287512Sdim/*-- vec_mergeh -------------------------------------------------------------*/
1772287512Sdim
1773287512Sdimstatic inline __ATTRS_o_ai vector signed char
1774287512Sdimvec_mergeh(vector signed char __a, vector signed char __b) {
1775287512Sdim  return (vector signed char)(
1776287512Sdim    __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3],
1777287512Sdim    __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
1778287512Sdim}
1779287512Sdim
1780287512Sdimstatic inline __ATTRS_o_ai vector bool char
1781287512Sdimvec_mergeh(vector bool char __a, vector bool char __b) {
1782287512Sdim  return (vector bool char)(
1783287512Sdim    __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3],
1784287512Sdim    __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
1785287512Sdim}
1786287512Sdim
1787287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
1788287512Sdimvec_mergeh(vector unsigned char __a, vector unsigned char __b) {
1789287512Sdim  return (vector unsigned char)(
1790287512Sdim    __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3],
1791287512Sdim    __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
1792287512Sdim}
1793287512Sdim
1794287512Sdimstatic inline __ATTRS_o_ai vector signed short
1795287512Sdimvec_mergeh(vector signed short __a, vector signed short __b) {
1796287512Sdim  return (vector signed short)(
1797287512Sdim    __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3]);
1798287512Sdim}
1799287512Sdim
1800287512Sdimstatic inline __ATTRS_o_ai vector bool short
1801287512Sdimvec_mergeh(vector bool short __a, vector bool short __b) {
1802287512Sdim  return (vector bool short)(
1803287512Sdim    __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3]);
1804287512Sdim}
1805287512Sdim
1806287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
1807287512Sdimvec_mergeh(vector unsigned short __a, vector unsigned short __b) {
1808287512Sdim  return (vector unsigned short)(
1809287512Sdim    __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3]);
1810287512Sdim}
1811287512Sdim
1812287512Sdimstatic inline __ATTRS_o_ai vector signed int
1813287512Sdimvec_mergeh(vector signed int __a, vector signed int __b) {
1814287512Sdim  return (vector signed int)(__a[0], __b[0], __a[1], __b[1]);
1815287512Sdim}
1816287512Sdim
1817287512Sdimstatic inline __ATTRS_o_ai vector bool int
1818287512Sdimvec_mergeh(vector bool int __a, vector bool int __b) {
1819287512Sdim  return (vector bool int)(__a[0], __b[0], __a[1], __b[1]);
1820287512Sdim}
1821287512Sdim
1822287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
1823287512Sdimvec_mergeh(vector unsigned int __a, vector unsigned int __b) {
1824287512Sdim  return (vector unsigned int)(__a[0], __b[0], __a[1], __b[1]);
1825287512Sdim}
1826287512Sdim
1827287512Sdimstatic inline __ATTRS_o_ai vector signed long long
1828287512Sdimvec_mergeh(vector signed long long __a, vector signed long long __b) {
1829287512Sdim  return (vector signed long long)(__a[0], __b[0]);
1830287512Sdim}
1831287512Sdim
1832287512Sdimstatic inline __ATTRS_o_ai vector bool long long
1833287512Sdimvec_mergeh(vector bool long long __a, vector bool long long __b) {
1834287512Sdim  return (vector bool long long)(__a[0], __b[0]);
1835287512Sdim}
1836287512Sdim
1837287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
1838287512Sdimvec_mergeh(vector unsigned long long __a, vector unsigned long long __b) {
1839287512Sdim  return (vector unsigned long long)(__a[0], __b[0]);
1840287512Sdim}
1841287512Sdim
1842321369Sdim#if __ARCH__ >= 12
1843321369Sdimstatic inline __ATTRS_o_ai vector float
1844321369Sdimvec_mergeh(vector float __a, vector float __b) {
1845321369Sdim  return (vector float)(__a[0], __b[0], __a[1], __b[1]);
1846321369Sdim}
1847321369Sdim#endif
1848321369Sdim
1849287512Sdimstatic inline __ATTRS_o_ai vector double
1850287512Sdimvec_mergeh(vector double __a, vector double __b) {
1851287512Sdim  return (vector double)(__a[0], __b[0]);
1852287512Sdim}
1853287512Sdim
1854287512Sdim/*-- vec_mergel -------------------------------------------------------------*/
1855287512Sdim
1856287512Sdimstatic inline __ATTRS_o_ai vector signed char
1857287512Sdimvec_mergel(vector signed char __a, vector signed char __b) {
1858287512Sdim  return (vector signed char)(
1859287512Sdim    __a[8], __b[8], __a[9], __b[9], __a[10], __b[10], __a[11], __b[11],
1860287512Sdim    __a[12], __b[12], __a[13], __b[13], __a[14], __b[14], __a[15], __b[15]);
1861287512Sdim}
1862287512Sdim
1863287512Sdimstatic inline __ATTRS_o_ai vector bool char
1864287512Sdimvec_mergel(vector bool char __a, vector bool char __b) {
1865287512Sdim  return (vector bool char)(
1866287512Sdim    __a[8], __b[8], __a[9], __b[9], __a[10], __b[10], __a[11], __b[11],
1867287512Sdim    __a[12], __b[12], __a[13], __b[13], __a[14], __b[14], __a[15], __b[15]);
1868287512Sdim}
1869287512Sdim
1870287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
1871287512Sdimvec_mergel(vector unsigned char __a, vector unsigned char __b) {
1872287512Sdim  return (vector unsigned char)(
1873287512Sdim    __a[8], __b[8], __a[9], __b[9], __a[10], __b[10], __a[11], __b[11],
1874287512Sdim    __a[12], __b[12], __a[13], __b[13], __a[14], __b[14], __a[15], __b[15]);
1875287512Sdim}
1876287512Sdim
1877287512Sdimstatic inline __ATTRS_o_ai vector signed short
1878287512Sdimvec_mergel(vector signed short __a, vector signed short __b) {
1879287512Sdim  return (vector signed short)(
1880287512Sdim    __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
1881287512Sdim}
1882287512Sdim
1883287512Sdimstatic inline __ATTRS_o_ai vector bool short
1884287512Sdimvec_mergel(vector bool short __a, vector bool short __b) {
1885287512Sdim  return (vector bool short)(
1886287512Sdim    __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
1887287512Sdim}
1888287512Sdim
1889287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
1890287512Sdimvec_mergel(vector unsigned short __a, vector unsigned short __b) {
1891287512Sdim  return (vector unsigned short)(
1892287512Sdim    __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
1893287512Sdim}
1894287512Sdim
1895287512Sdimstatic inline __ATTRS_o_ai vector signed int
1896287512Sdimvec_mergel(vector signed int __a, vector signed int __b) {
1897287512Sdim  return (vector signed int)(__a[2], __b[2], __a[3], __b[3]);
1898287512Sdim}
1899287512Sdim
1900287512Sdimstatic inline __ATTRS_o_ai vector bool int
1901287512Sdimvec_mergel(vector bool int __a, vector bool int __b) {
1902287512Sdim  return (vector bool int)(__a[2], __b[2], __a[3], __b[3]);
1903287512Sdim}
1904287512Sdim
1905287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
1906287512Sdimvec_mergel(vector unsigned int __a, vector unsigned int __b) {
1907287512Sdim  return (vector unsigned int)(__a[2], __b[2], __a[3], __b[3]);
1908287512Sdim}
1909287512Sdim
1910287512Sdimstatic inline __ATTRS_o_ai vector signed long long
1911287512Sdimvec_mergel(vector signed long long __a, vector signed long long __b) {
1912287512Sdim  return (vector signed long long)(__a[1], __b[1]);
1913287512Sdim}
1914287512Sdim
1915287512Sdimstatic inline __ATTRS_o_ai vector bool long long
1916287512Sdimvec_mergel(vector bool long long __a, vector bool long long __b) {
1917287512Sdim  return (vector bool long long)(__a[1], __b[1]);
1918287512Sdim}
1919287512Sdim
1920287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
1921287512Sdimvec_mergel(vector unsigned long long __a, vector unsigned long long __b) {
1922287512Sdim  return (vector unsigned long long)(__a[1], __b[1]);
1923287512Sdim}
1924287512Sdim
1925321369Sdim#if __ARCH__ >= 12
1926321369Sdimstatic inline __ATTRS_o_ai vector float
1927321369Sdimvec_mergel(vector float __a, vector float __b) {
1928321369Sdim  return (vector float)(__a[2], __b[2], __a[3], __b[3]);
1929321369Sdim}
1930321369Sdim#endif
1931321369Sdim
1932287512Sdimstatic inline __ATTRS_o_ai vector double
1933287512Sdimvec_mergel(vector double __a, vector double __b) {
1934287512Sdim  return (vector double)(__a[1], __b[1]);
1935287512Sdim}
1936287512Sdim
1937287512Sdim/*-- vec_pack ---------------------------------------------------------------*/
1938287512Sdim
1939287512Sdimstatic inline __ATTRS_o_ai vector signed char
1940287512Sdimvec_pack(vector signed short __a, vector signed short __b) {
1941287512Sdim  vector signed char __ac = (vector signed char)__a;
1942287512Sdim  vector signed char __bc = (vector signed char)__b;
1943287512Sdim  return (vector signed char)(
1944287512Sdim    __ac[1], __ac[3], __ac[5], __ac[7], __ac[9], __ac[11], __ac[13], __ac[15],
1945287512Sdim    __bc[1], __bc[3], __bc[5], __bc[7], __bc[9], __bc[11], __bc[13], __bc[15]);
1946287512Sdim}
1947287512Sdim
1948287512Sdimstatic inline __ATTRS_o_ai vector bool char
1949287512Sdimvec_pack(vector bool short __a, vector bool short __b) {
1950287512Sdim  vector bool char __ac = (vector bool char)__a;
1951287512Sdim  vector bool char __bc = (vector bool char)__b;
1952287512Sdim  return (vector bool char)(
1953287512Sdim    __ac[1], __ac[3], __ac[5], __ac[7], __ac[9], __ac[11], __ac[13], __ac[15],
1954287512Sdim    __bc[1], __bc[3], __bc[5], __bc[7], __bc[9], __bc[11], __bc[13], __bc[15]);
1955287512Sdim}
1956287512Sdim
1957287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
1958287512Sdimvec_pack(vector unsigned short __a, vector unsigned short __b) {
1959287512Sdim  vector unsigned char __ac = (vector unsigned char)__a;
1960287512Sdim  vector unsigned char __bc = (vector unsigned char)__b;
1961287512Sdim  return (vector unsigned char)(
1962287512Sdim    __ac[1], __ac[3], __ac[5], __ac[7], __ac[9], __ac[11], __ac[13], __ac[15],
1963287512Sdim    __bc[1], __bc[3], __bc[5], __bc[7], __bc[9], __bc[11], __bc[13], __bc[15]);
1964287512Sdim}
1965287512Sdim
1966287512Sdimstatic inline __ATTRS_o_ai vector signed short
1967287512Sdimvec_pack(vector signed int __a, vector signed int __b) {
1968287512Sdim  vector signed short __ac = (vector signed short)__a;
1969287512Sdim  vector signed short __bc = (vector signed short)__b;
1970287512Sdim  return (vector signed short)(
1971287512Sdim    __ac[1], __ac[3], __ac[5], __ac[7],
1972287512Sdim    __bc[1], __bc[3], __bc[5], __bc[7]);
1973287512Sdim}
1974287512Sdim
1975287512Sdimstatic inline __ATTRS_o_ai vector bool short
1976287512Sdimvec_pack(vector bool int __a, vector bool int __b) {
1977287512Sdim  vector bool short __ac = (vector bool short)__a;
1978287512Sdim  vector bool short __bc = (vector bool short)__b;
1979287512Sdim  return (vector bool short)(
1980287512Sdim    __ac[1], __ac[3], __ac[5], __ac[7],
1981287512Sdim    __bc[1], __bc[3], __bc[5], __bc[7]);
1982287512Sdim}
1983287512Sdim
1984287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
1985287512Sdimvec_pack(vector unsigned int __a, vector unsigned int __b) {
1986287512Sdim  vector unsigned short __ac = (vector unsigned short)__a;
1987287512Sdim  vector unsigned short __bc = (vector unsigned short)__b;
1988287512Sdim  return (vector unsigned short)(
1989287512Sdim    __ac[1], __ac[3], __ac[5], __ac[7],
1990287512Sdim    __bc[1], __bc[3], __bc[5], __bc[7]);
1991287512Sdim}
1992287512Sdim
1993287512Sdimstatic inline __ATTRS_o_ai vector signed int
1994287512Sdimvec_pack(vector signed long long __a, vector signed long long __b) {
1995287512Sdim  vector signed int __ac = (vector signed int)__a;
1996287512Sdim  vector signed int __bc = (vector signed int)__b;
1997287512Sdim  return (vector signed int)(__ac[1], __ac[3], __bc[1], __bc[3]);
1998287512Sdim}
1999287512Sdim
2000287512Sdimstatic inline __ATTRS_o_ai vector bool int
2001287512Sdimvec_pack(vector bool long long __a, vector bool long long __b) {
2002287512Sdim  vector bool int __ac = (vector bool int)__a;
2003287512Sdim  vector bool int __bc = (vector bool int)__b;
2004287512Sdim  return (vector bool int)(__ac[1], __ac[3], __bc[1], __bc[3]);
2005287512Sdim}
2006287512Sdim
2007287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
2008287512Sdimvec_pack(vector unsigned long long __a, vector unsigned long long __b) {
2009287512Sdim  vector unsigned int __ac = (vector unsigned int)__a;
2010287512Sdim  vector unsigned int __bc = (vector unsigned int)__b;
2011287512Sdim  return (vector unsigned int)(__ac[1], __ac[3], __bc[1], __bc[3]);
2012287512Sdim}
2013287512Sdim
2014287512Sdim/*-- vec_packs --------------------------------------------------------------*/
2015287512Sdim
2016287512Sdimstatic inline __ATTRS_o_ai vector signed char
2017287512Sdimvec_packs(vector signed short __a, vector signed short __b) {
2018287512Sdim  return __builtin_s390_vpksh(__a, __b);
2019287512Sdim}
2020287512Sdim
2021287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
2022287512Sdimvec_packs(vector unsigned short __a, vector unsigned short __b) {
2023287512Sdim  return __builtin_s390_vpklsh(__a, __b);
2024287512Sdim}
2025287512Sdim
2026287512Sdimstatic inline __ATTRS_o_ai vector signed short
2027287512Sdimvec_packs(vector signed int __a, vector signed int __b) {
2028287512Sdim  return __builtin_s390_vpksf(__a, __b);
2029287512Sdim}
2030287512Sdim
2031287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
2032287512Sdimvec_packs(vector unsigned int __a, vector unsigned int __b) {
2033287512Sdim  return __builtin_s390_vpklsf(__a, __b);
2034287512Sdim}
2035287512Sdim
2036287512Sdimstatic inline __ATTRS_o_ai vector signed int
2037287512Sdimvec_packs(vector signed long long __a, vector signed long long __b) {
2038287512Sdim  return __builtin_s390_vpksg(__a, __b);
2039287512Sdim}
2040287512Sdim
2041287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
2042287512Sdimvec_packs(vector unsigned long long __a, vector unsigned long long __b) {
2043287512Sdim  return __builtin_s390_vpklsg(__a, __b);
2044287512Sdim}
2045287512Sdim
2046287512Sdim/*-- vec_packs_cc -----------------------------------------------------------*/
2047287512Sdim
2048287512Sdimstatic inline __ATTRS_o_ai vector signed char
2049287512Sdimvec_packs_cc(vector signed short __a, vector signed short __b, int *__cc) {
2050287512Sdim  return __builtin_s390_vpkshs(__a, __b, __cc);
2051287512Sdim}
2052287512Sdim
2053287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
2054287512Sdimvec_packs_cc(vector unsigned short __a, vector unsigned short __b, int *__cc) {
2055287512Sdim  return __builtin_s390_vpklshs(__a, __b, __cc);
2056287512Sdim}
2057287512Sdim
2058287512Sdimstatic inline __ATTRS_o_ai vector signed short
2059287512Sdimvec_packs_cc(vector signed int __a, vector signed int __b, int *__cc) {
2060287512Sdim  return __builtin_s390_vpksfs(__a, __b, __cc);
2061287512Sdim}
2062287512Sdim
2063287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
2064287512Sdimvec_packs_cc(vector unsigned int __a, vector unsigned int __b, int *__cc) {
2065287512Sdim  return __builtin_s390_vpklsfs(__a, __b, __cc);
2066287512Sdim}
2067287512Sdim
2068287512Sdimstatic inline __ATTRS_o_ai vector signed int
2069287512Sdimvec_packs_cc(vector signed long long __a, vector signed long long __b,
2070287512Sdim             int *__cc) {
2071287512Sdim  return __builtin_s390_vpksgs(__a, __b, __cc);
2072287512Sdim}
2073287512Sdim
2074287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
2075287512Sdimvec_packs_cc(vector unsigned long long __a, vector unsigned long long __b,
2076287512Sdim             int *__cc) {
2077287512Sdim  return __builtin_s390_vpklsgs(__a, __b, __cc);
2078287512Sdim}
2079287512Sdim
2080287512Sdim/*-- vec_packsu -------------------------------------------------------------*/
2081287512Sdim
2082287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
2083287512Sdimvec_packsu(vector signed short __a, vector signed short __b) {
2084287512Sdim  const vector signed short __zero = (vector signed short)0;
2085287512Sdim  return __builtin_s390_vpklsh(
2086287512Sdim    (vector unsigned short)(__a >= __zero) & (vector unsigned short)__a,
2087287512Sdim    (vector unsigned short)(__b >= __zero) & (vector unsigned short)__b);
2088287512Sdim}
2089287512Sdim
2090287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
2091287512Sdimvec_packsu(vector unsigned short __a, vector unsigned short __b) {
2092287512Sdim  return __builtin_s390_vpklsh(__a, __b);
2093287512Sdim}
2094287512Sdim
2095287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
2096287512Sdimvec_packsu(vector signed int __a, vector signed int __b) {
2097287512Sdim  const vector signed int __zero = (vector signed int)0;
2098287512Sdim  return __builtin_s390_vpklsf(
2099287512Sdim    (vector unsigned int)(__a >= __zero) & (vector unsigned int)__a,
2100287512Sdim    (vector unsigned int)(__b >= __zero) & (vector unsigned int)__b);
2101287512Sdim}
2102287512Sdim
2103287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
2104287512Sdimvec_packsu(vector unsigned int __a, vector unsigned int __b) {
2105287512Sdim  return __builtin_s390_vpklsf(__a, __b);
2106287512Sdim}
2107287512Sdim
2108287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
2109287512Sdimvec_packsu(vector signed long long __a, vector signed long long __b) {
2110287512Sdim  const vector signed long long __zero = (vector signed long long)0;
2111287512Sdim  return __builtin_s390_vpklsg(
2112287512Sdim    (vector unsigned long long)(__a >= __zero) &
2113287512Sdim    (vector unsigned long long)__a,
2114287512Sdim    (vector unsigned long long)(__b >= __zero) &
2115287512Sdim    (vector unsigned long long)__b);
2116287512Sdim}
2117287512Sdim
2118287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
2119287512Sdimvec_packsu(vector unsigned long long __a, vector unsigned long long __b) {
2120287512Sdim  return __builtin_s390_vpklsg(__a, __b);
2121287512Sdim}
2122287512Sdim
2123287512Sdim/*-- vec_packsu_cc ----------------------------------------------------------*/
2124287512Sdim
2125287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
2126287512Sdimvec_packsu_cc(vector unsigned short __a, vector unsigned short __b, int *__cc) {
2127287512Sdim  return __builtin_s390_vpklshs(__a, __b, __cc);
2128287512Sdim}
2129287512Sdim
2130287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
2131287512Sdimvec_packsu_cc(vector unsigned int __a, vector unsigned int __b, int *__cc) {
2132287512Sdim  return __builtin_s390_vpklsfs(__a, __b, __cc);
2133287512Sdim}
2134287512Sdim
2135287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
2136287512Sdimvec_packsu_cc(vector unsigned long long __a, vector unsigned long long __b,
2137287512Sdim              int *__cc) {
2138287512Sdim  return __builtin_s390_vpklsgs(__a, __b, __cc);
2139287512Sdim}
2140287512Sdim
2141287512Sdim/*-- vec_unpackh ------------------------------------------------------------*/
2142287512Sdim
2143287512Sdimstatic inline __ATTRS_o_ai vector signed short
2144287512Sdimvec_unpackh(vector signed char __a) {
2145287512Sdim  return __builtin_s390_vuphb(__a);
2146287512Sdim}
2147287512Sdim
2148287512Sdimstatic inline __ATTRS_o_ai vector bool short
2149287512Sdimvec_unpackh(vector bool char __a) {
2150287512Sdim  return (vector bool short)__builtin_s390_vuphb((vector signed char)__a);
2151287512Sdim}
2152287512Sdim
2153287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
2154287512Sdimvec_unpackh(vector unsigned char __a) {
2155287512Sdim  return __builtin_s390_vuplhb(__a);
2156287512Sdim}
2157287512Sdim
2158287512Sdimstatic inline __ATTRS_o_ai vector signed int
2159287512Sdimvec_unpackh(vector signed short __a) {
2160287512Sdim  return __builtin_s390_vuphh(__a);
2161287512Sdim}
2162287512Sdim
2163287512Sdimstatic inline __ATTRS_o_ai vector bool int
2164287512Sdimvec_unpackh(vector bool short __a) {
2165287512Sdim  return (vector bool int)__builtin_s390_vuphh((vector signed short)__a);
2166287512Sdim}
2167287512Sdim
2168287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
2169287512Sdimvec_unpackh(vector unsigned short __a) {
2170287512Sdim  return __builtin_s390_vuplhh(__a);
2171287512Sdim}
2172287512Sdim
2173287512Sdimstatic inline __ATTRS_o_ai vector signed long long
2174287512Sdimvec_unpackh(vector signed int __a) {
2175287512Sdim  return __builtin_s390_vuphf(__a);
2176287512Sdim}
2177287512Sdim
2178287512Sdimstatic inline __ATTRS_o_ai vector bool long long
2179287512Sdimvec_unpackh(vector bool int __a) {
2180287512Sdim  return (vector bool long long)__builtin_s390_vuphf((vector signed int)__a);
2181287512Sdim}
2182287512Sdim
2183287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
2184287512Sdimvec_unpackh(vector unsigned int __a) {
2185287512Sdim  return __builtin_s390_vuplhf(__a);
2186287512Sdim}
2187287512Sdim
2188287512Sdim/*-- vec_unpackl ------------------------------------------------------------*/
2189287512Sdim
2190287512Sdimstatic inline __ATTRS_o_ai vector signed short
2191287512Sdimvec_unpackl(vector signed char __a) {
2192287512Sdim  return __builtin_s390_vuplb(__a);
2193287512Sdim}
2194287512Sdim
2195287512Sdimstatic inline __ATTRS_o_ai vector bool short
2196287512Sdimvec_unpackl(vector bool char __a) {
2197287512Sdim  return (vector bool short)__builtin_s390_vuplb((vector signed char)__a);
2198287512Sdim}
2199287512Sdim
2200287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
2201287512Sdimvec_unpackl(vector unsigned char __a) {
2202287512Sdim  return __builtin_s390_vupllb(__a);
2203287512Sdim}
2204287512Sdim
2205287512Sdimstatic inline __ATTRS_o_ai vector signed int
2206287512Sdimvec_unpackl(vector signed short __a) {
2207287512Sdim  return __builtin_s390_vuplhw(__a);
2208287512Sdim}
2209287512Sdim
2210287512Sdimstatic inline __ATTRS_o_ai vector bool int
2211287512Sdimvec_unpackl(vector bool short __a) {
2212287512Sdim  return (vector bool int)__builtin_s390_vuplhw((vector signed short)__a);
2213287512Sdim}
2214287512Sdim
2215287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
2216287512Sdimvec_unpackl(vector unsigned short __a) {
2217287512Sdim  return __builtin_s390_vupllh(__a);
2218287512Sdim}
2219287512Sdim
2220287512Sdimstatic inline __ATTRS_o_ai vector signed long long
2221287512Sdimvec_unpackl(vector signed int __a) {
2222287512Sdim  return __builtin_s390_vuplf(__a);
2223287512Sdim}
2224287512Sdim
2225287512Sdimstatic inline __ATTRS_o_ai vector bool long long
2226287512Sdimvec_unpackl(vector bool int __a) {
2227287512Sdim  return (vector bool long long)__builtin_s390_vuplf((vector signed int)__a);
2228287512Sdim}
2229287512Sdim
2230287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
2231287512Sdimvec_unpackl(vector unsigned int __a) {
2232287512Sdim  return __builtin_s390_vupllf(__a);
2233287512Sdim}
2234287512Sdim
2235287512Sdim/*-- vec_cmpeq --------------------------------------------------------------*/
2236287512Sdim
2237287512Sdimstatic inline __ATTRS_o_ai vector bool char
2238287512Sdimvec_cmpeq(vector bool char __a, vector bool char __b) {
2239287512Sdim  return (vector bool char)(__a == __b);
2240287512Sdim}
2241287512Sdim
2242287512Sdimstatic inline __ATTRS_o_ai vector bool char
2243287512Sdimvec_cmpeq(vector signed char __a, vector signed char __b) {
2244287512Sdim  return (vector bool char)(__a == __b);
2245287512Sdim}
2246287512Sdim
2247287512Sdimstatic inline __ATTRS_o_ai vector bool char
2248287512Sdimvec_cmpeq(vector unsigned char __a, vector unsigned char __b) {
2249287512Sdim  return (vector bool char)(__a == __b);
2250287512Sdim}
2251287512Sdim
2252287512Sdimstatic inline __ATTRS_o_ai vector bool short
2253287512Sdimvec_cmpeq(vector bool short __a, vector bool short __b) {
2254287512Sdim  return (vector bool short)(__a == __b);
2255287512Sdim}
2256287512Sdim
2257287512Sdimstatic inline __ATTRS_o_ai vector bool short
2258287512Sdimvec_cmpeq(vector signed short __a, vector signed short __b) {
2259287512Sdim  return (vector bool short)(__a == __b);
2260287512Sdim}
2261287512Sdim
2262287512Sdimstatic inline __ATTRS_o_ai vector bool short
2263287512Sdimvec_cmpeq(vector unsigned short __a, vector unsigned short __b) {
2264287512Sdim  return (vector bool short)(__a == __b);
2265287512Sdim}
2266287512Sdim
2267287512Sdimstatic inline __ATTRS_o_ai vector bool int
2268287512Sdimvec_cmpeq(vector bool int __a, vector bool int __b) {
2269287512Sdim  return (vector bool int)(__a == __b);
2270287512Sdim}
2271287512Sdim
2272287512Sdimstatic inline __ATTRS_o_ai vector bool int
2273287512Sdimvec_cmpeq(vector signed int __a, vector signed int __b) {
2274287512Sdim  return (vector bool int)(__a == __b);
2275287512Sdim}
2276287512Sdim
2277287512Sdimstatic inline __ATTRS_o_ai vector bool int
2278287512Sdimvec_cmpeq(vector unsigned int __a, vector unsigned int __b) {
2279287512Sdim  return (vector bool int)(__a == __b);
2280287512Sdim}
2281287512Sdim
2282287512Sdimstatic inline __ATTRS_o_ai vector bool long long
2283287512Sdimvec_cmpeq(vector bool long long __a, vector bool long long __b) {
2284287512Sdim  return (vector bool long long)(__a == __b);
2285287512Sdim}
2286287512Sdim
2287287512Sdimstatic inline __ATTRS_o_ai vector bool long long
2288287512Sdimvec_cmpeq(vector signed long long __a, vector signed long long __b) {
2289287512Sdim  return (vector bool long long)(__a == __b);
2290287512Sdim}
2291287512Sdim
2292287512Sdimstatic inline __ATTRS_o_ai vector bool long long
2293287512Sdimvec_cmpeq(vector unsigned long long __a, vector unsigned long long __b) {
2294287512Sdim  return (vector bool long long)(__a == __b);
2295287512Sdim}
2296287512Sdim
2297321369Sdim#if __ARCH__ >= 12
2298321369Sdimstatic inline __ATTRS_o_ai vector bool int
2299321369Sdimvec_cmpeq(vector float __a, vector float __b) {
2300321369Sdim  return (vector bool int)(__a == __b);
2301321369Sdim}
2302321369Sdim#endif
2303321369Sdim
2304287512Sdimstatic inline __ATTRS_o_ai vector bool long long
2305287512Sdimvec_cmpeq(vector double __a, vector double __b) {
2306287512Sdim  return (vector bool long long)(__a == __b);
2307287512Sdim}
2308287512Sdim
2309287512Sdim/*-- vec_cmpge --------------------------------------------------------------*/
2310287512Sdim
2311287512Sdimstatic inline __ATTRS_o_ai vector bool char
2312287512Sdimvec_cmpge(vector signed char __a, vector signed char __b) {
2313287512Sdim  return (vector bool char)(__a >= __b);
2314287512Sdim}
2315287512Sdim
2316287512Sdimstatic inline __ATTRS_o_ai vector bool char
2317287512Sdimvec_cmpge(vector unsigned char __a, vector unsigned char __b) {
2318287512Sdim  return (vector bool char)(__a >= __b);
2319287512Sdim}
2320287512Sdim
2321287512Sdimstatic inline __ATTRS_o_ai vector bool short
2322287512Sdimvec_cmpge(vector signed short __a, vector signed short __b) {
2323287512Sdim  return (vector bool short)(__a >= __b);
2324287512Sdim}
2325287512Sdim
2326287512Sdimstatic inline __ATTRS_o_ai vector bool short
2327287512Sdimvec_cmpge(vector unsigned short __a, vector unsigned short __b) {
2328287512Sdim  return (vector bool short)(__a >= __b);
2329287512Sdim}
2330287512Sdim
2331287512Sdimstatic inline __ATTRS_o_ai vector bool int
2332287512Sdimvec_cmpge(vector signed int __a, vector signed int __b) {
2333287512Sdim  return (vector bool int)(__a >= __b);
2334287512Sdim}
2335287512Sdim
2336287512Sdimstatic inline __ATTRS_o_ai vector bool int
2337287512Sdimvec_cmpge(vector unsigned int __a, vector unsigned int __b) {
2338287512Sdim  return (vector bool int)(__a >= __b);
2339287512Sdim}
2340287512Sdim
2341287512Sdimstatic inline __ATTRS_o_ai vector bool long long
2342287512Sdimvec_cmpge(vector signed long long __a, vector signed long long __b) {
2343287512Sdim  return (vector bool long long)(__a >= __b);
2344287512Sdim}
2345287512Sdim
2346287512Sdimstatic inline __ATTRS_o_ai vector bool long long
2347287512Sdimvec_cmpge(vector unsigned long long __a, vector unsigned long long __b) {
2348287512Sdim  return (vector bool long long)(__a >= __b);
2349287512Sdim}
2350287512Sdim
2351321369Sdim#if __ARCH__ >= 12
2352321369Sdimstatic inline __ATTRS_o_ai vector bool int
2353321369Sdimvec_cmpge(vector float __a, vector float __b) {
2354321369Sdim  return (vector bool int)(__a >= __b);
2355321369Sdim}
2356321369Sdim#endif
2357321369Sdim
2358287512Sdimstatic inline __ATTRS_o_ai vector bool long long
2359287512Sdimvec_cmpge(vector double __a, vector double __b) {
2360287512Sdim  return (vector bool long long)(__a >= __b);
2361287512Sdim}
2362287512Sdim
2363287512Sdim/*-- vec_cmpgt --------------------------------------------------------------*/
2364287512Sdim
2365287512Sdimstatic inline __ATTRS_o_ai vector bool char
2366287512Sdimvec_cmpgt(vector signed char __a, vector signed char __b) {
2367287512Sdim  return (vector bool char)(__a > __b);
2368287512Sdim}
2369287512Sdim
2370287512Sdimstatic inline __ATTRS_o_ai vector bool char
2371287512Sdimvec_cmpgt(vector unsigned char __a, vector unsigned char __b) {
2372287512Sdim  return (vector bool char)(__a > __b);
2373287512Sdim}
2374287512Sdim
2375287512Sdimstatic inline __ATTRS_o_ai vector bool short
2376287512Sdimvec_cmpgt(vector signed short __a, vector signed short __b) {
2377287512Sdim  return (vector bool short)(__a > __b);
2378287512Sdim}
2379287512Sdim
2380287512Sdimstatic inline __ATTRS_o_ai vector bool short
2381287512Sdimvec_cmpgt(vector unsigned short __a, vector unsigned short __b) {
2382287512Sdim  return (vector bool short)(__a > __b);
2383287512Sdim}
2384287512Sdim
2385287512Sdimstatic inline __ATTRS_o_ai vector bool int
2386287512Sdimvec_cmpgt(vector signed int __a, vector signed int __b) {
2387287512Sdim  return (vector bool int)(__a > __b);
2388287512Sdim}
2389287512Sdim
2390287512Sdimstatic inline __ATTRS_o_ai vector bool int
2391287512Sdimvec_cmpgt(vector unsigned int __a, vector unsigned int __b) {
2392287512Sdim  return (vector bool int)(__a > __b);
2393287512Sdim}
2394287512Sdim
2395287512Sdimstatic inline __ATTRS_o_ai vector bool long long
2396287512Sdimvec_cmpgt(vector signed long long __a, vector signed long long __b) {
2397287512Sdim  return (vector bool long long)(__a > __b);
2398287512Sdim}
2399287512Sdim
2400287512Sdimstatic inline __ATTRS_o_ai vector bool long long
2401287512Sdimvec_cmpgt(vector unsigned long long __a, vector unsigned long long __b) {
2402287512Sdim  return (vector bool long long)(__a > __b);
2403287512Sdim}
2404287512Sdim
2405321369Sdim#if __ARCH__ >= 12
2406321369Sdimstatic inline __ATTRS_o_ai vector bool int
2407321369Sdimvec_cmpgt(vector float __a, vector float __b) {
2408321369Sdim  return (vector bool int)(__a > __b);
2409321369Sdim}
2410321369Sdim#endif
2411321369Sdim
2412287512Sdimstatic inline __ATTRS_o_ai vector bool long long
2413287512Sdimvec_cmpgt(vector double __a, vector double __b) {
2414287512Sdim  return (vector bool long long)(__a > __b);
2415287512Sdim}
2416287512Sdim
2417287512Sdim/*-- vec_cmple --------------------------------------------------------------*/
2418287512Sdim
2419287512Sdimstatic inline __ATTRS_o_ai vector bool char
2420287512Sdimvec_cmple(vector signed char __a, vector signed char __b) {
2421287512Sdim  return (vector bool char)(__a <= __b);
2422287512Sdim}
2423287512Sdim
2424287512Sdimstatic inline __ATTRS_o_ai vector bool char
2425287512Sdimvec_cmple(vector unsigned char __a, vector unsigned char __b) {
2426287512Sdim  return (vector bool char)(__a <= __b);
2427287512Sdim}
2428287512Sdim
2429287512Sdimstatic inline __ATTRS_o_ai vector bool short
2430287512Sdimvec_cmple(vector signed short __a, vector signed short __b) {
2431287512Sdim  return (vector bool short)(__a <= __b);
2432287512Sdim}
2433287512Sdim
2434287512Sdimstatic inline __ATTRS_o_ai vector bool short
2435287512Sdimvec_cmple(vector unsigned short __a, vector unsigned short __b) {
2436287512Sdim  return (vector bool short)(__a <= __b);
2437287512Sdim}
2438287512Sdim
2439287512Sdimstatic inline __ATTRS_o_ai vector bool int
2440287512Sdimvec_cmple(vector signed int __a, vector signed int __b) {
2441287512Sdim  return (vector bool int)(__a <= __b);
2442287512Sdim}
2443287512Sdim
2444287512Sdimstatic inline __ATTRS_o_ai vector bool int
2445287512Sdimvec_cmple(vector unsigned int __a, vector unsigned int __b) {
2446287512Sdim  return (vector bool int)(__a <= __b);
2447287512Sdim}
2448287512Sdim
2449287512Sdimstatic inline __ATTRS_o_ai vector bool long long
2450287512Sdimvec_cmple(vector signed long long __a, vector signed long long __b) {
2451287512Sdim  return (vector bool long long)(__a <= __b);
2452287512Sdim}
2453287512Sdim
2454287512Sdimstatic inline __ATTRS_o_ai vector bool long long
2455287512Sdimvec_cmple(vector unsigned long long __a, vector unsigned long long __b) {
2456287512Sdim  return (vector bool long long)(__a <= __b);
2457287512Sdim}
2458287512Sdim
2459321369Sdim#if __ARCH__ >= 12
2460321369Sdimstatic inline __ATTRS_o_ai vector bool int
2461321369Sdimvec_cmple(vector float __a, vector float __b) {
2462321369Sdim  return (vector bool int)(__a <= __b);
2463321369Sdim}
2464321369Sdim#endif
2465321369Sdim
2466287512Sdimstatic inline __ATTRS_o_ai vector bool long long
2467287512Sdimvec_cmple(vector double __a, vector double __b) {
2468287512Sdim  return (vector bool long long)(__a <= __b);
2469287512Sdim}
2470287512Sdim
2471287512Sdim/*-- vec_cmplt --------------------------------------------------------------*/
2472287512Sdim
2473287512Sdimstatic inline __ATTRS_o_ai vector bool char
2474287512Sdimvec_cmplt(vector signed char __a, vector signed char __b) {
2475287512Sdim  return (vector bool char)(__a < __b);
2476287512Sdim}
2477287512Sdim
2478287512Sdimstatic inline __ATTRS_o_ai vector bool char
2479287512Sdimvec_cmplt(vector unsigned char __a, vector unsigned char __b) {
2480287512Sdim  return (vector bool char)(__a < __b);
2481287512Sdim}
2482287512Sdim
2483287512Sdimstatic inline __ATTRS_o_ai vector bool short
2484287512Sdimvec_cmplt(vector signed short __a, vector signed short __b) {
2485287512Sdim  return (vector bool short)(__a < __b);
2486287512Sdim}
2487287512Sdim
2488287512Sdimstatic inline __ATTRS_o_ai vector bool short
2489287512Sdimvec_cmplt(vector unsigned short __a, vector unsigned short __b) {
2490287512Sdim  return (vector bool short)(__a < __b);
2491287512Sdim}
2492287512Sdim
2493287512Sdimstatic inline __ATTRS_o_ai vector bool int
2494287512Sdimvec_cmplt(vector signed int __a, vector signed int __b) {
2495287512Sdim  return (vector bool int)(__a < __b);
2496287512Sdim}
2497287512Sdim
2498287512Sdimstatic inline __ATTRS_o_ai vector bool int
2499287512Sdimvec_cmplt(vector unsigned int __a, vector unsigned int __b) {
2500287512Sdim  return (vector bool int)(__a < __b);
2501287512Sdim}
2502287512Sdim
2503287512Sdimstatic inline __ATTRS_o_ai vector bool long long
2504287512Sdimvec_cmplt(vector signed long long __a, vector signed long long __b) {
2505287512Sdim  return (vector bool long long)(__a < __b);
2506287512Sdim}
2507287512Sdim
2508287512Sdimstatic inline __ATTRS_o_ai vector bool long long
2509287512Sdimvec_cmplt(vector unsigned long long __a, vector unsigned long long __b) {
2510287512Sdim  return (vector bool long long)(__a < __b);
2511287512Sdim}
2512287512Sdim
2513321369Sdim#if __ARCH__ >= 12
2514321369Sdimstatic inline __ATTRS_o_ai vector bool int
2515321369Sdimvec_cmplt(vector float __a, vector float __b) {
2516321369Sdim  return (vector bool int)(__a < __b);
2517321369Sdim}
2518321369Sdim#endif
2519321369Sdim
2520287512Sdimstatic inline __ATTRS_o_ai vector bool long long
2521287512Sdimvec_cmplt(vector double __a, vector double __b) {
2522287512Sdim  return (vector bool long long)(__a < __b);
2523287512Sdim}
2524287512Sdim
2525287512Sdim/*-- vec_all_eq -------------------------------------------------------------*/
2526287512Sdim
2527287512Sdimstatic inline __ATTRS_o_ai int
2528287512Sdimvec_all_eq(vector signed char __a, vector signed char __b) {
2529287512Sdim  int __cc;
2530287512Sdim  __builtin_s390_vceqbs(__a, __b, &__cc);
2531287512Sdim  return __cc == 0;
2532287512Sdim}
2533287512Sdim
2534321369Sdim// This prototype is deprecated.
2535287512Sdimstatic inline __ATTRS_o_ai int
2536287512Sdimvec_all_eq(vector signed char __a, vector bool char __b) {
2537287512Sdim  int __cc;
2538287512Sdim  __builtin_s390_vceqbs(__a, (vector signed char)__b, &__cc);
2539287512Sdim  return __cc == 0;
2540287512Sdim}
2541287512Sdim
2542321369Sdim// This prototype is deprecated.
2543287512Sdimstatic inline __ATTRS_o_ai int
2544287512Sdimvec_all_eq(vector bool char __a, vector signed char __b) {
2545287512Sdim  int __cc;
2546287512Sdim  __builtin_s390_vceqbs((vector signed char)__a, __b, &__cc);
2547287512Sdim  return __cc == 0;
2548287512Sdim}
2549287512Sdim
2550287512Sdimstatic inline __ATTRS_o_ai int
2551287512Sdimvec_all_eq(vector unsigned char __a, vector unsigned char __b) {
2552287512Sdim  int __cc;
2553287512Sdim  __builtin_s390_vceqbs((vector signed char)__a,
2554287512Sdim                        (vector signed char)__b, &__cc);
2555287512Sdim  return __cc == 0;
2556287512Sdim}
2557287512Sdim
2558321369Sdim// This prototype is deprecated.
2559287512Sdimstatic inline __ATTRS_o_ai int
2560287512Sdimvec_all_eq(vector unsigned char __a, vector bool char __b) {
2561287512Sdim  int __cc;
2562287512Sdim  __builtin_s390_vceqbs((vector signed char)__a,
2563287512Sdim                        (vector signed char)__b, &__cc);
2564287512Sdim  return __cc == 0;
2565287512Sdim}
2566287512Sdim
2567321369Sdim// This prototype is deprecated.
2568287512Sdimstatic inline __ATTRS_o_ai int
2569287512Sdimvec_all_eq(vector bool char __a, vector unsigned char __b) {
2570287512Sdim  int __cc;
2571287512Sdim  __builtin_s390_vceqbs((vector signed char)__a,
2572287512Sdim                        (vector signed char)__b, &__cc);
2573287512Sdim  return __cc == 0;
2574287512Sdim}
2575287512Sdim
2576287512Sdimstatic inline __ATTRS_o_ai int
2577287512Sdimvec_all_eq(vector bool char __a, vector bool char __b) {
2578287512Sdim  int __cc;
2579287512Sdim  __builtin_s390_vceqbs((vector signed char)__a,
2580287512Sdim                        (vector signed char)__b, &__cc);
2581287512Sdim  return __cc == 0;
2582287512Sdim}
2583287512Sdim
2584287512Sdimstatic inline __ATTRS_o_ai int
2585287512Sdimvec_all_eq(vector signed short __a, vector signed short __b) {
2586287512Sdim  int __cc;
2587287512Sdim  __builtin_s390_vceqhs(__a, __b, &__cc);
2588287512Sdim  return __cc == 0;
2589287512Sdim}
2590287512Sdim
2591321369Sdim// This prototype is deprecated.
2592287512Sdimstatic inline __ATTRS_o_ai int
2593287512Sdimvec_all_eq(vector signed short __a, vector bool short __b) {
2594287512Sdim  int __cc;
2595287512Sdim  __builtin_s390_vceqhs(__a, (vector signed short)__b, &__cc);
2596287512Sdim  return __cc == 0;
2597287512Sdim}
2598287512Sdim
2599321369Sdim// This prototype is deprecated.
2600287512Sdimstatic inline __ATTRS_o_ai int
2601287512Sdimvec_all_eq(vector bool short __a, vector signed short __b) {
2602287512Sdim  int __cc;
2603287512Sdim  __builtin_s390_vceqhs((vector signed short)__a, __b, &__cc);
2604287512Sdim  return __cc == 0;
2605287512Sdim}
2606287512Sdim
2607287512Sdimstatic inline __ATTRS_o_ai int
2608287512Sdimvec_all_eq(vector unsigned short __a, vector unsigned short __b) {
2609287512Sdim  int __cc;
2610287512Sdim  __builtin_s390_vceqhs((vector signed short)__a,
2611287512Sdim                        (vector signed short)__b, &__cc);
2612287512Sdim  return __cc == 0;
2613287512Sdim}
2614287512Sdim
2615321369Sdim// This prototype is deprecated.
2616287512Sdimstatic inline __ATTRS_o_ai int
2617287512Sdimvec_all_eq(vector unsigned short __a, vector bool short __b) {
2618287512Sdim  int __cc;
2619287512Sdim  __builtin_s390_vceqhs((vector signed short)__a,
2620287512Sdim                        (vector signed short)__b, &__cc);
2621287512Sdim  return __cc == 0;
2622287512Sdim}
2623287512Sdim
2624321369Sdim// This prototype is deprecated.
2625287512Sdimstatic inline __ATTRS_o_ai int
2626287512Sdimvec_all_eq(vector bool short __a, vector unsigned short __b) {
2627287512Sdim  int __cc;
2628287512Sdim  __builtin_s390_vceqhs((vector signed short)__a,
2629287512Sdim                        (vector signed short)__b, &__cc);
2630287512Sdim  return __cc == 0;
2631287512Sdim}
2632287512Sdim
2633287512Sdimstatic inline __ATTRS_o_ai int
2634287512Sdimvec_all_eq(vector bool short __a, vector bool short __b) {
2635287512Sdim  int __cc;
2636287512Sdim  __builtin_s390_vceqhs((vector signed short)__a,
2637287512Sdim                        (vector signed short)__b, &__cc);
2638287512Sdim  return __cc == 0;
2639287512Sdim}
2640287512Sdim
2641287512Sdimstatic inline __ATTRS_o_ai int
2642287512Sdimvec_all_eq(vector signed int __a, vector signed int __b) {
2643287512Sdim  int __cc;
2644287512Sdim  __builtin_s390_vceqfs(__a, __b, &__cc);
2645287512Sdim  return __cc == 0;
2646287512Sdim}
2647287512Sdim
2648321369Sdim// This prototype is deprecated.
2649287512Sdimstatic inline __ATTRS_o_ai int
2650287512Sdimvec_all_eq(vector signed int __a, vector bool int __b) {
2651287512Sdim  int __cc;
2652287512Sdim  __builtin_s390_vceqfs(__a, (vector signed int)__b, &__cc);
2653287512Sdim  return __cc == 0;
2654287512Sdim}
2655287512Sdim
2656321369Sdim// This prototype is deprecated.
2657287512Sdimstatic inline __ATTRS_o_ai int
2658287512Sdimvec_all_eq(vector bool int __a, vector signed int __b) {
2659287512Sdim  int __cc;
2660287512Sdim  __builtin_s390_vceqfs((vector signed int)__a, __b, &__cc);
2661287512Sdim  return __cc == 0;
2662287512Sdim}
2663287512Sdim
2664287512Sdimstatic inline __ATTRS_o_ai int
2665287512Sdimvec_all_eq(vector unsigned int __a, vector unsigned int __b) {
2666287512Sdim  int __cc;
2667287512Sdim  __builtin_s390_vceqfs((vector signed int)__a,
2668287512Sdim                        (vector signed int)__b, &__cc);
2669287512Sdim  return __cc == 0;
2670287512Sdim}
2671287512Sdim
2672321369Sdim// This prototype is deprecated.
2673287512Sdimstatic inline __ATTRS_o_ai int
2674287512Sdimvec_all_eq(vector unsigned int __a, vector bool int __b) {
2675287512Sdim  int __cc;
2676287512Sdim  __builtin_s390_vceqfs((vector signed int)__a,
2677287512Sdim                        (vector signed int)__b, &__cc);
2678287512Sdim  return __cc == 0;
2679287512Sdim}
2680287512Sdim
2681321369Sdim// This prototype is deprecated.
2682287512Sdimstatic inline __ATTRS_o_ai int
2683287512Sdimvec_all_eq(vector bool int __a, vector unsigned int __b) {
2684287512Sdim  int __cc;
2685287512Sdim  __builtin_s390_vceqfs((vector signed int)__a,
2686287512Sdim                        (vector signed int)__b, &__cc);
2687287512Sdim  return __cc == 0;
2688287512Sdim}
2689287512Sdim
2690287512Sdimstatic inline __ATTRS_o_ai int
2691287512Sdimvec_all_eq(vector bool int __a, vector bool int __b) {
2692287512Sdim  int __cc;
2693287512Sdim  __builtin_s390_vceqfs((vector signed int)__a,
2694287512Sdim                        (vector signed int)__b, &__cc);
2695287512Sdim  return __cc == 0;
2696287512Sdim}
2697287512Sdim
2698287512Sdimstatic inline __ATTRS_o_ai int
2699287512Sdimvec_all_eq(vector signed long long __a, vector signed long long __b) {
2700287512Sdim  int __cc;
2701287512Sdim  __builtin_s390_vceqgs(__a, __b, &__cc);
2702287512Sdim  return __cc == 0;
2703287512Sdim}
2704287512Sdim
2705321369Sdim// This prototype is deprecated.
2706287512Sdimstatic inline __ATTRS_o_ai int
2707287512Sdimvec_all_eq(vector signed long long __a, vector bool long long __b) {
2708287512Sdim  int __cc;
2709287512Sdim  __builtin_s390_vceqgs(__a, (vector signed long long)__b, &__cc);
2710287512Sdim  return __cc == 0;
2711287512Sdim}
2712287512Sdim
2713321369Sdim// This prototype is deprecated.
2714287512Sdimstatic inline __ATTRS_o_ai int
2715287512Sdimvec_all_eq(vector bool long long __a, vector signed long long __b) {
2716287512Sdim  int __cc;
2717287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a, __b, &__cc);
2718287512Sdim  return __cc == 0;
2719287512Sdim}
2720287512Sdim
2721287512Sdimstatic inline __ATTRS_o_ai int
2722287512Sdimvec_all_eq(vector unsigned long long __a, vector unsigned long long __b) {
2723287512Sdim  int __cc;
2724287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a,
2725287512Sdim                        (vector signed long long)__b, &__cc);
2726287512Sdim  return __cc == 0;
2727287512Sdim}
2728287512Sdim
2729321369Sdim// This prototype is deprecated.
2730287512Sdimstatic inline __ATTRS_o_ai int
2731287512Sdimvec_all_eq(vector unsigned long long __a, vector bool long long __b) {
2732287512Sdim  int __cc;
2733287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a,
2734287512Sdim                        (vector signed long long)__b, &__cc);
2735287512Sdim  return __cc == 0;
2736287512Sdim}
2737287512Sdim
2738321369Sdim// This prototype is deprecated.
2739287512Sdimstatic inline __ATTRS_o_ai int
2740287512Sdimvec_all_eq(vector bool long long __a, vector unsigned long long __b) {
2741287512Sdim  int __cc;
2742287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a,
2743287512Sdim                        (vector signed long long)__b, &__cc);
2744287512Sdim  return __cc == 0;
2745287512Sdim}
2746287512Sdim
2747287512Sdimstatic inline __ATTRS_o_ai int
2748287512Sdimvec_all_eq(vector bool long long __a, vector bool long long __b) {
2749287512Sdim  int __cc;
2750287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a,
2751287512Sdim                        (vector signed long long)__b, &__cc);
2752287512Sdim  return __cc == 0;
2753287512Sdim}
2754287512Sdim
2755321369Sdim#if __ARCH__ >= 12
2756287512Sdimstatic inline __ATTRS_o_ai int
2757321369Sdimvec_all_eq(vector float __a, vector float __b) {
2758321369Sdim  int __cc;
2759321369Sdim  __builtin_s390_vfcesbs(__a, __b, &__cc);
2760321369Sdim  return __cc == 0;
2761321369Sdim}
2762321369Sdim#endif
2763321369Sdim
2764321369Sdimstatic inline __ATTRS_o_ai int
2765287512Sdimvec_all_eq(vector double __a, vector double __b) {
2766287512Sdim  int __cc;
2767287512Sdim  __builtin_s390_vfcedbs(__a, __b, &__cc);
2768287512Sdim  return __cc == 0;
2769287512Sdim}
2770287512Sdim
2771287512Sdim/*-- vec_all_ne -------------------------------------------------------------*/
2772287512Sdim
2773287512Sdimstatic inline __ATTRS_o_ai int
2774287512Sdimvec_all_ne(vector signed char __a, vector signed char __b) {
2775287512Sdim  int __cc;
2776287512Sdim  __builtin_s390_vceqbs(__a, __b, &__cc);
2777287512Sdim  return __cc == 3;
2778287512Sdim}
2779287512Sdim
2780321369Sdim// This prototype is deprecated.
2781287512Sdimstatic inline __ATTRS_o_ai int
2782287512Sdimvec_all_ne(vector signed char __a, vector bool char __b) {
2783287512Sdim  int __cc;
2784287512Sdim  __builtin_s390_vceqbs(__a, (vector signed char)__b, &__cc);
2785287512Sdim  return __cc == 3;
2786287512Sdim}
2787287512Sdim
2788321369Sdim// This prototype is deprecated.
2789287512Sdimstatic inline __ATTRS_o_ai int
2790287512Sdimvec_all_ne(vector bool char __a, vector signed char __b) {
2791287512Sdim  int __cc;
2792287512Sdim  __builtin_s390_vceqbs((vector signed char)__a, __b, &__cc);
2793287512Sdim  return __cc == 3;
2794287512Sdim}
2795287512Sdim
2796287512Sdimstatic inline __ATTRS_o_ai int
2797287512Sdimvec_all_ne(vector unsigned char __a, vector unsigned char __b) {
2798287512Sdim  int __cc;
2799287512Sdim  __builtin_s390_vceqbs((vector signed char)__a,
2800287512Sdim                        (vector signed char)__b, &__cc);
2801287512Sdim  return __cc == 3;
2802287512Sdim}
2803287512Sdim
2804321369Sdim// This prototype is deprecated.
2805287512Sdimstatic inline __ATTRS_o_ai int
2806287512Sdimvec_all_ne(vector unsigned char __a, vector bool char __b) {
2807287512Sdim  int __cc;
2808287512Sdim  __builtin_s390_vceqbs((vector signed char)__a,
2809287512Sdim                        (vector signed char)__b, &__cc);
2810287512Sdim  return __cc == 3;
2811287512Sdim}
2812287512Sdim
2813321369Sdim// This prototype is deprecated.
2814287512Sdimstatic inline __ATTRS_o_ai int
2815287512Sdimvec_all_ne(vector bool char __a, vector unsigned char __b) {
2816287512Sdim  int __cc;
2817287512Sdim  __builtin_s390_vceqbs((vector signed char)__a,
2818287512Sdim                        (vector signed char)__b, &__cc);
2819287512Sdim  return __cc == 3;
2820287512Sdim}
2821287512Sdim
2822287512Sdimstatic inline __ATTRS_o_ai int
2823287512Sdimvec_all_ne(vector bool char __a, vector bool char __b) {
2824287512Sdim  int __cc;
2825287512Sdim  __builtin_s390_vceqbs((vector signed char)__a,
2826287512Sdim                        (vector signed char)__b, &__cc);
2827287512Sdim  return __cc == 3;
2828287512Sdim}
2829287512Sdim
2830287512Sdimstatic inline __ATTRS_o_ai int
2831287512Sdimvec_all_ne(vector signed short __a, vector signed short __b) {
2832287512Sdim  int __cc;
2833287512Sdim  __builtin_s390_vceqhs(__a, __b, &__cc);
2834287512Sdim  return __cc == 3;
2835287512Sdim}
2836287512Sdim
2837321369Sdim// This prototype is deprecated.
2838287512Sdimstatic inline __ATTRS_o_ai int
2839287512Sdimvec_all_ne(vector signed short __a, vector bool short __b) {
2840287512Sdim  int __cc;
2841287512Sdim  __builtin_s390_vceqhs(__a, (vector signed short)__b, &__cc);
2842287512Sdim  return __cc == 3;
2843287512Sdim}
2844287512Sdim
2845321369Sdim// This prototype is deprecated.
2846287512Sdimstatic inline __ATTRS_o_ai int
2847287512Sdimvec_all_ne(vector bool short __a, vector signed short __b) {
2848287512Sdim  int __cc;
2849287512Sdim  __builtin_s390_vceqhs((vector signed short)__a, __b, &__cc);
2850287512Sdim  return __cc == 3;
2851287512Sdim}
2852287512Sdim
2853287512Sdimstatic inline __ATTRS_o_ai int
2854287512Sdimvec_all_ne(vector unsigned short __a, vector unsigned short __b) {
2855287512Sdim  int __cc;
2856287512Sdim  __builtin_s390_vceqhs((vector signed short)__a,
2857287512Sdim                        (vector signed short)__b, &__cc);
2858287512Sdim  return __cc == 3;
2859287512Sdim}
2860287512Sdim
2861321369Sdim// This prototype is deprecated.
2862287512Sdimstatic inline __ATTRS_o_ai int
2863287512Sdimvec_all_ne(vector unsigned short __a, vector bool short __b) {
2864287512Sdim  int __cc;
2865287512Sdim  __builtin_s390_vceqhs((vector signed short)__a,
2866287512Sdim                        (vector signed short)__b, &__cc);
2867287512Sdim  return __cc == 3;
2868287512Sdim}
2869287512Sdim
2870321369Sdim// This prototype is deprecated.
2871287512Sdimstatic inline __ATTRS_o_ai int
2872287512Sdimvec_all_ne(vector bool short __a, vector unsigned short __b) {
2873287512Sdim  int __cc;
2874287512Sdim  __builtin_s390_vceqhs((vector signed short)__a,
2875287512Sdim                        (vector signed short)__b, &__cc);
2876287512Sdim  return __cc == 3;
2877287512Sdim}
2878287512Sdim
2879287512Sdimstatic inline __ATTRS_o_ai int
2880287512Sdimvec_all_ne(vector bool short __a, vector bool short __b) {
2881287512Sdim  int __cc;
2882287512Sdim  __builtin_s390_vceqhs((vector signed short)__a,
2883287512Sdim                        (vector signed short)__b, &__cc);
2884287512Sdim  return __cc == 3;
2885287512Sdim}
2886287512Sdim
2887287512Sdimstatic inline __ATTRS_o_ai int
2888287512Sdimvec_all_ne(vector signed int __a, vector signed int __b) {
2889287512Sdim  int __cc;
2890287512Sdim  __builtin_s390_vceqfs(__a, __b, &__cc);
2891287512Sdim  return __cc == 3;
2892287512Sdim}
2893287512Sdim
2894321369Sdim// This prototype is deprecated.
2895287512Sdimstatic inline __ATTRS_o_ai int
2896287512Sdimvec_all_ne(vector signed int __a, vector bool int __b) {
2897287512Sdim  int __cc;
2898287512Sdim  __builtin_s390_vceqfs(__a, (vector signed int)__b, &__cc);
2899287512Sdim  return __cc == 3;
2900287512Sdim}
2901287512Sdim
2902321369Sdim// This prototype is deprecated.
2903287512Sdimstatic inline __ATTRS_o_ai int
2904287512Sdimvec_all_ne(vector bool int __a, vector signed int __b) {
2905287512Sdim  int __cc;
2906287512Sdim  __builtin_s390_vceqfs((vector signed int)__a, __b, &__cc);
2907287512Sdim  return __cc == 3;
2908287512Sdim}
2909287512Sdim
2910287512Sdimstatic inline __ATTRS_o_ai int
2911287512Sdimvec_all_ne(vector unsigned int __a, vector unsigned int __b) {
2912287512Sdim  int __cc;
2913287512Sdim  __builtin_s390_vceqfs((vector signed int)__a,
2914287512Sdim                        (vector signed int)__b, &__cc);
2915287512Sdim  return __cc == 3;
2916287512Sdim}
2917287512Sdim
2918321369Sdim// This prototype is deprecated.
2919287512Sdimstatic inline __ATTRS_o_ai int
2920287512Sdimvec_all_ne(vector unsigned int __a, vector bool int __b) {
2921287512Sdim  int __cc;
2922287512Sdim  __builtin_s390_vceqfs((vector signed int)__a,
2923287512Sdim                        (vector signed int)__b, &__cc);
2924287512Sdim  return __cc == 3;
2925287512Sdim}
2926287512Sdim
2927321369Sdim// This prototype is deprecated.
2928287512Sdimstatic inline __ATTRS_o_ai int
2929287512Sdimvec_all_ne(vector bool int __a, vector unsigned int __b) {
2930287512Sdim  int __cc;
2931287512Sdim  __builtin_s390_vceqfs((vector signed int)__a,
2932287512Sdim                        (vector signed int)__b, &__cc);
2933287512Sdim  return __cc == 3;
2934287512Sdim}
2935287512Sdim
2936287512Sdimstatic inline __ATTRS_o_ai int
2937287512Sdimvec_all_ne(vector bool int __a, vector bool int __b) {
2938287512Sdim  int __cc;
2939287512Sdim  __builtin_s390_vceqfs((vector signed int)__a,
2940287512Sdim                        (vector signed int)__b, &__cc);
2941287512Sdim  return __cc == 3;
2942287512Sdim}
2943287512Sdim
2944287512Sdimstatic inline __ATTRS_o_ai int
2945287512Sdimvec_all_ne(vector signed long long __a, vector signed long long __b) {
2946287512Sdim  int __cc;
2947287512Sdim  __builtin_s390_vceqgs(__a, __b, &__cc);
2948287512Sdim  return __cc == 3;
2949287512Sdim}
2950287512Sdim
2951321369Sdim// This prototype is deprecated.
2952287512Sdimstatic inline __ATTRS_o_ai int
2953287512Sdimvec_all_ne(vector signed long long __a, vector bool long long __b) {
2954287512Sdim  int __cc;
2955287512Sdim  __builtin_s390_vceqgs(__a, (vector signed long long)__b, &__cc);
2956287512Sdim  return __cc == 3;
2957287512Sdim}
2958287512Sdim
2959321369Sdim// This prototype is deprecated.
2960287512Sdimstatic inline __ATTRS_o_ai int
2961287512Sdimvec_all_ne(vector bool long long __a, vector signed long long __b) {
2962287512Sdim  int __cc;
2963287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a, __b, &__cc);
2964287512Sdim  return __cc == 3;
2965287512Sdim}
2966287512Sdim
2967287512Sdimstatic inline __ATTRS_o_ai int
2968287512Sdimvec_all_ne(vector unsigned long long __a, vector unsigned long long __b) {
2969287512Sdim  int __cc;
2970287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a,
2971287512Sdim                        (vector signed long long)__b, &__cc);
2972287512Sdim  return __cc == 3;
2973287512Sdim}
2974287512Sdim
2975321369Sdim// This prototype is deprecated.
2976287512Sdimstatic inline __ATTRS_o_ai int
2977287512Sdimvec_all_ne(vector unsigned long long __a, vector bool long long __b) {
2978287512Sdim  int __cc;
2979287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a,
2980287512Sdim                        (vector signed long long)__b, &__cc);
2981287512Sdim  return __cc == 3;
2982287512Sdim}
2983287512Sdim
2984321369Sdim// This prototype is deprecated.
2985287512Sdimstatic inline __ATTRS_o_ai int
2986287512Sdimvec_all_ne(vector bool long long __a, vector unsigned long long __b) {
2987287512Sdim  int __cc;
2988287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a,
2989287512Sdim                        (vector signed long long)__b, &__cc);
2990287512Sdim  return __cc == 3;
2991287512Sdim}
2992287512Sdim
2993287512Sdimstatic inline __ATTRS_o_ai int
2994287512Sdimvec_all_ne(vector bool long long __a, vector bool long long __b) {
2995287512Sdim  int __cc;
2996287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a,
2997287512Sdim                        (vector signed long long)__b, &__cc);
2998287512Sdim  return __cc == 3;
2999287512Sdim}
3000287512Sdim
3001321369Sdim#if __ARCH__ >= 12
3002287512Sdimstatic inline __ATTRS_o_ai int
3003321369Sdimvec_all_ne(vector float __a, vector float __b) {
3004321369Sdim  int __cc;
3005321369Sdim  __builtin_s390_vfcesbs(__a, __b, &__cc);
3006321369Sdim  return __cc == 3;
3007321369Sdim}
3008321369Sdim#endif
3009321369Sdim
3010321369Sdimstatic inline __ATTRS_o_ai int
3011287512Sdimvec_all_ne(vector double __a, vector double __b) {
3012287512Sdim  int __cc;
3013287512Sdim  __builtin_s390_vfcedbs(__a, __b, &__cc);
3014287512Sdim  return __cc == 3;
3015287512Sdim}
3016287512Sdim
3017287512Sdim/*-- vec_all_ge -------------------------------------------------------------*/
3018287512Sdim
3019287512Sdimstatic inline __ATTRS_o_ai int
3020287512Sdimvec_all_ge(vector signed char __a, vector signed char __b) {
3021287512Sdim  int __cc;
3022287512Sdim  __builtin_s390_vchbs(__b, __a, &__cc);
3023287512Sdim  return __cc == 3;
3024287512Sdim}
3025287512Sdim
3026321369Sdim// This prototype is deprecated.
3027287512Sdimstatic inline __ATTRS_o_ai int
3028287512Sdimvec_all_ge(vector signed char __a, vector bool char __b) {
3029287512Sdim  int __cc;
3030287512Sdim  __builtin_s390_vchbs((vector signed char)__b, __a, &__cc);
3031287512Sdim  return __cc == 3;
3032287512Sdim}
3033287512Sdim
3034321369Sdim// This prototype is deprecated.
3035287512Sdimstatic inline __ATTRS_o_ai int
3036287512Sdimvec_all_ge(vector bool char __a, vector signed char __b) {
3037287512Sdim  int __cc;
3038287512Sdim  __builtin_s390_vchbs(__b, (vector signed char)__a, &__cc);
3039287512Sdim  return __cc == 3;
3040287512Sdim}
3041287512Sdim
3042287512Sdimstatic inline __ATTRS_o_ai int
3043287512Sdimvec_all_ge(vector unsigned char __a, vector unsigned char __b) {
3044287512Sdim  int __cc;
3045287512Sdim  __builtin_s390_vchlbs(__b, __a, &__cc);
3046287512Sdim  return __cc == 3;
3047287512Sdim}
3048287512Sdim
3049321369Sdim// This prototype is deprecated.
3050287512Sdimstatic inline __ATTRS_o_ai int
3051287512Sdimvec_all_ge(vector unsigned char __a, vector bool char __b) {
3052287512Sdim  int __cc;
3053287512Sdim  __builtin_s390_vchlbs((vector unsigned char)__b, __a, &__cc);
3054287512Sdim  return __cc == 3;
3055287512Sdim}
3056287512Sdim
3057321369Sdim// This prototype is deprecated.
3058287512Sdimstatic inline __ATTRS_o_ai int
3059287512Sdimvec_all_ge(vector bool char __a, vector unsigned char __b) {
3060287512Sdim  int __cc;
3061287512Sdim  __builtin_s390_vchlbs(__b, (vector unsigned char)__a, &__cc);
3062287512Sdim  return __cc == 3;
3063287512Sdim}
3064287512Sdim
3065321369Sdim// This prototype is deprecated.
3066287512Sdimstatic inline __ATTRS_o_ai int
3067287512Sdimvec_all_ge(vector bool char __a, vector bool char __b) {
3068287512Sdim  int __cc;
3069287512Sdim  __builtin_s390_vchlbs((vector unsigned char)__b,
3070287512Sdim                        (vector unsigned char)__a, &__cc);
3071287512Sdim  return __cc == 3;
3072287512Sdim}
3073287512Sdim
3074287512Sdimstatic inline __ATTRS_o_ai int
3075287512Sdimvec_all_ge(vector signed short __a, vector signed short __b) {
3076287512Sdim  int __cc;
3077287512Sdim  __builtin_s390_vchhs(__b, __a, &__cc);
3078287512Sdim  return __cc == 3;
3079287512Sdim}
3080287512Sdim
3081321369Sdim// This prototype is deprecated.
3082287512Sdimstatic inline __ATTRS_o_ai int
3083287512Sdimvec_all_ge(vector signed short __a, vector bool short __b) {
3084287512Sdim  int __cc;
3085287512Sdim  __builtin_s390_vchhs((vector signed short)__b, __a, &__cc);
3086287512Sdim  return __cc == 3;
3087287512Sdim}
3088287512Sdim
3089321369Sdim// This prototype is deprecated.
3090287512Sdimstatic inline __ATTRS_o_ai int
3091287512Sdimvec_all_ge(vector bool short __a, vector signed short __b) {
3092287512Sdim  int __cc;
3093287512Sdim  __builtin_s390_vchhs(__b, (vector signed short)__a, &__cc);
3094287512Sdim  return __cc == 3;
3095287512Sdim}
3096287512Sdim
3097287512Sdimstatic inline __ATTRS_o_ai int
3098287512Sdimvec_all_ge(vector unsigned short __a, vector unsigned short __b) {
3099287512Sdim  int __cc;
3100287512Sdim  __builtin_s390_vchlhs(__b, __a, &__cc);
3101287512Sdim  return __cc == 3;
3102287512Sdim}
3103287512Sdim
3104321369Sdim// This prototype is deprecated.
3105287512Sdimstatic inline __ATTRS_o_ai int
3106287512Sdimvec_all_ge(vector unsigned short __a, vector bool short __b) {
3107287512Sdim  int __cc;
3108287512Sdim  __builtin_s390_vchlhs((vector unsigned short)__b, __a, &__cc);
3109287512Sdim  return __cc == 3;
3110287512Sdim}
3111287512Sdim
3112321369Sdim// This prototype is deprecated.
3113287512Sdimstatic inline __ATTRS_o_ai int
3114287512Sdimvec_all_ge(vector bool short __a, vector unsigned short __b) {
3115287512Sdim  int __cc;
3116287512Sdim  __builtin_s390_vchlhs(__b, (vector unsigned short)__a, &__cc);
3117287512Sdim  return __cc == 3;
3118287512Sdim}
3119287512Sdim
3120321369Sdim// This prototype is deprecated.
3121287512Sdimstatic inline __ATTRS_o_ai int
3122287512Sdimvec_all_ge(vector bool short __a, vector bool short __b) {
3123287512Sdim  int __cc;
3124287512Sdim  __builtin_s390_vchlhs((vector unsigned short)__b,
3125287512Sdim                        (vector unsigned short)__a, &__cc);
3126287512Sdim  return __cc == 3;
3127287512Sdim}
3128287512Sdim
3129287512Sdimstatic inline __ATTRS_o_ai int
3130287512Sdimvec_all_ge(vector signed int __a, vector signed int __b) {
3131287512Sdim  int __cc;
3132287512Sdim  __builtin_s390_vchfs(__b, __a, &__cc);
3133287512Sdim  return __cc == 3;
3134287512Sdim}
3135287512Sdim
3136321369Sdim// This prototype is deprecated.
3137287512Sdimstatic inline __ATTRS_o_ai int
3138287512Sdimvec_all_ge(vector signed int __a, vector bool int __b) {
3139287512Sdim  int __cc;
3140287512Sdim  __builtin_s390_vchfs((vector signed int)__b, __a, &__cc);
3141287512Sdim  return __cc == 3;
3142287512Sdim}
3143287512Sdim
3144321369Sdim// This prototype is deprecated.
3145287512Sdimstatic inline __ATTRS_o_ai int
3146287512Sdimvec_all_ge(vector bool int __a, vector signed int __b) {
3147287512Sdim  int __cc;
3148287512Sdim  __builtin_s390_vchfs(__b, (vector signed int)__a, &__cc);
3149287512Sdim  return __cc == 3;
3150287512Sdim}
3151287512Sdim
3152287512Sdimstatic inline __ATTRS_o_ai int
3153287512Sdimvec_all_ge(vector unsigned int __a, vector unsigned int __b) {
3154287512Sdim  int __cc;
3155287512Sdim  __builtin_s390_vchlfs(__b, __a, &__cc);
3156287512Sdim  return __cc == 3;
3157287512Sdim}
3158287512Sdim
3159321369Sdim// This prototype is deprecated.
3160287512Sdimstatic inline __ATTRS_o_ai int
3161287512Sdimvec_all_ge(vector unsigned int __a, vector bool int __b) {
3162287512Sdim  int __cc;
3163287512Sdim  __builtin_s390_vchlfs((vector unsigned int)__b, __a, &__cc);
3164287512Sdim  return __cc == 3;
3165287512Sdim}
3166287512Sdim
3167321369Sdim// This prototype is deprecated.
3168287512Sdimstatic inline __ATTRS_o_ai int
3169287512Sdimvec_all_ge(vector bool int __a, vector unsigned int __b) {
3170287512Sdim  int __cc;
3171287512Sdim  __builtin_s390_vchlfs(__b, (vector unsigned int)__a, &__cc);
3172287512Sdim  return __cc == 3;
3173287512Sdim}
3174287512Sdim
3175321369Sdim// This prototype is deprecated.
3176287512Sdimstatic inline __ATTRS_o_ai int
3177287512Sdimvec_all_ge(vector bool int __a, vector bool int __b) {
3178287512Sdim  int __cc;
3179287512Sdim  __builtin_s390_vchlfs((vector unsigned int)__b,
3180287512Sdim                        (vector unsigned int)__a, &__cc);
3181287512Sdim  return __cc == 3;
3182287512Sdim}
3183287512Sdim
3184287512Sdimstatic inline __ATTRS_o_ai int
3185287512Sdimvec_all_ge(vector signed long long __a, vector signed long long __b) {
3186287512Sdim  int __cc;
3187287512Sdim  __builtin_s390_vchgs(__b, __a, &__cc);
3188287512Sdim  return __cc == 3;
3189287512Sdim}
3190287512Sdim
3191321369Sdim// This prototype is deprecated.
3192287512Sdimstatic inline __ATTRS_o_ai int
3193287512Sdimvec_all_ge(vector signed long long __a, vector bool long long __b) {
3194287512Sdim  int __cc;
3195287512Sdim  __builtin_s390_vchgs((vector signed long long)__b, __a, &__cc);
3196287512Sdim  return __cc == 3;
3197287512Sdim}
3198287512Sdim
3199321369Sdim// This prototype is deprecated.
3200287512Sdimstatic inline __ATTRS_o_ai int
3201287512Sdimvec_all_ge(vector bool long long __a, vector signed long long __b) {
3202287512Sdim  int __cc;
3203287512Sdim  __builtin_s390_vchgs(__b, (vector signed long long)__a, &__cc);
3204287512Sdim  return __cc == 3;
3205287512Sdim}
3206287512Sdim
3207287512Sdimstatic inline __ATTRS_o_ai int
3208287512Sdimvec_all_ge(vector unsigned long long __a, vector unsigned long long __b) {
3209287512Sdim  int __cc;
3210287512Sdim  __builtin_s390_vchlgs(__b, __a, &__cc);
3211287512Sdim  return __cc == 3;
3212287512Sdim}
3213287512Sdim
3214321369Sdim// This prototype is deprecated.
3215287512Sdimstatic inline __ATTRS_o_ai int
3216287512Sdimvec_all_ge(vector unsigned long long __a, vector bool long long __b) {
3217287512Sdim  int __cc;
3218287512Sdim  __builtin_s390_vchlgs((vector unsigned long long)__b, __a, &__cc);
3219287512Sdim  return __cc == 3;
3220287512Sdim}
3221287512Sdim
3222321369Sdim// This prototype is deprecated.
3223287512Sdimstatic inline __ATTRS_o_ai int
3224287512Sdimvec_all_ge(vector bool long long __a, vector unsigned long long __b) {
3225287512Sdim  int __cc;
3226287512Sdim  __builtin_s390_vchlgs(__b, (vector unsigned long long)__a, &__cc);
3227287512Sdim  return __cc == 3;
3228287512Sdim}
3229287512Sdim
3230321369Sdim// This prototype is deprecated.
3231287512Sdimstatic inline __ATTRS_o_ai int
3232287512Sdimvec_all_ge(vector bool long long __a, vector bool long long __b) {
3233287512Sdim  int __cc;
3234287512Sdim  __builtin_s390_vchlgs((vector unsigned long long)__b,
3235287512Sdim                        (vector unsigned long long)__a, &__cc);
3236287512Sdim  return __cc == 3;
3237287512Sdim}
3238287512Sdim
3239321369Sdim#if __ARCH__ >= 12
3240287512Sdimstatic inline __ATTRS_o_ai int
3241321369Sdimvec_all_ge(vector float __a, vector float __b) {
3242321369Sdim  int __cc;
3243321369Sdim  __builtin_s390_vfchesbs(__a, __b, &__cc);
3244321369Sdim  return __cc == 0;
3245321369Sdim}
3246321369Sdim#endif
3247321369Sdim
3248321369Sdimstatic inline __ATTRS_o_ai int
3249287512Sdimvec_all_ge(vector double __a, vector double __b) {
3250287512Sdim  int __cc;
3251287512Sdim  __builtin_s390_vfchedbs(__a, __b, &__cc);
3252287512Sdim  return __cc == 0;
3253287512Sdim}
3254287512Sdim
3255287512Sdim/*-- vec_all_gt -------------------------------------------------------------*/
3256287512Sdim
3257287512Sdimstatic inline __ATTRS_o_ai int
3258287512Sdimvec_all_gt(vector signed char __a, vector signed char __b) {
3259287512Sdim  int __cc;
3260287512Sdim  __builtin_s390_vchbs(__a, __b, &__cc);
3261287512Sdim  return __cc == 0;
3262287512Sdim}
3263287512Sdim
3264321369Sdim// This prototype is deprecated.
3265287512Sdimstatic inline __ATTRS_o_ai int
3266287512Sdimvec_all_gt(vector signed char __a, vector bool char __b) {
3267287512Sdim  int __cc;
3268287512Sdim  __builtin_s390_vchbs(__a, (vector signed char)__b, &__cc);
3269287512Sdim  return __cc == 0;
3270287512Sdim}
3271287512Sdim
3272321369Sdim// This prototype is deprecated.
3273287512Sdimstatic inline __ATTRS_o_ai int
3274287512Sdimvec_all_gt(vector bool char __a, vector signed char __b) {
3275287512Sdim  int __cc;
3276287512Sdim  __builtin_s390_vchbs((vector signed char)__a, __b, &__cc);
3277287512Sdim  return __cc == 0;
3278287512Sdim}
3279287512Sdim
3280287512Sdimstatic inline __ATTRS_o_ai int
3281287512Sdimvec_all_gt(vector unsigned char __a, vector unsigned char __b) {
3282287512Sdim  int __cc;
3283287512Sdim  __builtin_s390_vchlbs(__a, __b, &__cc);
3284287512Sdim  return __cc == 0;
3285287512Sdim}
3286287512Sdim
3287321369Sdim// This prototype is deprecated.
3288287512Sdimstatic inline __ATTRS_o_ai int
3289287512Sdimvec_all_gt(vector unsigned char __a, vector bool char __b) {
3290287512Sdim  int __cc;
3291287512Sdim  __builtin_s390_vchlbs(__a, (vector unsigned char)__b, &__cc);
3292287512Sdim  return __cc == 0;
3293287512Sdim}
3294287512Sdim
3295321369Sdim// This prototype is deprecated.
3296287512Sdimstatic inline __ATTRS_o_ai int
3297287512Sdimvec_all_gt(vector bool char __a, vector unsigned char __b) {
3298287512Sdim  int __cc;
3299287512Sdim  __builtin_s390_vchlbs((vector unsigned char)__a, __b, &__cc);
3300287512Sdim  return __cc == 0;
3301287512Sdim}
3302287512Sdim
3303321369Sdim// This prototype is deprecated.
3304287512Sdimstatic inline __ATTRS_o_ai int
3305287512Sdimvec_all_gt(vector bool char __a, vector bool char __b) {
3306287512Sdim  int __cc;
3307287512Sdim  __builtin_s390_vchlbs((vector unsigned char)__a,
3308287512Sdim                        (vector unsigned char)__b, &__cc);
3309287512Sdim  return __cc == 0;
3310287512Sdim}
3311287512Sdim
3312287512Sdimstatic inline __ATTRS_o_ai int
3313287512Sdimvec_all_gt(vector signed short __a, vector signed short __b) {
3314287512Sdim  int __cc;
3315287512Sdim  __builtin_s390_vchhs(__a, __b, &__cc);
3316287512Sdim  return __cc == 0;
3317287512Sdim}
3318287512Sdim
3319321369Sdim// This prototype is deprecated.
3320287512Sdimstatic inline __ATTRS_o_ai int
3321287512Sdimvec_all_gt(vector signed short __a, vector bool short __b) {
3322287512Sdim  int __cc;
3323287512Sdim  __builtin_s390_vchhs(__a, (vector signed short)__b, &__cc);
3324287512Sdim  return __cc == 0;
3325287512Sdim}
3326287512Sdim
3327321369Sdim// This prototype is deprecated.
3328287512Sdimstatic inline __ATTRS_o_ai int
3329287512Sdimvec_all_gt(vector bool short __a, vector signed short __b) {
3330287512Sdim  int __cc;
3331287512Sdim  __builtin_s390_vchhs((vector signed short)__a, __b, &__cc);
3332287512Sdim  return __cc == 0;
3333287512Sdim}
3334287512Sdim
3335287512Sdimstatic inline __ATTRS_o_ai int
3336287512Sdimvec_all_gt(vector unsigned short __a, vector unsigned short __b) {
3337287512Sdim  int __cc;
3338287512Sdim  __builtin_s390_vchlhs(__a, __b, &__cc);
3339287512Sdim  return __cc == 0;
3340287512Sdim}
3341287512Sdim
3342321369Sdim// This prototype is deprecated.
3343287512Sdimstatic inline __ATTRS_o_ai int
3344287512Sdimvec_all_gt(vector unsigned short __a, vector bool short __b) {
3345287512Sdim  int __cc;
3346287512Sdim  __builtin_s390_vchlhs(__a, (vector unsigned short)__b, &__cc);
3347287512Sdim  return __cc == 0;
3348287512Sdim}
3349287512Sdim
3350321369Sdim// This prototype is deprecated.
3351287512Sdimstatic inline __ATTRS_o_ai int
3352287512Sdimvec_all_gt(vector bool short __a, vector unsigned short __b) {
3353287512Sdim  int __cc;
3354287512Sdim  __builtin_s390_vchlhs((vector unsigned short)__a, __b, &__cc);
3355287512Sdim  return __cc == 0;
3356287512Sdim}
3357287512Sdim
3358321369Sdim// This prototype is deprecated.
3359287512Sdimstatic inline __ATTRS_o_ai int
3360287512Sdimvec_all_gt(vector bool short __a, vector bool short __b) {
3361287512Sdim  int __cc;
3362287512Sdim  __builtin_s390_vchlhs((vector unsigned short)__a,
3363287512Sdim                        (vector unsigned short)__b, &__cc);
3364287512Sdim  return __cc == 0;
3365287512Sdim}
3366287512Sdim
3367287512Sdimstatic inline __ATTRS_o_ai int
3368287512Sdimvec_all_gt(vector signed int __a, vector signed int __b) {
3369287512Sdim  int __cc;
3370287512Sdim  __builtin_s390_vchfs(__a, __b, &__cc);
3371287512Sdim  return __cc == 0;
3372287512Sdim}
3373287512Sdim
3374321369Sdim// This prototype is deprecated.
3375287512Sdimstatic inline __ATTRS_o_ai int
3376287512Sdimvec_all_gt(vector signed int __a, vector bool int __b) {
3377287512Sdim  int __cc;
3378287512Sdim  __builtin_s390_vchfs(__a, (vector signed int)__b, &__cc);
3379287512Sdim  return __cc == 0;
3380287512Sdim}
3381287512Sdim
3382321369Sdim// This prototype is deprecated.
3383287512Sdimstatic inline __ATTRS_o_ai int
3384287512Sdimvec_all_gt(vector bool int __a, vector signed int __b) {
3385287512Sdim  int __cc;
3386287512Sdim  __builtin_s390_vchfs((vector signed int)__a, __b, &__cc);
3387287512Sdim  return __cc == 0;
3388287512Sdim}
3389287512Sdim
3390287512Sdimstatic inline __ATTRS_o_ai int
3391287512Sdimvec_all_gt(vector unsigned int __a, vector unsigned int __b) {
3392287512Sdim  int __cc;
3393287512Sdim  __builtin_s390_vchlfs(__a, __b, &__cc);
3394287512Sdim  return __cc == 0;
3395287512Sdim}
3396287512Sdim
3397321369Sdim// This prototype is deprecated.
3398287512Sdimstatic inline __ATTRS_o_ai int
3399287512Sdimvec_all_gt(vector unsigned int __a, vector bool int __b) {
3400287512Sdim  int __cc;
3401287512Sdim  __builtin_s390_vchlfs(__a, (vector unsigned int)__b, &__cc);
3402287512Sdim  return __cc == 0;
3403287512Sdim}
3404287512Sdim
3405321369Sdim// This prototype is deprecated.
3406287512Sdimstatic inline __ATTRS_o_ai int
3407287512Sdimvec_all_gt(vector bool int __a, vector unsigned int __b) {
3408287512Sdim  int __cc;
3409287512Sdim  __builtin_s390_vchlfs((vector unsigned int)__a, __b, &__cc);
3410287512Sdim  return __cc == 0;
3411287512Sdim}
3412287512Sdim
3413321369Sdim// This prototype is deprecated.
3414287512Sdimstatic inline __ATTRS_o_ai int
3415287512Sdimvec_all_gt(vector bool int __a, vector bool int __b) {
3416287512Sdim  int __cc;
3417287512Sdim  __builtin_s390_vchlfs((vector unsigned int)__a,
3418287512Sdim                        (vector unsigned int)__b, &__cc);
3419287512Sdim  return __cc == 0;
3420287512Sdim}
3421287512Sdim
3422287512Sdimstatic inline __ATTRS_o_ai int
3423287512Sdimvec_all_gt(vector signed long long __a, vector signed long long __b) {
3424287512Sdim  int __cc;
3425287512Sdim  __builtin_s390_vchgs(__a, __b, &__cc);
3426287512Sdim  return __cc == 0;
3427287512Sdim}
3428287512Sdim
3429321369Sdim// This prototype is deprecated.
3430287512Sdimstatic inline __ATTRS_o_ai int
3431287512Sdimvec_all_gt(vector signed long long __a, vector bool long long __b) {
3432287512Sdim  int __cc;
3433287512Sdim  __builtin_s390_vchgs(__a, (vector signed long long)__b, &__cc);
3434287512Sdim  return __cc == 0;
3435287512Sdim}
3436287512Sdim
3437321369Sdim// This prototype is deprecated.
3438287512Sdimstatic inline __ATTRS_o_ai int
3439287512Sdimvec_all_gt(vector bool long long __a, vector signed long long __b) {
3440287512Sdim  int __cc;
3441287512Sdim  __builtin_s390_vchgs((vector signed long long)__a, __b, &__cc);
3442287512Sdim  return __cc == 0;
3443287512Sdim}
3444287512Sdim
3445287512Sdimstatic inline __ATTRS_o_ai int
3446287512Sdimvec_all_gt(vector unsigned long long __a, vector unsigned long long __b) {
3447287512Sdim  int __cc;
3448287512Sdim  __builtin_s390_vchlgs(__a, __b, &__cc);
3449287512Sdim  return __cc == 0;
3450287512Sdim}
3451287512Sdim
3452321369Sdim// This prototype is deprecated.
3453287512Sdimstatic inline __ATTRS_o_ai int
3454287512Sdimvec_all_gt(vector unsigned long long __a, vector bool long long __b) {
3455287512Sdim  int __cc;
3456287512Sdim  __builtin_s390_vchlgs(__a, (vector unsigned long long)__b, &__cc);
3457287512Sdim  return __cc == 0;
3458287512Sdim}
3459287512Sdim
3460321369Sdim// This prototype is deprecated.
3461287512Sdimstatic inline __ATTRS_o_ai int
3462287512Sdimvec_all_gt(vector bool long long __a, vector unsigned long long __b) {
3463287512Sdim  int __cc;
3464287512Sdim  __builtin_s390_vchlgs((vector unsigned long long)__a, __b, &__cc);
3465287512Sdim  return __cc == 0;
3466287512Sdim}
3467287512Sdim
3468321369Sdim// This prototype is deprecated.
3469287512Sdimstatic inline __ATTRS_o_ai int
3470287512Sdimvec_all_gt(vector bool long long __a, vector bool long long __b) {
3471287512Sdim  int __cc;
3472287512Sdim  __builtin_s390_vchlgs((vector unsigned long long)__a,
3473287512Sdim                        (vector unsigned long long)__b, &__cc);
3474287512Sdim  return __cc == 0;
3475287512Sdim}
3476287512Sdim
3477321369Sdim#if __ARCH__ >= 12
3478287512Sdimstatic inline __ATTRS_o_ai int
3479321369Sdimvec_all_gt(vector float __a, vector float __b) {
3480321369Sdim  int __cc;
3481321369Sdim  __builtin_s390_vfchsbs(__a, __b, &__cc);
3482321369Sdim  return __cc == 0;
3483321369Sdim}
3484321369Sdim#endif
3485321369Sdim
3486321369Sdimstatic inline __ATTRS_o_ai int
3487287512Sdimvec_all_gt(vector double __a, vector double __b) {
3488287512Sdim  int __cc;
3489287512Sdim  __builtin_s390_vfchdbs(__a, __b, &__cc);
3490287512Sdim  return __cc == 0;
3491287512Sdim}
3492287512Sdim
3493287512Sdim/*-- vec_all_le -------------------------------------------------------------*/
3494287512Sdim
3495287512Sdimstatic inline __ATTRS_o_ai int
3496287512Sdimvec_all_le(vector signed char __a, vector signed char __b) {
3497287512Sdim  int __cc;
3498287512Sdim  __builtin_s390_vchbs(__a, __b, &__cc);
3499287512Sdim  return __cc == 3;
3500287512Sdim}
3501287512Sdim
3502321369Sdim// This prototype is deprecated.
3503287512Sdimstatic inline __ATTRS_o_ai int
3504287512Sdimvec_all_le(vector signed char __a, vector bool char __b) {
3505287512Sdim  int __cc;
3506287512Sdim  __builtin_s390_vchbs(__a, (vector signed char)__b, &__cc);
3507287512Sdim  return __cc == 3;
3508287512Sdim}
3509287512Sdim
3510321369Sdim// This prototype is deprecated.
3511287512Sdimstatic inline __ATTRS_o_ai int
3512287512Sdimvec_all_le(vector bool char __a, vector signed char __b) {
3513287512Sdim  int __cc;
3514287512Sdim  __builtin_s390_vchbs((vector signed char)__a, __b, &__cc);
3515287512Sdim  return __cc == 3;
3516287512Sdim}
3517287512Sdim
3518287512Sdimstatic inline __ATTRS_o_ai int
3519287512Sdimvec_all_le(vector unsigned char __a, vector unsigned char __b) {
3520287512Sdim  int __cc;
3521287512Sdim  __builtin_s390_vchlbs(__a, __b, &__cc);
3522287512Sdim  return __cc == 3;
3523287512Sdim}
3524287512Sdim
3525321369Sdim// This prototype is deprecated.
3526287512Sdimstatic inline __ATTRS_o_ai int
3527287512Sdimvec_all_le(vector unsigned char __a, vector bool char __b) {
3528287512Sdim  int __cc;
3529287512Sdim  __builtin_s390_vchlbs(__a, (vector unsigned char)__b, &__cc);
3530287512Sdim  return __cc == 3;
3531287512Sdim}
3532287512Sdim
3533321369Sdim// This prototype is deprecated.
3534287512Sdimstatic inline __ATTRS_o_ai int
3535287512Sdimvec_all_le(vector bool char __a, vector unsigned char __b) {
3536287512Sdim  int __cc;
3537287512Sdim  __builtin_s390_vchlbs((vector unsigned char)__a, __b, &__cc);
3538287512Sdim  return __cc == 3;
3539287512Sdim}
3540287512Sdim
3541321369Sdim// This prototype is deprecated.
3542287512Sdimstatic inline __ATTRS_o_ai int
3543287512Sdimvec_all_le(vector bool char __a, vector bool char __b) {
3544287512Sdim  int __cc;
3545287512Sdim  __builtin_s390_vchlbs((vector unsigned char)__a,
3546287512Sdim                        (vector unsigned char)__b, &__cc);
3547287512Sdim  return __cc == 3;
3548287512Sdim}
3549287512Sdim
3550287512Sdimstatic inline __ATTRS_o_ai int
3551287512Sdimvec_all_le(vector signed short __a, vector signed short __b) {
3552287512Sdim  int __cc;
3553287512Sdim  __builtin_s390_vchhs(__a, __b, &__cc);
3554287512Sdim  return __cc == 3;
3555287512Sdim}
3556287512Sdim
3557321369Sdim// This prototype is deprecated.
3558287512Sdimstatic inline __ATTRS_o_ai int
3559287512Sdimvec_all_le(vector signed short __a, vector bool short __b) {
3560287512Sdim  int __cc;
3561287512Sdim  __builtin_s390_vchhs(__a, (vector signed short)__b, &__cc);
3562287512Sdim  return __cc == 3;
3563287512Sdim}
3564287512Sdim
3565321369Sdim// This prototype is deprecated.
3566287512Sdimstatic inline __ATTRS_o_ai int
3567287512Sdimvec_all_le(vector bool short __a, vector signed short __b) {
3568287512Sdim  int __cc;
3569287512Sdim  __builtin_s390_vchhs((vector signed short)__a, __b, &__cc);
3570287512Sdim  return __cc == 3;
3571287512Sdim}
3572287512Sdim
3573287512Sdimstatic inline __ATTRS_o_ai int
3574287512Sdimvec_all_le(vector unsigned short __a, vector unsigned short __b) {
3575287512Sdim  int __cc;
3576287512Sdim  __builtin_s390_vchlhs(__a, __b, &__cc);
3577287512Sdim  return __cc == 3;
3578287512Sdim}
3579287512Sdim
3580321369Sdim// This prototype is deprecated.
3581287512Sdimstatic inline __ATTRS_o_ai int
3582287512Sdimvec_all_le(vector unsigned short __a, vector bool short __b) {
3583287512Sdim  int __cc;
3584287512Sdim  __builtin_s390_vchlhs(__a, (vector unsigned short)__b, &__cc);
3585287512Sdim  return __cc == 3;
3586287512Sdim}
3587287512Sdim
3588321369Sdim// This prototype is deprecated.
3589287512Sdimstatic inline __ATTRS_o_ai int
3590287512Sdimvec_all_le(vector bool short __a, vector unsigned short __b) {
3591287512Sdim  int __cc;
3592287512Sdim  __builtin_s390_vchlhs((vector unsigned short)__a, __b, &__cc);
3593287512Sdim  return __cc == 3;
3594287512Sdim}
3595287512Sdim
3596321369Sdim// This prototype is deprecated.
3597287512Sdimstatic inline __ATTRS_o_ai int
3598287512Sdimvec_all_le(vector bool short __a, vector bool short __b) {
3599287512Sdim  int __cc;
3600287512Sdim  __builtin_s390_vchlhs((vector unsigned short)__a,
3601287512Sdim                        (vector unsigned short)__b, &__cc);
3602287512Sdim  return __cc == 3;
3603287512Sdim}
3604287512Sdim
3605287512Sdimstatic inline __ATTRS_o_ai int
3606287512Sdimvec_all_le(vector signed int __a, vector signed int __b) {
3607287512Sdim  int __cc;
3608287512Sdim  __builtin_s390_vchfs(__a, __b, &__cc);
3609287512Sdim  return __cc == 3;
3610287512Sdim}
3611287512Sdim
3612321369Sdim// This prototype is deprecated.
3613287512Sdimstatic inline __ATTRS_o_ai int
3614287512Sdimvec_all_le(vector signed int __a, vector bool int __b) {
3615287512Sdim  int __cc;
3616287512Sdim  __builtin_s390_vchfs(__a, (vector signed int)__b, &__cc);
3617287512Sdim  return __cc == 3;
3618287512Sdim}
3619287512Sdim
3620321369Sdim// This prototype is deprecated.
3621287512Sdimstatic inline __ATTRS_o_ai int
3622287512Sdimvec_all_le(vector bool int __a, vector signed int __b) {
3623287512Sdim  int __cc;
3624287512Sdim  __builtin_s390_vchfs((vector signed int)__a, __b, &__cc);
3625287512Sdim  return __cc == 3;
3626287512Sdim}
3627287512Sdim
3628287512Sdimstatic inline __ATTRS_o_ai int
3629287512Sdimvec_all_le(vector unsigned int __a, vector unsigned int __b) {
3630287512Sdim  int __cc;
3631287512Sdim  __builtin_s390_vchlfs(__a, __b, &__cc);
3632287512Sdim  return __cc == 3;
3633287512Sdim}
3634287512Sdim
3635321369Sdim// This prototype is deprecated.
3636287512Sdimstatic inline __ATTRS_o_ai int
3637287512Sdimvec_all_le(vector unsigned int __a, vector bool int __b) {
3638287512Sdim  int __cc;
3639287512Sdim  __builtin_s390_vchlfs(__a, (vector unsigned int)__b, &__cc);
3640287512Sdim  return __cc == 3;
3641287512Sdim}
3642287512Sdim
3643321369Sdim// This prototype is deprecated.
3644287512Sdimstatic inline __ATTRS_o_ai int
3645287512Sdimvec_all_le(vector bool int __a, vector unsigned int __b) {
3646287512Sdim  int __cc;
3647287512Sdim  __builtin_s390_vchlfs((vector unsigned int)__a, __b, &__cc);
3648287512Sdim  return __cc == 3;
3649287512Sdim}
3650287512Sdim
3651321369Sdim// This prototype is deprecated.
3652287512Sdimstatic inline __ATTRS_o_ai int
3653287512Sdimvec_all_le(vector bool int __a, vector bool int __b) {
3654287512Sdim  int __cc;
3655287512Sdim  __builtin_s390_vchlfs((vector unsigned int)__a,
3656287512Sdim                        (vector unsigned int)__b, &__cc);
3657287512Sdim  return __cc == 3;
3658287512Sdim}
3659287512Sdim
3660287512Sdimstatic inline __ATTRS_o_ai int
3661287512Sdimvec_all_le(vector signed long long __a, vector signed long long __b) {
3662287512Sdim  int __cc;
3663287512Sdim  __builtin_s390_vchgs(__a, __b, &__cc);
3664287512Sdim  return __cc == 3;
3665287512Sdim}
3666287512Sdim
3667321369Sdim// This prototype is deprecated.
3668287512Sdimstatic inline __ATTRS_o_ai int
3669287512Sdimvec_all_le(vector signed long long __a, vector bool long long __b) {
3670287512Sdim  int __cc;
3671287512Sdim  __builtin_s390_vchgs(__a, (vector signed long long)__b, &__cc);
3672287512Sdim  return __cc == 3;
3673287512Sdim}
3674287512Sdim
3675321369Sdim// This prototype is deprecated.
3676287512Sdimstatic inline __ATTRS_o_ai int
3677287512Sdimvec_all_le(vector bool long long __a, vector signed long long __b) {
3678287512Sdim  int __cc;
3679287512Sdim  __builtin_s390_vchgs((vector signed long long)__a, __b, &__cc);
3680287512Sdim  return __cc == 3;
3681287512Sdim}
3682287512Sdim
3683287512Sdimstatic inline __ATTRS_o_ai int
3684287512Sdimvec_all_le(vector unsigned long long __a, vector unsigned long long __b) {
3685287512Sdim  int __cc;
3686287512Sdim  __builtin_s390_vchlgs(__a, __b, &__cc);
3687287512Sdim  return __cc == 3;
3688287512Sdim}
3689287512Sdim
3690321369Sdim// This prototype is deprecated.
3691287512Sdimstatic inline __ATTRS_o_ai int
3692287512Sdimvec_all_le(vector unsigned long long __a, vector bool long long __b) {
3693287512Sdim  int __cc;
3694287512Sdim  __builtin_s390_vchlgs(__a, (vector unsigned long long)__b, &__cc);
3695287512Sdim  return __cc == 3;
3696287512Sdim}
3697287512Sdim
3698321369Sdim// This prototype is deprecated.
3699287512Sdimstatic inline __ATTRS_o_ai int
3700287512Sdimvec_all_le(vector bool long long __a, vector unsigned long long __b) {
3701287512Sdim  int __cc;
3702287512Sdim  __builtin_s390_vchlgs((vector unsigned long long)__a, __b, &__cc);
3703287512Sdim  return __cc == 3;
3704287512Sdim}
3705287512Sdim
3706321369Sdim// This prototype is deprecated.
3707287512Sdimstatic inline __ATTRS_o_ai int
3708287512Sdimvec_all_le(vector bool long long __a, vector bool long long __b) {
3709287512Sdim  int __cc;
3710287512Sdim  __builtin_s390_vchlgs((vector unsigned long long)__a,
3711287512Sdim                        (vector unsigned long long)__b, &__cc);
3712287512Sdim  return __cc == 3;
3713287512Sdim}
3714287512Sdim
3715321369Sdim#if __ARCH__ >= 12
3716287512Sdimstatic inline __ATTRS_o_ai int
3717321369Sdimvec_all_le(vector float __a, vector float __b) {
3718321369Sdim  int __cc;
3719321369Sdim  __builtin_s390_vfchesbs(__b, __a, &__cc);
3720321369Sdim  return __cc == 0;
3721321369Sdim}
3722321369Sdim#endif
3723321369Sdim
3724321369Sdimstatic inline __ATTRS_o_ai int
3725287512Sdimvec_all_le(vector double __a, vector double __b) {
3726287512Sdim  int __cc;
3727287512Sdim  __builtin_s390_vfchedbs(__b, __a, &__cc);
3728287512Sdim  return __cc == 0;
3729287512Sdim}
3730287512Sdim
3731287512Sdim/*-- vec_all_lt -------------------------------------------------------------*/
3732287512Sdim
3733287512Sdimstatic inline __ATTRS_o_ai int
3734287512Sdimvec_all_lt(vector signed char __a, vector signed char __b) {
3735287512Sdim  int __cc;
3736287512Sdim  __builtin_s390_vchbs(__b, __a, &__cc);
3737287512Sdim  return __cc == 0;
3738287512Sdim}
3739287512Sdim
3740321369Sdim// This prototype is deprecated.
3741287512Sdimstatic inline __ATTRS_o_ai int
3742287512Sdimvec_all_lt(vector signed char __a, vector bool char __b) {
3743287512Sdim  int __cc;
3744287512Sdim  __builtin_s390_vchbs((vector signed char)__b, __a, &__cc);
3745287512Sdim  return __cc == 0;
3746287512Sdim}
3747287512Sdim
3748321369Sdim// This prototype is deprecated.
3749287512Sdimstatic inline __ATTRS_o_ai int
3750287512Sdimvec_all_lt(vector bool char __a, vector signed char __b) {
3751287512Sdim  int __cc;
3752287512Sdim  __builtin_s390_vchbs(__b, (vector signed char)__a, &__cc);
3753287512Sdim  return __cc == 0;
3754287512Sdim}
3755287512Sdim
3756287512Sdimstatic inline __ATTRS_o_ai int
3757287512Sdimvec_all_lt(vector unsigned char __a, vector unsigned char __b) {
3758287512Sdim  int __cc;
3759287512Sdim  __builtin_s390_vchlbs(__b, __a, &__cc);
3760287512Sdim  return __cc == 0;
3761287512Sdim}
3762287512Sdim
3763321369Sdim// This prototype is deprecated.
3764287512Sdimstatic inline __ATTRS_o_ai int
3765287512Sdimvec_all_lt(vector unsigned char __a, vector bool char __b) {
3766287512Sdim  int __cc;
3767287512Sdim  __builtin_s390_vchlbs((vector unsigned char)__b, __a, &__cc);
3768287512Sdim  return __cc == 0;
3769287512Sdim}
3770287512Sdim
3771321369Sdim// This prototype is deprecated.
3772287512Sdimstatic inline __ATTRS_o_ai int
3773287512Sdimvec_all_lt(vector bool char __a, vector unsigned char __b) {
3774287512Sdim  int __cc;
3775287512Sdim  __builtin_s390_vchlbs(__b, (vector unsigned char)__a, &__cc);
3776287512Sdim  return __cc == 0;
3777287512Sdim}
3778287512Sdim
3779321369Sdim// This prototype is deprecated.
3780287512Sdimstatic inline __ATTRS_o_ai int
3781287512Sdimvec_all_lt(vector bool char __a, vector bool char __b) {
3782287512Sdim  int __cc;
3783287512Sdim  __builtin_s390_vchlbs((vector unsigned char)__b,
3784287512Sdim                        (vector unsigned char)__a, &__cc);
3785287512Sdim  return __cc == 0;
3786287512Sdim}
3787287512Sdim
3788287512Sdimstatic inline __ATTRS_o_ai int
3789287512Sdimvec_all_lt(vector signed short __a, vector signed short __b) {
3790287512Sdim  int __cc;
3791287512Sdim  __builtin_s390_vchhs(__b, __a, &__cc);
3792287512Sdim  return __cc == 0;
3793287512Sdim}
3794287512Sdim
3795321369Sdim// This prototype is deprecated.
3796287512Sdimstatic inline __ATTRS_o_ai int
3797287512Sdimvec_all_lt(vector signed short __a, vector bool short __b) {
3798287512Sdim  int __cc;
3799287512Sdim  __builtin_s390_vchhs((vector signed short)__b, __a, &__cc);
3800287512Sdim  return __cc == 0;
3801287512Sdim}
3802287512Sdim
3803321369Sdim// This prototype is deprecated.
3804287512Sdimstatic inline __ATTRS_o_ai int
3805287512Sdimvec_all_lt(vector bool short __a, vector signed short __b) {
3806287512Sdim  int __cc;
3807287512Sdim  __builtin_s390_vchhs(__b, (vector signed short)__a, &__cc);
3808287512Sdim  return __cc == 0;
3809287512Sdim}
3810287512Sdim
3811287512Sdimstatic inline __ATTRS_o_ai int
3812287512Sdimvec_all_lt(vector unsigned short __a, vector unsigned short __b) {
3813287512Sdim  int __cc;
3814287512Sdim  __builtin_s390_vchlhs(__b, __a, &__cc);
3815287512Sdim  return __cc == 0;
3816287512Sdim}
3817287512Sdim
3818321369Sdim// This prototype is deprecated.
3819287512Sdimstatic inline __ATTRS_o_ai int
3820287512Sdimvec_all_lt(vector unsigned short __a, vector bool short __b) {
3821287512Sdim  int __cc;
3822287512Sdim  __builtin_s390_vchlhs((vector unsigned short)__b, __a, &__cc);
3823287512Sdim  return __cc == 0;
3824287512Sdim}
3825287512Sdim
3826321369Sdim// This prototype is deprecated.
3827287512Sdimstatic inline __ATTRS_o_ai int
3828287512Sdimvec_all_lt(vector bool short __a, vector unsigned short __b) {
3829287512Sdim  int __cc;
3830287512Sdim  __builtin_s390_vchlhs(__b, (vector unsigned short)__a, &__cc);
3831287512Sdim  return __cc == 0;
3832287512Sdim}
3833287512Sdim
3834321369Sdim// This prototype is deprecated.
3835287512Sdimstatic inline __ATTRS_o_ai int
3836287512Sdimvec_all_lt(vector bool short __a, vector bool short __b) {
3837287512Sdim  int __cc;
3838287512Sdim  __builtin_s390_vchlhs((vector unsigned short)__b,
3839287512Sdim                        (vector unsigned short)__a, &__cc);
3840287512Sdim  return __cc == 0;
3841287512Sdim}
3842287512Sdim
3843287512Sdimstatic inline __ATTRS_o_ai int
3844287512Sdimvec_all_lt(vector signed int __a, vector signed int __b) {
3845287512Sdim  int __cc;
3846287512Sdim  __builtin_s390_vchfs(__b, __a, &__cc);
3847287512Sdim  return __cc == 0;
3848287512Sdim}
3849287512Sdim
3850321369Sdim// This prototype is deprecated.
3851287512Sdimstatic inline __ATTRS_o_ai int
3852287512Sdimvec_all_lt(vector signed int __a, vector bool int __b) {
3853287512Sdim  int __cc;
3854287512Sdim  __builtin_s390_vchfs((vector signed int)__b, __a, &__cc);
3855287512Sdim  return __cc == 0;
3856287512Sdim}
3857287512Sdim
3858321369Sdim// This prototype is deprecated.
3859287512Sdimstatic inline __ATTRS_o_ai int
3860287512Sdimvec_all_lt(vector bool int __a, vector signed int __b) {
3861287512Sdim  int __cc;
3862287512Sdim  __builtin_s390_vchfs(__b, (vector signed int)__a, &__cc);
3863287512Sdim  return __cc == 0;
3864287512Sdim}
3865287512Sdim
3866287512Sdimstatic inline __ATTRS_o_ai int
3867287512Sdimvec_all_lt(vector unsigned int __a, vector unsigned int __b) {
3868287512Sdim  int __cc;
3869287512Sdim  __builtin_s390_vchlfs(__b, __a, &__cc);
3870287512Sdim  return __cc == 0;
3871287512Sdim}
3872287512Sdim
3873321369Sdim// This prototype is deprecated.
3874287512Sdimstatic inline __ATTRS_o_ai int
3875287512Sdimvec_all_lt(vector unsigned int __a, vector bool int __b) {
3876287512Sdim  int __cc;
3877287512Sdim  __builtin_s390_vchlfs((vector unsigned int)__b, __a, &__cc);
3878287512Sdim  return __cc == 0;
3879287512Sdim}
3880287512Sdim
3881321369Sdim// This prototype is deprecated.
3882287512Sdimstatic inline __ATTRS_o_ai int
3883287512Sdimvec_all_lt(vector bool int __a, vector unsigned int __b) {
3884287512Sdim  int __cc;
3885287512Sdim  __builtin_s390_vchlfs(__b, (vector unsigned int)__a, &__cc);
3886287512Sdim  return __cc == 0;
3887287512Sdim}
3888287512Sdim
3889321369Sdim// This prototype is deprecated.
3890287512Sdimstatic inline __ATTRS_o_ai int
3891287512Sdimvec_all_lt(vector bool int __a, vector bool int __b) {
3892287512Sdim  int __cc;
3893287512Sdim  __builtin_s390_vchlfs((vector unsigned int)__b,
3894287512Sdim                        (vector unsigned int)__a, &__cc);
3895287512Sdim  return __cc == 0;
3896287512Sdim}
3897287512Sdim
3898287512Sdimstatic inline __ATTRS_o_ai int
3899287512Sdimvec_all_lt(vector signed long long __a, vector signed long long __b) {
3900287512Sdim  int __cc;
3901287512Sdim  __builtin_s390_vchgs(__b, __a, &__cc);
3902287512Sdim  return __cc == 0;
3903287512Sdim}
3904287512Sdim
3905321369Sdim// This prototype is deprecated.
3906287512Sdimstatic inline __ATTRS_o_ai int
3907287512Sdimvec_all_lt(vector signed long long __a, vector bool long long __b) {
3908287512Sdim  int __cc;
3909287512Sdim  __builtin_s390_vchgs((vector signed long long)__b, __a, &__cc);
3910287512Sdim  return __cc == 0;
3911287512Sdim}
3912287512Sdim
3913321369Sdim// This prototype is deprecated.
3914287512Sdimstatic inline __ATTRS_o_ai int
3915287512Sdimvec_all_lt(vector bool long long __a, vector signed long long __b) {
3916287512Sdim  int __cc;
3917287512Sdim  __builtin_s390_vchgs(__b, (vector signed long long)__a, &__cc);
3918287512Sdim  return __cc == 0;
3919287512Sdim}
3920287512Sdim
3921287512Sdimstatic inline __ATTRS_o_ai int
3922287512Sdimvec_all_lt(vector unsigned long long __a, vector unsigned long long __b) {
3923287512Sdim  int __cc;
3924287512Sdim  __builtin_s390_vchlgs(__b, __a, &__cc);
3925287512Sdim  return __cc == 0;
3926287512Sdim}
3927287512Sdim
3928321369Sdim// This prototype is deprecated.
3929287512Sdimstatic inline __ATTRS_o_ai int
3930287512Sdimvec_all_lt(vector unsigned long long __a, vector bool long long __b) {
3931287512Sdim  int __cc;
3932287512Sdim  __builtin_s390_vchlgs((vector unsigned long long)__b, __a, &__cc);
3933287512Sdim  return __cc == 0;
3934287512Sdim}
3935287512Sdim
3936321369Sdim// This prototype is deprecated.
3937287512Sdimstatic inline __ATTRS_o_ai int
3938287512Sdimvec_all_lt(vector bool long long __a, vector unsigned long long __b) {
3939287512Sdim  int __cc;
3940287512Sdim  __builtin_s390_vchlgs(__b, (vector unsigned long long)__a, &__cc);
3941287512Sdim  return __cc == 0;
3942287512Sdim}
3943287512Sdim
3944321369Sdim// This prototype is deprecated.
3945287512Sdimstatic inline __ATTRS_o_ai int
3946287512Sdimvec_all_lt(vector bool long long __a, vector bool long long __b) {
3947287512Sdim  int __cc;
3948287512Sdim  __builtin_s390_vchlgs((vector unsigned long long)__b,
3949287512Sdim                        (vector unsigned long long)__a, &__cc);
3950287512Sdim  return __cc == 0;
3951287512Sdim}
3952287512Sdim
3953321369Sdim#if __ARCH__ >= 12
3954287512Sdimstatic inline __ATTRS_o_ai int
3955321369Sdimvec_all_lt(vector float __a, vector float __b) {
3956321369Sdim  int __cc;
3957321369Sdim  __builtin_s390_vfchsbs(__b, __a, &__cc);
3958321369Sdim  return __cc == 0;
3959321369Sdim}
3960321369Sdim#endif
3961321369Sdim
3962321369Sdimstatic inline __ATTRS_o_ai int
3963287512Sdimvec_all_lt(vector double __a, vector double __b) {
3964287512Sdim  int __cc;
3965287512Sdim  __builtin_s390_vfchdbs(__b, __a, &__cc);
3966287512Sdim  return __cc == 0;
3967287512Sdim}
3968287512Sdim
3969287512Sdim/*-- vec_all_nge ------------------------------------------------------------*/
3970287512Sdim
3971321369Sdim#if __ARCH__ >= 12
3972321369Sdimstatic inline __ATTRS_o_ai int
3973321369Sdimvec_all_nge(vector float __a, vector float __b) {
3974321369Sdim  int __cc;
3975321369Sdim  __builtin_s390_vfchesbs(__a, __b, &__cc);
3976321369Sdim  return __cc == 3;
3977321369Sdim}
3978321369Sdim#endif
3979321369Sdim
3980321369Sdimstatic inline __ATTRS_o_ai int
3981287512Sdimvec_all_nge(vector double __a, vector double __b) {
3982287512Sdim  int __cc;
3983287512Sdim  __builtin_s390_vfchedbs(__a, __b, &__cc);
3984287512Sdim  return __cc == 3;
3985287512Sdim}
3986287512Sdim
3987287512Sdim/*-- vec_all_ngt ------------------------------------------------------------*/
3988287512Sdim
3989321369Sdim#if __ARCH__ >= 12
3990321369Sdimstatic inline __ATTRS_o_ai int
3991321369Sdimvec_all_ngt(vector float __a, vector float __b) {
3992321369Sdim  int __cc;
3993321369Sdim  __builtin_s390_vfchsbs(__a, __b, &__cc);
3994321369Sdim  return __cc == 3;
3995321369Sdim}
3996321369Sdim#endif
3997321369Sdim
3998321369Sdimstatic inline __ATTRS_o_ai int
3999287512Sdimvec_all_ngt(vector double __a, vector double __b) {
4000287512Sdim  int __cc;
4001287512Sdim  __builtin_s390_vfchdbs(__a, __b, &__cc);
4002287512Sdim  return __cc == 3;
4003287512Sdim}
4004287512Sdim
4005287512Sdim/*-- vec_all_nle ------------------------------------------------------------*/
4006287512Sdim
4007321369Sdim#if __ARCH__ >= 12
4008321369Sdimstatic inline __ATTRS_o_ai int
4009321369Sdimvec_all_nle(vector float __a, vector float __b) {
4010321369Sdim  int __cc;
4011321369Sdim  __builtin_s390_vfchesbs(__b, __a, &__cc);
4012321369Sdim  return __cc == 3;
4013321369Sdim}
4014321369Sdim#endif
4015321369Sdim
4016321369Sdimstatic inline __ATTRS_o_ai int
4017287512Sdimvec_all_nle(vector double __a, vector double __b) {
4018287512Sdim  int __cc;
4019287512Sdim  __builtin_s390_vfchedbs(__b, __a, &__cc);
4020287512Sdim  return __cc == 3;
4021287512Sdim}
4022287512Sdim
4023287512Sdim/*-- vec_all_nlt ------------------------------------------------------------*/
4024287512Sdim
4025321369Sdim#if __ARCH__ >= 12
4026321369Sdimstatic inline __ATTRS_o_ai int
4027321369Sdimvec_all_nlt(vector float __a, vector float __b) {
4028321369Sdim  int __cc;
4029321369Sdim  __builtin_s390_vfchsbs(__b, __a, &__cc);
4030321369Sdim  return __cc == 3;
4031321369Sdim}
4032321369Sdim#endif
4033321369Sdim
4034321369Sdimstatic inline __ATTRS_o_ai int
4035287512Sdimvec_all_nlt(vector double __a, vector double __b) {
4036287512Sdim  int __cc;
4037287512Sdim  __builtin_s390_vfchdbs(__b, __a, &__cc);
4038287512Sdim  return __cc == 3;
4039287512Sdim}
4040287512Sdim
4041287512Sdim/*-- vec_all_nan ------------------------------------------------------------*/
4042287512Sdim
4043321369Sdim#if __ARCH__ >= 12
4044321369Sdimstatic inline __ATTRS_o_ai int
4045321369Sdimvec_all_nan(vector float __a) {
4046321369Sdim  int __cc;
4047321369Sdim  __builtin_s390_vftcisb(__a, 15, &__cc);
4048321369Sdim  return __cc == 0;
4049321369Sdim}
4050321369Sdim#endif
4051321369Sdim
4052321369Sdimstatic inline __ATTRS_o_ai int
4053287512Sdimvec_all_nan(vector double __a) {
4054287512Sdim  int __cc;
4055287512Sdim  __builtin_s390_vftcidb(__a, 15, &__cc);
4056287512Sdim  return __cc == 0;
4057287512Sdim}
4058287512Sdim
4059287512Sdim/*-- vec_all_numeric --------------------------------------------------------*/
4060287512Sdim
4061321369Sdim#if __ARCH__ >= 12
4062321369Sdimstatic inline __ATTRS_o_ai int
4063321369Sdimvec_all_numeric(vector float __a) {
4064321369Sdim  int __cc;
4065321369Sdim  __builtin_s390_vftcisb(__a, 15, &__cc);
4066321369Sdim  return __cc == 3;
4067321369Sdim}
4068321369Sdim#endif
4069321369Sdim
4070321369Sdimstatic inline __ATTRS_o_ai int
4071287512Sdimvec_all_numeric(vector double __a) {
4072287512Sdim  int __cc;
4073287512Sdim  __builtin_s390_vftcidb(__a, 15, &__cc);
4074287512Sdim  return __cc == 3;
4075287512Sdim}
4076287512Sdim
4077287512Sdim/*-- vec_any_eq -------------------------------------------------------------*/
4078287512Sdim
4079287512Sdimstatic inline __ATTRS_o_ai int
4080287512Sdimvec_any_eq(vector signed char __a, vector signed char __b) {
4081287512Sdim  int __cc;
4082287512Sdim  __builtin_s390_vceqbs(__a, __b, &__cc);
4083287512Sdim  return __cc <= 1;
4084287512Sdim}
4085287512Sdim
4086321369Sdim// This prototype is deprecated.
4087287512Sdimstatic inline __ATTRS_o_ai int
4088287512Sdimvec_any_eq(vector signed char __a, vector bool char __b) {
4089287512Sdim  int __cc;
4090287512Sdim  __builtin_s390_vceqbs(__a, (vector signed char)__b, &__cc);
4091287512Sdim  return __cc <= 1;
4092287512Sdim}
4093287512Sdim
4094321369Sdim// This prototype is deprecated.
4095287512Sdimstatic inline __ATTRS_o_ai int
4096287512Sdimvec_any_eq(vector bool char __a, vector signed char __b) {
4097287512Sdim  int __cc;
4098287512Sdim  __builtin_s390_vceqbs((vector signed char)__a, __b, &__cc);
4099287512Sdim  return __cc <= 1;
4100287512Sdim}
4101287512Sdim
4102287512Sdimstatic inline __ATTRS_o_ai int
4103287512Sdimvec_any_eq(vector unsigned char __a, vector unsigned char __b) {
4104287512Sdim  int __cc;
4105287512Sdim  __builtin_s390_vceqbs((vector signed char)__a,
4106287512Sdim                        (vector signed char)__b, &__cc);
4107287512Sdim  return __cc <= 1;
4108287512Sdim}
4109287512Sdim
4110321369Sdim// This prototype is deprecated.
4111287512Sdimstatic inline __ATTRS_o_ai int
4112287512Sdimvec_any_eq(vector unsigned char __a, vector bool char __b) {
4113287512Sdim  int __cc;
4114287512Sdim  __builtin_s390_vceqbs((vector signed char)__a,
4115287512Sdim                        (vector signed char)__b, &__cc);
4116287512Sdim  return __cc <= 1;
4117287512Sdim}
4118287512Sdim
4119321369Sdim// This prototype is deprecated.
4120287512Sdimstatic inline __ATTRS_o_ai int
4121287512Sdimvec_any_eq(vector bool char __a, vector unsigned char __b) {
4122287512Sdim  int __cc;
4123287512Sdim  __builtin_s390_vceqbs((vector signed char)__a,
4124287512Sdim                        (vector signed char)__b, &__cc);
4125287512Sdim  return __cc <= 1;
4126287512Sdim}
4127287512Sdim
4128287512Sdimstatic inline __ATTRS_o_ai int
4129287512Sdimvec_any_eq(vector bool char __a, vector bool char __b) {
4130287512Sdim  int __cc;
4131287512Sdim  __builtin_s390_vceqbs((vector signed char)__a,
4132287512Sdim                        (vector signed char)__b, &__cc);
4133287512Sdim  return __cc <= 1;
4134287512Sdim}
4135287512Sdim
4136287512Sdimstatic inline __ATTRS_o_ai int
4137287512Sdimvec_any_eq(vector signed short __a, vector signed short __b) {
4138287512Sdim  int __cc;
4139287512Sdim  __builtin_s390_vceqhs(__a, __b, &__cc);
4140287512Sdim  return __cc <= 1;
4141287512Sdim}
4142287512Sdim
4143321369Sdim// This prototype is deprecated.
4144287512Sdimstatic inline __ATTRS_o_ai int
4145287512Sdimvec_any_eq(vector signed short __a, vector bool short __b) {
4146287512Sdim  int __cc;
4147287512Sdim  __builtin_s390_vceqhs(__a, (vector signed short)__b, &__cc);
4148287512Sdim  return __cc <= 1;
4149287512Sdim}
4150287512Sdim
4151321369Sdim// This prototype is deprecated.
4152287512Sdimstatic inline __ATTRS_o_ai int
4153287512Sdimvec_any_eq(vector bool short __a, vector signed short __b) {
4154287512Sdim  int __cc;
4155287512Sdim  __builtin_s390_vceqhs((vector signed short)__a, __b, &__cc);
4156287512Sdim  return __cc <= 1;
4157287512Sdim}
4158287512Sdim
4159287512Sdimstatic inline __ATTRS_o_ai int
4160287512Sdimvec_any_eq(vector unsigned short __a, vector unsigned short __b) {
4161287512Sdim  int __cc;
4162287512Sdim  __builtin_s390_vceqhs((vector signed short)__a,
4163287512Sdim                        (vector signed short)__b, &__cc);
4164287512Sdim  return __cc <= 1;
4165287512Sdim}
4166287512Sdim
4167321369Sdim// This prototype is deprecated.
4168287512Sdimstatic inline __ATTRS_o_ai int
4169287512Sdimvec_any_eq(vector unsigned short __a, vector bool short __b) {
4170287512Sdim  int __cc;
4171287512Sdim  __builtin_s390_vceqhs((vector signed short)__a,
4172287512Sdim                        (vector signed short)__b, &__cc);
4173287512Sdim  return __cc <= 1;
4174287512Sdim}
4175287512Sdim
4176321369Sdim// This prototype is deprecated.
4177287512Sdimstatic inline __ATTRS_o_ai int
4178287512Sdimvec_any_eq(vector bool short __a, vector unsigned short __b) {
4179287512Sdim  int __cc;
4180287512Sdim  __builtin_s390_vceqhs((vector signed short)__a,
4181287512Sdim                        (vector signed short)__b, &__cc);
4182287512Sdim  return __cc <= 1;
4183287512Sdim}
4184287512Sdim
4185287512Sdimstatic inline __ATTRS_o_ai int
4186287512Sdimvec_any_eq(vector bool short __a, vector bool short __b) {
4187287512Sdim  int __cc;
4188287512Sdim  __builtin_s390_vceqhs((vector signed short)__a,
4189287512Sdim                        (vector signed short)__b, &__cc);
4190287512Sdim  return __cc <= 1;
4191287512Sdim}
4192287512Sdim
4193287512Sdimstatic inline __ATTRS_o_ai int
4194287512Sdimvec_any_eq(vector signed int __a, vector signed int __b) {
4195287512Sdim  int __cc;
4196287512Sdim  __builtin_s390_vceqfs(__a, __b, &__cc);
4197287512Sdim  return __cc <= 1;
4198287512Sdim}
4199287512Sdim
4200321369Sdim// This prototype is deprecated.
4201287512Sdimstatic inline __ATTRS_o_ai int
4202287512Sdimvec_any_eq(vector signed int __a, vector bool int __b) {
4203287512Sdim  int __cc;
4204287512Sdim  __builtin_s390_vceqfs(__a, (vector signed int)__b, &__cc);
4205287512Sdim  return __cc <= 1;
4206287512Sdim}
4207287512Sdim
4208321369Sdim// This prototype is deprecated.
4209287512Sdimstatic inline __ATTRS_o_ai int
4210287512Sdimvec_any_eq(vector bool int __a, vector signed int __b) {
4211287512Sdim  int __cc;
4212287512Sdim  __builtin_s390_vceqfs((vector signed int)__a, __b, &__cc);
4213287512Sdim  return __cc <= 1;
4214287512Sdim}
4215287512Sdim
4216287512Sdimstatic inline __ATTRS_o_ai int
4217287512Sdimvec_any_eq(vector unsigned int __a, vector unsigned int __b) {
4218287512Sdim  int __cc;
4219287512Sdim  __builtin_s390_vceqfs((vector signed int)__a,
4220287512Sdim                        (vector signed int)__b, &__cc);
4221287512Sdim  return __cc <= 1;
4222287512Sdim}
4223287512Sdim
4224321369Sdim// This prototype is deprecated.
4225287512Sdimstatic inline __ATTRS_o_ai int
4226287512Sdimvec_any_eq(vector unsigned int __a, vector bool int __b) {
4227287512Sdim  int __cc;
4228287512Sdim  __builtin_s390_vceqfs((vector signed int)__a,
4229287512Sdim                        (vector signed int)__b, &__cc);
4230287512Sdim  return __cc <= 1;
4231287512Sdim}
4232287512Sdim
4233321369Sdim// This prototype is deprecated.
4234287512Sdimstatic inline __ATTRS_o_ai int
4235287512Sdimvec_any_eq(vector bool int __a, vector unsigned int __b) {
4236287512Sdim  int __cc;
4237287512Sdim  __builtin_s390_vceqfs((vector signed int)__a,
4238287512Sdim                        (vector signed int)__b, &__cc);
4239287512Sdim  return __cc <= 1;
4240287512Sdim}
4241287512Sdim
4242287512Sdimstatic inline __ATTRS_o_ai int
4243287512Sdimvec_any_eq(vector bool int __a, vector bool int __b) {
4244287512Sdim  int __cc;
4245287512Sdim  __builtin_s390_vceqfs((vector signed int)__a,
4246287512Sdim                        (vector signed int)__b, &__cc);
4247287512Sdim  return __cc <= 1;
4248287512Sdim}
4249287512Sdim
4250287512Sdimstatic inline __ATTRS_o_ai int
4251287512Sdimvec_any_eq(vector signed long long __a, vector signed long long __b) {
4252287512Sdim  int __cc;
4253287512Sdim  __builtin_s390_vceqgs(__a, __b, &__cc);
4254287512Sdim  return __cc <= 1;
4255287512Sdim}
4256287512Sdim
4257321369Sdim// This prototype is deprecated.
4258287512Sdimstatic inline __ATTRS_o_ai int
4259287512Sdimvec_any_eq(vector signed long long __a, vector bool long long __b) {
4260287512Sdim  int __cc;
4261287512Sdim  __builtin_s390_vceqgs(__a, (vector signed long long)__b, &__cc);
4262287512Sdim  return __cc <= 1;
4263287512Sdim}
4264287512Sdim
4265321369Sdim// This prototype is deprecated.
4266287512Sdimstatic inline __ATTRS_o_ai int
4267287512Sdimvec_any_eq(vector bool long long __a, vector signed long long __b) {
4268287512Sdim  int __cc;
4269287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a, __b, &__cc);
4270287512Sdim  return __cc <= 1;
4271287512Sdim}
4272287512Sdim
4273287512Sdimstatic inline __ATTRS_o_ai int
4274287512Sdimvec_any_eq(vector unsigned long long __a, vector unsigned long long __b) {
4275287512Sdim  int __cc;
4276287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a,
4277287512Sdim                        (vector signed long long)__b, &__cc);
4278287512Sdim  return __cc <= 1;
4279287512Sdim}
4280287512Sdim
4281321369Sdim// This prototype is deprecated.
4282287512Sdimstatic inline __ATTRS_o_ai int
4283287512Sdimvec_any_eq(vector unsigned long long __a, vector bool long long __b) {
4284287512Sdim  int __cc;
4285287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a,
4286287512Sdim                        (vector signed long long)__b, &__cc);
4287287512Sdim  return __cc <= 1;
4288287512Sdim}
4289287512Sdim
4290321369Sdim// This prototype is deprecated.
4291287512Sdimstatic inline __ATTRS_o_ai int
4292287512Sdimvec_any_eq(vector bool long long __a, vector unsigned long long __b) {
4293287512Sdim  int __cc;
4294287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a,
4295287512Sdim                        (vector signed long long)__b, &__cc);
4296287512Sdim  return __cc <= 1;
4297287512Sdim}
4298287512Sdim
4299287512Sdimstatic inline __ATTRS_o_ai int
4300287512Sdimvec_any_eq(vector bool long long __a, vector bool long long __b) {
4301287512Sdim  int __cc;
4302287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a,
4303287512Sdim                        (vector signed long long)__b, &__cc);
4304287512Sdim  return __cc <= 1;
4305287512Sdim}
4306287512Sdim
4307321369Sdim#if __ARCH__ >= 12
4308287512Sdimstatic inline __ATTRS_o_ai int
4309321369Sdimvec_any_eq(vector float __a, vector float __b) {
4310321369Sdim  int __cc;
4311321369Sdim  __builtin_s390_vfcesbs(__a, __b, &__cc);
4312321369Sdim  return __cc <= 1;
4313321369Sdim}
4314321369Sdim#endif
4315321369Sdim
4316321369Sdimstatic inline __ATTRS_o_ai int
4317287512Sdimvec_any_eq(vector double __a, vector double __b) {
4318287512Sdim  int __cc;
4319287512Sdim  __builtin_s390_vfcedbs(__a, __b, &__cc);
4320287512Sdim  return __cc <= 1;
4321287512Sdim}
4322287512Sdim
4323287512Sdim/*-- vec_any_ne -------------------------------------------------------------*/
4324287512Sdim
4325287512Sdimstatic inline __ATTRS_o_ai int
4326287512Sdimvec_any_ne(vector signed char __a, vector signed char __b) {
4327287512Sdim  int __cc;
4328287512Sdim  __builtin_s390_vceqbs(__a, __b, &__cc);
4329287512Sdim  return __cc != 0;
4330287512Sdim}
4331287512Sdim
4332321369Sdim// This prototype is deprecated.
4333287512Sdimstatic inline __ATTRS_o_ai int
4334287512Sdimvec_any_ne(vector signed char __a, vector bool char __b) {
4335287512Sdim  int __cc;
4336287512Sdim  __builtin_s390_vceqbs(__a, (vector signed char)__b, &__cc);
4337287512Sdim  return __cc != 0;
4338287512Sdim}
4339287512Sdim
4340321369Sdim// This prototype is deprecated.
4341287512Sdimstatic inline __ATTRS_o_ai int
4342287512Sdimvec_any_ne(vector bool char __a, vector signed char __b) {
4343287512Sdim  int __cc;
4344287512Sdim  __builtin_s390_vceqbs((vector signed char)__a, __b, &__cc);
4345287512Sdim  return __cc != 0;
4346287512Sdim}
4347287512Sdim
4348287512Sdimstatic inline __ATTRS_o_ai int
4349287512Sdimvec_any_ne(vector unsigned char __a, vector unsigned char __b) {
4350287512Sdim  int __cc;
4351287512Sdim  __builtin_s390_vceqbs((vector signed char)__a,
4352287512Sdim                        (vector signed char)__b, &__cc);
4353287512Sdim  return __cc != 0;
4354287512Sdim}
4355287512Sdim
4356321369Sdim// This prototype is deprecated.
4357287512Sdimstatic inline __ATTRS_o_ai int
4358287512Sdimvec_any_ne(vector unsigned char __a, vector bool char __b) {
4359287512Sdim  int __cc;
4360287512Sdim  __builtin_s390_vceqbs((vector signed char)__a,
4361287512Sdim                        (vector signed char)__b, &__cc);
4362287512Sdim  return __cc != 0;
4363287512Sdim}
4364287512Sdim
4365321369Sdim// This prototype is deprecated.
4366287512Sdimstatic inline __ATTRS_o_ai int
4367287512Sdimvec_any_ne(vector bool char __a, vector unsigned char __b) {
4368287512Sdim  int __cc;
4369287512Sdim  __builtin_s390_vceqbs((vector signed char)__a,
4370287512Sdim                        (vector signed char)__b, &__cc);
4371287512Sdim  return __cc != 0;
4372287512Sdim}
4373287512Sdim
4374287512Sdimstatic inline __ATTRS_o_ai int
4375287512Sdimvec_any_ne(vector bool char __a, vector bool char __b) {
4376287512Sdim  int __cc;
4377287512Sdim  __builtin_s390_vceqbs((vector signed char)__a,
4378287512Sdim                        (vector signed char)__b, &__cc);
4379287512Sdim  return __cc != 0;
4380287512Sdim}
4381287512Sdim
4382287512Sdimstatic inline __ATTRS_o_ai int
4383287512Sdimvec_any_ne(vector signed short __a, vector signed short __b) {
4384287512Sdim  int __cc;
4385287512Sdim  __builtin_s390_vceqhs(__a, __b, &__cc);
4386287512Sdim  return __cc != 0;
4387287512Sdim}
4388287512Sdim
4389321369Sdim// This prototype is deprecated.
4390287512Sdimstatic inline __ATTRS_o_ai int
4391287512Sdimvec_any_ne(vector signed short __a, vector bool short __b) {
4392287512Sdim  int __cc;
4393287512Sdim  __builtin_s390_vceqhs(__a, (vector signed short)__b, &__cc);
4394287512Sdim  return __cc != 0;
4395287512Sdim}
4396287512Sdim
4397321369Sdim// This prototype is deprecated.
4398287512Sdimstatic inline __ATTRS_o_ai int
4399287512Sdimvec_any_ne(vector bool short __a, vector signed short __b) {
4400287512Sdim  int __cc;
4401287512Sdim  __builtin_s390_vceqhs((vector signed short)__a, __b, &__cc);
4402287512Sdim  return __cc != 0;
4403287512Sdim}
4404287512Sdim
4405287512Sdimstatic inline __ATTRS_o_ai int
4406287512Sdimvec_any_ne(vector unsigned short __a, vector unsigned short __b) {
4407287512Sdim  int __cc;
4408287512Sdim  __builtin_s390_vceqhs((vector signed short)__a,
4409287512Sdim                        (vector signed short)__b, &__cc);
4410287512Sdim  return __cc != 0;
4411287512Sdim}
4412287512Sdim
4413321369Sdim// This prototype is deprecated.
4414287512Sdimstatic inline __ATTRS_o_ai int
4415287512Sdimvec_any_ne(vector unsigned short __a, vector bool short __b) {
4416287512Sdim  int __cc;
4417287512Sdim  __builtin_s390_vceqhs((vector signed short)__a,
4418287512Sdim                        (vector signed short)__b, &__cc);
4419287512Sdim  return __cc != 0;
4420287512Sdim}
4421287512Sdim
4422321369Sdim// This prototype is deprecated.
4423287512Sdimstatic inline __ATTRS_o_ai int
4424287512Sdimvec_any_ne(vector bool short __a, vector unsigned short __b) {
4425287512Sdim  int __cc;
4426287512Sdim  __builtin_s390_vceqhs((vector signed short)__a,
4427287512Sdim                        (vector signed short)__b, &__cc);
4428287512Sdim  return __cc != 0;
4429287512Sdim}
4430287512Sdim
4431287512Sdimstatic inline __ATTRS_o_ai int
4432287512Sdimvec_any_ne(vector bool short __a, vector bool short __b) {
4433287512Sdim  int __cc;
4434287512Sdim  __builtin_s390_vceqhs((vector signed short)__a,
4435287512Sdim                        (vector signed short)__b, &__cc);
4436287512Sdim  return __cc != 0;
4437287512Sdim}
4438287512Sdim
4439287512Sdimstatic inline __ATTRS_o_ai int
4440287512Sdimvec_any_ne(vector signed int __a, vector signed int __b) {
4441287512Sdim  int __cc;
4442287512Sdim  __builtin_s390_vceqfs(__a, __b, &__cc);
4443287512Sdim  return __cc != 0;
4444287512Sdim}
4445287512Sdim
4446321369Sdim// This prototype is deprecated.
4447287512Sdimstatic inline __ATTRS_o_ai int
4448287512Sdimvec_any_ne(vector signed int __a, vector bool int __b) {
4449287512Sdim  int __cc;
4450287512Sdim  __builtin_s390_vceqfs(__a, (vector signed int)__b, &__cc);
4451287512Sdim  return __cc != 0;
4452287512Sdim}
4453287512Sdim
4454321369Sdim// This prototype is deprecated.
4455287512Sdimstatic inline __ATTRS_o_ai int
4456287512Sdimvec_any_ne(vector bool int __a, vector signed int __b) {
4457287512Sdim  int __cc;
4458287512Sdim  __builtin_s390_vceqfs((vector signed int)__a, __b, &__cc);
4459287512Sdim  return __cc != 0;
4460287512Sdim}
4461287512Sdim
4462287512Sdimstatic inline __ATTRS_o_ai int
4463287512Sdimvec_any_ne(vector unsigned int __a, vector unsigned int __b) {
4464287512Sdim  int __cc;
4465287512Sdim  __builtin_s390_vceqfs((vector signed int)__a,
4466287512Sdim                        (vector signed int)__b, &__cc);
4467287512Sdim  return __cc != 0;
4468287512Sdim}
4469287512Sdim
4470321369Sdim// This prototype is deprecated.
4471287512Sdimstatic inline __ATTRS_o_ai int
4472287512Sdimvec_any_ne(vector unsigned int __a, vector bool int __b) {
4473287512Sdim  int __cc;
4474287512Sdim  __builtin_s390_vceqfs((vector signed int)__a,
4475287512Sdim                        (vector signed int)__b, &__cc);
4476287512Sdim  return __cc != 0;
4477287512Sdim}
4478287512Sdim
4479321369Sdim// This prototype is deprecated.
4480287512Sdimstatic inline __ATTRS_o_ai int
4481287512Sdimvec_any_ne(vector bool int __a, vector unsigned int __b) {
4482287512Sdim  int __cc;
4483287512Sdim  __builtin_s390_vceqfs((vector signed int)__a,
4484287512Sdim                        (vector signed int)__b, &__cc);
4485287512Sdim  return __cc != 0;
4486287512Sdim}
4487287512Sdim
4488287512Sdimstatic inline __ATTRS_o_ai int
4489287512Sdimvec_any_ne(vector bool int __a, vector bool int __b) {
4490287512Sdim  int __cc;
4491287512Sdim  __builtin_s390_vceqfs((vector signed int)__a,
4492287512Sdim                        (vector signed int)__b, &__cc);
4493287512Sdim  return __cc != 0;
4494287512Sdim}
4495287512Sdim
4496287512Sdimstatic inline __ATTRS_o_ai int
4497287512Sdimvec_any_ne(vector signed long long __a, vector signed long long __b) {
4498287512Sdim  int __cc;
4499287512Sdim  __builtin_s390_vceqgs(__a, __b, &__cc);
4500287512Sdim  return __cc != 0;
4501287512Sdim}
4502287512Sdim
4503321369Sdim// This prototype is deprecated.
4504287512Sdimstatic inline __ATTRS_o_ai int
4505287512Sdimvec_any_ne(vector signed long long __a, vector bool long long __b) {
4506287512Sdim  int __cc;
4507287512Sdim  __builtin_s390_vceqgs(__a, (vector signed long long)__b, &__cc);
4508287512Sdim  return __cc != 0;
4509287512Sdim}
4510287512Sdim
4511321369Sdim// This prototype is deprecated.
4512287512Sdimstatic inline __ATTRS_o_ai int
4513287512Sdimvec_any_ne(vector bool long long __a, vector signed long long __b) {
4514287512Sdim  int __cc;
4515287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a, __b, &__cc);
4516287512Sdim  return __cc != 0;
4517287512Sdim}
4518287512Sdim
4519287512Sdimstatic inline __ATTRS_o_ai int
4520287512Sdimvec_any_ne(vector unsigned long long __a, vector unsigned long long __b) {
4521287512Sdim  int __cc;
4522287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a,
4523287512Sdim                        (vector signed long long)__b, &__cc);
4524287512Sdim  return __cc != 0;
4525287512Sdim}
4526287512Sdim
4527321369Sdim// This prototype is deprecated.
4528287512Sdimstatic inline __ATTRS_o_ai int
4529287512Sdimvec_any_ne(vector unsigned long long __a, vector bool long long __b) {
4530287512Sdim  int __cc;
4531287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a,
4532287512Sdim                        (vector signed long long)__b, &__cc);
4533287512Sdim  return __cc != 0;
4534287512Sdim}
4535287512Sdim
4536321369Sdim// This prototype is deprecated.
4537287512Sdimstatic inline __ATTRS_o_ai int
4538287512Sdimvec_any_ne(vector bool long long __a, vector unsigned long long __b) {
4539287512Sdim  int __cc;
4540287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a,
4541287512Sdim                        (vector signed long long)__b, &__cc);
4542287512Sdim  return __cc != 0;
4543287512Sdim}
4544287512Sdim
4545287512Sdimstatic inline __ATTRS_o_ai int
4546287512Sdimvec_any_ne(vector bool long long __a, vector bool long long __b) {
4547287512Sdim  int __cc;
4548287512Sdim  __builtin_s390_vceqgs((vector signed long long)__a,
4549287512Sdim                        (vector signed long long)__b, &__cc);
4550287512Sdim  return __cc != 0;
4551287512Sdim}
4552287512Sdim
4553321369Sdim#if __ARCH__ >= 12
4554287512Sdimstatic inline __ATTRS_o_ai int
4555321369Sdimvec_any_ne(vector float __a, vector float __b) {
4556321369Sdim  int __cc;
4557321369Sdim  __builtin_s390_vfcesbs(__a, __b, &__cc);
4558321369Sdim  return __cc != 0;
4559321369Sdim}
4560321369Sdim#endif
4561321369Sdim
4562321369Sdimstatic inline __ATTRS_o_ai int
4563287512Sdimvec_any_ne(vector double __a, vector double __b) {
4564287512Sdim  int __cc;
4565287512Sdim  __builtin_s390_vfcedbs(__a, __b, &__cc);
4566287512Sdim  return __cc != 0;
4567287512Sdim}
4568287512Sdim
4569287512Sdim/*-- vec_any_ge -------------------------------------------------------------*/
4570287512Sdim
4571287512Sdimstatic inline __ATTRS_o_ai int
4572287512Sdimvec_any_ge(vector signed char __a, vector signed char __b) {
4573287512Sdim  int __cc;
4574287512Sdim  __builtin_s390_vchbs(__b, __a, &__cc);
4575287512Sdim  return __cc != 0;
4576287512Sdim}
4577287512Sdim
4578321369Sdim// This prototype is deprecated.
4579287512Sdimstatic inline __ATTRS_o_ai int
4580287512Sdimvec_any_ge(vector signed char __a, vector bool char __b) {
4581287512Sdim  int __cc;
4582287512Sdim  __builtin_s390_vchbs((vector signed char)__b, __a, &__cc);
4583287512Sdim  return __cc != 0;
4584287512Sdim}
4585287512Sdim
4586321369Sdim// This prototype is deprecated.
4587287512Sdimstatic inline __ATTRS_o_ai int
4588287512Sdimvec_any_ge(vector bool char __a, vector signed char __b) {
4589287512Sdim  int __cc;
4590287512Sdim  __builtin_s390_vchbs(__b, (vector signed char)__a, &__cc);
4591287512Sdim  return __cc != 0;
4592287512Sdim}
4593287512Sdim
4594287512Sdimstatic inline __ATTRS_o_ai int
4595287512Sdimvec_any_ge(vector unsigned char __a, vector unsigned char __b) {
4596287512Sdim  int __cc;
4597287512Sdim  __builtin_s390_vchlbs(__b, __a, &__cc);
4598287512Sdim  return __cc != 0;
4599287512Sdim}
4600287512Sdim
4601321369Sdim// This prototype is deprecated.
4602287512Sdimstatic inline __ATTRS_o_ai int
4603287512Sdimvec_any_ge(vector unsigned char __a, vector bool char __b) {
4604287512Sdim  int __cc;
4605287512Sdim  __builtin_s390_vchlbs((vector unsigned char)__b, __a, &__cc);
4606287512Sdim  return __cc != 0;
4607287512Sdim}
4608287512Sdim
4609321369Sdim// This prototype is deprecated.
4610287512Sdimstatic inline __ATTRS_o_ai int
4611287512Sdimvec_any_ge(vector bool char __a, vector unsigned char __b) {
4612287512Sdim  int __cc;
4613287512Sdim  __builtin_s390_vchlbs(__b, (vector unsigned char)__a, &__cc);
4614287512Sdim  return __cc != 0;
4615287512Sdim}
4616287512Sdim
4617321369Sdim// This prototype is deprecated.
4618287512Sdimstatic inline __ATTRS_o_ai int
4619287512Sdimvec_any_ge(vector bool char __a, vector bool char __b) {
4620287512Sdim  int __cc;
4621287512Sdim  __builtin_s390_vchlbs((vector unsigned char)__b,
4622287512Sdim                        (vector unsigned char)__a, &__cc);
4623287512Sdim  return __cc != 0;
4624287512Sdim}
4625287512Sdim
4626287512Sdimstatic inline __ATTRS_o_ai int
4627287512Sdimvec_any_ge(vector signed short __a, vector signed short __b) {
4628287512Sdim  int __cc;
4629287512Sdim  __builtin_s390_vchhs(__b, __a, &__cc);
4630287512Sdim  return __cc != 0;
4631287512Sdim}
4632287512Sdim
4633321369Sdim// This prototype is deprecated.
4634287512Sdimstatic inline __ATTRS_o_ai int
4635287512Sdimvec_any_ge(vector signed short __a, vector bool short __b) {
4636287512Sdim  int __cc;
4637287512Sdim  __builtin_s390_vchhs((vector signed short)__b, __a, &__cc);
4638287512Sdim  return __cc != 0;
4639287512Sdim}
4640287512Sdim
4641321369Sdim// This prototype is deprecated.
4642287512Sdimstatic inline __ATTRS_o_ai int
4643287512Sdimvec_any_ge(vector bool short __a, vector signed short __b) {
4644287512Sdim  int __cc;
4645287512Sdim  __builtin_s390_vchhs(__b, (vector signed short)__a, &__cc);
4646287512Sdim  return __cc != 0;
4647287512Sdim}
4648287512Sdim
4649287512Sdimstatic inline __ATTRS_o_ai int
4650287512Sdimvec_any_ge(vector unsigned short __a, vector unsigned short __b) {
4651287512Sdim  int __cc;
4652287512Sdim  __builtin_s390_vchlhs(__b, __a, &__cc);
4653287512Sdim  return __cc != 0;
4654287512Sdim}
4655287512Sdim
4656321369Sdim// This prototype is deprecated.
4657287512Sdimstatic inline __ATTRS_o_ai int
4658287512Sdimvec_any_ge(vector unsigned short __a, vector bool short __b) {
4659287512Sdim  int __cc;
4660287512Sdim  __builtin_s390_vchlhs((vector unsigned short)__b, __a, &__cc);
4661287512Sdim  return __cc != 0;
4662287512Sdim}
4663287512Sdim
4664321369Sdim// This prototype is deprecated.
4665287512Sdimstatic inline __ATTRS_o_ai int
4666287512Sdimvec_any_ge(vector bool short __a, vector unsigned short __b) {
4667287512Sdim  int __cc;
4668287512Sdim  __builtin_s390_vchlhs(__b, (vector unsigned short)__a, &__cc);
4669287512Sdim  return __cc != 0;
4670287512Sdim}
4671287512Sdim
4672321369Sdim// This prototype is deprecated.
4673287512Sdimstatic inline __ATTRS_o_ai int
4674287512Sdimvec_any_ge(vector bool short __a, vector bool short __b) {
4675287512Sdim  int __cc;
4676287512Sdim  __builtin_s390_vchlhs((vector unsigned short)__b,
4677287512Sdim                        (vector unsigned short)__a, &__cc);
4678287512Sdim  return __cc != 0;
4679287512Sdim}
4680287512Sdim
4681287512Sdimstatic inline __ATTRS_o_ai int
4682287512Sdimvec_any_ge(vector signed int __a, vector signed int __b) {
4683287512Sdim  int __cc;
4684287512Sdim  __builtin_s390_vchfs(__b, __a, &__cc);
4685287512Sdim  return __cc != 0;
4686287512Sdim}
4687287512Sdim
4688321369Sdim// This prototype is deprecated.
4689287512Sdimstatic inline __ATTRS_o_ai int
4690287512Sdimvec_any_ge(vector signed int __a, vector bool int __b) {
4691287512Sdim  int __cc;
4692287512Sdim  __builtin_s390_vchfs((vector signed int)__b, __a, &__cc);
4693287512Sdim  return __cc != 0;
4694287512Sdim}
4695287512Sdim
4696321369Sdim// This prototype is deprecated.
4697287512Sdimstatic inline __ATTRS_o_ai int
4698287512Sdimvec_any_ge(vector bool int __a, vector signed int __b) {
4699287512Sdim  int __cc;
4700287512Sdim  __builtin_s390_vchfs(__b, (vector signed int)__a, &__cc);
4701287512Sdim  return __cc != 0;
4702287512Sdim}
4703287512Sdim
4704287512Sdimstatic inline __ATTRS_o_ai int
4705287512Sdimvec_any_ge(vector unsigned int __a, vector unsigned int __b) {
4706287512Sdim  int __cc;
4707287512Sdim  __builtin_s390_vchlfs(__b, __a, &__cc);
4708287512Sdim  return __cc != 0;
4709287512Sdim}
4710287512Sdim
4711321369Sdim// This prototype is deprecated.
4712287512Sdimstatic inline __ATTRS_o_ai int
4713287512Sdimvec_any_ge(vector unsigned int __a, vector bool int __b) {
4714287512Sdim  int __cc;
4715287512Sdim  __builtin_s390_vchlfs((vector unsigned int)__b, __a, &__cc);
4716287512Sdim  return __cc != 0;
4717287512Sdim}
4718287512Sdim
4719321369Sdim// This prototype is deprecated.
4720287512Sdimstatic inline __ATTRS_o_ai int
4721287512Sdimvec_any_ge(vector bool int __a, vector unsigned int __b) {
4722287512Sdim  int __cc;
4723287512Sdim  __builtin_s390_vchlfs(__b, (vector unsigned int)__a, &__cc);
4724287512Sdim  return __cc != 0;
4725287512Sdim}
4726287512Sdim
4727321369Sdim// This prototype is deprecated.
4728287512Sdimstatic inline __ATTRS_o_ai int
4729287512Sdimvec_any_ge(vector bool int __a, vector bool int __b) {
4730287512Sdim  int __cc;
4731287512Sdim  __builtin_s390_vchlfs((vector unsigned int)__b,
4732287512Sdim                        (vector unsigned int)__a, &__cc);
4733287512Sdim  return __cc != 0;
4734287512Sdim}
4735287512Sdim
4736287512Sdimstatic inline __ATTRS_o_ai int
4737287512Sdimvec_any_ge(vector signed long long __a, vector signed long long __b) {
4738287512Sdim  int __cc;
4739287512Sdim  __builtin_s390_vchgs(__b, __a, &__cc);
4740287512Sdim  return __cc != 0;
4741287512Sdim}
4742287512Sdim
4743321369Sdim// This prototype is deprecated.
4744287512Sdimstatic inline __ATTRS_o_ai int
4745287512Sdimvec_any_ge(vector signed long long __a, vector bool long long __b) {
4746287512Sdim  int __cc;
4747287512Sdim  __builtin_s390_vchgs((vector signed long long)__b, __a, &__cc);
4748287512Sdim  return __cc != 0;
4749287512Sdim}
4750287512Sdim
4751321369Sdim// This prototype is deprecated.
4752287512Sdimstatic inline __ATTRS_o_ai int
4753287512Sdimvec_any_ge(vector bool long long __a, vector signed long long __b) {
4754287512Sdim  int __cc;
4755287512Sdim  __builtin_s390_vchgs(__b, (vector signed long long)__a, &__cc);
4756287512Sdim  return __cc != 0;
4757287512Sdim}
4758287512Sdim
4759287512Sdimstatic inline __ATTRS_o_ai int
4760287512Sdimvec_any_ge(vector unsigned long long __a, vector unsigned long long __b) {
4761287512Sdim  int __cc;
4762287512Sdim  __builtin_s390_vchlgs(__b, __a, &__cc);
4763287512Sdim  return __cc != 0;
4764287512Sdim}
4765287512Sdim
4766321369Sdim// This prototype is deprecated.
4767287512Sdimstatic inline __ATTRS_o_ai int
4768287512Sdimvec_any_ge(vector unsigned long long __a, vector bool long long __b) {
4769287512Sdim  int __cc;
4770287512Sdim  __builtin_s390_vchlgs((vector unsigned long long)__b, __a, &__cc);
4771287512Sdim  return __cc != 0;
4772287512Sdim}
4773287512Sdim
4774321369Sdim// This prototype is deprecated.
4775287512Sdimstatic inline __ATTRS_o_ai int
4776287512Sdimvec_any_ge(vector bool long long __a, vector unsigned long long __b) {
4777287512Sdim  int __cc;
4778287512Sdim  __builtin_s390_vchlgs(__b, (vector unsigned long long)__a, &__cc);
4779287512Sdim  return __cc != 0;
4780287512Sdim}
4781287512Sdim
4782321369Sdim// This prototype is deprecated.
4783287512Sdimstatic inline __ATTRS_o_ai int
4784287512Sdimvec_any_ge(vector bool long long __a, vector bool long long __b) {
4785287512Sdim  int __cc;
4786287512Sdim  __builtin_s390_vchlgs((vector unsigned long long)__b,
4787287512Sdim                        (vector unsigned long long)__a, &__cc);
4788287512Sdim  return __cc != 0;
4789287512Sdim}
4790287512Sdim
4791321369Sdim#if __ARCH__ >= 12
4792287512Sdimstatic inline __ATTRS_o_ai int
4793321369Sdimvec_any_ge(vector float __a, vector float __b) {
4794321369Sdim  int __cc;
4795321369Sdim  __builtin_s390_vfchesbs(__a, __b, &__cc);
4796321369Sdim  return __cc <= 1;
4797321369Sdim}
4798321369Sdim#endif
4799321369Sdim
4800321369Sdimstatic inline __ATTRS_o_ai int
4801287512Sdimvec_any_ge(vector double __a, vector double __b) {
4802287512Sdim  int __cc;
4803287512Sdim  __builtin_s390_vfchedbs(__a, __b, &__cc);
4804287512Sdim  return __cc <= 1;
4805287512Sdim}
4806287512Sdim
4807287512Sdim/*-- vec_any_gt -------------------------------------------------------------*/
4808287512Sdim
4809287512Sdimstatic inline __ATTRS_o_ai int
4810287512Sdimvec_any_gt(vector signed char __a, vector signed char __b) {
4811287512Sdim  int __cc;
4812287512Sdim  __builtin_s390_vchbs(__a, __b, &__cc);
4813287512Sdim  return __cc <= 1;
4814287512Sdim}
4815287512Sdim
4816321369Sdim// This prototype is deprecated.
4817287512Sdimstatic inline __ATTRS_o_ai int
4818287512Sdimvec_any_gt(vector signed char __a, vector bool char __b) {
4819287512Sdim  int __cc;
4820287512Sdim  __builtin_s390_vchbs(__a, (vector signed char)__b, &__cc);
4821287512Sdim  return __cc <= 1;
4822287512Sdim}
4823287512Sdim
4824321369Sdim// This prototype is deprecated.
4825287512Sdimstatic inline __ATTRS_o_ai int
4826287512Sdimvec_any_gt(vector bool char __a, vector signed char __b) {
4827287512Sdim  int __cc;
4828287512Sdim  __builtin_s390_vchbs((vector signed char)__a, __b, &__cc);
4829287512Sdim  return __cc <= 1;
4830287512Sdim}
4831287512Sdim
4832287512Sdimstatic inline __ATTRS_o_ai int
4833287512Sdimvec_any_gt(vector unsigned char __a, vector unsigned char __b) {
4834287512Sdim  int __cc;
4835287512Sdim  __builtin_s390_vchlbs(__a, __b, &__cc);
4836287512Sdim  return __cc <= 1;
4837287512Sdim}
4838287512Sdim
4839321369Sdim// This prototype is deprecated.
4840287512Sdimstatic inline __ATTRS_o_ai int
4841287512Sdimvec_any_gt(vector unsigned char __a, vector bool char __b) {
4842287512Sdim  int __cc;
4843287512Sdim  __builtin_s390_vchlbs(__a, (vector unsigned char)__b, &__cc);
4844287512Sdim  return __cc <= 1;
4845287512Sdim}
4846287512Sdim
4847321369Sdim// This prototype is deprecated.
4848287512Sdimstatic inline __ATTRS_o_ai int
4849287512Sdimvec_any_gt(vector bool char __a, vector unsigned char __b) {
4850287512Sdim  int __cc;
4851287512Sdim  __builtin_s390_vchlbs((vector unsigned char)__a, __b, &__cc);
4852287512Sdim  return __cc <= 1;
4853287512Sdim}
4854287512Sdim
4855321369Sdim// This prototype is deprecated.
4856287512Sdimstatic inline __ATTRS_o_ai int
4857287512Sdimvec_any_gt(vector bool char __a, vector bool char __b) {
4858287512Sdim  int __cc;
4859287512Sdim  __builtin_s390_vchlbs((vector unsigned char)__a,
4860287512Sdim                        (vector unsigned char)__b, &__cc);
4861287512Sdim  return __cc <= 1;
4862287512Sdim}
4863287512Sdim
4864287512Sdimstatic inline __ATTRS_o_ai int
4865287512Sdimvec_any_gt(vector signed short __a, vector signed short __b) {
4866287512Sdim  int __cc;
4867287512Sdim  __builtin_s390_vchhs(__a, __b, &__cc);
4868287512Sdim  return __cc <= 1;
4869287512Sdim}
4870287512Sdim
4871321369Sdim// This prototype is deprecated.
4872287512Sdimstatic inline __ATTRS_o_ai int
4873287512Sdimvec_any_gt(vector signed short __a, vector bool short __b) {
4874287512Sdim  int __cc;
4875287512Sdim  __builtin_s390_vchhs(__a, (vector signed short)__b, &__cc);
4876287512Sdim  return __cc <= 1;
4877287512Sdim}
4878287512Sdim
4879321369Sdim// This prototype is deprecated.
4880287512Sdimstatic inline __ATTRS_o_ai int
4881287512Sdimvec_any_gt(vector bool short __a, vector signed short __b) {
4882287512Sdim  int __cc;
4883287512Sdim  __builtin_s390_vchhs((vector signed short)__a, __b, &__cc);
4884287512Sdim  return __cc <= 1;
4885287512Sdim}
4886287512Sdim
4887287512Sdimstatic inline __ATTRS_o_ai int
4888287512Sdimvec_any_gt(vector unsigned short __a, vector unsigned short __b) {
4889287512Sdim  int __cc;
4890287512Sdim  __builtin_s390_vchlhs(__a, __b, &__cc);
4891287512Sdim  return __cc <= 1;
4892287512Sdim}
4893287512Sdim
4894321369Sdim// This prototype is deprecated.
4895287512Sdimstatic inline __ATTRS_o_ai int
4896287512Sdimvec_any_gt(vector unsigned short __a, vector bool short __b) {
4897287512Sdim  int __cc;
4898287512Sdim  __builtin_s390_vchlhs(__a, (vector unsigned short)__b, &__cc);
4899287512Sdim  return __cc <= 1;
4900287512Sdim}
4901287512Sdim
4902321369Sdim// This prototype is deprecated.
4903287512Sdimstatic inline __ATTRS_o_ai int
4904287512Sdimvec_any_gt(vector bool short __a, vector unsigned short __b) {
4905287512Sdim  int __cc;
4906287512Sdim  __builtin_s390_vchlhs((vector unsigned short)__a, __b, &__cc);
4907287512Sdim  return __cc <= 1;
4908287512Sdim}
4909287512Sdim
4910321369Sdim// This prototype is deprecated.
4911287512Sdimstatic inline __ATTRS_o_ai int
4912287512Sdimvec_any_gt(vector bool short __a, vector bool short __b) {
4913287512Sdim  int __cc;
4914287512Sdim  __builtin_s390_vchlhs((vector unsigned short)__a,
4915287512Sdim                        (vector unsigned short)__b, &__cc);
4916287512Sdim  return __cc <= 1;
4917287512Sdim}
4918287512Sdim
4919287512Sdimstatic inline __ATTRS_o_ai int
4920287512Sdimvec_any_gt(vector signed int __a, vector signed int __b) {
4921287512Sdim  int __cc;
4922287512Sdim  __builtin_s390_vchfs(__a, __b, &__cc);
4923287512Sdim  return __cc <= 1;
4924287512Sdim}
4925287512Sdim
4926321369Sdim// This prototype is deprecated.
4927287512Sdimstatic inline __ATTRS_o_ai int
4928287512Sdimvec_any_gt(vector signed int __a, vector bool int __b) {
4929287512Sdim  int __cc;
4930287512Sdim  __builtin_s390_vchfs(__a, (vector signed int)__b, &__cc);
4931287512Sdim  return __cc <= 1;
4932287512Sdim}
4933287512Sdim
4934321369Sdim// This prototype is deprecated.
4935287512Sdimstatic inline __ATTRS_o_ai int
4936287512Sdimvec_any_gt(vector bool int __a, vector signed int __b) {
4937287512Sdim  int __cc;
4938287512Sdim  __builtin_s390_vchfs((vector signed int)__a, __b, &__cc);
4939287512Sdim  return __cc <= 1;
4940287512Sdim}
4941287512Sdim
4942287512Sdimstatic inline __ATTRS_o_ai int
4943287512Sdimvec_any_gt(vector unsigned int __a, vector unsigned int __b) {
4944287512Sdim  int __cc;
4945287512Sdim  __builtin_s390_vchlfs(__a, __b, &__cc);
4946287512Sdim  return __cc <= 1;
4947287512Sdim}
4948287512Sdim
4949321369Sdim// This prototype is deprecated.
4950287512Sdimstatic inline __ATTRS_o_ai int
4951287512Sdimvec_any_gt(vector unsigned int __a, vector bool int __b) {
4952287512Sdim  int __cc;
4953287512Sdim  __builtin_s390_vchlfs(__a, (vector unsigned int)__b, &__cc);
4954287512Sdim  return __cc <= 1;
4955287512Sdim}
4956287512Sdim
4957321369Sdim// This prototype is deprecated.
4958287512Sdimstatic inline __ATTRS_o_ai int
4959287512Sdimvec_any_gt(vector bool int __a, vector unsigned int __b) {
4960287512Sdim  int __cc;
4961287512Sdim  __builtin_s390_vchlfs((vector unsigned int)__a, __b, &__cc);
4962287512Sdim  return __cc <= 1;
4963287512Sdim}
4964287512Sdim
4965321369Sdim// This prototype is deprecated.
4966287512Sdimstatic inline __ATTRS_o_ai int
4967287512Sdimvec_any_gt(vector bool int __a, vector bool int __b) {
4968287512Sdim  int __cc;
4969287512Sdim  __builtin_s390_vchlfs((vector unsigned int)__a,
4970287512Sdim                        (vector unsigned int)__b, &__cc);
4971287512Sdim  return __cc <= 1;
4972287512Sdim}
4973287512Sdim
4974287512Sdimstatic inline __ATTRS_o_ai int
4975287512Sdimvec_any_gt(vector signed long long __a, vector signed long long __b) {
4976287512Sdim  int __cc;
4977287512Sdim  __builtin_s390_vchgs(__a, __b, &__cc);
4978287512Sdim  return __cc <= 1;
4979287512Sdim}
4980287512Sdim
4981321369Sdim// This prototype is deprecated.
4982287512Sdimstatic inline __ATTRS_o_ai int
4983287512Sdimvec_any_gt(vector signed long long __a, vector bool long long __b) {
4984287512Sdim  int __cc;
4985287512Sdim  __builtin_s390_vchgs(__a, (vector signed long long)__b, &__cc);
4986287512Sdim  return __cc <= 1;
4987287512Sdim}
4988287512Sdim
4989321369Sdim// This prototype is deprecated.
4990287512Sdimstatic inline __ATTRS_o_ai int
4991287512Sdimvec_any_gt(vector bool long long __a, vector signed long long __b) {
4992287512Sdim  int __cc;
4993287512Sdim  __builtin_s390_vchgs((vector signed long long)__a, __b, &__cc);
4994287512Sdim  return __cc <= 1;
4995287512Sdim}
4996287512Sdim
4997287512Sdimstatic inline __ATTRS_o_ai int
4998287512Sdimvec_any_gt(vector unsigned long long __a, vector unsigned long long __b) {
4999287512Sdim  int __cc;
5000287512Sdim  __builtin_s390_vchlgs(__a, __b, &__cc);
5001287512Sdim  return __cc <= 1;
5002287512Sdim}
5003287512Sdim
5004321369Sdim// This prototype is deprecated.
5005287512Sdimstatic inline __ATTRS_o_ai int
5006287512Sdimvec_any_gt(vector unsigned long long __a, vector bool long long __b) {
5007287512Sdim  int __cc;
5008287512Sdim  __builtin_s390_vchlgs(__a, (vector unsigned long long)__b, &__cc);
5009287512Sdim  return __cc <= 1;
5010287512Sdim}
5011287512Sdim
5012321369Sdim// This prototype is deprecated.
5013287512Sdimstatic inline __ATTRS_o_ai int
5014287512Sdimvec_any_gt(vector bool long long __a, vector unsigned long long __b) {
5015287512Sdim  int __cc;
5016287512Sdim  __builtin_s390_vchlgs((vector unsigned long long)__a, __b, &__cc);
5017287512Sdim  return __cc <= 1;
5018287512Sdim}
5019287512Sdim
5020321369Sdim// This prototype is deprecated.
5021287512Sdimstatic inline __ATTRS_o_ai int
5022287512Sdimvec_any_gt(vector bool long long __a, vector bool long long __b) {
5023287512Sdim  int __cc;
5024287512Sdim  __builtin_s390_vchlgs((vector unsigned long long)__a,
5025287512Sdim                        (vector unsigned long long)__b, &__cc);
5026287512Sdim  return __cc <= 1;
5027287512Sdim}
5028287512Sdim
5029321369Sdim#if __ARCH__ >= 12
5030287512Sdimstatic inline __ATTRS_o_ai int
5031321369Sdimvec_any_gt(vector float __a, vector float __b) {
5032321369Sdim  int __cc;
5033321369Sdim  __builtin_s390_vfchsbs(__a, __b, &__cc);
5034321369Sdim  return __cc <= 1;
5035321369Sdim}
5036321369Sdim#endif
5037321369Sdim
5038321369Sdimstatic inline __ATTRS_o_ai int
5039287512Sdimvec_any_gt(vector double __a, vector double __b) {
5040287512Sdim  int __cc;
5041287512Sdim  __builtin_s390_vfchdbs(__a, __b, &__cc);
5042287512Sdim  return __cc <= 1;
5043287512Sdim}
5044287512Sdim
5045287512Sdim/*-- vec_any_le -------------------------------------------------------------*/
5046287512Sdim
5047287512Sdimstatic inline __ATTRS_o_ai int
5048287512Sdimvec_any_le(vector signed char __a, vector signed char __b) {
5049287512Sdim  int __cc;
5050287512Sdim  __builtin_s390_vchbs(__a, __b, &__cc);
5051287512Sdim  return __cc != 0;
5052287512Sdim}
5053287512Sdim
5054321369Sdim// This prototype is deprecated.
5055287512Sdimstatic inline __ATTRS_o_ai int
5056287512Sdimvec_any_le(vector signed char __a, vector bool char __b) {
5057287512Sdim  int __cc;
5058287512Sdim  __builtin_s390_vchbs(__a, (vector signed char)__b, &__cc);
5059287512Sdim  return __cc != 0;
5060287512Sdim}
5061287512Sdim
5062321369Sdim// This prototype is deprecated.
5063287512Sdimstatic inline __ATTRS_o_ai int
5064287512Sdimvec_any_le(vector bool char __a, vector signed char __b) {
5065287512Sdim  int __cc;
5066287512Sdim  __builtin_s390_vchbs((vector signed char)__a, __b, &__cc);
5067287512Sdim  return __cc != 0;
5068287512Sdim}
5069287512Sdim
5070287512Sdimstatic inline __ATTRS_o_ai int
5071287512Sdimvec_any_le(vector unsigned char __a, vector unsigned char __b) {
5072287512Sdim  int __cc;
5073287512Sdim  __builtin_s390_vchlbs(__a, __b, &__cc);
5074287512Sdim  return __cc != 0;
5075287512Sdim}
5076287512Sdim
5077321369Sdim// This prototype is deprecated.
5078287512Sdimstatic inline __ATTRS_o_ai int
5079287512Sdimvec_any_le(vector unsigned char __a, vector bool char __b) {
5080287512Sdim  int __cc;
5081287512Sdim  __builtin_s390_vchlbs(__a, (vector unsigned char)__b, &__cc);
5082287512Sdim  return __cc != 0;
5083287512Sdim}
5084287512Sdim
5085321369Sdim// This prototype is deprecated.
5086287512Sdimstatic inline __ATTRS_o_ai int
5087287512Sdimvec_any_le(vector bool char __a, vector unsigned char __b) {
5088287512Sdim  int __cc;
5089287512Sdim  __builtin_s390_vchlbs((vector unsigned char)__a, __b, &__cc);
5090287512Sdim  return __cc != 0;
5091287512Sdim}
5092287512Sdim
5093321369Sdim// This prototype is deprecated.
5094287512Sdimstatic inline __ATTRS_o_ai int
5095287512Sdimvec_any_le(vector bool char __a, vector bool char __b) {
5096287512Sdim  int __cc;
5097287512Sdim  __builtin_s390_vchlbs((vector unsigned char)__a,
5098287512Sdim                        (vector unsigned char)__b, &__cc);
5099287512Sdim  return __cc != 0;
5100287512Sdim}
5101287512Sdim
5102287512Sdimstatic inline __ATTRS_o_ai int
5103287512Sdimvec_any_le(vector signed short __a, vector signed short __b) {
5104287512Sdim  int __cc;
5105287512Sdim  __builtin_s390_vchhs(__a, __b, &__cc);
5106287512Sdim  return __cc != 0;
5107287512Sdim}
5108287512Sdim
5109321369Sdim// This prototype is deprecated.
5110287512Sdimstatic inline __ATTRS_o_ai int
5111287512Sdimvec_any_le(vector signed short __a, vector bool short __b) {
5112287512Sdim  int __cc;
5113287512Sdim  __builtin_s390_vchhs(__a, (vector signed short)__b, &__cc);
5114287512Sdim  return __cc != 0;
5115287512Sdim}
5116287512Sdim
5117321369Sdim// This prototype is deprecated.
5118287512Sdimstatic inline __ATTRS_o_ai int
5119287512Sdimvec_any_le(vector bool short __a, vector signed short __b) {
5120287512Sdim  int __cc;
5121287512Sdim  __builtin_s390_vchhs((vector signed short)__a, __b, &__cc);
5122287512Sdim  return __cc != 0;
5123287512Sdim}
5124287512Sdim
5125287512Sdimstatic inline __ATTRS_o_ai int
5126287512Sdimvec_any_le(vector unsigned short __a, vector unsigned short __b) {
5127287512Sdim  int __cc;
5128287512Sdim  __builtin_s390_vchlhs(__a, __b, &__cc);
5129287512Sdim  return __cc != 0;
5130287512Sdim}
5131287512Sdim
5132321369Sdim// This prototype is deprecated.
5133287512Sdimstatic inline __ATTRS_o_ai int
5134287512Sdimvec_any_le(vector unsigned short __a, vector bool short __b) {
5135287512Sdim  int __cc;
5136287512Sdim  __builtin_s390_vchlhs(__a, (vector unsigned short)__b, &__cc);
5137287512Sdim  return __cc != 0;
5138287512Sdim}
5139287512Sdim
5140321369Sdim// This prototype is deprecated.
5141287512Sdimstatic inline __ATTRS_o_ai int
5142287512Sdimvec_any_le(vector bool short __a, vector unsigned short __b) {
5143287512Sdim  int __cc;
5144287512Sdim  __builtin_s390_vchlhs((vector unsigned short)__a, __b, &__cc);
5145287512Sdim  return __cc != 0;
5146287512Sdim}
5147287512Sdim
5148321369Sdim// This prototype is deprecated.
5149287512Sdimstatic inline __ATTRS_o_ai int
5150287512Sdimvec_any_le(vector bool short __a, vector bool short __b) {
5151287512Sdim  int __cc;
5152287512Sdim  __builtin_s390_vchlhs((vector unsigned short)__a,
5153287512Sdim                        (vector unsigned short)__b, &__cc);
5154287512Sdim  return __cc != 0;
5155287512Sdim}
5156287512Sdim
5157287512Sdimstatic inline __ATTRS_o_ai int
5158287512Sdimvec_any_le(vector signed int __a, vector signed int __b) {
5159287512Sdim  int __cc;
5160287512Sdim  __builtin_s390_vchfs(__a, __b, &__cc);
5161287512Sdim  return __cc != 0;
5162287512Sdim}
5163287512Sdim
5164321369Sdim// This prototype is deprecated.
5165287512Sdimstatic inline __ATTRS_o_ai int
5166287512Sdimvec_any_le(vector signed int __a, vector bool int __b) {
5167287512Sdim  int __cc;
5168287512Sdim  __builtin_s390_vchfs(__a, (vector signed int)__b, &__cc);
5169287512Sdim  return __cc != 0;
5170287512Sdim}
5171287512Sdim
5172321369Sdim// This prototype is deprecated.
5173287512Sdimstatic inline __ATTRS_o_ai int
5174287512Sdimvec_any_le(vector bool int __a, vector signed int __b) {
5175287512Sdim  int __cc;
5176287512Sdim  __builtin_s390_vchfs((vector signed int)__a, __b, &__cc);
5177287512Sdim  return __cc != 0;
5178287512Sdim}
5179287512Sdim
5180287512Sdimstatic inline __ATTRS_o_ai int
5181287512Sdimvec_any_le(vector unsigned int __a, vector unsigned int __b) {
5182287512Sdim  int __cc;
5183287512Sdim  __builtin_s390_vchlfs(__a, __b, &__cc);
5184287512Sdim  return __cc != 0;
5185287512Sdim}
5186287512Sdim
5187321369Sdim// This prototype is deprecated.
5188287512Sdimstatic inline __ATTRS_o_ai int
5189287512Sdimvec_any_le(vector unsigned int __a, vector bool int __b) {
5190287512Sdim  int __cc;
5191287512Sdim  __builtin_s390_vchlfs(__a, (vector unsigned int)__b, &__cc);
5192287512Sdim  return __cc != 0;
5193287512Sdim}
5194287512Sdim
5195321369Sdim// This prototype is deprecated.
5196287512Sdimstatic inline __ATTRS_o_ai int
5197287512Sdimvec_any_le(vector bool int __a, vector unsigned int __b) {
5198287512Sdim  int __cc;
5199287512Sdim  __builtin_s390_vchlfs((vector unsigned int)__a, __b, &__cc);
5200287512Sdim  return __cc != 0;
5201287512Sdim}
5202287512Sdim
5203321369Sdim// This prototype is deprecated.
5204287512Sdimstatic inline __ATTRS_o_ai int
5205287512Sdimvec_any_le(vector bool int __a, vector bool int __b) {
5206287512Sdim  int __cc;
5207287512Sdim  __builtin_s390_vchlfs((vector unsigned int)__a,
5208287512Sdim                        (vector unsigned int)__b, &__cc);
5209287512Sdim  return __cc != 0;
5210287512Sdim}
5211287512Sdim
5212287512Sdimstatic inline __ATTRS_o_ai int
5213287512Sdimvec_any_le(vector signed long long __a, vector signed long long __b) {
5214287512Sdim  int __cc;
5215287512Sdim  __builtin_s390_vchgs(__a, __b, &__cc);
5216287512Sdim  return __cc != 0;
5217287512Sdim}
5218287512Sdim
5219321369Sdim// This prototype is deprecated.
5220287512Sdimstatic inline __ATTRS_o_ai int
5221287512Sdimvec_any_le(vector signed long long __a, vector bool long long __b) {
5222287512Sdim  int __cc;
5223287512Sdim  __builtin_s390_vchgs(__a, (vector signed long long)__b, &__cc);
5224287512Sdim  return __cc != 0;
5225287512Sdim}
5226287512Sdim
5227321369Sdim// This prototype is deprecated.
5228287512Sdimstatic inline __ATTRS_o_ai int
5229287512Sdimvec_any_le(vector bool long long __a, vector signed long long __b) {
5230287512Sdim  int __cc;
5231287512Sdim  __builtin_s390_vchgs((vector signed long long)__a, __b, &__cc);
5232287512Sdim  return __cc != 0;
5233287512Sdim}
5234287512Sdim
5235287512Sdimstatic inline __ATTRS_o_ai int
5236287512Sdimvec_any_le(vector unsigned long long __a, vector unsigned long long __b) {
5237287512Sdim  int __cc;
5238287512Sdim  __builtin_s390_vchlgs(__a, __b, &__cc);
5239287512Sdim  return __cc != 0;
5240287512Sdim}
5241287512Sdim
5242321369Sdim// This prototype is deprecated.
5243287512Sdimstatic inline __ATTRS_o_ai int
5244287512Sdimvec_any_le(vector unsigned long long __a, vector bool long long __b) {
5245287512Sdim  int __cc;
5246287512Sdim  __builtin_s390_vchlgs(__a, (vector unsigned long long)__b, &__cc);
5247287512Sdim  return __cc != 0;
5248287512Sdim}
5249287512Sdim
5250321369Sdim// This prototype is deprecated.
5251287512Sdimstatic inline __ATTRS_o_ai int
5252287512Sdimvec_any_le(vector bool long long __a, vector unsigned long long __b) {
5253287512Sdim  int __cc;
5254287512Sdim  __builtin_s390_vchlgs((vector unsigned long long)__a, __b, &__cc);
5255287512Sdim  return __cc != 0;
5256287512Sdim}
5257287512Sdim
5258321369Sdim// This prototype is deprecated.
5259287512Sdimstatic inline __ATTRS_o_ai int
5260287512Sdimvec_any_le(vector bool long long __a, vector bool long long __b) {
5261287512Sdim  int __cc;
5262287512Sdim  __builtin_s390_vchlgs((vector unsigned long long)__a,
5263287512Sdim                        (vector unsigned long long)__b, &__cc);
5264287512Sdim  return __cc != 0;
5265287512Sdim}
5266287512Sdim
5267321369Sdim#if __ARCH__ >= 12
5268287512Sdimstatic inline __ATTRS_o_ai int
5269321369Sdimvec_any_le(vector float __a, vector float __b) {
5270321369Sdim  int __cc;
5271321369Sdim  __builtin_s390_vfchesbs(__b, __a, &__cc);
5272321369Sdim  return __cc <= 1;
5273321369Sdim}
5274321369Sdim#endif
5275321369Sdim
5276321369Sdimstatic inline __ATTRS_o_ai int
5277287512Sdimvec_any_le(vector double __a, vector double __b) {
5278287512Sdim  int __cc;
5279287512Sdim  __builtin_s390_vfchedbs(__b, __a, &__cc);
5280287512Sdim  return __cc <= 1;
5281287512Sdim}
5282287512Sdim
5283287512Sdim/*-- vec_any_lt -------------------------------------------------------------*/
5284287512Sdim
5285287512Sdimstatic inline __ATTRS_o_ai int
5286287512Sdimvec_any_lt(vector signed char __a, vector signed char __b) {
5287287512Sdim  int __cc;
5288287512Sdim  __builtin_s390_vchbs(__b, __a, &__cc);
5289287512Sdim  return __cc <= 1;
5290287512Sdim}
5291287512Sdim
5292321369Sdim// This prototype is deprecated.
5293287512Sdimstatic inline __ATTRS_o_ai int
5294287512Sdimvec_any_lt(vector signed char __a, vector bool char __b) {
5295287512Sdim  int __cc;
5296287512Sdim  __builtin_s390_vchbs((vector signed char)__b, __a, &__cc);
5297287512Sdim  return __cc <= 1;
5298287512Sdim}
5299287512Sdim
5300321369Sdim// This prototype is deprecated.
5301287512Sdimstatic inline __ATTRS_o_ai int
5302287512Sdimvec_any_lt(vector bool char __a, vector signed char __b) {
5303287512Sdim  int __cc;
5304287512Sdim  __builtin_s390_vchbs(__b, (vector signed char)__a, &__cc);
5305287512Sdim  return __cc <= 1;
5306287512Sdim}
5307287512Sdim
5308287512Sdimstatic inline __ATTRS_o_ai int
5309287512Sdimvec_any_lt(vector unsigned char __a, vector unsigned char __b) {
5310287512Sdim  int __cc;
5311287512Sdim  __builtin_s390_vchlbs(__b, __a, &__cc);
5312287512Sdim  return __cc <= 1;
5313287512Sdim}
5314287512Sdim
5315321369Sdim// This prototype is deprecated.
5316287512Sdimstatic inline __ATTRS_o_ai int
5317287512Sdimvec_any_lt(vector unsigned char __a, vector bool char __b) {
5318287512Sdim  int __cc;
5319287512Sdim  __builtin_s390_vchlbs((vector unsigned char)__b, __a, &__cc);
5320287512Sdim  return __cc <= 1;
5321287512Sdim}
5322287512Sdim
5323321369Sdim// This prototype is deprecated.
5324287512Sdimstatic inline __ATTRS_o_ai int
5325287512Sdimvec_any_lt(vector bool char __a, vector unsigned char __b) {
5326287512Sdim  int __cc;
5327287512Sdim  __builtin_s390_vchlbs(__b, (vector unsigned char)__a, &__cc);
5328287512Sdim  return __cc <= 1;
5329287512Sdim}
5330287512Sdim
5331321369Sdim// This prototype is deprecated.
5332287512Sdimstatic inline __ATTRS_o_ai int
5333287512Sdimvec_any_lt(vector bool char __a, vector bool char __b) {
5334287512Sdim  int __cc;
5335287512Sdim  __builtin_s390_vchlbs((vector unsigned char)__b,
5336287512Sdim                        (vector unsigned char)__a, &__cc);
5337287512Sdim  return __cc <= 1;
5338287512Sdim}
5339287512Sdim
5340287512Sdimstatic inline __ATTRS_o_ai int
5341287512Sdimvec_any_lt(vector signed short __a, vector signed short __b) {
5342287512Sdim  int __cc;
5343287512Sdim  __builtin_s390_vchhs(__b, __a, &__cc);
5344287512Sdim  return __cc <= 1;
5345287512Sdim}
5346287512Sdim
5347321369Sdim// This prototype is deprecated.
5348287512Sdimstatic inline __ATTRS_o_ai int
5349287512Sdimvec_any_lt(vector signed short __a, vector bool short __b) {
5350287512Sdim  int __cc;
5351287512Sdim  __builtin_s390_vchhs((vector signed short)__b, __a, &__cc);
5352287512Sdim  return __cc <= 1;
5353287512Sdim}
5354287512Sdim
5355321369Sdim// This prototype is deprecated.
5356287512Sdimstatic inline __ATTRS_o_ai int
5357287512Sdimvec_any_lt(vector bool short __a, vector signed short __b) {
5358287512Sdim  int __cc;
5359287512Sdim  __builtin_s390_vchhs(__b, (vector signed short)__a, &__cc);
5360287512Sdim  return __cc <= 1;
5361287512Sdim}
5362287512Sdim
5363287512Sdimstatic inline __ATTRS_o_ai int
5364287512Sdimvec_any_lt(vector unsigned short __a, vector unsigned short __b) {
5365287512Sdim  int __cc;
5366287512Sdim  __builtin_s390_vchlhs(__b, __a, &__cc);
5367287512Sdim  return __cc <= 1;
5368287512Sdim}
5369287512Sdim
5370321369Sdim// This prototype is deprecated.
5371287512Sdimstatic inline __ATTRS_o_ai int
5372287512Sdimvec_any_lt(vector unsigned short __a, vector bool short __b) {
5373287512Sdim  int __cc;
5374287512Sdim  __builtin_s390_vchlhs((vector unsigned short)__b, __a, &__cc);
5375287512Sdim  return __cc <= 1;
5376287512Sdim}
5377287512Sdim
5378321369Sdim// This prototype is deprecated.
5379287512Sdimstatic inline __ATTRS_o_ai int
5380287512Sdimvec_any_lt(vector bool short __a, vector unsigned short __b) {
5381287512Sdim  int __cc;
5382287512Sdim  __builtin_s390_vchlhs(__b, (vector unsigned short)__a, &__cc);
5383287512Sdim  return __cc <= 1;
5384287512Sdim}
5385287512Sdim
5386321369Sdim// This prototype is deprecated.
5387287512Sdimstatic inline __ATTRS_o_ai int
5388287512Sdimvec_any_lt(vector bool short __a, vector bool short __b) {
5389287512Sdim  int __cc;
5390287512Sdim  __builtin_s390_vchlhs((vector unsigned short)__b,
5391287512Sdim                        (vector unsigned short)__a, &__cc);
5392287512Sdim  return __cc <= 1;
5393287512Sdim}
5394287512Sdim
5395287512Sdimstatic inline __ATTRS_o_ai int
5396287512Sdimvec_any_lt(vector signed int __a, vector signed int __b) {
5397287512Sdim  int __cc;
5398287512Sdim  __builtin_s390_vchfs(__b, __a, &__cc);
5399287512Sdim  return __cc <= 1;
5400287512Sdim}
5401287512Sdim
5402321369Sdim// This prototype is deprecated.
5403287512Sdimstatic inline __ATTRS_o_ai int
5404287512Sdimvec_any_lt(vector signed int __a, vector bool int __b) {
5405287512Sdim  int __cc;
5406287512Sdim  __builtin_s390_vchfs((vector signed int)__b, __a, &__cc);
5407287512Sdim  return __cc <= 1;
5408287512Sdim}
5409287512Sdim
5410321369Sdim// This prototype is deprecated.
5411287512Sdimstatic inline __ATTRS_o_ai int
5412287512Sdimvec_any_lt(vector bool int __a, vector signed int __b) {
5413287512Sdim  int __cc;
5414287512Sdim  __builtin_s390_vchfs(__b, (vector signed int)__a, &__cc);
5415287512Sdim  return __cc <= 1;
5416287512Sdim}
5417287512Sdim
5418287512Sdimstatic inline __ATTRS_o_ai int
5419287512Sdimvec_any_lt(vector unsigned int __a, vector unsigned int __b) {
5420287512Sdim  int __cc;
5421287512Sdim  __builtin_s390_vchlfs(__b, __a, &__cc);
5422287512Sdim  return __cc <= 1;
5423287512Sdim}
5424287512Sdim
5425321369Sdim// This prototype is deprecated.
5426287512Sdimstatic inline __ATTRS_o_ai int
5427287512Sdimvec_any_lt(vector unsigned int __a, vector bool int __b) {
5428287512Sdim  int __cc;
5429287512Sdim  __builtin_s390_vchlfs((vector unsigned int)__b, __a, &__cc);
5430287512Sdim  return __cc <= 1;
5431287512Sdim}
5432287512Sdim
5433321369Sdim// This prototype is deprecated.
5434287512Sdimstatic inline __ATTRS_o_ai int
5435287512Sdimvec_any_lt(vector bool int __a, vector unsigned int __b) {
5436287512Sdim  int __cc;
5437287512Sdim  __builtin_s390_vchlfs(__b, (vector unsigned int)__a, &__cc);
5438287512Sdim  return __cc <= 1;
5439287512Sdim}
5440287512Sdim
5441321369Sdim// This prototype is deprecated.
5442287512Sdimstatic inline __ATTRS_o_ai int
5443287512Sdimvec_any_lt(vector bool int __a, vector bool int __b) {
5444287512Sdim  int __cc;
5445287512Sdim  __builtin_s390_vchlfs((vector unsigned int)__b,
5446287512Sdim                        (vector unsigned int)__a, &__cc);
5447287512Sdim  return __cc <= 1;
5448287512Sdim}
5449287512Sdim
5450287512Sdimstatic inline __ATTRS_o_ai int
5451287512Sdimvec_any_lt(vector signed long long __a, vector signed long long __b) {
5452287512Sdim  int __cc;
5453287512Sdim  __builtin_s390_vchgs(__b, __a, &__cc);
5454287512Sdim  return __cc <= 1;
5455287512Sdim}
5456287512Sdim
5457321369Sdim// This prototype is deprecated.
5458287512Sdimstatic inline __ATTRS_o_ai int
5459287512Sdimvec_any_lt(vector signed long long __a, vector bool long long __b) {
5460287512Sdim  int __cc;
5461287512Sdim  __builtin_s390_vchgs((vector signed long long)__b, __a, &__cc);
5462287512Sdim  return __cc <= 1;
5463287512Sdim}
5464287512Sdim
5465321369Sdim// This prototype is deprecated.
5466287512Sdimstatic inline __ATTRS_o_ai int
5467287512Sdimvec_any_lt(vector bool long long __a, vector signed long long __b) {
5468287512Sdim  int __cc;
5469287512Sdim  __builtin_s390_vchgs(__b, (vector signed long long)__a, &__cc);
5470287512Sdim  return __cc <= 1;
5471287512Sdim}
5472287512Sdim
5473287512Sdimstatic inline __ATTRS_o_ai int
5474287512Sdimvec_any_lt(vector unsigned long long __a, vector unsigned long long __b) {
5475287512Sdim  int __cc;
5476287512Sdim  __builtin_s390_vchlgs(__b, __a, &__cc);
5477287512Sdim  return __cc <= 1;
5478287512Sdim}
5479287512Sdim
5480321369Sdim// This prototype is deprecated.
5481287512Sdimstatic inline __ATTRS_o_ai int
5482287512Sdimvec_any_lt(vector unsigned long long __a, vector bool long long __b) {
5483287512Sdim  int __cc;
5484287512Sdim  __builtin_s390_vchlgs((vector unsigned long long)__b, __a, &__cc);
5485287512Sdim  return __cc <= 1;
5486287512Sdim}
5487287512Sdim
5488321369Sdim// This prototype is deprecated.
5489287512Sdimstatic inline __ATTRS_o_ai int
5490287512Sdimvec_any_lt(vector bool long long __a, vector unsigned long long __b) {
5491287512Sdim  int __cc;
5492287512Sdim  __builtin_s390_vchlgs(__b, (vector unsigned long long)__a, &__cc);
5493287512Sdim  return __cc <= 1;
5494287512Sdim}
5495287512Sdim
5496321369Sdim// This prototype is deprecated.
5497287512Sdimstatic inline __ATTRS_o_ai int
5498287512Sdimvec_any_lt(vector bool long long __a, vector bool long long __b) {
5499287512Sdim  int __cc;
5500287512Sdim  __builtin_s390_vchlgs((vector unsigned long long)__b,
5501287512Sdim                        (vector unsigned long long)__a, &__cc);
5502287512Sdim  return __cc <= 1;
5503287512Sdim}
5504287512Sdim
5505321369Sdim#if __ARCH__ >= 12
5506287512Sdimstatic inline __ATTRS_o_ai int
5507321369Sdimvec_any_lt(vector float __a, vector float __b) {
5508321369Sdim  int __cc;
5509321369Sdim  __builtin_s390_vfchsbs(__b, __a, &__cc);
5510321369Sdim  return __cc <= 1;
5511321369Sdim}
5512321369Sdim#endif
5513321369Sdim
5514321369Sdimstatic inline __ATTRS_o_ai int
5515287512Sdimvec_any_lt(vector double __a, vector double __b) {
5516287512Sdim  int __cc;
5517287512Sdim  __builtin_s390_vfchdbs(__b, __a, &__cc);
5518287512Sdim  return __cc <= 1;
5519287512Sdim}
5520287512Sdim
5521287512Sdim/*-- vec_any_nge ------------------------------------------------------------*/
5522287512Sdim
5523321369Sdim#if __ARCH__ >= 12
5524321369Sdimstatic inline __ATTRS_o_ai int
5525321369Sdimvec_any_nge(vector float __a, vector float __b) {
5526321369Sdim  int __cc;
5527321369Sdim  __builtin_s390_vfchesbs(__a, __b, &__cc);
5528321369Sdim  return __cc != 0;
5529321369Sdim}
5530321369Sdim#endif
5531321369Sdim
5532321369Sdimstatic inline __ATTRS_o_ai int
5533287512Sdimvec_any_nge(vector double __a, vector double __b) {
5534287512Sdim  int __cc;
5535287512Sdim  __builtin_s390_vfchedbs(__a, __b, &__cc);
5536287512Sdim  return __cc != 0;
5537287512Sdim}
5538287512Sdim
5539287512Sdim/*-- vec_any_ngt ------------------------------------------------------------*/
5540287512Sdim
5541321369Sdim#if __ARCH__ >= 12
5542321369Sdimstatic inline __ATTRS_o_ai int
5543321369Sdimvec_any_ngt(vector float __a, vector float __b) {
5544321369Sdim  int __cc;
5545321369Sdim  __builtin_s390_vfchsbs(__a, __b, &__cc);
5546321369Sdim  return __cc != 0;
5547321369Sdim}
5548321369Sdim#endif
5549321369Sdim
5550321369Sdimstatic inline __ATTRS_o_ai int
5551287512Sdimvec_any_ngt(vector double __a, vector double __b) {
5552287512Sdim  int __cc;
5553287512Sdim  __builtin_s390_vfchdbs(__a, __b, &__cc);
5554287512Sdim  return __cc != 0;
5555287512Sdim}
5556287512Sdim
5557287512Sdim/*-- vec_any_nle ------------------------------------------------------------*/
5558287512Sdim
5559321369Sdim#if __ARCH__ >= 12
5560321369Sdimstatic inline __ATTRS_o_ai int
5561321369Sdimvec_any_nle(vector float __a, vector float __b) {
5562321369Sdim  int __cc;
5563321369Sdim  __builtin_s390_vfchesbs(__b, __a, &__cc);
5564321369Sdim  return __cc != 0;
5565321369Sdim}
5566321369Sdim#endif
5567321369Sdim
5568321369Sdimstatic inline __ATTRS_o_ai int
5569287512Sdimvec_any_nle(vector double __a, vector double __b) {
5570287512Sdim  int __cc;
5571287512Sdim  __builtin_s390_vfchedbs(__b, __a, &__cc);
5572287512Sdim  return __cc != 0;
5573287512Sdim}
5574287512Sdim
5575287512Sdim/*-- vec_any_nlt ------------------------------------------------------------*/
5576287512Sdim
5577321369Sdim#if __ARCH__ >= 12
5578321369Sdimstatic inline __ATTRS_o_ai int
5579321369Sdimvec_any_nlt(vector float __a, vector float __b) {
5580321369Sdim  int __cc;
5581321369Sdim  __builtin_s390_vfchsbs(__b, __a, &__cc);
5582321369Sdim  return __cc != 0;
5583321369Sdim}
5584321369Sdim#endif
5585321369Sdim
5586321369Sdimstatic inline __ATTRS_o_ai int
5587287512Sdimvec_any_nlt(vector double __a, vector double __b) {
5588287512Sdim  int __cc;
5589287512Sdim  __builtin_s390_vfchdbs(__b, __a, &__cc);
5590287512Sdim  return __cc != 0;
5591287512Sdim}
5592287512Sdim
5593287512Sdim/*-- vec_any_nan ------------------------------------------------------------*/
5594287512Sdim
5595321369Sdim#if __ARCH__ >= 12
5596321369Sdimstatic inline __ATTRS_o_ai int
5597321369Sdimvec_any_nan(vector float __a) {
5598321369Sdim  int __cc;
5599321369Sdim  __builtin_s390_vftcisb(__a, 15, &__cc);
5600321369Sdim  return __cc != 3;
5601321369Sdim}
5602321369Sdim#endif
5603321369Sdim
5604321369Sdimstatic inline __ATTRS_o_ai int
5605287512Sdimvec_any_nan(vector double __a) {
5606287512Sdim  int __cc;
5607287512Sdim  __builtin_s390_vftcidb(__a, 15, &__cc);
5608287512Sdim  return __cc != 3;
5609287512Sdim}
5610287512Sdim
5611287512Sdim/*-- vec_any_numeric --------------------------------------------------------*/
5612287512Sdim
5613321369Sdim#if __ARCH__ >= 12
5614321369Sdimstatic inline __ATTRS_o_ai int
5615321369Sdimvec_any_numeric(vector float __a) {
5616321369Sdim  int __cc;
5617321369Sdim  __builtin_s390_vftcisb(__a, 15, &__cc);
5618321369Sdim  return __cc != 0;
5619321369Sdim}
5620321369Sdim#endif
5621321369Sdim
5622321369Sdimstatic inline __ATTRS_o_ai int
5623287512Sdimvec_any_numeric(vector double __a) {
5624287512Sdim  int __cc;
5625287512Sdim  __builtin_s390_vftcidb(__a, 15, &__cc);
5626287512Sdim  return __cc != 0;
5627287512Sdim}
5628287512Sdim
5629287512Sdim/*-- vec_andc ---------------------------------------------------------------*/
5630287512Sdim
5631287512Sdimstatic inline __ATTRS_o_ai vector bool char
5632287512Sdimvec_andc(vector bool char __a, vector bool char __b) {
5633287512Sdim  return __a & ~__b;
5634287512Sdim}
5635287512Sdim
5636287512Sdimstatic inline __ATTRS_o_ai vector signed char
5637287512Sdimvec_andc(vector signed char __a, vector signed char __b) {
5638287512Sdim  return __a & ~__b;
5639287512Sdim}
5640287512Sdim
5641321369Sdim// This prototype is deprecated.
5642287512Sdimstatic inline __ATTRS_o_ai vector signed char
5643287512Sdimvec_andc(vector bool char __a, vector signed char __b) {
5644287512Sdim  return __a & ~__b;
5645287512Sdim}
5646287512Sdim
5647321369Sdim// This prototype is deprecated.
5648287512Sdimstatic inline __ATTRS_o_ai vector signed char
5649287512Sdimvec_andc(vector signed char __a, vector bool char __b) {
5650287512Sdim  return __a & ~__b;
5651287512Sdim}
5652287512Sdim
5653287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
5654287512Sdimvec_andc(vector unsigned char __a, vector unsigned char __b) {
5655287512Sdim  return __a & ~__b;
5656287512Sdim}
5657287512Sdim
5658321369Sdim// This prototype is deprecated.
5659287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
5660287512Sdimvec_andc(vector bool char __a, vector unsigned char __b) {
5661287512Sdim  return __a & ~__b;
5662287512Sdim}
5663287512Sdim
5664321369Sdim// This prototype is deprecated.
5665287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
5666287512Sdimvec_andc(vector unsigned char __a, vector bool char __b) {
5667287512Sdim  return __a & ~__b;
5668287512Sdim}
5669287512Sdim
5670287512Sdimstatic inline __ATTRS_o_ai vector bool short
5671287512Sdimvec_andc(vector bool short __a, vector bool short __b) {
5672287512Sdim  return __a & ~__b;
5673287512Sdim}
5674287512Sdim
5675287512Sdimstatic inline __ATTRS_o_ai vector signed short
5676287512Sdimvec_andc(vector signed short __a, vector signed short __b) {
5677287512Sdim  return __a & ~__b;
5678287512Sdim}
5679287512Sdim
5680321369Sdim// This prototype is deprecated.
5681287512Sdimstatic inline __ATTRS_o_ai vector signed short
5682287512Sdimvec_andc(vector bool short __a, vector signed short __b) {
5683287512Sdim  return __a & ~__b;
5684287512Sdim}
5685287512Sdim
5686321369Sdim// This prototype is deprecated.
5687287512Sdimstatic inline __ATTRS_o_ai vector signed short
5688287512Sdimvec_andc(vector signed short __a, vector bool short __b) {
5689287512Sdim  return __a & ~__b;
5690287512Sdim}
5691287512Sdim
5692287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
5693287512Sdimvec_andc(vector unsigned short __a, vector unsigned short __b) {
5694287512Sdim  return __a & ~__b;
5695287512Sdim}
5696287512Sdim
5697321369Sdim// This prototype is deprecated.
5698287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
5699287512Sdimvec_andc(vector bool short __a, vector unsigned short __b) {
5700287512Sdim  return __a & ~__b;
5701287512Sdim}
5702287512Sdim
5703321369Sdim// This prototype is deprecated.
5704287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
5705287512Sdimvec_andc(vector unsigned short __a, vector bool short __b) {
5706287512Sdim  return __a & ~__b;
5707287512Sdim}
5708287512Sdim
5709287512Sdimstatic inline __ATTRS_o_ai vector bool int
5710287512Sdimvec_andc(vector bool int __a, vector bool int __b) {
5711287512Sdim  return __a & ~__b;
5712287512Sdim}
5713287512Sdim
5714287512Sdimstatic inline __ATTRS_o_ai vector signed int
5715287512Sdimvec_andc(vector signed int __a, vector signed int __b) {
5716287512Sdim  return __a & ~__b;
5717287512Sdim}
5718287512Sdim
5719321369Sdim// This prototype is deprecated.
5720287512Sdimstatic inline __ATTRS_o_ai vector signed int
5721287512Sdimvec_andc(vector bool int __a, vector signed int __b) {
5722287512Sdim  return __a & ~__b;
5723287512Sdim}
5724287512Sdim
5725321369Sdim// This prototype is deprecated.
5726287512Sdimstatic inline __ATTRS_o_ai vector signed int
5727287512Sdimvec_andc(vector signed int __a, vector bool int __b) {
5728287512Sdim  return __a & ~__b;
5729287512Sdim}
5730287512Sdim
5731287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
5732287512Sdimvec_andc(vector unsigned int __a, vector unsigned int __b) {
5733287512Sdim  return __a & ~__b;
5734287512Sdim}
5735287512Sdim
5736321369Sdim// This prototype is deprecated.
5737287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
5738287512Sdimvec_andc(vector bool int __a, vector unsigned int __b) {
5739287512Sdim  return __a & ~__b;
5740287512Sdim}
5741287512Sdim
5742321369Sdim// This prototype is deprecated.
5743287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
5744287512Sdimvec_andc(vector unsigned int __a, vector bool int __b) {
5745287512Sdim  return __a & ~__b;
5746287512Sdim}
5747287512Sdim
5748287512Sdimstatic inline __ATTRS_o_ai vector bool long long
5749287512Sdimvec_andc(vector bool long long __a, vector bool long long __b) {
5750287512Sdim  return __a & ~__b;
5751287512Sdim}
5752287512Sdim
5753287512Sdimstatic inline __ATTRS_o_ai vector signed long long
5754287512Sdimvec_andc(vector signed long long __a, vector signed long long __b) {
5755287512Sdim  return __a & ~__b;
5756287512Sdim}
5757287512Sdim
5758321369Sdim// This prototype is deprecated.
5759287512Sdimstatic inline __ATTRS_o_ai vector signed long long
5760287512Sdimvec_andc(vector bool long long __a, vector signed long long __b) {
5761287512Sdim  return __a & ~__b;
5762287512Sdim}
5763287512Sdim
5764321369Sdim// This prototype is deprecated.
5765287512Sdimstatic inline __ATTRS_o_ai vector signed long long
5766287512Sdimvec_andc(vector signed long long __a, vector bool long long __b) {
5767287512Sdim  return __a & ~__b;
5768287512Sdim}
5769287512Sdim
5770287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
5771287512Sdimvec_andc(vector unsigned long long __a, vector unsigned long long __b) {
5772287512Sdim  return __a & ~__b;
5773287512Sdim}
5774287512Sdim
5775321369Sdim// This prototype is deprecated.
5776287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
5777287512Sdimvec_andc(vector bool long long __a, vector unsigned long long __b) {
5778287512Sdim  return __a & ~__b;
5779287512Sdim}
5780287512Sdim
5781321369Sdim// This prototype is deprecated.
5782287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
5783287512Sdimvec_andc(vector unsigned long long __a, vector bool long long __b) {
5784287512Sdim  return __a & ~__b;
5785287512Sdim}
5786287512Sdim
5787321369Sdim#if __ARCH__ >= 12
5788321369Sdimstatic inline __ATTRS_o_ai vector float
5789321369Sdimvec_andc(vector float __a, vector float __b) {
5790321369Sdim  return (vector float)((vector unsigned int)__a &
5791321369Sdim                         ~(vector unsigned int)__b);
5792321369Sdim}
5793321369Sdim#endif
5794321369Sdim
5795287512Sdimstatic inline __ATTRS_o_ai vector double
5796287512Sdimvec_andc(vector double __a, vector double __b) {
5797287512Sdim  return (vector double)((vector unsigned long long)__a &
5798287512Sdim                         ~(vector unsigned long long)__b);
5799287512Sdim}
5800287512Sdim
5801321369Sdim// This prototype is deprecated.
5802287512Sdimstatic inline __ATTRS_o_ai vector double
5803287512Sdimvec_andc(vector bool long long __a, vector double __b) {
5804287512Sdim  return (vector double)((vector unsigned long long)__a &
5805287512Sdim                         ~(vector unsigned long long)__b);
5806287512Sdim}
5807287512Sdim
5808321369Sdim// This prototype is deprecated.
5809287512Sdimstatic inline __ATTRS_o_ai vector double
5810287512Sdimvec_andc(vector double __a, vector bool long long __b) {
5811287512Sdim  return (vector double)((vector unsigned long long)__a &
5812287512Sdim                         ~(vector unsigned long long)__b);
5813287512Sdim}
5814287512Sdim
5815287512Sdim/*-- vec_nor ----------------------------------------------------------------*/
5816287512Sdim
5817287512Sdimstatic inline __ATTRS_o_ai vector bool char
5818287512Sdimvec_nor(vector bool char __a, vector bool char __b) {
5819287512Sdim  return ~(__a | __b);
5820287512Sdim}
5821287512Sdim
5822287512Sdimstatic inline __ATTRS_o_ai vector signed char
5823287512Sdimvec_nor(vector signed char __a, vector signed char __b) {
5824287512Sdim  return ~(__a | __b);
5825287512Sdim}
5826287512Sdim
5827321369Sdim// This prototype is deprecated.
5828287512Sdimstatic inline __ATTRS_o_ai vector signed char
5829287512Sdimvec_nor(vector bool char __a, vector signed char __b) {
5830287512Sdim  return ~(__a | __b);
5831287512Sdim}
5832287512Sdim
5833321369Sdim// This prototype is deprecated.
5834287512Sdimstatic inline __ATTRS_o_ai vector signed char
5835287512Sdimvec_nor(vector signed char __a, vector bool char __b) {
5836287512Sdim  return ~(__a | __b);
5837287512Sdim}
5838287512Sdim
5839287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
5840287512Sdimvec_nor(vector unsigned char __a, vector unsigned char __b) {
5841287512Sdim  return ~(__a | __b);
5842287512Sdim}
5843287512Sdim
5844321369Sdim// This prototype is deprecated.
5845287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
5846287512Sdimvec_nor(vector bool char __a, vector unsigned char __b) {
5847287512Sdim  return ~(__a | __b);
5848287512Sdim}
5849287512Sdim
5850321369Sdim// This prototype is deprecated.
5851287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
5852287512Sdimvec_nor(vector unsigned char __a, vector bool char __b) {
5853287512Sdim  return ~(__a | __b);
5854287512Sdim}
5855287512Sdim
5856287512Sdimstatic inline __ATTRS_o_ai vector bool short
5857287512Sdimvec_nor(vector bool short __a, vector bool short __b) {
5858287512Sdim  return ~(__a | __b);
5859287512Sdim}
5860287512Sdim
5861287512Sdimstatic inline __ATTRS_o_ai vector signed short
5862287512Sdimvec_nor(vector signed short __a, vector signed short __b) {
5863287512Sdim  return ~(__a | __b);
5864287512Sdim}
5865287512Sdim
5866321369Sdim// This prototype is deprecated.
5867287512Sdimstatic inline __ATTRS_o_ai vector signed short
5868287512Sdimvec_nor(vector bool short __a, vector signed short __b) {
5869287512Sdim  return ~(__a | __b);
5870287512Sdim}
5871287512Sdim
5872321369Sdim// This prototype is deprecated.
5873287512Sdimstatic inline __ATTRS_o_ai vector signed short
5874287512Sdimvec_nor(vector signed short __a, vector bool short __b) {
5875287512Sdim  return ~(__a | __b);
5876287512Sdim}
5877287512Sdim
5878287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
5879287512Sdimvec_nor(vector unsigned short __a, vector unsigned short __b) {
5880287512Sdim  return ~(__a | __b);
5881287512Sdim}
5882287512Sdim
5883321369Sdim// This prototype is deprecated.
5884287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
5885287512Sdimvec_nor(vector bool short __a, vector unsigned short __b) {
5886287512Sdim  return ~(__a | __b);
5887287512Sdim}
5888287512Sdim
5889321369Sdim// This prototype is deprecated.
5890287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
5891287512Sdimvec_nor(vector unsigned short __a, vector bool short __b) {
5892287512Sdim  return ~(__a | __b);
5893287512Sdim}
5894287512Sdim
5895287512Sdimstatic inline __ATTRS_o_ai vector bool int
5896287512Sdimvec_nor(vector bool int __a, vector bool int __b) {
5897287512Sdim  return ~(__a | __b);
5898287512Sdim}
5899287512Sdim
5900287512Sdimstatic inline __ATTRS_o_ai vector signed int
5901287512Sdimvec_nor(vector signed int __a, vector signed int __b) {
5902287512Sdim  return ~(__a | __b);
5903287512Sdim}
5904287512Sdim
5905321369Sdim// This prototype is deprecated.
5906287512Sdimstatic inline __ATTRS_o_ai vector signed int
5907287512Sdimvec_nor(vector bool int __a, vector signed int __b) {
5908287512Sdim  return ~(__a | __b);
5909287512Sdim}
5910287512Sdim
5911321369Sdim// This prototype is deprecated.
5912287512Sdimstatic inline __ATTRS_o_ai vector signed int
5913287512Sdimvec_nor(vector signed int __a, vector bool int __b) {
5914287512Sdim  return ~(__a | __b);
5915287512Sdim}
5916287512Sdim
5917287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
5918287512Sdimvec_nor(vector unsigned int __a, vector unsigned int __b) {
5919287512Sdim  return ~(__a | __b);
5920287512Sdim}
5921287512Sdim
5922321369Sdim// This prototype is deprecated.
5923287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
5924287512Sdimvec_nor(vector bool int __a, vector unsigned int __b) {
5925287512Sdim  return ~(__a | __b);
5926287512Sdim}
5927287512Sdim
5928321369Sdim// This prototype is deprecated.
5929287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
5930287512Sdimvec_nor(vector unsigned int __a, vector bool int __b) {
5931287512Sdim  return ~(__a | __b);
5932287512Sdim}
5933287512Sdim
5934287512Sdimstatic inline __ATTRS_o_ai vector bool long long
5935287512Sdimvec_nor(vector bool long long __a, vector bool long long __b) {
5936287512Sdim  return ~(__a | __b);
5937287512Sdim}
5938287512Sdim
5939287512Sdimstatic inline __ATTRS_o_ai vector signed long long
5940287512Sdimvec_nor(vector signed long long __a, vector signed long long __b) {
5941287512Sdim  return ~(__a | __b);
5942287512Sdim}
5943287512Sdim
5944321369Sdim// This prototype is deprecated.
5945287512Sdimstatic inline __ATTRS_o_ai vector signed long long
5946287512Sdimvec_nor(vector bool long long __a, vector signed long long __b) {
5947287512Sdim  return ~(__a | __b);
5948287512Sdim}
5949287512Sdim
5950321369Sdim// This prototype is deprecated.
5951287512Sdimstatic inline __ATTRS_o_ai vector signed long long
5952287512Sdimvec_nor(vector signed long long __a, vector bool long long __b) {
5953287512Sdim  return ~(__a | __b);
5954287512Sdim}
5955287512Sdim
5956287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
5957287512Sdimvec_nor(vector unsigned long long __a, vector unsigned long long __b) {
5958287512Sdim  return ~(__a | __b);
5959287512Sdim}
5960287512Sdim
5961321369Sdim// This prototype is deprecated.
5962287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
5963287512Sdimvec_nor(vector bool long long __a, vector unsigned long long __b) {
5964287512Sdim  return ~(__a | __b);
5965287512Sdim}
5966287512Sdim
5967321369Sdim// This prototype is deprecated.
5968287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
5969287512Sdimvec_nor(vector unsigned long long __a, vector bool long long __b) {
5970287512Sdim  return ~(__a | __b);
5971287512Sdim}
5972287512Sdim
5973321369Sdim#if __ARCH__ >= 12
5974321369Sdimstatic inline __ATTRS_o_ai vector float
5975321369Sdimvec_nor(vector float __a, vector float __b) {
5976321369Sdim  return (vector float)~((vector unsigned int)__a |
5977321369Sdim                         (vector unsigned int)__b);
5978321369Sdim}
5979321369Sdim#endif
5980321369Sdim
5981287512Sdimstatic inline __ATTRS_o_ai vector double
5982287512Sdimvec_nor(vector double __a, vector double __b) {
5983287512Sdim  return (vector double)~((vector unsigned long long)__a |
5984287512Sdim                          (vector unsigned long long)__b);
5985287512Sdim}
5986287512Sdim
5987321369Sdim// This prototype is deprecated.
5988287512Sdimstatic inline __ATTRS_o_ai vector double
5989287512Sdimvec_nor(vector bool long long __a, vector double __b) {
5990287512Sdim  return (vector double)~((vector unsigned long long)__a |
5991287512Sdim                          (vector unsigned long long)__b);
5992287512Sdim}
5993287512Sdim
5994321369Sdim// This prototype is deprecated.
5995287512Sdimstatic inline __ATTRS_o_ai vector double
5996287512Sdimvec_nor(vector double __a, vector bool long long __b) {
5997287512Sdim  return (vector double)~((vector unsigned long long)__a |
5998287512Sdim                          (vector unsigned long long)__b);
5999287512Sdim}
6000287512Sdim
6001321369Sdim/*-- vec_orc ----------------------------------------------------------------*/
6002321369Sdim
6003321369Sdim#if __ARCH__ >= 12
6004321369Sdimstatic inline __ATTRS_o_ai vector bool char
6005321369Sdimvec_orc(vector bool char __a, vector bool char __b) {
6006321369Sdim  return __a | ~__b;
6007321369Sdim}
6008321369Sdim
6009321369Sdimstatic inline __ATTRS_o_ai vector signed char
6010321369Sdimvec_orc(vector signed char __a, vector signed char __b) {
6011321369Sdim  return __a | ~__b;
6012321369Sdim}
6013321369Sdim
6014321369Sdimstatic inline __ATTRS_o_ai vector unsigned char
6015321369Sdimvec_orc(vector unsigned char __a, vector unsigned char __b) {
6016321369Sdim  return __a | ~__b;
6017321369Sdim}
6018321369Sdim
6019321369Sdimstatic inline __ATTRS_o_ai vector bool short
6020321369Sdimvec_orc(vector bool short __a, vector bool short __b) {
6021321369Sdim  return __a | ~__b;
6022321369Sdim}
6023321369Sdim
6024321369Sdimstatic inline __ATTRS_o_ai vector signed short
6025321369Sdimvec_orc(vector signed short __a, vector signed short __b) {
6026321369Sdim  return __a | ~__b;
6027321369Sdim}
6028321369Sdim
6029321369Sdimstatic inline __ATTRS_o_ai vector unsigned short
6030321369Sdimvec_orc(vector unsigned short __a, vector unsigned short __b) {
6031321369Sdim  return __a | ~__b;
6032321369Sdim}
6033321369Sdim
6034321369Sdimstatic inline __ATTRS_o_ai vector bool int
6035321369Sdimvec_orc(vector bool int __a, vector bool int __b) {
6036321369Sdim  return __a | ~__b;
6037321369Sdim}
6038321369Sdim
6039321369Sdimstatic inline __ATTRS_o_ai vector signed int
6040321369Sdimvec_orc(vector signed int __a, vector signed int __b) {
6041321369Sdim  return __a | ~__b;
6042321369Sdim}
6043321369Sdim
6044321369Sdimstatic inline __ATTRS_o_ai vector unsigned int
6045321369Sdimvec_orc(vector unsigned int __a, vector unsigned int __b) {
6046321369Sdim  return __a | ~__b;
6047321369Sdim}
6048321369Sdim
6049321369Sdimstatic inline __ATTRS_o_ai vector bool long long
6050321369Sdimvec_orc(vector bool long long __a, vector bool long long __b) {
6051321369Sdim  return __a | ~__b;
6052321369Sdim}
6053321369Sdim
6054321369Sdimstatic inline __ATTRS_o_ai vector signed long long
6055321369Sdimvec_orc(vector signed long long __a, vector signed long long __b) {
6056321369Sdim  return __a | ~__b;
6057321369Sdim}
6058321369Sdim
6059321369Sdimstatic inline __ATTRS_o_ai vector unsigned long long
6060321369Sdimvec_orc(vector unsigned long long __a, vector unsigned long long __b) {
6061321369Sdim  return __a | ~__b;
6062321369Sdim}
6063321369Sdim
6064321369Sdimstatic inline __ATTRS_o_ai vector float
6065321369Sdimvec_orc(vector float __a, vector float __b) {
6066344779Sdim  return (vector float)((vector unsigned int)__a |
6067321369Sdim                        ~(vector unsigned int)__b);
6068321369Sdim}
6069321369Sdim
6070321369Sdimstatic inline __ATTRS_o_ai vector double
6071321369Sdimvec_orc(vector double __a, vector double __b) {
6072344779Sdim  return (vector double)((vector unsigned long long)__a |
6073321369Sdim                         ~(vector unsigned long long)__b);
6074321369Sdim}
6075321369Sdim#endif
6076321369Sdim
6077321369Sdim/*-- vec_nand ---------------------------------------------------------------*/
6078321369Sdim
6079321369Sdim#if __ARCH__ >= 12
6080321369Sdimstatic inline __ATTRS_o_ai vector bool char
6081321369Sdimvec_nand(vector bool char __a, vector bool char __b) {
6082321369Sdim  return ~(__a & __b);
6083321369Sdim}
6084321369Sdim
6085321369Sdimstatic inline __ATTRS_o_ai vector signed char
6086321369Sdimvec_nand(vector signed char __a, vector signed char __b) {
6087321369Sdim  return ~(__a & __b);
6088321369Sdim}
6089321369Sdim
6090321369Sdimstatic inline __ATTRS_o_ai vector unsigned char
6091321369Sdimvec_nand(vector unsigned char __a, vector unsigned char __b) {
6092321369Sdim  return ~(__a & __b);
6093321369Sdim}
6094321369Sdim
6095321369Sdimstatic inline __ATTRS_o_ai vector bool short
6096321369Sdimvec_nand(vector bool short __a, vector bool short __b) {
6097321369Sdim  return ~(__a & __b);
6098321369Sdim}
6099321369Sdim
6100321369Sdimstatic inline __ATTRS_o_ai vector signed short
6101321369Sdimvec_nand(vector signed short __a, vector signed short __b) {
6102321369Sdim  return ~(__a & __b);
6103321369Sdim}
6104321369Sdim
6105321369Sdimstatic inline __ATTRS_o_ai vector unsigned short
6106321369Sdimvec_nand(vector unsigned short __a, vector unsigned short __b) {
6107321369Sdim  return ~(__a & __b);
6108321369Sdim}
6109321369Sdim
6110321369Sdimstatic inline __ATTRS_o_ai vector bool int
6111321369Sdimvec_nand(vector bool int __a, vector bool int __b) {
6112321369Sdim  return ~(__a & __b);
6113321369Sdim}
6114321369Sdim
6115321369Sdimstatic inline __ATTRS_o_ai vector signed int
6116321369Sdimvec_nand(vector signed int __a, vector signed int __b) {
6117321369Sdim  return ~(__a & __b);
6118321369Sdim}
6119321369Sdim
6120321369Sdimstatic inline __ATTRS_o_ai vector unsigned int
6121321369Sdimvec_nand(vector unsigned int __a, vector unsigned int __b) {
6122321369Sdim  return ~(__a & __b);
6123321369Sdim}
6124321369Sdim
6125321369Sdimstatic inline __ATTRS_o_ai vector bool long long
6126321369Sdimvec_nand(vector bool long long __a, vector bool long long __b) {
6127321369Sdim  return ~(__a & __b);
6128321369Sdim}
6129321369Sdim
6130321369Sdimstatic inline __ATTRS_o_ai vector signed long long
6131321369Sdimvec_nand(vector signed long long __a, vector signed long long __b) {
6132321369Sdim  return ~(__a & __b);
6133321369Sdim}
6134321369Sdim
6135321369Sdimstatic inline __ATTRS_o_ai vector unsigned long long
6136321369Sdimvec_nand(vector unsigned long long __a, vector unsigned long long __b) {
6137321369Sdim  return ~(__a & __b);
6138321369Sdim}
6139321369Sdim
6140321369Sdimstatic inline __ATTRS_o_ai vector float
6141321369Sdimvec_nand(vector float __a, vector float __b) {
6142321369Sdim  return (vector float)~((vector unsigned int)__a &
6143321369Sdim                         (vector unsigned int)__b);
6144321369Sdim}
6145321369Sdim
6146321369Sdimstatic inline __ATTRS_o_ai vector double
6147321369Sdimvec_nand(vector double __a, vector double __b) {
6148321369Sdim  return (vector double)~((vector unsigned long long)__a &
6149321369Sdim                          (vector unsigned long long)__b);
6150321369Sdim}
6151321369Sdim#endif
6152321369Sdim
6153321369Sdim/*-- vec_eqv ----------------------------------------------------------------*/
6154321369Sdim
6155321369Sdim#if __ARCH__ >= 12
6156321369Sdimstatic inline __ATTRS_o_ai vector bool char
6157321369Sdimvec_eqv(vector bool char __a, vector bool char __b) {
6158321369Sdim  return ~(__a ^ __b);
6159321369Sdim}
6160321369Sdim
6161321369Sdimstatic inline __ATTRS_o_ai vector signed char
6162321369Sdimvec_eqv(vector signed char __a, vector signed char __b) {
6163321369Sdim  return ~(__a ^ __b);
6164321369Sdim}
6165321369Sdim
6166321369Sdimstatic inline __ATTRS_o_ai vector unsigned char
6167321369Sdimvec_eqv(vector unsigned char __a, vector unsigned char __b) {
6168321369Sdim  return ~(__a ^ __b);
6169321369Sdim}
6170321369Sdim
6171321369Sdimstatic inline __ATTRS_o_ai vector bool short
6172321369Sdimvec_eqv(vector bool short __a, vector bool short __b) {
6173321369Sdim  return ~(__a ^ __b);
6174321369Sdim}
6175321369Sdim
6176321369Sdimstatic inline __ATTRS_o_ai vector signed short
6177321369Sdimvec_eqv(vector signed short __a, vector signed short __b) {
6178321369Sdim  return ~(__a ^ __b);
6179321369Sdim}
6180321369Sdim
6181321369Sdimstatic inline __ATTRS_o_ai vector unsigned short
6182321369Sdimvec_eqv(vector unsigned short __a, vector unsigned short __b) {
6183321369Sdim  return ~(__a ^ __b);
6184321369Sdim}
6185321369Sdim
6186321369Sdimstatic inline __ATTRS_o_ai vector bool int
6187321369Sdimvec_eqv(vector bool int __a, vector bool int __b) {
6188321369Sdim  return ~(__a ^ __b);
6189321369Sdim}
6190321369Sdim
6191321369Sdimstatic inline __ATTRS_o_ai vector signed int
6192321369Sdimvec_eqv(vector signed int __a, vector signed int __b) {
6193321369Sdim  return ~(__a ^ __b);
6194321369Sdim}
6195321369Sdim
6196321369Sdimstatic inline __ATTRS_o_ai vector unsigned int
6197321369Sdimvec_eqv(vector unsigned int __a, vector unsigned int __b) {
6198321369Sdim  return ~(__a ^ __b);
6199321369Sdim}
6200321369Sdim
6201321369Sdimstatic inline __ATTRS_o_ai vector bool long long
6202321369Sdimvec_eqv(vector bool long long __a, vector bool long long __b) {
6203321369Sdim  return ~(__a ^ __b);
6204321369Sdim}
6205321369Sdim
6206321369Sdimstatic inline __ATTRS_o_ai vector signed long long
6207321369Sdimvec_eqv(vector signed long long __a, vector signed long long __b) {
6208321369Sdim  return ~(__a ^ __b);
6209321369Sdim}
6210321369Sdim
6211321369Sdimstatic inline __ATTRS_o_ai vector unsigned long long
6212321369Sdimvec_eqv(vector unsigned long long __a, vector unsigned long long __b) {
6213321369Sdim  return ~(__a ^ __b);
6214321369Sdim}
6215321369Sdim
6216321369Sdimstatic inline __ATTRS_o_ai vector float
6217321369Sdimvec_eqv(vector float __a, vector float __b) {
6218321369Sdim  return (vector float)~((vector unsigned int)__a ^
6219321369Sdim                         (vector unsigned int)__b);
6220321369Sdim}
6221321369Sdim
6222321369Sdimstatic inline __ATTRS_o_ai vector double
6223321369Sdimvec_eqv(vector double __a, vector double __b) {
6224321369Sdim  return (vector double)~((vector unsigned long long)__a ^
6225321369Sdim                          (vector unsigned long long)__b);
6226321369Sdim}
6227321369Sdim#endif
6228321369Sdim
6229287512Sdim/*-- vec_cntlz --------------------------------------------------------------*/
6230287512Sdim
6231287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
6232287512Sdimvec_cntlz(vector signed char __a) {
6233287512Sdim  return __builtin_s390_vclzb((vector unsigned char)__a);
6234287512Sdim}
6235287512Sdim
6236287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
6237287512Sdimvec_cntlz(vector unsigned char __a) {
6238287512Sdim  return __builtin_s390_vclzb(__a);
6239287512Sdim}
6240287512Sdim
6241287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
6242287512Sdimvec_cntlz(vector signed short __a) {
6243287512Sdim  return __builtin_s390_vclzh((vector unsigned short)__a);
6244287512Sdim}
6245287512Sdim
6246287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
6247287512Sdimvec_cntlz(vector unsigned short __a) {
6248287512Sdim  return __builtin_s390_vclzh(__a);
6249287512Sdim}
6250287512Sdim
6251287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
6252287512Sdimvec_cntlz(vector signed int __a) {
6253287512Sdim  return __builtin_s390_vclzf((vector unsigned int)__a);
6254287512Sdim}
6255287512Sdim
6256287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
6257287512Sdimvec_cntlz(vector unsigned int __a) {
6258287512Sdim  return __builtin_s390_vclzf(__a);
6259287512Sdim}
6260287512Sdim
6261287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
6262287512Sdimvec_cntlz(vector signed long long __a) {
6263287512Sdim  return __builtin_s390_vclzg((vector unsigned long long)__a);
6264287512Sdim}
6265287512Sdim
6266287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
6267287512Sdimvec_cntlz(vector unsigned long long __a) {
6268287512Sdim  return __builtin_s390_vclzg(__a);
6269287512Sdim}
6270287512Sdim
6271287512Sdim/*-- vec_cnttz --------------------------------------------------------------*/
6272287512Sdim
6273287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
6274287512Sdimvec_cnttz(vector signed char __a) {
6275287512Sdim  return __builtin_s390_vctzb((vector unsigned char)__a);
6276287512Sdim}
6277287512Sdim
6278287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
6279287512Sdimvec_cnttz(vector unsigned char __a) {
6280287512Sdim  return __builtin_s390_vctzb(__a);
6281287512Sdim}
6282287512Sdim
6283287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
6284287512Sdimvec_cnttz(vector signed short __a) {
6285287512Sdim  return __builtin_s390_vctzh((vector unsigned short)__a);
6286287512Sdim}
6287287512Sdim
6288287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
6289287512Sdimvec_cnttz(vector unsigned short __a) {
6290287512Sdim  return __builtin_s390_vctzh(__a);
6291287512Sdim}
6292287512Sdim
6293287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
6294287512Sdimvec_cnttz(vector signed int __a) {
6295287512Sdim  return __builtin_s390_vctzf((vector unsigned int)__a);
6296287512Sdim}
6297287512Sdim
6298287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
6299287512Sdimvec_cnttz(vector unsigned int __a) {
6300287512Sdim  return __builtin_s390_vctzf(__a);
6301287512Sdim}
6302287512Sdim
6303287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
6304287512Sdimvec_cnttz(vector signed long long __a) {
6305287512Sdim  return __builtin_s390_vctzg((vector unsigned long long)__a);
6306287512Sdim}
6307287512Sdim
6308287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
6309287512Sdimvec_cnttz(vector unsigned long long __a) {
6310287512Sdim  return __builtin_s390_vctzg(__a);
6311287512Sdim}
6312287512Sdim
6313287512Sdim/*-- vec_popcnt -------------------------------------------------------------*/
6314287512Sdim
6315287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
6316287512Sdimvec_popcnt(vector signed char __a) {
6317287512Sdim  return __builtin_s390_vpopctb((vector unsigned char)__a);
6318287512Sdim}
6319287512Sdim
6320287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
6321287512Sdimvec_popcnt(vector unsigned char __a) {
6322287512Sdim  return __builtin_s390_vpopctb(__a);
6323287512Sdim}
6324287512Sdim
6325287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
6326287512Sdimvec_popcnt(vector signed short __a) {
6327287512Sdim  return __builtin_s390_vpopcth((vector unsigned short)__a);
6328287512Sdim}
6329287512Sdim
6330287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
6331287512Sdimvec_popcnt(vector unsigned short __a) {
6332287512Sdim  return __builtin_s390_vpopcth(__a);
6333287512Sdim}
6334287512Sdim
6335287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
6336287512Sdimvec_popcnt(vector signed int __a) {
6337287512Sdim  return __builtin_s390_vpopctf((vector unsigned int)__a);
6338287512Sdim}
6339287512Sdim
6340287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
6341287512Sdimvec_popcnt(vector unsigned int __a) {
6342287512Sdim  return __builtin_s390_vpopctf(__a);
6343287512Sdim}
6344287512Sdim
6345287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
6346287512Sdimvec_popcnt(vector signed long long __a) {
6347287512Sdim  return __builtin_s390_vpopctg((vector unsigned long long)__a);
6348287512Sdim}
6349287512Sdim
6350287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
6351287512Sdimvec_popcnt(vector unsigned long long __a) {
6352287512Sdim  return __builtin_s390_vpopctg(__a);
6353287512Sdim}
6354287512Sdim
6355287512Sdim/*-- vec_rl -----------------------------------------------------------------*/
6356287512Sdim
6357287512Sdimstatic inline __ATTRS_o_ai vector signed char
6358287512Sdimvec_rl(vector signed char __a, vector unsigned char __b) {
6359287512Sdim  return (vector signed char)__builtin_s390_verllvb(
6360287512Sdim    (vector unsigned char)__a, __b);
6361287512Sdim}
6362287512Sdim
6363287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
6364287512Sdimvec_rl(vector unsigned char __a, vector unsigned char __b) {
6365287512Sdim  return __builtin_s390_verllvb(__a, __b);
6366287512Sdim}
6367287512Sdim
6368287512Sdimstatic inline __ATTRS_o_ai vector signed short
6369287512Sdimvec_rl(vector signed short __a, vector unsigned short __b) {
6370287512Sdim  return (vector signed short)__builtin_s390_verllvh(
6371287512Sdim    (vector unsigned short)__a, __b);
6372287512Sdim}
6373287512Sdim
6374287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
6375287512Sdimvec_rl(vector unsigned short __a, vector unsigned short __b) {
6376287512Sdim  return __builtin_s390_verllvh(__a, __b);
6377287512Sdim}
6378287512Sdim
6379287512Sdimstatic inline __ATTRS_o_ai vector signed int
6380287512Sdimvec_rl(vector signed int __a, vector unsigned int __b) {
6381287512Sdim  return (vector signed int)__builtin_s390_verllvf(
6382287512Sdim    (vector unsigned int)__a, __b);
6383287512Sdim}
6384287512Sdim
6385287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
6386287512Sdimvec_rl(vector unsigned int __a, vector unsigned int __b) {
6387287512Sdim  return __builtin_s390_verllvf(__a, __b);
6388287512Sdim}
6389287512Sdim
6390287512Sdimstatic inline __ATTRS_o_ai vector signed long long
6391287512Sdimvec_rl(vector signed long long __a, vector unsigned long long __b) {
6392287512Sdim  return (vector signed long long)__builtin_s390_verllvg(
6393287512Sdim    (vector unsigned long long)__a, __b);
6394287512Sdim}
6395287512Sdim
6396287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
6397287512Sdimvec_rl(vector unsigned long long __a, vector unsigned long long __b) {
6398287512Sdim  return __builtin_s390_verllvg(__a, __b);
6399287512Sdim}
6400287512Sdim
6401287512Sdim/*-- vec_rli ----------------------------------------------------------------*/
6402287512Sdim
6403287512Sdimstatic inline __ATTRS_o_ai vector signed char
6404287512Sdimvec_rli(vector signed char __a, unsigned long __b) {
6405287512Sdim  return (vector signed char)__builtin_s390_verllb(
6406287512Sdim    (vector unsigned char)__a, (int)__b);
6407287512Sdim}
6408287512Sdim
6409287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
6410287512Sdimvec_rli(vector unsigned char __a, unsigned long __b) {
6411287512Sdim  return __builtin_s390_verllb(__a, (int)__b);
6412287512Sdim}
6413287512Sdim
6414287512Sdimstatic inline __ATTRS_o_ai vector signed short
6415287512Sdimvec_rli(vector signed short __a, unsigned long __b) {
6416287512Sdim  return (vector signed short)__builtin_s390_verllh(
6417287512Sdim    (vector unsigned short)__a, (int)__b);
6418287512Sdim}
6419287512Sdim
6420287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
6421287512Sdimvec_rli(vector unsigned short __a, unsigned long __b) {
6422287512Sdim  return __builtin_s390_verllh(__a, (int)__b);
6423287512Sdim}
6424287512Sdim
6425287512Sdimstatic inline __ATTRS_o_ai vector signed int
6426287512Sdimvec_rli(vector signed int __a, unsigned long __b) {
6427287512Sdim  return (vector signed int)__builtin_s390_verllf(
6428287512Sdim    (vector unsigned int)__a, (int)__b);
6429287512Sdim}
6430287512Sdim
6431287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
6432287512Sdimvec_rli(vector unsigned int __a, unsigned long __b) {
6433287512Sdim  return __builtin_s390_verllf(__a, (int)__b);
6434287512Sdim}
6435287512Sdim
6436287512Sdimstatic inline __ATTRS_o_ai vector signed long long
6437287512Sdimvec_rli(vector signed long long __a, unsigned long __b) {
6438287512Sdim  return (vector signed long long)__builtin_s390_verllg(
6439287512Sdim    (vector unsigned long long)__a, (int)__b);
6440287512Sdim}
6441287512Sdim
6442287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
6443287512Sdimvec_rli(vector unsigned long long __a, unsigned long __b) {
6444287512Sdim  return __builtin_s390_verllg(__a, (int)__b);
6445287512Sdim}
6446287512Sdim
6447287512Sdim/*-- vec_rl_mask ------------------------------------------------------------*/
6448287512Sdim
6449287512Sdimextern __ATTRS_o vector signed char
6450287512Sdimvec_rl_mask(vector signed char __a, vector unsigned char __b,
6451287512Sdim            unsigned char __c) __constant(__c);
6452287512Sdim
6453287512Sdimextern __ATTRS_o vector unsigned char
6454287512Sdimvec_rl_mask(vector unsigned char __a, vector unsigned char __b,
6455287512Sdim            unsigned char __c) __constant(__c);
6456287512Sdim
6457287512Sdimextern __ATTRS_o vector signed short
6458287512Sdimvec_rl_mask(vector signed short __a, vector unsigned short __b,
6459287512Sdim            unsigned char __c) __constant(__c);
6460287512Sdim
6461287512Sdimextern __ATTRS_o vector unsigned short
6462287512Sdimvec_rl_mask(vector unsigned short __a, vector unsigned short __b,
6463287512Sdim            unsigned char __c) __constant(__c);
6464287512Sdim
6465287512Sdimextern __ATTRS_o vector signed int
6466287512Sdimvec_rl_mask(vector signed int __a, vector unsigned int __b,
6467287512Sdim            unsigned char __c) __constant(__c);
6468287512Sdim
6469287512Sdimextern __ATTRS_o vector unsigned int
6470287512Sdimvec_rl_mask(vector unsigned int __a, vector unsigned int __b,
6471287512Sdim            unsigned char __c) __constant(__c);
6472287512Sdim
6473287512Sdimextern __ATTRS_o vector signed long long
6474287512Sdimvec_rl_mask(vector signed long long __a, vector unsigned long long __b,
6475287512Sdim            unsigned char __c) __constant(__c);
6476287512Sdim
6477287512Sdimextern __ATTRS_o vector unsigned long long
6478287512Sdimvec_rl_mask(vector unsigned long long __a, vector unsigned long long __b,
6479287512Sdim            unsigned char __c) __constant(__c);
6480287512Sdim
6481287512Sdim#define vec_rl_mask(X, Y, Z) ((__typeof__((vec_rl_mask)((X), (Y), (Z)))) \
6482287512Sdim  __extension__ ({ \
6483287512Sdim    vector unsigned char __res; \
6484287512Sdim    vector unsigned char __x = (vector unsigned char)(X); \
6485287512Sdim    vector unsigned char __y = (vector unsigned char)(Y); \
6486287512Sdim    switch (sizeof ((X)[0])) { \
6487287512Sdim    case 1: __res = (vector unsigned char) __builtin_s390_verimb( \
6488287512Sdim             (vector unsigned char)__x, (vector unsigned char)__x, \
6489287512Sdim             (vector unsigned char)__y, (Z)); break; \
6490287512Sdim    case 2: __res = (vector unsigned char) __builtin_s390_verimh( \
6491287512Sdim             (vector unsigned short)__x, (vector unsigned short)__x, \
6492287512Sdim             (vector unsigned short)__y, (Z)); break; \
6493287512Sdim    case 4: __res = (vector unsigned char) __builtin_s390_verimf( \
6494287512Sdim             (vector unsigned int)__x, (vector unsigned int)__x, \
6495287512Sdim             (vector unsigned int)__y, (Z)); break; \
6496287512Sdim    default: __res = (vector unsigned char) __builtin_s390_verimg( \
6497287512Sdim             (vector unsigned long long)__x, (vector unsigned long long)__x, \
6498287512Sdim             (vector unsigned long long)__y, (Z)); break; \
6499287512Sdim    } __res; }))
6500287512Sdim
6501287512Sdim/*-- vec_sll ----------------------------------------------------------------*/
6502287512Sdim
6503287512Sdimstatic inline __ATTRS_o_ai vector signed char
6504287512Sdimvec_sll(vector signed char __a, vector unsigned char __b) {
6505287512Sdim  return (vector signed char)__builtin_s390_vsl(
6506287512Sdim    (vector unsigned char)__a, __b);
6507287512Sdim}
6508287512Sdim
6509321369Sdim// This prototype is deprecated.
6510287512Sdimstatic inline __ATTRS_o_ai vector signed char
6511287512Sdimvec_sll(vector signed char __a, vector unsigned short __b) {
6512287512Sdim  return (vector signed char)__builtin_s390_vsl(
6513287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6514287512Sdim}
6515287512Sdim
6516321369Sdim// This prototype is deprecated.
6517287512Sdimstatic inline __ATTRS_o_ai vector signed char
6518287512Sdimvec_sll(vector signed char __a, vector unsigned int __b) {
6519287512Sdim  return (vector signed char)__builtin_s390_vsl(
6520287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6521287512Sdim}
6522287512Sdim
6523321369Sdim// This prototype is deprecated.
6524287512Sdimstatic inline __ATTRS_o_ai vector bool char
6525287512Sdimvec_sll(vector bool char __a, vector unsigned char __b) {
6526287512Sdim  return (vector bool char)__builtin_s390_vsl(
6527287512Sdim    (vector unsigned char)__a, __b);
6528287512Sdim}
6529287512Sdim
6530321369Sdim// This prototype is deprecated.
6531287512Sdimstatic inline __ATTRS_o_ai vector bool char
6532287512Sdimvec_sll(vector bool char __a, vector unsigned short __b) {
6533287512Sdim  return (vector bool char)__builtin_s390_vsl(
6534287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6535287512Sdim}
6536287512Sdim
6537321369Sdim// This prototype is deprecated.
6538287512Sdimstatic inline __ATTRS_o_ai vector bool char
6539287512Sdimvec_sll(vector bool char __a, vector unsigned int __b) {
6540287512Sdim  return (vector bool char)__builtin_s390_vsl(
6541287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6542287512Sdim}
6543287512Sdim
6544287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
6545287512Sdimvec_sll(vector unsigned char __a, vector unsigned char __b) {
6546287512Sdim  return __builtin_s390_vsl(__a, __b);
6547287512Sdim}
6548287512Sdim
6549321369Sdim// This prototype is deprecated.
6550287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
6551287512Sdimvec_sll(vector unsigned char __a, vector unsigned short __b) {
6552287512Sdim  return __builtin_s390_vsl(__a, (vector unsigned char)__b);
6553287512Sdim}
6554287512Sdim
6555321369Sdim// This prototype is deprecated.
6556287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
6557287512Sdimvec_sll(vector unsigned char __a, vector unsigned int __b) {
6558287512Sdim  return __builtin_s390_vsl(__a, (vector unsigned char)__b);
6559287512Sdim}
6560287512Sdim
6561287512Sdimstatic inline __ATTRS_o_ai vector signed short
6562287512Sdimvec_sll(vector signed short __a, vector unsigned char __b) {
6563287512Sdim  return (vector signed short)__builtin_s390_vsl(
6564287512Sdim    (vector unsigned char)__a, __b);
6565287512Sdim}
6566287512Sdim
6567321369Sdim// This prototype is deprecated.
6568287512Sdimstatic inline __ATTRS_o_ai vector signed short
6569287512Sdimvec_sll(vector signed short __a, vector unsigned short __b) {
6570287512Sdim  return (vector signed short)__builtin_s390_vsl(
6571287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6572287512Sdim}
6573287512Sdim
6574321369Sdim// This prototype is deprecated.
6575287512Sdimstatic inline __ATTRS_o_ai vector signed short
6576287512Sdimvec_sll(vector signed short __a, vector unsigned int __b) {
6577287512Sdim  return (vector signed short)__builtin_s390_vsl(
6578287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6579287512Sdim}
6580287512Sdim
6581321369Sdim// This prototype is deprecated.
6582287512Sdimstatic inline __ATTRS_o_ai vector bool short
6583287512Sdimvec_sll(vector bool short __a, vector unsigned char __b) {
6584287512Sdim  return (vector bool short)__builtin_s390_vsl(
6585287512Sdim    (vector unsigned char)__a, __b);
6586287512Sdim}
6587287512Sdim
6588321369Sdim// This prototype is deprecated.
6589287512Sdimstatic inline __ATTRS_o_ai vector bool short
6590287512Sdimvec_sll(vector bool short __a, vector unsigned short __b) {
6591287512Sdim  return (vector bool short)__builtin_s390_vsl(
6592287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6593287512Sdim}
6594287512Sdim
6595321369Sdim// This prototype is deprecated.
6596287512Sdimstatic inline __ATTRS_o_ai vector bool short
6597287512Sdimvec_sll(vector bool short __a, vector unsigned int __b) {
6598287512Sdim  return (vector bool short)__builtin_s390_vsl(
6599287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6600287512Sdim}
6601287512Sdim
6602287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
6603287512Sdimvec_sll(vector unsigned short __a, vector unsigned char __b) {
6604287512Sdim  return (vector unsigned short)__builtin_s390_vsl(
6605287512Sdim    (vector unsigned char)__a, __b);
6606287512Sdim}
6607287512Sdim
6608321369Sdim// This prototype is deprecated.
6609287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
6610287512Sdimvec_sll(vector unsigned short __a, vector unsigned short __b) {
6611287512Sdim  return (vector unsigned short)__builtin_s390_vsl(
6612287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6613287512Sdim}
6614287512Sdim
6615321369Sdim// This prototype is deprecated.
6616287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
6617287512Sdimvec_sll(vector unsigned short __a, vector unsigned int __b) {
6618287512Sdim  return (vector unsigned short)__builtin_s390_vsl(
6619287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6620287512Sdim}
6621287512Sdim
6622287512Sdimstatic inline __ATTRS_o_ai vector signed int
6623287512Sdimvec_sll(vector signed int __a, vector unsigned char __b) {
6624287512Sdim  return (vector signed int)__builtin_s390_vsl(
6625287512Sdim    (vector unsigned char)__a, __b);
6626287512Sdim}
6627287512Sdim
6628321369Sdim// This prototype is deprecated.
6629287512Sdimstatic inline __ATTRS_o_ai vector signed int
6630287512Sdimvec_sll(vector signed int __a, vector unsigned short __b) {
6631287512Sdim  return (vector signed int)__builtin_s390_vsl(
6632287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6633287512Sdim}
6634287512Sdim
6635321369Sdim// This prototype is deprecated.
6636287512Sdimstatic inline __ATTRS_o_ai vector signed int
6637287512Sdimvec_sll(vector signed int __a, vector unsigned int __b) {
6638287512Sdim  return (vector signed int)__builtin_s390_vsl(
6639287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6640287512Sdim}
6641287512Sdim
6642321369Sdim// This prototype is deprecated.
6643287512Sdimstatic inline __ATTRS_o_ai vector bool int
6644287512Sdimvec_sll(vector bool int __a, vector unsigned char __b) {
6645287512Sdim  return (vector bool int)__builtin_s390_vsl(
6646287512Sdim    (vector unsigned char)__a, __b);
6647287512Sdim}
6648287512Sdim
6649321369Sdim// This prototype is deprecated.
6650287512Sdimstatic inline __ATTRS_o_ai vector bool int
6651287512Sdimvec_sll(vector bool int __a, vector unsigned short __b) {
6652287512Sdim  return (vector bool int)__builtin_s390_vsl(
6653287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6654287512Sdim}
6655287512Sdim
6656321369Sdim// This prototype is deprecated.
6657287512Sdimstatic inline __ATTRS_o_ai vector bool int
6658287512Sdimvec_sll(vector bool int __a, vector unsigned int __b) {
6659287512Sdim  return (vector bool int)__builtin_s390_vsl(
6660287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6661287512Sdim}
6662287512Sdim
6663287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
6664287512Sdimvec_sll(vector unsigned int __a, vector unsigned char __b) {
6665287512Sdim  return (vector unsigned int)__builtin_s390_vsl(
6666287512Sdim    (vector unsigned char)__a, __b);
6667287512Sdim}
6668287512Sdim
6669321369Sdim// This prototype is deprecated.
6670287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
6671287512Sdimvec_sll(vector unsigned int __a, vector unsigned short __b) {
6672287512Sdim  return (vector unsigned int)__builtin_s390_vsl(
6673287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6674287512Sdim}
6675287512Sdim
6676321369Sdim// This prototype is deprecated.
6677287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
6678287512Sdimvec_sll(vector unsigned int __a, vector unsigned int __b) {
6679287512Sdim  return (vector unsigned int)__builtin_s390_vsl(
6680287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6681287512Sdim}
6682287512Sdim
6683287512Sdimstatic inline __ATTRS_o_ai vector signed long long
6684287512Sdimvec_sll(vector signed long long __a, vector unsigned char __b) {
6685287512Sdim  return (vector signed long long)__builtin_s390_vsl(
6686287512Sdim    (vector unsigned char)__a, __b);
6687287512Sdim}
6688287512Sdim
6689321369Sdim// This prototype is deprecated.
6690287512Sdimstatic inline __ATTRS_o_ai vector signed long long
6691287512Sdimvec_sll(vector signed long long __a, vector unsigned short __b) {
6692287512Sdim  return (vector signed long long)__builtin_s390_vsl(
6693287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6694287512Sdim}
6695287512Sdim
6696321369Sdim// This prototype is deprecated.
6697287512Sdimstatic inline __ATTRS_o_ai vector signed long long
6698287512Sdimvec_sll(vector signed long long __a, vector unsigned int __b) {
6699287512Sdim  return (vector signed long long)__builtin_s390_vsl(
6700287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6701287512Sdim}
6702287512Sdim
6703321369Sdim// This prototype is deprecated.
6704287512Sdimstatic inline __ATTRS_o_ai vector bool long long
6705287512Sdimvec_sll(vector bool long long __a, vector unsigned char __b) {
6706287512Sdim  return (vector bool long long)__builtin_s390_vsl(
6707287512Sdim    (vector unsigned char)__a, __b);
6708287512Sdim}
6709287512Sdim
6710321369Sdim// This prototype is deprecated.
6711287512Sdimstatic inline __ATTRS_o_ai vector bool long long
6712287512Sdimvec_sll(vector bool long long __a, vector unsigned short __b) {
6713287512Sdim  return (vector bool long long)__builtin_s390_vsl(
6714287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6715287512Sdim}
6716287512Sdim
6717321369Sdim// This prototype is deprecated.
6718287512Sdimstatic inline __ATTRS_o_ai vector bool long long
6719287512Sdimvec_sll(vector bool long long __a, vector unsigned int __b) {
6720287512Sdim  return (vector bool long long)__builtin_s390_vsl(
6721287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6722287512Sdim}
6723287512Sdim
6724287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
6725287512Sdimvec_sll(vector unsigned long long __a, vector unsigned char __b) {
6726287512Sdim  return (vector unsigned long long)__builtin_s390_vsl(
6727287512Sdim    (vector unsigned char)__a, __b);
6728287512Sdim}
6729287512Sdim
6730321369Sdim// This prototype is deprecated.
6731287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
6732287512Sdimvec_sll(vector unsigned long long __a, vector unsigned short __b) {
6733287512Sdim  return (vector unsigned long long)__builtin_s390_vsl(
6734287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6735287512Sdim}
6736287512Sdim
6737321369Sdim// This prototype is deprecated.
6738287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
6739287512Sdimvec_sll(vector unsigned long long __a, vector unsigned int __b) {
6740287512Sdim  return (vector unsigned long long)__builtin_s390_vsl(
6741287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6742287512Sdim}
6743287512Sdim
6744287512Sdim/*-- vec_slb ----------------------------------------------------------------*/
6745287512Sdim
6746287512Sdimstatic inline __ATTRS_o_ai vector signed char
6747287512Sdimvec_slb(vector signed char __a, vector signed char __b) {
6748287512Sdim  return (vector signed char)__builtin_s390_vslb(
6749287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6750287512Sdim}
6751287512Sdim
6752287512Sdimstatic inline __ATTRS_o_ai vector signed char
6753287512Sdimvec_slb(vector signed char __a, vector unsigned char __b) {
6754287512Sdim  return (vector signed char)__builtin_s390_vslb(
6755287512Sdim    (vector unsigned char)__a, __b);
6756287512Sdim}
6757287512Sdim
6758287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
6759287512Sdimvec_slb(vector unsigned char __a, vector signed char __b) {
6760287512Sdim  return __builtin_s390_vslb(__a, (vector unsigned char)__b);
6761287512Sdim}
6762287512Sdim
6763287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
6764287512Sdimvec_slb(vector unsigned char __a, vector unsigned char __b) {
6765287512Sdim  return __builtin_s390_vslb(__a, __b);
6766287512Sdim}
6767287512Sdim
6768287512Sdimstatic inline __ATTRS_o_ai vector signed short
6769287512Sdimvec_slb(vector signed short __a, vector signed short __b) {
6770287512Sdim  return (vector signed short)__builtin_s390_vslb(
6771287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6772287512Sdim}
6773287512Sdim
6774287512Sdimstatic inline __ATTRS_o_ai vector signed short
6775287512Sdimvec_slb(vector signed short __a, vector unsigned short __b) {
6776287512Sdim  return (vector signed short)__builtin_s390_vslb(
6777287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6778287512Sdim}
6779287512Sdim
6780287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
6781287512Sdimvec_slb(vector unsigned short __a, vector signed short __b) {
6782287512Sdim  return (vector unsigned short)__builtin_s390_vslb(
6783287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6784287512Sdim}
6785287512Sdim
6786287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
6787287512Sdimvec_slb(vector unsigned short __a, vector unsigned short __b) {
6788287512Sdim  return (vector unsigned short)__builtin_s390_vslb(
6789287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6790287512Sdim}
6791287512Sdim
6792287512Sdimstatic inline __ATTRS_o_ai vector signed int
6793287512Sdimvec_slb(vector signed int __a, vector signed int __b) {
6794287512Sdim  return (vector signed int)__builtin_s390_vslb(
6795287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6796287512Sdim}
6797287512Sdim
6798287512Sdimstatic inline __ATTRS_o_ai vector signed int
6799287512Sdimvec_slb(vector signed int __a, vector unsigned int __b) {
6800287512Sdim  return (vector signed int)__builtin_s390_vslb(
6801287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6802287512Sdim}
6803287512Sdim
6804287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
6805287512Sdimvec_slb(vector unsigned int __a, vector signed int __b) {
6806287512Sdim  return (vector unsigned int)__builtin_s390_vslb(
6807287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6808287512Sdim}
6809287512Sdim
6810287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
6811287512Sdimvec_slb(vector unsigned int __a, vector unsigned int __b) {
6812287512Sdim  return (vector unsigned int)__builtin_s390_vslb(
6813287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6814287512Sdim}
6815287512Sdim
6816287512Sdimstatic inline __ATTRS_o_ai vector signed long long
6817287512Sdimvec_slb(vector signed long long __a, vector signed long long __b) {
6818287512Sdim  return (vector signed long long)__builtin_s390_vslb(
6819287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6820287512Sdim}
6821287512Sdim
6822287512Sdimstatic inline __ATTRS_o_ai vector signed long long
6823287512Sdimvec_slb(vector signed long long __a, vector unsigned long long __b) {
6824287512Sdim  return (vector signed long long)__builtin_s390_vslb(
6825287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6826287512Sdim}
6827287512Sdim
6828287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
6829287512Sdimvec_slb(vector unsigned long long __a, vector signed long long __b) {
6830287512Sdim  return (vector unsigned long long)__builtin_s390_vslb(
6831287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6832287512Sdim}
6833287512Sdim
6834287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
6835287512Sdimvec_slb(vector unsigned long long __a, vector unsigned long long __b) {
6836287512Sdim  return (vector unsigned long long)__builtin_s390_vslb(
6837287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6838287512Sdim}
6839287512Sdim
6840321369Sdim#if __ARCH__ >= 12
6841321369Sdimstatic inline __ATTRS_o_ai vector float
6842321369Sdimvec_slb(vector float __a, vector signed int __b) {
6843321369Sdim  return (vector float)__builtin_s390_vslb(
6844321369Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6845321369Sdim}
6846321369Sdim
6847321369Sdimstatic inline __ATTRS_o_ai vector float
6848321369Sdimvec_slb(vector float __a, vector unsigned int __b) {
6849321369Sdim  return (vector float)__builtin_s390_vslb(
6850321369Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6851321369Sdim}
6852321369Sdim#endif
6853321369Sdim
6854287512Sdimstatic inline __ATTRS_o_ai vector double
6855287512Sdimvec_slb(vector double __a, vector signed long long __b) {
6856287512Sdim  return (vector double)__builtin_s390_vslb(
6857287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6858287512Sdim}
6859287512Sdim
6860287512Sdimstatic inline __ATTRS_o_ai vector double
6861287512Sdimvec_slb(vector double __a, vector unsigned long long __b) {
6862287512Sdim  return (vector double)__builtin_s390_vslb(
6863287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
6864287512Sdim}
6865287512Sdim
6866287512Sdim/*-- vec_sld ----------------------------------------------------------------*/
6867287512Sdim
6868287512Sdimextern __ATTRS_o vector signed char
6869287512Sdimvec_sld(vector signed char __a, vector signed char __b, int __c)
6870287512Sdim  __constant_range(__c, 0, 15);
6871287512Sdim
6872321369Sdimextern __ATTRS_o vector bool char
6873321369Sdimvec_sld(vector bool char __a, vector bool char __b, int __c)
6874321369Sdim  __constant_range(__c, 0, 15);
6875321369Sdim
6876287512Sdimextern __ATTRS_o vector unsigned char
6877287512Sdimvec_sld(vector unsigned char __a, vector unsigned char __b, int __c)
6878287512Sdim  __constant_range(__c, 0, 15);
6879287512Sdim
6880287512Sdimextern __ATTRS_o vector signed short
6881287512Sdimvec_sld(vector signed short __a, vector signed short __b, int __c)
6882287512Sdim  __constant_range(__c, 0, 15);
6883287512Sdim
6884321369Sdimextern __ATTRS_o vector bool short
6885321369Sdimvec_sld(vector bool short __a, vector bool short __b, int __c)
6886321369Sdim  __constant_range(__c, 0, 15);
6887321369Sdim
6888287512Sdimextern __ATTRS_o vector unsigned short
6889287512Sdimvec_sld(vector unsigned short __a, vector unsigned short __b, int __c)
6890287512Sdim  __constant_range(__c, 0, 15);
6891287512Sdim
6892287512Sdimextern __ATTRS_o vector signed int
6893287512Sdimvec_sld(vector signed int __a, vector signed int __b, int __c)
6894287512Sdim  __constant_range(__c, 0, 15);
6895287512Sdim
6896321369Sdimextern __ATTRS_o vector bool int
6897321369Sdimvec_sld(vector bool int __a, vector bool int __b, int __c)
6898321369Sdim  __constant_range(__c, 0, 15);
6899321369Sdim
6900287512Sdimextern __ATTRS_o vector unsigned int
6901287512Sdimvec_sld(vector unsigned int __a, vector unsigned int __b, int __c)
6902287512Sdim  __constant_range(__c, 0, 15);
6903287512Sdim
6904287512Sdimextern __ATTRS_o vector signed long long
6905287512Sdimvec_sld(vector signed long long __a, vector signed long long __b, int __c)
6906287512Sdim  __constant_range(__c, 0, 15);
6907287512Sdim
6908321369Sdimextern __ATTRS_o vector bool long long
6909321369Sdimvec_sld(vector bool long long __a, vector bool long long __b, int __c)
6910321369Sdim  __constant_range(__c, 0, 15);
6911321369Sdim
6912287512Sdimextern __ATTRS_o vector unsigned long long
6913287512Sdimvec_sld(vector unsigned long long __a, vector unsigned long long __b, int __c)
6914287512Sdim  __constant_range(__c, 0, 15);
6915287512Sdim
6916321369Sdim#if __ARCH__ >= 12
6917321369Sdimextern __ATTRS_o vector float
6918321369Sdimvec_sld(vector float __a, vector float __b, int __c)
6919321369Sdim  __constant_range(__c, 0, 15);
6920321369Sdim#endif
6921321369Sdim
6922287512Sdimextern __ATTRS_o vector double
6923287512Sdimvec_sld(vector double __a, vector double __b, int __c)
6924287512Sdim  __constant_range(__c, 0, 15);
6925287512Sdim
6926287512Sdim#define vec_sld(X, Y, Z) ((__typeof__((vec_sld)((X), (Y), (Z)))) \
6927287512Sdim  __builtin_s390_vsldb((vector unsigned char)(X), \
6928287512Sdim                       (vector unsigned char)(Y), (Z)))
6929287512Sdim
6930287512Sdim/*-- vec_sldw ---------------------------------------------------------------*/
6931287512Sdim
6932287512Sdimextern __ATTRS_o vector signed char
6933287512Sdimvec_sldw(vector signed char __a, vector signed char __b, int __c)
6934287512Sdim  __constant_range(__c, 0, 3);
6935287512Sdim
6936287512Sdimextern __ATTRS_o vector unsigned char
6937287512Sdimvec_sldw(vector unsigned char __a, vector unsigned char __b, int __c)
6938287512Sdim  __constant_range(__c, 0, 3);
6939287512Sdim
6940287512Sdimextern __ATTRS_o vector signed short
6941287512Sdimvec_sldw(vector signed short __a, vector signed short __b, int __c)
6942287512Sdim  __constant_range(__c, 0, 3);
6943287512Sdim
6944287512Sdimextern __ATTRS_o vector unsigned short
6945287512Sdimvec_sldw(vector unsigned short __a, vector unsigned short __b, int __c)
6946287512Sdim  __constant_range(__c, 0, 3);
6947287512Sdim
6948287512Sdimextern __ATTRS_o vector signed int
6949287512Sdimvec_sldw(vector signed int __a, vector signed int __b, int __c)
6950287512Sdim  __constant_range(__c, 0, 3);
6951287512Sdim
6952287512Sdimextern __ATTRS_o vector unsigned int
6953287512Sdimvec_sldw(vector unsigned int __a, vector unsigned int __b, int __c)
6954287512Sdim  __constant_range(__c, 0, 3);
6955287512Sdim
6956287512Sdimextern __ATTRS_o vector signed long long
6957287512Sdimvec_sldw(vector signed long long __a, vector signed long long __b, int __c)
6958287512Sdim  __constant_range(__c, 0, 3);
6959287512Sdim
6960287512Sdimextern __ATTRS_o vector unsigned long long
6961287512Sdimvec_sldw(vector unsigned long long __a, vector unsigned long long __b, int __c)
6962287512Sdim  __constant_range(__c, 0, 3);
6963287512Sdim
6964321369Sdim// This prototype is deprecated.
6965287512Sdimextern __ATTRS_o vector double
6966287512Sdimvec_sldw(vector double __a, vector double __b, int __c)
6967287512Sdim  __constant_range(__c, 0, 3);
6968287512Sdim
6969287512Sdim#define vec_sldw(X, Y, Z) ((__typeof__((vec_sldw)((X), (Y), (Z)))) \
6970287512Sdim  __builtin_s390_vsldb((vector unsigned char)(X), \
6971287512Sdim                       (vector unsigned char)(Y), (Z) * 4))
6972287512Sdim
6973353358Sdim/*-- vec_sldb ---------------------------------------------------------------*/
6974353358Sdim
6975353358Sdim#if __ARCH__ >= 13
6976353358Sdim
6977353358Sdimextern __ATTRS_o vector signed char
6978353358Sdimvec_sldb(vector signed char __a, vector signed char __b, int __c)
6979353358Sdim  __constant_range(__c, 0, 7);
6980353358Sdim
6981353358Sdimextern __ATTRS_o vector unsigned char
6982353358Sdimvec_sldb(vector unsigned char __a, vector unsigned char __b, int __c)
6983353358Sdim  __constant_range(__c, 0, 7);
6984353358Sdim
6985353358Sdimextern __ATTRS_o vector signed short
6986353358Sdimvec_sldb(vector signed short __a, vector signed short __b, int __c)
6987353358Sdim  __constant_range(__c, 0, 7);
6988353358Sdim
6989353358Sdimextern __ATTRS_o vector unsigned short
6990353358Sdimvec_sldb(vector unsigned short __a, vector unsigned short __b, int __c)
6991353358Sdim  __constant_range(__c, 0, 7);
6992353358Sdim
6993353358Sdimextern __ATTRS_o vector signed int
6994353358Sdimvec_sldb(vector signed int __a, vector signed int __b, int __c)
6995353358Sdim  __constant_range(__c, 0, 7);
6996353358Sdim
6997353358Sdimextern __ATTRS_o vector unsigned int
6998353358Sdimvec_sldb(vector unsigned int __a, vector unsigned int __b, int __c)
6999353358Sdim  __constant_range(__c, 0, 7);
7000353358Sdim
7001353358Sdimextern __ATTRS_o vector signed long long
7002353358Sdimvec_sldb(vector signed long long __a, vector signed long long __b, int __c)
7003353358Sdim  __constant_range(__c, 0, 7);
7004353358Sdim
7005353358Sdimextern __ATTRS_o vector unsigned long long
7006353358Sdimvec_sldb(vector unsigned long long __a, vector unsigned long long __b, int __c)
7007353358Sdim  __constant_range(__c, 0, 7);
7008353358Sdim
7009353358Sdimextern __ATTRS_o vector float
7010353358Sdimvec_sldb(vector float __a, vector float __b, int __c)
7011353358Sdim  __constant_range(__c, 0, 7);
7012353358Sdim
7013353358Sdimextern __ATTRS_o vector double
7014353358Sdimvec_sldb(vector double __a, vector double __b, int __c)
7015353358Sdim  __constant_range(__c, 0, 7);
7016353358Sdim
7017353358Sdim#define vec_sldb(X, Y, Z) ((__typeof__((vec_sldb)((X), (Y), (Z)))) \
7018353358Sdim  __builtin_s390_vsld((vector unsigned char)(X), \
7019353358Sdim                      (vector unsigned char)(Y), (Z)))
7020353358Sdim
7021353358Sdim#endif
7022353358Sdim
7023287512Sdim/*-- vec_sral ---------------------------------------------------------------*/
7024287512Sdim
7025287512Sdimstatic inline __ATTRS_o_ai vector signed char
7026287512Sdimvec_sral(vector signed char __a, vector unsigned char __b) {
7027287512Sdim  return (vector signed char)__builtin_s390_vsra(
7028287512Sdim    (vector unsigned char)__a, __b);
7029287512Sdim}
7030287512Sdim
7031321369Sdim// This prototype is deprecated.
7032287512Sdimstatic inline __ATTRS_o_ai vector signed char
7033287512Sdimvec_sral(vector signed char __a, vector unsigned short __b) {
7034287512Sdim  return (vector signed char)__builtin_s390_vsra(
7035287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7036287512Sdim}
7037287512Sdim
7038321369Sdim// This prototype is deprecated.
7039287512Sdimstatic inline __ATTRS_o_ai vector signed char
7040287512Sdimvec_sral(vector signed char __a, vector unsigned int __b) {
7041287512Sdim  return (vector signed char)__builtin_s390_vsra(
7042287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7043287512Sdim}
7044287512Sdim
7045321369Sdim// This prototype is deprecated.
7046287512Sdimstatic inline __ATTRS_o_ai vector bool char
7047287512Sdimvec_sral(vector bool char __a, vector unsigned char __b) {
7048287512Sdim  return (vector bool char)__builtin_s390_vsra(
7049287512Sdim    (vector unsigned char)__a, __b);
7050287512Sdim}
7051287512Sdim
7052321369Sdim// This prototype is deprecated.
7053287512Sdimstatic inline __ATTRS_o_ai vector bool char
7054287512Sdimvec_sral(vector bool char __a, vector unsigned short __b) {
7055287512Sdim  return (vector bool char)__builtin_s390_vsra(
7056287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7057287512Sdim}
7058287512Sdim
7059321369Sdim// This prototype is deprecated.
7060287512Sdimstatic inline __ATTRS_o_ai vector bool char
7061287512Sdimvec_sral(vector bool char __a, vector unsigned int __b) {
7062287512Sdim  return (vector bool char)__builtin_s390_vsra(
7063287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7064287512Sdim}
7065287512Sdim
7066287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
7067287512Sdimvec_sral(vector unsigned char __a, vector unsigned char __b) {
7068287512Sdim  return __builtin_s390_vsra(__a, __b);
7069287512Sdim}
7070287512Sdim
7071321369Sdim// This prototype is deprecated.
7072287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
7073287512Sdimvec_sral(vector unsigned char __a, vector unsigned short __b) {
7074287512Sdim  return __builtin_s390_vsra(__a, (vector unsigned char)__b);
7075287512Sdim}
7076287512Sdim
7077321369Sdim// This prototype is deprecated.
7078287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
7079287512Sdimvec_sral(vector unsigned char __a, vector unsigned int __b) {
7080287512Sdim  return __builtin_s390_vsra(__a, (vector unsigned char)__b);
7081287512Sdim}
7082287512Sdim
7083287512Sdimstatic inline __ATTRS_o_ai vector signed short
7084287512Sdimvec_sral(vector signed short __a, vector unsigned char __b) {
7085287512Sdim  return (vector signed short)__builtin_s390_vsra(
7086287512Sdim    (vector unsigned char)__a, __b);
7087287512Sdim}
7088287512Sdim
7089321369Sdim// This prototype is deprecated.
7090287512Sdimstatic inline __ATTRS_o_ai vector signed short
7091287512Sdimvec_sral(vector signed short __a, vector unsigned short __b) {
7092287512Sdim  return (vector signed short)__builtin_s390_vsra(
7093287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7094287512Sdim}
7095287512Sdim
7096321369Sdim// This prototype is deprecated.
7097287512Sdimstatic inline __ATTRS_o_ai vector signed short
7098287512Sdimvec_sral(vector signed short __a, vector unsigned int __b) {
7099287512Sdim  return (vector signed short)__builtin_s390_vsra(
7100287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7101287512Sdim}
7102287512Sdim
7103321369Sdim// This prototype is deprecated.
7104287512Sdimstatic inline __ATTRS_o_ai vector bool short
7105287512Sdimvec_sral(vector bool short __a, vector unsigned char __b) {
7106287512Sdim  return (vector bool short)__builtin_s390_vsra(
7107287512Sdim    (vector unsigned char)__a, __b);
7108287512Sdim}
7109287512Sdim
7110321369Sdim// This prototype is deprecated.
7111287512Sdimstatic inline __ATTRS_o_ai vector bool short
7112287512Sdimvec_sral(vector bool short __a, vector unsigned short __b) {
7113287512Sdim  return (vector bool short)__builtin_s390_vsra(
7114287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7115287512Sdim}
7116287512Sdim
7117321369Sdim// This prototype is deprecated.
7118287512Sdimstatic inline __ATTRS_o_ai vector bool short
7119287512Sdimvec_sral(vector bool short __a, vector unsigned int __b) {
7120287512Sdim  return (vector bool short)__builtin_s390_vsra(
7121287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7122287512Sdim}
7123287512Sdim
7124287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
7125287512Sdimvec_sral(vector unsigned short __a, vector unsigned char __b) {
7126287512Sdim  return (vector unsigned short)__builtin_s390_vsra(
7127287512Sdim    (vector unsigned char)__a, __b);
7128287512Sdim}
7129287512Sdim
7130321369Sdim// This prototype is deprecated.
7131287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
7132287512Sdimvec_sral(vector unsigned short __a, vector unsigned short __b) {
7133287512Sdim  return (vector unsigned short)__builtin_s390_vsra(
7134287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7135287512Sdim}
7136287512Sdim
7137321369Sdim// This prototype is deprecated.
7138287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
7139287512Sdimvec_sral(vector unsigned short __a, vector unsigned int __b) {
7140287512Sdim  return (vector unsigned short)__builtin_s390_vsra(
7141287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7142287512Sdim}
7143287512Sdim
7144287512Sdimstatic inline __ATTRS_o_ai vector signed int
7145287512Sdimvec_sral(vector signed int __a, vector unsigned char __b) {
7146287512Sdim  return (vector signed int)__builtin_s390_vsra(
7147287512Sdim    (vector unsigned char)__a, __b);
7148287512Sdim}
7149287512Sdim
7150321369Sdim// This prototype is deprecated.
7151287512Sdimstatic inline __ATTRS_o_ai vector signed int
7152287512Sdimvec_sral(vector signed int __a, vector unsigned short __b) {
7153287512Sdim  return (vector signed int)__builtin_s390_vsra(
7154287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7155287512Sdim}
7156287512Sdim
7157321369Sdim// This prototype is deprecated.
7158287512Sdimstatic inline __ATTRS_o_ai vector signed int
7159287512Sdimvec_sral(vector signed int __a, vector unsigned int __b) {
7160287512Sdim  return (vector signed int)__builtin_s390_vsra(
7161287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7162287512Sdim}
7163287512Sdim
7164321369Sdim// This prototype is deprecated.
7165287512Sdimstatic inline __ATTRS_o_ai vector bool int
7166287512Sdimvec_sral(vector bool int __a, vector unsigned char __b) {
7167287512Sdim  return (vector bool int)__builtin_s390_vsra(
7168287512Sdim    (vector unsigned char)__a, __b);
7169287512Sdim}
7170287512Sdim
7171321369Sdim// This prototype is deprecated.
7172287512Sdimstatic inline __ATTRS_o_ai vector bool int
7173287512Sdimvec_sral(vector bool int __a, vector unsigned short __b) {
7174287512Sdim  return (vector bool int)__builtin_s390_vsra(
7175287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7176287512Sdim}
7177287512Sdim
7178321369Sdim// This prototype is deprecated.
7179287512Sdimstatic inline __ATTRS_o_ai vector bool int
7180287512Sdimvec_sral(vector bool int __a, vector unsigned int __b) {
7181287512Sdim  return (vector bool int)__builtin_s390_vsra(
7182287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7183287512Sdim}
7184287512Sdim
7185287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
7186287512Sdimvec_sral(vector unsigned int __a, vector unsigned char __b) {
7187287512Sdim  return (vector unsigned int)__builtin_s390_vsra(
7188287512Sdim    (vector unsigned char)__a, __b);
7189287512Sdim}
7190287512Sdim
7191321369Sdim// This prototype is deprecated.
7192287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
7193287512Sdimvec_sral(vector unsigned int __a, vector unsigned short __b) {
7194287512Sdim  return (vector unsigned int)__builtin_s390_vsra(
7195287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7196287512Sdim}
7197287512Sdim
7198321369Sdim// This prototype is deprecated.
7199287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
7200287512Sdimvec_sral(vector unsigned int __a, vector unsigned int __b) {
7201287512Sdim  return (vector unsigned int)__builtin_s390_vsra(
7202287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7203287512Sdim}
7204287512Sdim
7205287512Sdimstatic inline __ATTRS_o_ai vector signed long long
7206287512Sdimvec_sral(vector signed long long __a, vector unsigned char __b) {
7207287512Sdim  return (vector signed long long)__builtin_s390_vsra(
7208287512Sdim    (vector unsigned char)__a, __b);
7209287512Sdim}
7210287512Sdim
7211321369Sdim// This prototype is deprecated.
7212287512Sdimstatic inline __ATTRS_o_ai vector signed long long
7213287512Sdimvec_sral(vector signed long long __a, vector unsigned short __b) {
7214287512Sdim  return (vector signed long long)__builtin_s390_vsra(
7215287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7216287512Sdim}
7217287512Sdim
7218321369Sdim// This prototype is deprecated.
7219287512Sdimstatic inline __ATTRS_o_ai vector signed long long
7220287512Sdimvec_sral(vector signed long long __a, vector unsigned int __b) {
7221287512Sdim  return (vector signed long long)__builtin_s390_vsra(
7222287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7223287512Sdim}
7224287512Sdim
7225321369Sdim// This prototype is deprecated.
7226287512Sdimstatic inline __ATTRS_o_ai vector bool long long
7227287512Sdimvec_sral(vector bool long long __a, vector unsigned char __b) {
7228287512Sdim  return (vector bool long long)__builtin_s390_vsra(
7229287512Sdim    (vector unsigned char)__a, __b);
7230287512Sdim}
7231287512Sdim
7232321369Sdim// This prototype is deprecated.
7233287512Sdimstatic inline __ATTRS_o_ai vector bool long long
7234287512Sdimvec_sral(vector bool long long __a, vector unsigned short __b) {
7235287512Sdim  return (vector bool long long)__builtin_s390_vsra(
7236287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7237287512Sdim}
7238287512Sdim
7239321369Sdim// This prototype is deprecated.
7240287512Sdimstatic inline __ATTRS_o_ai vector bool long long
7241287512Sdimvec_sral(vector bool long long __a, vector unsigned int __b) {
7242287512Sdim  return (vector bool long long)__builtin_s390_vsra(
7243287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7244287512Sdim}
7245287512Sdim
7246287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
7247287512Sdimvec_sral(vector unsigned long long __a, vector unsigned char __b) {
7248287512Sdim  return (vector unsigned long long)__builtin_s390_vsra(
7249287512Sdim    (vector unsigned char)__a, __b);
7250287512Sdim}
7251287512Sdim
7252321369Sdim// This prototype is deprecated.
7253287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
7254287512Sdimvec_sral(vector unsigned long long __a, vector unsigned short __b) {
7255287512Sdim  return (vector unsigned long long)__builtin_s390_vsra(
7256287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7257287512Sdim}
7258287512Sdim
7259321369Sdim// This prototype is deprecated.
7260287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
7261287512Sdimvec_sral(vector unsigned long long __a, vector unsigned int __b) {
7262287512Sdim  return (vector unsigned long long)__builtin_s390_vsra(
7263287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7264287512Sdim}
7265287512Sdim
7266287512Sdim/*-- vec_srab ---------------------------------------------------------------*/
7267287512Sdim
7268287512Sdimstatic inline __ATTRS_o_ai vector signed char
7269287512Sdimvec_srab(vector signed char __a, vector signed char __b) {
7270287512Sdim  return (vector signed char)__builtin_s390_vsrab(
7271287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7272287512Sdim}
7273287512Sdim
7274287512Sdimstatic inline __ATTRS_o_ai vector signed char
7275287512Sdimvec_srab(vector signed char __a, vector unsigned char __b) {
7276287512Sdim  return (vector signed char)__builtin_s390_vsrab(
7277287512Sdim    (vector unsigned char)__a, __b);
7278287512Sdim}
7279287512Sdim
7280287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
7281287512Sdimvec_srab(vector unsigned char __a, vector signed char __b) {
7282287512Sdim  return __builtin_s390_vsrab(__a, (vector unsigned char)__b);
7283287512Sdim}
7284287512Sdim
7285287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
7286287512Sdimvec_srab(vector unsigned char __a, vector unsigned char __b) {
7287287512Sdim  return __builtin_s390_vsrab(__a, __b);
7288287512Sdim}
7289287512Sdim
7290287512Sdimstatic inline __ATTRS_o_ai vector signed short
7291287512Sdimvec_srab(vector signed short __a, vector signed short __b) {
7292287512Sdim  return (vector signed short)__builtin_s390_vsrab(
7293287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7294287512Sdim}
7295287512Sdim
7296287512Sdimstatic inline __ATTRS_o_ai vector signed short
7297287512Sdimvec_srab(vector signed short __a, vector unsigned short __b) {
7298287512Sdim  return (vector signed short)__builtin_s390_vsrab(
7299287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7300287512Sdim}
7301287512Sdim
7302287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
7303287512Sdimvec_srab(vector unsigned short __a, vector signed short __b) {
7304287512Sdim  return (vector unsigned short)__builtin_s390_vsrab(
7305287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7306287512Sdim}
7307287512Sdim
7308287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
7309287512Sdimvec_srab(vector unsigned short __a, vector unsigned short __b) {
7310287512Sdim  return (vector unsigned short)__builtin_s390_vsrab(
7311287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7312287512Sdim}
7313287512Sdim
7314287512Sdimstatic inline __ATTRS_o_ai vector signed int
7315287512Sdimvec_srab(vector signed int __a, vector signed int __b) {
7316287512Sdim  return (vector signed int)__builtin_s390_vsrab(
7317287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7318287512Sdim}
7319287512Sdim
7320287512Sdimstatic inline __ATTRS_o_ai vector signed int
7321287512Sdimvec_srab(vector signed int __a, vector unsigned int __b) {
7322287512Sdim  return (vector signed int)__builtin_s390_vsrab(
7323287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7324287512Sdim}
7325287512Sdim
7326287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
7327287512Sdimvec_srab(vector unsigned int __a, vector signed int __b) {
7328287512Sdim  return (vector unsigned int)__builtin_s390_vsrab(
7329287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7330287512Sdim}
7331287512Sdim
7332287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
7333287512Sdimvec_srab(vector unsigned int __a, vector unsigned int __b) {
7334287512Sdim  return (vector unsigned int)__builtin_s390_vsrab(
7335287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7336287512Sdim}
7337287512Sdim
7338287512Sdimstatic inline __ATTRS_o_ai vector signed long long
7339287512Sdimvec_srab(vector signed long long __a, vector signed long long __b) {
7340287512Sdim  return (vector signed long long)__builtin_s390_vsrab(
7341287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7342287512Sdim}
7343287512Sdim
7344287512Sdimstatic inline __ATTRS_o_ai vector signed long long
7345287512Sdimvec_srab(vector signed long long __a, vector unsigned long long __b) {
7346287512Sdim  return (vector signed long long)__builtin_s390_vsrab(
7347287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7348287512Sdim}
7349287512Sdim
7350287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
7351287512Sdimvec_srab(vector unsigned long long __a, vector signed long long __b) {
7352287512Sdim  return (vector unsigned long long)__builtin_s390_vsrab(
7353287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7354287512Sdim}
7355287512Sdim
7356287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
7357287512Sdimvec_srab(vector unsigned long long __a, vector unsigned long long __b) {
7358287512Sdim  return (vector unsigned long long)__builtin_s390_vsrab(
7359287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7360287512Sdim}
7361287512Sdim
7362321369Sdim#if __ARCH__ >= 12
7363321369Sdimstatic inline __ATTRS_o_ai vector float
7364321369Sdimvec_srab(vector float __a, vector signed int __b) {
7365321369Sdim  return (vector float)__builtin_s390_vsrab(
7366321369Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7367321369Sdim}
7368321369Sdim
7369321369Sdimstatic inline __ATTRS_o_ai vector float
7370321369Sdimvec_srab(vector float __a, vector unsigned int __b) {
7371321369Sdim  return (vector float)__builtin_s390_vsrab(
7372321369Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7373321369Sdim}
7374321369Sdim#endif
7375321369Sdim
7376287512Sdimstatic inline __ATTRS_o_ai vector double
7377287512Sdimvec_srab(vector double __a, vector signed long long __b) {
7378287512Sdim  return (vector double)__builtin_s390_vsrab(
7379287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7380287512Sdim}
7381287512Sdim
7382287512Sdimstatic inline __ATTRS_o_ai vector double
7383287512Sdimvec_srab(vector double __a, vector unsigned long long __b) {
7384287512Sdim  return (vector double)__builtin_s390_vsrab(
7385287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7386287512Sdim}
7387287512Sdim
7388287512Sdim/*-- vec_srl ----------------------------------------------------------------*/
7389287512Sdim
7390287512Sdimstatic inline __ATTRS_o_ai vector signed char
7391287512Sdimvec_srl(vector signed char __a, vector unsigned char __b) {
7392287512Sdim  return (vector signed char)__builtin_s390_vsrl(
7393287512Sdim    (vector unsigned char)__a, __b);
7394287512Sdim}
7395287512Sdim
7396321369Sdim// This prototype is deprecated.
7397287512Sdimstatic inline __ATTRS_o_ai vector signed char
7398287512Sdimvec_srl(vector signed char __a, vector unsigned short __b) {
7399287512Sdim  return (vector signed char)__builtin_s390_vsrl(
7400287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7401287512Sdim}
7402287512Sdim
7403321369Sdim// This prototype is deprecated.
7404287512Sdimstatic inline __ATTRS_o_ai vector signed char
7405287512Sdimvec_srl(vector signed char __a, vector unsigned int __b) {
7406287512Sdim  return (vector signed char)__builtin_s390_vsrl(
7407287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7408287512Sdim}
7409287512Sdim
7410321369Sdim// This prototype is deprecated.
7411287512Sdimstatic inline __ATTRS_o_ai vector bool char
7412287512Sdimvec_srl(vector bool char __a, vector unsigned char __b) {
7413287512Sdim  return (vector bool char)__builtin_s390_vsrl(
7414287512Sdim    (vector unsigned char)__a, __b);
7415287512Sdim}
7416287512Sdim
7417321369Sdim// This prototype is deprecated.
7418287512Sdimstatic inline __ATTRS_o_ai vector bool char
7419287512Sdimvec_srl(vector bool char __a, vector unsigned short __b) {
7420287512Sdim  return (vector bool char)__builtin_s390_vsrl(
7421287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7422287512Sdim}
7423287512Sdim
7424321369Sdim// This prototype is deprecated.
7425287512Sdimstatic inline __ATTRS_o_ai vector bool char
7426287512Sdimvec_srl(vector bool char __a, vector unsigned int __b) {
7427287512Sdim  return (vector bool char)__builtin_s390_vsrl(
7428287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7429287512Sdim}
7430287512Sdim
7431287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
7432287512Sdimvec_srl(vector unsigned char __a, vector unsigned char __b) {
7433287512Sdim  return __builtin_s390_vsrl(__a, __b);
7434287512Sdim}
7435287512Sdim
7436321369Sdim// This prototype is deprecated.
7437287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
7438287512Sdimvec_srl(vector unsigned char __a, vector unsigned short __b) {
7439287512Sdim  return __builtin_s390_vsrl(__a, (vector unsigned char)__b);
7440287512Sdim}
7441287512Sdim
7442321369Sdim// This prototype is deprecated.
7443287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
7444287512Sdimvec_srl(vector unsigned char __a, vector unsigned int __b) {
7445287512Sdim  return __builtin_s390_vsrl(__a, (vector unsigned char)__b);
7446287512Sdim}
7447287512Sdim
7448287512Sdimstatic inline __ATTRS_o_ai vector signed short
7449287512Sdimvec_srl(vector signed short __a, vector unsigned char __b) {
7450287512Sdim  return (vector signed short)__builtin_s390_vsrl(
7451287512Sdim    (vector unsigned char)__a, __b);
7452287512Sdim}
7453287512Sdim
7454321369Sdim// This prototype is deprecated.
7455287512Sdimstatic inline __ATTRS_o_ai vector signed short
7456287512Sdimvec_srl(vector signed short __a, vector unsigned short __b) {
7457287512Sdim  return (vector signed short)__builtin_s390_vsrl(
7458287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7459287512Sdim}
7460287512Sdim
7461321369Sdim// This prototype is deprecated.
7462287512Sdimstatic inline __ATTRS_o_ai vector signed short
7463287512Sdimvec_srl(vector signed short __a, vector unsigned int __b) {
7464287512Sdim  return (vector signed short)__builtin_s390_vsrl(
7465287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7466287512Sdim}
7467287512Sdim
7468321369Sdim// This prototype is deprecated.
7469287512Sdimstatic inline __ATTRS_o_ai vector bool short
7470287512Sdimvec_srl(vector bool short __a, vector unsigned char __b) {
7471287512Sdim  return (vector bool short)__builtin_s390_vsrl(
7472287512Sdim    (vector unsigned char)__a, __b);
7473287512Sdim}
7474287512Sdim
7475321369Sdim// This prototype is deprecated.
7476287512Sdimstatic inline __ATTRS_o_ai vector bool short
7477287512Sdimvec_srl(vector bool short __a, vector unsigned short __b) {
7478287512Sdim  return (vector bool short)__builtin_s390_vsrl(
7479287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7480287512Sdim}
7481287512Sdim
7482321369Sdim// This prototype is deprecated.
7483287512Sdimstatic inline __ATTRS_o_ai vector bool short
7484287512Sdimvec_srl(vector bool short __a, vector unsigned int __b) {
7485287512Sdim  return (vector bool short)__builtin_s390_vsrl(
7486287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7487287512Sdim}
7488287512Sdim
7489287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
7490287512Sdimvec_srl(vector unsigned short __a, vector unsigned char __b) {
7491287512Sdim  return (vector unsigned short)__builtin_s390_vsrl(
7492287512Sdim    (vector unsigned char)__a, __b);
7493287512Sdim}
7494287512Sdim
7495321369Sdim// This prototype is deprecated.
7496287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
7497287512Sdimvec_srl(vector unsigned short __a, vector unsigned short __b) {
7498287512Sdim  return (vector unsigned short)__builtin_s390_vsrl(
7499287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7500287512Sdim}
7501287512Sdim
7502321369Sdim// This prototype is deprecated.
7503287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
7504287512Sdimvec_srl(vector unsigned short __a, vector unsigned int __b) {
7505287512Sdim  return (vector unsigned short)__builtin_s390_vsrl(
7506287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7507287512Sdim}
7508287512Sdim
7509287512Sdimstatic inline __ATTRS_o_ai vector signed int
7510287512Sdimvec_srl(vector signed int __a, vector unsigned char __b) {
7511287512Sdim  return (vector signed int)__builtin_s390_vsrl(
7512287512Sdim    (vector unsigned char)__a, __b);
7513287512Sdim}
7514287512Sdim
7515321369Sdim// This prototype is deprecated.
7516287512Sdimstatic inline __ATTRS_o_ai vector signed int
7517287512Sdimvec_srl(vector signed int __a, vector unsigned short __b) {
7518287512Sdim  return (vector signed int)__builtin_s390_vsrl(
7519287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7520287512Sdim}
7521287512Sdim
7522321369Sdim// This prototype is deprecated.
7523287512Sdimstatic inline __ATTRS_o_ai vector signed int
7524287512Sdimvec_srl(vector signed int __a, vector unsigned int __b) {
7525287512Sdim  return (vector signed int)__builtin_s390_vsrl(
7526287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7527287512Sdim}
7528287512Sdim
7529321369Sdim// This prototype is deprecated.
7530287512Sdimstatic inline __ATTRS_o_ai vector bool int
7531287512Sdimvec_srl(vector bool int __a, vector unsigned char __b) {
7532287512Sdim  return (vector bool int)__builtin_s390_vsrl(
7533287512Sdim    (vector unsigned char)__a, __b);
7534287512Sdim}
7535287512Sdim
7536321369Sdim// This prototype is deprecated.
7537287512Sdimstatic inline __ATTRS_o_ai vector bool int
7538287512Sdimvec_srl(vector bool int __a, vector unsigned short __b) {
7539287512Sdim  return (vector bool int)__builtin_s390_vsrl(
7540287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7541287512Sdim}
7542287512Sdim
7543321369Sdim// This prototype is deprecated.
7544287512Sdimstatic inline __ATTRS_o_ai vector bool int
7545287512Sdimvec_srl(vector bool int __a, vector unsigned int __b) {
7546287512Sdim  return (vector bool int)__builtin_s390_vsrl(
7547287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7548287512Sdim}
7549287512Sdim
7550287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
7551287512Sdimvec_srl(vector unsigned int __a, vector unsigned char __b) {
7552287512Sdim  return (vector unsigned int)__builtin_s390_vsrl(
7553287512Sdim    (vector unsigned char)__a, __b);
7554287512Sdim}
7555287512Sdim
7556321369Sdim// This prototype is deprecated.
7557287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
7558287512Sdimvec_srl(vector unsigned int __a, vector unsigned short __b) {
7559287512Sdim  return (vector unsigned int)__builtin_s390_vsrl(
7560287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7561287512Sdim}
7562287512Sdim
7563321369Sdim// This prototype is deprecated.
7564287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
7565287512Sdimvec_srl(vector unsigned int __a, vector unsigned int __b) {
7566287512Sdim  return (vector unsigned int)__builtin_s390_vsrl(
7567287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7568287512Sdim}
7569287512Sdim
7570287512Sdimstatic inline __ATTRS_o_ai vector signed long long
7571287512Sdimvec_srl(vector signed long long __a, vector unsigned char __b) {
7572287512Sdim  return (vector signed long long)__builtin_s390_vsrl(
7573287512Sdim    (vector unsigned char)__a, __b);
7574287512Sdim}
7575287512Sdim
7576321369Sdim// This prototype is deprecated.
7577287512Sdimstatic inline __ATTRS_o_ai vector signed long long
7578287512Sdimvec_srl(vector signed long long __a, vector unsigned short __b) {
7579287512Sdim  return (vector signed long long)__builtin_s390_vsrl(
7580287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7581287512Sdim}
7582287512Sdim
7583321369Sdim// This prototype is deprecated.
7584287512Sdimstatic inline __ATTRS_o_ai vector signed long long
7585287512Sdimvec_srl(vector signed long long __a, vector unsigned int __b) {
7586287512Sdim  return (vector signed long long)__builtin_s390_vsrl(
7587287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7588287512Sdim}
7589287512Sdim
7590321369Sdim// This prototype is deprecated.
7591287512Sdimstatic inline __ATTRS_o_ai vector bool long long
7592287512Sdimvec_srl(vector bool long long __a, vector unsigned char __b) {
7593287512Sdim  return (vector bool long long)__builtin_s390_vsrl(
7594287512Sdim    (vector unsigned char)__a, __b);
7595287512Sdim}
7596287512Sdim
7597321369Sdim// This prototype is deprecated.
7598287512Sdimstatic inline __ATTRS_o_ai vector bool long long
7599287512Sdimvec_srl(vector bool long long __a, vector unsigned short __b) {
7600287512Sdim  return (vector bool long long)__builtin_s390_vsrl(
7601287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7602287512Sdim}
7603287512Sdim
7604321369Sdim// This prototype is deprecated.
7605287512Sdimstatic inline __ATTRS_o_ai vector bool long long
7606287512Sdimvec_srl(vector bool long long __a, vector unsigned int __b) {
7607287512Sdim  return (vector bool long long)__builtin_s390_vsrl(
7608287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7609287512Sdim}
7610287512Sdim
7611287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
7612287512Sdimvec_srl(vector unsigned long long __a, vector unsigned char __b) {
7613287512Sdim  return (vector unsigned long long)__builtin_s390_vsrl(
7614287512Sdim    (vector unsigned char)__a, __b);
7615287512Sdim}
7616287512Sdim
7617321369Sdim// This prototype is deprecated.
7618287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
7619287512Sdimvec_srl(vector unsigned long long __a, vector unsigned short __b) {
7620287512Sdim  return (vector unsigned long long)__builtin_s390_vsrl(
7621287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7622287512Sdim}
7623287512Sdim
7624321369Sdim// This prototype is deprecated.
7625287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
7626287512Sdimvec_srl(vector unsigned long long __a, vector unsigned int __b) {
7627287512Sdim  return (vector unsigned long long)__builtin_s390_vsrl(
7628287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7629287512Sdim}
7630287512Sdim
7631287512Sdim/*-- vec_srb ----------------------------------------------------------------*/
7632287512Sdim
7633287512Sdimstatic inline __ATTRS_o_ai vector signed char
7634287512Sdimvec_srb(vector signed char __a, vector signed char __b) {
7635287512Sdim  return (vector signed char)__builtin_s390_vsrlb(
7636287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7637287512Sdim}
7638287512Sdim
7639287512Sdimstatic inline __ATTRS_o_ai vector signed char
7640287512Sdimvec_srb(vector signed char __a, vector unsigned char __b) {
7641287512Sdim  return (vector signed char)__builtin_s390_vsrlb(
7642287512Sdim    (vector unsigned char)__a, __b);
7643287512Sdim}
7644287512Sdim
7645287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
7646287512Sdimvec_srb(vector unsigned char __a, vector signed char __b) {
7647287512Sdim  return __builtin_s390_vsrlb(__a, (vector unsigned char)__b);
7648287512Sdim}
7649287512Sdim
7650287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
7651287512Sdimvec_srb(vector unsigned char __a, vector unsigned char __b) {
7652287512Sdim  return __builtin_s390_vsrlb(__a, __b);
7653287512Sdim}
7654287512Sdim
7655287512Sdimstatic inline __ATTRS_o_ai vector signed short
7656287512Sdimvec_srb(vector signed short __a, vector signed short __b) {
7657287512Sdim  return (vector signed short)__builtin_s390_vsrlb(
7658287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7659287512Sdim}
7660287512Sdim
7661287512Sdimstatic inline __ATTRS_o_ai vector signed short
7662287512Sdimvec_srb(vector signed short __a, vector unsigned short __b) {
7663287512Sdim  return (vector signed short)__builtin_s390_vsrlb(
7664287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7665287512Sdim}
7666287512Sdim
7667287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
7668287512Sdimvec_srb(vector unsigned short __a, vector signed short __b) {
7669287512Sdim  return (vector unsigned short)__builtin_s390_vsrlb(
7670287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7671287512Sdim}
7672287512Sdim
7673287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
7674287512Sdimvec_srb(vector unsigned short __a, vector unsigned short __b) {
7675287512Sdim  return (vector unsigned short)__builtin_s390_vsrlb(
7676287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7677287512Sdim}
7678287512Sdim
7679287512Sdimstatic inline __ATTRS_o_ai vector signed int
7680287512Sdimvec_srb(vector signed int __a, vector signed int __b) {
7681287512Sdim  return (vector signed int)__builtin_s390_vsrlb(
7682287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7683287512Sdim}
7684287512Sdim
7685287512Sdimstatic inline __ATTRS_o_ai vector signed int
7686287512Sdimvec_srb(vector signed int __a, vector unsigned int __b) {
7687287512Sdim  return (vector signed int)__builtin_s390_vsrlb(
7688287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7689287512Sdim}
7690287512Sdim
7691287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
7692287512Sdimvec_srb(vector unsigned int __a, vector signed int __b) {
7693287512Sdim  return (vector unsigned int)__builtin_s390_vsrlb(
7694287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7695287512Sdim}
7696287512Sdim
7697287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
7698287512Sdimvec_srb(vector unsigned int __a, vector unsigned int __b) {
7699287512Sdim  return (vector unsigned int)__builtin_s390_vsrlb(
7700287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7701287512Sdim}
7702287512Sdim
7703287512Sdimstatic inline __ATTRS_o_ai vector signed long long
7704287512Sdimvec_srb(vector signed long long __a, vector signed long long __b) {
7705287512Sdim  return (vector signed long long)__builtin_s390_vsrlb(
7706287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7707287512Sdim}
7708287512Sdim
7709287512Sdimstatic inline __ATTRS_o_ai vector signed long long
7710287512Sdimvec_srb(vector signed long long __a, vector unsigned long long __b) {
7711287512Sdim  return (vector signed long long)__builtin_s390_vsrlb(
7712287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7713287512Sdim}
7714287512Sdim
7715287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
7716287512Sdimvec_srb(vector unsigned long long __a, vector signed long long __b) {
7717287512Sdim  return (vector unsigned long long)__builtin_s390_vsrlb(
7718287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7719287512Sdim}
7720287512Sdim
7721287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
7722287512Sdimvec_srb(vector unsigned long long __a, vector unsigned long long __b) {
7723287512Sdim  return (vector unsigned long long)__builtin_s390_vsrlb(
7724287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7725287512Sdim}
7726287512Sdim
7727321369Sdim#if __ARCH__ >= 12
7728321369Sdimstatic inline __ATTRS_o_ai vector float
7729321369Sdimvec_srb(vector float __a, vector signed int __b) {
7730321369Sdim  return (vector float)__builtin_s390_vsrlb(
7731321369Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7732321369Sdim}
7733321369Sdim
7734321369Sdimstatic inline __ATTRS_o_ai vector float
7735321369Sdimvec_srb(vector float __a, vector unsigned int __b) {
7736321369Sdim  return (vector float)__builtin_s390_vsrlb(
7737321369Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7738321369Sdim}
7739321369Sdim#endif
7740321369Sdim
7741287512Sdimstatic inline __ATTRS_o_ai vector double
7742287512Sdimvec_srb(vector double __a, vector signed long long __b) {
7743287512Sdim  return (vector double)__builtin_s390_vsrlb(
7744287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7745287512Sdim}
7746287512Sdim
7747287512Sdimstatic inline __ATTRS_o_ai vector double
7748287512Sdimvec_srb(vector double __a, vector unsigned long long __b) {
7749287512Sdim  return (vector double)__builtin_s390_vsrlb(
7750287512Sdim    (vector unsigned char)__a, (vector unsigned char)__b);
7751287512Sdim}
7752287512Sdim
7753353358Sdim/*-- vec_srdb ---------------------------------------------------------------*/
7754353358Sdim
7755353358Sdim#if __ARCH__ >= 13
7756353358Sdim
7757353358Sdimextern __ATTRS_o vector signed char
7758353358Sdimvec_srdb(vector signed char __a, vector signed char __b, int __c)
7759353358Sdim  __constant_range(__c, 0, 7);
7760353358Sdim
7761353358Sdimextern __ATTRS_o vector unsigned char
7762353358Sdimvec_srdb(vector unsigned char __a, vector unsigned char __b, int __c)
7763353358Sdim  __constant_range(__c, 0, 7);
7764353358Sdim
7765353358Sdimextern __ATTRS_o vector signed short
7766353358Sdimvec_srdb(vector signed short __a, vector signed short __b, int __c)
7767353358Sdim  __constant_range(__c, 0, 7);
7768353358Sdim
7769353358Sdimextern __ATTRS_o vector unsigned short
7770353358Sdimvec_srdb(vector unsigned short __a, vector unsigned short __b, int __c)
7771353358Sdim  __constant_range(__c, 0, 7);
7772353358Sdim
7773353358Sdimextern __ATTRS_o vector signed int
7774353358Sdimvec_srdb(vector signed int __a, vector signed int __b, int __c)
7775353358Sdim  __constant_range(__c, 0, 7);
7776353358Sdim
7777353358Sdimextern __ATTRS_o vector unsigned int
7778353358Sdimvec_srdb(vector unsigned int __a, vector unsigned int __b, int __c)
7779353358Sdim  __constant_range(__c, 0, 7);
7780353358Sdim
7781353358Sdimextern __ATTRS_o vector signed long long
7782353358Sdimvec_srdb(vector signed long long __a, vector signed long long __b, int __c)
7783353358Sdim  __constant_range(__c, 0, 7);
7784353358Sdim
7785353358Sdimextern __ATTRS_o vector unsigned long long
7786353358Sdimvec_srdb(vector unsigned long long __a, vector unsigned long long __b, int __c)
7787353358Sdim  __constant_range(__c, 0, 7);
7788353358Sdim
7789353358Sdimextern __ATTRS_o vector float
7790353358Sdimvec_srdb(vector float __a, vector float __b, int __c)
7791353358Sdim  __constant_range(__c, 0, 7);
7792353358Sdim
7793353358Sdimextern __ATTRS_o vector double
7794353358Sdimvec_srdb(vector double __a, vector double __b, int __c)
7795353358Sdim  __constant_range(__c, 0, 7);
7796353358Sdim
7797353358Sdim#define vec_srdb(X, Y, Z) ((__typeof__((vec_srdb)((X), (Y), (Z)))) \
7798353358Sdim  __builtin_s390_vsrd((vector unsigned char)(X), \
7799353358Sdim                      (vector unsigned char)(Y), (Z)))
7800353358Sdim
7801353358Sdim#endif
7802353358Sdim
7803287512Sdim/*-- vec_abs ----------------------------------------------------------------*/
7804287512Sdim
7805287512Sdimstatic inline __ATTRS_o_ai vector signed char
7806287512Sdimvec_abs(vector signed char __a) {
7807287512Sdim  return vec_sel(__a, -__a, vec_cmplt(__a, (vector signed char)0));
7808287512Sdim}
7809287512Sdim
7810287512Sdimstatic inline __ATTRS_o_ai vector signed short
7811287512Sdimvec_abs(vector signed short __a) {
7812287512Sdim  return vec_sel(__a, -__a, vec_cmplt(__a, (vector signed short)0));
7813287512Sdim}
7814287512Sdim
7815287512Sdimstatic inline __ATTRS_o_ai vector signed int
7816287512Sdimvec_abs(vector signed int __a) {
7817287512Sdim  return vec_sel(__a, -__a, vec_cmplt(__a, (vector signed int)0));
7818287512Sdim}
7819287512Sdim
7820287512Sdimstatic inline __ATTRS_o_ai vector signed long long
7821287512Sdimvec_abs(vector signed long long __a) {
7822287512Sdim  return vec_sel(__a, -__a, vec_cmplt(__a, (vector signed long long)0));
7823287512Sdim}
7824287512Sdim
7825321369Sdim#if __ARCH__ >= 12
7826321369Sdimstatic inline __ATTRS_o_ai vector float
7827321369Sdimvec_abs(vector float __a) {
7828321369Sdim  return __builtin_s390_vflpsb(__a);
7829321369Sdim}
7830321369Sdim#endif
7831321369Sdim
7832287512Sdimstatic inline __ATTRS_o_ai vector double
7833287512Sdimvec_abs(vector double __a) {
7834287512Sdim  return __builtin_s390_vflpdb(__a);
7835287512Sdim}
7836287512Sdim
7837287512Sdim/*-- vec_nabs ---------------------------------------------------------------*/
7838287512Sdim
7839321369Sdim#if __ARCH__ >= 12
7840321369Sdimstatic inline __ATTRS_o_ai vector float
7841321369Sdimvec_nabs(vector float __a) {
7842321369Sdim  return __builtin_s390_vflnsb(__a);
7843321369Sdim}
7844321369Sdim#endif
7845321369Sdim
7846321369Sdimstatic inline __ATTRS_o_ai vector double
7847287512Sdimvec_nabs(vector double __a) {
7848287512Sdim  return __builtin_s390_vflndb(__a);
7849287512Sdim}
7850287512Sdim
7851287512Sdim/*-- vec_max ----------------------------------------------------------------*/
7852287512Sdim
7853287512Sdimstatic inline __ATTRS_o_ai vector signed char
7854287512Sdimvec_max(vector signed char __a, vector signed char __b) {
7855287512Sdim  return vec_sel(__b, __a, vec_cmpgt(__a, __b));
7856287512Sdim}
7857287512Sdim
7858321369Sdim// This prototype is deprecated.
7859287512Sdimstatic inline __ATTRS_o_ai vector signed char
7860287512Sdimvec_max(vector signed char __a, vector bool char __b) {
7861287512Sdim  vector signed char __bc = (vector signed char)__b;
7862287512Sdim  return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
7863287512Sdim}
7864287512Sdim
7865321369Sdim// This prototype is deprecated.
7866287512Sdimstatic inline __ATTRS_o_ai vector signed char
7867287512Sdimvec_max(vector bool char __a, vector signed char __b) {
7868287512Sdim  vector signed char __ac = (vector signed char)__a;
7869287512Sdim  return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
7870287512Sdim}
7871287512Sdim
7872287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
7873287512Sdimvec_max(vector unsigned char __a, vector unsigned char __b) {
7874287512Sdim  return vec_sel(__b, __a, vec_cmpgt(__a, __b));
7875287512Sdim}
7876287512Sdim
7877321369Sdim// This prototype is deprecated.
7878287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
7879287512Sdimvec_max(vector unsigned char __a, vector bool char __b) {
7880287512Sdim  vector unsigned char __bc = (vector unsigned char)__b;
7881287512Sdim  return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
7882287512Sdim}
7883287512Sdim
7884321369Sdim// This prototype is deprecated.
7885287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
7886287512Sdimvec_max(vector bool char __a, vector unsigned char __b) {
7887287512Sdim  vector unsigned char __ac = (vector unsigned char)__a;
7888287512Sdim  return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
7889287512Sdim}
7890287512Sdim
7891287512Sdimstatic inline __ATTRS_o_ai vector signed short
7892287512Sdimvec_max(vector signed short __a, vector signed short __b) {
7893287512Sdim  return vec_sel(__b, __a, vec_cmpgt(__a, __b));
7894287512Sdim}
7895287512Sdim
7896321369Sdim// This prototype is deprecated.
7897287512Sdimstatic inline __ATTRS_o_ai vector signed short
7898287512Sdimvec_max(vector signed short __a, vector bool short __b) {
7899287512Sdim  vector signed short __bc = (vector signed short)__b;
7900287512Sdim  return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
7901287512Sdim}
7902287512Sdim
7903321369Sdim// This prototype is deprecated.
7904287512Sdimstatic inline __ATTRS_o_ai vector signed short
7905287512Sdimvec_max(vector bool short __a, vector signed short __b) {
7906287512Sdim  vector signed short __ac = (vector signed short)__a;
7907287512Sdim  return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
7908287512Sdim}
7909287512Sdim
7910287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
7911287512Sdimvec_max(vector unsigned short __a, vector unsigned short __b) {
7912287512Sdim  return vec_sel(__b, __a, vec_cmpgt(__a, __b));
7913287512Sdim}
7914287512Sdim
7915321369Sdim// This prototype is deprecated.
7916287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
7917287512Sdimvec_max(vector unsigned short __a, vector bool short __b) {
7918287512Sdim  vector unsigned short __bc = (vector unsigned short)__b;
7919287512Sdim  return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
7920287512Sdim}
7921287512Sdim
7922321369Sdim// This prototype is deprecated.
7923287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
7924287512Sdimvec_max(vector bool short __a, vector unsigned short __b) {
7925287512Sdim  vector unsigned short __ac = (vector unsigned short)__a;
7926287512Sdim  return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
7927287512Sdim}
7928287512Sdim
7929287512Sdimstatic inline __ATTRS_o_ai vector signed int
7930287512Sdimvec_max(vector signed int __a, vector signed int __b) {
7931287512Sdim  return vec_sel(__b, __a, vec_cmpgt(__a, __b));
7932287512Sdim}
7933287512Sdim
7934321369Sdim// This prototype is deprecated.
7935287512Sdimstatic inline __ATTRS_o_ai vector signed int
7936287512Sdimvec_max(vector signed int __a, vector bool int __b) {
7937287512Sdim  vector signed int __bc = (vector signed int)__b;
7938287512Sdim  return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
7939287512Sdim}
7940287512Sdim
7941321369Sdim// This prototype is deprecated.
7942287512Sdimstatic inline __ATTRS_o_ai vector signed int
7943287512Sdimvec_max(vector bool int __a, vector signed int __b) {
7944287512Sdim  vector signed int __ac = (vector signed int)__a;
7945287512Sdim  return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
7946287512Sdim}
7947287512Sdim
7948287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
7949287512Sdimvec_max(vector unsigned int __a, vector unsigned int __b) {
7950287512Sdim  return vec_sel(__b, __a, vec_cmpgt(__a, __b));
7951287512Sdim}
7952287512Sdim
7953321369Sdim// This prototype is deprecated.
7954287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
7955287512Sdimvec_max(vector unsigned int __a, vector bool int __b) {
7956287512Sdim  vector unsigned int __bc = (vector unsigned int)__b;
7957287512Sdim  return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
7958287512Sdim}
7959287512Sdim
7960321369Sdim// This prototype is deprecated.
7961287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
7962287512Sdimvec_max(vector bool int __a, vector unsigned int __b) {
7963287512Sdim  vector unsigned int __ac = (vector unsigned int)__a;
7964287512Sdim  return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
7965287512Sdim}
7966287512Sdim
7967287512Sdimstatic inline __ATTRS_o_ai vector signed long long
7968287512Sdimvec_max(vector signed long long __a, vector signed long long __b) {
7969287512Sdim  return vec_sel(__b, __a, vec_cmpgt(__a, __b));
7970287512Sdim}
7971287512Sdim
7972321369Sdim// This prototype is deprecated.
7973287512Sdimstatic inline __ATTRS_o_ai vector signed long long
7974287512Sdimvec_max(vector signed long long __a, vector bool long long __b) {
7975287512Sdim  vector signed long long __bc = (vector signed long long)__b;
7976287512Sdim  return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
7977287512Sdim}
7978287512Sdim
7979321369Sdim// This prototype is deprecated.
7980287512Sdimstatic inline __ATTRS_o_ai vector signed long long
7981287512Sdimvec_max(vector bool long long __a, vector signed long long __b) {
7982287512Sdim  vector signed long long __ac = (vector signed long long)__a;
7983287512Sdim  return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
7984287512Sdim}
7985287512Sdim
7986287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
7987287512Sdimvec_max(vector unsigned long long __a, vector unsigned long long __b) {
7988287512Sdim  return vec_sel(__b, __a, vec_cmpgt(__a, __b));
7989287512Sdim}
7990287512Sdim
7991321369Sdim// This prototype is deprecated.
7992287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
7993287512Sdimvec_max(vector unsigned long long __a, vector bool long long __b) {
7994287512Sdim  vector unsigned long long __bc = (vector unsigned long long)__b;
7995287512Sdim  return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
7996287512Sdim}
7997287512Sdim
7998321369Sdim// This prototype is deprecated.
7999287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
8000287512Sdimvec_max(vector bool long long __a, vector unsigned long long __b) {
8001287512Sdim  vector unsigned long long __ac = (vector unsigned long long)__a;
8002287512Sdim  return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
8003287512Sdim}
8004287512Sdim
8005321369Sdim#if __ARCH__ >= 12
8006321369Sdimstatic inline __ATTRS_o_ai vector float
8007321369Sdimvec_max(vector float __a, vector float __b) {
8008321369Sdim  return __builtin_s390_vfmaxsb(__a, __b, 0);
8009321369Sdim}
8010321369Sdim#endif
8011321369Sdim
8012287512Sdimstatic inline __ATTRS_o_ai vector double
8013287512Sdimvec_max(vector double __a, vector double __b) {
8014321369Sdim#if __ARCH__ >= 12
8015321369Sdim  return __builtin_s390_vfmaxdb(__a, __b, 0);
8016321369Sdim#else
8017287512Sdim  return vec_sel(__b, __a, vec_cmpgt(__a, __b));
8018321369Sdim#endif
8019287512Sdim}
8020287512Sdim
8021287512Sdim/*-- vec_min ----------------------------------------------------------------*/
8022287512Sdim
8023287512Sdimstatic inline __ATTRS_o_ai vector signed char
8024287512Sdimvec_min(vector signed char __a, vector signed char __b) {
8025287512Sdim  return vec_sel(__a, __b, vec_cmpgt(__a, __b));
8026287512Sdim}
8027287512Sdim
8028321369Sdim// This prototype is deprecated.
8029287512Sdimstatic inline __ATTRS_o_ai vector signed char
8030287512Sdimvec_min(vector signed char __a, vector bool char __b) {
8031287512Sdim  vector signed char __bc = (vector signed char)__b;
8032287512Sdim  return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
8033287512Sdim}
8034287512Sdim
8035321369Sdim// This prototype is deprecated.
8036287512Sdimstatic inline __ATTRS_o_ai vector signed char
8037287512Sdimvec_min(vector bool char __a, vector signed char __b) {
8038287512Sdim  vector signed char __ac = (vector signed char)__a;
8039287512Sdim  return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
8040287512Sdim}
8041287512Sdim
8042287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
8043287512Sdimvec_min(vector unsigned char __a, vector unsigned char __b) {
8044287512Sdim  return vec_sel(__a, __b, vec_cmpgt(__a, __b));
8045287512Sdim}
8046287512Sdim
8047321369Sdim// This prototype is deprecated.
8048287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
8049287512Sdimvec_min(vector unsigned char __a, vector bool char __b) {
8050287512Sdim  vector unsigned char __bc = (vector unsigned char)__b;
8051287512Sdim  return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
8052287512Sdim}
8053287512Sdim
8054321369Sdim// This prototype is deprecated.
8055287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
8056287512Sdimvec_min(vector bool char __a, vector unsigned char __b) {
8057287512Sdim  vector unsigned char __ac = (vector unsigned char)__a;
8058287512Sdim  return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
8059287512Sdim}
8060287512Sdim
8061287512Sdimstatic inline __ATTRS_o_ai vector signed short
8062287512Sdimvec_min(vector signed short __a, vector signed short __b) {
8063287512Sdim  return vec_sel(__a, __b, vec_cmpgt(__a, __b));
8064287512Sdim}
8065287512Sdim
8066321369Sdim// This prototype is deprecated.
8067287512Sdimstatic inline __ATTRS_o_ai vector signed short
8068287512Sdimvec_min(vector signed short __a, vector bool short __b) {
8069287512Sdim  vector signed short __bc = (vector signed short)__b;
8070287512Sdim  return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
8071287512Sdim}
8072287512Sdim
8073321369Sdim// This prototype is deprecated.
8074287512Sdimstatic inline __ATTRS_o_ai vector signed short
8075287512Sdimvec_min(vector bool short __a, vector signed short __b) {
8076287512Sdim  vector signed short __ac = (vector signed short)__a;
8077287512Sdim  return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
8078287512Sdim}
8079287512Sdim
8080287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
8081287512Sdimvec_min(vector unsigned short __a, vector unsigned short __b) {
8082287512Sdim  return vec_sel(__a, __b, vec_cmpgt(__a, __b));
8083287512Sdim}
8084287512Sdim
8085321369Sdim// This prototype is deprecated.
8086287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
8087287512Sdimvec_min(vector unsigned short __a, vector bool short __b) {
8088287512Sdim  vector unsigned short __bc = (vector unsigned short)__b;
8089287512Sdim  return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
8090287512Sdim}
8091287512Sdim
8092321369Sdim// This prototype is deprecated.
8093287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
8094287512Sdimvec_min(vector bool short __a, vector unsigned short __b) {
8095287512Sdim  vector unsigned short __ac = (vector unsigned short)__a;
8096287512Sdim  return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
8097287512Sdim}
8098287512Sdim
8099287512Sdimstatic inline __ATTRS_o_ai vector signed int
8100287512Sdimvec_min(vector signed int __a, vector signed int __b) {
8101287512Sdim  return vec_sel(__a, __b, vec_cmpgt(__a, __b));
8102287512Sdim}
8103287512Sdim
8104321369Sdim// This prototype is deprecated.
8105287512Sdimstatic inline __ATTRS_o_ai vector signed int
8106287512Sdimvec_min(vector signed int __a, vector bool int __b) {
8107287512Sdim  vector signed int __bc = (vector signed int)__b;
8108287512Sdim  return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
8109287512Sdim}
8110287512Sdim
8111321369Sdim// This prototype is deprecated.
8112287512Sdimstatic inline __ATTRS_o_ai vector signed int
8113287512Sdimvec_min(vector bool int __a, vector signed int __b) {
8114287512Sdim  vector signed int __ac = (vector signed int)__a;
8115287512Sdim  return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
8116287512Sdim}
8117287512Sdim
8118287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
8119287512Sdimvec_min(vector unsigned int __a, vector unsigned int __b) {
8120287512Sdim  return vec_sel(__a, __b, vec_cmpgt(__a, __b));
8121287512Sdim}
8122287512Sdim
8123321369Sdim// This prototype is deprecated.
8124287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
8125287512Sdimvec_min(vector unsigned int __a, vector bool int __b) {
8126287512Sdim  vector unsigned int __bc = (vector unsigned int)__b;
8127287512Sdim  return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
8128287512Sdim}
8129287512Sdim
8130321369Sdim// This prototype is deprecated.
8131287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
8132287512Sdimvec_min(vector bool int __a, vector unsigned int __b) {
8133287512Sdim  vector unsigned int __ac = (vector unsigned int)__a;
8134287512Sdim  return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
8135287512Sdim}
8136287512Sdim
8137287512Sdimstatic inline __ATTRS_o_ai vector signed long long
8138287512Sdimvec_min(vector signed long long __a, vector signed long long __b) {
8139287512Sdim  return vec_sel(__a, __b, vec_cmpgt(__a, __b));
8140287512Sdim}
8141287512Sdim
8142321369Sdim// This prototype is deprecated.
8143287512Sdimstatic inline __ATTRS_o_ai vector signed long long
8144287512Sdimvec_min(vector signed long long __a, vector bool long long __b) {
8145287512Sdim  vector signed long long __bc = (vector signed long long)__b;
8146287512Sdim  return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
8147287512Sdim}
8148287512Sdim
8149321369Sdim// This prototype is deprecated.
8150287512Sdimstatic inline __ATTRS_o_ai vector signed long long
8151287512Sdimvec_min(vector bool long long __a, vector signed long long __b) {
8152287512Sdim  vector signed long long __ac = (vector signed long long)__a;
8153287512Sdim  return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
8154287512Sdim}
8155287512Sdim
8156287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
8157287512Sdimvec_min(vector unsigned long long __a, vector unsigned long long __b) {
8158287512Sdim  return vec_sel(__a, __b, vec_cmpgt(__a, __b));
8159287512Sdim}
8160287512Sdim
8161321369Sdim// This prototype is deprecated.
8162287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
8163287512Sdimvec_min(vector unsigned long long __a, vector bool long long __b) {
8164287512Sdim  vector unsigned long long __bc = (vector unsigned long long)__b;
8165287512Sdim  return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
8166287512Sdim}
8167287512Sdim
8168321369Sdim// This prototype is deprecated.
8169287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
8170287512Sdimvec_min(vector bool long long __a, vector unsigned long long __b) {
8171287512Sdim  vector unsigned long long __ac = (vector unsigned long long)__a;
8172287512Sdim  return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
8173287512Sdim}
8174287512Sdim
8175321369Sdim#if __ARCH__ >= 12
8176321369Sdimstatic inline __ATTRS_o_ai vector float
8177321369Sdimvec_min(vector float __a, vector float __b) {
8178321369Sdim  return __builtin_s390_vfminsb(__a, __b, 0);
8179321369Sdim}
8180321369Sdim#endif
8181321369Sdim
8182287512Sdimstatic inline __ATTRS_o_ai vector double
8183287512Sdimvec_min(vector double __a, vector double __b) {
8184321369Sdim#if __ARCH__ >= 12
8185321369Sdim  return __builtin_s390_vfmindb(__a, __b, 0);
8186321369Sdim#else
8187287512Sdim  return vec_sel(__a, __b, vec_cmpgt(__a, __b));
8188321369Sdim#endif
8189287512Sdim}
8190287512Sdim
8191287512Sdim/*-- vec_add_u128 -----------------------------------------------------------*/
8192287512Sdim
8193287512Sdimstatic inline __ATTRS_ai vector unsigned char
8194287512Sdimvec_add_u128(vector unsigned char __a, vector unsigned char __b) {
8195287512Sdim  return __builtin_s390_vaq(__a, __b);
8196287512Sdim}
8197287512Sdim
8198287512Sdim/*-- vec_addc ---------------------------------------------------------------*/
8199287512Sdim
8200287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
8201287512Sdimvec_addc(vector unsigned char __a, vector unsigned char __b) {
8202287512Sdim  return __builtin_s390_vaccb(__a, __b);
8203287512Sdim}
8204287512Sdim
8205287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
8206287512Sdimvec_addc(vector unsigned short __a, vector unsigned short __b) {
8207287512Sdim  return __builtin_s390_vacch(__a, __b);
8208287512Sdim}
8209287512Sdim
8210287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
8211287512Sdimvec_addc(vector unsigned int __a, vector unsigned int __b) {
8212287512Sdim  return __builtin_s390_vaccf(__a, __b);
8213287512Sdim}
8214287512Sdim
8215287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
8216287512Sdimvec_addc(vector unsigned long long __a, vector unsigned long long __b) {
8217287512Sdim  return __builtin_s390_vaccg(__a, __b);
8218287512Sdim}
8219287512Sdim
8220287512Sdim/*-- vec_addc_u128 ----------------------------------------------------------*/
8221287512Sdim
8222287512Sdimstatic inline __ATTRS_ai vector unsigned char
8223287512Sdimvec_addc_u128(vector unsigned char __a, vector unsigned char __b) {
8224287512Sdim  return __builtin_s390_vaccq(__a, __b);
8225287512Sdim}
8226287512Sdim
8227287512Sdim/*-- vec_adde_u128 ----------------------------------------------------------*/
8228287512Sdim
8229287512Sdimstatic inline __ATTRS_ai vector unsigned char
8230287512Sdimvec_adde_u128(vector unsigned char __a, vector unsigned char __b,
8231287512Sdim              vector unsigned char __c) {
8232287512Sdim  return __builtin_s390_vacq(__a, __b, __c);
8233287512Sdim}
8234287512Sdim
8235287512Sdim/*-- vec_addec_u128 ---------------------------------------------------------*/
8236287512Sdim
8237287512Sdimstatic inline __ATTRS_ai vector unsigned char
8238287512Sdimvec_addec_u128(vector unsigned char __a, vector unsigned char __b,
8239287512Sdim               vector unsigned char __c) {
8240287512Sdim  return __builtin_s390_vacccq(__a, __b, __c);
8241287512Sdim}
8242287512Sdim
8243287512Sdim/*-- vec_avg ----------------------------------------------------------------*/
8244287512Sdim
8245287512Sdimstatic inline __ATTRS_o_ai vector signed char
8246287512Sdimvec_avg(vector signed char __a, vector signed char __b) {
8247287512Sdim  return __builtin_s390_vavgb(__a, __b);
8248287512Sdim}
8249287512Sdim
8250287512Sdimstatic inline __ATTRS_o_ai vector signed short
8251287512Sdimvec_avg(vector signed short __a, vector signed short __b) {
8252287512Sdim  return __builtin_s390_vavgh(__a, __b);
8253287512Sdim}
8254287512Sdim
8255287512Sdimstatic inline __ATTRS_o_ai vector signed int
8256287512Sdimvec_avg(vector signed int __a, vector signed int __b) {
8257287512Sdim  return __builtin_s390_vavgf(__a, __b);
8258287512Sdim}
8259287512Sdim
8260287512Sdimstatic inline __ATTRS_o_ai vector signed long long
8261287512Sdimvec_avg(vector signed long long __a, vector signed long long __b) {
8262287512Sdim  return __builtin_s390_vavgg(__a, __b);
8263287512Sdim}
8264287512Sdim
8265287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
8266287512Sdimvec_avg(vector unsigned char __a, vector unsigned char __b) {
8267287512Sdim  return __builtin_s390_vavglb(__a, __b);
8268287512Sdim}
8269287512Sdim
8270287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
8271287512Sdimvec_avg(vector unsigned short __a, vector unsigned short __b) {
8272287512Sdim  return __builtin_s390_vavglh(__a, __b);
8273287512Sdim}
8274287512Sdim
8275287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
8276287512Sdimvec_avg(vector unsigned int __a, vector unsigned int __b) {
8277287512Sdim  return __builtin_s390_vavglf(__a, __b);
8278287512Sdim}
8279287512Sdim
8280287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
8281287512Sdimvec_avg(vector unsigned long long __a, vector unsigned long long __b) {
8282287512Sdim  return __builtin_s390_vavglg(__a, __b);
8283287512Sdim}
8284287512Sdim
8285287512Sdim/*-- vec_checksum -----------------------------------------------------------*/
8286287512Sdim
8287287512Sdimstatic inline __ATTRS_ai vector unsigned int
8288287512Sdimvec_checksum(vector unsigned int __a, vector unsigned int __b) {
8289287512Sdim  return __builtin_s390_vcksm(__a, __b);
8290287512Sdim}
8291287512Sdim
8292287512Sdim/*-- vec_gfmsum -------------------------------------------------------------*/
8293287512Sdim
8294287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
8295287512Sdimvec_gfmsum(vector unsigned char __a, vector unsigned char __b) {
8296287512Sdim  return __builtin_s390_vgfmb(__a, __b);
8297287512Sdim}
8298287512Sdim
8299287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
8300287512Sdimvec_gfmsum(vector unsigned short __a, vector unsigned short __b) {
8301287512Sdim  return __builtin_s390_vgfmh(__a, __b);
8302287512Sdim}
8303287512Sdim
8304287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
8305287512Sdimvec_gfmsum(vector unsigned int __a, vector unsigned int __b) {
8306287512Sdim  return __builtin_s390_vgfmf(__a, __b);
8307287512Sdim}
8308287512Sdim
8309287512Sdim/*-- vec_gfmsum_128 ---------------------------------------------------------*/
8310287512Sdim
8311287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
8312287512Sdimvec_gfmsum_128(vector unsigned long long __a, vector unsigned long long __b) {
8313287512Sdim  return __builtin_s390_vgfmg(__a, __b);
8314287512Sdim}
8315287512Sdim
8316287512Sdim/*-- vec_gfmsum_accum -------------------------------------------------------*/
8317287512Sdim
8318287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
8319287512Sdimvec_gfmsum_accum(vector unsigned char __a, vector unsigned char __b,
8320287512Sdim                 vector unsigned short __c) {
8321287512Sdim  return __builtin_s390_vgfmab(__a, __b, __c);
8322287512Sdim}
8323287512Sdim
8324287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
8325287512Sdimvec_gfmsum_accum(vector unsigned short __a, vector unsigned short __b,
8326287512Sdim                 vector unsigned int __c) {
8327287512Sdim  return __builtin_s390_vgfmah(__a, __b, __c);
8328287512Sdim}
8329287512Sdim
8330287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
8331287512Sdimvec_gfmsum_accum(vector unsigned int __a, vector unsigned int __b,
8332287512Sdim                 vector unsigned long long __c) {
8333287512Sdim  return __builtin_s390_vgfmaf(__a, __b, __c);
8334287512Sdim}
8335287512Sdim
8336287512Sdim/*-- vec_gfmsum_accum_128 ---------------------------------------------------*/
8337287512Sdim
8338287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
8339287512Sdimvec_gfmsum_accum_128(vector unsigned long long __a,
8340287512Sdim                     vector unsigned long long __b,
8341287512Sdim                     vector unsigned char __c) {
8342287512Sdim  return __builtin_s390_vgfmag(__a, __b, __c);
8343287512Sdim}
8344287512Sdim
8345287512Sdim/*-- vec_mladd --------------------------------------------------------------*/
8346287512Sdim
8347287512Sdimstatic inline __ATTRS_o_ai vector signed char
8348287512Sdimvec_mladd(vector signed char __a, vector signed char __b,
8349287512Sdim          vector signed char __c) {
8350287512Sdim  return __a * __b + __c;
8351287512Sdim}
8352287512Sdim
8353287512Sdimstatic inline __ATTRS_o_ai vector signed char
8354287512Sdimvec_mladd(vector unsigned char __a, vector signed char __b,
8355287512Sdim          vector signed char __c) {
8356287512Sdim  return (vector signed char)__a * __b + __c;
8357287512Sdim}
8358287512Sdim
8359287512Sdimstatic inline __ATTRS_o_ai vector signed char
8360287512Sdimvec_mladd(vector signed char __a, vector unsigned char __b,
8361287512Sdim          vector unsigned char __c) {
8362287512Sdim  return __a * (vector signed char)__b + (vector signed char)__c;
8363287512Sdim}
8364287512Sdim
8365287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
8366287512Sdimvec_mladd(vector unsigned char __a, vector unsigned char __b,
8367287512Sdim          vector unsigned char __c) {
8368287512Sdim  return __a * __b + __c;
8369287512Sdim}
8370287512Sdim
8371287512Sdimstatic inline __ATTRS_o_ai vector signed short
8372287512Sdimvec_mladd(vector signed short __a, vector signed short __b,
8373287512Sdim          vector signed short __c) {
8374287512Sdim  return __a * __b + __c;
8375287512Sdim}
8376287512Sdim
8377287512Sdimstatic inline __ATTRS_o_ai vector signed short
8378287512Sdimvec_mladd(vector unsigned short __a, vector signed short __b,
8379287512Sdim          vector signed short __c) {
8380287512Sdim  return (vector signed short)__a * __b + __c;
8381287512Sdim}
8382287512Sdim
8383287512Sdimstatic inline __ATTRS_o_ai vector signed short
8384287512Sdimvec_mladd(vector signed short __a, vector unsigned short __b,
8385287512Sdim          vector unsigned short __c) {
8386287512Sdim  return __a * (vector signed short)__b + (vector signed short)__c;
8387287512Sdim}
8388287512Sdim
8389287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
8390287512Sdimvec_mladd(vector unsigned short __a, vector unsigned short __b,
8391287512Sdim          vector unsigned short __c) {
8392287512Sdim  return __a * __b + __c;
8393287512Sdim}
8394287512Sdim
8395287512Sdimstatic inline __ATTRS_o_ai vector signed int
8396287512Sdimvec_mladd(vector signed int __a, vector signed int __b,
8397287512Sdim          vector signed int __c) {
8398287512Sdim  return __a * __b + __c;
8399287512Sdim}
8400287512Sdim
8401287512Sdimstatic inline __ATTRS_o_ai vector signed int
8402287512Sdimvec_mladd(vector unsigned int __a, vector signed int __b,
8403287512Sdim          vector signed int __c) {
8404287512Sdim  return (vector signed int)__a * __b + __c;
8405287512Sdim}
8406287512Sdim
8407287512Sdimstatic inline __ATTRS_o_ai vector signed int
8408287512Sdimvec_mladd(vector signed int __a, vector unsigned int __b,
8409287512Sdim          vector unsigned int __c) {
8410287512Sdim  return __a * (vector signed int)__b + (vector signed int)__c;
8411287512Sdim}
8412287512Sdim
8413287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
8414287512Sdimvec_mladd(vector unsigned int __a, vector unsigned int __b,
8415287512Sdim          vector unsigned int __c) {
8416287512Sdim  return __a * __b + __c;
8417287512Sdim}
8418287512Sdim
8419287512Sdim/*-- vec_mhadd --------------------------------------------------------------*/
8420287512Sdim
8421287512Sdimstatic inline __ATTRS_o_ai vector signed char
8422287512Sdimvec_mhadd(vector signed char __a, vector signed char __b,
8423287512Sdim          vector signed char __c) {
8424287512Sdim  return __builtin_s390_vmahb(__a, __b, __c);
8425287512Sdim}
8426287512Sdim
8427287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
8428287512Sdimvec_mhadd(vector unsigned char __a, vector unsigned char __b,
8429287512Sdim          vector unsigned char __c) {
8430287512Sdim  return __builtin_s390_vmalhb(__a, __b, __c);
8431287512Sdim}
8432287512Sdim
8433287512Sdimstatic inline __ATTRS_o_ai vector signed short
8434287512Sdimvec_mhadd(vector signed short __a, vector signed short __b,
8435287512Sdim          vector signed short __c) {
8436287512Sdim  return __builtin_s390_vmahh(__a, __b, __c);
8437287512Sdim}
8438287512Sdim
8439287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
8440287512Sdimvec_mhadd(vector unsigned short __a, vector unsigned short __b,
8441287512Sdim          vector unsigned short __c) {
8442287512Sdim  return __builtin_s390_vmalhh(__a, __b, __c);
8443287512Sdim}
8444287512Sdim
8445287512Sdimstatic inline __ATTRS_o_ai vector signed int
8446287512Sdimvec_mhadd(vector signed int __a, vector signed int __b,
8447287512Sdim          vector signed int __c) {
8448287512Sdim  return __builtin_s390_vmahf(__a, __b, __c);
8449287512Sdim}
8450287512Sdim
8451287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
8452287512Sdimvec_mhadd(vector unsigned int __a, vector unsigned int __b,
8453287512Sdim          vector unsigned int __c) {
8454287512Sdim  return __builtin_s390_vmalhf(__a, __b, __c);
8455287512Sdim}
8456287512Sdim
8457287512Sdim/*-- vec_meadd --------------------------------------------------------------*/
8458287512Sdim
8459287512Sdimstatic inline __ATTRS_o_ai vector signed short
8460287512Sdimvec_meadd(vector signed char __a, vector signed char __b,
8461287512Sdim          vector signed short __c) {
8462287512Sdim  return __builtin_s390_vmaeb(__a, __b, __c);
8463287512Sdim}
8464287512Sdim
8465287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
8466287512Sdimvec_meadd(vector unsigned char __a, vector unsigned char __b,
8467287512Sdim          vector unsigned short __c) {
8468287512Sdim  return __builtin_s390_vmaleb(__a, __b, __c);
8469287512Sdim}
8470287512Sdim
8471287512Sdimstatic inline __ATTRS_o_ai vector signed int
8472287512Sdimvec_meadd(vector signed short __a, vector signed short __b,
8473287512Sdim          vector signed int __c) {
8474287512Sdim  return __builtin_s390_vmaeh(__a, __b, __c);
8475287512Sdim}
8476287512Sdim
8477287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
8478287512Sdimvec_meadd(vector unsigned short __a, vector unsigned short __b,
8479287512Sdim          vector unsigned int __c) {
8480287512Sdim  return __builtin_s390_vmaleh(__a, __b, __c);
8481287512Sdim}
8482287512Sdim
8483287512Sdimstatic inline __ATTRS_o_ai vector signed long long
8484287512Sdimvec_meadd(vector signed int __a, vector signed int __b,
8485287512Sdim          vector signed long long __c) {
8486287512Sdim  return __builtin_s390_vmaef(__a, __b, __c);
8487287512Sdim}
8488287512Sdim
8489287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
8490287512Sdimvec_meadd(vector unsigned int __a, vector unsigned int __b,
8491287512Sdim          vector unsigned long long __c) {
8492287512Sdim  return __builtin_s390_vmalef(__a, __b, __c);
8493287512Sdim}
8494287512Sdim
8495287512Sdim/*-- vec_moadd --------------------------------------------------------------*/
8496287512Sdim
8497287512Sdimstatic inline __ATTRS_o_ai vector signed short
8498287512Sdimvec_moadd(vector signed char __a, vector signed char __b,
8499287512Sdim          vector signed short __c) {
8500287512Sdim  return __builtin_s390_vmaob(__a, __b, __c);
8501287512Sdim}
8502287512Sdim
8503287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
8504287512Sdimvec_moadd(vector unsigned char __a, vector unsigned char __b,
8505287512Sdim          vector unsigned short __c) {
8506287512Sdim  return __builtin_s390_vmalob(__a, __b, __c);
8507287512Sdim}
8508287512Sdim
8509287512Sdimstatic inline __ATTRS_o_ai vector signed int
8510287512Sdimvec_moadd(vector signed short __a, vector signed short __b,
8511287512Sdim          vector signed int __c) {
8512287512Sdim  return __builtin_s390_vmaoh(__a, __b, __c);
8513287512Sdim}
8514287512Sdim
8515287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
8516287512Sdimvec_moadd(vector unsigned short __a, vector unsigned short __b,
8517287512Sdim          vector unsigned int __c) {
8518287512Sdim  return __builtin_s390_vmaloh(__a, __b, __c);
8519287512Sdim}
8520287512Sdim
8521287512Sdimstatic inline __ATTRS_o_ai vector signed long long
8522287512Sdimvec_moadd(vector signed int __a, vector signed int __b,
8523287512Sdim          vector signed long long __c) {
8524287512Sdim  return __builtin_s390_vmaof(__a, __b, __c);
8525287512Sdim}
8526287512Sdim
8527287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
8528287512Sdimvec_moadd(vector unsigned int __a, vector unsigned int __b,
8529287512Sdim          vector unsigned long long __c) {
8530287512Sdim  return __builtin_s390_vmalof(__a, __b, __c);
8531287512Sdim}
8532287512Sdim
8533287512Sdim/*-- vec_mulh ---------------------------------------------------------------*/
8534287512Sdim
8535287512Sdimstatic inline __ATTRS_o_ai vector signed char
8536287512Sdimvec_mulh(vector signed char __a, vector signed char __b) {
8537287512Sdim  return __builtin_s390_vmhb(__a, __b);
8538287512Sdim}
8539287512Sdim
8540287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
8541287512Sdimvec_mulh(vector unsigned char __a, vector unsigned char __b) {
8542287512Sdim  return __builtin_s390_vmlhb(__a, __b);
8543287512Sdim}
8544287512Sdim
8545287512Sdimstatic inline __ATTRS_o_ai vector signed short
8546287512Sdimvec_mulh(vector signed short __a, vector signed short __b) {
8547287512Sdim  return __builtin_s390_vmhh(__a, __b);
8548287512Sdim}
8549287512Sdim
8550287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
8551287512Sdimvec_mulh(vector unsigned short __a, vector unsigned short __b) {
8552287512Sdim  return __builtin_s390_vmlhh(__a, __b);
8553287512Sdim}
8554287512Sdim
8555287512Sdimstatic inline __ATTRS_o_ai vector signed int
8556287512Sdimvec_mulh(vector signed int __a, vector signed int __b) {
8557287512Sdim  return __builtin_s390_vmhf(__a, __b);
8558287512Sdim}
8559287512Sdim
8560287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
8561287512Sdimvec_mulh(vector unsigned int __a, vector unsigned int __b) {
8562287512Sdim  return __builtin_s390_vmlhf(__a, __b);
8563287512Sdim}
8564287512Sdim
8565287512Sdim/*-- vec_mule ---------------------------------------------------------------*/
8566287512Sdim
8567287512Sdimstatic inline __ATTRS_o_ai vector signed short
8568287512Sdimvec_mule(vector signed char __a, vector signed char __b) {
8569287512Sdim  return __builtin_s390_vmeb(__a, __b);
8570287512Sdim}
8571287512Sdim
8572287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
8573287512Sdimvec_mule(vector unsigned char __a, vector unsigned char __b) {
8574287512Sdim  return __builtin_s390_vmleb(__a, __b);
8575287512Sdim}
8576287512Sdim
8577287512Sdimstatic inline __ATTRS_o_ai vector signed int
8578287512Sdimvec_mule(vector signed short __a, vector signed short __b) {
8579287512Sdim  return __builtin_s390_vmeh(__a, __b);
8580287512Sdim}
8581287512Sdim
8582287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
8583287512Sdimvec_mule(vector unsigned short __a, vector unsigned short __b) {
8584287512Sdim  return __builtin_s390_vmleh(__a, __b);
8585287512Sdim}
8586287512Sdim
8587287512Sdimstatic inline __ATTRS_o_ai vector signed long long
8588287512Sdimvec_mule(vector signed int __a, vector signed int __b) {
8589287512Sdim  return __builtin_s390_vmef(__a, __b);
8590287512Sdim}
8591287512Sdim
8592287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
8593287512Sdimvec_mule(vector unsigned int __a, vector unsigned int __b) {
8594287512Sdim  return __builtin_s390_vmlef(__a, __b);
8595287512Sdim}
8596287512Sdim
8597287512Sdim/*-- vec_mulo ---------------------------------------------------------------*/
8598287512Sdim
8599287512Sdimstatic inline __ATTRS_o_ai vector signed short
8600287512Sdimvec_mulo(vector signed char __a, vector signed char __b) {
8601287512Sdim  return __builtin_s390_vmob(__a, __b);
8602287512Sdim}
8603287512Sdim
8604287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
8605287512Sdimvec_mulo(vector unsigned char __a, vector unsigned char __b) {
8606287512Sdim  return __builtin_s390_vmlob(__a, __b);
8607287512Sdim}
8608287512Sdim
8609287512Sdimstatic inline __ATTRS_o_ai vector signed int
8610287512Sdimvec_mulo(vector signed short __a, vector signed short __b) {
8611287512Sdim  return __builtin_s390_vmoh(__a, __b);
8612287512Sdim}
8613287512Sdim
8614287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
8615287512Sdimvec_mulo(vector unsigned short __a, vector unsigned short __b) {
8616287512Sdim  return __builtin_s390_vmloh(__a, __b);
8617287512Sdim}
8618287512Sdim
8619287512Sdimstatic inline __ATTRS_o_ai vector signed long long
8620287512Sdimvec_mulo(vector signed int __a, vector signed int __b) {
8621287512Sdim  return __builtin_s390_vmof(__a, __b);
8622287512Sdim}
8623287512Sdim
8624287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
8625287512Sdimvec_mulo(vector unsigned int __a, vector unsigned int __b) {
8626287512Sdim  return __builtin_s390_vmlof(__a, __b);
8627287512Sdim}
8628287512Sdim
8629321369Sdim/*-- vec_msum_u128 ----------------------------------------------------------*/
8630321369Sdim
8631321369Sdim#if __ARCH__ >= 12
8632321369Sdim#define vec_msum_u128(X, Y, Z, W) \
8633321369Sdim  ((vector unsigned char)__builtin_s390_vmslg((X), (Y), (Z), (W)));
8634321369Sdim#endif
8635321369Sdim
8636287512Sdim/*-- vec_sub_u128 -----------------------------------------------------------*/
8637287512Sdim
8638287512Sdimstatic inline __ATTRS_ai vector unsigned char
8639287512Sdimvec_sub_u128(vector unsigned char __a, vector unsigned char __b) {
8640287512Sdim  return __builtin_s390_vsq(__a, __b);
8641287512Sdim}
8642287512Sdim
8643287512Sdim/*-- vec_subc ---------------------------------------------------------------*/
8644287512Sdim
8645287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
8646287512Sdimvec_subc(vector unsigned char __a, vector unsigned char __b) {
8647287512Sdim  return __builtin_s390_vscbib(__a, __b);
8648287512Sdim}
8649287512Sdim
8650287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
8651287512Sdimvec_subc(vector unsigned short __a, vector unsigned short __b) {
8652287512Sdim  return __builtin_s390_vscbih(__a, __b);
8653287512Sdim}
8654287512Sdim
8655287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
8656287512Sdimvec_subc(vector unsigned int __a, vector unsigned int __b) {
8657287512Sdim  return __builtin_s390_vscbif(__a, __b);
8658287512Sdim}
8659287512Sdim
8660287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
8661287512Sdimvec_subc(vector unsigned long long __a, vector unsigned long long __b) {
8662287512Sdim  return __builtin_s390_vscbig(__a, __b);
8663287512Sdim}
8664287512Sdim
8665287512Sdim/*-- vec_subc_u128 ----------------------------------------------------------*/
8666287512Sdim
8667287512Sdimstatic inline __ATTRS_ai vector unsigned char
8668287512Sdimvec_subc_u128(vector unsigned char __a, vector unsigned char __b) {
8669287512Sdim  return __builtin_s390_vscbiq(__a, __b);
8670287512Sdim}
8671287512Sdim
8672287512Sdim/*-- vec_sube_u128 ----------------------------------------------------------*/
8673287512Sdim
8674287512Sdimstatic inline __ATTRS_ai vector unsigned char
8675287512Sdimvec_sube_u128(vector unsigned char __a, vector unsigned char __b,
8676287512Sdim              vector unsigned char __c) {
8677287512Sdim  return __builtin_s390_vsbiq(__a, __b, __c);
8678287512Sdim}
8679287512Sdim
8680287512Sdim/*-- vec_subec_u128 ---------------------------------------------------------*/
8681287512Sdim
8682287512Sdimstatic inline __ATTRS_ai vector unsigned char
8683287512Sdimvec_subec_u128(vector unsigned char __a, vector unsigned char __b,
8684287512Sdim               vector unsigned char __c) {
8685287512Sdim  return __builtin_s390_vsbcbiq(__a, __b, __c);
8686287512Sdim}
8687287512Sdim
8688287512Sdim/*-- vec_sum2 ---------------------------------------------------------------*/
8689287512Sdim
8690287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
8691287512Sdimvec_sum2(vector unsigned short __a, vector unsigned short __b) {
8692287512Sdim  return __builtin_s390_vsumgh(__a, __b);
8693287512Sdim}
8694287512Sdim
8695287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
8696287512Sdimvec_sum2(vector unsigned int __a, vector unsigned int __b) {
8697287512Sdim  return __builtin_s390_vsumgf(__a, __b);
8698287512Sdim}
8699287512Sdim
8700287512Sdim/*-- vec_sum_u128 -----------------------------------------------------------*/
8701287512Sdim
8702287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
8703287512Sdimvec_sum_u128(vector unsigned int __a, vector unsigned int __b) {
8704287512Sdim  return __builtin_s390_vsumqf(__a, __b);
8705287512Sdim}
8706287512Sdim
8707287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
8708287512Sdimvec_sum_u128(vector unsigned long long __a, vector unsigned long long __b) {
8709287512Sdim  return __builtin_s390_vsumqg(__a, __b);
8710287512Sdim}
8711287512Sdim
8712287512Sdim/*-- vec_sum4 ---------------------------------------------------------------*/
8713287512Sdim
8714287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
8715287512Sdimvec_sum4(vector unsigned char __a, vector unsigned char __b) {
8716287512Sdim  return __builtin_s390_vsumb(__a, __b);
8717287512Sdim}
8718287512Sdim
8719287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
8720287512Sdimvec_sum4(vector unsigned short __a, vector unsigned short __b) {
8721287512Sdim  return __builtin_s390_vsumh(__a, __b);
8722287512Sdim}
8723287512Sdim
8724287512Sdim/*-- vec_test_mask ----------------------------------------------------------*/
8725287512Sdim
8726287512Sdimstatic inline __ATTRS_o_ai int
8727287512Sdimvec_test_mask(vector signed char __a, vector unsigned char __b) {
8728287512Sdim  return __builtin_s390_vtm((vector unsigned char)__a,
8729287512Sdim                            (vector unsigned char)__b);
8730287512Sdim}
8731287512Sdim
8732287512Sdimstatic inline __ATTRS_o_ai int
8733287512Sdimvec_test_mask(vector unsigned char __a, vector unsigned char __b) {
8734287512Sdim  return __builtin_s390_vtm(__a, __b);
8735287512Sdim}
8736287512Sdim
8737287512Sdimstatic inline __ATTRS_o_ai int
8738287512Sdimvec_test_mask(vector signed short __a, vector unsigned short __b) {
8739287512Sdim  return __builtin_s390_vtm((vector unsigned char)__a,
8740287512Sdim                            (vector unsigned char)__b);
8741287512Sdim}
8742287512Sdim
8743287512Sdimstatic inline __ATTRS_o_ai int
8744287512Sdimvec_test_mask(vector unsigned short __a, vector unsigned short __b) {
8745287512Sdim  return __builtin_s390_vtm((vector unsigned char)__a,
8746287512Sdim                            (vector unsigned char)__b);
8747287512Sdim}
8748287512Sdim
8749287512Sdimstatic inline __ATTRS_o_ai int
8750287512Sdimvec_test_mask(vector signed int __a, vector unsigned int __b) {
8751287512Sdim  return __builtin_s390_vtm((vector unsigned char)__a,
8752287512Sdim                            (vector unsigned char)__b);
8753287512Sdim}
8754287512Sdim
8755287512Sdimstatic inline __ATTRS_o_ai int
8756287512Sdimvec_test_mask(vector unsigned int __a, vector unsigned int __b) {
8757287512Sdim  return __builtin_s390_vtm((vector unsigned char)__a,
8758287512Sdim                            (vector unsigned char)__b);
8759287512Sdim}
8760287512Sdim
8761287512Sdimstatic inline __ATTRS_o_ai int
8762287512Sdimvec_test_mask(vector signed long long __a, vector unsigned long long __b) {
8763287512Sdim  return __builtin_s390_vtm((vector unsigned char)__a,
8764287512Sdim                            (vector unsigned char)__b);
8765287512Sdim}
8766287512Sdim
8767287512Sdimstatic inline __ATTRS_o_ai int
8768287512Sdimvec_test_mask(vector unsigned long long __a, vector unsigned long long __b) {
8769287512Sdim  return __builtin_s390_vtm((vector unsigned char)__a,
8770287512Sdim                            (vector unsigned char)__b);
8771287512Sdim}
8772287512Sdim
8773321369Sdim#if __ARCH__ >= 12
8774287512Sdimstatic inline __ATTRS_o_ai int
8775321369Sdimvec_test_mask(vector float __a, vector unsigned int __b) {
8776321369Sdim  return __builtin_s390_vtm((vector unsigned char)__a,
8777321369Sdim                            (vector unsigned char)__b);
8778321369Sdim}
8779321369Sdim#endif
8780321369Sdim
8781321369Sdimstatic inline __ATTRS_o_ai int
8782287512Sdimvec_test_mask(vector double __a, vector unsigned long long __b) {
8783287512Sdim  return __builtin_s390_vtm((vector unsigned char)__a,
8784287512Sdim                            (vector unsigned char)__b);
8785287512Sdim}
8786287512Sdim
8787287512Sdim/*-- vec_madd ---------------------------------------------------------------*/
8788287512Sdim
8789321369Sdim#if __ARCH__ >= 12
8790321369Sdimstatic inline __ATTRS_o_ai vector float
8791321369Sdimvec_madd(vector float __a, vector float __b, vector float __c) {
8792321369Sdim  return __builtin_s390_vfmasb(__a, __b, __c);
8793321369Sdim}
8794321369Sdim#endif
8795321369Sdim
8796321369Sdimstatic inline __ATTRS_o_ai vector double
8797287512Sdimvec_madd(vector double __a, vector double __b, vector double __c) {
8798287512Sdim  return __builtin_s390_vfmadb(__a, __b, __c);
8799287512Sdim}
8800287512Sdim
8801287512Sdim/*-- vec_msub ---------------------------------------------------------------*/
8802287512Sdim
8803321369Sdim#if __ARCH__ >= 12
8804321369Sdimstatic inline __ATTRS_o_ai vector float
8805321369Sdimvec_msub(vector float __a, vector float __b, vector float __c) {
8806321369Sdim  return __builtin_s390_vfmssb(__a, __b, __c);
8807321369Sdim}
8808321369Sdim#endif
8809321369Sdim
8810321369Sdimstatic inline __ATTRS_o_ai vector double
8811287512Sdimvec_msub(vector double __a, vector double __b, vector double __c) {
8812287512Sdim  return __builtin_s390_vfmsdb(__a, __b, __c);
8813287512Sdim}
8814287512Sdim
8815321369Sdim/*-- vec_nmadd ---------------------------------------------------------------*/
8816321369Sdim
8817321369Sdim#if __ARCH__ >= 12
8818321369Sdimstatic inline __ATTRS_o_ai vector float
8819321369Sdimvec_nmadd(vector float __a, vector float __b, vector float __c) {
8820321369Sdim  return __builtin_s390_vfnmasb(__a, __b, __c);
8821321369Sdim}
8822321369Sdim
8823321369Sdimstatic inline __ATTRS_o_ai vector double
8824321369Sdimvec_nmadd(vector double __a, vector double __b, vector double __c) {
8825321369Sdim  return __builtin_s390_vfnmadb(__a, __b, __c);
8826321369Sdim}
8827321369Sdim#endif
8828321369Sdim
8829321369Sdim/*-- vec_nmsub ---------------------------------------------------------------*/
8830321369Sdim
8831321369Sdim#if __ARCH__ >= 12
8832321369Sdimstatic inline __ATTRS_o_ai vector float
8833321369Sdimvec_nmsub(vector float __a, vector float __b, vector float __c) {
8834321369Sdim  return __builtin_s390_vfnmssb(__a, __b, __c);
8835321369Sdim}
8836321369Sdim
8837321369Sdimstatic inline __ATTRS_o_ai vector double
8838321369Sdimvec_nmsub(vector double __a, vector double __b, vector double __c) {
8839321369Sdim  return __builtin_s390_vfnmsdb(__a, __b, __c);
8840321369Sdim}
8841321369Sdim#endif
8842321369Sdim
8843287512Sdim/*-- vec_sqrt ---------------------------------------------------------------*/
8844287512Sdim
8845321369Sdim#if __ARCH__ >= 12
8846321369Sdimstatic inline __ATTRS_o_ai vector float
8847321369Sdimvec_sqrt(vector float __a) {
8848321369Sdim  return __builtin_s390_vfsqsb(__a);
8849321369Sdim}
8850321369Sdim#endif
8851321369Sdim
8852321369Sdimstatic inline __ATTRS_o_ai vector double
8853287512Sdimvec_sqrt(vector double __a) {
8854287512Sdim  return __builtin_s390_vfsqdb(__a);
8855287512Sdim}
8856287512Sdim
8857287512Sdim/*-- vec_ld2f ---------------------------------------------------------------*/
8858287512Sdim
8859321369Sdim// This prototype is deprecated.
8860287512Sdimstatic inline __ATTRS_ai vector double
8861287512Sdimvec_ld2f(const float *__ptr) {
8862287512Sdim  typedef float __v2f32 __attribute__((__vector_size__(8)));
8863287512Sdim  return __builtin_convertvector(*(const __v2f32 *)__ptr, vector double);
8864287512Sdim}
8865287512Sdim
8866287512Sdim/*-- vec_st2f ---------------------------------------------------------------*/
8867287512Sdim
8868321369Sdim// This prototype is deprecated.
8869287512Sdimstatic inline __ATTRS_ai void
8870287512Sdimvec_st2f(vector double __a, float *__ptr) {
8871287512Sdim  typedef float __v2f32 __attribute__((__vector_size__(8)));
8872287512Sdim  *(__v2f32 *)__ptr = __builtin_convertvector(__a, __v2f32);
8873287512Sdim}
8874287512Sdim
8875287512Sdim/*-- vec_ctd ----------------------------------------------------------------*/
8876287512Sdim
8877321369Sdim// This prototype is deprecated.
8878287512Sdimstatic inline __ATTRS_o_ai vector double
8879287512Sdimvec_ctd(vector signed long long __a, int __b)
8880287512Sdim  __constant_range(__b, 0, 31) {
8881287512Sdim  vector double __conv = __builtin_convertvector(__a, vector double);
8882287512Sdim  __conv *= (vector double)(vector unsigned long long)((0x3ffULL - __b) << 52);
8883287512Sdim  return __conv;
8884287512Sdim}
8885287512Sdim
8886321369Sdim// This prototype is deprecated.
8887287512Sdimstatic inline __ATTRS_o_ai vector double
8888287512Sdimvec_ctd(vector unsigned long long __a, int __b)
8889287512Sdim  __constant_range(__b, 0, 31) {
8890287512Sdim  vector double __conv = __builtin_convertvector(__a, vector double);
8891287512Sdim  __conv *= (vector double)(vector unsigned long long)((0x3ffULL - __b) << 52);
8892287512Sdim  return __conv;
8893287512Sdim}
8894287512Sdim
8895287512Sdim/*-- vec_ctsl ---------------------------------------------------------------*/
8896287512Sdim
8897321369Sdim// This prototype is deprecated.
8898287512Sdimstatic inline __ATTRS_o_ai vector signed long long
8899287512Sdimvec_ctsl(vector double __a, int __b)
8900287512Sdim  __constant_range(__b, 0, 31) {
8901287512Sdim  __a *= (vector double)(vector unsigned long long)((0x3ffULL + __b) << 52);
8902287512Sdim  return __builtin_convertvector(__a, vector signed long long);
8903287512Sdim}
8904287512Sdim
8905287512Sdim/*-- vec_ctul ---------------------------------------------------------------*/
8906287512Sdim
8907321369Sdim// This prototype is deprecated.
8908287512Sdimstatic inline __ATTRS_o_ai vector unsigned long long
8909287512Sdimvec_ctul(vector double __a, int __b)
8910287512Sdim  __constant_range(__b, 0, 31) {
8911287512Sdim  __a *= (vector double)(vector unsigned long long)((0x3ffULL + __b) << 52);
8912287512Sdim  return __builtin_convertvector(__a, vector unsigned long long);
8913287512Sdim}
8914287512Sdim
8915321369Sdim/*-- vec_doublee ------------------------------------------------------------*/
8916321369Sdim
8917321369Sdim#if __ARCH__ >= 12
8918321369Sdimstatic inline __ATTRS_ai vector double
8919321369Sdimvec_doublee(vector float __a) {
8920321369Sdim  typedef float __v2f32 __attribute__((__vector_size__(8)));
8921321369Sdim  __v2f32 __pack = __builtin_shufflevector(__a, __a, 0, 2);
8922321369Sdim  return __builtin_convertvector(__pack, vector double);
8923321369Sdim}
8924321369Sdim#endif
8925321369Sdim
8926321369Sdim/*-- vec_floate -------------------------------------------------------------*/
8927321369Sdim
8928321369Sdim#if __ARCH__ >= 12
8929321369Sdimstatic inline __ATTRS_ai vector float
8930321369Sdimvec_floate(vector double __a) {
8931321369Sdim  typedef float __v2f32 __attribute__((__vector_size__(8)));
8932321369Sdim  __v2f32 __pack = __builtin_convertvector(__a, __v2f32);
8933321369Sdim  return __builtin_shufflevector(__pack, __pack, 0, -1, 1, -1);
8934321369Sdim}
8935321369Sdim#endif
8936321369Sdim
8937321369Sdim/*-- vec_double -------------------------------------------------------------*/
8938321369Sdim
8939321369Sdimstatic inline __ATTRS_o_ai vector double
8940321369Sdimvec_double(vector signed long long __a) {
8941321369Sdim  return __builtin_convertvector(__a, vector double);
8942321369Sdim}
8943321369Sdim
8944321369Sdimstatic inline __ATTRS_o_ai vector double
8945321369Sdimvec_double(vector unsigned long long __a) {
8946321369Sdim  return __builtin_convertvector(__a, vector double);
8947321369Sdim}
8948321369Sdim
8949353358Sdim/*-- vec_float --------------------------------------------------------------*/
8950353358Sdim
8951353358Sdim#if __ARCH__ >= 13
8952353358Sdim
8953353358Sdimstatic inline __ATTRS_o_ai vector float
8954353358Sdimvec_float(vector signed int __a) {
8955353358Sdim  return __builtin_convertvector(__a, vector float);
8956353358Sdim}
8957353358Sdim
8958353358Sdimstatic inline __ATTRS_o_ai vector float
8959353358Sdimvec_float(vector unsigned int __a) {
8960353358Sdim  return __builtin_convertvector(__a, vector float);
8961353358Sdim}
8962353358Sdim
8963353358Sdim#endif
8964353358Sdim
8965321369Sdim/*-- vec_signed -------------------------------------------------------------*/
8966321369Sdim
8967321369Sdimstatic inline __ATTRS_o_ai vector signed long long
8968321369Sdimvec_signed(vector double __a) {
8969321369Sdim  return __builtin_convertvector(__a, vector signed long long);
8970321369Sdim}
8971321369Sdim
8972353358Sdim#if __ARCH__ >= 13
8973353358Sdimstatic inline __ATTRS_o_ai vector signed int
8974353358Sdimvec_signed(vector float __a) {
8975353358Sdim  return __builtin_convertvector(__a, vector signed int);
8976353358Sdim}
8977353358Sdim#endif
8978353358Sdim
8979321369Sdim/*-- vec_unsigned -----------------------------------------------------------*/
8980321369Sdim
8981321369Sdimstatic inline __ATTRS_o_ai vector unsigned long long
8982321369Sdimvec_unsigned(vector double __a) {
8983321369Sdim  return __builtin_convertvector(__a, vector unsigned long long);
8984321369Sdim}
8985321369Sdim
8986353358Sdim#if __ARCH__ >= 13
8987353358Sdimstatic inline __ATTRS_o_ai vector unsigned int
8988353358Sdimvec_unsigned(vector float __a) {
8989353358Sdim  return __builtin_convertvector(__a, vector unsigned int);
8990353358Sdim}
8991353358Sdim#endif
8992353358Sdim
8993287512Sdim/*-- vec_roundp -------------------------------------------------------------*/
8994287512Sdim
8995321369Sdim#if __ARCH__ >= 12
8996321369Sdimstatic inline __ATTRS_o_ai vector float
8997321369Sdimvec_roundp(vector float __a) {
8998321369Sdim  return __builtin_s390_vfisb(__a, 4, 6);
8999321369Sdim}
9000321369Sdim#endif
9001321369Sdim
9002321369Sdimstatic inline __ATTRS_o_ai vector double
9003287512Sdimvec_roundp(vector double __a) {
9004287512Sdim  return __builtin_s390_vfidb(__a, 4, 6);
9005287512Sdim}
9006287512Sdim
9007287512Sdim/*-- vec_ceil ---------------------------------------------------------------*/
9008287512Sdim
9009321369Sdim#if __ARCH__ >= 12
9010321369Sdimstatic inline __ATTRS_o_ai vector float
9011321369Sdimvec_ceil(vector float __a) {
9012321369Sdim  // On this platform, vec_ceil never triggers the IEEE-inexact exception.
9013321369Sdim  return __builtin_s390_vfisb(__a, 4, 6);
9014321369Sdim}
9015321369Sdim#endif
9016321369Sdim
9017321369Sdimstatic inline __ATTRS_o_ai vector double
9018287512Sdimvec_ceil(vector double __a) {
9019287512Sdim  // On this platform, vec_ceil never triggers the IEEE-inexact exception.
9020287512Sdim  return __builtin_s390_vfidb(__a, 4, 6);
9021287512Sdim}
9022287512Sdim
9023287512Sdim/*-- vec_roundm -------------------------------------------------------------*/
9024287512Sdim
9025321369Sdim#if __ARCH__ >= 12
9026321369Sdimstatic inline __ATTRS_o_ai vector float
9027321369Sdimvec_roundm(vector float __a) {
9028321369Sdim  return __builtin_s390_vfisb(__a, 4, 7);
9029321369Sdim}
9030321369Sdim#endif
9031321369Sdim
9032321369Sdimstatic inline __ATTRS_o_ai vector double
9033287512Sdimvec_roundm(vector double __a) {
9034287512Sdim  return __builtin_s390_vfidb(__a, 4, 7);
9035287512Sdim}
9036287512Sdim
9037287512Sdim/*-- vec_floor --------------------------------------------------------------*/
9038287512Sdim
9039321369Sdim#if __ARCH__ >= 12
9040321369Sdimstatic inline __ATTRS_o_ai vector float
9041321369Sdimvec_floor(vector float __a) {
9042321369Sdim  // On this platform, vec_floor never triggers the IEEE-inexact exception.
9043321369Sdim  return __builtin_s390_vfisb(__a, 4, 7);
9044321369Sdim}
9045321369Sdim#endif
9046321369Sdim
9047321369Sdimstatic inline __ATTRS_o_ai vector double
9048287512Sdimvec_floor(vector double __a) {
9049287512Sdim  // On this platform, vec_floor never triggers the IEEE-inexact exception.
9050287512Sdim  return __builtin_s390_vfidb(__a, 4, 7);
9051287512Sdim}
9052287512Sdim
9053287512Sdim/*-- vec_roundz -------------------------------------------------------------*/
9054287512Sdim
9055321369Sdim#if __ARCH__ >= 12
9056321369Sdimstatic inline __ATTRS_o_ai vector float
9057321369Sdimvec_roundz(vector float __a) {
9058321369Sdim  return __builtin_s390_vfisb(__a, 4, 5);
9059321369Sdim}
9060321369Sdim#endif
9061321369Sdim
9062321369Sdimstatic inline __ATTRS_o_ai vector double
9063287512Sdimvec_roundz(vector double __a) {
9064287512Sdim  return __builtin_s390_vfidb(__a, 4, 5);
9065287512Sdim}
9066287512Sdim
9067287512Sdim/*-- vec_trunc --------------------------------------------------------------*/
9068287512Sdim
9069321369Sdim#if __ARCH__ >= 12
9070321369Sdimstatic inline __ATTRS_o_ai vector float
9071321369Sdimvec_trunc(vector float __a) {
9072321369Sdim  // On this platform, vec_trunc never triggers the IEEE-inexact exception.
9073321369Sdim  return __builtin_s390_vfisb(__a, 4, 5);
9074321369Sdim}
9075321369Sdim#endif
9076321369Sdim
9077321369Sdimstatic inline __ATTRS_o_ai vector double
9078287512Sdimvec_trunc(vector double __a) {
9079287512Sdim  // On this platform, vec_trunc never triggers the IEEE-inexact exception.
9080287512Sdim  return __builtin_s390_vfidb(__a, 4, 5);
9081287512Sdim}
9082287512Sdim
9083287512Sdim/*-- vec_roundc -------------------------------------------------------------*/
9084287512Sdim
9085321369Sdim#if __ARCH__ >= 12
9086321369Sdimstatic inline __ATTRS_o_ai vector float
9087321369Sdimvec_roundc(vector float __a) {
9088321369Sdim  return __builtin_s390_vfisb(__a, 4, 0);
9089321369Sdim}
9090321369Sdim#endif
9091321369Sdim
9092321369Sdimstatic inline __ATTRS_o_ai vector double
9093287512Sdimvec_roundc(vector double __a) {
9094287512Sdim  return __builtin_s390_vfidb(__a, 4, 0);
9095287512Sdim}
9096287512Sdim
9097321369Sdim/*-- vec_rint ---------------------------------------------------------------*/
9098321369Sdim
9099321369Sdim#if __ARCH__ >= 12
9100321369Sdimstatic inline __ATTRS_o_ai vector float
9101321369Sdimvec_rint(vector float __a) {
9102321369Sdim  // vec_rint may trigger the IEEE-inexact exception.
9103321369Sdim  return __builtin_s390_vfisb(__a, 0, 0);
9104321369Sdim}
9105321369Sdim#endif
9106321369Sdim
9107321369Sdimstatic inline __ATTRS_o_ai vector double
9108321369Sdimvec_rint(vector double __a) {
9109321369Sdim  // vec_rint may trigger the IEEE-inexact exception.
9110321369Sdim  return __builtin_s390_vfidb(__a, 0, 0);
9111321369Sdim}
9112321369Sdim
9113287512Sdim/*-- vec_round --------------------------------------------------------------*/
9114287512Sdim
9115321369Sdim#if __ARCH__ >= 12
9116321369Sdimstatic inline __ATTRS_o_ai vector float
9117321369Sdimvec_round(vector float __a) {
9118321369Sdim  return __builtin_s390_vfisb(__a, 4, 4);
9119321369Sdim}
9120321369Sdim#endif
9121321369Sdim
9122321369Sdimstatic inline __ATTRS_o_ai vector double
9123287512Sdimvec_round(vector double __a) {
9124287512Sdim  return __builtin_s390_vfidb(__a, 4, 4);
9125287512Sdim}
9126287512Sdim
9127287512Sdim/*-- vec_fp_test_data_class -------------------------------------------------*/
9128287512Sdim
9129321369Sdim#if __ARCH__ >= 12
9130321369Sdimextern __ATTRS_o vector bool int
9131321369Sdimvec_fp_test_data_class(vector float __a, int __b, int *__c)
9132321369Sdim  __constant_range(__b, 0, 4095);
9133321369Sdim
9134321369Sdimextern __ATTRS_o vector bool long long
9135321369Sdimvec_fp_test_data_class(vector double __a, int __b, int *__c)
9136321369Sdim  __constant_range(__b, 0, 4095);
9137321369Sdim
9138287512Sdim#define vec_fp_test_data_class(X, Y, Z) \
9139321369Sdim  ((__typeof__((vec_fp_test_data_class)((X), (Y), (Z)))) \
9140321369Sdim   __extension__ ({ \
9141321369Sdim     vector unsigned char __res; \
9142321369Sdim     vector unsigned char __x = (vector unsigned char)(X); \
9143321369Sdim     int *__z = (Z); \
9144321369Sdim     switch (sizeof ((X)[0])) { \
9145321369Sdim     case 4:  __res = (vector unsigned char) \
9146321369Sdim                      __builtin_s390_vftcisb((vector float)__x, (Y), __z); \
9147321369Sdim              break; \
9148321369Sdim     default: __res = (vector unsigned char) \
9149321369Sdim                      __builtin_s390_vftcidb((vector double)__x, (Y), __z); \
9150321369Sdim              break; \
9151321369Sdim     } __res; }))
9152321369Sdim#else
9153321369Sdim#define vec_fp_test_data_class(X, Y, Z) \
9154287512Sdim  ((vector bool long long)__builtin_s390_vftcidb((X), (Y), (Z)))
9155321369Sdim#endif
9156287512Sdim
9157321369Sdim#define __VEC_CLASS_FP_ZERO_P (1 << 11)
9158321369Sdim#define __VEC_CLASS_FP_ZERO_N (1 << 10)
9159321369Sdim#define __VEC_CLASS_FP_ZERO (__VEC_CLASS_FP_ZERO_P | __VEC_CLASS_FP_ZERO_N)
9160321369Sdim#define __VEC_CLASS_FP_NORMAL_P (1 << 9)
9161321369Sdim#define __VEC_CLASS_FP_NORMAL_N (1 << 8)
9162321369Sdim#define __VEC_CLASS_FP_NORMAL (__VEC_CLASS_FP_NORMAL_P | \
9163321369Sdim                               __VEC_CLASS_FP_NORMAL_N)
9164321369Sdim#define __VEC_CLASS_FP_SUBNORMAL_P (1 << 7)
9165321369Sdim#define __VEC_CLASS_FP_SUBNORMAL_N (1 << 6)
9166321369Sdim#define __VEC_CLASS_FP_SUBNORMAL (__VEC_CLASS_FP_SUBNORMAL_P | \
9167321369Sdim                                  __VEC_CLASS_FP_SUBNORMAL_N)
9168321369Sdim#define __VEC_CLASS_FP_INFINITY_P (1 << 5)
9169321369Sdim#define __VEC_CLASS_FP_INFINITY_N (1 << 4)
9170321369Sdim#define __VEC_CLASS_FP_INFINITY (__VEC_CLASS_FP_INFINITY_P | \
9171321369Sdim                                 __VEC_CLASS_FP_INFINITY_N)
9172321369Sdim#define __VEC_CLASS_FP_QNAN_P (1 << 3)
9173321369Sdim#define __VEC_CLASS_FP_QNAN_N (1 << 2)
9174321369Sdim#define __VEC_CLASS_FP_QNAN (__VEC_CLASS_FP_QNAN_P | __VEC_CLASS_FP_QNAN_N)
9175321369Sdim#define __VEC_CLASS_FP_SNAN_P (1 << 1)
9176321369Sdim#define __VEC_CLASS_FP_SNAN_N (1 << 0)
9177321369Sdim#define __VEC_CLASS_FP_SNAN (__VEC_CLASS_FP_SNAN_P | __VEC_CLASS_FP_SNAN_N)
9178321369Sdim#define __VEC_CLASS_FP_NAN (__VEC_CLASS_FP_QNAN | __VEC_CLASS_FP_SNAN)
9179321369Sdim#define __VEC_CLASS_FP_NOT_NORMAL (__VEC_CLASS_FP_NAN | \
9180321369Sdim                                   __VEC_CLASS_FP_SUBNORMAL | \
9181321369Sdim                                   __VEC_CLASS_FP_ZERO | \
9182321369Sdim                                   __VEC_CLASS_FP_INFINITY)
9183321369Sdim
9184287512Sdim/*-- vec_cp_until_zero ------------------------------------------------------*/
9185287512Sdim
9186287512Sdimstatic inline __ATTRS_o_ai vector signed char
9187287512Sdimvec_cp_until_zero(vector signed char __a) {
9188287512Sdim  return (vector signed char)__builtin_s390_vistrb((vector unsigned char)__a);
9189287512Sdim}
9190287512Sdim
9191287512Sdimstatic inline __ATTRS_o_ai vector bool char
9192287512Sdimvec_cp_until_zero(vector bool char __a) {
9193287512Sdim  return (vector bool char)__builtin_s390_vistrb((vector unsigned char)__a);
9194287512Sdim}
9195287512Sdim
9196287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9197287512Sdimvec_cp_until_zero(vector unsigned char __a) {
9198287512Sdim  return __builtin_s390_vistrb(__a);
9199287512Sdim}
9200287512Sdim
9201287512Sdimstatic inline __ATTRS_o_ai vector signed short
9202287512Sdimvec_cp_until_zero(vector signed short __a) {
9203287512Sdim  return (vector signed short)__builtin_s390_vistrh((vector unsigned short)__a);
9204287512Sdim}
9205287512Sdim
9206287512Sdimstatic inline __ATTRS_o_ai vector bool short
9207287512Sdimvec_cp_until_zero(vector bool short __a) {
9208287512Sdim  return (vector bool short)__builtin_s390_vistrh((vector unsigned short)__a);
9209287512Sdim}
9210287512Sdim
9211287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9212287512Sdimvec_cp_until_zero(vector unsigned short __a) {
9213287512Sdim  return __builtin_s390_vistrh(__a);
9214287512Sdim}
9215287512Sdim
9216287512Sdimstatic inline __ATTRS_o_ai vector signed int
9217287512Sdimvec_cp_until_zero(vector signed int __a) {
9218287512Sdim  return (vector signed int)__builtin_s390_vistrf((vector unsigned int)__a);
9219287512Sdim}
9220287512Sdim
9221287512Sdimstatic inline __ATTRS_o_ai vector bool int
9222287512Sdimvec_cp_until_zero(vector bool int __a) {
9223287512Sdim  return (vector bool int)__builtin_s390_vistrf((vector unsigned int)__a);
9224287512Sdim}
9225287512Sdim
9226287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9227287512Sdimvec_cp_until_zero(vector unsigned int __a) {
9228287512Sdim  return __builtin_s390_vistrf(__a);
9229287512Sdim}
9230287512Sdim
9231287512Sdim/*-- vec_cp_until_zero_cc ---------------------------------------------------*/
9232287512Sdim
9233287512Sdimstatic inline __ATTRS_o_ai vector signed char
9234287512Sdimvec_cp_until_zero_cc(vector signed char __a, int *__cc) {
9235287512Sdim  return (vector signed char)
9236287512Sdim    __builtin_s390_vistrbs((vector unsigned char)__a, __cc);
9237287512Sdim}
9238287512Sdim
9239287512Sdimstatic inline __ATTRS_o_ai vector bool char
9240287512Sdimvec_cp_until_zero_cc(vector bool char __a, int *__cc) {
9241287512Sdim  return (vector bool char)
9242287512Sdim    __builtin_s390_vistrbs((vector unsigned char)__a, __cc);
9243287512Sdim}
9244287512Sdim
9245287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9246287512Sdimvec_cp_until_zero_cc(vector unsigned char __a, int *__cc) {
9247287512Sdim  return __builtin_s390_vistrbs(__a, __cc);
9248287512Sdim}
9249287512Sdim
9250287512Sdimstatic inline __ATTRS_o_ai vector signed short
9251287512Sdimvec_cp_until_zero_cc(vector signed short __a, int *__cc) {
9252287512Sdim  return (vector signed short)
9253287512Sdim    __builtin_s390_vistrhs((vector unsigned short)__a, __cc);
9254287512Sdim}
9255287512Sdim
9256287512Sdimstatic inline __ATTRS_o_ai vector bool short
9257287512Sdimvec_cp_until_zero_cc(vector bool short __a, int *__cc) {
9258287512Sdim  return (vector bool short)
9259287512Sdim    __builtin_s390_vistrhs((vector unsigned short)__a, __cc);
9260287512Sdim}
9261287512Sdim
9262287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9263287512Sdimvec_cp_until_zero_cc(vector unsigned short __a, int *__cc) {
9264287512Sdim  return __builtin_s390_vistrhs(__a, __cc);
9265287512Sdim}
9266287512Sdim
9267287512Sdimstatic inline __ATTRS_o_ai vector signed int
9268287512Sdimvec_cp_until_zero_cc(vector signed int __a, int *__cc) {
9269287512Sdim  return (vector signed int)
9270287512Sdim    __builtin_s390_vistrfs((vector unsigned int)__a, __cc);
9271287512Sdim}
9272287512Sdim
9273287512Sdimstatic inline __ATTRS_o_ai vector bool int
9274287512Sdimvec_cp_until_zero_cc(vector bool int __a, int *__cc) {
9275287512Sdim  return (vector bool int)__builtin_s390_vistrfs((vector unsigned int)__a,
9276287512Sdim                                                 __cc);
9277287512Sdim}
9278287512Sdim
9279287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9280287512Sdimvec_cp_until_zero_cc(vector unsigned int __a, int *__cc) {
9281287512Sdim  return __builtin_s390_vistrfs(__a, __cc);
9282287512Sdim}
9283287512Sdim
9284287512Sdim/*-- vec_cmpeq_idx ----------------------------------------------------------*/
9285287512Sdim
9286287512Sdimstatic inline __ATTRS_o_ai vector signed char
9287287512Sdimvec_cmpeq_idx(vector signed char __a, vector signed char __b) {
9288287512Sdim  return (vector signed char)
9289287512Sdim    __builtin_s390_vfeeb((vector unsigned char)__a,
9290287512Sdim                         (vector unsigned char)__b);
9291287512Sdim}
9292287512Sdim
9293287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9294287512Sdimvec_cmpeq_idx(vector bool char __a, vector bool char __b) {
9295287512Sdim  return __builtin_s390_vfeeb((vector unsigned char)__a,
9296287512Sdim                              (vector unsigned char)__b);
9297287512Sdim}
9298287512Sdim
9299287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9300287512Sdimvec_cmpeq_idx(vector unsigned char __a, vector unsigned char __b) {
9301287512Sdim  return __builtin_s390_vfeeb(__a, __b);
9302287512Sdim}
9303287512Sdim
9304287512Sdimstatic inline __ATTRS_o_ai vector signed short
9305287512Sdimvec_cmpeq_idx(vector signed short __a, vector signed short __b) {
9306287512Sdim  return (vector signed short)
9307287512Sdim    __builtin_s390_vfeeh((vector unsigned short)__a,
9308287512Sdim                         (vector unsigned short)__b);
9309287512Sdim}
9310287512Sdim
9311287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9312287512Sdimvec_cmpeq_idx(vector bool short __a, vector bool short __b) {
9313287512Sdim  return __builtin_s390_vfeeh((vector unsigned short)__a,
9314287512Sdim                              (vector unsigned short)__b);
9315287512Sdim}
9316287512Sdim
9317287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9318287512Sdimvec_cmpeq_idx(vector unsigned short __a, vector unsigned short __b) {
9319287512Sdim  return __builtin_s390_vfeeh(__a, __b);
9320287512Sdim}
9321287512Sdim
9322287512Sdimstatic inline __ATTRS_o_ai vector signed int
9323287512Sdimvec_cmpeq_idx(vector signed int __a, vector signed int __b) {
9324287512Sdim  return (vector signed int)
9325287512Sdim    __builtin_s390_vfeef((vector unsigned int)__a,
9326287512Sdim                         (vector unsigned int)__b);
9327287512Sdim}
9328287512Sdim
9329287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9330287512Sdimvec_cmpeq_idx(vector bool int __a, vector bool int __b) {
9331287512Sdim  return __builtin_s390_vfeef((vector unsigned int)__a,
9332287512Sdim                              (vector unsigned int)__b);
9333287512Sdim}
9334287512Sdim
9335287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9336287512Sdimvec_cmpeq_idx(vector unsigned int __a, vector unsigned int __b) {
9337287512Sdim  return __builtin_s390_vfeef(__a, __b);
9338287512Sdim}
9339287512Sdim
9340287512Sdim/*-- vec_cmpeq_idx_cc -------------------------------------------------------*/
9341287512Sdim
9342287512Sdimstatic inline __ATTRS_o_ai vector signed char
9343287512Sdimvec_cmpeq_idx_cc(vector signed char __a, vector signed char __b, int *__cc) {
9344287512Sdim  return (vector signed char)
9345287512Sdim    __builtin_s390_vfeebs((vector unsigned char)__a,
9346287512Sdim                          (vector unsigned char)__b, __cc);
9347287512Sdim}
9348287512Sdim
9349287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9350287512Sdimvec_cmpeq_idx_cc(vector bool char __a, vector bool char __b, int *__cc) {
9351287512Sdim  return __builtin_s390_vfeebs((vector unsigned char)__a,
9352287512Sdim                               (vector unsigned char)__b, __cc);
9353287512Sdim}
9354287512Sdim
9355287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9356287512Sdimvec_cmpeq_idx_cc(vector unsigned char __a, vector unsigned char __b,
9357287512Sdim                 int *__cc) {
9358287512Sdim  return __builtin_s390_vfeebs(__a, __b, __cc);
9359287512Sdim}
9360287512Sdim
9361287512Sdimstatic inline __ATTRS_o_ai vector signed short
9362287512Sdimvec_cmpeq_idx_cc(vector signed short __a, vector signed short __b, int *__cc) {
9363287512Sdim  return (vector signed short)
9364287512Sdim    __builtin_s390_vfeehs((vector unsigned short)__a,
9365287512Sdim                          (vector unsigned short)__b, __cc);
9366287512Sdim}
9367287512Sdim
9368287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9369287512Sdimvec_cmpeq_idx_cc(vector bool short __a, vector bool short __b, int *__cc) {
9370287512Sdim  return __builtin_s390_vfeehs((vector unsigned short)__a,
9371287512Sdim                               (vector unsigned short)__b, __cc);
9372287512Sdim}
9373287512Sdim
9374287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9375287512Sdimvec_cmpeq_idx_cc(vector unsigned short __a, vector unsigned short __b,
9376287512Sdim                 int *__cc) {
9377287512Sdim  return __builtin_s390_vfeehs(__a, __b, __cc);
9378287512Sdim}
9379287512Sdim
9380287512Sdimstatic inline __ATTRS_o_ai vector signed int
9381287512Sdimvec_cmpeq_idx_cc(vector signed int __a, vector signed int __b, int *__cc) {
9382287512Sdim  return (vector signed int)
9383287512Sdim    __builtin_s390_vfeefs((vector unsigned int)__a,
9384287512Sdim                          (vector unsigned int)__b, __cc);
9385287512Sdim}
9386287512Sdim
9387287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9388287512Sdimvec_cmpeq_idx_cc(vector bool int __a, vector bool int __b, int *__cc) {
9389287512Sdim  return __builtin_s390_vfeefs((vector unsigned int)__a,
9390287512Sdim                               (vector unsigned int)__b, __cc);
9391287512Sdim}
9392287512Sdim
9393287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9394287512Sdimvec_cmpeq_idx_cc(vector unsigned int __a, vector unsigned int __b, int *__cc) {
9395287512Sdim  return __builtin_s390_vfeefs(__a, __b, __cc);
9396287512Sdim}
9397287512Sdim
9398287512Sdim/*-- vec_cmpeq_or_0_idx -----------------------------------------------------*/
9399287512Sdim
9400287512Sdimstatic inline __ATTRS_o_ai vector signed char
9401287512Sdimvec_cmpeq_or_0_idx(vector signed char __a, vector signed char __b) {
9402287512Sdim  return (vector signed char)
9403287512Sdim    __builtin_s390_vfeezb((vector unsigned char)__a,
9404287512Sdim                          (vector unsigned char)__b);
9405287512Sdim}
9406287512Sdim
9407287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9408287512Sdimvec_cmpeq_or_0_idx(vector bool char __a, vector bool char __b) {
9409287512Sdim  return __builtin_s390_vfeezb((vector unsigned char)__a,
9410287512Sdim                               (vector unsigned char)__b);
9411287512Sdim}
9412287512Sdim
9413287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9414287512Sdimvec_cmpeq_or_0_idx(vector unsigned char __a, vector unsigned char __b) {
9415287512Sdim  return __builtin_s390_vfeezb(__a, __b);
9416287512Sdim}
9417287512Sdim
9418287512Sdimstatic inline __ATTRS_o_ai vector signed short
9419287512Sdimvec_cmpeq_or_0_idx(vector signed short __a, vector signed short __b) {
9420287512Sdim  return (vector signed short)
9421287512Sdim    __builtin_s390_vfeezh((vector unsigned short)__a,
9422287512Sdim                          (vector unsigned short)__b);
9423287512Sdim}
9424287512Sdim
9425287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9426287512Sdimvec_cmpeq_or_0_idx(vector bool short __a, vector bool short __b) {
9427287512Sdim  return __builtin_s390_vfeezh((vector unsigned short)__a,
9428287512Sdim                               (vector unsigned short)__b);
9429287512Sdim}
9430287512Sdim
9431287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9432287512Sdimvec_cmpeq_or_0_idx(vector unsigned short __a, vector unsigned short __b) {
9433287512Sdim  return __builtin_s390_vfeezh(__a, __b);
9434287512Sdim}
9435287512Sdim
9436287512Sdimstatic inline __ATTRS_o_ai vector signed int
9437287512Sdimvec_cmpeq_or_0_idx(vector signed int __a, vector signed int __b) {
9438287512Sdim  return (vector signed int)
9439287512Sdim    __builtin_s390_vfeezf((vector unsigned int)__a,
9440287512Sdim                          (vector unsigned int)__b);
9441287512Sdim}
9442287512Sdim
9443287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9444287512Sdimvec_cmpeq_or_0_idx(vector bool int __a, vector bool int __b) {
9445287512Sdim  return __builtin_s390_vfeezf((vector unsigned int)__a,
9446287512Sdim                               (vector unsigned int)__b);
9447287512Sdim}
9448287512Sdim
9449287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9450287512Sdimvec_cmpeq_or_0_idx(vector unsigned int __a, vector unsigned int __b) {
9451287512Sdim  return __builtin_s390_vfeezf(__a, __b);
9452287512Sdim}
9453287512Sdim
9454287512Sdim/*-- vec_cmpeq_or_0_idx_cc --------------------------------------------------*/
9455287512Sdim
9456287512Sdimstatic inline __ATTRS_o_ai vector signed char
9457287512Sdimvec_cmpeq_or_0_idx_cc(vector signed char __a, vector signed char __b,
9458287512Sdim                      int *__cc) {
9459287512Sdim  return (vector signed char)
9460287512Sdim    __builtin_s390_vfeezbs((vector unsigned char)__a,
9461287512Sdim                           (vector unsigned char)__b, __cc);
9462287512Sdim}
9463287512Sdim
9464287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9465287512Sdimvec_cmpeq_or_0_idx_cc(vector bool char __a, vector bool char __b, int *__cc) {
9466287512Sdim  return __builtin_s390_vfeezbs((vector unsigned char)__a,
9467287512Sdim                                (vector unsigned char)__b, __cc);
9468287512Sdim}
9469287512Sdim
9470287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9471287512Sdimvec_cmpeq_or_0_idx_cc(vector unsigned char __a, vector unsigned char __b,
9472287512Sdim                      int *__cc) {
9473287512Sdim  return __builtin_s390_vfeezbs(__a, __b, __cc);
9474287512Sdim}
9475287512Sdim
9476287512Sdimstatic inline __ATTRS_o_ai vector signed short
9477287512Sdimvec_cmpeq_or_0_idx_cc(vector signed short __a, vector signed short __b,
9478287512Sdim                      int *__cc) {
9479287512Sdim  return (vector signed short)
9480287512Sdim    __builtin_s390_vfeezhs((vector unsigned short)__a,
9481287512Sdim                           (vector unsigned short)__b, __cc);
9482287512Sdim}
9483287512Sdim
9484287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9485287512Sdimvec_cmpeq_or_0_idx_cc(vector bool short __a, vector bool short __b, int *__cc) {
9486287512Sdim  return __builtin_s390_vfeezhs((vector unsigned short)__a,
9487287512Sdim                                (vector unsigned short)__b, __cc);
9488287512Sdim}
9489287512Sdim
9490287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9491287512Sdimvec_cmpeq_or_0_idx_cc(vector unsigned short __a, vector unsigned short __b,
9492287512Sdim                      int *__cc) {
9493287512Sdim  return __builtin_s390_vfeezhs(__a, __b, __cc);
9494287512Sdim}
9495287512Sdim
9496287512Sdimstatic inline __ATTRS_o_ai vector signed int
9497287512Sdimvec_cmpeq_or_0_idx_cc(vector signed int __a, vector signed int __b, int *__cc) {
9498287512Sdim  return (vector signed int)
9499287512Sdim    __builtin_s390_vfeezfs((vector unsigned int)__a,
9500287512Sdim                           (vector unsigned int)__b, __cc);
9501287512Sdim}
9502287512Sdim
9503287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9504287512Sdimvec_cmpeq_or_0_idx_cc(vector bool int __a, vector bool int __b, int *__cc) {
9505287512Sdim  return __builtin_s390_vfeezfs((vector unsigned int)__a,
9506287512Sdim                                (vector unsigned int)__b, __cc);
9507287512Sdim}
9508287512Sdim
9509287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9510287512Sdimvec_cmpeq_or_0_idx_cc(vector unsigned int __a, vector unsigned int __b,
9511287512Sdim                      int *__cc) {
9512287512Sdim  return __builtin_s390_vfeezfs(__a, __b, __cc);
9513287512Sdim}
9514287512Sdim
9515287512Sdim/*-- vec_cmpne_idx ----------------------------------------------------------*/
9516287512Sdim
9517287512Sdimstatic inline __ATTRS_o_ai vector signed char
9518287512Sdimvec_cmpne_idx(vector signed char __a, vector signed char __b) {
9519287512Sdim  return (vector signed char)
9520287512Sdim    __builtin_s390_vfeneb((vector unsigned char)__a,
9521287512Sdim                          (vector unsigned char)__b);
9522287512Sdim}
9523287512Sdim
9524287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9525287512Sdimvec_cmpne_idx(vector bool char __a, vector bool char __b) {
9526287512Sdim  return __builtin_s390_vfeneb((vector unsigned char)__a,
9527287512Sdim                               (vector unsigned char)__b);
9528287512Sdim}
9529287512Sdim
9530287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9531287512Sdimvec_cmpne_idx(vector unsigned char __a, vector unsigned char __b) {
9532287512Sdim  return __builtin_s390_vfeneb(__a, __b);
9533287512Sdim}
9534287512Sdim
9535287512Sdimstatic inline __ATTRS_o_ai vector signed short
9536287512Sdimvec_cmpne_idx(vector signed short __a, vector signed short __b) {
9537287512Sdim  return (vector signed short)
9538287512Sdim    __builtin_s390_vfeneh((vector unsigned short)__a,
9539287512Sdim                          (vector unsigned short)__b);
9540287512Sdim}
9541287512Sdim
9542287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9543287512Sdimvec_cmpne_idx(vector bool short __a, vector bool short __b) {
9544287512Sdim  return __builtin_s390_vfeneh((vector unsigned short)__a,
9545287512Sdim                               (vector unsigned short)__b);
9546287512Sdim}
9547287512Sdim
9548287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9549287512Sdimvec_cmpne_idx(vector unsigned short __a, vector unsigned short __b) {
9550287512Sdim  return __builtin_s390_vfeneh(__a, __b);
9551287512Sdim}
9552287512Sdim
9553287512Sdimstatic inline __ATTRS_o_ai vector signed int
9554287512Sdimvec_cmpne_idx(vector signed int __a, vector signed int __b) {
9555287512Sdim  return (vector signed int)
9556287512Sdim    __builtin_s390_vfenef((vector unsigned int)__a,
9557287512Sdim                          (vector unsigned int)__b);
9558287512Sdim}
9559287512Sdim
9560287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9561287512Sdimvec_cmpne_idx(vector bool int __a, vector bool int __b) {
9562287512Sdim  return __builtin_s390_vfenef((vector unsigned int)__a,
9563287512Sdim                               (vector unsigned int)__b);
9564287512Sdim}
9565287512Sdim
9566287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9567287512Sdimvec_cmpne_idx(vector unsigned int __a, vector unsigned int __b) {
9568287512Sdim  return __builtin_s390_vfenef(__a, __b);
9569287512Sdim}
9570287512Sdim
9571287512Sdim/*-- vec_cmpne_idx_cc -------------------------------------------------------*/
9572287512Sdim
9573287512Sdimstatic inline __ATTRS_o_ai vector signed char
9574287512Sdimvec_cmpne_idx_cc(vector signed char __a, vector signed char __b, int *__cc) {
9575287512Sdim  return (vector signed char)
9576287512Sdim    __builtin_s390_vfenebs((vector unsigned char)__a,
9577287512Sdim                           (vector unsigned char)__b, __cc);
9578287512Sdim}
9579287512Sdim
9580287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9581287512Sdimvec_cmpne_idx_cc(vector bool char __a, vector bool char __b, int *__cc) {
9582287512Sdim  return __builtin_s390_vfenebs((vector unsigned char)__a,
9583287512Sdim                                (vector unsigned char)__b, __cc);
9584287512Sdim}
9585287512Sdim
9586287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9587287512Sdimvec_cmpne_idx_cc(vector unsigned char __a, vector unsigned char __b,
9588287512Sdim                 int *__cc) {
9589287512Sdim  return __builtin_s390_vfenebs(__a, __b, __cc);
9590287512Sdim}
9591287512Sdim
9592287512Sdimstatic inline __ATTRS_o_ai vector signed short
9593287512Sdimvec_cmpne_idx_cc(vector signed short __a, vector signed short __b, int *__cc) {
9594287512Sdim  return (vector signed short)
9595287512Sdim    __builtin_s390_vfenehs((vector unsigned short)__a,
9596287512Sdim                           (vector unsigned short)__b, __cc);
9597287512Sdim}
9598287512Sdim
9599287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9600287512Sdimvec_cmpne_idx_cc(vector bool short __a, vector bool short __b, int *__cc) {
9601287512Sdim  return __builtin_s390_vfenehs((vector unsigned short)__a,
9602287512Sdim                                (vector unsigned short)__b, __cc);
9603287512Sdim}
9604287512Sdim
9605287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9606287512Sdimvec_cmpne_idx_cc(vector unsigned short __a, vector unsigned short __b,
9607287512Sdim                 int *__cc) {
9608287512Sdim  return __builtin_s390_vfenehs(__a, __b, __cc);
9609287512Sdim}
9610287512Sdim
9611287512Sdimstatic inline __ATTRS_o_ai vector signed int
9612287512Sdimvec_cmpne_idx_cc(vector signed int __a, vector signed int __b, int *__cc) {
9613287512Sdim  return (vector signed int)
9614287512Sdim    __builtin_s390_vfenefs((vector unsigned int)__a,
9615287512Sdim                           (vector unsigned int)__b, __cc);
9616287512Sdim}
9617287512Sdim
9618287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9619287512Sdimvec_cmpne_idx_cc(vector bool int __a, vector bool int __b, int *__cc) {
9620287512Sdim  return __builtin_s390_vfenefs((vector unsigned int)__a,
9621287512Sdim                                (vector unsigned int)__b, __cc);
9622287512Sdim}
9623287512Sdim
9624287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9625287512Sdimvec_cmpne_idx_cc(vector unsigned int __a, vector unsigned int __b, int *__cc) {
9626287512Sdim  return __builtin_s390_vfenefs(__a, __b, __cc);
9627287512Sdim}
9628287512Sdim
9629287512Sdim/*-- vec_cmpne_or_0_idx -----------------------------------------------------*/
9630287512Sdim
9631287512Sdimstatic inline __ATTRS_o_ai vector signed char
9632287512Sdimvec_cmpne_or_0_idx(vector signed char __a, vector signed char __b) {
9633287512Sdim  return (vector signed char)
9634287512Sdim    __builtin_s390_vfenezb((vector unsigned char)__a,
9635287512Sdim                           (vector unsigned char)__b);
9636287512Sdim}
9637287512Sdim
9638287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9639287512Sdimvec_cmpne_or_0_idx(vector bool char __a, vector bool char __b) {
9640287512Sdim  return __builtin_s390_vfenezb((vector unsigned char)__a,
9641287512Sdim                                (vector unsigned char)__b);
9642287512Sdim}
9643287512Sdim
9644287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9645287512Sdimvec_cmpne_or_0_idx(vector unsigned char __a, vector unsigned char __b) {
9646287512Sdim  return __builtin_s390_vfenezb(__a, __b);
9647287512Sdim}
9648287512Sdim
9649287512Sdimstatic inline __ATTRS_o_ai vector signed short
9650287512Sdimvec_cmpne_or_0_idx(vector signed short __a, vector signed short __b) {
9651287512Sdim  return (vector signed short)
9652287512Sdim    __builtin_s390_vfenezh((vector unsigned short)__a,
9653287512Sdim                           (vector unsigned short)__b);
9654287512Sdim}
9655287512Sdim
9656287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9657287512Sdimvec_cmpne_or_0_idx(vector bool short __a, vector bool short __b) {
9658287512Sdim  return __builtin_s390_vfenezh((vector unsigned short)__a,
9659287512Sdim                                (vector unsigned short)__b);
9660287512Sdim}
9661287512Sdim
9662287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9663287512Sdimvec_cmpne_or_0_idx(vector unsigned short __a, vector unsigned short __b) {
9664287512Sdim  return __builtin_s390_vfenezh(__a, __b);
9665287512Sdim}
9666287512Sdim
9667287512Sdimstatic inline __ATTRS_o_ai vector signed int
9668287512Sdimvec_cmpne_or_0_idx(vector signed int __a, vector signed int __b) {
9669287512Sdim  return (vector signed int)
9670287512Sdim    __builtin_s390_vfenezf((vector unsigned int)__a,
9671287512Sdim                           (vector unsigned int)__b);
9672287512Sdim}
9673287512Sdim
9674287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9675287512Sdimvec_cmpne_or_0_idx(vector bool int __a, vector bool int __b) {
9676287512Sdim  return __builtin_s390_vfenezf((vector unsigned int)__a,
9677287512Sdim                                (vector unsigned int)__b);
9678287512Sdim}
9679287512Sdim
9680287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9681287512Sdimvec_cmpne_or_0_idx(vector unsigned int __a, vector unsigned int __b) {
9682287512Sdim  return __builtin_s390_vfenezf(__a, __b);
9683287512Sdim}
9684287512Sdim
9685287512Sdim/*-- vec_cmpne_or_0_idx_cc --------------------------------------------------*/
9686287512Sdim
9687287512Sdimstatic inline __ATTRS_o_ai vector signed char
9688287512Sdimvec_cmpne_or_0_idx_cc(vector signed char __a, vector signed char __b,
9689287512Sdim                      int *__cc) {
9690287512Sdim  return (vector signed char)
9691287512Sdim    __builtin_s390_vfenezbs((vector unsigned char)__a,
9692287512Sdim                            (vector unsigned char)__b, __cc);
9693287512Sdim}
9694287512Sdim
9695287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9696287512Sdimvec_cmpne_or_0_idx_cc(vector bool char __a, vector bool char __b, int *__cc) {
9697287512Sdim  return __builtin_s390_vfenezbs((vector unsigned char)__a,
9698287512Sdim                                 (vector unsigned char)__b, __cc);
9699287512Sdim}
9700287512Sdim
9701287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9702287512Sdimvec_cmpne_or_0_idx_cc(vector unsigned char __a, vector unsigned char __b,
9703287512Sdim                      int *__cc) {
9704287512Sdim  return __builtin_s390_vfenezbs(__a, __b, __cc);
9705287512Sdim}
9706287512Sdim
9707287512Sdimstatic inline __ATTRS_o_ai vector signed short
9708287512Sdimvec_cmpne_or_0_idx_cc(vector signed short __a, vector signed short __b,
9709287512Sdim                      int *__cc) {
9710287512Sdim  return (vector signed short)
9711287512Sdim    __builtin_s390_vfenezhs((vector unsigned short)__a,
9712287512Sdim                            (vector unsigned short)__b, __cc);
9713287512Sdim}
9714287512Sdim
9715287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9716287512Sdimvec_cmpne_or_0_idx_cc(vector bool short __a, vector bool short __b, int *__cc) {
9717287512Sdim  return __builtin_s390_vfenezhs((vector unsigned short)__a,
9718287512Sdim                                 (vector unsigned short)__b, __cc);
9719287512Sdim}
9720287512Sdim
9721287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9722287512Sdimvec_cmpne_or_0_idx_cc(vector unsigned short __a, vector unsigned short __b,
9723287512Sdim                      int *__cc) {
9724287512Sdim  return __builtin_s390_vfenezhs(__a, __b, __cc);
9725287512Sdim}
9726287512Sdim
9727287512Sdimstatic inline __ATTRS_o_ai vector signed int
9728287512Sdimvec_cmpne_or_0_idx_cc(vector signed int __a, vector signed int __b, int *__cc) {
9729287512Sdim  return (vector signed int)
9730287512Sdim    __builtin_s390_vfenezfs((vector unsigned int)__a,
9731287512Sdim                            (vector unsigned int)__b, __cc);
9732287512Sdim}
9733287512Sdim
9734287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9735287512Sdimvec_cmpne_or_0_idx_cc(vector bool int __a, vector bool int __b, int *__cc) {
9736287512Sdim  return __builtin_s390_vfenezfs((vector unsigned int)__a,
9737287512Sdim                                 (vector unsigned int)__b, __cc);
9738287512Sdim}
9739287512Sdim
9740287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9741287512Sdimvec_cmpne_or_0_idx_cc(vector unsigned int __a, vector unsigned int __b,
9742287512Sdim                      int *__cc) {
9743287512Sdim  return __builtin_s390_vfenezfs(__a, __b, __cc);
9744287512Sdim}
9745287512Sdim
9746287512Sdim/*-- vec_cmprg --------------------------------------------------------------*/
9747287512Sdim
9748287512Sdimstatic inline __ATTRS_o_ai vector bool char
9749287512Sdimvec_cmprg(vector unsigned char __a, vector unsigned char __b,
9750287512Sdim          vector unsigned char __c) {
9751287512Sdim  return (vector bool char)__builtin_s390_vstrcb(__a, __b, __c, 4);
9752287512Sdim}
9753287512Sdim
9754287512Sdimstatic inline __ATTRS_o_ai vector bool short
9755287512Sdimvec_cmprg(vector unsigned short __a, vector unsigned short __b,
9756287512Sdim          vector unsigned short __c) {
9757287512Sdim  return (vector bool short)__builtin_s390_vstrch(__a, __b, __c, 4);
9758287512Sdim}
9759287512Sdim
9760287512Sdimstatic inline __ATTRS_o_ai vector bool int
9761287512Sdimvec_cmprg(vector unsigned int __a, vector unsigned int __b,
9762287512Sdim          vector unsigned int __c) {
9763287512Sdim  return (vector bool int)__builtin_s390_vstrcf(__a, __b, __c, 4);
9764287512Sdim}
9765287512Sdim
9766287512Sdim/*-- vec_cmprg_cc -----------------------------------------------------------*/
9767287512Sdim
9768287512Sdimstatic inline __ATTRS_o_ai vector bool char
9769287512Sdimvec_cmprg_cc(vector unsigned char __a, vector unsigned char __b,
9770287512Sdim             vector unsigned char __c, int *__cc) {
9771287512Sdim  return (vector bool char)__builtin_s390_vstrcbs(__a, __b, __c, 4, __cc);
9772287512Sdim}
9773287512Sdim
9774287512Sdimstatic inline __ATTRS_o_ai vector bool short
9775287512Sdimvec_cmprg_cc(vector unsigned short __a, vector unsigned short __b,
9776287512Sdim             vector unsigned short __c, int *__cc) {
9777287512Sdim  return (vector bool short)__builtin_s390_vstrchs(__a, __b, __c, 4, __cc);
9778287512Sdim}
9779287512Sdim
9780287512Sdimstatic inline __ATTRS_o_ai vector bool int
9781287512Sdimvec_cmprg_cc(vector unsigned int __a, vector unsigned int __b,
9782287512Sdim             vector unsigned int __c, int *__cc) {
9783287512Sdim  return (vector bool int)__builtin_s390_vstrcfs(__a, __b, __c, 4, __cc);
9784287512Sdim}
9785287512Sdim
9786287512Sdim/*-- vec_cmprg_idx ----------------------------------------------------------*/
9787287512Sdim
9788287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9789287512Sdimvec_cmprg_idx(vector unsigned char __a, vector unsigned char __b,
9790287512Sdim              vector unsigned char __c) {
9791287512Sdim  return __builtin_s390_vstrcb(__a, __b, __c, 0);
9792287512Sdim}
9793287512Sdim
9794287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9795287512Sdimvec_cmprg_idx(vector unsigned short __a, vector unsigned short __b,
9796287512Sdim              vector unsigned short __c) {
9797287512Sdim  return __builtin_s390_vstrch(__a, __b, __c, 0);
9798287512Sdim}
9799287512Sdim
9800287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9801287512Sdimvec_cmprg_idx(vector unsigned int __a, vector unsigned int __b,
9802287512Sdim              vector unsigned int __c) {
9803287512Sdim  return __builtin_s390_vstrcf(__a, __b, __c, 0);
9804287512Sdim}
9805287512Sdim
9806287512Sdim/*-- vec_cmprg_idx_cc -------------------------------------------------------*/
9807287512Sdim
9808287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9809287512Sdimvec_cmprg_idx_cc(vector unsigned char __a, vector unsigned char __b,
9810287512Sdim                 vector unsigned char __c, int *__cc) {
9811287512Sdim  return __builtin_s390_vstrcbs(__a, __b, __c, 0, __cc);
9812287512Sdim}
9813287512Sdim
9814287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9815287512Sdimvec_cmprg_idx_cc(vector unsigned short __a, vector unsigned short __b,
9816287512Sdim                 vector unsigned short __c, int *__cc) {
9817287512Sdim  return __builtin_s390_vstrchs(__a, __b, __c, 0, __cc);
9818287512Sdim}
9819287512Sdim
9820287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9821287512Sdimvec_cmprg_idx_cc(vector unsigned int __a, vector unsigned int __b,
9822287512Sdim                 vector unsigned int __c, int *__cc) {
9823287512Sdim  return __builtin_s390_vstrcfs(__a, __b, __c, 0, __cc);
9824287512Sdim}
9825287512Sdim
9826287512Sdim/*-- vec_cmprg_or_0_idx -----------------------------------------------------*/
9827287512Sdim
9828287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9829287512Sdimvec_cmprg_or_0_idx(vector unsigned char __a, vector unsigned char __b,
9830287512Sdim                   vector unsigned char __c) {
9831287512Sdim  return __builtin_s390_vstrczb(__a, __b, __c, 0);
9832287512Sdim}
9833287512Sdim
9834287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9835287512Sdimvec_cmprg_or_0_idx(vector unsigned short __a, vector unsigned short __b,
9836287512Sdim                   vector unsigned short __c) {
9837287512Sdim  return __builtin_s390_vstrczh(__a, __b, __c, 0);
9838287512Sdim}
9839287512Sdim
9840287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9841287512Sdimvec_cmprg_or_0_idx(vector unsigned int __a, vector unsigned int __b,
9842287512Sdim                   vector unsigned int __c) {
9843287512Sdim  return __builtin_s390_vstrczf(__a, __b, __c, 0);
9844287512Sdim}
9845287512Sdim
9846287512Sdim/*-- vec_cmprg_or_0_idx_cc --------------------------------------------------*/
9847287512Sdim
9848287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9849287512Sdimvec_cmprg_or_0_idx_cc(vector unsigned char __a, vector unsigned char __b,
9850287512Sdim                      vector unsigned char __c, int *__cc) {
9851287512Sdim  return __builtin_s390_vstrczbs(__a, __b, __c, 0, __cc);
9852287512Sdim}
9853287512Sdim
9854287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9855287512Sdimvec_cmprg_or_0_idx_cc(vector unsigned short __a, vector unsigned short __b,
9856287512Sdim                      vector unsigned short __c, int *__cc) {
9857287512Sdim  return __builtin_s390_vstrczhs(__a, __b, __c, 0, __cc);
9858287512Sdim}
9859287512Sdim
9860287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9861287512Sdimvec_cmprg_or_0_idx_cc(vector unsigned int __a, vector unsigned int __b,
9862287512Sdim                      vector unsigned int __c, int *__cc) {
9863287512Sdim  return __builtin_s390_vstrczfs(__a, __b, __c, 0, __cc);
9864287512Sdim}
9865287512Sdim
9866287512Sdim/*-- vec_cmpnrg -------------------------------------------------------------*/
9867287512Sdim
9868287512Sdimstatic inline __ATTRS_o_ai vector bool char
9869287512Sdimvec_cmpnrg(vector unsigned char __a, vector unsigned char __b,
9870287512Sdim           vector unsigned char __c) {
9871287512Sdim  return (vector bool char)__builtin_s390_vstrcb(__a, __b, __c, 12);
9872287512Sdim}
9873287512Sdim
9874287512Sdimstatic inline __ATTRS_o_ai vector bool short
9875287512Sdimvec_cmpnrg(vector unsigned short __a, vector unsigned short __b,
9876287512Sdim           vector unsigned short __c) {
9877287512Sdim  return (vector bool short)__builtin_s390_vstrch(__a, __b, __c, 12);
9878287512Sdim}
9879287512Sdim
9880287512Sdimstatic inline __ATTRS_o_ai vector bool int
9881287512Sdimvec_cmpnrg(vector unsigned int __a, vector unsigned int __b,
9882287512Sdim           vector unsigned int __c) {
9883287512Sdim  return (vector bool int)__builtin_s390_vstrcf(__a, __b, __c, 12);
9884287512Sdim}
9885287512Sdim
9886287512Sdim/*-- vec_cmpnrg_cc ----------------------------------------------------------*/
9887287512Sdim
9888287512Sdimstatic inline __ATTRS_o_ai vector bool char
9889287512Sdimvec_cmpnrg_cc(vector unsigned char __a, vector unsigned char __b,
9890287512Sdim              vector unsigned char __c, int *__cc) {
9891287512Sdim  return (vector bool char)__builtin_s390_vstrcbs(__a, __b, __c, 12, __cc);
9892287512Sdim}
9893287512Sdim
9894287512Sdimstatic inline __ATTRS_o_ai vector bool short
9895287512Sdimvec_cmpnrg_cc(vector unsigned short __a, vector unsigned short __b,
9896287512Sdim              vector unsigned short __c, int *__cc) {
9897287512Sdim  return (vector bool short)__builtin_s390_vstrchs(__a, __b, __c, 12, __cc);
9898287512Sdim}
9899287512Sdim
9900287512Sdimstatic inline __ATTRS_o_ai vector bool int
9901287512Sdimvec_cmpnrg_cc(vector unsigned int __a, vector unsigned int __b,
9902287512Sdim              vector unsigned int __c, int *__cc) {
9903287512Sdim  return (vector bool int)__builtin_s390_vstrcfs(__a, __b, __c, 12, __cc);
9904287512Sdim}
9905287512Sdim
9906287512Sdim/*-- vec_cmpnrg_idx ---------------------------------------------------------*/
9907287512Sdim
9908287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9909287512Sdimvec_cmpnrg_idx(vector unsigned char __a, vector unsigned char __b,
9910287512Sdim               vector unsigned char __c) {
9911287512Sdim  return __builtin_s390_vstrcb(__a, __b, __c, 8);
9912287512Sdim}
9913287512Sdim
9914287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9915287512Sdimvec_cmpnrg_idx(vector unsigned short __a, vector unsigned short __b,
9916287512Sdim               vector unsigned short __c) {
9917287512Sdim  return __builtin_s390_vstrch(__a, __b, __c, 8);
9918287512Sdim}
9919287512Sdim
9920287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9921287512Sdimvec_cmpnrg_idx(vector unsigned int __a, vector unsigned int __b,
9922287512Sdim               vector unsigned int __c) {
9923287512Sdim  return __builtin_s390_vstrcf(__a, __b, __c, 8);
9924287512Sdim}
9925287512Sdim
9926287512Sdim/*-- vec_cmpnrg_idx_cc ------------------------------------------------------*/
9927287512Sdim
9928287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9929287512Sdimvec_cmpnrg_idx_cc(vector unsigned char __a, vector unsigned char __b,
9930287512Sdim                  vector unsigned char __c, int *__cc) {
9931287512Sdim  return __builtin_s390_vstrcbs(__a, __b, __c, 8, __cc);
9932287512Sdim}
9933287512Sdim
9934287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9935287512Sdimvec_cmpnrg_idx_cc(vector unsigned short __a, vector unsigned short __b,
9936287512Sdim                  vector unsigned short __c, int *__cc) {
9937287512Sdim  return __builtin_s390_vstrchs(__a, __b, __c, 8, __cc);
9938287512Sdim}
9939287512Sdim
9940287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9941287512Sdimvec_cmpnrg_idx_cc(vector unsigned int __a, vector unsigned int __b,
9942287512Sdim                  vector unsigned int __c, int *__cc) {
9943287512Sdim  return __builtin_s390_vstrcfs(__a, __b, __c, 8, __cc);
9944287512Sdim}
9945287512Sdim
9946287512Sdim/*-- vec_cmpnrg_or_0_idx ----------------------------------------------------*/
9947287512Sdim
9948287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9949287512Sdimvec_cmpnrg_or_0_idx(vector unsigned char __a, vector unsigned char __b,
9950287512Sdim                    vector unsigned char __c) {
9951287512Sdim  return __builtin_s390_vstrczb(__a, __b, __c, 8);
9952287512Sdim}
9953287512Sdim
9954287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9955287512Sdimvec_cmpnrg_or_0_idx(vector unsigned short __a, vector unsigned short __b,
9956287512Sdim                    vector unsigned short __c) {
9957287512Sdim  return __builtin_s390_vstrczh(__a, __b, __c, 8);
9958287512Sdim}
9959287512Sdim
9960287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9961287512Sdimvec_cmpnrg_or_0_idx(vector unsigned int __a, vector unsigned int __b,
9962287512Sdim                    vector unsigned int __c) {
9963287512Sdim  return __builtin_s390_vstrczf(__a, __b, __c, 8);
9964287512Sdim}
9965287512Sdim
9966287512Sdim/*-- vec_cmpnrg_or_0_idx_cc -------------------------------------------------*/
9967287512Sdim
9968287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
9969287512Sdimvec_cmpnrg_or_0_idx_cc(vector unsigned char __a, vector unsigned char __b,
9970287512Sdim                       vector unsigned char __c, int *__cc) {
9971287512Sdim  return __builtin_s390_vstrczbs(__a, __b, __c, 8, __cc);
9972287512Sdim}
9973287512Sdim
9974287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
9975287512Sdimvec_cmpnrg_or_0_idx_cc(vector unsigned short __a, vector unsigned short __b,
9976287512Sdim                       vector unsigned short __c, int *__cc) {
9977287512Sdim  return __builtin_s390_vstrczhs(__a, __b, __c, 8, __cc);
9978287512Sdim}
9979287512Sdim
9980287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
9981287512Sdimvec_cmpnrg_or_0_idx_cc(vector unsigned int __a, vector unsigned int __b,
9982287512Sdim                       vector unsigned int __c, int *__cc) {
9983287512Sdim  return __builtin_s390_vstrczfs(__a, __b, __c, 8, __cc);
9984287512Sdim}
9985287512Sdim
9986287512Sdim/*-- vec_find_any_eq --------------------------------------------------------*/
9987287512Sdim
9988287512Sdimstatic inline __ATTRS_o_ai vector bool char
9989287512Sdimvec_find_any_eq(vector signed char __a, vector signed char __b) {
9990287512Sdim  return (vector bool char)
9991287512Sdim    __builtin_s390_vfaeb((vector unsigned char)__a,
9992287512Sdim                         (vector unsigned char)__b, 4);
9993287512Sdim}
9994287512Sdim
9995287512Sdimstatic inline __ATTRS_o_ai vector bool char
9996287512Sdimvec_find_any_eq(vector bool char __a, vector bool char __b) {
9997287512Sdim  return (vector bool char)
9998287512Sdim    __builtin_s390_vfaeb((vector unsigned char)__a,
9999287512Sdim                         (vector unsigned char)__b, 4);
10000287512Sdim}
10001287512Sdim
10002287512Sdimstatic inline __ATTRS_o_ai vector bool char
10003287512Sdimvec_find_any_eq(vector unsigned char __a, vector unsigned char __b) {
10004287512Sdim  return (vector bool char)__builtin_s390_vfaeb(__a, __b, 4);
10005287512Sdim}
10006287512Sdim
10007287512Sdimstatic inline __ATTRS_o_ai vector bool short
10008287512Sdimvec_find_any_eq(vector signed short __a, vector signed short __b) {
10009287512Sdim  return (vector bool short)
10010287512Sdim    __builtin_s390_vfaeh((vector unsigned short)__a,
10011287512Sdim                         (vector unsigned short)__b, 4);
10012287512Sdim}
10013287512Sdim
10014287512Sdimstatic inline __ATTRS_o_ai vector bool short
10015287512Sdimvec_find_any_eq(vector bool short __a, vector bool short __b) {
10016287512Sdim  return (vector bool short)
10017287512Sdim    __builtin_s390_vfaeh((vector unsigned short)__a,
10018287512Sdim                         (vector unsigned short)__b, 4);
10019287512Sdim}
10020287512Sdim
10021287512Sdimstatic inline __ATTRS_o_ai vector bool short
10022287512Sdimvec_find_any_eq(vector unsigned short __a, vector unsigned short __b) {
10023287512Sdim  return (vector bool short)__builtin_s390_vfaeh(__a, __b, 4);
10024287512Sdim}
10025287512Sdim
10026287512Sdimstatic inline __ATTRS_o_ai vector bool int
10027287512Sdimvec_find_any_eq(vector signed int __a, vector signed int __b) {
10028287512Sdim  return (vector bool int)
10029287512Sdim    __builtin_s390_vfaef((vector unsigned int)__a,
10030287512Sdim                         (vector unsigned int)__b, 4);
10031287512Sdim}
10032287512Sdim
10033287512Sdimstatic inline __ATTRS_o_ai vector bool int
10034287512Sdimvec_find_any_eq(vector bool int __a, vector bool int __b) {
10035287512Sdim  return (vector bool int)
10036287512Sdim    __builtin_s390_vfaef((vector unsigned int)__a,
10037287512Sdim                         (vector unsigned int)__b, 4);
10038287512Sdim}
10039287512Sdim
10040287512Sdimstatic inline __ATTRS_o_ai vector bool int
10041287512Sdimvec_find_any_eq(vector unsigned int __a, vector unsigned int __b) {
10042287512Sdim  return (vector bool int)__builtin_s390_vfaef(__a, __b, 4);
10043287512Sdim}
10044287512Sdim
10045287512Sdim/*-- vec_find_any_eq_cc -----------------------------------------------------*/
10046287512Sdim
10047287512Sdimstatic inline __ATTRS_o_ai vector bool char
10048287512Sdimvec_find_any_eq_cc(vector signed char __a, vector signed char __b, int *__cc) {
10049287512Sdim  return (vector bool char)
10050287512Sdim    __builtin_s390_vfaebs((vector unsigned char)__a,
10051287512Sdim                          (vector unsigned char)__b, 4, __cc);
10052287512Sdim}
10053287512Sdim
10054287512Sdimstatic inline __ATTRS_o_ai vector bool char
10055287512Sdimvec_find_any_eq_cc(vector bool char __a, vector bool char __b, int *__cc) {
10056287512Sdim  return (vector bool char)
10057287512Sdim    __builtin_s390_vfaebs((vector unsigned char)__a,
10058287512Sdim                          (vector unsigned char)__b, 4, __cc);
10059287512Sdim}
10060287512Sdim
10061287512Sdimstatic inline __ATTRS_o_ai vector bool char
10062287512Sdimvec_find_any_eq_cc(vector unsigned char __a, vector unsigned char __b,
10063287512Sdim                   int *__cc) {
10064287512Sdim  return (vector bool char)__builtin_s390_vfaebs(__a, __b, 4, __cc);
10065287512Sdim}
10066287512Sdim
10067287512Sdimstatic inline __ATTRS_o_ai vector bool short
10068287512Sdimvec_find_any_eq_cc(vector signed short __a, vector signed short __b,
10069287512Sdim                   int *__cc) {
10070287512Sdim  return (vector bool short)
10071287512Sdim    __builtin_s390_vfaehs((vector unsigned short)__a,
10072287512Sdim                          (vector unsigned short)__b, 4, __cc);
10073287512Sdim}
10074287512Sdim
10075287512Sdimstatic inline __ATTRS_o_ai vector bool short
10076287512Sdimvec_find_any_eq_cc(vector bool short __a, vector bool short __b, int *__cc) {
10077287512Sdim  return (vector bool short)
10078287512Sdim    __builtin_s390_vfaehs((vector unsigned short)__a,
10079287512Sdim                          (vector unsigned short)__b, 4, __cc);
10080287512Sdim}
10081287512Sdim
10082287512Sdimstatic inline __ATTRS_o_ai vector bool short
10083287512Sdimvec_find_any_eq_cc(vector unsigned short __a, vector unsigned short __b,
10084287512Sdim                   int *__cc) {
10085287512Sdim  return (vector bool short)__builtin_s390_vfaehs(__a, __b, 4, __cc);
10086287512Sdim}
10087287512Sdim
10088287512Sdimstatic inline __ATTRS_o_ai vector bool int
10089287512Sdimvec_find_any_eq_cc(vector signed int __a, vector signed int __b, int *__cc) {
10090287512Sdim  return (vector bool int)
10091287512Sdim    __builtin_s390_vfaefs((vector unsigned int)__a,
10092287512Sdim                          (vector unsigned int)__b, 4, __cc);
10093287512Sdim}
10094287512Sdim
10095287512Sdimstatic inline __ATTRS_o_ai vector bool int
10096287512Sdimvec_find_any_eq_cc(vector bool int __a, vector bool int __b, int *__cc) {
10097287512Sdim  return (vector bool int)
10098287512Sdim    __builtin_s390_vfaefs((vector unsigned int)__a,
10099287512Sdim                          (vector unsigned int)__b, 4, __cc);
10100287512Sdim}
10101287512Sdim
10102287512Sdimstatic inline __ATTRS_o_ai vector bool int
10103287512Sdimvec_find_any_eq_cc(vector unsigned int __a, vector unsigned int __b,
10104287512Sdim                   int *__cc) {
10105287512Sdim  return (vector bool int)__builtin_s390_vfaefs(__a, __b, 4, __cc);
10106287512Sdim}
10107287512Sdim
10108287512Sdim/*-- vec_find_any_eq_idx ----------------------------------------------------*/
10109287512Sdim
10110287512Sdimstatic inline __ATTRS_o_ai vector signed char
10111287512Sdimvec_find_any_eq_idx(vector signed char __a, vector signed char __b) {
10112287512Sdim  return (vector signed char)
10113287512Sdim    __builtin_s390_vfaeb((vector unsigned char)__a,
10114287512Sdim                         (vector unsigned char)__b, 0);
10115287512Sdim}
10116287512Sdim
10117287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
10118287512Sdimvec_find_any_eq_idx(vector bool char __a, vector bool char __b) {
10119287512Sdim  return __builtin_s390_vfaeb((vector unsigned char)__a,
10120287512Sdim                              (vector unsigned char)__b, 0);
10121287512Sdim}
10122287512Sdim
10123287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
10124287512Sdimvec_find_any_eq_idx(vector unsigned char __a, vector unsigned char __b) {
10125287512Sdim  return __builtin_s390_vfaeb(__a, __b, 0);
10126287512Sdim}
10127287512Sdim
10128287512Sdimstatic inline __ATTRS_o_ai vector signed short
10129287512Sdimvec_find_any_eq_idx(vector signed short __a, vector signed short __b) {
10130287512Sdim  return (vector signed short)
10131287512Sdim    __builtin_s390_vfaeh((vector unsigned short)__a,
10132287512Sdim                         (vector unsigned short)__b, 0);
10133287512Sdim}
10134287512Sdim
10135287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
10136287512Sdimvec_find_any_eq_idx(vector bool short __a, vector bool short __b) {
10137287512Sdim  return __builtin_s390_vfaeh((vector unsigned short)__a,
10138287512Sdim                              (vector unsigned short)__b, 0);
10139287512Sdim}
10140287512Sdim
10141287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
10142287512Sdimvec_find_any_eq_idx(vector unsigned short __a, vector unsigned short __b) {
10143287512Sdim  return __builtin_s390_vfaeh(__a, __b, 0);
10144287512Sdim}
10145287512Sdim
10146287512Sdimstatic inline __ATTRS_o_ai vector signed int
10147287512Sdimvec_find_any_eq_idx(vector signed int __a, vector signed int __b) {
10148287512Sdim  return (vector signed int)
10149287512Sdim    __builtin_s390_vfaef((vector unsigned int)__a,
10150287512Sdim                         (vector unsigned int)__b, 0);
10151287512Sdim}
10152287512Sdim
10153287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
10154287512Sdimvec_find_any_eq_idx(vector bool int __a, vector bool int __b) {
10155287512Sdim  return __builtin_s390_vfaef((vector unsigned int)__a,
10156287512Sdim                              (vector unsigned int)__b, 0);
10157287512Sdim}
10158287512Sdim
10159287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
10160287512Sdimvec_find_any_eq_idx(vector unsigned int __a, vector unsigned int __b) {
10161287512Sdim  return __builtin_s390_vfaef(__a, __b, 0);
10162287512Sdim}
10163287512Sdim
10164287512Sdim/*-- vec_find_any_eq_idx_cc -------------------------------------------------*/
10165287512Sdim
10166287512Sdimstatic inline __ATTRS_o_ai vector signed char
10167287512Sdimvec_find_any_eq_idx_cc(vector signed char __a, vector signed char __b,
10168287512Sdim                       int *__cc) {
10169287512Sdim  return (vector signed char)
10170287512Sdim    __builtin_s390_vfaebs((vector unsigned char)__a,
10171287512Sdim                          (vector unsigned char)__b, 0, __cc);
10172287512Sdim}
10173287512Sdim
10174287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
10175287512Sdimvec_find_any_eq_idx_cc(vector bool char __a, vector bool char __b, int *__cc) {
10176287512Sdim  return __builtin_s390_vfaebs((vector unsigned char)__a,
10177287512Sdim                               (vector unsigned char)__b, 0, __cc);
10178287512Sdim}
10179287512Sdim
10180287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
10181287512Sdimvec_find_any_eq_idx_cc(vector unsigned char __a, vector unsigned char __b,
10182287512Sdim                       int *__cc) {
10183287512Sdim  return __builtin_s390_vfaebs(__a, __b, 0, __cc);
10184287512Sdim}
10185287512Sdim
10186287512Sdimstatic inline __ATTRS_o_ai vector signed short
10187287512Sdimvec_find_any_eq_idx_cc(vector signed short __a, vector signed short __b,
10188287512Sdim                       int *__cc) {
10189287512Sdim  return (vector signed short)
10190287512Sdim    __builtin_s390_vfaehs((vector unsigned short)__a,
10191287512Sdim                          (vector unsigned short)__b, 0, __cc);
10192287512Sdim}
10193287512Sdim
10194287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
10195287512Sdimvec_find_any_eq_idx_cc(vector bool short __a, vector bool short __b,
10196287512Sdim                       int *__cc) {
10197287512Sdim  return __builtin_s390_vfaehs((vector unsigned short)__a,
10198287512Sdim                               (vector unsigned short)__b, 0, __cc);
10199287512Sdim}
10200287512Sdim
10201287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
10202287512Sdimvec_find_any_eq_idx_cc(vector unsigned short __a, vector unsigned short __b,
10203287512Sdim                       int *__cc) {
10204287512Sdim  return __builtin_s390_vfaehs(__a, __b, 0, __cc);
10205287512Sdim}
10206287512Sdim
10207287512Sdimstatic inline __ATTRS_o_ai vector signed int
10208287512Sdimvec_find_any_eq_idx_cc(vector signed int __a, vector signed int __b,
10209287512Sdim                       int *__cc) {
10210287512Sdim  return (vector signed int)
10211287512Sdim    __builtin_s390_vfaefs((vector unsigned int)__a,
10212287512Sdim                          (vector unsigned int)__b, 0, __cc);
10213287512Sdim}
10214287512Sdim
10215287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
10216287512Sdimvec_find_any_eq_idx_cc(vector bool int __a, vector bool int __b, int *__cc) {
10217287512Sdim  return __builtin_s390_vfaefs((vector unsigned int)__a,
10218287512Sdim                               (vector unsigned int)__b, 0, __cc);
10219287512Sdim}
10220287512Sdim
10221287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
10222287512Sdimvec_find_any_eq_idx_cc(vector unsigned int __a, vector unsigned int __b,
10223287512Sdim                       int *__cc) {
10224287512Sdim  return __builtin_s390_vfaefs(__a, __b, 0, __cc);
10225287512Sdim}
10226287512Sdim
10227287512Sdim/*-- vec_find_any_eq_or_0_idx -----------------------------------------------*/
10228287512Sdim
10229287512Sdimstatic inline __ATTRS_o_ai vector signed char
10230287512Sdimvec_find_any_eq_or_0_idx(vector signed char __a, vector signed char __b) {
10231287512Sdim  return (vector signed char)
10232287512Sdim    __builtin_s390_vfaezb((vector unsigned char)__a,
10233287512Sdim                          (vector unsigned char)__b, 0);
10234287512Sdim}
10235287512Sdim
10236287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
10237287512Sdimvec_find_any_eq_or_0_idx(vector bool char __a, vector bool char __b) {
10238287512Sdim  return __builtin_s390_vfaezb((vector unsigned char)__a,
10239287512Sdim                               (vector unsigned char)__b, 0);
10240287512Sdim}
10241287512Sdim
10242287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
10243287512Sdimvec_find_any_eq_or_0_idx(vector unsigned char __a, vector unsigned char __b) {
10244287512Sdim  return __builtin_s390_vfaezb(__a, __b, 0);
10245287512Sdim}
10246287512Sdim
10247287512Sdimstatic inline __ATTRS_o_ai vector signed short
10248287512Sdimvec_find_any_eq_or_0_idx(vector signed short __a, vector signed short __b) {
10249287512Sdim  return (vector signed short)
10250287512Sdim    __builtin_s390_vfaezh((vector unsigned short)__a,
10251287512Sdim                          (vector unsigned short)__b, 0);
10252287512Sdim}
10253287512Sdim
10254287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
10255287512Sdimvec_find_any_eq_or_0_idx(vector bool short __a, vector bool short __b) {
10256287512Sdim  return __builtin_s390_vfaezh((vector unsigned short)__a,
10257287512Sdim                               (vector unsigned short)__b, 0);
10258287512Sdim}
10259287512Sdim
10260287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
10261287512Sdimvec_find_any_eq_or_0_idx(vector unsigned short __a, vector unsigned short __b) {
10262287512Sdim  return __builtin_s390_vfaezh(__a, __b, 0);
10263287512Sdim}
10264287512Sdim
10265287512Sdimstatic inline __ATTRS_o_ai vector signed int
10266287512Sdimvec_find_any_eq_or_0_idx(vector signed int __a, vector signed int __b) {
10267287512Sdim  return (vector signed int)
10268287512Sdim    __builtin_s390_vfaezf((vector unsigned int)__a,
10269287512Sdim                          (vector unsigned int)__b, 0);
10270287512Sdim}
10271287512Sdim
10272287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
10273287512Sdimvec_find_any_eq_or_0_idx(vector bool int __a, vector bool int __b) {
10274287512Sdim  return __builtin_s390_vfaezf((vector unsigned int)__a,
10275287512Sdim                               (vector unsigned int)__b, 0);
10276287512Sdim}
10277287512Sdim
10278287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
10279287512Sdimvec_find_any_eq_or_0_idx(vector unsigned int __a, vector unsigned int __b) {
10280287512Sdim  return __builtin_s390_vfaezf(__a, __b, 0);
10281287512Sdim}
10282287512Sdim
10283287512Sdim/*-- vec_find_any_eq_or_0_idx_cc --------------------------------------------*/
10284287512Sdim
10285287512Sdimstatic inline __ATTRS_o_ai vector signed char
10286287512Sdimvec_find_any_eq_or_0_idx_cc(vector signed char __a, vector signed char __b,
10287287512Sdim                            int *__cc) {
10288287512Sdim  return (vector signed char)
10289287512Sdim    __builtin_s390_vfaezbs((vector unsigned char)__a,
10290287512Sdim                           (vector unsigned char)__b, 0, __cc);
10291287512Sdim}
10292287512Sdim
10293287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
10294287512Sdimvec_find_any_eq_or_0_idx_cc(vector bool char __a, vector bool char __b,
10295287512Sdim                            int *__cc) {
10296287512Sdim  return __builtin_s390_vfaezbs((vector unsigned char)__a,
10297287512Sdim                                (vector unsigned char)__b, 0, __cc);
10298287512Sdim}
10299287512Sdim
10300287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
10301287512Sdimvec_find_any_eq_or_0_idx_cc(vector unsigned char __a, vector unsigned char __b,
10302287512Sdim                            int *__cc) {
10303287512Sdim  return __builtin_s390_vfaezbs(__a, __b, 0, __cc);
10304287512Sdim}
10305287512Sdim
10306287512Sdimstatic inline __ATTRS_o_ai vector signed short
10307287512Sdimvec_find_any_eq_or_0_idx_cc(vector signed short __a, vector signed short __b,
10308287512Sdim                            int *__cc) {
10309287512Sdim  return (vector signed short)
10310287512Sdim    __builtin_s390_vfaezhs((vector unsigned short)__a,
10311287512Sdim                           (vector unsigned short)__b, 0, __cc);
10312287512Sdim}
10313287512Sdim
10314287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
10315287512Sdimvec_find_any_eq_or_0_idx_cc(vector bool short __a, vector bool short __b,
10316287512Sdim                            int *__cc) {
10317287512Sdim  return __builtin_s390_vfaezhs((vector unsigned short)__a,
10318287512Sdim                                (vector unsigned short)__b, 0, __cc);
10319287512Sdim}
10320287512Sdim
10321287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
10322287512Sdimvec_find_any_eq_or_0_idx_cc(vector unsigned short __a,
10323287512Sdim                            vector unsigned short __b, int *__cc) {
10324287512Sdim  return __builtin_s390_vfaezhs(__a, __b, 0, __cc);
10325287512Sdim}
10326287512Sdim
10327287512Sdimstatic inline __ATTRS_o_ai vector signed int
10328287512Sdimvec_find_any_eq_or_0_idx_cc(vector signed int __a, vector signed int __b,
10329287512Sdim                            int *__cc) {
10330287512Sdim  return (vector signed int)
10331287512Sdim    __builtin_s390_vfaezfs((vector unsigned int)__a,
10332287512Sdim                           (vector unsigned int)__b, 0, __cc);
10333287512Sdim}
10334287512Sdim
10335287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
10336287512Sdimvec_find_any_eq_or_0_idx_cc(vector bool int __a, vector bool int __b,
10337287512Sdim                            int *__cc) {
10338287512Sdim  return __builtin_s390_vfaezfs((vector unsigned int)__a,
10339287512Sdim                                (vector unsigned int)__b, 0, __cc);
10340287512Sdim}
10341287512Sdim
10342287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
10343287512Sdimvec_find_any_eq_or_0_idx_cc(vector unsigned int __a, vector unsigned int __b,
10344287512Sdim                            int *__cc) {
10345287512Sdim  return __builtin_s390_vfaezfs(__a, __b, 0, __cc);
10346287512Sdim}
10347287512Sdim
10348287512Sdim/*-- vec_find_any_ne --------------------------------------------------------*/
10349287512Sdim
10350287512Sdimstatic inline __ATTRS_o_ai vector bool char
10351287512Sdimvec_find_any_ne(vector signed char __a, vector signed char __b) {
10352287512Sdim  return (vector bool char)
10353287512Sdim    __builtin_s390_vfaeb((vector unsigned char)__a,
10354287512Sdim                         (vector unsigned char)__b, 12);
10355287512Sdim}
10356287512Sdim
10357287512Sdimstatic inline __ATTRS_o_ai vector bool char
10358287512Sdimvec_find_any_ne(vector bool char __a, vector bool char __b) {
10359287512Sdim  return (vector bool char)
10360287512Sdim    __builtin_s390_vfaeb((vector unsigned char)__a,
10361287512Sdim                         (vector unsigned char)__b, 12);
10362287512Sdim}
10363287512Sdim
10364287512Sdimstatic inline __ATTRS_o_ai vector bool char
10365287512Sdimvec_find_any_ne(vector unsigned char __a, vector unsigned char __b) {
10366287512Sdim  return (vector bool char)__builtin_s390_vfaeb(__a, __b, 12);
10367287512Sdim}
10368287512Sdim
10369287512Sdimstatic inline __ATTRS_o_ai vector bool short
10370287512Sdimvec_find_any_ne(vector signed short __a, vector signed short __b) {
10371287512Sdim  return (vector bool short)
10372287512Sdim    __builtin_s390_vfaeh((vector unsigned short)__a,
10373287512Sdim                         (vector unsigned short)__b, 12);
10374287512Sdim}
10375287512Sdim
10376287512Sdimstatic inline __ATTRS_o_ai vector bool short
10377287512Sdimvec_find_any_ne(vector bool short __a, vector bool short __b) {
10378287512Sdim  return (vector bool short)
10379287512Sdim    __builtin_s390_vfaeh((vector unsigned short)__a,
10380287512Sdim                         (vector unsigned short)__b, 12);
10381287512Sdim}
10382287512Sdim
10383287512Sdimstatic inline __ATTRS_o_ai vector bool short
10384287512Sdimvec_find_any_ne(vector unsigned short __a, vector unsigned short __b) {
10385287512Sdim  return (vector bool short)__builtin_s390_vfaeh(__a, __b, 12);
10386287512Sdim}
10387287512Sdim
10388287512Sdimstatic inline __ATTRS_o_ai vector bool int
10389287512Sdimvec_find_any_ne(vector signed int __a, vector signed int __b) {
10390287512Sdim  return (vector bool int)
10391287512Sdim    __builtin_s390_vfaef((vector unsigned int)__a,
10392287512Sdim                         (vector unsigned int)__b, 12);
10393287512Sdim}
10394287512Sdim
10395287512Sdimstatic inline __ATTRS_o_ai vector bool int
10396287512Sdimvec_find_any_ne(vector bool int __a, vector bool int __b) {
10397287512Sdim  return (vector bool int)
10398287512Sdim    __builtin_s390_vfaef((vector unsigned int)__a,
10399287512Sdim                         (vector unsigned int)__b, 12);
10400287512Sdim}
10401287512Sdim
10402287512Sdimstatic inline __ATTRS_o_ai vector bool int
10403287512Sdimvec_find_any_ne(vector unsigned int __a, vector unsigned int __b) {
10404287512Sdim  return (vector bool int)__builtin_s390_vfaef(__a, __b, 12);
10405287512Sdim}
10406287512Sdim
10407287512Sdim/*-- vec_find_any_ne_cc -----------------------------------------------------*/
10408287512Sdim
10409287512Sdimstatic inline __ATTRS_o_ai vector bool char
10410287512Sdimvec_find_any_ne_cc(vector signed char __a, vector signed char __b, int *__cc) {
10411287512Sdim  return (vector bool char)
10412287512Sdim    __builtin_s390_vfaebs((vector unsigned char)__a,
10413287512Sdim                          (vector unsigned char)__b, 12, __cc);
10414287512Sdim}
10415287512Sdim
10416287512Sdimstatic inline __ATTRS_o_ai vector bool char
10417287512Sdimvec_find_any_ne_cc(vector bool char __a, vector bool char __b, int *__cc) {
10418287512Sdim  return (vector bool char)
10419287512Sdim    __builtin_s390_vfaebs((vector unsigned char)__a,
10420287512Sdim                          (vector unsigned char)__b, 12, __cc);
10421287512Sdim}
10422287512Sdim
10423287512Sdimstatic inline __ATTRS_o_ai vector bool char
10424287512Sdimvec_find_any_ne_cc(vector unsigned char __a, vector unsigned char __b,
10425287512Sdim                   int *__cc) {
10426287512Sdim  return (vector bool char)__builtin_s390_vfaebs(__a, __b, 12, __cc);
10427287512Sdim}
10428287512Sdim
10429287512Sdimstatic inline __ATTRS_o_ai vector bool short
10430287512Sdimvec_find_any_ne_cc(vector signed short __a, vector signed short __b,
10431287512Sdim                   int *__cc) {
10432287512Sdim  return (vector bool short)
10433287512Sdim    __builtin_s390_vfaehs((vector unsigned short)__a,
10434287512Sdim                          (vector unsigned short)__b, 12, __cc);
10435287512Sdim}
10436287512Sdim
10437287512Sdimstatic inline __ATTRS_o_ai vector bool short
10438287512Sdimvec_find_any_ne_cc(vector bool short __a, vector bool short __b, int *__cc) {
10439287512Sdim  return (vector bool short)
10440287512Sdim    __builtin_s390_vfaehs((vector unsigned short)__a,
10441287512Sdim                          (vector unsigned short)__b, 12, __cc);
10442287512Sdim}
10443287512Sdim
10444287512Sdimstatic inline __ATTRS_o_ai vector bool short
10445287512Sdimvec_find_any_ne_cc(vector unsigned short __a, vector unsigned short __b,
10446287512Sdim                   int *__cc) {
10447287512Sdim  return (vector bool short)__builtin_s390_vfaehs(__a, __b, 12, __cc);
10448287512Sdim}
10449287512Sdim
10450287512Sdimstatic inline __ATTRS_o_ai vector bool int
10451287512Sdimvec_find_any_ne_cc(vector signed int __a, vector signed int __b, int *__cc) {
10452287512Sdim  return (vector bool int)
10453287512Sdim    __builtin_s390_vfaefs((vector unsigned int)__a,
10454287512Sdim                          (vector unsigned int)__b, 12, __cc);
10455287512Sdim}
10456287512Sdim
10457287512Sdimstatic inline __ATTRS_o_ai vector bool int
10458287512Sdimvec_find_any_ne_cc(vector bool int __a, vector bool int __b, int *__cc) {
10459287512Sdim  return (vector bool int)
10460287512Sdim    __builtin_s390_vfaefs((vector unsigned int)__a,
10461287512Sdim                          (vector unsigned int)__b, 12, __cc);
10462287512Sdim}
10463287512Sdim
10464287512Sdimstatic inline __ATTRS_o_ai vector bool int
10465287512Sdimvec_find_any_ne_cc(vector unsigned int __a, vector unsigned int __b,
10466287512Sdim                   int *__cc) {
10467287512Sdim  return (vector bool int)__builtin_s390_vfaefs(__a, __b, 12, __cc);
10468287512Sdim}
10469287512Sdim
10470287512Sdim/*-- vec_find_any_ne_idx ----------------------------------------------------*/
10471287512Sdim
10472287512Sdimstatic inline __ATTRS_o_ai vector signed char
10473287512Sdimvec_find_any_ne_idx(vector signed char __a, vector signed char __b) {
10474287512Sdim  return (vector signed char)
10475287512Sdim    __builtin_s390_vfaeb((vector unsigned char)__a,
10476287512Sdim                         (vector unsigned char)__b, 8);
10477287512Sdim}
10478287512Sdim
10479287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
10480287512Sdimvec_find_any_ne_idx(vector bool char __a, vector bool char __b) {
10481287512Sdim  return __builtin_s390_vfaeb((vector unsigned char)__a,
10482287512Sdim                              (vector unsigned char)__b, 8);
10483287512Sdim}
10484287512Sdim
10485287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
10486287512Sdimvec_find_any_ne_idx(vector unsigned char __a, vector unsigned char __b) {
10487287512Sdim  return __builtin_s390_vfaeb(__a, __b, 8);
10488287512Sdim}
10489287512Sdim
10490287512Sdimstatic inline __ATTRS_o_ai vector signed short
10491287512Sdimvec_find_any_ne_idx(vector signed short __a, vector signed short __b) {
10492287512Sdim  return (vector signed short)
10493287512Sdim    __builtin_s390_vfaeh((vector unsigned short)__a,
10494287512Sdim                         (vector unsigned short)__b, 8);
10495287512Sdim}
10496287512Sdim
10497287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
10498287512Sdimvec_find_any_ne_idx(vector bool short __a, vector bool short __b) {
10499287512Sdim  return __builtin_s390_vfaeh((vector unsigned short)__a,
10500287512Sdim                              (vector unsigned short)__b, 8);
10501287512Sdim}
10502287512Sdim
10503287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
10504287512Sdimvec_find_any_ne_idx(vector unsigned short __a, vector unsigned short __b) {
10505287512Sdim  return __builtin_s390_vfaeh(__a, __b, 8);
10506287512Sdim}
10507287512Sdim
10508287512Sdimstatic inline __ATTRS_o_ai vector signed int
10509287512Sdimvec_find_any_ne_idx(vector signed int __a, vector signed int __b) {
10510287512Sdim  return (vector signed int)
10511287512Sdim    __builtin_s390_vfaef((vector unsigned int)__a,
10512287512Sdim                         (vector unsigned int)__b, 8);
10513287512Sdim}
10514287512Sdim
10515287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
10516287512Sdimvec_find_any_ne_idx(vector bool int __a, vector bool int __b) {
10517287512Sdim  return __builtin_s390_vfaef((vector unsigned int)__a,
10518287512Sdim                              (vector unsigned int)__b, 8);
10519287512Sdim}
10520287512Sdim
10521287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
10522287512Sdimvec_find_any_ne_idx(vector unsigned int __a, vector unsigned int __b) {
10523287512Sdim  return __builtin_s390_vfaef(__a, __b, 8);
10524287512Sdim}
10525287512Sdim
10526287512Sdim/*-- vec_find_any_ne_idx_cc -------------------------------------------------*/
10527287512Sdim
10528287512Sdimstatic inline __ATTRS_o_ai vector signed char
10529287512Sdimvec_find_any_ne_idx_cc(vector signed char __a, vector signed char __b,
10530287512Sdim                       int *__cc) {
10531287512Sdim  return (vector signed char)
10532287512Sdim    __builtin_s390_vfaebs((vector unsigned char)__a,
10533287512Sdim                          (vector unsigned char)__b, 8, __cc);
10534287512Sdim}
10535287512Sdim
10536287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
10537287512Sdimvec_find_any_ne_idx_cc(vector bool char __a, vector bool char __b, int *__cc) {
10538287512Sdim  return __builtin_s390_vfaebs((vector unsigned char)__a,
10539287512Sdim                               (vector unsigned char)__b, 8, __cc);
10540287512Sdim}
10541287512Sdim
10542287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
10543287512Sdimvec_find_any_ne_idx_cc(vector unsigned char __a, vector unsigned char __b,
10544287512Sdim                       int *__cc) {
10545287512Sdim  return __builtin_s390_vfaebs(__a, __b, 8, __cc);
10546287512Sdim}
10547287512Sdim
10548287512Sdimstatic inline __ATTRS_o_ai vector signed short
10549287512Sdimvec_find_any_ne_idx_cc(vector signed short __a, vector signed short __b,
10550287512Sdim                       int *__cc) {
10551287512Sdim  return (vector signed short)
10552287512Sdim    __builtin_s390_vfaehs((vector unsigned short)__a,
10553287512Sdim                          (vector unsigned short)__b, 8, __cc);
10554287512Sdim}
10555287512Sdim
10556287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
10557287512Sdimvec_find_any_ne_idx_cc(vector bool short __a, vector bool short __b,
10558287512Sdim                       int *__cc) {
10559287512Sdim  return __builtin_s390_vfaehs((vector unsigned short)__a,
10560287512Sdim                               (vector unsigned short)__b, 8, __cc);
10561287512Sdim}
10562287512Sdim
10563287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
10564287512Sdimvec_find_any_ne_idx_cc(vector unsigned short __a, vector unsigned short __b,
10565287512Sdim                       int *__cc) {
10566287512Sdim  return __builtin_s390_vfaehs(__a, __b, 8, __cc);
10567287512Sdim}
10568287512Sdim
10569287512Sdimstatic inline __ATTRS_o_ai vector signed int
10570287512Sdimvec_find_any_ne_idx_cc(vector signed int __a, vector signed int __b,
10571287512Sdim                       int *__cc) {
10572287512Sdim  return (vector signed int)
10573287512Sdim    __builtin_s390_vfaefs((vector unsigned int)__a,
10574287512Sdim                          (vector unsigned int)__b, 8, __cc);
10575287512Sdim}
10576287512Sdim
10577287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
10578287512Sdimvec_find_any_ne_idx_cc(vector bool int __a, vector bool int __b, int *__cc) {
10579287512Sdim  return __builtin_s390_vfaefs((vector unsigned int)__a,
10580287512Sdim                               (vector unsigned int)__b, 8, __cc);
10581287512Sdim}
10582287512Sdim
10583287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
10584287512Sdimvec_find_any_ne_idx_cc(vector unsigned int __a, vector unsigned int __b,
10585287512Sdim                       int *__cc) {
10586287512Sdim  return __builtin_s390_vfaefs(__a, __b, 8, __cc);
10587287512Sdim}
10588287512Sdim
10589287512Sdim/*-- vec_find_any_ne_or_0_idx -----------------------------------------------*/
10590287512Sdim
10591287512Sdimstatic inline __ATTRS_o_ai vector signed char
10592287512Sdimvec_find_any_ne_or_0_idx(vector signed char __a, vector signed char __b) {
10593287512Sdim  return (vector signed char)
10594287512Sdim    __builtin_s390_vfaezb((vector unsigned char)__a,
10595287512Sdim                          (vector unsigned char)__b, 8);
10596287512Sdim}
10597287512Sdim
10598287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
10599287512Sdimvec_find_any_ne_or_0_idx(vector bool char __a, vector bool char __b) {
10600287512Sdim  return __builtin_s390_vfaezb((vector unsigned char)__a,
10601287512Sdim                               (vector unsigned char)__b, 8);
10602287512Sdim}
10603287512Sdim
10604287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
10605287512Sdimvec_find_any_ne_or_0_idx(vector unsigned char __a, vector unsigned char __b) {
10606287512Sdim  return __builtin_s390_vfaezb(__a, __b, 8);
10607287512Sdim}
10608287512Sdim
10609287512Sdimstatic inline __ATTRS_o_ai vector signed short
10610287512Sdimvec_find_any_ne_or_0_idx(vector signed short __a, vector signed short __b) {
10611287512Sdim  return (vector signed short)
10612287512Sdim    __builtin_s390_vfaezh((vector unsigned short)__a,
10613287512Sdim                          (vector unsigned short)__b, 8);
10614287512Sdim}
10615287512Sdim
10616287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
10617287512Sdimvec_find_any_ne_or_0_idx(vector bool short __a, vector bool short __b) {
10618287512Sdim  return __builtin_s390_vfaezh((vector unsigned short)__a,
10619287512Sdim                               (vector unsigned short)__b, 8);
10620287512Sdim}
10621287512Sdim
10622287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
10623287512Sdimvec_find_any_ne_or_0_idx(vector unsigned short __a, vector unsigned short __b) {
10624287512Sdim  return __builtin_s390_vfaezh(__a, __b, 8);
10625287512Sdim}
10626287512Sdim
10627287512Sdimstatic inline __ATTRS_o_ai vector signed int
10628287512Sdimvec_find_any_ne_or_0_idx(vector signed int __a, vector signed int __b) {
10629287512Sdim  return (vector signed int)
10630287512Sdim    __builtin_s390_vfaezf((vector unsigned int)__a,
10631287512Sdim                          (vector unsigned int)__b, 8);
10632287512Sdim}
10633287512Sdim
10634287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
10635287512Sdimvec_find_any_ne_or_0_idx(vector bool int __a, vector bool int __b) {
10636287512Sdim  return __builtin_s390_vfaezf((vector unsigned int)__a,
10637287512Sdim                               (vector unsigned int)__b, 8);
10638287512Sdim}
10639287512Sdim
10640287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
10641287512Sdimvec_find_any_ne_or_0_idx(vector unsigned int __a, vector unsigned int __b) {
10642287512Sdim  return __builtin_s390_vfaezf(__a, __b, 8);
10643287512Sdim}
10644287512Sdim
10645287512Sdim/*-- vec_find_any_ne_or_0_idx_cc --------------------------------------------*/
10646287512Sdim
10647287512Sdimstatic inline __ATTRS_o_ai vector signed char
10648287512Sdimvec_find_any_ne_or_0_idx_cc(vector signed char __a, vector signed char __b,
10649287512Sdim                            int *__cc) {
10650287512Sdim  return (vector signed char)
10651287512Sdim    __builtin_s390_vfaezbs((vector unsigned char)__a,
10652287512Sdim                           (vector unsigned char)__b, 8, __cc);
10653287512Sdim}
10654287512Sdim
10655287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
10656287512Sdimvec_find_any_ne_or_0_idx_cc(vector bool char __a, vector bool char __b,
10657287512Sdim                            int *__cc) {
10658287512Sdim  return __builtin_s390_vfaezbs((vector unsigned char)__a,
10659287512Sdim                                (vector unsigned char)__b, 8, __cc);
10660287512Sdim}
10661287512Sdim
10662287512Sdimstatic inline __ATTRS_o_ai vector unsigned char
10663287512Sdimvec_find_any_ne_or_0_idx_cc(vector unsigned char __a, vector unsigned char __b,
10664287512Sdim                            int *__cc) {
10665287512Sdim  return __builtin_s390_vfaezbs(__a, __b, 8, __cc);
10666287512Sdim}
10667287512Sdim
10668287512Sdimstatic inline __ATTRS_o_ai vector signed short
10669287512Sdimvec_find_any_ne_or_0_idx_cc(vector signed short __a, vector signed short __b,
10670287512Sdim                            int *__cc) {
10671287512Sdim  return (vector signed short)
10672287512Sdim    __builtin_s390_vfaezhs((vector unsigned short)__a,
10673287512Sdim                           (vector unsigned short)__b, 8, __cc);
10674287512Sdim}
10675287512Sdim
10676287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
10677287512Sdimvec_find_any_ne_or_0_idx_cc(vector bool short __a, vector bool short __b,
10678287512Sdim                            int *__cc) {
10679287512Sdim  return __builtin_s390_vfaezhs((vector unsigned short)__a,
10680287512Sdim                                (vector unsigned short)__b, 8, __cc);
10681287512Sdim}
10682287512Sdim
10683287512Sdimstatic inline __ATTRS_o_ai vector unsigned short
10684287512Sdimvec_find_any_ne_or_0_idx_cc(vector unsigned short __a,
10685287512Sdim                            vector unsigned short __b, int *__cc) {
10686287512Sdim  return __builtin_s390_vfaezhs(__a, __b, 8, __cc);
10687287512Sdim}
10688287512Sdim
10689287512Sdimstatic inline __ATTRS_o_ai vector signed int
10690287512Sdimvec_find_any_ne_or_0_idx_cc(vector signed int __a, vector signed int __b,
10691287512Sdim                            int *__cc) {
10692287512Sdim  return (vector signed int)
10693287512Sdim    __builtin_s390_vfaezfs((vector unsigned int)__a,
10694287512Sdim                           (vector unsigned int)__b, 8, __cc);
10695287512Sdim}
10696287512Sdim
10697287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
10698287512Sdimvec_find_any_ne_or_0_idx_cc(vector bool int __a, vector bool int __b,
10699287512Sdim                            int *__cc) {
10700287512Sdim  return __builtin_s390_vfaezfs((vector unsigned int)__a,
10701287512Sdim                                (vector unsigned int)__b, 8, __cc);
10702287512Sdim}
10703287512Sdim
10704287512Sdimstatic inline __ATTRS_o_ai vector unsigned int
10705287512Sdimvec_find_any_ne_or_0_idx_cc(vector unsigned int __a, vector unsigned int __b,
10706287512Sdim                            int *__cc) {
10707287512Sdim  return __builtin_s390_vfaezfs(__a, __b, 8, __cc);
10708287512Sdim}
10709287512Sdim
10710353358Sdim/*-- vec_search_string_cc ---------------------------------------------------*/
10711353358Sdim
10712353358Sdim#if __ARCH__ >= 13
10713353358Sdim
10714353358Sdimstatic inline __ATTRS_o_ai vector unsigned char
10715353358Sdimvec_search_string_cc(vector signed char __a, vector signed char __b,
10716353358Sdim                     vector unsigned char __c, int *__cc) {
10717353358Sdim  return __builtin_s390_vstrsb((vector unsigned char)__a,
10718353358Sdim                               (vector unsigned char)__b, __c, __cc);
10719353358Sdim}
10720353358Sdim
10721353358Sdimstatic inline __ATTRS_o_ai vector unsigned char
10722353358Sdimvec_search_string_cc(vector bool char __a, vector bool char __b,
10723353358Sdim                     vector unsigned char __c, int *__cc) {
10724353358Sdim  return __builtin_s390_vstrsb((vector unsigned char)__a,
10725353358Sdim                               (vector unsigned char)__b, __c, __cc);
10726353358Sdim}
10727353358Sdim
10728353358Sdimstatic inline __ATTRS_o_ai vector unsigned char
10729353358Sdimvec_search_string_cc(vector unsigned char __a, vector unsigned char __b,
10730353358Sdim                     vector unsigned char __c, int *__cc) {
10731353358Sdim  return __builtin_s390_vstrsb(__a, __b, __c, __cc);
10732353358Sdim}
10733353358Sdim
10734353358Sdimstatic inline __ATTRS_o_ai vector unsigned char
10735353358Sdimvec_search_string_cc(vector signed short __a, vector signed short __b,
10736353358Sdim                     vector unsigned char __c, int *__cc) {
10737353358Sdim  return __builtin_s390_vstrsh((vector unsigned short)__a,
10738353358Sdim                               (vector unsigned short)__b, __c, __cc);
10739353358Sdim}
10740353358Sdim
10741353358Sdimstatic inline __ATTRS_o_ai vector unsigned char
10742353358Sdimvec_search_string_cc(vector bool short __a, vector bool short __b,
10743353358Sdim                     vector unsigned char __c, int *__cc) {
10744353358Sdim  return __builtin_s390_vstrsh((vector unsigned short)__a,
10745353358Sdim                               (vector unsigned short)__b, __c, __cc);
10746353358Sdim}
10747353358Sdim
10748353358Sdimstatic inline __ATTRS_o_ai vector unsigned char
10749353358Sdimvec_search_string_cc(vector unsigned short __a, vector unsigned short __b,
10750353358Sdim                     vector unsigned char __c, int *__cc) {
10751353358Sdim  return __builtin_s390_vstrsh(__a, __b, __c, __cc);
10752353358Sdim}
10753353358Sdim
10754353358Sdimstatic inline __ATTRS_o_ai vector unsigned char
10755353358Sdimvec_search_string_cc(vector signed int __a, vector signed int __b,
10756353358Sdim                     vector unsigned char __c, int *__cc) {
10757353358Sdim  return __builtin_s390_vstrsf((vector unsigned int)__a,
10758353358Sdim                               (vector unsigned int)__b, __c, __cc);
10759353358Sdim}
10760353358Sdim
10761353358Sdimstatic inline __ATTRS_o_ai vector unsigned char
10762353358Sdimvec_search_string_cc(vector bool int __a, vector bool int __b,
10763353358Sdim                     vector unsigned char __c, int *__cc) {
10764353358Sdim  return __builtin_s390_vstrsf((vector unsigned int)__a,
10765353358Sdim                               (vector unsigned int)__b, __c, __cc);
10766353358Sdim}
10767353358Sdim
10768353358Sdimstatic inline __ATTRS_o_ai vector unsigned char
10769353358Sdimvec_search_string_cc(vector unsigned int __a, vector unsigned int __b,
10770353358Sdim                     vector unsigned char __c, int *__cc) {
10771353358Sdim  return __builtin_s390_vstrsf(__a, __b, __c, __cc);
10772353358Sdim}
10773353358Sdim
10774353358Sdim#endif
10775353358Sdim
10776353358Sdim/*-- vec_search_string_until_zero_cc ----------------------------------------*/
10777353358Sdim
10778353358Sdim#if __ARCH__ >= 13
10779353358Sdim
10780353358Sdimstatic inline __ATTRS_o_ai vector unsigned char
10781353358Sdimvec_search_string_until_zero_cc(vector signed char __a,
10782353358Sdim                                vector signed char __b,
10783353358Sdim                                vector unsigned char __c, int *__cc) {
10784353358Sdim  return __builtin_s390_vstrszb((vector unsigned char)__a,
10785353358Sdim                                (vector unsigned char)__b, __c, __cc);
10786353358Sdim}
10787353358Sdim
10788353358Sdimstatic inline __ATTRS_o_ai vector unsigned char
10789353358Sdimvec_search_string_until_zero_cc(vector bool char __a,
10790353358Sdim                                vector bool char __b,
10791353358Sdim                                vector unsigned char __c, int *__cc) {
10792353358Sdim  return __builtin_s390_vstrszb((vector unsigned char)__a,
10793353358Sdim                                (vector unsigned char)__b, __c, __cc);
10794353358Sdim}
10795353358Sdim
10796353358Sdimstatic inline __ATTRS_o_ai vector unsigned char
10797353358Sdimvec_search_string_until_zero_cc(vector unsigned char __a,
10798353358Sdim                                vector unsigned char __b,
10799353358Sdim                                vector unsigned char __c, int *__cc) {
10800353358Sdim  return __builtin_s390_vstrszb(__a, __b, __c, __cc);
10801353358Sdim}
10802353358Sdim
10803353358Sdimstatic inline __ATTRS_o_ai vector unsigned char
10804353358Sdimvec_search_string_until_zero_cc(vector signed short __a,
10805353358Sdim                                vector signed short __b,
10806353358Sdim                                vector unsigned char __c, int *__cc) {
10807353358Sdim  return __builtin_s390_vstrszh((vector unsigned short)__a,
10808353358Sdim                                (vector unsigned short)__b, __c, __cc);
10809353358Sdim}
10810353358Sdim
10811353358Sdimstatic inline __ATTRS_o_ai vector unsigned char
10812353358Sdimvec_search_string_until_zero_cc(vector bool short __a,
10813353358Sdim                                vector bool short __b,
10814353358Sdim                                vector unsigned char __c, int *__cc) {
10815353358Sdim  return __builtin_s390_vstrszh((vector unsigned short)__a,
10816353358Sdim                                (vector unsigned short)__b, __c, __cc);
10817353358Sdim}
10818353358Sdim
10819353358Sdimstatic inline __ATTRS_o_ai vector unsigned char
10820353358Sdimvec_search_string_until_zero_cc(vector unsigned short __a,
10821353358Sdim                                vector unsigned short __b,
10822353358Sdim                                vector unsigned char __c, int *__cc) {
10823353358Sdim  return __builtin_s390_vstrszh(__a, __b, __c, __cc);
10824353358Sdim}
10825353358Sdim
10826353358Sdimstatic inline __ATTRS_o_ai vector unsigned char
10827353358Sdimvec_search_string_until_zero_cc(vector signed int __a,
10828353358Sdim                                vector signed int __b,
10829353358Sdim                                vector unsigned char __c, int *__cc) {
10830353358Sdim  return __builtin_s390_vstrszf((vector unsigned int)__a,
10831353358Sdim                                (vector unsigned int)__b, __c, __cc);
10832353358Sdim}
10833353358Sdim
10834353358Sdimstatic inline __ATTRS_o_ai vector unsigned char
10835353358Sdimvec_search_string_until_zero_cc(vector bool int __a,
10836353358Sdim                                vector bool int __b,
10837353358Sdim                                vector unsigned char __c, int *__cc) {
10838353358Sdim  return __builtin_s390_vstrszf((vector unsigned int)__a,
10839353358Sdim                                (vector unsigned int)__b, __c, __cc);
10840353358Sdim}
10841353358Sdim
10842353358Sdimstatic inline __ATTRS_o_ai vector unsigned char
10843353358Sdimvec_search_string_until_zero_cc(vector unsigned int __a,
10844353358Sdim                                vector unsigned int __b,
10845353358Sdim                                vector unsigned char __c, int *__cc) {
10846353358Sdim  return __builtin_s390_vstrszf(__a, __b, __c, __cc);
10847353358Sdim}
10848353358Sdim
10849353358Sdim#endif
10850353358Sdim
10851287512Sdim#undef __constant_pow2_range
10852287512Sdim#undef __constant_range
10853287512Sdim#undef __constant
10854287512Sdim#undef __ATTRS_o
10855287512Sdim#undef __ATTRS_o_ai
10856287512Sdim#undef __ATTRS_ai
10857287512Sdim
10858287512Sdim#else
10859287512Sdim
10860287512Sdim#error "Use -fzvector to enable vector extensions"
10861287512Sdim
10862287512Sdim#endif
10863