blob: f7061e88949fb2387cca2fe5482b899e8cc599f1 [file] [log] [blame]
Ulrich Weigandca256432015-07-30 14:10:43 +00001/*===---- vecintrin.h - Vector intrinsics ----------------------------------===
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21 *===-----------------------------------------------------------------------===
22 */
23
24#if defined(__s390x__) && defined(__VEC__)
25
26#define __ATTRS_ai __attribute__((__always_inline__))
27#define __ATTRS_o __attribute__((__overloadable__))
28#define __ATTRS_o_ai __attribute__((__overloadable__, __always_inline__))
29
30#define __constant(PARM) \
31 __attribute__((__enable_if__ ((PARM) == (PARM), \
32 "argument must be a constant integer")))
33#define __constant_range(PARM, LOW, HIGH) \
34 __attribute__((__enable_if__ ((PARM) >= (LOW) && (PARM) <= (HIGH), \
35 "argument must be a constant integer from " #LOW " to " #HIGH)))
36#define __constant_pow2_range(PARM, LOW, HIGH) \
37 __attribute__((__enable_if__ ((PARM) >= (LOW) && (PARM) <= (HIGH) && \
38 ((PARM) & ((PARM) - 1)) == 0, \
39 "argument must be a constant power of 2 from " #LOW " to " #HIGH)))
40
41/*-- __lcbb -----------------------------------------------------------------*/
42
43extern __ATTRS_o unsigned int
44__lcbb(const void *__ptr, unsigned short __len)
45 __constant_pow2_range(__len, 64, 4096);
46
47#define __lcbb(X, Y) ((__typeof__((__lcbb)((X), (Y)))) \
48 __builtin_s390_lcbb((X), __builtin_constant_p((Y))? \
49 ((Y) == 64 ? 0 : \
50 (Y) == 128 ? 1 : \
51 (Y) == 256 ? 2 : \
52 (Y) == 512 ? 3 : \
53 (Y) == 1024 ? 4 : \
54 (Y) == 2048 ? 5 : \
55 (Y) == 4096 ? 6 : 0) : 0))
56
57/*-- vec_extract ------------------------------------------------------------*/
58
59static inline __ATTRS_o_ai signed char
60vec_extract(vector signed char __vec, int __index) {
61 return __vec[__index & 15];
62}
63
64static inline __ATTRS_o_ai unsigned char
65vec_extract(vector bool char __vec, int __index) {
66 return __vec[__index & 15];
67}
68
69static inline __ATTRS_o_ai unsigned char
70vec_extract(vector unsigned char __vec, int __index) {
71 return __vec[__index & 15];
72}
73
74static inline __ATTRS_o_ai signed short
75vec_extract(vector signed short __vec, int __index) {
76 return __vec[__index & 7];
77}
78
79static inline __ATTRS_o_ai unsigned short
80vec_extract(vector bool short __vec, int __index) {
81 return __vec[__index & 7];
82}
83
84static inline __ATTRS_o_ai unsigned short
85vec_extract(vector unsigned short __vec, int __index) {
86 return __vec[__index & 7];
87}
88
89static inline __ATTRS_o_ai signed int
90vec_extract(vector signed int __vec, int __index) {
91 return __vec[__index & 3];
92}
93
94static inline __ATTRS_o_ai unsigned int
95vec_extract(vector bool int __vec, int __index) {
96 return __vec[__index & 3];
97}
98
99static inline __ATTRS_o_ai unsigned int
100vec_extract(vector unsigned int __vec, int __index) {
101 return __vec[__index & 3];
102}
103
104static inline __ATTRS_o_ai signed long long
105vec_extract(vector signed long long __vec, int __index) {
106 return __vec[__index & 1];
107}
108
109static inline __ATTRS_o_ai unsigned long long
110vec_extract(vector bool long long __vec, int __index) {
111 return __vec[__index & 1];
112}
113
114static inline __ATTRS_o_ai unsigned long long
115vec_extract(vector unsigned long long __vec, int __index) {
116 return __vec[__index & 1];
117}
118
Ulrich Weigand6af25592017-07-17 17:47:35 +0000119#if __ARCH__ >= 12
120static inline __ATTRS_o_ai float
121vec_extract(vector float __vec, int __index) {
122 return __vec[__index & 3];
123}
124#endif
125
Ulrich Weigandca256432015-07-30 14:10:43 +0000126static inline __ATTRS_o_ai double
127vec_extract(vector double __vec, int __index) {
128 return __vec[__index & 1];
129}
130
131/*-- vec_insert -------------------------------------------------------------*/
132
133static inline __ATTRS_o_ai vector signed char
134vec_insert(signed char __scalar, vector signed char __vec, int __index) {
135 __vec[__index & 15] = __scalar;
136 return __vec;
137}
138
Ulrich Weigand6af25592017-07-17 17:47:35 +0000139// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000140static inline __ATTRS_o_ai vector unsigned char
141vec_insert(unsigned char __scalar, vector bool char __vec, int __index) {
142 vector unsigned char __newvec = (vector unsigned char)__vec;
143 __newvec[__index & 15] = (unsigned char)__scalar;
144 return __newvec;
145}
146
147static inline __ATTRS_o_ai vector unsigned char
148vec_insert(unsigned char __scalar, vector unsigned char __vec, int __index) {
149 __vec[__index & 15] = __scalar;
150 return __vec;
151}
152
153static inline __ATTRS_o_ai vector signed short
154vec_insert(signed short __scalar, vector signed short __vec, int __index) {
155 __vec[__index & 7] = __scalar;
156 return __vec;
157}
158
Ulrich Weigand6af25592017-07-17 17:47:35 +0000159// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000160static inline __ATTRS_o_ai vector unsigned short
161vec_insert(unsigned short __scalar, vector bool short __vec, int __index) {
162 vector unsigned short __newvec = (vector unsigned short)__vec;
163 __newvec[__index & 7] = (unsigned short)__scalar;
164 return __newvec;
165}
166
167static inline __ATTRS_o_ai vector unsigned short
168vec_insert(unsigned short __scalar, vector unsigned short __vec, int __index) {
169 __vec[__index & 7] = __scalar;
170 return __vec;
171}
172
173static inline __ATTRS_o_ai vector signed int
174vec_insert(signed int __scalar, vector signed int __vec, int __index) {
175 __vec[__index & 3] = __scalar;
176 return __vec;
177}
178
Ulrich Weigand6af25592017-07-17 17:47:35 +0000179// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000180static inline __ATTRS_o_ai vector unsigned int
181vec_insert(unsigned int __scalar, vector bool int __vec, int __index) {
182 vector unsigned int __newvec = (vector unsigned int)__vec;
183 __newvec[__index & 3] = __scalar;
184 return __newvec;
185}
186
187static inline __ATTRS_o_ai vector unsigned int
188vec_insert(unsigned int __scalar, vector unsigned int __vec, int __index) {
189 __vec[__index & 3] = __scalar;
190 return __vec;
191}
192
193static inline __ATTRS_o_ai vector signed long long
194vec_insert(signed long long __scalar, vector signed long long __vec,
195 int __index) {
196 __vec[__index & 1] = __scalar;
197 return __vec;
198}
199
Ulrich Weigand6af25592017-07-17 17:47:35 +0000200// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000201static inline __ATTRS_o_ai vector unsigned long long
202vec_insert(unsigned long long __scalar, vector bool long long __vec,
203 int __index) {
204 vector unsigned long long __newvec = (vector unsigned long long)__vec;
205 __newvec[__index & 1] = __scalar;
206 return __newvec;
207}
208
209static inline __ATTRS_o_ai vector unsigned long long
210vec_insert(unsigned long long __scalar, vector unsigned long long __vec,
211 int __index) {
212 __vec[__index & 1] = __scalar;
213 return __vec;
214}
215
Ulrich Weigand6af25592017-07-17 17:47:35 +0000216#if __ARCH__ >= 12
217static inline __ATTRS_o_ai vector float
218vec_insert(float __scalar, vector float __vec, int __index) {
219 __vec[__index & 1] = __scalar;
220 return __vec;
221}
222#endif
223
Ulrich Weigandca256432015-07-30 14:10:43 +0000224static inline __ATTRS_o_ai vector double
225vec_insert(double __scalar, vector double __vec, int __index) {
226 __vec[__index & 1] = __scalar;
227 return __vec;
228}
229
230/*-- vec_promote ------------------------------------------------------------*/
231
232static inline __ATTRS_o_ai vector signed char
233vec_promote(signed char __scalar, int __index) {
234 const vector signed char __zero = (vector signed char)0;
235 vector signed char __vec = __builtin_shufflevector(__zero, __zero,
236 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
237 __vec[__index & 15] = __scalar;
238 return __vec;
239}
240
241static inline __ATTRS_o_ai vector unsigned char
242vec_promote(unsigned char __scalar, int __index) {
243 const vector unsigned char __zero = (vector unsigned char)0;
244 vector unsigned char __vec = __builtin_shufflevector(__zero, __zero,
245 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
246 __vec[__index & 15] = __scalar;
247 return __vec;
248}
249
250static inline __ATTRS_o_ai vector signed short
251vec_promote(signed short __scalar, int __index) {
252 const vector signed short __zero = (vector signed short)0;
253 vector signed short __vec = __builtin_shufflevector(__zero, __zero,
254 -1, -1, -1, -1, -1, -1, -1, -1);
255 __vec[__index & 7] = __scalar;
256 return __vec;
257}
258
259static inline __ATTRS_o_ai vector unsigned short
260vec_promote(unsigned short __scalar, int __index) {
261 const vector unsigned short __zero = (vector unsigned short)0;
262 vector unsigned short __vec = __builtin_shufflevector(__zero, __zero,
263 -1, -1, -1, -1, -1, -1, -1, -1);
264 __vec[__index & 7] = __scalar;
265 return __vec;
266}
267
268static inline __ATTRS_o_ai vector signed int
269vec_promote(signed int __scalar, int __index) {
270 const vector signed int __zero = (vector signed int)0;
271 vector signed int __vec = __builtin_shufflevector(__zero, __zero,
272 -1, -1, -1, -1);
273 __vec[__index & 3] = __scalar;
274 return __vec;
275}
276
277static inline __ATTRS_o_ai vector unsigned int
278vec_promote(unsigned int __scalar, int __index) {
279 const vector unsigned int __zero = (vector unsigned int)0;
280 vector unsigned int __vec = __builtin_shufflevector(__zero, __zero,
281 -1, -1, -1, -1);
282 __vec[__index & 3] = __scalar;
283 return __vec;
284}
285
286static inline __ATTRS_o_ai vector signed long long
287vec_promote(signed long long __scalar, int __index) {
288 const vector signed long long __zero = (vector signed long long)0;
289 vector signed long long __vec = __builtin_shufflevector(__zero, __zero,
290 -1, -1);
291 __vec[__index & 1] = __scalar;
292 return __vec;
293}
294
295static inline __ATTRS_o_ai vector unsigned long long
296vec_promote(unsigned long long __scalar, int __index) {
297 const vector unsigned long long __zero = (vector unsigned long long)0;
298 vector unsigned long long __vec = __builtin_shufflevector(__zero, __zero,
299 -1, -1);
300 __vec[__index & 1] = __scalar;
301 return __vec;
302}
303
Ulrich Weigand6af25592017-07-17 17:47:35 +0000304#if __ARCH__ >= 12
305static inline __ATTRS_o_ai vector float
306vec_promote(float __scalar, int __index) {
307 const vector float __zero = (vector float)0;
308 vector float __vec = __builtin_shufflevector(__zero, __zero, -1, -1, -1, -1);
309 __vec[__index & 3] = __scalar;
310 return __vec;
311}
312#endif
313
Ulrich Weigandca256432015-07-30 14:10:43 +0000314static inline __ATTRS_o_ai vector double
315vec_promote(double __scalar, int __index) {
316 const vector double __zero = (vector double)0;
317 vector double __vec = __builtin_shufflevector(__zero, __zero, -1, -1);
318 __vec[__index & 1] = __scalar;
319 return __vec;
320}
321
322/*-- vec_insert_and_zero ----------------------------------------------------*/
323
324static inline __ATTRS_o_ai vector signed char
325vec_insert_and_zero(const signed char *__ptr) {
326 vector signed char __vec = (vector signed char)0;
327 __vec[7] = *__ptr;
328 return __vec;
329}
330
331static inline __ATTRS_o_ai vector unsigned char
332vec_insert_and_zero(const unsigned char *__ptr) {
333 vector unsigned char __vec = (vector unsigned char)0;
334 __vec[7] = *__ptr;
335 return __vec;
336}
337
338static inline __ATTRS_o_ai vector signed short
339vec_insert_and_zero(const signed short *__ptr) {
340 vector signed short __vec = (vector signed short)0;
341 __vec[3] = *__ptr;
342 return __vec;
343}
344
345static inline __ATTRS_o_ai vector unsigned short
346vec_insert_and_zero(const unsigned short *__ptr) {
347 vector unsigned short __vec = (vector unsigned short)0;
348 __vec[3] = *__ptr;
349 return __vec;
350}
351
352static inline __ATTRS_o_ai vector signed int
353vec_insert_and_zero(const signed int *__ptr) {
354 vector signed int __vec = (vector signed int)0;
355 __vec[1] = *__ptr;
356 return __vec;
357}
358
359static inline __ATTRS_o_ai vector unsigned int
360vec_insert_and_zero(const unsigned int *__ptr) {
361 vector unsigned int __vec = (vector unsigned int)0;
362 __vec[1] = *__ptr;
363 return __vec;
364}
365
366static inline __ATTRS_o_ai vector signed long long
367vec_insert_and_zero(const signed long long *__ptr) {
368 vector signed long long __vec = (vector signed long long)0;
369 __vec[0] = *__ptr;
370 return __vec;
371}
372
373static inline __ATTRS_o_ai vector unsigned long long
374vec_insert_and_zero(const unsigned long long *__ptr) {
375 vector unsigned long long __vec = (vector unsigned long long)0;
376 __vec[0] = *__ptr;
377 return __vec;
378}
379
Ulrich Weigand6af25592017-07-17 17:47:35 +0000380#if __ARCH__ >= 12
381static inline __ATTRS_o_ai vector float
382vec_insert_and_zero(const float *__ptr) {
383 vector float __vec = (vector float)0;
384 __vec[0] = *__ptr;
385 return __vec;
386}
387#endif
388
Ulrich Weigandca256432015-07-30 14:10:43 +0000389static inline __ATTRS_o_ai vector double
390vec_insert_and_zero(const double *__ptr) {
391 vector double __vec = (vector double)0;
392 __vec[0] = *__ptr;
393 return __vec;
394}
395
396/*-- vec_perm ---------------------------------------------------------------*/
397
398static inline __ATTRS_o_ai vector signed char
399vec_perm(vector signed char __a, vector signed char __b,
400 vector unsigned char __c) {
401 return (vector signed char)__builtin_s390_vperm(
402 (vector unsigned char)__a, (vector unsigned char)__b, __c);
403}
404
405static inline __ATTRS_o_ai vector unsigned char
406vec_perm(vector unsigned char __a, vector unsigned char __b,
407 vector unsigned char __c) {
408 return (vector unsigned char)__builtin_s390_vperm(
409 (vector unsigned char)__a, (vector unsigned char)__b, __c);
410}
411
412static inline __ATTRS_o_ai vector bool char
413vec_perm(vector bool char __a, vector bool char __b,
414 vector unsigned char __c) {
415 return (vector bool char)__builtin_s390_vperm(
416 (vector unsigned char)__a, (vector unsigned char)__b, __c);
417}
418
419static inline __ATTRS_o_ai vector signed short
420vec_perm(vector signed short __a, vector signed short __b,
421 vector unsigned char __c) {
422 return (vector signed short)__builtin_s390_vperm(
423 (vector unsigned char)__a, (vector unsigned char)__b, __c);
424}
425
426static inline __ATTRS_o_ai vector unsigned short
427vec_perm(vector unsigned short __a, vector unsigned short __b,
428 vector unsigned char __c) {
429 return (vector unsigned short)__builtin_s390_vperm(
430 (vector unsigned char)__a, (vector unsigned char)__b, __c);
431}
432
433static inline __ATTRS_o_ai vector bool short
434vec_perm(vector bool short __a, vector bool short __b,
435 vector unsigned char __c) {
436 return (vector bool short)__builtin_s390_vperm(
437 (vector unsigned char)__a, (vector unsigned char)__b, __c);
438}
439
440static inline __ATTRS_o_ai vector signed int
441vec_perm(vector signed int __a, vector signed int __b,
442 vector unsigned char __c) {
443 return (vector signed int)__builtin_s390_vperm(
444 (vector unsigned char)__a, (vector unsigned char)__b, __c);
445}
446
447static inline __ATTRS_o_ai vector unsigned int
448vec_perm(vector unsigned int __a, vector unsigned int __b,
449 vector unsigned char __c) {
450 return (vector unsigned int)__builtin_s390_vperm(
451 (vector unsigned char)__a, (vector unsigned char)__b, __c);
452}
453
454static inline __ATTRS_o_ai vector bool int
455vec_perm(vector bool int __a, vector bool int __b,
456 vector unsigned char __c) {
457 return (vector bool int)__builtin_s390_vperm(
458 (vector unsigned char)__a, (vector unsigned char)__b, __c);
459}
460
461static inline __ATTRS_o_ai vector signed long long
462vec_perm(vector signed long long __a, vector signed long long __b,
463 vector unsigned char __c) {
464 return (vector signed long long)__builtin_s390_vperm(
465 (vector unsigned char)__a, (vector unsigned char)__b, __c);
466}
467
468static inline __ATTRS_o_ai vector unsigned long long
469vec_perm(vector unsigned long long __a, vector unsigned long long __b,
470 vector unsigned char __c) {
471 return (vector unsigned long long)__builtin_s390_vperm(
472 (vector unsigned char)__a, (vector unsigned char)__b, __c);
473}
474
475static inline __ATTRS_o_ai vector bool long long
476vec_perm(vector bool long long __a, vector bool long long __b,
477 vector unsigned char __c) {
478 return (vector bool long long)__builtin_s390_vperm(
479 (vector unsigned char)__a, (vector unsigned char)__b, __c);
480}
481
Ulrich Weigand6af25592017-07-17 17:47:35 +0000482#if __ARCH__ >= 12
483static inline __ATTRS_o_ai vector float
484vec_perm(vector float __a, vector float __b,
485 vector unsigned char __c) {
486 return (vector float)__builtin_s390_vperm(
487 (vector unsigned char)__a, (vector unsigned char)__b, __c);
488}
489#endif
490
Ulrich Weigandca256432015-07-30 14:10:43 +0000491static inline __ATTRS_o_ai vector double
492vec_perm(vector double __a, vector double __b,
493 vector unsigned char __c) {
494 return (vector double)__builtin_s390_vperm(
495 (vector unsigned char)__a, (vector unsigned char)__b, __c);
496}
497
498/*-- vec_permi --------------------------------------------------------------*/
499
Ulrich Weigand6af25592017-07-17 17:47:35 +0000500// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000501extern __ATTRS_o vector signed long long
502vec_permi(vector signed long long __a, vector signed long long __b, int __c)
503 __constant_range(__c, 0, 3);
504
Ulrich Weigand6af25592017-07-17 17:47:35 +0000505// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000506extern __ATTRS_o vector unsigned long long
507vec_permi(vector unsigned long long __a, vector unsigned long long __b, int __c)
508 __constant_range(__c, 0, 3);
509
Ulrich Weigand6af25592017-07-17 17:47:35 +0000510// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000511extern __ATTRS_o vector bool long long
512vec_permi(vector bool long long __a, vector bool long long __b, int __c)
513 __constant_range(__c, 0, 3);
514
Ulrich Weigand6af25592017-07-17 17:47:35 +0000515// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000516extern __ATTRS_o vector double
517vec_permi(vector double __a, vector double __b, int __c)
518 __constant_range(__c, 0, 3);
519
520#define vec_permi(X, Y, Z) ((__typeof__((vec_permi)((X), (Y), (Z)))) \
521 __builtin_s390_vpdi((vector unsigned long long)(X), \
522 (vector unsigned long long)(Y), \
523 (((Z) & 2) << 1) | ((Z) & 1)))
524
Ulrich Weigand6af25592017-07-17 17:47:35 +0000525/*-- vec_bperm_u128 ---------------------------------------------------------*/
526
527#if __ARCH__ >= 12
528static inline __ATTRS_ai vector unsigned long long
529vec_bperm_u128(vector unsigned char __a, vector unsigned char __b) {
530 return __builtin_s390_vbperm(__a, __b);
531}
532#endif
533
Ulrich Weigandca256432015-07-30 14:10:43 +0000534/*-- vec_sel ----------------------------------------------------------------*/
535
536static inline __ATTRS_o_ai vector signed char
537vec_sel(vector signed char __a, vector signed char __b,
538 vector unsigned char __c) {
539 return ((vector signed char)__c & __b) | (~(vector signed char)__c & __a);
540}
541
542static inline __ATTRS_o_ai vector signed char
543vec_sel(vector signed char __a, vector signed char __b, vector bool char __c) {
544 return ((vector signed char)__c & __b) | (~(vector signed char)__c & __a);
545}
546
547static inline __ATTRS_o_ai vector bool char
548vec_sel(vector bool char __a, vector bool char __b, vector unsigned char __c) {
549 return ((vector bool char)__c & __b) | (~(vector bool char)__c & __a);
550}
551
552static inline __ATTRS_o_ai vector bool char
553vec_sel(vector bool char __a, vector bool char __b, vector bool char __c) {
554 return (__c & __b) | (~__c & __a);
555}
556
557static inline __ATTRS_o_ai vector unsigned char
558vec_sel(vector unsigned char __a, vector unsigned char __b,
559 vector unsigned char __c) {
560 return (__c & __b) | (~__c & __a);
561}
562
563static inline __ATTRS_o_ai vector unsigned char
564vec_sel(vector unsigned char __a, vector unsigned char __b,
565 vector bool char __c) {
566 return ((vector unsigned char)__c & __b) | (~(vector unsigned char)__c & __a);
567}
568
569static inline __ATTRS_o_ai vector signed short
570vec_sel(vector signed short __a, vector signed short __b,
571 vector unsigned short __c) {
572 return ((vector signed short)__c & __b) | (~(vector signed short)__c & __a);
573}
574
575static inline __ATTRS_o_ai vector signed short
576vec_sel(vector signed short __a, vector signed short __b,
577 vector bool short __c) {
578 return ((vector signed short)__c & __b) | (~(vector signed short)__c & __a);
579}
580
581static inline __ATTRS_o_ai vector bool short
582vec_sel(vector bool short __a, vector bool short __b,
583 vector unsigned short __c) {
584 return ((vector bool short)__c & __b) | (~(vector bool short)__c & __a);
585}
586
587static inline __ATTRS_o_ai vector bool short
588vec_sel(vector bool short __a, vector bool short __b, vector bool short __c) {
589 return (__c & __b) | (~__c & __a);
590}
591
592static inline __ATTRS_o_ai vector unsigned short
593vec_sel(vector unsigned short __a, vector unsigned short __b,
594 vector unsigned short __c) {
595 return (__c & __b) | (~__c & __a);
596}
597
598static inline __ATTRS_o_ai vector unsigned short
599vec_sel(vector unsigned short __a, vector unsigned short __b,
600 vector bool short __c) {
601 return (((vector unsigned short)__c & __b) |
602 (~(vector unsigned short)__c & __a));
603}
604
605static inline __ATTRS_o_ai vector signed int
606vec_sel(vector signed int __a, vector signed int __b,
607 vector unsigned int __c) {
608 return ((vector signed int)__c & __b) | (~(vector signed int)__c & __a);
609}
610
611static inline __ATTRS_o_ai vector signed int
612vec_sel(vector signed int __a, vector signed int __b, vector bool int __c) {
613 return ((vector signed int)__c & __b) | (~(vector signed int)__c & __a);
614}
615
616static inline __ATTRS_o_ai vector bool int
617vec_sel(vector bool int __a, vector bool int __b, vector unsigned int __c) {
618 return ((vector bool int)__c & __b) | (~(vector bool int)__c & __a);
619}
620
621static inline __ATTRS_o_ai vector bool int
622vec_sel(vector bool int __a, vector bool int __b, vector bool int __c) {
623 return (__c & __b) | (~__c & __a);
624}
625
626static inline __ATTRS_o_ai vector unsigned int
627vec_sel(vector unsigned int __a, vector unsigned int __b,
628 vector unsigned int __c) {
629 return (__c & __b) | (~__c & __a);
630}
631
632static inline __ATTRS_o_ai vector unsigned int
633vec_sel(vector unsigned int __a, vector unsigned int __b, vector bool int __c) {
634 return ((vector unsigned int)__c & __b) | (~(vector unsigned int)__c & __a);
635}
636
637static inline __ATTRS_o_ai vector signed long long
638vec_sel(vector signed long long __a, vector signed long long __b,
639 vector unsigned long long __c) {
640 return (((vector signed long long)__c & __b) |
641 (~(vector signed long long)__c & __a));
642}
643
644static inline __ATTRS_o_ai vector signed long long
645vec_sel(vector signed long long __a, vector signed long long __b,
646 vector bool long long __c) {
647 return (((vector signed long long)__c & __b) |
648 (~(vector signed long long)__c & __a));
649}
650
651static inline __ATTRS_o_ai vector bool long long
652vec_sel(vector bool long long __a, vector bool long long __b,
653 vector unsigned long long __c) {
654 return (((vector bool long long)__c & __b) |
655 (~(vector bool long long)__c & __a));
656}
657
658static inline __ATTRS_o_ai vector bool long long
659vec_sel(vector bool long long __a, vector bool long long __b,
660 vector bool long long __c) {
661 return (__c & __b) | (~__c & __a);
662}
663
664static inline __ATTRS_o_ai vector unsigned long long
665vec_sel(vector unsigned long long __a, vector unsigned long long __b,
666 vector unsigned long long __c) {
667 return (__c & __b) | (~__c & __a);
668}
669
670static inline __ATTRS_o_ai vector unsigned long long
671vec_sel(vector unsigned long long __a, vector unsigned long long __b,
672 vector bool long long __c) {
673 return (((vector unsigned long long)__c & __b) |
674 (~(vector unsigned long long)__c & __a));
675}
676
Ulrich Weigand6af25592017-07-17 17:47:35 +0000677#if __ARCH__ >= 12
678static inline __ATTRS_o_ai vector float
679vec_sel(vector float __a, vector float __b, vector unsigned int __c) {
680 return (vector float)((__c & (vector unsigned int)__b) |
681 (~__c & (vector unsigned int)__a));
682}
683
684static inline __ATTRS_o_ai vector float
685vec_sel(vector float __a, vector float __b, vector bool int __c) {
686 vector unsigned int __ac = (vector unsigned int)__a;
687 vector unsigned int __bc = (vector unsigned int)__b;
688 vector unsigned int __cc = (vector unsigned int)__c;
689 return (vector float)((__cc & __bc) | (~__cc & __ac));
690}
691#endif
692
Ulrich Weigandca256432015-07-30 14:10:43 +0000693static inline __ATTRS_o_ai vector double
694vec_sel(vector double __a, vector double __b, vector unsigned long long __c) {
695 return (vector double)((__c & (vector unsigned long long)__b) |
696 (~__c & (vector unsigned long long)__a));
697}
698
699static inline __ATTRS_o_ai vector double
700vec_sel(vector double __a, vector double __b, vector bool long long __c) {
701 vector unsigned long long __ac = (vector unsigned long long)__a;
702 vector unsigned long long __bc = (vector unsigned long long)__b;
703 vector unsigned long long __cc = (vector unsigned long long)__c;
704 return (vector double)((__cc & __bc) | (~__cc & __ac));
705}
706
707/*-- vec_gather_element -----------------------------------------------------*/
708
709static inline __ATTRS_o_ai vector signed int
710vec_gather_element(vector signed int __vec, vector unsigned int __offset,
711 const signed int *__ptr, int __index)
712 __constant_range(__index, 0, 3) {
713 __vec[__index] = *(const signed int *)(
714 (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
715 return __vec;
716}
717
718static inline __ATTRS_o_ai vector bool int
719vec_gather_element(vector bool int __vec, vector unsigned int __offset,
720 const unsigned int *__ptr, int __index)
721 __constant_range(__index, 0, 3) {
722 __vec[__index] = *(const unsigned int *)(
723 (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
724 return __vec;
725}
726
727static inline __ATTRS_o_ai vector unsigned int
728vec_gather_element(vector unsigned int __vec, vector unsigned int __offset,
729 const unsigned int *__ptr, int __index)
730 __constant_range(__index, 0, 3) {
731 __vec[__index] = *(const unsigned int *)(
732 (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
733 return __vec;
734}
735
736static inline __ATTRS_o_ai vector signed long long
737vec_gather_element(vector signed long long __vec,
738 vector unsigned long long __offset,
739 const signed long long *__ptr, int __index)
740 __constant_range(__index, 0, 1) {
741 __vec[__index] = *(const signed long long *)(
742 (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
743 return __vec;
744}
745
746static inline __ATTRS_o_ai vector bool long long
747vec_gather_element(vector bool long long __vec,
748 vector unsigned long long __offset,
749 const unsigned long long *__ptr, int __index)
750 __constant_range(__index, 0, 1) {
751 __vec[__index] = *(const unsigned long long *)(
752 (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
753 return __vec;
754}
755
756static inline __ATTRS_o_ai vector unsigned long long
757vec_gather_element(vector unsigned long long __vec,
758 vector unsigned long long __offset,
759 const unsigned long long *__ptr, int __index)
760 __constant_range(__index, 0, 1) {
761 __vec[__index] = *(const unsigned long long *)(
762 (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
763 return __vec;
764}
765
Ulrich Weigand6af25592017-07-17 17:47:35 +0000766#if __ARCH__ >= 12
767static inline __ATTRS_o_ai vector float
768vec_gather_element(vector float __vec, vector unsigned int __offset,
769 const float *__ptr, int __index)
770 __constant_range(__index, 0, 3) {
771 __vec[__index] = *(const float *)(
772 (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
773 return __vec;
774}
775#endif
776
Ulrich Weigandca256432015-07-30 14:10:43 +0000777static inline __ATTRS_o_ai vector double
778vec_gather_element(vector double __vec, vector unsigned long long __offset,
779 const double *__ptr, int __index)
780 __constant_range(__index, 0, 1) {
781 __vec[__index] = *(const double *)(
782 (__INTPTR_TYPE__)__ptr + (__INTPTR_TYPE__)__offset[__index]);
783 return __vec;
784}
785
786/*-- vec_scatter_element ----------------------------------------------------*/
787
788static inline __ATTRS_o_ai void
789vec_scatter_element(vector signed int __vec, vector unsigned int __offset,
790 signed int *__ptr, int __index)
791 __constant_range(__index, 0, 3) {
792 *(signed int *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
793 __vec[__index];
794}
795
796static inline __ATTRS_o_ai void
797vec_scatter_element(vector bool int __vec, vector unsigned int __offset,
798 unsigned int *__ptr, int __index)
799 __constant_range(__index, 0, 3) {
800 *(unsigned int *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
801 __vec[__index];
802}
803
804static inline __ATTRS_o_ai void
805vec_scatter_element(vector unsigned int __vec, vector unsigned int __offset,
806 unsigned int *__ptr, int __index)
807 __constant_range(__index, 0, 3) {
808 *(unsigned int *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
809 __vec[__index];
810}
811
812static inline __ATTRS_o_ai void
813vec_scatter_element(vector signed long long __vec,
814 vector unsigned long long __offset,
815 signed long long *__ptr, int __index)
816 __constant_range(__index, 0, 1) {
817 *(signed long long *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
818 __vec[__index];
819}
820
821static inline __ATTRS_o_ai void
822vec_scatter_element(vector bool long long __vec,
823 vector unsigned long long __offset,
824 unsigned long long *__ptr, int __index)
825 __constant_range(__index, 0, 1) {
826 *(unsigned long long *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
827 __vec[__index];
828}
829
830static inline __ATTRS_o_ai void
831vec_scatter_element(vector unsigned long long __vec,
832 vector unsigned long long __offset,
833 unsigned long long *__ptr, int __index)
834 __constant_range(__index, 0, 1) {
835 *(unsigned long long *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
836 __vec[__index];
837}
838
Ulrich Weigand6af25592017-07-17 17:47:35 +0000839#if __ARCH__ >= 12
840static inline __ATTRS_o_ai void
841vec_scatter_element(vector float __vec, vector unsigned int __offset,
842 float *__ptr, int __index)
843 __constant_range(__index, 0, 3) {
844 *(float *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
845 __vec[__index];
846}
847#endif
848
Ulrich Weigandca256432015-07-30 14:10:43 +0000849static inline __ATTRS_o_ai void
850vec_scatter_element(vector double __vec, vector unsigned long long __offset,
851 double *__ptr, int __index)
852 __constant_range(__index, 0, 1) {
853 *(double *)((__INTPTR_TYPE__)__ptr + __offset[__index]) =
854 __vec[__index];
855}
856
Ulrich Weigand6af25592017-07-17 17:47:35 +0000857/*-- vec_xl -----------------------------------------------------------------*/
858
859static inline __ATTRS_o_ai vector signed char
860vec_xl(long __offset, const signed char *__ptr) {
861 return *(const vector signed char *)((__INTPTR_TYPE__)__ptr + __offset);
862}
863
864static inline __ATTRS_o_ai vector unsigned char
865vec_xl(long __offset, const unsigned char *__ptr) {
866 return *(const vector unsigned char *)((__INTPTR_TYPE__)__ptr + __offset);
867}
868
869static inline __ATTRS_o_ai vector signed short
870vec_xl(long __offset, const signed short *__ptr) {
871 return *(const vector signed short *)((__INTPTR_TYPE__)__ptr + __offset);
872}
873
874static inline __ATTRS_o_ai vector unsigned short
875vec_xl(long __offset, const unsigned short *__ptr) {
876 return *(const vector unsigned short *)((__INTPTR_TYPE__)__ptr + __offset);
877}
878
879static inline __ATTRS_o_ai vector signed int
880vec_xl(long __offset, const signed int *__ptr) {
881 return *(const vector signed int *)((__INTPTR_TYPE__)__ptr + __offset);
882}
883
884static inline __ATTRS_o_ai vector unsigned int
885vec_xl(long __offset, const unsigned int *__ptr) {
886 return *(const vector unsigned int *)((__INTPTR_TYPE__)__ptr + __offset);
887}
888
889static inline __ATTRS_o_ai vector signed long long
890vec_xl(long __offset, const signed long long *__ptr) {
891 return *(const vector signed long long *)((__INTPTR_TYPE__)__ptr + __offset);
892}
893
894static inline __ATTRS_o_ai vector unsigned long long
895vec_xl(long __offset, const unsigned long long *__ptr) {
896 return *(const vector unsigned long long *)((__INTPTR_TYPE__)__ptr + __offset);
897}
898
899#if __ARCH__ >= 12
900static inline __ATTRS_o_ai vector float
901vec_xl(long __offset, const float *__ptr) {
902 return *(const vector float *)((__INTPTR_TYPE__)__ptr + __offset);
903}
904#endif
905
906static inline __ATTRS_o_ai vector double
907vec_xl(long __offset, const double *__ptr) {
908 return *(const vector double *)((__INTPTR_TYPE__)__ptr + __offset);
909}
910
Ulrich Weigandca256432015-07-30 14:10:43 +0000911/*-- vec_xld2 ---------------------------------------------------------------*/
912
Ulrich Weigand6af25592017-07-17 17:47:35 +0000913// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000914static inline __ATTRS_o_ai vector signed char
915vec_xld2(long __offset, const signed char *__ptr) {
916 return *(const vector signed char *)((__INTPTR_TYPE__)__ptr + __offset);
917}
918
Ulrich Weigand6af25592017-07-17 17:47:35 +0000919// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000920static inline __ATTRS_o_ai vector unsigned char
921vec_xld2(long __offset, const unsigned char *__ptr) {
922 return *(const vector unsigned char *)((__INTPTR_TYPE__)__ptr + __offset);
923}
924
Ulrich Weigand6af25592017-07-17 17:47:35 +0000925// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000926static inline __ATTRS_o_ai vector signed short
927vec_xld2(long __offset, const signed short *__ptr) {
928 return *(const vector signed short *)((__INTPTR_TYPE__)__ptr + __offset);
929}
930
Ulrich Weigand6af25592017-07-17 17:47:35 +0000931// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000932static inline __ATTRS_o_ai vector unsigned short
933vec_xld2(long __offset, const unsigned short *__ptr) {
934 return *(const vector unsigned short *)((__INTPTR_TYPE__)__ptr + __offset);
935}
936
Ulrich Weigand6af25592017-07-17 17:47:35 +0000937// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000938static inline __ATTRS_o_ai vector signed int
939vec_xld2(long __offset, const signed int *__ptr) {
940 return *(const vector signed int *)((__INTPTR_TYPE__)__ptr + __offset);
941}
942
Ulrich Weigand6af25592017-07-17 17:47:35 +0000943// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000944static inline __ATTRS_o_ai vector unsigned int
945vec_xld2(long __offset, const unsigned int *__ptr) {
946 return *(const vector unsigned int *)((__INTPTR_TYPE__)__ptr + __offset);
947}
948
Ulrich Weigand6af25592017-07-17 17:47:35 +0000949// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000950static inline __ATTRS_o_ai vector signed long long
951vec_xld2(long __offset, const signed long long *__ptr) {
952 return *(const vector signed long long *)((__INTPTR_TYPE__)__ptr + __offset);
953}
954
Ulrich Weigand6af25592017-07-17 17:47:35 +0000955// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000956static inline __ATTRS_o_ai vector unsigned long long
957vec_xld2(long __offset, const unsigned long long *__ptr) {
958 return *(const vector unsigned long long *)((__INTPTR_TYPE__)__ptr + __offset);
959}
960
Ulrich Weigand6af25592017-07-17 17:47:35 +0000961// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000962static inline __ATTRS_o_ai vector double
963vec_xld2(long __offset, const double *__ptr) {
964 return *(const vector double *)((__INTPTR_TYPE__)__ptr + __offset);
965}
966
967/*-- vec_xlw4 ---------------------------------------------------------------*/
968
Ulrich Weigand6af25592017-07-17 17:47:35 +0000969// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000970static inline __ATTRS_o_ai vector signed char
971vec_xlw4(long __offset, const signed char *__ptr) {
972 return *(const vector signed char *)((__INTPTR_TYPE__)__ptr + __offset);
973}
974
Ulrich Weigand6af25592017-07-17 17:47:35 +0000975// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000976static inline __ATTRS_o_ai vector unsigned char
977vec_xlw4(long __offset, const unsigned char *__ptr) {
978 return *(const vector unsigned char *)((__INTPTR_TYPE__)__ptr + __offset);
979}
980
Ulrich Weigand6af25592017-07-17 17:47:35 +0000981// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000982static inline __ATTRS_o_ai vector signed short
983vec_xlw4(long __offset, const signed short *__ptr) {
984 return *(const vector signed short *)((__INTPTR_TYPE__)__ptr + __offset);
985}
986
Ulrich Weigand6af25592017-07-17 17:47:35 +0000987// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000988static inline __ATTRS_o_ai vector unsigned short
989vec_xlw4(long __offset, const unsigned short *__ptr) {
990 return *(const vector unsigned short *)((__INTPTR_TYPE__)__ptr + __offset);
991}
992
Ulrich Weigand6af25592017-07-17 17:47:35 +0000993// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +0000994static inline __ATTRS_o_ai vector signed int
995vec_xlw4(long __offset, const signed int *__ptr) {
996 return *(const vector signed int *)((__INTPTR_TYPE__)__ptr + __offset);
997}
998
Ulrich Weigand6af25592017-07-17 17:47:35 +0000999// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00001000static inline __ATTRS_o_ai vector unsigned int
1001vec_xlw4(long __offset, const unsigned int *__ptr) {
1002 return *(const vector unsigned int *)((__INTPTR_TYPE__)__ptr + __offset);
1003}
1004
Ulrich Weigand6af25592017-07-17 17:47:35 +00001005/*-- vec_xst ----------------------------------------------------------------*/
1006
1007static inline __ATTRS_o_ai void
1008vec_xst(vector signed char __vec, long __offset, signed char *__ptr) {
1009 *(vector signed char *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1010}
1011
1012static inline __ATTRS_o_ai void
1013vec_xst(vector unsigned char __vec, long __offset, unsigned char *__ptr) {
1014 *(vector unsigned char *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1015}
1016
1017static inline __ATTRS_o_ai void
1018vec_xst(vector signed short __vec, long __offset, signed short *__ptr) {
1019 *(vector signed short *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1020}
1021
1022static inline __ATTRS_o_ai void
1023vec_xst(vector unsigned short __vec, long __offset, unsigned short *__ptr) {
1024 *(vector unsigned short *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1025}
1026
1027static inline __ATTRS_o_ai void
1028vec_xst(vector signed int __vec, long __offset, signed int *__ptr) {
1029 *(vector signed int *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1030}
1031
1032static inline __ATTRS_o_ai void
1033vec_xst(vector unsigned int __vec, long __offset, unsigned int *__ptr) {
1034 *(vector unsigned int *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1035}
1036
1037static inline __ATTRS_o_ai void
1038vec_xst(vector signed long long __vec, long __offset,
1039 signed long long *__ptr) {
1040 *(vector signed long long *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1041}
1042
1043static inline __ATTRS_o_ai void
1044vec_xst(vector unsigned long long __vec, long __offset,
1045 unsigned long long *__ptr) {
1046 *(vector unsigned long long *)((__INTPTR_TYPE__)__ptr + __offset) =
1047 __vec;
1048}
1049
1050#if __ARCH__ >= 12
1051static inline __ATTRS_o_ai void
1052vec_xst(vector float __vec, long __offset, float *__ptr) {
1053 *(vector float *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1054}
1055#endif
1056
1057static inline __ATTRS_o_ai void
1058vec_xst(vector double __vec, long __offset, double *__ptr) {
1059 *(vector double *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1060}
1061
Ulrich Weigandca256432015-07-30 14:10:43 +00001062/*-- vec_xstd2 --------------------------------------------------------------*/
1063
Ulrich Weigand6af25592017-07-17 17:47:35 +00001064// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00001065static inline __ATTRS_o_ai void
1066vec_xstd2(vector signed char __vec, long __offset, signed char *__ptr) {
1067 *(vector signed char *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1068}
1069
Ulrich Weigand6af25592017-07-17 17:47:35 +00001070// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00001071static inline __ATTRS_o_ai void
1072vec_xstd2(vector unsigned char __vec, long __offset, unsigned char *__ptr) {
1073 *(vector unsigned char *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1074}
1075
Ulrich Weigand6af25592017-07-17 17:47:35 +00001076// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00001077static inline __ATTRS_o_ai void
1078vec_xstd2(vector signed short __vec, long __offset, signed short *__ptr) {
1079 *(vector signed short *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1080}
1081
Ulrich Weigand6af25592017-07-17 17:47:35 +00001082// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00001083static inline __ATTRS_o_ai void
1084vec_xstd2(vector unsigned short __vec, long __offset, unsigned short *__ptr) {
1085 *(vector unsigned short *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1086}
1087
Ulrich Weigand6af25592017-07-17 17:47:35 +00001088// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00001089static inline __ATTRS_o_ai void
1090vec_xstd2(vector signed int __vec, long __offset, signed int *__ptr) {
1091 *(vector signed int *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1092}
1093
Ulrich Weigand6af25592017-07-17 17:47:35 +00001094// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00001095static inline __ATTRS_o_ai void
1096vec_xstd2(vector unsigned int __vec, long __offset, unsigned int *__ptr) {
1097 *(vector unsigned int *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1098}
1099
Ulrich Weigand6af25592017-07-17 17:47:35 +00001100// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00001101static inline __ATTRS_o_ai void
1102vec_xstd2(vector signed long long __vec, long __offset,
1103 signed long long *__ptr) {
1104 *(vector signed long long *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1105}
1106
Ulrich Weigand6af25592017-07-17 17:47:35 +00001107// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00001108static inline __ATTRS_o_ai void
1109vec_xstd2(vector unsigned long long __vec, long __offset,
1110 unsigned long long *__ptr) {
1111 *(vector unsigned long long *)((__INTPTR_TYPE__)__ptr + __offset) =
1112 __vec;
1113}
1114
Ulrich Weigand6af25592017-07-17 17:47:35 +00001115// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00001116static inline __ATTRS_o_ai void
1117vec_xstd2(vector double __vec, long __offset, double *__ptr) {
1118 *(vector double *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1119}
1120
1121/*-- vec_xstw4 --------------------------------------------------------------*/
1122
Ulrich Weigand6af25592017-07-17 17:47:35 +00001123// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00001124static inline __ATTRS_o_ai void
1125vec_xstw4(vector signed char __vec, long __offset, signed char *__ptr) {
1126 *(vector signed char *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1127}
1128
Ulrich Weigand6af25592017-07-17 17:47:35 +00001129// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00001130static inline __ATTRS_o_ai void
1131vec_xstw4(vector unsigned char __vec, long __offset, unsigned char *__ptr) {
1132 *(vector unsigned char *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1133}
1134
Ulrich Weigand6af25592017-07-17 17:47:35 +00001135// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00001136static inline __ATTRS_o_ai void
1137vec_xstw4(vector signed short __vec, long __offset, signed short *__ptr) {
1138 *(vector signed short *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1139}
1140
Ulrich Weigand6af25592017-07-17 17:47:35 +00001141// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00001142static inline __ATTRS_o_ai void
1143vec_xstw4(vector unsigned short __vec, long __offset, unsigned short *__ptr) {
1144 *(vector unsigned short *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1145}
1146
Ulrich Weigand6af25592017-07-17 17:47:35 +00001147// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00001148static inline __ATTRS_o_ai void
1149vec_xstw4(vector signed int __vec, long __offset, signed int *__ptr) {
1150 *(vector signed int *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1151}
1152
Ulrich Weigand6af25592017-07-17 17:47:35 +00001153// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00001154static inline __ATTRS_o_ai void
1155vec_xstw4(vector unsigned int __vec, long __offset, unsigned int *__ptr) {
1156 *(vector unsigned int *)((__INTPTR_TYPE__)__ptr + __offset) = __vec;
1157}
1158
1159/*-- vec_load_bndry ---------------------------------------------------------*/
1160
1161extern __ATTRS_o vector signed char
1162vec_load_bndry(const signed char *__ptr, unsigned short __len)
1163 __constant_pow2_range(__len, 64, 4096);
1164
1165extern __ATTRS_o vector unsigned char
1166vec_load_bndry(const unsigned char *__ptr, unsigned short __len)
1167 __constant_pow2_range(__len, 64, 4096);
1168
1169extern __ATTRS_o vector signed short
1170vec_load_bndry(const signed short *__ptr, unsigned short __len)
1171 __constant_pow2_range(__len, 64, 4096);
1172
1173extern __ATTRS_o vector unsigned short
1174vec_load_bndry(const unsigned short *__ptr, unsigned short __len)
1175 __constant_pow2_range(__len, 64, 4096);
1176
1177extern __ATTRS_o vector signed int
1178vec_load_bndry(const signed int *__ptr, unsigned short __len)
1179 __constant_pow2_range(__len, 64, 4096);
1180
1181extern __ATTRS_o vector unsigned int
1182vec_load_bndry(const unsigned int *__ptr, unsigned short __len)
1183 __constant_pow2_range(__len, 64, 4096);
1184
1185extern __ATTRS_o vector signed long long
1186vec_load_bndry(const signed long long *__ptr, unsigned short __len)
1187 __constant_pow2_range(__len, 64, 4096);
1188
1189extern __ATTRS_o vector unsigned long long
1190vec_load_bndry(const unsigned long long *__ptr, unsigned short __len)
1191 __constant_pow2_range(__len, 64, 4096);
1192
Ulrich Weigand6af25592017-07-17 17:47:35 +00001193#if __ARCH__ >= 12
1194extern __ATTRS_o vector float
1195vec_load_bndry(const float *__ptr, unsigned short __len)
1196 __constant_pow2_range(__len, 64, 4096);
1197#endif
1198
Ulrich Weigandca256432015-07-30 14:10:43 +00001199extern __ATTRS_o vector double
1200vec_load_bndry(const double *__ptr, unsigned short __len)
1201 __constant_pow2_range(__len, 64, 4096);
1202
1203#define vec_load_bndry(X, Y) ((__typeof__((vec_load_bndry)((X), (Y)))) \
1204 __builtin_s390_vlbb((X), ((Y) == 64 ? 0 : \
1205 (Y) == 128 ? 1 : \
1206 (Y) == 256 ? 2 : \
1207 (Y) == 512 ? 3 : \
1208 (Y) == 1024 ? 4 : \
1209 (Y) == 2048 ? 5 : \
1210 (Y) == 4096 ? 6 : -1)))
1211
1212/*-- vec_load_len -----------------------------------------------------------*/
1213
1214static inline __ATTRS_o_ai vector signed char
1215vec_load_len(const signed char *__ptr, unsigned int __len) {
1216 return (vector signed char)__builtin_s390_vll(__len, __ptr);
1217}
1218
1219static inline __ATTRS_o_ai vector unsigned char
1220vec_load_len(const unsigned char *__ptr, unsigned int __len) {
1221 return (vector unsigned char)__builtin_s390_vll(__len, __ptr);
1222}
1223
1224static inline __ATTRS_o_ai vector signed short
1225vec_load_len(const signed short *__ptr, unsigned int __len) {
1226 return (vector signed short)__builtin_s390_vll(__len, __ptr);
1227}
1228
1229static inline __ATTRS_o_ai vector unsigned short
1230vec_load_len(const unsigned short *__ptr, unsigned int __len) {
1231 return (vector unsigned short)__builtin_s390_vll(__len, __ptr);
1232}
1233
1234static inline __ATTRS_o_ai vector signed int
1235vec_load_len(const signed int *__ptr, unsigned int __len) {
1236 return (vector signed int)__builtin_s390_vll(__len, __ptr);
1237}
1238
1239static inline __ATTRS_o_ai vector unsigned int
1240vec_load_len(const unsigned int *__ptr, unsigned int __len) {
1241 return (vector unsigned int)__builtin_s390_vll(__len, __ptr);
1242}
1243
1244static inline __ATTRS_o_ai vector signed long long
1245vec_load_len(const signed long long *__ptr, unsigned int __len) {
1246 return (vector signed long long)__builtin_s390_vll(__len, __ptr);
1247}
1248
1249static inline __ATTRS_o_ai vector unsigned long long
1250vec_load_len(const unsigned long long *__ptr, unsigned int __len) {
1251 return (vector unsigned long long)__builtin_s390_vll(__len, __ptr);
1252}
1253
Ulrich Weigand6af25592017-07-17 17:47:35 +00001254#if __ARCH__ >= 12
1255static inline __ATTRS_o_ai vector float
1256vec_load_len(const float *__ptr, unsigned int __len) {
1257 return (vector float)__builtin_s390_vll(__len, __ptr);
1258}
1259#endif
1260
Ulrich Weigandca256432015-07-30 14:10:43 +00001261static inline __ATTRS_o_ai vector double
1262vec_load_len(const double *__ptr, unsigned int __len) {
1263 return (vector double)__builtin_s390_vll(__len, __ptr);
1264}
1265
Ulrich Weigand6af25592017-07-17 17:47:35 +00001266/*-- vec_load_len_r ---------------------------------------------------------*/
1267
1268#if __ARCH__ >= 12
1269static inline __ATTRS_ai vector unsigned char
1270vec_load_len_r(const unsigned char *__ptr, unsigned int __len) {
1271 return (vector unsigned char)__builtin_s390_vlrl(__len, __ptr);
1272}
1273#endif
1274
Ulrich Weigandca256432015-07-30 14:10:43 +00001275/*-- vec_store_len ----------------------------------------------------------*/
1276
1277static inline __ATTRS_o_ai void
1278vec_store_len(vector signed char __vec, signed char *__ptr,
1279 unsigned int __len) {
1280 __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1281}
1282
1283static inline __ATTRS_o_ai void
1284vec_store_len(vector unsigned char __vec, unsigned char *__ptr,
1285 unsigned int __len) {
1286 __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1287}
1288
1289static inline __ATTRS_o_ai void
1290vec_store_len(vector signed short __vec, signed short *__ptr,
1291 unsigned int __len) {
1292 __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1293}
1294
1295static inline __ATTRS_o_ai void
1296vec_store_len(vector unsigned short __vec, unsigned short *__ptr,
1297 unsigned int __len) {
1298 __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1299}
1300
1301static inline __ATTRS_o_ai void
1302vec_store_len(vector signed int __vec, signed int *__ptr,
1303 unsigned int __len) {
1304 __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1305}
1306
1307static inline __ATTRS_o_ai void
1308vec_store_len(vector unsigned int __vec, unsigned int *__ptr,
1309 unsigned int __len) {
1310 __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1311}
1312
1313static inline __ATTRS_o_ai void
1314vec_store_len(vector signed long long __vec, signed long long *__ptr,
1315 unsigned int __len) {
1316 __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1317}
1318
1319static inline __ATTRS_o_ai void
1320vec_store_len(vector unsigned long long __vec, unsigned long long *__ptr,
1321 unsigned int __len) {
1322 __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1323}
1324
Ulrich Weigand6af25592017-07-17 17:47:35 +00001325#if __ARCH__ >= 12
1326static inline __ATTRS_o_ai void
1327vec_store_len(vector float __vec, float *__ptr,
1328 unsigned int __len) {
1329 __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1330}
1331#endif
1332
Ulrich Weigandca256432015-07-30 14:10:43 +00001333static inline __ATTRS_o_ai void
1334vec_store_len(vector double __vec, double *__ptr,
1335 unsigned int __len) {
1336 __builtin_s390_vstl((vector signed char)__vec, __len, __ptr);
1337}
1338
Ulrich Weigand6af25592017-07-17 17:47:35 +00001339/*-- vec_store_len_r --------------------------------------------------------*/
1340
1341#if __ARCH__ >= 12
1342static inline __ATTRS_ai void
1343vec_store_len_r(vector unsigned char __vec, unsigned char *__ptr,
1344 unsigned int __len) {
1345 __builtin_s390_vstrl((vector signed char)__vec, __len, __ptr);
1346}
1347#endif
1348
Ulrich Weigandca256432015-07-30 14:10:43 +00001349/*-- vec_load_pair ----------------------------------------------------------*/
1350
1351static inline __ATTRS_o_ai vector signed long long
1352vec_load_pair(signed long long __a, signed long long __b) {
1353 return (vector signed long long)(__a, __b);
1354}
1355
1356static inline __ATTRS_o_ai vector unsigned long long
1357vec_load_pair(unsigned long long __a, unsigned long long __b) {
1358 return (vector unsigned long long)(__a, __b);
1359}
1360
1361/*-- vec_genmask ------------------------------------------------------------*/
1362
1363static inline __ATTRS_o_ai vector unsigned char
1364vec_genmask(unsigned short __mask)
1365 __constant(__mask) {
1366 return (vector unsigned char)(
1367 __mask & 0x8000 ? 0xff : 0,
1368 __mask & 0x4000 ? 0xff : 0,
1369 __mask & 0x2000 ? 0xff : 0,
1370 __mask & 0x1000 ? 0xff : 0,
1371 __mask & 0x0800 ? 0xff : 0,
1372 __mask & 0x0400 ? 0xff : 0,
1373 __mask & 0x0200 ? 0xff : 0,
1374 __mask & 0x0100 ? 0xff : 0,
1375 __mask & 0x0080 ? 0xff : 0,
1376 __mask & 0x0040 ? 0xff : 0,
1377 __mask & 0x0020 ? 0xff : 0,
1378 __mask & 0x0010 ? 0xff : 0,
1379 __mask & 0x0008 ? 0xff : 0,
1380 __mask & 0x0004 ? 0xff : 0,
1381 __mask & 0x0002 ? 0xff : 0,
1382 __mask & 0x0001 ? 0xff : 0);
1383}
1384
1385/*-- vec_genmasks_* ---------------------------------------------------------*/
1386
1387static inline __ATTRS_o_ai vector unsigned char
1388vec_genmasks_8(unsigned char __first, unsigned char __last)
1389 __constant(__first) __constant(__last) {
1390 unsigned char __bit1 = __first & 7;
1391 unsigned char __bit2 = __last & 7;
1392 unsigned char __mask1 = (unsigned char)(1U << (7 - __bit1) << 1) - 1;
1393 unsigned char __mask2 = (unsigned char)(1U << (7 - __bit2)) - 1;
1394 unsigned char __value = (__bit1 <= __bit2 ?
1395 __mask1 & ~__mask2 :
1396 __mask1 | ~__mask2);
1397 return (vector unsigned char)__value;
1398}
1399
1400static inline __ATTRS_o_ai vector unsigned short
1401vec_genmasks_16(unsigned char __first, unsigned char __last)
1402 __constant(__first) __constant(__last) {
1403 unsigned char __bit1 = __first & 15;
1404 unsigned char __bit2 = __last & 15;
1405 unsigned short __mask1 = (unsigned short)(1U << (15 - __bit1) << 1) - 1;
1406 unsigned short __mask2 = (unsigned short)(1U << (15 - __bit2)) - 1;
1407 unsigned short __value = (__bit1 <= __bit2 ?
1408 __mask1 & ~__mask2 :
1409 __mask1 | ~__mask2);
1410 return (vector unsigned short)__value;
1411}
1412
1413static inline __ATTRS_o_ai vector unsigned int
1414vec_genmasks_32(unsigned char __first, unsigned char __last)
1415 __constant(__first) __constant(__last) {
1416 unsigned char __bit1 = __first & 31;
1417 unsigned char __bit2 = __last & 31;
1418 unsigned int __mask1 = (1U << (31 - __bit1) << 1) - 1;
1419 unsigned int __mask2 = (1U << (31 - __bit2)) - 1;
1420 unsigned int __value = (__bit1 <= __bit2 ?
1421 __mask1 & ~__mask2 :
1422 __mask1 | ~__mask2);
1423 return (vector unsigned int)__value;
1424}
1425
1426static inline __ATTRS_o_ai vector unsigned long long
1427vec_genmasks_64(unsigned char __first, unsigned char __last)
1428 __constant(__first) __constant(__last) {
1429 unsigned char __bit1 = __first & 63;
1430 unsigned char __bit2 = __last & 63;
1431 unsigned long long __mask1 = (1ULL << (63 - __bit1) << 1) - 1;
1432 unsigned long long __mask2 = (1ULL << (63 - __bit2)) - 1;
1433 unsigned long long __value = (__bit1 <= __bit2 ?
1434 __mask1 & ~__mask2 :
1435 __mask1 | ~__mask2);
1436 return (vector unsigned long long)__value;
1437}
1438
1439/*-- vec_splat --------------------------------------------------------------*/
1440
1441static inline __ATTRS_o_ai vector signed char
1442vec_splat(vector signed char __vec, int __index)
1443 __constant_range(__index, 0, 15) {
1444 return (vector signed char)__vec[__index];
1445}
1446
1447static inline __ATTRS_o_ai vector bool char
1448vec_splat(vector bool char __vec, int __index)
1449 __constant_range(__index, 0, 15) {
1450 return (vector bool char)(vector unsigned char)__vec[__index];
1451}
1452
1453static inline __ATTRS_o_ai vector unsigned char
1454vec_splat(vector unsigned char __vec, int __index)
1455 __constant_range(__index, 0, 15) {
1456 return (vector unsigned char)__vec[__index];
1457}
1458
1459static inline __ATTRS_o_ai vector signed short
1460vec_splat(vector signed short __vec, int __index)
1461 __constant_range(__index, 0, 7) {
1462 return (vector signed short)__vec[__index];
1463}
1464
1465static inline __ATTRS_o_ai vector bool short
1466vec_splat(vector bool short __vec, int __index)
1467 __constant_range(__index, 0, 7) {
1468 return (vector bool short)(vector unsigned short)__vec[__index];
1469}
1470
1471static inline __ATTRS_o_ai vector unsigned short
1472vec_splat(vector unsigned short __vec, int __index)
1473 __constant_range(__index, 0, 7) {
1474 return (vector unsigned short)__vec[__index];
1475}
1476
1477static inline __ATTRS_o_ai vector signed int
1478vec_splat(vector signed int __vec, int __index)
1479 __constant_range(__index, 0, 3) {
1480 return (vector signed int)__vec[__index];
1481}
1482
1483static inline __ATTRS_o_ai vector bool int
1484vec_splat(vector bool int __vec, int __index)
1485 __constant_range(__index, 0, 3) {
1486 return (vector bool int)(vector unsigned int)__vec[__index];
1487}
1488
1489static inline __ATTRS_o_ai vector unsigned int
1490vec_splat(vector unsigned int __vec, int __index)
1491 __constant_range(__index, 0, 3) {
1492 return (vector unsigned int)__vec[__index];
1493}
1494
1495static inline __ATTRS_o_ai vector signed long long
1496vec_splat(vector signed long long __vec, int __index)
1497 __constant_range(__index, 0, 1) {
1498 return (vector signed long long)__vec[__index];
1499}
1500
1501static inline __ATTRS_o_ai vector bool long long
1502vec_splat(vector bool long long __vec, int __index)
1503 __constant_range(__index, 0, 1) {
1504 return (vector bool long long)(vector unsigned long long)__vec[__index];
1505}
1506
1507static inline __ATTRS_o_ai vector unsigned long long
1508vec_splat(vector unsigned long long __vec, int __index)
1509 __constant_range(__index, 0, 1) {
1510 return (vector unsigned long long)__vec[__index];
1511}
1512
Ulrich Weigand6af25592017-07-17 17:47:35 +00001513#if __ARCH__ >= 12
1514static inline __ATTRS_o_ai vector float
1515vec_splat(vector float __vec, int __index)
1516 __constant_range(__index, 0, 3) {
1517 return (vector float)__vec[__index];
1518}
1519#endif
1520
Ulrich Weigandca256432015-07-30 14:10:43 +00001521static inline __ATTRS_o_ai vector double
1522vec_splat(vector double __vec, int __index)
1523 __constant_range(__index, 0, 1) {
1524 return (vector double)__vec[__index];
1525}
1526
1527/*-- vec_splat_s* -----------------------------------------------------------*/
1528
1529static inline __ATTRS_ai vector signed char
1530vec_splat_s8(signed char __scalar)
1531 __constant(__scalar) {
1532 return (vector signed char)__scalar;
1533}
1534
1535static inline __ATTRS_ai vector signed short
1536vec_splat_s16(signed short __scalar)
1537 __constant(__scalar) {
1538 return (vector signed short)__scalar;
1539}
1540
1541static inline __ATTRS_ai vector signed int
1542vec_splat_s32(signed short __scalar)
1543 __constant(__scalar) {
1544 return (vector signed int)(signed int)__scalar;
1545}
1546
1547static inline __ATTRS_ai vector signed long long
1548vec_splat_s64(signed short __scalar)
1549 __constant(__scalar) {
1550 return (vector signed long long)(signed long)__scalar;
1551}
1552
1553/*-- vec_splat_u* -----------------------------------------------------------*/
1554
1555static inline __ATTRS_ai vector unsigned char
1556vec_splat_u8(unsigned char __scalar)
1557 __constant(__scalar) {
1558 return (vector unsigned char)__scalar;
1559}
1560
1561static inline __ATTRS_ai vector unsigned short
1562vec_splat_u16(unsigned short __scalar)
1563 __constant(__scalar) {
1564 return (vector unsigned short)__scalar;
1565}
1566
1567static inline __ATTRS_ai vector unsigned int
1568vec_splat_u32(signed short __scalar)
1569 __constant(__scalar) {
1570 return (vector unsigned int)(signed int)__scalar;
1571}
1572
1573static inline __ATTRS_ai vector unsigned long long
1574vec_splat_u64(signed short __scalar)
1575 __constant(__scalar) {
1576 return (vector unsigned long long)(signed long long)__scalar;
1577}
1578
1579/*-- vec_splats -------------------------------------------------------------*/
1580
1581static inline __ATTRS_o_ai vector signed char
1582vec_splats(signed char __scalar) {
1583 return (vector signed char)__scalar;
1584}
1585
1586static inline __ATTRS_o_ai vector unsigned char
1587vec_splats(unsigned char __scalar) {
1588 return (vector unsigned char)__scalar;
1589}
1590
1591static inline __ATTRS_o_ai vector signed short
1592vec_splats(signed short __scalar) {
1593 return (vector signed short)__scalar;
1594}
1595
1596static inline __ATTRS_o_ai vector unsigned short
1597vec_splats(unsigned short __scalar) {
1598 return (vector unsigned short)__scalar;
1599}
1600
1601static inline __ATTRS_o_ai vector signed int
1602vec_splats(signed int __scalar) {
1603 return (vector signed int)__scalar;
1604}
1605
1606static inline __ATTRS_o_ai vector unsigned int
1607vec_splats(unsigned int __scalar) {
1608 return (vector unsigned int)__scalar;
1609}
1610
1611static inline __ATTRS_o_ai vector signed long long
1612vec_splats(signed long long __scalar) {
1613 return (vector signed long long)__scalar;
1614}
1615
1616static inline __ATTRS_o_ai vector unsigned long long
1617vec_splats(unsigned long long __scalar) {
1618 return (vector unsigned long long)__scalar;
1619}
1620
Ulrich Weigand6af25592017-07-17 17:47:35 +00001621#if __ARCH__ >= 12
1622static inline __ATTRS_o_ai vector float
1623vec_splats(float __scalar) {
1624 return (vector float)__scalar;
1625}
1626#endif
1627
Ulrich Weigandca256432015-07-30 14:10:43 +00001628static inline __ATTRS_o_ai vector double
1629vec_splats(double __scalar) {
1630 return (vector double)__scalar;
1631}
1632
1633/*-- vec_extend_s64 ---------------------------------------------------------*/
1634
1635static inline __ATTRS_o_ai vector signed long long
1636vec_extend_s64(vector signed char __a) {
1637 return (vector signed long long)(__a[7], __a[15]);
1638}
1639
1640static inline __ATTRS_o_ai vector signed long long
1641vec_extend_s64(vector signed short __a) {
1642 return (vector signed long long)(__a[3], __a[7]);
1643}
1644
1645static inline __ATTRS_o_ai vector signed long long
1646vec_extend_s64(vector signed int __a) {
1647 return (vector signed long long)(__a[1], __a[3]);
1648}
1649
1650/*-- vec_mergeh -------------------------------------------------------------*/
1651
1652static inline __ATTRS_o_ai vector signed char
1653vec_mergeh(vector signed char __a, vector signed char __b) {
1654 return (vector signed char)(
1655 __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3],
1656 __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
1657}
1658
1659static inline __ATTRS_o_ai vector bool char
1660vec_mergeh(vector bool char __a, vector bool char __b) {
1661 return (vector bool char)(
1662 __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3],
1663 __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
1664}
1665
1666static inline __ATTRS_o_ai vector unsigned char
1667vec_mergeh(vector unsigned char __a, vector unsigned char __b) {
1668 return (vector unsigned char)(
1669 __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3],
1670 __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
1671}
1672
1673static inline __ATTRS_o_ai vector signed short
1674vec_mergeh(vector signed short __a, vector signed short __b) {
1675 return (vector signed short)(
1676 __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3]);
1677}
1678
1679static inline __ATTRS_o_ai vector bool short
1680vec_mergeh(vector bool short __a, vector bool short __b) {
1681 return (vector bool short)(
1682 __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3]);
1683}
1684
1685static inline __ATTRS_o_ai vector unsigned short
1686vec_mergeh(vector unsigned short __a, vector unsigned short __b) {
1687 return (vector unsigned short)(
1688 __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3]);
1689}
1690
1691static inline __ATTRS_o_ai vector signed int
1692vec_mergeh(vector signed int __a, vector signed int __b) {
1693 return (vector signed int)(__a[0], __b[0], __a[1], __b[1]);
1694}
1695
1696static inline __ATTRS_o_ai vector bool int
1697vec_mergeh(vector bool int __a, vector bool int __b) {
1698 return (vector bool int)(__a[0], __b[0], __a[1], __b[1]);
1699}
1700
1701static inline __ATTRS_o_ai vector unsigned int
1702vec_mergeh(vector unsigned int __a, vector unsigned int __b) {
1703 return (vector unsigned int)(__a[0], __b[0], __a[1], __b[1]);
1704}
1705
1706static inline __ATTRS_o_ai vector signed long long
1707vec_mergeh(vector signed long long __a, vector signed long long __b) {
1708 return (vector signed long long)(__a[0], __b[0]);
1709}
1710
1711static inline __ATTRS_o_ai vector bool long long
1712vec_mergeh(vector bool long long __a, vector bool long long __b) {
1713 return (vector bool long long)(__a[0], __b[0]);
1714}
1715
1716static inline __ATTRS_o_ai vector unsigned long long
1717vec_mergeh(vector unsigned long long __a, vector unsigned long long __b) {
1718 return (vector unsigned long long)(__a[0], __b[0]);
1719}
1720
Ulrich Weigand6af25592017-07-17 17:47:35 +00001721#if __ARCH__ >= 12
1722static inline __ATTRS_o_ai vector float
1723vec_mergeh(vector float __a, vector float __b) {
1724 return (vector float)(__a[0], __b[0], __a[1], __b[1]);
1725}
1726#endif
1727
Ulrich Weigandca256432015-07-30 14:10:43 +00001728static inline __ATTRS_o_ai vector double
1729vec_mergeh(vector double __a, vector double __b) {
1730 return (vector double)(__a[0], __b[0]);
1731}
1732
1733/*-- vec_mergel -------------------------------------------------------------*/
1734
1735static inline __ATTRS_o_ai vector signed char
1736vec_mergel(vector signed char __a, vector signed char __b) {
1737 return (vector signed char)(
1738 __a[8], __b[8], __a[9], __b[9], __a[10], __b[10], __a[11], __b[11],
1739 __a[12], __b[12], __a[13], __b[13], __a[14], __b[14], __a[15], __b[15]);
1740}
1741
1742static inline __ATTRS_o_ai vector bool char
1743vec_mergel(vector bool char __a, vector bool char __b) {
1744 return (vector bool char)(
1745 __a[8], __b[8], __a[9], __b[9], __a[10], __b[10], __a[11], __b[11],
1746 __a[12], __b[12], __a[13], __b[13], __a[14], __b[14], __a[15], __b[15]);
1747}
1748
1749static inline __ATTRS_o_ai vector unsigned char
1750vec_mergel(vector unsigned char __a, vector unsigned char __b) {
1751 return (vector unsigned char)(
1752 __a[8], __b[8], __a[9], __b[9], __a[10], __b[10], __a[11], __b[11],
1753 __a[12], __b[12], __a[13], __b[13], __a[14], __b[14], __a[15], __b[15]);
1754}
1755
1756static inline __ATTRS_o_ai vector signed short
1757vec_mergel(vector signed short __a, vector signed short __b) {
1758 return (vector signed short)(
1759 __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
1760}
1761
1762static inline __ATTRS_o_ai vector bool short
1763vec_mergel(vector bool short __a, vector bool short __b) {
1764 return (vector bool short)(
1765 __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
1766}
1767
1768static inline __ATTRS_o_ai vector unsigned short
1769vec_mergel(vector unsigned short __a, vector unsigned short __b) {
1770 return (vector unsigned short)(
1771 __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]);
1772}
1773
1774static inline __ATTRS_o_ai vector signed int
1775vec_mergel(vector signed int __a, vector signed int __b) {
1776 return (vector signed int)(__a[2], __b[2], __a[3], __b[3]);
1777}
1778
1779static inline __ATTRS_o_ai vector bool int
1780vec_mergel(vector bool int __a, vector bool int __b) {
1781 return (vector bool int)(__a[2], __b[2], __a[3], __b[3]);
1782}
1783
1784static inline __ATTRS_o_ai vector unsigned int
1785vec_mergel(vector unsigned int __a, vector unsigned int __b) {
1786 return (vector unsigned int)(__a[2], __b[2], __a[3], __b[3]);
1787}
1788
1789static inline __ATTRS_o_ai vector signed long long
1790vec_mergel(vector signed long long __a, vector signed long long __b) {
1791 return (vector signed long long)(__a[1], __b[1]);
1792}
1793
1794static inline __ATTRS_o_ai vector bool long long
1795vec_mergel(vector bool long long __a, vector bool long long __b) {
1796 return (vector bool long long)(__a[1], __b[1]);
1797}
1798
1799static inline __ATTRS_o_ai vector unsigned long long
1800vec_mergel(vector unsigned long long __a, vector unsigned long long __b) {
1801 return (vector unsigned long long)(__a[1], __b[1]);
1802}
1803
Ulrich Weigand6af25592017-07-17 17:47:35 +00001804#if __ARCH__ >= 12
1805static inline __ATTRS_o_ai vector float
1806vec_mergel(vector float __a, vector float __b) {
1807 return (vector float)(__a[2], __b[2], __a[3], __b[3]);
1808}
1809#endif
1810
Ulrich Weigandca256432015-07-30 14:10:43 +00001811static inline __ATTRS_o_ai vector double
1812vec_mergel(vector double __a, vector double __b) {
1813 return (vector double)(__a[1], __b[1]);
1814}
1815
1816/*-- vec_pack ---------------------------------------------------------------*/
1817
1818static inline __ATTRS_o_ai vector signed char
1819vec_pack(vector signed short __a, vector signed short __b) {
1820 vector signed char __ac = (vector signed char)__a;
1821 vector signed char __bc = (vector signed char)__b;
1822 return (vector signed char)(
1823 __ac[1], __ac[3], __ac[5], __ac[7], __ac[9], __ac[11], __ac[13], __ac[15],
1824 __bc[1], __bc[3], __bc[5], __bc[7], __bc[9], __bc[11], __bc[13], __bc[15]);
1825}
1826
1827static inline __ATTRS_o_ai vector bool char
1828vec_pack(vector bool short __a, vector bool short __b) {
1829 vector bool char __ac = (vector bool char)__a;
1830 vector bool char __bc = (vector bool char)__b;
1831 return (vector bool char)(
1832 __ac[1], __ac[3], __ac[5], __ac[7], __ac[9], __ac[11], __ac[13], __ac[15],
1833 __bc[1], __bc[3], __bc[5], __bc[7], __bc[9], __bc[11], __bc[13], __bc[15]);
1834}
1835
1836static inline __ATTRS_o_ai vector unsigned char
1837vec_pack(vector unsigned short __a, vector unsigned short __b) {
1838 vector unsigned char __ac = (vector unsigned char)__a;
1839 vector unsigned char __bc = (vector unsigned char)__b;
1840 return (vector unsigned char)(
1841 __ac[1], __ac[3], __ac[5], __ac[7], __ac[9], __ac[11], __ac[13], __ac[15],
1842 __bc[1], __bc[3], __bc[5], __bc[7], __bc[9], __bc[11], __bc[13], __bc[15]);
1843}
1844
1845static inline __ATTRS_o_ai vector signed short
1846vec_pack(vector signed int __a, vector signed int __b) {
1847 vector signed short __ac = (vector signed short)__a;
1848 vector signed short __bc = (vector signed short)__b;
1849 return (vector signed short)(
1850 __ac[1], __ac[3], __ac[5], __ac[7],
1851 __bc[1], __bc[3], __bc[5], __bc[7]);
1852}
1853
1854static inline __ATTRS_o_ai vector bool short
1855vec_pack(vector bool int __a, vector bool int __b) {
1856 vector bool short __ac = (vector bool short)__a;
1857 vector bool short __bc = (vector bool short)__b;
1858 return (vector bool short)(
1859 __ac[1], __ac[3], __ac[5], __ac[7],
1860 __bc[1], __bc[3], __bc[5], __bc[7]);
1861}
1862
1863static inline __ATTRS_o_ai vector unsigned short
1864vec_pack(vector unsigned int __a, vector unsigned int __b) {
1865 vector unsigned short __ac = (vector unsigned short)__a;
1866 vector unsigned short __bc = (vector unsigned short)__b;
1867 return (vector unsigned short)(
1868 __ac[1], __ac[3], __ac[5], __ac[7],
1869 __bc[1], __bc[3], __bc[5], __bc[7]);
1870}
1871
1872static inline __ATTRS_o_ai vector signed int
1873vec_pack(vector signed long long __a, vector signed long long __b) {
1874 vector signed int __ac = (vector signed int)__a;
1875 vector signed int __bc = (vector signed int)__b;
1876 return (vector signed int)(__ac[1], __ac[3], __bc[1], __bc[3]);
1877}
1878
1879static inline __ATTRS_o_ai vector bool int
1880vec_pack(vector bool long long __a, vector bool long long __b) {
1881 vector bool int __ac = (vector bool int)__a;
1882 vector bool int __bc = (vector bool int)__b;
1883 return (vector bool int)(__ac[1], __ac[3], __bc[1], __bc[3]);
1884}
1885
1886static inline __ATTRS_o_ai vector unsigned int
1887vec_pack(vector unsigned long long __a, vector unsigned long long __b) {
1888 vector unsigned int __ac = (vector unsigned int)__a;
1889 vector unsigned int __bc = (vector unsigned int)__b;
1890 return (vector unsigned int)(__ac[1], __ac[3], __bc[1], __bc[3]);
1891}
1892
1893/*-- vec_packs --------------------------------------------------------------*/
1894
1895static inline __ATTRS_o_ai vector signed char
1896vec_packs(vector signed short __a, vector signed short __b) {
1897 return __builtin_s390_vpksh(__a, __b);
1898}
1899
1900static inline __ATTRS_o_ai vector unsigned char
1901vec_packs(vector unsigned short __a, vector unsigned short __b) {
1902 return __builtin_s390_vpklsh(__a, __b);
1903}
1904
1905static inline __ATTRS_o_ai vector signed short
1906vec_packs(vector signed int __a, vector signed int __b) {
1907 return __builtin_s390_vpksf(__a, __b);
1908}
1909
1910static inline __ATTRS_o_ai vector unsigned short
1911vec_packs(vector unsigned int __a, vector unsigned int __b) {
1912 return __builtin_s390_vpklsf(__a, __b);
1913}
1914
1915static inline __ATTRS_o_ai vector signed int
1916vec_packs(vector signed long long __a, vector signed long long __b) {
1917 return __builtin_s390_vpksg(__a, __b);
1918}
1919
1920static inline __ATTRS_o_ai vector unsigned int
1921vec_packs(vector unsigned long long __a, vector unsigned long long __b) {
1922 return __builtin_s390_vpklsg(__a, __b);
1923}
1924
1925/*-- vec_packs_cc -----------------------------------------------------------*/
1926
1927static inline __ATTRS_o_ai vector signed char
1928vec_packs_cc(vector signed short __a, vector signed short __b, int *__cc) {
1929 return __builtin_s390_vpkshs(__a, __b, __cc);
1930}
1931
1932static inline __ATTRS_o_ai vector unsigned char
1933vec_packs_cc(vector unsigned short __a, vector unsigned short __b, int *__cc) {
1934 return __builtin_s390_vpklshs(__a, __b, __cc);
1935}
1936
1937static inline __ATTRS_o_ai vector signed short
1938vec_packs_cc(vector signed int __a, vector signed int __b, int *__cc) {
1939 return __builtin_s390_vpksfs(__a, __b, __cc);
1940}
1941
1942static inline __ATTRS_o_ai vector unsigned short
1943vec_packs_cc(vector unsigned int __a, vector unsigned int __b, int *__cc) {
1944 return __builtin_s390_vpklsfs(__a, __b, __cc);
1945}
1946
1947static inline __ATTRS_o_ai vector signed int
1948vec_packs_cc(vector signed long long __a, vector signed long long __b,
1949 int *__cc) {
1950 return __builtin_s390_vpksgs(__a, __b, __cc);
1951}
1952
1953static inline __ATTRS_o_ai vector unsigned int
1954vec_packs_cc(vector unsigned long long __a, vector unsigned long long __b,
1955 int *__cc) {
1956 return __builtin_s390_vpklsgs(__a, __b, __cc);
1957}
1958
1959/*-- vec_packsu -------------------------------------------------------------*/
1960
1961static inline __ATTRS_o_ai vector unsigned char
1962vec_packsu(vector signed short __a, vector signed short __b) {
1963 const vector signed short __zero = (vector signed short)0;
1964 return __builtin_s390_vpklsh(
1965 (vector unsigned short)(__a >= __zero) & (vector unsigned short)__a,
1966 (vector unsigned short)(__b >= __zero) & (vector unsigned short)__b);
1967}
1968
1969static inline __ATTRS_o_ai vector unsigned char
1970vec_packsu(vector unsigned short __a, vector unsigned short __b) {
1971 return __builtin_s390_vpklsh(__a, __b);
1972}
1973
1974static inline __ATTRS_o_ai vector unsigned short
1975vec_packsu(vector signed int __a, vector signed int __b) {
1976 const vector signed int __zero = (vector signed int)0;
1977 return __builtin_s390_vpklsf(
1978 (vector unsigned int)(__a >= __zero) & (vector unsigned int)__a,
1979 (vector unsigned int)(__b >= __zero) & (vector unsigned int)__b);
1980}
1981
1982static inline __ATTRS_o_ai vector unsigned short
1983vec_packsu(vector unsigned int __a, vector unsigned int __b) {
1984 return __builtin_s390_vpklsf(__a, __b);
1985}
1986
1987static inline __ATTRS_o_ai vector unsigned int
1988vec_packsu(vector signed long long __a, vector signed long long __b) {
1989 const vector signed long long __zero = (vector signed long long)0;
1990 return __builtin_s390_vpklsg(
1991 (vector unsigned long long)(__a >= __zero) &
1992 (vector unsigned long long)__a,
1993 (vector unsigned long long)(__b >= __zero) &
1994 (vector unsigned long long)__b);
1995}
1996
1997static inline __ATTRS_o_ai vector unsigned int
1998vec_packsu(vector unsigned long long __a, vector unsigned long long __b) {
1999 return __builtin_s390_vpklsg(__a, __b);
2000}
2001
2002/*-- vec_packsu_cc ----------------------------------------------------------*/
2003
2004static inline __ATTRS_o_ai vector unsigned char
2005vec_packsu_cc(vector unsigned short __a, vector unsigned short __b, int *__cc) {
2006 return __builtin_s390_vpklshs(__a, __b, __cc);
2007}
2008
2009static inline __ATTRS_o_ai vector unsigned short
2010vec_packsu_cc(vector unsigned int __a, vector unsigned int __b, int *__cc) {
2011 return __builtin_s390_vpklsfs(__a, __b, __cc);
2012}
2013
2014static inline __ATTRS_o_ai vector unsigned int
2015vec_packsu_cc(vector unsigned long long __a, vector unsigned long long __b,
2016 int *__cc) {
2017 return __builtin_s390_vpklsgs(__a, __b, __cc);
2018}
2019
2020/*-- vec_unpackh ------------------------------------------------------------*/
2021
2022static inline __ATTRS_o_ai vector signed short
2023vec_unpackh(vector signed char __a) {
2024 return __builtin_s390_vuphb(__a);
2025}
2026
2027static inline __ATTRS_o_ai vector bool short
2028vec_unpackh(vector bool char __a) {
2029 return (vector bool short)__builtin_s390_vuphb((vector signed char)__a);
2030}
2031
2032static inline __ATTRS_o_ai vector unsigned short
2033vec_unpackh(vector unsigned char __a) {
2034 return __builtin_s390_vuplhb(__a);
2035}
2036
2037static inline __ATTRS_o_ai vector signed int
2038vec_unpackh(vector signed short __a) {
2039 return __builtin_s390_vuphh(__a);
2040}
2041
2042static inline __ATTRS_o_ai vector bool int
2043vec_unpackh(vector bool short __a) {
2044 return (vector bool int)__builtin_s390_vuphh((vector signed short)__a);
2045}
2046
2047static inline __ATTRS_o_ai vector unsigned int
2048vec_unpackh(vector unsigned short __a) {
2049 return __builtin_s390_vuplhh(__a);
2050}
2051
2052static inline __ATTRS_o_ai vector signed long long
2053vec_unpackh(vector signed int __a) {
2054 return __builtin_s390_vuphf(__a);
2055}
2056
2057static inline __ATTRS_o_ai vector bool long long
2058vec_unpackh(vector bool int __a) {
2059 return (vector bool long long)__builtin_s390_vuphf((vector signed int)__a);
2060}
2061
2062static inline __ATTRS_o_ai vector unsigned long long
2063vec_unpackh(vector unsigned int __a) {
2064 return __builtin_s390_vuplhf(__a);
2065}
2066
2067/*-- vec_unpackl ------------------------------------------------------------*/
2068
2069static inline __ATTRS_o_ai vector signed short
2070vec_unpackl(vector signed char __a) {
2071 return __builtin_s390_vuplb(__a);
2072}
2073
2074static inline __ATTRS_o_ai vector bool short
2075vec_unpackl(vector bool char __a) {
2076 return (vector bool short)__builtin_s390_vuplb((vector signed char)__a);
2077}
2078
2079static inline __ATTRS_o_ai vector unsigned short
2080vec_unpackl(vector unsigned char __a) {
2081 return __builtin_s390_vupllb(__a);
2082}
2083
2084static inline __ATTRS_o_ai vector signed int
2085vec_unpackl(vector signed short __a) {
2086 return __builtin_s390_vuplhw(__a);
2087}
2088
2089static inline __ATTRS_o_ai vector bool int
2090vec_unpackl(vector bool short __a) {
2091 return (vector bool int)__builtin_s390_vuplhw((vector signed short)__a);
2092}
2093
2094static inline __ATTRS_o_ai vector unsigned int
2095vec_unpackl(vector unsigned short __a) {
2096 return __builtin_s390_vupllh(__a);
2097}
2098
2099static inline __ATTRS_o_ai vector signed long long
2100vec_unpackl(vector signed int __a) {
2101 return __builtin_s390_vuplf(__a);
2102}
2103
2104static inline __ATTRS_o_ai vector bool long long
2105vec_unpackl(vector bool int __a) {
2106 return (vector bool long long)__builtin_s390_vuplf((vector signed int)__a);
2107}
2108
2109static inline __ATTRS_o_ai vector unsigned long long
2110vec_unpackl(vector unsigned int __a) {
2111 return __builtin_s390_vupllf(__a);
2112}
2113
2114/*-- vec_cmpeq --------------------------------------------------------------*/
2115
2116static inline __ATTRS_o_ai vector bool char
2117vec_cmpeq(vector bool char __a, vector bool char __b) {
2118 return (vector bool char)(__a == __b);
2119}
2120
2121static inline __ATTRS_o_ai vector bool char
2122vec_cmpeq(vector signed char __a, vector signed char __b) {
2123 return (vector bool char)(__a == __b);
2124}
2125
2126static inline __ATTRS_o_ai vector bool char
2127vec_cmpeq(vector unsigned char __a, vector unsigned char __b) {
2128 return (vector bool char)(__a == __b);
2129}
2130
2131static inline __ATTRS_o_ai vector bool short
2132vec_cmpeq(vector bool short __a, vector bool short __b) {
2133 return (vector bool short)(__a == __b);
2134}
2135
2136static inline __ATTRS_o_ai vector bool short
2137vec_cmpeq(vector signed short __a, vector signed short __b) {
2138 return (vector bool short)(__a == __b);
2139}
2140
2141static inline __ATTRS_o_ai vector bool short
2142vec_cmpeq(vector unsigned short __a, vector unsigned short __b) {
2143 return (vector bool short)(__a == __b);
2144}
2145
2146static inline __ATTRS_o_ai vector bool int
2147vec_cmpeq(vector bool int __a, vector bool int __b) {
2148 return (vector bool int)(__a == __b);
2149}
2150
2151static inline __ATTRS_o_ai vector bool int
2152vec_cmpeq(vector signed int __a, vector signed int __b) {
2153 return (vector bool int)(__a == __b);
2154}
2155
2156static inline __ATTRS_o_ai vector bool int
2157vec_cmpeq(vector unsigned int __a, vector unsigned int __b) {
2158 return (vector bool int)(__a == __b);
2159}
2160
2161static inline __ATTRS_o_ai vector bool long long
2162vec_cmpeq(vector bool long long __a, vector bool long long __b) {
2163 return (vector bool long long)(__a == __b);
2164}
2165
2166static inline __ATTRS_o_ai vector bool long long
2167vec_cmpeq(vector signed long long __a, vector signed long long __b) {
2168 return (vector bool long long)(__a == __b);
2169}
2170
2171static inline __ATTRS_o_ai vector bool long long
2172vec_cmpeq(vector unsigned long long __a, vector unsigned long long __b) {
2173 return (vector bool long long)(__a == __b);
2174}
2175
Ulrich Weigand6af25592017-07-17 17:47:35 +00002176#if __ARCH__ >= 12
2177static inline __ATTRS_o_ai vector bool int
2178vec_cmpeq(vector float __a, vector float __b) {
2179 return (vector bool int)(__a == __b);
2180}
2181#endif
2182
Ulrich Weigandca256432015-07-30 14:10:43 +00002183static inline __ATTRS_o_ai vector bool long long
2184vec_cmpeq(vector double __a, vector double __b) {
2185 return (vector bool long long)(__a == __b);
2186}
2187
2188/*-- vec_cmpge --------------------------------------------------------------*/
2189
2190static inline __ATTRS_o_ai vector bool char
2191vec_cmpge(vector signed char __a, vector signed char __b) {
2192 return (vector bool char)(__a >= __b);
2193}
2194
2195static inline __ATTRS_o_ai vector bool char
2196vec_cmpge(vector unsigned char __a, vector unsigned char __b) {
2197 return (vector bool char)(__a >= __b);
2198}
2199
2200static inline __ATTRS_o_ai vector bool short
2201vec_cmpge(vector signed short __a, vector signed short __b) {
2202 return (vector bool short)(__a >= __b);
2203}
2204
2205static inline __ATTRS_o_ai vector bool short
2206vec_cmpge(vector unsigned short __a, vector unsigned short __b) {
2207 return (vector bool short)(__a >= __b);
2208}
2209
2210static inline __ATTRS_o_ai vector bool int
2211vec_cmpge(vector signed int __a, vector signed int __b) {
2212 return (vector bool int)(__a >= __b);
2213}
2214
2215static inline __ATTRS_o_ai vector bool int
2216vec_cmpge(vector unsigned int __a, vector unsigned int __b) {
2217 return (vector bool int)(__a >= __b);
2218}
2219
2220static inline __ATTRS_o_ai vector bool long long
2221vec_cmpge(vector signed long long __a, vector signed long long __b) {
2222 return (vector bool long long)(__a >= __b);
2223}
2224
2225static inline __ATTRS_o_ai vector bool long long
2226vec_cmpge(vector unsigned long long __a, vector unsigned long long __b) {
2227 return (vector bool long long)(__a >= __b);
2228}
2229
Ulrich Weigand6af25592017-07-17 17:47:35 +00002230#if __ARCH__ >= 12
2231static inline __ATTRS_o_ai vector bool int
2232vec_cmpge(vector float __a, vector float __b) {
2233 return (vector bool int)(__a >= __b);
2234}
2235#endif
2236
Ulrich Weigandca256432015-07-30 14:10:43 +00002237static inline __ATTRS_o_ai vector bool long long
2238vec_cmpge(vector double __a, vector double __b) {
2239 return (vector bool long long)(__a >= __b);
2240}
2241
2242/*-- vec_cmpgt --------------------------------------------------------------*/
2243
2244static inline __ATTRS_o_ai vector bool char
2245vec_cmpgt(vector signed char __a, vector signed char __b) {
2246 return (vector bool char)(__a > __b);
2247}
2248
2249static inline __ATTRS_o_ai vector bool char
2250vec_cmpgt(vector unsigned char __a, vector unsigned char __b) {
2251 return (vector bool char)(__a > __b);
2252}
2253
2254static inline __ATTRS_o_ai vector bool short
2255vec_cmpgt(vector signed short __a, vector signed short __b) {
2256 return (vector bool short)(__a > __b);
2257}
2258
2259static inline __ATTRS_o_ai vector bool short
2260vec_cmpgt(vector unsigned short __a, vector unsigned short __b) {
2261 return (vector bool short)(__a > __b);
2262}
2263
2264static inline __ATTRS_o_ai vector bool int
2265vec_cmpgt(vector signed int __a, vector signed int __b) {
2266 return (vector bool int)(__a > __b);
2267}
2268
2269static inline __ATTRS_o_ai vector bool int
2270vec_cmpgt(vector unsigned int __a, vector unsigned int __b) {
2271 return (vector bool int)(__a > __b);
2272}
2273
2274static inline __ATTRS_o_ai vector bool long long
2275vec_cmpgt(vector signed long long __a, vector signed long long __b) {
2276 return (vector bool long long)(__a > __b);
2277}
2278
2279static inline __ATTRS_o_ai vector bool long long
2280vec_cmpgt(vector unsigned long long __a, vector unsigned long long __b) {
2281 return (vector bool long long)(__a > __b);
2282}
2283
Ulrich Weigand6af25592017-07-17 17:47:35 +00002284#if __ARCH__ >= 12
2285static inline __ATTRS_o_ai vector bool int
2286vec_cmpgt(vector float __a, vector float __b) {
2287 return (vector bool int)(__a > __b);
2288}
2289#endif
2290
Ulrich Weigandca256432015-07-30 14:10:43 +00002291static inline __ATTRS_o_ai vector bool long long
2292vec_cmpgt(vector double __a, vector double __b) {
2293 return (vector bool long long)(__a > __b);
2294}
2295
2296/*-- vec_cmple --------------------------------------------------------------*/
2297
2298static inline __ATTRS_o_ai vector bool char
2299vec_cmple(vector signed char __a, vector signed char __b) {
2300 return (vector bool char)(__a <= __b);
2301}
2302
2303static inline __ATTRS_o_ai vector bool char
2304vec_cmple(vector unsigned char __a, vector unsigned char __b) {
2305 return (vector bool char)(__a <= __b);
2306}
2307
2308static inline __ATTRS_o_ai vector bool short
2309vec_cmple(vector signed short __a, vector signed short __b) {
2310 return (vector bool short)(__a <= __b);
2311}
2312
2313static inline __ATTRS_o_ai vector bool short
2314vec_cmple(vector unsigned short __a, vector unsigned short __b) {
2315 return (vector bool short)(__a <= __b);
2316}
2317
2318static inline __ATTRS_o_ai vector bool int
2319vec_cmple(vector signed int __a, vector signed int __b) {
2320 return (vector bool int)(__a <= __b);
2321}
2322
2323static inline __ATTRS_o_ai vector bool int
2324vec_cmple(vector unsigned int __a, vector unsigned int __b) {
2325 return (vector bool int)(__a <= __b);
2326}
2327
2328static inline __ATTRS_o_ai vector bool long long
2329vec_cmple(vector signed long long __a, vector signed long long __b) {
2330 return (vector bool long long)(__a <= __b);
2331}
2332
2333static inline __ATTRS_o_ai vector bool long long
2334vec_cmple(vector unsigned long long __a, vector unsigned long long __b) {
2335 return (vector bool long long)(__a <= __b);
2336}
2337
Ulrich Weigand6af25592017-07-17 17:47:35 +00002338#if __ARCH__ >= 12
2339static inline __ATTRS_o_ai vector bool int
2340vec_cmple(vector float __a, vector float __b) {
2341 return (vector bool int)(__a <= __b);
2342}
2343#endif
2344
Ulrich Weigandca256432015-07-30 14:10:43 +00002345static inline __ATTRS_o_ai vector bool long long
2346vec_cmple(vector double __a, vector double __b) {
2347 return (vector bool long long)(__a <= __b);
2348}
2349
2350/*-- vec_cmplt --------------------------------------------------------------*/
2351
2352static inline __ATTRS_o_ai vector bool char
2353vec_cmplt(vector signed char __a, vector signed char __b) {
2354 return (vector bool char)(__a < __b);
2355}
2356
2357static inline __ATTRS_o_ai vector bool char
2358vec_cmplt(vector unsigned char __a, vector unsigned char __b) {
2359 return (vector bool char)(__a < __b);
2360}
2361
2362static inline __ATTRS_o_ai vector bool short
2363vec_cmplt(vector signed short __a, vector signed short __b) {
2364 return (vector bool short)(__a < __b);
2365}
2366
2367static inline __ATTRS_o_ai vector bool short
2368vec_cmplt(vector unsigned short __a, vector unsigned short __b) {
2369 return (vector bool short)(__a < __b);
2370}
2371
2372static inline __ATTRS_o_ai vector bool int
2373vec_cmplt(vector signed int __a, vector signed int __b) {
2374 return (vector bool int)(__a < __b);
2375}
2376
2377static inline __ATTRS_o_ai vector bool int
2378vec_cmplt(vector unsigned int __a, vector unsigned int __b) {
2379 return (vector bool int)(__a < __b);
2380}
2381
2382static inline __ATTRS_o_ai vector bool long long
2383vec_cmplt(vector signed long long __a, vector signed long long __b) {
2384 return (vector bool long long)(__a < __b);
2385}
2386
2387static inline __ATTRS_o_ai vector bool long long
2388vec_cmplt(vector unsigned long long __a, vector unsigned long long __b) {
2389 return (vector bool long long)(__a < __b);
2390}
2391
Ulrich Weigand6af25592017-07-17 17:47:35 +00002392#if __ARCH__ >= 12
2393static inline __ATTRS_o_ai vector bool int
2394vec_cmplt(vector float __a, vector float __b) {
2395 return (vector bool int)(__a < __b);
2396}
2397#endif
2398
Ulrich Weigandca256432015-07-30 14:10:43 +00002399static inline __ATTRS_o_ai vector bool long long
2400vec_cmplt(vector double __a, vector double __b) {
2401 return (vector bool long long)(__a < __b);
2402}
2403
2404/*-- vec_all_eq -------------------------------------------------------------*/
2405
2406static inline __ATTRS_o_ai int
2407vec_all_eq(vector signed char __a, vector signed char __b) {
2408 int __cc;
2409 __builtin_s390_vceqbs(__a, __b, &__cc);
2410 return __cc == 0;
2411}
2412
Ulrich Weigand6af25592017-07-17 17:47:35 +00002413// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002414static inline __ATTRS_o_ai int
2415vec_all_eq(vector signed char __a, vector bool char __b) {
2416 int __cc;
2417 __builtin_s390_vceqbs(__a, (vector signed char)__b, &__cc);
2418 return __cc == 0;
2419}
2420
Ulrich Weigand6af25592017-07-17 17:47:35 +00002421// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002422static inline __ATTRS_o_ai int
2423vec_all_eq(vector bool char __a, vector signed char __b) {
2424 int __cc;
2425 __builtin_s390_vceqbs((vector signed char)__a, __b, &__cc);
2426 return __cc == 0;
2427}
2428
2429static inline __ATTRS_o_ai int
2430vec_all_eq(vector unsigned char __a, vector unsigned char __b) {
2431 int __cc;
2432 __builtin_s390_vceqbs((vector signed char)__a,
2433 (vector signed char)__b, &__cc);
2434 return __cc == 0;
2435}
2436
Ulrich Weigand6af25592017-07-17 17:47:35 +00002437// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002438static inline __ATTRS_o_ai int
2439vec_all_eq(vector unsigned char __a, vector bool char __b) {
2440 int __cc;
2441 __builtin_s390_vceqbs((vector signed char)__a,
2442 (vector signed char)__b, &__cc);
2443 return __cc == 0;
2444}
2445
Ulrich Weigand6af25592017-07-17 17:47:35 +00002446// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002447static inline __ATTRS_o_ai int
2448vec_all_eq(vector bool char __a, vector unsigned char __b) {
2449 int __cc;
2450 __builtin_s390_vceqbs((vector signed char)__a,
2451 (vector signed char)__b, &__cc);
2452 return __cc == 0;
2453}
2454
2455static inline __ATTRS_o_ai int
2456vec_all_eq(vector bool char __a, vector bool char __b) {
2457 int __cc;
2458 __builtin_s390_vceqbs((vector signed char)__a,
2459 (vector signed char)__b, &__cc);
2460 return __cc == 0;
2461}
2462
2463static inline __ATTRS_o_ai int
2464vec_all_eq(vector signed short __a, vector signed short __b) {
2465 int __cc;
2466 __builtin_s390_vceqhs(__a, __b, &__cc);
2467 return __cc == 0;
2468}
2469
Ulrich Weigand6af25592017-07-17 17:47:35 +00002470// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002471static inline __ATTRS_o_ai int
2472vec_all_eq(vector signed short __a, vector bool short __b) {
2473 int __cc;
2474 __builtin_s390_vceqhs(__a, (vector signed short)__b, &__cc);
2475 return __cc == 0;
2476}
2477
Ulrich Weigand6af25592017-07-17 17:47:35 +00002478// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002479static inline __ATTRS_o_ai int
2480vec_all_eq(vector bool short __a, vector signed short __b) {
2481 int __cc;
2482 __builtin_s390_vceqhs((vector signed short)__a, __b, &__cc);
2483 return __cc == 0;
2484}
2485
2486static inline __ATTRS_o_ai int
2487vec_all_eq(vector unsigned short __a, vector unsigned short __b) {
2488 int __cc;
2489 __builtin_s390_vceqhs((vector signed short)__a,
2490 (vector signed short)__b, &__cc);
2491 return __cc == 0;
2492}
2493
Ulrich Weigand6af25592017-07-17 17:47:35 +00002494// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002495static inline __ATTRS_o_ai int
2496vec_all_eq(vector unsigned short __a, vector bool short __b) {
2497 int __cc;
2498 __builtin_s390_vceqhs((vector signed short)__a,
2499 (vector signed short)__b, &__cc);
2500 return __cc == 0;
2501}
2502
Ulrich Weigand6af25592017-07-17 17:47:35 +00002503// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002504static inline __ATTRS_o_ai int
2505vec_all_eq(vector bool short __a, vector unsigned short __b) {
2506 int __cc;
2507 __builtin_s390_vceqhs((vector signed short)__a,
2508 (vector signed short)__b, &__cc);
2509 return __cc == 0;
2510}
2511
2512static inline __ATTRS_o_ai int
2513vec_all_eq(vector bool short __a, vector bool short __b) {
2514 int __cc;
2515 __builtin_s390_vceqhs((vector signed short)__a,
2516 (vector signed short)__b, &__cc);
2517 return __cc == 0;
2518}
2519
2520static inline __ATTRS_o_ai int
2521vec_all_eq(vector signed int __a, vector signed int __b) {
2522 int __cc;
2523 __builtin_s390_vceqfs(__a, __b, &__cc);
2524 return __cc == 0;
2525}
2526
Ulrich Weigand6af25592017-07-17 17:47:35 +00002527// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002528static inline __ATTRS_o_ai int
2529vec_all_eq(vector signed int __a, vector bool int __b) {
2530 int __cc;
2531 __builtin_s390_vceqfs(__a, (vector signed int)__b, &__cc);
2532 return __cc == 0;
2533}
2534
Ulrich Weigand6af25592017-07-17 17:47:35 +00002535// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002536static inline __ATTRS_o_ai int
2537vec_all_eq(vector bool int __a, vector signed int __b) {
2538 int __cc;
2539 __builtin_s390_vceqfs((vector signed int)__a, __b, &__cc);
2540 return __cc == 0;
2541}
2542
2543static inline __ATTRS_o_ai int
2544vec_all_eq(vector unsigned int __a, vector unsigned int __b) {
2545 int __cc;
2546 __builtin_s390_vceqfs((vector signed int)__a,
2547 (vector signed int)__b, &__cc);
2548 return __cc == 0;
2549}
2550
Ulrich Weigand6af25592017-07-17 17:47:35 +00002551// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002552static inline __ATTRS_o_ai int
2553vec_all_eq(vector unsigned int __a, vector bool int __b) {
2554 int __cc;
2555 __builtin_s390_vceqfs((vector signed int)__a,
2556 (vector signed int)__b, &__cc);
2557 return __cc == 0;
2558}
2559
Ulrich Weigand6af25592017-07-17 17:47:35 +00002560// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002561static inline __ATTRS_o_ai int
2562vec_all_eq(vector bool int __a, vector unsigned int __b) {
2563 int __cc;
2564 __builtin_s390_vceqfs((vector signed int)__a,
2565 (vector signed int)__b, &__cc);
2566 return __cc == 0;
2567}
2568
2569static inline __ATTRS_o_ai int
2570vec_all_eq(vector bool int __a, vector bool int __b) {
2571 int __cc;
2572 __builtin_s390_vceqfs((vector signed int)__a,
2573 (vector signed int)__b, &__cc);
2574 return __cc == 0;
2575}
2576
2577static inline __ATTRS_o_ai int
2578vec_all_eq(vector signed long long __a, vector signed long long __b) {
2579 int __cc;
2580 __builtin_s390_vceqgs(__a, __b, &__cc);
2581 return __cc == 0;
2582}
2583
Ulrich Weigand6af25592017-07-17 17:47:35 +00002584// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002585static inline __ATTRS_o_ai int
2586vec_all_eq(vector signed long long __a, vector bool long long __b) {
2587 int __cc;
2588 __builtin_s390_vceqgs(__a, (vector signed long long)__b, &__cc);
2589 return __cc == 0;
2590}
2591
Ulrich Weigand6af25592017-07-17 17:47:35 +00002592// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002593static inline __ATTRS_o_ai int
2594vec_all_eq(vector bool long long __a, vector signed long long __b) {
2595 int __cc;
2596 __builtin_s390_vceqgs((vector signed long long)__a, __b, &__cc);
2597 return __cc == 0;
2598}
2599
2600static inline __ATTRS_o_ai int
2601vec_all_eq(vector unsigned long long __a, vector unsigned long long __b) {
2602 int __cc;
2603 __builtin_s390_vceqgs((vector signed long long)__a,
2604 (vector signed long long)__b, &__cc);
2605 return __cc == 0;
2606}
2607
Ulrich Weigand6af25592017-07-17 17:47:35 +00002608// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002609static inline __ATTRS_o_ai int
2610vec_all_eq(vector unsigned long long __a, vector bool long long __b) {
2611 int __cc;
2612 __builtin_s390_vceqgs((vector signed long long)__a,
2613 (vector signed long long)__b, &__cc);
2614 return __cc == 0;
2615}
2616
Ulrich Weigand6af25592017-07-17 17:47:35 +00002617// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002618static inline __ATTRS_o_ai int
2619vec_all_eq(vector bool long long __a, vector unsigned long long __b) {
2620 int __cc;
2621 __builtin_s390_vceqgs((vector signed long long)__a,
2622 (vector signed long long)__b, &__cc);
2623 return __cc == 0;
2624}
2625
2626static inline __ATTRS_o_ai int
2627vec_all_eq(vector bool long long __a, vector bool long long __b) {
2628 int __cc;
2629 __builtin_s390_vceqgs((vector signed long long)__a,
2630 (vector signed long long)__b, &__cc);
2631 return __cc == 0;
2632}
2633
Ulrich Weigand6af25592017-07-17 17:47:35 +00002634#if __ARCH__ >= 12
2635static inline __ATTRS_o_ai int
2636vec_all_eq(vector float __a, vector float __b) {
2637 int __cc;
2638 __builtin_s390_vfcesbs(__a, __b, &__cc);
2639 return __cc == 0;
2640}
2641#endif
2642
Ulrich Weigandca256432015-07-30 14:10:43 +00002643static inline __ATTRS_o_ai int
2644vec_all_eq(vector double __a, vector double __b) {
2645 int __cc;
2646 __builtin_s390_vfcedbs(__a, __b, &__cc);
2647 return __cc == 0;
2648}
2649
2650/*-- vec_all_ne -------------------------------------------------------------*/
2651
2652static inline __ATTRS_o_ai int
2653vec_all_ne(vector signed char __a, vector signed char __b) {
2654 int __cc;
2655 __builtin_s390_vceqbs(__a, __b, &__cc);
2656 return __cc == 3;
2657}
2658
Ulrich Weigand6af25592017-07-17 17:47:35 +00002659// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002660static inline __ATTRS_o_ai int
2661vec_all_ne(vector signed char __a, vector bool char __b) {
2662 int __cc;
2663 __builtin_s390_vceqbs(__a, (vector signed char)__b, &__cc);
2664 return __cc == 3;
2665}
2666
Ulrich Weigand6af25592017-07-17 17:47:35 +00002667// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002668static inline __ATTRS_o_ai int
2669vec_all_ne(vector bool char __a, vector signed char __b) {
2670 int __cc;
2671 __builtin_s390_vceqbs((vector signed char)__a, __b, &__cc);
2672 return __cc == 3;
2673}
2674
2675static inline __ATTRS_o_ai int
2676vec_all_ne(vector unsigned char __a, vector unsigned char __b) {
2677 int __cc;
2678 __builtin_s390_vceqbs((vector signed char)__a,
2679 (vector signed char)__b, &__cc);
2680 return __cc == 3;
2681}
2682
Ulrich Weigand6af25592017-07-17 17:47:35 +00002683// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002684static inline __ATTRS_o_ai int
2685vec_all_ne(vector unsigned char __a, vector bool char __b) {
2686 int __cc;
2687 __builtin_s390_vceqbs((vector signed char)__a,
2688 (vector signed char)__b, &__cc);
2689 return __cc == 3;
2690}
2691
Ulrich Weigand6af25592017-07-17 17:47:35 +00002692// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002693static inline __ATTRS_o_ai int
2694vec_all_ne(vector bool char __a, vector unsigned char __b) {
2695 int __cc;
2696 __builtin_s390_vceqbs((vector signed char)__a,
2697 (vector signed char)__b, &__cc);
2698 return __cc == 3;
2699}
2700
2701static inline __ATTRS_o_ai int
2702vec_all_ne(vector bool char __a, vector bool char __b) {
2703 int __cc;
2704 __builtin_s390_vceqbs((vector signed char)__a,
2705 (vector signed char)__b, &__cc);
2706 return __cc == 3;
2707}
2708
2709static inline __ATTRS_o_ai int
2710vec_all_ne(vector signed short __a, vector signed short __b) {
2711 int __cc;
2712 __builtin_s390_vceqhs(__a, __b, &__cc);
2713 return __cc == 3;
2714}
2715
Ulrich Weigand6af25592017-07-17 17:47:35 +00002716// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002717static inline __ATTRS_o_ai int
2718vec_all_ne(vector signed short __a, vector bool short __b) {
2719 int __cc;
2720 __builtin_s390_vceqhs(__a, (vector signed short)__b, &__cc);
2721 return __cc == 3;
2722}
2723
Ulrich Weigand6af25592017-07-17 17:47:35 +00002724// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002725static inline __ATTRS_o_ai int
2726vec_all_ne(vector bool short __a, vector signed short __b) {
2727 int __cc;
2728 __builtin_s390_vceqhs((vector signed short)__a, __b, &__cc);
2729 return __cc == 3;
2730}
2731
2732static inline __ATTRS_o_ai int
2733vec_all_ne(vector unsigned short __a, vector unsigned short __b) {
2734 int __cc;
2735 __builtin_s390_vceqhs((vector signed short)__a,
2736 (vector signed short)__b, &__cc);
2737 return __cc == 3;
2738}
2739
Ulrich Weigand6af25592017-07-17 17:47:35 +00002740// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002741static inline __ATTRS_o_ai int
2742vec_all_ne(vector unsigned short __a, vector bool short __b) {
2743 int __cc;
2744 __builtin_s390_vceqhs((vector signed short)__a,
2745 (vector signed short)__b, &__cc);
2746 return __cc == 3;
2747}
2748
Ulrich Weigand6af25592017-07-17 17:47:35 +00002749// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002750static inline __ATTRS_o_ai int
2751vec_all_ne(vector bool short __a, vector unsigned short __b) {
2752 int __cc;
2753 __builtin_s390_vceqhs((vector signed short)__a,
2754 (vector signed short)__b, &__cc);
2755 return __cc == 3;
2756}
2757
2758static inline __ATTRS_o_ai int
2759vec_all_ne(vector bool short __a, vector bool short __b) {
2760 int __cc;
2761 __builtin_s390_vceqhs((vector signed short)__a,
2762 (vector signed short)__b, &__cc);
2763 return __cc == 3;
2764}
2765
2766static inline __ATTRS_o_ai int
2767vec_all_ne(vector signed int __a, vector signed int __b) {
2768 int __cc;
2769 __builtin_s390_vceqfs(__a, __b, &__cc);
2770 return __cc == 3;
2771}
2772
Ulrich Weigand6af25592017-07-17 17:47:35 +00002773// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002774static inline __ATTRS_o_ai int
2775vec_all_ne(vector signed int __a, vector bool int __b) {
2776 int __cc;
2777 __builtin_s390_vceqfs(__a, (vector signed int)__b, &__cc);
2778 return __cc == 3;
2779}
2780
Ulrich Weigand6af25592017-07-17 17:47:35 +00002781// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002782static inline __ATTRS_o_ai int
2783vec_all_ne(vector bool int __a, vector signed int __b) {
2784 int __cc;
2785 __builtin_s390_vceqfs((vector signed int)__a, __b, &__cc);
2786 return __cc == 3;
2787}
2788
2789static inline __ATTRS_o_ai int
2790vec_all_ne(vector unsigned int __a, vector unsigned int __b) {
2791 int __cc;
2792 __builtin_s390_vceqfs((vector signed int)__a,
2793 (vector signed int)__b, &__cc);
2794 return __cc == 3;
2795}
2796
Ulrich Weigand6af25592017-07-17 17:47:35 +00002797// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002798static inline __ATTRS_o_ai int
2799vec_all_ne(vector unsigned int __a, vector bool int __b) {
2800 int __cc;
2801 __builtin_s390_vceqfs((vector signed int)__a,
2802 (vector signed int)__b, &__cc);
2803 return __cc == 3;
2804}
2805
Ulrich Weigand6af25592017-07-17 17:47:35 +00002806// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002807static inline __ATTRS_o_ai int
2808vec_all_ne(vector bool int __a, vector unsigned int __b) {
2809 int __cc;
2810 __builtin_s390_vceqfs((vector signed int)__a,
2811 (vector signed int)__b, &__cc);
2812 return __cc == 3;
2813}
2814
2815static inline __ATTRS_o_ai int
2816vec_all_ne(vector bool int __a, vector bool int __b) {
2817 int __cc;
2818 __builtin_s390_vceqfs((vector signed int)__a,
2819 (vector signed int)__b, &__cc);
2820 return __cc == 3;
2821}
2822
2823static inline __ATTRS_o_ai int
2824vec_all_ne(vector signed long long __a, vector signed long long __b) {
2825 int __cc;
2826 __builtin_s390_vceqgs(__a, __b, &__cc);
2827 return __cc == 3;
2828}
2829
Ulrich Weigand6af25592017-07-17 17:47:35 +00002830// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002831static inline __ATTRS_o_ai int
2832vec_all_ne(vector signed long long __a, vector bool long long __b) {
2833 int __cc;
2834 __builtin_s390_vceqgs(__a, (vector signed long long)__b, &__cc);
2835 return __cc == 3;
2836}
2837
Ulrich Weigand6af25592017-07-17 17:47:35 +00002838// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002839static inline __ATTRS_o_ai int
2840vec_all_ne(vector bool long long __a, vector signed long long __b) {
2841 int __cc;
2842 __builtin_s390_vceqgs((vector signed long long)__a, __b, &__cc);
2843 return __cc == 3;
2844}
2845
2846static inline __ATTRS_o_ai int
2847vec_all_ne(vector unsigned long long __a, vector unsigned long long __b) {
2848 int __cc;
2849 __builtin_s390_vceqgs((vector signed long long)__a,
2850 (vector signed long long)__b, &__cc);
2851 return __cc == 3;
2852}
2853
Ulrich Weigand6af25592017-07-17 17:47:35 +00002854// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002855static inline __ATTRS_o_ai int
2856vec_all_ne(vector unsigned long long __a, vector bool long long __b) {
2857 int __cc;
2858 __builtin_s390_vceqgs((vector signed long long)__a,
2859 (vector signed long long)__b, &__cc);
2860 return __cc == 3;
2861}
2862
Ulrich Weigand6af25592017-07-17 17:47:35 +00002863// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002864static inline __ATTRS_o_ai int
2865vec_all_ne(vector bool long long __a, vector unsigned long long __b) {
2866 int __cc;
2867 __builtin_s390_vceqgs((vector signed long long)__a,
2868 (vector signed long long)__b, &__cc);
2869 return __cc == 3;
2870}
2871
2872static inline __ATTRS_o_ai int
2873vec_all_ne(vector bool long long __a, vector bool long long __b) {
2874 int __cc;
2875 __builtin_s390_vceqgs((vector signed long long)__a,
2876 (vector signed long long)__b, &__cc);
2877 return __cc == 3;
2878}
2879
Ulrich Weigand6af25592017-07-17 17:47:35 +00002880#if __ARCH__ >= 12
2881static inline __ATTRS_o_ai int
2882vec_all_ne(vector float __a, vector float __b) {
2883 int __cc;
2884 __builtin_s390_vfcesbs(__a, __b, &__cc);
2885 return __cc == 3;
2886}
2887#endif
2888
Ulrich Weigandca256432015-07-30 14:10:43 +00002889static inline __ATTRS_o_ai int
2890vec_all_ne(vector double __a, vector double __b) {
2891 int __cc;
2892 __builtin_s390_vfcedbs(__a, __b, &__cc);
2893 return __cc == 3;
2894}
2895
2896/*-- vec_all_ge -------------------------------------------------------------*/
2897
2898static inline __ATTRS_o_ai int
2899vec_all_ge(vector signed char __a, vector signed char __b) {
2900 int __cc;
2901 __builtin_s390_vchbs(__b, __a, &__cc);
2902 return __cc == 3;
2903}
2904
Ulrich Weigand6af25592017-07-17 17:47:35 +00002905// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002906static inline __ATTRS_o_ai int
2907vec_all_ge(vector signed char __a, vector bool char __b) {
2908 int __cc;
2909 __builtin_s390_vchbs((vector signed char)__b, __a, &__cc);
2910 return __cc == 3;
2911}
2912
Ulrich Weigand6af25592017-07-17 17:47:35 +00002913// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002914static inline __ATTRS_o_ai int
2915vec_all_ge(vector bool char __a, vector signed char __b) {
2916 int __cc;
2917 __builtin_s390_vchbs(__b, (vector signed char)__a, &__cc);
2918 return __cc == 3;
2919}
2920
2921static inline __ATTRS_o_ai int
2922vec_all_ge(vector unsigned char __a, vector unsigned char __b) {
2923 int __cc;
2924 __builtin_s390_vchlbs(__b, __a, &__cc);
2925 return __cc == 3;
2926}
2927
Ulrich Weigand6af25592017-07-17 17:47:35 +00002928// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002929static inline __ATTRS_o_ai int
2930vec_all_ge(vector unsigned char __a, vector bool char __b) {
2931 int __cc;
2932 __builtin_s390_vchlbs((vector unsigned char)__b, __a, &__cc);
2933 return __cc == 3;
2934}
2935
Ulrich Weigand6af25592017-07-17 17:47:35 +00002936// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002937static inline __ATTRS_o_ai int
2938vec_all_ge(vector bool char __a, vector unsigned char __b) {
2939 int __cc;
2940 __builtin_s390_vchlbs(__b, (vector unsigned char)__a, &__cc);
2941 return __cc == 3;
2942}
2943
Ulrich Weigand6af25592017-07-17 17:47:35 +00002944// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002945static inline __ATTRS_o_ai int
2946vec_all_ge(vector bool char __a, vector bool char __b) {
2947 int __cc;
2948 __builtin_s390_vchlbs((vector unsigned char)__b,
2949 (vector unsigned char)__a, &__cc);
2950 return __cc == 3;
2951}
2952
2953static inline __ATTRS_o_ai int
2954vec_all_ge(vector signed short __a, vector signed short __b) {
2955 int __cc;
2956 __builtin_s390_vchhs(__b, __a, &__cc);
2957 return __cc == 3;
2958}
2959
Ulrich Weigand6af25592017-07-17 17:47:35 +00002960// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002961static inline __ATTRS_o_ai int
2962vec_all_ge(vector signed short __a, vector bool short __b) {
2963 int __cc;
2964 __builtin_s390_vchhs((vector signed short)__b, __a, &__cc);
2965 return __cc == 3;
2966}
2967
Ulrich Weigand6af25592017-07-17 17:47:35 +00002968// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002969static inline __ATTRS_o_ai int
2970vec_all_ge(vector bool short __a, vector signed short __b) {
2971 int __cc;
2972 __builtin_s390_vchhs(__b, (vector signed short)__a, &__cc);
2973 return __cc == 3;
2974}
2975
2976static inline __ATTRS_o_ai int
2977vec_all_ge(vector unsigned short __a, vector unsigned short __b) {
2978 int __cc;
2979 __builtin_s390_vchlhs(__b, __a, &__cc);
2980 return __cc == 3;
2981}
2982
Ulrich Weigand6af25592017-07-17 17:47:35 +00002983// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002984static inline __ATTRS_o_ai int
2985vec_all_ge(vector unsigned short __a, vector bool short __b) {
2986 int __cc;
2987 __builtin_s390_vchlhs((vector unsigned short)__b, __a, &__cc);
2988 return __cc == 3;
2989}
2990
Ulrich Weigand6af25592017-07-17 17:47:35 +00002991// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00002992static inline __ATTRS_o_ai int
2993vec_all_ge(vector bool short __a, vector unsigned short __b) {
2994 int __cc;
2995 __builtin_s390_vchlhs(__b, (vector unsigned short)__a, &__cc);
2996 return __cc == 3;
2997}
2998
Ulrich Weigand6af25592017-07-17 17:47:35 +00002999// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003000static inline __ATTRS_o_ai int
3001vec_all_ge(vector bool short __a, vector bool short __b) {
3002 int __cc;
3003 __builtin_s390_vchlhs((vector unsigned short)__b,
3004 (vector unsigned short)__a, &__cc);
3005 return __cc == 3;
3006}
3007
3008static inline __ATTRS_o_ai int
3009vec_all_ge(vector signed int __a, vector signed int __b) {
3010 int __cc;
3011 __builtin_s390_vchfs(__b, __a, &__cc);
3012 return __cc == 3;
3013}
3014
Ulrich Weigand6af25592017-07-17 17:47:35 +00003015// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003016static inline __ATTRS_o_ai int
3017vec_all_ge(vector signed int __a, vector bool int __b) {
3018 int __cc;
3019 __builtin_s390_vchfs((vector signed int)__b, __a, &__cc);
3020 return __cc == 3;
3021}
3022
Ulrich Weigand6af25592017-07-17 17:47:35 +00003023// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003024static inline __ATTRS_o_ai int
3025vec_all_ge(vector bool int __a, vector signed int __b) {
3026 int __cc;
3027 __builtin_s390_vchfs(__b, (vector signed int)__a, &__cc);
3028 return __cc == 3;
3029}
3030
3031static inline __ATTRS_o_ai int
3032vec_all_ge(vector unsigned int __a, vector unsigned int __b) {
3033 int __cc;
3034 __builtin_s390_vchlfs(__b, __a, &__cc);
3035 return __cc == 3;
3036}
3037
Ulrich Weigand6af25592017-07-17 17:47:35 +00003038// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003039static inline __ATTRS_o_ai int
3040vec_all_ge(vector unsigned int __a, vector bool int __b) {
3041 int __cc;
3042 __builtin_s390_vchlfs((vector unsigned int)__b, __a, &__cc);
3043 return __cc == 3;
3044}
3045
Ulrich Weigand6af25592017-07-17 17:47:35 +00003046// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003047static inline __ATTRS_o_ai int
3048vec_all_ge(vector bool int __a, vector unsigned int __b) {
3049 int __cc;
3050 __builtin_s390_vchlfs(__b, (vector unsigned int)__a, &__cc);
3051 return __cc == 3;
3052}
3053
Ulrich Weigand6af25592017-07-17 17:47:35 +00003054// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003055static inline __ATTRS_o_ai int
3056vec_all_ge(vector bool int __a, vector bool int __b) {
3057 int __cc;
3058 __builtin_s390_vchlfs((vector unsigned int)__b,
3059 (vector unsigned int)__a, &__cc);
3060 return __cc == 3;
3061}
3062
3063static inline __ATTRS_o_ai int
3064vec_all_ge(vector signed long long __a, vector signed long long __b) {
3065 int __cc;
3066 __builtin_s390_vchgs(__b, __a, &__cc);
3067 return __cc == 3;
3068}
3069
Ulrich Weigand6af25592017-07-17 17:47:35 +00003070// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003071static inline __ATTRS_o_ai int
3072vec_all_ge(vector signed long long __a, vector bool long long __b) {
3073 int __cc;
3074 __builtin_s390_vchgs((vector signed long long)__b, __a, &__cc);
3075 return __cc == 3;
3076}
3077
Ulrich Weigand6af25592017-07-17 17:47:35 +00003078// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003079static inline __ATTRS_o_ai int
3080vec_all_ge(vector bool long long __a, vector signed long long __b) {
3081 int __cc;
3082 __builtin_s390_vchgs(__b, (vector signed long long)__a, &__cc);
3083 return __cc == 3;
3084}
3085
3086static inline __ATTRS_o_ai int
3087vec_all_ge(vector unsigned long long __a, vector unsigned long long __b) {
3088 int __cc;
3089 __builtin_s390_vchlgs(__b, __a, &__cc);
3090 return __cc == 3;
3091}
3092
Ulrich Weigand6af25592017-07-17 17:47:35 +00003093// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003094static inline __ATTRS_o_ai int
3095vec_all_ge(vector unsigned long long __a, vector bool long long __b) {
3096 int __cc;
3097 __builtin_s390_vchlgs((vector unsigned long long)__b, __a, &__cc);
3098 return __cc == 3;
3099}
3100
Ulrich Weigand6af25592017-07-17 17:47:35 +00003101// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003102static inline __ATTRS_o_ai int
3103vec_all_ge(vector bool long long __a, vector unsigned long long __b) {
3104 int __cc;
3105 __builtin_s390_vchlgs(__b, (vector unsigned long long)__a, &__cc);
3106 return __cc == 3;
3107}
3108
Ulrich Weigand6af25592017-07-17 17:47:35 +00003109// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003110static inline __ATTRS_o_ai int
3111vec_all_ge(vector bool long long __a, vector bool long long __b) {
3112 int __cc;
3113 __builtin_s390_vchlgs((vector unsigned long long)__b,
3114 (vector unsigned long long)__a, &__cc);
3115 return __cc == 3;
3116}
3117
Ulrich Weigand6af25592017-07-17 17:47:35 +00003118#if __ARCH__ >= 12
3119static inline __ATTRS_o_ai int
3120vec_all_ge(vector float __a, vector float __b) {
3121 int __cc;
3122 __builtin_s390_vfchesbs(__a, __b, &__cc);
3123 return __cc == 0;
3124}
3125#endif
3126
Ulrich Weigandca256432015-07-30 14:10:43 +00003127static inline __ATTRS_o_ai int
3128vec_all_ge(vector double __a, vector double __b) {
3129 int __cc;
3130 __builtin_s390_vfchedbs(__a, __b, &__cc);
3131 return __cc == 0;
3132}
3133
3134/*-- vec_all_gt -------------------------------------------------------------*/
3135
3136static inline __ATTRS_o_ai int
3137vec_all_gt(vector signed char __a, vector signed char __b) {
3138 int __cc;
3139 __builtin_s390_vchbs(__a, __b, &__cc);
3140 return __cc == 0;
3141}
3142
Ulrich Weigand6af25592017-07-17 17:47:35 +00003143// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003144static inline __ATTRS_o_ai int
3145vec_all_gt(vector signed char __a, vector bool char __b) {
3146 int __cc;
3147 __builtin_s390_vchbs(__a, (vector signed char)__b, &__cc);
3148 return __cc == 0;
3149}
3150
Ulrich Weigand6af25592017-07-17 17:47:35 +00003151// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003152static inline __ATTRS_o_ai int
3153vec_all_gt(vector bool char __a, vector signed char __b) {
3154 int __cc;
3155 __builtin_s390_vchbs((vector signed char)__a, __b, &__cc);
3156 return __cc == 0;
3157}
3158
3159static inline __ATTRS_o_ai int
3160vec_all_gt(vector unsigned char __a, vector unsigned char __b) {
3161 int __cc;
3162 __builtin_s390_vchlbs(__a, __b, &__cc);
3163 return __cc == 0;
3164}
3165
Ulrich Weigand6af25592017-07-17 17:47:35 +00003166// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003167static inline __ATTRS_o_ai int
3168vec_all_gt(vector unsigned char __a, vector bool char __b) {
3169 int __cc;
3170 __builtin_s390_vchlbs(__a, (vector unsigned char)__b, &__cc);
3171 return __cc == 0;
3172}
3173
Ulrich Weigand6af25592017-07-17 17:47:35 +00003174// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003175static inline __ATTRS_o_ai int
3176vec_all_gt(vector bool char __a, vector unsigned char __b) {
3177 int __cc;
3178 __builtin_s390_vchlbs((vector unsigned char)__a, __b, &__cc);
3179 return __cc == 0;
3180}
3181
Ulrich Weigand6af25592017-07-17 17:47:35 +00003182// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003183static inline __ATTRS_o_ai int
3184vec_all_gt(vector bool char __a, vector bool char __b) {
3185 int __cc;
3186 __builtin_s390_vchlbs((vector unsigned char)__a,
3187 (vector unsigned char)__b, &__cc);
3188 return __cc == 0;
3189}
3190
3191static inline __ATTRS_o_ai int
3192vec_all_gt(vector signed short __a, vector signed short __b) {
3193 int __cc;
3194 __builtin_s390_vchhs(__a, __b, &__cc);
3195 return __cc == 0;
3196}
3197
Ulrich Weigand6af25592017-07-17 17:47:35 +00003198// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003199static inline __ATTRS_o_ai int
3200vec_all_gt(vector signed short __a, vector bool short __b) {
3201 int __cc;
3202 __builtin_s390_vchhs(__a, (vector signed short)__b, &__cc);
3203 return __cc == 0;
3204}
3205
Ulrich Weigand6af25592017-07-17 17:47:35 +00003206// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003207static inline __ATTRS_o_ai int
3208vec_all_gt(vector bool short __a, vector signed short __b) {
3209 int __cc;
3210 __builtin_s390_vchhs((vector signed short)__a, __b, &__cc);
3211 return __cc == 0;
3212}
3213
3214static inline __ATTRS_o_ai int
3215vec_all_gt(vector unsigned short __a, vector unsigned short __b) {
3216 int __cc;
3217 __builtin_s390_vchlhs(__a, __b, &__cc);
3218 return __cc == 0;
3219}
3220
Ulrich Weigand6af25592017-07-17 17:47:35 +00003221// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003222static inline __ATTRS_o_ai int
3223vec_all_gt(vector unsigned short __a, vector bool short __b) {
3224 int __cc;
3225 __builtin_s390_vchlhs(__a, (vector unsigned short)__b, &__cc);
3226 return __cc == 0;
3227}
3228
Ulrich Weigand6af25592017-07-17 17:47:35 +00003229// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003230static inline __ATTRS_o_ai int
3231vec_all_gt(vector bool short __a, vector unsigned short __b) {
3232 int __cc;
3233 __builtin_s390_vchlhs((vector unsigned short)__a, __b, &__cc);
3234 return __cc == 0;
3235}
3236
Ulrich Weigand6af25592017-07-17 17:47:35 +00003237// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003238static inline __ATTRS_o_ai int
3239vec_all_gt(vector bool short __a, vector bool short __b) {
3240 int __cc;
3241 __builtin_s390_vchlhs((vector unsigned short)__a,
3242 (vector unsigned short)__b, &__cc);
3243 return __cc == 0;
3244}
3245
3246static inline __ATTRS_o_ai int
3247vec_all_gt(vector signed int __a, vector signed int __b) {
3248 int __cc;
3249 __builtin_s390_vchfs(__a, __b, &__cc);
3250 return __cc == 0;
3251}
3252
Ulrich Weigand6af25592017-07-17 17:47:35 +00003253// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003254static inline __ATTRS_o_ai int
3255vec_all_gt(vector signed int __a, vector bool int __b) {
3256 int __cc;
3257 __builtin_s390_vchfs(__a, (vector signed int)__b, &__cc);
3258 return __cc == 0;
3259}
3260
Ulrich Weigand6af25592017-07-17 17:47:35 +00003261// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003262static inline __ATTRS_o_ai int
3263vec_all_gt(vector bool int __a, vector signed int __b) {
3264 int __cc;
3265 __builtin_s390_vchfs((vector signed int)__a, __b, &__cc);
3266 return __cc == 0;
3267}
3268
3269static inline __ATTRS_o_ai int
3270vec_all_gt(vector unsigned int __a, vector unsigned int __b) {
3271 int __cc;
3272 __builtin_s390_vchlfs(__a, __b, &__cc);
3273 return __cc == 0;
3274}
3275
Ulrich Weigand6af25592017-07-17 17:47:35 +00003276// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003277static inline __ATTRS_o_ai int
3278vec_all_gt(vector unsigned int __a, vector bool int __b) {
3279 int __cc;
3280 __builtin_s390_vchlfs(__a, (vector unsigned int)__b, &__cc);
3281 return __cc == 0;
3282}
3283
Ulrich Weigand6af25592017-07-17 17:47:35 +00003284// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003285static inline __ATTRS_o_ai int
3286vec_all_gt(vector bool int __a, vector unsigned int __b) {
3287 int __cc;
3288 __builtin_s390_vchlfs((vector unsigned int)__a, __b, &__cc);
3289 return __cc == 0;
3290}
3291
Ulrich Weigand6af25592017-07-17 17:47:35 +00003292// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003293static inline __ATTRS_o_ai int
3294vec_all_gt(vector bool int __a, vector bool int __b) {
3295 int __cc;
3296 __builtin_s390_vchlfs((vector unsigned int)__a,
3297 (vector unsigned int)__b, &__cc);
3298 return __cc == 0;
3299}
3300
3301static inline __ATTRS_o_ai int
3302vec_all_gt(vector signed long long __a, vector signed long long __b) {
3303 int __cc;
3304 __builtin_s390_vchgs(__a, __b, &__cc);
3305 return __cc == 0;
3306}
3307
Ulrich Weigand6af25592017-07-17 17:47:35 +00003308// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003309static inline __ATTRS_o_ai int
3310vec_all_gt(vector signed long long __a, vector bool long long __b) {
3311 int __cc;
3312 __builtin_s390_vchgs(__a, (vector signed long long)__b, &__cc);
3313 return __cc == 0;
3314}
3315
Ulrich Weigand6af25592017-07-17 17:47:35 +00003316// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003317static inline __ATTRS_o_ai int
3318vec_all_gt(vector bool long long __a, vector signed long long __b) {
3319 int __cc;
3320 __builtin_s390_vchgs((vector signed long long)__a, __b, &__cc);
3321 return __cc == 0;
3322}
3323
3324static inline __ATTRS_o_ai int
3325vec_all_gt(vector unsigned long long __a, vector unsigned long long __b) {
3326 int __cc;
3327 __builtin_s390_vchlgs(__a, __b, &__cc);
3328 return __cc == 0;
3329}
3330
Ulrich Weigand6af25592017-07-17 17:47:35 +00003331// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003332static inline __ATTRS_o_ai int
3333vec_all_gt(vector unsigned long long __a, vector bool long long __b) {
3334 int __cc;
3335 __builtin_s390_vchlgs(__a, (vector unsigned long long)__b, &__cc);
3336 return __cc == 0;
3337}
3338
Ulrich Weigand6af25592017-07-17 17:47:35 +00003339// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003340static inline __ATTRS_o_ai int
3341vec_all_gt(vector bool long long __a, vector unsigned long long __b) {
3342 int __cc;
3343 __builtin_s390_vchlgs((vector unsigned long long)__a, __b, &__cc);
3344 return __cc == 0;
3345}
3346
Ulrich Weigand6af25592017-07-17 17:47:35 +00003347// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003348static inline __ATTRS_o_ai int
3349vec_all_gt(vector bool long long __a, vector bool long long __b) {
3350 int __cc;
3351 __builtin_s390_vchlgs((vector unsigned long long)__a,
3352 (vector unsigned long long)__b, &__cc);
3353 return __cc == 0;
3354}
3355
Ulrich Weigand6af25592017-07-17 17:47:35 +00003356#if __ARCH__ >= 12
3357static inline __ATTRS_o_ai int
3358vec_all_gt(vector float __a, vector float __b) {
3359 int __cc;
3360 __builtin_s390_vfchsbs(__a, __b, &__cc);
3361 return __cc == 0;
3362}
3363#endif
3364
Ulrich Weigandca256432015-07-30 14:10:43 +00003365static inline __ATTRS_o_ai int
3366vec_all_gt(vector double __a, vector double __b) {
3367 int __cc;
3368 __builtin_s390_vfchdbs(__a, __b, &__cc);
3369 return __cc == 0;
3370}
3371
3372/*-- vec_all_le -------------------------------------------------------------*/
3373
3374static inline __ATTRS_o_ai int
3375vec_all_le(vector signed char __a, vector signed char __b) {
3376 int __cc;
3377 __builtin_s390_vchbs(__a, __b, &__cc);
3378 return __cc == 3;
3379}
3380
Ulrich Weigand6af25592017-07-17 17:47:35 +00003381// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003382static inline __ATTRS_o_ai int
3383vec_all_le(vector signed char __a, vector bool char __b) {
3384 int __cc;
3385 __builtin_s390_vchbs(__a, (vector signed char)__b, &__cc);
3386 return __cc == 3;
3387}
3388
Ulrich Weigand6af25592017-07-17 17:47:35 +00003389// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003390static inline __ATTRS_o_ai int
3391vec_all_le(vector bool char __a, vector signed char __b) {
3392 int __cc;
3393 __builtin_s390_vchbs((vector signed char)__a, __b, &__cc);
3394 return __cc == 3;
3395}
3396
3397static inline __ATTRS_o_ai int
3398vec_all_le(vector unsigned char __a, vector unsigned char __b) {
3399 int __cc;
3400 __builtin_s390_vchlbs(__a, __b, &__cc);
3401 return __cc == 3;
3402}
3403
Ulrich Weigand6af25592017-07-17 17:47:35 +00003404// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003405static inline __ATTRS_o_ai int
3406vec_all_le(vector unsigned char __a, vector bool char __b) {
3407 int __cc;
3408 __builtin_s390_vchlbs(__a, (vector unsigned char)__b, &__cc);
3409 return __cc == 3;
3410}
3411
Ulrich Weigand6af25592017-07-17 17:47:35 +00003412// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003413static inline __ATTRS_o_ai int
3414vec_all_le(vector bool char __a, vector unsigned char __b) {
3415 int __cc;
3416 __builtin_s390_vchlbs((vector unsigned char)__a, __b, &__cc);
3417 return __cc == 3;
3418}
3419
Ulrich Weigand6af25592017-07-17 17:47:35 +00003420// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003421static inline __ATTRS_o_ai int
3422vec_all_le(vector bool char __a, vector bool char __b) {
3423 int __cc;
3424 __builtin_s390_vchlbs((vector unsigned char)__a,
3425 (vector unsigned char)__b, &__cc);
3426 return __cc == 3;
3427}
3428
3429static inline __ATTRS_o_ai int
3430vec_all_le(vector signed short __a, vector signed short __b) {
3431 int __cc;
3432 __builtin_s390_vchhs(__a, __b, &__cc);
3433 return __cc == 3;
3434}
3435
Ulrich Weigand6af25592017-07-17 17:47:35 +00003436// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003437static inline __ATTRS_o_ai int
3438vec_all_le(vector signed short __a, vector bool short __b) {
3439 int __cc;
3440 __builtin_s390_vchhs(__a, (vector signed short)__b, &__cc);
3441 return __cc == 3;
3442}
3443
Ulrich Weigand6af25592017-07-17 17:47:35 +00003444// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003445static inline __ATTRS_o_ai int
3446vec_all_le(vector bool short __a, vector signed short __b) {
3447 int __cc;
3448 __builtin_s390_vchhs((vector signed short)__a, __b, &__cc);
3449 return __cc == 3;
3450}
3451
3452static inline __ATTRS_o_ai int
3453vec_all_le(vector unsigned short __a, vector unsigned short __b) {
3454 int __cc;
3455 __builtin_s390_vchlhs(__a, __b, &__cc);
3456 return __cc == 3;
3457}
3458
Ulrich Weigand6af25592017-07-17 17:47:35 +00003459// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003460static inline __ATTRS_o_ai int
3461vec_all_le(vector unsigned short __a, vector bool short __b) {
3462 int __cc;
3463 __builtin_s390_vchlhs(__a, (vector unsigned short)__b, &__cc);
3464 return __cc == 3;
3465}
3466
Ulrich Weigand6af25592017-07-17 17:47:35 +00003467// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003468static inline __ATTRS_o_ai int
3469vec_all_le(vector bool short __a, vector unsigned short __b) {
3470 int __cc;
3471 __builtin_s390_vchlhs((vector unsigned short)__a, __b, &__cc);
3472 return __cc == 3;
3473}
3474
Ulrich Weigand6af25592017-07-17 17:47:35 +00003475// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003476static inline __ATTRS_o_ai int
3477vec_all_le(vector bool short __a, vector bool short __b) {
3478 int __cc;
3479 __builtin_s390_vchlhs((vector unsigned short)__a,
3480 (vector unsigned short)__b, &__cc);
3481 return __cc == 3;
3482}
3483
3484static inline __ATTRS_o_ai int
3485vec_all_le(vector signed int __a, vector signed int __b) {
3486 int __cc;
3487 __builtin_s390_vchfs(__a, __b, &__cc);
3488 return __cc == 3;
3489}
3490
Ulrich Weigand6af25592017-07-17 17:47:35 +00003491// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003492static inline __ATTRS_o_ai int
3493vec_all_le(vector signed int __a, vector bool int __b) {
3494 int __cc;
3495 __builtin_s390_vchfs(__a, (vector signed int)__b, &__cc);
3496 return __cc == 3;
3497}
3498
Ulrich Weigand6af25592017-07-17 17:47:35 +00003499// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003500static inline __ATTRS_o_ai int
3501vec_all_le(vector bool int __a, vector signed int __b) {
3502 int __cc;
3503 __builtin_s390_vchfs((vector signed int)__a, __b, &__cc);
3504 return __cc == 3;
3505}
3506
3507static inline __ATTRS_o_ai int
3508vec_all_le(vector unsigned int __a, vector unsigned int __b) {
3509 int __cc;
3510 __builtin_s390_vchlfs(__a, __b, &__cc);
3511 return __cc == 3;
3512}
3513
Ulrich Weigand6af25592017-07-17 17:47:35 +00003514// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003515static inline __ATTRS_o_ai int
3516vec_all_le(vector unsigned int __a, vector bool int __b) {
3517 int __cc;
3518 __builtin_s390_vchlfs(__a, (vector unsigned int)__b, &__cc);
3519 return __cc == 3;
3520}
3521
Ulrich Weigand6af25592017-07-17 17:47:35 +00003522// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003523static inline __ATTRS_o_ai int
3524vec_all_le(vector bool int __a, vector unsigned int __b) {
3525 int __cc;
3526 __builtin_s390_vchlfs((vector unsigned int)__a, __b, &__cc);
3527 return __cc == 3;
3528}
3529
Ulrich Weigand6af25592017-07-17 17:47:35 +00003530// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003531static inline __ATTRS_o_ai int
3532vec_all_le(vector bool int __a, vector bool int __b) {
3533 int __cc;
3534 __builtin_s390_vchlfs((vector unsigned int)__a,
3535 (vector unsigned int)__b, &__cc);
3536 return __cc == 3;
3537}
3538
3539static inline __ATTRS_o_ai int
3540vec_all_le(vector signed long long __a, vector signed long long __b) {
3541 int __cc;
3542 __builtin_s390_vchgs(__a, __b, &__cc);
3543 return __cc == 3;
3544}
3545
Ulrich Weigand6af25592017-07-17 17:47:35 +00003546// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003547static inline __ATTRS_o_ai int
3548vec_all_le(vector signed long long __a, vector bool long long __b) {
3549 int __cc;
3550 __builtin_s390_vchgs(__a, (vector signed long long)__b, &__cc);
3551 return __cc == 3;
3552}
3553
Ulrich Weigand6af25592017-07-17 17:47:35 +00003554// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003555static inline __ATTRS_o_ai int
3556vec_all_le(vector bool long long __a, vector signed long long __b) {
3557 int __cc;
3558 __builtin_s390_vchgs((vector signed long long)__a, __b, &__cc);
3559 return __cc == 3;
3560}
3561
3562static inline __ATTRS_o_ai int
3563vec_all_le(vector unsigned long long __a, vector unsigned long long __b) {
3564 int __cc;
3565 __builtin_s390_vchlgs(__a, __b, &__cc);
3566 return __cc == 3;
3567}
3568
Ulrich Weigand6af25592017-07-17 17:47:35 +00003569// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003570static inline __ATTRS_o_ai int
3571vec_all_le(vector unsigned long long __a, vector bool long long __b) {
3572 int __cc;
3573 __builtin_s390_vchlgs(__a, (vector unsigned long long)__b, &__cc);
3574 return __cc == 3;
3575}
3576
Ulrich Weigand6af25592017-07-17 17:47:35 +00003577// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003578static inline __ATTRS_o_ai int
3579vec_all_le(vector bool long long __a, vector unsigned long long __b) {
3580 int __cc;
3581 __builtin_s390_vchlgs((vector unsigned long long)__a, __b, &__cc);
3582 return __cc == 3;
3583}
3584
Ulrich Weigand6af25592017-07-17 17:47:35 +00003585// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003586static inline __ATTRS_o_ai int
3587vec_all_le(vector bool long long __a, vector bool long long __b) {
3588 int __cc;
3589 __builtin_s390_vchlgs((vector unsigned long long)__a,
3590 (vector unsigned long long)__b, &__cc);
3591 return __cc == 3;
3592}
3593
Ulrich Weigand6af25592017-07-17 17:47:35 +00003594#if __ARCH__ >= 12
3595static inline __ATTRS_o_ai int
3596vec_all_le(vector float __a, vector float __b) {
3597 int __cc;
3598 __builtin_s390_vfchesbs(__b, __a, &__cc);
3599 return __cc == 0;
3600}
3601#endif
3602
Ulrich Weigandca256432015-07-30 14:10:43 +00003603static inline __ATTRS_o_ai int
3604vec_all_le(vector double __a, vector double __b) {
3605 int __cc;
3606 __builtin_s390_vfchedbs(__b, __a, &__cc);
3607 return __cc == 0;
3608}
3609
3610/*-- vec_all_lt -------------------------------------------------------------*/
3611
3612static inline __ATTRS_o_ai int
3613vec_all_lt(vector signed char __a, vector signed char __b) {
3614 int __cc;
3615 __builtin_s390_vchbs(__b, __a, &__cc);
3616 return __cc == 0;
3617}
3618
Ulrich Weigand6af25592017-07-17 17:47:35 +00003619// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003620static inline __ATTRS_o_ai int
3621vec_all_lt(vector signed char __a, vector bool char __b) {
3622 int __cc;
3623 __builtin_s390_vchbs((vector signed char)__b, __a, &__cc);
3624 return __cc == 0;
3625}
3626
Ulrich Weigand6af25592017-07-17 17:47:35 +00003627// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003628static inline __ATTRS_o_ai int
3629vec_all_lt(vector bool char __a, vector signed char __b) {
3630 int __cc;
3631 __builtin_s390_vchbs(__b, (vector signed char)__a, &__cc);
3632 return __cc == 0;
3633}
3634
3635static inline __ATTRS_o_ai int
3636vec_all_lt(vector unsigned char __a, vector unsigned char __b) {
3637 int __cc;
3638 __builtin_s390_vchlbs(__b, __a, &__cc);
3639 return __cc == 0;
3640}
3641
Ulrich Weigand6af25592017-07-17 17:47:35 +00003642// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003643static inline __ATTRS_o_ai int
3644vec_all_lt(vector unsigned char __a, vector bool char __b) {
3645 int __cc;
3646 __builtin_s390_vchlbs((vector unsigned char)__b, __a, &__cc);
3647 return __cc == 0;
3648}
3649
Ulrich Weigand6af25592017-07-17 17:47:35 +00003650// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003651static inline __ATTRS_o_ai int
3652vec_all_lt(vector bool char __a, vector unsigned char __b) {
3653 int __cc;
3654 __builtin_s390_vchlbs(__b, (vector unsigned char)__a, &__cc);
3655 return __cc == 0;
3656}
3657
Ulrich Weigand6af25592017-07-17 17:47:35 +00003658// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003659static inline __ATTRS_o_ai int
3660vec_all_lt(vector bool char __a, vector bool char __b) {
3661 int __cc;
3662 __builtin_s390_vchlbs((vector unsigned char)__b,
3663 (vector unsigned char)__a, &__cc);
3664 return __cc == 0;
3665}
3666
3667static inline __ATTRS_o_ai int
3668vec_all_lt(vector signed short __a, vector signed short __b) {
3669 int __cc;
3670 __builtin_s390_vchhs(__b, __a, &__cc);
3671 return __cc == 0;
3672}
3673
Ulrich Weigand6af25592017-07-17 17:47:35 +00003674// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003675static inline __ATTRS_o_ai int
3676vec_all_lt(vector signed short __a, vector bool short __b) {
3677 int __cc;
3678 __builtin_s390_vchhs((vector signed short)__b, __a, &__cc);
3679 return __cc == 0;
3680}
3681
Ulrich Weigand6af25592017-07-17 17:47:35 +00003682// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003683static inline __ATTRS_o_ai int
3684vec_all_lt(vector bool short __a, vector signed short __b) {
3685 int __cc;
3686 __builtin_s390_vchhs(__b, (vector signed short)__a, &__cc);
3687 return __cc == 0;
3688}
3689
3690static inline __ATTRS_o_ai int
3691vec_all_lt(vector unsigned short __a, vector unsigned short __b) {
3692 int __cc;
3693 __builtin_s390_vchlhs(__b, __a, &__cc);
3694 return __cc == 0;
3695}
3696
Ulrich Weigand6af25592017-07-17 17:47:35 +00003697// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003698static inline __ATTRS_o_ai int
3699vec_all_lt(vector unsigned short __a, vector bool short __b) {
3700 int __cc;
3701 __builtin_s390_vchlhs((vector unsigned short)__b, __a, &__cc);
3702 return __cc == 0;
3703}
3704
Ulrich Weigand6af25592017-07-17 17:47:35 +00003705// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003706static inline __ATTRS_o_ai int
3707vec_all_lt(vector bool short __a, vector unsigned short __b) {
3708 int __cc;
3709 __builtin_s390_vchlhs(__b, (vector unsigned short)__a, &__cc);
3710 return __cc == 0;
3711}
3712
Ulrich Weigand6af25592017-07-17 17:47:35 +00003713// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003714static inline __ATTRS_o_ai int
3715vec_all_lt(vector bool short __a, vector bool short __b) {
3716 int __cc;
3717 __builtin_s390_vchlhs((vector unsigned short)__b,
3718 (vector unsigned short)__a, &__cc);
3719 return __cc == 0;
3720}
3721
3722static inline __ATTRS_o_ai int
3723vec_all_lt(vector signed int __a, vector signed int __b) {
3724 int __cc;
3725 __builtin_s390_vchfs(__b, __a, &__cc);
3726 return __cc == 0;
3727}
3728
Ulrich Weigand6af25592017-07-17 17:47:35 +00003729// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003730static inline __ATTRS_o_ai int
3731vec_all_lt(vector signed int __a, vector bool int __b) {
3732 int __cc;
3733 __builtin_s390_vchfs((vector signed int)__b, __a, &__cc);
3734 return __cc == 0;
3735}
3736
Ulrich Weigand6af25592017-07-17 17:47:35 +00003737// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003738static inline __ATTRS_o_ai int
3739vec_all_lt(vector bool int __a, vector signed int __b) {
3740 int __cc;
3741 __builtin_s390_vchfs(__b, (vector signed int)__a, &__cc);
3742 return __cc == 0;
3743}
3744
3745static inline __ATTRS_o_ai int
3746vec_all_lt(vector unsigned int __a, vector unsigned int __b) {
3747 int __cc;
3748 __builtin_s390_vchlfs(__b, __a, &__cc);
3749 return __cc == 0;
3750}
3751
Ulrich Weigand6af25592017-07-17 17:47:35 +00003752// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003753static inline __ATTRS_o_ai int
3754vec_all_lt(vector unsigned int __a, vector bool int __b) {
3755 int __cc;
3756 __builtin_s390_vchlfs((vector unsigned int)__b, __a, &__cc);
3757 return __cc == 0;
3758}
3759
Ulrich Weigand6af25592017-07-17 17:47:35 +00003760// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003761static inline __ATTRS_o_ai int
3762vec_all_lt(vector bool int __a, vector unsigned int __b) {
3763 int __cc;
3764 __builtin_s390_vchlfs(__b, (vector unsigned int)__a, &__cc);
3765 return __cc == 0;
3766}
3767
Ulrich Weigand6af25592017-07-17 17:47:35 +00003768// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003769static inline __ATTRS_o_ai int
3770vec_all_lt(vector bool int __a, vector bool int __b) {
3771 int __cc;
3772 __builtin_s390_vchlfs((vector unsigned int)__b,
3773 (vector unsigned int)__a, &__cc);
3774 return __cc == 0;
3775}
3776
3777static inline __ATTRS_o_ai int
3778vec_all_lt(vector signed long long __a, vector signed long long __b) {
3779 int __cc;
3780 __builtin_s390_vchgs(__b, __a, &__cc);
3781 return __cc == 0;
3782}
3783
Ulrich Weigand6af25592017-07-17 17:47:35 +00003784// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003785static inline __ATTRS_o_ai int
3786vec_all_lt(vector signed long long __a, vector bool long long __b) {
3787 int __cc;
3788 __builtin_s390_vchgs((vector signed long long)__b, __a, &__cc);
3789 return __cc == 0;
3790}
3791
Ulrich Weigand6af25592017-07-17 17:47:35 +00003792// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003793static inline __ATTRS_o_ai int
3794vec_all_lt(vector bool long long __a, vector signed long long __b) {
3795 int __cc;
3796 __builtin_s390_vchgs(__b, (vector signed long long)__a, &__cc);
3797 return __cc == 0;
3798}
3799
3800static inline __ATTRS_o_ai int
3801vec_all_lt(vector unsigned long long __a, vector unsigned long long __b) {
3802 int __cc;
3803 __builtin_s390_vchlgs(__b, __a, &__cc);
3804 return __cc == 0;
3805}
3806
Ulrich Weigand6af25592017-07-17 17:47:35 +00003807// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003808static inline __ATTRS_o_ai int
3809vec_all_lt(vector unsigned long long __a, vector bool long long __b) {
3810 int __cc;
3811 __builtin_s390_vchlgs((vector unsigned long long)__b, __a, &__cc);
3812 return __cc == 0;
3813}
3814
Ulrich Weigand6af25592017-07-17 17:47:35 +00003815// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003816static inline __ATTRS_o_ai int
3817vec_all_lt(vector bool long long __a, vector unsigned long long __b) {
3818 int __cc;
3819 __builtin_s390_vchlgs(__b, (vector unsigned long long)__a, &__cc);
3820 return __cc == 0;
3821}
3822
Ulrich Weigand6af25592017-07-17 17:47:35 +00003823// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003824static inline __ATTRS_o_ai int
3825vec_all_lt(vector bool long long __a, vector bool long long __b) {
3826 int __cc;
3827 __builtin_s390_vchlgs((vector unsigned long long)__b,
3828 (vector unsigned long long)__a, &__cc);
3829 return __cc == 0;
3830}
3831
Ulrich Weigand6af25592017-07-17 17:47:35 +00003832#if __ARCH__ >= 12
3833static inline __ATTRS_o_ai int
3834vec_all_lt(vector float __a, vector float __b) {
3835 int __cc;
3836 __builtin_s390_vfchsbs(__b, __a, &__cc);
3837 return __cc == 0;
3838}
3839#endif
3840
Ulrich Weigandca256432015-07-30 14:10:43 +00003841static inline __ATTRS_o_ai int
3842vec_all_lt(vector double __a, vector double __b) {
3843 int __cc;
3844 __builtin_s390_vfchdbs(__b, __a, &__cc);
3845 return __cc == 0;
3846}
3847
3848/*-- vec_all_nge ------------------------------------------------------------*/
3849
Ulrich Weigand6af25592017-07-17 17:47:35 +00003850#if __ARCH__ >= 12
3851static inline __ATTRS_o_ai int
3852vec_all_nge(vector float __a, vector float __b) {
3853 int __cc;
3854 __builtin_s390_vfchesbs(__a, __b, &__cc);
3855 return __cc == 3;
3856}
3857#endif
3858
3859static inline __ATTRS_o_ai int
Ulrich Weigandca256432015-07-30 14:10:43 +00003860vec_all_nge(vector double __a, vector double __b) {
3861 int __cc;
3862 __builtin_s390_vfchedbs(__a, __b, &__cc);
3863 return __cc == 3;
3864}
3865
3866/*-- vec_all_ngt ------------------------------------------------------------*/
3867
Ulrich Weigand6af25592017-07-17 17:47:35 +00003868#if __ARCH__ >= 12
3869static inline __ATTRS_o_ai int
3870vec_all_ngt(vector float __a, vector float __b) {
3871 int __cc;
3872 __builtin_s390_vfchsbs(__a, __b, &__cc);
3873 return __cc == 3;
3874}
3875#endif
3876
3877static inline __ATTRS_o_ai int
Ulrich Weigandca256432015-07-30 14:10:43 +00003878vec_all_ngt(vector double __a, vector double __b) {
3879 int __cc;
3880 __builtin_s390_vfchdbs(__a, __b, &__cc);
3881 return __cc == 3;
3882}
3883
3884/*-- vec_all_nle ------------------------------------------------------------*/
3885
Ulrich Weigand6af25592017-07-17 17:47:35 +00003886#if __ARCH__ >= 12
3887static inline __ATTRS_o_ai int
3888vec_all_nle(vector float __a, vector float __b) {
3889 int __cc;
3890 __builtin_s390_vfchesbs(__b, __a, &__cc);
3891 return __cc == 3;
3892}
3893#endif
3894
3895static inline __ATTRS_o_ai int
Ulrich Weigandca256432015-07-30 14:10:43 +00003896vec_all_nle(vector double __a, vector double __b) {
3897 int __cc;
3898 __builtin_s390_vfchedbs(__b, __a, &__cc);
3899 return __cc == 3;
3900}
3901
3902/*-- vec_all_nlt ------------------------------------------------------------*/
3903
Ulrich Weigand6af25592017-07-17 17:47:35 +00003904#if __ARCH__ >= 12
3905static inline __ATTRS_o_ai int
3906vec_all_nlt(vector float __a, vector float __b) {
3907 int __cc;
3908 __builtin_s390_vfchsbs(__b, __a, &__cc);
3909 return __cc == 3;
3910}
3911#endif
3912
3913static inline __ATTRS_o_ai int
Ulrich Weigandca256432015-07-30 14:10:43 +00003914vec_all_nlt(vector double __a, vector double __b) {
3915 int __cc;
3916 __builtin_s390_vfchdbs(__b, __a, &__cc);
3917 return __cc == 3;
3918}
3919
3920/*-- vec_all_nan ------------------------------------------------------------*/
3921
Ulrich Weigand6af25592017-07-17 17:47:35 +00003922#if __ARCH__ >= 12
3923static inline __ATTRS_o_ai int
3924vec_all_nan(vector float __a) {
3925 int __cc;
3926 __builtin_s390_vftcisb(__a, 15, &__cc);
3927 return __cc == 0;
3928}
3929#endif
3930
3931static inline __ATTRS_o_ai int
Ulrich Weigandca256432015-07-30 14:10:43 +00003932vec_all_nan(vector double __a) {
3933 int __cc;
3934 __builtin_s390_vftcidb(__a, 15, &__cc);
3935 return __cc == 0;
3936}
3937
3938/*-- vec_all_numeric --------------------------------------------------------*/
3939
Ulrich Weigand6af25592017-07-17 17:47:35 +00003940#if __ARCH__ >= 12
3941static inline __ATTRS_o_ai int
3942vec_all_numeric(vector float __a) {
3943 int __cc;
3944 __builtin_s390_vftcisb(__a, 15, &__cc);
3945 return __cc == 3;
3946}
3947#endif
3948
3949static inline __ATTRS_o_ai int
Ulrich Weigandca256432015-07-30 14:10:43 +00003950vec_all_numeric(vector double __a) {
3951 int __cc;
3952 __builtin_s390_vftcidb(__a, 15, &__cc);
3953 return __cc == 3;
3954}
3955
3956/*-- vec_any_eq -------------------------------------------------------------*/
3957
3958static inline __ATTRS_o_ai int
3959vec_any_eq(vector signed char __a, vector signed char __b) {
3960 int __cc;
3961 __builtin_s390_vceqbs(__a, __b, &__cc);
3962 return __cc <= 1;
3963}
3964
Ulrich Weigand6af25592017-07-17 17:47:35 +00003965// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003966static inline __ATTRS_o_ai int
3967vec_any_eq(vector signed char __a, vector bool char __b) {
3968 int __cc;
3969 __builtin_s390_vceqbs(__a, (vector signed char)__b, &__cc);
3970 return __cc <= 1;
3971}
3972
Ulrich Weigand6af25592017-07-17 17:47:35 +00003973// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003974static inline __ATTRS_o_ai int
3975vec_any_eq(vector bool char __a, vector signed char __b) {
3976 int __cc;
3977 __builtin_s390_vceqbs((vector signed char)__a, __b, &__cc);
3978 return __cc <= 1;
3979}
3980
3981static inline __ATTRS_o_ai int
3982vec_any_eq(vector unsigned char __a, vector unsigned char __b) {
3983 int __cc;
3984 __builtin_s390_vceqbs((vector signed char)__a,
3985 (vector signed char)__b, &__cc);
3986 return __cc <= 1;
3987}
3988
Ulrich Weigand6af25592017-07-17 17:47:35 +00003989// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003990static inline __ATTRS_o_ai int
3991vec_any_eq(vector unsigned char __a, vector bool char __b) {
3992 int __cc;
3993 __builtin_s390_vceqbs((vector signed char)__a,
3994 (vector signed char)__b, &__cc);
3995 return __cc <= 1;
3996}
3997
Ulrich Weigand6af25592017-07-17 17:47:35 +00003998// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00003999static inline __ATTRS_o_ai int
4000vec_any_eq(vector bool char __a, vector unsigned char __b) {
4001 int __cc;
4002 __builtin_s390_vceqbs((vector signed char)__a,
4003 (vector signed char)__b, &__cc);
4004 return __cc <= 1;
4005}
4006
4007static inline __ATTRS_o_ai int
4008vec_any_eq(vector bool char __a, vector bool char __b) {
4009 int __cc;
4010 __builtin_s390_vceqbs((vector signed char)__a,
4011 (vector signed char)__b, &__cc);
4012 return __cc <= 1;
4013}
4014
4015static inline __ATTRS_o_ai int
4016vec_any_eq(vector signed short __a, vector signed short __b) {
4017 int __cc;
4018 __builtin_s390_vceqhs(__a, __b, &__cc);
4019 return __cc <= 1;
4020}
4021
Ulrich Weigand6af25592017-07-17 17:47:35 +00004022// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004023static inline __ATTRS_o_ai int
4024vec_any_eq(vector signed short __a, vector bool short __b) {
4025 int __cc;
4026 __builtin_s390_vceqhs(__a, (vector signed short)__b, &__cc);
4027 return __cc <= 1;
4028}
4029
Ulrich Weigand6af25592017-07-17 17:47:35 +00004030// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004031static inline __ATTRS_o_ai int
4032vec_any_eq(vector bool short __a, vector signed short __b) {
4033 int __cc;
4034 __builtin_s390_vceqhs((vector signed short)__a, __b, &__cc);
4035 return __cc <= 1;
4036}
4037
4038static inline __ATTRS_o_ai int
4039vec_any_eq(vector unsigned short __a, vector unsigned short __b) {
4040 int __cc;
4041 __builtin_s390_vceqhs((vector signed short)__a,
4042 (vector signed short)__b, &__cc);
4043 return __cc <= 1;
4044}
4045
Ulrich Weigand6af25592017-07-17 17:47:35 +00004046// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004047static inline __ATTRS_o_ai int
4048vec_any_eq(vector unsigned short __a, vector bool short __b) {
4049 int __cc;
4050 __builtin_s390_vceqhs((vector signed short)__a,
4051 (vector signed short)__b, &__cc);
4052 return __cc <= 1;
4053}
4054
Ulrich Weigand6af25592017-07-17 17:47:35 +00004055// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004056static inline __ATTRS_o_ai int
4057vec_any_eq(vector bool short __a, vector unsigned short __b) {
4058 int __cc;
4059 __builtin_s390_vceqhs((vector signed short)__a,
4060 (vector signed short)__b, &__cc);
4061 return __cc <= 1;
4062}
4063
4064static inline __ATTRS_o_ai int
4065vec_any_eq(vector bool short __a, vector bool short __b) {
4066 int __cc;
4067 __builtin_s390_vceqhs((vector signed short)__a,
4068 (vector signed short)__b, &__cc);
4069 return __cc <= 1;
4070}
4071
4072static inline __ATTRS_o_ai int
4073vec_any_eq(vector signed int __a, vector signed int __b) {
4074 int __cc;
4075 __builtin_s390_vceqfs(__a, __b, &__cc);
4076 return __cc <= 1;
4077}
4078
Ulrich Weigand6af25592017-07-17 17:47:35 +00004079// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004080static inline __ATTRS_o_ai int
4081vec_any_eq(vector signed int __a, vector bool int __b) {
4082 int __cc;
4083 __builtin_s390_vceqfs(__a, (vector signed int)__b, &__cc);
4084 return __cc <= 1;
4085}
4086
Ulrich Weigand6af25592017-07-17 17:47:35 +00004087// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004088static inline __ATTRS_o_ai int
4089vec_any_eq(vector bool int __a, vector signed int __b) {
4090 int __cc;
4091 __builtin_s390_vceqfs((vector signed int)__a, __b, &__cc);
4092 return __cc <= 1;
4093}
4094
4095static inline __ATTRS_o_ai int
4096vec_any_eq(vector unsigned int __a, vector unsigned int __b) {
4097 int __cc;
4098 __builtin_s390_vceqfs((vector signed int)__a,
4099 (vector signed int)__b, &__cc);
4100 return __cc <= 1;
4101}
4102
Ulrich Weigand6af25592017-07-17 17:47:35 +00004103// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004104static inline __ATTRS_o_ai int
4105vec_any_eq(vector unsigned int __a, vector bool int __b) {
4106 int __cc;
4107 __builtin_s390_vceqfs((vector signed int)__a,
4108 (vector signed int)__b, &__cc);
4109 return __cc <= 1;
4110}
4111
Ulrich Weigand6af25592017-07-17 17:47:35 +00004112// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004113static inline __ATTRS_o_ai int
4114vec_any_eq(vector bool int __a, vector unsigned int __b) {
4115 int __cc;
4116 __builtin_s390_vceqfs((vector signed int)__a,
4117 (vector signed int)__b, &__cc);
4118 return __cc <= 1;
4119}
4120
4121static inline __ATTRS_o_ai int
4122vec_any_eq(vector bool int __a, vector bool int __b) {
4123 int __cc;
4124 __builtin_s390_vceqfs((vector signed int)__a,
4125 (vector signed int)__b, &__cc);
4126 return __cc <= 1;
4127}
4128
4129static inline __ATTRS_o_ai int
4130vec_any_eq(vector signed long long __a, vector signed long long __b) {
4131 int __cc;
4132 __builtin_s390_vceqgs(__a, __b, &__cc);
4133 return __cc <= 1;
4134}
4135
Ulrich Weigand6af25592017-07-17 17:47:35 +00004136// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004137static inline __ATTRS_o_ai int
4138vec_any_eq(vector signed long long __a, vector bool long long __b) {
4139 int __cc;
4140 __builtin_s390_vceqgs(__a, (vector signed long long)__b, &__cc);
4141 return __cc <= 1;
4142}
4143
Ulrich Weigand6af25592017-07-17 17:47:35 +00004144// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004145static inline __ATTRS_o_ai int
4146vec_any_eq(vector bool long long __a, vector signed long long __b) {
4147 int __cc;
4148 __builtin_s390_vceqgs((vector signed long long)__a, __b, &__cc);
4149 return __cc <= 1;
4150}
4151
4152static inline __ATTRS_o_ai int
4153vec_any_eq(vector unsigned long long __a, vector unsigned long long __b) {
4154 int __cc;
4155 __builtin_s390_vceqgs((vector signed long long)__a,
4156 (vector signed long long)__b, &__cc);
4157 return __cc <= 1;
4158}
4159
Ulrich Weigand6af25592017-07-17 17:47:35 +00004160// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004161static inline __ATTRS_o_ai int
4162vec_any_eq(vector unsigned long long __a, vector bool long long __b) {
4163 int __cc;
4164 __builtin_s390_vceqgs((vector signed long long)__a,
4165 (vector signed long long)__b, &__cc);
4166 return __cc <= 1;
4167}
4168
Ulrich Weigand6af25592017-07-17 17:47:35 +00004169// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004170static inline __ATTRS_o_ai int
4171vec_any_eq(vector bool long long __a, vector unsigned long long __b) {
4172 int __cc;
4173 __builtin_s390_vceqgs((vector signed long long)__a,
4174 (vector signed long long)__b, &__cc);
4175 return __cc <= 1;
4176}
4177
4178static inline __ATTRS_o_ai int
4179vec_any_eq(vector bool long long __a, vector bool long long __b) {
4180 int __cc;
4181 __builtin_s390_vceqgs((vector signed long long)__a,
4182 (vector signed long long)__b, &__cc);
4183 return __cc <= 1;
4184}
4185
Ulrich Weigand6af25592017-07-17 17:47:35 +00004186#if __ARCH__ >= 12
4187static inline __ATTRS_o_ai int
4188vec_any_eq(vector float __a, vector float __b) {
4189 int __cc;
4190 __builtin_s390_vfcesbs(__a, __b, &__cc);
4191 return __cc <= 1;
4192}
4193#endif
4194
Ulrich Weigandca256432015-07-30 14:10:43 +00004195static inline __ATTRS_o_ai int
4196vec_any_eq(vector double __a, vector double __b) {
4197 int __cc;
4198 __builtin_s390_vfcedbs(__a, __b, &__cc);
4199 return __cc <= 1;
4200}
4201
4202/*-- vec_any_ne -------------------------------------------------------------*/
4203
4204static inline __ATTRS_o_ai int
4205vec_any_ne(vector signed char __a, vector signed char __b) {
4206 int __cc;
4207 __builtin_s390_vceqbs(__a, __b, &__cc);
4208 return __cc != 0;
4209}
4210
Ulrich Weigand6af25592017-07-17 17:47:35 +00004211// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004212static inline __ATTRS_o_ai int
4213vec_any_ne(vector signed char __a, vector bool char __b) {
4214 int __cc;
4215 __builtin_s390_vceqbs(__a, (vector signed char)__b, &__cc);
4216 return __cc != 0;
4217}
4218
Ulrich Weigand6af25592017-07-17 17:47:35 +00004219// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004220static inline __ATTRS_o_ai int
4221vec_any_ne(vector bool char __a, vector signed char __b) {
4222 int __cc;
4223 __builtin_s390_vceqbs((vector signed char)__a, __b, &__cc);
4224 return __cc != 0;
4225}
4226
4227static inline __ATTRS_o_ai int
4228vec_any_ne(vector unsigned char __a, vector unsigned char __b) {
4229 int __cc;
4230 __builtin_s390_vceqbs((vector signed char)__a,
4231 (vector signed char)__b, &__cc);
4232 return __cc != 0;
4233}
4234
Ulrich Weigand6af25592017-07-17 17:47:35 +00004235// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004236static inline __ATTRS_o_ai int
4237vec_any_ne(vector unsigned char __a, vector bool char __b) {
4238 int __cc;
4239 __builtin_s390_vceqbs((vector signed char)__a,
4240 (vector signed char)__b, &__cc);
4241 return __cc != 0;
4242}
4243
Ulrich Weigand6af25592017-07-17 17:47:35 +00004244// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004245static inline __ATTRS_o_ai int
4246vec_any_ne(vector bool char __a, vector unsigned char __b) {
4247 int __cc;
4248 __builtin_s390_vceqbs((vector signed char)__a,
4249 (vector signed char)__b, &__cc);
4250 return __cc != 0;
4251}
4252
4253static inline __ATTRS_o_ai int
4254vec_any_ne(vector bool char __a, vector bool char __b) {
4255 int __cc;
4256 __builtin_s390_vceqbs((vector signed char)__a,
4257 (vector signed char)__b, &__cc);
4258 return __cc != 0;
4259}
4260
4261static inline __ATTRS_o_ai int
4262vec_any_ne(vector signed short __a, vector signed short __b) {
4263 int __cc;
4264 __builtin_s390_vceqhs(__a, __b, &__cc);
4265 return __cc != 0;
4266}
4267
Ulrich Weigand6af25592017-07-17 17:47:35 +00004268// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004269static inline __ATTRS_o_ai int
4270vec_any_ne(vector signed short __a, vector bool short __b) {
4271 int __cc;
4272 __builtin_s390_vceqhs(__a, (vector signed short)__b, &__cc);
4273 return __cc != 0;
4274}
4275
Ulrich Weigand6af25592017-07-17 17:47:35 +00004276// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004277static inline __ATTRS_o_ai int
4278vec_any_ne(vector bool short __a, vector signed short __b) {
4279 int __cc;
4280 __builtin_s390_vceqhs((vector signed short)__a, __b, &__cc);
4281 return __cc != 0;
4282}
4283
4284static inline __ATTRS_o_ai int
4285vec_any_ne(vector unsigned short __a, vector unsigned short __b) {
4286 int __cc;
4287 __builtin_s390_vceqhs((vector signed short)__a,
4288 (vector signed short)__b, &__cc);
4289 return __cc != 0;
4290}
4291
Ulrich Weigand6af25592017-07-17 17:47:35 +00004292// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004293static inline __ATTRS_o_ai int
4294vec_any_ne(vector unsigned short __a, vector bool short __b) {
4295 int __cc;
4296 __builtin_s390_vceqhs((vector signed short)__a,
4297 (vector signed short)__b, &__cc);
4298 return __cc != 0;
4299}
4300
Ulrich Weigand6af25592017-07-17 17:47:35 +00004301// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004302static inline __ATTRS_o_ai int
4303vec_any_ne(vector bool short __a, vector unsigned short __b) {
4304 int __cc;
4305 __builtin_s390_vceqhs((vector signed short)__a,
4306 (vector signed short)__b, &__cc);
4307 return __cc != 0;
4308}
4309
4310static inline __ATTRS_o_ai int
4311vec_any_ne(vector bool short __a, vector bool short __b) {
4312 int __cc;
4313 __builtin_s390_vceqhs((vector signed short)__a,
4314 (vector signed short)__b, &__cc);
4315 return __cc != 0;
4316}
4317
4318static inline __ATTRS_o_ai int
4319vec_any_ne(vector signed int __a, vector signed int __b) {
4320 int __cc;
4321 __builtin_s390_vceqfs(__a, __b, &__cc);
4322 return __cc != 0;
4323}
4324
Ulrich Weigand6af25592017-07-17 17:47:35 +00004325// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004326static inline __ATTRS_o_ai int
4327vec_any_ne(vector signed int __a, vector bool int __b) {
4328 int __cc;
4329 __builtin_s390_vceqfs(__a, (vector signed int)__b, &__cc);
4330 return __cc != 0;
4331}
4332
Ulrich Weigand6af25592017-07-17 17:47:35 +00004333// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004334static inline __ATTRS_o_ai int
4335vec_any_ne(vector bool int __a, vector signed int __b) {
4336 int __cc;
4337 __builtin_s390_vceqfs((vector signed int)__a, __b, &__cc);
4338 return __cc != 0;
4339}
4340
4341static inline __ATTRS_o_ai int
4342vec_any_ne(vector unsigned int __a, vector unsigned int __b) {
4343 int __cc;
4344 __builtin_s390_vceqfs((vector signed int)__a,
4345 (vector signed int)__b, &__cc);
4346 return __cc != 0;
4347}
4348
Ulrich Weigand6af25592017-07-17 17:47:35 +00004349// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004350static inline __ATTRS_o_ai int
4351vec_any_ne(vector unsigned int __a, vector bool int __b) {
4352 int __cc;
4353 __builtin_s390_vceqfs((vector signed int)__a,
4354 (vector signed int)__b, &__cc);
4355 return __cc != 0;
4356}
4357
Ulrich Weigand6af25592017-07-17 17:47:35 +00004358// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004359static inline __ATTRS_o_ai int
4360vec_any_ne(vector bool int __a, vector unsigned int __b) {
4361 int __cc;
4362 __builtin_s390_vceqfs((vector signed int)__a,
4363 (vector signed int)__b, &__cc);
4364 return __cc != 0;
4365}
4366
4367static inline __ATTRS_o_ai int
4368vec_any_ne(vector bool int __a, vector bool int __b) {
4369 int __cc;
4370 __builtin_s390_vceqfs((vector signed int)__a,
4371 (vector signed int)__b, &__cc);
4372 return __cc != 0;
4373}
4374
4375static inline __ATTRS_o_ai int
4376vec_any_ne(vector signed long long __a, vector signed long long __b) {
4377 int __cc;
4378 __builtin_s390_vceqgs(__a, __b, &__cc);
4379 return __cc != 0;
4380}
4381
Ulrich Weigand6af25592017-07-17 17:47:35 +00004382// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004383static inline __ATTRS_o_ai int
4384vec_any_ne(vector signed long long __a, vector bool long long __b) {
4385 int __cc;
4386 __builtin_s390_vceqgs(__a, (vector signed long long)__b, &__cc);
4387 return __cc != 0;
4388}
4389
Ulrich Weigand6af25592017-07-17 17:47:35 +00004390// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004391static inline __ATTRS_o_ai int
4392vec_any_ne(vector bool long long __a, vector signed long long __b) {
4393 int __cc;
4394 __builtin_s390_vceqgs((vector signed long long)__a, __b, &__cc);
4395 return __cc != 0;
4396}
4397
4398static inline __ATTRS_o_ai int
4399vec_any_ne(vector unsigned long long __a, vector unsigned long long __b) {
4400 int __cc;
4401 __builtin_s390_vceqgs((vector signed long long)__a,
4402 (vector signed long long)__b, &__cc);
4403 return __cc != 0;
4404}
4405
Ulrich Weigand6af25592017-07-17 17:47:35 +00004406// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004407static inline __ATTRS_o_ai int
4408vec_any_ne(vector unsigned long long __a, vector bool long long __b) {
4409 int __cc;
4410 __builtin_s390_vceqgs((vector signed long long)__a,
4411 (vector signed long long)__b, &__cc);
4412 return __cc != 0;
4413}
4414
Ulrich Weigand6af25592017-07-17 17:47:35 +00004415// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004416static inline __ATTRS_o_ai int
4417vec_any_ne(vector bool long long __a, vector unsigned long long __b) {
4418 int __cc;
4419 __builtin_s390_vceqgs((vector signed long long)__a,
4420 (vector signed long long)__b, &__cc);
4421 return __cc != 0;
4422}
4423
4424static inline __ATTRS_o_ai int
4425vec_any_ne(vector bool long long __a, vector bool long long __b) {
4426 int __cc;
4427 __builtin_s390_vceqgs((vector signed long long)__a,
4428 (vector signed long long)__b, &__cc);
4429 return __cc != 0;
4430}
4431
Ulrich Weigand6af25592017-07-17 17:47:35 +00004432#if __ARCH__ >= 12
4433static inline __ATTRS_o_ai int
4434vec_any_ne(vector float __a, vector float __b) {
4435 int __cc;
4436 __builtin_s390_vfcesbs(__a, __b, &__cc);
4437 return __cc != 0;
4438}
4439#endif
4440
Ulrich Weigandca256432015-07-30 14:10:43 +00004441static inline __ATTRS_o_ai int
4442vec_any_ne(vector double __a, vector double __b) {
4443 int __cc;
4444 __builtin_s390_vfcedbs(__a, __b, &__cc);
4445 return __cc != 0;
4446}
4447
4448/*-- vec_any_ge -------------------------------------------------------------*/
4449
4450static inline __ATTRS_o_ai int
4451vec_any_ge(vector signed char __a, vector signed char __b) {
4452 int __cc;
4453 __builtin_s390_vchbs(__b, __a, &__cc);
4454 return __cc != 0;
4455}
4456
Ulrich Weigand6af25592017-07-17 17:47:35 +00004457// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004458static inline __ATTRS_o_ai int
4459vec_any_ge(vector signed char __a, vector bool char __b) {
4460 int __cc;
4461 __builtin_s390_vchbs((vector signed char)__b, __a, &__cc);
4462 return __cc != 0;
4463}
4464
Ulrich Weigand6af25592017-07-17 17:47:35 +00004465// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004466static inline __ATTRS_o_ai int
4467vec_any_ge(vector bool char __a, vector signed char __b) {
4468 int __cc;
4469 __builtin_s390_vchbs(__b, (vector signed char)__a, &__cc);
4470 return __cc != 0;
4471}
4472
4473static inline __ATTRS_o_ai int
4474vec_any_ge(vector unsigned char __a, vector unsigned char __b) {
4475 int __cc;
4476 __builtin_s390_vchlbs(__b, __a, &__cc);
4477 return __cc != 0;
4478}
4479
Ulrich Weigand6af25592017-07-17 17:47:35 +00004480// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004481static inline __ATTRS_o_ai int
4482vec_any_ge(vector unsigned char __a, vector bool char __b) {
4483 int __cc;
4484 __builtin_s390_vchlbs((vector unsigned char)__b, __a, &__cc);
4485 return __cc != 0;
4486}
4487
Ulrich Weigand6af25592017-07-17 17:47:35 +00004488// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004489static inline __ATTRS_o_ai int
4490vec_any_ge(vector bool char __a, vector unsigned char __b) {
4491 int __cc;
4492 __builtin_s390_vchlbs(__b, (vector unsigned char)__a, &__cc);
4493 return __cc != 0;
4494}
4495
Ulrich Weigand6af25592017-07-17 17:47:35 +00004496// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004497static inline __ATTRS_o_ai int
4498vec_any_ge(vector bool char __a, vector bool char __b) {
4499 int __cc;
4500 __builtin_s390_vchlbs((vector unsigned char)__b,
4501 (vector unsigned char)__a, &__cc);
4502 return __cc != 0;
4503}
4504
4505static inline __ATTRS_o_ai int
4506vec_any_ge(vector signed short __a, vector signed short __b) {
4507 int __cc;
4508 __builtin_s390_vchhs(__b, __a, &__cc);
4509 return __cc != 0;
4510}
4511
Ulrich Weigand6af25592017-07-17 17:47:35 +00004512// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004513static inline __ATTRS_o_ai int
4514vec_any_ge(vector signed short __a, vector bool short __b) {
4515 int __cc;
4516 __builtin_s390_vchhs((vector signed short)__b, __a, &__cc);
4517 return __cc != 0;
4518}
4519
Ulrich Weigand6af25592017-07-17 17:47:35 +00004520// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004521static inline __ATTRS_o_ai int
4522vec_any_ge(vector bool short __a, vector signed short __b) {
4523 int __cc;
4524 __builtin_s390_vchhs(__b, (vector signed short)__a, &__cc);
4525 return __cc != 0;
4526}
4527
4528static inline __ATTRS_o_ai int
4529vec_any_ge(vector unsigned short __a, vector unsigned short __b) {
4530 int __cc;
4531 __builtin_s390_vchlhs(__b, __a, &__cc);
4532 return __cc != 0;
4533}
4534
Ulrich Weigand6af25592017-07-17 17:47:35 +00004535// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004536static inline __ATTRS_o_ai int
4537vec_any_ge(vector unsigned short __a, vector bool short __b) {
4538 int __cc;
4539 __builtin_s390_vchlhs((vector unsigned short)__b, __a, &__cc);
4540 return __cc != 0;
4541}
4542
Ulrich Weigand6af25592017-07-17 17:47:35 +00004543// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004544static inline __ATTRS_o_ai int
4545vec_any_ge(vector bool short __a, vector unsigned short __b) {
4546 int __cc;
4547 __builtin_s390_vchlhs(__b, (vector unsigned short)__a, &__cc);
4548 return __cc != 0;
4549}
4550
Ulrich Weigand6af25592017-07-17 17:47:35 +00004551// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004552static inline __ATTRS_o_ai int
4553vec_any_ge(vector bool short __a, vector bool short __b) {
4554 int __cc;
4555 __builtin_s390_vchlhs((vector unsigned short)__b,
4556 (vector unsigned short)__a, &__cc);
4557 return __cc != 0;
4558}
4559
4560static inline __ATTRS_o_ai int
4561vec_any_ge(vector signed int __a, vector signed int __b) {
4562 int __cc;
4563 __builtin_s390_vchfs(__b, __a, &__cc);
4564 return __cc != 0;
4565}
4566
Ulrich Weigand6af25592017-07-17 17:47:35 +00004567// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004568static inline __ATTRS_o_ai int
4569vec_any_ge(vector signed int __a, vector bool int __b) {
4570 int __cc;
4571 __builtin_s390_vchfs((vector signed int)__b, __a, &__cc);
4572 return __cc != 0;
4573}
4574
Ulrich Weigand6af25592017-07-17 17:47:35 +00004575// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004576static inline __ATTRS_o_ai int
4577vec_any_ge(vector bool int __a, vector signed int __b) {
4578 int __cc;
4579 __builtin_s390_vchfs(__b, (vector signed int)__a, &__cc);
4580 return __cc != 0;
4581}
4582
4583static inline __ATTRS_o_ai int
4584vec_any_ge(vector unsigned int __a, vector unsigned int __b) {
4585 int __cc;
4586 __builtin_s390_vchlfs(__b, __a, &__cc);
4587 return __cc != 0;
4588}
4589
Ulrich Weigand6af25592017-07-17 17:47:35 +00004590// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004591static inline __ATTRS_o_ai int
4592vec_any_ge(vector unsigned int __a, vector bool int __b) {
4593 int __cc;
4594 __builtin_s390_vchlfs((vector unsigned int)__b, __a, &__cc);
4595 return __cc != 0;
4596}
4597
Ulrich Weigand6af25592017-07-17 17:47:35 +00004598// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004599static inline __ATTRS_o_ai int
4600vec_any_ge(vector bool int __a, vector unsigned int __b) {
4601 int __cc;
4602 __builtin_s390_vchlfs(__b, (vector unsigned int)__a, &__cc);
4603 return __cc != 0;
4604}
4605
Ulrich Weigand6af25592017-07-17 17:47:35 +00004606// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004607static inline __ATTRS_o_ai int
4608vec_any_ge(vector bool int __a, vector bool int __b) {
4609 int __cc;
4610 __builtin_s390_vchlfs((vector unsigned int)__b,
4611 (vector unsigned int)__a, &__cc);
4612 return __cc != 0;
4613}
4614
4615static inline __ATTRS_o_ai int
4616vec_any_ge(vector signed long long __a, vector signed long long __b) {
4617 int __cc;
4618 __builtin_s390_vchgs(__b, __a, &__cc);
4619 return __cc != 0;
4620}
4621
Ulrich Weigand6af25592017-07-17 17:47:35 +00004622// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004623static inline __ATTRS_o_ai int
4624vec_any_ge(vector signed long long __a, vector bool long long __b) {
4625 int __cc;
4626 __builtin_s390_vchgs((vector signed long long)__b, __a, &__cc);
4627 return __cc != 0;
4628}
4629
Ulrich Weigand6af25592017-07-17 17:47:35 +00004630// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004631static inline __ATTRS_o_ai int
4632vec_any_ge(vector bool long long __a, vector signed long long __b) {
4633 int __cc;
4634 __builtin_s390_vchgs(__b, (vector signed long long)__a, &__cc);
4635 return __cc != 0;
4636}
4637
4638static inline __ATTRS_o_ai int
4639vec_any_ge(vector unsigned long long __a, vector unsigned long long __b) {
4640 int __cc;
4641 __builtin_s390_vchlgs(__b, __a, &__cc);
4642 return __cc != 0;
4643}
4644
Ulrich Weigand6af25592017-07-17 17:47:35 +00004645// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004646static inline __ATTRS_o_ai int
4647vec_any_ge(vector unsigned long long __a, vector bool long long __b) {
4648 int __cc;
4649 __builtin_s390_vchlgs((vector unsigned long long)__b, __a, &__cc);
4650 return __cc != 0;
4651}
4652
Ulrich Weigand6af25592017-07-17 17:47:35 +00004653// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004654static inline __ATTRS_o_ai int
4655vec_any_ge(vector bool long long __a, vector unsigned long long __b) {
4656 int __cc;
4657 __builtin_s390_vchlgs(__b, (vector unsigned long long)__a, &__cc);
4658 return __cc != 0;
4659}
4660
Ulrich Weigand6af25592017-07-17 17:47:35 +00004661// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004662static inline __ATTRS_o_ai int
4663vec_any_ge(vector bool long long __a, vector bool long long __b) {
4664 int __cc;
4665 __builtin_s390_vchlgs((vector unsigned long long)__b,
4666 (vector unsigned long long)__a, &__cc);
4667 return __cc != 0;
4668}
4669
Ulrich Weigand6af25592017-07-17 17:47:35 +00004670#if __ARCH__ >= 12
4671static inline __ATTRS_o_ai int
4672vec_any_ge(vector float __a, vector float __b) {
4673 int __cc;
4674 __builtin_s390_vfchesbs(__a, __b, &__cc);
4675 return __cc <= 1;
4676}
4677#endif
4678
Ulrich Weigandca256432015-07-30 14:10:43 +00004679static inline __ATTRS_o_ai int
4680vec_any_ge(vector double __a, vector double __b) {
4681 int __cc;
4682 __builtin_s390_vfchedbs(__a, __b, &__cc);
4683 return __cc <= 1;
4684}
4685
4686/*-- vec_any_gt -------------------------------------------------------------*/
4687
4688static inline __ATTRS_o_ai int
4689vec_any_gt(vector signed char __a, vector signed char __b) {
4690 int __cc;
4691 __builtin_s390_vchbs(__a, __b, &__cc);
4692 return __cc <= 1;
4693}
4694
Ulrich Weigand6af25592017-07-17 17:47:35 +00004695// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004696static inline __ATTRS_o_ai int
4697vec_any_gt(vector signed char __a, vector bool char __b) {
4698 int __cc;
4699 __builtin_s390_vchbs(__a, (vector signed char)__b, &__cc);
4700 return __cc <= 1;
4701}
4702
Ulrich Weigand6af25592017-07-17 17:47:35 +00004703// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004704static inline __ATTRS_o_ai int
4705vec_any_gt(vector bool char __a, vector signed char __b) {
4706 int __cc;
4707 __builtin_s390_vchbs((vector signed char)__a, __b, &__cc);
4708 return __cc <= 1;
4709}
4710
4711static inline __ATTRS_o_ai int
4712vec_any_gt(vector unsigned char __a, vector unsigned char __b) {
4713 int __cc;
4714 __builtin_s390_vchlbs(__a, __b, &__cc);
4715 return __cc <= 1;
4716}
4717
Ulrich Weigand6af25592017-07-17 17:47:35 +00004718// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004719static inline __ATTRS_o_ai int
4720vec_any_gt(vector unsigned char __a, vector bool char __b) {
4721 int __cc;
4722 __builtin_s390_vchlbs(__a, (vector unsigned char)__b, &__cc);
4723 return __cc <= 1;
4724}
4725
Ulrich Weigand6af25592017-07-17 17:47:35 +00004726// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004727static inline __ATTRS_o_ai int
4728vec_any_gt(vector bool char __a, vector unsigned char __b) {
4729 int __cc;
4730 __builtin_s390_vchlbs((vector unsigned char)__a, __b, &__cc);
4731 return __cc <= 1;
4732}
4733
Ulrich Weigand6af25592017-07-17 17:47:35 +00004734// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004735static inline __ATTRS_o_ai int
4736vec_any_gt(vector bool char __a, vector bool char __b) {
4737 int __cc;
4738 __builtin_s390_vchlbs((vector unsigned char)__a,
4739 (vector unsigned char)__b, &__cc);
4740 return __cc <= 1;
4741}
4742
4743static inline __ATTRS_o_ai int
4744vec_any_gt(vector signed short __a, vector signed short __b) {
4745 int __cc;
4746 __builtin_s390_vchhs(__a, __b, &__cc);
4747 return __cc <= 1;
4748}
4749
Ulrich Weigand6af25592017-07-17 17:47:35 +00004750// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004751static inline __ATTRS_o_ai int
4752vec_any_gt(vector signed short __a, vector bool short __b) {
4753 int __cc;
4754 __builtin_s390_vchhs(__a, (vector signed short)__b, &__cc);
4755 return __cc <= 1;
4756}
4757
Ulrich Weigand6af25592017-07-17 17:47:35 +00004758// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004759static inline __ATTRS_o_ai int
4760vec_any_gt(vector bool short __a, vector signed short __b) {
4761 int __cc;
4762 __builtin_s390_vchhs((vector signed short)__a, __b, &__cc);
4763 return __cc <= 1;
4764}
4765
4766static inline __ATTRS_o_ai int
4767vec_any_gt(vector unsigned short __a, vector unsigned short __b) {
4768 int __cc;
4769 __builtin_s390_vchlhs(__a, __b, &__cc);
4770 return __cc <= 1;
4771}
4772
Ulrich Weigand6af25592017-07-17 17:47:35 +00004773// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004774static inline __ATTRS_o_ai int
4775vec_any_gt(vector unsigned short __a, vector bool short __b) {
4776 int __cc;
4777 __builtin_s390_vchlhs(__a, (vector unsigned short)__b, &__cc);
4778 return __cc <= 1;
4779}
4780
Ulrich Weigand6af25592017-07-17 17:47:35 +00004781// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004782static inline __ATTRS_o_ai int
4783vec_any_gt(vector bool short __a, vector unsigned short __b) {
4784 int __cc;
4785 __builtin_s390_vchlhs((vector unsigned short)__a, __b, &__cc);
4786 return __cc <= 1;
4787}
4788
Ulrich Weigand6af25592017-07-17 17:47:35 +00004789// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004790static inline __ATTRS_o_ai int
4791vec_any_gt(vector bool short __a, vector bool short __b) {
4792 int __cc;
4793 __builtin_s390_vchlhs((vector unsigned short)__a,
4794 (vector unsigned short)__b, &__cc);
4795 return __cc <= 1;
4796}
4797
4798static inline __ATTRS_o_ai int
4799vec_any_gt(vector signed int __a, vector signed int __b) {
4800 int __cc;
4801 __builtin_s390_vchfs(__a, __b, &__cc);
4802 return __cc <= 1;
4803}
4804
Ulrich Weigand6af25592017-07-17 17:47:35 +00004805// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004806static inline __ATTRS_o_ai int
4807vec_any_gt(vector signed int __a, vector bool int __b) {
4808 int __cc;
4809 __builtin_s390_vchfs(__a, (vector signed int)__b, &__cc);
4810 return __cc <= 1;
4811}
4812
Ulrich Weigand6af25592017-07-17 17:47:35 +00004813// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004814static inline __ATTRS_o_ai int
4815vec_any_gt(vector bool int __a, vector signed int __b) {
4816 int __cc;
4817 __builtin_s390_vchfs((vector signed int)__a, __b, &__cc);
4818 return __cc <= 1;
4819}
4820
4821static inline __ATTRS_o_ai int
4822vec_any_gt(vector unsigned int __a, vector unsigned int __b) {
4823 int __cc;
4824 __builtin_s390_vchlfs(__a, __b, &__cc);
4825 return __cc <= 1;
4826}
4827
Ulrich Weigand6af25592017-07-17 17:47:35 +00004828// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004829static inline __ATTRS_o_ai int
4830vec_any_gt(vector unsigned int __a, vector bool int __b) {
4831 int __cc;
4832 __builtin_s390_vchlfs(__a, (vector unsigned int)__b, &__cc);
4833 return __cc <= 1;
4834}
4835
Ulrich Weigand6af25592017-07-17 17:47:35 +00004836// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004837static inline __ATTRS_o_ai int
4838vec_any_gt(vector bool int __a, vector unsigned int __b) {
4839 int __cc;
4840 __builtin_s390_vchlfs((vector unsigned int)__a, __b, &__cc);
4841 return __cc <= 1;
4842}
4843
Ulrich Weigand6af25592017-07-17 17:47:35 +00004844// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004845static inline __ATTRS_o_ai int
4846vec_any_gt(vector bool int __a, vector bool int __b) {
4847 int __cc;
4848 __builtin_s390_vchlfs((vector unsigned int)__a,
4849 (vector unsigned int)__b, &__cc);
4850 return __cc <= 1;
4851}
4852
4853static inline __ATTRS_o_ai int
4854vec_any_gt(vector signed long long __a, vector signed long long __b) {
4855 int __cc;
4856 __builtin_s390_vchgs(__a, __b, &__cc);
4857 return __cc <= 1;
4858}
4859
Ulrich Weigand6af25592017-07-17 17:47:35 +00004860// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004861static inline __ATTRS_o_ai int
4862vec_any_gt(vector signed long long __a, vector bool long long __b) {
4863 int __cc;
4864 __builtin_s390_vchgs(__a, (vector signed long long)__b, &__cc);
4865 return __cc <= 1;
4866}
4867
Ulrich Weigand6af25592017-07-17 17:47:35 +00004868// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004869static inline __ATTRS_o_ai int
4870vec_any_gt(vector bool long long __a, vector signed long long __b) {
4871 int __cc;
4872 __builtin_s390_vchgs((vector signed long long)__a, __b, &__cc);
4873 return __cc <= 1;
4874}
4875
4876static inline __ATTRS_o_ai int
4877vec_any_gt(vector unsigned long long __a, vector unsigned long long __b) {
4878 int __cc;
4879 __builtin_s390_vchlgs(__a, __b, &__cc);
4880 return __cc <= 1;
4881}
4882
Ulrich Weigand6af25592017-07-17 17:47:35 +00004883// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004884static inline __ATTRS_o_ai int
4885vec_any_gt(vector unsigned long long __a, vector bool long long __b) {
4886 int __cc;
4887 __builtin_s390_vchlgs(__a, (vector unsigned long long)__b, &__cc);
4888 return __cc <= 1;
4889}
4890
Ulrich Weigand6af25592017-07-17 17:47:35 +00004891// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004892static inline __ATTRS_o_ai int
4893vec_any_gt(vector bool long long __a, vector unsigned long long __b) {
4894 int __cc;
4895 __builtin_s390_vchlgs((vector unsigned long long)__a, __b, &__cc);
4896 return __cc <= 1;
4897}
4898
Ulrich Weigand6af25592017-07-17 17:47:35 +00004899// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004900static inline __ATTRS_o_ai int
4901vec_any_gt(vector bool long long __a, vector bool long long __b) {
4902 int __cc;
4903 __builtin_s390_vchlgs((vector unsigned long long)__a,
4904 (vector unsigned long long)__b, &__cc);
4905 return __cc <= 1;
4906}
4907
Ulrich Weigand6af25592017-07-17 17:47:35 +00004908#if __ARCH__ >= 12
4909static inline __ATTRS_o_ai int
4910vec_any_gt(vector float __a, vector float __b) {
4911 int __cc;
4912 __builtin_s390_vfchsbs(__a, __b, &__cc);
4913 return __cc <= 1;
4914}
4915#endif
4916
Ulrich Weigandca256432015-07-30 14:10:43 +00004917static inline __ATTRS_o_ai int
4918vec_any_gt(vector double __a, vector double __b) {
4919 int __cc;
4920 __builtin_s390_vfchdbs(__a, __b, &__cc);
4921 return __cc <= 1;
4922}
4923
4924/*-- vec_any_le -------------------------------------------------------------*/
4925
4926static inline __ATTRS_o_ai int
4927vec_any_le(vector signed char __a, vector signed char __b) {
4928 int __cc;
4929 __builtin_s390_vchbs(__a, __b, &__cc);
4930 return __cc != 0;
4931}
4932
Ulrich Weigand6af25592017-07-17 17:47:35 +00004933// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004934static inline __ATTRS_o_ai int
4935vec_any_le(vector signed char __a, vector bool char __b) {
4936 int __cc;
4937 __builtin_s390_vchbs(__a, (vector signed char)__b, &__cc);
4938 return __cc != 0;
4939}
4940
Ulrich Weigand6af25592017-07-17 17:47:35 +00004941// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004942static inline __ATTRS_o_ai int
4943vec_any_le(vector bool char __a, vector signed char __b) {
4944 int __cc;
4945 __builtin_s390_vchbs((vector signed char)__a, __b, &__cc);
4946 return __cc != 0;
4947}
4948
4949static inline __ATTRS_o_ai int
4950vec_any_le(vector unsigned char __a, vector unsigned char __b) {
4951 int __cc;
4952 __builtin_s390_vchlbs(__a, __b, &__cc);
4953 return __cc != 0;
4954}
4955
Ulrich Weigand6af25592017-07-17 17:47:35 +00004956// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004957static inline __ATTRS_o_ai int
4958vec_any_le(vector unsigned char __a, vector bool char __b) {
4959 int __cc;
4960 __builtin_s390_vchlbs(__a, (vector unsigned char)__b, &__cc);
4961 return __cc != 0;
4962}
4963
Ulrich Weigand6af25592017-07-17 17:47:35 +00004964// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004965static inline __ATTRS_o_ai int
4966vec_any_le(vector bool char __a, vector unsigned char __b) {
4967 int __cc;
4968 __builtin_s390_vchlbs((vector unsigned char)__a, __b, &__cc);
4969 return __cc != 0;
4970}
4971
Ulrich Weigand6af25592017-07-17 17:47:35 +00004972// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004973static inline __ATTRS_o_ai int
4974vec_any_le(vector bool char __a, vector bool char __b) {
4975 int __cc;
4976 __builtin_s390_vchlbs((vector unsigned char)__a,
4977 (vector unsigned char)__b, &__cc);
4978 return __cc != 0;
4979}
4980
4981static inline __ATTRS_o_ai int
4982vec_any_le(vector signed short __a, vector signed short __b) {
4983 int __cc;
4984 __builtin_s390_vchhs(__a, __b, &__cc);
4985 return __cc != 0;
4986}
4987
Ulrich Weigand6af25592017-07-17 17:47:35 +00004988// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004989static inline __ATTRS_o_ai int
4990vec_any_le(vector signed short __a, vector bool short __b) {
4991 int __cc;
4992 __builtin_s390_vchhs(__a, (vector signed short)__b, &__cc);
4993 return __cc != 0;
4994}
4995
Ulrich Weigand6af25592017-07-17 17:47:35 +00004996// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00004997static inline __ATTRS_o_ai int
4998vec_any_le(vector bool short __a, vector signed short __b) {
4999 int __cc;
5000 __builtin_s390_vchhs((vector signed short)__a, __b, &__cc);
5001 return __cc != 0;
5002}
5003
5004static inline __ATTRS_o_ai int
5005vec_any_le(vector unsigned short __a, vector unsigned short __b) {
5006 int __cc;
5007 __builtin_s390_vchlhs(__a, __b, &__cc);
5008 return __cc != 0;
5009}
5010
Ulrich Weigand6af25592017-07-17 17:47:35 +00005011// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005012static inline __ATTRS_o_ai int
5013vec_any_le(vector unsigned short __a, vector bool short __b) {
5014 int __cc;
5015 __builtin_s390_vchlhs(__a, (vector unsigned short)__b, &__cc);
5016 return __cc != 0;
5017}
5018
Ulrich Weigand6af25592017-07-17 17:47:35 +00005019// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005020static inline __ATTRS_o_ai int
5021vec_any_le(vector bool short __a, vector unsigned short __b) {
5022 int __cc;
5023 __builtin_s390_vchlhs((vector unsigned short)__a, __b, &__cc);
5024 return __cc != 0;
5025}
5026
Ulrich Weigand6af25592017-07-17 17:47:35 +00005027// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005028static inline __ATTRS_o_ai int
5029vec_any_le(vector bool short __a, vector bool short __b) {
5030 int __cc;
5031 __builtin_s390_vchlhs((vector unsigned short)__a,
5032 (vector unsigned short)__b, &__cc);
5033 return __cc != 0;
5034}
5035
5036static inline __ATTRS_o_ai int
5037vec_any_le(vector signed int __a, vector signed int __b) {
5038 int __cc;
5039 __builtin_s390_vchfs(__a, __b, &__cc);
5040 return __cc != 0;
5041}
5042
Ulrich Weigand6af25592017-07-17 17:47:35 +00005043// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005044static inline __ATTRS_o_ai int
5045vec_any_le(vector signed int __a, vector bool int __b) {
5046 int __cc;
5047 __builtin_s390_vchfs(__a, (vector signed int)__b, &__cc);
5048 return __cc != 0;
5049}
5050
Ulrich Weigand6af25592017-07-17 17:47:35 +00005051// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005052static inline __ATTRS_o_ai int
5053vec_any_le(vector bool int __a, vector signed int __b) {
5054 int __cc;
5055 __builtin_s390_vchfs((vector signed int)__a, __b, &__cc);
5056 return __cc != 0;
5057}
5058
5059static inline __ATTRS_o_ai int
5060vec_any_le(vector unsigned int __a, vector unsigned int __b) {
5061 int __cc;
5062 __builtin_s390_vchlfs(__a, __b, &__cc);
5063 return __cc != 0;
5064}
5065
Ulrich Weigand6af25592017-07-17 17:47:35 +00005066// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005067static inline __ATTRS_o_ai int
5068vec_any_le(vector unsigned int __a, vector bool int __b) {
5069 int __cc;
5070 __builtin_s390_vchlfs(__a, (vector unsigned int)__b, &__cc);
5071 return __cc != 0;
5072}
5073
Ulrich Weigand6af25592017-07-17 17:47:35 +00005074// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005075static inline __ATTRS_o_ai int
5076vec_any_le(vector bool int __a, vector unsigned int __b) {
5077 int __cc;
5078 __builtin_s390_vchlfs((vector unsigned int)__a, __b, &__cc);
5079 return __cc != 0;
5080}
5081
Ulrich Weigand6af25592017-07-17 17:47:35 +00005082// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005083static inline __ATTRS_o_ai int
5084vec_any_le(vector bool int __a, vector bool int __b) {
5085 int __cc;
5086 __builtin_s390_vchlfs((vector unsigned int)__a,
5087 (vector unsigned int)__b, &__cc);
5088 return __cc != 0;
5089}
5090
5091static inline __ATTRS_o_ai int
5092vec_any_le(vector signed long long __a, vector signed long long __b) {
5093 int __cc;
5094 __builtin_s390_vchgs(__a, __b, &__cc);
5095 return __cc != 0;
5096}
5097
Ulrich Weigand6af25592017-07-17 17:47:35 +00005098// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005099static inline __ATTRS_o_ai int
5100vec_any_le(vector signed long long __a, vector bool long long __b) {
5101 int __cc;
5102 __builtin_s390_vchgs(__a, (vector signed long long)__b, &__cc);
5103 return __cc != 0;
5104}
5105
Ulrich Weigand6af25592017-07-17 17:47:35 +00005106// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005107static inline __ATTRS_o_ai int
5108vec_any_le(vector bool long long __a, vector signed long long __b) {
5109 int __cc;
5110 __builtin_s390_vchgs((vector signed long long)__a, __b, &__cc);
5111 return __cc != 0;
5112}
5113
5114static inline __ATTRS_o_ai int
5115vec_any_le(vector unsigned long long __a, vector unsigned long long __b) {
5116 int __cc;
5117 __builtin_s390_vchlgs(__a, __b, &__cc);
5118 return __cc != 0;
5119}
5120
Ulrich Weigand6af25592017-07-17 17:47:35 +00005121// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005122static inline __ATTRS_o_ai int
5123vec_any_le(vector unsigned long long __a, vector bool long long __b) {
5124 int __cc;
5125 __builtin_s390_vchlgs(__a, (vector unsigned long long)__b, &__cc);
5126 return __cc != 0;
5127}
5128
Ulrich Weigand6af25592017-07-17 17:47:35 +00005129// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005130static inline __ATTRS_o_ai int
5131vec_any_le(vector bool long long __a, vector unsigned long long __b) {
5132 int __cc;
5133 __builtin_s390_vchlgs((vector unsigned long long)__a, __b, &__cc);
5134 return __cc != 0;
5135}
5136
Ulrich Weigand6af25592017-07-17 17:47:35 +00005137// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005138static inline __ATTRS_o_ai int
5139vec_any_le(vector bool long long __a, vector bool long long __b) {
5140 int __cc;
5141 __builtin_s390_vchlgs((vector unsigned long long)__a,
5142 (vector unsigned long long)__b, &__cc);
5143 return __cc != 0;
5144}
5145
Ulrich Weigand6af25592017-07-17 17:47:35 +00005146#if __ARCH__ >= 12
5147static inline __ATTRS_o_ai int
5148vec_any_le(vector float __a, vector float __b) {
5149 int __cc;
5150 __builtin_s390_vfchesbs(__b, __a, &__cc);
5151 return __cc <= 1;
5152}
5153#endif
5154
Ulrich Weigandca256432015-07-30 14:10:43 +00005155static inline __ATTRS_o_ai int
5156vec_any_le(vector double __a, vector double __b) {
5157 int __cc;
5158 __builtin_s390_vfchedbs(__b, __a, &__cc);
5159 return __cc <= 1;
5160}
5161
5162/*-- vec_any_lt -------------------------------------------------------------*/
5163
5164static inline __ATTRS_o_ai int
5165vec_any_lt(vector signed char __a, vector signed char __b) {
5166 int __cc;
5167 __builtin_s390_vchbs(__b, __a, &__cc);
5168 return __cc <= 1;
5169}
5170
Ulrich Weigand6af25592017-07-17 17:47:35 +00005171// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005172static inline __ATTRS_o_ai int
5173vec_any_lt(vector signed char __a, vector bool char __b) {
5174 int __cc;
5175 __builtin_s390_vchbs((vector signed char)__b, __a, &__cc);
5176 return __cc <= 1;
5177}
5178
Ulrich Weigand6af25592017-07-17 17:47:35 +00005179// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005180static inline __ATTRS_o_ai int
5181vec_any_lt(vector bool char __a, vector signed char __b) {
5182 int __cc;
5183 __builtin_s390_vchbs(__b, (vector signed char)__a, &__cc);
5184 return __cc <= 1;
5185}
5186
5187static inline __ATTRS_o_ai int
5188vec_any_lt(vector unsigned char __a, vector unsigned char __b) {
5189 int __cc;
5190 __builtin_s390_vchlbs(__b, __a, &__cc);
5191 return __cc <= 1;
5192}
5193
Ulrich Weigand6af25592017-07-17 17:47:35 +00005194// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005195static inline __ATTRS_o_ai int
5196vec_any_lt(vector unsigned char __a, vector bool char __b) {
5197 int __cc;
5198 __builtin_s390_vchlbs((vector unsigned char)__b, __a, &__cc);
5199 return __cc <= 1;
5200}
5201
Ulrich Weigand6af25592017-07-17 17:47:35 +00005202// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005203static inline __ATTRS_o_ai int
5204vec_any_lt(vector bool char __a, vector unsigned char __b) {
5205 int __cc;
5206 __builtin_s390_vchlbs(__b, (vector unsigned char)__a, &__cc);
5207 return __cc <= 1;
5208}
5209
Ulrich Weigand6af25592017-07-17 17:47:35 +00005210// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005211static inline __ATTRS_o_ai int
5212vec_any_lt(vector bool char __a, vector bool char __b) {
5213 int __cc;
5214 __builtin_s390_vchlbs((vector unsigned char)__b,
5215 (vector unsigned char)__a, &__cc);
5216 return __cc <= 1;
5217}
5218
5219static inline __ATTRS_o_ai int
5220vec_any_lt(vector signed short __a, vector signed short __b) {
5221 int __cc;
5222 __builtin_s390_vchhs(__b, __a, &__cc);
5223 return __cc <= 1;
5224}
5225
Ulrich Weigand6af25592017-07-17 17:47:35 +00005226// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005227static inline __ATTRS_o_ai int
5228vec_any_lt(vector signed short __a, vector bool short __b) {
5229 int __cc;
5230 __builtin_s390_vchhs((vector signed short)__b, __a, &__cc);
5231 return __cc <= 1;
5232}
5233
Ulrich Weigand6af25592017-07-17 17:47:35 +00005234// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005235static inline __ATTRS_o_ai int
5236vec_any_lt(vector bool short __a, vector signed short __b) {
5237 int __cc;
5238 __builtin_s390_vchhs(__b, (vector signed short)__a, &__cc);
5239 return __cc <= 1;
5240}
5241
5242static inline __ATTRS_o_ai int
5243vec_any_lt(vector unsigned short __a, vector unsigned short __b) {
5244 int __cc;
5245 __builtin_s390_vchlhs(__b, __a, &__cc);
5246 return __cc <= 1;
5247}
5248
Ulrich Weigand6af25592017-07-17 17:47:35 +00005249// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005250static inline __ATTRS_o_ai int
5251vec_any_lt(vector unsigned short __a, vector bool short __b) {
5252 int __cc;
5253 __builtin_s390_vchlhs((vector unsigned short)__b, __a, &__cc);
5254 return __cc <= 1;
5255}
5256
Ulrich Weigand6af25592017-07-17 17:47:35 +00005257// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005258static inline __ATTRS_o_ai int
5259vec_any_lt(vector bool short __a, vector unsigned short __b) {
5260 int __cc;
5261 __builtin_s390_vchlhs(__b, (vector unsigned short)__a, &__cc);
5262 return __cc <= 1;
5263}
5264
Ulrich Weigand6af25592017-07-17 17:47:35 +00005265// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005266static inline __ATTRS_o_ai int
5267vec_any_lt(vector bool short __a, vector bool short __b) {
5268 int __cc;
5269 __builtin_s390_vchlhs((vector unsigned short)__b,
5270 (vector unsigned short)__a, &__cc);
5271 return __cc <= 1;
5272}
5273
5274static inline __ATTRS_o_ai int
5275vec_any_lt(vector signed int __a, vector signed int __b) {
5276 int __cc;
5277 __builtin_s390_vchfs(__b, __a, &__cc);
5278 return __cc <= 1;
5279}
5280
Ulrich Weigand6af25592017-07-17 17:47:35 +00005281// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005282static inline __ATTRS_o_ai int
5283vec_any_lt(vector signed int __a, vector bool int __b) {
5284 int __cc;
5285 __builtin_s390_vchfs((vector signed int)__b, __a, &__cc);
5286 return __cc <= 1;
5287}
5288
Ulrich Weigand6af25592017-07-17 17:47:35 +00005289// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005290static inline __ATTRS_o_ai int
5291vec_any_lt(vector bool int __a, vector signed int __b) {
5292 int __cc;
5293 __builtin_s390_vchfs(__b, (vector signed int)__a, &__cc);
5294 return __cc <= 1;
5295}
5296
5297static inline __ATTRS_o_ai int
5298vec_any_lt(vector unsigned int __a, vector unsigned int __b) {
5299 int __cc;
5300 __builtin_s390_vchlfs(__b, __a, &__cc);
5301 return __cc <= 1;
5302}
5303
Ulrich Weigand6af25592017-07-17 17:47:35 +00005304// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005305static inline __ATTRS_o_ai int
5306vec_any_lt(vector unsigned int __a, vector bool int __b) {
5307 int __cc;
5308 __builtin_s390_vchlfs((vector unsigned int)__b, __a, &__cc);
5309 return __cc <= 1;
5310}
5311
Ulrich Weigand6af25592017-07-17 17:47:35 +00005312// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005313static inline __ATTRS_o_ai int
5314vec_any_lt(vector bool int __a, vector unsigned int __b) {
5315 int __cc;
5316 __builtin_s390_vchlfs(__b, (vector unsigned int)__a, &__cc);
5317 return __cc <= 1;
5318}
5319
Ulrich Weigand6af25592017-07-17 17:47:35 +00005320// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005321static inline __ATTRS_o_ai int
5322vec_any_lt(vector bool int __a, vector bool int __b) {
5323 int __cc;
5324 __builtin_s390_vchlfs((vector unsigned int)__b,
5325 (vector unsigned int)__a, &__cc);
5326 return __cc <= 1;
5327}
5328
5329static inline __ATTRS_o_ai int
5330vec_any_lt(vector signed long long __a, vector signed long long __b) {
5331 int __cc;
5332 __builtin_s390_vchgs(__b, __a, &__cc);
5333 return __cc <= 1;
5334}
5335
Ulrich Weigand6af25592017-07-17 17:47:35 +00005336// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005337static inline __ATTRS_o_ai int
5338vec_any_lt(vector signed long long __a, vector bool long long __b) {
5339 int __cc;
5340 __builtin_s390_vchgs((vector signed long long)__b, __a, &__cc);
5341 return __cc <= 1;
5342}
5343
Ulrich Weigand6af25592017-07-17 17:47:35 +00005344// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005345static inline __ATTRS_o_ai int
5346vec_any_lt(vector bool long long __a, vector signed long long __b) {
5347 int __cc;
5348 __builtin_s390_vchgs(__b, (vector signed long long)__a, &__cc);
5349 return __cc <= 1;
5350}
5351
5352static inline __ATTRS_o_ai int
5353vec_any_lt(vector unsigned long long __a, vector unsigned long long __b) {
5354 int __cc;
5355 __builtin_s390_vchlgs(__b, __a, &__cc);
5356 return __cc <= 1;
5357}
5358
Ulrich Weigand6af25592017-07-17 17:47:35 +00005359// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005360static inline __ATTRS_o_ai int
5361vec_any_lt(vector unsigned long long __a, vector bool long long __b) {
5362 int __cc;
5363 __builtin_s390_vchlgs((vector unsigned long long)__b, __a, &__cc);
5364 return __cc <= 1;
5365}
5366
Ulrich Weigand6af25592017-07-17 17:47:35 +00005367// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005368static inline __ATTRS_o_ai int
5369vec_any_lt(vector bool long long __a, vector unsigned long long __b) {
5370 int __cc;
5371 __builtin_s390_vchlgs(__b, (vector unsigned long long)__a, &__cc);
5372 return __cc <= 1;
5373}
5374
Ulrich Weigand6af25592017-07-17 17:47:35 +00005375// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005376static inline __ATTRS_o_ai int
5377vec_any_lt(vector bool long long __a, vector bool long long __b) {
5378 int __cc;
5379 __builtin_s390_vchlgs((vector unsigned long long)__b,
5380 (vector unsigned long long)__a, &__cc);
5381 return __cc <= 1;
5382}
5383
Ulrich Weigand6af25592017-07-17 17:47:35 +00005384#if __ARCH__ >= 12
5385static inline __ATTRS_o_ai int
5386vec_any_lt(vector float __a, vector float __b) {
5387 int __cc;
5388 __builtin_s390_vfchsbs(__b, __a, &__cc);
5389 return __cc <= 1;
5390}
5391#endif
5392
Ulrich Weigandca256432015-07-30 14:10:43 +00005393static inline __ATTRS_o_ai int
5394vec_any_lt(vector double __a, vector double __b) {
5395 int __cc;
5396 __builtin_s390_vfchdbs(__b, __a, &__cc);
5397 return __cc <= 1;
5398}
5399
5400/*-- vec_any_nge ------------------------------------------------------------*/
5401
Ulrich Weigand6af25592017-07-17 17:47:35 +00005402#if __ARCH__ >= 12
5403static inline __ATTRS_o_ai int
5404vec_any_nge(vector float __a, vector float __b) {
5405 int __cc;
5406 __builtin_s390_vfchesbs(__a, __b, &__cc);
5407 return __cc != 0;
5408}
5409#endif
5410
5411static inline __ATTRS_o_ai int
Ulrich Weigandca256432015-07-30 14:10:43 +00005412vec_any_nge(vector double __a, vector double __b) {
5413 int __cc;
5414 __builtin_s390_vfchedbs(__a, __b, &__cc);
5415 return __cc != 0;
5416}
5417
5418/*-- vec_any_ngt ------------------------------------------------------------*/
5419
Ulrich Weigand6af25592017-07-17 17:47:35 +00005420#if __ARCH__ >= 12
5421static inline __ATTRS_o_ai int
5422vec_any_ngt(vector float __a, vector float __b) {
5423 int __cc;
5424 __builtin_s390_vfchsbs(__a, __b, &__cc);
5425 return __cc != 0;
5426}
5427#endif
5428
5429static inline __ATTRS_o_ai int
Ulrich Weigandca256432015-07-30 14:10:43 +00005430vec_any_ngt(vector double __a, vector double __b) {
5431 int __cc;
5432 __builtin_s390_vfchdbs(__a, __b, &__cc);
5433 return __cc != 0;
5434}
5435
5436/*-- vec_any_nle ------------------------------------------------------------*/
5437
Ulrich Weigand6af25592017-07-17 17:47:35 +00005438#if __ARCH__ >= 12
5439static inline __ATTRS_o_ai int
5440vec_any_nle(vector float __a, vector float __b) {
5441 int __cc;
5442 __builtin_s390_vfchesbs(__b, __a, &__cc);
5443 return __cc != 0;
5444}
5445#endif
5446
5447static inline __ATTRS_o_ai int
Ulrich Weigandca256432015-07-30 14:10:43 +00005448vec_any_nle(vector double __a, vector double __b) {
5449 int __cc;
5450 __builtin_s390_vfchedbs(__b, __a, &__cc);
5451 return __cc != 0;
5452}
5453
5454/*-- vec_any_nlt ------------------------------------------------------------*/
5455
Ulrich Weigand6af25592017-07-17 17:47:35 +00005456#if __ARCH__ >= 12
5457static inline __ATTRS_o_ai int
5458vec_any_nlt(vector float __a, vector float __b) {
5459 int __cc;
5460 __builtin_s390_vfchsbs(__b, __a, &__cc);
5461 return __cc != 0;
5462}
5463#endif
5464
5465static inline __ATTRS_o_ai int
Ulrich Weigandca256432015-07-30 14:10:43 +00005466vec_any_nlt(vector double __a, vector double __b) {
5467 int __cc;
5468 __builtin_s390_vfchdbs(__b, __a, &__cc);
5469 return __cc != 0;
5470}
5471
5472/*-- vec_any_nan ------------------------------------------------------------*/
5473
Ulrich Weigand6af25592017-07-17 17:47:35 +00005474#if __ARCH__ >= 12
5475static inline __ATTRS_o_ai int
5476vec_any_nan(vector float __a) {
5477 int __cc;
5478 __builtin_s390_vftcisb(__a, 15, &__cc);
5479 return __cc != 3;
5480}
5481#endif
5482
5483static inline __ATTRS_o_ai int
Ulrich Weigandca256432015-07-30 14:10:43 +00005484vec_any_nan(vector double __a) {
5485 int __cc;
5486 __builtin_s390_vftcidb(__a, 15, &__cc);
5487 return __cc != 3;
5488}
5489
5490/*-- vec_any_numeric --------------------------------------------------------*/
5491
Ulrich Weigand6af25592017-07-17 17:47:35 +00005492#if __ARCH__ >= 12
5493static inline __ATTRS_o_ai int
5494vec_any_numeric(vector float __a) {
5495 int __cc;
5496 __builtin_s390_vftcisb(__a, 15, &__cc);
5497 return __cc != 0;
5498}
5499#endif
5500
5501static inline __ATTRS_o_ai int
Ulrich Weigandca256432015-07-30 14:10:43 +00005502vec_any_numeric(vector double __a) {
5503 int __cc;
5504 __builtin_s390_vftcidb(__a, 15, &__cc);
5505 return __cc != 0;
5506}
5507
5508/*-- vec_andc ---------------------------------------------------------------*/
5509
5510static inline __ATTRS_o_ai vector bool char
5511vec_andc(vector bool char __a, vector bool char __b) {
5512 return __a & ~__b;
5513}
5514
5515static inline __ATTRS_o_ai vector signed char
5516vec_andc(vector signed char __a, vector signed char __b) {
5517 return __a & ~__b;
5518}
5519
Ulrich Weigand6af25592017-07-17 17:47:35 +00005520// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005521static inline __ATTRS_o_ai vector signed char
5522vec_andc(vector bool char __a, vector signed char __b) {
5523 return __a & ~__b;
5524}
5525
Ulrich Weigand6af25592017-07-17 17:47:35 +00005526// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005527static inline __ATTRS_o_ai vector signed char
5528vec_andc(vector signed char __a, vector bool char __b) {
5529 return __a & ~__b;
5530}
5531
5532static inline __ATTRS_o_ai vector unsigned char
5533vec_andc(vector unsigned char __a, vector unsigned char __b) {
5534 return __a & ~__b;
5535}
5536
Ulrich Weigand6af25592017-07-17 17:47:35 +00005537// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005538static inline __ATTRS_o_ai vector unsigned char
5539vec_andc(vector bool char __a, vector unsigned char __b) {
5540 return __a & ~__b;
5541}
5542
Ulrich Weigand6af25592017-07-17 17:47:35 +00005543// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005544static inline __ATTRS_o_ai vector unsigned char
5545vec_andc(vector unsigned char __a, vector bool char __b) {
5546 return __a & ~__b;
5547}
5548
5549static inline __ATTRS_o_ai vector bool short
5550vec_andc(vector bool short __a, vector bool short __b) {
5551 return __a & ~__b;
5552}
5553
5554static inline __ATTRS_o_ai vector signed short
5555vec_andc(vector signed short __a, vector signed short __b) {
5556 return __a & ~__b;
5557}
5558
Ulrich Weigand6af25592017-07-17 17:47:35 +00005559// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005560static inline __ATTRS_o_ai vector signed short
5561vec_andc(vector bool short __a, vector signed short __b) {
5562 return __a & ~__b;
5563}
5564
Ulrich Weigand6af25592017-07-17 17:47:35 +00005565// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005566static inline __ATTRS_o_ai vector signed short
5567vec_andc(vector signed short __a, vector bool short __b) {
5568 return __a & ~__b;
5569}
5570
5571static inline __ATTRS_o_ai vector unsigned short
5572vec_andc(vector unsigned short __a, vector unsigned short __b) {
5573 return __a & ~__b;
5574}
5575
Ulrich Weigand6af25592017-07-17 17:47:35 +00005576// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005577static inline __ATTRS_o_ai vector unsigned short
5578vec_andc(vector bool short __a, vector unsigned short __b) {
5579 return __a & ~__b;
5580}
5581
Ulrich Weigand6af25592017-07-17 17:47:35 +00005582// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005583static inline __ATTRS_o_ai vector unsigned short
5584vec_andc(vector unsigned short __a, vector bool short __b) {
5585 return __a & ~__b;
5586}
5587
5588static inline __ATTRS_o_ai vector bool int
5589vec_andc(vector bool int __a, vector bool int __b) {
5590 return __a & ~__b;
5591}
5592
5593static inline __ATTRS_o_ai vector signed int
5594vec_andc(vector signed int __a, vector signed int __b) {
5595 return __a & ~__b;
5596}
5597
Ulrich Weigand6af25592017-07-17 17:47:35 +00005598// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005599static inline __ATTRS_o_ai vector signed int
5600vec_andc(vector bool int __a, vector signed int __b) {
5601 return __a & ~__b;
5602}
5603
Ulrich Weigand6af25592017-07-17 17:47:35 +00005604// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005605static inline __ATTRS_o_ai vector signed int
5606vec_andc(vector signed int __a, vector bool int __b) {
5607 return __a & ~__b;
5608}
5609
5610static inline __ATTRS_o_ai vector unsigned int
5611vec_andc(vector unsigned int __a, vector unsigned int __b) {
5612 return __a & ~__b;
5613}
5614
Ulrich Weigand6af25592017-07-17 17:47:35 +00005615// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005616static inline __ATTRS_o_ai vector unsigned int
5617vec_andc(vector bool int __a, vector unsigned int __b) {
5618 return __a & ~__b;
5619}
5620
Ulrich Weigand6af25592017-07-17 17:47:35 +00005621// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005622static inline __ATTRS_o_ai vector unsigned int
5623vec_andc(vector unsigned int __a, vector bool int __b) {
5624 return __a & ~__b;
5625}
5626
5627static inline __ATTRS_o_ai vector bool long long
5628vec_andc(vector bool long long __a, vector bool long long __b) {
5629 return __a & ~__b;
5630}
5631
5632static inline __ATTRS_o_ai vector signed long long
5633vec_andc(vector signed long long __a, vector signed long long __b) {
5634 return __a & ~__b;
5635}
5636
Ulrich Weigand6af25592017-07-17 17:47:35 +00005637// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005638static inline __ATTRS_o_ai vector signed long long
5639vec_andc(vector bool long long __a, vector signed long long __b) {
5640 return __a & ~__b;
5641}
5642
Ulrich Weigand6af25592017-07-17 17:47:35 +00005643// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005644static inline __ATTRS_o_ai vector signed long long
5645vec_andc(vector signed long long __a, vector bool long long __b) {
5646 return __a & ~__b;
5647}
5648
5649static inline __ATTRS_o_ai vector unsigned long long
5650vec_andc(vector unsigned long long __a, vector unsigned long long __b) {
5651 return __a & ~__b;
5652}
5653
Ulrich Weigand6af25592017-07-17 17:47:35 +00005654// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005655static inline __ATTRS_o_ai vector unsigned long long
5656vec_andc(vector bool long long __a, vector unsigned long long __b) {
5657 return __a & ~__b;
5658}
5659
Ulrich Weigand6af25592017-07-17 17:47:35 +00005660// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005661static inline __ATTRS_o_ai vector unsigned long long
5662vec_andc(vector unsigned long long __a, vector bool long long __b) {
5663 return __a & ~__b;
5664}
5665
Ulrich Weigand6af25592017-07-17 17:47:35 +00005666#if __ARCH__ >= 12
5667static inline __ATTRS_o_ai vector float
5668vec_andc(vector float __a, vector float __b) {
5669 return (vector float)((vector unsigned int)__a &
5670 ~(vector unsigned int)__b);
5671}
5672#endif
5673
Ulrich Weigandca256432015-07-30 14:10:43 +00005674static inline __ATTRS_o_ai vector double
5675vec_andc(vector double __a, vector double __b) {
5676 return (vector double)((vector unsigned long long)__a &
5677 ~(vector unsigned long long)__b);
5678}
5679
Ulrich Weigand6af25592017-07-17 17:47:35 +00005680// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005681static inline __ATTRS_o_ai vector double
5682vec_andc(vector bool long long __a, vector double __b) {
5683 return (vector double)((vector unsigned long long)__a &
5684 ~(vector unsigned long long)__b);
5685}
5686
Ulrich Weigand6af25592017-07-17 17:47:35 +00005687// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005688static inline __ATTRS_o_ai vector double
5689vec_andc(vector double __a, vector bool long long __b) {
5690 return (vector double)((vector unsigned long long)__a &
5691 ~(vector unsigned long long)__b);
5692}
5693
5694/*-- vec_nor ----------------------------------------------------------------*/
5695
5696static inline __ATTRS_o_ai vector bool char
5697vec_nor(vector bool char __a, vector bool char __b) {
5698 return ~(__a | __b);
5699}
5700
5701static inline __ATTRS_o_ai vector signed char
5702vec_nor(vector signed char __a, vector signed char __b) {
5703 return ~(__a | __b);
5704}
5705
Ulrich Weigand6af25592017-07-17 17:47:35 +00005706// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005707static inline __ATTRS_o_ai vector signed char
5708vec_nor(vector bool char __a, vector signed char __b) {
5709 return ~(__a | __b);
5710}
5711
Ulrich Weigand6af25592017-07-17 17:47:35 +00005712// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005713static inline __ATTRS_o_ai vector signed char
5714vec_nor(vector signed char __a, vector bool char __b) {
5715 return ~(__a | __b);
5716}
5717
5718static inline __ATTRS_o_ai vector unsigned char
5719vec_nor(vector unsigned char __a, vector unsigned char __b) {
5720 return ~(__a | __b);
5721}
5722
Ulrich Weigand6af25592017-07-17 17:47:35 +00005723// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005724static inline __ATTRS_o_ai vector unsigned char
5725vec_nor(vector bool char __a, vector unsigned char __b) {
5726 return ~(__a | __b);
5727}
5728
Ulrich Weigand6af25592017-07-17 17:47:35 +00005729// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005730static inline __ATTRS_o_ai vector unsigned char
5731vec_nor(vector unsigned char __a, vector bool char __b) {
5732 return ~(__a | __b);
5733}
5734
5735static inline __ATTRS_o_ai vector bool short
5736vec_nor(vector bool short __a, vector bool short __b) {
5737 return ~(__a | __b);
5738}
5739
5740static inline __ATTRS_o_ai vector signed short
5741vec_nor(vector signed short __a, vector signed short __b) {
5742 return ~(__a | __b);
5743}
5744
Ulrich Weigand6af25592017-07-17 17:47:35 +00005745// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005746static inline __ATTRS_o_ai vector signed short
5747vec_nor(vector bool short __a, vector signed short __b) {
5748 return ~(__a | __b);
5749}
5750
Ulrich Weigand6af25592017-07-17 17:47:35 +00005751// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005752static inline __ATTRS_o_ai vector signed short
5753vec_nor(vector signed short __a, vector bool short __b) {
5754 return ~(__a | __b);
5755}
5756
5757static inline __ATTRS_o_ai vector unsigned short
5758vec_nor(vector unsigned short __a, vector unsigned short __b) {
5759 return ~(__a | __b);
5760}
5761
Ulrich Weigand6af25592017-07-17 17:47:35 +00005762// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005763static inline __ATTRS_o_ai vector unsigned short
5764vec_nor(vector bool short __a, vector unsigned short __b) {
5765 return ~(__a | __b);
5766}
5767
Ulrich Weigand6af25592017-07-17 17:47:35 +00005768// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005769static inline __ATTRS_o_ai vector unsigned short
5770vec_nor(vector unsigned short __a, vector bool short __b) {
5771 return ~(__a | __b);
5772}
5773
5774static inline __ATTRS_o_ai vector bool int
5775vec_nor(vector bool int __a, vector bool int __b) {
5776 return ~(__a | __b);
5777}
5778
5779static inline __ATTRS_o_ai vector signed int
5780vec_nor(vector signed int __a, vector signed int __b) {
5781 return ~(__a | __b);
5782}
5783
Ulrich Weigand6af25592017-07-17 17:47:35 +00005784// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005785static inline __ATTRS_o_ai vector signed int
5786vec_nor(vector bool int __a, vector signed int __b) {
5787 return ~(__a | __b);
5788}
5789
Ulrich Weigand6af25592017-07-17 17:47:35 +00005790// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005791static inline __ATTRS_o_ai vector signed int
5792vec_nor(vector signed int __a, vector bool int __b) {
5793 return ~(__a | __b);
5794}
5795
5796static inline __ATTRS_o_ai vector unsigned int
5797vec_nor(vector unsigned int __a, vector unsigned int __b) {
5798 return ~(__a | __b);
5799}
5800
Ulrich Weigand6af25592017-07-17 17:47:35 +00005801// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005802static inline __ATTRS_o_ai vector unsigned int
5803vec_nor(vector bool int __a, vector unsigned int __b) {
5804 return ~(__a | __b);
5805}
5806
Ulrich Weigand6af25592017-07-17 17:47:35 +00005807// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005808static inline __ATTRS_o_ai vector unsigned int
5809vec_nor(vector unsigned int __a, vector bool int __b) {
5810 return ~(__a | __b);
5811}
5812
5813static inline __ATTRS_o_ai vector bool long long
5814vec_nor(vector bool long long __a, vector bool long long __b) {
5815 return ~(__a | __b);
5816}
5817
5818static inline __ATTRS_o_ai vector signed long long
5819vec_nor(vector signed long long __a, vector signed long long __b) {
5820 return ~(__a | __b);
5821}
5822
Ulrich Weigand6af25592017-07-17 17:47:35 +00005823// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005824static inline __ATTRS_o_ai vector signed long long
5825vec_nor(vector bool long long __a, vector signed long long __b) {
5826 return ~(__a | __b);
5827}
5828
Ulrich Weigand6af25592017-07-17 17:47:35 +00005829// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005830static inline __ATTRS_o_ai vector signed long long
5831vec_nor(vector signed long long __a, vector bool long long __b) {
5832 return ~(__a | __b);
5833}
5834
5835static inline __ATTRS_o_ai vector unsigned long long
5836vec_nor(vector unsigned long long __a, vector unsigned long long __b) {
5837 return ~(__a | __b);
5838}
5839
Ulrich Weigand6af25592017-07-17 17:47:35 +00005840// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005841static inline __ATTRS_o_ai vector unsigned long long
5842vec_nor(vector bool long long __a, vector unsigned long long __b) {
5843 return ~(__a | __b);
5844}
5845
Ulrich Weigand6af25592017-07-17 17:47:35 +00005846// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005847static inline __ATTRS_o_ai vector unsigned long long
5848vec_nor(vector unsigned long long __a, vector bool long long __b) {
5849 return ~(__a | __b);
5850}
5851
Ulrich Weigand6af25592017-07-17 17:47:35 +00005852#if __ARCH__ >= 12
5853static inline __ATTRS_o_ai vector float
5854vec_nor(vector float __a, vector float __b) {
5855 return (vector float)~((vector unsigned int)__a |
5856 (vector unsigned int)__b);
5857}
5858#endif
5859
Ulrich Weigandca256432015-07-30 14:10:43 +00005860static inline __ATTRS_o_ai vector double
5861vec_nor(vector double __a, vector double __b) {
5862 return (vector double)~((vector unsigned long long)__a |
5863 (vector unsigned long long)__b);
5864}
5865
Ulrich Weigand6af25592017-07-17 17:47:35 +00005866// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005867static inline __ATTRS_o_ai vector double
5868vec_nor(vector bool long long __a, vector double __b) {
5869 return (vector double)~((vector unsigned long long)__a |
5870 (vector unsigned long long)__b);
5871}
5872
Ulrich Weigand6af25592017-07-17 17:47:35 +00005873// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00005874static inline __ATTRS_o_ai vector double
5875vec_nor(vector double __a, vector bool long long __b) {
5876 return (vector double)~((vector unsigned long long)__a |
5877 (vector unsigned long long)__b);
5878}
5879
Ulrich Weigand6af25592017-07-17 17:47:35 +00005880/*-- vec_orc ----------------------------------------------------------------*/
5881
5882#if __ARCH__ >= 12
5883static inline __ATTRS_o_ai vector bool char
5884vec_orc(vector bool char __a, vector bool char __b) {
5885 return __a | ~__b;
5886}
5887
5888static inline __ATTRS_o_ai vector signed char
5889vec_orc(vector signed char __a, vector signed char __b) {
5890 return __a | ~__b;
5891}
5892
5893static inline __ATTRS_o_ai vector unsigned char
5894vec_orc(vector unsigned char __a, vector unsigned char __b) {
5895 return __a | ~__b;
5896}
5897
5898static inline __ATTRS_o_ai vector bool short
5899vec_orc(vector bool short __a, vector bool short __b) {
5900 return __a | ~__b;
5901}
5902
5903static inline __ATTRS_o_ai vector signed short
5904vec_orc(vector signed short __a, vector signed short __b) {
5905 return __a | ~__b;
5906}
5907
5908static inline __ATTRS_o_ai vector unsigned short
5909vec_orc(vector unsigned short __a, vector unsigned short __b) {
5910 return __a | ~__b;
5911}
5912
5913static inline __ATTRS_o_ai vector bool int
5914vec_orc(vector bool int __a, vector bool int __b) {
5915 return __a | ~__b;
5916}
5917
5918static inline __ATTRS_o_ai vector signed int
5919vec_orc(vector signed int __a, vector signed int __b) {
5920 return __a | ~__b;
5921}
5922
5923static inline __ATTRS_o_ai vector unsigned int
5924vec_orc(vector unsigned int __a, vector unsigned int __b) {
5925 return __a | ~__b;
5926}
5927
5928static inline __ATTRS_o_ai vector bool long long
5929vec_orc(vector bool long long __a, vector bool long long __b) {
5930 return __a | ~__b;
5931}
5932
5933static inline __ATTRS_o_ai vector signed long long
5934vec_orc(vector signed long long __a, vector signed long long __b) {
5935 return __a | ~__b;
5936}
5937
5938static inline __ATTRS_o_ai vector unsigned long long
5939vec_orc(vector unsigned long long __a, vector unsigned long long __b) {
5940 return __a | ~__b;
5941}
5942
5943static inline __ATTRS_o_ai vector float
5944vec_orc(vector float __a, vector float __b) {
5945 return (vector float)((vector unsigned int)__a &
5946 ~(vector unsigned int)__b);
5947}
5948
5949static inline __ATTRS_o_ai vector double
5950vec_orc(vector double __a, vector double __b) {
5951 return (vector double)((vector unsigned long long)__a &
5952 ~(vector unsigned long long)__b);
5953}
5954#endif
5955
5956/*-- vec_nand ---------------------------------------------------------------*/
5957
5958#if __ARCH__ >= 12
5959static inline __ATTRS_o_ai vector bool char
5960vec_nand(vector bool char __a, vector bool char __b) {
5961 return ~(__a & __b);
5962}
5963
5964static inline __ATTRS_o_ai vector signed char
5965vec_nand(vector signed char __a, vector signed char __b) {
5966 return ~(__a & __b);
5967}
5968
5969static inline __ATTRS_o_ai vector unsigned char
5970vec_nand(vector unsigned char __a, vector unsigned char __b) {
5971 return ~(__a & __b);
5972}
5973
5974static inline __ATTRS_o_ai vector bool short
5975vec_nand(vector bool short __a, vector bool short __b) {
5976 return ~(__a & __b);
5977}
5978
5979static inline __ATTRS_o_ai vector signed short
5980vec_nand(vector signed short __a, vector signed short __b) {
5981 return ~(__a & __b);
5982}
5983
5984static inline __ATTRS_o_ai vector unsigned short
5985vec_nand(vector unsigned short __a, vector unsigned short __b) {
5986 return ~(__a & __b);
5987}
5988
5989static inline __ATTRS_o_ai vector bool int
5990vec_nand(vector bool int __a, vector bool int __b) {
5991 return ~(__a & __b);
5992}
5993
5994static inline __ATTRS_o_ai vector signed int
5995vec_nand(vector signed int __a, vector signed int __b) {
5996 return ~(__a & __b);
5997}
5998
5999static inline __ATTRS_o_ai vector unsigned int
6000vec_nand(vector unsigned int __a, vector unsigned int __b) {
6001 return ~(__a & __b);
6002}
6003
6004static inline __ATTRS_o_ai vector bool long long
6005vec_nand(vector bool long long __a, vector bool long long __b) {
6006 return ~(__a & __b);
6007}
6008
6009static inline __ATTRS_o_ai vector signed long long
6010vec_nand(vector signed long long __a, vector signed long long __b) {
6011 return ~(__a & __b);
6012}
6013
6014static inline __ATTRS_o_ai vector unsigned long long
6015vec_nand(vector unsigned long long __a, vector unsigned long long __b) {
6016 return ~(__a & __b);
6017}
6018
6019static inline __ATTRS_o_ai vector float
6020vec_nand(vector float __a, vector float __b) {
6021 return (vector float)~((vector unsigned int)__a &
6022 (vector unsigned int)__b);
6023}
6024
6025static inline __ATTRS_o_ai vector double
6026vec_nand(vector double __a, vector double __b) {
6027 return (vector double)~((vector unsigned long long)__a &
6028 (vector unsigned long long)__b);
6029}
6030#endif
6031
6032/*-- vec_eqv ----------------------------------------------------------------*/
6033
6034#if __ARCH__ >= 12
6035static inline __ATTRS_o_ai vector bool char
6036vec_eqv(vector bool char __a, vector bool char __b) {
6037 return ~(__a ^ __b);
6038}
6039
6040static inline __ATTRS_o_ai vector signed char
6041vec_eqv(vector signed char __a, vector signed char __b) {
6042 return ~(__a ^ __b);
6043}
6044
6045static inline __ATTRS_o_ai vector unsigned char
6046vec_eqv(vector unsigned char __a, vector unsigned char __b) {
6047 return ~(__a ^ __b);
6048}
6049
6050static inline __ATTRS_o_ai vector bool short
6051vec_eqv(vector bool short __a, vector bool short __b) {
6052 return ~(__a ^ __b);
6053}
6054
6055static inline __ATTRS_o_ai vector signed short
6056vec_eqv(vector signed short __a, vector signed short __b) {
6057 return ~(__a ^ __b);
6058}
6059
6060static inline __ATTRS_o_ai vector unsigned short
6061vec_eqv(vector unsigned short __a, vector unsigned short __b) {
6062 return ~(__a ^ __b);
6063}
6064
6065static inline __ATTRS_o_ai vector bool int
6066vec_eqv(vector bool int __a, vector bool int __b) {
6067 return ~(__a ^ __b);
6068}
6069
6070static inline __ATTRS_o_ai vector signed int
6071vec_eqv(vector signed int __a, vector signed int __b) {
6072 return ~(__a ^ __b);
6073}
6074
6075static inline __ATTRS_o_ai vector unsigned int
6076vec_eqv(vector unsigned int __a, vector unsigned int __b) {
6077 return ~(__a ^ __b);
6078}
6079
6080static inline __ATTRS_o_ai vector bool long long
6081vec_eqv(vector bool long long __a, vector bool long long __b) {
6082 return ~(__a ^ __b);
6083}
6084
6085static inline __ATTRS_o_ai vector signed long long
6086vec_eqv(vector signed long long __a, vector signed long long __b) {
6087 return ~(__a ^ __b);
6088}
6089
6090static inline __ATTRS_o_ai vector unsigned long long
6091vec_eqv(vector unsigned long long __a, vector unsigned long long __b) {
6092 return ~(__a ^ __b);
6093}
6094
6095static inline __ATTRS_o_ai vector float
6096vec_eqv(vector float __a, vector float __b) {
6097 return (vector float)~((vector unsigned int)__a ^
6098 (vector unsigned int)__b);
6099}
6100
6101static inline __ATTRS_o_ai vector double
6102vec_eqv(vector double __a, vector double __b) {
6103 return (vector double)~((vector unsigned long long)__a ^
6104 (vector unsigned long long)__b);
6105}
6106#endif
6107
Ulrich Weigandca256432015-07-30 14:10:43 +00006108/*-- vec_cntlz --------------------------------------------------------------*/
6109
6110static inline __ATTRS_o_ai vector unsigned char
6111vec_cntlz(vector signed char __a) {
6112 return __builtin_s390_vclzb((vector unsigned char)__a);
6113}
6114
6115static inline __ATTRS_o_ai vector unsigned char
6116vec_cntlz(vector unsigned char __a) {
6117 return __builtin_s390_vclzb(__a);
6118}
6119
6120static inline __ATTRS_o_ai vector unsigned short
6121vec_cntlz(vector signed short __a) {
6122 return __builtin_s390_vclzh((vector unsigned short)__a);
6123}
6124
6125static inline __ATTRS_o_ai vector unsigned short
6126vec_cntlz(vector unsigned short __a) {
6127 return __builtin_s390_vclzh(__a);
6128}
6129
6130static inline __ATTRS_o_ai vector unsigned int
6131vec_cntlz(vector signed int __a) {
6132 return __builtin_s390_vclzf((vector unsigned int)__a);
6133}
6134
6135static inline __ATTRS_o_ai vector unsigned int
6136vec_cntlz(vector unsigned int __a) {
6137 return __builtin_s390_vclzf(__a);
6138}
6139
6140static inline __ATTRS_o_ai vector unsigned long long
6141vec_cntlz(vector signed long long __a) {
6142 return __builtin_s390_vclzg((vector unsigned long long)__a);
6143}
6144
6145static inline __ATTRS_o_ai vector unsigned long long
6146vec_cntlz(vector unsigned long long __a) {
6147 return __builtin_s390_vclzg(__a);
6148}
6149
6150/*-- vec_cnttz --------------------------------------------------------------*/
6151
6152static inline __ATTRS_o_ai vector unsigned char
6153vec_cnttz(vector signed char __a) {
6154 return __builtin_s390_vctzb((vector unsigned char)__a);
6155}
6156
6157static inline __ATTRS_o_ai vector unsigned char
6158vec_cnttz(vector unsigned char __a) {
6159 return __builtin_s390_vctzb(__a);
6160}
6161
6162static inline __ATTRS_o_ai vector unsigned short
6163vec_cnttz(vector signed short __a) {
6164 return __builtin_s390_vctzh((vector unsigned short)__a);
6165}
6166
6167static inline __ATTRS_o_ai vector unsigned short
6168vec_cnttz(vector unsigned short __a) {
6169 return __builtin_s390_vctzh(__a);
6170}
6171
6172static inline __ATTRS_o_ai vector unsigned int
6173vec_cnttz(vector signed int __a) {
6174 return __builtin_s390_vctzf((vector unsigned int)__a);
6175}
6176
6177static inline __ATTRS_o_ai vector unsigned int
6178vec_cnttz(vector unsigned int __a) {
6179 return __builtin_s390_vctzf(__a);
6180}
6181
6182static inline __ATTRS_o_ai vector unsigned long long
6183vec_cnttz(vector signed long long __a) {
6184 return __builtin_s390_vctzg((vector unsigned long long)__a);
6185}
6186
6187static inline __ATTRS_o_ai vector unsigned long long
6188vec_cnttz(vector unsigned long long __a) {
6189 return __builtin_s390_vctzg(__a);
6190}
6191
6192/*-- vec_popcnt -------------------------------------------------------------*/
6193
6194static inline __ATTRS_o_ai vector unsigned char
6195vec_popcnt(vector signed char __a) {
6196 return __builtin_s390_vpopctb((vector unsigned char)__a);
6197}
6198
6199static inline __ATTRS_o_ai vector unsigned char
6200vec_popcnt(vector unsigned char __a) {
6201 return __builtin_s390_vpopctb(__a);
6202}
6203
6204static inline __ATTRS_o_ai vector unsigned short
6205vec_popcnt(vector signed short __a) {
6206 return __builtin_s390_vpopcth((vector unsigned short)__a);
6207}
6208
6209static inline __ATTRS_o_ai vector unsigned short
6210vec_popcnt(vector unsigned short __a) {
6211 return __builtin_s390_vpopcth(__a);
6212}
6213
6214static inline __ATTRS_o_ai vector unsigned int
6215vec_popcnt(vector signed int __a) {
6216 return __builtin_s390_vpopctf((vector unsigned int)__a);
6217}
6218
6219static inline __ATTRS_o_ai vector unsigned int
6220vec_popcnt(vector unsigned int __a) {
6221 return __builtin_s390_vpopctf(__a);
6222}
6223
6224static inline __ATTRS_o_ai vector unsigned long long
6225vec_popcnt(vector signed long long __a) {
6226 return __builtin_s390_vpopctg((vector unsigned long long)__a);
6227}
6228
6229static inline __ATTRS_o_ai vector unsigned long long
6230vec_popcnt(vector unsigned long long __a) {
6231 return __builtin_s390_vpopctg(__a);
6232}
6233
6234/*-- vec_rl -----------------------------------------------------------------*/
6235
6236static inline __ATTRS_o_ai vector signed char
6237vec_rl(vector signed char __a, vector unsigned char __b) {
6238 return (vector signed char)__builtin_s390_verllvb(
6239 (vector unsigned char)__a, __b);
6240}
6241
6242static inline __ATTRS_o_ai vector unsigned char
6243vec_rl(vector unsigned char __a, vector unsigned char __b) {
6244 return __builtin_s390_verllvb(__a, __b);
6245}
6246
6247static inline __ATTRS_o_ai vector signed short
6248vec_rl(vector signed short __a, vector unsigned short __b) {
6249 return (vector signed short)__builtin_s390_verllvh(
6250 (vector unsigned short)__a, __b);
6251}
6252
6253static inline __ATTRS_o_ai vector unsigned short
6254vec_rl(vector unsigned short __a, vector unsigned short __b) {
6255 return __builtin_s390_verllvh(__a, __b);
6256}
6257
6258static inline __ATTRS_o_ai vector signed int
6259vec_rl(vector signed int __a, vector unsigned int __b) {
6260 return (vector signed int)__builtin_s390_verllvf(
6261 (vector unsigned int)__a, __b);
6262}
6263
6264static inline __ATTRS_o_ai vector unsigned int
6265vec_rl(vector unsigned int __a, vector unsigned int __b) {
6266 return __builtin_s390_verllvf(__a, __b);
6267}
6268
6269static inline __ATTRS_o_ai vector signed long long
6270vec_rl(vector signed long long __a, vector unsigned long long __b) {
6271 return (vector signed long long)__builtin_s390_verllvg(
6272 (vector unsigned long long)__a, __b);
6273}
6274
6275static inline __ATTRS_o_ai vector unsigned long long
6276vec_rl(vector unsigned long long __a, vector unsigned long long __b) {
6277 return __builtin_s390_verllvg(__a, __b);
6278}
6279
6280/*-- vec_rli ----------------------------------------------------------------*/
6281
6282static inline __ATTRS_o_ai vector signed char
6283vec_rli(vector signed char __a, unsigned long __b) {
6284 return (vector signed char)__builtin_s390_verllb(
6285 (vector unsigned char)__a, (int)__b);
6286}
6287
6288static inline __ATTRS_o_ai vector unsigned char
6289vec_rli(vector unsigned char __a, unsigned long __b) {
6290 return __builtin_s390_verllb(__a, (int)__b);
6291}
6292
6293static inline __ATTRS_o_ai vector signed short
6294vec_rli(vector signed short __a, unsigned long __b) {
6295 return (vector signed short)__builtin_s390_verllh(
6296 (vector unsigned short)__a, (int)__b);
6297}
6298
6299static inline __ATTRS_o_ai vector unsigned short
6300vec_rli(vector unsigned short __a, unsigned long __b) {
6301 return __builtin_s390_verllh(__a, (int)__b);
6302}
6303
6304static inline __ATTRS_o_ai vector signed int
6305vec_rli(vector signed int __a, unsigned long __b) {
6306 return (vector signed int)__builtin_s390_verllf(
6307 (vector unsigned int)__a, (int)__b);
6308}
6309
6310static inline __ATTRS_o_ai vector unsigned int
6311vec_rli(vector unsigned int __a, unsigned long __b) {
6312 return __builtin_s390_verllf(__a, (int)__b);
6313}
6314
6315static inline __ATTRS_o_ai vector signed long long
6316vec_rli(vector signed long long __a, unsigned long __b) {
6317 return (vector signed long long)__builtin_s390_verllg(
6318 (vector unsigned long long)__a, (int)__b);
6319}
6320
6321static inline __ATTRS_o_ai vector unsigned long long
6322vec_rli(vector unsigned long long __a, unsigned long __b) {
6323 return __builtin_s390_verllg(__a, (int)__b);
6324}
6325
6326/*-- vec_rl_mask ------------------------------------------------------------*/
6327
6328extern __ATTRS_o vector signed char
6329vec_rl_mask(vector signed char __a, vector unsigned char __b,
6330 unsigned char __c) __constant(__c);
6331
6332extern __ATTRS_o vector unsigned char
6333vec_rl_mask(vector unsigned char __a, vector unsigned char __b,
6334 unsigned char __c) __constant(__c);
6335
6336extern __ATTRS_o vector signed short
6337vec_rl_mask(vector signed short __a, vector unsigned short __b,
6338 unsigned char __c) __constant(__c);
6339
6340extern __ATTRS_o vector unsigned short
6341vec_rl_mask(vector unsigned short __a, vector unsigned short __b,
6342 unsigned char __c) __constant(__c);
6343
6344extern __ATTRS_o vector signed int
6345vec_rl_mask(vector signed int __a, vector unsigned int __b,
6346 unsigned char __c) __constant(__c);
6347
6348extern __ATTRS_o vector unsigned int
6349vec_rl_mask(vector unsigned int __a, vector unsigned int __b,
6350 unsigned char __c) __constant(__c);
6351
6352extern __ATTRS_o vector signed long long
6353vec_rl_mask(vector signed long long __a, vector unsigned long long __b,
6354 unsigned char __c) __constant(__c);
6355
6356extern __ATTRS_o vector unsigned long long
6357vec_rl_mask(vector unsigned long long __a, vector unsigned long long __b,
6358 unsigned char __c) __constant(__c);
6359
6360#define vec_rl_mask(X, Y, Z) ((__typeof__((vec_rl_mask)((X), (Y), (Z)))) \
6361 __extension__ ({ \
6362 vector unsigned char __res; \
6363 vector unsigned char __x = (vector unsigned char)(X); \
6364 vector unsigned char __y = (vector unsigned char)(Y); \
6365 switch (sizeof ((X)[0])) { \
6366 case 1: __res = (vector unsigned char) __builtin_s390_verimb( \
6367 (vector unsigned char)__x, (vector unsigned char)__x, \
6368 (vector unsigned char)__y, (Z)); break; \
6369 case 2: __res = (vector unsigned char) __builtin_s390_verimh( \
6370 (vector unsigned short)__x, (vector unsigned short)__x, \
6371 (vector unsigned short)__y, (Z)); break; \
6372 case 4: __res = (vector unsigned char) __builtin_s390_verimf( \
6373 (vector unsigned int)__x, (vector unsigned int)__x, \
6374 (vector unsigned int)__y, (Z)); break; \
6375 default: __res = (vector unsigned char) __builtin_s390_verimg( \
6376 (vector unsigned long long)__x, (vector unsigned long long)__x, \
6377 (vector unsigned long long)__y, (Z)); break; \
6378 } __res; }))
6379
6380/*-- vec_sll ----------------------------------------------------------------*/
6381
6382static inline __ATTRS_o_ai vector signed char
6383vec_sll(vector signed char __a, vector unsigned char __b) {
6384 return (vector signed char)__builtin_s390_vsl(
6385 (vector unsigned char)__a, __b);
6386}
6387
Ulrich Weigand6af25592017-07-17 17:47:35 +00006388// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006389static inline __ATTRS_o_ai vector signed char
6390vec_sll(vector signed char __a, vector unsigned short __b) {
6391 return (vector signed char)__builtin_s390_vsl(
6392 (vector unsigned char)__a, (vector unsigned char)__b);
6393}
6394
Ulrich Weigand6af25592017-07-17 17:47:35 +00006395// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006396static inline __ATTRS_o_ai vector signed char
6397vec_sll(vector signed char __a, vector unsigned int __b) {
6398 return (vector signed char)__builtin_s390_vsl(
6399 (vector unsigned char)__a, (vector unsigned char)__b);
6400}
6401
Ulrich Weigand6af25592017-07-17 17:47:35 +00006402// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006403static inline __ATTRS_o_ai vector bool char
6404vec_sll(vector bool char __a, vector unsigned char __b) {
6405 return (vector bool char)__builtin_s390_vsl(
6406 (vector unsigned char)__a, __b);
6407}
6408
Ulrich Weigand6af25592017-07-17 17:47:35 +00006409// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006410static inline __ATTRS_o_ai vector bool char
6411vec_sll(vector bool char __a, vector unsigned short __b) {
6412 return (vector bool char)__builtin_s390_vsl(
6413 (vector unsigned char)__a, (vector unsigned char)__b);
6414}
6415
Ulrich Weigand6af25592017-07-17 17:47:35 +00006416// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006417static inline __ATTRS_o_ai vector bool char
6418vec_sll(vector bool char __a, vector unsigned int __b) {
6419 return (vector bool char)__builtin_s390_vsl(
6420 (vector unsigned char)__a, (vector unsigned char)__b);
6421}
6422
6423static inline __ATTRS_o_ai vector unsigned char
6424vec_sll(vector unsigned char __a, vector unsigned char __b) {
6425 return __builtin_s390_vsl(__a, __b);
6426}
6427
Ulrich Weigand6af25592017-07-17 17:47:35 +00006428// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006429static inline __ATTRS_o_ai vector unsigned char
6430vec_sll(vector unsigned char __a, vector unsigned short __b) {
6431 return __builtin_s390_vsl(__a, (vector unsigned char)__b);
6432}
6433
Ulrich Weigand6af25592017-07-17 17:47:35 +00006434// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006435static inline __ATTRS_o_ai vector unsigned char
6436vec_sll(vector unsigned char __a, vector unsigned int __b) {
6437 return __builtin_s390_vsl(__a, (vector unsigned char)__b);
6438}
6439
6440static inline __ATTRS_o_ai vector signed short
6441vec_sll(vector signed short __a, vector unsigned char __b) {
6442 return (vector signed short)__builtin_s390_vsl(
6443 (vector unsigned char)__a, __b);
6444}
6445
Ulrich Weigand6af25592017-07-17 17:47:35 +00006446// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006447static inline __ATTRS_o_ai vector signed short
6448vec_sll(vector signed short __a, vector unsigned short __b) {
6449 return (vector signed short)__builtin_s390_vsl(
6450 (vector unsigned char)__a, (vector unsigned char)__b);
6451}
6452
Ulrich Weigand6af25592017-07-17 17:47:35 +00006453// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006454static inline __ATTRS_o_ai vector signed short
6455vec_sll(vector signed short __a, vector unsigned int __b) {
6456 return (vector signed short)__builtin_s390_vsl(
6457 (vector unsigned char)__a, (vector unsigned char)__b);
6458}
6459
Ulrich Weigand6af25592017-07-17 17:47:35 +00006460// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006461static inline __ATTRS_o_ai vector bool short
6462vec_sll(vector bool short __a, vector unsigned char __b) {
6463 return (vector bool short)__builtin_s390_vsl(
6464 (vector unsigned char)__a, __b);
6465}
6466
Ulrich Weigand6af25592017-07-17 17:47:35 +00006467// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006468static inline __ATTRS_o_ai vector bool short
6469vec_sll(vector bool short __a, vector unsigned short __b) {
6470 return (vector bool short)__builtin_s390_vsl(
6471 (vector unsigned char)__a, (vector unsigned char)__b);
6472}
6473
Ulrich Weigand6af25592017-07-17 17:47:35 +00006474// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006475static inline __ATTRS_o_ai vector bool short
6476vec_sll(vector bool short __a, vector unsigned int __b) {
6477 return (vector bool short)__builtin_s390_vsl(
6478 (vector unsigned char)__a, (vector unsigned char)__b);
6479}
6480
6481static inline __ATTRS_o_ai vector unsigned short
6482vec_sll(vector unsigned short __a, vector unsigned char __b) {
6483 return (vector unsigned short)__builtin_s390_vsl(
6484 (vector unsigned char)__a, __b);
6485}
6486
Ulrich Weigand6af25592017-07-17 17:47:35 +00006487// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006488static inline __ATTRS_o_ai vector unsigned short
6489vec_sll(vector unsigned short __a, vector unsigned short __b) {
6490 return (vector unsigned short)__builtin_s390_vsl(
6491 (vector unsigned char)__a, (vector unsigned char)__b);
6492}
6493
Ulrich Weigand6af25592017-07-17 17:47:35 +00006494// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006495static inline __ATTRS_o_ai vector unsigned short
6496vec_sll(vector unsigned short __a, vector unsigned int __b) {
6497 return (vector unsigned short)__builtin_s390_vsl(
6498 (vector unsigned char)__a, (vector unsigned char)__b);
6499}
6500
6501static inline __ATTRS_o_ai vector signed int
6502vec_sll(vector signed int __a, vector unsigned char __b) {
6503 return (vector signed int)__builtin_s390_vsl(
6504 (vector unsigned char)__a, __b);
6505}
6506
Ulrich Weigand6af25592017-07-17 17:47:35 +00006507// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006508static inline __ATTRS_o_ai vector signed int
6509vec_sll(vector signed int __a, vector unsigned short __b) {
6510 return (vector signed int)__builtin_s390_vsl(
6511 (vector unsigned char)__a, (vector unsigned char)__b);
6512}
6513
Ulrich Weigand6af25592017-07-17 17:47:35 +00006514// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006515static inline __ATTRS_o_ai vector signed int
6516vec_sll(vector signed int __a, vector unsigned int __b) {
6517 return (vector signed int)__builtin_s390_vsl(
6518 (vector unsigned char)__a, (vector unsigned char)__b);
6519}
6520
Ulrich Weigand6af25592017-07-17 17:47:35 +00006521// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006522static inline __ATTRS_o_ai vector bool int
6523vec_sll(vector bool int __a, vector unsigned char __b) {
6524 return (vector bool int)__builtin_s390_vsl(
6525 (vector unsigned char)__a, __b);
6526}
6527
Ulrich Weigand6af25592017-07-17 17:47:35 +00006528// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006529static inline __ATTRS_o_ai vector bool int
6530vec_sll(vector bool int __a, vector unsigned short __b) {
6531 return (vector bool int)__builtin_s390_vsl(
6532 (vector unsigned char)__a, (vector unsigned char)__b);
6533}
6534
Ulrich Weigand6af25592017-07-17 17:47:35 +00006535// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006536static inline __ATTRS_o_ai vector bool int
6537vec_sll(vector bool int __a, vector unsigned int __b) {
6538 return (vector bool int)__builtin_s390_vsl(
6539 (vector unsigned char)__a, (vector unsigned char)__b);
6540}
6541
6542static inline __ATTRS_o_ai vector unsigned int
6543vec_sll(vector unsigned int __a, vector unsigned char __b) {
6544 return (vector unsigned int)__builtin_s390_vsl(
6545 (vector unsigned char)__a, __b);
6546}
6547
Ulrich Weigand6af25592017-07-17 17:47:35 +00006548// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006549static inline __ATTRS_o_ai vector unsigned int
6550vec_sll(vector unsigned int __a, vector unsigned short __b) {
6551 return (vector unsigned int)__builtin_s390_vsl(
6552 (vector unsigned char)__a, (vector unsigned char)__b);
6553}
6554
Ulrich Weigand6af25592017-07-17 17:47:35 +00006555// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006556static inline __ATTRS_o_ai vector unsigned int
6557vec_sll(vector unsigned int __a, vector unsigned int __b) {
6558 return (vector unsigned int)__builtin_s390_vsl(
6559 (vector unsigned char)__a, (vector unsigned char)__b);
6560}
6561
6562static inline __ATTRS_o_ai vector signed long long
6563vec_sll(vector signed long long __a, vector unsigned char __b) {
6564 return (vector signed long long)__builtin_s390_vsl(
6565 (vector unsigned char)__a, __b);
6566}
6567
Ulrich Weigand6af25592017-07-17 17:47:35 +00006568// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006569static inline __ATTRS_o_ai vector signed long long
6570vec_sll(vector signed long long __a, vector unsigned short __b) {
6571 return (vector signed long long)__builtin_s390_vsl(
6572 (vector unsigned char)__a, (vector unsigned char)__b);
6573}
6574
Ulrich Weigand6af25592017-07-17 17:47:35 +00006575// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006576static inline __ATTRS_o_ai vector signed long long
6577vec_sll(vector signed long long __a, vector unsigned int __b) {
6578 return (vector signed long long)__builtin_s390_vsl(
6579 (vector unsigned char)__a, (vector unsigned char)__b);
6580}
6581
Ulrich Weigand6af25592017-07-17 17:47:35 +00006582// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006583static inline __ATTRS_o_ai vector bool long long
6584vec_sll(vector bool long long __a, vector unsigned char __b) {
6585 return (vector bool long long)__builtin_s390_vsl(
6586 (vector unsigned char)__a, __b);
6587}
6588
Ulrich Weigand6af25592017-07-17 17:47:35 +00006589// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006590static inline __ATTRS_o_ai vector bool long long
6591vec_sll(vector bool long long __a, vector unsigned short __b) {
6592 return (vector bool long long)__builtin_s390_vsl(
6593 (vector unsigned char)__a, (vector unsigned char)__b);
6594}
6595
Ulrich Weigand6af25592017-07-17 17:47:35 +00006596// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006597static inline __ATTRS_o_ai vector bool long long
6598vec_sll(vector bool long long __a, vector unsigned int __b) {
6599 return (vector bool long long)__builtin_s390_vsl(
6600 (vector unsigned char)__a, (vector unsigned char)__b);
6601}
6602
6603static inline __ATTRS_o_ai vector unsigned long long
6604vec_sll(vector unsigned long long __a, vector unsigned char __b) {
6605 return (vector unsigned long long)__builtin_s390_vsl(
6606 (vector unsigned char)__a, __b);
6607}
6608
Ulrich Weigand6af25592017-07-17 17:47:35 +00006609// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006610static inline __ATTRS_o_ai vector unsigned long long
6611vec_sll(vector unsigned long long __a, vector unsigned short __b) {
6612 return (vector unsigned long long)__builtin_s390_vsl(
6613 (vector unsigned char)__a, (vector unsigned char)__b);
6614}
6615
Ulrich Weigand6af25592017-07-17 17:47:35 +00006616// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006617static inline __ATTRS_o_ai vector unsigned long long
6618vec_sll(vector unsigned long long __a, vector unsigned int __b) {
6619 return (vector unsigned long long)__builtin_s390_vsl(
6620 (vector unsigned char)__a, (vector unsigned char)__b);
6621}
6622
6623/*-- vec_slb ----------------------------------------------------------------*/
6624
6625static inline __ATTRS_o_ai vector signed char
6626vec_slb(vector signed char __a, vector signed char __b) {
6627 return (vector signed char)__builtin_s390_vslb(
6628 (vector unsigned char)__a, (vector unsigned char)__b);
6629}
6630
6631static inline __ATTRS_o_ai vector signed char
6632vec_slb(vector signed char __a, vector unsigned char __b) {
6633 return (vector signed char)__builtin_s390_vslb(
6634 (vector unsigned char)__a, __b);
6635}
6636
6637static inline __ATTRS_o_ai vector unsigned char
6638vec_slb(vector unsigned char __a, vector signed char __b) {
6639 return __builtin_s390_vslb(__a, (vector unsigned char)__b);
6640}
6641
6642static inline __ATTRS_o_ai vector unsigned char
6643vec_slb(vector unsigned char __a, vector unsigned char __b) {
6644 return __builtin_s390_vslb(__a, __b);
6645}
6646
6647static inline __ATTRS_o_ai vector signed short
6648vec_slb(vector signed short __a, vector signed short __b) {
6649 return (vector signed short)__builtin_s390_vslb(
6650 (vector unsigned char)__a, (vector unsigned char)__b);
6651}
6652
6653static inline __ATTRS_o_ai vector signed short
6654vec_slb(vector signed short __a, vector unsigned short __b) {
6655 return (vector signed short)__builtin_s390_vslb(
6656 (vector unsigned char)__a, (vector unsigned char)__b);
6657}
6658
6659static inline __ATTRS_o_ai vector unsigned short
6660vec_slb(vector unsigned short __a, vector signed short __b) {
6661 return (vector unsigned short)__builtin_s390_vslb(
6662 (vector unsigned char)__a, (vector unsigned char)__b);
6663}
6664
6665static inline __ATTRS_o_ai vector unsigned short
6666vec_slb(vector unsigned short __a, vector unsigned short __b) {
6667 return (vector unsigned short)__builtin_s390_vslb(
6668 (vector unsigned char)__a, (vector unsigned char)__b);
6669}
6670
6671static inline __ATTRS_o_ai vector signed int
6672vec_slb(vector signed int __a, vector signed int __b) {
6673 return (vector signed int)__builtin_s390_vslb(
6674 (vector unsigned char)__a, (vector unsigned char)__b);
6675}
6676
6677static inline __ATTRS_o_ai vector signed int
6678vec_slb(vector signed int __a, vector unsigned int __b) {
6679 return (vector signed int)__builtin_s390_vslb(
6680 (vector unsigned char)__a, (vector unsigned char)__b);
6681}
6682
6683static inline __ATTRS_o_ai vector unsigned int
6684vec_slb(vector unsigned int __a, vector signed int __b) {
6685 return (vector unsigned int)__builtin_s390_vslb(
6686 (vector unsigned char)__a, (vector unsigned char)__b);
6687}
6688
6689static inline __ATTRS_o_ai vector unsigned int
6690vec_slb(vector unsigned int __a, vector unsigned int __b) {
6691 return (vector unsigned int)__builtin_s390_vslb(
6692 (vector unsigned char)__a, (vector unsigned char)__b);
6693}
6694
6695static inline __ATTRS_o_ai vector signed long long
6696vec_slb(vector signed long long __a, vector signed long long __b) {
6697 return (vector signed long long)__builtin_s390_vslb(
6698 (vector unsigned char)__a, (vector unsigned char)__b);
6699}
6700
6701static inline __ATTRS_o_ai vector signed long long
6702vec_slb(vector signed long long __a, vector unsigned long long __b) {
6703 return (vector signed long long)__builtin_s390_vslb(
6704 (vector unsigned char)__a, (vector unsigned char)__b);
6705}
6706
6707static inline __ATTRS_o_ai vector unsigned long long
6708vec_slb(vector unsigned long long __a, vector signed long long __b) {
6709 return (vector unsigned long long)__builtin_s390_vslb(
6710 (vector unsigned char)__a, (vector unsigned char)__b);
6711}
6712
6713static inline __ATTRS_o_ai vector unsigned long long
6714vec_slb(vector unsigned long long __a, vector unsigned long long __b) {
6715 return (vector unsigned long long)__builtin_s390_vslb(
6716 (vector unsigned char)__a, (vector unsigned char)__b);
6717}
6718
Ulrich Weigand6af25592017-07-17 17:47:35 +00006719#if __ARCH__ >= 12
6720static inline __ATTRS_o_ai vector float
6721vec_slb(vector float __a, vector signed int __b) {
6722 return (vector float)__builtin_s390_vslb(
6723 (vector unsigned char)__a, (vector unsigned char)__b);
6724}
6725
6726static inline __ATTRS_o_ai vector float
6727vec_slb(vector float __a, vector unsigned int __b) {
6728 return (vector float)__builtin_s390_vslb(
6729 (vector unsigned char)__a, (vector unsigned char)__b);
6730}
6731#endif
6732
Ulrich Weigandca256432015-07-30 14:10:43 +00006733static inline __ATTRS_o_ai vector double
6734vec_slb(vector double __a, vector signed long long __b) {
6735 return (vector double)__builtin_s390_vslb(
6736 (vector unsigned char)__a, (vector unsigned char)__b);
6737}
6738
6739static inline __ATTRS_o_ai vector double
6740vec_slb(vector double __a, vector unsigned long long __b) {
6741 return (vector double)__builtin_s390_vslb(
6742 (vector unsigned char)__a, (vector unsigned char)__b);
6743}
6744
6745/*-- vec_sld ----------------------------------------------------------------*/
6746
6747extern __ATTRS_o vector signed char
6748vec_sld(vector signed char __a, vector signed char __b, int __c)
6749 __constant_range(__c, 0, 15);
6750
Ulrich Weigand6af25592017-07-17 17:47:35 +00006751extern __ATTRS_o vector bool char
6752vec_sld(vector bool char __a, vector bool char __b, int __c)
6753 __constant_range(__c, 0, 15);
6754
Ulrich Weigandca256432015-07-30 14:10:43 +00006755extern __ATTRS_o vector unsigned char
6756vec_sld(vector unsigned char __a, vector unsigned char __b, int __c)
6757 __constant_range(__c, 0, 15);
6758
6759extern __ATTRS_o vector signed short
6760vec_sld(vector signed short __a, vector signed short __b, int __c)
6761 __constant_range(__c, 0, 15);
6762
Ulrich Weigand6af25592017-07-17 17:47:35 +00006763extern __ATTRS_o vector bool short
6764vec_sld(vector bool short __a, vector bool short __b, int __c)
6765 __constant_range(__c, 0, 15);
6766
Ulrich Weigandca256432015-07-30 14:10:43 +00006767extern __ATTRS_o vector unsigned short
6768vec_sld(vector unsigned short __a, vector unsigned short __b, int __c)
6769 __constant_range(__c, 0, 15);
6770
6771extern __ATTRS_o vector signed int
6772vec_sld(vector signed int __a, vector signed int __b, int __c)
6773 __constant_range(__c, 0, 15);
6774
Ulrich Weigand6af25592017-07-17 17:47:35 +00006775extern __ATTRS_o vector bool int
6776vec_sld(vector bool int __a, vector bool int __b, int __c)
6777 __constant_range(__c, 0, 15);
6778
Ulrich Weigandca256432015-07-30 14:10:43 +00006779extern __ATTRS_o vector unsigned int
6780vec_sld(vector unsigned int __a, vector unsigned int __b, int __c)
6781 __constant_range(__c, 0, 15);
6782
6783extern __ATTRS_o vector signed long long
6784vec_sld(vector signed long long __a, vector signed long long __b, int __c)
6785 __constant_range(__c, 0, 15);
6786
Ulrich Weigand6af25592017-07-17 17:47:35 +00006787extern __ATTRS_o vector bool long long
6788vec_sld(vector bool long long __a, vector bool long long __b, int __c)
6789 __constant_range(__c, 0, 15);
6790
Ulrich Weigandca256432015-07-30 14:10:43 +00006791extern __ATTRS_o vector unsigned long long
6792vec_sld(vector unsigned long long __a, vector unsigned long long __b, int __c)
6793 __constant_range(__c, 0, 15);
6794
Ulrich Weigand6af25592017-07-17 17:47:35 +00006795#if __ARCH__ >= 12
6796extern __ATTRS_o vector float
6797vec_sld(vector float __a, vector float __b, int __c)
6798 __constant_range(__c, 0, 15);
6799#endif
6800
Ulrich Weigandca256432015-07-30 14:10:43 +00006801extern __ATTRS_o vector double
6802vec_sld(vector double __a, vector double __b, int __c)
6803 __constant_range(__c, 0, 15);
6804
6805#define vec_sld(X, Y, Z) ((__typeof__((vec_sld)((X), (Y), (Z)))) \
6806 __builtin_s390_vsldb((vector unsigned char)(X), \
6807 (vector unsigned char)(Y), (Z)))
6808
6809/*-- vec_sldw ---------------------------------------------------------------*/
6810
6811extern __ATTRS_o vector signed char
6812vec_sldw(vector signed char __a, vector signed char __b, int __c)
6813 __constant_range(__c, 0, 3);
6814
6815extern __ATTRS_o vector unsigned char
6816vec_sldw(vector unsigned char __a, vector unsigned char __b, int __c)
6817 __constant_range(__c, 0, 3);
6818
6819extern __ATTRS_o vector signed short
6820vec_sldw(vector signed short __a, vector signed short __b, int __c)
6821 __constant_range(__c, 0, 3);
6822
6823extern __ATTRS_o vector unsigned short
6824vec_sldw(vector unsigned short __a, vector unsigned short __b, int __c)
6825 __constant_range(__c, 0, 3);
6826
6827extern __ATTRS_o vector signed int
6828vec_sldw(vector signed int __a, vector signed int __b, int __c)
6829 __constant_range(__c, 0, 3);
6830
6831extern __ATTRS_o vector unsigned int
6832vec_sldw(vector unsigned int __a, vector unsigned int __b, int __c)
6833 __constant_range(__c, 0, 3);
6834
6835extern __ATTRS_o vector signed long long
6836vec_sldw(vector signed long long __a, vector signed long long __b, int __c)
6837 __constant_range(__c, 0, 3);
6838
6839extern __ATTRS_o vector unsigned long long
6840vec_sldw(vector unsigned long long __a, vector unsigned long long __b, int __c)
6841 __constant_range(__c, 0, 3);
6842
Ulrich Weigand6af25592017-07-17 17:47:35 +00006843// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006844extern __ATTRS_o vector double
6845vec_sldw(vector double __a, vector double __b, int __c)
6846 __constant_range(__c, 0, 3);
6847
6848#define vec_sldw(X, Y, Z) ((__typeof__((vec_sldw)((X), (Y), (Z)))) \
6849 __builtin_s390_vsldb((vector unsigned char)(X), \
6850 (vector unsigned char)(Y), (Z) * 4))
6851
6852/*-- vec_sral ---------------------------------------------------------------*/
6853
6854static inline __ATTRS_o_ai vector signed char
6855vec_sral(vector signed char __a, vector unsigned char __b) {
6856 return (vector signed char)__builtin_s390_vsra(
6857 (vector unsigned char)__a, __b);
6858}
6859
Ulrich Weigand6af25592017-07-17 17:47:35 +00006860// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006861static inline __ATTRS_o_ai vector signed char
6862vec_sral(vector signed char __a, vector unsigned short __b) {
6863 return (vector signed char)__builtin_s390_vsra(
6864 (vector unsigned char)__a, (vector unsigned char)__b);
6865}
6866
Ulrich Weigand6af25592017-07-17 17:47:35 +00006867// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006868static inline __ATTRS_o_ai vector signed char
6869vec_sral(vector signed char __a, vector unsigned int __b) {
6870 return (vector signed char)__builtin_s390_vsra(
6871 (vector unsigned char)__a, (vector unsigned char)__b);
6872}
6873
Ulrich Weigand6af25592017-07-17 17:47:35 +00006874// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006875static inline __ATTRS_o_ai vector bool char
6876vec_sral(vector bool char __a, vector unsigned char __b) {
6877 return (vector bool char)__builtin_s390_vsra(
6878 (vector unsigned char)__a, __b);
6879}
6880
Ulrich Weigand6af25592017-07-17 17:47:35 +00006881// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006882static inline __ATTRS_o_ai vector bool char
6883vec_sral(vector bool char __a, vector unsigned short __b) {
6884 return (vector bool char)__builtin_s390_vsra(
6885 (vector unsigned char)__a, (vector unsigned char)__b);
6886}
6887
Ulrich Weigand6af25592017-07-17 17:47:35 +00006888// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006889static inline __ATTRS_o_ai vector bool char
6890vec_sral(vector bool char __a, vector unsigned int __b) {
6891 return (vector bool char)__builtin_s390_vsra(
6892 (vector unsigned char)__a, (vector unsigned char)__b);
6893}
6894
6895static inline __ATTRS_o_ai vector unsigned char
6896vec_sral(vector unsigned char __a, vector unsigned char __b) {
6897 return __builtin_s390_vsra(__a, __b);
6898}
6899
Ulrich Weigand6af25592017-07-17 17:47:35 +00006900// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006901static inline __ATTRS_o_ai vector unsigned char
6902vec_sral(vector unsigned char __a, vector unsigned short __b) {
6903 return __builtin_s390_vsra(__a, (vector unsigned char)__b);
6904}
6905
Ulrich Weigand6af25592017-07-17 17:47:35 +00006906// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006907static inline __ATTRS_o_ai vector unsigned char
6908vec_sral(vector unsigned char __a, vector unsigned int __b) {
6909 return __builtin_s390_vsra(__a, (vector unsigned char)__b);
6910}
6911
6912static inline __ATTRS_o_ai vector signed short
6913vec_sral(vector signed short __a, vector unsigned char __b) {
6914 return (vector signed short)__builtin_s390_vsra(
6915 (vector unsigned char)__a, __b);
6916}
6917
Ulrich Weigand6af25592017-07-17 17:47:35 +00006918// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006919static inline __ATTRS_o_ai vector signed short
6920vec_sral(vector signed short __a, vector unsigned short __b) {
6921 return (vector signed short)__builtin_s390_vsra(
6922 (vector unsigned char)__a, (vector unsigned char)__b);
6923}
6924
Ulrich Weigand6af25592017-07-17 17:47:35 +00006925// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006926static inline __ATTRS_o_ai vector signed short
6927vec_sral(vector signed short __a, vector unsigned int __b) {
6928 return (vector signed short)__builtin_s390_vsra(
6929 (vector unsigned char)__a, (vector unsigned char)__b);
6930}
6931
Ulrich Weigand6af25592017-07-17 17:47:35 +00006932// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006933static inline __ATTRS_o_ai vector bool short
6934vec_sral(vector bool short __a, vector unsigned char __b) {
6935 return (vector bool short)__builtin_s390_vsra(
6936 (vector unsigned char)__a, __b);
6937}
6938
Ulrich Weigand6af25592017-07-17 17:47:35 +00006939// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006940static inline __ATTRS_o_ai vector bool short
6941vec_sral(vector bool short __a, vector unsigned short __b) {
6942 return (vector bool short)__builtin_s390_vsra(
6943 (vector unsigned char)__a, (vector unsigned char)__b);
6944}
6945
Ulrich Weigand6af25592017-07-17 17:47:35 +00006946// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006947static inline __ATTRS_o_ai vector bool short
6948vec_sral(vector bool short __a, vector unsigned int __b) {
6949 return (vector bool short)__builtin_s390_vsra(
6950 (vector unsigned char)__a, (vector unsigned char)__b);
6951}
6952
6953static inline __ATTRS_o_ai vector unsigned short
6954vec_sral(vector unsigned short __a, vector unsigned char __b) {
6955 return (vector unsigned short)__builtin_s390_vsra(
6956 (vector unsigned char)__a, __b);
6957}
6958
Ulrich Weigand6af25592017-07-17 17:47:35 +00006959// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006960static inline __ATTRS_o_ai vector unsigned short
6961vec_sral(vector unsigned short __a, vector unsigned short __b) {
6962 return (vector unsigned short)__builtin_s390_vsra(
6963 (vector unsigned char)__a, (vector unsigned char)__b);
6964}
6965
Ulrich Weigand6af25592017-07-17 17:47:35 +00006966// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006967static inline __ATTRS_o_ai vector unsigned short
6968vec_sral(vector unsigned short __a, vector unsigned int __b) {
6969 return (vector unsigned short)__builtin_s390_vsra(
6970 (vector unsigned char)__a, (vector unsigned char)__b);
6971}
6972
6973static inline __ATTRS_o_ai vector signed int
6974vec_sral(vector signed int __a, vector unsigned char __b) {
6975 return (vector signed int)__builtin_s390_vsra(
6976 (vector unsigned char)__a, __b);
6977}
6978
Ulrich Weigand6af25592017-07-17 17:47:35 +00006979// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006980static inline __ATTRS_o_ai vector signed int
6981vec_sral(vector signed int __a, vector unsigned short __b) {
6982 return (vector signed int)__builtin_s390_vsra(
6983 (vector unsigned char)__a, (vector unsigned char)__b);
6984}
6985
Ulrich Weigand6af25592017-07-17 17:47:35 +00006986// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006987static inline __ATTRS_o_ai vector signed int
6988vec_sral(vector signed int __a, vector unsigned int __b) {
6989 return (vector signed int)__builtin_s390_vsra(
6990 (vector unsigned char)__a, (vector unsigned char)__b);
6991}
6992
Ulrich Weigand6af25592017-07-17 17:47:35 +00006993// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00006994static inline __ATTRS_o_ai vector bool int
6995vec_sral(vector bool int __a, vector unsigned char __b) {
6996 return (vector bool int)__builtin_s390_vsra(
6997 (vector unsigned char)__a, __b);
6998}
6999
Ulrich Weigand6af25592017-07-17 17:47:35 +00007000// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007001static inline __ATTRS_o_ai vector bool int
7002vec_sral(vector bool int __a, vector unsigned short __b) {
7003 return (vector bool int)__builtin_s390_vsra(
7004 (vector unsigned char)__a, (vector unsigned char)__b);
7005}
7006
Ulrich Weigand6af25592017-07-17 17:47:35 +00007007// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007008static inline __ATTRS_o_ai vector bool int
7009vec_sral(vector bool int __a, vector unsigned int __b) {
7010 return (vector bool int)__builtin_s390_vsra(
7011 (vector unsigned char)__a, (vector unsigned char)__b);
7012}
7013
7014static inline __ATTRS_o_ai vector unsigned int
7015vec_sral(vector unsigned int __a, vector unsigned char __b) {
7016 return (vector unsigned int)__builtin_s390_vsra(
7017 (vector unsigned char)__a, __b);
7018}
7019
Ulrich Weigand6af25592017-07-17 17:47:35 +00007020// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007021static inline __ATTRS_o_ai vector unsigned int
7022vec_sral(vector unsigned int __a, vector unsigned short __b) {
7023 return (vector unsigned int)__builtin_s390_vsra(
7024 (vector unsigned char)__a, (vector unsigned char)__b);
7025}
7026
Ulrich Weigand6af25592017-07-17 17:47:35 +00007027// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007028static inline __ATTRS_o_ai vector unsigned int
7029vec_sral(vector unsigned int __a, vector unsigned int __b) {
7030 return (vector unsigned int)__builtin_s390_vsra(
7031 (vector unsigned char)__a, (vector unsigned char)__b);
7032}
7033
7034static inline __ATTRS_o_ai vector signed long long
7035vec_sral(vector signed long long __a, vector unsigned char __b) {
7036 return (vector signed long long)__builtin_s390_vsra(
7037 (vector unsigned char)__a, __b);
7038}
7039
Ulrich Weigand6af25592017-07-17 17:47:35 +00007040// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007041static inline __ATTRS_o_ai vector signed long long
7042vec_sral(vector signed long long __a, vector unsigned short __b) {
7043 return (vector signed long long)__builtin_s390_vsra(
7044 (vector unsigned char)__a, (vector unsigned char)__b);
7045}
7046
Ulrich Weigand6af25592017-07-17 17:47:35 +00007047// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007048static inline __ATTRS_o_ai vector signed long long
7049vec_sral(vector signed long long __a, vector unsigned int __b) {
7050 return (vector signed long long)__builtin_s390_vsra(
7051 (vector unsigned char)__a, (vector unsigned char)__b);
7052}
7053
Ulrich Weigand6af25592017-07-17 17:47:35 +00007054// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007055static inline __ATTRS_o_ai vector bool long long
7056vec_sral(vector bool long long __a, vector unsigned char __b) {
7057 return (vector bool long long)__builtin_s390_vsra(
7058 (vector unsigned char)__a, __b);
7059}
7060
Ulrich Weigand6af25592017-07-17 17:47:35 +00007061// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007062static inline __ATTRS_o_ai vector bool long long
7063vec_sral(vector bool long long __a, vector unsigned short __b) {
7064 return (vector bool long long)__builtin_s390_vsra(
7065 (vector unsigned char)__a, (vector unsigned char)__b);
7066}
7067
Ulrich Weigand6af25592017-07-17 17:47:35 +00007068// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007069static inline __ATTRS_o_ai vector bool long long
7070vec_sral(vector bool long long __a, vector unsigned int __b) {
7071 return (vector bool long long)__builtin_s390_vsra(
7072 (vector unsigned char)__a, (vector unsigned char)__b);
7073}
7074
7075static inline __ATTRS_o_ai vector unsigned long long
7076vec_sral(vector unsigned long long __a, vector unsigned char __b) {
7077 return (vector unsigned long long)__builtin_s390_vsra(
7078 (vector unsigned char)__a, __b);
7079}
7080
Ulrich Weigand6af25592017-07-17 17:47:35 +00007081// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007082static inline __ATTRS_o_ai vector unsigned long long
7083vec_sral(vector unsigned long long __a, vector unsigned short __b) {
7084 return (vector unsigned long long)__builtin_s390_vsra(
7085 (vector unsigned char)__a, (vector unsigned char)__b);
7086}
7087
Ulrich Weigand6af25592017-07-17 17:47:35 +00007088// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007089static inline __ATTRS_o_ai vector unsigned long long
7090vec_sral(vector unsigned long long __a, vector unsigned int __b) {
7091 return (vector unsigned long long)__builtin_s390_vsra(
7092 (vector unsigned char)__a, (vector unsigned char)__b);
7093}
7094
7095/*-- vec_srab ---------------------------------------------------------------*/
7096
7097static inline __ATTRS_o_ai vector signed char
7098vec_srab(vector signed char __a, vector signed char __b) {
7099 return (vector signed char)__builtin_s390_vsrab(
7100 (vector unsigned char)__a, (vector unsigned char)__b);
7101}
7102
7103static inline __ATTRS_o_ai vector signed char
7104vec_srab(vector signed char __a, vector unsigned char __b) {
7105 return (vector signed char)__builtin_s390_vsrab(
7106 (vector unsigned char)__a, __b);
7107}
7108
7109static inline __ATTRS_o_ai vector unsigned char
7110vec_srab(vector unsigned char __a, vector signed char __b) {
7111 return __builtin_s390_vsrab(__a, (vector unsigned char)__b);
7112}
7113
7114static inline __ATTRS_o_ai vector unsigned char
7115vec_srab(vector unsigned char __a, vector unsigned char __b) {
7116 return __builtin_s390_vsrab(__a, __b);
7117}
7118
7119static inline __ATTRS_o_ai vector signed short
7120vec_srab(vector signed short __a, vector signed short __b) {
7121 return (vector signed short)__builtin_s390_vsrab(
7122 (vector unsigned char)__a, (vector unsigned char)__b);
7123}
7124
7125static inline __ATTRS_o_ai vector signed short
7126vec_srab(vector signed short __a, vector unsigned short __b) {
7127 return (vector signed short)__builtin_s390_vsrab(
7128 (vector unsigned char)__a, (vector unsigned char)__b);
7129}
7130
7131static inline __ATTRS_o_ai vector unsigned short
7132vec_srab(vector unsigned short __a, vector signed short __b) {
7133 return (vector unsigned short)__builtin_s390_vsrab(
7134 (vector unsigned char)__a, (vector unsigned char)__b);
7135}
7136
7137static inline __ATTRS_o_ai vector unsigned short
7138vec_srab(vector unsigned short __a, vector unsigned short __b) {
7139 return (vector unsigned short)__builtin_s390_vsrab(
7140 (vector unsigned char)__a, (vector unsigned char)__b);
7141}
7142
7143static inline __ATTRS_o_ai vector signed int
7144vec_srab(vector signed int __a, vector signed int __b) {
7145 return (vector signed int)__builtin_s390_vsrab(
7146 (vector unsigned char)__a, (vector unsigned char)__b);
7147}
7148
7149static inline __ATTRS_o_ai vector signed int
7150vec_srab(vector signed int __a, vector unsigned int __b) {
7151 return (vector signed int)__builtin_s390_vsrab(
7152 (vector unsigned char)__a, (vector unsigned char)__b);
7153}
7154
7155static inline __ATTRS_o_ai vector unsigned int
7156vec_srab(vector unsigned int __a, vector signed int __b) {
7157 return (vector unsigned int)__builtin_s390_vsrab(
7158 (vector unsigned char)__a, (vector unsigned char)__b);
7159}
7160
7161static inline __ATTRS_o_ai vector unsigned int
7162vec_srab(vector unsigned int __a, vector unsigned int __b) {
7163 return (vector unsigned int)__builtin_s390_vsrab(
7164 (vector unsigned char)__a, (vector unsigned char)__b);
7165}
7166
7167static inline __ATTRS_o_ai vector signed long long
7168vec_srab(vector signed long long __a, vector signed long long __b) {
7169 return (vector signed long long)__builtin_s390_vsrab(
7170 (vector unsigned char)__a, (vector unsigned char)__b);
7171}
7172
7173static inline __ATTRS_o_ai vector signed long long
7174vec_srab(vector signed long long __a, vector unsigned long long __b) {
7175 return (vector signed long long)__builtin_s390_vsrab(
7176 (vector unsigned char)__a, (vector unsigned char)__b);
7177}
7178
7179static inline __ATTRS_o_ai vector unsigned long long
7180vec_srab(vector unsigned long long __a, vector signed long long __b) {
7181 return (vector unsigned long long)__builtin_s390_vsrab(
7182 (vector unsigned char)__a, (vector unsigned char)__b);
7183}
7184
7185static inline __ATTRS_o_ai vector unsigned long long
7186vec_srab(vector unsigned long long __a, vector unsigned long long __b) {
7187 return (vector unsigned long long)__builtin_s390_vsrab(
7188 (vector unsigned char)__a, (vector unsigned char)__b);
7189}
7190
Ulrich Weigand6af25592017-07-17 17:47:35 +00007191#if __ARCH__ >= 12
7192static inline __ATTRS_o_ai vector float
7193vec_srab(vector float __a, vector signed int __b) {
7194 return (vector float)__builtin_s390_vsrab(
7195 (vector unsigned char)__a, (vector unsigned char)__b);
7196}
7197
7198static inline __ATTRS_o_ai vector float
7199vec_srab(vector float __a, vector unsigned int __b) {
7200 return (vector float)__builtin_s390_vsrab(
7201 (vector unsigned char)__a, (vector unsigned char)__b);
7202}
7203#endif
7204
Ulrich Weigandca256432015-07-30 14:10:43 +00007205static inline __ATTRS_o_ai vector double
7206vec_srab(vector double __a, vector signed long long __b) {
7207 return (vector double)__builtin_s390_vsrab(
7208 (vector unsigned char)__a, (vector unsigned char)__b);
7209}
7210
7211static inline __ATTRS_o_ai vector double
7212vec_srab(vector double __a, vector unsigned long long __b) {
7213 return (vector double)__builtin_s390_vsrab(
7214 (vector unsigned char)__a, (vector unsigned char)__b);
7215}
7216
7217/*-- vec_srl ----------------------------------------------------------------*/
7218
7219static inline __ATTRS_o_ai vector signed char
7220vec_srl(vector signed char __a, vector unsigned char __b) {
7221 return (vector signed char)__builtin_s390_vsrl(
7222 (vector unsigned char)__a, __b);
7223}
7224
Ulrich Weigand6af25592017-07-17 17:47:35 +00007225// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007226static inline __ATTRS_o_ai vector signed char
7227vec_srl(vector signed char __a, vector unsigned short __b) {
7228 return (vector signed char)__builtin_s390_vsrl(
7229 (vector unsigned char)__a, (vector unsigned char)__b);
7230}
7231
Ulrich Weigand6af25592017-07-17 17:47:35 +00007232// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007233static inline __ATTRS_o_ai vector signed char
7234vec_srl(vector signed char __a, vector unsigned int __b) {
7235 return (vector signed char)__builtin_s390_vsrl(
7236 (vector unsigned char)__a, (vector unsigned char)__b);
7237}
7238
Ulrich Weigand6af25592017-07-17 17:47:35 +00007239// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007240static inline __ATTRS_o_ai vector bool char
7241vec_srl(vector bool char __a, vector unsigned char __b) {
7242 return (vector bool char)__builtin_s390_vsrl(
7243 (vector unsigned char)__a, __b);
7244}
7245
Ulrich Weigand6af25592017-07-17 17:47:35 +00007246// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007247static inline __ATTRS_o_ai vector bool char
7248vec_srl(vector bool char __a, vector unsigned short __b) {
7249 return (vector bool char)__builtin_s390_vsrl(
7250 (vector unsigned char)__a, (vector unsigned char)__b);
7251}
7252
Ulrich Weigand6af25592017-07-17 17:47:35 +00007253// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007254static inline __ATTRS_o_ai vector bool char
7255vec_srl(vector bool char __a, vector unsigned int __b) {
7256 return (vector bool char)__builtin_s390_vsrl(
7257 (vector unsigned char)__a, (vector unsigned char)__b);
7258}
7259
7260static inline __ATTRS_o_ai vector unsigned char
7261vec_srl(vector unsigned char __a, vector unsigned char __b) {
7262 return __builtin_s390_vsrl(__a, __b);
7263}
7264
Ulrich Weigand6af25592017-07-17 17:47:35 +00007265// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007266static inline __ATTRS_o_ai vector unsigned char
7267vec_srl(vector unsigned char __a, vector unsigned short __b) {
7268 return __builtin_s390_vsrl(__a, (vector unsigned char)__b);
7269}
7270
Ulrich Weigand6af25592017-07-17 17:47:35 +00007271// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007272static inline __ATTRS_o_ai vector unsigned char
7273vec_srl(vector unsigned char __a, vector unsigned int __b) {
7274 return __builtin_s390_vsrl(__a, (vector unsigned char)__b);
7275}
7276
7277static inline __ATTRS_o_ai vector signed short
7278vec_srl(vector signed short __a, vector unsigned char __b) {
7279 return (vector signed short)__builtin_s390_vsrl(
7280 (vector unsigned char)__a, __b);
7281}
7282
Ulrich Weigand6af25592017-07-17 17:47:35 +00007283// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007284static inline __ATTRS_o_ai vector signed short
7285vec_srl(vector signed short __a, vector unsigned short __b) {
7286 return (vector signed short)__builtin_s390_vsrl(
7287 (vector unsigned char)__a, (vector unsigned char)__b);
7288}
7289
Ulrich Weigand6af25592017-07-17 17:47:35 +00007290// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007291static inline __ATTRS_o_ai vector signed short
7292vec_srl(vector signed short __a, vector unsigned int __b) {
7293 return (vector signed short)__builtin_s390_vsrl(
7294 (vector unsigned char)__a, (vector unsigned char)__b);
7295}
7296
Ulrich Weigand6af25592017-07-17 17:47:35 +00007297// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007298static inline __ATTRS_o_ai vector bool short
7299vec_srl(vector bool short __a, vector unsigned char __b) {
7300 return (vector bool short)__builtin_s390_vsrl(
7301 (vector unsigned char)__a, __b);
7302}
7303
Ulrich Weigand6af25592017-07-17 17:47:35 +00007304// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007305static inline __ATTRS_o_ai vector bool short
7306vec_srl(vector bool short __a, vector unsigned short __b) {
7307 return (vector bool short)__builtin_s390_vsrl(
7308 (vector unsigned char)__a, (vector unsigned char)__b);
7309}
7310
Ulrich Weigand6af25592017-07-17 17:47:35 +00007311// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007312static inline __ATTRS_o_ai vector bool short
7313vec_srl(vector bool short __a, vector unsigned int __b) {
7314 return (vector bool short)__builtin_s390_vsrl(
7315 (vector unsigned char)__a, (vector unsigned char)__b);
7316}
7317
7318static inline __ATTRS_o_ai vector unsigned short
7319vec_srl(vector unsigned short __a, vector unsigned char __b) {
7320 return (vector unsigned short)__builtin_s390_vsrl(
7321 (vector unsigned char)__a, __b);
7322}
7323
Ulrich Weigand6af25592017-07-17 17:47:35 +00007324// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007325static inline __ATTRS_o_ai vector unsigned short
7326vec_srl(vector unsigned short __a, vector unsigned short __b) {
7327 return (vector unsigned short)__builtin_s390_vsrl(
7328 (vector unsigned char)__a, (vector unsigned char)__b);
7329}
7330
Ulrich Weigand6af25592017-07-17 17:47:35 +00007331// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007332static inline __ATTRS_o_ai vector unsigned short
7333vec_srl(vector unsigned short __a, vector unsigned int __b) {
7334 return (vector unsigned short)__builtin_s390_vsrl(
7335 (vector unsigned char)__a, (vector unsigned char)__b);
7336}
7337
7338static inline __ATTRS_o_ai vector signed int
7339vec_srl(vector signed int __a, vector unsigned char __b) {
7340 return (vector signed int)__builtin_s390_vsrl(
7341 (vector unsigned char)__a, __b);
7342}
7343
Ulrich Weigand6af25592017-07-17 17:47:35 +00007344// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007345static inline __ATTRS_o_ai vector signed int
7346vec_srl(vector signed int __a, vector unsigned short __b) {
7347 return (vector signed int)__builtin_s390_vsrl(
7348 (vector unsigned char)__a, (vector unsigned char)__b);
7349}
7350
Ulrich Weigand6af25592017-07-17 17:47:35 +00007351// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007352static inline __ATTRS_o_ai vector signed int
7353vec_srl(vector signed int __a, vector unsigned int __b) {
7354 return (vector signed int)__builtin_s390_vsrl(
7355 (vector unsigned char)__a, (vector unsigned char)__b);
7356}
7357
Ulrich Weigand6af25592017-07-17 17:47:35 +00007358// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007359static inline __ATTRS_o_ai vector bool int
7360vec_srl(vector bool int __a, vector unsigned char __b) {
7361 return (vector bool int)__builtin_s390_vsrl(
7362 (vector unsigned char)__a, __b);
7363}
7364
Ulrich Weigand6af25592017-07-17 17:47:35 +00007365// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007366static inline __ATTRS_o_ai vector bool int
7367vec_srl(vector bool int __a, vector unsigned short __b) {
7368 return (vector bool int)__builtin_s390_vsrl(
7369 (vector unsigned char)__a, (vector unsigned char)__b);
7370}
7371
Ulrich Weigand6af25592017-07-17 17:47:35 +00007372// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007373static inline __ATTRS_o_ai vector bool int
7374vec_srl(vector bool int __a, vector unsigned int __b) {
7375 return (vector bool int)__builtin_s390_vsrl(
7376 (vector unsigned char)__a, (vector unsigned char)__b);
7377}
7378
7379static inline __ATTRS_o_ai vector unsigned int
7380vec_srl(vector unsigned int __a, vector unsigned char __b) {
7381 return (vector unsigned int)__builtin_s390_vsrl(
7382 (vector unsigned char)__a, __b);
7383}
7384
Ulrich Weigand6af25592017-07-17 17:47:35 +00007385// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007386static inline __ATTRS_o_ai vector unsigned int
7387vec_srl(vector unsigned int __a, vector unsigned short __b) {
7388 return (vector unsigned int)__builtin_s390_vsrl(
7389 (vector unsigned char)__a, (vector unsigned char)__b);
7390}
7391
Ulrich Weigand6af25592017-07-17 17:47:35 +00007392// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007393static inline __ATTRS_o_ai vector unsigned int
7394vec_srl(vector unsigned int __a, vector unsigned int __b) {
7395 return (vector unsigned int)__builtin_s390_vsrl(
7396 (vector unsigned char)__a, (vector unsigned char)__b);
7397}
7398
7399static inline __ATTRS_o_ai vector signed long long
7400vec_srl(vector signed long long __a, vector unsigned char __b) {
7401 return (vector signed long long)__builtin_s390_vsrl(
7402 (vector unsigned char)__a, __b);
7403}
7404
Ulrich Weigand6af25592017-07-17 17:47:35 +00007405// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007406static inline __ATTRS_o_ai vector signed long long
7407vec_srl(vector signed long long __a, vector unsigned short __b) {
7408 return (vector signed long long)__builtin_s390_vsrl(
7409 (vector unsigned char)__a, (vector unsigned char)__b);
7410}
7411
Ulrich Weigand6af25592017-07-17 17:47:35 +00007412// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007413static inline __ATTRS_o_ai vector signed long long
7414vec_srl(vector signed long long __a, vector unsigned int __b) {
7415 return (vector signed long long)__builtin_s390_vsrl(
7416 (vector unsigned char)__a, (vector unsigned char)__b);
7417}
7418
Ulrich Weigand6af25592017-07-17 17:47:35 +00007419// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007420static inline __ATTRS_o_ai vector bool long long
7421vec_srl(vector bool long long __a, vector unsigned char __b) {
7422 return (vector bool long long)__builtin_s390_vsrl(
7423 (vector unsigned char)__a, __b);
7424}
7425
Ulrich Weigand6af25592017-07-17 17:47:35 +00007426// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007427static inline __ATTRS_o_ai vector bool long long
7428vec_srl(vector bool long long __a, vector unsigned short __b) {
7429 return (vector bool long long)__builtin_s390_vsrl(
7430 (vector unsigned char)__a, (vector unsigned char)__b);
7431}
7432
Ulrich Weigand6af25592017-07-17 17:47:35 +00007433// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007434static inline __ATTRS_o_ai vector bool long long
7435vec_srl(vector bool long long __a, vector unsigned int __b) {
7436 return (vector bool long long)__builtin_s390_vsrl(
7437 (vector unsigned char)__a, (vector unsigned char)__b);
7438}
7439
7440static inline __ATTRS_o_ai vector unsigned long long
7441vec_srl(vector unsigned long long __a, vector unsigned char __b) {
7442 return (vector unsigned long long)__builtin_s390_vsrl(
7443 (vector unsigned char)__a, __b);
7444}
7445
Ulrich Weigand6af25592017-07-17 17:47:35 +00007446// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007447static inline __ATTRS_o_ai vector unsigned long long
7448vec_srl(vector unsigned long long __a, vector unsigned short __b) {
7449 return (vector unsigned long long)__builtin_s390_vsrl(
7450 (vector unsigned char)__a, (vector unsigned char)__b);
7451}
7452
Ulrich Weigand6af25592017-07-17 17:47:35 +00007453// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007454static inline __ATTRS_o_ai vector unsigned long long
7455vec_srl(vector unsigned long long __a, vector unsigned int __b) {
7456 return (vector unsigned long long)__builtin_s390_vsrl(
7457 (vector unsigned char)__a, (vector unsigned char)__b);
7458}
7459
7460/*-- vec_srb ----------------------------------------------------------------*/
7461
7462static inline __ATTRS_o_ai vector signed char
7463vec_srb(vector signed char __a, vector signed char __b) {
7464 return (vector signed char)__builtin_s390_vsrlb(
7465 (vector unsigned char)__a, (vector unsigned char)__b);
7466}
7467
7468static inline __ATTRS_o_ai vector signed char
7469vec_srb(vector signed char __a, vector unsigned char __b) {
7470 return (vector signed char)__builtin_s390_vsrlb(
7471 (vector unsigned char)__a, __b);
7472}
7473
7474static inline __ATTRS_o_ai vector unsigned char
7475vec_srb(vector unsigned char __a, vector signed char __b) {
7476 return __builtin_s390_vsrlb(__a, (vector unsigned char)__b);
7477}
7478
7479static inline __ATTRS_o_ai vector unsigned char
7480vec_srb(vector unsigned char __a, vector unsigned char __b) {
7481 return __builtin_s390_vsrlb(__a, __b);
7482}
7483
7484static inline __ATTRS_o_ai vector signed short
7485vec_srb(vector signed short __a, vector signed short __b) {
7486 return (vector signed short)__builtin_s390_vsrlb(
7487 (vector unsigned char)__a, (vector unsigned char)__b);
7488}
7489
7490static inline __ATTRS_o_ai vector signed short
7491vec_srb(vector signed short __a, vector unsigned short __b) {
7492 return (vector signed short)__builtin_s390_vsrlb(
7493 (vector unsigned char)__a, (vector unsigned char)__b);
7494}
7495
7496static inline __ATTRS_o_ai vector unsigned short
7497vec_srb(vector unsigned short __a, vector signed short __b) {
7498 return (vector unsigned short)__builtin_s390_vsrlb(
7499 (vector unsigned char)__a, (vector unsigned char)__b);
7500}
7501
7502static inline __ATTRS_o_ai vector unsigned short
7503vec_srb(vector unsigned short __a, vector unsigned short __b) {
7504 return (vector unsigned short)__builtin_s390_vsrlb(
7505 (vector unsigned char)__a, (vector unsigned char)__b);
7506}
7507
7508static inline __ATTRS_o_ai vector signed int
7509vec_srb(vector signed int __a, vector signed int __b) {
7510 return (vector signed int)__builtin_s390_vsrlb(
7511 (vector unsigned char)__a, (vector unsigned char)__b);
7512}
7513
7514static inline __ATTRS_o_ai vector signed int
7515vec_srb(vector signed int __a, vector unsigned int __b) {
7516 return (vector signed int)__builtin_s390_vsrlb(
7517 (vector unsigned char)__a, (vector unsigned char)__b);
7518}
7519
7520static inline __ATTRS_o_ai vector unsigned int
7521vec_srb(vector unsigned int __a, vector signed int __b) {
7522 return (vector unsigned int)__builtin_s390_vsrlb(
7523 (vector unsigned char)__a, (vector unsigned char)__b);
7524}
7525
7526static inline __ATTRS_o_ai vector unsigned int
7527vec_srb(vector unsigned int __a, vector unsigned int __b) {
7528 return (vector unsigned int)__builtin_s390_vsrlb(
7529 (vector unsigned char)__a, (vector unsigned char)__b);
7530}
7531
7532static inline __ATTRS_o_ai vector signed long long
7533vec_srb(vector signed long long __a, vector signed long long __b) {
7534 return (vector signed long long)__builtin_s390_vsrlb(
7535 (vector unsigned char)__a, (vector unsigned char)__b);
7536}
7537
7538static inline __ATTRS_o_ai vector signed long long
7539vec_srb(vector signed long long __a, vector unsigned long long __b) {
7540 return (vector signed long long)__builtin_s390_vsrlb(
7541 (vector unsigned char)__a, (vector unsigned char)__b);
7542}
7543
7544static inline __ATTRS_o_ai vector unsigned long long
7545vec_srb(vector unsigned long long __a, vector signed long long __b) {
7546 return (vector unsigned long long)__builtin_s390_vsrlb(
7547 (vector unsigned char)__a, (vector unsigned char)__b);
7548}
7549
7550static inline __ATTRS_o_ai vector unsigned long long
7551vec_srb(vector unsigned long long __a, vector unsigned long long __b) {
7552 return (vector unsigned long long)__builtin_s390_vsrlb(
7553 (vector unsigned char)__a, (vector unsigned char)__b);
7554}
7555
Ulrich Weigand6af25592017-07-17 17:47:35 +00007556#if __ARCH__ >= 12
7557static inline __ATTRS_o_ai vector float
7558vec_srb(vector float __a, vector signed int __b) {
7559 return (vector float)__builtin_s390_vsrlb(
7560 (vector unsigned char)__a, (vector unsigned char)__b);
7561}
7562
7563static inline __ATTRS_o_ai vector float
7564vec_srb(vector float __a, vector unsigned int __b) {
7565 return (vector float)__builtin_s390_vsrlb(
7566 (vector unsigned char)__a, (vector unsigned char)__b);
7567}
7568#endif
7569
Ulrich Weigandca256432015-07-30 14:10:43 +00007570static inline __ATTRS_o_ai vector double
7571vec_srb(vector double __a, vector signed long long __b) {
7572 return (vector double)__builtin_s390_vsrlb(
7573 (vector unsigned char)__a, (vector unsigned char)__b);
7574}
7575
7576static inline __ATTRS_o_ai vector double
7577vec_srb(vector double __a, vector unsigned long long __b) {
7578 return (vector double)__builtin_s390_vsrlb(
7579 (vector unsigned char)__a, (vector unsigned char)__b);
7580}
7581
7582/*-- vec_abs ----------------------------------------------------------------*/
7583
7584static inline __ATTRS_o_ai vector signed char
7585vec_abs(vector signed char __a) {
7586 return vec_sel(__a, -__a, vec_cmplt(__a, (vector signed char)0));
7587}
7588
7589static inline __ATTRS_o_ai vector signed short
7590vec_abs(vector signed short __a) {
7591 return vec_sel(__a, -__a, vec_cmplt(__a, (vector signed short)0));
7592}
7593
7594static inline __ATTRS_o_ai vector signed int
7595vec_abs(vector signed int __a) {
7596 return vec_sel(__a, -__a, vec_cmplt(__a, (vector signed int)0));
7597}
7598
7599static inline __ATTRS_o_ai vector signed long long
7600vec_abs(vector signed long long __a) {
7601 return vec_sel(__a, -__a, vec_cmplt(__a, (vector signed long long)0));
7602}
7603
Ulrich Weigand6af25592017-07-17 17:47:35 +00007604#if __ARCH__ >= 12
7605static inline __ATTRS_o_ai vector float
7606vec_abs(vector float __a) {
7607 return __builtin_s390_vflpsb(__a);
7608}
7609#endif
7610
Ulrich Weigandca256432015-07-30 14:10:43 +00007611static inline __ATTRS_o_ai vector double
7612vec_abs(vector double __a) {
7613 return __builtin_s390_vflpdb(__a);
7614}
7615
7616/*-- vec_nabs ---------------------------------------------------------------*/
7617
Ulrich Weigand6af25592017-07-17 17:47:35 +00007618#if __ARCH__ >= 12
7619static inline __ATTRS_o_ai vector float
7620vec_nabs(vector float __a) {
7621 return __builtin_s390_vflnsb(__a);
7622}
7623#endif
7624
7625static inline __ATTRS_o_ai vector double
Ulrich Weigandca256432015-07-30 14:10:43 +00007626vec_nabs(vector double __a) {
7627 return __builtin_s390_vflndb(__a);
7628}
7629
7630/*-- vec_max ----------------------------------------------------------------*/
7631
7632static inline __ATTRS_o_ai vector signed char
7633vec_max(vector signed char __a, vector signed char __b) {
7634 return vec_sel(__b, __a, vec_cmpgt(__a, __b));
7635}
7636
Ulrich Weigand6af25592017-07-17 17:47:35 +00007637// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007638static inline __ATTRS_o_ai vector signed char
7639vec_max(vector signed char __a, vector bool char __b) {
7640 vector signed char __bc = (vector signed char)__b;
7641 return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
7642}
7643
Ulrich Weigand6af25592017-07-17 17:47:35 +00007644// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007645static inline __ATTRS_o_ai vector signed char
7646vec_max(vector bool char __a, vector signed char __b) {
7647 vector signed char __ac = (vector signed char)__a;
7648 return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
7649}
7650
7651static inline __ATTRS_o_ai vector unsigned char
7652vec_max(vector unsigned char __a, vector unsigned char __b) {
7653 return vec_sel(__b, __a, vec_cmpgt(__a, __b));
7654}
7655
Ulrich Weigand6af25592017-07-17 17:47:35 +00007656// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007657static inline __ATTRS_o_ai vector unsigned char
7658vec_max(vector unsigned char __a, vector bool char __b) {
7659 vector unsigned char __bc = (vector unsigned char)__b;
7660 return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
7661}
7662
Ulrich Weigand6af25592017-07-17 17:47:35 +00007663// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007664static inline __ATTRS_o_ai vector unsigned char
7665vec_max(vector bool char __a, vector unsigned char __b) {
7666 vector unsigned char __ac = (vector unsigned char)__a;
7667 return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
7668}
7669
7670static inline __ATTRS_o_ai vector signed short
7671vec_max(vector signed short __a, vector signed short __b) {
7672 return vec_sel(__b, __a, vec_cmpgt(__a, __b));
7673}
7674
Ulrich Weigand6af25592017-07-17 17:47:35 +00007675// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007676static inline __ATTRS_o_ai vector signed short
7677vec_max(vector signed short __a, vector bool short __b) {
7678 vector signed short __bc = (vector signed short)__b;
7679 return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
7680}
7681
Ulrich Weigand6af25592017-07-17 17:47:35 +00007682// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007683static inline __ATTRS_o_ai vector signed short
7684vec_max(vector bool short __a, vector signed short __b) {
7685 vector signed short __ac = (vector signed short)__a;
7686 return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
7687}
7688
7689static inline __ATTRS_o_ai vector unsigned short
7690vec_max(vector unsigned short __a, vector unsigned short __b) {
7691 return vec_sel(__b, __a, vec_cmpgt(__a, __b));
7692}
7693
Ulrich Weigand6af25592017-07-17 17:47:35 +00007694// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007695static inline __ATTRS_o_ai vector unsigned short
7696vec_max(vector unsigned short __a, vector bool short __b) {
7697 vector unsigned short __bc = (vector unsigned short)__b;
7698 return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
7699}
7700
Ulrich Weigand6af25592017-07-17 17:47:35 +00007701// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007702static inline __ATTRS_o_ai vector unsigned short
7703vec_max(vector bool short __a, vector unsigned short __b) {
7704 vector unsigned short __ac = (vector unsigned short)__a;
7705 return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
7706}
7707
7708static inline __ATTRS_o_ai vector signed int
7709vec_max(vector signed int __a, vector signed int __b) {
7710 return vec_sel(__b, __a, vec_cmpgt(__a, __b));
7711}
7712
Ulrich Weigand6af25592017-07-17 17:47:35 +00007713// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007714static inline __ATTRS_o_ai vector signed int
7715vec_max(vector signed int __a, vector bool int __b) {
7716 vector signed int __bc = (vector signed int)__b;
7717 return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
7718}
7719
Ulrich Weigand6af25592017-07-17 17:47:35 +00007720// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007721static inline __ATTRS_o_ai vector signed int
7722vec_max(vector bool int __a, vector signed int __b) {
7723 vector signed int __ac = (vector signed int)__a;
7724 return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
7725}
7726
7727static inline __ATTRS_o_ai vector unsigned int
7728vec_max(vector unsigned int __a, vector unsigned int __b) {
7729 return vec_sel(__b, __a, vec_cmpgt(__a, __b));
7730}
7731
Ulrich Weigand6af25592017-07-17 17:47:35 +00007732// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007733static inline __ATTRS_o_ai vector unsigned int
7734vec_max(vector unsigned int __a, vector bool int __b) {
7735 vector unsigned int __bc = (vector unsigned int)__b;
7736 return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
7737}
7738
Ulrich Weigand6af25592017-07-17 17:47:35 +00007739// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007740static inline __ATTRS_o_ai vector unsigned int
7741vec_max(vector bool int __a, vector unsigned int __b) {
7742 vector unsigned int __ac = (vector unsigned int)__a;
7743 return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
7744}
7745
7746static inline __ATTRS_o_ai vector signed long long
7747vec_max(vector signed long long __a, vector signed long long __b) {
7748 return vec_sel(__b, __a, vec_cmpgt(__a, __b));
7749}
7750
Ulrich Weigand6af25592017-07-17 17:47:35 +00007751// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007752static inline __ATTRS_o_ai vector signed long long
7753vec_max(vector signed long long __a, vector bool long long __b) {
7754 vector signed long long __bc = (vector signed long long)__b;
7755 return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
7756}
7757
Ulrich Weigand6af25592017-07-17 17:47:35 +00007758// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007759static inline __ATTRS_o_ai vector signed long long
7760vec_max(vector bool long long __a, vector signed long long __b) {
7761 vector signed long long __ac = (vector signed long long)__a;
7762 return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
7763}
7764
7765static inline __ATTRS_o_ai vector unsigned long long
7766vec_max(vector unsigned long long __a, vector unsigned long long __b) {
7767 return vec_sel(__b, __a, vec_cmpgt(__a, __b));
7768}
7769
Ulrich Weigand6af25592017-07-17 17:47:35 +00007770// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007771static inline __ATTRS_o_ai vector unsigned long long
7772vec_max(vector unsigned long long __a, vector bool long long __b) {
7773 vector unsigned long long __bc = (vector unsigned long long)__b;
7774 return vec_sel(__bc, __a, vec_cmpgt(__a, __bc));
7775}
7776
Ulrich Weigand6af25592017-07-17 17:47:35 +00007777// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007778static inline __ATTRS_o_ai vector unsigned long long
7779vec_max(vector bool long long __a, vector unsigned long long __b) {
7780 vector unsigned long long __ac = (vector unsigned long long)__a;
7781 return vec_sel(__b, __ac, vec_cmpgt(__ac, __b));
7782}
7783
Ulrich Weigand6af25592017-07-17 17:47:35 +00007784#if __ARCH__ >= 12
7785static inline __ATTRS_o_ai vector float
7786vec_max(vector float __a, vector float __b) {
7787 return __builtin_s390_vfmaxsb(__a, __b, 0);
7788}
7789#endif
7790
Ulrich Weigandca256432015-07-30 14:10:43 +00007791static inline __ATTRS_o_ai vector double
7792vec_max(vector double __a, vector double __b) {
Ulrich Weigand6af25592017-07-17 17:47:35 +00007793#if __ARCH__ >= 12
7794 return __builtin_s390_vfmaxdb(__a, __b, 0);
7795#else
Ulrich Weigandca256432015-07-30 14:10:43 +00007796 return vec_sel(__b, __a, vec_cmpgt(__a, __b));
Ulrich Weigand6af25592017-07-17 17:47:35 +00007797#endif
Ulrich Weigandca256432015-07-30 14:10:43 +00007798}
7799
7800/*-- vec_min ----------------------------------------------------------------*/
7801
7802static inline __ATTRS_o_ai vector signed char
7803vec_min(vector signed char __a, vector signed char __b) {
7804 return vec_sel(__a, __b, vec_cmpgt(__a, __b));
7805}
7806
Ulrich Weigand6af25592017-07-17 17:47:35 +00007807// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007808static inline __ATTRS_o_ai vector signed char
7809vec_min(vector signed char __a, vector bool char __b) {
7810 vector signed char __bc = (vector signed char)__b;
7811 return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
7812}
7813
Ulrich Weigand6af25592017-07-17 17:47:35 +00007814// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007815static inline __ATTRS_o_ai vector signed char
7816vec_min(vector bool char __a, vector signed char __b) {
7817 vector signed char __ac = (vector signed char)__a;
7818 return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
7819}
7820
7821static inline __ATTRS_o_ai vector unsigned char
7822vec_min(vector unsigned char __a, vector unsigned char __b) {
7823 return vec_sel(__a, __b, vec_cmpgt(__a, __b));
7824}
7825
Ulrich Weigand6af25592017-07-17 17:47:35 +00007826// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007827static inline __ATTRS_o_ai vector unsigned char
7828vec_min(vector unsigned char __a, vector bool char __b) {
7829 vector unsigned char __bc = (vector unsigned char)__b;
7830 return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
7831}
7832
Ulrich Weigand6af25592017-07-17 17:47:35 +00007833// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007834static inline __ATTRS_o_ai vector unsigned char
7835vec_min(vector bool char __a, vector unsigned char __b) {
7836 vector unsigned char __ac = (vector unsigned char)__a;
7837 return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
7838}
7839
7840static inline __ATTRS_o_ai vector signed short
7841vec_min(vector signed short __a, vector signed short __b) {
7842 return vec_sel(__a, __b, vec_cmpgt(__a, __b));
7843}
7844
Ulrich Weigand6af25592017-07-17 17:47:35 +00007845// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007846static inline __ATTRS_o_ai vector signed short
7847vec_min(vector signed short __a, vector bool short __b) {
7848 vector signed short __bc = (vector signed short)__b;
7849 return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
7850}
7851
Ulrich Weigand6af25592017-07-17 17:47:35 +00007852// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007853static inline __ATTRS_o_ai vector signed short
7854vec_min(vector bool short __a, vector signed short __b) {
7855 vector signed short __ac = (vector signed short)__a;
7856 return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
7857}
7858
7859static inline __ATTRS_o_ai vector unsigned short
7860vec_min(vector unsigned short __a, vector unsigned short __b) {
7861 return vec_sel(__a, __b, vec_cmpgt(__a, __b));
7862}
7863
Ulrich Weigand6af25592017-07-17 17:47:35 +00007864// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007865static inline __ATTRS_o_ai vector unsigned short
7866vec_min(vector unsigned short __a, vector bool short __b) {
7867 vector unsigned short __bc = (vector unsigned short)__b;
7868 return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
7869}
7870
Ulrich Weigand6af25592017-07-17 17:47:35 +00007871// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007872static inline __ATTRS_o_ai vector unsigned short
7873vec_min(vector bool short __a, vector unsigned short __b) {
7874 vector unsigned short __ac = (vector unsigned short)__a;
7875 return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
7876}
7877
7878static inline __ATTRS_o_ai vector signed int
7879vec_min(vector signed int __a, vector signed int __b) {
7880 return vec_sel(__a, __b, vec_cmpgt(__a, __b));
7881}
7882
Ulrich Weigand6af25592017-07-17 17:47:35 +00007883// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007884static inline __ATTRS_o_ai vector signed int
7885vec_min(vector signed int __a, vector bool int __b) {
7886 vector signed int __bc = (vector signed int)__b;
7887 return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
7888}
7889
Ulrich Weigand6af25592017-07-17 17:47:35 +00007890// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007891static inline __ATTRS_o_ai vector signed int
7892vec_min(vector bool int __a, vector signed int __b) {
7893 vector signed int __ac = (vector signed int)__a;
7894 return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
7895}
7896
7897static inline __ATTRS_o_ai vector unsigned int
7898vec_min(vector unsigned int __a, vector unsigned int __b) {
7899 return vec_sel(__a, __b, vec_cmpgt(__a, __b));
7900}
7901
Ulrich Weigand6af25592017-07-17 17:47:35 +00007902// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007903static inline __ATTRS_o_ai vector unsigned int
7904vec_min(vector unsigned int __a, vector bool int __b) {
7905 vector unsigned int __bc = (vector unsigned int)__b;
7906 return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
7907}
7908
Ulrich Weigand6af25592017-07-17 17:47:35 +00007909// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007910static inline __ATTRS_o_ai vector unsigned int
7911vec_min(vector bool int __a, vector unsigned int __b) {
7912 vector unsigned int __ac = (vector unsigned int)__a;
7913 return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
7914}
7915
7916static inline __ATTRS_o_ai vector signed long long
7917vec_min(vector signed long long __a, vector signed long long __b) {
7918 return vec_sel(__a, __b, vec_cmpgt(__a, __b));
7919}
7920
Ulrich Weigand6af25592017-07-17 17:47:35 +00007921// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007922static inline __ATTRS_o_ai vector signed long long
7923vec_min(vector signed long long __a, vector bool long long __b) {
7924 vector signed long long __bc = (vector signed long long)__b;
7925 return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
7926}
7927
Ulrich Weigand6af25592017-07-17 17:47:35 +00007928// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007929static inline __ATTRS_o_ai vector signed long long
7930vec_min(vector bool long long __a, vector signed long long __b) {
7931 vector signed long long __ac = (vector signed long long)__a;
7932 return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
7933}
7934
7935static inline __ATTRS_o_ai vector unsigned long long
7936vec_min(vector unsigned long long __a, vector unsigned long long __b) {
7937 return vec_sel(__a, __b, vec_cmpgt(__a, __b));
7938}
7939
Ulrich Weigand6af25592017-07-17 17:47:35 +00007940// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007941static inline __ATTRS_o_ai vector unsigned long long
7942vec_min(vector unsigned long long __a, vector bool long long __b) {
7943 vector unsigned long long __bc = (vector unsigned long long)__b;
7944 return vec_sel(__a, __bc, vec_cmpgt(__a, __bc));
7945}
7946
Ulrich Weigand6af25592017-07-17 17:47:35 +00007947// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00007948static inline __ATTRS_o_ai vector unsigned long long
7949vec_min(vector bool long long __a, vector unsigned long long __b) {
7950 vector unsigned long long __ac = (vector unsigned long long)__a;
7951 return vec_sel(__ac, __b, vec_cmpgt(__ac, __b));
7952}
7953
Ulrich Weigand6af25592017-07-17 17:47:35 +00007954#if __ARCH__ >= 12
7955static inline __ATTRS_o_ai vector float
7956vec_min(vector float __a, vector float __b) {
7957 return __builtin_s390_vfminsb(__a, __b, 0);
7958}
7959#endif
7960
Ulrich Weigandca256432015-07-30 14:10:43 +00007961static inline __ATTRS_o_ai vector double
7962vec_min(vector double __a, vector double __b) {
Ulrich Weigand6af25592017-07-17 17:47:35 +00007963#if __ARCH__ >= 12
7964 return __builtin_s390_vfmindb(__a, __b, 0);
7965#else
Ulrich Weigandca256432015-07-30 14:10:43 +00007966 return vec_sel(__a, __b, vec_cmpgt(__a, __b));
Ulrich Weigand6af25592017-07-17 17:47:35 +00007967#endif
Ulrich Weigandca256432015-07-30 14:10:43 +00007968}
7969
7970/*-- vec_add_u128 -----------------------------------------------------------*/
7971
7972static inline __ATTRS_ai vector unsigned char
7973vec_add_u128(vector unsigned char __a, vector unsigned char __b) {
7974 return __builtin_s390_vaq(__a, __b);
7975}
7976
7977/*-- vec_addc ---------------------------------------------------------------*/
7978
7979static inline __ATTRS_o_ai vector unsigned char
7980vec_addc(vector unsigned char __a, vector unsigned char __b) {
7981 return __builtin_s390_vaccb(__a, __b);
7982}
7983
7984static inline __ATTRS_o_ai vector unsigned short
7985vec_addc(vector unsigned short __a, vector unsigned short __b) {
7986 return __builtin_s390_vacch(__a, __b);
7987}
7988
7989static inline __ATTRS_o_ai vector unsigned int
7990vec_addc(vector unsigned int __a, vector unsigned int __b) {
7991 return __builtin_s390_vaccf(__a, __b);
7992}
7993
7994static inline __ATTRS_o_ai vector unsigned long long
7995vec_addc(vector unsigned long long __a, vector unsigned long long __b) {
7996 return __builtin_s390_vaccg(__a, __b);
7997}
7998
7999/*-- vec_addc_u128 ----------------------------------------------------------*/
8000
8001static inline __ATTRS_ai vector unsigned char
8002vec_addc_u128(vector unsigned char __a, vector unsigned char __b) {
8003 return __builtin_s390_vaccq(__a, __b);
8004}
8005
8006/*-- vec_adde_u128 ----------------------------------------------------------*/
8007
8008static inline __ATTRS_ai vector unsigned char
8009vec_adde_u128(vector unsigned char __a, vector unsigned char __b,
8010 vector unsigned char __c) {
8011 return __builtin_s390_vacq(__a, __b, __c);
8012}
8013
8014/*-- vec_addec_u128 ---------------------------------------------------------*/
8015
8016static inline __ATTRS_ai vector unsigned char
8017vec_addec_u128(vector unsigned char __a, vector unsigned char __b,
8018 vector unsigned char __c) {
8019 return __builtin_s390_vacccq(__a, __b, __c);
8020}
8021
8022/*-- vec_avg ----------------------------------------------------------------*/
8023
8024static inline __ATTRS_o_ai vector signed char
8025vec_avg(vector signed char __a, vector signed char __b) {
8026 return __builtin_s390_vavgb(__a, __b);
8027}
8028
8029static inline __ATTRS_o_ai vector signed short
8030vec_avg(vector signed short __a, vector signed short __b) {
8031 return __builtin_s390_vavgh(__a, __b);
8032}
8033
8034static inline __ATTRS_o_ai vector signed int
8035vec_avg(vector signed int __a, vector signed int __b) {
8036 return __builtin_s390_vavgf(__a, __b);
8037}
8038
8039static inline __ATTRS_o_ai vector signed long long
8040vec_avg(vector signed long long __a, vector signed long long __b) {
8041 return __builtin_s390_vavgg(__a, __b);
8042}
8043
8044static inline __ATTRS_o_ai vector unsigned char
8045vec_avg(vector unsigned char __a, vector unsigned char __b) {
8046 return __builtin_s390_vavglb(__a, __b);
8047}
8048
8049static inline __ATTRS_o_ai vector unsigned short
8050vec_avg(vector unsigned short __a, vector unsigned short __b) {
8051 return __builtin_s390_vavglh(__a, __b);
8052}
8053
8054static inline __ATTRS_o_ai vector unsigned int
8055vec_avg(vector unsigned int __a, vector unsigned int __b) {
8056 return __builtin_s390_vavglf(__a, __b);
8057}
8058
8059static inline __ATTRS_o_ai vector unsigned long long
8060vec_avg(vector unsigned long long __a, vector unsigned long long __b) {
8061 return __builtin_s390_vavglg(__a, __b);
8062}
8063
8064/*-- vec_checksum -----------------------------------------------------------*/
8065
8066static inline __ATTRS_ai vector unsigned int
8067vec_checksum(vector unsigned int __a, vector unsigned int __b) {
8068 return __builtin_s390_vcksm(__a, __b);
8069}
8070
8071/*-- vec_gfmsum -------------------------------------------------------------*/
8072
8073static inline __ATTRS_o_ai vector unsigned short
8074vec_gfmsum(vector unsigned char __a, vector unsigned char __b) {
8075 return __builtin_s390_vgfmb(__a, __b);
8076}
8077
8078static inline __ATTRS_o_ai vector unsigned int
8079vec_gfmsum(vector unsigned short __a, vector unsigned short __b) {
8080 return __builtin_s390_vgfmh(__a, __b);
8081}
8082
8083static inline __ATTRS_o_ai vector unsigned long long
8084vec_gfmsum(vector unsigned int __a, vector unsigned int __b) {
8085 return __builtin_s390_vgfmf(__a, __b);
8086}
8087
8088/*-- vec_gfmsum_128 ---------------------------------------------------------*/
8089
8090static inline __ATTRS_o_ai vector unsigned char
8091vec_gfmsum_128(vector unsigned long long __a, vector unsigned long long __b) {
8092 return __builtin_s390_vgfmg(__a, __b);
8093}
8094
8095/*-- vec_gfmsum_accum -------------------------------------------------------*/
8096
8097static inline __ATTRS_o_ai vector unsigned short
8098vec_gfmsum_accum(vector unsigned char __a, vector unsigned char __b,
8099 vector unsigned short __c) {
8100 return __builtin_s390_vgfmab(__a, __b, __c);
8101}
8102
8103static inline __ATTRS_o_ai vector unsigned int
8104vec_gfmsum_accum(vector unsigned short __a, vector unsigned short __b,
8105 vector unsigned int __c) {
8106 return __builtin_s390_vgfmah(__a, __b, __c);
8107}
8108
8109static inline __ATTRS_o_ai vector unsigned long long
8110vec_gfmsum_accum(vector unsigned int __a, vector unsigned int __b,
8111 vector unsigned long long __c) {
8112 return __builtin_s390_vgfmaf(__a, __b, __c);
8113}
8114
8115/*-- vec_gfmsum_accum_128 ---------------------------------------------------*/
8116
8117static inline __ATTRS_o_ai vector unsigned char
8118vec_gfmsum_accum_128(vector unsigned long long __a,
8119 vector unsigned long long __b,
8120 vector unsigned char __c) {
8121 return __builtin_s390_vgfmag(__a, __b, __c);
8122}
8123
8124/*-- vec_mladd --------------------------------------------------------------*/
8125
8126static inline __ATTRS_o_ai vector signed char
8127vec_mladd(vector signed char __a, vector signed char __b,
8128 vector signed char __c) {
8129 return __a * __b + __c;
8130}
8131
8132static inline __ATTRS_o_ai vector signed char
8133vec_mladd(vector unsigned char __a, vector signed char __b,
8134 vector signed char __c) {
8135 return (vector signed char)__a * __b + __c;
8136}
8137
8138static inline __ATTRS_o_ai vector signed char
8139vec_mladd(vector signed char __a, vector unsigned char __b,
8140 vector unsigned char __c) {
8141 return __a * (vector signed char)__b + (vector signed char)__c;
8142}
8143
8144static inline __ATTRS_o_ai vector unsigned char
8145vec_mladd(vector unsigned char __a, vector unsigned char __b,
8146 vector unsigned char __c) {
8147 return __a * __b + __c;
8148}
8149
8150static inline __ATTRS_o_ai vector signed short
8151vec_mladd(vector signed short __a, vector signed short __b,
8152 vector signed short __c) {
8153 return __a * __b + __c;
8154}
8155
8156static inline __ATTRS_o_ai vector signed short
8157vec_mladd(vector unsigned short __a, vector signed short __b,
8158 vector signed short __c) {
8159 return (vector signed short)__a * __b + __c;
8160}
8161
8162static inline __ATTRS_o_ai vector signed short
8163vec_mladd(vector signed short __a, vector unsigned short __b,
8164 vector unsigned short __c) {
8165 return __a * (vector signed short)__b + (vector signed short)__c;
8166}
8167
8168static inline __ATTRS_o_ai vector unsigned short
8169vec_mladd(vector unsigned short __a, vector unsigned short __b,
8170 vector unsigned short __c) {
8171 return __a * __b + __c;
8172}
8173
8174static inline __ATTRS_o_ai vector signed int
8175vec_mladd(vector signed int __a, vector signed int __b,
8176 vector signed int __c) {
8177 return __a * __b + __c;
8178}
8179
8180static inline __ATTRS_o_ai vector signed int
8181vec_mladd(vector unsigned int __a, vector signed int __b,
8182 vector signed int __c) {
8183 return (vector signed int)__a * __b + __c;
8184}
8185
8186static inline __ATTRS_o_ai vector signed int
8187vec_mladd(vector signed int __a, vector unsigned int __b,
8188 vector unsigned int __c) {
8189 return __a * (vector signed int)__b + (vector signed int)__c;
8190}
8191
8192static inline __ATTRS_o_ai vector unsigned int
8193vec_mladd(vector unsigned int __a, vector unsigned int __b,
8194 vector unsigned int __c) {
8195 return __a * __b + __c;
8196}
8197
8198/*-- vec_mhadd --------------------------------------------------------------*/
8199
8200static inline __ATTRS_o_ai vector signed char
8201vec_mhadd(vector signed char __a, vector signed char __b,
8202 vector signed char __c) {
8203 return __builtin_s390_vmahb(__a, __b, __c);
8204}
8205
8206static inline __ATTRS_o_ai vector unsigned char
8207vec_mhadd(vector unsigned char __a, vector unsigned char __b,
8208 vector unsigned char __c) {
8209 return __builtin_s390_vmalhb(__a, __b, __c);
8210}
8211
8212static inline __ATTRS_o_ai vector signed short
8213vec_mhadd(vector signed short __a, vector signed short __b,
8214 vector signed short __c) {
8215 return __builtin_s390_vmahh(__a, __b, __c);
8216}
8217
8218static inline __ATTRS_o_ai vector unsigned short
8219vec_mhadd(vector unsigned short __a, vector unsigned short __b,
8220 vector unsigned short __c) {
8221 return __builtin_s390_vmalhh(__a, __b, __c);
8222}
8223
8224static inline __ATTRS_o_ai vector signed int
8225vec_mhadd(vector signed int __a, vector signed int __b,
8226 vector signed int __c) {
8227 return __builtin_s390_vmahf(__a, __b, __c);
8228}
8229
8230static inline __ATTRS_o_ai vector unsigned int
8231vec_mhadd(vector unsigned int __a, vector unsigned int __b,
8232 vector unsigned int __c) {
8233 return __builtin_s390_vmalhf(__a, __b, __c);
8234}
8235
8236/*-- vec_meadd --------------------------------------------------------------*/
8237
8238static inline __ATTRS_o_ai vector signed short
8239vec_meadd(vector signed char __a, vector signed char __b,
8240 vector signed short __c) {
8241 return __builtin_s390_vmaeb(__a, __b, __c);
8242}
8243
8244static inline __ATTRS_o_ai vector unsigned short
8245vec_meadd(vector unsigned char __a, vector unsigned char __b,
8246 vector unsigned short __c) {
8247 return __builtin_s390_vmaleb(__a, __b, __c);
8248}
8249
8250static inline __ATTRS_o_ai vector signed int
8251vec_meadd(vector signed short __a, vector signed short __b,
8252 vector signed int __c) {
8253 return __builtin_s390_vmaeh(__a, __b, __c);
8254}
8255
8256static inline __ATTRS_o_ai vector unsigned int
8257vec_meadd(vector unsigned short __a, vector unsigned short __b,
8258 vector unsigned int __c) {
8259 return __builtin_s390_vmaleh(__a, __b, __c);
8260}
8261
8262static inline __ATTRS_o_ai vector signed long long
8263vec_meadd(vector signed int __a, vector signed int __b,
8264 vector signed long long __c) {
8265 return __builtin_s390_vmaef(__a, __b, __c);
8266}
8267
8268static inline __ATTRS_o_ai vector unsigned long long
8269vec_meadd(vector unsigned int __a, vector unsigned int __b,
8270 vector unsigned long long __c) {
8271 return __builtin_s390_vmalef(__a, __b, __c);
8272}
8273
8274/*-- vec_moadd --------------------------------------------------------------*/
8275
8276static inline __ATTRS_o_ai vector signed short
8277vec_moadd(vector signed char __a, vector signed char __b,
8278 vector signed short __c) {
8279 return __builtin_s390_vmaob(__a, __b, __c);
8280}
8281
8282static inline __ATTRS_o_ai vector unsigned short
8283vec_moadd(vector unsigned char __a, vector unsigned char __b,
8284 vector unsigned short __c) {
8285 return __builtin_s390_vmalob(__a, __b, __c);
8286}
8287
8288static inline __ATTRS_o_ai vector signed int
8289vec_moadd(vector signed short __a, vector signed short __b,
8290 vector signed int __c) {
8291 return __builtin_s390_vmaoh(__a, __b, __c);
8292}
8293
8294static inline __ATTRS_o_ai vector unsigned int
8295vec_moadd(vector unsigned short __a, vector unsigned short __b,
8296 vector unsigned int __c) {
8297 return __builtin_s390_vmaloh(__a, __b, __c);
8298}
8299
8300static inline __ATTRS_o_ai vector signed long long
8301vec_moadd(vector signed int __a, vector signed int __b,
8302 vector signed long long __c) {
8303 return __builtin_s390_vmaof(__a, __b, __c);
8304}
8305
8306static inline __ATTRS_o_ai vector unsigned long long
8307vec_moadd(vector unsigned int __a, vector unsigned int __b,
8308 vector unsigned long long __c) {
8309 return __builtin_s390_vmalof(__a, __b, __c);
8310}
8311
8312/*-- vec_mulh ---------------------------------------------------------------*/
8313
8314static inline __ATTRS_o_ai vector signed char
8315vec_mulh(vector signed char __a, vector signed char __b) {
8316 return __builtin_s390_vmhb(__a, __b);
8317}
8318
8319static inline __ATTRS_o_ai vector unsigned char
8320vec_mulh(vector unsigned char __a, vector unsigned char __b) {
8321 return __builtin_s390_vmlhb(__a, __b);
8322}
8323
8324static inline __ATTRS_o_ai vector signed short
8325vec_mulh(vector signed short __a, vector signed short __b) {
8326 return __builtin_s390_vmhh(__a, __b);
8327}
8328
8329static inline __ATTRS_o_ai vector unsigned short
8330vec_mulh(vector unsigned short __a, vector unsigned short __b) {
8331 return __builtin_s390_vmlhh(__a, __b);
8332}
8333
8334static inline __ATTRS_o_ai vector signed int
8335vec_mulh(vector signed int __a, vector signed int __b) {
8336 return __builtin_s390_vmhf(__a, __b);
8337}
8338
8339static inline __ATTRS_o_ai vector unsigned int
8340vec_mulh(vector unsigned int __a, vector unsigned int __b) {
8341 return __builtin_s390_vmlhf(__a, __b);
8342}
8343
8344/*-- vec_mule ---------------------------------------------------------------*/
8345
8346static inline __ATTRS_o_ai vector signed short
8347vec_mule(vector signed char __a, vector signed char __b) {
8348 return __builtin_s390_vmeb(__a, __b);
8349}
8350
8351static inline __ATTRS_o_ai vector unsigned short
8352vec_mule(vector unsigned char __a, vector unsigned char __b) {
8353 return __builtin_s390_vmleb(__a, __b);
8354}
8355
8356static inline __ATTRS_o_ai vector signed int
8357vec_mule(vector signed short __a, vector signed short __b) {
8358 return __builtin_s390_vmeh(__a, __b);
8359}
8360
8361static inline __ATTRS_o_ai vector unsigned int
8362vec_mule(vector unsigned short __a, vector unsigned short __b) {
8363 return __builtin_s390_vmleh(__a, __b);
8364}
8365
8366static inline __ATTRS_o_ai vector signed long long
8367vec_mule(vector signed int __a, vector signed int __b) {
8368 return __builtin_s390_vmef(__a, __b);
8369}
8370
8371static inline __ATTRS_o_ai vector unsigned long long
8372vec_mule(vector unsigned int __a, vector unsigned int __b) {
8373 return __builtin_s390_vmlef(__a, __b);
8374}
8375
8376/*-- vec_mulo ---------------------------------------------------------------*/
8377
8378static inline __ATTRS_o_ai vector signed short
8379vec_mulo(vector signed char __a, vector signed char __b) {
8380 return __builtin_s390_vmob(__a, __b);
8381}
8382
8383static inline __ATTRS_o_ai vector unsigned short
8384vec_mulo(vector unsigned char __a, vector unsigned char __b) {
8385 return __builtin_s390_vmlob(__a, __b);
8386}
8387
8388static inline __ATTRS_o_ai vector signed int
8389vec_mulo(vector signed short __a, vector signed short __b) {
8390 return __builtin_s390_vmoh(__a, __b);
8391}
8392
8393static inline __ATTRS_o_ai vector unsigned int
8394vec_mulo(vector unsigned short __a, vector unsigned short __b) {
8395 return __builtin_s390_vmloh(__a, __b);
8396}
8397
8398static inline __ATTRS_o_ai vector signed long long
8399vec_mulo(vector signed int __a, vector signed int __b) {
8400 return __builtin_s390_vmof(__a, __b);
8401}
8402
8403static inline __ATTRS_o_ai vector unsigned long long
8404vec_mulo(vector unsigned int __a, vector unsigned int __b) {
8405 return __builtin_s390_vmlof(__a, __b);
8406}
8407
Ulrich Weigand6af25592017-07-17 17:47:35 +00008408/*-- vec_msum_u128 ----------------------------------------------------------*/
8409
8410#if __ARCH__ >= 12
8411#define vec_msum_u128(X, Y, Z, W) \
8412 ((vector unsigned char)__builtin_s390_vmslg((X), (Y), (Z), (W)));
8413#endif
8414
Ulrich Weigandca256432015-07-30 14:10:43 +00008415/*-- vec_sub_u128 -----------------------------------------------------------*/
8416
8417static inline __ATTRS_ai vector unsigned char
8418vec_sub_u128(vector unsigned char __a, vector unsigned char __b) {
8419 return __builtin_s390_vsq(__a, __b);
8420}
8421
8422/*-- vec_subc ---------------------------------------------------------------*/
8423
8424static inline __ATTRS_o_ai vector unsigned char
8425vec_subc(vector unsigned char __a, vector unsigned char __b) {
8426 return __builtin_s390_vscbib(__a, __b);
8427}
8428
8429static inline __ATTRS_o_ai vector unsigned short
8430vec_subc(vector unsigned short __a, vector unsigned short __b) {
8431 return __builtin_s390_vscbih(__a, __b);
8432}
8433
8434static inline __ATTRS_o_ai vector unsigned int
8435vec_subc(vector unsigned int __a, vector unsigned int __b) {
8436 return __builtin_s390_vscbif(__a, __b);
8437}
8438
8439static inline __ATTRS_o_ai vector unsigned long long
8440vec_subc(vector unsigned long long __a, vector unsigned long long __b) {
8441 return __builtin_s390_vscbig(__a, __b);
8442}
8443
8444/*-- vec_subc_u128 ----------------------------------------------------------*/
8445
8446static inline __ATTRS_ai vector unsigned char
8447vec_subc_u128(vector unsigned char __a, vector unsigned char __b) {
8448 return __builtin_s390_vscbiq(__a, __b);
8449}
8450
8451/*-- vec_sube_u128 ----------------------------------------------------------*/
8452
8453static inline __ATTRS_ai vector unsigned char
8454vec_sube_u128(vector unsigned char __a, vector unsigned char __b,
8455 vector unsigned char __c) {
8456 return __builtin_s390_vsbiq(__a, __b, __c);
8457}
8458
8459/*-- vec_subec_u128 ---------------------------------------------------------*/
8460
8461static inline __ATTRS_ai vector unsigned char
8462vec_subec_u128(vector unsigned char __a, vector unsigned char __b,
8463 vector unsigned char __c) {
8464 return __builtin_s390_vsbcbiq(__a, __b, __c);
8465}
8466
8467/*-- vec_sum2 ---------------------------------------------------------------*/
8468
8469static inline __ATTRS_o_ai vector unsigned long long
8470vec_sum2(vector unsigned short __a, vector unsigned short __b) {
8471 return __builtin_s390_vsumgh(__a, __b);
8472}
8473
8474static inline __ATTRS_o_ai vector unsigned long long
8475vec_sum2(vector unsigned int __a, vector unsigned int __b) {
8476 return __builtin_s390_vsumgf(__a, __b);
8477}
8478
8479/*-- vec_sum_u128 -----------------------------------------------------------*/
8480
8481static inline __ATTRS_o_ai vector unsigned char
8482vec_sum_u128(vector unsigned int __a, vector unsigned int __b) {
8483 return __builtin_s390_vsumqf(__a, __b);
8484}
8485
8486static inline __ATTRS_o_ai vector unsigned char
8487vec_sum_u128(vector unsigned long long __a, vector unsigned long long __b) {
8488 return __builtin_s390_vsumqg(__a, __b);
8489}
8490
8491/*-- vec_sum4 ---------------------------------------------------------------*/
8492
8493static inline __ATTRS_o_ai vector unsigned int
8494vec_sum4(vector unsigned char __a, vector unsigned char __b) {
8495 return __builtin_s390_vsumb(__a, __b);
8496}
8497
8498static inline __ATTRS_o_ai vector unsigned int
8499vec_sum4(vector unsigned short __a, vector unsigned short __b) {
8500 return __builtin_s390_vsumh(__a, __b);
8501}
8502
8503/*-- vec_test_mask ----------------------------------------------------------*/
8504
8505static inline __ATTRS_o_ai int
8506vec_test_mask(vector signed char __a, vector unsigned char __b) {
8507 return __builtin_s390_vtm((vector unsigned char)__a,
8508 (vector unsigned char)__b);
8509}
8510
8511static inline __ATTRS_o_ai int
8512vec_test_mask(vector unsigned char __a, vector unsigned char __b) {
8513 return __builtin_s390_vtm(__a, __b);
8514}
8515
8516static inline __ATTRS_o_ai int
8517vec_test_mask(vector signed short __a, vector unsigned short __b) {
8518 return __builtin_s390_vtm((vector unsigned char)__a,
8519 (vector unsigned char)__b);
8520}
8521
8522static inline __ATTRS_o_ai int
8523vec_test_mask(vector unsigned short __a, vector unsigned short __b) {
8524 return __builtin_s390_vtm((vector unsigned char)__a,
8525 (vector unsigned char)__b);
8526}
8527
8528static inline __ATTRS_o_ai int
8529vec_test_mask(vector signed int __a, vector unsigned int __b) {
8530 return __builtin_s390_vtm((vector unsigned char)__a,
8531 (vector unsigned char)__b);
8532}
8533
8534static inline __ATTRS_o_ai int
8535vec_test_mask(vector unsigned int __a, vector unsigned int __b) {
8536 return __builtin_s390_vtm((vector unsigned char)__a,
8537 (vector unsigned char)__b);
8538}
8539
8540static inline __ATTRS_o_ai int
8541vec_test_mask(vector signed long long __a, vector unsigned long long __b) {
8542 return __builtin_s390_vtm((vector unsigned char)__a,
8543 (vector unsigned char)__b);
8544}
8545
8546static inline __ATTRS_o_ai int
8547vec_test_mask(vector unsigned long long __a, vector unsigned long long __b) {
8548 return __builtin_s390_vtm((vector unsigned char)__a,
8549 (vector unsigned char)__b);
8550}
8551
Ulrich Weigand6af25592017-07-17 17:47:35 +00008552#if __ARCH__ >= 12
8553static inline __ATTRS_o_ai int
8554vec_test_mask(vector float __a, vector unsigned int __b) {
8555 return __builtin_s390_vtm((vector unsigned char)__a,
8556 (vector unsigned char)__b);
8557}
8558#endif
8559
Ulrich Weigandca256432015-07-30 14:10:43 +00008560static inline __ATTRS_o_ai int
8561vec_test_mask(vector double __a, vector unsigned long long __b) {
8562 return __builtin_s390_vtm((vector unsigned char)__a,
8563 (vector unsigned char)__b);
8564}
8565
8566/*-- vec_madd ---------------------------------------------------------------*/
8567
Ulrich Weigand6af25592017-07-17 17:47:35 +00008568#if __ARCH__ >= 12
8569static inline __ATTRS_o_ai vector float
8570vec_madd(vector float __a, vector float __b, vector float __c) {
8571 return __builtin_s390_vfmasb(__a, __b, __c);
8572}
8573#endif
8574
8575static inline __ATTRS_o_ai vector double
Ulrich Weigandca256432015-07-30 14:10:43 +00008576vec_madd(vector double __a, vector double __b, vector double __c) {
8577 return __builtin_s390_vfmadb(__a, __b, __c);
8578}
8579
8580/*-- vec_msub ---------------------------------------------------------------*/
8581
Ulrich Weigand6af25592017-07-17 17:47:35 +00008582#if __ARCH__ >= 12
8583static inline __ATTRS_o_ai vector float
8584vec_msub(vector float __a, vector float __b, vector float __c) {
8585 return __builtin_s390_vfmssb(__a, __b, __c);
8586}
8587#endif
8588
8589static inline __ATTRS_o_ai vector double
Ulrich Weigandca256432015-07-30 14:10:43 +00008590vec_msub(vector double __a, vector double __b, vector double __c) {
8591 return __builtin_s390_vfmsdb(__a, __b, __c);
8592}
8593
Ulrich Weigand6af25592017-07-17 17:47:35 +00008594/*-- vec_nmadd ---------------------------------------------------------------*/
8595
8596#if __ARCH__ >= 12
8597static inline __ATTRS_o_ai vector float
8598vec_nmadd(vector float __a, vector float __b, vector float __c) {
8599 return __builtin_s390_vfnmasb(__a, __b, __c);
8600}
8601
8602static inline __ATTRS_o_ai vector double
8603vec_nmadd(vector double __a, vector double __b, vector double __c) {
8604 return __builtin_s390_vfnmadb(__a, __b, __c);
8605}
8606#endif
8607
8608/*-- vec_nmsub ---------------------------------------------------------------*/
8609
8610#if __ARCH__ >= 12
8611static inline __ATTRS_o_ai vector float
8612vec_nmsub(vector float __a, vector float __b, vector float __c) {
8613 return __builtin_s390_vfnmssb(__a, __b, __c);
8614}
8615
8616static inline __ATTRS_o_ai vector double
8617vec_nmsub(vector double __a, vector double __b, vector double __c) {
8618 return __builtin_s390_vfnmsdb(__a, __b, __c);
8619}
8620#endif
8621
Ulrich Weigandca256432015-07-30 14:10:43 +00008622/*-- vec_sqrt ---------------------------------------------------------------*/
8623
Ulrich Weigand6af25592017-07-17 17:47:35 +00008624#if __ARCH__ >= 12
8625static inline __ATTRS_o_ai vector float
8626vec_sqrt(vector float __a) {
8627 return __builtin_s390_vfsqsb(__a);
8628}
8629#endif
8630
8631static inline __ATTRS_o_ai vector double
Ulrich Weigandca256432015-07-30 14:10:43 +00008632vec_sqrt(vector double __a) {
8633 return __builtin_s390_vfsqdb(__a);
8634}
8635
8636/*-- vec_ld2f ---------------------------------------------------------------*/
8637
Ulrich Weigand6af25592017-07-17 17:47:35 +00008638// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00008639static inline __ATTRS_ai vector double
8640vec_ld2f(const float *__ptr) {
8641 typedef float __v2f32 __attribute__((__vector_size__(8)));
8642 return __builtin_convertvector(*(const __v2f32 *)__ptr, vector double);
8643}
8644
8645/*-- vec_st2f ---------------------------------------------------------------*/
8646
Ulrich Weigand6af25592017-07-17 17:47:35 +00008647// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00008648static inline __ATTRS_ai void
8649vec_st2f(vector double __a, float *__ptr) {
8650 typedef float __v2f32 __attribute__((__vector_size__(8)));
8651 *(__v2f32 *)__ptr = __builtin_convertvector(__a, __v2f32);
8652}
8653
8654/*-- vec_ctd ----------------------------------------------------------------*/
8655
Ulrich Weigand6af25592017-07-17 17:47:35 +00008656// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00008657static inline __ATTRS_o_ai vector double
8658vec_ctd(vector signed long long __a, int __b)
8659 __constant_range(__b, 0, 31) {
8660 vector double __conv = __builtin_convertvector(__a, vector double);
8661 __conv *= (vector double)(vector unsigned long long)((0x3ffULL - __b) << 52);
8662 return __conv;
8663}
8664
Ulrich Weigand6af25592017-07-17 17:47:35 +00008665// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00008666static inline __ATTRS_o_ai vector double
8667vec_ctd(vector unsigned long long __a, int __b)
8668 __constant_range(__b, 0, 31) {
8669 vector double __conv = __builtin_convertvector(__a, vector double);
8670 __conv *= (vector double)(vector unsigned long long)((0x3ffULL - __b) << 52);
8671 return __conv;
8672}
8673
8674/*-- vec_ctsl ---------------------------------------------------------------*/
8675
Ulrich Weigand6af25592017-07-17 17:47:35 +00008676// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00008677static inline __ATTRS_o_ai vector signed long long
8678vec_ctsl(vector double __a, int __b)
8679 __constant_range(__b, 0, 31) {
8680 __a *= (vector double)(vector unsigned long long)((0x3ffULL + __b) << 52);
8681 return __builtin_convertvector(__a, vector signed long long);
8682}
8683
8684/*-- vec_ctul ---------------------------------------------------------------*/
8685
Ulrich Weigand6af25592017-07-17 17:47:35 +00008686// This prototype is deprecated.
Ulrich Weigandca256432015-07-30 14:10:43 +00008687static inline __ATTRS_o_ai vector unsigned long long
8688vec_ctul(vector double __a, int __b)
8689 __constant_range(__b, 0, 31) {
8690 __a *= (vector double)(vector unsigned long long)((0x3ffULL + __b) << 52);
8691 return __builtin_convertvector(__a, vector unsigned long long);
8692}
8693
Ulrich Weigand6af25592017-07-17 17:47:35 +00008694/*-- vec_doublee ------------------------------------------------------------*/
8695
8696#if __ARCH__ >= 12
8697static inline __ATTRS_ai vector double
8698vec_doublee(vector float __a) {
8699 typedef float __v2f32 __attribute__((__vector_size__(8)));
8700 __v2f32 __pack = __builtin_shufflevector(__a, __a, 0, 2);
8701 return __builtin_convertvector(__pack, vector double);
8702}
8703#endif
8704
8705/*-- vec_floate -------------------------------------------------------------*/
8706
8707#if __ARCH__ >= 12
8708static inline __ATTRS_ai vector float
8709vec_floate(vector double __a) {
8710 typedef float __v2f32 __attribute__((__vector_size__(8)));
8711 __v2f32 __pack = __builtin_convertvector(__a, __v2f32);
8712 return __builtin_shufflevector(__pack, __pack, 0, -1, 1, -1);
8713}
8714#endif
8715
8716/*-- vec_double -------------------------------------------------------------*/
8717
8718static inline __ATTRS_o_ai vector double
8719vec_double(vector signed long long __a) {
8720 return __builtin_convertvector(__a, vector double);
8721}
8722
8723static inline __ATTRS_o_ai vector double
8724vec_double(vector unsigned long long __a) {
8725 return __builtin_convertvector(__a, vector double);
8726}
8727
8728/*-- vec_signed -------------------------------------------------------------*/
8729
8730static inline __ATTRS_o_ai vector signed long long
8731vec_signed(vector double __a) {
8732 return __builtin_convertvector(__a, vector signed long long);
8733}
8734
8735/*-- vec_unsigned -----------------------------------------------------------*/
8736
8737static inline __ATTRS_o_ai vector unsigned long long
8738vec_unsigned(vector double __a) {
8739 return __builtin_convertvector(__a, vector unsigned long long);
8740}
8741
Ulrich Weigandca256432015-07-30 14:10:43 +00008742/*-- vec_roundp -------------------------------------------------------------*/
8743
Ulrich Weigand6af25592017-07-17 17:47:35 +00008744#if __ARCH__ >= 12
8745static inline __ATTRS_o_ai vector float
8746vec_roundp(vector float __a) {
8747 return __builtin_s390_vfisb(__a, 4, 6);
8748}
8749#endif
8750
8751static inline __ATTRS_o_ai vector double
Ulrich Weigandca256432015-07-30 14:10:43 +00008752vec_roundp(vector double __a) {
8753 return __builtin_s390_vfidb(__a, 4, 6);
8754}
8755
8756/*-- vec_ceil ---------------------------------------------------------------*/
8757
Ulrich Weigand6af25592017-07-17 17:47:35 +00008758#if __ARCH__ >= 12
8759static inline __ATTRS_o_ai vector float
8760vec_ceil(vector float __a) {
8761 // On this platform, vec_ceil never triggers the IEEE-inexact exception.
8762 return __builtin_s390_vfisb(__a, 4, 6);
8763}
8764#endif
8765
8766static inline __ATTRS_o_ai vector double
Ulrich Weigandca256432015-07-30 14:10:43 +00008767vec_ceil(vector double __a) {
8768 // On this platform, vec_ceil never triggers the IEEE-inexact exception.
8769 return __builtin_s390_vfidb(__a, 4, 6);
8770}
8771
8772/*-- vec_roundm -------------------------------------------------------------*/
8773
Ulrich Weigand6af25592017-07-17 17:47:35 +00008774#if __ARCH__ >= 12
8775static inline __ATTRS_o_ai vector float
8776vec_roundm(vector float __a) {
8777 return __builtin_s390_vfisb(__a, 4, 7);
8778}
8779#endif
8780
8781static inline __ATTRS_o_ai vector double
Ulrich Weigandca256432015-07-30 14:10:43 +00008782vec_roundm(vector double __a) {
8783 return __builtin_s390_vfidb(__a, 4, 7);
8784}
8785
8786/*-- vec_floor --------------------------------------------------------------*/
8787
Ulrich Weigand6af25592017-07-17 17:47:35 +00008788#if __ARCH__ >= 12
8789static inline __ATTRS_o_ai vector float
8790vec_floor(vector float __a) {
8791 // On this platform, vec_floor never triggers the IEEE-inexact exception.
8792 return __builtin_s390_vfisb(__a, 4, 7);
8793}
8794#endif
8795
8796static inline __ATTRS_o_ai vector double
Ulrich Weigandca256432015-07-30 14:10:43 +00008797vec_floor(vector double __a) {
8798 // On this platform, vec_floor never triggers the IEEE-inexact exception.
8799 return __builtin_s390_vfidb(__a, 4, 7);
8800}
8801
8802/*-- vec_roundz -------------------------------------------------------------*/
8803
Ulrich Weigand6af25592017-07-17 17:47:35 +00008804#if __ARCH__ >= 12
8805static inline __ATTRS_o_ai vector float
8806vec_roundz(vector float __a) {
8807 return __builtin_s390_vfisb(__a, 4, 5);
8808}
8809#endif
8810
8811static inline __ATTRS_o_ai vector double
Ulrich Weigandca256432015-07-30 14:10:43 +00008812vec_roundz(vector double __a) {
8813 return __builtin_s390_vfidb(__a, 4, 5);
8814}
8815
8816/*-- vec_trunc --------------------------------------------------------------*/
8817
Ulrich Weigand6af25592017-07-17 17:47:35 +00008818#if __ARCH__ >= 12
8819static inline __ATTRS_o_ai vector float
8820vec_trunc(vector float __a) {
8821 // On this platform, vec_trunc never triggers the IEEE-inexact exception.
8822 return __builtin_s390_vfisb(__a, 4, 5);
8823}
8824#endif
8825
8826static inline __ATTRS_o_ai vector double
Ulrich Weigandca256432015-07-30 14:10:43 +00008827vec_trunc(vector double __a) {
8828 // On this platform, vec_trunc never triggers the IEEE-inexact exception.
8829 return __builtin_s390_vfidb(__a, 4, 5);
8830}
8831
8832/*-- vec_roundc -------------------------------------------------------------*/
8833
Ulrich Weigand6af25592017-07-17 17:47:35 +00008834#if __ARCH__ >= 12
8835static inline __ATTRS_o_ai vector float
8836vec_roundc(vector float __a) {
8837 return __builtin_s390_vfisb(__a, 4, 0);
8838}
8839#endif
8840
8841static inline __ATTRS_o_ai vector double
Ulrich Weigandca256432015-07-30 14:10:43 +00008842vec_roundc(vector double __a) {
8843 return __builtin_s390_vfidb(__a, 4, 0);
8844}
8845
Ulrich Weigand6af25592017-07-17 17:47:35 +00008846/*-- vec_rint ---------------------------------------------------------------*/
8847
8848#if __ARCH__ >= 12
8849static inline __ATTRS_o_ai vector float
8850vec_rint(vector float __a) {
8851 // vec_rint may trigger the IEEE-inexact exception.
8852 return __builtin_s390_vfisb(__a, 0, 0);
8853}
8854#endif
8855
8856static inline __ATTRS_o_ai vector double
8857vec_rint(vector double __a) {
8858 // vec_rint may trigger the IEEE-inexact exception.
8859 return __builtin_s390_vfidb(__a, 0, 0);
8860}
8861
Ulrich Weigandca256432015-07-30 14:10:43 +00008862/*-- vec_round --------------------------------------------------------------*/
8863
Ulrich Weigand6af25592017-07-17 17:47:35 +00008864#if __ARCH__ >= 12
8865static inline __ATTRS_o_ai vector float
8866vec_round(vector float __a) {
8867 return __builtin_s390_vfisb(__a, 4, 4);
8868}
8869#endif
8870
8871static inline __ATTRS_o_ai vector double
Ulrich Weigandca256432015-07-30 14:10:43 +00008872vec_round(vector double __a) {
8873 return __builtin_s390_vfidb(__a, 4, 4);
8874}
8875
8876/*-- vec_fp_test_data_class -------------------------------------------------*/
8877
Ulrich Weigand6af25592017-07-17 17:47:35 +00008878#if __ARCH__ >= 12
8879extern __ATTRS_o vector bool int
8880vec_fp_test_data_class(vector float __a, int __b, int *__c)
8881 __constant_range(__b, 0, 4095);
8882
8883extern __ATTRS_o vector bool long long
8884vec_fp_test_data_class(vector double __a, int __b, int *__c)
8885 __constant_range(__b, 0, 4095);
8886
8887#define vec_fp_test_data_class(X, Y, Z) \
8888 ((__typeof__((vec_fp_test_data_class)((X), (Y), (Z)))) \
8889 __extension__ ({ \
8890 vector unsigned char __res; \
8891 vector unsigned char __x = (vector unsigned char)(X); \
8892 int *__z = (Z); \
8893 switch (sizeof ((X)[0])) { \
8894 case 4: __res = (vector unsigned char) \
8895 __builtin_s390_vftcisb((vector float)__x, (Y), __z); \
8896 break; \
8897 default: __res = (vector unsigned char) \
8898 __builtin_s390_vftcidb((vector double)__x, (Y), __z); \
8899 break; \
8900 } __res; }))
8901#else
Ulrich Weigandca256432015-07-30 14:10:43 +00008902#define vec_fp_test_data_class(X, Y, Z) \
8903 ((vector bool long long)__builtin_s390_vftcidb((X), (Y), (Z)))
Ulrich Weigand6af25592017-07-17 17:47:35 +00008904#endif
8905
8906#define __VEC_CLASS_FP_ZERO_P (1 << 11)
8907#define __VEC_CLASS_FP_ZERO_N (1 << 10)
8908#define __VEC_CLASS_FP_ZERO (__VEC_CLASS_FP_ZERO_P | __VEC_CLASS_FP_ZERO_N)
8909#define __VEC_CLASS_FP_NORMAL_P (1 << 9)
8910#define __VEC_CLASS_FP_NORMAL_N (1 << 8)
8911#define __VEC_CLASS_FP_NORMAL (__VEC_CLASS_FP_NORMAL_P | \
8912 __VEC_CLASS_FP_NORMAL_N)
8913#define __VEC_CLASS_FP_SUBNORMAL_P (1 << 7)
8914#define __VEC_CLASS_FP_SUBNORMAL_N (1 << 6)
8915#define __VEC_CLASS_FP_SUBNORMAL (__VEC_CLASS_FP_SUBNORMAL_P | \
8916 __VEC_CLASS_FP_SUBNORMAL_N)
8917#define __VEC_CLASS_FP_INFINITY_P (1 << 5)
8918#define __VEC_CLASS_FP_INFINITY_N (1 << 4)
8919#define __VEC_CLASS_FP_INFINITY (__VEC_CLASS_FP_INFINITY_P | \
8920 __VEC_CLASS_FP_INFINITY_N)
8921#define __VEC_CLASS_FP_QNAN_P (1 << 3)
8922#define __VEC_CLASS_FP_QNAN_N (1 << 2)
8923#define __VEC_CLASS_FP_QNAN (__VEC_CLASS_FP_QNAN_P | __VEC_CLASS_FP_QNAN_N)
8924#define __VEC_CLASS_FP_SNAN_P (1 << 1)
8925#define __VEC_CLASS_FP_SNAN_N (1 << 0)
8926#define __VEC_CLASS_FP_SNAN (__VEC_CLASS_FP_SNAN_P | __VEC_CLASS_FP_SNAN_N)
8927#define __VEC_CLASS_FP_NAN (__VEC_CLASS_FP_QNAN | __VEC_CLASS_FP_SNAN)
8928#define __VEC_CLASS_FP_NOT_NORMAL (__VEC_CLASS_FP_NAN | \
8929 __VEC_CLASS_FP_SUBNORMAL | \
8930 __VEC_CLASS_FP_ZERO | \
8931 __VEC_CLASS_FP_INFINITY)
Ulrich Weigandca256432015-07-30 14:10:43 +00008932
8933/*-- vec_cp_until_zero ------------------------------------------------------*/
8934
8935static inline __ATTRS_o_ai vector signed char
8936vec_cp_until_zero(vector signed char __a) {
8937 return (vector signed char)__builtin_s390_vistrb((vector unsigned char)__a);
8938}
8939
8940static inline __ATTRS_o_ai vector bool char
8941vec_cp_until_zero(vector bool char __a) {
8942 return (vector bool char)__builtin_s390_vistrb((vector unsigned char)__a);
8943}
8944
8945static inline __ATTRS_o_ai vector unsigned char
8946vec_cp_until_zero(vector unsigned char __a) {
8947 return __builtin_s390_vistrb(__a);
8948}
8949
8950static inline __ATTRS_o_ai vector signed short
8951vec_cp_until_zero(vector signed short __a) {
8952 return (vector signed short)__builtin_s390_vistrh((vector unsigned short)__a);
8953}
8954
8955static inline __ATTRS_o_ai vector bool short
8956vec_cp_until_zero(vector bool short __a) {
8957 return (vector bool short)__builtin_s390_vistrh((vector unsigned short)__a);
8958}
8959
8960static inline __ATTRS_o_ai vector unsigned short
8961vec_cp_until_zero(vector unsigned short __a) {
8962 return __builtin_s390_vistrh(__a);
8963}
8964
8965static inline __ATTRS_o_ai vector signed int
8966vec_cp_until_zero(vector signed int __a) {
8967 return (vector signed int)__builtin_s390_vistrf((vector unsigned int)__a);
8968}
8969
8970static inline __ATTRS_o_ai vector bool int
8971vec_cp_until_zero(vector bool int __a) {
8972 return (vector bool int)__builtin_s390_vistrf((vector unsigned int)__a);
8973}
8974
8975static inline __ATTRS_o_ai vector unsigned int
8976vec_cp_until_zero(vector unsigned int __a) {
8977 return __builtin_s390_vistrf(__a);
8978}
8979
8980/*-- vec_cp_until_zero_cc ---------------------------------------------------*/
8981
8982static inline __ATTRS_o_ai vector signed char
8983vec_cp_until_zero_cc(vector signed char __a, int *__cc) {
8984 return (vector signed char)
8985 __builtin_s390_vistrbs((vector unsigned char)__a, __cc);
8986}
8987
8988static inline __ATTRS_o_ai vector bool char
8989vec_cp_until_zero_cc(vector bool char __a, int *__cc) {
8990 return (vector bool char)
8991 __builtin_s390_vistrbs((vector unsigned char)__a, __cc);
8992}
8993
8994static inline __ATTRS_o_ai vector unsigned char
8995vec_cp_until_zero_cc(vector unsigned char __a, int *__cc) {
8996 return __builtin_s390_vistrbs(__a, __cc);
8997}
8998
8999static inline __ATTRS_o_ai vector signed short
9000vec_cp_until_zero_cc(vector signed short __a, int *__cc) {
9001 return (vector signed short)
9002 __builtin_s390_vistrhs((vector unsigned short)__a, __cc);
9003}
9004
9005static inline __ATTRS_o_ai vector bool short
9006vec_cp_until_zero_cc(vector bool short __a, int *__cc) {
9007 return (vector bool short)
9008 __builtin_s390_vistrhs((vector unsigned short)__a, __cc);
9009}
9010
9011static inline __ATTRS_o_ai vector unsigned short
9012vec_cp_until_zero_cc(vector unsigned short __a, int *__cc) {
9013 return __builtin_s390_vistrhs(__a, __cc);
9014}
9015
9016static inline __ATTRS_o_ai vector signed int
9017vec_cp_until_zero_cc(vector signed int __a, int *__cc) {
9018 return (vector signed int)
9019 __builtin_s390_vistrfs((vector unsigned int)__a, __cc);
9020}
9021
9022static inline __ATTRS_o_ai vector bool int
9023vec_cp_until_zero_cc(vector bool int __a, int *__cc) {
9024 return (vector bool int)__builtin_s390_vistrfs((vector unsigned int)__a,
9025 __cc);
9026}
9027
9028static inline __ATTRS_o_ai vector unsigned int
9029vec_cp_until_zero_cc(vector unsigned int __a, int *__cc) {
9030 return __builtin_s390_vistrfs(__a, __cc);
9031}
9032
9033/*-- vec_cmpeq_idx ----------------------------------------------------------*/
9034
9035static inline __ATTRS_o_ai vector signed char
9036vec_cmpeq_idx(vector signed char __a, vector signed char __b) {
9037 return (vector signed char)
9038 __builtin_s390_vfeeb((vector unsigned char)__a,
9039 (vector unsigned char)__b);
9040}
9041
9042static inline __ATTRS_o_ai vector unsigned char
9043vec_cmpeq_idx(vector bool char __a, vector bool char __b) {
9044 return __builtin_s390_vfeeb((vector unsigned char)__a,
9045 (vector unsigned char)__b);
9046}
9047
9048static inline __ATTRS_o_ai vector unsigned char
9049vec_cmpeq_idx(vector unsigned char __a, vector unsigned char __b) {
9050 return __builtin_s390_vfeeb(__a, __b);
9051}
9052
9053static inline __ATTRS_o_ai vector signed short
9054vec_cmpeq_idx(vector signed short __a, vector signed short __b) {
9055 return (vector signed short)
9056 __builtin_s390_vfeeh((vector unsigned short)__a,
9057 (vector unsigned short)__b);
9058}
9059
9060static inline __ATTRS_o_ai vector unsigned short
9061vec_cmpeq_idx(vector bool short __a, vector bool short __b) {
9062 return __builtin_s390_vfeeh((vector unsigned short)__a,
9063 (vector unsigned short)__b);
9064}
9065
9066static inline __ATTRS_o_ai vector unsigned short
9067vec_cmpeq_idx(vector unsigned short __a, vector unsigned short __b) {
9068 return __builtin_s390_vfeeh(__a, __b);
9069}
9070
9071static inline __ATTRS_o_ai vector signed int
9072vec_cmpeq_idx(vector signed int __a, vector signed int __b) {
9073 return (vector signed int)
9074 __builtin_s390_vfeef((vector unsigned int)__a,
9075 (vector unsigned int)__b);
9076}
9077
9078static inline __ATTRS_o_ai vector unsigned int
9079vec_cmpeq_idx(vector bool int __a, vector bool int __b) {
9080 return __builtin_s390_vfeef((vector unsigned int)__a,
9081 (vector unsigned int)__b);
9082}
9083
9084static inline __ATTRS_o_ai vector unsigned int
9085vec_cmpeq_idx(vector unsigned int __a, vector unsigned int __b) {
9086 return __builtin_s390_vfeef(__a, __b);
9087}
9088
9089/*-- vec_cmpeq_idx_cc -------------------------------------------------------*/
9090
9091static inline __ATTRS_o_ai vector signed char
9092vec_cmpeq_idx_cc(vector signed char __a, vector signed char __b, int *__cc) {
9093 return (vector signed char)
9094 __builtin_s390_vfeebs((vector unsigned char)__a,
9095 (vector unsigned char)__b, __cc);
9096}
9097
9098static inline __ATTRS_o_ai vector unsigned char
9099vec_cmpeq_idx_cc(vector bool char __a, vector bool char __b, int *__cc) {
9100 return __builtin_s390_vfeebs((vector unsigned char)__a,
9101 (vector unsigned char)__b, __cc);
9102}
9103
9104static inline __ATTRS_o_ai vector unsigned char
9105vec_cmpeq_idx_cc(vector unsigned char __a, vector unsigned char __b,
9106 int *__cc) {
9107 return __builtin_s390_vfeebs(__a, __b, __cc);
9108}
9109
9110static inline __ATTRS_o_ai vector signed short
9111vec_cmpeq_idx_cc(vector signed short __a, vector signed short __b, int *__cc) {
9112 return (vector signed short)
9113 __builtin_s390_vfeehs((vector unsigned short)__a,
9114 (vector unsigned short)__b, __cc);
9115}
9116
9117static inline __ATTRS_o_ai vector unsigned short
9118vec_cmpeq_idx_cc(vector bool short __a, vector bool short __b, int *__cc) {
9119 return __builtin_s390_vfeehs((vector unsigned short)__a,
9120 (vector unsigned short)__b, __cc);
9121}
9122
9123static inline __ATTRS_o_ai vector unsigned short
9124vec_cmpeq_idx_cc(vector unsigned short __a, vector unsigned short __b,
9125 int *__cc) {
9126 return __builtin_s390_vfeehs(__a, __b, __cc);
9127}
9128
9129static inline __ATTRS_o_ai vector signed int
9130vec_cmpeq_idx_cc(vector signed int __a, vector signed int __b, int *__cc) {
9131 return (vector signed int)
9132 __builtin_s390_vfeefs((vector unsigned int)__a,
9133 (vector unsigned int)__b, __cc);
9134}
9135
9136static inline __ATTRS_o_ai vector unsigned int
9137vec_cmpeq_idx_cc(vector bool int __a, vector bool int __b, int *__cc) {
9138 return __builtin_s390_vfeefs((vector unsigned int)__a,
9139 (vector unsigned int)__b, __cc);
9140}
9141
9142static inline __ATTRS_o_ai vector unsigned int
9143vec_cmpeq_idx_cc(vector unsigned int __a, vector unsigned int __b, int *__cc) {
9144 return __builtin_s390_vfeefs(__a, __b, __cc);
9145}
9146
9147/*-- vec_cmpeq_or_0_idx -----------------------------------------------------*/
9148
9149static inline __ATTRS_o_ai vector signed char
9150vec_cmpeq_or_0_idx(vector signed char __a, vector signed char __b) {
9151 return (vector signed char)
9152 __builtin_s390_vfeezb((vector unsigned char)__a,
9153 (vector unsigned char)__b);
9154}
9155
9156static inline __ATTRS_o_ai vector unsigned char
9157vec_cmpeq_or_0_idx(vector bool char __a, vector bool char __b) {
9158 return __builtin_s390_vfeezb((vector unsigned char)__a,
9159 (vector unsigned char)__b);
9160}
9161
9162static inline __ATTRS_o_ai vector unsigned char
9163vec_cmpeq_or_0_idx(vector unsigned char __a, vector unsigned char __b) {
9164 return __builtin_s390_vfeezb(__a, __b);
9165}
9166
9167static inline __ATTRS_o_ai vector signed short
9168vec_cmpeq_or_0_idx(vector signed short __a, vector signed short __b) {
9169 return (vector signed short)
9170 __builtin_s390_vfeezh((vector unsigned short)__a,
9171 (vector unsigned short)__b);
9172}
9173
9174static inline __ATTRS_o_ai vector unsigned short
9175vec_cmpeq_or_0_idx(vector bool short __a, vector bool short __b) {
9176 return __builtin_s390_vfeezh((vector unsigned short)__a,
9177 (vector unsigned short)__b);
9178}
9179
9180static inline __ATTRS_o_ai vector unsigned short
9181vec_cmpeq_or_0_idx(vector unsigned short __a, vector unsigned short __b) {
9182 return __builtin_s390_vfeezh(__a, __b);
9183}
9184
9185static inline __ATTRS_o_ai vector signed int
9186vec_cmpeq_or_0_idx(vector signed int __a, vector signed int __b) {
9187 return (vector signed int)
9188 __builtin_s390_vfeezf((vector unsigned int)__a,
9189 (vector unsigned int)__b);
9190}
9191
9192static inline __ATTRS_o_ai vector unsigned int
9193vec_cmpeq_or_0_idx(vector bool int __a, vector bool int __b) {
9194 return __builtin_s390_vfeezf((vector unsigned int)__a,
9195 (vector unsigned int)__b);
9196}
9197
9198static inline __ATTRS_o_ai vector unsigned int
9199vec_cmpeq_or_0_idx(vector unsigned int __a, vector unsigned int __b) {
9200 return __builtin_s390_vfeezf(__a, __b);
9201}
9202
9203/*-- vec_cmpeq_or_0_idx_cc --------------------------------------------------*/
9204
9205static inline __ATTRS_o_ai vector signed char
9206vec_cmpeq_or_0_idx_cc(vector signed char __a, vector signed char __b,
9207 int *__cc) {
9208 return (vector signed char)
9209 __builtin_s390_vfeezbs((vector unsigned char)__a,
9210 (vector unsigned char)__b, __cc);
9211}
9212
9213static inline __ATTRS_o_ai vector unsigned char
9214vec_cmpeq_or_0_idx_cc(vector bool char __a, vector bool char __b, int *__cc) {
9215 return __builtin_s390_vfeezbs((vector unsigned char)__a,
9216 (vector unsigned char)__b, __cc);
9217}
9218
9219static inline __ATTRS_o_ai vector unsigned char
9220vec_cmpeq_or_0_idx_cc(vector unsigned char __a, vector unsigned char __b,
9221 int *__cc) {
9222 return __builtin_s390_vfeezbs(__a, __b, __cc);
9223}
9224
9225static inline __ATTRS_o_ai vector signed short
9226vec_cmpeq_or_0_idx_cc(vector signed short __a, vector signed short __b,
9227 int *__cc) {
9228 return (vector signed short)
9229 __builtin_s390_vfeezhs((vector unsigned short)__a,
9230 (vector unsigned short)__b, __cc);
9231}
9232
9233static inline __ATTRS_o_ai vector unsigned short
9234vec_cmpeq_or_0_idx_cc(vector bool short __a, vector bool short __b, int *__cc) {
9235 return __builtin_s390_vfeezhs((vector unsigned short)__a,
9236 (vector unsigned short)__b, __cc);
9237}
9238
9239static inline __ATTRS_o_ai vector unsigned short
9240vec_cmpeq_or_0_idx_cc(vector unsigned short __a, vector unsigned short __b,
9241 int *__cc) {
9242 return __builtin_s390_vfeezhs(__a, __b, __cc);
9243}
9244
9245static inline __ATTRS_o_ai vector signed int
9246vec_cmpeq_or_0_idx_cc(vector signed int __a, vector signed int __b, int *__cc) {
9247 return (vector signed int)
9248 __builtin_s390_vfeezfs((vector unsigned int)__a,
9249 (vector unsigned int)__b, __cc);
9250}
9251
9252static inline __ATTRS_o_ai vector unsigned int
9253vec_cmpeq_or_0_idx_cc(vector bool int __a, vector bool int __b, int *__cc) {
9254 return __builtin_s390_vfeezfs((vector unsigned int)__a,
9255 (vector unsigned int)__b, __cc);
9256}
9257
9258static inline __ATTRS_o_ai vector unsigned int
9259vec_cmpeq_or_0_idx_cc(vector unsigned int __a, vector unsigned int __b,
9260 int *__cc) {
9261 return __builtin_s390_vfeezfs(__a, __b, __cc);
9262}
9263
9264/*-- vec_cmpne_idx ----------------------------------------------------------*/
9265
9266static inline __ATTRS_o_ai vector signed char
9267vec_cmpne_idx(vector signed char __a, vector signed char __b) {
9268 return (vector signed char)
9269 __builtin_s390_vfeneb((vector unsigned char)__a,
9270 (vector unsigned char)__b);
9271}
9272
9273static inline __ATTRS_o_ai vector unsigned char
9274vec_cmpne_idx(vector bool char __a, vector bool char __b) {
9275 return __builtin_s390_vfeneb((vector unsigned char)__a,
9276 (vector unsigned char)__b);
9277}
9278
9279static inline __ATTRS_o_ai vector unsigned char
9280vec_cmpne_idx(vector unsigned char __a, vector unsigned char __b) {
9281 return __builtin_s390_vfeneb(__a, __b);
9282}
9283
9284static inline __ATTRS_o_ai vector signed short
9285vec_cmpne_idx(vector signed short __a, vector signed short __b) {
9286 return (vector signed short)
9287 __builtin_s390_vfeneh((vector unsigned short)__a,
9288 (vector unsigned short)__b);
9289}
9290
9291static inline __ATTRS_o_ai vector unsigned short
9292vec_cmpne_idx(vector bool short __a, vector bool short __b) {
9293 return __builtin_s390_vfeneh((vector unsigned short)__a,
9294 (vector unsigned short)__b);
9295}
9296
9297static inline __ATTRS_o_ai vector unsigned short
9298vec_cmpne_idx(vector unsigned short __a, vector unsigned short __b) {
9299 return __builtin_s390_vfeneh(__a, __b);
9300}
9301
9302static inline __ATTRS_o_ai vector signed int
9303vec_cmpne_idx(vector signed int __a, vector signed int __b) {
9304 return (vector signed int)
9305 __builtin_s390_vfenef((vector unsigned int)__a,
9306 (vector unsigned int)__b);
9307}
9308
9309static inline __ATTRS_o_ai vector unsigned int
9310vec_cmpne_idx(vector bool int __a, vector bool int __b) {
9311 return __builtin_s390_vfenef((vector unsigned int)__a,
9312 (vector unsigned int)__b);
9313}
9314
9315static inline __ATTRS_o_ai vector unsigned int
9316vec_cmpne_idx(vector unsigned int __a, vector unsigned int __b) {
9317 return __builtin_s390_vfenef(__a, __b);
9318}
9319
9320/*-- vec_cmpne_idx_cc -------------------------------------------------------*/
9321
9322static inline __ATTRS_o_ai vector signed char
9323vec_cmpne_idx_cc(vector signed char __a, vector signed char __b, int *__cc) {
9324 return (vector signed char)
9325 __builtin_s390_vfenebs((vector unsigned char)__a,
9326 (vector unsigned char)__b, __cc);
9327}
9328
9329static inline __ATTRS_o_ai vector unsigned char
9330vec_cmpne_idx_cc(vector bool char __a, vector bool char __b, int *__cc) {
9331 return __builtin_s390_vfenebs((vector unsigned char)__a,
9332 (vector unsigned char)__b, __cc);
9333}
9334
9335static inline __ATTRS_o_ai vector unsigned char
9336vec_cmpne_idx_cc(vector unsigned char __a, vector unsigned char __b,
9337 int *__cc) {
9338 return __builtin_s390_vfenebs(__a, __b, __cc);
9339}
9340
9341static inline __ATTRS_o_ai vector signed short
9342vec_cmpne_idx_cc(vector signed short __a, vector signed short __b, int *__cc) {
9343 return (vector signed short)
9344 __builtin_s390_vfenehs((vector unsigned short)__a,
9345 (vector unsigned short)__b, __cc);
9346}
9347
9348static inline __ATTRS_o_ai vector unsigned short
9349vec_cmpne_idx_cc(vector bool short __a, vector bool short __b, int *__cc) {
9350 return __builtin_s390_vfenehs((vector unsigned short)__a,
9351 (vector unsigned short)__b, __cc);
9352}
9353
9354static inline __ATTRS_o_ai vector unsigned short
9355vec_cmpne_idx_cc(vector unsigned short __a, vector unsigned short __b,
9356 int *__cc) {
9357 return __builtin_s390_vfenehs(__a, __b, __cc);
9358}
9359
9360static inline __ATTRS_o_ai vector signed int
9361vec_cmpne_idx_cc(vector signed int __a, vector signed int __b, int *__cc) {
9362 return (vector signed int)
9363 __builtin_s390_vfenefs((vector unsigned int)__a,
9364 (vector unsigned int)__b, __cc);
9365}
9366
9367static inline __ATTRS_o_ai vector unsigned int
9368vec_cmpne_idx_cc(vector bool int __a, vector bool int __b, int *__cc) {
9369 return __builtin_s390_vfenefs((vector unsigned int)__a,
9370 (vector unsigned int)__b, __cc);
9371}
9372
9373static inline __ATTRS_o_ai vector unsigned int
9374vec_cmpne_idx_cc(vector unsigned int __a, vector unsigned int __b, int *__cc) {
9375 return __builtin_s390_vfenefs(__a, __b, __cc);
9376}
9377
9378/*-- vec_cmpne_or_0_idx -----------------------------------------------------*/
9379
9380static inline __ATTRS_o_ai vector signed char
9381vec_cmpne_or_0_idx(vector signed char __a, vector signed char __b) {
9382 return (vector signed char)
9383 __builtin_s390_vfenezb((vector unsigned char)__a,
9384 (vector unsigned char)__b);
9385}
9386
9387static inline __ATTRS_o_ai vector unsigned char
9388vec_cmpne_or_0_idx(vector bool char __a, vector bool char __b) {
9389 return __builtin_s390_vfenezb((vector unsigned char)__a,
9390 (vector unsigned char)__b);
9391}
9392
9393static inline __ATTRS_o_ai vector unsigned char
9394vec_cmpne_or_0_idx(vector unsigned char __a, vector unsigned char __b) {
9395 return __builtin_s390_vfenezb(__a, __b);
9396}
9397
9398static inline __ATTRS_o_ai vector signed short
9399vec_cmpne_or_0_idx(vector signed short __a, vector signed short __b) {
9400 return (vector signed short)
9401 __builtin_s390_vfenezh((vector unsigned short)__a,
9402 (vector unsigned short)__b);
9403}
9404
9405static inline __ATTRS_o_ai vector unsigned short
9406vec_cmpne_or_0_idx(vector bool short __a, vector bool short __b) {
9407 return __builtin_s390_vfenezh((vector unsigned short)__a,
9408 (vector unsigned short)__b);
9409}
9410
9411static inline __ATTRS_o_ai vector unsigned short
9412vec_cmpne_or_0_idx(vector unsigned short __a, vector unsigned short __b) {
9413 return __builtin_s390_vfenezh(__a, __b);
9414}
9415
9416static inline __ATTRS_o_ai vector signed int
9417vec_cmpne_or_0_idx(vector signed int __a, vector signed int __b) {
9418 return (vector signed int)
9419 __builtin_s390_vfenezf((vector unsigned int)__a,
9420 (vector unsigned int)__b);
9421}
9422
9423static inline __ATTRS_o_ai vector unsigned int
9424vec_cmpne_or_0_idx(vector bool int __a, vector bool int __b) {
9425 return __builtin_s390_vfenezf((vector unsigned int)__a,
9426 (vector unsigned int)__b);
9427}
9428
9429static inline __ATTRS_o_ai vector unsigned int
9430vec_cmpne_or_0_idx(vector unsigned int __a, vector unsigned int __b) {
9431 return __builtin_s390_vfenezf(__a, __b);
9432}
9433
9434/*-- vec_cmpne_or_0_idx_cc --------------------------------------------------*/
9435
9436static inline __ATTRS_o_ai vector signed char
9437vec_cmpne_or_0_idx_cc(vector signed char __a, vector signed char __b,
9438 int *__cc) {
9439 return (vector signed char)
9440 __builtin_s390_vfenezbs((vector unsigned char)__a,
9441 (vector unsigned char)__b, __cc);
9442}
9443
9444static inline __ATTRS_o_ai vector unsigned char
9445vec_cmpne_or_0_idx_cc(vector bool char __a, vector bool char __b, int *__cc) {
9446 return __builtin_s390_vfenezbs((vector unsigned char)__a,
9447 (vector unsigned char)__b, __cc);
9448}
9449
9450static inline __ATTRS_o_ai vector unsigned char
9451vec_cmpne_or_0_idx_cc(vector unsigned char __a, vector unsigned char __b,
9452 int *__cc) {
9453 return __builtin_s390_vfenezbs(__a, __b, __cc);
9454}
9455
9456static inline __ATTRS_o_ai vector signed short
9457vec_cmpne_or_0_idx_cc(vector signed short __a, vector signed short __b,
9458 int *__cc) {
9459 return (vector signed short)
9460 __builtin_s390_vfenezhs((vector unsigned short)__a,
9461 (vector unsigned short)__b, __cc);
9462}
9463
9464static inline __ATTRS_o_ai vector unsigned short
9465vec_cmpne_or_0_idx_cc(vector bool short __a, vector bool short __b, int *__cc) {
9466 return __builtin_s390_vfenezhs((vector unsigned short)__a,
9467 (vector unsigned short)__b, __cc);
9468}
9469
9470static inline __ATTRS_o_ai vector unsigned short
9471vec_cmpne_or_0_idx_cc(vector unsigned short __a, vector unsigned short __b,
9472 int *__cc) {
9473 return __builtin_s390_vfenezhs(__a, __b, __cc);
9474}
9475
9476static inline __ATTRS_o_ai vector signed int
9477vec_cmpne_or_0_idx_cc(vector signed int __a, vector signed int __b, int *__cc) {
9478 return (vector signed int)
9479 __builtin_s390_vfenezfs((vector unsigned int)__a,
9480 (vector unsigned int)__b, __cc);
9481}
9482
9483static inline __ATTRS_o_ai vector unsigned int
9484vec_cmpne_or_0_idx_cc(vector bool int __a, vector bool int __b, int *__cc) {
9485 return __builtin_s390_vfenezfs((vector unsigned int)__a,
9486 (vector unsigned int)__b, __cc);
9487}
9488
9489static inline __ATTRS_o_ai vector unsigned int
9490vec_cmpne_or_0_idx_cc(vector unsigned int __a, vector unsigned int __b,
9491 int *__cc) {
9492 return __builtin_s390_vfenezfs(__a, __b, __cc);
9493}
9494
9495/*-- vec_cmprg --------------------------------------------------------------*/
9496
9497static inline __ATTRS_o_ai vector bool char
9498vec_cmprg(vector unsigned char __a, vector unsigned char __b,
9499 vector unsigned char __c) {
9500 return (vector bool char)__builtin_s390_vstrcb(__a, __b, __c, 4);
9501}
9502
9503static inline __ATTRS_o_ai vector bool short
9504vec_cmprg(vector unsigned short __a, vector unsigned short __b,
9505 vector unsigned short __c) {
9506 return (vector bool short)__builtin_s390_vstrch(__a, __b, __c, 4);
9507}
9508
9509static inline __ATTRS_o_ai vector bool int
9510vec_cmprg(vector unsigned int __a, vector unsigned int __b,
9511 vector unsigned int __c) {
9512 return (vector bool int)__builtin_s390_vstrcf(__a, __b, __c, 4);
9513}
9514
9515/*-- vec_cmprg_cc -----------------------------------------------------------*/
9516
9517static inline __ATTRS_o_ai vector bool char
9518vec_cmprg_cc(vector unsigned char __a, vector unsigned char __b,
9519 vector unsigned char __c, int *__cc) {
9520 return (vector bool char)__builtin_s390_vstrcbs(__a, __b, __c, 4, __cc);
9521}
9522
9523static inline __ATTRS_o_ai vector bool short
9524vec_cmprg_cc(vector unsigned short __a, vector unsigned short __b,
9525 vector unsigned short __c, int *__cc) {
9526 return (vector bool short)__builtin_s390_vstrchs(__a, __b, __c, 4, __cc);
9527}
9528
9529static inline __ATTRS_o_ai vector bool int
9530vec_cmprg_cc(vector unsigned int __a, vector unsigned int __b,
9531 vector unsigned int __c, int *__cc) {
9532 return (vector bool int)__builtin_s390_vstrcfs(__a, __b, __c, 4, __cc);
9533}
9534
9535/*-- vec_cmprg_idx ----------------------------------------------------------*/
9536
9537static inline __ATTRS_o_ai vector unsigned char
9538vec_cmprg_idx(vector unsigned char __a, vector unsigned char __b,
9539 vector unsigned char __c) {
9540 return __builtin_s390_vstrcb(__a, __b, __c, 0);
9541}
9542
9543static inline __ATTRS_o_ai vector unsigned short
9544vec_cmprg_idx(vector unsigned short __a, vector unsigned short __b,
9545 vector unsigned short __c) {
9546 return __builtin_s390_vstrch(__a, __b, __c, 0);
9547}
9548
9549static inline __ATTRS_o_ai vector unsigned int
9550vec_cmprg_idx(vector unsigned int __a, vector unsigned int __b,
9551 vector unsigned int __c) {
9552 return __builtin_s390_vstrcf(__a, __b, __c, 0);
9553}
9554
9555/*-- vec_cmprg_idx_cc -------------------------------------------------------*/
9556
9557static inline __ATTRS_o_ai vector unsigned char
9558vec_cmprg_idx_cc(vector unsigned char __a, vector unsigned char __b,
9559 vector unsigned char __c, int *__cc) {
9560 return __builtin_s390_vstrcbs(__a, __b, __c, 0, __cc);
9561}
9562
9563static inline __ATTRS_o_ai vector unsigned short
9564vec_cmprg_idx_cc(vector unsigned short __a, vector unsigned short __b,
9565 vector unsigned short __c, int *__cc) {
9566 return __builtin_s390_vstrchs(__a, __b, __c, 0, __cc);
9567}
9568
9569static inline __ATTRS_o_ai vector unsigned int
9570vec_cmprg_idx_cc(vector unsigned int __a, vector unsigned int __b,
9571 vector unsigned int __c, int *__cc) {
9572 return __builtin_s390_vstrcfs(__a, __b, __c, 0, __cc);
9573}
9574
9575/*-- vec_cmprg_or_0_idx -----------------------------------------------------*/
9576
9577static inline __ATTRS_o_ai vector unsigned char
9578vec_cmprg_or_0_idx(vector unsigned char __a, vector unsigned char __b,
9579 vector unsigned char __c) {
9580 return __builtin_s390_vstrczb(__a, __b, __c, 0);
9581}
9582
9583static inline __ATTRS_o_ai vector unsigned short
9584vec_cmprg_or_0_idx(vector unsigned short __a, vector unsigned short __b,
9585 vector unsigned short __c) {
9586 return __builtin_s390_vstrczh(__a, __b, __c, 0);
9587}
9588
9589static inline __ATTRS_o_ai vector unsigned int
9590vec_cmprg_or_0_idx(vector unsigned int __a, vector unsigned int __b,
9591 vector unsigned int __c) {
9592 return __builtin_s390_vstrczf(__a, __b, __c, 0);
9593}
9594
9595/*-- vec_cmprg_or_0_idx_cc --------------------------------------------------*/
9596
9597static inline __ATTRS_o_ai vector unsigned char
9598vec_cmprg_or_0_idx_cc(vector unsigned char __a, vector unsigned char __b,
9599 vector unsigned char __c, int *__cc) {
9600 return __builtin_s390_vstrczbs(__a, __b, __c, 0, __cc);
9601}
9602
9603static inline __ATTRS_o_ai vector unsigned short
9604vec_cmprg_or_0_idx_cc(vector unsigned short __a, vector unsigned short __b,
9605 vector unsigned short __c, int *__cc) {
9606 return __builtin_s390_vstrczhs(__a, __b, __c, 0, __cc);
9607}
9608
9609static inline __ATTRS_o_ai vector unsigned int
9610vec_cmprg_or_0_idx_cc(vector unsigned int __a, vector unsigned int __b,
9611 vector unsigned int __c, int *__cc) {
9612 return __builtin_s390_vstrczfs(__a, __b, __c, 0, __cc);
9613}
9614
9615/*-- vec_cmpnrg -------------------------------------------------------------*/
9616
9617static inline __ATTRS_o_ai vector bool char
9618vec_cmpnrg(vector unsigned char __a, vector unsigned char __b,
9619 vector unsigned char __c) {
9620 return (vector bool char)__builtin_s390_vstrcb(__a, __b, __c, 12);
9621}
9622
9623static inline __ATTRS_o_ai vector bool short
9624vec_cmpnrg(vector unsigned short __a, vector unsigned short __b,
9625 vector unsigned short __c) {
9626 return (vector bool short)__builtin_s390_vstrch(__a, __b, __c, 12);
9627}
9628
9629static inline __ATTRS_o_ai vector bool int
9630vec_cmpnrg(vector unsigned int __a, vector unsigned int __b,
9631 vector unsigned int __c) {
9632 return (vector bool int)__builtin_s390_vstrcf(__a, __b, __c, 12);
9633}
9634
9635/*-- vec_cmpnrg_cc ----------------------------------------------------------*/
9636
9637static inline __ATTRS_o_ai vector bool char
9638vec_cmpnrg_cc(vector unsigned char __a, vector unsigned char __b,
9639 vector unsigned char __c, int *__cc) {
9640 return (vector bool char)__builtin_s390_vstrcbs(__a, __b, __c, 12, __cc);
9641}
9642
9643static inline __ATTRS_o_ai vector bool short
9644vec_cmpnrg_cc(vector unsigned short __a, vector unsigned short __b,
9645 vector unsigned short __c, int *__cc) {
9646 return (vector bool short)__builtin_s390_vstrchs(__a, __b, __c, 12, __cc);
9647}
9648
9649static inline __ATTRS_o_ai vector bool int
9650vec_cmpnrg_cc(vector unsigned int __a, vector unsigned int __b,
9651 vector unsigned int __c, int *__cc) {
9652 return (vector bool int)__builtin_s390_vstrcfs(__a, __b, __c, 12, __cc);
9653}
9654
9655/*-- vec_cmpnrg_idx ---------------------------------------------------------*/
9656
9657static inline __ATTRS_o_ai vector unsigned char
9658vec_cmpnrg_idx(vector unsigned char __a, vector unsigned char __b,
9659 vector unsigned char __c) {
9660 return __builtin_s390_vstrcb(__a, __b, __c, 8);
9661}
9662
9663static inline __ATTRS_o_ai vector unsigned short
9664vec_cmpnrg_idx(vector unsigned short __a, vector unsigned short __b,
9665 vector unsigned short __c) {
9666 return __builtin_s390_vstrch(__a, __b, __c, 8);
9667}
9668
9669static inline __ATTRS_o_ai vector unsigned int
9670vec_cmpnrg_idx(vector unsigned int __a, vector unsigned int __b,
9671 vector unsigned int __c) {
9672 return __builtin_s390_vstrcf(__a, __b, __c, 8);
9673}
9674
9675/*-- vec_cmpnrg_idx_cc ------------------------------------------------------*/
9676
9677static inline __ATTRS_o_ai vector unsigned char
9678vec_cmpnrg_idx_cc(vector unsigned char __a, vector unsigned char __b,
9679 vector unsigned char __c, int *__cc) {
9680 return __builtin_s390_vstrcbs(__a, __b, __c, 8, __cc);
9681}
9682
9683static inline __ATTRS_o_ai vector unsigned short
9684vec_cmpnrg_idx_cc(vector unsigned short __a, vector unsigned short __b,
9685 vector unsigned short __c, int *__cc) {
9686 return __builtin_s390_vstrchs(__a, __b, __c, 8, __cc);
9687}
9688
9689static inline __ATTRS_o_ai vector unsigned int
9690vec_cmpnrg_idx_cc(vector unsigned int __a, vector unsigned int __b,
9691 vector unsigned int __c, int *__cc) {
9692 return __builtin_s390_vstrcfs(__a, __b, __c, 8, __cc);
9693}
9694
9695/*-- vec_cmpnrg_or_0_idx ----------------------------------------------------*/
9696
9697static inline __ATTRS_o_ai vector unsigned char
9698vec_cmpnrg_or_0_idx(vector unsigned char __a, vector unsigned char __b,
9699 vector unsigned char __c) {
9700 return __builtin_s390_vstrczb(__a, __b, __c, 8);
9701}
9702
9703static inline __ATTRS_o_ai vector unsigned short
9704vec_cmpnrg_or_0_idx(vector unsigned short __a, vector unsigned short __b,
9705 vector unsigned short __c) {
9706 return __builtin_s390_vstrczh(__a, __b, __c, 8);
9707}
9708
9709static inline __ATTRS_o_ai vector unsigned int
9710vec_cmpnrg_or_0_idx(vector unsigned int __a, vector unsigned int __b,
9711 vector unsigned int __c) {
9712 return __builtin_s390_vstrczf(__a, __b, __c, 8);
9713}
9714
9715/*-- vec_cmpnrg_or_0_idx_cc -------------------------------------------------*/
9716
9717static inline __ATTRS_o_ai vector unsigned char
9718vec_cmpnrg_or_0_idx_cc(vector unsigned char __a, vector unsigned char __b,
9719 vector unsigned char __c, int *__cc) {
9720 return __builtin_s390_vstrczbs(__a, __b, __c, 8, __cc);
9721}
9722
9723static inline __ATTRS_o_ai vector unsigned short
9724vec_cmpnrg_or_0_idx_cc(vector unsigned short __a, vector unsigned short __b,
9725 vector unsigned short __c, int *__cc) {
9726 return __builtin_s390_vstrczhs(__a, __b, __c, 8, __cc);
9727}
9728
9729static inline __ATTRS_o_ai vector unsigned int
9730vec_cmpnrg_or_0_idx_cc(vector unsigned int __a, vector unsigned int __b,
9731 vector unsigned int __c, int *__cc) {
9732 return __builtin_s390_vstrczfs(__a, __b, __c, 8, __cc);
9733}
9734
9735/*-- vec_find_any_eq --------------------------------------------------------*/
9736
9737static inline __ATTRS_o_ai vector bool char
9738vec_find_any_eq(vector signed char __a, vector signed char __b) {
9739 return (vector bool char)
9740 __builtin_s390_vfaeb((vector unsigned char)__a,
9741 (vector unsigned char)__b, 4);
9742}
9743
9744static inline __ATTRS_o_ai vector bool char
9745vec_find_any_eq(vector bool char __a, vector bool char __b) {
9746 return (vector bool char)
9747 __builtin_s390_vfaeb((vector unsigned char)__a,
9748 (vector unsigned char)__b, 4);
9749}
9750
9751static inline __ATTRS_o_ai vector bool char
9752vec_find_any_eq(vector unsigned char __a, vector unsigned char __b) {
9753 return (vector bool char)__builtin_s390_vfaeb(__a, __b, 4);
9754}
9755
9756static inline __ATTRS_o_ai vector bool short
9757vec_find_any_eq(vector signed short __a, vector signed short __b) {
9758 return (vector bool short)
9759 __builtin_s390_vfaeh((vector unsigned short)__a,
9760 (vector unsigned short)__b, 4);
9761}
9762
9763static inline __ATTRS_o_ai vector bool short
9764vec_find_any_eq(vector bool short __a, vector bool short __b) {
9765 return (vector bool short)
9766 __builtin_s390_vfaeh((vector unsigned short)__a,
9767 (vector unsigned short)__b, 4);
9768}
9769
9770static inline __ATTRS_o_ai vector bool short
9771vec_find_any_eq(vector unsigned short __a, vector unsigned short __b) {
9772 return (vector bool short)__builtin_s390_vfaeh(__a, __b, 4);
9773}
9774
9775static inline __ATTRS_o_ai vector bool int
9776vec_find_any_eq(vector signed int __a, vector signed int __b) {
9777 return (vector bool int)
9778 __builtin_s390_vfaef((vector unsigned int)__a,
9779 (vector unsigned int)__b, 4);
9780}
9781
9782static inline __ATTRS_o_ai vector bool int
9783vec_find_any_eq(vector bool int __a, vector bool int __b) {
9784 return (vector bool int)
9785 __builtin_s390_vfaef((vector unsigned int)__a,
9786 (vector unsigned int)__b, 4);
9787}
9788
9789static inline __ATTRS_o_ai vector bool int
9790vec_find_any_eq(vector unsigned int __a, vector unsigned int __b) {
9791 return (vector bool int)__builtin_s390_vfaef(__a, __b, 4);
9792}
9793
9794/*-- vec_find_any_eq_cc -----------------------------------------------------*/
9795
9796static inline __ATTRS_o_ai vector bool char
9797vec_find_any_eq_cc(vector signed char __a, vector signed char __b, int *__cc) {
9798 return (vector bool char)
9799 __builtin_s390_vfaebs((vector unsigned char)__a,
9800 (vector unsigned char)__b, 4, __cc);
9801}
9802
9803static inline __ATTRS_o_ai vector bool char
9804vec_find_any_eq_cc(vector bool char __a, vector bool char __b, int *__cc) {
9805 return (vector bool char)
9806 __builtin_s390_vfaebs((vector unsigned char)__a,
9807 (vector unsigned char)__b, 4, __cc);
9808}
9809
9810static inline __ATTRS_o_ai vector bool char
9811vec_find_any_eq_cc(vector unsigned char __a, vector unsigned char __b,
9812 int *__cc) {
9813 return (vector bool char)__builtin_s390_vfaebs(__a, __b, 4, __cc);
9814}
9815
9816static inline __ATTRS_o_ai vector bool short
9817vec_find_any_eq_cc(vector signed short __a, vector signed short __b,
9818 int *__cc) {
9819 return (vector bool short)
9820 __builtin_s390_vfaehs((vector unsigned short)__a,
9821 (vector unsigned short)__b, 4, __cc);
9822}
9823
9824static inline __ATTRS_o_ai vector bool short
9825vec_find_any_eq_cc(vector bool short __a, vector bool short __b, int *__cc) {
9826 return (vector bool short)
9827 __builtin_s390_vfaehs((vector unsigned short)__a,
9828 (vector unsigned short)__b, 4, __cc);
9829}
9830
9831static inline __ATTRS_o_ai vector bool short
9832vec_find_any_eq_cc(vector unsigned short __a, vector unsigned short __b,
9833 int *__cc) {
9834 return (vector bool short)__builtin_s390_vfaehs(__a, __b, 4, __cc);
9835}
9836
9837static inline __ATTRS_o_ai vector bool int
9838vec_find_any_eq_cc(vector signed int __a, vector signed int __b, int *__cc) {
9839 return (vector bool int)
9840 __builtin_s390_vfaefs((vector unsigned int)__a,
9841 (vector unsigned int)__b, 4, __cc);
9842}
9843
9844static inline __ATTRS_o_ai vector bool int
9845vec_find_any_eq_cc(vector bool int __a, vector bool int __b, int *__cc) {
9846 return (vector bool int)
9847 __builtin_s390_vfaefs((vector unsigned int)__a,
9848 (vector unsigned int)__b, 4, __cc);
9849}
9850
9851static inline __ATTRS_o_ai vector bool int
9852vec_find_any_eq_cc(vector unsigned int __a, vector unsigned int __b,
9853 int *__cc) {
9854 return (vector bool int)__builtin_s390_vfaefs(__a, __b, 4, __cc);
9855}
9856
9857/*-- vec_find_any_eq_idx ----------------------------------------------------*/
9858
9859static inline __ATTRS_o_ai vector signed char
9860vec_find_any_eq_idx(vector signed char __a, vector signed char __b) {
9861 return (vector signed char)
9862 __builtin_s390_vfaeb((vector unsigned char)__a,
9863 (vector unsigned char)__b, 0);
9864}
9865
9866static inline __ATTRS_o_ai vector unsigned char
9867vec_find_any_eq_idx(vector bool char __a, vector bool char __b) {
9868 return __builtin_s390_vfaeb((vector unsigned char)__a,
9869 (vector unsigned char)__b, 0);
9870}
9871
9872static inline __ATTRS_o_ai vector unsigned char
9873vec_find_any_eq_idx(vector unsigned char __a, vector unsigned char __b) {
9874 return __builtin_s390_vfaeb(__a, __b, 0);
9875}
9876
9877static inline __ATTRS_o_ai vector signed short
9878vec_find_any_eq_idx(vector signed short __a, vector signed short __b) {
9879 return (vector signed short)
9880 __builtin_s390_vfaeh((vector unsigned short)__a,
9881 (vector unsigned short)__b, 0);
9882}
9883
9884static inline __ATTRS_o_ai vector unsigned short
9885vec_find_any_eq_idx(vector bool short __a, vector bool short __b) {
9886 return __builtin_s390_vfaeh((vector unsigned short)__a,
9887 (vector unsigned short)__b, 0);
9888}
9889
9890static inline __ATTRS_o_ai vector unsigned short
9891vec_find_any_eq_idx(vector unsigned short __a, vector unsigned short __b) {
9892 return __builtin_s390_vfaeh(__a, __b, 0);
9893}
9894
9895static inline __ATTRS_o_ai vector signed int
9896vec_find_any_eq_idx(vector signed int __a, vector signed int __b) {
9897 return (vector signed int)
9898 __builtin_s390_vfaef((vector unsigned int)__a,
9899 (vector unsigned int)__b, 0);
9900}
9901
9902static inline __ATTRS_o_ai vector unsigned int
9903vec_find_any_eq_idx(vector bool int __a, vector bool int __b) {
9904 return __builtin_s390_vfaef((vector unsigned int)__a,
9905 (vector unsigned int)__b, 0);
9906}
9907
9908static inline __ATTRS_o_ai vector unsigned int
9909vec_find_any_eq_idx(vector unsigned int __a, vector unsigned int __b) {
9910 return __builtin_s390_vfaef(__a, __b, 0);
9911}
9912
9913/*-- vec_find_any_eq_idx_cc -------------------------------------------------*/
9914
9915static inline __ATTRS_o_ai vector signed char
9916vec_find_any_eq_idx_cc(vector signed char __a, vector signed char __b,
9917 int *__cc) {
9918 return (vector signed char)
9919 __builtin_s390_vfaebs((vector unsigned char)__a,
9920 (vector unsigned char)__b, 0, __cc);
9921}
9922
9923static inline __ATTRS_o_ai vector unsigned char
9924vec_find_any_eq_idx_cc(vector bool char __a, vector bool char __b, int *__cc) {
9925 return __builtin_s390_vfaebs((vector unsigned char)__a,
9926 (vector unsigned char)__b, 0, __cc);
9927}
9928
9929static inline __ATTRS_o_ai vector unsigned char
9930vec_find_any_eq_idx_cc(vector unsigned char __a, vector unsigned char __b,
9931 int *__cc) {
9932 return __builtin_s390_vfaebs(__a, __b, 0, __cc);
9933}
9934
9935static inline __ATTRS_o_ai vector signed short
9936vec_find_any_eq_idx_cc(vector signed short __a, vector signed short __b,
9937 int *__cc) {
9938 return (vector signed short)
9939 __builtin_s390_vfaehs((vector unsigned short)__a,
9940 (vector unsigned short)__b, 0, __cc);
9941}
9942
9943static inline __ATTRS_o_ai vector unsigned short
9944vec_find_any_eq_idx_cc(vector bool short __a, vector bool short __b,
9945 int *__cc) {
9946 return __builtin_s390_vfaehs((vector unsigned short)__a,
9947 (vector unsigned short)__b, 0, __cc);
9948}
9949
9950static inline __ATTRS_o_ai vector unsigned short
9951vec_find_any_eq_idx_cc(vector unsigned short __a, vector unsigned short __b,
9952 int *__cc) {
9953 return __builtin_s390_vfaehs(__a, __b, 0, __cc);
9954}
9955
9956static inline __ATTRS_o_ai vector signed int
9957vec_find_any_eq_idx_cc(vector signed int __a, vector signed int __b,
9958 int *__cc) {
9959 return (vector signed int)
9960 __builtin_s390_vfaefs((vector unsigned int)__a,
9961 (vector unsigned int)__b, 0, __cc);
9962}
9963
9964static inline __ATTRS_o_ai vector unsigned int
9965vec_find_any_eq_idx_cc(vector bool int __a, vector bool int __b, int *__cc) {
9966 return __builtin_s390_vfaefs((vector unsigned int)__a,
9967 (vector unsigned int)__b, 0, __cc);
9968}
9969
9970static inline __ATTRS_o_ai vector unsigned int
9971vec_find_any_eq_idx_cc(vector unsigned int __a, vector unsigned int __b,
9972 int *__cc) {
9973 return __builtin_s390_vfaefs(__a, __b, 0, __cc);
9974}
9975
9976/*-- vec_find_any_eq_or_0_idx -----------------------------------------------*/
9977
9978static inline __ATTRS_o_ai vector signed char
9979vec_find_any_eq_or_0_idx(vector signed char __a, vector signed char __b) {
9980 return (vector signed char)
9981 __builtin_s390_vfaezb((vector unsigned char)__a,
9982 (vector unsigned char)__b, 0);
9983}
9984
9985static inline __ATTRS_o_ai vector unsigned char
9986vec_find_any_eq_or_0_idx(vector bool char __a, vector bool char __b) {
9987 return __builtin_s390_vfaezb((vector unsigned char)__a,
9988 (vector unsigned char)__b, 0);
9989}
9990
9991static inline __ATTRS_o_ai vector unsigned char
9992vec_find_any_eq_or_0_idx(vector unsigned char __a, vector unsigned char __b) {
9993 return __builtin_s390_vfaezb(__a, __b, 0);
9994}
9995
9996static inline __ATTRS_o_ai vector signed short
9997vec_find_any_eq_or_0_idx(vector signed short __a, vector signed short __b) {
9998 return (vector signed short)
9999 __builtin_s390_vfaezh((vector unsigned short)__a,
10000 (vector unsigned short)__b, 0);
10001}
10002
10003static inline __ATTRS_o_ai vector unsigned short
10004vec_find_any_eq_or_0_idx(vector bool short __a, vector bool short __b) {
10005 return __builtin_s390_vfaezh((vector unsigned short)__a,
10006 (vector unsigned short)__b, 0);
10007}
10008
10009static inline __ATTRS_o_ai vector unsigned short
10010vec_find_any_eq_or_0_idx(vector unsigned short __a, vector unsigned short __b) {
10011 return __builtin_s390_vfaezh(__a, __b, 0);
10012}
10013
10014static inline __ATTRS_o_ai vector signed int
10015vec_find_any_eq_or_0_idx(vector signed int __a, vector signed int __b) {
10016 return (vector signed int)
10017 __builtin_s390_vfaezf((vector unsigned int)__a,
10018 (vector unsigned int)__b, 0);
10019}
10020
10021static inline __ATTRS_o_ai vector unsigned int
10022vec_find_any_eq_or_0_idx(vector bool int __a, vector bool int __b) {
10023 return __builtin_s390_vfaezf((vector unsigned int)__a,
10024 (vector unsigned int)__b, 0);
10025}
10026
10027static inline __ATTRS_o_ai vector unsigned int
10028vec_find_any_eq_or_0_idx(vector unsigned int __a, vector unsigned int __b) {
10029 return __builtin_s390_vfaezf(__a, __b, 0);
10030}
10031
10032/*-- vec_find_any_eq_or_0_idx_cc --------------------------------------------*/
10033
10034static inline __ATTRS_o_ai vector signed char
10035vec_find_any_eq_or_0_idx_cc(vector signed char __a, vector signed char __b,
10036 int *__cc) {
10037 return (vector signed char)
10038 __builtin_s390_vfaezbs((vector unsigned char)__a,
10039 (vector unsigned char)__b, 0, __cc);
10040}
10041
10042static inline __ATTRS_o_ai vector unsigned char
10043vec_find_any_eq_or_0_idx_cc(vector bool char __a, vector bool char __b,
10044 int *__cc) {
10045 return __builtin_s390_vfaezbs((vector unsigned char)__a,
10046 (vector unsigned char)__b, 0, __cc);
10047}
10048
10049static inline __ATTRS_o_ai vector unsigned char
10050vec_find_any_eq_or_0_idx_cc(vector unsigned char __a, vector unsigned char __b,
10051 int *__cc) {
10052 return __builtin_s390_vfaezbs(__a, __b, 0, __cc);
10053}
10054
10055static inline __ATTRS_o_ai vector signed short
10056vec_find_any_eq_or_0_idx_cc(vector signed short __a, vector signed short __b,
10057 int *__cc) {
10058 return (vector signed short)
10059 __builtin_s390_vfaezhs((vector unsigned short)__a,
10060 (vector unsigned short)__b, 0, __cc);
10061}
10062
10063static inline __ATTRS_o_ai vector unsigned short
10064vec_find_any_eq_or_0_idx_cc(vector bool short __a, vector bool short __b,
10065 int *__cc) {
10066 return __builtin_s390_vfaezhs((vector unsigned short)__a,
10067 (vector unsigned short)__b, 0, __cc);
10068}
10069
10070static inline __ATTRS_o_ai vector unsigned short
10071vec_find_any_eq_or_0_idx_cc(vector unsigned short __a,
10072 vector unsigned short __b, int *__cc) {
10073 return __builtin_s390_vfaezhs(__a, __b, 0, __cc);
10074}
10075
10076static inline __ATTRS_o_ai vector signed int
10077vec_find_any_eq_or_0_idx_cc(vector signed int __a, vector signed int __b,
10078 int *__cc) {
10079 return (vector signed int)
10080 __builtin_s390_vfaezfs((vector unsigned int)__a,
10081 (vector unsigned int)__b, 0, __cc);
10082}
10083
10084static inline __ATTRS_o_ai vector unsigned int
10085vec_find_any_eq_or_0_idx_cc(vector bool int __a, vector bool int __b,
10086 int *__cc) {
10087 return __builtin_s390_vfaezfs((vector unsigned int)__a,
10088 (vector unsigned int)__b, 0, __cc);
10089}
10090
10091static inline __ATTRS_o_ai vector unsigned int
10092vec_find_any_eq_or_0_idx_cc(vector unsigned int __a, vector unsigned int __b,
10093 int *__cc) {
10094 return __builtin_s390_vfaezfs(__a, __b, 0, __cc);
10095}
10096
10097/*-- vec_find_any_ne --------------------------------------------------------*/
10098
10099static inline __ATTRS_o_ai vector bool char
10100vec_find_any_ne(vector signed char __a, vector signed char __b) {
10101 return (vector bool char)
10102 __builtin_s390_vfaeb((vector unsigned char)__a,
10103 (vector unsigned char)__b, 12);
10104}
10105
10106static inline __ATTRS_o_ai vector bool char
10107vec_find_any_ne(vector bool char __a, vector bool char __b) {
10108 return (vector bool char)
10109 __builtin_s390_vfaeb((vector unsigned char)__a,
10110 (vector unsigned char)__b, 12);
10111}
10112
10113static inline __ATTRS_o_ai vector bool char
10114vec_find_any_ne(vector unsigned char __a, vector unsigned char __b) {
10115 return (vector bool char)__builtin_s390_vfaeb(__a, __b, 12);
10116}
10117
10118static inline __ATTRS_o_ai vector bool short
10119vec_find_any_ne(vector signed short __a, vector signed short __b) {
10120 return (vector bool short)
10121 __builtin_s390_vfaeh((vector unsigned short)__a,
10122 (vector unsigned short)__b, 12);
10123}
10124
10125static inline __ATTRS_o_ai vector bool short
10126vec_find_any_ne(vector bool short __a, vector bool short __b) {
10127 return (vector bool short)
10128 __builtin_s390_vfaeh((vector unsigned short)__a,
10129 (vector unsigned short)__b, 12);
10130}
10131
10132static inline __ATTRS_o_ai vector bool short
10133vec_find_any_ne(vector unsigned short __a, vector unsigned short __b) {
10134 return (vector bool short)__builtin_s390_vfaeh(__a, __b, 12);
10135}
10136
10137static inline __ATTRS_o_ai vector bool int
10138vec_find_any_ne(vector signed int __a, vector signed int __b) {
10139 return (vector bool int)
10140 __builtin_s390_vfaef((vector unsigned int)__a,
10141 (vector unsigned int)__b, 12);
10142}
10143
10144static inline __ATTRS_o_ai vector bool int
10145vec_find_any_ne(vector bool int __a, vector bool int __b) {
10146 return (vector bool int)
10147 __builtin_s390_vfaef((vector unsigned int)__a,
10148 (vector unsigned int)__b, 12);
10149}
10150
10151static inline __ATTRS_o_ai vector bool int
10152vec_find_any_ne(vector unsigned int __a, vector unsigned int __b) {
10153 return (vector bool int)__builtin_s390_vfaef(__a, __b, 12);
10154}
10155
10156/*-- vec_find_any_ne_cc -----------------------------------------------------*/
10157
10158static inline __ATTRS_o_ai vector bool char
10159vec_find_any_ne_cc(vector signed char __a, vector signed char __b, int *__cc) {
10160 return (vector bool char)
10161 __builtin_s390_vfaebs((vector unsigned char)__a,
10162 (vector unsigned char)__b, 12, __cc);
10163}
10164
10165static inline __ATTRS_o_ai vector bool char
10166vec_find_any_ne_cc(vector bool char __a, vector bool char __b, int *__cc) {
10167 return (vector bool char)
10168 __builtin_s390_vfaebs((vector unsigned char)__a,
10169 (vector unsigned char)__b, 12, __cc);
10170}
10171
10172static inline __ATTRS_o_ai vector bool char
10173vec_find_any_ne_cc(vector unsigned char __a, vector unsigned char __b,
10174 int *__cc) {
10175 return (vector bool char)__builtin_s390_vfaebs(__a, __b, 12, __cc);
10176}
10177
10178static inline __ATTRS_o_ai vector bool short
10179vec_find_any_ne_cc(vector signed short __a, vector signed short __b,
10180 int *__cc) {
10181 return (vector bool short)
10182 __builtin_s390_vfaehs((vector unsigned short)__a,
10183 (vector unsigned short)__b, 12, __cc);
10184}
10185
10186static inline __ATTRS_o_ai vector bool short
10187vec_find_any_ne_cc(vector bool short __a, vector bool short __b, int *__cc) {
10188 return (vector bool short)
10189 __builtin_s390_vfaehs((vector unsigned short)__a,
10190 (vector unsigned short)__b, 12, __cc);
10191}
10192
10193static inline __ATTRS_o_ai vector bool short
10194vec_find_any_ne_cc(vector unsigned short __a, vector unsigned short __b,
10195 int *__cc) {
10196 return (vector bool short)__builtin_s390_vfaehs(__a, __b, 12, __cc);
10197}
10198
10199static inline __ATTRS_o_ai vector bool int
10200vec_find_any_ne_cc(vector signed int __a, vector signed int __b, int *__cc) {
10201 return (vector bool int)
10202 __builtin_s390_vfaefs((vector unsigned int)__a,
10203 (vector unsigned int)__b, 12, __cc);
10204}
10205
10206static inline __ATTRS_o_ai vector bool int
10207vec_find_any_ne_cc(vector bool int __a, vector bool int __b, int *__cc) {
10208 return (vector bool int)
10209 __builtin_s390_vfaefs((vector unsigned int)__a,
10210 (vector unsigned int)__b, 12, __cc);
10211}
10212
10213static inline __ATTRS_o_ai vector bool int
10214vec_find_any_ne_cc(vector unsigned int __a, vector unsigned int __b,
10215 int *__cc) {
10216 return (vector bool int)__builtin_s390_vfaefs(__a, __b, 12, __cc);
10217}
10218
10219/*-- vec_find_any_ne_idx ----------------------------------------------------*/
10220
10221static inline __ATTRS_o_ai vector signed char
10222vec_find_any_ne_idx(vector signed char __a, vector signed char __b) {
10223 return (vector signed char)
10224 __builtin_s390_vfaeb((vector unsigned char)__a,
10225 (vector unsigned char)__b, 8);
10226}
10227
10228static inline __ATTRS_o_ai vector unsigned char
10229vec_find_any_ne_idx(vector bool char __a, vector bool char __b) {
10230 return __builtin_s390_vfaeb((vector unsigned char)__a,
10231 (vector unsigned char)__b, 8);
10232}
10233
10234static inline __ATTRS_o_ai vector unsigned char
10235vec_find_any_ne_idx(vector unsigned char __a, vector unsigned char __b) {
10236 return __builtin_s390_vfaeb(__a, __b, 8);
10237}
10238
10239static inline __ATTRS_o_ai vector signed short
10240vec_find_any_ne_idx(vector signed short __a, vector signed short __b) {
10241 return (vector signed short)
10242 __builtin_s390_vfaeh((vector unsigned short)__a,
10243 (vector unsigned short)__b, 8);
10244}
10245
10246static inline __ATTRS_o_ai vector unsigned short
10247vec_find_any_ne_idx(vector bool short __a, vector bool short __b) {
10248 return __builtin_s390_vfaeh((vector unsigned short)__a,
10249 (vector unsigned short)__b, 8);
10250}
10251
10252static inline __ATTRS_o_ai vector unsigned short
10253vec_find_any_ne_idx(vector unsigned short __a, vector unsigned short __b) {
10254 return __builtin_s390_vfaeh(__a, __b, 8);
10255}
10256
10257static inline __ATTRS_o_ai vector signed int
10258vec_find_any_ne_idx(vector signed int __a, vector signed int __b) {
10259 return (vector signed int)
10260 __builtin_s390_vfaef((vector unsigned int)__a,
10261 (vector unsigned int)__b, 8);
10262}
10263
10264static inline __ATTRS_o_ai vector unsigned int
10265vec_find_any_ne_idx(vector bool int __a, vector bool int __b) {
10266 return __builtin_s390_vfaef((vector unsigned int)__a,
10267 (vector unsigned int)__b, 8);
10268}
10269
10270static inline __ATTRS_o_ai vector unsigned int
10271vec_find_any_ne_idx(vector unsigned int __a, vector unsigned int __b) {
10272 return __builtin_s390_vfaef(__a, __b, 8);
10273}
10274
10275/*-- vec_find_any_ne_idx_cc -------------------------------------------------*/
10276
10277static inline __ATTRS_o_ai vector signed char
10278vec_find_any_ne_idx_cc(vector signed char __a, vector signed char __b,
10279 int *__cc) {
10280 return (vector signed char)
10281 __builtin_s390_vfaebs((vector unsigned char)__a,
10282 (vector unsigned char)__b, 8, __cc);
10283}
10284
10285static inline __ATTRS_o_ai vector unsigned char
10286vec_find_any_ne_idx_cc(vector bool char __a, vector bool char __b, int *__cc) {
10287 return __builtin_s390_vfaebs((vector unsigned char)__a,
10288 (vector unsigned char)__b, 8, __cc);
10289}
10290
10291static inline __ATTRS_o_ai vector unsigned char
10292vec_find_any_ne_idx_cc(vector unsigned char __a, vector unsigned char __b,
10293 int *__cc) {
10294 return __builtin_s390_vfaebs(__a, __b, 8, __cc);
10295}
10296
10297static inline __ATTRS_o_ai vector signed short
10298vec_find_any_ne_idx_cc(vector signed short __a, vector signed short __b,
10299 int *__cc) {
10300 return (vector signed short)
10301 __builtin_s390_vfaehs((vector unsigned short)__a,
10302 (vector unsigned short)__b, 8, __cc);
10303}
10304
10305static inline __ATTRS_o_ai vector unsigned short
10306vec_find_any_ne_idx_cc(vector bool short __a, vector bool short __b,
10307 int *__cc) {
10308 return __builtin_s390_vfaehs((vector unsigned short)__a,
10309 (vector unsigned short)__b, 8, __cc);
10310}
10311
10312static inline __ATTRS_o_ai vector unsigned short
10313vec_find_any_ne_idx_cc(vector unsigned short __a, vector unsigned short __b,
10314 int *__cc) {
10315 return __builtin_s390_vfaehs(__a, __b, 8, __cc);
10316}
10317
10318static inline __ATTRS_o_ai vector signed int
10319vec_find_any_ne_idx_cc(vector signed int __a, vector signed int __b,
10320 int *__cc) {
10321 return (vector signed int)
10322 __builtin_s390_vfaefs((vector unsigned int)__a,
10323 (vector unsigned int)__b, 8, __cc);
10324}
10325
10326static inline __ATTRS_o_ai vector unsigned int
10327vec_find_any_ne_idx_cc(vector bool int __a, vector bool int __b, int *__cc) {
10328 return __builtin_s390_vfaefs((vector unsigned int)__a,
10329 (vector unsigned int)__b, 8, __cc);
10330}
10331
10332static inline __ATTRS_o_ai vector unsigned int
10333vec_find_any_ne_idx_cc(vector unsigned int __a, vector unsigned int __b,
10334 int *__cc) {
10335 return __builtin_s390_vfaefs(__a, __b, 8, __cc);
10336}
10337
10338/*-- vec_find_any_ne_or_0_idx -----------------------------------------------*/
10339
10340static inline __ATTRS_o_ai vector signed char
10341vec_find_any_ne_or_0_idx(vector signed char __a, vector signed char __b) {
10342 return (vector signed char)
10343 __builtin_s390_vfaezb((vector unsigned char)__a,
10344 (vector unsigned char)__b, 8);
10345}
10346
10347static inline __ATTRS_o_ai vector unsigned char
10348vec_find_any_ne_or_0_idx(vector bool char __a, vector bool char __b) {
10349 return __builtin_s390_vfaezb((vector unsigned char)__a,
10350 (vector unsigned char)__b, 8);
10351}
10352
10353static inline __ATTRS_o_ai vector unsigned char
10354vec_find_any_ne_or_0_idx(vector unsigned char __a, vector unsigned char __b) {
10355 return __builtin_s390_vfaezb(__a, __b, 8);
10356}
10357
10358static inline __ATTRS_o_ai vector signed short
10359vec_find_any_ne_or_0_idx(vector signed short __a, vector signed short __b) {
10360 return (vector signed short)
10361 __builtin_s390_vfaezh((vector unsigned short)__a,
10362 (vector unsigned short)__b, 8);
10363}
10364
10365static inline __ATTRS_o_ai vector unsigned short
10366vec_find_any_ne_or_0_idx(vector bool short __a, vector bool short __b) {
10367 return __builtin_s390_vfaezh((vector unsigned short)__a,
10368 (vector unsigned short)__b, 8);
10369}
10370
10371static inline __ATTRS_o_ai vector unsigned short
10372vec_find_any_ne_or_0_idx(vector unsigned short __a, vector unsigned short __b) {
10373 return __builtin_s390_vfaezh(__a, __b, 8);
10374}
10375
10376static inline __ATTRS_o_ai vector signed int
10377vec_find_any_ne_or_0_idx(vector signed int __a, vector signed int __b) {
10378 return (vector signed int)
10379 __builtin_s390_vfaezf((vector unsigned int)__a,
10380 (vector unsigned int)__b, 8);
10381}
10382
10383static inline __ATTRS_o_ai vector unsigned int
10384vec_find_any_ne_or_0_idx(vector bool int __a, vector bool int __b) {
10385 return __builtin_s390_vfaezf((vector unsigned int)__a,
10386 (vector unsigned int)__b, 8);
10387}
10388
10389static inline __ATTRS_o_ai vector unsigned int
10390vec_find_any_ne_or_0_idx(vector unsigned int __a, vector unsigned int __b) {
10391 return __builtin_s390_vfaezf(__a, __b, 8);
10392}
10393
10394/*-- vec_find_any_ne_or_0_idx_cc --------------------------------------------*/
10395
10396static inline __ATTRS_o_ai vector signed char
10397vec_find_any_ne_or_0_idx_cc(vector signed char __a, vector signed char __b,
10398 int *__cc) {
10399 return (vector signed char)
10400 __builtin_s390_vfaezbs((vector unsigned char)__a,
10401 (vector unsigned char)__b, 8, __cc);
10402}
10403
10404static inline __ATTRS_o_ai vector unsigned char
10405vec_find_any_ne_or_0_idx_cc(vector bool char __a, vector bool char __b,
10406 int *__cc) {
10407 return __builtin_s390_vfaezbs((vector unsigned char)__a,
10408 (vector unsigned char)__b, 8, __cc);
10409}
10410
10411static inline __ATTRS_o_ai vector unsigned char
10412vec_find_any_ne_or_0_idx_cc(vector unsigned char __a, vector unsigned char __b,
10413 int *__cc) {
10414 return __builtin_s390_vfaezbs(__a, __b, 8, __cc);
10415}
10416
10417static inline __ATTRS_o_ai vector signed short
10418vec_find_any_ne_or_0_idx_cc(vector signed short __a, vector signed short __b,
10419 int *__cc) {
10420 return (vector signed short)
10421 __builtin_s390_vfaezhs((vector unsigned short)__a,
10422 (vector unsigned short)__b, 8, __cc);
10423}
10424
10425static inline __ATTRS_o_ai vector unsigned short
10426vec_find_any_ne_or_0_idx_cc(vector bool short __a, vector bool short __b,
10427 int *__cc) {
10428 return __builtin_s390_vfaezhs((vector unsigned short)__a,
10429 (vector unsigned short)__b, 8, __cc);
10430}
10431
10432static inline __ATTRS_o_ai vector unsigned short
10433vec_find_any_ne_or_0_idx_cc(vector unsigned short __a,
10434 vector unsigned short __b, int *__cc) {
10435 return __builtin_s390_vfaezhs(__a, __b, 8, __cc);
10436}
10437
10438static inline __ATTRS_o_ai vector signed int
10439vec_find_any_ne_or_0_idx_cc(vector signed int __a, vector signed int __b,
10440 int *__cc) {
10441 return (vector signed int)
10442 __builtin_s390_vfaezfs((vector unsigned int)__a,
10443 (vector unsigned int)__b, 8, __cc);
10444}
10445
10446static inline __ATTRS_o_ai vector unsigned int
10447vec_find_any_ne_or_0_idx_cc(vector bool int __a, vector bool int __b,
10448 int *__cc) {
10449 return __builtin_s390_vfaezfs((vector unsigned int)__a,
10450 (vector unsigned int)__b, 8, __cc);
10451}
10452
10453static inline __ATTRS_o_ai vector unsigned int
10454vec_find_any_ne_or_0_idx_cc(vector unsigned int __a, vector unsigned int __b,
10455 int *__cc) {
10456 return __builtin_s390_vfaezfs(__a, __b, 8, __cc);
10457}
10458
10459#undef __constant_pow2_range
10460#undef __constant_range
10461#undef __constant
10462#undef __ATTRS_o
10463#undef __ATTRS_o_ai
10464#undef __ATTRS_ai
10465
10466#else
10467
10468#error "Use -fzvector to enable vector extensions"
10469
10470#endif