1 /*===---- vecintrin.h - Vector intrinsics ----------------------------------=== 2 * 3 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 * See https://llvm.org/LICENSE.txt for license information. 5 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 * 7 *===-----------------------------------------------------------------------=== 8 */ 9 10 #if defined(__s390x__) && defined(__VEC__) 11 12 #define __ATTRS_ai __attribute__((__always_inline__)) 13 #define __ATTRS_o __attribute__((__overloadable__)) 14 #define __ATTRS_o_ai __attribute__((__overloadable__, __always_inline__)) 15 16 #define __constant(PARM) \ 17 __attribute__((__enable_if__ ((PARM) == (PARM), \ 18 "argument must be a constant integer"))) 19 #define __constant_range(PARM, LOW, HIGH) \ 20 __attribute__((__enable_if__ ((PARM) >= (LOW) && (PARM) <= (HIGH), \ 21 "argument must be a constant integer from " #LOW " to " #HIGH))) 22 #define __constant_pow2_range(PARM, LOW, HIGH) \ 23 __attribute__((__enable_if__ ((PARM) >= (LOW) && (PARM) <= (HIGH) && \ 24 ((PARM) & ((PARM) - 1)) == 0, \ 25 "argument must be a constant power of 2 from " #LOW " to " #HIGH))) 26 27 /*-- __lcbb -----------------------------------------------------------------*/ 28 29 extern __ATTRS_o unsigned int 30 __lcbb(const void *__ptr, unsigned short __len) 31 __constant_pow2_range(__len, 64, 4096); 32 33 #define __lcbb(X, Y) ((__typeof__((__lcbb)((X), (Y)))) \ 34 __builtin_s390_lcbb((X), __builtin_constant_p((Y))? \ 35 ((Y) == 64 ? 0 : \ 36 (Y) == 128 ? 1 : \ 37 (Y) == 256 ? 2 : \ 38 (Y) == 512 ? 3 : \ 39 (Y) == 1024 ? 4 : \ 40 (Y) == 2048 ? 5 : \ 41 (Y) == 4096 ? 6 : 0) : 0)) 42 43 /*-- vec_extract ------------------------------------------------------------*/ 44 45 static inline __ATTRS_o_ai signed char 46 vec_extract(__vector signed char __vec, int __index) { 47 return __vec[__index & 15]; 48 } 49 50 static inline __ATTRS_o_ai unsigned char 51 vec_extract(__vector __bool char __vec, int __index) { 52 return __vec[__index & 15]; 53 } 54 55 static inline __ATTRS_o_ai unsigned char 56 vec_extract(__vector unsigned char __vec, int __index) { 57 return __vec[__index & 15]; 58 } 59 60 static inline __ATTRS_o_ai signed short 61 vec_extract(__vector signed short __vec, int __index) { 62 return __vec[__index & 7]; 63 } 64 65 static inline __ATTRS_o_ai unsigned short 66 vec_extract(__vector __bool short __vec, int __index) { 67 return __vec[__index & 7]; 68 } 69 70 static inline __ATTRS_o_ai unsigned short 71 vec_extract(__vector unsigned short __vec, int __index) { 72 return __vec[__index & 7]; 73 } 74 75 static inline __ATTRS_o_ai signed int 76 vec_extract(__vector signed int __vec, int __index) { 77 return __vec[__index & 3]; 78 } 79 80 static inline __ATTRS_o_ai unsigned int 81 vec_extract(__vector __bool int __vec, int __index) { 82 return __vec[__index & 3]; 83 } 84 85 static inline __ATTRS_o_ai unsigned int 86 vec_extract(__vector unsigned int __vec, int __index) { 87 return __vec[__index & 3]; 88 } 89 90 static inline __ATTRS_o_ai signed long long 91 vec_extract(__vector signed long long __vec, int __index) { 92 return __vec[__index & 1]; 93 } 94 95 static inline __ATTRS_o_ai unsigned long long 96 vec_extract(__vector __bool long long __vec, int __index) { 97 return __vec[__index & 1]; 98 } 99 100 static inline __ATTRS_o_ai unsigned long long 101 vec_extract(__vector unsigned long long __vec, int __index) { 102 return __vec[__index & 1]; 103 } 104 105 #if __ARCH__ >= 12 106 static inline __ATTRS_o_ai float 107 vec_extract(__vector float __vec, int __index) { 108 return __vec[__index & 3]; 109 } 110 #endif 111 112 static inline __ATTRS_o_ai double 113 vec_extract(__vector double __vec, int __index) { 114 return __vec[__index & 1]; 115 } 116 117 /*-- vec_insert -------------------------------------------------------------*/ 118 119 static inline __ATTRS_o_ai __vector signed char 120 vec_insert(signed char __scalar, __vector signed char __vec, int __index) { 121 __vec[__index & 15] = __scalar; 122 return __vec; 123 } 124 125 // This prototype is deprecated. 126 static inline __ATTRS_o_ai __vector unsigned char 127 vec_insert(unsigned char __scalar, __vector __bool char __vec, int __index) { 128 __vector unsigned char __newvec = (__vector unsigned char)__vec; 129 __newvec[__index & 15] = (unsigned char)__scalar; 130 return __newvec; 131 } 132 133 static inline __ATTRS_o_ai __vector unsigned char 134 vec_insert(unsigned char __scalar, __vector unsigned char __vec, int __index) { 135 __vec[__index & 15] = __scalar; 136 return __vec; 137 } 138 139 static inline __ATTRS_o_ai __vector signed short 140 vec_insert(signed short __scalar, __vector signed short __vec, int __index) { 141 __vec[__index & 7] = __scalar; 142 return __vec; 143 } 144 145 // This prototype is deprecated. 146 static inline __ATTRS_o_ai __vector unsigned short 147 vec_insert(unsigned short __scalar, __vector __bool short __vec, 148 int __index) { 149 __vector unsigned short __newvec = (__vector unsigned short)__vec; 150 __newvec[__index & 7] = (unsigned short)__scalar; 151 return __newvec; 152 } 153 154 static inline __ATTRS_o_ai __vector unsigned short 155 vec_insert(unsigned short __scalar, __vector unsigned short __vec, 156 int __index) { 157 __vec[__index & 7] = __scalar; 158 return __vec; 159 } 160 161 static inline __ATTRS_o_ai __vector signed int 162 vec_insert(signed int __scalar, __vector signed int __vec, int __index) { 163 __vec[__index & 3] = __scalar; 164 return __vec; 165 } 166 167 // This prototype is deprecated. 168 static inline __ATTRS_o_ai __vector unsigned int 169 vec_insert(unsigned int __scalar, __vector __bool int __vec, int __index) { 170 __vector unsigned int __newvec = (__vector unsigned int)__vec; 171 __newvec[__index & 3] = __scalar; 172 return __newvec; 173 } 174 175 static inline __ATTRS_o_ai __vector unsigned int 176 vec_insert(unsigned int __scalar, __vector unsigned int __vec, int __index) { 177 __vec[__index & 3] = __scalar; 178 return __vec; 179 } 180 181 static inline __ATTRS_o_ai __vector signed long long 182 vec_insert(signed long long __scalar, __vector signed long long __vec, 183 int __index) { 184 __vec[__index & 1] = __scalar; 185 return __vec; 186 } 187 188 // This prototype is deprecated. 189 static inline __ATTRS_o_ai __vector unsigned long long 190 vec_insert(unsigned long long __scalar, __vector __bool long long __vec, 191 int __index) { 192 __vector unsigned long long __newvec = (__vector unsigned long long)__vec; 193 __newvec[__index & 1] = __scalar; 194 return __newvec; 195 } 196 197 static inline __ATTRS_o_ai __vector unsigned long long 198 vec_insert(unsigned long long __scalar, __vector unsigned long long __vec, 199 int __index) { 200 __vec[__index & 1] = __scalar; 201 return __vec; 202 } 203 204 #if __ARCH__ >= 12 205 static inline __ATTRS_o_ai __vector float 206 vec_insert(float __scalar, __vector float __vec, int __index) { 207 __vec[__index & 1] = __scalar; 208 return __vec; 209 } 210 #endif 211 212 static inline __ATTRS_o_ai __vector double 213 vec_insert(double __scalar, __vector double __vec, int __index) { 214 __vec[__index & 1] = __scalar; 215 return __vec; 216 } 217 218 /*-- vec_promote ------------------------------------------------------------*/ 219 220 static inline __ATTRS_o_ai __vector signed char 221 vec_promote(signed char __scalar, int __index) { 222 const __vector signed char __zero = (__vector signed char)0; 223 __vector signed char __vec = __builtin_shufflevector(__zero, __zero, 224 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1); 225 __vec[__index & 15] = __scalar; 226 return __vec; 227 } 228 229 static inline __ATTRS_o_ai __vector unsigned char 230 vec_promote(unsigned char __scalar, int __index) { 231 const __vector unsigned char __zero = (__vector unsigned char)0; 232 __vector unsigned char __vec = __builtin_shufflevector(__zero, __zero, 233 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1); 234 __vec[__index & 15] = __scalar; 235 return __vec; 236 } 237 238 static inline __ATTRS_o_ai __vector signed short 239 vec_promote(signed short __scalar, int __index) { 240 const __vector signed short __zero = (__vector signed short)0; 241 __vector signed short __vec = __builtin_shufflevector(__zero, __zero, 242 -1, -1, -1, -1, -1, -1, -1, -1); 243 __vec[__index & 7] = __scalar; 244 return __vec; 245 } 246 247 static inline __ATTRS_o_ai __vector unsigned short 248 vec_promote(unsigned short __scalar, int __index) { 249 const __vector unsigned short __zero = (__vector unsigned short)0; 250 __vector unsigned short __vec = __builtin_shufflevector(__zero, __zero, 251 -1, -1, -1, -1, -1, -1, -1, -1); 252 __vec[__index & 7] = __scalar; 253 return __vec; 254 } 255 256 static inline __ATTRS_o_ai __vector signed int 257 vec_promote(signed int __scalar, int __index) { 258 const __vector signed int __zero = (__vector signed int)0; 259 __vector signed int __vec = __builtin_shufflevector(__zero, __zero, 260 -1, -1, -1, -1); 261 __vec[__index & 3] = __scalar; 262 return __vec; 263 } 264 265 static inline __ATTRS_o_ai __vector unsigned int 266 vec_promote(unsigned int __scalar, int __index) { 267 const __vector unsigned int __zero = (__vector unsigned int)0; 268 __vector unsigned int __vec = __builtin_shufflevector(__zero, __zero, 269 -1, -1, -1, -1); 270 __vec[__index & 3] = __scalar; 271 return __vec; 272 } 273 274 static inline __ATTRS_o_ai __vector signed long long 275 vec_promote(signed long long __scalar, int __index) { 276 const __vector signed long long __zero = (__vector signed long long)0; 277 __vector signed long long __vec = __builtin_shufflevector(__zero, __zero, 278 -1, -1); 279 __vec[__index & 1] = __scalar; 280 return __vec; 281 } 282 283 static inline __ATTRS_o_ai __vector unsigned long long 284 vec_promote(unsigned long long __scalar, int __index) { 285 const __vector unsigned long long __zero = (__vector unsigned long long)0; 286 __vector unsigned long long __vec = __builtin_shufflevector(__zero, __zero, 287 -1, -1); 288 __vec[__index & 1] = __scalar; 289 return __vec; 290 } 291 292 #if __ARCH__ >= 12 293 static inline __ATTRS_o_ai __vector float 294 vec_promote(float __scalar, int __index) { 295 const __vector float __zero = (__vector float)0.0f; 296 __vector float __vec = __builtin_shufflevector(__zero, __zero, 297 -1, -1, -1, -1); 298 __vec[__index & 3] = __scalar; 299 return __vec; 300 } 301 #endif 302 303 static inline __ATTRS_o_ai __vector double 304 vec_promote(double __scalar, int __index) { 305 const __vector double __zero = (__vector double)0.0; 306 __vector double __vec = __builtin_shufflevector(__zero, __zero, -1, -1); 307 __vec[__index & 1] = __scalar; 308 return __vec; 309 } 310 311 /*-- vec_insert_and_zero ----------------------------------------------------*/ 312 313 static inline __ATTRS_o_ai __vector signed char 314 vec_insert_and_zero(const signed char *__ptr) { 315 __vector signed char __vec = (__vector signed char)0; 316 __vec[7] = *__ptr; 317 return __vec; 318 } 319 320 static inline __ATTRS_o_ai __vector unsigned char 321 vec_insert_and_zero(const unsigned char *__ptr) { 322 __vector unsigned char __vec = (__vector unsigned char)0; 323 __vec[7] = *__ptr; 324 return __vec; 325 } 326 327 static inline __ATTRS_o_ai __vector signed short 328 vec_insert_and_zero(const signed short *__ptr) { 329 __vector signed short __vec = (__vector signed short)0; 330 __vec[3] = *__ptr; 331 return __vec; 332 } 333 334 static inline __ATTRS_o_ai __vector unsigned short 335 vec_insert_and_zero(const unsigned short *__ptr) { 336 __vector unsigned short __vec = (__vector unsigned short)0; 337 __vec[3] = *__ptr; 338 return __vec; 339 } 340 341 static inline __ATTRS_o_ai __vector signed int 342 vec_insert_and_zero(const signed int *__ptr) { 343 __vector signed int __vec = (__vector signed int)0; 344 __vec[1] = *__ptr; 345 return __vec; 346 } 347 348 static inline __ATTRS_o_ai __vector unsigned int 349 vec_insert_and_zero(const unsigned int *__ptr) { 350 __vector unsigned int __vec = (__vector unsigned int)0; 351 __vec[1] = *__ptr; 352 return __vec; 353 } 354 355 static inline __ATTRS_o_ai __vector signed long long 356 vec_insert_and_zero(const signed long long *__ptr) { 357 __vector signed long long __vec = (__vector signed long long)0; 358 __vec[0] = *__ptr; 359 return __vec; 360 } 361 362 static inline __ATTRS_o_ai __vector unsigned long long 363 vec_insert_and_zero(const unsigned long long *__ptr) { 364 __vector unsigned long long __vec = (__vector unsigned long long)0; 365 __vec[0] = *__ptr; 366 return __vec; 367 } 368 369 #if __ARCH__ >= 12 370 static inline __ATTRS_o_ai __vector float 371 vec_insert_and_zero(const float *__ptr) { 372 __vector float __vec = (__vector float)0.0f; 373 __vec[1] = *__ptr; 374 return __vec; 375 } 376 #endif 377 378 static inline __ATTRS_o_ai __vector double 379 vec_insert_and_zero(const double *__ptr) { 380 __vector double __vec = (__vector double)0.0; 381 __vec[0] = *__ptr; 382 return __vec; 383 } 384 385 /*-- vec_perm ---------------------------------------------------------------*/ 386 387 static inline __ATTRS_o_ai __vector signed char 388 vec_perm(__vector signed char __a, __vector signed char __b, 389 __vector unsigned char __c) { 390 return (__vector signed char)__builtin_s390_vperm( 391 (__vector unsigned char)__a, (__vector unsigned char)__b, __c); 392 } 393 394 static inline __ATTRS_o_ai __vector unsigned char 395 vec_perm(__vector unsigned char __a, __vector unsigned char __b, 396 __vector unsigned char __c) { 397 return (__vector unsigned char)__builtin_s390_vperm( 398 (__vector unsigned char)__a, (__vector unsigned char)__b, __c); 399 } 400 401 static inline __ATTRS_o_ai __vector __bool char 402 vec_perm(__vector __bool char __a, __vector __bool char __b, 403 __vector unsigned char __c) { 404 return (__vector __bool char)__builtin_s390_vperm( 405 (__vector unsigned char)__a, (__vector unsigned char)__b, __c); 406 } 407 408 static inline __ATTRS_o_ai __vector signed short 409 vec_perm(__vector signed short __a, __vector signed short __b, 410 __vector unsigned char __c) { 411 return (__vector signed short)__builtin_s390_vperm( 412 (__vector unsigned char)__a, (__vector unsigned char)__b, __c); 413 } 414 415 static inline __ATTRS_o_ai __vector unsigned short 416 vec_perm(__vector unsigned short __a, __vector unsigned short __b, 417 __vector unsigned char __c) { 418 return (__vector unsigned short)__builtin_s390_vperm( 419 (__vector unsigned char)__a, (__vector unsigned char)__b, __c); 420 } 421 422 static inline __ATTRS_o_ai __vector __bool short 423 vec_perm(__vector __bool short __a, __vector __bool short __b, 424 __vector unsigned char __c) { 425 return (__vector __bool short)__builtin_s390_vperm( 426 (__vector unsigned char)__a, (__vector unsigned char)__b, __c); 427 } 428 429 static inline __ATTRS_o_ai __vector signed int 430 vec_perm(__vector signed int __a, __vector signed int __b, 431 __vector unsigned char __c) { 432 return (__vector signed int)__builtin_s390_vperm( 433 (__vector unsigned char)__a, (__vector unsigned char)__b, __c); 434 } 435 436 static inline __ATTRS_o_ai __vector unsigned int 437 vec_perm(__vector unsigned int __a, __vector unsigned int __b, 438 __vector unsigned char __c) { 439 return (__vector unsigned int)__builtin_s390_vperm( 440 (__vector unsigned char)__a, (__vector unsigned char)__b, __c); 441 } 442 443 static inline __ATTRS_o_ai __vector __bool int 444 vec_perm(__vector __bool int __a, __vector __bool int __b, 445 __vector unsigned char __c) { 446 return (__vector __bool int)__builtin_s390_vperm( 447 (__vector unsigned char)__a, (__vector unsigned char)__b, __c); 448 } 449 450 static inline __ATTRS_o_ai __vector signed long long 451 vec_perm(__vector signed long long __a, __vector signed long long __b, 452 __vector unsigned char __c) { 453 return (__vector signed long long)__builtin_s390_vperm( 454 (__vector unsigned char)__a, (__vector unsigned char)__b, __c); 455 } 456 457 static inline __ATTRS_o_ai __vector unsigned long long 458 vec_perm(__vector unsigned long long __a, __vector unsigned long long __b, 459 __vector unsigned char __c) { 460 return (__vector unsigned long long)__builtin_s390_vperm( 461 (__vector unsigned char)__a, (__vector unsigned char)__b, __c); 462 } 463 464 static inline __ATTRS_o_ai __vector __bool long long 465 vec_perm(__vector __bool long long __a, __vector __bool long long __b, 466 __vector unsigned char __c) { 467 return (__vector __bool long long)__builtin_s390_vperm( 468 (__vector unsigned char)__a, (__vector unsigned char)__b, __c); 469 } 470 471 #if __ARCH__ >= 12 472 static inline __ATTRS_o_ai __vector float 473 vec_perm(__vector float __a, __vector float __b, 474 __vector unsigned char __c) { 475 return (__vector float)__builtin_s390_vperm( 476 (__vector unsigned char)__a, (__vector unsigned char)__b, __c); 477 } 478 #endif 479 480 static inline __ATTRS_o_ai __vector double 481 vec_perm(__vector double __a, __vector double __b, 482 __vector unsigned char __c) { 483 return (__vector double)__builtin_s390_vperm( 484 (__vector unsigned char)__a, (__vector unsigned char)__b, __c); 485 } 486 487 /*-- vec_permi --------------------------------------------------------------*/ 488 489 // This prototype is deprecated. 490 extern __ATTRS_o __vector signed long long 491 vec_permi(__vector signed long long __a, __vector signed long long __b, 492 int __c) 493 __constant_range(__c, 0, 3); 494 495 // This prototype is deprecated. 496 extern __ATTRS_o __vector unsigned long long 497 vec_permi(__vector unsigned long long __a, __vector unsigned long long __b, 498 int __c) 499 __constant_range(__c, 0, 3); 500 501 // This prototype is deprecated. 502 extern __ATTRS_o __vector __bool long long 503 vec_permi(__vector __bool long long __a, __vector __bool long long __b, 504 int __c) 505 __constant_range(__c, 0, 3); 506 507 // This prototype is deprecated. 508 extern __ATTRS_o __vector double 509 vec_permi(__vector double __a, __vector double __b, int __c) 510 __constant_range(__c, 0, 3); 511 512 #define vec_permi(X, Y, Z) ((__typeof__((vec_permi)((X), (Y), (Z)))) \ 513 __builtin_s390_vpdi((__vector unsigned long long)(X), \ 514 (__vector unsigned long long)(Y), \ 515 (((Z) & 2) << 1) | ((Z) & 1))) 516 517 /*-- vec_bperm_u128 ---------------------------------------------------------*/ 518 519 #if __ARCH__ >= 12 520 static inline __ATTRS_ai __vector unsigned long long 521 vec_bperm_u128(__vector unsigned char __a, __vector unsigned char __b) { 522 return __builtin_s390_vbperm(__a, __b); 523 } 524 #endif 525 526 /*-- vec_revb ---------------------------------------------------------------*/ 527 528 static inline __ATTRS_o_ai __vector signed short 529 vec_revb(__vector signed short __vec) { 530 return (__vector signed short) 531 __builtin_s390_vlbrh((__vector unsigned short)__vec); 532 } 533 534 static inline __ATTRS_o_ai __vector unsigned short 535 vec_revb(__vector unsigned short __vec) { 536 return __builtin_s390_vlbrh(__vec); 537 } 538 539 static inline __ATTRS_o_ai __vector signed int 540 vec_revb(__vector signed int __vec) { 541 return (__vector signed int) 542 __builtin_s390_vlbrf((__vector unsigned int)__vec); 543 } 544 545 static inline __ATTRS_o_ai __vector unsigned int 546 vec_revb(__vector unsigned int __vec) { 547 return __builtin_s390_vlbrf(__vec); 548 } 549 550 static inline __ATTRS_o_ai __vector signed long long 551 vec_revb(__vector signed long long __vec) { 552 return (__vector signed long long) 553 __builtin_s390_vlbrg((__vector unsigned long long)__vec); 554 } 555 556 static inline __ATTRS_o_ai __vector unsigned long long 557 vec_revb(__vector unsigned long long __vec) { 558 return __builtin_s390_vlbrg(__vec); 559 } 560 561 #if __ARCH__ >= 12 562 static inline __ATTRS_o_ai __vector float 563 vec_revb(__vector float __vec) { 564 return (__vector float) 565 __builtin_s390_vlbrf((__vector unsigned int)__vec); 566 } 567 #endif 568 569 static inline __ATTRS_o_ai __vector double 570 vec_revb(__vector double __vec) { 571 return (__vector double) 572 __builtin_s390_vlbrg((__vector unsigned long long)__vec); 573 } 574 575 /*-- vec_reve ---------------------------------------------------------------*/ 576 577 static inline __ATTRS_o_ai __vector signed char 578 vec_reve(__vector signed char __vec) { 579 return (__vector signed char) { __vec[15], __vec[14], __vec[13], __vec[12], 580 __vec[11], __vec[10], __vec[9], __vec[8], 581 __vec[7], __vec[6], __vec[5], __vec[4], 582 __vec[3], __vec[2], __vec[1], __vec[0] }; 583 } 584 585 static inline __ATTRS_o_ai __vector unsigned char 586 vec_reve(__vector unsigned char __vec) { 587 return (__vector unsigned char) { __vec[15], __vec[14], __vec[13], __vec[12], 588 __vec[11], __vec[10], __vec[9], __vec[8], 589 __vec[7], __vec[6], __vec[5], __vec[4], 590 __vec[3], __vec[2], __vec[1], __vec[0] }; 591 } 592 593 static inline __ATTRS_o_ai __vector __bool char 594 vec_reve(__vector __bool char __vec) { 595 return (__vector __bool char) { __vec[15], __vec[14], __vec[13], __vec[12], 596 __vec[11], __vec[10], __vec[9], __vec[8], 597 __vec[7], __vec[6], __vec[5], __vec[4], 598 __vec[3], __vec[2], __vec[1], __vec[0] }; 599 } 600 601 static inline __ATTRS_o_ai __vector signed short 602 vec_reve(__vector signed short __vec) { 603 return (__vector signed short) { __vec[7], __vec[6], __vec[5], __vec[4], 604 __vec[3], __vec[2], __vec[1], __vec[0] }; 605 } 606 607 static inline __ATTRS_o_ai __vector unsigned short 608 vec_reve(__vector unsigned short __vec) { 609 return (__vector unsigned short) { __vec[7], __vec[6], __vec[5], __vec[4], 610 __vec[3], __vec[2], __vec[1], __vec[0] }; 611 } 612 613 static inline __ATTRS_o_ai __vector __bool short 614 vec_reve(__vector __bool short __vec) { 615 return (__vector __bool short) { __vec[7], __vec[6], __vec[5], __vec[4], 616 __vec[3], __vec[2], __vec[1], __vec[0] }; 617 } 618 619 static inline __ATTRS_o_ai __vector signed int 620 vec_reve(__vector signed int __vec) { 621 return (__vector signed int) { __vec[3], __vec[2], __vec[1], __vec[0] }; 622 } 623 624 static inline __ATTRS_o_ai __vector unsigned int 625 vec_reve(__vector unsigned int __vec) { 626 return (__vector unsigned int) { __vec[3], __vec[2], __vec[1], __vec[0] }; 627 } 628 629 static inline __ATTRS_o_ai __vector __bool int 630 vec_reve(__vector __bool int __vec) { 631 return (__vector __bool int) { __vec[3], __vec[2], __vec[1], __vec[0] }; 632 } 633 634 static inline __ATTRS_o_ai __vector signed long long 635 vec_reve(__vector signed long long __vec) { 636 return (__vector signed long long) { __vec[1], __vec[0] }; 637 } 638 639 static inline __ATTRS_o_ai __vector unsigned long long 640 vec_reve(__vector unsigned long long __vec) { 641 return (__vector unsigned long long) { __vec[1], __vec[0] }; 642 } 643 644 static inline __ATTRS_o_ai __vector __bool long long 645 vec_reve(__vector __bool long long __vec) { 646 return (__vector __bool long long) { __vec[1], __vec[0] }; 647 } 648 649 #if __ARCH__ >= 12 650 static inline __ATTRS_o_ai __vector float 651 vec_reve(__vector float __vec) { 652 return (__vector float) { __vec[3], __vec[2], __vec[1], __vec[0] }; 653 } 654 #endif 655 656 static inline __ATTRS_o_ai __vector double 657 vec_reve(__vector double __vec) { 658 return (__vector double) { __vec[1], __vec[0] }; 659 } 660 661 /*-- vec_sel ----------------------------------------------------------------*/ 662 663 static inline __ATTRS_o_ai __vector signed char 664 vec_sel(__vector signed char __a, __vector signed char __b, 665 __vector unsigned char __c) { 666 return (((__vector signed char)__c & __b) | 667 (~(__vector signed char)__c & __a)); 668 } 669 670 static inline __ATTRS_o_ai __vector signed char 671 vec_sel(__vector signed char __a, __vector signed char __b, 672 __vector __bool char __c) { 673 return (((__vector signed char)__c & __b) | 674 (~(__vector signed char)__c & __a)); 675 } 676 677 static inline __ATTRS_o_ai __vector __bool char 678 vec_sel(__vector __bool char __a, __vector __bool char __b, 679 __vector unsigned char __c) { 680 return (((__vector __bool char)__c & __b) | 681 (~(__vector __bool char)__c & __a)); 682 } 683 684 static inline __ATTRS_o_ai __vector __bool char 685 vec_sel(__vector __bool char __a, __vector __bool char __b, 686 __vector __bool char __c) { 687 return (__c & __b) | (~__c & __a); 688 } 689 690 static inline __ATTRS_o_ai __vector unsigned char 691 vec_sel(__vector unsigned char __a, __vector unsigned char __b, 692 __vector unsigned char __c) { 693 return (__c & __b) | (~__c & __a); 694 } 695 696 static inline __ATTRS_o_ai __vector unsigned char 697 vec_sel(__vector unsigned char __a, __vector unsigned char __b, 698 __vector __bool char __c) { 699 return (((__vector unsigned char)__c & __b) | 700 (~(__vector unsigned char)__c & __a)); 701 } 702 703 static inline __ATTRS_o_ai __vector signed short 704 vec_sel(__vector signed short __a, __vector signed short __b, 705 __vector unsigned short __c) { 706 return (((__vector signed short)__c & __b) | 707 (~(__vector signed short)__c & __a)); 708 } 709 710 static inline __ATTRS_o_ai __vector signed short 711 vec_sel(__vector signed short __a, __vector signed short __b, 712 __vector __bool short __c) { 713 return (((__vector signed short)__c & __b) | 714 (~(__vector signed short)__c & __a)); 715 } 716 717 static inline __ATTRS_o_ai __vector __bool short 718 vec_sel(__vector __bool short __a, __vector __bool short __b, 719 __vector unsigned short __c) { 720 return (((__vector __bool short)__c & __b) | 721 (~(__vector __bool short)__c & __a)); 722 } 723 724 static inline __ATTRS_o_ai __vector __bool short 725 vec_sel(__vector __bool short __a, __vector __bool short __b, 726 __vector __bool short __c) { 727 return (__c & __b) | (~__c & __a); 728 } 729 730 static inline __ATTRS_o_ai __vector unsigned short 731 vec_sel(__vector unsigned short __a, __vector unsigned short __b, 732 __vector unsigned short __c) { 733 return (__c & __b) | (~__c & __a); 734 } 735 736 static inline __ATTRS_o_ai __vector unsigned short 737 vec_sel(__vector unsigned short __a, __vector unsigned short __b, 738 __vector __bool short __c) { 739 return (((__vector unsigned short)__c & __b) | 740 (~(__vector unsigned short)__c & __a)); 741 } 742 743 static inline __ATTRS_o_ai __vector signed int 744 vec_sel(__vector signed int __a, __vector signed int __b, 745 __vector unsigned int __c) { 746 return (((__vector signed int)__c & __b) | 747 (~(__vector signed int)__c & __a)); 748 } 749 750 static inline __ATTRS_o_ai __vector signed int 751 vec_sel(__vector signed int __a, __vector signed int __b, 752 __vector __bool int __c) { 753 return (((__vector signed int)__c & __b) | 754 (~(__vector signed int)__c & __a)); 755 } 756 757 static inline __ATTRS_o_ai __vector __bool int 758 vec_sel(__vector __bool int __a, __vector __bool int __b, 759 __vector unsigned int __c) { 760 return (((__vector __bool int)__c & __b) | 761 (~(__vector __bool int)__c & __a)); 762 } 763 764 static inline __ATTRS_o_ai __vector __bool int 765 vec_sel(__vector __bool int __a, __vector __bool int __b, 766 __vector __bool int __c) { 767 return (__c & __b) | (~__c & __a); 768 } 769 770 static inline __ATTRS_o_ai __vector unsigned int 771 vec_sel(__vector unsigned int __a, __vector unsigned int __b, 772 __vector unsigned int __c) { 773 return (__c & __b) | (~__c & __a); 774 } 775 776 static inline __ATTRS_o_ai __vector unsigned int 777 vec_sel(__vector unsigned int __a, __vector unsigned int __b, 778 __vector __bool int __c) { 779 return (((__vector unsigned int)__c & __b) | 780 (~(__vector unsigned int)__c & __a)); 781 } 782 783 static inline __ATTRS_o_ai __vector signed long long 784 vec_sel(__vector signed long long __a, __vector signed long long __b, 785 __vector unsigned long long __c) { 786 return (((__vector signed long long)__c & __b) | 787 (~(__vector signed long long)__c & __a)); 788 } 789 790 static inline __ATTRS_o_ai __vector signed long long 791 vec_sel(__vector signed long long __a, __vector signed long long __b, 792 __vector __bool long long __c) { 793 return (((__vector signed long long)__c & __b) | 794 (~(__vector signed long long)__c & __a)); 795 } 796 797 static inline __ATTRS_o_ai __vector __bool long long 798 vec_sel(__vector __bool long long __a, __vector __bool long long __b, 799 __vector unsigned long long __c) { 800 return (((__vector __bool long long)__c & __b) | 801 (~(__vector __bool long long)__c & __a)); 802 } 803 804 static inline __ATTRS_o_ai __vector __bool long long 805 vec_sel(__vector __bool long long __a, __vector __bool long long __b, 806 __vector __bool long long __c) { 807 return (__c & __b) | (~__c & __a); 808 } 809 810 static inline __ATTRS_o_ai __vector unsigned long long 811 vec_sel(__vector unsigned long long __a, __vector unsigned long long __b, 812 __vector unsigned long long __c) { 813 return (__c & __b) | (~__c & __a); 814 } 815 816 static inline __ATTRS_o_ai __vector unsigned long long 817 vec_sel(__vector unsigned long long __a, __vector unsigned long long __b, 818 __vector __bool long long __c) { 819 return (((__vector unsigned long long)__c & __b) | 820 (~(__vector unsigned long long)__c & __a)); 821 } 822 823 #if __ARCH__ >= 12 824 static inline __ATTRS_o_ai __vector float 825 vec_sel(__vector float __a, __vector float __b, __vector unsigned int __c) { 826 return (__vector float)((__c & (__vector unsigned int)__b) | 827 (~__c & (__vector unsigned int)__a)); 828 } 829 830 static inline __ATTRS_o_ai __vector float 831 vec_sel(__vector float __a, __vector float __b, __vector __bool int __c) { 832 __vector unsigned int __ac = (__vector unsigned int)__a; 833 __vector unsigned int __bc = (__vector unsigned int)__b; 834 __vector unsigned int __cc = (__vector unsigned int)__c; 835 return (__vector float)((__cc & __bc) | (~__cc & __ac)); 836 } 837 #endif 838 839 static inline __ATTRS_o_ai __vector double 840 vec_sel(__vector double __a, __vector double __b, 841 __vector unsigned long long __c) { 842 return (__vector double)((__c & (__vector unsigned long long)__b) | 843 (~__c & (__vector unsigned long long)__a)); 844 } 845 846 static inline __ATTRS_o_ai __vector double 847 vec_sel(__vector double __a, __vector double __b, 848 __vector __bool long long __c) { 849 __vector unsigned long long __ac = (__vector unsigned long long)__a; 850 __vector unsigned long long __bc = (__vector unsigned long long)__b; 851 __vector unsigned long long __cc = (__vector unsigned long long)__c; 852 return (__vector double)((__cc & __bc) | (~__cc & __ac)); 853 } 854 855 /*-- vec_gather_element -----------------------------------------------------*/ 856 857 static inline __ATTRS_o_ai __vector signed int 858 vec_gather_element(__vector signed int __vec, 859 __vector unsigned int __offset, 860 const signed int *__ptr, int __index) 861 __constant_range(__index, 0, 3) { 862 __vec[__index] = *(const signed int *)( 863 (const char *)__ptr + __offset[__index]); 864 return __vec; 865 } 866 867 static inline __ATTRS_o_ai __vector __bool int 868 vec_gather_element(__vector __bool int __vec, 869 __vector unsigned int __offset, 870 const unsigned int *__ptr, int __index) 871 __constant_range(__index, 0, 3) { 872 __vec[__index] = *(const unsigned int *)( 873 (const char *)__ptr + __offset[__index]); 874 return __vec; 875 } 876 877 static inline __ATTRS_o_ai __vector unsigned int 878 vec_gather_element(__vector unsigned int __vec, 879 __vector unsigned int __offset, 880 const unsigned int *__ptr, int __index) 881 __constant_range(__index, 0, 3) { 882 __vec[__index] = *(const unsigned int *)( 883 (const char *)__ptr + __offset[__index]); 884 return __vec; 885 } 886 887 static inline __ATTRS_o_ai __vector signed long long 888 vec_gather_element(__vector signed long long __vec, 889 __vector unsigned long long __offset, 890 const signed long long *__ptr, int __index) 891 __constant_range(__index, 0, 1) { 892 __vec[__index] = *(const signed long long *)( 893 (const char *)__ptr + __offset[__index]); 894 return __vec; 895 } 896 897 static inline __ATTRS_o_ai __vector __bool long long 898 vec_gather_element(__vector __bool long long __vec, 899 __vector unsigned long long __offset, 900 const unsigned long long *__ptr, int __index) 901 __constant_range(__index, 0, 1) { 902 __vec[__index] = *(const unsigned long long *)( 903 (const char *)__ptr + __offset[__index]); 904 return __vec; 905 } 906 907 static inline __ATTRS_o_ai __vector unsigned long long 908 vec_gather_element(__vector unsigned long long __vec, 909 __vector unsigned long long __offset, 910 const unsigned long long *__ptr, int __index) 911 __constant_range(__index, 0, 1) { 912 __vec[__index] = *(const unsigned long long *)( 913 (const char *)__ptr + __offset[__index]); 914 return __vec; 915 } 916 917 #if __ARCH__ >= 12 918 static inline __ATTRS_o_ai __vector float 919 vec_gather_element(__vector float __vec, 920 __vector unsigned int __offset, 921 const float *__ptr, int __index) 922 __constant_range(__index, 0, 3) { 923 __vec[__index] = *(const float *)( 924 (const char *)__ptr + __offset[__index]); 925 return __vec; 926 } 927 #endif 928 929 static inline __ATTRS_o_ai __vector double 930 vec_gather_element(__vector double __vec, 931 __vector unsigned long long __offset, 932 const double *__ptr, int __index) 933 __constant_range(__index, 0, 1) { 934 __vec[__index] = *(const double *)( 935 (const char *)__ptr + __offset[__index]); 936 return __vec; 937 } 938 939 /*-- vec_scatter_element ----------------------------------------------------*/ 940 941 static inline __ATTRS_o_ai void 942 vec_scatter_element(__vector signed int __vec, 943 __vector unsigned int __offset, 944 signed int *__ptr, int __index) 945 __constant_range(__index, 0, 3) { 946 *(signed int *)((char *)__ptr + __offset[__index]) = 947 __vec[__index]; 948 } 949 950 static inline __ATTRS_o_ai void 951 vec_scatter_element(__vector __bool int __vec, 952 __vector unsigned int __offset, 953 unsigned int *__ptr, int __index) 954 __constant_range(__index, 0, 3) { 955 *(unsigned int *)((char *)__ptr + __offset[__index]) = 956 __vec[__index]; 957 } 958 959 static inline __ATTRS_o_ai void 960 vec_scatter_element(__vector unsigned int __vec, 961 __vector unsigned int __offset, 962 unsigned int *__ptr, int __index) 963 __constant_range(__index, 0, 3) { 964 *(unsigned int *)((char *)__ptr + __offset[__index]) = 965 __vec[__index]; 966 } 967 968 static inline __ATTRS_o_ai void 969 vec_scatter_element(__vector signed long long __vec, 970 __vector unsigned long long __offset, 971 signed long long *__ptr, int __index) 972 __constant_range(__index, 0, 1) { 973 *(signed long long *)((char *)__ptr + __offset[__index]) = 974 __vec[__index]; 975 } 976 977 static inline __ATTRS_o_ai void 978 vec_scatter_element(__vector __bool long long __vec, 979 __vector unsigned long long __offset, 980 unsigned long long *__ptr, int __index) 981 __constant_range(__index, 0, 1) { 982 *(unsigned long long *)((char *)__ptr + __offset[__index]) = 983 __vec[__index]; 984 } 985 986 static inline __ATTRS_o_ai void 987 vec_scatter_element(__vector unsigned long long __vec, 988 __vector unsigned long long __offset, 989 unsigned long long *__ptr, int __index) 990 __constant_range(__index, 0, 1) { 991 *(unsigned long long *)((char *)__ptr + __offset[__index]) = 992 __vec[__index]; 993 } 994 995 #if __ARCH__ >= 12 996 static inline __ATTRS_o_ai void 997 vec_scatter_element(__vector float __vec, 998 __vector unsigned int __offset, 999 float *__ptr, int __index) 1000 __constant_range(__index, 0, 3) { 1001 *(float *)((char *)__ptr + __offset[__index]) = 1002 __vec[__index]; 1003 } 1004 #endif 1005 1006 static inline __ATTRS_o_ai void 1007 vec_scatter_element(__vector double __vec, 1008 __vector unsigned long long __offset, 1009 double *__ptr, int __index) 1010 __constant_range(__index, 0, 1) { 1011 *(double *)((char *)__ptr + __offset[__index]) = 1012 __vec[__index]; 1013 } 1014 1015 /*-- vec_xl -----------------------------------------------------------------*/ 1016 1017 static inline __ATTRS_o_ai __vector signed char 1018 vec_xl(long __offset, const signed char *__ptr) { 1019 __vector signed char V; 1020 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1021 sizeof(__vector signed char)); 1022 return V; 1023 } 1024 1025 static inline __ATTRS_o_ai __vector unsigned char 1026 vec_xl(long __offset, const unsigned char *__ptr) { 1027 __vector unsigned char V; 1028 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1029 sizeof(__vector unsigned char)); 1030 return V; 1031 } 1032 1033 static inline __ATTRS_o_ai __vector signed short 1034 vec_xl(long __offset, const signed short *__ptr) { 1035 __vector signed short V; 1036 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1037 sizeof(__vector signed short)); 1038 return V; 1039 } 1040 1041 static inline __ATTRS_o_ai __vector unsigned short 1042 vec_xl(long __offset, const unsigned short *__ptr) { 1043 __vector unsigned short V; 1044 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1045 sizeof(__vector unsigned short)); 1046 return V; 1047 } 1048 1049 static inline __ATTRS_o_ai __vector signed int 1050 vec_xl(long __offset, const signed int *__ptr) { 1051 __vector signed int V; 1052 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1053 sizeof(__vector signed int)); 1054 return V; 1055 } 1056 1057 static inline __ATTRS_o_ai __vector unsigned int 1058 vec_xl(long __offset, const unsigned int *__ptr) { 1059 __vector unsigned int V; 1060 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1061 sizeof(__vector unsigned int)); 1062 return V; 1063 } 1064 1065 static inline __ATTRS_o_ai __vector signed long long 1066 vec_xl(long __offset, const signed long long *__ptr) { 1067 __vector signed long long V; 1068 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1069 sizeof(__vector signed long long)); 1070 return V; 1071 } 1072 1073 static inline __ATTRS_o_ai __vector unsigned long long 1074 vec_xl(long __offset, const unsigned long long *__ptr) { 1075 __vector unsigned long long V; 1076 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1077 sizeof(__vector unsigned long long)); 1078 return V; 1079 } 1080 1081 #if __ARCH__ >= 12 1082 static inline __ATTRS_o_ai __vector float 1083 vec_xl(long __offset, const float *__ptr) { 1084 __vector float V; 1085 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1086 sizeof(__vector float)); 1087 return V; 1088 } 1089 #endif 1090 1091 static inline __ATTRS_o_ai __vector double 1092 vec_xl(long __offset, const double *__ptr) { 1093 __vector double V; 1094 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1095 sizeof(__vector double)); 1096 return V; 1097 } 1098 1099 /*-- vec_xld2 ---------------------------------------------------------------*/ 1100 1101 // This prototype is deprecated. 1102 static inline __ATTRS_o_ai __vector signed char 1103 vec_xld2(long __offset, const signed char *__ptr) { 1104 __vector signed char V; 1105 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1106 sizeof(__vector signed char)); 1107 return V; 1108 } 1109 1110 // This prototype is deprecated. 1111 static inline __ATTRS_o_ai __vector unsigned char 1112 vec_xld2(long __offset, const unsigned char *__ptr) { 1113 __vector unsigned char V; 1114 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1115 sizeof(__vector unsigned char)); 1116 return V; 1117 } 1118 1119 // This prototype is deprecated. 1120 static inline __ATTRS_o_ai __vector signed short 1121 vec_xld2(long __offset, const signed short *__ptr) { 1122 __vector signed short V; 1123 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1124 sizeof(__vector signed short)); 1125 return V; 1126 } 1127 1128 // This prototype is deprecated. 1129 static inline __ATTRS_o_ai __vector unsigned short 1130 vec_xld2(long __offset, const unsigned short *__ptr) { 1131 __vector unsigned short V; 1132 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1133 sizeof(__vector unsigned short)); 1134 return V; 1135 } 1136 1137 // This prototype is deprecated. 1138 static inline __ATTRS_o_ai __vector signed int 1139 vec_xld2(long __offset, const signed int *__ptr) { 1140 __vector signed int V; 1141 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1142 sizeof(__vector signed int)); 1143 return V; 1144 } 1145 1146 // This prototype is deprecated. 1147 static inline __ATTRS_o_ai __vector unsigned int 1148 vec_xld2(long __offset, const unsigned int *__ptr) { 1149 __vector unsigned int V; 1150 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1151 sizeof(__vector unsigned int)); 1152 return V; 1153 } 1154 1155 // This prototype is deprecated. 1156 static inline __ATTRS_o_ai __vector signed long long 1157 vec_xld2(long __offset, const signed long long *__ptr) { 1158 __vector signed long long V; 1159 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1160 sizeof(__vector signed long long)); 1161 return V; 1162 } 1163 1164 // This prototype is deprecated. 1165 static inline __ATTRS_o_ai __vector unsigned long long 1166 vec_xld2(long __offset, const unsigned long long *__ptr) { 1167 __vector unsigned long long V; 1168 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1169 sizeof(__vector unsigned long long)); 1170 return V; 1171 } 1172 1173 // This prototype is deprecated. 1174 static inline __ATTRS_o_ai __vector double 1175 vec_xld2(long __offset, const double *__ptr) { 1176 __vector double V; 1177 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1178 sizeof(__vector double)); 1179 return V; 1180 } 1181 1182 /*-- vec_xlw4 ---------------------------------------------------------------*/ 1183 1184 // This prototype is deprecated. 1185 static inline __ATTRS_o_ai __vector signed char 1186 vec_xlw4(long __offset, const signed char *__ptr) { 1187 __vector signed char V; 1188 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1189 sizeof(__vector signed char)); 1190 return V; 1191 } 1192 1193 // This prototype is deprecated. 1194 static inline __ATTRS_o_ai __vector unsigned char 1195 vec_xlw4(long __offset, const unsigned char *__ptr) { 1196 __vector unsigned char V; 1197 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1198 sizeof(__vector unsigned char)); 1199 return V; 1200 } 1201 1202 // This prototype is deprecated. 1203 static inline __ATTRS_o_ai __vector signed short 1204 vec_xlw4(long __offset, const signed short *__ptr) { 1205 __vector signed short V; 1206 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1207 sizeof(__vector signed short)); 1208 return V; 1209 } 1210 1211 // This prototype is deprecated. 1212 static inline __ATTRS_o_ai __vector unsigned short 1213 vec_xlw4(long __offset, const unsigned short *__ptr) { 1214 __vector unsigned short V; 1215 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1216 sizeof(__vector unsigned short)); 1217 return V; 1218 } 1219 1220 // This prototype is deprecated. 1221 static inline __ATTRS_o_ai __vector signed int 1222 vec_xlw4(long __offset, const signed int *__ptr) { 1223 __vector signed int V; 1224 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1225 sizeof(__vector signed int)); 1226 return V; 1227 } 1228 1229 // This prototype is deprecated. 1230 static inline __ATTRS_o_ai __vector unsigned int 1231 vec_xlw4(long __offset, const unsigned int *__ptr) { 1232 __vector unsigned int V; 1233 __builtin_memcpy(&V, ((const char *)__ptr + __offset), 1234 sizeof(__vector unsigned int)); 1235 return V; 1236 } 1237 1238 /*-- vec_xst ----------------------------------------------------------------*/ 1239 1240 static inline __ATTRS_o_ai void 1241 vec_xst(__vector signed char __vec, long __offset, signed char *__ptr) { 1242 __vector signed char V = __vec; 1243 __builtin_memcpy(((char *)__ptr + __offset), &V, 1244 sizeof(__vector signed char)); 1245 } 1246 1247 static inline __ATTRS_o_ai void 1248 vec_xst(__vector unsigned char __vec, long __offset, unsigned char *__ptr) { 1249 __vector unsigned char V = __vec; 1250 __builtin_memcpy(((char *)__ptr + __offset), &V, 1251 sizeof(__vector unsigned char)); 1252 } 1253 1254 static inline __ATTRS_o_ai void 1255 vec_xst(__vector signed short __vec, long __offset, signed short *__ptr) { 1256 __vector signed short V = __vec; 1257 __builtin_memcpy(((char *)__ptr + __offset), &V, 1258 sizeof(__vector signed short)); 1259 } 1260 1261 static inline __ATTRS_o_ai void 1262 vec_xst(__vector unsigned short __vec, long __offset, unsigned short *__ptr) { 1263 __vector unsigned short V = __vec; 1264 __builtin_memcpy(((char *)__ptr + __offset), &V, 1265 sizeof(__vector unsigned short)); 1266 } 1267 1268 static inline __ATTRS_o_ai void 1269 vec_xst(__vector signed int __vec, long __offset, signed int *__ptr) { 1270 __vector signed int V = __vec; 1271 __builtin_memcpy(((char *)__ptr + __offset), &V, sizeof(__vector signed int)); 1272 } 1273 1274 static inline __ATTRS_o_ai void 1275 vec_xst(__vector unsigned int __vec, long __offset, unsigned int *__ptr) { 1276 __vector unsigned int V = __vec; 1277 __builtin_memcpy(((char *)__ptr + __offset), &V, 1278 sizeof(__vector unsigned int)); 1279 } 1280 1281 static inline __ATTRS_o_ai void 1282 vec_xst(__vector signed long long __vec, long __offset, 1283 signed long long *__ptr) { 1284 __vector signed long long V = __vec; 1285 __builtin_memcpy(((char *)__ptr + __offset), &V, 1286 sizeof(__vector signed long long)); 1287 } 1288 1289 static inline __ATTRS_o_ai void 1290 vec_xst(__vector unsigned long long __vec, long __offset, 1291 unsigned long long *__ptr) { 1292 __vector unsigned long long V = __vec; 1293 __builtin_memcpy(((char *)__ptr + __offset), &V, 1294 sizeof(__vector unsigned long long)); 1295 } 1296 1297 #if __ARCH__ >= 12 1298 static inline __ATTRS_o_ai void 1299 vec_xst(__vector float __vec, long __offset, float *__ptr) { 1300 __vector float V = __vec; 1301 __builtin_memcpy(((char *)__ptr + __offset), &V, sizeof(__vector float)); 1302 } 1303 #endif 1304 1305 static inline __ATTRS_o_ai void 1306 vec_xst(__vector double __vec, long __offset, double *__ptr) { 1307 __vector double V = __vec; 1308 __builtin_memcpy(((char *)__ptr + __offset), &V, sizeof(__vector double)); 1309 } 1310 1311 /*-- vec_xstd2 --------------------------------------------------------------*/ 1312 1313 // This prototype is deprecated. 1314 static inline __ATTRS_o_ai void 1315 vec_xstd2(__vector signed char __vec, long __offset, signed char *__ptr) { 1316 __vector signed char V = __vec; 1317 __builtin_memcpy(((char *)__ptr + __offset), &V, 1318 sizeof(__vector signed char)); 1319 } 1320 1321 // This prototype is deprecated. 1322 static inline __ATTRS_o_ai void 1323 vec_xstd2(__vector unsigned char __vec, long __offset, unsigned char *__ptr) { 1324 __vector unsigned char V = __vec; 1325 __builtin_memcpy(((char *)__ptr + __offset), &V, 1326 sizeof(__vector unsigned char)); 1327 } 1328 1329 // This prototype is deprecated. 1330 static inline __ATTRS_o_ai void 1331 vec_xstd2(__vector signed short __vec, long __offset, signed short *__ptr) { 1332 __vector signed short V = __vec; 1333 __builtin_memcpy(((char *)__ptr + __offset), &V, 1334 sizeof(__vector signed short)); 1335 } 1336 1337 // This prototype is deprecated. 1338 static inline __ATTRS_o_ai void 1339 vec_xstd2(__vector unsigned short __vec, long __offset, unsigned short *__ptr) { 1340 __vector unsigned short V = __vec; 1341 __builtin_memcpy(((char *)__ptr + __offset), &V, 1342 sizeof(__vector unsigned short)); 1343 } 1344 1345 // This prototype is deprecated. 1346 static inline __ATTRS_o_ai void 1347 vec_xstd2(__vector signed int __vec, long __offset, signed int *__ptr) { 1348 __vector signed int V = __vec; 1349 __builtin_memcpy(((char *)__ptr + __offset), &V, sizeof(__vector signed int)); 1350 } 1351 1352 // This prototype is deprecated. 1353 static inline __ATTRS_o_ai void 1354 vec_xstd2(__vector unsigned int __vec, long __offset, unsigned int *__ptr) { 1355 __vector unsigned int V = __vec; 1356 __builtin_memcpy(((char *)__ptr + __offset), &V, 1357 sizeof(__vector unsigned int)); 1358 } 1359 1360 // This prototype is deprecated. 1361 static inline __ATTRS_o_ai void 1362 vec_xstd2(__vector signed long long __vec, long __offset, 1363 signed long long *__ptr) { 1364 __vector signed long long V = __vec; 1365 __builtin_memcpy(((char *)__ptr + __offset), &V, 1366 sizeof(__vector signed long long)); 1367 } 1368 1369 // This prototype is deprecated. 1370 static inline __ATTRS_o_ai void 1371 vec_xstd2(__vector unsigned long long __vec, long __offset, 1372 unsigned long long *__ptr) { 1373 __vector unsigned long long V = __vec; 1374 __builtin_memcpy(((char *)__ptr + __offset), &V, 1375 sizeof(__vector unsigned long long)); 1376 } 1377 1378 // This prototype is deprecated. 1379 static inline __ATTRS_o_ai void 1380 vec_xstd2(__vector double __vec, long __offset, double *__ptr) { 1381 __vector double V = __vec; 1382 __builtin_memcpy(((char *)__ptr + __offset), &V, sizeof(__vector double)); 1383 } 1384 1385 /*-- vec_xstw4 --------------------------------------------------------------*/ 1386 1387 // This prototype is deprecated. 1388 static inline __ATTRS_o_ai void 1389 vec_xstw4(__vector signed char __vec, long __offset, signed char *__ptr) { 1390 __vector signed char V = __vec; 1391 __builtin_memcpy(((char *)__ptr + __offset), &V, 1392 sizeof(__vector signed char)); 1393 } 1394 1395 // This prototype is deprecated. 1396 static inline __ATTRS_o_ai void 1397 vec_xstw4(__vector unsigned char __vec, long __offset, unsigned char *__ptr) { 1398 __vector unsigned char V = __vec; 1399 __builtin_memcpy(((char *)__ptr + __offset), &V, 1400 sizeof(__vector unsigned char)); 1401 } 1402 1403 // This prototype is deprecated. 1404 static inline __ATTRS_o_ai void 1405 vec_xstw4(__vector signed short __vec, long __offset, signed short *__ptr) { 1406 __vector signed short V = __vec; 1407 __builtin_memcpy(((char *)__ptr + __offset), &V, 1408 sizeof(__vector signed short)); 1409 } 1410 1411 // This prototype is deprecated. 1412 static inline __ATTRS_o_ai void 1413 vec_xstw4(__vector unsigned short __vec, long __offset, unsigned short *__ptr) { 1414 __vector unsigned short V = __vec; 1415 __builtin_memcpy(((char *)__ptr + __offset), &V, 1416 sizeof(__vector unsigned short)); 1417 } 1418 1419 // This prototype is deprecated. 1420 static inline __ATTRS_o_ai void 1421 vec_xstw4(__vector signed int __vec, long __offset, signed int *__ptr) { 1422 __vector signed int V = __vec; 1423 __builtin_memcpy(((char *)__ptr + __offset), &V, sizeof(__vector signed int)); 1424 } 1425 1426 // This prototype is deprecated. 1427 static inline __ATTRS_o_ai void 1428 vec_xstw4(__vector unsigned int __vec, long __offset, unsigned int *__ptr) { 1429 __vector unsigned int V = __vec; 1430 __builtin_memcpy(((char *)__ptr + __offset), &V, 1431 sizeof(__vector unsigned int)); 1432 } 1433 1434 /*-- vec_load_bndry ---------------------------------------------------------*/ 1435 1436 extern __ATTRS_o __vector signed char 1437 vec_load_bndry(const signed char *__ptr, unsigned short __len) 1438 __constant_pow2_range(__len, 64, 4096); 1439 1440 extern __ATTRS_o __vector unsigned char 1441 vec_load_bndry(const unsigned char *__ptr, unsigned short __len) 1442 __constant_pow2_range(__len, 64, 4096); 1443 1444 extern __ATTRS_o __vector signed short 1445 vec_load_bndry(const signed short *__ptr, unsigned short __len) 1446 __constant_pow2_range(__len, 64, 4096); 1447 1448 extern __ATTRS_o __vector unsigned short 1449 vec_load_bndry(const unsigned short *__ptr, unsigned short __len) 1450 __constant_pow2_range(__len, 64, 4096); 1451 1452 extern __ATTRS_o __vector signed int 1453 vec_load_bndry(const signed int *__ptr, unsigned short __len) 1454 __constant_pow2_range(__len, 64, 4096); 1455 1456 extern __ATTRS_o __vector unsigned int 1457 vec_load_bndry(const unsigned int *__ptr, unsigned short __len) 1458 __constant_pow2_range(__len, 64, 4096); 1459 1460 extern __ATTRS_o __vector signed long long 1461 vec_load_bndry(const signed long long *__ptr, unsigned short __len) 1462 __constant_pow2_range(__len, 64, 4096); 1463 1464 extern __ATTRS_o __vector unsigned long long 1465 vec_load_bndry(const unsigned long long *__ptr, unsigned short __len) 1466 __constant_pow2_range(__len, 64, 4096); 1467 1468 #if __ARCH__ >= 12 1469 extern __ATTRS_o __vector float 1470 vec_load_bndry(const float *__ptr, unsigned short __len) 1471 __constant_pow2_range(__len, 64, 4096); 1472 #endif 1473 1474 extern __ATTRS_o __vector double 1475 vec_load_bndry(const double *__ptr, unsigned short __len) 1476 __constant_pow2_range(__len, 64, 4096); 1477 1478 #define vec_load_bndry(X, Y) ((__typeof__((vec_load_bndry)((X), (Y)))) \ 1479 __builtin_s390_vlbb((X), ((Y) == 64 ? 0 : \ 1480 (Y) == 128 ? 1 : \ 1481 (Y) == 256 ? 2 : \ 1482 (Y) == 512 ? 3 : \ 1483 (Y) == 1024 ? 4 : \ 1484 (Y) == 2048 ? 5 : \ 1485 (Y) == 4096 ? 6 : -1))) 1486 1487 /*-- vec_load_len -----------------------------------------------------------*/ 1488 1489 static inline __ATTRS_o_ai __vector signed char 1490 vec_load_len(const signed char *__ptr, unsigned int __len) { 1491 return (__vector signed char)__builtin_s390_vll(__len, __ptr); 1492 } 1493 1494 static inline __ATTRS_o_ai __vector unsigned char 1495 vec_load_len(const unsigned char *__ptr, unsigned int __len) { 1496 return (__vector unsigned char)__builtin_s390_vll(__len, __ptr); 1497 } 1498 1499 static inline __ATTRS_o_ai __vector signed short 1500 vec_load_len(const signed short *__ptr, unsigned int __len) { 1501 return (__vector signed short)__builtin_s390_vll(__len, __ptr); 1502 } 1503 1504 static inline __ATTRS_o_ai __vector unsigned short 1505 vec_load_len(const unsigned short *__ptr, unsigned int __len) { 1506 return (__vector unsigned short)__builtin_s390_vll(__len, __ptr); 1507 } 1508 1509 static inline __ATTRS_o_ai __vector signed int 1510 vec_load_len(const signed int *__ptr, unsigned int __len) { 1511 return (__vector signed int)__builtin_s390_vll(__len, __ptr); 1512 } 1513 1514 static inline __ATTRS_o_ai __vector unsigned int 1515 vec_load_len(const unsigned int *__ptr, unsigned int __len) { 1516 return (__vector unsigned int)__builtin_s390_vll(__len, __ptr); 1517 } 1518 1519 static inline __ATTRS_o_ai __vector signed long long 1520 vec_load_len(const signed long long *__ptr, unsigned int __len) { 1521 return (__vector signed long long)__builtin_s390_vll(__len, __ptr); 1522 } 1523 1524 static inline __ATTRS_o_ai __vector unsigned long long 1525 vec_load_len(const unsigned long long *__ptr, unsigned int __len) { 1526 return (__vector unsigned long long)__builtin_s390_vll(__len, __ptr); 1527 } 1528 1529 #if __ARCH__ >= 12 1530 static inline __ATTRS_o_ai __vector float 1531 vec_load_len(const float *__ptr, unsigned int __len) { 1532 return (__vector float)__builtin_s390_vll(__len, __ptr); 1533 } 1534 #endif 1535 1536 static inline __ATTRS_o_ai __vector double 1537 vec_load_len(const double *__ptr, unsigned int __len) { 1538 return (__vector double)__builtin_s390_vll(__len, __ptr); 1539 } 1540 1541 /*-- vec_load_len_r ---------------------------------------------------------*/ 1542 1543 #if __ARCH__ >= 12 1544 static inline __ATTRS_ai __vector unsigned char 1545 vec_load_len_r(const unsigned char *__ptr, unsigned int __len) { 1546 return (__vector unsigned char)__builtin_s390_vlrl(__len, __ptr); 1547 } 1548 #endif 1549 1550 /*-- vec_store_len ----------------------------------------------------------*/ 1551 1552 static inline __ATTRS_o_ai void 1553 vec_store_len(__vector signed char __vec, signed char *__ptr, 1554 unsigned int __len) { 1555 __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); 1556 } 1557 1558 static inline __ATTRS_o_ai void 1559 vec_store_len(__vector unsigned char __vec, unsigned char *__ptr, 1560 unsigned int __len) { 1561 __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); 1562 } 1563 1564 static inline __ATTRS_o_ai void 1565 vec_store_len(__vector signed short __vec, signed short *__ptr, 1566 unsigned int __len) { 1567 __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); 1568 } 1569 1570 static inline __ATTRS_o_ai void 1571 vec_store_len(__vector unsigned short __vec, unsigned short *__ptr, 1572 unsigned int __len) { 1573 __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); 1574 } 1575 1576 static inline __ATTRS_o_ai void 1577 vec_store_len(__vector signed int __vec, signed int *__ptr, 1578 unsigned int __len) { 1579 __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); 1580 } 1581 1582 static inline __ATTRS_o_ai void 1583 vec_store_len(__vector unsigned int __vec, unsigned int *__ptr, 1584 unsigned int __len) { 1585 __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); 1586 } 1587 1588 static inline __ATTRS_o_ai void 1589 vec_store_len(__vector signed long long __vec, signed long long *__ptr, 1590 unsigned int __len) { 1591 __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); 1592 } 1593 1594 static inline __ATTRS_o_ai void 1595 vec_store_len(__vector unsigned long long __vec, unsigned long long *__ptr, 1596 unsigned int __len) { 1597 __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); 1598 } 1599 1600 #if __ARCH__ >= 12 1601 static inline __ATTRS_o_ai void 1602 vec_store_len(__vector float __vec, float *__ptr, 1603 unsigned int __len) { 1604 __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); 1605 } 1606 #endif 1607 1608 static inline __ATTRS_o_ai void 1609 vec_store_len(__vector double __vec, double *__ptr, 1610 unsigned int __len) { 1611 __builtin_s390_vstl((__vector signed char)__vec, __len, __ptr); 1612 } 1613 1614 /*-- vec_store_len_r --------------------------------------------------------*/ 1615 1616 #if __ARCH__ >= 12 1617 static inline __ATTRS_ai void 1618 vec_store_len_r(__vector unsigned char __vec, unsigned char *__ptr, 1619 unsigned int __len) { 1620 __builtin_s390_vstrl((__vector signed char)__vec, __len, __ptr); 1621 } 1622 #endif 1623 1624 /*-- vec_load_pair ----------------------------------------------------------*/ 1625 1626 static inline __ATTRS_o_ai __vector signed long long 1627 vec_load_pair(signed long long __a, signed long long __b) { 1628 return (__vector signed long long)(__a, __b); 1629 } 1630 1631 static inline __ATTRS_o_ai __vector unsigned long long 1632 vec_load_pair(unsigned long long __a, unsigned long long __b) { 1633 return (__vector unsigned long long)(__a, __b); 1634 } 1635 1636 /*-- vec_genmask ------------------------------------------------------------*/ 1637 1638 static inline __ATTRS_o_ai __vector unsigned char 1639 vec_genmask(unsigned short __mask) 1640 __constant(__mask) { 1641 return (__vector unsigned char)( 1642 __mask & 0x8000 ? 0xff : 0, 1643 __mask & 0x4000 ? 0xff : 0, 1644 __mask & 0x2000 ? 0xff : 0, 1645 __mask & 0x1000 ? 0xff : 0, 1646 __mask & 0x0800 ? 0xff : 0, 1647 __mask & 0x0400 ? 0xff : 0, 1648 __mask & 0x0200 ? 0xff : 0, 1649 __mask & 0x0100 ? 0xff : 0, 1650 __mask & 0x0080 ? 0xff : 0, 1651 __mask & 0x0040 ? 0xff : 0, 1652 __mask & 0x0020 ? 0xff : 0, 1653 __mask & 0x0010 ? 0xff : 0, 1654 __mask & 0x0008 ? 0xff : 0, 1655 __mask & 0x0004 ? 0xff : 0, 1656 __mask & 0x0002 ? 0xff : 0, 1657 __mask & 0x0001 ? 0xff : 0); 1658 } 1659 1660 /*-- vec_genmasks_* ---------------------------------------------------------*/ 1661 1662 static inline __ATTRS_o_ai __vector unsigned char 1663 vec_genmasks_8(unsigned char __first, unsigned char __last) 1664 __constant(__first) __constant(__last) { 1665 unsigned char __bit1 = __first & 7; 1666 unsigned char __bit2 = __last & 7; 1667 unsigned char __mask1 = (unsigned char)(1U << (7 - __bit1) << 1) - 1; 1668 unsigned char __mask2 = (unsigned char)(1U << (7 - __bit2)) - 1; 1669 unsigned char __value = (__bit1 <= __bit2 ? 1670 __mask1 & ~__mask2 : 1671 __mask1 | ~__mask2); 1672 return (__vector unsigned char)__value; 1673 } 1674 1675 static inline __ATTRS_o_ai __vector unsigned short 1676 vec_genmasks_16(unsigned char __first, unsigned char __last) 1677 __constant(__first) __constant(__last) { 1678 unsigned char __bit1 = __first & 15; 1679 unsigned char __bit2 = __last & 15; 1680 unsigned short __mask1 = (unsigned short)(1U << (15 - __bit1) << 1) - 1; 1681 unsigned short __mask2 = (unsigned short)(1U << (15 - __bit2)) - 1; 1682 unsigned short __value = (__bit1 <= __bit2 ? 1683 __mask1 & ~__mask2 : 1684 __mask1 | ~__mask2); 1685 return (__vector unsigned short)__value; 1686 } 1687 1688 static inline __ATTRS_o_ai __vector unsigned int 1689 vec_genmasks_32(unsigned char __first, unsigned char __last) 1690 __constant(__first) __constant(__last) { 1691 unsigned char __bit1 = __first & 31; 1692 unsigned char __bit2 = __last & 31; 1693 unsigned int __mask1 = (1U << (31 - __bit1) << 1) - 1; 1694 unsigned int __mask2 = (1U << (31 - __bit2)) - 1; 1695 unsigned int __value = (__bit1 <= __bit2 ? 1696 __mask1 & ~__mask2 : 1697 __mask1 | ~__mask2); 1698 return (__vector unsigned int)__value; 1699 } 1700 1701 static inline __ATTRS_o_ai __vector unsigned long long 1702 vec_genmasks_64(unsigned char __first, unsigned char __last) 1703 __constant(__first) __constant(__last) { 1704 unsigned char __bit1 = __first & 63; 1705 unsigned char __bit2 = __last & 63; 1706 unsigned long long __mask1 = (1ULL << (63 - __bit1) << 1) - 1; 1707 unsigned long long __mask2 = (1ULL << (63 - __bit2)) - 1; 1708 unsigned long long __value = (__bit1 <= __bit2 ? 1709 __mask1 & ~__mask2 : 1710 __mask1 | ~__mask2); 1711 return (__vector unsigned long long)__value; 1712 } 1713 1714 /*-- vec_splat --------------------------------------------------------------*/ 1715 1716 static inline __ATTRS_o_ai __vector signed char 1717 vec_splat(__vector signed char __vec, int __index) 1718 __constant_range(__index, 0, 15) { 1719 return (__vector signed char)__vec[__index]; 1720 } 1721 1722 static inline __ATTRS_o_ai __vector __bool char 1723 vec_splat(__vector __bool char __vec, int __index) 1724 __constant_range(__index, 0, 15) { 1725 return (__vector __bool char)(__vector unsigned char)__vec[__index]; 1726 } 1727 1728 static inline __ATTRS_o_ai __vector unsigned char 1729 vec_splat(__vector unsigned char __vec, int __index) 1730 __constant_range(__index, 0, 15) { 1731 return (__vector unsigned char)__vec[__index]; 1732 } 1733 1734 static inline __ATTRS_o_ai __vector signed short 1735 vec_splat(__vector signed short __vec, int __index) 1736 __constant_range(__index, 0, 7) { 1737 return (__vector signed short)__vec[__index]; 1738 } 1739 1740 static inline __ATTRS_o_ai __vector __bool short 1741 vec_splat(__vector __bool short __vec, int __index) 1742 __constant_range(__index, 0, 7) { 1743 return (__vector __bool short)(__vector unsigned short)__vec[__index]; 1744 } 1745 1746 static inline __ATTRS_o_ai __vector unsigned short 1747 vec_splat(__vector unsigned short __vec, int __index) 1748 __constant_range(__index, 0, 7) { 1749 return (__vector unsigned short)__vec[__index]; 1750 } 1751 1752 static inline __ATTRS_o_ai __vector signed int 1753 vec_splat(__vector signed int __vec, int __index) 1754 __constant_range(__index, 0, 3) { 1755 return (__vector signed int)__vec[__index]; 1756 } 1757 1758 static inline __ATTRS_o_ai __vector __bool int 1759 vec_splat(__vector __bool int __vec, int __index) 1760 __constant_range(__index, 0, 3) { 1761 return (__vector __bool int)(__vector unsigned int)__vec[__index]; 1762 } 1763 1764 static inline __ATTRS_o_ai __vector unsigned int 1765 vec_splat(__vector unsigned int __vec, int __index) 1766 __constant_range(__index, 0, 3) { 1767 return (__vector unsigned int)__vec[__index]; 1768 } 1769 1770 static inline __ATTRS_o_ai __vector signed long long 1771 vec_splat(__vector signed long long __vec, int __index) 1772 __constant_range(__index, 0, 1) { 1773 return (__vector signed long long)__vec[__index]; 1774 } 1775 1776 static inline __ATTRS_o_ai __vector __bool long long 1777 vec_splat(__vector __bool long long __vec, int __index) 1778 __constant_range(__index, 0, 1) { 1779 return ((__vector __bool long long) 1780 (__vector unsigned long long)__vec[__index]); 1781 } 1782 1783 static inline __ATTRS_o_ai __vector unsigned long long 1784 vec_splat(__vector unsigned long long __vec, int __index) 1785 __constant_range(__index, 0, 1) { 1786 return (__vector unsigned long long)__vec[__index]; 1787 } 1788 1789 #if __ARCH__ >= 12 1790 static inline __ATTRS_o_ai __vector float 1791 vec_splat(__vector float __vec, int __index) 1792 __constant_range(__index, 0, 3) { 1793 return (__vector float)__vec[__index]; 1794 } 1795 #endif 1796 1797 static inline __ATTRS_o_ai __vector double 1798 vec_splat(__vector double __vec, int __index) 1799 __constant_range(__index, 0, 1) { 1800 return (__vector double)__vec[__index]; 1801 } 1802 1803 /*-- vec_splat_s* -----------------------------------------------------------*/ 1804 1805 static inline __ATTRS_ai __vector signed char 1806 vec_splat_s8(signed char __scalar) 1807 __constant(__scalar) { 1808 return (__vector signed char)__scalar; 1809 } 1810 1811 static inline __ATTRS_ai __vector signed short 1812 vec_splat_s16(signed short __scalar) 1813 __constant(__scalar) { 1814 return (__vector signed short)__scalar; 1815 } 1816 1817 static inline __ATTRS_ai __vector signed int 1818 vec_splat_s32(signed short __scalar) 1819 __constant(__scalar) { 1820 return (__vector signed int)(signed int)__scalar; 1821 } 1822 1823 static inline __ATTRS_ai __vector signed long long 1824 vec_splat_s64(signed short __scalar) 1825 __constant(__scalar) { 1826 return (__vector signed long long)(signed long)__scalar; 1827 } 1828 1829 /*-- vec_splat_u* -----------------------------------------------------------*/ 1830 1831 static inline __ATTRS_ai __vector unsigned char 1832 vec_splat_u8(unsigned char __scalar) 1833 __constant(__scalar) { 1834 return (__vector unsigned char)__scalar; 1835 } 1836 1837 static inline __ATTRS_ai __vector unsigned short 1838 vec_splat_u16(unsigned short __scalar) 1839 __constant(__scalar) { 1840 return (__vector unsigned short)__scalar; 1841 } 1842 1843 static inline __ATTRS_ai __vector unsigned int 1844 vec_splat_u32(signed short __scalar) 1845 __constant(__scalar) { 1846 return (__vector unsigned int)(signed int)__scalar; 1847 } 1848 1849 static inline __ATTRS_ai __vector unsigned long long 1850 vec_splat_u64(signed short __scalar) 1851 __constant(__scalar) { 1852 return (__vector unsigned long long)(signed long long)__scalar; 1853 } 1854 1855 /*-- vec_splats -------------------------------------------------------------*/ 1856 1857 static inline __ATTRS_o_ai __vector signed char 1858 vec_splats(signed char __scalar) { 1859 return (__vector signed char)__scalar; 1860 } 1861 1862 static inline __ATTRS_o_ai __vector unsigned char 1863 vec_splats(unsigned char __scalar) { 1864 return (__vector unsigned char)__scalar; 1865 } 1866 1867 static inline __ATTRS_o_ai __vector signed short 1868 vec_splats(signed short __scalar) { 1869 return (__vector signed short)__scalar; 1870 } 1871 1872 static inline __ATTRS_o_ai __vector unsigned short 1873 vec_splats(unsigned short __scalar) { 1874 return (__vector unsigned short)__scalar; 1875 } 1876 1877 static inline __ATTRS_o_ai __vector signed int 1878 vec_splats(signed int __scalar) { 1879 return (__vector signed int)__scalar; 1880 } 1881 1882 static inline __ATTRS_o_ai __vector unsigned int 1883 vec_splats(unsigned int __scalar) { 1884 return (__vector unsigned int)__scalar; 1885 } 1886 1887 static inline __ATTRS_o_ai __vector signed long long 1888 vec_splats(signed long long __scalar) { 1889 return (__vector signed long long)__scalar; 1890 } 1891 1892 static inline __ATTRS_o_ai __vector unsigned long long 1893 vec_splats(unsigned long long __scalar) { 1894 return (__vector unsigned long long)__scalar; 1895 } 1896 1897 #if __ARCH__ >= 12 1898 static inline __ATTRS_o_ai __vector float 1899 vec_splats(float __scalar) { 1900 return (__vector float)__scalar; 1901 } 1902 #endif 1903 1904 static inline __ATTRS_o_ai __vector double 1905 vec_splats(double __scalar) { 1906 return (__vector double)__scalar; 1907 } 1908 1909 /*-- vec_extend_s64 ---------------------------------------------------------*/ 1910 1911 static inline __ATTRS_o_ai __vector signed long long 1912 vec_extend_s64(__vector signed char __a) { 1913 return (__vector signed long long)(__a[7], __a[15]); 1914 } 1915 1916 static inline __ATTRS_o_ai __vector signed long long 1917 vec_extend_s64(__vector signed short __a) { 1918 return (__vector signed long long)(__a[3], __a[7]); 1919 } 1920 1921 static inline __ATTRS_o_ai __vector signed long long 1922 vec_extend_s64(__vector signed int __a) { 1923 return (__vector signed long long)(__a[1], __a[3]); 1924 } 1925 1926 /*-- vec_mergeh -------------------------------------------------------------*/ 1927 1928 static inline __ATTRS_o_ai __vector signed char 1929 vec_mergeh(__vector signed char __a, __vector signed char __b) { 1930 return (__vector signed char)( 1931 __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3], 1932 __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]); 1933 } 1934 1935 static inline __ATTRS_o_ai __vector __bool char 1936 vec_mergeh(__vector __bool char __a, __vector __bool char __b) { 1937 return (__vector __bool char)( 1938 __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3], 1939 __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]); 1940 } 1941 1942 static inline __ATTRS_o_ai __vector unsigned char 1943 vec_mergeh(__vector unsigned char __a, __vector unsigned char __b) { 1944 return (__vector unsigned char)( 1945 __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3], 1946 __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]); 1947 } 1948 1949 static inline __ATTRS_o_ai __vector signed short 1950 vec_mergeh(__vector signed short __a, __vector signed short __b) { 1951 return (__vector signed short)( 1952 __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3]); 1953 } 1954 1955 static inline __ATTRS_o_ai __vector __bool short 1956 vec_mergeh(__vector __bool short __a, __vector __bool short __b) { 1957 return (__vector __bool short)( 1958 __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3]); 1959 } 1960 1961 static inline __ATTRS_o_ai __vector unsigned short 1962 vec_mergeh(__vector unsigned short __a, __vector unsigned short __b) { 1963 return (__vector unsigned short)( 1964 __a[0], __b[0], __a[1], __b[1], __a[2], __b[2], __a[3], __b[3]); 1965 } 1966 1967 static inline __ATTRS_o_ai __vector signed int 1968 vec_mergeh(__vector signed int __a, __vector signed int __b) { 1969 return (__vector signed int)(__a[0], __b[0], __a[1], __b[1]); 1970 } 1971 1972 static inline __ATTRS_o_ai __vector __bool int 1973 vec_mergeh(__vector __bool int __a, __vector __bool int __b) { 1974 return (__vector __bool int)(__a[0], __b[0], __a[1], __b[1]); 1975 } 1976 1977 static inline __ATTRS_o_ai __vector unsigned int 1978 vec_mergeh(__vector unsigned int __a, __vector unsigned int __b) { 1979 return (__vector unsigned int)(__a[0], __b[0], __a[1], __b[1]); 1980 } 1981 1982 static inline __ATTRS_o_ai __vector signed long long 1983 vec_mergeh(__vector signed long long __a, __vector signed long long __b) { 1984 return (__vector signed long long)(__a[0], __b[0]); 1985 } 1986 1987 static inline __ATTRS_o_ai __vector __bool long long 1988 vec_mergeh(__vector __bool long long __a, __vector __bool long long __b) { 1989 return (__vector __bool long long)(__a[0], __b[0]); 1990 } 1991 1992 static inline __ATTRS_o_ai __vector unsigned long long 1993 vec_mergeh(__vector unsigned long long __a, __vector unsigned long long __b) { 1994 return (__vector unsigned long long)(__a[0], __b[0]); 1995 } 1996 1997 #if __ARCH__ >= 12 1998 static inline __ATTRS_o_ai __vector float 1999 vec_mergeh(__vector float __a, __vector float __b) { 2000 return (__vector float)(__a[0], __b[0], __a[1], __b[1]); 2001 } 2002 #endif 2003 2004 static inline __ATTRS_o_ai __vector double 2005 vec_mergeh(__vector double __a, __vector double __b) { 2006 return (__vector double)(__a[0], __b[0]); 2007 } 2008 2009 /*-- vec_mergel -------------------------------------------------------------*/ 2010 2011 static inline __ATTRS_o_ai __vector signed char 2012 vec_mergel(__vector signed char __a, __vector signed char __b) { 2013 return (__vector signed char)( 2014 __a[8], __b[8], __a[9], __b[9], __a[10], __b[10], __a[11], __b[11], 2015 __a[12], __b[12], __a[13], __b[13], __a[14], __b[14], __a[15], __b[15]); 2016 } 2017 2018 static inline __ATTRS_o_ai __vector __bool char 2019 vec_mergel(__vector __bool char __a, __vector __bool char __b) { 2020 return (__vector __bool char)( 2021 __a[8], __b[8], __a[9], __b[9], __a[10], __b[10], __a[11], __b[11], 2022 __a[12], __b[12], __a[13], __b[13], __a[14], __b[14], __a[15], __b[15]); 2023 } 2024 2025 static inline __ATTRS_o_ai __vector unsigned char 2026 vec_mergel(__vector unsigned char __a, __vector unsigned char __b) { 2027 return (__vector unsigned char)( 2028 __a[8], __b[8], __a[9], __b[9], __a[10], __b[10], __a[11], __b[11], 2029 __a[12], __b[12], __a[13], __b[13], __a[14], __b[14], __a[15], __b[15]); 2030 } 2031 2032 static inline __ATTRS_o_ai __vector signed short 2033 vec_mergel(__vector signed short __a, __vector signed short __b) { 2034 return (__vector signed short)( 2035 __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]); 2036 } 2037 2038 static inline __ATTRS_o_ai __vector __bool short 2039 vec_mergel(__vector __bool short __a, __vector __bool short __b) { 2040 return (__vector __bool short)( 2041 __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]); 2042 } 2043 2044 static inline __ATTRS_o_ai __vector unsigned short 2045 vec_mergel(__vector unsigned short __a, __vector unsigned short __b) { 2046 return (__vector unsigned short)( 2047 __a[4], __b[4], __a[5], __b[5], __a[6], __b[6], __a[7], __b[7]); 2048 } 2049 2050 static inline __ATTRS_o_ai __vector signed int 2051 vec_mergel(__vector signed int __a, __vector signed int __b) { 2052 return (__vector signed int)(__a[2], __b[2], __a[3], __b[3]); 2053 } 2054 2055 static inline __ATTRS_o_ai __vector __bool int 2056 vec_mergel(__vector __bool int __a, __vector __bool int __b) { 2057 return (__vector __bool int)(__a[2], __b[2], __a[3], __b[3]); 2058 } 2059 2060 static inline __ATTRS_o_ai __vector unsigned int 2061 vec_mergel(__vector unsigned int __a, __vector unsigned int __b) { 2062 return (__vector unsigned int)(__a[2], __b[2], __a[3], __b[3]); 2063 } 2064 2065 static inline __ATTRS_o_ai __vector signed long long 2066 vec_mergel(__vector signed long long __a, __vector signed long long __b) { 2067 return (__vector signed long long)(__a[1], __b[1]); 2068 } 2069 2070 static inline __ATTRS_o_ai __vector __bool long long 2071 vec_mergel(__vector __bool long long __a, __vector __bool long long __b) { 2072 return (__vector __bool long long)(__a[1], __b[1]); 2073 } 2074 2075 static inline __ATTRS_o_ai __vector unsigned long long 2076 vec_mergel(__vector unsigned long long __a, __vector unsigned long long __b) { 2077 return (__vector unsigned long long)(__a[1], __b[1]); 2078 } 2079 2080 #if __ARCH__ >= 12 2081 static inline __ATTRS_o_ai __vector float 2082 vec_mergel(__vector float __a, __vector float __b) { 2083 return (__vector float)(__a[2], __b[2], __a[3], __b[3]); 2084 } 2085 #endif 2086 2087 static inline __ATTRS_o_ai __vector double 2088 vec_mergel(__vector double __a, __vector double __b) { 2089 return (__vector double)(__a[1], __b[1]); 2090 } 2091 2092 /*-- vec_pack ---------------------------------------------------------------*/ 2093 2094 static inline __ATTRS_o_ai __vector signed char 2095 vec_pack(__vector signed short __a, __vector signed short __b) { 2096 __vector signed char __ac = (__vector signed char)__a; 2097 __vector signed char __bc = (__vector signed char)__b; 2098 return (__vector signed char)( 2099 __ac[1], __ac[3], __ac[5], __ac[7], __ac[9], __ac[11], __ac[13], __ac[15], 2100 __bc[1], __bc[3], __bc[5], __bc[7], __bc[9], __bc[11], __bc[13], __bc[15]); 2101 } 2102 2103 static inline __ATTRS_o_ai __vector __bool char 2104 vec_pack(__vector __bool short __a, __vector __bool short __b) { 2105 __vector __bool char __ac = (__vector __bool char)__a; 2106 __vector __bool char __bc = (__vector __bool char)__b; 2107 return (__vector __bool char)( 2108 __ac[1], __ac[3], __ac[5], __ac[7], __ac[9], __ac[11], __ac[13], __ac[15], 2109 __bc[1], __bc[3], __bc[5], __bc[7], __bc[9], __bc[11], __bc[13], __bc[15]); 2110 } 2111 2112 static inline __ATTRS_o_ai __vector unsigned char 2113 vec_pack(__vector unsigned short __a, __vector unsigned short __b) { 2114 __vector unsigned char __ac = (__vector unsigned char)__a; 2115 __vector unsigned char __bc = (__vector unsigned char)__b; 2116 return (__vector unsigned char)( 2117 __ac[1], __ac[3], __ac[5], __ac[7], __ac[9], __ac[11], __ac[13], __ac[15], 2118 __bc[1], __bc[3], __bc[5], __bc[7], __bc[9], __bc[11], __bc[13], __bc[15]); 2119 } 2120 2121 static inline __ATTRS_o_ai __vector signed short 2122 vec_pack(__vector signed int __a, __vector signed int __b) { 2123 __vector signed short __ac = (__vector signed short)__a; 2124 __vector signed short __bc = (__vector signed short)__b; 2125 return (__vector signed short)( 2126 __ac[1], __ac[3], __ac[5], __ac[7], 2127 __bc[1], __bc[3], __bc[5], __bc[7]); 2128 } 2129 2130 static inline __ATTRS_o_ai __vector __bool short 2131 vec_pack(__vector __bool int __a, __vector __bool int __b) { 2132 __vector __bool short __ac = (__vector __bool short)__a; 2133 __vector __bool short __bc = (__vector __bool short)__b; 2134 return (__vector __bool short)( 2135 __ac[1], __ac[3], __ac[5], __ac[7], 2136 __bc[1], __bc[3], __bc[5], __bc[7]); 2137 } 2138 2139 static inline __ATTRS_o_ai __vector unsigned short 2140 vec_pack(__vector unsigned int __a, __vector unsigned int __b) { 2141 __vector unsigned short __ac = (__vector unsigned short)__a; 2142 __vector unsigned short __bc = (__vector unsigned short)__b; 2143 return (__vector unsigned short)( 2144 __ac[1], __ac[3], __ac[5], __ac[7], 2145 __bc[1], __bc[3], __bc[5], __bc[7]); 2146 } 2147 2148 static inline __ATTRS_o_ai __vector signed int 2149 vec_pack(__vector signed long long __a, __vector signed long long __b) { 2150 __vector signed int __ac = (__vector signed int)__a; 2151 __vector signed int __bc = (__vector signed int)__b; 2152 return (__vector signed int)(__ac[1], __ac[3], __bc[1], __bc[3]); 2153 } 2154 2155 static inline __ATTRS_o_ai __vector __bool int 2156 vec_pack(__vector __bool long long __a, __vector __bool long long __b) { 2157 __vector __bool int __ac = (__vector __bool int)__a; 2158 __vector __bool int __bc = (__vector __bool int)__b; 2159 return (__vector __bool int)(__ac[1], __ac[3], __bc[1], __bc[3]); 2160 } 2161 2162 static inline __ATTRS_o_ai __vector unsigned int 2163 vec_pack(__vector unsigned long long __a, __vector unsigned long long __b) { 2164 __vector unsigned int __ac = (__vector unsigned int)__a; 2165 __vector unsigned int __bc = (__vector unsigned int)__b; 2166 return (__vector unsigned int)(__ac[1], __ac[3], __bc[1], __bc[3]); 2167 } 2168 2169 /*-- vec_packs --------------------------------------------------------------*/ 2170 2171 static inline __ATTRS_o_ai __vector signed char 2172 vec_packs(__vector signed short __a, __vector signed short __b) { 2173 return __builtin_s390_vpksh(__a, __b); 2174 } 2175 2176 static inline __ATTRS_o_ai __vector unsigned char 2177 vec_packs(__vector unsigned short __a, __vector unsigned short __b) { 2178 return __builtin_s390_vpklsh(__a, __b); 2179 } 2180 2181 static inline __ATTRS_o_ai __vector signed short 2182 vec_packs(__vector signed int __a, __vector signed int __b) { 2183 return __builtin_s390_vpksf(__a, __b); 2184 } 2185 2186 static inline __ATTRS_o_ai __vector unsigned short 2187 vec_packs(__vector unsigned int __a, __vector unsigned int __b) { 2188 return __builtin_s390_vpklsf(__a, __b); 2189 } 2190 2191 static inline __ATTRS_o_ai __vector signed int 2192 vec_packs(__vector signed long long __a, __vector signed long long __b) { 2193 return __builtin_s390_vpksg(__a, __b); 2194 } 2195 2196 static inline __ATTRS_o_ai __vector unsigned int 2197 vec_packs(__vector unsigned long long __a, __vector unsigned long long __b) { 2198 return __builtin_s390_vpklsg(__a, __b); 2199 } 2200 2201 /*-- vec_packs_cc -----------------------------------------------------------*/ 2202 2203 static inline __ATTRS_o_ai __vector signed char 2204 vec_packs_cc(__vector signed short __a, __vector signed short __b, int *__cc) { 2205 return __builtin_s390_vpkshs(__a, __b, __cc); 2206 } 2207 2208 static inline __ATTRS_o_ai __vector unsigned char 2209 vec_packs_cc(__vector unsigned short __a, __vector unsigned short __b, 2210 int *__cc) { 2211 return __builtin_s390_vpklshs(__a, __b, __cc); 2212 } 2213 2214 static inline __ATTRS_o_ai __vector signed short 2215 vec_packs_cc(__vector signed int __a, __vector signed int __b, int *__cc) { 2216 return __builtin_s390_vpksfs(__a, __b, __cc); 2217 } 2218 2219 static inline __ATTRS_o_ai __vector unsigned short 2220 vec_packs_cc(__vector unsigned int __a, __vector unsigned int __b, int *__cc) { 2221 return __builtin_s390_vpklsfs(__a, __b, __cc); 2222 } 2223 2224 static inline __ATTRS_o_ai __vector signed int 2225 vec_packs_cc(__vector signed long long __a, __vector signed long long __b, 2226 int *__cc) { 2227 return __builtin_s390_vpksgs(__a, __b, __cc); 2228 } 2229 2230 static inline __ATTRS_o_ai __vector unsigned int 2231 vec_packs_cc(__vector unsigned long long __a, __vector unsigned long long __b, 2232 int *__cc) { 2233 return __builtin_s390_vpklsgs(__a, __b, __cc); 2234 } 2235 2236 /*-- vec_packsu -------------------------------------------------------------*/ 2237 2238 static inline __ATTRS_o_ai __vector unsigned char 2239 vec_packsu(__vector signed short __a, __vector signed short __b) { 2240 const __vector signed short __zero = (__vector signed short)0; 2241 return __builtin_s390_vpklsh( 2242 (__vector unsigned short)(__a >= __zero) & (__vector unsigned short)__a, 2243 (__vector unsigned short)(__b >= __zero) & (__vector unsigned short)__b); 2244 } 2245 2246 static inline __ATTRS_o_ai __vector unsigned char 2247 vec_packsu(__vector unsigned short __a, __vector unsigned short __b) { 2248 return __builtin_s390_vpklsh(__a, __b); 2249 } 2250 2251 static inline __ATTRS_o_ai __vector unsigned short 2252 vec_packsu(__vector signed int __a, __vector signed int __b) { 2253 const __vector signed int __zero = (__vector signed int)0; 2254 return __builtin_s390_vpklsf( 2255 (__vector unsigned int)(__a >= __zero) & (__vector unsigned int)__a, 2256 (__vector unsigned int)(__b >= __zero) & (__vector unsigned int)__b); 2257 } 2258 2259 static inline __ATTRS_o_ai __vector unsigned short 2260 vec_packsu(__vector unsigned int __a, __vector unsigned int __b) { 2261 return __builtin_s390_vpklsf(__a, __b); 2262 } 2263 2264 static inline __ATTRS_o_ai __vector unsigned int 2265 vec_packsu(__vector signed long long __a, __vector signed long long __b) { 2266 const __vector signed long long __zero = (__vector signed long long)0; 2267 return __builtin_s390_vpklsg( 2268 (__vector unsigned long long)(__a >= __zero) & 2269 (__vector unsigned long long)__a, 2270 (__vector unsigned long long)(__b >= __zero) & 2271 (__vector unsigned long long)__b); 2272 } 2273 2274 static inline __ATTRS_o_ai __vector unsigned int 2275 vec_packsu(__vector unsigned long long __a, __vector unsigned long long __b) { 2276 return __builtin_s390_vpklsg(__a, __b); 2277 } 2278 2279 /*-- vec_packsu_cc ----------------------------------------------------------*/ 2280 2281 static inline __ATTRS_o_ai __vector unsigned char 2282 vec_packsu_cc(__vector unsigned short __a, __vector unsigned short __b, 2283 int *__cc) { 2284 return __builtin_s390_vpklshs(__a, __b, __cc); 2285 } 2286 2287 static inline __ATTRS_o_ai __vector unsigned short 2288 vec_packsu_cc(__vector unsigned int __a, __vector unsigned int __b, int *__cc) { 2289 return __builtin_s390_vpklsfs(__a, __b, __cc); 2290 } 2291 2292 static inline __ATTRS_o_ai __vector unsigned int 2293 vec_packsu_cc(__vector unsigned long long __a, __vector unsigned long long __b, 2294 int *__cc) { 2295 return __builtin_s390_vpklsgs(__a, __b, __cc); 2296 } 2297 2298 /*-- vec_unpackh ------------------------------------------------------------*/ 2299 2300 static inline __ATTRS_o_ai __vector signed short 2301 vec_unpackh(__vector signed char __a) { 2302 return __builtin_s390_vuphb(__a); 2303 } 2304 2305 static inline __ATTRS_o_ai __vector __bool short 2306 vec_unpackh(__vector __bool char __a) { 2307 return ((__vector __bool short) 2308 __builtin_s390_vuphb((__vector signed char)__a)); 2309 } 2310 2311 static inline __ATTRS_o_ai __vector unsigned short 2312 vec_unpackh(__vector unsigned char __a) { 2313 return __builtin_s390_vuplhb(__a); 2314 } 2315 2316 static inline __ATTRS_o_ai __vector signed int 2317 vec_unpackh(__vector signed short __a) { 2318 return __builtin_s390_vuphh(__a); 2319 } 2320 2321 static inline __ATTRS_o_ai __vector __bool int 2322 vec_unpackh(__vector __bool short __a) { 2323 return (__vector __bool int)__builtin_s390_vuphh((__vector signed short)__a); 2324 } 2325 2326 static inline __ATTRS_o_ai __vector unsigned int 2327 vec_unpackh(__vector unsigned short __a) { 2328 return __builtin_s390_vuplhh(__a); 2329 } 2330 2331 static inline __ATTRS_o_ai __vector signed long long 2332 vec_unpackh(__vector signed int __a) { 2333 return __builtin_s390_vuphf(__a); 2334 } 2335 2336 static inline __ATTRS_o_ai __vector __bool long long 2337 vec_unpackh(__vector __bool int __a) { 2338 return ((__vector __bool long long) 2339 __builtin_s390_vuphf((__vector signed int)__a)); 2340 } 2341 2342 static inline __ATTRS_o_ai __vector unsigned long long 2343 vec_unpackh(__vector unsigned int __a) { 2344 return __builtin_s390_vuplhf(__a); 2345 } 2346 2347 /*-- vec_unpackl ------------------------------------------------------------*/ 2348 2349 static inline __ATTRS_o_ai __vector signed short 2350 vec_unpackl(__vector signed char __a) { 2351 return __builtin_s390_vuplb(__a); 2352 } 2353 2354 static inline __ATTRS_o_ai __vector __bool short 2355 vec_unpackl(__vector __bool char __a) { 2356 return ((__vector __bool short) 2357 __builtin_s390_vuplb((__vector signed char)__a)); 2358 } 2359 2360 static inline __ATTRS_o_ai __vector unsigned short 2361 vec_unpackl(__vector unsigned char __a) { 2362 return __builtin_s390_vupllb(__a); 2363 } 2364 2365 static inline __ATTRS_o_ai __vector signed int 2366 vec_unpackl(__vector signed short __a) { 2367 return __builtin_s390_vuplhw(__a); 2368 } 2369 2370 static inline __ATTRS_o_ai __vector __bool int 2371 vec_unpackl(__vector __bool short __a) { 2372 return ((__vector __bool int) 2373 __builtin_s390_vuplhw((__vector signed short)__a)); 2374 } 2375 2376 static inline __ATTRS_o_ai __vector unsigned int 2377 vec_unpackl(__vector unsigned short __a) { 2378 return __builtin_s390_vupllh(__a); 2379 } 2380 2381 static inline __ATTRS_o_ai __vector signed long long 2382 vec_unpackl(__vector signed int __a) { 2383 return __builtin_s390_vuplf(__a); 2384 } 2385 2386 static inline __ATTRS_o_ai __vector __bool long long 2387 vec_unpackl(__vector __bool int __a) { 2388 return ((__vector __bool long long) 2389 __builtin_s390_vuplf((__vector signed int)__a)); 2390 } 2391 2392 static inline __ATTRS_o_ai __vector unsigned long long 2393 vec_unpackl(__vector unsigned int __a) { 2394 return __builtin_s390_vupllf(__a); 2395 } 2396 2397 /*-- vec_cmpeq --------------------------------------------------------------*/ 2398 2399 static inline __ATTRS_o_ai __vector __bool char 2400 vec_cmpeq(__vector __bool char __a, __vector __bool char __b) { 2401 return (__vector __bool char)(__a == __b); 2402 } 2403 2404 static inline __ATTRS_o_ai __vector __bool char 2405 vec_cmpeq(__vector signed char __a, __vector signed char __b) { 2406 return (__vector __bool char)(__a == __b); 2407 } 2408 2409 static inline __ATTRS_o_ai __vector __bool char 2410 vec_cmpeq(__vector unsigned char __a, __vector unsigned char __b) { 2411 return (__vector __bool char)(__a == __b); 2412 } 2413 2414 static inline __ATTRS_o_ai __vector __bool short 2415 vec_cmpeq(__vector __bool short __a, __vector __bool short __b) { 2416 return (__vector __bool short)(__a == __b); 2417 } 2418 2419 static inline __ATTRS_o_ai __vector __bool short 2420 vec_cmpeq(__vector signed short __a, __vector signed short __b) { 2421 return (__vector __bool short)(__a == __b); 2422 } 2423 2424 static inline __ATTRS_o_ai __vector __bool short 2425 vec_cmpeq(__vector unsigned short __a, __vector unsigned short __b) { 2426 return (__vector __bool short)(__a == __b); 2427 } 2428 2429 static inline __ATTRS_o_ai __vector __bool int 2430 vec_cmpeq(__vector __bool int __a, __vector __bool int __b) { 2431 return (__vector __bool int)(__a == __b); 2432 } 2433 2434 static inline __ATTRS_o_ai __vector __bool int 2435 vec_cmpeq(__vector signed int __a, __vector signed int __b) { 2436 return (__vector __bool int)(__a == __b); 2437 } 2438 2439 static inline __ATTRS_o_ai __vector __bool int 2440 vec_cmpeq(__vector unsigned int __a, __vector unsigned int __b) { 2441 return (__vector __bool int)(__a == __b); 2442 } 2443 2444 static inline __ATTRS_o_ai __vector __bool long long 2445 vec_cmpeq(__vector __bool long long __a, __vector __bool long long __b) { 2446 return (__vector __bool long long)(__a == __b); 2447 } 2448 2449 static inline __ATTRS_o_ai __vector __bool long long 2450 vec_cmpeq(__vector signed long long __a, __vector signed long long __b) { 2451 return (__vector __bool long long)(__a == __b); 2452 } 2453 2454 static inline __ATTRS_o_ai __vector __bool long long 2455 vec_cmpeq(__vector unsigned long long __a, __vector unsigned long long __b) { 2456 return (__vector __bool long long)(__a == __b); 2457 } 2458 2459 #if __ARCH__ >= 12 2460 static inline __ATTRS_o_ai __vector __bool int 2461 vec_cmpeq(__vector float __a, __vector float __b) { 2462 return (__vector __bool int)(__a == __b); 2463 } 2464 #endif 2465 2466 static inline __ATTRS_o_ai __vector __bool long long 2467 vec_cmpeq(__vector double __a, __vector double __b) { 2468 return (__vector __bool long long)(__a == __b); 2469 } 2470 2471 /*-- vec_cmpge --------------------------------------------------------------*/ 2472 2473 static inline __ATTRS_o_ai __vector __bool char 2474 vec_cmpge(__vector signed char __a, __vector signed char __b) { 2475 return (__vector __bool char)(__a >= __b); 2476 } 2477 2478 static inline __ATTRS_o_ai __vector __bool char 2479 vec_cmpge(__vector unsigned char __a, __vector unsigned char __b) { 2480 return (__vector __bool char)(__a >= __b); 2481 } 2482 2483 static inline __ATTRS_o_ai __vector __bool short 2484 vec_cmpge(__vector signed short __a, __vector signed short __b) { 2485 return (__vector __bool short)(__a >= __b); 2486 } 2487 2488 static inline __ATTRS_o_ai __vector __bool short 2489 vec_cmpge(__vector unsigned short __a, __vector unsigned short __b) { 2490 return (__vector __bool short)(__a >= __b); 2491 } 2492 2493 static inline __ATTRS_o_ai __vector __bool int 2494 vec_cmpge(__vector signed int __a, __vector signed int __b) { 2495 return (__vector __bool int)(__a >= __b); 2496 } 2497 2498 static inline __ATTRS_o_ai __vector __bool int 2499 vec_cmpge(__vector unsigned int __a, __vector unsigned int __b) { 2500 return (__vector __bool int)(__a >= __b); 2501 } 2502 2503 static inline __ATTRS_o_ai __vector __bool long long 2504 vec_cmpge(__vector signed long long __a, __vector signed long long __b) { 2505 return (__vector __bool long long)(__a >= __b); 2506 } 2507 2508 static inline __ATTRS_o_ai __vector __bool long long 2509 vec_cmpge(__vector unsigned long long __a, __vector unsigned long long __b) { 2510 return (__vector __bool long long)(__a >= __b); 2511 } 2512 2513 #if __ARCH__ >= 12 2514 static inline __ATTRS_o_ai __vector __bool int 2515 vec_cmpge(__vector float __a, __vector float __b) { 2516 return (__vector __bool int)(__a >= __b); 2517 } 2518 #endif 2519 2520 static inline __ATTRS_o_ai __vector __bool long long 2521 vec_cmpge(__vector double __a, __vector double __b) { 2522 return (__vector __bool long long)(__a >= __b); 2523 } 2524 2525 /*-- vec_cmpgt --------------------------------------------------------------*/ 2526 2527 static inline __ATTRS_o_ai __vector __bool char 2528 vec_cmpgt(__vector signed char __a, __vector signed char __b) { 2529 return (__vector __bool char)(__a > __b); 2530 } 2531 2532 static inline __ATTRS_o_ai __vector __bool char 2533 vec_cmpgt(__vector unsigned char __a, __vector unsigned char __b) { 2534 return (__vector __bool char)(__a > __b); 2535 } 2536 2537 static inline __ATTRS_o_ai __vector __bool short 2538 vec_cmpgt(__vector signed short __a, __vector signed short __b) { 2539 return (__vector __bool short)(__a > __b); 2540 } 2541 2542 static inline __ATTRS_o_ai __vector __bool short 2543 vec_cmpgt(__vector unsigned short __a, __vector unsigned short __b) { 2544 return (__vector __bool short)(__a > __b); 2545 } 2546 2547 static inline __ATTRS_o_ai __vector __bool int 2548 vec_cmpgt(__vector signed int __a, __vector signed int __b) { 2549 return (__vector __bool int)(__a > __b); 2550 } 2551 2552 static inline __ATTRS_o_ai __vector __bool int 2553 vec_cmpgt(__vector unsigned int __a, __vector unsigned int __b) { 2554 return (__vector __bool int)(__a > __b); 2555 } 2556 2557 static inline __ATTRS_o_ai __vector __bool long long 2558 vec_cmpgt(__vector signed long long __a, __vector signed long long __b) { 2559 return (__vector __bool long long)(__a > __b); 2560 } 2561 2562 static inline __ATTRS_o_ai __vector __bool long long 2563 vec_cmpgt(__vector unsigned long long __a, __vector unsigned long long __b) { 2564 return (__vector __bool long long)(__a > __b); 2565 } 2566 2567 #if __ARCH__ >= 12 2568 static inline __ATTRS_o_ai __vector __bool int 2569 vec_cmpgt(__vector float __a, __vector float __b) { 2570 return (__vector __bool int)(__a > __b); 2571 } 2572 #endif 2573 2574 static inline __ATTRS_o_ai __vector __bool long long 2575 vec_cmpgt(__vector double __a, __vector double __b) { 2576 return (__vector __bool long long)(__a > __b); 2577 } 2578 2579 /*-- vec_cmple --------------------------------------------------------------*/ 2580 2581 static inline __ATTRS_o_ai __vector __bool char 2582 vec_cmple(__vector signed char __a, __vector signed char __b) { 2583 return (__vector __bool char)(__a <= __b); 2584 } 2585 2586 static inline __ATTRS_o_ai __vector __bool char 2587 vec_cmple(__vector unsigned char __a, __vector unsigned char __b) { 2588 return (__vector __bool char)(__a <= __b); 2589 } 2590 2591 static inline __ATTRS_o_ai __vector __bool short 2592 vec_cmple(__vector signed short __a, __vector signed short __b) { 2593 return (__vector __bool short)(__a <= __b); 2594 } 2595 2596 static inline __ATTRS_o_ai __vector __bool short 2597 vec_cmple(__vector unsigned short __a, __vector unsigned short __b) { 2598 return (__vector __bool short)(__a <= __b); 2599 } 2600 2601 static inline __ATTRS_o_ai __vector __bool int 2602 vec_cmple(__vector signed int __a, __vector signed int __b) { 2603 return (__vector __bool int)(__a <= __b); 2604 } 2605 2606 static inline __ATTRS_o_ai __vector __bool int 2607 vec_cmple(__vector unsigned int __a, __vector unsigned int __b) { 2608 return (__vector __bool int)(__a <= __b); 2609 } 2610 2611 static inline __ATTRS_o_ai __vector __bool long long 2612 vec_cmple(__vector signed long long __a, __vector signed long long __b) { 2613 return (__vector __bool long long)(__a <= __b); 2614 } 2615 2616 static inline __ATTRS_o_ai __vector __bool long long 2617 vec_cmple(__vector unsigned long long __a, __vector unsigned long long __b) { 2618 return (__vector __bool long long)(__a <= __b); 2619 } 2620 2621 #if __ARCH__ >= 12 2622 static inline __ATTRS_o_ai __vector __bool int 2623 vec_cmple(__vector float __a, __vector float __b) { 2624 return (__vector __bool int)(__a <= __b); 2625 } 2626 #endif 2627 2628 static inline __ATTRS_o_ai __vector __bool long long 2629 vec_cmple(__vector double __a, __vector double __b) { 2630 return (__vector __bool long long)(__a <= __b); 2631 } 2632 2633 /*-- vec_cmplt --------------------------------------------------------------*/ 2634 2635 static inline __ATTRS_o_ai __vector __bool char 2636 vec_cmplt(__vector signed char __a, __vector signed char __b) { 2637 return (__vector __bool char)(__a < __b); 2638 } 2639 2640 static inline __ATTRS_o_ai __vector __bool char 2641 vec_cmplt(__vector unsigned char __a, __vector unsigned char __b) { 2642 return (__vector __bool char)(__a < __b); 2643 } 2644 2645 static inline __ATTRS_o_ai __vector __bool short 2646 vec_cmplt(__vector signed short __a, __vector signed short __b) { 2647 return (__vector __bool short)(__a < __b); 2648 } 2649 2650 static inline __ATTRS_o_ai __vector __bool short 2651 vec_cmplt(__vector unsigned short __a, __vector unsigned short __b) { 2652 return (__vector __bool short)(__a < __b); 2653 } 2654 2655 static inline __ATTRS_o_ai __vector __bool int 2656 vec_cmplt(__vector signed int __a, __vector signed int __b) { 2657 return (__vector __bool int)(__a < __b); 2658 } 2659 2660 static inline __ATTRS_o_ai __vector __bool int 2661 vec_cmplt(__vector unsigned int __a, __vector unsigned int __b) { 2662 return (__vector __bool int)(__a < __b); 2663 } 2664 2665 static inline __ATTRS_o_ai __vector __bool long long 2666 vec_cmplt(__vector signed long long __a, __vector signed long long __b) { 2667 return (__vector __bool long long)(__a < __b); 2668 } 2669 2670 static inline __ATTRS_o_ai __vector __bool long long 2671 vec_cmplt(__vector unsigned long long __a, __vector unsigned long long __b) { 2672 return (__vector __bool long long)(__a < __b); 2673 } 2674 2675 #if __ARCH__ >= 12 2676 static inline __ATTRS_o_ai __vector __bool int 2677 vec_cmplt(__vector float __a, __vector float __b) { 2678 return (__vector __bool int)(__a < __b); 2679 } 2680 #endif 2681 2682 static inline __ATTRS_o_ai __vector __bool long long 2683 vec_cmplt(__vector double __a, __vector double __b) { 2684 return (__vector __bool long long)(__a < __b); 2685 } 2686 2687 /*-- vec_all_eq -------------------------------------------------------------*/ 2688 2689 static inline __ATTRS_o_ai int 2690 vec_all_eq(__vector signed char __a, __vector signed char __b) { 2691 int __cc; 2692 __builtin_s390_vceqbs(__a, __b, &__cc); 2693 return __cc == 0; 2694 } 2695 2696 // This prototype is deprecated. 2697 static inline __ATTRS_o_ai int 2698 vec_all_eq(__vector signed char __a, __vector __bool char __b) { 2699 int __cc; 2700 __builtin_s390_vceqbs(__a, (__vector signed char)__b, &__cc); 2701 return __cc == 0; 2702 } 2703 2704 // This prototype is deprecated. 2705 static inline __ATTRS_o_ai int 2706 vec_all_eq(__vector __bool char __a, __vector signed char __b) { 2707 int __cc; 2708 __builtin_s390_vceqbs((__vector signed char)__a, __b, &__cc); 2709 return __cc == 0; 2710 } 2711 2712 static inline __ATTRS_o_ai int 2713 vec_all_eq(__vector unsigned char __a, __vector unsigned char __b) { 2714 int __cc; 2715 __builtin_s390_vceqbs((__vector signed char)__a, 2716 (__vector signed char)__b, &__cc); 2717 return __cc == 0; 2718 } 2719 2720 // This prototype is deprecated. 2721 static inline __ATTRS_o_ai int 2722 vec_all_eq(__vector unsigned char __a, __vector __bool char __b) { 2723 int __cc; 2724 __builtin_s390_vceqbs((__vector signed char)__a, 2725 (__vector signed char)__b, &__cc); 2726 return __cc == 0; 2727 } 2728 2729 // This prototype is deprecated. 2730 static inline __ATTRS_o_ai int 2731 vec_all_eq(__vector __bool char __a, __vector unsigned char __b) { 2732 int __cc; 2733 __builtin_s390_vceqbs((__vector signed char)__a, 2734 (__vector signed char)__b, &__cc); 2735 return __cc == 0; 2736 } 2737 2738 static inline __ATTRS_o_ai int 2739 vec_all_eq(__vector __bool char __a, __vector __bool char __b) { 2740 int __cc; 2741 __builtin_s390_vceqbs((__vector signed char)__a, 2742 (__vector signed char)__b, &__cc); 2743 return __cc == 0; 2744 } 2745 2746 static inline __ATTRS_o_ai int 2747 vec_all_eq(__vector signed short __a, __vector signed short __b) { 2748 int __cc; 2749 __builtin_s390_vceqhs(__a, __b, &__cc); 2750 return __cc == 0; 2751 } 2752 2753 // This prototype is deprecated. 2754 static inline __ATTRS_o_ai int 2755 vec_all_eq(__vector signed short __a, __vector __bool short __b) { 2756 int __cc; 2757 __builtin_s390_vceqhs(__a, (__vector signed short)__b, &__cc); 2758 return __cc == 0; 2759 } 2760 2761 // This prototype is deprecated. 2762 static inline __ATTRS_o_ai int 2763 vec_all_eq(__vector __bool short __a, __vector signed short __b) { 2764 int __cc; 2765 __builtin_s390_vceqhs((__vector signed short)__a, __b, &__cc); 2766 return __cc == 0; 2767 } 2768 2769 static inline __ATTRS_o_ai int 2770 vec_all_eq(__vector unsigned short __a, __vector unsigned short __b) { 2771 int __cc; 2772 __builtin_s390_vceqhs((__vector signed short)__a, 2773 (__vector signed short)__b, &__cc); 2774 return __cc == 0; 2775 } 2776 2777 // This prototype is deprecated. 2778 static inline __ATTRS_o_ai int 2779 vec_all_eq(__vector unsigned short __a, __vector __bool short __b) { 2780 int __cc; 2781 __builtin_s390_vceqhs((__vector signed short)__a, 2782 (__vector signed short)__b, &__cc); 2783 return __cc == 0; 2784 } 2785 2786 // This prototype is deprecated. 2787 static inline __ATTRS_o_ai int 2788 vec_all_eq(__vector __bool short __a, __vector unsigned short __b) { 2789 int __cc; 2790 __builtin_s390_vceqhs((__vector signed short)__a, 2791 (__vector signed short)__b, &__cc); 2792 return __cc == 0; 2793 } 2794 2795 static inline __ATTRS_o_ai int 2796 vec_all_eq(__vector __bool short __a, __vector __bool short __b) { 2797 int __cc; 2798 __builtin_s390_vceqhs((__vector signed short)__a, 2799 (__vector signed short)__b, &__cc); 2800 return __cc == 0; 2801 } 2802 2803 static inline __ATTRS_o_ai int 2804 vec_all_eq(__vector signed int __a, __vector signed int __b) { 2805 int __cc; 2806 __builtin_s390_vceqfs(__a, __b, &__cc); 2807 return __cc == 0; 2808 } 2809 2810 // This prototype is deprecated. 2811 static inline __ATTRS_o_ai int 2812 vec_all_eq(__vector signed int __a, __vector __bool int __b) { 2813 int __cc; 2814 __builtin_s390_vceqfs(__a, (__vector signed int)__b, &__cc); 2815 return __cc == 0; 2816 } 2817 2818 // This prototype is deprecated. 2819 static inline __ATTRS_o_ai int 2820 vec_all_eq(__vector __bool int __a, __vector signed int __b) { 2821 int __cc; 2822 __builtin_s390_vceqfs((__vector signed int)__a, __b, &__cc); 2823 return __cc == 0; 2824 } 2825 2826 static inline __ATTRS_o_ai int 2827 vec_all_eq(__vector unsigned int __a, __vector unsigned int __b) { 2828 int __cc; 2829 __builtin_s390_vceqfs((__vector signed int)__a, 2830 (__vector signed int)__b, &__cc); 2831 return __cc == 0; 2832 } 2833 2834 // This prototype is deprecated. 2835 static inline __ATTRS_o_ai int 2836 vec_all_eq(__vector unsigned int __a, __vector __bool int __b) { 2837 int __cc; 2838 __builtin_s390_vceqfs((__vector signed int)__a, 2839 (__vector signed int)__b, &__cc); 2840 return __cc == 0; 2841 } 2842 2843 // This prototype is deprecated. 2844 static inline __ATTRS_o_ai int 2845 vec_all_eq(__vector __bool int __a, __vector unsigned int __b) { 2846 int __cc; 2847 __builtin_s390_vceqfs((__vector signed int)__a, 2848 (__vector signed int)__b, &__cc); 2849 return __cc == 0; 2850 } 2851 2852 static inline __ATTRS_o_ai int 2853 vec_all_eq(__vector __bool int __a, __vector __bool int __b) { 2854 int __cc; 2855 __builtin_s390_vceqfs((__vector signed int)__a, 2856 (__vector signed int)__b, &__cc); 2857 return __cc == 0; 2858 } 2859 2860 static inline __ATTRS_o_ai int 2861 vec_all_eq(__vector signed long long __a, __vector signed long long __b) { 2862 int __cc; 2863 __builtin_s390_vceqgs(__a, __b, &__cc); 2864 return __cc == 0; 2865 } 2866 2867 // This prototype is deprecated. 2868 static inline __ATTRS_o_ai int 2869 vec_all_eq(__vector signed long long __a, __vector __bool long long __b) { 2870 int __cc; 2871 __builtin_s390_vceqgs(__a, (__vector signed long long)__b, &__cc); 2872 return __cc == 0; 2873 } 2874 2875 // This prototype is deprecated. 2876 static inline __ATTRS_o_ai int 2877 vec_all_eq(__vector __bool long long __a, __vector signed long long __b) { 2878 int __cc; 2879 __builtin_s390_vceqgs((__vector signed long long)__a, __b, &__cc); 2880 return __cc == 0; 2881 } 2882 2883 static inline __ATTRS_o_ai int 2884 vec_all_eq(__vector unsigned long long __a, __vector unsigned long long __b) { 2885 int __cc; 2886 __builtin_s390_vceqgs((__vector signed long long)__a, 2887 (__vector signed long long)__b, &__cc); 2888 return __cc == 0; 2889 } 2890 2891 // This prototype is deprecated. 2892 static inline __ATTRS_o_ai int 2893 vec_all_eq(__vector unsigned long long __a, __vector __bool long long __b) { 2894 int __cc; 2895 __builtin_s390_vceqgs((__vector signed long long)__a, 2896 (__vector signed long long)__b, &__cc); 2897 return __cc == 0; 2898 } 2899 2900 // This prototype is deprecated. 2901 static inline __ATTRS_o_ai int 2902 vec_all_eq(__vector __bool long long __a, __vector unsigned long long __b) { 2903 int __cc; 2904 __builtin_s390_vceqgs((__vector signed long long)__a, 2905 (__vector signed long long)__b, &__cc); 2906 return __cc == 0; 2907 } 2908 2909 static inline __ATTRS_o_ai int 2910 vec_all_eq(__vector __bool long long __a, __vector __bool long long __b) { 2911 int __cc; 2912 __builtin_s390_vceqgs((__vector signed long long)__a, 2913 (__vector signed long long)__b, &__cc); 2914 return __cc == 0; 2915 } 2916 2917 #if __ARCH__ >= 12 2918 static inline __ATTRS_o_ai int 2919 vec_all_eq(__vector float __a, __vector float __b) { 2920 int __cc; 2921 __builtin_s390_vfcesbs(__a, __b, &__cc); 2922 return __cc == 0; 2923 } 2924 #endif 2925 2926 static inline __ATTRS_o_ai int 2927 vec_all_eq(__vector double __a, __vector double __b) { 2928 int __cc; 2929 __builtin_s390_vfcedbs(__a, __b, &__cc); 2930 return __cc == 0; 2931 } 2932 2933 /*-- vec_all_ne -------------------------------------------------------------*/ 2934 2935 static inline __ATTRS_o_ai int 2936 vec_all_ne(__vector signed char __a, __vector signed char __b) { 2937 int __cc; 2938 __builtin_s390_vceqbs(__a, __b, &__cc); 2939 return __cc == 3; 2940 } 2941 2942 // This prototype is deprecated. 2943 static inline __ATTRS_o_ai int 2944 vec_all_ne(__vector signed char __a, __vector __bool char __b) { 2945 int __cc; 2946 __builtin_s390_vceqbs(__a, (__vector signed char)__b, &__cc); 2947 return __cc == 3; 2948 } 2949 2950 // This prototype is deprecated. 2951 static inline __ATTRS_o_ai int 2952 vec_all_ne(__vector __bool char __a, __vector signed char __b) { 2953 int __cc; 2954 __builtin_s390_vceqbs((__vector signed char)__a, __b, &__cc); 2955 return __cc == 3; 2956 } 2957 2958 static inline __ATTRS_o_ai int 2959 vec_all_ne(__vector unsigned char __a, __vector unsigned char __b) { 2960 int __cc; 2961 __builtin_s390_vceqbs((__vector signed char)__a, 2962 (__vector signed char)__b, &__cc); 2963 return __cc == 3; 2964 } 2965 2966 // This prototype is deprecated. 2967 static inline __ATTRS_o_ai int 2968 vec_all_ne(__vector unsigned char __a, __vector __bool char __b) { 2969 int __cc; 2970 __builtin_s390_vceqbs((__vector signed char)__a, 2971 (__vector signed char)__b, &__cc); 2972 return __cc == 3; 2973 } 2974 2975 // This prototype is deprecated. 2976 static inline __ATTRS_o_ai int 2977 vec_all_ne(__vector __bool char __a, __vector unsigned char __b) { 2978 int __cc; 2979 __builtin_s390_vceqbs((__vector signed char)__a, 2980 (__vector signed char)__b, &__cc); 2981 return __cc == 3; 2982 } 2983 2984 static inline __ATTRS_o_ai int 2985 vec_all_ne(__vector __bool char __a, __vector __bool char __b) { 2986 int __cc; 2987 __builtin_s390_vceqbs((__vector signed char)__a, 2988 (__vector signed char)__b, &__cc); 2989 return __cc == 3; 2990 } 2991 2992 static inline __ATTRS_o_ai int 2993 vec_all_ne(__vector signed short __a, __vector signed short __b) { 2994 int __cc; 2995 __builtin_s390_vceqhs(__a, __b, &__cc); 2996 return __cc == 3; 2997 } 2998 2999 // This prototype is deprecated. 3000 static inline __ATTRS_o_ai int 3001 vec_all_ne(__vector signed short __a, __vector __bool short __b) { 3002 int __cc; 3003 __builtin_s390_vceqhs(__a, (__vector signed short)__b, &__cc); 3004 return __cc == 3; 3005 } 3006 3007 // This prototype is deprecated. 3008 static inline __ATTRS_o_ai int 3009 vec_all_ne(__vector __bool short __a, __vector signed short __b) { 3010 int __cc; 3011 __builtin_s390_vceqhs((__vector signed short)__a, __b, &__cc); 3012 return __cc == 3; 3013 } 3014 3015 static inline __ATTRS_o_ai int 3016 vec_all_ne(__vector unsigned short __a, __vector unsigned short __b) { 3017 int __cc; 3018 __builtin_s390_vceqhs((__vector signed short)__a, 3019 (__vector signed short)__b, &__cc); 3020 return __cc == 3; 3021 } 3022 3023 // This prototype is deprecated. 3024 static inline __ATTRS_o_ai int 3025 vec_all_ne(__vector unsigned short __a, __vector __bool short __b) { 3026 int __cc; 3027 __builtin_s390_vceqhs((__vector signed short)__a, 3028 (__vector signed short)__b, &__cc); 3029 return __cc == 3; 3030 } 3031 3032 // This prototype is deprecated. 3033 static inline __ATTRS_o_ai int 3034 vec_all_ne(__vector __bool short __a, __vector unsigned short __b) { 3035 int __cc; 3036 __builtin_s390_vceqhs((__vector signed short)__a, 3037 (__vector signed short)__b, &__cc); 3038 return __cc == 3; 3039 } 3040 3041 static inline __ATTRS_o_ai int 3042 vec_all_ne(__vector __bool short __a, __vector __bool short __b) { 3043 int __cc; 3044 __builtin_s390_vceqhs((__vector signed short)__a, 3045 (__vector signed short)__b, &__cc); 3046 return __cc == 3; 3047 } 3048 3049 static inline __ATTRS_o_ai int 3050 vec_all_ne(__vector signed int __a, __vector signed int __b) { 3051 int __cc; 3052 __builtin_s390_vceqfs(__a, __b, &__cc); 3053 return __cc == 3; 3054 } 3055 3056 // This prototype is deprecated. 3057 static inline __ATTRS_o_ai int 3058 vec_all_ne(__vector signed int __a, __vector __bool int __b) { 3059 int __cc; 3060 __builtin_s390_vceqfs(__a, (__vector signed int)__b, &__cc); 3061 return __cc == 3; 3062 } 3063 3064 // This prototype is deprecated. 3065 static inline __ATTRS_o_ai int 3066 vec_all_ne(__vector __bool int __a, __vector signed int __b) { 3067 int __cc; 3068 __builtin_s390_vceqfs((__vector signed int)__a, __b, &__cc); 3069 return __cc == 3; 3070 } 3071 3072 static inline __ATTRS_o_ai int 3073 vec_all_ne(__vector unsigned int __a, __vector unsigned int __b) { 3074 int __cc; 3075 __builtin_s390_vceqfs((__vector signed int)__a, 3076 (__vector signed int)__b, &__cc); 3077 return __cc == 3; 3078 } 3079 3080 // This prototype is deprecated. 3081 static inline __ATTRS_o_ai int 3082 vec_all_ne(__vector unsigned int __a, __vector __bool int __b) { 3083 int __cc; 3084 __builtin_s390_vceqfs((__vector signed int)__a, 3085 (__vector signed int)__b, &__cc); 3086 return __cc == 3; 3087 } 3088 3089 // This prototype is deprecated. 3090 static inline __ATTRS_o_ai int 3091 vec_all_ne(__vector __bool int __a, __vector unsigned int __b) { 3092 int __cc; 3093 __builtin_s390_vceqfs((__vector signed int)__a, 3094 (__vector signed int)__b, &__cc); 3095 return __cc == 3; 3096 } 3097 3098 static inline __ATTRS_o_ai int 3099 vec_all_ne(__vector __bool int __a, __vector __bool int __b) { 3100 int __cc; 3101 __builtin_s390_vceqfs((__vector signed int)__a, 3102 (__vector signed int)__b, &__cc); 3103 return __cc == 3; 3104 } 3105 3106 static inline __ATTRS_o_ai int 3107 vec_all_ne(__vector signed long long __a, __vector signed long long __b) { 3108 int __cc; 3109 __builtin_s390_vceqgs(__a, __b, &__cc); 3110 return __cc == 3; 3111 } 3112 3113 // This prototype is deprecated. 3114 static inline __ATTRS_o_ai int 3115 vec_all_ne(__vector signed long long __a, __vector __bool long long __b) { 3116 int __cc; 3117 __builtin_s390_vceqgs(__a, (__vector signed long long)__b, &__cc); 3118 return __cc == 3; 3119 } 3120 3121 // This prototype is deprecated. 3122 static inline __ATTRS_o_ai int 3123 vec_all_ne(__vector __bool long long __a, __vector signed long long __b) { 3124 int __cc; 3125 __builtin_s390_vceqgs((__vector signed long long)__a, __b, &__cc); 3126 return __cc == 3; 3127 } 3128 3129 static inline __ATTRS_o_ai int 3130 vec_all_ne(__vector unsigned long long __a, __vector unsigned long long __b) { 3131 int __cc; 3132 __builtin_s390_vceqgs((__vector signed long long)__a, 3133 (__vector signed long long)__b, &__cc); 3134 return __cc == 3; 3135 } 3136 3137 // This prototype is deprecated. 3138 static inline __ATTRS_o_ai int 3139 vec_all_ne(__vector unsigned long long __a, __vector __bool long long __b) { 3140 int __cc; 3141 __builtin_s390_vceqgs((__vector signed long long)__a, 3142 (__vector signed long long)__b, &__cc); 3143 return __cc == 3; 3144 } 3145 3146 // This prototype is deprecated. 3147 static inline __ATTRS_o_ai int 3148 vec_all_ne(__vector __bool long long __a, __vector unsigned long long __b) { 3149 int __cc; 3150 __builtin_s390_vceqgs((__vector signed long long)__a, 3151 (__vector signed long long)__b, &__cc); 3152 return __cc == 3; 3153 } 3154 3155 static inline __ATTRS_o_ai int 3156 vec_all_ne(__vector __bool long long __a, __vector __bool long long __b) { 3157 int __cc; 3158 __builtin_s390_vceqgs((__vector signed long long)__a, 3159 (__vector signed long long)__b, &__cc); 3160 return __cc == 3; 3161 } 3162 3163 #if __ARCH__ >= 12 3164 static inline __ATTRS_o_ai int 3165 vec_all_ne(__vector float __a, __vector float __b) { 3166 int __cc; 3167 __builtin_s390_vfcesbs(__a, __b, &__cc); 3168 return __cc == 3; 3169 } 3170 #endif 3171 3172 static inline __ATTRS_o_ai int 3173 vec_all_ne(__vector double __a, __vector double __b) { 3174 int __cc; 3175 __builtin_s390_vfcedbs(__a, __b, &__cc); 3176 return __cc == 3; 3177 } 3178 3179 /*-- vec_all_ge -------------------------------------------------------------*/ 3180 3181 static inline __ATTRS_o_ai int 3182 vec_all_ge(__vector signed char __a, __vector signed char __b) { 3183 int __cc; 3184 __builtin_s390_vchbs(__b, __a, &__cc); 3185 return __cc == 3; 3186 } 3187 3188 // This prototype is deprecated. 3189 static inline __ATTRS_o_ai int 3190 vec_all_ge(__vector signed char __a, __vector __bool char __b) { 3191 int __cc; 3192 __builtin_s390_vchbs((__vector signed char)__b, __a, &__cc); 3193 return __cc == 3; 3194 } 3195 3196 // This prototype is deprecated. 3197 static inline __ATTRS_o_ai int 3198 vec_all_ge(__vector __bool char __a, __vector signed char __b) { 3199 int __cc; 3200 __builtin_s390_vchbs(__b, (__vector signed char)__a, &__cc); 3201 return __cc == 3; 3202 } 3203 3204 static inline __ATTRS_o_ai int 3205 vec_all_ge(__vector unsigned char __a, __vector unsigned char __b) { 3206 int __cc; 3207 __builtin_s390_vchlbs(__b, __a, &__cc); 3208 return __cc == 3; 3209 } 3210 3211 // This prototype is deprecated. 3212 static inline __ATTRS_o_ai int 3213 vec_all_ge(__vector unsigned char __a, __vector __bool char __b) { 3214 int __cc; 3215 __builtin_s390_vchlbs((__vector unsigned char)__b, __a, &__cc); 3216 return __cc == 3; 3217 } 3218 3219 // This prototype is deprecated. 3220 static inline __ATTRS_o_ai int 3221 vec_all_ge(__vector __bool char __a, __vector unsigned char __b) { 3222 int __cc; 3223 __builtin_s390_vchlbs(__b, (__vector unsigned char)__a, &__cc); 3224 return __cc == 3; 3225 } 3226 3227 // This prototype is deprecated. 3228 static inline __ATTRS_o_ai int 3229 vec_all_ge(__vector __bool char __a, __vector __bool char __b) { 3230 int __cc; 3231 __builtin_s390_vchlbs((__vector unsigned char)__b, 3232 (__vector unsigned char)__a, &__cc); 3233 return __cc == 3; 3234 } 3235 3236 static inline __ATTRS_o_ai int 3237 vec_all_ge(__vector signed short __a, __vector signed short __b) { 3238 int __cc; 3239 __builtin_s390_vchhs(__b, __a, &__cc); 3240 return __cc == 3; 3241 } 3242 3243 // This prototype is deprecated. 3244 static inline __ATTRS_o_ai int 3245 vec_all_ge(__vector signed short __a, __vector __bool short __b) { 3246 int __cc; 3247 __builtin_s390_vchhs((__vector signed short)__b, __a, &__cc); 3248 return __cc == 3; 3249 } 3250 3251 // This prototype is deprecated. 3252 static inline __ATTRS_o_ai int 3253 vec_all_ge(__vector __bool short __a, __vector signed short __b) { 3254 int __cc; 3255 __builtin_s390_vchhs(__b, (__vector signed short)__a, &__cc); 3256 return __cc == 3; 3257 } 3258 3259 static inline __ATTRS_o_ai int 3260 vec_all_ge(__vector unsigned short __a, __vector unsigned short __b) { 3261 int __cc; 3262 __builtin_s390_vchlhs(__b, __a, &__cc); 3263 return __cc == 3; 3264 } 3265 3266 // This prototype is deprecated. 3267 static inline __ATTRS_o_ai int 3268 vec_all_ge(__vector unsigned short __a, __vector __bool short __b) { 3269 int __cc; 3270 __builtin_s390_vchlhs((__vector unsigned short)__b, __a, &__cc); 3271 return __cc == 3; 3272 } 3273 3274 // This prototype is deprecated. 3275 static inline __ATTRS_o_ai int 3276 vec_all_ge(__vector __bool short __a, __vector unsigned short __b) { 3277 int __cc; 3278 __builtin_s390_vchlhs(__b, (__vector unsigned short)__a, &__cc); 3279 return __cc == 3; 3280 } 3281 3282 // This prototype is deprecated. 3283 static inline __ATTRS_o_ai int 3284 vec_all_ge(__vector __bool short __a, __vector __bool short __b) { 3285 int __cc; 3286 __builtin_s390_vchlhs((__vector unsigned short)__b, 3287 (__vector unsigned short)__a, &__cc); 3288 return __cc == 3; 3289 } 3290 3291 static inline __ATTRS_o_ai int 3292 vec_all_ge(__vector signed int __a, __vector signed int __b) { 3293 int __cc; 3294 __builtin_s390_vchfs(__b, __a, &__cc); 3295 return __cc == 3; 3296 } 3297 3298 // This prototype is deprecated. 3299 static inline __ATTRS_o_ai int 3300 vec_all_ge(__vector signed int __a, __vector __bool int __b) { 3301 int __cc; 3302 __builtin_s390_vchfs((__vector signed int)__b, __a, &__cc); 3303 return __cc == 3; 3304 } 3305 3306 // This prototype is deprecated. 3307 static inline __ATTRS_o_ai int 3308 vec_all_ge(__vector __bool int __a, __vector signed int __b) { 3309 int __cc; 3310 __builtin_s390_vchfs(__b, (__vector signed int)__a, &__cc); 3311 return __cc == 3; 3312 } 3313 3314 static inline __ATTRS_o_ai int 3315 vec_all_ge(__vector unsigned int __a, __vector unsigned int __b) { 3316 int __cc; 3317 __builtin_s390_vchlfs(__b, __a, &__cc); 3318 return __cc == 3; 3319 } 3320 3321 // This prototype is deprecated. 3322 static inline __ATTRS_o_ai int 3323 vec_all_ge(__vector unsigned int __a, __vector __bool int __b) { 3324 int __cc; 3325 __builtin_s390_vchlfs((__vector unsigned int)__b, __a, &__cc); 3326 return __cc == 3; 3327 } 3328 3329 // This prototype is deprecated. 3330 static inline __ATTRS_o_ai int 3331 vec_all_ge(__vector __bool int __a, __vector unsigned int __b) { 3332 int __cc; 3333 __builtin_s390_vchlfs(__b, (__vector unsigned int)__a, &__cc); 3334 return __cc == 3; 3335 } 3336 3337 // This prototype is deprecated. 3338 static inline __ATTRS_o_ai int 3339 vec_all_ge(__vector __bool int __a, __vector __bool int __b) { 3340 int __cc; 3341 __builtin_s390_vchlfs((__vector unsigned int)__b, 3342 (__vector unsigned int)__a, &__cc); 3343 return __cc == 3; 3344 } 3345 3346 static inline __ATTRS_o_ai int 3347 vec_all_ge(__vector signed long long __a, __vector signed long long __b) { 3348 int __cc; 3349 __builtin_s390_vchgs(__b, __a, &__cc); 3350 return __cc == 3; 3351 } 3352 3353 // This prototype is deprecated. 3354 static inline __ATTRS_o_ai int 3355 vec_all_ge(__vector signed long long __a, __vector __bool long long __b) { 3356 int __cc; 3357 __builtin_s390_vchgs((__vector signed long long)__b, __a, &__cc); 3358 return __cc == 3; 3359 } 3360 3361 // This prototype is deprecated. 3362 static inline __ATTRS_o_ai int 3363 vec_all_ge(__vector __bool long long __a, __vector signed long long __b) { 3364 int __cc; 3365 __builtin_s390_vchgs(__b, (__vector signed long long)__a, &__cc); 3366 return __cc == 3; 3367 } 3368 3369 static inline __ATTRS_o_ai int 3370 vec_all_ge(__vector unsigned long long __a, __vector unsigned long long __b) { 3371 int __cc; 3372 __builtin_s390_vchlgs(__b, __a, &__cc); 3373 return __cc == 3; 3374 } 3375 3376 // This prototype is deprecated. 3377 static inline __ATTRS_o_ai int 3378 vec_all_ge(__vector unsigned long long __a, __vector __bool long long __b) { 3379 int __cc; 3380 __builtin_s390_vchlgs((__vector unsigned long long)__b, __a, &__cc); 3381 return __cc == 3; 3382 } 3383 3384 // This prototype is deprecated. 3385 static inline __ATTRS_o_ai int 3386 vec_all_ge(__vector __bool long long __a, __vector unsigned long long __b) { 3387 int __cc; 3388 __builtin_s390_vchlgs(__b, (__vector unsigned long long)__a, &__cc); 3389 return __cc == 3; 3390 } 3391 3392 // This prototype is deprecated. 3393 static inline __ATTRS_o_ai int 3394 vec_all_ge(__vector __bool long long __a, __vector __bool long long __b) { 3395 int __cc; 3396 __builtin_s390_vchlgs((__vector unsigned long long)__b, 3397 (__vector unsigned long long)__a, &__cc); 3398 return __cc == 3; 3399 } 3400 3401 #if __ARCH__ >= 12 3402 static inline __ATTRS_o_ai int 3403 vec_all_ge(__vector float __a, __vector float __b) { 3404 int __cc; 3405 __builtin_s390_vfchesbs(__a, __b, &__cc); 3406 return __cc == 0; 3407 } 3408 #endif 3409 3410 static inline __ATTRS_o_ai int 3411 vec_all_ge(__vector double __a, __vector double __b) { 3412 int __cc; 3413 __builtin_s390_vfchedbs(__a, __b, &__cc); 3414 return __cc == 0; 3415 } 3416 3417 /*-- vec_all_gt -------------------------------------------------------------*/ 3418 3419 static inline __ATTRS_o_ai int 3420 vec_all_gt(__vector signed char __a, __vector signed char __b) { 3421 int __cc; 3422 __builtin_s390_vchbs(__a, __b, &__cc); 3423 return __cc == 0; 3424 } 3425 3426 // This prototype is deprecated. 3427 static inline __ATTRS_o_ai int 3428 vec_all_gt(__vector signed char __a, __vector __bool char __b) { 3429 int __cc; 3430 __builtin_s390_vchbs(__a, (__vector signed char)__b, &__cc); 3431 return __cc == 0; 3432 } 3433 3434 // This prototype is deprecated. 3435 static inline __ATTRS_o_ai int 3436 vec_all_gt(__vector __bool char __a, __vector signed char __b) { 3437 int __cc; 3438 __builtin_s390_vchbs((__vector signed char)__a, __b, &__cc); 3439 return __cc == 0; 3440 } 3441 3442 static inline __ATTRS_o_ai int 3443 vec_all_gt(__vector unsigned char __a, __vector unsigned char __b) { 3444 int __cc; 3445 __builtin_s390_vchlbs(__a, __b, &__cc); 3446 return __cc == 0; 3447 } 3448 3449 // This prototype is deprecated. 3450 static inline __ATTRS_o_ai int 3451 vec_all_gt(__vector unsigned char __a, __vector __bool char __b) { 3452 int __cc; 3453 __builtin_s390_vchlbs(__a, (__vector unsigned char)__b, &__cc); 3454 return __cc == 0; 3455 } 3456 3457 // This prototype is deprecated. 3458 static inline __ATTRS_o_ai int 3459 vec_all_gt(__vector __bool char __a, __vector unsigned char __b) { 3460 int __cc; 3461 __builtin_s390_vchlbs((__vector unsigned char)__a, __b, &__cc); 3462 return __cc == 0; 3463 } 3464 3465 // This prototype is deprecated. 3466 static inline __ATTRS_o_ai int 3467 vec_all_gt(__vector __bool char __a, __vector __bool char __b) { 3468 int __cc; 3469 __builtin_s390_vchlbs((__vector unsigned char)__a, 3470 (__vector unsigned char)__b, &__cc); 3471 return __cc == 0; 3472 } 3473 3474 static inline __ATTRS_o_ai int 3475 vec_all_gt(__vector signed short __a, __vector signed short __b) { 3476 int __cc; 3477 __builtin_s390_vchhs(__a, __b, &__cc); 3478 return __cc == 0; 3479 } 3480 3481 // This prototype is deprecated. 3482 static inline __ATTRS_o_ai int 3483 vec_all_gt(__vector signed short __a, __vector __bool short __b) { 3484 int __cc; 3485 __builtin_s390_vchhs(__a, (__vector signed short)__b, &__cc); 3486 return __cc == 0; 3487 } 3488 3489 // This prototype is deprecated. 3490 static inline __ATTRS_o_ai int 3491 vec_all_gt(__vector __bool short __a, __vector signed short __b) { 3492 int __cc; 3493 __builtin_s390_vchhs((__vector signed short)__a, __b, &__cc); 3494 return __cc == 0; 3495 } 3496 3497 static inline __ATTRS_o_ai int 3498 vec_all_gt(__vector unsigned short __a, __vector unsigned short __b) { 3499 int __cc; 3500 __builtin_s390_vchlhs(__a, __b, &__cc); 3501 return __cc == 0; 3502 } 3503 3504 // This prototype is deprecated. 3505 static inline __ATTRS_o_ai int 3506 vec_all_gt(__vector unsigned short __a, __vector __bool short __b) { 3507 int __cc; 3508 __builtin_s390_vchlhs(__a, (__vector unsigned short)__b, &__cc); 3509 return __cc == 0; 3510 } 3511 3512 // This prototype is deprecated. 3513 static inline __ATTRS_o_ai int 3514 vec_all_gt(__vector __bool short __a, __vector unsigned short __b) { 3515 int __cc; 3516 __builtin_s390_vchlhs((__vector unsigned short)__a, __b, &__cc); 3517 return __cc == 0; 3518 } 3519 3520 // This prototype is deprecated. 3521 static inline __ATTRS_o_ai int 3522 vec_all_gt(__vector __bool short __a, __vector __bool short __b) { 3523 int __cc; 3524 __builtin_s390_vchlhs((__vector unsigned short)__a, 3525 (__vector unsigned short)__b, &__cc); 3526 return __cc == 0; 3527 } 3528 3529 static inline __ATTRS_o_ai int 3530 vec_all_gt(__vector signed int __a, __vector signed int __b) { 3531 int __cc; 3532 __builtin_s390_vchfs(__a, __b, &__cc); 3533 return __cc == 0; 3534 } 3535 3536 // This prototype is deprecated. 3537 static inline __ATTRS_o_ai int 3538 vec_all_gt(__vector signed int __a, __vector __bool int __b) { 3539 int __cc; 3540 __builtin_s390_vchfs(__a, (__vector signed int)__b, &__cc); 3541 return __cc == 0; 3542 } 3543 3544 // This prototype is deprecated. 3545 static inline __ATTRS_o_ai int 3546 vec_all_gt(__vector __bool int __a, __vector signed int __b) { 3547 int __cc; 3548 __builtin_s390_vchfs((__vector signed int)__a, __b, &__cc); 3549 return __cc == 0; 3550 } 3551 3552 static inline __ATTRS_o_ai int 3553 vec_all_gt(__vector unsigned int __a, __vector unsigned int __b) { 3554 int __cc; 3555 __builtin_s390_vchlfs(__a, __b, &__cc); 3556 return __cc == 0; 3557 } 3558 3559 // This prototype is deprecated. 3560 static inline __ATTRS_o_ai int 3561 vec_all_gt(__vector unsigned int __a, __vector __bool int __b) { 3562 int __cc; 3563 __builtin_s390_vchlfs(__a, (__vector unsigned int)__b, &__cc); 3564 return __cc == 0; 3565 } 3566 3567 // This prototype is deprecated. 3568 static inline __ATTRS_o_ai int 3569 vec_all_gt(__vector __bool int __a, __vector unsigned int __b) { 3570 int __cc; 3571 __builtin_s390_vchlfs((__vector unsigned int)__a, __b, &__cc); 3572 return __cc == 0; 3573 } 3574 3575 // This prototype is deprecated. 3576 static inline __ATTRS_o_ai int 3577 vec_all_gt(__vector __bool int __a, __vector __bool int __b) { 3578 int __cc; 3579 __builtin_s390_vchlfs((__vector unsigned int)__a, 3580 (__vector unsigned int)__b, &__cc); 3581 return __cc == 0; 3582 } 3583 3584 static inline __ATTRS_o_ai int 3585 vec_all_gt(__vector signed long long __a, __vector signed long long __b) { 3586 int __cc; 3587 __builtin_s390_vchgs(__a, __b, &__cc); 3588 return __cc == 0; 3589 } 3590 3591 // This prototype is deprecated. 3592 static inline __ATTRS_o_ai int 3593 vec_all_gt(__vector signed long long __a, __vector __bool long long __b) { 3594 int __cc; 3595 __builtin_s390_vchgs(__a, (__vector signed long long)__b, &__cc); 3596 return __cc == 0; 3597 } 3598 3599 // This prototype is deprecated. 3600 static inline __ATTRS_o_ai int 3601 vec_all_gt(__vector __bool long long __a, __vector signed long long __b) { 3602 int __cc; 3603 __builtin_s390_vchgs((__vector signed long long)__a, __b, &__cc); 3604 return __cc == 0; 3605 } 3606 3607 static inline __ATTRS_o_ai int 3608 vec_all_gt(__vector unsigned long long __a, __vector unsigned long long __b) { 3609 int __cc; 3610 __builtin_s390_vchlgs(__a, __b, &__cc); 3611 return __cc == 0; 3612 } 3613 3614 // This prototype is deprecated. 3615 static inline __ATTRS_o_ai int 3616 vec_all_gt(__vector unsigned long long __a, __vector __bool long long __b) { 3617 int __cc; 3618 __builtin_s390_vchlgs(__a, (__vector unsigned long long)__b, &__cc); 3619 return __cc == 0; 3620 } 3621 3622 // This prototype is deprecated. 3623 static inline __ATTRS_o_ai int 3624 vec_all_gt(__vector __bool long long __a, __vector unsigned long long __b) { 3625 int __cc; 3626 __builtin_s390_vchlgs((__vector unsigned long long)__a, __b, &__cc); 3627 return __cc == 0; 3628 } 3629 3630 // This prototype is deprecated. 3631 static inline __ATTRS_o_ai int 3632 vec_all_gt(__vector __bool long long __a, __vector __bool long long __b) { 3633 int __cc; 3634 __builtin_s390_vchlgs((__vector unsigned long long)__a, 3635 (__vector unsigned long long)__b, &__cc); 3636 return __cc == 0; 3637 } 3638 3639 #if __ARCH__ >= 12 3640 static inline __ATTRS_o_ai int 3641 vec_all_gt(__vector float __a, __vector float __b) { 3642 int __cc; 3643 __builtin_s390_vfchsbs(__a, __b, &__cc); 3644 return __cc == 0; 3645 } 3646 #endif 3647 3648 static inline __ATTRS_o_ai int 3649 vec_all_gt(__vector double __a, __vector double __b) { 3650 int __cc; 3651 __builtin_s390_vfchdbs(__a, __b, &__cc); 3652 return __cc == 0; 3653 } 3654 3655 /*-- vec_all_le -------------------------------------------------------------*/ 3656 3657 static inline __ATTRS_o_ai int 3658 vec_all_le(__vector signed char __a, __vector signed char __b) { 3659 int __cc; 3660 __builtin_s390_vchbs(__a, __b, &__cc); 3661 return __cc == 3; 3662 } 3663 3664 // This prototype is deprecated. 3665 static inline __ATTRS_o_ai int 3666 vec_all_le(__vector signed char __a, __vector __bool char __b) { 3667 int __cc; 3668 __builtin_s390_vchbs(__a, (__vector signed char)__b, &__cc); 3669 return __cc == 3; 3670 } 3671 3672 // This prototype is deprecated. 3673 static inline __ATTRS_o_ai int 3674 vec_all_le(__vector __bool char __a, __vector signed char __b) { 3675 int __cc; 3676 __builtin_s390_vchbs((__vector signed char)__a, __b, &__cc); 3677 return __cc == 3; 3678 } 3679 3680 static inline __ATTRS_o_ai int 3681 vec_all_le(__vector unsigned char __a, __vector unsigned char __b) { 3682 int __cc; 3683 __builtin_s390_vchlbs(__a, __b, &__cc); 3684 return __cc == 3; 3685 } 3686 3687 // This prototype is deprecated. 3688 static inline __ATTRS_o_ai int 3689 vec_all_le(__vector unsigned char __a, __vector __bool char __b) { 3690 int __cc; 3691 __builtin_s390_vchlbs(__a, (__vector unsigned char)__b, &__cc); 3692 return __cc == 3; 3693 } 3694 3695 // This prototype is deprecated. 3696 static inline __ATTRS_o_ai int 3697 vec_all_le(__vector __bool char __a, __vector unsigned char __b) { 3698 int __cc; 3699 __builtin_s390_vchlbs((__vector unsigned char)__a, __b, &__cc); 3700 return __cc == 3; 3701 } 3702 3703 // This prototype is deprecated. 3704 static inline __ATTRS_o_ai int 3705 vec_all_le(__vector __bool char __a, __vector __bool char __b) { 3706 int __cc; 3707 __builtin_s390_vchlbs((__vector unsigned char)__a, 3708 (__vector unsigned char)__b, &__cc); 3709 return __cc == 3; 3710 } 3711 3712 static inline __ATTRS_o_ai int 3713 vec_all_le(__vector signed short __a, __vector signed short __b) { 3714 int __cc; 3715 __builtin_s390_vchhs(__a, __b, &__cc); 3716 return __cc == 3; 3717 } 3718 3719 // This prototype is deprecated. 3720 static inline __ATTRS_o_ai int 3721 vec_all_le(__vector signed short __a, __vector __bool short __b) { 3722 int __cc; 3723 __builtin_s390_vchhs(__a, (__vector signed short)__b, &__cc); 3724 return __cc == 3; 3725 } 3726 3727 // This prototype is deprecated. 3728 static inline __ATTRS_o_ai int 3729 vec_all_le(__vector __bool short __a, __vector signed short __b) { 3730 int __cc; 3731 __builtin_s390_vchhs((__vector signed short)__a, __b, &__cc); 3732 return __cc == 3; 3733 } 3734 3735 static inline __ATTRS_o_ai int 3736 vec_all_le(__vector unsigned short __a, __vector unsigned short __b) { 3737 int __cc; 3738 __builtin_s390_vchlhs(__a, __b, &__cc); 3739 return __cc == 3; 3740 } 3741 3742 // This prototype is deprecated. 3743 static inline __ATTRS_o_ai int 3744 vec_all_le(__vector unsigned short __a, __vector __bool short __b) { 3745 int __cc; 3746 __builtin_s390_vchlhs(__a, (__vector unsigned short)__b, &__cc); 3747 return __cc == 3; 3748 } 3749 3750 // This prototype is deprecated. 3751 static inline __ATTRS_o_ai int 3752 vec_all_le(__vector __bool short __a, __vector unsigned short __b) { 3753 int __cc; 3754 __builtin_s390_vchlhs((__vector unsigned short)__a, __b, &__cc); 3755 return __cc == 3; 3756 } 3757 3758 // This prototype is deprecated. 3759 static inline __ATTRS_o_ai int 3760 vec_all_le(__vector __bool short __a, __vector __bool short __b) { 3761 int __cc; 3762 __builtin_s390_vchlhs((__vector unsigned short)__a, 3763 (__vector unsigned short)__b, &__cc); 3764 return __cc == 3; 3765 } 3766 3767 static inline __ATTRS_o_ai int 3768 vec_all_le(__vector signed int __a, __vector signed int __b) { 3769 int __cc; 3770 __builtin_s390_vchfs(__a, __b, &__cc); 3771 return __cc == 3; 3772 } 3773 3774 // This prototype is deprecated. 3775 static inline __ATTRS_o_ai int 3776 vec_all_le(__vector signed int __a, __vector __bool int __b) { 3777 int __cc; 3778 __builtin_s390_vchfs(__a, (__vector signed int)__b, &__cc); 3779 return __cc == 3; 3780 } 3781 3782 // This prototype is deprecated. 3783 static inline __ATTRS_o_ai int 3784 vec_all_le(__vector __bool int __a, __vector signed int __b) { 3785 int __cc; 3786 __builtin_s390_vchfs((__vector signed int)__a, __b, &__cc); 3787 return __cc == 3; 3788 } 3789 3790 static inline __ATTRS_o_ai int 3791 vec_all_le(__vector unsigned int __a, __vector unsigned int __b) { 3792 int __cc; 3793 __builtin_s390_vchlfs(__a, __b, &__cc); 3794 return __cc == 3; 3795 } 3796 3797 // This prototype is deprecated. 3798 static inline __ATTRS_o_ai int 3799 vec_all_le(__vector unsigned int __a, __vector __bool int __b) { 3800 int __cc; 3801 __builtin_s390_vchlfs(__a, (__vector unsigned int)__b, &__cc); 3802 return __cc == 3; 3803 } 3804 3805 // This prototype is deprecated. 3806 static inline __ATTRS_o_ai int 3807 vec_all_le(__vector __bool int __a, __vector unsigned int __b) { 3808 int __cc; 3809 __builtin_s390_vchlfs((__vector unsigned int)__a, __b, &__cc); 3810 return __cc == 3; 3811 } 3812 3813 // This prototype is deprecated. 3814 static inline __ATTRS_o_ai int 3815 vec_all_le(__vector __bool int __a, __vector __bool int __b) { 3816 int __cc; 3817 __builtin_s390_vchlfs((__vector unsigned int)__a, 3818 (__vector unsigned int)__b, &__cc); 3819 return __cc == 3; 3820 } 3821 3822 static inline __ATTRS_o_ai int 3823 vec_all_le(__vector signed long long __a, __vector signed long long __b) { 3824 int __cc; 3825 __builtin_s390_vchgs(__a, __b, &__cc); 3826 return __cc == 3; 3827 } 3828 3829 // This prototype is deprecated. 3830 static inline __ATTRS_o_ai int 3831 vec_all_le(__vector signed long long __a, __vector __bool long long __b) { 3832 int __cc; 3833 __builtin_s390_vchgs(__a, (__vector signed long long)__b, &__cc); 3834 return __cc == 3; 3835 } 3836 3837 // This prototype is deprecated. 3838 static inline __ATTRS_o_ai int 3839 vec_all_le(__vector __bool long long __a, __vector signed long long __b) { 3840 int __cc; 3841 __builtin_s390_vchgs((__vector signed long long)__a, __b, &__cc); 3842 return __cc == 3; 3843 } 3844 3845 static inline __ATTRS_o_ai int 3846 vec_all_le(__vector unsigned long long __a, __vector unsigned long long __b) { 3847 int __cc; 3848 __builtin_s390_vchlgs(__a, __b, &__cc); 3849 return __cc == 3; 3850 } 3851 3852 // This prototype is deprecated. 3853 static inline __ATTRS_o_ai int 3854 vec_all_le(__vector unsigned long long __a, __vector __bool long long __b) { 3855 int __cc; 3856 __builtin_s390_vchlgs(__a, (__vector unsigned long long)__b, &__cc); 3857 return __cc == 3; 3858 } 3859 3860 // This prototype is deprecated. 3861 static inline __ATTRS_o_ai int 3862 vec_all_le(__vector __bool long long __a, __vector unsigned long long __b) { 3863 int __cc; 3864 __builtin_s390_vchlgs((__vector unsigned long long)__a, __b, &__cc); 3865 return __cc == 3; 3866 } 3867 3868 // This prototype is deprecated. 3869 static inline __ATTRS_o_ai int 3870 vec_all_le(__vector __bool long long __a, __vector __bool long long __b) { 3871 int __cc; 3872 __builtin_s390_vchlgs((__vector unsigned long long)__a, 3873 (__vector unsigned long long)__b, &__cc); 3874 return __cc == 3; 3875 } 3876 3877 #if __ARCH__ >= 12 3878 static inline __ATTRS_o_ai int 3879 vec_all_le(__vector float __a, __vector float __b) { 3880 int __cc; 3881 __builtin_s390_vfchesbs(__b, __a, &__cc); 3882 return __cc == 0; 3883 } 3884 #endif 3885 3886 static inline __ATTRS_o_ai int 3887 vec_all_le(__vector double __a, __vector double __b) { 3888 int __cc; 3889 __builtin_s390_vfchedbs(__b, __a, &__cc); 3890 return __cc == 0; 3891 } 3892 3893 /*-- vec_all_lt -------------------------------------------------------------*/ 3894 3895 static inline __ATTRS_o_ai int 3896 vec_all_lt(__vector signed char __a, __vector signed char __b) { 3897 int __cc; 3898 __builtin_s390_vchbs(__b, __a, &__cc); 3899 return __cc == 0; 3900 } 3901 3902 // This prototype is deprecated. 3903 static inline __ATTRS_o_ai int 3904 vec_all_lt(__vector signed char __a, __vector __bool char __b) { 3905 int __cc; 3906 __builtin_s390_vchbs((__vector signed char)__b, __a, &__cc); 3907 return __cc == 0; 3908 } 3909 3910 // This prototype is deprecated. 3911 static inline __ATTRS_o_ai int 3912 vec_all_lt(__vector __bool char __a, __vector signed char __b) { 3913 int __cc; 3914 __builtin_s390_vchbs(__b, (__vector signed char)__a, &__cc); 3915 return __cc == 0; 3916 } 3917 3918 static inline __ATTRS_o_ai int 3919 vec_all_lt(__vector unsigned char __a, __vector unsigned char __b) { 3920 int __cc; 3921 __builtin_s390_vchlbs(__b, __a, &__cc); 3922 return __cc == 0; 3923 } 3924 3925 // This prototype is deprecated. 3926 static inline __ATTRS_o_ai int 3927 vec_all_lt(__vector unsigned char __a, __vector __bool char __b) { 3928 int __cc; 3929 __builtin_s390_vchlbs((__vector unsigned char)__b, __a, &__cc); 3930 return __cc == 0; 3931 } 3932 3933 // This prototype is deprecated. 3934 static inline __ATTRS_o_ai int 3935 vec_all_lt(__vector __bool char __a, __vector unsigned char __b) { 3936 int __cc; 3937 __builtin_s390_vchlbs(__b, (__vector unsigned char)__a, &__cc); 3938 return __cc == 0; 3939 } 3940 3941 // This prototype is deprecated. 3942 static inline __ATTRS_o_ai int 3943 vec_all_lt(__vector __bool char __a, __vector __bool char __b) { 3944 int __cc; 3945 __builtin_s390_vchlbs((__vector unsigned char)__b, 3946 (__vector unsigned char)__a, &__cc); 3947 return __cc == 0; 3948 } 3949 3950 static inline __ATTRS_o_ai int 3951 vec_all_lt(__vector signed short __a, __vector signed short __b) { 3952 int __cc; 3953 __builtin_s390_vchhs(__b, __a, &__cc); 3954 return __cc == 0; 3955 } 3956 3957 // This prototype is deprecated. 3958 static inline __ATTRS_o_ai int 3959 vec_all_lt(__vector signed short __a, __vector __bool short __b) { 3960 int __cc; 3961 __builtin_s390_vchhs((__vector signed short)__b, __a, &__cc); 3962 return __cc == 0; 3963 } 3964 3965 // This prototype is deprecated. 3966 static inline __ATTRS_o_ai int 3967 vec_all_lt(__vector __bool short __a, __vector signed short __b) { 3968 int __cc; 3969 __builtin_s390_vchhs(__b, (__vector signed short)__a, &__cc); 3970 return __cc == 0; 3971 } 3972 3973 static inline __ATTRS_o_ai int 3974 vec_all_lt(__vector unsigned short __a, __vector unsigned short __b) { 3975 int __cc; 3976 __builtin_s390_vchlhs(__b, __a, &__cc); 3977 return __cc == 0; 3978 } 3979 3980 // This prototype is deprecated. 3981 static inline __ATTRS_o_ai int 3982 vec_all_lt(__vector unsigned short __a, __vector __bool short __b) { 3983 int __cc; 3984 __builtin_s390_vchlhs((__vector unsigned short)__b, __a, &__cc); 3985 return __cc == 0; 3986 } 3987 3988 // This prototype is deprecated. 3989 static inline __ATTRS_o_ai int 3990 vec_all_lt(__vector __bool short __a, __vector unsigned short __b) { 3991 int __cc; 3992 __builtin_s390_vchlhs(__b, (__vector unsigned short)__a, &__cc); 3993 return __cc == 0; 3994 } 3995 3996 // This prototype is deprecated. 3997 static inline __ATTRS_o_ai int 3998 vec_all_lt(__vector __bool short __a, __vector __bool short __b) { 3999 int __cc; 4000 __builtin_s390_vchlhs((__vector unsigned short)__b, 4001 (__vector unsigned short)__a, &__cc); 4002 return __cc == 0; 4003 } 4004 4005 static inline __ATTRS_o_ai int 4006 vec_all_lt(__vector signed int __a, __vector signed int __b) { 4007 int __cc; 4008 __builtin_s390_vchfs(__b, __a, &__cc); 4009 return __cc == 0; 4010 } 4011 4012 // This prototype is deprecated. 4013 static inline __ATTRS_o_ai int 4014 vec_all_lt(__vector signed int __a, __vector __bool int __b) { 4015 int __cc; 4016 __builtin_s390_vchfs((__vector signed int)__b, __a, &__cc); 4017 return __cc == 0; 4018 } 4019 4020 // This prototype is deprecated. 4021 static inline __ATTRS_o_ai int 4022 vec_all_lt(__vector __bool int __a, __vector signed int __b) { 4023 int __cc; 4024 __builtin_s390_vchfs(__b, (__vector signed int)__a, &__cc); 4025 return __cc == 0; 4026 } 4027 4028 static inline __ATTRS_o_ai int 4029 vec_all_lt(__vector unsigned int __a, __vector unsigned int __b) { 4030 int __cc; 4031 __builtin_s390_vchlfs(__b, __a, &__cc); 4032 return __cc == 0; 4033 } 4034 4035 // This prototype is deprecated. 4036 static inline __ATTRS_o_ai int 4037 vec_all_lt(__vector unsigned int __a, __vector __bool int __b) { 4038 int __cc; 4039 __builtin_s390_vchlfs((__vector unsigned int)__b, __a, &__cc); 4040 return __cc == 0; 4041 } 4042 4043 // This prototype is deprecated. 4044 static inline __ATTRS_o_ai int 4045 vec_all_lt(__vector __bool int __a, __vector unsigned int __b) { 4046 int __cc; 4047 __builtin_s390_vchlfs(__b, (__vector unsigned int)__a, &__cc); 4048 return __cc == 0; 4049 } 4050 4051 // This prototype is deprecated. 4052 static inline __ATTRS_o_ai int 4053 vec_all_lt(__vector __bool int __a, __vector __bool int __b) { 4054 int __cc; 4055 __builtin_s390_vchlfs((__vector unsigned int)__b, 4056 (__vector unsigned int)__a, &__cc); 4057 return __cc == 0; 4058 } 4059 4060 static inline __ATTRS_o_ai int 4061 vec_all_lt(__vector signed long long __a, __vector signed long long __b) { 4062 int __cc; 4063 __builtin_s390_vchgs(__b, __a, &__cc); 4064 return __cc == 0; 4065 } 4066 4067 // This prototype is deprecated. 4068 static inline __ATTRS_o_ai int 4069 vec_all_lt(__vector signed long long __a, __vector __bool long long __b) { 4070 int __cc; 4071 __builtin_s390_vchgs((__vector signed long long)__b, __a, &__cc); 4072 return __cc == 0; 4073 } 4074 4075 // This prototype is deprecated. 4076 static inline __ATTRS_o_ai int 4077 vec_all_lt(__vector __bool long long __a, __vector signed long long __b) { 4078 int __cc; 4079 __builtin_s390_vchgs(__b, (__vector signed long long)__a, &__cc); 4080 return __cc == 0; 4081 } 4082 4083 static inline __ATTRS_o_ai int 4084 vec_all_lt(__vector unsigned long long __a, __vector unsigned long long __b) { 4085 int __cc; 4086 __builtin_s390_vchlgs(__b, __a, &__cc); 4087 return __cc == 0; 4088 } 4089 4090 // This prototype is deprecated. 4091 static inline __ATTRS_o_ai int 4092 vec_all_lt(__vector unsigned long long __a, __vector __bool long long __b) { 4093 int __cc; 4094 __builtin_s390_vchlgs((__vector unsigned long long)__b, __a, &__cc); 4095 return __cc == 0; 4096 } 4097 4098 // This prototype is deprecated. 4099 static inline __ATTRS_o_ai int 4100 vec_all_lt(__vector __bool long long __a, __vector unsigned long long __b) { 4101 int __cc; 4102 __builtin_s390_vchlgs(__b, (__vector unsigned long long)__a, &__cc); 4103 return __cc == 0; 4104 } 4105 4106 // This prototype is deprecated. 4107 static inline __ATTRS_o_ai int 4108 vec_all_lt(__vector __bool long long __a, __vector __bool long long __b) { 4109 int __cc; 4110 __builtin_s390_vchlgs((__vector unsigned long long)__b, 4111 (__vector unsigned long long)__a, &__cc); 4112 return __cc == 0; 4113 } 4114 4115 #if __ARCH__ >= 12 4116 static inline __ATTRS_o_ai int 4117 vec_all_lt(__vector float __a, __vector float __b) { 4118 int __cc; 4119 __builtin_s390_vfchsbs(__b, __a, &__cc); 4120 return __cc == 0; 4121 } 4122 #endif 4123 4124 static inline __ATTRS_o_ai int 4125 vec_all_lt(__vector double __a, __vector double __b) { 4126 int __cc; 4127 __builtin_s390_vfchdbs(__b, __a, &__cc); 4128 return __cc == 0; 4129 } 4130 4131 /*-- vec_all_nge ------------------------------------------------------------*/ 4132 4133 #if __ARCH__ >= 12 4134 static inline __ATTRS_o_ai int 4135 vec_all_nge(__vector float __a, __vector float __b) { 4136 int __cc; 4137 __builtin_s390_vfchesbs(__a, __b, &__cc); 4138 return __cc == 3; 4139 } 4140 #endif 4141 4142 static inline __ATTRS_o_ai int 4143 vec_all_nge(__vector double __a, __vector double __b) { 4144 int __cc; 4145 __builtin_s390_vfchedbs(__a, __b, &__cc); 4146 return __cc == 3; 4147 } 4148 4149 /*-- vec_all_ngt ------------------------------------------------------------*/ 4150 4151 #if __ARCH__ >= 12 4152 static inline __ATTRS_o_ai int 4153 vec_all_ngt(__vector float __a, __vector float __b) { 4154 int __cc; 4155 __builtin_s390_vfchsbs(__a, __b, &__cc); 4156 return __cc == 3; 4157 } 4158 #endif 4159 4160 static inline __ATTRS_o_ai int 4161 vec_all_ngt(__vector double __a, __vector double __b) { 4162 int __cc; 4163 __builtin_s390_vfchdbs(__a, __b, &__cc); 4164 return __cc == 3; 4165 } 4166 4167 /*-- vec_all_nle ------------------------------------------------------------*/ 4168 4169 #if __ARCH__ >= 12 4170 static inline __ATTRS_o_ai int 4171 vec_all_nle(__vector float __a, __vector float __b) { 4172 int __cc; 4173 __builtin_s390_vfchesbs(__b, __a, &__cc); 4174 return __cc == 3; 4175 } 4176 #endif 4177 4178 static inline __ATTRS_o_ai int 4179 vec_all_nle(__vector double __a, __vector double __b) { 4180 int __cc; 4181 __builtin_s390_vfchedbs(__b, __a, &__cc); 4182 return __cc == 3; 4183 } 4184 4185 /*-- vec_all_nlt ------------------------------------------------------------*/ 4186 4187 #if __ARCH__ >= 12 4188 static inline __ATTRS_o_ai int 4189 vec_all_nlt(__vector float __a, __vector float __b) { 4190 int __cc; 4191 __builtin_s390_vfchsbs(__b, __a, &__cc); 4192 return __cc == 3; 4193 } 4194 #endif 4195 4196 static inline __ATTRS_o_ai int 4197 vec_all_nlt(__vector double __a, __vector double __b) { 4198 int __cc; 4199 __builtin_s390_vfchdbs(__b, __a, &__cc); 4200 return __cc == 3; 4201 } 4202 4203 /*-- vec_all_nan ------------------------------------------------------------*/ 4204 4205 #if __ARCH__ >= 12 4206 static inline __ATTRS_o_ai int 4207 vec_all_nan(__vector float __a) { 4208 int __cc; 4209 __builtin_s390_vftcisb(__a, 15, &__cc); 4210 return __cc == 0; 4211 } 4212 #endif 4213 4214 static inline __ATTRS_o_ai int 4215 vec_all_nan(__vector double __a) { 4216 int __cc; 4217 __builtin_s390_vftcidb(__a, 15, &__cc); 4218 return __cc == 0; 4219 } 4220 4221 /*-- vec_all_numeric --------------------------------------------------------*/ 4222 4223 #if __ARCH__ >= 12 4224 static inline __ATTRS_o_ai int 4225 vec_all_numeric(__vector float __a) { 4226 int __cc; 4227 __builtin_s390_vftcisb(__a, 15, &__cc); 4228 return __cc == 3; 4229 } 4230 #endif 4231 4232 static inline __ATTRS_o_ai int 4233 vec_all_numeric(__vector double __a) { 4234 int __cc; 4235 __builtin_s390_vftcidb(__a, 15, &__cc); 4236 return __cc == 3; 4237 } 4238 4239 /*-- vec_any_eq -------------------------------------------------------------*/ 4240 4241 static inline __ATTRS_o_ai int 4242 vec_any_eq(__vector signed char __a, __vector signed char __b) { 4243 int __cc; 4244 __builtin_s390_vceqbs(__a, __b, &__cc); 4245 return __cc <= 1; 4246 } 4247 4248 // This prototype is deprecated. 4249 static inline __ATTRS_o_ai int 4250 vec_any_eq(__vector signed char __a, __vector __bool char __b) { 4251 int __cc; 4252 __builtin_s390_vceqbs(__a, (__vector signed char)__b, &__cc); 4253 return __cc <= 1; 4254 } 4255 4256 // This prototype is deprecated. 4257 static inline __ATTRS_o_ai int 4258 vec_any_eq(__vector __bool char __a, __vector signed char __b) { 4259 int __cc; 4260 __builtin_s390_vceqbs((__vector signed char)__a, __b, &__cc); 4261 return __cc <= 1; 4262 } 4263 4264 static inline __ATTRS_o_ai int 4265 vec_any_eq(__vector unsigned char __a, __vector unsigned char __b) { 4266 int __cc; 4267 __builtin_s390_vceqbs((__vector signed char)__a, 4268 (__vector signed char)__b, &__cc); 4269 return __cc <= 1; 4270 } 4271 4272 // This prototype is deprecated. 4273 static inline __ATTRS_o_ai int 4274 vec_any_eq(__vector unsigned char __a, __vector __bool char __b) { 4275 int __cc; 4276 __builtin_s390_vceqbs((__vector signed char)__a, 4277 (__vector signed char)__b, &__cc); 4278 return __cc <= 1; 4279 } 4280 4281 // This prototype is deprecated. 4282 static inline __ATTRS_o_ai int 4283 vec_any_eq(__vector __bool char __a, __vector unsigned char __b) { 4284 int __cc; 4285 __builtin_s390_vceqbs((__vector signed char)__a, 4286 (__vector signed char)__b, &__cc); 4287 return __cc <= 1; 4288 } 4289 4290 static inline __ATTRS_o_ai int 4291 vec_any_eq(__vector __bool char __a, __vector __bool char __b) { 4292 int __cc; 4293 __builtin_s390_vceqbs((__vector signed char)__a, 4294 (__vector signed char)__b, &__cc); 4295 return __cc <= 1; 4296 } 4297 4298 static inline __ATTRS_o_ai int 4299 vec_any_eq(__vector signed short __a, __vector signed short __b) { 4300 int __cc; 4301 __builtin_s390_vceqhs(__a, __b, &__cc); 4302 return __cc <= 1; 4303 } 4304 4305 // This prototype is deprecated. 4306 static inline __ATTRS_o_ai int 4307 vec_any_eq(__vector signed short __a, __vector __bool short __b) { 4308 int __cc; 4309 __builtin_s390_vceqhs(__a, (__vector signed short)__b, &__cc); 4310 return __cc <= 1; 4311 } 4312 4313 // This prototype is deprecated. 4314 static inline __ATTRS_o_ai int 4315 vec_any_eq(__vector __bool short __a, __vector signed short __b) { 4316 int __cc; 4317 __builtin_s390_vceqhs((__vector signed short)__a, __b, &__cc); 4318 return __cc <= 1; 4319 } 4320 4321 static inline __ATTRS_o_ai int 4322 vec_any_eq(__vector unsigned short __a, __vector unsigned short __b) { 4323 int __cc; 4324 __builtin_s390_vceqhs((__vector signed short)__a, 4325 (__vector signed short)__b, &__cc); 4326 return __cc <= 1; 4327 } 4328 4329 // This prototype is deprecated. 4330 static inline __ATTRS_o_ai int 4331 vec_any_eq(__vector unsigned short __a, __vector __bool short __b) { 4332 int __cc; 4333 __builtin_s390_vceqhs((__vector signed short)__a, 4334 (__vector signed short)__b, &__cc); 4335 return __cc <= 1; 4336 } 4337 4338 // This prototype is deprecated. 4339 static inline __ATTRS_o_ai int 4340 vec_any_eq(__vector __bool short __a, __vector unsigned short __b) { 4341 int __cc; 4342 __builtin_s390_vceqhs((__vector signed short)__a, 4343 (__vector signed short)__b, &__cc); 4344 return __cc <= 1; 4345 } 4346 4347 static inline __ATTRS_o_ai int 4348 vec_any_eq(__vector __bool short __a, __vector __bool short __b) { 4349 int __cc; 4350 __builtin_s390_vceqhs((__vector signed short)__a, 4351 (__vector signed short)__b, &__cc); 4352 return __cc <= 1; 4353 } 4354 4355 static inline __ATTRS_o_ai int 4356 vec_any_eq(__vector signed int __a, __vector signed int __b) { 4357 int __cc; 4358 __builtin_s390_vceqfs(__a, __b, &__cc); 4359 return __cc <= 1; 4360 } 4361 4362 // This prototype is deprecated. 4363 static inline __ATTRS_o_ai int 4364 vec_any_eq(__vector signed int __a, __vector __bool int __b) { 4365 int __cc; 4366 __builtin_s390_vceqfs(__a, (__vector signed int)__b, &__cc); 4367 return __cc <= 1; 4368 } 4369 4370 // This prototype is deprecated. 4371 static inline __ATTRS_o_ai int 4372 vec_any_eq(__vector __bool int __a, __vector signed int __b) { 4373 int __cc; 4374 __builtin_s390_vceqfs((__vector signed int)__a, __b, &__cc); 4375 return __cc <= 1; 4376 } 4377 4378 static inline __ATTRS_o_ai int 4379 vec_any_eq(__vector unsigned int __a, __vector unsigned int __b) { 4380 int __cc; 4381 __builtin_s390_vceqfs((__vector signed int)__a, 4382 (__vector signed int)__b, &__cc); 4383 return __cc <= 1; 4384 } 4385 4386 // This prototype is deprecated. 4387 static inline __ATTRS_o_ai int 4388 vec_any_eq(__vector unsigned int __a, __vector __bool int __b) { 4389 int __cc; 4390 __builtin_s390_vceqfs((__vector signed int)__a, 4391 (__vector signed int)__b, &__cc); 4392 return __cc <= 1; 4393 } 4394 4395 // This prototype is deprecated. 4396 static inline __ATTRS_o_ai int 4397 vec_any_eq(__vector __bool int __a, __vector unsigned int __b) { 4398 int __cc; 4399 __builtin_s390_vceqfs((__vector signed int)__a, 4400 (__vector signed int)__b, &__cc); 4401 return __cc <= 1; 4402 } 4403 4404 static inline __ATTRS_o_ai int 4405 vec_any_eq(__vector __bool int __a, __vector __bool int __b) { 4406 int __cc; 4407 __builtin_s390_vceqfs((__vector signed int)__a, 4408 (__vector signed int)__b, &__cc); 4409 return __cc <= 1; 4410 } 4411 4412 static inline __ATTRS_o_ai int 4413 vec_any_eq(__vector signed long long __a, __vector signed long long __b) { 4414 int __cc; 4415 __builtin_s390_vceqgs(__a, __b, &__cc); 4416 return __cc <= 1; 4417 } 4418 4419 // This prototype is deprecated. 4420 static inline __ATTRS_o_ai int 4421 vec_any_eq(__vector signed long long __a, __vector __bool long long __b) { 4422 int __cc; 4423 __builtin_s390_vceqgs(__a, (__vector signed long long)__b, &__cc); 4424 return __cc <= 1; 4425 } 4426 4427 // This prototype is deprecated. 4428 static inline __ATTRS_o_ai int 4429 vec_any_eq(__vector __bool long long __a, __vector signed long long __b) { 4430 int __cc; 4431 __builtin_s390_vceqgs((__vector signed long long)__a, __b, &__cc); 4432 return __cc <= 1; 4433 } 4434 4435 static inline __ATTRS_o_ai int 4436 vec_any_eq(__vector unsigned long long __a, __vector unsigned long long __b) { 4437 int __cc; 4438 __builtin_s390_vceqgs((__vector signed long long)__a, 4439 (__vector signed long long)__b, &__cc); 4440 return __cc <= 1; 4441 } 4442 4443 // This prototype is deprecated. 4444 static inline __ATTRS_o_ai int 4445 vec_any_eq(__vector unsigned long long __a, __vector __bool long long __b) { 4446 int __cc; 4447 __builtin_s390_vceqgs((__vector signed long long)__a, 4448 (__vector signed long long)__b, &__cc); 4449 return __cc <= 1; 4450 } 4451 4452 // This prototype is deprecated. 4453 static inline __ATTRS_o_ai int 4454 vec_any_eq(__vector __bool long long __a, __vector unsigned long long __b) { 4455 int __cc; 4456 __builtin_s390_vceqgs((__vector signed long long)__a, 4457 (__vector signed long long)__b, &__cc); 4458 return __cc <= 1; 4459 } 4460 4461 static inline __ATTRS_o_ai int 4462 vec_any_eq(__vector __bool long long __a, __vector __bool long long __b) { 4463 int __cc; 4464 __builtin_s390_vceqgs((__vector signed long long)__a, 4465 (__vector signed long long)__b, &__cc); 4466 return __cc <= 1; 4467 } 4468 4469 #if __ARCH__ >= 12 4470 static inline __ATTRS_o_ai int 4471 vec_any_eq(__vector float __a, __vector float __b) { 4472 int __cc; 4473 __builtin_s390_vfcesbs(__a, __b, &__cc); 4474 return __cc <= 1; 4475 } 4476 #endif 4477 4478 static inline __ATTRS_o_ai int 4479 vec_any_eq(__vector double __a, __vector double __b) { 4480 int __cc; 4481 __builtin_s390_vfcedbs(__a, __b, &__cc); 4482 return __cc <= 1; 4483 } 4484 4485 /*-- vec_any_ne -------------------------------------------------------------*/ 4486 4487 static inline __ATTRS_o_ai int 4488 vec_any_ne(__vector signed char __a, __vector signed char __b) { 4489 int __cc; 4490 __builtin_s390_vceqbs(__a, __b, &__cc); 4491 return __cc != 0; 4492 } 4493 4494 // This prototype is deprecated. 4495 static inline __ATTRS_o_ai int 4496 vec_any_ne(__vector signed char __a, __vector __bool char __b) { 4497 int __cc; 4498 __builtin_s390_vceqbs(__a, (__vector signed char)__b, &__cc); 4499 return __cc != 0; 4500 } 4501 4502 // This prototype is deprecated. 4503 static inline __ATTRS_o_ai int 4504 vec_any_ne(__vector __bool char __a, __vector signed char __b) { 4505 int __cc; 4506 __builtin_s390_vceqbs((__vector signed char)__a, __b, &__cc); 4507 return __cc != 0; 4508 } 4509 4510 static inline __ATTRS_o_ai int 4511 vec_any_ne(__vector unsigned char __a, __vector unsigned char __b) { 4512 int __cc; 4513 __builtin_s390_vceqbs((__vector signed char)__a, 4514 (__vector signed char)__b, &__cc); 4515 return __cc != 0; 4516 } 4517 4518 // This prototype is deprecated. 4519 static inline __ATTRS_o_ai int 4520 vec_any_ne(__vector unsigned char __a, __vector __bool char __b) { 4521 int __cc; 4522 __builtin_s390_vceqbs((__vector signed char)__a, 4523 (__vector signed char)__b, &__cc); 4524 return __cc != 0; 4525 } 4526 4527 // This prototype is deprecated. 4528 static inline __ATTRS_o_ai int 4529 vec_any_ne(__vector __bool char __a, __vector unsigned char __b) { 4530 int __cc; 4531 __builtin_s390_vceqbs((__vector signed char)__a, 4532 (__vector signed char)__b, &__cc); 4533 return __cc != 0; 4534 } 4535 4536 static inline __ATTRS_o_ai int 4537 vec_any_ne(__vector __bool char __a, __vector __bool char __b) { 4538 int __cc; 4539 __builtin_s390_vceqbs((__vector signed char)__a, 4540 (__vector signed char)__b, &__cc); 4541 return __cc != 0; 4542 } 4543 4544 static inline __ATTRS_o_ai int 4545 vec_any_ne(__vector signed short __a, __vector signed short __b) { 4546 int __cc; 4547 __builtin_s390_vceqhs(__a, __b, &__cc); 4548 return __cc != 0; 4549 } 4550 4551 // This prototype is deprecated. 4552 static inline __ATTRS_o_ai int 4553 vec_any_ne(__vector signed short __a, __vector __bool short __b) { 4554 int __cc; 4555 __builtin_s390_vceqhs(__a, (__vector signed short)__b, &__cc); 4556 return __cc != 0; 4557 } 4558 4559 // This prototype is deprecated. 4560 static inline __ATTRS_o_ai int 4561 vec_any_ne(__vector __bool short __a, __vector signed short __b) { 4562 int __cc; 4563 __builtin_s390_vceqhs((__vector signed short)__a, __b, &__cc); 4564 return __cc != 0; 4565 } 4566 4567 static inline __ATTRS_o_ai int 4568 vec_any_ne(__vector unsigned short __a, __vector unsigned short __b) { 4569 int __cc; 4570 __builtin_s390_vceqhs((__vector signed short)__a, 4571 (__vector signed short)__b, &__cc); 4572 return __cc != 0; 4573 } 4574 4575 // This prototype is deprecated. 4576 static inline __ATTRS_o_ai int 4577 vec_any_ne(__vector unsigned short __a, __vector __bool short __b) { 4578 int __cc; 4579 __builtin_s390_vceqhs((__vector signed short)__a, 4580 (__vector signed short)__b, &__cc); 4581 return __cc != 0; 4582 } 4583 4584 // This prototype is deprecated. 4585 static inline __ATTRS_o_ai int 4586 vec_any_ne(__vector __bool short __a, __vector unsigned short __b) { 4587 int __cc; 4588 __builtin_s390_vceqhs((__vector signed short)__a, 4589 (__vector signed short)__b, &__cc); 4590 return __cc != 0; 4591 } 4592 4593 static inline __ATTRS_o_ai int 4594 vec_any_ne(__vector __bool short __a, __vector __bool short __b) { 4595 int __cc; 4596 __builtin_s390_vceqhs((__vector signed short)__a, 4597 (__vector signed short)__b, &__cc); 4598 return __cc != 0; 4599 } 4600 4601 static inline __ATTRS_o_ai int 4602 vec_any_ne(__vector signed int __a, __vector signed int __b) { 4603 int __cc; 4604 __builtin_s390_vceqfs(__a, __b, &__cc); 4605 return __cc != 0; 4606 } 4607 4608 // This prototype is deprecated. 4609 static inline __ATTRS_o_ai int 4610 vec_any_ne(__vector signed int __a, __vector __bool int __b) { 4611 int __cc; 4612 __builtin_s390_vceqfs(__a, (__vector signed int)__b, &__cc); 4613 return __cc != 0; 4614 } 4615 4616 // This prototype is deprecated. 4617 static inline __ATTRS_o_ai int 4618 vec_any_ne(__vector __bool int __a, __vector signed int __b) { 4619 int __cc; 4620 __builtin_s390_vceqfs((__vector signed int)__a, __b, &__cc); 4621 return __cc != 0; 4622 } 4623 4624 static inline __ATTRS_o_ai int 4625 vec_any_ne(__vector unsigned int __a, __vector unsigned int __b) { 4626 int __cc; 4627 __builtin_s390_vceqfs((__vector signed int)__a, 4628 (__vector signed int)__b, &__cc); 4629 return __cc != 0; 4630 } 4631 4632 // This prototype is deprecated. 4633 static inline __ATTRS_o_ai int 4634 vec_any_ne(__vector unsigned int __a, __vector __bool int __b) { 4635 int __cc; 4636 __builtin_s390_vceqfs((__vector signed int)__a, 4637 (__vector signed int)__b, &__cc); 4638 return __cc != 0; 4639 } 4640 4641 // This prototype is deprecated. 4642 static inline __ATTRS_o_ai int 4643 vec_any_ne(__vector __bool int __a, __vector unsigned int __b) { 4644 int __cc; 4645 __builtin_s390_vceqfs((__vector signed int)__a, 4646 (__vector signed int)__b, &__cc); 4647 return __cc != 0; 4648 } 4649 4650 static inline __ATTRS_o_ai int 4651 vec_any_ne(__vector __bool int __a, __vector __bool int __b) { 4652 int __cc; 4653 __builtin_s390_vceqfs((__vector signed int)__a, 4654 (__vector signed int)__b, &__cc); 4655 return __cc != 0; 4656 } 4657 4658 static inline __ATTRS_o_ai int 4659 vec_any_ne(__vector signed long long __a, __vector signed long long __b) { 4660 int __cc; 4661 __builtin_s390_vceqgs(__a, __b, &__cc); 4662 return __cc != 0; 4663 } 4664 4665 // This prototype is deprecated. 4666 static inline __ATTRS_o_ai int 4667 vec_any_ne(__vector signed long long __a, __vector __bool long long __b) { 4668 int __cc; 4669 __builtin_s390_vceqgs(__a, (__vector signed long long)__b, &__cc); 4670 return __cc != 0; 4671 } 4672 4673 // This prototype is deprecated. 4674 static inline __ATTRS_o_ai int 4675 vec_any_ne(__vector __bool long long __a, __vector signed long long __b) { 4676 int __cc; 4677 __builtin_s390_vceqgs((__vector signed long long)__a, __b, &__cc); 4678 return __cc != 0; 4679 } 4680 4681 static inline __ATTRS_o_ai int 4682 vec_any_ne(__vector unsigned long long __a, __vector unsigned long long __b) { 4683 int __cc; 4684 __builtin_s390_vceqgs((__vector signed long long)__a, 4685 (__vector signed long long)__b, &__cc); 4686 return __cc != 0; 4687 } 4688 4689 // This prototype is deprecated. 4690 static inline __ATTRS_o_ai int 4691 vec_any_ne(__vector unsigned long long __a, __vector __bool long long __b) { 4692 int __cc; 4693 __builtin_s390_vceqgs((__vector signed long long)__a, 4694 (__vector signed long long)__b, &__cc); 4695 return __cc != 0; 4696 } 4697 4698 // This prototype is deprecated. 4699 static inline __ATTRS_o_ai int 4700 vec_any_ne(__vector __bool long long __a, __vector unsigned long long __b) { 4701 int __cc; 4702 __builtin_s390_vceqgs((__vector signed long long)__a, 4703 (__vector signed long long)__b, &__cc); 4704 return __cc != 0; 4705 } 4706 4707 static inline __ATTRS_o_ai int 4708 vec_any_ne(__vector __bool long long __a, __vector __bool long long __b) { 4709 int __cc; 4710 __builtin_s390_vceqgs((__vector signed long long)__a, 4711 (__vector signed long long)__b, &__cc); 4712 return __cc != 0; 4713 } 4714 4715 #if __ARCH__ >= 12 4716 static inline __ATTRS_o_ai int 4717 vec_any_ne(__vector float __a, __vector float __b) { 4718 int __cc; 4719 __builtin_s390_vfcesbs(__a, __b, &__cc); 4720 return __cc != 0; 4721 } 4722 #endif 4723 4724 static inline __ATTRS_o_ai int 4725 vec_any_ne(__vector double __a, __vector double __b) { 4726 int __cc; 4727 __builtin_s390_vfcedbs(__a, __b, &__cc); 4728 return __cc != 0; 4729 } 4730 4731 /*-- vec_any_ge -------------------------------------------------------------*/ 4732 4733 static inline __ATTRS_o_ai int 4734 vec_any_ge(__vector signed char __a, __vector signed char __b) { 4735 int __cc; 4736 __builtin_s390_vchbs(__b, __a, &__cc); 4737 return __cc != 0; 4738 } 4739 4740 // This prototype is deprecated. 4741 static inline __ATTRS_o_ai int 4742 vec_any_ge(__vector signed char __a, __vector __bool char __b) { 4743 int __cc; 4744 __builtin_s390_vchbs((__vector signed char)__b, __a, &__cc); 4745 return __cc != 0; 4746 } 4747 4748 // This prototype is deprecated. 4749 static inline __ATTRS_o_ai int 4750 vec_any_ge(__vector __bool char __a, __vector signed char __b) { 4751 int __cc; 4752 __builtin_s390_vchbs(__b, (__vector signed char)__a, &__cc); 4753 return __cc != 0; 4754 } 4755 4756 static inline __ATTRS_o_ai int 4757 vec_any_ge(__vector unsigned char __a, __vector unsigned char __b) { 4758 int __cc; 4759 __builtin_s390_vchlbs(__b, __a, &__cc); 4760 return __cc != 0; 4761 } 4762 4763 // This prototype is deprecated. 4764 static inline __ATTRS_o_ai int 4765 vec_any_ge(__vector unsigned char __a, __vector __bool char __b) { 4766 int __cc; 4767 __builtin_s390_vchlbs((__vector unsigned char)__b, __a, &__cc); 4768 return __cc != 0; 4769 } 4770 4771 // This prototype is deprecated. 4772 static inline __ATTRS_o_ai int 4773 vec_any_ge(__vector __bool char __a, __vector unsigned char __b) { 4774 int __cc; 4775 __builtin_s390_vchlbs(__b, (__vector unsigned char)__a, &__cc); 4776 return __cc != 0; 4777 } 4778 4779 // This prototype is deprecated. 4780 static inline __ATTRS_o_ai int 4781 vec_any_ge(__vector __bool char __a, __vector __bool char __b) { 4782 int __cc; 4783 __builtin_s390_vchlbs((__vector unsigned char)__b, 4784 (__vector unsigned char)__a, &__cc); 4785 return __cc != 0; 4786 } 4787 4788 static inline __ATTRS_o_ai int 4789 vec_any_ge(__vector signed short __a, __vector signed short __b) { 4790 int __cc; 4791 __builtin_s390_vchhs(__b, __a, &__cc); 4792 return __cc != 0; 4793 } 4794 4795 // This prototype is deprecated. 4796 static inline __ATTRS_o_ai int 4797 vec_any_ge(__vector signed short __a, __vector __bool short __b) { 4798 int __cc; 4799 __builtin_s390_vchhs((__vector signed short)__b, __a, &__cc); 4800 return __cc != 0; 4801 } 4802 4803 // This prototype is deprecated. 4804 static inline __ATTRS_o_ai int 4805 vec_any_ge(__vector __bool short __a, __vector signed short __b) { 4806 int __cc; 4807 __builtin_s390_vchhs(__b, (__vector signed short)__a, &__cc); 4808 return __cc != 0; 4809 } 4810 4811 static inline __ATTRS_o_ai int 4812 vec_any_ge(__vector unsigned short __a, __vector unsigned short __b) { 4813 int __cc; 4814 __builtin_s390_vchlhs(__b, __a, &__cc); 4815 return __cc != 0; 4816 } 4817 4818 // This prototype is deprecated. 4819 static inline __ATTRS_o_ai int 4820 vec_any_ge(__vector unsigned short __a, __vector __bool short __b) { 4821 int __cc; 4822 __builtin_s390_vchlhs((__vector unsigned short)__b, __a, &__cc); 4823 return __cc != 0; 4824 } 4825 4826 // This prototype is deprecated. 4827 static inline __ATTRS_o_ai int 4828 vec_any_ge(__vector __bool short __a, __vector unsigned short __b) { 4829 int __cc; 4830 __builtin_s390_vchlhs(__b, (__vector unsigned short)__a, &__cc); 4831 return __cc != 0; 4832 } 4833 4834 // This prototype is deprecated. 4835 static inline __ATTRS_o_ai int 4836 vec_any_ge(__vector __bool short __a, __vector __bool short __b) { 4837 int __cc; 4838 __builtin_s390_vchlhs((__vector unsigned short)__b, 4839 (__vector unsigned short)__a, &__cc); 4840 return __cc != 0; 4841 } 4842 4843 static inline __ATTRS_o_ai int 4844 vec_any_ge(__vector signed int __a, __vector signed int __b) { 4845 int __cc; 4846 __builtin_s390_vchfs(__b, __a, &__cc); 4847 return __cc != 0; 4848 } 4849 4850 // This prototype is deprecated. 4851 static inline __ATTRS_o_ai int 4852 vec_any_ge(__vector signed int __a, __vector __bool int __b) { 4853 int __cc; 4854 __builtin_s390_vchfs((__vector signed int)__b, __a, &__cc); 4855 return __cc != 0; 4856 } 4857 4858 // This prototype is deprecated. 4859 static inline __ATTRS_o_ai int 4860 vec_any_ge(__vector __bool int __a, __vector signed int __b) { 4861 int __cc; 4862 __builtin_s390_vchfs(__b, (__vector signed int)__a, &__cc); 4863 return __cc != 0; 4864 } 4865 4866 static inline __ATTRS_o_ai int 4867 vec_any_ge(__vector unsigned int __a, __vector unsigned int __b) { 4868 int __cc; 4869 __builtin_s390_vchlfs(__b, __a, &__cc); 4870 return __cc != 0; 4871 } 4872 4873 // This prototype is deprecated. 4874 static inline __ATTRS_o_ai int 4875 vec_any_ge(__vector unsigned int __a, __vector __bool int __b) { 4876 int __cc; 4877 __builtin_s390_vchlfs((__vector unsigned int)__b, __a, &__cc); 4878 return __cc != 0; 4879 } 4880 4881 // This prototype is deprecated. 4882 static inline __ATTRS_o_ai int 4883 vec_any_ge(__vector __bool int __a, __vector unsigned int __b) { 4884 int __cc; 4885 __builtin_s390_vchlfs(__b, (__vector unsigned int)__a, &__cc); 4886 return __cc != 0; 4887 } 4888 4889 // This prototype is deprecated. 4890 static inline __ATTRS_o_ai int 4891 vec_any_ge(__vector __bool int __a, __vector __bool int __b) { 4892 int __cc; 4893 __builtin_s390_vchlfs((__vector unsigned int)__b, 4894 (__vector unsigned int)__a, &__cc); 4895 return __cc != 0; 4896 } 4897 4898 static inline __ATTRS_o_ai int 4899 vec_any_ge(__vector signed long long __a, __vector signed long long __b) { 4900 int __cc; 4901 __builtin_s390_vchgs(__b, __a, &__cc); 4902 return __cc != 0; 4903 } 4904 4905 // This prototype is deprecated. 4906 static inline __ATTRS_o_ai int 4907 vec_any_ge(__vector signed long long __a, __vector __bool long long __b) { 4908 int __cc; 4909 __builtin_s390_vchgs((__vector signed long long)__b, __a, &__cc); 4910 return __cc != 0; 4911 } 4912 4913 // This prototype is deprecated. 4914 static inline __ATTRS_o_ai int 4915 vec_any_ge(__vector __bool long long __a, __vector signed long long __b) { 4916 int __cc; 4917 __builtin_s390_vchgs(__b, (__vector signed long long)__a, &__cc); 4918 return __cc != 0; 4919 } 4920 4921 static inline __ATTRS_o_ai int 4922 vec_any_ge(__vector unsigned long long __a, __vector unsigned long long __b) { 4923 int __cc; 4924 __builtin_s390_vchlgs(__b, __a, &__cc); 4925 return __cc != 0; 4926 } 4927 4928 // This prototype is deprecated. 4929 static inline __ATTRS_o_ai int 4930 vec_any_ge(__vector unsigned long long __a, __vector __bool long long __b) { 4931 int __cc; 4932 __builtin_s390_vchlgs((__vector unsigned long long)__b, __a, &__cc); 4933 return __cc != 0; 4934 } 4935 4936 // This prototype is deprecated. 4937 static inline __ATTRS_o_ai int 4938 vec_any_ge(__vector __bool long long __a, __vector unsigned long long __b) { 4939 int __cc; 4940 __builtin_s390_vchlgs(__b, (__vector unsigned long long)__a, &__cc); 4941 return __cc != 0; 4942 } 4943 4944 // This prototype is deprecated. 4945 static inline __ATTRS_o_ai int 4946 vec_any_ge(__vector __bool long long __a, __vector __bool long long __b) { 4947 int __cc; 4948 __builtin_s390_vchlgs((__vector unsigned long long)__b, 4949 (__vector unsigned long long)__a, &__cc); 4950 return __cc != 0; 4951 } 4952 4953 #if __ARCH__ >= 12 4954 static inline __ATTRS_o_ai int 4955 vec_any_ge(__vector float __a, __vector float __b) { 4956 int __cc; 4957 __builtin_s390_vfchesbs(__a, __b, &__cc); 4958 return __cc <= 1; 4959 } 4960 #endif 4961 4962 static inline __ATTRS_o_ai int 4963 vec_any_ge(__vector double __a, __vector double __b) { 4964 int __cc; 4965 __builtin_s390_vfchedbs(__a, __b, &__cc); 4966 return __cc <= 1; 4967 } 4968 4969 /*-- vec_any_gt -------------------------------------------------------------*/ 4970 4971 static inline __ATTRS_o_ai int 4972 vec_any_gt(__vector signed char __a, __vector signed char __b) { 4973 int __cc; 4974 __builtin_s390_vchbs(__a, __b, &__cc); 4975 return __cc <= 1; 4976 } 4977 4978 // This prototype is deprecated. 4979 static inline __ATTRS_o_ai int 4980 vec_any_gt(__vector signed char __a, __vector __bool char __b) { 4981 int __cc; 4982 __builtin_s390_vchbs(__a, (__vector signed char)__b, &__cc); 4983 return __cc <= 1; 4984 } 4985 4986 // This prototype is deprecated. 4987 static inline __ATTRS_o_ai int 4988 vec_any_gt(__vector __bool char __a, __vector signed char __b) { 4989 int __cc; 4990 __builtin_s390_vchbs((__vector signed char)__a, __b, &__cc); 4991 return __cc <= 1; 4992 } 4993 4994 static inline __ATTRS_o_ai int 4995 vec_any_gt(__vector unsigned char __a, __vector unsigned char __b) { 4996 int __cc; 4997 __builtin_s390_vchlbs(__a, __b, &__cc); 4998 return __cc <= 1; 4999 } 5000 5001 // This prototype is deprecated. 5002 static inline __ATTRS_o_ai int 5003 vec_any_gt(__vector unsigned char __a, __vector __bool char __b) { 5004 int __cc; 5005 __builtin_s390_vchlbs(__a, (__vector unsigned char)__b, &__cc); 5006 return __cc <= 1; 5007 } 5008 5009 // This prototype is deprecated. 5010 static inline __ATTRS_o_ai int 5011 vec_any_gt(__vector __bool char __a, __vector unsigned char __b) { 5012 int __cc; 5013 __builtin_s390_vchlbs((__vector unsigned char)__a, __b, &__cc); 5014 return __cc <= 1; 5015 } 5016 5017 // This prototype is deprecated. 5018 static inline __ATTRS_o_ai int 5019 vec_any_gt(__vector __bool char __a, __vector __bool char __b) { 5020 int __cc; 5021 __builtin_s390_vchlbs((__vector unsigned char)__a, 5022 (__vector unsigned char)__b, &__cc); 5023 return __cc <= 1; 5024 } 5025 5026 static inline __ATTRS_o_ai int 5027 vec_any_gt(__vector signed short __a, __vector signed short __b) { 5028 int __cc; 5029 __builtin_s390_vchhs(__a, __b, &__cc); 5030 return __cc <= 1; 5031 } 5032 5033 // This prototype is deprecated. 5034 static inline __ATTRS_o_ai int 5035 vec_any_gt(__vector signed short __a, __vector __bool short __b) { 5036 int __cc; 5037 __builtin_s390_vchhs(__a, (__vector signed short)__b, &__cc); 5038 return __cc <= 1; 5039 } 5040 5041 // This prototype is deprecated. 5042 static inline __ATTRS_o_ai int 5043 vec_any_gt(__vector __bool short __a, __vector signed short __b) { 5044 int __cc; 5045 __builtin_s390_vchhs((__vector signed short)__a, __b, &__cc); 5046 return __cc <= 1; 5047 } 5048 5049 static inline __ATTRS_o_ai int 5050 vec_any_gt(__vector unsigned short __a, __vector unsigned short __b) { 5051 int __cc; 5052 __builtin_s390_vchlhs(__a, __b, &__cc); 5053 return __cc <= 1; 5054 } 5055 5056 // This prototype is deprecated. 5057 static inline __ATTRS_o_ai int 5058 vec_any_gt(__vector unsigned short __a, __vector __bool short __b) { 5059 int __cc; 5060 __builtin_s390_vchlhs(__a, (__vector unsigned short)__b, &__cc); 5061 return __cc <= 1; 5062 } 5063 5064 // This prototype is deprecated. 5065 static inline __ATTRS_o_ai int 5066 vec_any_gt(__vector __bool short __a, __vector unsigned short __b) { 5067 int __cc; 5068 __builtin_s390_vchlhs((__vector unsigned short)__a, __b, &__cc); 5069 return __cc <= 1; 5070 } 5071 5072 // This prototype is deprecated. 5073 static inline __ATTRS_o_ai int 5074 vec_any_gt(__vector __bool short __a, __vector __bool short __b) { 5075 int __cc; 5076 __builtin_s390_vchlhs((__vector unsigned short)__a, 5077 (__vector unsigned short)__b, &__cc); 5078 return __cc <= 1; 5079 } 5080 5081 static inline __ATTRS_o_ai int 5082 vec_any_gt(__vector signed int __a, __vector signed int __b) { 5083 int __cc; 5084 __builtin_s390_vchfs(__a, __b, &__cc); 5085 return __cc <= 1; 5086 } 5087 5088 // This prototype is deprecated. 5089 static inline __ATTRS_o_ai int 5090 vec_any_gt(__vector signed int __a, __vector __bool int __b) { 5091 int __cc; 5092 __builtin_s390_vchfs(__a, (__vector signed int)__b, &__cc); 5093 return __cc <= 1; 5094 } 5095 5096 // This prototype is deprecated. 5097 static inline __ATTRS_o_ai int 5098 vec_any_gt(__vector __bool int __a, __vector signed int __b) { 5099 int __cc; 5100 __builtin_s390_vchfs((__vector signed int)__a, __b, &__cc); 5101 return __cc <= 1; 5102 } 5103 5104 static inline __ATTRS_o_ai int 5105 vec_any_gt(__vector unsigned int __a, __vector unsigned int __b) { 5106 int __cc; 5107 __builtin_s390_vchlfs(__a, __b, &__cc); 5108 return __cc <= 1; 5109 } 5110 5111 // This prototype is deprecated. 5112 static inline __ATTRS_o_ai int 5113 vec_any_gt(__vector unsigned int __a, __vector __bool int __b) { 5114 int __cc; 5115 __builtin_s390_vchlfs(__a, (__vector unsigned int)__b, &__cc); 5116 return __cc <= 1; 5117 } 5118 5119 // This prototype is deprecated. 5120 static inline __ATTRS_o_ai int 5121 vec_any_gt(__vector __bool int __a, __vector unsigned int __b) { 5122 int __cc; 5123 __builtin_s390_vchlfs((__vector unsigned int)__a, __b, &__cc); 5124 return __cc <= 1; 5125 } 5126 5127 // This prototype is deprecated. 5128 static inline __ATTRS_o_ai int 5129 vec_any_gt(__vector __bool int __a, __vector __bool int __b) { 5130 int __cc; 5131 __builtin_s390_vchlfs((__vector unsigned int)__a, 5132 (__vector unsigned int)__b, &__cc); 5133 return __cc <= 1; 5134 } 5135 5136 static inline __ATTRS_o_ai int 5137 vec_any_gt(__vector signed long long __a, __vector signed long long __b) { 5138 int __cc; 5139 __builtin_s390_vchgs(__a, __b, &__cc); 5140 return __cc <= 1; 5141 } 5142 5143 // This prototype is deprecated. 5144 static inline __ATTRS_o_ai int 5145 vec_any_gt(__vector signed long long __a, __vector __bool long long __b) { 5146 int __cc; 5147 __builtin_s390_vchgs(__a, (__vector signed long long)__b, &__cc); 5148 return __cc <= 1; 5149 } 5150 5151 // This prototype is deprecated. 5152 static inline __ATTRS_o_ai int 5153 vec_any_gt(__vector __bool long long __a, __vector signed long long __b) { 5154 int __cc; 5155 __builtin_s390_vchgs((__vector signed long long)__a, __b, &__cc); 5156 return __cc <= 1; 5157 } 5158 5159 static inline __ATTRS_o_ai int 5160 vec_any_gt(__vector unsigned long long __a, __vector unsigned long long __b) { 5161 int __cc; 5162 __builtin_s390_vchlgs(__a, __b, &__cc); 5163 return __cc <= 1; 5164 } 5165 5166 // This prototype is deprecated. 5167 static inline __ATTRS_o_ai int 5168 vec_any_gt(__vector unsigned long long __a, __vector __bool long long __b) { 5169 int __cc; 5170 __builtin_s390_vchlgs(__a, (__vector unsigned long long)__b, &__cc); 5171 return __cc <= 1; 5172 } 5173 5174 // This prototype is deprecated. 5175 static inline __ATTRS_o_ai int 5176 vec_any_gt(__vector __bool long long __a, __vector unsigned long long __b) { 5177 int __cc; 5178 __builtin_s390_vchlgs((__vector unsigned long long)__a, __b, &__cc); 5179 return __cc <= 1; 5180 } 5181 5182 // This prototype is deprecated. 5183 static inline __ATTRS_o_ai int 5184 vec_any_gt(__vector __bool long long __a, __vector __bool long long __b) { 5185 int __cc; 5186 __builtin_s390_vchlgs((__vector unsigned long long)__a, 5187 (__vector unsigned long long)__b, &__cc); 5188 return __cc <= 1; 5189 } 5190 5191 #if __ARCH__ >= 12 5192 static inline __ATTRS_o_ai int 5193 vec_any_gt(__vector float __a, __vector float __b) { 5194 int __cc; 5195 __builtin_s390_vfchsbs(__a, __b, &__cc); 5196 return __cc <= 1; 5197 } 5198 #endif 5199 5200 static inline __ATTRS_o_ai int 5201 vec_any_gt(__vector double __a, __vector double __b) { 5202 int __cc; 5203 __builtin_s390_vfchdbs(__a, __b, &__cc); 5204 return __cc <= 1; 5205 } 5206 5207 /*-- vec_any_le -------------------------------------------------------------*/ 5208 5209 static inline __ATTRS_o_ai int 5210 vec_any_le(__vector signed char __a, __vector signed char __b) { 5211 int __cc; 5212 __builtin_s390_vchbs(__a, __b, &__cc); 5213 return __cc != 0; 5214 } 5215 5216 // This prototype is deprecated. 5217 static inline __ATTRS_o_ai int 5218 vec_any_le(__vector signed char __a, __vector __bool char __b) { 5219 int __cc; 5220 __builtin_s390_vchbs(__a, (__vector signed char)__b, &__cc); 5221 return __cc != 0; 5222 } 5223 5224 // This prototype is deprecated. 5225 static inline __ATTRS_o_ai int 5226 vec_any_le(__vector __bool char __a, __vector signed char __b) { 5227 int __cc; 5228 __builtin_s390_vchbs((__vector signed char)__a, __b, &__cc); 5229 return __cc != 0; 5230 } 5231 5232 static inline __ATTRS_o_ai int 5233 vec_any_le(__vector unsigned char __a, __vector unsigned char __b) { 5234 int __cc; 5235 __builtin_s390_vchlbs(__a, __b, &__cc); 5236 return __cc != 0; 5237 } 5238 5239 // This prototype is deprecated. 5240 static inline __ATTRS_o_ai int 5241 vec_any_le(__vector unsigned char __a, __vector __bool char __b) { 5242 int __cc; 5243 __builtin_s390_vchlbs(__a, (__vector unsigned char)__b, &__cc); 5244 return __cc != 0; 5245 } 5246 5247 // This prototype is deprecated. 5248 static inline __ATTRS_o_ai int 5249 vec_any_le(__vector __bool char __a, __vector unsigned char __b) { 5250 int __cc; 5251 __builtin_s390_vchlbs((__vector unsigned char)__a, __b, &__cc); 5252 return __cc != 0; 5253 } 5254 5255 // This prototype is deprecated. 5256 static inline __ATTRS_o_ai int 5257 vec_any_le(__vector __bool char __a, __vector __bool char __b) { 5258 int __cc; 5259 __builtin_s390_vchlbs((__vector unsigned char)__a, 5260 (__vector unsigned char)__b, &__cc); 5261 return __cc != 0; 5262 } 5263 5264 static inline __ATTRS_o_ai int 5265 vec_any_le(__vector signed short __a, __vector signed short __b) { 5266 int __cc; 5267 __builtin_s390_vchhs(__a, __b, &__cc); 5268 return __cc != 0; 5269 } 5270 5271 // This prototype is deprecated. 5272 static inline __ATTRS_o_ai int 5273 vec_any_le(__vector signed short __a, __vector __bool short __b) { 5274 int __cc; 5275 __builtin_s390_vchhs(__a, (__vector signed short)__b, &__cc); 5276 return __cc != 0; 5277 } 5278 5279 // This prototype is deprecated. 5280 static inline __ATTRS_o_ai int 5281 vec_any_le(__vector __bool short __a, __vector signed short __b) { 5282 int __cc; 5283 __builtin_s390_vchhs((__vector signed short)__a, __b, &__cc); 5284 return __cc != 0; 5285 } 5286 5287 static inline __ATTRS_o_ai int 5288 vec_any_le(__vector unsigned short __a, __vector unsigned short __b) { 5289 int __cc; 5290 __builtin_s390_vchlhs(__a, __b, &__cc); 5291 return __cc != 0; 5292 } 5293 5294 // This prototype is deprecated. 5295 static inline __ATTRS_o_ai int 5296 vec_any_le(__vector unsigned short __a, __vector __bool short __b) { 5297 int __cc; 5298 __builtin_s390_vchlhs(__a, (__vector unsigned short)__b, &__cc); 5299 return __cc != 0; 5300 } 5301 5302 // This prototype is deprecated. 5303 static inline __ATTRS_o_ai int 5304 vec_any_le(__vector __bool short __a, __vector unsigned short __b) { 5305 int __cc; 5306 __builtin_s390_vchlhs((__vector unsigned short)__a, __b, &__cc); 5307 return __cc != 0; 5308 } 5309 5310 // This prototype is deprecated. 5311 static inline __ATTRS_o_ai int 5312 vec_any_le(__vector __bool short __a, __vector __bool short __b) { 5313 int __cc; 5314 __builtin_s390_vchlhs((__vector unsigned short)__a, 5315 (__vector unsigned short)__b, &__cc); 5316 return __cc != 0; 5317 } 5318 5319 static inline __ATTRS_o_ai int 5320 vec_any_le(__vector signed int __a, __vector signed int __b) { 5321 int __cc; 5322 __builtin_s390_vchfs(__a, __b, &__cc); 5323 return __cc != 0; 5324 } 5325 5326 // This prototype is deprecated. 5327 static inline __ATTRS_o_ai int 5328 vec_any_le(__vector signed int __a, __vector __bool int __b) { 5329 int __cc; 5330 __builtin_s390_vchfs(__a, (__vector signed int)__b, &__cc); 5331 return __cc != 0; 5332 } 5333 5334 // This prototype is deprecated. 5335 static inline __ATTRS_o_ai int 5336 vec_any_le(__vector __bool int __a, __vector signed int __b) { 5337 int __cc; 5338 __builtin_s390_vchfs((__vector signed int)__a, __b, &__cc); 5339 return __cc != 0; 5340 } 5341 5342 static inline __ATTRS_o_ai int 5343 vec_any_le(__vector unsigned int __a, __vector unsigned int __b) { 5344 int __cc; 5345 __builtin_s390_vchlfs(__a, __b, &__cc); 5346 return __cc != 0; 5347 } 5348 5349 // This prototype is deprecated. 5350 static inline __ATTRS_o_ai int 5351 vec_any_le(__vector unsigned int __a, __vector __bool int __b) { 5352 int __cc; 5353 __builtin_s390_vchlfs(__a, (__vector unsigned int)__b, &__cc); 5354 return __cc != 0; 5355 } 5356 5357 // This prototype is deprecated. 5358 static inline __ATTRS_o_ai int 5359 vec_any_le(__vector __bool int __a, __vector unsigned int __b) { 5360 int __cc; 5361 __builtin_s390_vchlfs((__vector unsigned int)__a, __b, &__cc); 5362 return __cc != 0; 5363 } 5364 5365 // This prototype is deprecated. 5366 static inline __ATTRS_o_ai int 5367 vec_any_le(__vector __bool int __a, __vector __bool int __b) { 5368 int __cc; 5369 __builtin_s390_vchlfs((__vector unsigned int)__a, 5370 (__vector unsigned int)__b, &__cc); 5371 return __cc != 0; 5372 } 5373 5374 static inline __ATTRS_o_ai int 5375 vec_any_le(__vector signed long long __a, __vector signed long long __b) { 5376 int __cc; 5377 __builtin_s390_vchgs(__a, __b, &__cc); 5378 return __cc != 0; 5379 } 5380 5381 // This prototype is deprecated. 5382 static inline __ATTRS_o_ai int 5383 vec_any_le(__vector signed long long __a, __vector __bool long long __b) { 5384 int __cc; 5385 __builtin_s390_vchgs(__a, (__vector signed long long)__b, &__cc); 5386 return __cc != 0; 5387 } 5388 5389 // This prototype is deprecated. 5390 static inline __ATTRS_o_ai int 5391 vec_any_le(__vector __bool long long __a, __vector signed long long __b) { 5392 int __cc; 5393 __builtin_s390_vchgs((__vector signed long long)__a, __b, &__cc); 5394 return __cc != 0; 5395 } 5396 5397 static inline __ATTRS_o_ai int 5398 vec_any_le(__vector unsigned long long __a, __vector unsigned long long __b) { 5399 int __cc; 5400 __builtin_s390_vchlgs(__a, __b, &__cc); 5401 return __cc != 0; 5402 } 5403 5404 // This prototype is deprecated. 5405 static inline __ATTRS_o_ai int 5406 vec_any_le(__vector unsigned long long __a, __vector __bool long long __b) { 5407 int __cc; 5408 __builtin_s390_vchlgs(__a, (__vector unsigned long long)__b, &__cc); 5409 return __cc != 0; 5410 } 5411 5412 // This prototype is deprecated. 5413 static inline __ATTRS_o_ai int 5414 vec_any_le(__vector __bool long long __a, __vector unsigned long long __b) { 5415 int __cc; 5416 __builtin_s390_vchlgs((__vector unsigned long long)__a, __b, &__cc); 5417 return __cc != 0; 5418 } 5419 5420 // This prototype is deprecated. 5421 static inline __ATTRS_o_ai int 5422 vec_any_le(__vector __bool long long __a, __vector __bool long long __b) { 5423 int __cc; 5424 __builtin_s390_vchlgs((__vector unsigned long long)__a, 5425 (__vector unsigned long long)__b, &__cc); 5426 return __cc != 0; 5427 } 5428 5429 #if __ARCH__ >= 12 5430 static inline __ATTRS_o_ai int 5431 vec_any_le(__vector float __a, __vector float __b) { 5432 int __cc; 5433 __builtin_s390_vfchesbs(__b, __a, &__cc); 5434 return __cc <= 1; 5435 } 5436 #endif 5437 5438 static inline __ATTRS_o_ai int 5439 vec_any_le(__vector double __a, __vector double __b) { 5440 int __cc; 5441 __builtin_s390_vfchedbs(__b, __a, &__cc); 5442 return __cc <= 1; 5443 } 5444 5445 /*-- vec_any_lt -------------------------------------------------------------*/ 5446 5447 static inline __ATTRS_o_ai int 5448 vec_any_lt(__vector signed char __a, __vector signed char __b) { 5449 int __cc; 5450 __builtin_s390_vchbs(__b, __a, &__cc); 5451 return __cc <= 1; 5452 } 5453 5454 // This prototype is deprecated. 5455 static inline __ATTRS_o_ai int 5456 vec_any_lt(__vector signed char __a, __vector __bool char __b) { 5457 int __cc; 5458 __builtin_s390_vchbs((__vector signed char)__b, __a, &__cc); 5459 return __cc <= 1; 5460 } 5461 5462 // This prototype is deprecated. 5463 static inline __ATTRS_o_ai int 5464 vec_any_lt(__vector __bool char __a, __vector signed char __b) { 5465 int __cc; 5466 __builtin_s390_vchbs(__b, (__vector signed char)__a, &__cc); 5467 return __cc <= 1; 5468 } 5469 5470 static inline __ATTRS_o_ai int 5471 vec_any_lt(__vector unsigned char __a, __vector unsigned char __b) { 5472 int __cc; 5473 __builtin_s390_vchlbs(__b, __a, &__cc); 5474 return __cc <= 1; 5475 } 5476 5477 // This prototype is deprecated. 5478 static inline __ATTRS_o_ai int 5479 vec_any_lt(__vector unsigned char __a, __vector __bool char __b) { 5480 int __cc; 5481 __builtin_s390_vchlbs((__vector unsigned char)__b, __a, &__cc); 5482 return __cc <= 1; 5483 } 5484 5485 // This prototype is deprecated. 5486 static inline __ATTRS_o_ai int 5487 vec_any_lt(__vector __bool char __a, __vector unsigned char __b) { 5488 int __cc; 5489 __builtin_s390_vchlbs(__b, (__vector unsigned char)__a, &__cc); 5490 return __cc <= 1; 5491 } 5492 5493 // This prototype is deprecated. 5494 static inline __ATTRS_o_ai int 5495 vec_any_lt(__vector __bool char __a, __vector __bool char __b) { 5496 int __cc; 5497 __builtin_s390_vchlbs((__vector unsigned char)__b, 5498 (__vector unsigned char)__a, &__cc); 5499 return __cc <= 1; 5500 } 5501 5502 static inline __ATTRS_o_ai int 5503 vec_any_lt(__vector signed short __a, __vector signed short __b) { 5504 int __cc; 5505 __builtin_s390_vchhs(__b, __a, &__cc); 5506 return __cc <= 1; 5507 } 5508 5509 // This prototype is deprecated. 5510 static inline __ATTRS_o_ai int 5511 vec_any_lt(__vector signed short __a, __vector __bool short __b) { 5512 int __cc; 5513 __builtin_s390_vchhs((__vector signed short)__b, __a, &__cc); 5514 return __cc <= 1; 5515 } 5516 5517 // This prototype is deprecated. 5518 static inline __ATTRS_o_ai int 5519 vec_any_lt(__vector __bool short __a, __vector signed short __b) { 5520 int __cc; 5521 __builtin_s390_vchhs(__b, (__vector signed short)__a, &__cc); 5522 return __cc <= 1; 5523 } 5524 5525 static inline __ATTRS_o_ai int 5526 vec_any_lt(__vector unsigned short __a, __vector unsigned short __b) { 5527 int __cc; 5528 __builtin_s390_vchlhs(__b, __a, &__cc); 5529 return __cc <= 1; 5530 } 5531 5532 // This prototype is deprecated. 5533 static inline __ATTRS_o_ai int 5534 vec_any_lt(__vector unsigned short __a, __vector __bool short __b) { 5535 int __cc; 5536 __builtin_s390_vchlhs((__vector unsigned short)__b, __a, &__cc); 5537 return __cc <= 1; 5538 } 5539 5540 // This prototype is deprecated. 5541 static inline __ATTRS_o_ai int 5542 vec_any_lt(__vector __bool short __a, __vector unsigned short __b) { 5543 int __cc; 5544 __builtin_s390_vchlhs(__b, (__vector unsigned short)__a, &__cc); 5545 return __cc <= 1; 5546 } 5547 5548 // This prototype is deprecated. 5549 static inline __ATTRS_o_ai int 5550 vec_any_lt(__vector __bool short __a, __vector __bool short __b) { 5551 int __cc; 5552 __builtin_s390_vchlhs((__vector unsigned short)__b, 5553 (__vector unsigned short)__a, &__cc); 5554 return __cc <= 1; 5555 } 5556 5557 static inline __ATTRS_o_ai int 5558 vec_any_lt(__vector signed int __a, __vector signed int __b) { 5559 int __cc; 5560 __builtin_s390_vchfs(__b, __a, &__cc); 5561 return __cc <= 1; 5562 } 5563 5564 // This prototype is deprecated. 5565 static inline __ATTRS_o_ai int 5566 vec_any_lt(__vector signed int __a, __vector __bool int __b) { 5567 int __cc; 5568 __builtin_s390_vchfs((__vector signed int)__b, __a, &__cc); 5569 return __cc <= 1; 5570 } 5571 5572 // This prototype is deprecated. 5573 static inline __ATTRS_o_ai int 5574 vec_any_lt(__vector __bool int __a, __vector signed int __b) { 5575 int __cc; 5576 __builtin_s390_vchfs(__b, (__vector signed int)__a, &__cc); 5577 return __cc <= 1; 5578 } 5579 5580 static inline __ATTRS_o_ai int 5581 vec_any_lt(__vector unsigned int __a, __vector unsigned int __b) { 5582 int __cc; 5583 __builtin_s390_vchlfs(__b, __a, &__cc); 5584 return __cc <= 1; 5585 } 5586 5587 // This prototype is deprecated. 5588 static inline __ATTRS_o_ai int 5589 vec_any_lt(__vector unsigned int __a, __vector __bool int __b) { 5590 int __cc; 5591 __builtin_s390_vchlfs((__vector unsigned int)__b, __a, &__cc); 5592 return __cc <= 1; 5593 } 5594 5595 // This prototype is deprecated. 5596 static inline __ATTRS_o_ai int 5597 vec_any_lt(__vector __bool int __a, __vector unsigned int __b) { 5598 int __cc; 5599 __builtin_s390_vchlfs(__b, (__vector unsigned int)__a, &__cc); 5600 return __cc <= 1; 5601 } 5602 5603 // This prototype is deprecated. 5604 static inline __ATTRS_o_ai int 5605 vec_any_lt(__vector __bool int __a, __vector __bool int __b) { 5606 int __cc; 5607 __builtin_s390_vchlfs((__vector unsigned int)__b, 5608 (__vector unsigned int)__a, &__cc); 5609 return __cc <= 1; 5610 } 5611 5612 static inline __ATTRS_o_ai int 5613 vec_any_lt(__vector signed long long __a, __vector signed long long __b) { 5614 int __cc; 5615 __builtin_s390_vchgs(__b, __a, &__cc); 5616 return __cc <= 1; 5617 } 5618 5619 // This prototype is deprecated. 5620 static inline __ATTRS_o_ai int 5621 vec_any_lt(__vector signed long long __a, __vector __bool long long __b) { 5622 int __cc; 5623 __builtin_s390_vchgs((__vector signed long long)__b, __a, &__cc); 5624 return __cc <= 1; 5625 } 5626 5627 // This prototype is deprecated. 5628 static inline __ATTRS_o_ai int 5629 vec_any_lt(__vector __bool long long __a, __vector signed long long __b) { 5630 int __cc; 5631 __builtin_s390_vchgs(__b, (__vector signed long long)__a, &__cc); 5632 return __cc <= 1; 5633 } 5634 5635 static inline __ATTRS_o_ai int 5636 vec_any_lt(__vector unsigned long long __a, __vector unsigned long long __b) { 5637 int __cc; 5638 __builtin_s390_vchlgs(__b, __a, &__cc); 5639 return __cc <= 1; 5640 } 5641 5642 // This prototype is deprecated. 5643 static inline __ATTRS_o_ai int 5644 vec_any_lt(__vector unsigned long long __a, __vector __bool long long __b) { 5645 int __cc; 5646 __builtin_s390_vchlgs((__vector unsigned long long)__b, __a, &__cc); 5647 return __cc <= 1; 5648 } 5649 5650 // This prototype is deprecated. 5651 static inline __ATTRS_o_ai int 5652 vec_any_lt(__vector __bool long long __a, __vector unsigned long long __b) { 5653 int __cc; 5654 __builtin_s390_vchlgs(__b, (__vector unsigned long long)__a, &__cc); 5655 return __cc <= 1; 5656 } 5657 5658 // This prototype is deprecated. 5659 static inline __ATTRS_o_ai int 5660 vec_any_lt(__vector __bool long long __a, __vector __bool long long __b) { 5661 int __cc; 5662 __builtin_s390_vchlgs((__vector unsigned long long)__b, 5663 (__vector unsigned long long)__a, &__cc); 5664 return __cc <= 1; 5665 } 5666 5667 #if __ARCH__ >= 12 5668 static inline __ATTRS_o_ai int 5669 vec_any_lt(__vector float __a, __vector float __b) { 5670 int __cc; 5671 __builtin_s390_vfchsbs(__b, __a, &__cc); 5672 return __cc <= 1; 5673 } 5674 #endif 5675 5676 static inline __ATTRS_o_ai int 5677 vec_any_lt(__vector double __a, __vector double __b) { 5678 int __cc; 5679 __builtin_s390_vfchdbs(__b, __a, &__cc); 5680 return __cc <= 1; 5681 } 5682 5683 /*-- vec_any_nge ------------------------------------------------------------*/ 5684 5685 #if __ARCH__ >= 12 5686 static inline __ATTRS_o_ai int 5687 vec_any_nge(__vector float __a, __vector float __b) { 5688 int __cc; 5689 __builtin_s390_vfchesbs(__a, __b, &__cc); 5690 return __cc != 0; 5691 } 5692 #endif 5693 5694 static inline __ATTRS_o_ai int 5695 vec_any_nge(__vector double __a, __vector double __b) { 5696 int __cc; 5697 __builtin_s390_vfchedbs(__a, __b, &__cc); 5698 return __cc != 0; 5699 } 5700 5701 /*-- vec_any_ngt ------------------------------------------------------------*/ 5702 5703 #if __ARCH__ >= 12 5704 static inline __ATTRS_o_ai int 5705 vec_any_ngt(__vector float __a, __vector float __b) { 5706 int __cc; 5707 __builtin_s390_vfchsbs(__a, __b, &__cc); 5708 return __cc != 0; 5709 } 5710 #endif 5711 5712 static inline __ATTRS_o_ai int 5713 vec_any_ngt(__vector double __a, __vector double __b) { 5714 int __cc; 5715 __builtin_s390_vfchdbs(__a, __b, &__cc); 5716 return __cc != 0; 5717 } 5718 5719 /*-- vec_any_nle ------------------------------------------------------------*/ 5720 5721 #if __ARCH__ >= 12 5722 static inline __ATTRS_o_ai int 5723 vec_any_nle(__vector float __a, __vector float __b) { 5724 int __cc; 5725 __builtin_s390_vfchesbs(__b, __a, &__cc); 5726 return __cc != 0; 5727 } 5728 #endif 5729 5730 static inline __ATTRS_o_ai int 5731 vec_any_nle(__vector double __a, __vector double __b) { 5732 int __cc; 5733 __builtin_s390_vfchedbs(__b, __a, &__cc); 5734 return __cc != 0; 5735 } 5736 5737 /*-- vec_any_nlt ------------------------------------------------------------*/ 5738 5739 #if __ARCH__ >= 12 5740 static inline __ATTRS_o_ai int 5741 vec_any_nlt(__vector float __a, __vector float __b) { 5742 int __cc; 5743 __builtin_s390_vfchsbs(__b, __a, &__cc); 5744 return __cc != 0; 5745 } 5746 #endif 5747 5748 static inline __ATTRS_o_ai int 5749 vec_any_nlt(__vector double __a, __vector double __b) { 5750 int __cc; 5751 __builtin_s390_vfchdbs(__b, __a, &__cc); 5752 return __cc != 0; 5753 } 5754 5755 /*-- vec_any_nan ------------------------------------------------------------*/ 5756 5757 #if __ARCH__ >= 12 5758 static inline __ATTRS_o_ai int 5759 vec_any_nan(__vector float __a) { 5760 int __cc; 5761 __builtin_s390_vftcisb(__a, 15, &__cc); 5762 return __cc != 3; 5763 } 5764 #endif 5765 5766 static inline __ATTRS_o_ai int 5767 vec_any_nan(__vector double __a) { 5768 int __cc; 5769 __builtin_s390_vftcidb(__a, 15, &__cc); 5770 return __cc != 3; 5771 } 5772 5773 /*-- vec_any_numeric --------------------------------------------------------*/ 5774 5775 #if __ARCH__ >= 12 5776 static inline __ATTRS_o_ai int 5777 vec_any_numeric(__vector float __a) { 5778 int __cc; 5779 __builtin_s390_vftcisb(__a, 15, &__cc); 5780 return __cc != 0; 5781 } 5782 #endif 5783 5784 static inline __ATTRS_o_ai int 5785 vec_any_numeric(__vector double __a) { 5786 int __cc; 5787 __builtin_s390_vftcidb(__a, 15, &__cc); 5788 return __cc != 0; 5789 } 5790 5791 /*-- vec_andc ---------------------------------------------------------------*/ 5792 5793 static inline __ATTRS_o_ai __vector __bool char 5794 vec_andc(__vector __bool char __a, __vector __bool char __b) { 5795 return __a & ~__b; 5796 } 5797 5798 static inline __ATTRS_o_ai __vector signed char 5799 vec_andc(__vector signed char __a, __vector signed char __b) { 5800 return __a & ~__b; 5801 } 5802 5803 // This prototype is deprecated. 5804 static inline __ATTRS_o_ai __vector signed char 5805 vec_andc(__vector __bool char __a, __vector signed char __b) { 5806 return __a & ~__b; 5807 } 5808 5809 // This prototype is deprecated. 5810 static inline __ATTRS_o_ai __vector signed char 5811 vec_andc(__vector signed char __a, __vector __bool char __b) { 5812 return __a & ~__b; 5813 } 5814 5815 static inline __ATTRS_o_ai __vector unsigned char 5816 vec_andc(__vector unsigned char __a, __vector unsigned char __b) { 5817 return __a & ~__b; 5818 } 5819 5820 // This prototype is deprecated. 5821 static inline __ATTRS_o_ai __vector unsigned char 5822 vec_andc(__vector __bool char __a, __vector unsigned char __b) { 5823 return __a & ~__b; 5824 } 5825 5826 // This prototype is deprecated. 5827 static inline __ATTRS_o_ai __vector unsigned char 5828 vec_andc(__vector unsigned char __a, __vector __bool char __b) { 5829 return __a & ~__b; 5830 } 5831 5832 static inline __ATTRS_o_ai __vector __bool short 5833 vec_andc(__vector __bool short __a, __vector __bool short __b) { 5834 return __a & ~__b; 5835 } 5836 5837 static inline __ATTRS_o_ai __vector signed short 5838 vec_andc(__vector signed short __a, __vector signed short __b) { 5839 return __a & ~__b; 5840 } 5841 5842 // This prototype is deprecated. 5843 static inline __ATTRS_o_ai __vector signed short 5844 vec_andc(__vector __bool short __a, __vector signed short __b) { 5845 return __a & ~__b; 5846 } 5847 5848 // This prototype is deprecated. 5849 static inline __ATTRS_o_ai __vector signed short 5850 vec_andc(__vector signed short __a, __vector __bool short __b) { 5851 return __a & ~__b; 5852 } 5853 5854 static inline __ATTRS_o_ai __vector unsigned short 5855 vec_andc(__vector unsigned short __a, __vector unsigned short __b) { 5856 return __a & ~__b; 5857 } 5858 5859 // This prototype is deprecated. 5860 static inline __ATTRS_o_ai __vector unsigned short 5861 vec_andc(__vector __bool short __a, __vector unsigned short __b) { 5862 return __a & ~__b; 5863 } 5864 5865 // This prototype is deprecated. 5866 static inline __ATTRS_o_ai __vector unsigned short 5867 vec_andc(__vector unsigned short __a, __vector __bool short __b) { 5868 return __a & ~__b; 5869 } 5870 5871 static inline __ATTRS_o_ai __vector __bool int 5872 vec_andc(__vector __bool int __a, __vector __bool int __b) { 5873 return __a & ~__b; 5874 } 5875 5876 static inline __ATTRS_o_ai __vector signed int 5877 vec_andc(__vector signed int __a, __vector signed int __b) { 5878 return __a & ~__b; 5879 } 5880 5881 // This prototype is deprecated. 5882 static inline __ATTRS_o_ai __vector signed int 5883 vec_andc(__vector __bool int __a, __vector signed int __b) { 5884 return __a & ~__b; 5885 } 5886 5887 // This prototype is deprecated. 5888 static inline __ATTRS_o_ai __vector signed int 5889 vec_andc(__vector signed int __a, __vector __bool int __b) { 5890 return __a & ~__b; 5891 } 5892 5893 static inline __ATTRS_o_ai __vector unsigned int 5894 vec_andc(__vector unsigned int __a, __vector unsigned int __b) { 5895 return __a & ~__b; 5896 } 5897 5898 // This prototype is deprecated. 5899 static inline __ATTRS_o_ai __vector unsigned int 5900 vec_andc(__vector __bool int __a, __vector unsigned int __b) { 5901 return __a & ~__b; 5902 } 5903 5904 // This prototype is deprecated. 5905 static inline __ATTRS_o_ai __vector unsigned int 5906 vec_andc(__vector unsigned int __a, __vector __bool int __b) { 5907 return __a & ~__b; 5908 } 5909 5910 static inline __ATTRS_o_ai __vector __bool long long 5911 vec_andc(__vector __bool long long __a, __vector __bool long long __b) { 5912 return __a & ~__b; 5913 } 5914 5915 static inline __ATTRS_o_ai __vector signed long long 5916 vec_andc(__vector signed long long __a, __vector signed long long __b) { 5917 return __a & ~__b; 5918 } 5919 5920 // This prototype is deprecated. 5921 static inline __ATTRS_o_ai __vector signed long long 5922 vec_andc(__vector __bool long long __a, __vector signed long long __b) { 5923 return __a & ~__b; 5924 } 5925 5926 // This prototype is deprecated. 5927 static inline __ATTRS_o_ai __vector signed long long 5928 vec_andc(__vector signed long long __a, __vector __bool long long __b) { 5929 return __a & ~__b; 5930 } 5931 5932 static inline __ATTRS_o_ai __vector unsigned long long 5933 vec_andc(__vector unsigned long long __a, __vector unsigned long long __b) { 5934 return __a & ~__b; 5935 } 5936 5937 // This prototype is deprecated. 5938 static inline __ATTRS_o_ai __vector unsigned long long 5939 vec_andc(__vector __bool long long __a, __vector unsigned long long __b) { 5940 return __a & ~__b; 5941 } 5942 5943 // This prototype is deprecated. 5944 static inline __ATTRS_o_ai __vector unsigned long long 5945 vec_andc(__vector unsigned long long __a, __vector __bool long long __b) { 5946 return __a & ~__b; 5947 } 5948 5949 #if __ARCH__ >= 12 5950 static inline __ATTRS_o_ai __vector float 5951 vec_andc(__vector float __a, __vector float __b) { 5952 return (__vector float)((__vector unsigned int)__a & 5953 ~(__vector unsigned int)__b); 5954 } 5955 #endif 5956 5957 static inline __ATTRS_o_ai __vector double 5958 vec_andc(__vector double __a, __vector double __b) { 5959 return (__vector double)((__vector unsigned long long)__a & 5960 ~(__vector unsigned long long)__b); 5961 } 5962 5963 // This prototype is deprecated. 5964 static inline __ATTRS_o_ai __vector double 5965 vec_andc(__vector __bool long long __a, __vector double __b) { 5966 return (__vector double)((__vector unsigned long long)__a & 5967 ~(__vector unsigned long long)__b); 5968 } 5969 5970 // This prototype is deprecated. 5971 static inline __ATTRS_o_ai __vector double 5972 vec_andc(__vector double __a, __vector __bool long long __b) { 5973 return (__vector double)((__vector unsigned long long)__a & 5974 ~(__vector unsigned long long)__b); 5975 } 5976 5977 /*-- vec_nor ----------------------------------------------------------------*/ 5978 5979 static inline __ATTRS_o_ai __vector __bool char 5980 vec_nor(__vector __bool char __a, __vector __bool char __b) { 5981 return ~(__a | __b); 5982 } 5983 5984 static inline __ATTRS_o_ai __vector signed char 5985 vec_nor(__vector signed char __a, __vector signed char __b) { 5986 return ~(__a | __b); 5987 } 5988 5989 // This prototype is deprecated. 5990 static inline __ATTRS_o_ai __vector signed char 5991 vec_nor(__vector __bool char __a, __vector signed char __b) { 5992 return ~(__a | __b); 5993 } 5994 5995 // This prototype is deprecated. 5996 static inline __ATTRS_o_ai __vector signed char 5997 vec_nor(__vector signed char __a, __vector __bool char __b) { 5998 return ~(__a | __b); 5999 } 6000 6001 static inline __ATTRS_o_ai __vector unsigned char 6002 vec_nor(__vector unsigned char __a, __vector unsigned char __b) { 6003 return ~(__a | __b); 6004 } 6005 6006 // This prototype is deprecated. 6007 static inline __ATTRS_o_ai __vector unsigned char 6008 vec_nor(__vector __bool char __a, __vector unsigned char __b) { 6009 return ~(__a | __b); 6010 } 6011 6012 // This prototype is deprecated. 6013 static inline __ATTRS_o_ai __vector unsigned char 6014 vec_nor(__vector unsigned char __a, __vector __bool char __b) { 6015 return ~(__a | __b); 6016 } 6017 6018 static inline __ATTRS_o_ai __vector __bool short 6019 vec_nor(__vector __bool short __a, __vector __bool short __b) { 6020 return ~(__a | __b); 6021 } 6022 6023 static inline __ATTRS_o_ai __vector signed short 6024 vec_nor(__vector signed short __a, __vector signed short __b) { 6025 return ~(__a | __b); 6026 } 6027 6028 // This prototype is deprecated. 6029 static inline __ATTRS_o_ai __vector signed short 6030 vec_nor(__vector __bool short __a, __vector signed short __b) { 6031 return ~(__a | __b); 6032 } 6033 6034 // This prototype is deprecated. 6035 static inline __ATTRS_o_ai __vector signed short 6036 vec_nor(__vector signed short __a, __vector __bool short __b) { 6037 return ~(__a | __b); 6038 } 6039 6040 static inline __ATTRS_o_ai __vector unsigned short 6041 vec_nor(__vector unsigned short __a, __vector unsigned short __b) { 6042 return ~(__a | __b); 6043 } 6044 6045 // This prototype is deprecated. 6046 static inline __ATTRS_o_ai __vector unsigned short 6047 vec_nor(__vector __bool short __a, __vector unsigned short __b) { 6048 return ~(__a | __b); 6049 } 6050 6051 // This prototype is deprecated. 6052 static inline __ATTRS_o_ai __vector unsigned short 6053 vec_nor(__vector unsigned short __a, __vector __bool short __b) { 6054 return ~(__a | __b); 6055 } 6056 6057 static inline __ATTRS_o_ai __vector __bool int 6058 vec_nor(__vector __bool int __a, __vector __bool int __b) { 6059 return ~(__a | __b); 6060 } 6061 6062 static inline __ATTRS_o_ai __vector signed int 6063 vec_nor(__vector signed int __a, __vector signed int __b) { 6064 return ~(__a | __b); 6065 } 6066 6067 // This prototype is deprecated. 6068 static inline __ATTRS_o_ai __vector signed int 6069 vec_nor(__vector __bool int __a, __vector signed int __b) { 6070 return ~(__a | __b); 6071 } 6072 6073 // This prototype is deprecated. 6074 static inline __ATTRS_o_ai __vector signed int 6075 vec_nor(__vector signed int __a, __vector __bool int __b) { 6076 return ~(__a | __b); 6077 } 6078 6079 static inline __ATTRS_o_ai __vector unsigned int 6080 vec_nor(__vector unsigned int __a, __vector unsigned int __b) { 6081 return ~(__a | __b); 6082 } 6083 6084 // This prototype is deprecated. 6085 static inline __ATTRS_o_ai __vector unsigned int 6086 vec_nor(__vector __bool int __a, __vector unsigned int __b) { 6087 return ~(__a | __b); 6088 } 6089 6090 // This prototype is deprecated. 6091 static inline __ATTRS_o_ai __vector unsigned int 6092 vec_nor(__vector unsigned int __a, __vector __bool int __b) { 6093 return ~(__a | __b); 6094 } 6095 6096 static inline __ATTRS_o_ai __vector __bool long long 6097 vec_nor(__vector __bool long long __a, __vector __bool long long __b) { 6098 return ~(__a | __b); 6099 } 6100 6101 static inline __ATTRS_o_ai __vector signed long long 6102 vec_nor(__vector signed long long __a, __vector signed long long __b) { 6103 return ~(__a | __b); 6104 } 6105 6106 // This prototype is deprecated. 6107 static inline __ATTRS_o_ai __vector signed long long 6108 vec_nor(__vector __bool long long __a, __vector signed long long __b) { 6109 return ~(__a | __b); 6110 } 6111 6112 // This prototype is deprecated. 6113 static inline __ATTRS_o_ai __vector signed long long 6114 vec_nor(__vector signed long long __a, __vector __bool long long __b) { 6115 return ~(__a | __b); 6116 } 6117 6118 static inline __ATTRS_o_ai __vector unsigned long long 6119 vec_nor(__vector unsigned long long __a, __vector unsigned long long __b) { 6120 return ~(__a | __b); 6121 } 6122 6123 // This prototype is deprecated. 6124 static inline __ATTRS_o_ai __vector unsigned long long 6125 vec_nor(__vector __bool long long __a, __vector unsigned long long __b) { 6126 return ~(__a | __b); 6127 } 6128 6129 // This prototype is deprecated. 6130 static inline __ATTRS_o_ai __vector unsigned long long 6131 vec_nor(__vector unsigned long long __a, __vector __bool long long __b) { 6132 return ~(__a | __b); 6133 } 6134 6135 #if __ARCH__ >= 12 6136 static inline __ATTRS_o_ai __vector float 6137 vec_nor(__vector float __a, __vector float __b) { 6138 return (__vector float)~((__vector unsigned int)__a | 6139 (__vector unsigned int)__b); 6140 } 6141 #endif 6142 6143 static inline __ATTRS_o_ai __vector double 6144 vec_nor(__vector double __a, __vector double __b) { 6145 return (__vector double)~((__vector unsigned long long)__a | 6146 (__vector unsigned long long)__b); 6147 } 6148 6149 // This prototype is deprecated. 6150 static inline __ATTRS_o_ai __vector double 6151 vec_nor(__vector __bool long long __a, __vector double __b) { 6152 return (__vector double)~((__vector unsigned long long)__a | 6153 (__vector unsigned long long)__b); 6154 } 6155 6156 // This prototype is deprecated. 6157 static inline __ATTRS_o_ai __vector double 6158 vec_nor(__vector double __a, __vector __bool long long __b) { 6159 return (__vector double)~((__vector unsigned long long)__a | 6160 (__vector unsigned long long)__b); 6161 } 6162 6163 /*-- vec_orc ----------------------------------------------------------------*/ 6164 6165 #if __ARCH__ >= 12 6166 static inline __ATTRS_o_ai __vector __bool char 6167 vec_orc(__vector __bool char __a, __vector __bool char __b) { 6168 return __a | ~__b; 6169 } 6170 6171 static inline __ATTRS_o_ai __vector signed char 6172 vec_orc(__vector signed char __a, __vector signed char __b) { 6173 return __a | ~__b; 6174 } 6175 6176 static inline __ATTRS_o_ai __vector unsigned char 6177 vec_orc(__vector unsigned char __a, __vector unsigned char __b) { 6178 return __a | ~__b; 6179 } 6180 6181 static inline __ATTRS_o_ai __vector __bool short 6182 vec_orc(__vector __bool short __a, __vector __bool short __b) { 6183 return __a | ~__b; 6184 } 6185 6186 static inline __ATTRS_o_ai __vector signed short 6187 vec_orc(__vector signed short __a, __vector signed short __b) { 6188 return __a | ~__b; 6189 } 6190 6191 static inline __ATTRS_o_ai __vector unsigned short 6192 vec_orc(__vector unsigned short __a, __vector unsigned short __b) { 6193 return __a | ~__b; 6194 } 6195 6196 static inline __ATTRS_o_ai __vector __bool int 6197 vec_orc(__vector __bool int __a, __vector __bool int __b) { 6198 return __a | ~__b; 6199 } 6200 6201 static inline __ATTRS_o_ai __vector signed int 6202 vec_orc(__vector signed int __a, __vector signed int __b) { 6203 return __a | ~__b; 6204 } 6205 6206 static inline __ATTRS_o_ai __vector unsigned int 6207 vec_orc(__vector unsigned int __a, __vector unsigned int __b) { 6208 return __a | ~__b; 6209 } 6210 6211 static inline __ATTRS_o_ai __vector __bool long long 6212 vec_orc(__vector __bool long long __a, __vector __bool long long __b) { 6213 return __a | ~__b; 6214 } 6215 6216 static inline __ATTRS_o_ai __vector signed long long 6217 vec_orc(__vector signed long long __a, __vector signed long long __b) { 6218 return __a | ~__b; 6219 } 6220 6221 static inline __ATTRS_o_ai __vector unsigned long long 6222 vec_orc(__vector unsigned long long __a, __vector unsigned long long __b) { 6223 return __a | ~__b; 6224 } 6225 6226 static inline __ATTRS_o_ai __vector float 6227 vec_orc(__vector float __a, __vector float __b) { 6228 return (__vector float)((__vector unsigned int)__a | 6229 ~(__vector unsigned int)__b); 6230 } 6231 6232 static inline __ATTRS_o_ai __vector double 6233 vec_orc(__vector double __a, __vector double __b) { 6234 return (__vector double)((__vector unsigned long long)__a | 6235 ~(__vector unsigned long long)__b); 6236 } 6237 #endif 6238 6239 /*-- vec_nand ---------------------------------------------------------------*/ 6240 6241 #if __ARCH__ >= 12 6242 static inline __ATTRS_o_ai __vector __bool char 6243 vec_nand(__vector __bool char __a, __vector __bool char __b) { 6244 return ~(__a & __b); 6245 } 6246 6247 static inline __ATTRS_o_ai __vector signed char 6248 vec_nand(__vector signed char __a, __vector signed char __b) { 6249 return ~(__a & __b); 6250 } 6251 6252 static inline __ATTRS_o_ai __vector unsigned char 6253 vec_nand(__vector unsigned char __a, __vector unsigned char __b) { 6254 return ~(__a & __b); 6255 } 6256 6257 static inline __ATTRS_o_ai __vector __bool short 6258 vec_nand(__vector __bool short __a, __vector __bool short __b) { 6259 return ~(__a & __b); 6260 } 6261 6262 static inline __ATTRS_o_ai __vector signed short 6263 vec_nand(__vector signed short __a, __vector signed short __b) { 6264 return ~(__a & __b); 6265 } 6266 6267 static inline __ATTRS_o_ai __vector unsigned short 6268 vec_nand(__vector unsigned short __a, __vector unsigned short __b) { 6269 return ~(__a & __b); 6270 } 6271 6272 static inline __ATTRS_o_ai __vector __bool int 6273 vec_nand(__vector __bool int __a, __vector __bool int __b) { 6274 return ~(__a & __b); 6275 } 6276 6277 static inline __ATTRS_o_ai __vector signed int 6278 vec_nand(__vector signed int __a, __vector signed int __b) { 6279 return ~(__a & __b); 6280 } 6281 6282 static inline __ATTRS_o_ai __vector unsigned int 6283 vec_nand(__vector unsigned int __a, __vector unsigned int __b) { 6284 return ~(__a & __b); 6285 } 6286 6287 static inline __ATTRS_o_ai __vector __bool long long 6288 vec_nand(__vector __bool long long __a, __vector __bool long long __b) { 6289 return ~(__a & __b); 6290 } 6291 6292 static inline __ATTRS_o_ai __vector signed long long 6293 vec_nand(__vector signed long long __a, __vector signed long long __b) { 6294 return ~(__a & __b); 6295 } 6296 6297 static inline __ATTRS_o_ai __vector unsigned long long 6298 vec_nand(__vector unsigned long long __a, __vector unsigned long long __b) { 6299 return ~(__a & __b); 6300 } 6301 6302 static inline __ATTRS_o_ai __vector float 6303 vec_nand(__vector float __a, __vector float __b) { 6304 return (__vector float)~((__vector unsigned int)__a & 6305 (__vector unsigned int)__b); 6306 } 6307 6308 static inline __ATTRS_o_ai __vector double 6309 vec_nand(__vector double __a, __vector double __b) { 6310 return (__vector double)~((__vector unsigned long long)__a & 6311 (__vector unsigned long long)__b); 6312 } 6313 #endif 6314 6315 /*-- vec_eqv ----------------------------------------------------------------*/ 6316 6317 #if __ARCH__ >= 12 6318 static inline __ATTRS_o_ai __vector __bool char 6319 vec_eqv(__vector __bool char __a, __vector __bool char __b) { 6320 return ~(__a ^ __b); 6321 } 6322 6323 static inline __ATTRS_o_ai __vector signed char 6324 vec_eqv(__vector signed char __a, __vector signed char __b) { 6325 return ~(__a ^ __b); 6326 } 6327 6328 static inline __ATTRS_o_ai __vector unsigned char 6329 vec_eqv(__vector unsigned char __a, __vector unsigned char __b) { 6330 return ~(__a ^ __b); 6331 } 6332 6333 static inline __ATTRS_o_ai __vector __bool short 6334 vec_eqv(__vector __bool short __a, __vector __bool short __b) { 6335 return ~(__a ^ __b); 6336 } 6337 6338 static inline __ATTRS_o_ai __vector signed short 6339 vec_eqv(__vector signed short __a, __vector signed short __b) { 6340 return ~(__a ^ __b); 6341 } 6342 6343 static inline __ATTRS_o_ai __vector unsigned short 6344 vec_eqv(__vector unsigned short __a, __vector unsigned short __b) { 6345 return ~(__a ^ __b); 6346 } 6347 6348 static inline __ATTRS_o_ai __vector __bool int 6349 vec_eqv(__vector __bool int __a, __vector __bool int __b) { 6350 return ~(__a ^ __b); 6351 } 6352 6353 static inline __ATTRS_o_ai __vector signed int 6354 vec_eqv(__vector signed int __a, __vector signed int __b) { 6355 return ~(__a ^ __b); 6356 } 6357 6358 static inline __ATTRS_o_ai __vector unsigned int 6359 vec_eqv(__vector unsigned int __a, __vector unsigned int __b) { 6360 return ~(__a ^ __b); 6361 } 6362 6363 static inline __ATTRS_o_ai __vector __bool long long 6364 vec_eqv(__vector __bool long long __a, __vector __bool long long __b) { 6365 return ~(__a ^ __b); 6366 } 6367 6368 static inline __ATTRS_o_ai __vector signed long long 6369 vec_eqv(__vector signed long long __a, __vector signed long long __b) { 6370 return ~(__a ^ __b); 6371 } 6372 6373 static inline __ATTRS_o_ai __vector unsigned long long 6374 vec_eqv(__vector unsigned long long __a, __vector unsigned long long __b) { 6375 return ~(__a ^ __b); 6376 } 6377 6378 static inline __ATTRS_o_ai __vector float 6379 vec_eqv(__vector float __a, __vector float __b) { 6380 return (__vector float)~((__vector unsigned int)__a ^ 6381 (__vector unsigned int)__b); 6382 } 6383 6384 static inline __ATTRS_o_ai __vector double 6385 vec_eqv(__vector double __a, __vector double __b) { 6386 return (__vector double)~((__vector unsigned long long)__a ^ 6387 (__vector unsigned long long)__b); 6388 } 6389 #endif 6390 6391 /*-- vec_cntlz --------------------------------------------------------------*/ 6392 6393 static inline __ATTRS_o_ai __vector unsigned char 6394 vec_cntlz(__vector signed char __a) { 6395 return __builtin_s390_vclzb((__vector unsigned char)__a); 6396 } 6397 6398 static inline __ATTRS_o_ai __vector unsigned char 6399 vec_cntlz(__vector unsigned char __a) { 6400 return __builtin_s390_vclzb(__a); 6401 } 6402 6403 static inline __ATTRS_o_ai __vector unsigned short 6404 vec_cntlz(__vector signed short __a) { 6405 return __builtin_s390_vclzh((__vector unsigned short)__a); 6406 } 6407 6408 static inline __ATTRS_o_ai __vector unsigned short 6409 vec_cntlz(__vector unsigned short __a) { 6410 return __builtin_s390_vclzh(__a); 6411 } 6412 6413 static inline __ATTRS_o_ai __vector unsigned int 6414 vec_cntlz(__vector signed int __a) { 6415 return __builtin_s390_vclzf((__vector unsigned int)__a); 6416 } 6417 6418 static inline __ATTRS_o_ai __vector unsigned int 6419 vec_cntlz(__vector unsigned int __a) { 6420 return __builtin_s390_vclzf(__a); 6421 } 6422 6423 static inline __ATTRS_o_ai __vector unsigned long long 6424 vec_cntlz(__vector signed long long __a) { 6425 return __builtin_s390_vclzg((__vector unsigned long long)__a); 6426 } 6427 6428 static inline __ATTRS_o_ai __vector unsigned long long 6429 vec_cntlz(__vector unsigned long long __a) { 6430 return __builtin_s390_vclzg(__a); 6431 } 6432 6433 /*-- vec_cnttz --------------------------------------------------------------*/ 6434 6435 static inline __ATTRS_o_ai __vector unsigned char 6436 vec_cnttz(__vector signed char __a) { 6437 return __builtin_s390_vctzb((__vector unsigned char)__a); 6438 } 6439 6440 static inline __ATTRS_o_ai __vector unsigned char 6441 vec_cnttz(__vector unsigned char __a) { 6442 return __builtin_s390_vctzb(__a); 6443 } 6444 6445 static inline __ATTRS_o_ai __vector unsigned short 6446 vec_cnttz(__vector signed short __a) { 6447 return __builtin_s390_vctzh((__vector unsigned short)__a); 6448 } 6449 6450 static inline __ATTRS_o_ai __vector unsigned short 6451 vec_cnttz(__vector unsigned short __a) { 6452 return __builtin_s390_vctzh(__a); 6453 } 6454 6455 static inline __ATTRS_o_ai __vector unsigned int 6456 vec_cnttz(__vector signed int __a) { 6457 return __builtin_s390_vctzf((__vector unsigned int)__a); 6458 } 6459 6460 static inline __ATTRS_o_ai __vector unsigned int 6461 vec_cnttz(__vector unsigned int __a) { 6462 return __builtin_s390_vctzf(__a); 6463 } 6464 6465 static inline __ATTRS_o_ai __vector unsigned long long 6466 vec_cnttz(__vector signed long long __a) { 6467 return __builtin_s390_vctzg((__vector unsigned long long)__a); 6468 } 6469 6470 static inline __ATTRS_o_ai __vector unsigned long long 6471 vec_cnttz(__vector unsigned long long __a) { 6472 return __builtin_s390_vctzg(__a); 6473 } 6474 6475 /*-- vec_popcnt -------------------------------------------------------------*/ 6476 6477 static inline __ATTRS_o_ai __vector unsigned char 6478 vec_popcnt(__vector signed char __a) { 6479 return __builtin_s390_vpopctb((__vector unsigned char)__a); 6480 } 6481 6482 static inline __ATTRS_o_ai __vector unsigned char 6483 vec_popcnt(__vector unsigned char __a) { 6484 return __builtin_s390_vpopctb(__a); 6485 } 6486 6487 static inline __ATTRS_o_ai __vector unsigned short 6488 vec_popcnt(__vector signed short __a) { 6489 return __builtin_s390_vpopcth((__vector unsigned short)__a); 6490 } 6491 6492 static inline __ATTRS_o_ai __vector unsigned short 6493 vec_popcnt(__vector unsigned short __a) { 6494 return __builtin_s390_vpopcth(__a); 6495 } 6496 6497 static inline __ATTRS_o_ai __vector unsigned int 6498 vec_popcnt(__vector signed int __a) { 6499 return __builtin_s390_vpopctf((__vector unsigned int)__a); 6500 } 6501 6502 static inline __ATTRS_o_ai __vector unsigned int 6503 vec_popcnt(__vector unsigned int __a) { 6504 return __builtin_s390_vpopctf(__a); 6505 } 6506 6507 static inline __ATTRS_o_ai __vector unsigned long long 6508 vec_popcnt(__vector signed long long __a) { 6509 return __builtin_s390_vpopctg((__vector unsigned long long)__a); 6510 } 6511 6512 static inline __ATTRS_o_ai __vector unsigned long long 6513 vec_popcnt(__vector unsigned long long __a) { 6514 return __builtin_s390_vpopctg(__a); 6515 } 6516 6517 /*-- vec_rl -----------------------------------------------------------------*/ 6518 6519 static inline __ATTRS_o_ai __vector signed char 6520 vec_rl(__vector signed char __a, __vector unsigned char __b) { 6521 return (__vector signed char)__builtin_s390_verllvb( 6522 (__vector unsigned char)__a, __b); 6523 } 6524 6525 static inline __ATTRS_o_ai __vector unsigned char 6526 vec_rl(__vector unsigned char __a, __vector unsigned char __b) { 6527 return __builtin_s390_verllvb(__a, __b); 6528 } 6529 6530 static inline __ATTRS_o_ai __vector signed short 6531 vec_rl(__vector signed short __a, __vector unsigned short __b) { 6532 return (__vector signed short)__builtin_s390_verllvh( 6533 (__vector unsigned short)__a, __b); 6534 } 6535 6536 static inline __ATTRS_o_ai __vector unsigned short 6537 vec_rl(__vector unsigned short __a, __vector unsigned short __b) { 6538 return __builtin_s390_verllvh(__a, __b); 6539 } 6540 6541 static inline __ATTRS_o_ai __vector signed int 6542 vec_rl(__vector signed int __a, __vector unsigned int __b) { 6543 return (__vector signed int)__builtin_s390_verllvf( 6544 (__vector unsigned int)__a, __b); 6545 } 6546 6547 static inline __ATTRS_o_ai __vector unsigned int 6548 vec_rl(__vector unsigned int __a, __vector unsigned int __b) { 6549 return __builtin_s390_verllvf(__a, __b); 6550 } 6551 6552 static inline __ATTRS_o_ai __vector signed long long 6553 vec_rl(__vector signed long long __a, __vector unsigned long long __b) { 6554 return (__vector signed long long)__builtin_s390_verllvg( 6555 (__vector unsigned long long)__a, __b); 6556 } 6557 6558 static inline __ATTRS_o_ai __vector unsigned long long 6559 vec_rl(__vector unsigned long long __a, __vector unsigned long long __b) { 6560 return __builtin_s390_verllvg(__a, __b); 6561 } 6562 6563 /*-- vec_rli ----------------------------------------------------------------*/ 6564 6565 static inline __ATTRS_o_ai __vector signed char 6566 vec_rli(__vector signed char __a, unsigned long __b) { 6567 return (__vector signed char)__builtin_s390_verllb( 6568 (__vector unsigned char)__a, (int)__b); 6569 } 6570 6571 static inline __ATTRS_o_ai __vector unsigned char 6572 vec_rli(__vector unsigned char __a, unsigned long __b) { 6573 return __builtin_s390_verllb(__a, (int)__b); 6574 } 6575 6576 static inline __ATTRS_o_ai __vector signed short 6577 vec_rli(__vector signed short __a, unsigned long __b) { 6578 return (__vector signed short)__builtin_s390_verllh( 6579 (__vector unsigned short)__a, (int)__b); 6580 } 6581 6582 static inline __ATTRS_o_ai __vector unsigned short 6583 vec_rli(__vector unsigned short __a, unsigned long __b) { 6584 return __builtin_s390_verllh(__a, (int)__b); 6585 } 6586 6587 static inline __ATTRS_o_ai __vector signed int 6588 vec_rli(__vector signed int __a, unsigned long __b) { 6589 return (__vector signed int)__builtin_s390_verllf( 6590 (__vector unsigned int)__a, (int)__b); 6591 } 6592 6593 static inline __ATTRS_o_ai __vector unsigned int 6594 vec_rli(__vector unsigned int __a, unsigned long __b) { 6595 return __builtin_s390_verllf(__a, (int)__b); 6596 } 6597 6598 static inline __ATTRS_o_ai __vector signed long long 6599 vec_rli(__vector signed long long __a, unsigned long __b) { 6600 return (__vector signed long long)__builtin_s390_verllg( 6601 (__vector unsigned long long)__a, (int)__b); 6602 } 6603 6604 static inline __ATTRS_o_ai __vector unsigned long long 6605 vec_rli(__vector unsigned long long __a, unsigned long __b) { 6606 return __builtin_s390_verllg(__a, (int)__b); 6607 } 6608 6609 /*-- vec_rl_mask ------------------------------------------------------------*/ 6610 6611 extern __ATTRS_o __vector signed char 6612 vec_rl_mask(__vector signed char __a, __vector unsigned char __b, 6613 unsigned char __c) __constant(__c); 6614 6615 extern __ATTRS_o __vector unsigned char 6616 vec_rl_mask(__vector unsigned char __a, __vector unsigned char __b, 6617 unsigned char __c) __constant(__c); 6618 6619 extern __ATTRS_o __vector signed short 6620 vec_rl_mask(__vector signed short __a, __vector unsigned short __b, 6621 unsigned char __c) __constant(__c); 6622 6623 extern __ATTRS_o __vector unsigned short 6624 vec_rl_mask(__vector unsigned short __a, __vector unsigned short __b, 6625 unsigned char __c) __constant(__c); 6626 6627 extern __ATTRS_o __vector signed int 6628 vec_rl_mask(__vector signed int __a, __vector unsigned int __b, 6629 unsigned char __c) __constant(__c); 6630 6631 extern __ATTRS_o __vector unsigned int 6632 vec_rl_mask(__vector unsigned int __a, __vector unsigned int __b, 6633 unsigned char __c) __constant(__c); 6634 6635 extern __ATTRS_o __vector signed long long 6636 vec_rl_mask(__vector signed long long __a, __vector unsigned long long __b, 6637 unsigned char __c) __constant(__c); 6638 6639 extern __ATTRS_o __vector unsigned long long 6640 vec_rl_mask(__vector unsigned long long __a, __vector unsigned long long __b, 6641 unsigned char __c) __constant(__c); 6642 6643 #define vec_rl_mask(X, Y, Z) ((__typeof__((vec_rl_mask)((X), (Y), (Z)))) \ 6644 __extension__ ({ \ 6645 __vector unsigned char __res; \ 6646 __vector unsigned char __x = (__vector unsigned char)(X); \ 6647 __vector unsigned char __y = (__vector unsigned char)(Y); \ 6648 switch (sizeof ((X)[0])) { \ 6649 case 1: __res = (__vector unsigned char) __builtin_s390_verimb( \ 6650 (__vector unsigned char)__x, (__vector unsigned char)__x, \ 6651 (__vector unsigned char)__y, (Z)); break; \ 6652 case 2: __res = (__vector unsigned char) __builtin_s390_verimh( \ 6653 (__vector unsigned short)__x, (__vector unsigned short)__x, \ 6654 (__vector unsigned short)__y, (Z)); break; \ 6655 case 4: __res = (__vector unsigned char) __builtin_s390_verimf( \ 6656 (__vector unsigned int)__x, (__vector unsigned int)__x, \ 6657 (__vector unsigned int)__y, (Z)); break; \ 6658 default: __res = (__vector unsigned char) __builtin_s390_verimg( \ 6659 (__vector unsigned long long)__x, (__vector unsigned long long)__x, \ 6660 (__vector unsigned long long)__y, (Z)); break; \ 6661 } __res; })) 6662 6663 /*-- vec_sll ----------------------------------------------------------------*/ 6664 6665 static inline __ATTRS_o_ai __vector signed char 6666 vec_sll(__vector signed char __a, __vector unsigned char __b) { 6667 return (__vector signed char)__builtin_s390_vsl( 6668 (__vector unsigned char)__a, __b); 6669 } 6670 6671 // This prototype is deprecated. 6672 static inline __ATTRS_o_ai __vector signed char 6673 vec_sll(__vector signed char __a, __vector unsigned short __b) { 6674 return (__vector signed char)__builtin_s390_vsl( 6675 (__vector unsigned char)__a, (__vector unsigned char)__b); 6676 } 6677 6678 // This prototype is deprecated. 6679 static inline __ATTRS_o_ai __vector signed char 6680 vec_sll(__vector signed char __a, __vector unsigned int __b) { 6681 return (__vector signed char)__builtin_s390_vsl( 6682 (__vector unsigned char)__a, (__vector unsigned char)__b); 6683 } 6684 6685 // This prototype is deprecated. 6686 static inline __ATTRS_o_ai __vector __bool char 6687 vec_sll(__vector __bool char __a, __vector unsigned char __b) { 6688 return (__vector __bool char)__builtin_s390_vsl( 6689 (__vector unsigned char)__a, __b); 6690 } 6691 6692 // This prototype is deprecated. 6693 static inline __ATTRS_o_ai __vector __bool char 6694 vec_sll(__vector __bool char __a, __vector unsigned short __b) { 6695 return (__vector __bool char)__builtin_s390_vsl( 6696 (__vector unsigned char)__a, (__vector unsigned char)__b); 6697 } 6698 6699 // This prototype is deprecated. 6700 static inline __ATTRS_o_ai __vector __bool char 6701 vec_sll(__vector __bool char __a, __vector unsigned int __b) { 6702 return (__vector __bool char)__builtin_s390_vsl( 6703 (__vector unsigned char)__a, (__vector unsigned char)__b); 6704 } 6705 6706 static inline __ATTRS_o_ai __vector unsigned char 6707 vec_sll(__vector unsigned char __a, __vector unsigned char __b) { 6708 return __builtin_s390_vsl(__a, __b); 6709 } 6710 6711 // This prototype is deprecated. 6712 static inline __ATTRS_o_ai __vector unsigned char 6713 vec_sll(__vector unsigned char __a, __vector unsigned short __b) { 6714 return __builtin_s390_vsl(__a, (__vector unsigned char)__b); 6715 } 6716 6717 // This prototype is deprecated. 6718 static inline __ATTRS_o_ai __vector unsigned char 6719 vec_sll(__vector unsigned char __a, __vector unsigned int __b) { 6720 return __builtin_s390_vsl(__a, (__vector unsigned char)__b); 6721 } 6722 6723 static inline __ATTRS_o_ai __vector signed short 6724 vec_sll(__vector signed short __a, __vector unsigned char __b) { 6725 return (__vector signed short)__builtin_s390_vsl( 6726 (__vector unsigned char)__a, __b); 6727 } 6728 6729 // This prototype is deprecated. 6730 static inline __ATTRS_o_ai __vector signed short 6731 vec_sll(__vector signed short __a, __vector unsigned short __b) { 6732 return (__vector signed short)__builtin_s390_vsl( 6733 (__vector unsigned char)__a, (__vector unsigned char)__b); 6734 } 6735 6736 // This prototype is deprecated. 6737 static inline __ATTRS_o_ai __vector signed short 6738 vec_sll(__vector signed short __a, __vector unsigned int __b) { 6739 return (__vector signed short)__builtin_s390_vsl( 6740 (__vector unsigned char)__a, (__vector unsigned char)__b); 6741 } 6742 6743 // This prototype is deprecated. 6744 static inline __ATTRS_o_ai __vector __bool short 6745 vec_sll(__vector __bool short __a, __vector unsigned char __b) { 6746 return (__vector __bool short)__builtin_s390_vsl( 6747 (__vector unsigned char)__a, __b); 6748 } 6749 6750 // This prototype is deprecated. 6751 static inline __ATTRS_o_ai __vector __bool short 6752 vec_sll(__vector __bool short __a, __vector unsigned short __b) { 6753 return (__vector __bool short)__builtin_s390_vsl( 6754 (__vector unsigned char)__a, (__vector unsigned char)__b); 6755 } 6756 6757 // This prototype is deprecated. 6758 static inline __ATTRS_o_ai __vector __bool short 6759 vec_sll(__vector __bool short __a, __vector unsigned int __b) { 6760 return (__vector __bool short)__builtin_s390_vsl( 6761 (__vector unsigned char)__a, (__vector unsigned char)__b); 6762 } 6763 6764 static inline __ATTRS_o_ai __vector unsigned short 6765 vec_sll(__vector unsigned short __a, __vector unsigned char __b) { 6766 return (__vector unsigned short)__builtin_s390_vsl( 6767 (__vector unsigned char)__a, __b); 6768 } 6769 6770 // This prototype is deprecated. 6771 static inline __ATTRS_o_ai __vector unsigned short 6772 vec_sll(__vector unsigned short __a, __vector unsigned short __b) { 6773 return (__vector unsigned short)__builtin_s390_vsl( 6774 (__vector unsigned char)__a, (__vector unsigned char)__b); 6775 } 6776 6777 // This prototype is deprecated. 6778 static inline __ATTRS_o_ai __vector unsigned short 6779 vec_sll(__vector unsigned short __a, __vector unsigned int __b) { 6780 return (__vector unsigned short)__builtin_s390_vsl( 6781 (__vector unsigned char)__a, (__vector unsigned char)__b); 6782 } 6783 6784 static inline __ATTRS_o_ai __vector signed int 6785 vec_sll(__vector signed int __a, __vector unsigned char __b) { 6786 return (__vector signed int)__builtin_s390_vsl( 6787 (__vector unsigned char)__a, __b); 6788 } 6789 6790 // This prototype is deprecated. 6791 static inline __ATTRS_o_ai __vector signed int 6792 vec_sll(__vector signed int __a, __vector unsigned short __b) { 6793 return (__vector signed int)__builtin_s390_vsl( 6794 (__vector unsigned char)__a, (__vector unsigned char)__b); 6795 } 6796 6797 // This prototype is deprecated. 6798 static inline __ATTRS_o_ai __vector signed int 6799 vec_sll(__vector signed int __a, __vector unsigned int __b) { 6800 return (__vector signed int)__builtin_s390_vsl( 6801 (__vector unsigned char)__a, (__vector unsigned char)__b); 6802 } 6803 6804 // This prototype is deprecated. 6805 static inline __ATTRS_o_ai __vector __bool int 6806 vec_sll(__vector __bool int __a, __vector unsigned char __b) { 6807 return (__vector __bool int)__builtin_s390_vsl( 6808 (__vector unsigned char)__a, __b); 6809 } 6810 6811 // This prototype is deprecated. 6812 static inline __ATTRS_o_ai __vector __bool int 6813 vec_sll(__vector __bool int __a, __vector unsigned short __b) { 6814 return (__vector __bool int)__builtin_s390_vsl( 6815 (__vector unsigned char)__a, (__vector unsigned char)__b); 6816 } 6817 6818 // This prototype is deprecated. 6819 static inline __ATTRS_o_ai __vector __bool int 6820 vec_sll(__vector __bool int __a, __vector unsigned int __b) { 6821 return (__vector __bool int)__builtin_s390_vsl( 6822 (__vector unsigned char)__a, (__vector unsigned char)__b); 6823 } 6824 6825 static inline __ATTRS_o_ai __vector unsigned int 6826 vec_sll(__vector unsigned int __a, __vector unsigned char __b) { 6827 return (__vector unsigned int)__builtin_s390_vsl( 6828 (__vector unsigned char)__a, __b); 6829 } 6830 6831 // This prototype is deprecated. 6832 static inline __ATTRS_o_ai __vector unsigned int 6833 vec_sll(__vector unsigned int __a, __vector unsigned short __b) { 6834 return (__vector unsigned int)__builtin_s390_vsl( 6835 (__vector unsigned char)__a, (__vector unsigned char)__b); 6836 } 6837 6838 // This prototype is deprecated. 6839 static inline __ATTRS_o_ai __vector unsigned int 6840 vec_sll(__vector unsigned int __a, __vector unsigned int __b) { 6841 return (__vector unsigned int)__builtin_s390_vsl( 6842 (__vector unsigned char)__a, (__vector unsigned char)__b); 6843 } 6844 6845 static inline __ATTRS_o_ai __vector signed long long 6846 vec_sll(__vector signed long long __a, __vector unsigned char __b) { 6847 return (__vector signed long long)__builtin_s390_vsl( 6848 (__vector unsigned char)__a, __b); 6849 } 6850 6851 // This prototype is deprecated. 6852 static inline __ATTRS_o_ai __vector signed long long 6853 vec_sll(__vector signed long long __a, __vector unsigned short __b) { 6854 return (__vector signed long long)__builtin_s390_vsl( 6855 (__vector unsigned char)__a, (__vector unsigned char)__b); 6856 } 6857 6858 // This prototype is deprecated. 6859 static inline __ATTRS_o_ai __vector signed long long 6860 vec_sll(__vector signed long long __a, __vector unsigned int __b) { 6861 return (__vector signed long long)__builtin_s390_vsl( 6862 (__vector unsigned char)__a, (__vector unsigned char)__b); 6863 } 6864 6865 // This prototype is deprecated. 6866 static inline __ATTRS_o_ai __vector __bool long long 6867 vec_sll(__vector __bool long long __a, __vector unsigned char __b) { 6868 return (__vector __bool long long)__builtin_s390_vsl( 6869 (__vector unsigned char)__a, __b); 6870 } 6871 6872 // This prototype is deprecated. 6873 static inline __ATTRS_o_ai __vector __bool long long 6874 vec_sll(__vector __bool long long __a, __vector unsigned short __b) { 6875 return (__vector __bool long long)__builtin_s390_vsl( 6876 (__vector unsigned char)__a, (__vector unsigned char)__b); 6877 } 6878 6879 // This prototype is deprecated. 6880 static inline __ATTRS_o_ai __vector __bool long long 6881 vec_sll(__vector __bool long long __a, __vector unsigned int __b) { 6882 return (__vector __bool long long)__builtin_s390_vsl( 6883 (__vector unsigned char)__a, (__vector unsigned char)__b); 6884 } 6885 6886 static inline __ATTRS_o_ai __vector unsigned long long 6887 vec_sll(__vector unsigned long long __a, __vector unsigned char __b) { 6888 return (__vector unsigned long long)__builtin_s390_vsl( 6889 (__vector unsigned char)__a, __b); 6890 } 6891 6892 // This prototype is deprecated. 6893 static inline __ATTRS_o_ai __vector unsigned long long 6894 vec_sll(__vector unsigned long long __a, __vector unsigned short __b) { 6895 return (__vector unsigned long long)__builtin_s390_vsl( 6896 (__vector unsigned char)__a, (__vector unsigned char)__b); 6897 } 6898 6899 // This prototype is deprecated. 6900 static inline __ATTRS_o_ai __vector unsigned long long 6901 vec_sll(__vector unsigned long long __a, __vector unsigned int __b) { 6902 return (__vector unsigned long long)__builtin_s390_vsl( 6903 (__vector unsigned char)__a, (__vector unsigned char)__b); 6904 } 6905 6906 /*-- vec_slb ----------------------------------------------------------------*/ 6907 6908 static inline __ATTRS_o_ai __vector signed char 6909 vec_slb(__vector signed char __a, __vector signed char __b) { 6910 return (__vector signed char)__builtin_s390_vslb( 6911 (__vector unsigned char)__a, (__vector unsigned char)__b); 6912 } 6913 6914 static inline __ATTRS_o_ai __vector signed char 6915 vec_slb(__vector signed char __a, __vector unsigned char __b) { 6916 return (__vector signed char)__builtin_s390_vslb( 6917 (__vector unsigned char)__a, __b); 6918 } 6919 6920 static inline __ATTRS_o_ai __vector unsigned char 6921 vec_slb(__vector unsigned char __a, __vector signed char __b) { 6922 return __builtin_s390_vslb(__a, (__vector unsigned char)__b); 6923 } 6924 6925 static inline __ATTRS_o_ai __vector unsigned char 6926 vec_slb(__vector unsigned char __a, __vector unsigned char __b) { 6927 return __builtin_s390_vslb(__a, __b); 6928 } 6929 6930 static inline __ATTRS_o_ai __vector signed short 6931 vec_slb(__vector signed short __a, __vector signed short __b) { 6932 return (__vector signed short)__builtin_s390_vslb( 6933 (__vector unsigned char)__a, (__vector unsigned char)__b); 6934 } 6935 6936 static inline __ATTRS_o_ai __vector signed short 6937 vec_slb(__vector signed short __a, __vector unsigned short __b) { 6938 return (__vector signed short)__builtin_s390_vslb( 6939 (__vector unsigned char)__a, (__vector unsigned char)__b); 6940 } 6941 6942 static inline __ATTRS_o_ai __vector unsigned short 6943 vec_slb(__vector unsigned short __a, __vector signed short __b) { 6944 return (__vector unsigned short)__builtin_s390_vslb( 6945 (__vector unsigned char)__a, (__vector unsigned char)__b); 6946 } 6947 6948 static inline __ATTRS_o_ai __vector unsigned short 6949 vec_slb(__vector unsigned short __a, __vector unsigned short __b) { 6950 return (__vector unsigned short)__builtin_s390_vslb( 6951 (__vector unsigned char)__a, (__vector unsigned char)__b); 6952 } 6953 6954 static inline __ATTRS_o_ai __vector signed int 6955 vec_slb(__vector signed int __a, __vector signed int __b) { 6956 return (__vector signed int)__builtin_s390_vslb( 6957 (__vector unsigned char)__a, (__vector unsigned char)__b); 6958 } 6959 6960 static inline __ATTRS_o_ai __vector signed int 6961 vec_slb(__vector signed int __a, __vector unsigned int __b) { 6962 return (__vector signed int)__builtin_s390_vslb( 6963 (__vector unsigned char)__a, (__vector unsigned char)__b); 6964 } 6965 6966 static inline __ATTRS_o_ai __vector unsigned int 6967 vec_slb(__vector unsigned int __a, __vector signed int __b) { 6968 return (__vector unsigned int)__builtin_s390_vslb( 6969 (__vector unsigned char)__a, (__vector unsigned char)__b); 6970 } 6971 6972 static inline __ATTRS_o_ai __vector unsigned int 6973 vec_slb(__vector unsigned int __a, __vector unsigned int __b) { 6974 return (__vector unsigned int)__builtin_s390_vslb( 6975 (__vector unsigned char)__a, (__vector unsigned char)__b); 6976 } 6977 6978 static inline __ATTRS_o_ai __vector signed long long 6979 vec_slb(__vector signed long long __a, __vector signed long long __b) { 6980 return (__vector signed long long)__builtin_s390_vslb( 6981 (__vector unsigned char)__a, (__vector unsigned char)__b); 6982 } 6983 6984 static inline __ATTRS_o_ai __vector signed long long 6985 vec_slb(__vector signed long long __a, __vector unsigned long long __b) { 6986 return (__vector signed long long)__builtin_s390_vslb( 6987 (__vector unsigned char)__a, (__vector unsigned char)__b); 6988 } 6989 6990 static inline __ATTRS_o_ai __vector unsigned long long 6991 vec_slb(__vector unsigned long long __a, __vector signed long long __b) { 6992 return (__vector unsigned long long)__builtin_s390_vslb( 6993 (__vector unsigned char)__a, (__vector unsigned char)__b); 6994 } 6995 6996 static inline __ATTRS_o_ai __vector unsigned long long 6997 vec_slb(__vector unsigned long long __a, __vector unsigned long long __b) { 6998 return (__vector unsigned long long)__builtin_s390_vslb( 6999 (__vector unsigned char)__a, (__vector unsigned char)__b); 7000 } 7001 7002 #if __ARCH__ >= 12 7003 static inline __ATTRS_o_ai __vector float 7004 vec_slb(__vector float __a, __vector signed int __b) { 7005 return (__vector float)__builtin_s390_vslb( 7006 (__vector unsigned char)__a, (__vector unsigned char)__b); 7007 } 7008 7009 static inline __ATTRS_o_ai __vector float 7010 vec_slb(__vector float __a, __vector unsigned int __b) { 7011 return (__vector float)__builtin_s390_vslb( 7012 (__vector unsigned char)__a, (__vector unsigned char)__b); 7013 } 7014 #endif 7015 7016 static inline __ATTRS_o_ai __vector double 7017 vec_slb(__vector double __a, __vector signed long long __b) { 7018 return (__vector double)__builtin_s390_vslb( 7019 (__vector unsigned char)__a, (__vector unsigned char)__b); 7020 } 7021 7022 static inline __ATTRS_o_ai __vector double 7023 vec_slb(__vector double __a, __vector unsigned long long __b) { 7024 return (__vector double)__builtin_s390_vslb( 7025 (__vector unsigned char)__a, (__vector unsigned char)__b); 7026 } 7027 7028 /*-- vec_sld ----------------------------------------------------------------*/ 7029 7030 extern __ATTRS_o __vector signed char 7031 vec_sld(__vector signed char __a, __vector signed char __b, int __c) 7032 __constant_range(__c, 0, 15); 7033 7034 extern __ATTRS_o __vector __bool char 7035 vec_sld(__vector __bool char __a, __vector __bool char __b, int __c) 7036 __constant_range(__c, 0, 15); 7037 7038 extern __ATTRS_o __vector unsigned char 7039 vec_sld(__vector unsigned char __a, __vector unsigned char __b, int __c) 7040 __constant_range(__c, 0, 15); 7041 7042 extern __ATTRS_o __vector signed short 7043 vec_sld(__vector signed short __a, __vector signed short __b, int __c) 7044 __constant_range(__c, 0, 15); 7045 7046 extern __ATTRS_o __vector __bool short 7047 vec_sld(__vector __bool short __a, __vector __bool short __b, int __c) 7048 __constant_range(__c, 0, 15); 7049 7050 extern __ATTRS_o __vector unsigned short 7051 vec_sld(__vector unsigned short __a, __vector unsigned short __b, int __c) 7052 __constant_range(__c, 0, 15); 7053 7054 extern __ATTRS_o __vector signed int 7055 vec_sld(__vector signed int __a, __vector signed int __b, int __c) 7056 __constant_range(__c, 0, 15); 7057 7058 extern __ATTRS_o __vector __bool int 7059 vec_sld(__vector __bool int __a, __vector __bool int __b, int __c) 7060 __constant_range(__c, 0, 15); 7061 7062 extern __ATTRS_o __vector unsigned int 7063 vec_sld(__vector unsigned int __a, __vector unsigned int __b, int __c) 7064 __constant_range(__c, 0, 15); 7065 7066 extern __ATTRS_o __vector signed long long 7067 vec_sld(__vector signed long long __a, __vector signed long long __b, int __c) 7068 __constant_range(__c, 0, 15); 7069 7070 extern __ATTRS_o __vector __bool long long 7071 vec_sld(__vector __bool long long __a, __vector __bool long long __b, int __c) 7072 __constant_range(__c, 0, 15); 7073 7074 extern __ATTRS_o __vector unsigned long long 7075 vec_sld(__vector unsigned long long __a, __vector unsigned long long __b, 7076 int __c) 7077 __constant_range(__c, 0, 15); 7078 7079 #if __ARCH__ >= 12 7080 extern __ATTRS_o __vector float 7081 vec_sld(__vector float __a, __vector float __b, int __c) 7082 __constant_range(__c, 0, 15); 7083 #endif 7084 7085 extern __ATTRS_o __vector double 7086 vec_sld(__vector double __a, __vector double __b, int __c) 7087 __constant_range(__c, 0, 15); 7088 7089 #define vec_sld(X, Y, Z) ((__typeof__((vec_sld)((X), (Y), (Z)))) \ 7090 __builtin_s390_vsldb((__vector unsigned char)(X), \ 7091 (__vector unsigned char)(Y), (Z))) 7092 7093 /*-- vec_sldw ---------------------------------------------------------------*/ 7094 7095 extern __ATTRS_o __vector signed char 7096 vec_sldw(__vector signed char __a, __vector signed char __b, int __c) 7097 __constant_range(__c, 0, 3); 7098 7099 extern __ATTRS_o __vector unsigned char 7100 vec_sldw(__vector unsigned char __a, __vector unsigned char __b, int __c) 7101 __constant_range(__c, 0, 3); 7102 7103 extern __ATTRS_o __vector signed short 7104 vec_sldw(__vector signed short __a, __vector signed short __b, int __c) 7105 __constant_range(__c, 0, 3); 7106 7107 extern __ATTRS_o __vector unsigned short 7108 vec_sldw(__vector unsigned short __a, __vector unsigned short __b, int __c) 7109 __constant_range(__c, 0, 3); 7110 7111 extern __ATTRS_o __vector signed int 7112 vec_sldw(__vector signed int __a, __vector signed int __b, int __c) 7113 __constant_range(__c, 0, 3); 7114 7115 extern __ATTRS_o __vector unsigned int 7116 vec_sldw(__vector unsigned int __a, __vector unsigned int __b, int __c) 7117 __constant_range(__c, 0, 3); 7118 7119 extern __ATTRS_o __vector signed long long 7120 vec_sldw(__vector signed long long __a, __vector signed long long __b, int __c) 7121 __constant_range(__c, 0, 3); 7122 7123 extern __ATTRS_o __vector unsigned long long 7124 vec_sldw(__vector unsigned long long __a, __vector unsigned long long __b, 7125 int __c) 7126 __constant_range(__c, 0, 3); 7127 7128 // This prototype is deprecated. 7129 extern __ATTRS_o __vector double 7130 vec_sldw(__vector double __a, __vector double __b, int __c) 7131 __constant_range(__c, 0, 3); 7132 7133 #define vec_sldw(X, Y, Z) ((__typeof__((vec_sldw)((X), (Y), (Z)))) \ 7134 __builtin_s390_vsldb((__vector unsigned char)(X), \ 7135 (__vector unsigned char)(Y), (Z) * 4)) 7136 7137 /*-- vec_sldb ---------------------------------------------------------------*/ 7138 7139 #if __ARCH__ >= 13 7140 7141 extern __ATTRS_o __vector signed char 7142 vec_sldb(__vector signed char __a, __vector signed char __b, int __c) 7143 __constant_range(__c, 0, 7); 7144 7145 extern __ATTRS_o __vector unsigned char 7146 vec_sldb(__vector unsigned char __a, __vector unsigned char __b, int __c) 7147 __constant_range(__c, 0, 7); 7148 7149 extern __ATTRS_o __vector signed short 7150 vec_sldb(__vector signed short __a, __vector signed short __b, int __c) 7151 __constant_range(__c, 0, 7); 7152 7153 extern __ATTRS_o __vector unsigned short 7154 vec_sldb(__vector unsigned short __a, __vector unsigned short __b, int __c) 7155 __constant_range(__c, 0, 7); 7156 7157 extern __ATTRS_o __vector signed int 7158 vec_sldb(__vector signed int __a, __vector signed int __b, int __c) 7159 __constant_range(__c, 0, 7); 7160 7161 extern __ATTRS_o __vector unsigned int 7162 vec_sldb(__vector unsigned int __a, __vector unsigned int __b, int __c) 7163 __constant_range(__c, 0, 7); 7164 7165 extern __ATTRS_o __vector signed long long 7166 vec_sldb(__vector signed long long __a, __vector signed long long __b, int __c) 7167 __constant_range(__c, 0, 7); 7168 7169 extern __ATTRS_o __vector unsigned long long 7170 vec_sldb(__vector unsigned long long __a, __vector unsigned long long __b, 7171 int __c) 7172 __constant_range(__c, 0, 7); 7173 7174 extern __ATTRS_o __vector float 7175 vec_sldb(__vector float __a, __vector float __b, int __c) 7176 __constant_range(__c, 0, 7); 7177 7178 extern __ATTRS_o __vector double 7179 vec_sldb(__vector double __a, __vector double __b, int __c) 7180 __constant_range(__c, 0, 7); 7181 7182 #define vec_sldb(X, Y, Z) ((__typeof__((vec_sldb)((X), (Y), (Z)))) \ 7183 __builtin_s390_vsld((__vector unsigned char)(X), \ 7184 (__vector unsigned char)(Y), (Z))) 7185 7186 #endif 7187 7188 /*-- vec_sral ---------------------------------------------------------------*/ 7189 7190 static inline __ATTRS_o_ai __vector signed char 7191 vec_sral(__vector signed char __a, __vector unsigned char __b) { 7192 return (__vector signed char)__builtin_s390_vsra( 7193 (__vector unsigned char)__a, __b); 7194 } 7195 7196 // This prototype is deprecated. 7197 static inline __ATTRS_o_ai __vector signed char 7198 vec_sral(__vector signed char __a, __vector unsigned short __b) { 7199 return (__vector signed char)__builtin_s390_vsra( 7200 (__vector unsigned char)__a, (__vector unsigned char)__b); 7201 } 7202 7203 // This prototype is deprecated. 7204 static inline __ATTRS_o_ai __vector signed char 7205 vec_sral(__vector signed char __a, __vector unsigned int __b) { 7206 return (__vector signed char)__builtin_s390_vsra( 7207 (__vector unsigned char)__a, (__vector unsigned char)__b); 7208 } 7209 7210 // This prototype is deprecated. 7211 static inline __ATTRS_o_ai __vector __bool char 7212 vec_sral(__vector __bool char __a, __vector unsigned char __b) { 7213 return (__vector __bool char)__builtin_s390_vsra( 7214 (__vector unsigned char)__a, __b); 7215 } 7216 7217 // This prototype is deprecated. 7218 static inline __ATTRS_o_ai __vector __bool char 7219 vec_sral(__vector __bool char __a, __vector unsigned short __b) { 7220 return (__vector __bool char)__builtin_s390_vsra( 7221 (__vector unsigned char)__a, (__vector unsigned char)__b); 7222 } 7223 7224 // This prototype is deprecated. 7225 static inline __ATTRS_o_ai __vector __bool char 7226 vec_sral(__vector __bool char __a, __vector unsigned int __b) { 7227 return (__vector __bool char)__builtin_s390_vsra( 7228 (__vector unsigned char)__a, (__vector unsigned char)__b); 7229 } 7230 7231 static inline __ATTRS_o_ai __vector unsigned char 7232 vec_sral(__vector unsigned char __a, __vector unsigned char __b) { 7233 return __builtin_s390_vsra(__a, __b); 7234 } 7235 7236 // This prototype is deprecated. 7237 static inline __ATTRS_o_ai __vector unsigned char 7238 vec_sral(__vector unsigned char __a, __vector unsigned short __b) { 7239 return __builtin_s390_vsra(__a, (__vector unsigned char)__b); 7240 } 7241 7242 // This prototype is deprecated. 7243 static inline __ATTRS_o_ai __vector unsigned char 7244 vec_sral(__vector unsigned char __a, __vector unsigned int __b) { 7245 return __builtin_s390_vsra(__a, (__vector unsigned char)__b); 7246 } 7247 7248 static inline __ATTRS_o_ai __vector signed short 7249 vec_sral(__vector signed short __a, __vector unsigned char __b) { 7250 return (__vector signed short)__builtin_s390_vsra( 7251 (__vector unsigned char)__a, __b); 7252 } 7253 7254 // This prototype is deprecated. 7255 static inline __ATTRS_o_ai __vector signed short 7256 vec_sral(__vector signed short __a, __vector unsigned short __b) { 7257 return (__vector signed short)__builtin_s390_vsra( 7258 (__vector unsigned char)__a, (__vector unsigned char)__b); 7259 } 7260 7261 // This prototype is deprecated. 7262 static inline __ATTRS_o_ai __vector signed short 7263 vec_sral(__vector signed short __a, __vector unsigned int __b) { 7264 return (__vector signed short)__builtin_s390_vsra( 7265 (__vector unsigned char)__a, (__vector unsigned char)__b); 7266 } 7267 7268 // This prototype is deprecated. 7269 static inline __ATTRS_o_ai __vector __bool short 7270 vec_sral(__vector __bool short __a, __vector unsigned char __b) { 7271 return (__vector __bool short)__builtin_s390_vsra( 7272 (__vector unsigned char)__a, __b); 7273 } 7274 7275 // This prototype is deprecated. 7276 static inline __ATTRS_o_ai __vector __bool short 7277 vec_sral(__vector __bool short __a, __vector unsigned short __b) { 7278 return (__vector __bool short)__builtin_s390_vsra( 7279 (__vector unsigned char)__a, (__vector unsigned char)__b); 7280 } 7281 7282 // This prototype is deprecated. 7283 static inline __ATTRS_o_ai __vector __bool short 7284 vec_sral(__vector __bool short __a, __vector unsigned int __b) { 7285 return (__vector __bool short)__builtin_s390_vsra( 7286 (__vector unsigned char)__a, (__vector unsigned char)__b); 7287 } 7288 7289 static inline __ATTRS_o_ai __vector unsigned short 7290 vec_sral(__vector unsigned short __a, __vector unsigned char __b) { 7291 return (__vector unsigned short)__builtin_s390_vsra( 7292 (__vector unsigned char)__a, __b); 7293 } 7294 7295 // This prototype is deprecated. 7296 static inline __ATTRS_o_ai __vector unsigned short 7297 vec_sral(__vector unsigned short __a, __vector unsigned short __b) { 7298 return (__vector unsigned short)__builtin_s390_vsra( 7299 (__vector unsigned char)__a, (__vector unsigned char)__b); 7300 } 7301 7302 // This prototype is deprecated. 7303 static inline __ATTRS_o_ai __vector unsigned short 7304 vec_sral(__vector unsigned short __a, __vector unsigned int __b) { 7305 return (__vector unsigned short)__builtin_s390_vsra( 7306 (__vector unsigned char)__a, (__vector unsigned char)__b); 7307 } 7308 7309 static inline __ATTRS_o_ai __vector signed int 7310 vec_sral(__vector signed int __a, __vector unsigned char __b) { 7311 return (__vector signed int)__builtin_s390_vsra( 7312 (__vector unsigned char)__a, __b); 7313 } 7314 7315 // This prototype is deprecated. 7316 static inline __ATTRS_o_ai __vector signed int 7317 vec_sral(__vector signed int __a, __vector unsigned short __b) { 7318 return (__vector signed int)__builtin_s390_vsra( 7319 (__vector unsigned char)__a, (__vector unsigned char)__b); 7320 } 7321 7322 // This prototype is deprecated. 7323 static inline __ATTRS_o_ai __vector signed int 7324 vec_sral(__vector signed int __a, __vector unsigned int __b) { 7325 return (__vector signed int)__builtin_s390_vsra( 7326 (__vector unsigned char)__a, (__vector unsigned char)__b); 7327 } 7328 7329 // This prototype is deprecated. 7330 static inline __ATTRS_o_ai __vector __bool int 7331 vec_sral(__vector __bool int __a, __vector unsigned char __b) { 7332 return (__vector __bool int)__builtin_s390_vsra( 7333 (__vector unsigned char)__a, __b); 7334 } 7335 7336 // This prototype is deprecated. 7337 static inline __ATTRS_o_ai __vector __bool int 7338 vec_sral(__vector __bool int __a, __vector unsigned short __b) { 7339 return (__vector __bool int)__builtin_s390_vsra( 7340 (__vector unsigned char)__a, (__vector unsigned char)__b); 7341 } 7342 7343 // This prototype is deprecated. 7344 static inline __ATTRS_o_ai __vector __bool int 7345 vec_sral(__vector __bool int __a, __vector unsigned int __b) { 7346 return (__vector __bool int)__builtin_s390_vsra( 7347 (__vector unsigned char)__a, (__vector unsigned char)__b); 7348 } 7349 7350 static inline __ATTRS_o_ai __vector unsigned int 7351 vec_sral(__vector unsigned int __a, __vector unsigned char __b) { 7352 return (__vector unsigned int)__builtin_s390_vsra( 7353 (__vector unsigned char)__a, __b); 7354 } 7355 7356 // This prototype is deprecated. 7357 static inline __ATTRS_o_ai __vector unsigned int 7358 vec_sral(__vector unsigned int __a, __vector unsigned short __b) { 7359 return (__vector unsigned int)__builtin_s390_vsra( 7360 (__vector unsigned char)__a, (__vector unsigned char)__b); 7361 } 7362 7363 // This prototype is deprecated. 7364 static inline __ATTRS_o_ai __vector unsigned int 7365 vec_sral(__vector unsigned int __a, __vector unsigned int __b) { 7366 return (__vector unsigned int)__builtin_s390_vsra( 7367 (__vector unsigned char)__a, (__vector unsigned char)__b); 7368 } 7369 7370 static inline __ATTRS_o_ai __vector signed long long 7371 vec_sral(__vector signed long long __a, __vector unsigned char __b) { 7372 return (__vector signed long long)__builtin_s390_vsra( 7373 (__vector unsigned char)__a, __b); 7374 } 7375 7376 // This prototype is deprecated. 7377 static inline __ATTRS_o_ai __vector signed long long 7378 vec_sral(__vector signed long long __a, __vector unsigned short __b) { 7379 return (__vector signed long long)__builtin_s390_vsra( 7380 (__vector unsigned char)__a, (__vector unsigned char)__b); 7381 } 7382 7383 // This prototype is deprecated. 7384 static inline __ATTRS_o_ai __vector signed long long 7385 vec_sral(__vector signed long long __a, __vector unsigned int __b) { 7386 return (__vector signed long long)__builtin_s390_vsra( 7387 (__vector unsigned char)__a, (__vector unsigned char)__b); 7388 } 7389 7390 // This prototype is deprecated. 7391 static inline __ATTRS_o_ai __vector __bool long long 7392 vec_sral(__vector __bool long long __a, __vector unsigned char __b) { 7393 return (__vector __bool long long)__builtin_s390_vsra( 7394 (__vector unsigned char)__a, __b); 7395 } 7396 7397 // This prototype is deprecated. 7398 static inline __ATTRS_o_ai __vector __bool long long 7399 vec_sral(__vector __bool long long __a, __vector unsigned short __b) { 7400 return (__vector __bool long long)__builtin_s390_vsra( 7401 (__vector unsigned char)__a, (__vector unsigned char)__b); 7402 } 7403 7404 // This prototype is deprecated. 7405 static inline __ATTRS_o_ai __vector __bool long long 7406 vec_sral(__vector __bool long long __a, __vector unsigned int __b) { 7407 return (__vector __bool long long)__builtin_s390_vsra( 7408 (__vector unsigned char)__a, (__vector unsigned char)__b); 7409 } 7410 7411 static inline __ATTRS_o_ai __vector unsigned long long 7412 vec_sral(__vector unsigned long long __a, __vector unsigned char __b) { 7413 return (__vector unsigned long long)__builtin_s390_vsra( 7414 (__vector unsigned char)__a, __b); 7415 } 7416 7417 // This prototype is deprecated. 7418 static inline __ATTRS_o_ai __vector unsigned long long 7419 vec_sral(__vector unsigned long long __a, __vector unsigned short __b) { 7420 return (__vector unsigned long long)__builtin_s390_vsra( 7421 (__vector unsigned char)__a, (__vector unsigned char)__b); 7422 } 7423 7424 // This prototype is deprecated. 7425 static inline __ATTRS_o_ai __vector unsigned long long 7426 vec_sral(__vector unsigned long long __a, __vector unsigned int __b) { 7427 return (__vector unsigned long long)__builtin_s390_vsra( 7428 (__vector unsigned char)__a, (__vector unsigned char)__b); 7429 } 7430 7431 /*-- vec_srab ---------------------------------------------------------------*/ 7432 7433 static inline __ATTRS_o_ai __vector signed char 7434 vec_srab(__vector signed char __a, __vector signed char __b) { 7435 return (__vector signed char)__builtin_s390_vsrab( 7436 (__vector unsigned char)__a, (__vector unsigned char)__b); 7437 } 7438 7439 static inline __ATTRS_o_ai __vector signed char 7440 vec_srab(__vector signed char __a, __vector unsigned char __b) { 7441 return (__vector signed char)__builtin_s390_vsrab( 7442 (__vector unsigned char)__a, __b); 7443 } 7444 7445 static inline __ATTRS_o_ai __vector unsigned char 7446 vec_srab(__vector unsigned char __a, __vector signed char __b) { 7447 return __builtin_s390_vsrab(__a, (__vector unsigned char)__b); 7448 } 7449 7450 static inline __ATTRS_o_ai __vector unsigned char 7451 vec_srab(__vector unsigned char __a, __vector unsigned char __b) { 7452 return __builtin_s390_vsrab(__a, __b); 7453 } 7454 7455 static inline __ATTRS_o_ai __vector signed short 7456 vec_srab(__vector signed short __a, __vector signed short __b) { 7457 return (__vector signed short)__builtin_s390_vsrab( 7458 (__vector unsigned char)__a, (__vector unsigned char)__b); 7459 } 7460 7461 static inline __ATTRS_o_ai __vector signed short 7462 vec_srab(__vector signed short __a, __vector unsigned short __b) { 7463 return (__vector signed short)__builtin_s390_vsrab( 7464 (__vector unsigned char)__a, (__vector unsigned char)__b); 7465 } 7466 7467 static inline __ATTRS_o_ai __vector unsigned short 7468 vec_srab(__vector unsigned short __a, __vector signed short __b) { 7469 return (__vector unsigned short)__builtin_s390_vsrab( 7470 (__vector unsigned char)__a, (__vector unsigned char)__b); 7471 } 7472 7473 static inline __ATTRS_o_ai __vector unsigned short 7474 vec_srab(__vector unsigned short __a, __vector unsigned short __b) { 7475 return (__vector unsigned short)__builtin_s390_vsrab( 7476 (__vector unsigned char)__a, (__vector unsigned char)__b); 7477 } 7478 7479 static inline __ATTRS_o_ai __vector signed int 7480 vec_srab(__vector signed int __a, __vector signed int __b) { 7481 return (__vector signed int)__builtin_s390_vsrab( 7482 (__vector unsigned char)__a, (__vector unsigned char)__b); 7483 } 7484 7485 static inline __ATTRS_o_ai __vector signed int 7486 vec_srab(__vector signed int __a, __vector unsigned int __b) { 7487 return (__vector signed int)__builtin_s390_vsrab( 7488 (__vector unsigned char)__a, (__vector unsigned char)__b); 7489 } 7490 7491 static inline __ATTRS_o_ai __vector unsigned int 7492 vec_srab(__vector unsigned int __a, __vector signed int __b) { 7493 return (__vector unsigned int)__builtin_s390_vsrab( 7494 (__vector unsigned char)__a, (__vector unsigned char)__b); 7495 } 7496 7497 static inline __ATTRS_o_ai __vector unsigned int 7498 vec_srab(__vector unsigned int __a, __vector unsigned int __b) { 7499 return (__vector unsigned int)__builtin_s390_vsrab( 7500 (__vector unsigned char)__a, (__vector unsigned char)__b); 7501 } 7502 7503 static inline __ATTRS_o_ai __vector signed long long 7504 vec_srab(__vector signed long long __a, __vector signed long long __b) { 7505 return (__vector signed long long)__builtin_s390_vsrab( 7506 (__vector unsigned char)__a, (__vector unsigned char)__b); 7507 } 7508 7509 static inline __ATTRS_o_ai __vector signed long long 7510 vec_srab(__vector signed long long __a, __vector unsigned long long __b) { 7511 return (__vector signed long long)__builtin_s390_vsrab( 7512 (__vector unsigned char)__a, (__vector unsigned char)__b); 7513 } 7514 7515 static inline __ATTRS_o_ai __vector unsigned long long 7516 vec_srab(__vector unsigned long long __a, __vector signed long long __b) { 7517 return (__vector unsigned long long)__builtin_s390_vsrab( 7518 (__vector unsigned char)__a, (__vector unsigned char)__b); 7519 } 7520 7521 static inline __ATTRS_o_ai __vector unsigned long long 7522 vec_srab(__vector unsigned long long __a, __vector unsigned long long __b) { 7523 return (__vector unsigned long long)__builtin_s390_vsrab( 7524 (__vector unsigned char)__a, (__vector unsigned char)__b); 7525 } 7526 7527 #if __ARCH__ >= 12 7528 static inline __ATTRS_o_ai __vector float 7529 vec_srab(__vector float __a, __vector signed int __b) { 7530 return (__vector float)__builtin_s390_vsrab( 7531 (__vector unsigned char)__a, (__vector unsigned char)__b); 7532 } 7533 7534 static inline __ATTRS_o_ai __vector float 7535 vec_srab(__vector float __a, __vector unsigned int __b) { 7536 return (__vector float)__builtin_s390_vsrab( 7537 (__vector unsigned char)__a, (__vector unsigned char)__b); 7538 } 7539 #endif 7540 7541 static inline __ATTRS_o_ai __vector double 7542 vec_srab(__vector double __a, __vector signed long long __b) { 7543 return (__vector double)__builtin_s390_vsrab( 7544 (__vector unsigned char)__a, (__vector unsigned char)__b); 7545 } 7546 7547 static inline __ATTRS_o_ai __vector double 7548 vec_srab(__vector double __a, __vector unsigned long long __b) { 7549 return (__vector double)__builtin_s390_vsrab( 7550 (__vector unsigned char)__a, (__vector unsigned char)__b); 7551 } 7552 7553 /*-- vec_srl ----------------------------------------------------------------*/ 7554 7555 static inline __ATTRS_o_ai __vector signed char 7556 vec_srl(__vector signed char __a, __vector unsigned char __b) { 7557 return (__vector signed char)__builtin_s390_vsrl( 7558 (__vector unsigned char)__a, __b); 7559 } 7560 7561 // This prototype is deprecated. 7562 static inline __ATTRS_o_ai __vector signed char 7563 vec_srl(__vector signed char __a, __vector unsigned short __b) { 7564 return (__vector signed char)__builtin_s390_vsrl( 7565 (__vector unsigned char)__a, (__vector unsigned char)__b); 7566 } 7567 7568 // This prototype is deprecated. 7569 static inline __ATTRS_o_ai __vector signed char 7570 vec_srl(__vector signed char __a, __vector unsigned int __b) { 7571 return (__vector signed char)__builtin_s390_vsrl( 7572 (__vector unsigned char)__a, (__vector unsigned char)__b); 7573 } 7574 7575 // This prototype is deprecated. 7576 static inline __ATTRS_o_ai __vector __bool char 7577 vec_srl(__vector __bool char __a, __vector unsigned char __b) { 7578 return (__vector __bool char)__builtin_s390_vsrl( 7579 (__vector unsigned char)__a, __b); 7580 } 7581 7582 // This prototype is deprecated. 7583 static inline __ATTRS_o_ai __vector __bool char 7584 vec_srl(__vector __bool char __a, __vector unsigned short __b) { 7585 return (__vector __bool char)__builtin_s390_vsrl( 7586 (__vector unsigned char)__a, (__vector unsigned char)__b); 7587 } 7588 7589 // This prototype is deprecated. 7590 static inline __ATTRS_o_ai __vector __bool char 7591 vec_srl(__vector __bool char __a, __vector unsigned int __b) { 7592 return (__vector __bool char)__builtin_s390_vsrl( 7593 (__vector unsigned char)__a, (__vector unsigned char)__b); 7594 } 7595 7596 static inline __ATTRS_o_ai __vector unsigned char 7597 vec_srl(__vector unsigned char __a, __vector unsigned char __b) { 7598 return __builtin_s390_vsrl(__a, __b); 7599 } 7600 7601 // This prototype is deprecated. 7602 static inline __ATTRS_o_ai __vector unsigned char 7603 vec_srl(__vector unsigned char __a, __vector unsigned short __b) { 7604 return __builtin_s390_vsrl(__a, (__vector unsigned char)__b); 7605 } 7606 7607 // This prototype is deprecated. 7608 static inline __ATTRS_o_ai __vector unsigned char 7609 vec_srl(__vector unsigned char __a, __vector unsigned int __b) { 7610 return __builtin_s390_vsrl(__a, (__vector unsigned char)__b); 7611 } 7612 7613 static inline __ATTRS_o_ai __vector signed short 7614 vec_srl(__vector signed short __a, __vector unsigned char __b) { 7615 return (__vector signed short)__builtin_s390_vsrl( 7616 (__vector unsigned char)__a, __b); 7617 } 7618 7619 // This prototype is deprecated. 7620 static inline __ATTRS_o_ai __vector signed short 7621 vec_srl(__vector signed short __a, __vector unsigned short __b) { 7622 return (__vector signed short)__builtin_s390_vsrl( 7623 (__vector unsigned char)__a, (__vector unsigned char)__b); 7624 } 7625 7626 // This prototype is deprecated. 7627 static inline __ATTRS_o_ai __vector signed short 7628 vec_srl(__vector signed short __a, __vector unsigned int __b) { 7629 return (__vector signed short)__builtin_s390_vsrl( 7630 (__vector unsigned char)__a, (__vector unsigned char)__b); 7631 } 7632 7633 // This prototype is deprecated. 7634 static inline __ATTRS_o_ai __vector __bool short 7635 vec_srl(__vector __bool short __a, __vector unsigned char __b) { 7636 return (__vector __bool short)__builtin_s390_vsrl( 7637 (__vector unsigned char)__a, __b); 7638 } 7639 7640 // This prototype is deprecated. 7641 static inline __ATTRS_o_ai __vector __bool short 7642 vec_srl(__vector __bool short __a, __vector unsigned short __b) { 7643 return (__vector __bool short)__builtin_s390_vsrl( 7644 (__vector unsigned char)__a, (__vector unsigned char)__b); 7645 } 7646 7647 // This prototype is deprecated. 7648 static inline __ATTRS_o_ai __vector __bool short 7649 vec_srl(__vector __bool short __a, __vector unsigned int __b) { 7650 return (__vector __bool short)__builtin_s390_vsrl( 7651 (__vector unsigned char)__a, (__vector unsigned char)__b); 7652 } 7653 7654 static inline __ATTRS_o_ai __vector unsigned short 7655 vec_srl(__vector unsigned short __a, __vector unsigned char __b) { 7656 return (__vector unsigned short)__builtin_s390_vsrl( 7657 (__vector unsigned char)__a, __b); 7658 } 7659 7660 // This prototype is deprecated. 7661 static inline __ATTRS_o_ai __vector unsigned short 7662 vec_srl(__vector unsigned short __a, __vector unsigned short __b) { 7663 return (__vector unsigned short)__builtin_s390_vsrl( 7664 (__vector unsigned char)__a, (__vector unsigned char)__b); 7665 } 7666 7667 // This prototype is deprecated. 7668 static inline __ATTRS_o_ai __vector unsigned short 7669 vec_srl(__vector unsigned short __a, __vector unsigned int __b) { 7670 return (__vector unsigned short)__builtin_s390_vsrl( 7671 (__vector unsigned char)__a, (__vector unsigned char)__b); 7672 } 7673 7674 static inline __ATTRS_o_ai __vector signed int 7675 vec_srl(__vector signed int __a, __vector unsigned char __b) { 7676 return (__vector signed int)__builtin_s390_vsrl( 7677 (__vector unsigned char)__a, __b); 7678 } 7679 7680 // This prototype is deprecated. 7681 static inline __ATTRS_o_ai __vector signed int 7682 vec_srl(__vector signed int __a, __vector unsigned short __b) { 7683 return (__vector signed int)__builtin_s390_vsrl( 7684 (__vector unsigned char)__a, (__vector unsigned char)__b); 7685 } 7686 7687 // This prototype is deprecated. 7688 static inline __ATTRS_o_ai __vector signed int 7689 vec_srl(__vector signed int __a, __vector unsigned int __b) { 7690 return (__vector signed int)__builtin_s390_vsrl( 7691 (__vector unsigned char)__a, (__vector unsigned char)__b); 7692 } 7693 7694 // This prototype is deprecated. 7695 static inline __ATTRS_o_ai __vector __bool int 7696 vec_srl(__vector __bool int __a, __vector unsigned char __b) { 7697 return (__vector __bool int)__builtin_s390_vsrl( 7698 (__vector unsigned char)__a, __b); 7699 } 7700 7701 // This prototype is deprecated. 7702 static inline __ATTRS_o_ai __vector __bool int 7703 vec_srl(__vector __bool int __a, __vector unsigned short __b) { 7704 return (__vector __bool int)__builtin_s390_vsrl( 7705 (__vector unsigned char)__a, (__vector unsigned char)__b); 7706 } 7707 7708 // This prototype is deprecated. 7709 static inline __ATTRS_o_ai __vector __bool int 7710 vec_srl(__vector __bool int __a, __vector unsigned int __b) { 7711 return (__vector __bool int)__builtin_s390_vsrl( 7712 (__vector unsigned char)__a, (__vector unsigned char)__b); 7713 } 7714 7715 static inline __ATTRS_o_ai __vector unsigned int 7716 vec_srl(__vector unsigned int __a, __vector unsigned char __b) { 7717 return (__vector unsigned int)__builtin_s390_vsrl( 7718 (__vector unsigned char)__a, __b); 7719 } 7720 7721 // This prototype is deprecated. 7722 static inline __ATTRS_o_ai __vector unsigned int 7723 vec_srl(__vector unsigned int __a, __vector unsigned short __b) { 7724 return (__vector unsigned int)__builtin_s390_vsrl( 7725 (__vector unsigned char)__a, (__vector unsigned char)__b); 7726 } 7727 7728 // This prototype is deprecated. 7729 static inline __ATTRS_o_ai __vector unsigned int 7730 vec_srl(__vector unsigned int __a, __vector unsigned int __b) { 7731 return (__vector unsigned int)__builtin_s390_vsrl( 7732 (__vector unsigned char)__a, (__vector unsigned char)__b); 7733 } 7734 7735 static inline __ATTRS_o_ai __vector signed long long 7736 vec_srl(__vector signed long long __a, __vector unsigned char __b) { 7737 return (__vector signed long long)__builtin_s390_vsrl( 7738 (__vector unsigned char)__a, __b); 7739 } 7740 7741 // This prototype is deprecated. 7742 static inline __ATTRS_o_ai __vector signed long long 7743 vec_srl(__vector signed long long __a, __vector unsigned short __b) { 7744 return (__vector signed long long)__builtin_s390_vsrl( 7745 (__vector unsigned char)__a, (__vector unsigned char)__b); 7746 } 7747 7748 // This prototype is deprecated. 7749 static inline __ATTRS_o_ai __vector signed long long 7750 vec_srl(__vector signed long long __a, __vector unsigned int __b) { 7751 return (__vector signed long long)__builtin_s390_vsrl( 7752 (__vector unsigned char)__a, (__vector unsigned char)__b); 7753 } 7754 7755 // This prototype is deprecated. 7756 static inline __ATTRS_o_ai __vector __bool long long 7757 vec_srl(__vector __bool long long __a, __vector unsigned char __b) { 7758 return (__vector __bool long long)__builtin_s390_vsrl( 7759 (__vector unsigned char)__a, __b); 7760 } 7761 7762 // This prototype is deprecated. 7763 static inline __ATTRS_o_ai __vector __bool long long 7764 vec_srl(__vector __bool long long __a, __vector unsigned short __b) { 7765 return (__vector __bool long long)__builtin_s390_vsrl( 7766 (__vector unsigned char)__a, (__vector unsigned char)__b); 7767 } 7768 7769 // This prototype is deprecated. 7770 static inline __ATTRS_o_ai __vector __bool long long 7771 vec_srl(__vector __bool long long __a, __vector unsigned int __b) { 7772 return (__vector __bool long long)__builtin_s390_vsrl( 7773 (__vector unsigned char)__a, (__vector unsigned char)__b); 7774 } 7775 7776 static inline __ATTRS_o_ai __vector unsigned long long 7777 vec_srl(__vector unsigned long long __a, __vector unsigned char __b) { 7778 return (__vector unsigned long long)__builtin_s390_vsrl( 7779 (__vector unsigned char)__a, __b); 7780 } 7781 7782 // This prototype is deprecated. 7783 static inline __ATTRS_o_ai __vector unsigned long long 7784 vec_srl(__vector unsigned long long __a, __vector unsigned short __b) { 7785 return (__vector unsigned long long)__builtin_s390_vsrl( 7786 (__vector unsigned char)__a, (__vector unsigned char)__b); 7787 } 7788 7789 // This prototype is deprecated. 7790 static inline __ATTRS_o_ai __vector unsigned long long 7791 vec_srl(__vector unsigned long long __a, __vector unsigned int __b) { 7792 return (__vector unsigned long long)__builtin_s390_vsrl( 7793 (__vector unsigned char)__a, (__vector unsigned char)__b); 7794 } 7795 7796 /*-- vec_srb ----------------------------------------------------------------*/ 7797 7798 static inline __ATTRS_o_ai __vector signed char 7799 vec_srb(__vector signed char __a, __vector signed char __b) { 7800 return (__vector signed char)__builtin_s390_vsrlb( 7801 (__vector unsigned char)__a, (__vector unsigned char)__b); 7802 } 7803 7804 static inline __ATTRS_o_ai __vector signed char 7805 vec_srb(__vector signed char __a, __vector unsigned char __b) { 7806 return (__vector signed char)__builtin_s390_vsrlb( 7807 (__vector unsigned char)__a, __b); 7808 } 7809 7810 static inline __ATTRS_o_ai __vector unsigned char 7811 vec_srb(__vector unsigned char __a, __vector signed char __b) { 7812 return __builtin_s390_vsrlb(__a, (__vector unsigned char)__b); 7813 } 7814 7815 static inline __ATTRS_o_ai __vector unsigned char 7816 vec_srb(__vector unsigned char __a, __vector unsigned char __b) { 7817 return __builtin_s390_vsrlb(__a, __b); 7818 } 7819 7820 static inline __ATTRS_o_ai __vector signed short 7821 vec_srb(__vector signed short __a, __vector signed short __b) { 7822 return (__vector signed short)__builtin_s390_vsrlb( 7823 (__vector unsigned char)__a, (__vector unsigned char)__b); 7824 } 7825 7826 static inline __ATTRS_o_ai __vector signed short 7827 vec_srb(__vector signed short __a, __vector unsigned short __b) { 7828 return (__vector signed short)__builtin_s390_vsrlb( 7829 (__vector unsigned char)__a, (__vector unsigned char)__b); 7830 } 7831 7832 static inline __ATTRS_o_ai __vector unsigned short 7833 vec_srb(__vector unsigned short __a, __vector signed short __b) { 7834 return (__vector unsigned short)__builtin_s390_vsrlb( 7835 (__vector unsigned char)__a, (__vector unsigned char)__b); 7836 } 7837 7838 static inline __ATTRS_o_ai __vector unsigned short 7839 vec_srb(__vector unsigned short __a, __vector unsigned short __b) { 7840 return (__vector unsigned short)__builtin_s390_vsrlb( 7841 (__vector unsigned char)__a, (__vector unsigned char)__b); 7842 } 7843 7844 static inline __ATTRS_o_ai __vector signed int 7845 vec_srb(__vector signed int __a, __vector signed int __b) { 7846 return (__vector signed int)__builtin_s390_vsrlb( 7847 (__vector unsigned char)__a, (__vector unsigned char)__b); 7848 } 7849 7850 static inline __ATTRS_o_ai __vector signed int 7851 vec_srb(__vector signed int __a, __vector unsigned int __b) { 7852 return (__vector signed int)__builtin_s390_vsrlb( 7853 (__vector unsigned char)__a, (__vector unsigned char)__b); 7854 } 7855 7856 static inline __ATTRS_o_ai __vector unsigned int 7857 vec_srb(__vector unsigned int __a, __vector signed int __b) { 7858 return (__vector unsigned int)__builtin_s390_vsrlb( 7859 (__vector unsigned char)__a, (__vector unsigned char)__b); 7860 } 7861 7862 static inline __ATTRS_o_ai __vector unsigned int 7863 vec_srb(__vector unsigned int __a, __vector unsigned int __b) { 7864 return (__vector unsigned int)__builtin_s390_vsrlb( 7865 (__vector unsigned char)__a, (__vector unsigned char)__b); 7866 } 7867 7868 static inline __ATTRS_o_ai __vector signed long long 7869 vec_srb(__vector signed long long __a, __vector signed long long __b) { 7870 return (__vector signed long long)__builtin_s390_vsrlb( 7871 (__vector unsigned char)__a, (__vector unsigned char)__b); 7872 } 7873 7874 static inline __ATTRS_o_ai __vector signed long long 7875 vec_srb(__vector signed long long __a, __vector unsigned long long __b) { 7876 return (__vector signed long long)__builtin_s390_vsrlb( 7877 (__vector unsigned char)__a, (__vector unsigned char)__b); 7878 } 7879 7880 static inline __ATTRS_o_ai __vector unsigned long long 7881 vec_srb(__vector unsigned long long __a, __vector signed long long __b) { 7882 return (__vector unsigned long long)__builtin_s390_vsrlb( 7883 (__vector unsigned char)__a, (__vector unsigned char)__b); 7884 } 7885 7886 static inline __ATTRS_o_ai __vector unsigned long long 7887 vec_srb(__vector unsigned long long __a, __vector unsigned long long __b) { 7888 return (__vector unsigned long long)__builtin_s390_vsrlb( 7889 (__vector unsigned char)__a, (__vector unsigned char)__b); 7890 } 7891 7892 #if __ARCH__ >= 12 7893 static inline __ATTRS_o_ai __vector float 7894 vec_srb(__vector float __a, __vector signed int __b) { 7895 return (__vector float)__builtin_s390_vsrlb( 7896 (__vector unsigned char)__a, (__vector unsigned char)__b); 7897 } 7898 7899 static inline __ATTRS_o_ai __vector float 7900 vec_srb(__vector float __a, __vector unsigned int __b) { 7901 return (__vector float)__builtin_s390_vsrlb( 7902 (__vector unsigned char)__a, (__vector unsigned char)__b); 7903 } 7904 #endif 7905 7906 static inline __ATTRS_o_ai __vector double 7907 vec_srb(__vector double __a, __vector signed long long __b) { 7908 return (__vector double)__builtin_s390_vsrlb( 7909 (__vector unsigned char)__a, (__vector unsigned char)__b); 7910 } 7911 7912 static inline __ATTRS_o_ai __vector double 7913 vec_srb(__vector double __a, __vector unsigned long long __b) { 7914 return (__vector double)__builtin_s390_vsrlb( 7915 (__vector unsigned char)__a, (__vector unsigned char)__b); 7916 } 7917 7918 /*-- vec_srdb ---------------------------------------------------------------*/ 7919 7920 #if __ARCH__ >= 13 7921 7922 extern __ATTRS_o __vector signed char 7923 vec_srdb(__vector signed char __a, __vector signed char __b, int __c) 7924 __constant_range(__c, 0, 7); 7925 7926 extern __ATTRS_o __vector unsigned char 7927 vec_srdb(__vector unsigned char __a, __vector unsigned char __b, int __c) 7928 __constant_range(__c, 0, 7); 7929 7930 extern __ATTRS_o __vector signed short 7931 vec_srdb(__vector signed short __a, __vector signed short __b, int __c) 7932 __constant_range(__c, 0, 7); 7933 7934 extern __ATTRS_o __vector unsigned short 7935 vec_srdb(__vector unsigned short __a, __vector unsigned short __b, int __c) 7936 __constant_range(__c, 0, 7); 7937 7938 extern __ATTRS_o __vector signed int 7939 vec_srdb(__vector signed int __a, __vector signed int __b, int __c) 7940 __constant_range(__c, 0, 7); 7941 7942 extern __ATTRS_o __vector unsigned int 7943 vec_srdb(__vector unsigned int __a, __vector unsigned int __b, int __c) 7944 __constant_range(__c, 0, 7); 7945 7946 extern __ATTRS_o __vector signed long long 7947 vec_srdb(__vector signed long long __a, __vector signed long long __b, int __c) 7948 __constant_range(__c, 0, 7); 7949 7950 extern __ATTRS_o __vector unsigned long long 7951 vec_srdb(__vector unsigned long long __a, __vector unsigned long long __b, 7952 int __c) 7953 __constant_range(__c, 0, 7); 7954 7955 extern __ATTRS_o __vector float 7956 vec_srdb(__vector float __a, __vector float __b, int __c) 7957 __constant_range(__c, 0, 7); 7958 7959 extern __ATTRS_o __vector double 7960 vec_srdb(__vector double __a, __vector double __b, int __c) 7961 __constant_range(__c, 0, 7); 7962 7963 #define vec_srdb(X, Y, Z) ((__typeof__((vec_srdb)((X), (Y), (Z)))) \ 7964 __builtin_s390_vsrd((__vector unsigned char)(X), \ 7965 (__vector unsigned char)(Y), (Z))) 7966 7967 #endif 7968 7969 /*-- vec_abs ----------------------------------------------------------------*/ 7970 7971 static inline __ATTRS_o_ai __vector signed char 7972 vec_abs(__vector signed char __a) { 7973 return vec_sel(__a, -__a, vec_cmplt(__a, (__vector signed char)0)); 7974 } 7975 7976 static inline __ATTRS_o_ai __vector signed short 7977 vec_abs(__vector signed short __a) { 7978 return vec_sel(__a, -__a, vec_cmplt(__a, (__vector signed short)0)); 7979 } 7980 7981 static inline __ATTRS_o_ai __vector signed int 7982 vec_abs(__vector signed int __a) { 7983 return vec_sel(__a, -__a, vec_cmplt(__a, (__vector signed int)0)); 7984 } 7985 7986 static inline __ATTRS_o_ai __vector signed long long 7987 vec_abs(__vector signed long long __a) { 7988 return vec_sel(__a, -__a, vec_cmplt(__a, (__vector signed long long)0)); 7989 } 7990 7991 #if __ARCH__ >= 12 7992 static inline __ATTRS_o_ai __vector float 7993 vec_abs(__vector float __a) { 7994 return __builtin_s390_vflpsb(__a); 7995 } 7996 #endif 7997 7998 static inline __ATTRS_o_ai __vector double 7999 vec_abs(__vector double __a) { 8000 return __builtin_s390_vflpdb(__a); 8001 } 8002 8003 /*-- vec_nabs ---------------------------------------------------------------*/ 8004 8005 #if __ARCH__ >= 12 8006 static inline __ATTRS_o_ai __vector float 8007 vec_nabs(__vector float __a) { 8008 return __builtin_s390_vflnsb(__a); 8009 } 8010 #endif 8011 8012 static inline __ATTRS_o_ai __vector double 8013 vec_nabs(__vector double __a) { 8014 return __builtin_s390_vflndb(__a); 8015 } 8016 8017 /*-- vec_max ----------------------------------------------------------------*/ 8018 8019 static inline __ATTRS_o_ai __vector signed char 8020 vec_max(__vector signed char __a, __vector signed char __b) { 8021 return vec_sel(__b, __a, vec_cmpgt(__a, __b)); 8022 } 8023 8024 // This prototype is deprecated. 8025 static inline __ATTRS_o_ai __vector signed char 8026 vec_max(__vector signed char __a, __vector __bool char __b) { 8027 __vector signed char __bc = (__vector signed char)__b; 8028 return vec_sel(__bc, __a, vec_cmpgt(__a, __bc)); 8029 } 8030 8031 // This prototype is deprecated. 8032 static inline __ATTRS_o_ai __vector signed char 8033 vec_max(__vector __bool char __a, __vector signed char __b) { 8034 __vector signed char __ac = (__vector signed char)__a; 8035 return vec_sel(__b, __ac, vec_cmpgt(__ac, __b)); 8036 } 8037 8038 static inline __ATTRS_o_ai __vector unsigned char 8039 vec_max(__vector unsigned char __a, __vector unsigned char __b) { 8040 return vec_sel(__b, __a, vec_cmpgt(__a, __b)); 8041 } 8042 8043 // This prototype is deprecated. 8044 static inline __ATTRS_o_ai __vector unsigned char 8045 vec_max(__vector unsigned char __a, __vector __bool char __b) { 8046 __vector unsigned char __bc = (__vector unsigned char)__b; 8047 return vec_sel(__bc, __a, vec_cmpgt(__a, __bc)); 8048 } 8049 8050 // This prototype is deprecated. 8051 static inline __ATTRS_o_ai __vector unsigned char 8052 vec_max(__vector __bool char __a, __vector unsigned char __b) { 8053 __vector unsigned char __ac = (__vector unsigned char)__a; 8054 return vec_sel(__b, __ac, vec_cmpgt(__ac, __b)); 8055 } 8056 8057 static inline __ATTRS_o_ai __vector signed short 8058 vec_max(__vector signed short __a, __vector signed short __b) { 8059 return vec_sel(__b, __a, vec_cmpgt(__a, __b)); 8060 } 8061 8062 // This prototype is deprecated. 8063 static inline __ATTRS_o_ai __vector signed short 8064 vec_max(__vector signed short __a, __vector __bool short __b) { 8065 __vector signed short __bc = (__vector signed short)__b; 8066 return vec_sel(__bc, __a, vec_cmpgt(__a, __bc)); 8067 } 8068 8069 // This prototype is deprecated. 8070 static inline __ATTRS_o_ai __vector signed short 8071 vec_max(__vector __bool short __a, __vector signed short __b) { 8072 __vector signed short __ac = (__vector signed short)__a; 8073 return vec_sel(__b, __ac, vec_cmpgt(__ac, __b)); 8074 } 8075 8076 static inline __ATTRS_o_ai __vector unsigned short 8077 vec_max(__vector unsigned short __a, __vector unsigned short __b) { 8078 return vec_sel(__b, __a, vec_cmpgt(__a, __b)); 8079 } 8080 8081 // This prototype is deprecated. 8082 static inline __ATTRS_o_ai __vector unsigned short 8083 vec_max(__vector unsigned short __a, __vector __bool short __b) { 8084 __vector unsigned short __bc = (__vector unsigned short)__b; 8085 return vec_sel(__bc, __a, vec_cmpgt(__a, __bc)); 8086 } 8087 8088 // This prototype is deprecated. 8089 static inline __ATTRS_o_ai __vector unsigned short 8090 vec_max(__vector __bool short __a, __vector unsigned short __b) { 8091 __vector unsigned short __ac = (__vector unsigned short)__a; 8092 return vec_sel(__b, __ac, vec_cmpgt(__ac, __b)); 8093 } 8094 8095 static inline __ATTRS_o_ai __vector signed int 8096 vec_max(__vector signed int __a, __vector signed int __b) { 8097 return vec_sel(__b, __a, vec_cmpgt(__a, __b)); 8098 } 8099 8100 // This prototype is deprecated. 8101 static inline __ATTRS_o_ai __vector signed int 8102 vec_max(__vector signed int __a, __vector __bool int __b) { 8103 __vector signed int __bc = (__vector signed int)__b; 8104 return vec_sel(__bc, __a, vec_cmpgt(__a, __bc)); 8105 } 8106 8107 // This prototype is deprecated. 8108 static inline __ATTRS_o_ai __vector signed int 8109 vec_max(__vector __bool int __a, __vector signed int __b) { 8110 __vector signed int __ac = (__vector signed int)__a; 8111 return vec_sel(__b, __ac, vec_cmpgt(__ac, __b)); 8112 } 8113 8114 static inline __ATTRS_o_ai __vector unsigned int 8115 vec_max(__vector unsigned int __a, __vector unsigned int __b) { 8116 return vec_sel(__b, __a, vec_cmpgt(__a, __b)); 8117 } 8118 8119 // This prototype is deprecated. 8120 static inline __ATTRS_o_ai __vector unsigned int 8121 vec_max(__vector unsigned int __a, __vector __bool int __b) { 8122 __vector unsigned int __bc = (__vector unsigned int)__b; 8123 return vec_sel(__bc, __a, vec_cmpgt(__a, __bc)); 8124 } 8125 8126 // This prototype is deprecated. 8127 static inline __ATTRS_o_ai __vector unsigned int 8128 vec_max(__vector __bool int __a, __vector unsigned int __b) { 8129 __vector unsigned int __ac = (__vector unsigned int)__a; 8130 return vec_sel(__b, __ac, vec_cmpgt(__ac, __b)); 8131 } 8132 8133 static inline __ATTRS_o_ai __vector signed long long 8134 vec_max(__vector signed long long __a, __vector signed long long __b) { 8135 return vec_sel(__b, __a, vec_cmpgt(__a, __b)); 8136 } 8137 8138 // This prototype is deprecated. 8139 static inline __ATTRS_o_ai __vector signed long long 8140 vec_max(__vector signed long long __a, __vector __bool long long __b) { 8141 __vector signed long long __bc = (__vector signed long long)__b; 8142 return vec_sel(__bc, __a, vec_cmpgt(__a, __bc)); 8143 } 8144 8145 // This prototype is deprecated. 8146 static inline __ATTRS_o_ai __vector signed long long 8147 vec_max(__vector __bool long long __a, __vector signed long long __b) { 8148 __vector signed long long __ac = (__vector signed long long)__a; 8149 return vec_sel(__b, __ac, vec_cmpgt(__ac, __b)); 8150 } 8151 8152 static inline __ATTRS_o_ai __vector unsigned long long 8153 vec_max(__vector unsigned long long __a, __vector unsigned long long __b) { 8154 return vec_sel(__b, __a, vec_cmpgt(__a, __b)); 8155 } 8156 8157 // This prototype is deprecated. 8158 static inline __ATTRS_o_ai __vector unsigned long long 8159 vec_max(__vector unsigned long long __a, __vector __bool long long __b) { 8160 __vector unsigned long long __bc = (__vector unsigned long long)__b; 8161 return vec_sel(__bc, __a, vec_cmpgt(__a, __bc)); 8162 } 8163 8164 // This prototype is deprecated. 8165 static inline __ATTRS_o_ai __vector unsigned long long 8166 vec_max(__vector __bool long long __a, __vector unsigned long long __b) { 8167 __vector unsigned long long __ac = (__vector unsigned long long)__a; 8168 return vec_sel(__b, __ac, vec_cmpgt(__ac, __b)); 8169 } 8170 8171 #if __ARCH__ >= 12 8172 static inline __ATTRS_o_ai __vector float 8173 vec_max(__vector float __a, __vector float __b) { 8174 return __builtin_s390_vfmaxsb(__a, __b, 0); 8175 } 8176 #endif 8177 8178 static inline __ATTRS_o_ai __vector double 8179 vec_max(__vector double __a, __vector double __b) { 8180 #if __ARCH__ >= 12 8181 return __builtin_s390_vfmaxdb(__a, __b, 0); 8182 #else 8183 return vec_sel(__b, __a, vec_cmpgt(__a, __b)); 8184 #endif 8185 } 8186 8187 /*-- vec_min ----------------------------------------------------------------*/ 8188 8189 static inline __ATTRS_o_ai __vector signed char 8190 vec_min(__vector signed char __a, __vector signed char __b) { 8191 return vec_sel(__a, __b, vec_cmpgt(__a, __b)); 8192 } 8193 8194 // This prototype is deprecated. 8195 static inline __ATTRS_o_ai __vector signed char 8196 vec_min(__vector signed char __a, __vector __bool char __b) { 8197 __vector signed char __bc = (__vector signed char)__b; 8198 return vec_sel(__a, __bc, vec_cmpgt(__a, __bc)); 8199 } 8200 8201 // This prototype is deprecated. 8202 static inline __ATTRS_o_ai __vector signed char 8203 vec_min(__vector __bool char __a, __vector signed char __b) { 8204 __vector signed char __ac = (__vector signed char)__a; 8205 return vec_sel(__ac, __b, vec_cmpgt(__ac, __b)); 8206 } 8207 8208 static inline __ATTRS_o_ai __vector unsigned char 8209 vec_min(__vector unsigned char __a, __vector unsigned char __b) { 8210 return vec_sel(__a, __b, vec_cmpgt(__a, __b)); 8211 } 8212 8213 // This prototype is deprecated. 8214 static inline __ATTRS_o_ai __vector unsigned char 8215 vec_min(__vector unsigned char __a, __vector __bool char __b) { 8216 __vector unsigned char __bc = (__vector unsigned char)__b; 8217 return vec_sel(__a, __bc, vec_cmpgt(__a, __bc)); 8218 } 8219 8220 // This prototype is deprecated. 8221 static inline __ATTRS_o_ai __vector unsigned char 8222 vec_min(__vector __bool char __a, __vector unsigned char __b) { 8223 __vector unsigned char __ac = (__vector unsigned char)__a; 8224 return vec_sel(__ac, __b, vec_cmpgt(__ac, __b)); 8225 } 8226 8227 static inline __ATTRS_o_ai __vector signed short 8228 vec_min(__vector signed short __a, __vector signed short __b) { 8229 return vec_sel(__a, __b, vec_cmpgt(__a, __b)); 8230 } 8231 8232 // This prototype is deprecated. 8233 static inline __ATTRS_o_ai __vector signed short 8234 vec_min(__vector signed short __a, __vector __bool short __b) { 8235 __vector signed short __bc = (__vector signed short)__b; 8236 return vec_sel(__a, __bc, vec_cmpgt(__a, __bc)); 8237 } 8238 8239 // This prototype is deprecated. 8240 static inline __ATTRS_o_ai __vector signed short 8241 vec_min(__vector __bool short __a, __vector signed short __b) { 8242 __vector signed short __ac = (__vector signed short)__a; 8243 return vec_sel(__ac, __b, vec_cmpgt(__ac, __b)); 8244 } 8245 8246 static inline __ATTRS_o_ai __vector unsigned short 8247 vec_min(__vector unsigned short __a, __vector unsigned short __b) { 8248 return vec_sel(__a, __b, vec_cmpgt(__a, __b)); 8249 } 8250 8251 // This prototype is deprecated. 8252 static inline __ATTRS_o_ai __vector unsigned short 8253 vec_min(__vector unsigned short __a, __vector __bool short __b) { 8254 __vector unsigned short __bc = (__vector unsigned short)__b; 8255 return vec_sel(__a, __bc, vec_cmpgt(__a, __bc)); 8256 } 8257 8258 // This prototype is deprecated. 8259 static inline __ATTRS_o_ai __vector unsigned short 8260 vec_min(__vector __bool short __a, __vector unsigned short __b) { 8261 __vector unsigned short __ac = (__vector unsigned short)__a; 8262 return vec_sel(__ac, __b, vec_cmpgt(__ac, __b)); 8263 } 8264 8265 static inline __ATTRS_o_ai __vector signed int 8266 vec_min(__vector signed int __a, __vector signed int __b) { 8267 return vec_sel(__a, __b, vec_cmpgt(__a, __b)); 8268 } 8269 8270 // This prototype is deprecated. 8271 static inline __ATTRS_o_ai __vector signed int 8272 vec_min(__vector signed int __a, __vector __bool int __b) { 8273 __vector signed int __bc = (__vector signed int)__b; 8274 return vec_sel(__a, __bc, vec_cmpgt(__a, __bc)); 8275 } 8276 8277 // This prototype is deprecated. 8278 static inline __ATTRS_o_ai __vector signed int 8279 vec_min(__vector __bool int __a, __vector signed int __b) { 8280 __vector signed int __ac = (__vector signed int)__a; 8281 return vec_sel(__ac, __b, vec_cmpgt(__ac, __b)); 8282 } 8283 8284 static inline __ATTRS_o_ai __vector unsigned int 8285 vec_min(__vector unsigned int __a, __vector unsigned int __b) { 8286 return vec_sel(__a, __b, vec_cmpgt(__a, __b)); 8287 } 8288 8289 // This prototype is deprecated. 8290 static inline __ATTRS_o_ai __vector unsigned int 8291 vec_min(__vector unsigned int __a, __vector __bool int __b) { 8292 __vector unsigned int __bc = (__vector unsigned int)__b; 8293 return vec_sel(__a, __bc, vec_cmpgt(__a, __bc)); 8294 } 8295 8296 // This prototype is deprecated. 8297 static inline __ATTRS_o_ai __vector unsigned int 8298 vec_min(__vector __bool int __a, __vector unsigned int __b) { 8299 __vector unsigned int __ac = (__vector unsigned int)__a; 8300 return vec_sel(__ac, __b, vec_cmpgt(__ac, __b)); 8301 } 8302 8303 static inline __ATTRS_o_ai __vector signed long long 8304 vec_min(__vector signed long long __a, __vector signed long long __b) { 8305 return vec_sel(__a, __b, vec_cmpgt(__a, __b)); 8306 } 8307 8308 // This prototype is deprecated. 8309 static inline __ATTRS_o_ai __vector signed long long 8310 vec_min(__vector signed long long __a, __vector __bool long long __b) { 8311 __vector signed long long __bc = (__vector signed long long)__b; 8312 return vec_sel(__a, __bc, vec_cmpgt(__a, __bc)); 8313 } 8314 8315 // This prototype is deprecated. 8316 static inline __ATTRS_o_ai __vector signed long long 8317 vec_min(__vector __bool long long __a, __vector signed long long __b) { 8318 __vector signed long long __ac = (__vector signed long long)__a; 8319 return vec_sel(__ac, __b, vec_cmpgt(__ac, __b)); 8320 } 8321 8322 static inline __ATTRS_o_ai __vector unsigned long long 8323 vec_min(__vector unsigned long long __a, __vector unsigned long long __b) { 8324 return vec_sel(__a, __b, vec_cmpgt(__a, __b)); 8325 } 8326 8327 // This prototype is deprecated. 8328 static inline __ATTRS_o_ai __vector unsigned long long 8329 vec_min(__vector unsigned long long __a, __vector __bool long long __b) { 8330 __vector unsigned long long __bc = (__vector unsigned long long)__b; 8331 return vec_sel(__a, __bc, vec_cmpgt(__a, __bc)); 8332 } 8333 8334 // This prototype is deprecated. 8335 static inline __ATTRS_o_ai __vector unsigned long long 8336 vec_min(__vector __bool long long __a, __vector unsigned long long __b) { 8337 __vector unsigned long long __ac = (__vector unsigned long long)__a; 8338 return vec_sel(__ac, __b, vec_cmpgt(__ac, __b)); 8339 } 8340 8341 #if __ARCH__ >= 12 8342 static inline __ATTRS_o_ai __vector float 8343 vec_min(__vector float __a, __vector float __b) { 8344 return __builtin_s390_vfminsb(__a, __b, 0); 8345 } 8346 #endif 8347 8348 static inline __ATTRS_o_ai __vector double 8349 vec_min(__vector double __a, __vector double __b) { 8350 #if __ARCH__ >= 12 8351 return __builtin_s390_vfmindb(__a, __b, 0); 8352 #else 8353 return vec_sel(__a, __b, vec_cmpgt(__a, __b)); 8354 #endif 8355 } 8356 8357 /*-- vec_add_u128 -----------------------------------------------------------*/ 8358 8359 static inline __ATTRS_ai __vector unsigned char 8360 vec_add_u128(__vector unsigned char __a, __vector unsigned char __b) { 8361 return __builtin_s390_vaq(__a, __b); 8362 } 8363 8364 /*-- vec_addc ---------------------------------------------------------------*/ 8365 8366 static inline __ATTRS_o_ai __vector unsigned char 8367 vec_addc(__vector unsigned char __a, __vector unsigned char __b) { 8368 return __builtin_s390_vaccb(__a, __b); 8369 } 8370 8371 static inline __ATTRS_o_ai __vector unsigned short 8372 vec_addc(__vector unsigned short __a, __vector unsigned short __b) { 8373 return __builtin_s390_vacch(__a, __b); 8374 } 8375 8376 static inline __ATTRS_o_ai __vector unsigned int 8377 vec_addc(__vector unsigned int __a, __vector unsigned int __b) { 8378 return __builtin_s390_vaccf(__a, __b); 8379 } 8380 8381 static inline __ATTRS_o_ai __vector unsigned long long 8382 vec_addc(__vector unsigned long long __a, __vector unsigned long long __b) { 8383 return __builtin_s390_vaccg(__a, __b); 8384 } 8385 8386 /*-- vec_addc_u128 ----------------------------------------------------------*/ 8387 8388 static inline __ATTRS_ai __vector unsigned char 8389 vec_addc_u128(__vector unsigned char __a, __vector unsigned char __b) { 8390 return __builtin_s390_vaccq(__a, __b); 8391 } 8392 8393 /*-- vec_adde_u128 ----------------------------------------------------------*/ 8394 8395 static inline __ATTRS_ai __vector unsigned char 8396 vec_adde_u128(__vector unsigned char __a, __vector unsigned char __b, 8397 __vector unsigned char __c) { 8398 return __builtin_s390_vacq(__a, __b, __c); 8399 } 8400 8401 /*-- vec_addec_u128 ---------------------------------------------------------*/ 8402 8403 static inline __ATTRS_ai __vector unsigned char 8404 vec_addec_u128(__vector unsigned char __a, __vector unsigned char __b, 8405 __vector unsigned char __c) { 8406 return __builtin_s390_vacccq(__a, __b, __c); 8407 } 8408 8409 /*-- vec_avg ----------------------------------------------------------------*/ 8410 8411 static inline __ATTRS_o_ai __vector signed char 8412 vec_avg(__vector signed char __a, __vector signed char __b) { 8413 return __builtin_s390_vavgb(__a, __b); 8414 } 8415 8416 static inline __ATTRS_o_ai __vector signed short 8417 vec_avg(__vector signed short __a, __vector signed short __b) { 8418 return __builtin_s390_vavgh(__a, __b); 8419 } 8420 8421 static inline __ATTRS_o_ai __vector signed int 8422 vec_avg(__vector signed int __a, __vector signed int __b) { 8423 return __builtin_s390_vavgf(__a, __b); 8424 } 8425 8426 static inline __ATTRS_o_ai __vector signed long long 8427 vec_avg(__vector signed long long __a, __vector signed long long __b) { 8428 return __builtin_s390_vavgg(__a, __b); 8429 } 8430 8431 static inline __ATTRS_o_ai __vector unsigned char 8432 vec_avg(__vector unsigned char __a, __vector unsigned char __b) { 8433 return __builtin_s390_vavglb(__a, __b); 8434 } 8435 8436 static inline __ATTRS_o_ai __vector unsigned short 8437 vec_avg(__vector unsigned short __a, __vector unsigned short __b) { 8438 return __builtin_s390_vavglh(__a, __b); 8439 } 8440 8441 static inline __ATTRS_o_ai __vector unsigned int 8442 vec_avg(__vector unsigned int __a, __vector unsigned int __b) { 8443 return __builtin_s390_vavglf(__a, __b); 8444 } 8445 8446 static inline __ATTRS_o_ai __vector unsigned long long 8447 vec_avg(__vector unsigned long long __a, __vector unsigned long long __b) { 8448 return __builtin_s390_vavglg(__a, __b); 8449 } 8450 8451 /*-- vec_checksum -----------------------------------------------------------*/ 8452 8453 static inline __ATTRS_ai __vector unsigned int 8454 vec_checksum(__vector unsigned int __a, __vector unsigned int __b) { 8455 return __builtin_s390_vcksm(__a, __b); 8456 } 8457 8458 /*-- vec_gfmsum -------------------------------------------------------------*/ 8459 8460 static inline __ATTRS_o_ai __vector unsigned short 8461 vec_gfmsum(__vector unsigned char __a, __vector unsigned char __b) { 8462 return __builtin_s390_vgfmb(__a, __b); 8463 } 8464 8465 static inline __ATTRS_o_ai __vector unsigned int 8466 vec_gfmsum(__vector unsigned short __a, __vector unsigned short __b) { 8467 return __builtin_s390_vgfmh(__a, __b); 8468 } 8469 8470 static inline __ATTRS_o_ai __vector unsigned long long 8471 vec_gfmsum(__vector unsigned int __a, __vector unsigned int __b) { 8472 return __builtin_s390_vgfmf(__a, __b); 8473 } 8474 8475 /*-- vec_gfmsum_128 ---------------------------------------------------------*/ 8476 8477 static inline __ATTRS_o_ai __vector unsigned char 8478 vec_gfmsum_128(__vector unsigned long long __a, 8479 __vector unsigned long long __b) { 8480 return __builtin_s390_vgfmg(__a, __b); 8481 } 8482 8483 /*-- vec_gfmsum_accum -------------------------------------------------------*/ 8484 8485 static inline __ATTRS_o_ai __vector unsigned short 8486 vec_gfmsum_accum(__vector unsigned char __a, __vector unsigned char __b, 8487 __vector unsigned short __c) { 8488 return __builtin_s390_vgfmab(__a, __b, __c); 8489 } 8490 8491 static inline __ATTRS_o_ai __vector unsigned int 8492 vec_gfmsum_accum(__vector unsigned short __a, __vector unsigned short __b, 8493 __vector unsigned int __c) { 8494 return __builtin_s390_vgfmah(__a, __b, __c); 8495 } 8496 8497 static inline __ATTRS_o_ai __vector unsigned long long 8498 vec_gfmsum_accum(__vector unsigned int __a, __vector unsigned int __b, 8499 __vector unsigned long long __c) { 8500 return __builtin_s390_vgfmaf(__a, __b, __c); 8501 } 8502 8503 /*-- vec_gfmsum_accum_128 ---------------------------------------------------*/ 8504 8505 static inline __ATTRS_o_ai __vector unsigned char 8506 vec_gfmsum_accum_128(__vector unsigned long long __a, 8507 __vector unsigned long long __b, 8508 __vector unsigned char __c) { 8509 return __builtin_s390_vgfmag(__a, __b, __c); 8510 } 8511 8512 /*-- vec_mladd --------------------------------------------------------------*/ 8513 8514 static inline __ATTRS_o_ai __vector signed char 8515 vec_mladd(__vector signed char __a, __vector signed char __b, 8516 __vector signed char __c) { 8517 return __a * __b + __c; 8518 } 8519 8520 static inline __ATTRS_o_ai __vector signed char 8521 vec_mladd(__vector unsigned char __a, __vector signed char __b, 8522 __vector signed char __c) { 8523 return (__vector signed char)__a * __b + __c; 8524 } 8525 8526 static inline __ATTRS_o_ai __vector signed char 8527 vec_mladd(__vector signed char __a, __vector unsigned char __b, 8528 __vector unsigned char __c) { 8529 return __a * (__vector signed char)__b + (__vector signed char)__c; 8530 } 8531 8532 static inline __ATTRS_o_ai __vector unsigned char 8533 vec_mladd(__vector unsigned char __a, __vector unsigned char __b, 8534 __vector unsigned char __c) { 8535 return __a * __b + __c; 8536 } 8537 8538 static inline __ATTRS_o_ai __vector signed short 8539 vec_mladd(__vector signed short __a, __vector signed short __b, 8540 __vector signed short __c) { 8541 return __a * __b + __c; 8542 } 8543 8544 static inline __ATTRS_o_ai __vector signed short 8545 vec_mladd(__vector unsigned short __a, __vector signed short __b, 8546 __vector signed short __c) { 8547 return (__vector signed short)__a * __b + __c; 8548 } 8549 8550 static inline __ATTRS_o_ai __vector signed short 8551 vec_mladd(__vector signed short __a, __vector unsigned short __b, 8552 __vector unsigned short __c) { 8553 return __a * (__vector signed short)__b + (__vector signed short)__c; 8554 } 8555 8556 static inline __ATTRS_o_ai __vector unsigned short 8557 vec_mladd(__vector unsigned short __a, __vector unsigned short __b, 8558 __vector unsigned short __c) { 8559 return __a * __b + __c; 8560 } 8561 8562 static inline __ATTRS_o_ai __vector signed int 8563 vec_mladd(__vector signed int __a, __vector signed int __b, 8564 __vector signed int __c) { 8565 return __a * __b + __c; 8566 } 8567 8568 static inline __ATTRS_o_ai __vector signed int 8569 vec_mladd(__vector unsigned int __a, __vector signed int __b, 8570 __vector signed int __c) { 8571 return (__vector signed int)__a * __b + __c; 8572 } 8573 8574 static inline __ATTRS_o_ai __vector signed int 8575 vec_mladd(__vector signed int __a, __vector unsigned int __b, 8576 __vector unsigned int __c) { 8577 return __a * (__vector signed int)__b + (__vector signed int)__c; 8578 } 8579 8580 static inline __ATTRS_o_ai __vector unsigned int 8581 vec_mladd(__vector unsigned int __a, __vector unsigned int __b, 8582 __vector unsigned int __c) { 8583 return __a * __b + __c; 8584 } 8585 8586 /*-- vec_mhadd --------------------------------------------------------------*/ 8587 8588 static inline __ATTRS_o_ai __vector signed char 8589 vec_mhadd(__vector signed char __a, __vector signed char __b, 8590 __vector signed char __c) { 8591 return __builtin_s390_vmahb(__a, __b, __c); 8592 } 8593 8594 static inline __ATTRS_o_ai __vector unsigned char 8595 vec_mhadd(__vector unsigned char __a, __vector unsigned char __b, 8596 __vector unsigned char __c) { 8597 return __builtin_s390_vmalhb(__a, __b, __c); 8598 } 8599 8600 static inline __ATTRS_o_ai __vector signed short 8601 vec_mhadd(__vector signed short __a, __vector signed short __b, 8602 __vector signed short __c) { 8603 return __builtin_s390_vmahh(__a, __b, __c); 8604 } 8605 8606 static inline __ATTRS_o_ai __vector unsigned short 8607 vec_mhadd(__vector unsigned short __a, __vector unsigned short __b, 8608 __vector unsigned short __c) { 8609 return __builtin_s390_vmalhh(__a, __b, __c); 8610 } 8611 8612 static inline __ATTRS_o_ai __vector signed int 8613 vec_mhadd(__vector signed int __a, __vector signed int __b, 8614 __vector signed int __c) { 8615 return __builtin_s390_vmahf(__a, __b, __c); 8616 } 8617 8618 static inline __ATTRS_o_ai __vector unsigned int 8619 vec_mhadd(__vector unsigned int __a, __vector unsigned int __b, 8620 __vector unsigned int __c) { 8621 return __builtin_s390_vmalhf(__a, __b, __c); 8622 } 8623 8624 /*-- vec_meadd --------------------------------------------------------------*/ 8625 8626 static inline __ATTRS_o_ai __vector signed short 8627 vec_meadd(__vector signed char __a, __vector signed char __b, 8628 __vector signed short __c) { 8629 return __builtin_s390_vmaeb(__a, __b, __c); 8630 } 8631 8632 static inline __ATTRS_o_ai __vector unsigned short 8633 vec_meadd(__vector unsigned char __a, __vector unsigned char __b, 8634 __vector unsigned short __c) { 8635 return __builtin_s390_vmaleb(__a, __b, __c); 8636 } 8637 8638 static inline __ATTRS_o_ai __vector signed int 8639 vec_meadd(__vector signed short __a, __vector signed short __b, 8640 __vector signed int __c) { 8641 return __builtin_s390_vmaeh(__a, __b, __c); 8642 } 8643 8644 static inline __ATTRS_o_ai __vector unsigned int 8645 vec_meadd(__vector unsigned short __a, __vector unsigned short __b, 8646 __vector unsigned int __c) { 8647 return __builtin_s390_vmaleh(__a, __b, __c); 8648 } 8649 8650 static inline __ATTRS_o_ai __vector signed long long 8651 vec_meadd(__vector signed int __a, __vector signed int __b, 8652 __vector signed long long __c) { 8653 return __builtin_s390_vmaef(__a, __b, __c); 8654 } 8655 8656 static inline __ATTRS_o_ai __vector unsigned long long 8657 vec_meadd(__vector unsigned int __a, __vector unsigned int __b, 8658 __vector unsigned long long __c) { 8659 return __builtin_s390_vmalef(__a, __b, __c); 8660 } 8661 8662 /*-- vec_moadd --------------------------------------------------------------*/ 8663 8664 static inline __ATTRS_o_ai __vector signed short 8665 vec_moadd(__vector signed char __a, __vector signed char __b, 8666 __vector signed short __c) { 8667 return __builtin_s390_vmaob(__a, __b, __c); 8668 } 8669 8670 static inline __ATTRS_o_ai __vector unsigned short 8671 vec_moadd(__vector unsigned char __a, __vector unsigned char __b, 8672 __vector unsigned short __c) { 8673 return __builtin_s390_vmalob(__a, __b, __c); 8674 } 8675 8676 static inline __ATTRS_o_ai __vector signed int 8677 vec_moadd(__vector signed short __a, __vector signed short __b, 8678 __vector signed int __c) { 8679 return __builtin_s390_vmaoh(__a, __b, __c); 8680 } 8681 8682 static inline __ATTRS_o_ai __vector unsigned int 8683 vec_moadd(__vector unsigned short __a, __vector unsigned short __b, 8684 __vector unsigned int __c) { 8685 return __builtin_s390_vmaloh(__a, __b, __c); 8686 } 8687 8688 static inline __ATTRS_o_ai __vector signed long long 8689 vec_moadd(__vector signed int __a, __vector signed int __b, 8690 __vector signed long long __c) { 8691 return __builtin_s390_vmaof(__a, __b, __c); 8692 } 8693 8694 static inline __ATTRS_o_ai __vector unsigned long long 8695 vec_moadd(__vector unsigned int __a, __vector unsigned int __b, 8696 __vector unsigned long long __c) { 8697 return __builtin_s390_vmalof(__a, __b, __c); 8698 } 8699 8700 /*-- vec_mulh ---------------------------------------------------------------*/ 8701 8702 static inline __ATTRS_o_ai __vector signed char 8703 vec_mulh(__vector signed char __a, __vector signed char __b) { 8704 return __builtin_s390_vmhb(__a, __b); 8705 } 8706 8707 static inline __ATTRS_o_ai __vector unsigned char 8708 vec_mulh(__vector unsigned char __a, __vector unsigned char __b) { 8709 return __builtin_s390_vmlhb(__a, __b); 8710 } 8711 8712 static inline __ATTRS_o_ai __vector signed short 8713 vec_mulh(__vector signed short __a, __vector signed short __b) { 8714 return __builtin_s390_vmhh(__a, __b); 8715 } 8716 8717 static inline __ATTRS_o_ai __vector unsigned short 8718 vec_mulh(__vector unsigned short __a, __vector unsigned short __b) { 8719 return __builtin_s390_vmlhh(__a, __b); 8720 } 8721 8722 static inline __ATTRS_o_ai __vector signed int 8723 vec_mulh(__vector signed int __a, __vector signed int __b) { 8724 return __builtin_s390_vmhf(__a, __b); 8725 } 8726 8727 static inline __ATTRS_o_ai __vector unsigned int 8728 vec_mulh(__vector unsigned int __a, __vector unsigned int __b) { 8729 return __builtin_s390_vmlhf(__a, __b); 8730 } 8731 8732 /*-- vec_mule ---------------------------------------------------------------*/ 8733 8734 static inline __ATTRS_o_ai __vector signed short 8735 vec_mule(__vector signed char __a, __vector signed char __b) { 8736 return __builtin_s390_vmeb(__a, __b); 8737 } 8738 8739 static inline __ATTRS_o_ai __vector unsigned short 8740 vec_mule(__vector unsigned char __a, __vector unsigned char __b) { 8741 return __builtin_s390_vmleb(__a, __b); 8742 } 8743 8744 static inline __ATTRS_o_ai __vector signed int 8745 vec_mule(__vector signed short __a, __vector signed short __b) { 8746 return __builtin_s390_vmeh(__a, __b); 8747 } 8748 8749 static inline __ATTRS_o_ai __vector unsigned int 8750 vec_mule(__vector unsigned short __a, __vector unsigned short __b) { 8751 return __builtin_s390_vmleh(__a, __b); 8752 } 8753 8754 static inline __ATTRS_o_ai __vector signed long long 8755 vec_mule(__vector signed int __a, __vector signed int __b) { 8756 return __builtin_s390_vmef(__a, __b); 8757 } 8758 8759 static inline __ATTRS_o_ai __vector unsigned long long 8760 vec_mule(__vector unsigned int __a, __vector unsigned int __b) { 8761 return __builtin_s390_vmlef(__a, __b); 8762 } 8763 8764 /*-- vec_mulo ---------------------------------------------------------------*/ 8765 8766 static inline __ATTRS_o_ai __vector signed short 8767 vec_mulo(__vector signed char __a, __vector signed char __b) { 8768 return __builtin_s390_vmob(__a, __b); 8769 } 8770 8771 static inline __ATTRS_o_ai __vector unsigned short 8772 vec_mulo(__vector unsigned char __a, __vector unsigned char __b) { 8773 return __builtin_s390_vmlob(__a, __b); 8774 } 8775 8776 static inline __ATTRS_o_ai __vector signed int 8777 vec_mulo(__vector signed short __a, __vector signed short __b) { 8778 return __builtin_s390_vmoh(__a, __b); 8779 } 8780 8781 static inline __ATTRS_o_ai __vector unsigned int 8782 vec_mulo(__vector unsigned short __a, __vector unsigned short __b) { 8783 return __builtin_s390_vmloh(__a, __b); 8784 } 8785 8786 static inline __ATTRS_o_ai __vector signed long long 8787 vec_mulo(__vector signed int __a, __vector signed int __b) { 8788 return __builtin_s390_vmof(__a, __b); 8789 } 8790 8791 static inline __ATTRS_o_ai __vector unsigned long long 8792 vec_mulo(__vector unsigned int __a, __vector unsigned int __b) { 8793 return __builtin_s390_vmlof(__a, __b); 8794 } 8795 8796 /*-- vec_msum_u128 ----------------------------------------------------------*/ 8797 8798 #if __ARCH__ >= 12 8799 #define vec_msum_u128(X, Y, Z, W) \ 8800 ((__vector unsigned char)__builtin_s390_vmslg((X), (Y), (Z), (W))); 8801 #endif 8802 8803 /*-- vec_sub_u128 -----------------------------------------------------------*/ 8804 8805 static inline __ATTRS_ai __vector unsigned char 8806 vec_sub_u128(__vector unsigned char __a, __vector unsigned char __b) { 8807 return __builtin_s390_vsq(__a, __b); 8808 } 8809 8810 /*-- vec_subc ---------------------------------------------------------------*/ 8811 8812 static inline __ATTRS_o_ai __vector unsigned char 8813 vec_subc(__vector unsigned char __a, __vector unsigned char __b) { 8814 return __builtin_s390_vscbib(__a, __b); 8815 } 8816 8817 static inline __ATTRS_o_ai __vector unsigned short 8818 vec_subc(__vector unsigned short __a, __vector unsigned short __b) { 8819 return __builtin_s390_vscbih(__a, __b); 8820 } 8821 8822 static inline __ATTRS_o_ai __vector unsigned int 8823 vec_subc(__vector unsigned int __a, __vector unsigned int __b) { 8824 return __builtin_s390_vscbif(__a, __b); 8825 } 8826 8827 static inline __ATTRS_o_ai __vector unsigned long long 8828 vec_subc(__vector unsigned long long __a, __vector unsigned long long __b) { 8829 return __builtin_s390_vscbig(__a, __b); 8830 } 8831 8832 /*-- vec_subc_u128 ----------------------------------------------------------*/ 8833 8834 static inline __ATTRS_ai __vector unsigned char 8835 vec_subc_u128(__vector unsigned char __a, __vector unsigned char __b) { 8836 return __builtin_s390_vscbiq(__a, __b); 8837 } 8838 8839 /*-- vec_sube_u128 ----------------------------------------------------------*/ 8840 8841 static inline __ATTRS_ai __vector unsigned char 8842 vec_sube_u128(__vector unsigned char __a, __vector unsigned char __b, 8843 __vector unsigned char __c) { 8844 return __builtin_s390_vsbiq(__a, __b, __c); 8845 } 8846 8847 /*-- vec_subec_u128 ---------------------------------------------------------*/ 8848 8849 static inline __ATTRS_ai __vector unsigned char 8850 vec_subec_u128(__vector unsigned char __a, __vector unsigned char __b, 8851 __vector unsigned char __c) { 8852 return __builtin_s390_vsbcbiq(__a, __b, __c); 8853 } 8854 8855 /*-- vec_sum2 ---------------------------------------------------------------*/ 8856 8857 static inline __ATTRS_o_ai __vector unsigned long long 8858 vec_sum2(__vector unsigned short __a, __vector unsigned short __b) { 8859 return __builtin_s390_vsumgh(__a, __b); 8860 } 8861 8862 static inline __ATTRS_o_ai __vector unsigned long long 8863 vec_sum2(__vector unsigned int __a, __vector unsigned int __b) { 8864 return __builtin_s390_vsumgf(__a, __b); 8865 } 8866 8867 /*-- vec_sum_u128 -----------------------------------------------------------*/ 8868 8869 static inline __ATTRS_o_ai __vector unsigned char 8870 vec_sum_u128(__vector unsigned int __a, __vector unsigned int __b) { 8871 return __builtin_s390_vsumqf(__a, __b); 8872 } 8873 8874 static inline __ATTRS_o_ai __vector unsigned char 8875 vec_sum_u128(__vector unsigned long long __a, __vector unsigned long long __b) { 8876 return __builtin_s390_vsumqg(__a, __b); 8877 } 8878 8879 /*-- vec_sum4 ---------------------------------------------------------------*/ 8880 8881 static inline __ATTRS_o_ai __vector unsigned int 8882 vec_sum4(__vector unsigned char __a, __vector unsigned char __b) { 8883 return __builtin_s390_vsumb(__a, __b); 8884 } 8885 8886 static inline __ATTRS_o_ai __vector unsigned int 8887 vec_sum4(__vector unsigned short __a, __vector unsigned short __b) { 8888 return __builtin_s390_vsumh(__a, __b); 8889 } 8890 8891 /*-- vec_test_mask ----------------------------------------------------------*/ 8892 8893 static inline __ATTRS_o_ai int 8894 vec_test_mask(__vector signed char __a, __vector unsigned char __b) { 8895 return __builtin_s390_vtm((__vector unsigned char)__a, 8896 (__vector unsigned char)__b); 8897 } 8898 8899 static inline __ATTRS_o_ai int 8900 vec_test_mask(__vector unsigned char __a, __vector unsigned char __b) { 8901 return __builtin_s390_vtm(__a, __b); 8902 } 8903 8904 static inline __ATTRS_o_ai int 8905 vec_test_mask(__vector signed short __a, __vector unsigned short __b) { 8906 return __builtin_s390_vtm((__vector unsigned char)__a, 8907 (__vector unsigned char)__b); 8908 } 8909 8910 static inline __ATTRS_o_ai int 8911 vec_test_mask(__vector unsigned short __a, __vector unsigned short __b) { 8912 return __builtin_s390_vtm((__vector unsigned char)__a, 8913 (__vector unsigned char)__b); 8914 } 8915 8916 static inline __ATTRS_o_ai int 8917 vec_test_mask(__vector signed int __a, __vector unsigned int __b) { 8918 return __builtin_s390_vtm((__vector unsigned char)__a, 8919 (__vector unsigned char)__b); 8920 } 8921 8922 static inline __ATTRS_o_ai int 8923 vec_test_mask(__vector unsigned int __a, __vector unsigned int __b) { 8924 return __builtin_s390_vtm((__vector unsigned char)__a, 8925 (__vector unsigned char)__b); 8926 } 8927 8928 static inline __ATTRS_o_ai int 8929 vec_test_mask(__vector signed long long __a, __vector unsigned long long __b) { 8930 return __builtin_s390_vtm((__vector unsigned char)__a, 8931 (__vector unsigned char)__b); 8932 } 8933 8934 static inline __ATTRS_o_ai int 8935 vec_test_mask(__vector unsigned long long __a, 8936 __vector unsigned long long __b) { 8937 return __builtin_s390_vtm((__vector unsigned char)__a, 8938 (__vector unsigned char)__b); 8939 } 8940 8941 #if __ARCH__ >= 12 8942 static inline __ATTRS_o_ai int 8943 vec_test_mask(__vector float __a, __vector unsigned int __b) { 8944 return __builtin_s390_vtm((__vector unsigned char)__a, 8945 (__vector unsigned char)__b); 8946 } 8947 #endif 8948 8949 static inline __ATTRS_o_ai int 8950 vec_test_mask(__vector double __a, __vector unsigned long long __b) { 8951 return __builtin_s390_vtm((__vector unsigned char)__a, 8952 (__vector unsigned char)__b); 8953 } 8954 8955 /*-- vec_madd ---------------------------------------------------------------*/ 8956 8957 #if __ARCH__ >= 12 8958 static inline __ATTRS_o_ai __vector float 8959 vec_madd(__vector float __a, __vector float __b, __vector float __c) { 8960 return __builtin_s390_vfmasb(__a, __b, __c); 8961 } 8962 #endif 8963 8964 static inline __ATTRS_o_ai __vector double 8965 vec_madd(__vector double __a, __vector double __b, __vector double __c) { 8966 return __builtin_s390_vfmadb(__a, __b, __c); 8967 } 8968 8969 /*-- vec_msub ---------------------------------------------------------------*/ 8970 8971 #if __ARCH__ >= 12 8972 static inline __ATTRS_o_ai __vector float 8973 vec_msub(__vector float __a, __vector float __b, __vector float __c) { 8974 return __builtin_s390_vfmssb(__a, __b, __c); 8975 } 8976 #endif 8977 8978 static inline __ATTRS_o_ai __vector double 8979 vec_msub(__vector double __a, __vector double __b, __vector double __c) { 8980 return __builtin_s390_vfmsdb(__a, __b, __c); 8981 } 8982 8983 /*-- vec_nmadd ---------------------------------------------------------------*/ 8984 8985 #if __ARCH__ >= 12 8986 static inline __ATTRS_o_ai __vector float 8987 vec_nmadd(__vector float __a, __vector float __b, __vector float __c) { 8988 return __builtin_s390_vfnmasb(__a, __b, __c); 8989 } 8990 8991 static inline __ATTRS_o_ai __vector double 8992 vec_nmadd(__vector double __a, __vector double __b, __vector double __c) { 8993 return __builtin_s390_vfnmadb(__a, __b, __c); 8994 } 8995 #endif 8996 8997 /*-- vec_nmsub ---------------------------------------------------------------*/ 8998 8999 #if __ARCH__ >= 12 9000 static inline __ATTRS_o_ai __vector float 9001 vec_nmsub(__vector float __a, __vector float __b, __vector float __c) { 9002 return __builtin_s390_vfnmssb(__a, __b, __c); 9003 } 9004 9005 static inline __ATTRS_o_ai __vector double 9006 vec_nmsub(__vector double __a, __vector double __b, __vector double __c) { 9007 return __builtin_s390_vfnmsdb(__a, __b, __c); 9008 } 9009 #endif 9010 9011 /*-- vec_sqrt ---------------------------------------------------------------*/ 9012 9013 #if __ARCH__ >= 12 9014 static inline __ATTRS_o_ai __vector float 9015 vec_sqrt(__vector float __a) { 9016 return __builtin_s390_vfsqsb(__a); 9017 } 9018 #endif 9019 9020 static inline __ATTRS_o_ai __vector double 9021 vec_sqrt(__vector double __a) { 9022 return __builtin_s390_vfsqdb(__a); 9023 } 9024 9025 /*-- vec_ld2f ---------------------------------------------------------------*/ 9026 9027 // This prototype is deprecated. 9028 static inline __ATTRS_ai __vector double 9029 vec_ld2f(const float *__ptr) { 9030 typedef float __v2f32 __attribute__((__vector_size__(8))); 9031 return __builtin_convertvector(*(const __v2f32 *)__ptr, __vector double); 9032 } 9033 9034 /*-- vec_st2f ---------------------------------------------------------------*/ 9035 9036 // This prototype is deprecated. 9037 static inline __ATTRS_ai void 9038 vec_st2f(__vector double __a, float *__ptr) { 9039 typedef float __v2f32 __attribute__((__vector_size__(8))); 9040 *(__v2f32 *)__ptr = __builtin_convertvector(__a, __v2f32); 9041 } 9042 9043 /*-- vec_ctd ----------------------------------------------------------------*/ 9044 9045 // This prototype is deprecated. 9046 static inline __ATTRS_o_ai __vector double 9047 vec_ctd(__vector signed long long __a, int __b) 9048 __constant_range(__b, 0, 31) { 9049 __vector double __conv = __builtin_convertvector(__a, __vector double); 9050 __conv *= ((__vector double)(__vector unsigned long long) 9051 ((0x3ffULL - __b) << 52)); 9052 return __conv; 9053 } 9054 9055 // This prototype is deprecated. 9056 static inline __ATTRS_o_ai __vector double 9057 vec_ctd(__vector unsigned long long __a, int __b) 9058 __constant_range(__b, 0, 31) { 9059 __vector double __conv = __builtin_convertvector(__a, __vector double); 9060 __conv *= ((__vector double)(__vector unsigned long long) 9061 ((0x3ffULL - __b) << 52)); 9062 return __conv; 9063 } 9064 9065 /*-- vec_ctsl ---------------------------------------------------------------*/ 9066 9067 // This prototype is deprecated. 9068 static inline __ATTRS_o_ai __vector signed long long 9069 vec_ctsl(__vector double __a, int __b) 9070 __constant_range(__b, 0, 31) { 9071 __a *= ((__vector double)(__vector unsigned long long) 9072 ((0x3ffULL + __b) << 52)); 9073 return __builtin_convertvector(__a, __vector signed long long); 9074 } 9075 9076 /*-- vec_ctul ---------------------------------------------------------------*/ 9077 9078 // This prototype is deprecated. 9079 static inline __ATTRS_o_ai __vector unsigned long long 9080 vec_ctul(__vector double __a, int __b) 9081 __constant_range(__b, 0, 31) { 9082 __a *= ((__vector double)(__vector unsigned long long) 9083 ((0x3ffULL + __b) << 52)); 9084 return __builtin_convertvector(__a, __vector unsigned long long); 9085 } 9086 9087 /*-- vec_doublee ------------------------------------------------------------*/ 9088 9089 #if __ARCH__ >= 12 9090 static inline __ATTRS_ai __vector double 9091 vec_doublee(__vector float __a) { 9092 typedef float __v2f32 __attribute__((__vector_size__(8))); 9093 __v2f32 __pack = __builtin_shufflevector(__a, __a, 0, 2); 9094 return __builtin_convertvector(__pack, __vector double); 9095 } 9096 #endif 9097 9098 /*-- vec_floate -------------------------------------------------------------*/ 9099 9100 #if __ARCH__ >= 12 9101 static inline __ATTRS_ai __vector float 9102 vec_floate(__vector double __a) { 9103 typedef float __v2f32 __attribute__((__vector_size__(8))); 9104 __v2f32 __pack = __builtin_convertvector(__a, __v2f32); 9105 return __builtin_shufflevector(__pack, __pack, 0, -1, 1, -1); 9106 } 9107 #endif 9108 9109 /*-- vec_double -------------------------------------------------------------*/ 9110 9111 static inline __ATTRS_o_ai __vector double 9112 vec_double(__vector signed long long __a) { 9113 return __builtin_convertvector(__a, __vector double); 9114 } 9115 9116 static inline __ATTRS_o_ai __vector double 9117 vec_double(__vector unsigned long long __a) { 9118 return __builtin_convertvector(__a, __vector double); 9119 } 9120 9121 /*-- vec_float --------------------------------------------------------------*/ 9122 9123 #if __ARCH__ >= 13 9124 9125 static inline __ATTRS_o_ai __vector float 9126 vec_float(__vector signed int __a) { 9127 return __builtin_convertvector(__a, __vector float); 9128 } 9129 9130 static inline __ATTRS_o_ai __vector float 9131 vec_float(__vector unsigned int __a) { 9132 return __builtin_convertvector(__a, __vector float); 9133 } 9134 9135 #endif 9136 9137 /*-- vec_signed -------------------------------------------------------------*/ 9138 9139 static inline __ATTRS_o_ai __vector signed long long 9140 vec_signed(__vector double __a) { 9141 return __builtin_convertvector(__a, __vector signed long long); 9142 } 9143 9144 #if __ARCH__ >= 13 9145 static inline __ATTRS_o_ai __vector signed int 9146 vec_signed(__vector float __a) { 9147 return __builtin_convertvector(__a, __vector signed int); 9148 } 9149 #endif 9150 9151 /*-- vec_unsigned -----------------------------------------------------------*/ 9152 9153 static inline __ATTRS_o_ai __vector unsigned long long 9154 vec_unsigned(__vector double __a) { 9155 return __builtin_convertvector(__a, __vector unsigned long long); 9156 } 9157 9158 #if __ARCH__ >= 13 9159 static inline __ATTRS_o_ai __vector unsigned int 9160 vec_unsigned(__vector float __a) { 9161 return __builtin_convertvector(__a, __vector unsigned int); 9162 } 9163 #endif 9164 9165 /*-- vec_roundp -------------------------------------------------------------*/ 9166 9167 #if __ARCH__ >= 12 9168 static inline __ATTRS_o_ai __vector float 9169 vec_roundp(__vector float __a) { 9170 return __builtin_s390_vfisb(__a, 4, 6); 9171 } 9172 #endif 9173 9174 static inline __ATTRS_o_ai __vector double 9175 vec_roundp(__vector double __a) { 9176 return __builtin_s390_vfidb(__a, 4, 6); 9177 } 9178 9179 /*-- vec_ceil ---------------------------------------------------------------*/ 9180 9181 #if __ARCH__ >= 12 9182 static inline __ATTRS_o_ai __vector float 9183 vec_ceil(__vector float __a) { 9184 // On this platform, vec_ceil never triggers the IEEE-inexact exception. 9185 return __builtin_s390_vfisb(__a, 4, 6); 9186 } 9187 #endif 9188 9189 static inline __ATTRS_o_ai __vector double 9190 vec_ceil(__vector double __a) { 9191 // On this platform, vec_ceil never triggers the IEEE-inexact exception. 9192 return __builtin_s390_vfidb(__a, 4, 6); 9193 } 9194 9195 /*-- vec_roundm -------------------------------------------------------------*/ 9196 9197 #if __ARCH__ >= 12 9198 static inline __ATTRS_o_ai __vector float 9199 vec_roundm(__vector float __a) { 9200 return __builtin_s390_vfisb(__a, 4, 7); 9201 } 9202 #endif 9203 9204 static inline __ATTRS_o_ai __vector double 9205 vec_roundm(__vector double __a) { 9206 return __builtin_s390_vfidb(__a, 4, 7); 9207 } 9208 9209 /*-- vec_floor --------------------------------------------------------------*/ 9210 9211 #if __ARCH__ >= 12 9212 static inline __ATTRS_o_ai __vector float 9213 vec_floor(__vector float __a) { 9214 // On this platform, vec_floor never triggers the IEEE-inexact exception. 9215 return __builtin_s390_vfisb(__a, 4, 7); 9216 } 9217 #endif 9218 9219 static inline __ATTRS_o_ai __vector double 9220 vec_floor(__vector double __a) { 9221 // On this platform, vec_floor never triggers the IEEE-inexact exception. 9222 return __builtin_s390_vfidb(__a, 4, 7); 9223 } 9224 9225 /*-- vec_roundz -------------------------------------------------------------*/ 9226 9227 #if __ARCH__ >= 12 9228 static inline __ATTRS_o_ai __vector float 9229 vec_roundz(__vector float __a) { 9230 return __builtin_s390_vfisb(__a, 4, 5); 9231 } 9232 #endif 9233 9234 static inline __ATTRS_o_ai __vector double 9235 vec_roundz(__vector double __a) { 9236 return __builtin_s390_vfidb(__a, 4, 5); 9237 } 9238 9239 /*-- vec_trunc --------------------------------------------------------------*/ 9240 9241 #if __ARCH__ >= 12 9242 static inline __ATTRS_o_ai __vector float 9243 vec_trunc(__vector float __a) { 9244 // On this platform, vec_trunc never triggers the IEEE-inexact exception. 9245 return __builtin_s390_vfisb(__a, 4, 5); 9246 } 9247 #endif 9248 9249 static inline __ATTRS_o_ai __vector double 9250 vec_trunc(__vector double __a) { 9251 // On this platform, vec_trunc never triggers the IEEE-inexact exception. 9252 return __builtin_s390_vfidb(__a, 4, 5); 9253 } 9254 9255 /*-- vec_roundc -------------------------------------------------------------*/ 9256 9257 #if __ARCH__ >= 12 9258 static inline __ATTRS_o_ai __vector float 9259 vec_roundc(__vector float __a) { 9260 return __builtin_s390_vfisb(__a, 4, 0); 9261 } 9262 #endif 9263 9264 static inline __ATTRS_o_ai __vector double 9265 vec_roundc(__vector double __a) { 9266 return __builtin_s390_vfidb(__a, 4, 0); 9267 } 9268 9269 /*-- vec_rint ---------------------------------------------------------------*/ 9270 9271 #if __ARCH__ >= 12 9272 static inline __ATTRS_o_ai __vector float 9273 vec_rint(__vector float __a) { 9274 // vec_rint may trigger the IEEE-inexact exception. 9275 return __builtin_s390_vfisb(__a, 0, 0); 9276 } 9277 #endif 9278 9279 static inline __ATTRS_o_ai __vector double 9280 vec_rint(__vector double __a) { 9281 // vec_rint may trigger the IEEE-inexact exception. 9282 return __builtin_s390_vfidb(__a, 0, 0); 9283 } 9284 9285 /*-- vec_round --------------------------------------------------------------*/ 9286 9287 #if __ARCH__ >= 12 9288 static inline __ATTRS_o_ai __vector float 9289 vec_round(__vector float __a) { 9290 return __builtin_s390_vfisb(__a, 4, 4); 9291 } 9292 #endif 9293 9294 static inline __ATTRS_o_ai __vector double 9295 vec_round(__vector double __a) { 9296 return __builtin_s390_vfidb(__a, 4, 4); 9297 } 9298 9299 /*-- vec_fp_test_data_class -------------------------------------------------*/ 9300 9301 #if __ARCH__ >= 12 9302 extern __ATTRS_o __vector __bool int 9303 vec_fp_test_data_class(__vector float __a, int __b, int *__c) 9304 __constant_range(__b, 0, 4095); 9305 9306 extern __ATTRS_o __vector __bool long long 9307 vec_fp_test_data_class(__vector double __a, int __b, int *__c) 9308 __constant_range(__b, 0, 4095); 9309 9310 #define vec_fp_test_data_class(X, Y, Z) \ 9311 ((__typeof__((vec_fp_test_data_class)((X), (Y), (Z)))) \ 9312 __extension__ ({ \ 9313 __vector unsigned char __res; \ 9314 __vector unsigned char __x = (__vector unsigned char)(X); \ 9315 int *__z = (Z); \ 9316 switch (sizeof ((X)[0])) { \ 9317 case 4: __res = (__vector unsigned char) \ 9318 __builtin_s390_vftcisb((__vector float)__x, (Y), __z); \ 9319 break; \ 9320 default: __res = (__vector unsigned char) \ 9321 __builtin_s390_vftcidb((__vector double)__x, (Y), __z); \ 9322 break; \ 9323 } __res; })) 9324 #else 9325 #define vec_fp_test_data_class(X, Y, Z) \ 9326 ((__vector __bool long long)__builtin_s390_vftcidb((X), (Y), (Z))) 9327 #endif 9328 9329 #define __VEC_CLASS_FP_ZERO_P (1 << 11) 9330 #define __VEC_CLASS_FP_ZERO_N (1 << 10) 9331 #define __VEC_CLASS_FP_ZERO (__VEC_CLASS_FP_ZERO_P | __VEC_CLASS_FP_ZERO_N) 9332 #define __VEC_CLASS_FP_NORMAL_P (1 << 9) 9333 #define __VEC_CLASS_FP_NORMAL_N (1 << 8) 9334 #define __VEC_CLASS_FP_NORMAL (__VEC_CLASS_FP_NORMAL_P | \ 9335 __VEC_CLASS_FP_NORMAL_N) 9336 #define __VEC_CLASS_FP_SUBNORMAL_P (1 << 7) 9337 #define __VEC_CLASS_FP_SUBNORMAL_N (1 << 6) 9338 #define __VEC_CLASS_FP_SUBNORMAL (__VEC_CLASS_FP_SUBNORMAL_P | \ 9339 __VEC_CLASS_FP_SUBNORMAL_N) 9340 #define __VEC_CLASS_FP_INFINITY_P (1 << 5) 9341 #define __VEC_CLASS_FP_INFINITY_N (1 << 4) 9342 #define __VEC_CLASS_FP_INFINITY (__VEC_CLASS_FP_INFINITY_P | \ 9343 __VEC_CLASS_FP_INFINITY_N) 9344 #define __VEC_CLASS_FP_QNAN_P (1 << 3) 9345 #define __VEC_CLASS_FP_QNAN_N (1 << 2) 9346 #define __VEC_CLASS_FP_QNAN (__VEC_CLASS_FP_QNAN_P | __VEC_CLASS_FP_QNAN_N) 9347 #define __VEC_CLASS_FP_SNAN_P (1 << 1) 9348 #define __VEC_CLASS_FP_SNAN_N (1 << 0) 9349 #define __VEC_CLASS_FP_SNAN (__VEC_CLASS_FP_SNAN_P | __VEC_CLASS_FP_SNAN_N) 9350 #define __VEC_CLASS_FP_NAN (__VEC_CLASS_FP_QNAN | __VEC_CLASS_FP_SNAN) 9351 #define __VEC_CLASS_FP_NOT_NORMAL (__VEC_CLASS_FP_NAN | \ 9352 __VEC_CLASS_FP_SUBNORMAL | \ 9353 __VEC_CLASS_FP_ZERO | \ 9354 __VEC_CLASS_FP_INFINITY) 9355 9356 /*-- vec_extend_to_fp32_hi --------------------------------------------------*/ 9357 9358 #if __ARCH__ >= 14 9359 #define vec_extend_to_fp32_hi(X, W) \ 9360 ((__vector float)__builtin_s390_vclfnhs((X), (W))); 9361 #endif 9362 9363 /*-- vec_extend_to_fp32_hi --------------------------------------------------*/ 9364 9365 #if __ARCH__ >= 14 9366 #define vec_extend_to_fp32_lo(X, W) \ 9367 ((__vector float)__builtin_s390_vclfnls((X), (W))); 9368 #endif 9369 9370 /*-- vec_round_from_fp32 ----------------------------------------------------*/ 9371 9372 #if __ARCH__ >= 14 9373 #define vec_round_from_fp32(X, Y, W) \ 9374 ((__vector unsigned short)__builtin_s390_vcrnfs((X), (Y), (W))); 9375 #endif 9376 9377 /*-- vec_convert_to_fp16 ----------------------------------------------------*/ 9378 9379 #if __ARCH__ >= 14 9380 #define vec_convert_to_fp16(X, W) \ 9381 ((__vector unsigned short)__builtin_s390_vcfn((X), (W))); 9382 #endif 9383 9384 /*-- vec_convert_from_fp16 --------------------------------------------------*/ 9385 9386 #if __ARCH__ >= 14 9387 #define vec_convert_from_fp16(X, W) \ 9388 ((__vector unsigned short)__builtin_s390_vcnf((X), (W))); 9389 #endif 9390 9391 /*-- vec_cp_until_zero ------------------------------------------------------*/ 9392 9393 static inline __ATTRS_o_ai __vector signed char 9394 vec_cp_until_zero(__vector signed char __a) { 9395 return ((__vector signed char) 9396 __builtin_s390_vistrb((__vector unsigned char)__a)); 9397 } 9398 9399 static inline __ATTRS_o_ai __vector __bool char 9400 vec_cp_until_zero(__vector __bool char __a) { 9401 return ((__vector __bool char) 9402 __builtin_s390_vistrb((__vector unsigned char)__a)); 9403 } 9404 9405 static inline __ATTRS_o_ai __vector unsigned char 9406 vec_cp_until_zero(__vector unsigned char __a) { 9407 return __builtin_s390_vistrb(__a); 9408 } 9409 9410 static inline __ATTRS_o_ai __vector signed short 9411 vec_cp_until_zero(__vector signed short __a) { 9412 return ((__vector signed short) 9413 __builtin_s390_vistrh((__vector unsigned short)__a)); 9414 } 9415 9416 static inline __ATTRS_o_ai __vector __bool short 9417 vec_cp_until_zero(__vector __bool short __a) { 9418 return ((__vector __bool short) 9419 __builtin_s390_vistrh((__vector unsigned short)__a)); 9420 } 9421 9422 static inline __ATTRS_o_ai __vector unsigned short 9423 vec_cp_until_zero(__vector unsigned short __a) { 9424 return __builtin_s390_vistrh(__a); 9425 } 9426 9427 static inline __ATTRS_o_ai __vector signed int 9428 vec_cp_until_zero(__vector signed int __a) { 9429 return ((__vector signed int) 9430 __builtin_s390_vistrf((__vector unsigned int)__a)); 9431 } 9432 9433 static inline __ATTRS_o_ai __vector __bool int 9434 vec_cp_until_zero(__vector __bool int __a) { 9435 return ((__vector __bool int) 9436 __builtin_s390_vistrf((__vector unsigned int)__a)); 9437 } 9438 9439 static inline __ATTRS_o_ai __vector unsigned int 9440 vec_cp_until_zero(__vector unsigned int __a) { 9441 return __builtin_s390_vistrf(__a); 9442 } 9443 9444 /*-- vec_cp_until_zero_cc ---------------------------------------------------*/ 9445 9446 static inline __ATTRS_o_ai __vector signed char 9447 vec_cp_until_zero_cc(__vector signed char __a, int *__cc) { 9448 return (__vector signed char) 9449 __builtin_s390_vistrbs((__vector unsigned char)__a, __cc); 9450 } 9451 9452 static inline __ATTRS_o_ai __vector __bool char 9453 vec_cp_until_zero_cc(__vector __bool char __a, int *__cc) { 9454 return (__vector __bool char) 9455 __builtin_s390_vistrbs((__vector unsigned char)__a, __cc); 9456 } 9457 9458 static inline __ATTRS_o_ai __vector unsigned char 9459 vec_cp_until_zero_cc(__vector unsigned char __a, int *__cc) { 9460 return __builtin_s390_vistrbs(__a, __cc); 9461 } 9462 9463 static inline __ATTRS_o_ai __vector signed short 9464 vec_cp_until_zero_cc(__vector signed short __a, int *__cc) { 9465 return (__vector signed short) 9466 __builtin_s390_vistrhs((__vector unsigned short)__a, __cc); 9467 } 9468 9469 static inline __ATTRS_o_ai __vector __bool short 9470 vec_cp_until_zero_cc(__vector __bool short __a, int *__cc) { 9471 return (__vector __bool short) 9472 __builtin_s390_vistrhs((__vector unsigned short)__a, __cc); 9473 } 9474 9475 static inline __ATTRS_o_ai __vector unsigned short 9476 vec_cp_until_zero_cc(__vector unsigned short __a, int *__cc) { 9477 return __builtin_s390_vistrhs(__a, __cc); 9478 } 9479 9480 static inline __ATTRS_o_ai __vector signed int 9481 vec_cp_until_zero_cc(__vector signed int __a, int *__cc) { 9482 return (__vector signed int) 9483 __builtin_s390_vistrfs((__vector unsigned int)__a, __cc); 9484 } 9485 9486 static inline __ATTRS_o_ai __vector __bool int 9487 vec_cp_until_zero_cc(__vector __bool int __a, int *__cc) { 9488 return (__vector __bool int) 9489 __builtin_s390_vistrfs((__vector unsigned int)__a, __cc); 9490 } 9491 9492 static inline __ATTRS_o_ai __vector unsigned int 9493 vec_cp_until_zero_cc(__vector unsigned int __a, int *__cc) { 9494 return __builtin_s390_vistrfs(__a, __cc); 9495 } 9496 9497 /*-- vec_cmpeq_idx ----------------------------------------------------------*/ 9498 9499 static inline __ATTRS_o_ai __vector signed char 9500 vec_cmpeq_idx(__vector signed char __a, __vector signed char __b) { 9501 return (__vector signed char) 9502 __builtin_s390_vfeeb((__vector unsigned char)__a, 9503 (__vector unsigned char)__b); 9504 } 9505 9506 static inline __ATTRS_o_ai __vector unsigned char 9507 vec_cmpeq_idx(__vector __bool char __a, __vector __bool char __b) { 9508 return __builtin_s390_vfeeb((__vector unsigned char)__a, 9509 (__vector unsigned char)__b); 9510 } 9511 9512 static inline __ATTRS_o_ai __vector unsigned char 9513 vec_cmpeq_idx(__vector unsigned char __a, __vector unsigned char __b) { 9514 return __builtin_s390_vfeeb(__a, __b); 9515 } 9516 9517 static inline __ATTRS_o_ai __vector signed short 9518 vec_cmpeq_idx(__vector signed short __a, __vector signed short __b) { 9519 return (__vector signed short) 9520 __builtin_s390_vfeeh((__vector unsigned short)__a, 9521 (__vector unsigned short)__b); 9522 } 9523 9524 static inline __ATTRS_o_ai __vector unsigned short 9525 vec_cmpeq_idx(__vector __bool short __a, __vector __bool short __b) { 9526 return __builtin_s390_vfeeh((__vector unsigned short)__a, 9527 (__vector unsigned short)__b); 9528 } 9529 9530 static inline __ATTRS_o_ai __vector unsigned short 9531 vec_cmpeq_idx(__vector unsigned short __a, __vector unsigned short __b) { 9532 return __builtin_s390_vfeeh(__a, __b); 9533 } 9534 9535 static inline __ATTRS_o_ai __vector signed int 9536 vec_cmpeq_idx(__vector signed int __a, __vector signed int __b) { 9537 return (__vector signed int) 9538 __builtin_s390_vfeef((__vector unsigned int)__a, 9539 (__vector unsigned int)__b); 9540 } 9541 9542 static inline __ATTRS_o_ai __vector unsigned int 9543 vec_cmpeq_idx(__vector __bool int __a, __vector __bool int __b) { 9544 return __builtin_s390_vfeef((__vector unsigned int)__a, 9545 (__vector unsigned int)__b); 9546 } 9547 9548 static inline __ATTRS_o_ai __vector unsigned int 9549 vec_cmpeq_idx(__vector unsigned int __a, __vector unsigned int __b) { 9550 return __builtin_s390_vfeef(__a, __b); 9551 } 9552 9553 /*-- vec_cmpeq_idx_cc -------------------------------------------------------*/ 9554 9555 static inline __ATTRS_o_ai __vector signed char 9556 vec_cmpeq_idx_cc(__vector signed char __a, __vector signed char __b, int *__cc) { 9557 return (__vector signed char) 9558 __builtin_s390_vfeebs((__vector unsigned char)__a, 9559 (__vector unsigned char)__b, __cc); 9560 } 9561 9562 static inline __ATTRS_o_ai __vector unsigned char 9563 vec_cmpeq_idx_cc(__vector __bool char __a, __vector __bool char __b, int *__cc) { 9564 return __builtin_s390_vfeebs((__vector unsigned char)__a, 9565 (__vector unsigned char)__b, __cc); 9566 } 9567 9568 static inline __ATTRS_o_ai __vector unsigned char 9569 vec_cmpeq_idx_cc(__vector unsigned char __a, __vector unsigned char __b, 9570 int *__cc) { 9571 return __builtin_s390_vfeebs(__a, __b, __cc); 9572 } 9573 9574 static inline __ATTRS_o_ai __vector signed short 9575 vec_cmpeq_idx_cc(__vector signed short __a, __vector signed short __b, 9576 int *__cc) { 9577 return (__vector signed short) 9578 __builtin_s390_vfeehs((__vector unsigned short)__a, 9579 (__vector unsigned short)__b, __cc); 9580 } 9581 9582 static inline __ATTRS_o_ai __vector unsigned short 9583 vec_cmpeq_idx_cc(__vector __bool short __a, __vector __bool short __b, int *__cc) { 9584 return __builtin_s390_vfeehs((__vector unsigned short)__a, 9585 (__vector unsigned short)__b, __cc); 9586 } 9587 9588 static inline __ATTRS_o_ai __vector unsigned short 9589 vec_cmpeq_idx_cc(__vector unsigned short __a, __vector unsigned short __b, 9590 int *__cc) { 9591 return __builtin_s390_vfeehs(__a, __b, __cc); 9592 } 9593 9594 static inline __ATTRS_o_ai __vector signed int 9595 vec_cmpeq_idx_cc(__vector signed int __a, __vector signed int __b, int *__cc) { 9596 return (__vector signed int) 9597 __builtin_s390_vfeefs((__vector unsigned int)__a, 9598 (__vector unsigned int)__b, __cc); 9599 } 9600 9601 static inline __ATTRS_o_ai __vector unsigned int 9602 vec_cmpeq_idx_cc(__vector __bool int __a, __vector __bool int __b, int *__cc) { 9603 return __builtin_s390_vfeefs((__vector unsigned int)__a, 9604 (__vector unsigned int)__b, __cc); 9605 } 9606 9607 static inline __ATTRS_o_ai __vector unsigned int 9608 vec_cmpeq_idx_cc(__vector unsigned int __a, __vector unsigned int __b, 9609 int *__cc) { 9610 return __builtin_s390_vfeefs(__a, __b, __cc); 9611 } 9612 9613 /*-- vec_cmpeq_or_0_idx -----------------------------------------------------*/ 9614 9615 static inline __ATTRS_o_ai __vector signed char 9616 vec_cmpeq_or_0_idx(__vector signed char __a, __vector signed char __b) { 9617 return (__vector signed char) 9618 __builtin_s390_vfeezb((__vector unsigned char)__a, 9619 (__vector unsigned char)__b); 9620 } 9621 9622 static inline __ATTRS_o_ai __vector unsigned char 9623 vec_cmpeq_or_0_idx(__vector __bool char __a, __vector __bool char __b) { 9624 return __builtin_s390_vfeezb((__vector unsigned char)__a, 9625 (__vector unsigned char)__b); 9626 } 9627 9628 static inline __ATTRS_o_ai __vector unsigned char 9629 vec_cmpeq_or_0_idx(__vector unsigned char __a, __vector unsigned char __b) { 9630 return __builtin_s390_vfeezb(__a, __b); 9631 } 9632 9633 static inline __ATTRS_o_ai __vector signed short 9634 vec_cmpeq_or_0_idx(__vector signed short __a, __vector signed short __b) { 9635 return (__vector signed short) 9636 __builtin_s390_vfeezh((__vector unsigned short)__a, 9637 (__vector unsigned short)__b); 9638 } 9639 9640 static inline __ATTRS_o_ai __vector unsigned short 9641 vec_cmpeq_or_0_idx(__vector __bool short __a, __vector __bool short __b) { 9642 return __builtin_s390_vfeezh((__vector unsigned short)__a, 9643 (__vector unsigned short)__b); 9644 } 9645 9646 static inline __ATTRS_o_ai __vector unsigned short 9647 vec_cmpeq_or_0_idx(__vector unsigned short __a, __vector unsigned short __b) { 9648 return __builtin_s390_vfeezh(__a, __b); 9649 } 9650 9651 static inline __ATTRS_o_ai __vector signed int 9652 vec_cmpeq_or_0_idx(__vector signed int __a, __vector signed int __b) { 9653 return (__vector signed int) 9654 __builtin_s390_vfeezf((__vector unsigned int)__a, 9655 (__vector unsigned int)__b); 9656 } 9657 9658 static inline __ATTRS_o_ai __vector unsigned int 9659 vec_cmpeq_or_0_idx(__vector __bool int __a, __vector __bool int __b) { 9660 return __builtin_s390_vfeezf((__vector unsigned int)__a, 9661 (__vector unsigned int)__b); 9662 } 9663 9664 static inline __ATTRS_o_ai __vector unsigned int 9665 vec_cmpeq_or_0_idx(__vector unsigned int __a, __vector unsigned int __b) { 9666 return __builtin_s390_vfeezf(__a, __b); 9667 } 9668 9669 /*-- vec_cmpeq_or_0_idx_cc --------------------------------------------------*/ 9670 9671 static inline __ATTRS_o_ai __vector signed char 9672 vec_cmpeq_or_0_idx_cc(__vector signed char __a, __vector signed char __b, 9673 int *__cc) { 9674 return (__vector signed char) 9675 __builtin_s390_vfeezbs((__vector unsigned char)__a, 9676 (__vector unsigned char)__b, __cc); 9677 } 9678 9679 static inline __ATTRS_o_ai __vector unsigned char 9680 vec_cmpeq_or_0_idx_cc(__vector __bool char __a, __vector __bool char __b, 9681 int *__cc) { 9682 return __builtin_s390_vfeezbs((__vector unsigned char)__a, 9683 (__vector unsigned char)__b, __cc); 9684 } 9685 9686 static inline __ATTRS_o_ai __vector unsigned char 9687 vec_cmpeq_or_0_idx_cc(__vector unsigned char __a, __vector unsigned char __b, 9688 int *__cc) { 9689 return __builtin_s390_vfeezbs(__a, __b, __cc); 9690 } 9691 9692 static inline __ATTRS_o_ai __vector signed short 9693 vec_cmpeq_or_0_idx_cc(__vector signed short __a, __vector signed short __b, 9694 int *__cc) { 9695 return (__vector signed short) 9696 __builtin_s390_vfeezhs((__vector unsigned short)__a, 9697 (__vector unsigned short)__b, __cc); 9698 } 9699 9700 static inline __ATTRS_o_ai __vector unsigned short 9701 vec_cmpeq_or_0_idx_cc(__vector __bool short __a, __vector __bool short __b, 9702 int *__cc) { 9703 return __builtin_s390_vfeezhs((__vector unsigned short)__a, 9704 (__vector unsigned short)__b, __cc); 9705 } 9706 9707 static inline __ATTRS_o_ai __vector unsigned short 9708 vec_cmpeq_or_0_idx_cc(__vector unsigned short __a, __vector unsigned short __b, 9709 int *__cc) { 9710 return __builtin_s390_vfeezhs(__a, __b, __cc); 9711 } 9712 9713 static inline __ATTRS_o_ai __vector signed int 9714 vec_cmpeq_or_0_idx_cc(__vector signed int __a, __vector signed int __b, 9715 int *__cc) { 9716 return (__vector signed int) 9717 __builtin_s390_vfeezfs((__vector unsigned int)__a, 9718 (__vector unsigned int)__b, __cc); 9719 } 9720 9721 static inline __ATTRS_o_ai __vector unsigned int 9722 vec_cmpeq_or_0_idx_cc(__vector __bool int __a, __vector __bool int __b, 9723 int *__cc) { 9724 return __builtin_s390_vfeezfs((__vector unsigned int)__a, 9725 (__vector unsigned int)__b, __cc); 9726 } 9727 9728 static inline __ATTRS_o_ai __vector unsigned int 9729 vec_cmpeq_or_0_idx_cc(__vector unsigned int __a, __vector unsigned int __b, 9730 int *__cc) { 9731 return __builtin_s390_vfeezfs(__a, __b, __cc); 9732 } 9733 9734 /*-- vec_cmpne_idx ----------------------------------------------------------*/ 9735 9736 static inline __ATTRS_o_ai __vector signed char 9737 vec_cmpne_idx(__vector signed char __a, __vector signed char __b) { 9738 return (__vector signed char) 9739 __builtin_s390_vfeneb((__vector unsigned char)__a, 9740 (__vector unsigned char)__b); 9741 } 9742 9743 static inline __ATTRS_o_ai __vector unsigned char 9744 vec_cmpne_idx(__vector __bool char __a, __vector __bool char __b) { 9745 return __builtin_s390_vfeneb((__vector unsigned char)__a, 9746 (__vector unsigned char)__b); 9747 } 9748 9749 static inline __ATTRS_o_ai __vector unsigned char 9750 vec_cmpne_idx(__vector unsigned char __a, __vector unsigned char __b) { 9751 return __builtin_s390_vfeneb(__a, __b); 9752 } 9753 9754 static inline __ATTRS_o_ai __vector signed short 9755 vec_cmpne_idx(__vector signed short __a, __vector signed short __b) { 9756 return (__vector signed short) 9757 __builtin_s390_vfeneh((__vector unsigned short)__a, 9758 (__vector unsigned short)__b); 9759 } 9760 9761 static inline __ATTRS_o_ai __vector unsigned short 9762 vec_cmpne_idx(__vector __bool short __a, __vector __bool short __b) { 9763 return __builtin_s390_vfeneh((__vector unsigned short)__a, 9764 (__vector unsigned short)__b); 9765 } 9766 9767 static inline __ATTRS_o_ai __vector unsigned short 9768 vec_cmpne_idx(__vector unsigned short __a, __vector unsigned short __b) { 9769 return __builtin_s390_vfeneh(__a, __b); 9770 } 9771 9772 static inline __ATTRS_o_ai __vector signed int 9773 vec_cmpne_idx(__vector signed int __a, __vector signed int __b) { 9774 return (__vector signed int) 9775 __builtin_s390_vfenef((__vector unsigned int)__a, 9776 (__vector unsigned int)__b); 9777 } 9778 9779 static inline __ATTRS_o_ai __vector unsigned int 9780 vec_cmpne_idx(__vector __bool int __a, __vector __bool int __b) { 9781 return __builtin_s390_vfenef((__vector unsigned int)__a, 9782 (__vector unsigned int)__b); 9783 } 9784 9785 static inline __ATTRS_o_ai __vector unsigned int 9786 vec_cmpne_idx(__vector unsigned int __a, __vector unsigned int __b) { 9787 return __builtin_s390_vfenef(__a, __b); 9788 } 9789 9790 /*-- vec_cmpne_idx_cc -------------------------------------------------------*/ 9791 9792 static inline __ATTRS_o_ai __vector signed char 9793 vec_cmpne_idx_cc(__vector signed char __a, __vector signed char __b, int *__cc) { 9794 return (__vector signed char) 9795 __builtin_s390_vfenebs((__vector unsigned char)__a, 9796 (__vector unsigned char)__b, __cc); 9797 } 9798 9799 static inline __ATTRS_o_ai __vector unsigned char 9800 vec_cmpne_idx_cc(__vector __bool char __a, __vector __bool char __b, int *__cc) { 9801 return __builtin_s390_vfenebs((__vector unsigned char)__a, 9802 (__vector unsigned char)__b, __cc); 9803 } 9804 9805 static inline __ATTRS_o_ai __vector unsigned char 9806 vec_cmpne_idx_cc(__vector unsigned char __a, __vector unsigned char __b, 9807 int *__cc) { 9808 return __builtin_s390_vfenebs(__a, __b, __cc); 9809 } 9810 9811 static inline __ATTRS_o_ai __vector signed short 9812 vec_cmpne_idx_cc(__vector signed short __a, __vector signed short __b, 9813 int *__cc) { 9814 return (__vector signed short) 9815 __builtin_s390_vfenehs((__vector unsigned short)__a, 9816 (__vector unsigned short)__b, __cc); 9817 } 9818 9819 static inline __ATTRS_o_ai __vector unsigned short 9820 vec_cmpne_idx_cc(__vector __bool short __a, __vector __bool short __b, 9821 int *__cc) { 9822 return __builtin_s390_vfenehs((__vector unsigned short)__a, 9823 (__vector unsigned short)__b, __cc); 9824 } 9825 9826 static inline __ATTRS_o_ai __vector unsigned short 9827 vec_cmpne_idx_cc(__vector unsigned short __a, __vector unsigned short __b, 9828 int *__cc) { 9829 return __builtin_s390_vfenehs(__a, __b, __cc); 9830 } 9831 9832 static inline __ATTRS_o_ai __vector signed int 9833 vec_cmpne_idx_cc(__vector signed int __a, __vector signed int __b, int *__cc) { 9834 return (__vector signed int) 9835 __builtin_s390_vfenefs((__vector unsigned int)__a, 9836 (__vector unsigned int)__b, __cc); 9837 } 9838 9839 static inline __ATTRS_o_ai __vector unsigned int 9840 vec_cmpne_idx_cc(__vector __bool int __a, __vector __bool int __b, int *__cc) { 9841 return __builtin_s390_vfenefs((__vector unsigned int)__a, 9842 (__vector unsigned int)__b, __cc); 9843 } 9844 9845 static inline __ATTRS_o_ai __vector unsigned int 9846 vec_cmpne_idx_cc(__vector unsigned int __a, __vector unsigned int __b, 9847 int *__cc) { 9848 return __builtin_s390_vfenefs(__a, __b, __cc); 9849 } 9850 9851 /*-- vec_cmpne_or_0_idx -----------------------------------------------------*/ 9852 9853 static inline __ATTRS_o_ai __vector signed char 9854 vec_cmpne_or_0_idx(__vector signed char __a, __vector signed char __b) { 9855 return (__vector signed char) 9856 __builtin_s390_vfenezb((__vector unsigned char)__a, 9857 (__vector unsigned char)__b); 9858 } 9859 9860 static inline __ATTRS_o_ai __vector unsigned char 9861 vec_cmpne_or_0_idx(__vector __bool char __a, __vector __bool char __b) { 9862 return __builtin_s390_vfenezb((__vector unsigned char)__a, 9863 (__vector unsigned char)__b); 9864 } 9865 9866 static inline __ATTRS_o_ai __vector unsigned char 9867 vec_cmpne_or_0_idx(__vector unsigned char __a, __vector unsigned char __b) { 9868 return __builtin_s390_vfenezb(__a, __b); 9869 } 9870 9871 static inline __ATTRS_o_ai __vector signed short 9872 vec_cmpne_or_0_idx(__vector signed short __a, __vector signed short __b) { 9873 return (__vector signed short) 9874 __builtin_s390_vfenezh((__vector unsigned short)__a, 9875 (__vector unsigned short)__b); 9876 } 9877 9878 static inline __ATTRS_o_ai __vector unsigned short 9879 vec_cmpne_or_0_idx(__vector __bool short __a, __vector __bool short __b) { 9880 return __builtin_s390_vfenezh((__vector unsigned short)__a, 9881 (__vector unsigned short)__b); 9882 } 9883 9884 static inline __ATTRS_o_ai __vector unsigned short 9885 vec_cmpne_or_0_idx(__vector unsigned short __a, __vector unsigned short __b) { 9886 return __builtin_s390_vfenezh(__a, __b); 9887 } 9888 9889 static inline __ATTRS_o_ai __vector signed int 9890 vec_cmpne_or_0_idx(__vector signed int __a, __vector signed int __b) { 9891 return (__vector signed int) 9892 __builtin_s390_vfenezf((__vector unsigned int)__a, 9893 (__vector unsigned int)__b); 9894 } 9895 9896 static inline __ATTRS_o_ai __vector unsigned int 9897 vec_cmpne_or_0_idx(__vector __bool int __a, __vector __bool int __b) { 9898 return __builtin_s390_vfenezf((__vector unsigned int)__a, 9899 (__vector unsigned int)__b); 9900 } 9901 9902 static inline __ATTRS_o_ai __vector unsigned int 9903 vec_cmpne_or_0_idx(__vector unsigned int __a, __vector unsigned int __b) { 9904 return __builtin_s390_vfenezf(__a, __b); 9905 } 9906 9907 /*-- vec_cmpne_or_0_idx_cc --------------------------------------------------*/ 9908 9909 static inline __ATTRS_o_ai __vector signed char 9910 vec_cmpne_or_0_idx_cc(__vector signed char __a, __vector signed char __b, 9911 int *__cc) { 9912 return (__vector signed char) 9913 __builtin_s390_vfenezbs((__vector unsigned char)__a, 9914 (__vector unsigned char)__b, __cc); 9915 } 9916 9917 static inline __ATTRS_o_ai __vector unsigned char 9918 vec_cmpne_or_0_idx_cc(__vector __bool char __a, __vector __bool char __b, 9919 int *__cc) { 9920 return __builtin_s390_vfenezbs((__vector unsigned char)__a, 9921 (__vector unsigned char)__b, __cc); 9922 } 9923 9924 static inline __ATTRS_o_ai __vector unsigned char 9925 vec_cmpne_or_0_idx_cc(__vector unsigned char __a, __vector unsigned char __b, 9926 int *__cc) { 9927 return __builtin_s390_vfenezbs(__a, __b, __cc); 9928 } 9929 9930 static inline __ATTRS_o_ai __vector signed short 9931 vec_cmpne_or_0_idx_cc(__vector signed short __a, __vector signed short __b, 9932 int *__cc) { 9933 return (__vector signed short) 9934 __builtin_s390_vfenezhs((__vector unsigned short)__a, 9935 (__vector unsigned short)__b, __cc); 9936 } 9937 9938 static inline __ATTRS_o_ai __vector unsigned short 9939 vec_cmpne_or_0_idx_cc(__vector __bool short __a, __vector __bool short __b, 9940 int *__cc) { 9941 return __builtin_s390_vfenezhs((__vector unsigned short)__a, 9942 (__vector unsigned short)__b, __cc); 9943 } 9944 9945 static inline __ATTRS_o_ai __vector unsigned short 9946 vec_cmpne_or_0_idx_cc(__vector unsigned short __a, __vector unsigned short __b, 9947 int *__cc) { 9948 return __builtin_s390_vfenezhs(__a, __b, __cc); 9949 } 9950 9951 static inline __ATTRS_o_ai __vector signed int 9952 vec_cmpne_or_0_idx_cc(__vector signed int __a, __vector signed int __b, 9953 int *__cc) { 9954 return (__vector signed int) 9955 __builtin_s390_vfenezfs((__vector unsigned int)__a, 9956 (__vector unsigned int)__b, __cc); 9957 } 9958 9959 static inline __ATTRS_o_ai __vector unsigned int 9960 vec_cmpne_or_0_idx_cc(__vector __bool int __a, __vector __bool int __b, 9961 int *__cc) { 9962 return __builtin_s390_vfenezfs((__vector unsigned int)__a, 9963 (__vector unsigned int)__b, __cc); 9964 } 9965 9966 static inline __ATTRS_o_ai __vector unsigned int 9967 vec_cmpne_or_0_idx_cc(__vector unsigned int __a, __vector unsigned int __b, 9968 int *__cc) { 9969 return __builtin_s390_vfenezfs(__a, __b, __cc); 9970 } 9971 9972 /*-- vec_cmprg --------------------------------------------------------------*/ 9973 9974 static inline __ATTRS_o_ai __vector __bool char 9975 vec_cmprg(__vector unsigned char __a, __vector unsigned char __b, 9976 __vector unsigned char __c) { 9977 return (__vector __bool char)__builtin_s390_vstrcb(__a, __b, __c, 4); 9978 } 9979 9980 static inline __ATTRS_o_ai __vector __bool short 9981 vec_cmprg(__vector unsigned short __a, __vector unsigned short __b, 9982 __vector unsigned short __c) { 9983 return (__vector __bool short)__builtin_s390_vstrch(__a, __b, __c, 4); 9984 } 9985 9986 static inline __ATTRS_o_ai __vector __bool int 9987 vec_cmprg(__vector unsigned int __a, __vector unsigned int __b, 9988 __vector unsigned int __c) { 9989 return (__vector __bool int)__builtin_s390_vstrcf(__a, __b, __c, 4); 9990 } 9991 9992 /*-- vec_cmprg_cc -----------------------------------------------------------*/ 9993 9994 static inline __ATTRS_o_ai __vector __bool char 9995 vec_cmprg_cc(__vector unsigned char __a, __vector unsigned char __b, 9996 __vector unsigned char __c, int *__cc) { 9997 return (__vector __bool char)__builtin_s390_vstrcbs(__a, __b, __c, 4, __cc); 9998 } 9999 10000 static inline __ATTRS_o_ai __vector __bool short 10001 vec_cmprg_cc(__vector unsigned short __a, __vector unsigned short __b, 10002 __vector unsigned short __c, int *__cc) { 10003 return (__vector __bool short)__builtin_s390_vstrchs(__a, __b, __c, 4, __cc); 10004 } 10005 10006 static inline __ATTRS_o_ai __vector __bool int 10007 vec_cmprg_cc(__vector unsigned int __a, __vector unsigned int __b, 10008 __vector unsigned int __c, int *__cc) { 10009 return (__vector __bool int)__builtin_s390_vstrcfs(__a, __b, __c, 4, __cc); 10010 } 10011 10012 /*-- vec_cmprg_idx ----------------------------------------------------------*/ 10013 10014 static inline __ATTRS_o_ai __vector unsigned char 10015 vec_cmprg_idx(__vector unsigned char __a, __vector unsigned char __b, 10016 __vector unsigned char __c) { 10017 return __builtin_s390_vstrcb(__a, __b, __c, 0); 10018 } 10019 10020 static inline __ATTRS_o_ai __vector unsigned short 10021 vec_cmprg_idx(__vector unsigned short __a, __vector unsigned short __b, 10022 __vector unsigned short __c) { 10023 return __builtin_s390_vstrch(__a, __b, __c, 0); 10024 } 10025 10026 static inline __ATTRS_o_ai __vector unsigned int 10027 vec_cmprg_idx(__vector unsigned int __a, __vector unsigned int __b, 10028 __vector unsigned int __c) { 10029 return __builtin_s390_vstrcf(__a, __b, __c, 0); 10030 } 10031 10032 /*-- vec_cmprg_idx_cc -------------------------------------------------------*/ 10033 10034 static inline __ATTRS_o_ai __vector unsigned char 10035 vec_cmprg_idx_cc(__vector unsigned char __a, __vector unsigned char __b, 10036 __vector unsigned char __c, int *__cc) { 10037 return __builtin_s390_vstrcbs(__a, __b, __c, 0, __cc); 10038 } 10039 10040 static inline __ATTRS_o_ai __vector unsigned short 10041 vec_cmprg_idx_cc(__vector unsigned short __a, __vector unsigned short __b, 10042 __vector unsigned short __c, int *__cc) { 10043 return __builtin_s390_vstrchs(__a, __b, __c, 0, __cc); 10044 } 10045 10046 static inline __ATTRS_o_ai __vector unsigned int 10047 vec_cmprg_idx_cc(__vector unsigned int __a, __vector unsigned int __b, 10048 __vector unsigned int __c, int *__cc) { 10049 return __builtin_s390_vstrcfs(__a, __b, __c, 0, __cc); 10050 } 10051 10052 /*-- vec_cmprg_or_0_idx -----------------------------------------------------*/ 10053 10054 static inline __ATTRS_o_ai __vector unsigned char 10055 vec_cmprg_or_0_idx(__vector unsigned char __a, __vector unsigned char __b, 10056 __vector unsigned char __c) { 10057 return __builtin_s390_vstrczb(__a, __b, __c, 0); 10058 } 10059 10060 static inline __ATTRS_o_ai __vector unsigned short 10061 vec_cmprg_or_0_idx(__vector unsigned short __a, __vector unsigned short __b, 10062 __vector unsigned short __c) { 10063 return __builtin_s390_vstrczh(__a, __b, __c, 0); 10064 } 10065 10066 static inline __ATTRS_o_ai __vector unsigned int 10067 vec_cmprg_or_0_idx(__vector unsigned int __a, __vector unsigned int __b, 10068 __vector unsigned int __c) { 10069 return __builtin_s390_vstrczf(__a, __b, __c, 0); 10070 } 10071 10072 /*-- vec_cmprg_or_0_idx_cc --------------------------------------------------*/ 10073 10074 static inline __ATTRS_o_ai __vector unsigned char 10075 vec_cmprg_or_0_idx_cc(__vector unsigned char __a, __vector unsigned char __b, 10076 __vector unsigned char __c, int *__cc) { 10077 return __builtin_s390_vstrczbs(__a, __b, __c, 0, __cc); 10078 } 10079 10080 static inline __ATTRS_o_ai __vector unsigned short 10081 vec_cmprg_or_0_idx_cc(__vector unsigned short __a, __vector unsigned short __b, 10082 __vector unsigned short __c, int *__cc) { 10083 return __builtin_s390_vstrczhs(__a, __b, __c, 0, __cc); 10084 } 10085 10086 static inline __ATTRS_o_ai __vector unsigned int 10087 vec_cmprg_or_0_idx_cc(__vector unsigned int __a, __vector unsigned int __b, 10088 __vector unsigned int __c, int *__cc) { 10089 return __builtin_s390_vstrczfs(__a, __b, __c, 0, __cc); 10090 } 10091 10092 /*-- vec_cmpnrg -------------------------------------------------------------*/ 10093 10094 static inline __ATTRS_o_ai __vector __bool char 10095 vec_cmpnrg(__vector unsigned char __a, __vector unsigned char __b, 10096 __vector unsigned char __c) { 10097 return (__vector __bool char)__builtin_s390_vstrcb(__a, __b, __c, 12); 10098 } 10099 10100 static inline __ATTRS_o_ai __vector __bool short 10101 vec_cmpnrg(__vector unsigned short __a, __vector unsigned short __b, 10102 __vector unsigned short __c) { 10103 return (__vector __bool short)__builtin_s390_vstrch(__a, __b, __c, 12); 10104 } 10105 10106 static inline __ATTRS_o_ai __vector __bool int 10107 vec_cmpnrg(__vector unsigned int __a, __vector unsigned int __b, 10108 __vector unsigned int __c) { 10109 return (__vector __bool int)__builtin_s390_vstrcf(__a, __b, __c, 12); 10110 } 10111 10112 /*-- vec_cmpnrg_cc ----------------------------------------------------------*/ 10113 10114 static inline __ATTRS_o_ai __vector __bool char 10115 vec_cmpnrg_cc(__vector unsigned char __a, __vector unsigned char __b, 10116 __vector unsigned char __c, int *__cc) { 10117 return (__vector __bool char) 10118 __builtin_s390_vstrcbs(__a, __b, __c, 12, __cc); 10119 } 10120 10121 static inline __ATTRS_o_ai __vector __bool short 10122 vec_cmpnrg_cc(__vector unsigned short __a, __vector unsigned short __b, 10123 __vector unsigned short __c, int *__cc) { 10124 return (__vector __bool short) 10125 __builtin_s390_vstrchs(__a, __b, __c, 12, __cc); 10126 } 10127 10128 static inline __ATTRS_o_ai __vector __bool int 10129 vec_cmpnrg_cc(__vector unsigned int __a, __vector unsigned int __b, 10130 __vector unsigned int __c, int *__cc) { 10131 return (__vector __bool int) 10132 __builtin_s390_vstrcfs(__a, __b, __c, 12, __cc); 10133 } 10134 10135 /*-- vec_cmpnrg_idx ---------------------------------------------------------*/ 10136 10137 static inline __ATTRS_o_ai __vector unsigned char 10138 vec_cmpnrg_idx(__vector unsigned char __a, __vector unsigned char __b, 10139 __vector unsigned char __c) { 10140 return __builtin_s390_vstrcb(__a, __b, __c, 8); 10141 } 10142 10143 static inline __ATTRS_o_ai __vector unsigned short 10144 vec_cmpnrg_idx(__vector unsigned short __a, __vector unsigned short __b, 10145 __vector unsigned short __c) { 10146 return __builtin_s390_vstrch(__a, __b, __c, 8); 10147 } 10148 10149 static inline __ATTRS_o_ai __vector unsigned int 10150 vec_cmpnrg_idx(__vector unsigned int __a, __vector unsigned int __b, 10151 __vector unsigned int __c) { 10152 return __builtin_s390_vstrcf(__a, __b, __c, 8); 10153 } 10154 10155 /*-- vec_cmpnrg_idx_cc ------------------------------------------------------*/ 10156 10157 static inline __ATTRS_o_ai __vector unsigned char 10158 vec_cmpnrg_idx_cc(__vector unsigned char __a, __vector unsigned char __b, 10159 __vector unsigned char __c, int *__cc) { 10160 return __builtin_s390_vstrcbs(__a, __b, __c, 8, __cc); 10161 } 10162 10163 static inline __ATTRS_o_ai __vector unsigned short 10164 vec_cmpnrg_idx_cc(__vector unsigned short __a, __vector unsigned short __b, 10165 __vector unsigned short __c, int *__cc) { 10166 return __builtin_s390_vstrchs(__a, __b, __c, 8, __cc); 10167 } 10168 10169 static inline __ATTRS_o_ai __vector unsigned int 10170 vec_cmpnrg_idx_cc(__vector unsigned int __a, __vector unsigned int __b, 10171 __vector unsigned int __c, int *__cc) { 10172 return __builtin_s390_vstrcfs(__a, __b, __c, 8, __cc); 10173 } 10174 10175 /*-- vec_cmpnrg_or_0_idx ----------------------------------------------------*/ 10176 10177 static inline __ATTRS_o_ai __vector unsigned char 10178 vec_cmpnrg_or_0_idx(__vector unsigned char __a, __vector unsigned char __b, 10179 __vector unsigned char __c) { 10180 return __builtin_s390_vstrczb(__a, __b, __c, 8); 10181 } 10182 10183 static inline __ATTRS_o_ai __vector unsigned short 10184 vec_cmpnrg_or_0_idx(__vector unsigned short __a, __vector unsigned short __b, 10185 __vector unsigned short __c) { 10186 return __builtin_s390_vstrczh(__a, __b, __c, 8); 10187 } 10188 10189 static inline __ATTRS_o_ai __vector unsigned int 10190 vec_cmpnrg_or_0_idx(__vector unsigned int __a, __vector unsigned int __b, 10191 __vector unsigned int __c) { 10192 return __builtin_s390_vstrczf(__a, __b, __c, 8); 10193 } 10194 10195 /*-- vec_cmpnrg_or_0_idx_cc -------------------------------------------------*/ 10196 10197 static inline __ATTRS_o_ai __vector unsigned char 10198 vec_cmpnrg_or_0_idx_cc(__vector unsigned char __a, 10199 __vector unsigned char __b, 10200 __vector unsigned char __c, int *__cc) { 10201 return __builtin_s390_vstrczbs(__a, __b, __c, 8, __cc); 10202 } 10203 10204 static inline __ATTRS_o_ai __vector unsigned short 10205 vec_cmpnrg_or_0_idx_cc(__vector unsigned short __a, 10206 __vector unsigned short __b, 10207 __vector unsigned short __c, int *__cc) { 10208 return __builtin_s390_vstrczhs(__a, __b, __c, 8, __cc); 10209 } 10210 10211 static inline __ATTRS_o_ai __vector unsigned int 10212 vec_cmpnrg_or_0_idx_cc(__vector unsigned int __a, 10213 __vector unsigned int __b, 10214 __vector unsigned int __c, int *__cc) { 10215 return __builtin_s390_vstrczfs(__a, __b, __c, 8, __cc); 10216 } 10217 10218 /*-- vec_find_any_eq --------------------------------------------------------*/ 10219 10220 static inline __ATTRS_o_ai __vector __bool char 10221 vec_find_any_eq(__vector signed char __a, __vector signed char __b) { 10222 return (__vector __bool char) 10223 __builtin_s390_vfaeb((__vector unsigned char)__a, 10224 (__vector unsigned char)__b, 4); 10225 } 10226 10227 static inline __ATTRS_o_ai __vector __bool char 10228 vec_find_any_eq(__vector __bool char __a, __vector __bool char __b) { 10229 return (__vector __bool char) 10230 __builtin_s390_vfaeb((__vector unsigned char)__a, 10231 (__vector unsigned char)__b, 4); 10232 } 10233 10234 static inline __ATTRS_o_ai __vector __bool char 10235 vec_find_any_eq(__vector unsigned char __a, __vector unsigned char __b) { 10236 return (__vector __bool char)__builtin_s390_vfaeb(__a, __b, 4); 10237 } 10238 10239 static inline __ATTRS_o_ai __vector __bool short 10240 vec_find_any_eq(__vector signed short __a, __vector signed short __b) { 10241 return (__vector __bool short) 10242 __builtin_s390_vfaeh((__vector unsigned short)__a, 10243 (__vector unsigned short)__b, 4); 10244 } 10245 10246 static inline __ATTRS_o_ai __vector __bool short 10247 vec_find_any_eq(__vector __bool short __a, __vector __bool short __b) { 10248 return (__vector __bool short) 10249 __builtin_s390_vfaeh((__vector unsigned short)__a, 10250 (__vector unsigned short)__b, 4); 10251 } 10252 10253 static inline __ATTRS_o_ai __vector __bool short 10254 vec_find_any_eq(__vector unsigned short __a, __vector unsigned short __b) { 10255 return (__vector __bool short)__builtin_s390_vfaeh(__a, __b, 4); 10256 } 10257 10258 static inline __ATTRS_o_ai __vector __bool int 10259 vec_find_any_eq(__vector signed int __a, __vector signed int __b) { 10260 return (__vector __bool int) 10261 __builtin_s390_vfaef((__vector unsigned int)__a, 10262 (__vector unsigned int)__b, 4); 10263 } 10264 10265 static inline __ATTRS_o_ai __vector __bool int 10266 vec_find_any_eq(__vector __bool int __a, __vector __bool int __b) { 10267 return (__vector __bool int) 10268 __builtin_s390_vfaef((__vector unsigned int)__a, 10269 (__vector unsigned int)__b, 4); 10270 } 10271 10272 static inline __ATTRS_o_ai __vector __bool int 10273 vec_find_any_eq(__vector unsigned int __a, __vector unsigned int __b) { 10274 return (__vector __bool int)__builtin_s390_vfaef(__a, __b, 4); 10275 } 10276 10277 /*-- vec_find_any_eq_cc -----------------------------------------------------*/ 10278 10279 static inline __ATTRS_o_ai __vector __bool char 10280 vec_find_any_eq_cc(__vector signed char __a, __vector signed char __b, 10281 int *__cc) { 10282 return (__vector __bool char) 10283 __builtin_s390_vfaebs((__vector unsigned char)__a, 10284 (__vector unsigned char)__b, 4, __cc); 10285 } 10286 10287 static inline __ATTRS_o_ai __vector __bool char 10288 vec_find_any_eq_cc(__vector __bool char __a, __vector __bool char __b, 10289 int *__cc) { 10290 return (__vector __bool char) 10291 __builtin_s390_vfaebs((__vector unsigned char)__a, 10292 (__vector unsigned char)__b, 4, __cc); 10293 } 10294 10295 static inline __ATTRS_o_ai __vector __bool char 10296 vec_find_any_eq_cc(__vector unsigned char __a, __vector unsigned char __b, 10297 int *__cc) { 10298 return (__vector __bool char)__builtin_s390_vfaebs(__a, __b, 4, __cc); 10299 } 10300 10301 static inline __ATTRS_o_ai __vector __bool short 10302 vec_find_any_eq_cc(__vector signed short __a, __vector signed short __b, 10303 int *__cc) { 10304 return (__vector __bool short) 10305 __builtin_s390_vfaehs((__vector unsigned short)__a, 10306 (__vector unsigned short)__b, 4, __cc); 10307 } 10308 10309 static inline __ATTRS_o_ai __vector __bool short 10310 vec_find_any_eq_cc(__vector __bool short __a, __vector __bool short __b, 10311 int *__cc) { 10312 return (__vector __bool short) 10313 __builtin_s390_vfaehs((__vector unsigned short)__a, 10314 (__vector unsigned short)__b, 4, __cc); 10315 } 10316 10317 static inline __ATTRS_o_ai __vector __bool short 10318 vec_find_any_eq_cc(__vector unsigned short __a, __vector unsigned short __b, 10319 int *__cc) { 10320 return (__vector __bool short)__builtin_s390_vfaehs(__a, __b, 4, __cc); 10321 } 10322 10323 static inline __ATTRS_o_ai __vector __bool int 10324 vec_find_any_eq_cc(__vector signed int __a, __vector signed int __b, 10325 int *__cc) { 10326 return (__vector __bool int) 10327 __builtin_s390_vfaefs((__vector unsigned int)__a, 10328 (__vector unsigned int)__b, 4, __cc); 10329 } 10330 10331 static inline __ATTRS_o_ai __vector __bool int 10332 vec_find_any_eq_cc(__vector __bool int __a, __vector __bool int __b, 10333 int *__cc) { 10334 return (__vector __bool int) 10335 __builtin_s390_vfaefs((__vector unsigned int)__a, 10336 (__vector unsigned int)__b, 4, __cc); 10337 } 10338 10339 static inline __ATTRS_o_ai __vector __bool int 10340 vec_find_any_eq_cc(__vector unsigned int __a, __vector unsigned int __b, 10341 int *__cc) { 10342 return (__vector __bool int)__builtin_s390_vfaefs(__a, __b, 4, __cc); 10343 } 10344 10345 /*-- vec_find_any_eq_idx ----------------------------------------------------*/ 10346 10347 static inline __ATTRS_o_ai __vector signed char 10348 vec_find_any_eq_idx(__vector signed char __a, __vector signed char __b) { 10349 return (__vector signed char) 10350 __builtin_s390_vfaeb((__vector unsigned char)__a, 10351 (__vector unsigned char)__b, 0); 10352 } 10353 10354 static inline __ATTRS_o_ai __vector unsigned char 10355 vec_find_any_eq_idx(__vector __bool char __a, __vector __bool char __b) { 10356 return __builtin_s390_vfaeb((__vector unsigned char)__a, 10357 (__vector unsigned char)__b, 0); 10358 } 10359 10360 static inline __ATTRS_o_ai __vector unsigned char 10361 vec_find_any_eq_idx(__vector unsigned char __a, __vector unsigned char __b) { 10362 return __builtin_s390_vfaeb(__a, __b, 0); 10363 } 10364 10365 static inline __ATTRS_o_ai __vector signed short 10366 vec_find_any_eq_idx(__vector signed short __a, __vector signed short __b) { 10367 return (__vector signed short) 10368 __builtin_s390_vfaeh((__vector unsigned short)__a, 10369 (__vector unsigned short)__b, 0); 10370 } 10371 10372 static inline __ATTRS_o_ai __vector unsigned short 10373 vec_find_any_eq_idx(__vector __bool short __a, __vector __bool short __b) { 10374 return __builtin_s390_vfaeh((__vector unsigned short)__a, 10375 (__vector unsigned short)__b, 0); 10376 } 10377 10378 static inline __ATTRS_o_ai __vector unsigned short 10379 vec_find_any_eq_idx(__vector unsigned short __a, __vector unsigned short __b) { 10380 return __builtin_s390_vfaeh(__a, __b, 0); 10381 } 10382 10383 static inline __ATTRS_o_ai __vector signed int 10384 vec_find_any_eq_idx(__vector signed int __a, __vector signed int __b) { 10385 return (__vector signed int) 10386 __builtin_s390_vfaef((__vector unsigned int)__a, 10387 (__vector unsigned int)__b, 0); 10388 } 10389 10390 static inline __ATTRS_o_ai __vector unsigned int 10391 vec_find_any_eq_idx(__vector __bool int __a, __vector __bool int __b) { 10392 return __builtin_s390_vfaef((__vector unsigned int)__a, 10393 (__vector unsigned int)__b, 0); 10394 } 10395 10396 static inline __ATTRS_o_ai __vector unsigned int 10397 vec_find_any_eq_idx(__vector unsigned int __a, __vector unsigned int __b) { 10398 return __builtin_s390_vfaef(__a, __b, 0); 10399 } 10400 10401 /*-- vec_find_any_eq_idx_cc -------------------------------------------------*/ 10402 10403 static inline __ATTRS_o_ai __vector signed char 10404 vec_find_any_eq_idx_cc(__vector signed char __a, 10405 __vector signed char __b, int *__cc) { 10406 return (__vector signed char) 10407 __builtin_s390_vfaebs((__vector unsigned char)__a, 10408 (__vector unsigned char)__b, 0, __cc); 10409 } 10410 10411 static inline __ATTRS_o_ai __vector unsigned char 10412 vec_find_any_eq_idx_cc(__vector __bool char __a, 10413 __vector __bool char __b, int *__cc) { 10414 return __builtin_s390_vfaebs((__vector unsigned char)__a, 10415 (__vector unsigned char)__b, 0, __cc); 10416 } 10417 10418 static inline __ATTRS_o_ai __vector unsigned char 10419 vec_find_any_eq_idx_cc(__vector unsigned char __a, 10420 __vector unsigned char __b, int *__cc) { 10421 return __builtin_s390_vfaebs(__a, __b, 0, __cc); 10422 } 10423 10424 static inline __ATTRS_o_ai __vector signed short 10425 vec_find_any_eq_idx_cc(__vector signed short __a, 10426 __vector signed short __b, int *__cc) { 10427 return (__vector signed short) 10428 __builtin_s390_vfaehs((__vector unsigned short)__a, 10429 (__vector unsigned short)__b, 0, __cc); 10430 } 10431 10432 static inline __ATTRS_o_ai __vector unsigned short 10433 vec_find_any_eq_idx_cc(__vector __bool short __a, 10434 __vector __bool short __b, int *__cc) { 10435 return __builtin_s390_vfaehs((__vector unsigned short)__a, 10436 (__vector unsigned short)__b, 0, __cc); 10437 } 10438 10439 static inline __ATTRS_o_ai __vector unsigned short 10440 vec_find_any_eq_idx_cc(__vector unsigned short __a, 10441 __vector unsigned short __b, int *__cc) { 10442 return __builtin_s390_vfaehs(__a, __b, 0, __cc); 10443 } 10444 10445 static inline __ATTRS_o_ai __vector signed int 10446 vec_find_any_eq_idx_cc(__vector signed int __a, 10447 __vector signed int __b, int *__cc) { 10448 return (__vector signed int) 10449 __builtin_s390_vfaefs((__vector unsigned int)__a, 10450 (__vector unsigned int)__b, 0, __cc); 10451 } 10452 10453 static inline __ATTRS_o_ai __vector unsigned int 10454 vec_find_any_eq_idx_cc(__vector __bool int __a, 10455 __vector __bool int __b, int *__cc) { 10456 return __builtin_s390_vfaefs((__vector unsigned int)__a, 10457 (__vector unsigned int)__b, 0, __cc); 10458 } 10459 10460 static inline __ATTRS_o_ai __vector unsigned int 10461 vec_find_any_eq_idx_cc(__vector unsigned int __a, 10462 __vector unsigned int __b, int *__cc) { 10463 return __builtin_s390_vfaefs(__a, __b, 0, __cc); 10464 } 10465 10466 /*-- vec_find_any_eq_or_0_idx -----------------------------------------------*/ 10467 10468 static inline __ATTRS_o_ai __vector signed char 10469 vec_find_any_eq_or_0_idx(__vector signed char __a, 10470 __vector signed char __b) { 10471 return (__vector signed char) 10472 __builtin_s390_vfaezb((__vector unsigned char)__a, 10473 (__vector unsigned char)__b, 0); 10474 } 10475 10476 static inline __ATTRS_o_ai __vector unsigned char 10477 vec_find_any_eq_or_0_idx(__vector __bool char __a, 10478 __vector __bool char __b) { 10479 return __builtin_s390_vfaezb((__vector unsigned char)__a, 10480 (__vector unsigned char)__b, 0); 10481 } 10482 10483 static inline __ATTRS_o_ai __vector unsigned char 10484 vec_find_any_eq_or_0_idx(__vector unsigned char __a, 10485 __vector unsigned char __b) { 10486 return __builtin_s390_vfaezb(__a, __b, 0); 10487 } 10488 10489 static inline __ATTRS_o_ai __vector signed short 10490 vec_find_any_eq_or_0_idx(__vector signed short __a, 10491 __vector signed short __b) { 10492 return (__vector signed short) 10493 __builtin_s390_vfaezh((__vector unsigned short)__a, 10494 (__vector unsigned short)__b, 0); 10495 } 10496 10497 static inline __ATTRS_o_ai __vector unsigned short 10498 vec_find_any_eq_or_0_idx(__vector __bool short __a, 10499 __vector __bool short __b) { 10500 return __builtin_s390_vfaezh((__vector unsigned short)__a, 10501 (__vector unsigned short)__b, 0); 10502 } 10503 10504 static inline __ATTRS_o_ai __vector unsigned short 10505 vec_find_any_eq_or_0_idx(__vector unsigned short __a, 10506 __vector unsigned short __b) { 10507 return __builtin_s390_vfaezh(__a, __b, 0); 10508 } 10509 10510 static inline __ATTRS_o_ai __vector signed int 10511 vec_find_any_eq_or_0_idx(__vector signed int __a, 10512 __vector signed int __b) { 10513 return (__vector signed int) 10514 __builtin_s390_vfaezf((__vector unsigned int)__a, 10515 (__vector unsigned int)__b, 0); 10516 } 10517 10518 static inline __ATTRS_o_ai __vector unsigned int 10519 vec_find_any_eq_or_0_idx(__vector __bool int __a, 10520 __vector __bool int __b) { 10521 return __builtin_s390_vfaezf((__vector unsigned int)__a, 10522 (__vector unsigned int)__b, 0); 10523 } 10524 10525 static inline __ATTRS_o_ai __vector unsigned int 10526 vec_find_any_eq_or_0_idx(__vector unsigned int __a, 10527 __vector unsigned int __b) { 10528 return __builtin_s390_vfaezf(__a, __b, 0); 10529 } 10530 10531 /*-- vec_find_any_eq_or_0_idx_cc --------------------------------------------*/ 10532 10533 static inline __ATTRS_o_ai __vector signed char 10534 vec_find_any_eq_or_0_idx_cc(__vector signed char __a, 10535 __vector signed char __b, int *__cc) { 10536 return (__vector signed char) 10537 __builtin_s390_vfaezbs((__vector unsigned char)__a, 10538 (__vector unsigned char)__b, 0, __cc); 10539 } 10540 10541 static inline __ATTRS_o_ai __vector unsigned char 10542 vec_find_any_eq_or_0_idx_cc(__vector __bool char __a, 10543 __vector __bool char __b, int *__cc) { 10544 return __builtin_s390_vfaezbs((__vector unsigned char)__a, 10545 (__vector unsigned char)__b, 0, __cc); 10546 } 10547 10548 static inline __ATTRS_o_ai __vector unsigned char 10549 vec_find_any_eq_or_0_idx_cc(__vector unsigned char __a, 10550 __vector unsigned char __b, int *__cc) { 10551 return __builtin_s390_vfaezbs(__a, __b, 0, __cc); 10552 } 10553 10554 static inline __ATTRS_o_ai __vector signed short 10555 vec_find_any_eq_or_0_idx_cc(__vector signed short __a, 10556 __vector signed short __b, int *__cc) { 10557 return (__vector signed short) 10558 __builtin_s390_vfaezhs((__vector unsigned short)__a, 10559 (__vector unsigned short)__b, 0, __cc); 10560 } 10561 10562 static inline __ATTRS_o_ai __vector unsigned short 10563 vec_find_any_eq_or_0_idx_cc(__vector __bool short __a, 10564 __vector __bool short __b, int *__cc) { 10565 return __builtin_s390_vfaezhs((__vector unsigned short)__a, 10566 (__vector unsigned short)__b, 0, __cc); 10567 } 10568 10569 static inline __ATTRS_o_ai __vector unsigned short 10570 vec_find_any_eq_or_0_idx_cc(__vector unsigned short __a, 10571 __vector unsigned short __b, int *__cc) { 10572 return __builtin_s390_vfaezhs(__a, __b, 0, __cc); 10573 } 10574 10575 static inline __ATTRS_o_ai __vector signed int 10576 vec_find_any_eq_or_0_idx_cc(__vector signed int __a, 10577 __vector signed int __b, int *__cc) { 10578 return (__vector signed int) 10579 __builtin_s390_vfaezfs((__vector unsigned int)__a, 10580 (__vector unsigned int)__b, 0, __cc); 10581 } 10582 10583 static inline __ATTRS_o_ai __vector unsigned int 10584 vec_find_any_eq_or_0_idx_cc(__vector __bool int __a, 10585 __vector __bool int __b, int *__cc) { 10586 return __builtin_s390_vfaezfs((__vector unsigned int)__a, 10587 (__vector unsigned int)__b, 0, __cc); 10588 } 10589 10590 static inline __ATTRS_o_ai __vector unsigned int 10591 vec_find_any_eq_or_0_idx_cc(__vector unsigned int __a, 10592 __vector unsigned int __b, int *__cc) { 10593 return __builtin_s390_vfaezfs(__a, __b, 0, __cc); 10594 } 10595 10596 /*-- vec_find_any_ne --------------------------------------------------------*/ 10597 10598 static inline __ATTRS_o_ai __vector __bool char 10599 vec_find_any_ne(__vector signed char __a, __vector signed char __b) { 10600 return (__vector __bool char) 10601 __builtin_s390_vfaeb((__vector unsigned char)__a, 10602 (__vector unsigned char)__b, 12); 10603 } 10604 10605 static inline __ATTRS_o_ai __vector __bool char 10606 vec_find_any_ne(__vector __bool char __a, __vector __bool char __b) { 10607 return (__vector __bool char) 10608 __builtin_s390_vfaeb((__vector unsigned char)__a, 10609 (__vector unsigned char)__b, 12); 10610 } 10611 10612 static inline __ATTRS_o_ai __vector __bool char 10613 vec_find_any_ne(__vector unsigned char __a, __vector unsigned char __b) { 10614 return (__vector __bool char)__builtin_s390_vfaeb(__a, __b, 12); 10615 } 10616 10617 static inline __ATTRS_o_ai __vector __bool short 10618 vec_find_any_ne(__vector signed short __a, __vector signed short __b) { 10619 return (__vector __bool short) 10620 __builtin_s390_vfaeh((__vector unsigned short)__a, 10621 (__vector unsigned short)__b, 12); 10622 } 10623 10624 static inline __ATTRS_o_ai __vector __bool short 10625 vec_find_any_ne(__vector __bool short __a, __vector __bool short __b) { 10626 return (__vector __bool short) 10627 __builtin_s390_vfaeh((__vector unsigned short)__a, 10628 (__vector unsigned short)__b, 12); 10629 } 10630 10631 static inline __ATTRS_o_ai __vector __bool short 10632 vec_find_any_ne(__vector unsigned short __a, __vector unsigned short __b) { 10633 return (__vector __bool short)__builtin_s390_vfaeh(__a, __b, 12); 10634 } 10635 10636 static inline __ATTRS_o_ai __vector __bool int 10637 vec_find_any_ne(__vector signed int __a, __vector signed int __b) { 10638 return (__vector __bool int) 10639 __builtin_s390_vfaef((__vector unsigned int)__a, 10640 (__vector unsigned int)__b, 12); 10641 } 10642 10643 static inline __ATTRS_o_ai __vector __bool int 10644 vec_find_any_ne(__vector __bool int __a, __vector __bool int __b) { 10645 return (__vector __bool int) 10646 __builtin_s390_vfaef((__vector unsigned int)__a, 10647 (__vector unsigned int)__b, 12); 10648 } 10649 10650 static inline __ATTRS_o_ai __vector __bool int 10651 vec_find_any_ne(__vector unsigned int __a, __vector unsigned int __b) { 10652 return (__vector __bool int)__builtin_s390_vfaef(__a, __b, 12); 10653 } 10654 10655 /*-- vec_find_any_ne_cc -----------------------------------------------------*/ 10656 10657 static inline __ATTRS_o_ai __vector __bool char 10658 vec_find_any_ne_cc(__vector signed char __a, 10659 __vector signed char __b, int *__cc) { 10660 return (__vector __bool char) 10661 __builtin_s390_vfaebs((__vector unsigned char)__a, 10662 (__vector unsigned char)__b, 12, __cc); 10663 } 10664 10665 static inline __ATTRS_o_ai __vector __bool char 10666 vec_find_any_ne_cc(__vector __bool char __a, 10667 __vector __bool char __b, int *__cc) { 10668 return (__vector __bool char) 10669 __builtin_s390_vfaebs((__vector unsigned char)__a, 10670 (__vector unsigned char)__b, 12, __cc); 10671 } 10672 10673 static inline __ATTRS_o_ai __vector __bool char 10674 vec_find_any_ne_cc(__vector unsigned char __a, 10675 __vector unsigned char __b, int *__cc) { 10676 return (__vector __bool char)__builtin_s390_vfaebs(__a, __b, 12, __cc); 10677 } 10678 10679 static inline __ATTRS_o_ai __vector __bool short 10680 vec_find_any_ne_cc(__vector signed short __a, 10681 __vector signed short __b, int *__cc) { 10682 return (__vector __bool short) 10683 __builtin_s390_vfaehs((__vector unsigned short)__a, 10684 (__vector unsigned short)__b, 12, __cc); 10685 } 10686 10687 static inline __ATTRS_o_ai __vector __bool short 10688 vec_find_any_ne_cc(__vector __bool short __a, 10689 __vector __bool short __b, int *__cc) { 10690 return (__vector __bool short) 10691 __builtin_s390_vfaehs((__vector unsigned short)__a, 10692 (__vector unsigned short)__b, 12, __cc); 10693 } 10694 10695 static inline __ATTRS_o_ai __vector __bool short 10696 vec_find_any_ne_cc(__vector unsigned short __a, 10697 __vector unsigned short __b, int *__cc) { 10698 return (__vector __bool short)__builtin_s390_vfaehs(__a, __b, 12, __cc); 10699 } 10700 10701 static inline __ATTRS_o_ai __vector __bool int 10702 vec_find_any_ne_cc(__vector signed int __a, 10703 __vector signed int __b, int *__cc) { 10704 return (__vector __bool int) 10705 __builtin_s390_vfaefs((__vector unsigned int)__a, 10706 (__vector unsigned int)__b, 12, __cc); 10707 } 10708 10709 static inline __ATTRS_o_ai __vector __bool int 10710 vec_find_any_ne_cc(__vector __bool int __a, 10711 __vector __bool int __b, int *__cc) { 10712 return (__vector __bool int) 10713 __builtin_s390_vfaefs((__vector unsigned int)__a, 10714 (__vector unsigned int)__b, 12, __cc); 10715 } 10716 10717 static inline __ATTRS_o_ai __vector __bool int 10718 vec_find_any_ne_cc(__vector unsigned int __a, 10719 __vector unsigned int __b, int *__cc) { 10720 return (__vector __bool int)__builtin_s390_vfaefs(__a, __b, 12, __cc); 10721 } 10722 10723 /*-- vec_find_any_ne_idx ----------------------------------------------------*/ 10724 10725 static inline __ATTRS_o_ai __vector signed char 10726 vec_find_any_ne_idx(__vector signed char __a, __vector signed char __b) { 10727 return (__vector signed char) 10728 __builtin_s390_vfaeb((__vector unsigned char)__a, 10729 (__vector unsigned char)__b, 8); 10730 } 10731 10732 static inline __ATTRS_o_ai __vector unsigned char 10733 vec_find_any_ne_idx(__vector __bool char __a, __vector __bool char __b) { 10734 return __builtin_s390_vfaeb((__vector unsigned char)__a, 10735 (__vector unsigned char)__b, 8); 10736 } 10737 10738 static inline __ATTRS_o_ai __vector unsigned char 10739 vec_find_any_ne_idx(__vector unsigned char __a, __vector unsigned char __b) { 10740 return __builtin_s390_vfaeb(__a, __b, 8); 10741 } 10742 10743 static inline __ATTRS_o_ai __vector signed short 10744 vec_find_any_ne_idx(__vector signed short __a, __vector signed short __b) { 10745 return (__vector signed short) 10746 __builtin_s390_vfaeh((__vector unsigned short)__a, 10747 (__vector unsigned short)__b, 8); 10748 } 10749 10750 static inline __ATTRS_o_ai __vector unsigned short 10751 vec_find_any_ne_idx(__vector __bool short __a, __vector __bool short __b) { 10752 return __builtin_s390_vfaeh((__vector unsigned short)__a, 10753 (__vector unsigned short)__b, 8); 10754 } 10755 10756 static inline __ATTRS_o_ai __vector unsigned short 10757 vec_find_any_ne_idx(__vector unsigned short __a, __vector unsigned short __b) { 10758 return __builtin_s390_vfaeh(__a, __b, 8); 10759 } 10760 10761 static inline __ATTRS_o_ai __vector signed int 10762 vec_find_any_ne_idx(__vector signed int __a, __vector signed int __b) { 10763 return (__vector signed int) 10764 __builtin_s390_vfaef((__vector unsigned int)__a, 10765 (__vector unsigned int)__b, 8); 10766 } 10767 10768 static inline __ATTRS_o_ai __vector unsigned int 10769 vec_find_any_ne_idx(__vector __bool int __a, __vector __bool int __b) { 10770 return __builtin_s390_vfaef((__vector unsigned int)__a, 10771 (__vector unsigned int)__b, 8); 10772 } 10773 10774 static inline __ATTRS_o_ai __vector unsigned int 10775 vec_find_any_ne_idx(__vector unsigned int __a, __vector unsigned int __b) { 10776 return __builtin_s390_vfaef(__a, __b, 8); 10777 } 10778 10779 /*-- vec_find_any_ne_idx_cc -------------------------------------------------*/ 10780 10781 static inline __ATTRS_o_ai __vector signed char 10782 vec_find_any_ne_idx_cc(__vector signed char __a, 10783 __vector signed char __b, int *__cc) { 10784 return (__vector signed char) 10785 __builtin_s390_vfaebs((__vector unsigned char)__a, 10786 (__vector unsigned char)__b, 8, __cc); 10787 } 10788 10789 static inline __ATTRS_o_ai __vector unsigned char 10790 vec_find_any_ne_idx_cc(__vector __bool char __a, 10791 __vector __bool char __b, int *__cc) { 10792 return __builtin_s390_vfaebs((__vector unsigned char)__a, 10793 (__vector unsigned char)__b, 8, __cc); 10794 } 10795 10796 static inline __ATTRS_o_ai __vector unsigned char 10797 vec_find_any_ne_idx_cc(__vector unsigned char __a, 10798 __vector unsigned char __b, 10799 int *__cc) { 10800 return __builtin_s390_vfaebs(__a, __b, 8, __cc); 10801 } 10802 10803 static inline __ATTRS_o_ai __vector signed short 10804 vec_find_any_ne_idx_cc(__vector signed short __a, 10805 __vector signed short __b, int *__cc) { 10806 return (__vector signed short) 10807 __builtin_s390_vfaehs((__vector unsigned short)__a, 10808 (__vector unsigned short)__b, 8, __cc); 10809 } 10810 10811 static inline __ATTRS_o_ai __vector unsigned short 10812 vec_find_any_ne_idx_cc(__vector __bool short __a, 10813 __vector __bool short __b, int *__cc) { 10814 return __builtin_s390_vfaehs((__vector unsigned short)__a, 10815 (__vector unsigned short)__b, 8, __cc); 10816 } 10817 10818 static inline __ATTRS_o_ai __vector unsigned short 10819 vec_find_any_ne_idx_cc(__vector unsigned short __a, 10820 __vector unsigned short __b, int *__cc) { 10821 return __builtin_s390_vfaehs(__a, __b, 8, __cc); 10822 } 10823 10824 static inline __ATTRS_o_ai __vector signed int 10825 vec_find_any_ne_idx_cc(__vector signed int __a, 10826 __vector signed int __b, int *__cc) { 10827 return (__vector signed int) 10828 __builtin_s390_vfaefs((__vector unsigned int)__a, 10829 (__vector unsigned int)__b, 8, __cc); 10830 } 10831 10832 static inline __ATTRS_o_ai __vector unsigned int 10833 vec_find_any_ne_idx_cc(__vector __bool int __a, 10834 __vector __bool int __b, int *__cc) { 10835 return __builtin_s390_vfaefs((__vector unsigned int)__a, 10836 (__vector unsigned int)__b, 8, __cc); 10837 } 10838 10839 static inline __ATTRS_o_ai __vector unsigned int 10840 vec_find_any_ne_idx_cc(__vector unsigned int __a, 10841 __vector unsigned int __b, int *__cc) { 10842 return __builtin_s390_vfaefs(__a, __b, 8, __cc); 10843 } 10844 10845 /*-- vec_find_any_ne_or_0_idx -----------------------------------------------*/ 10846 10847 static inline __ATTRS_o_ai __vector signed char 10848 vec_find_any_ne_or_0_idx(__vector signed char __a, 10849 __vector signed char __b) { 10850 return (__vector signed char) 10851 __builtin_s390_vfaezb((__vector unsigned char)__a, 10852 (__vector unsigned char)__b, 8); 10853 } 10854 10855 static inline __ATTRS_o_ai __vector unsigned char 10856 vec_find_any_ne_or_0_idx(__vector __bool char __a, 10857 __vector __bool char __b) { 10858 return __builtin_s390_vfaezb((__vector unsigned char)__a, 10859 (__vector unsigned char)__b, 8); 10860 } 10861 10862 static inline __ATTRS_o_ai __vector unsigned char 10863 vec_find_any_ne_or_0_idx(__vector unsigned char __a, 10864 __vector unsigned char __b) { 10865 return __builtin_s390_vfaezb(__a, __b, 8); 10866 } 10867 10868 static inline __ATTRS_o_ai __vector signed short 10869 vec_find_any_ne_or_0_idx(__vector signed short __a, 10870 __vector signed short __b) { 10871 return (__vector signed short) 10872 __builtin_s390_vfaezh((__vector unsigned short)__a, 10873 (__vector unsigned short)__b, 8); 10874 } 10875 10876 static inline __ATTRS_o_ai __vector unsigned short 10877 vec_find_any_ne_or_0_idx(__vector __bool short __a, 10878 __vector __bool short __b) { 10879 return __builtin_s390_vfaezh((__vector unsigned short)__a, 10880 (__vector unsigned short)__b, 8); 10881 } 10882 10883 static inline __ATTRS_o_ai __vector unsigned short 10884 vec_find_any_ne_or_0_idx(__vector unsigned short __a, 10885 __vector unsigned short __b) { 10886 return __builtin_s390_vfaezh(__a, __b, 8); 10887 } 10888 10889 static inline __ATTRS_o_ai __vector signed int 10890 vec_find_any_ne_or_0_idx(__vector signed int __a, 10891 __vector signed int __b) { 10892 return (__vector signed int) 10893 __builtin_s390_vfaezf((__vector unsigned int)__a, 10894 (__vector unsigned int)__b, 8); 10895 } 10896 10897 static inline __ATTRS_o_ai __vector unsigned int 10898 vec_find_any_ne_or_0_idx(__vector __bool int __a, 10899 __vector __bool int __b) { 10900 return __builtin_s390_vfaezf((__vector unsigned int)__a, 10901 (__vector unsigned int)__b, 8); 10902 } 10903 10904 static inline __ATTRS_o_ai __vector unsigned int 10905 vec_find_any_ne_or_0_idx(__vector unsigned int __a, 10906 __vector unsigned int __b) { 10907 return __builtin_s390_vfaezf(__a, __b, 8); 10908 } 10909 10910 /*-- vec_find_any_ne_or_0_idx_cc --------------------------------------------*/ 10911 10912 static inline __ATTRS_o_ai __vector signed char 10913 vec_find_any_ne_or_0_idx_cc(__vector signed char __a, 10914 __vector signed char __b, int *__cc) { 10915 return (__vector signed char) 10916 __builtin_s390_vfaezbs((__vector unsigned char)__a, 10917 (__vector unsigned char)__b, 8, __cc); 10918 } 10919 10920 static inline __ATTRS_o_ai __vector unsigned char 10921 vec_find_any_ne_or_0_idx_cc(__vector __bool char __a, 10922 __vector __bool char __b, int *__cc) { 10923 return __builtin_s390_vfaezbs((__vector unsigned char)__a, 10924 (__vector unsigned char)__b, 8, __cc); 10925 } 10926 10927 static inline __ATTRS_o_ai __vector unsigned char 10928 vec_find_any_ne_or_0_idx_cc(__vector unsigned char __a, 10929 __vector unsigned char __b, int *__cc) { 10930 return __builtin_s390_vfaezbs(__a, __b, 8, __cc); 10931 } 10932 10933 static inline __ATTRS_o_ai __vector signed short 10934 vec_find_any_ne_or_0_idx_cc(__vector signed short __a, 10935 __vector signed short __b, int *__cc) { 10936 return (__vector signed short) 10937 __builtin_s390_vfaezhs((__vector unsigned short)__a, 10938 (__vector unsigned short)__b, 8, __cc); 10939 } 10940 10941 static inline __ATTRS_o_ai __vector unsigned short 10942 vec_find_any_ne_or_0_idx_cc(__vector __bool short __a, 10943 __vector __bool short __b, int *__cc) { 10944 return __builtin_s390_vfaezhs((__vector unsigned short)__a, 10945 (__vector unsigned short)__b, 8, __cc); 10946 } 10947 10948 static inline __ATTRS_o_ai __vector unsigned short 10949 vec_find_any_ne_or_0_idx_cc(__vector unsigned short __a, 10950 __vector unsigned short __b, int *__cc) { 10951 return __builtin_s390_vfaezhs(__a, __b, 8, __cc); 10952 } 10953 10954 static inline __ATTRS_o_ai __vector signed int 10955 vec_find_any_ne_or_0_idx_cc(__vector signed int __a, 10956 __vector signed int __b, int *__cc) { 10957 return (__vector signed int) 10958 __builtin_s390_vfaezfs((__vector unsigned int)__a, 10959 (__vector unsigned int)__b, 8, __cc); 10960 } 10961 10962 static inline __ATTRS_o_ai __vector unsigned int 10963 vec_find_any_ne_or_0_idx_cc(__vector __bool int __a, 10964 __vector __bool int __b, int *__cc) { 10965 return __builtin_s390_vfaezfs((__vector unsigned int)__a, 10966 (__vector unsigned int)__b, 8, __cc); 10967 } 10968 10969 static inline __ATTRS_o_ai __vector unsigned int 10970 vec_find_any_ne_or_0_idx_cc(__vector unsigned int __a, 10971 __vector unsigned int __b, int *__cc) { 10972 return __builtin_s390_vfaezfs(__a, __b, 8, __cc); 10973 } 10974 10975 /*-- vec_search_string_cc ---------------------------------------------------*/ 10976 10977 #if __ARCH__ >= 13 10978 10979 static inline __ATTRS_o_ai __vector unsigned char 10980 vec_search_string_cc(__vector signed char __a, __vector signed char __b, 10981 __vector unsigned char __c, int *__cc) { 10982 return __builtin_s390_vstrsb((__vector unsigned char)__a, 10983 (__vector unsigned char)__b, __c, __cc); 10984 } 10985 10986 static inline __ATTRS_o_ai __vector unsigned char 10987 vec_search_string_cc(__vector __bool char __a, __vector __bool char __b, 10988 __vector unsigned char __c, int *__cc) { 10989 return __builtin_s390_vstrsb((__vector unsigned char)__a, 10990 (__vector unsigned char)__b, __c, __cc); 10991 } 10992 10993 static inline __ATTRS_o_ai __vector unsigned char 10994 vec_search_string_cc(__vector unsigned char __a, __vector unsigned char __b, 10995 __vector unsigned char __c, int *__cc) { 10996 return __builtin_s390_vstrsb(__a, __b, __c, __cc); 10997 } 10998 10999 static inline __ATTRS_o_ai __vector unsigned char 11000 vec_search_string_cc(__vector signed short __a, __vector signed short __b, 11001 __vector unsigned char __c, int *__cc) { 11002 return __builtin_s390_vstrsh((__vector unsigned short)__a, 11003 (__vector unsigned short)__b, __c, __cc); 11004 } 11005 11006 static inline __ATTRS_o_ai __vector unsigned char 11007 vec_search_string_cc(__vector __bool short __a, __vector __bool short __b, 11008 __vector unsigned char __c, int *__cc) { 11009 return __builtin_s390_vstrsh((__vector unsigned short)__a, 11010 (__vector unsigned short)__b, __c, __cc); 11011 } 11012 11013 static inline __ATTRS_o_ai __vector unsigned char 11014 vec_search_string_cc(__vector unsigned short __a, __vector unsigned short __b, 11015 __vector unsigned char __c, int *__cc) { 11016 return __builtin_s390_vstrsh(__a, __b, __c, __cc); 11017 } 11018 11019 static inline __ATTRS_o_ai __vector unsigned char 11020 vec_search_string_cc(__vector signed int __a, __vector signed int __b, 11021 __vector unsigned char __c, int *__cc) { 11022 return __builtin_s390_vstrsf((__vector unsigned int)__a, 11023 (__vector unsigned int)__b, __c, __cc); 11024 } 11025 11026 static inline __ATTRS_o_ai __vector unsigned char 11027 vec_search_string_cc(__vector __bool int __a, __vector __bool int __b, 11028 __vector unsigned char __c, int *__cc) { 11029 return __builtin_s390_vstrsf((__vector unsigned int)__a, 11030 (__vector unsigned int)__b, __c, __cc); 11031 } 11032 11033 static inline __ATTRS_o_ai __vector unsigned char 11034 vec_search_string_cc(__vector unsigned int __a, __vector unsigned int __b, 11035 __vector unsigned char __c, int *__cc) { 11036 return __builtin_s390_vstrsf(__a, __b, __c, __cc); 11037 } 11038 11039 #endif 11040 11041 /*-- vec_search_string_until_zero_cc ----------------------------------------*/ 11042 11043 #if __ARCH__ >= 13 11044 11045 static inline __ATTRS_o_ai __vector unsigned char 11046 vec_search_string_until_zero_cc(__vector signed char __a, 11047 __vector signed char __b, 11048 __vector unsigned char __c, int *__cc) { 11049 return __builtin_s390_vstrszb((__vector unsigned char)__a, 11050 (__vector unsigned char)__b, __c, __cc); 11051 } 11052 11053 static inline __ATTRS_o_ai __vector unsigned char 11054 vec_search_string_until_zero_cc(__vector __bool char __a, 11055 __vector __bool char __b, 11056 __vector unsigned char __c, int *__cc) { 11057 return __builtin_s390_vstrszb((__vector unsigned char)__a, 11058 (__vector unsigned char)__b, __c, __cc); 11059 } 11060 11061 static inline __ATTRS_o_ai __vector unsigned char 11062 vec_search_string_until_zero_cc(__vector unsigned char __a, 11063 __vector unsigned char __b, 11064 __vector unsigned char __c, int *__cc) { 11065 return __builtin_s390_vstrszb(__a, __b, __c, __cc); 11066 } 11067 11068 static inline __ATTRS_o_ai __vector unsigned char 11069 vec_search_string_until_zero_cc(__vector signed short __a, 11070 __vector signed short __b, 11071 __vector unsigned char __c, int *__cc) { 11072 return __builtin_s390_vstrszh((__vector unsigned short)__a, 11073 (__vector unsigned short)__b, __c, __cc); 11074 } 11075 11076 static inline __ATTRS_o_ai __vector unsigned char 11077 vec_search_string_until_zero_cc(__vector __bool short __a, 11078 __vector __bool short __b, 11079 __vector unsigned char __c, int *__cc) { 11080 return __builtin_s390_vstrszh((__vector unsigned short)__a, 11081 (__vector unsigned short)__b, __c, __cc); 11082 } 11083 11084 static inline __ATTRS_o_ai __vector unsigned char 11085 vec_search_string_until_zero_cc(__vector unsigned short __a, 11086 __vector unsigned short __b, 11087 __vector unsigned char __c, int *__cc) { 11088 return __builtin_s390_vstrszh(__a, __b, __c, __cc); 11089 } 11090 11091 static inline __ATTRS_o_ai __vector unsigned char 11092 vec_search_string_until_zero_cc(__vector signed int __a, 11093 __vector signed int __b, 11094 __vector unsigned char __c, int *__cc) { 11095 return __builtin_s390_vstrszf((__vector unsigned int)__a, 11096 (__vector unsigned int)__b, __c, __cc); 11097 } 11098 11099 static inline __ATTRS_o_ai __vector unsigned char 11100 vec_search_string_until_zero_cc(__vector __bool int __a, 11101 __vector __bool int __b, 11102 __vector unsigned char __c, int *__cc) { 11103 return __builtin_s390_vstrszf((__vector unsigned int)__a, 11104 (__vector unsigned int)__b, __c, __cc); 11105 } 11106 11107 static inline __ATTRS_o_ai __vector unsigned char 11108 vec_search_string_until_zero_cc(__vector unsigned int __a, 11109 __vector unsigned int __b, 11110 __vector unsigned char __c, int *__cc) { 11111 return __builtin_s390_vstrszf(__a, __b, __c, __cc); 11112 } 11113 11114 #endif 11115 11116 #undef __constant_pow2_range 11117 #undef __constant_range 11118 #undef __constant 11119 #undef __ATTRS_o 11120 #undef __ATTRS_o_ai 11121 #undef __ATTRS_ai 11122 11123 #else 11124 11125 #error "Use -fzvector to enable vector extensions" 11126 11127 #endif 11128