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_cp_until_zero ------------------------------------------------------*/ 9357 9358 static inline __ATTRS_o_ai __vector signed char 9359 vec_cp_until_zero(__vector signed char __a) { 9360 return ((__vector signed char) 9361 __builtin_s390_vistrb((__vector unsigned char)__a)); 9362 } 9363 9364 static inline __ATTRS_o_ai __vector __bool char 9365 vec_cp_until_zero(__vector __bool char __a) { 9366 return ((__vector __bool char) 9367 __builtin_s390_vistrb((__vector unsigned char)__a)); 9368 } 9369 9370 static inline __ATTRS_o_ai __vector unsigned char 9371 vec_cp_until_zero(__vector unsigned char __a) { 9372 return __builtin_s390_vistrb(__a); 9373 } 9374 9375 static inline __ATTRS_o_ai __vector signed short 9376 vec_cp_until_zero(__vector signed short __a) { 9377 return ((__vector signed short) 9378 __builtin_s390_vistrh((__vector unsigned short)__a)); 9379 } 9380 9381 static inline __ATTRS_o_ai __vector __bool short 9382 vec_cp_until_zero(__vector __bool short __a) { 9383 return ((__vector __bool short) 9384 __builtin_s390_vistrh((__vector unsigned short)__a)); 9385 } 9386 9387 static inline __ATTRS_o_ai __vector unsigned short 9388 vec_cp_until_zero(__vector unsigned short __a) { 9389 return __builtin_s390_vistrh(__a); 9390 } 9391 9392 static inline __ATTRS_o_ai __vector signed int 9393 vec_cp_until_zero(__vector signed int __a) { 9394 return ((__vector signed int) 9395 __builtin_s390_vistrf((__vector unsigned int)__a)); 9396 } 9397 9398 static inline __ATTRS_o_ai __vector __bool int 9399 vec_cp_until_zero(__vector __bool int __a) { 9400 return ((__vector __bool int) 9401 __builtin_s390_vistrf((__vector unsigned int)__a)); 9402 } 9403 9404 static inline __ATTRS_o_ai __vector unsigned int 9405 vec_cp_until_zero(__vector unsigned int __a) { 9406 return __builtin_s390_vistrf(__a); 9407 } 9408 9409 /*-- vec_cp_until_zero_cc ---------------------------------------------------*/ 9410 9411 static inline __ATTRS_o_ai __vector signed char 9412 vec_cp_until_zero_cc(__vector signed char __a, int *__cc) { 9413 return (__vector signed char) 9414 __builtin_s390_vistrbs((__vector unsigned char)__a, __cc); 9415 } 9416 9417 static inline __ATTRS_o_ai __vector __bool char 9418 vec_cp_until_zero_cc(__vector __bool char __a, int *__cc) { 9419 return (__vector __bool char) 9420 __builtin_s390_vistrbs((__vector unsigned char)__a, __cc); 9421 } 9422 9423 static inline __ATTRS_o_ai __vector unsigned char 9424 vec_cp_until_zero_cc(__vector unsigned char __a, int *__cc) { 9425 return __builtin_s390_vistrbs(__a, __cc); 9426 } 9427 9428 static inline __ATTRS_o_ai __vector signed short 9429 vec_cp_until_zero_cc(__vector signed short __a, int *__cc) { 9430 return (__vector signed short) 9431 __builtin_s390_vistrhs((__vector unsigned short)__a, __cc); 9432 } 9433 9434 static inline __ATTRS_o_ai __vector __bool short 9435 vec_cp_until_zero_cc(__vector __bool short __a, int *__cc) { 9436 return (__vector __bool short) 9437 __builtin_s390_vistrhs((__vector unsigned short)__a, __cc); 9438 } 9439 9440 static inline __ATTRS_o_ai __vector unsigned short 9441 vec_cp_until_zero_cc(__vector unsigned short __a, int *__cc) { 9442 return __builtin_s390_vistrhs(__a, __cc); 9443 } 9444 9445 static inline __ATTRS_o_ai __vector signed int 9446 vec_cp_until_zero_cc(__vector signed int __a, int *__cc) { 9447 return (__vector signed int) 9448 __builtin_s390_vistrfs((__vector unsigned int)__a, __cc); 9449 } 9450 9451 static inline __ATTRS_o_ai __vector __bool int 9452 vec_cp_until_zero_cc(__vector __bool int __a, int *__cc) { 9453 return (__vector __bool int) 9454 __builtin_s390_vistrfs((__vector unsigned int)__a, __cc); 9455 } 9456 9457 static inline __ATTRS_o_ai __vector unsigned int 9458 vec_cp_until_zero_cc(__vector unsigned int __a, int *__cc) { 9459 return __builtin_s390_vistrfs(__a, __cc); 9460 } 9461 9462 /*-- vec_cmpeq_idx ----------------------------------------------------------*/ 9463 9464 static inline __ATTRS_o_ai __vector signed char 9465 vec_cmpeq_idx(__vector signed char __a, __vector signed char __b) { 9466 return (__vector signed char) 9467 __builtin_s390_vfeeb((__vector unsigned char)__a, 9468 (__vector unsigned char)__b); 9469 } 9470 9471 static inline __ATTRS_o_ai __vector unsigned char 9472 vec_cmpeq_idx(__vector __bool char __a, __vector __bool char __b) { 9473 return __builtin_s390_vfeeb((__vector unsigned char)__a, 9474 (__vector unsigned char)__b); 9475 } 9476 9477 static inline __ATTRS_o_ai __vector unsigned char 9478 vec_cmpeq_idx(__vector unsigned char __a, __vector unsigned char __b) { 9479 return __builtin_s390_vfeeb(__a, __b); 9480 } 9481 9482 static inline __ATTRS_o_ai __vector signed short 9483 vec_cmpeq_idx(__vector signed short __a, __vector signed short __b) { 9484 return (__vector signed short) 9485 __builtin_s390_vfeeh((__vector unsigned short)__a, 9486 (__vector unsigned short)__b); 9487 } 9488 9489 static inline __ATTRS_o_ai __vector unsigned short 9490 vec_cmpeq_idx(__vector __bool short __a, __vector __bool short __b) { 9491 return __builtin_s390_vfeeh((__vector unsigned short)__a, 9492 (__vector unsigned short)__b); 9493 } 9494 9495 static inline __ATTRS_o_ai __vector unsigned short 9496 vec_cmpeq_idx(__vector unsigned short __a, __vector unsigned short __b) { 9497 return __builtin_s390_vfeeh(__a, __b); 9498 } 9499 9500 static inline __ATTRS_o_ai __vector signed int 9501 vec_cmpeq_idx(__vector signed int __a, __vector signed int __b) { 9502 return (__vector signed int) 9503 __builtin_s390_vfeef((__vector unsigned int)__a, 9504 (__vector unsigned int)__b); 9505 } 9506 9507 static inline __ATTRS_o_ai __vector unsigned int 9508 vec_cmpeq_idx(__vector __bool int __a, __vector __bool int __b) { 9509 return __builtin_s390_vfeef((__vector unsigned int)__a, 9510 (__vector unsigned int)__b); 9511 } 9512 9513 static inline __ATTRS_o_ai __vector unsigned int 9514 vec_cmpeq_idx(__vector unsigned int __a, __vector unsigned int __b) { 9515 return __builtin_s390_vfeef(__a, __b); 9516 } 9517 9518 /*-- vec_cmpeq_idx_cc -------------------------------------------------------*/ 9519 9520 static inline __ATTRS_o_ai __vector signed char 9521 vec_cmpeq_idx_cc(__vector signed char __a, __vector signed char __b, int *__cc) { 9522 return (__vector signed char) 9523 __builtin_s390_vfeebs((__vector unsigned char)__a, 9524 (__vector unsigned char)__b, __cc); 9525 } 9526 9527 static inline __ATTRS_o_ai __vector unsigned char 9528 vec_cmpeq_idx_cc(__vector __bool char __a, __vector __bool char __b, int *__cc) { 9529 return __builtin_s390_vfeebs((__vector unsigned char)__a, 9530 (__vector unsigned char)__b, __cc); 9531 } 9532 9533 static inline __ATTRS_o_ai __vector unsigned char 9534 vec_cmpeq_idx_cc(__vector unsigned char __a, __vector unsigned char __b, 9535 int *__cc) { 9536 return __builtin_s390_vfeebs(__a, __b, __cc); 9537 } 9538 9539 static inline __ATTRS_o_ai __vector signed short 9540 vec_cmpeq_idx_cc(__vector signed short __a, __vector signed short __b, 9541 int *__cc) { 9542 return (__vector signed short) 9543 __builtin_s390_vfeehs((__vector unsigned short)__a, 9544 (__vector unsigned short)__b, __cc); 9545 } 9546 9547 static inline __ATTRS_o_ai __vector unsigned short 9548 vec_cmpeq_idx_cc(__vector __bool short __a, __vector __bool short __b, int *__cc) { 9549 return __builtin_s390_vfeehs((__vector unsigned short)__a, 9550 (__vector unsigned short)__b, __cc); 9551 } 9552 9553 static inline __ATTRS_o_ai __vector unsigned short 9554 vec_cmpeq_idx_cc(__vector unsigned short __a, __vector unsigned short __b, 9555 int *__cc) { 9556 return __builtin_s390_vfeehs(__a, __b, __cc); 9557 } 9558 9559 static inline __ATTRS_o_ai __vector signed int 9560 vec_cmpeq_idx_cc(__vector signed int __a, __vector signed int __b, int *__cc) { 9561 return (__vector signed int) 9562 __builtin_s390_vfeefs((__vector unsigned int)__a, 9563 (__vector unsigned int)__b, __cc); 9564 } 9565 9566 static inline __ATTRS_o_ai __vector unsigned int 9567 vec_cmpeq_idx_cc(__vector __bool int __a, __vector __bool int __b, int *__cc) { 9568 return __builtin_s390_vfeefs((__vector unsigned int)__a, 9569 (__vector unsigned int)__b, __cc); 9570 } 9571 9572 static inline __ATTRS_o_ai __vector unsigned int 9573 vec_cmpeq_idx_cc(__vector unsigned int __a, __vector unsigned int __b, 9574 int *__cc) { 9575 return __builtin_s390_vfeefs(__a, __b, __cc); 9576 } 9577 9578 /*-- vec_cmpeq_or_0_idx -----------------------------------------------------*/ 9579 9580 static inline __ATTRS_o_ai __vector signed char 9581 vec_cmpeq_or_0_idx(__vector signed char __a, __vector signed char __b) { 9582 return (__vector signed char) 9583 __builtin_s390_vfeezb((__vector unsigned char)__a, 9584 (__vector unsigned char)__b); 9585 } 9586 9587 static inline __ATTRS_o_ai __vector unsigned char 9588 vec_cmpeq_or_0_idx(__vector __bool char __a, __vector __bool char __b) { 9589 return __builtin_s390_vfeezb((__vector unsigned char)__a, 9590 (__vector unsigned char)__b); 9591 } 9592 9593 static inline __ATTRS_o_ai __vector unsigned char 9594 vec_cmpeq_or_0_idx(__vector unsigned char __a, __vector unsigned char __b) { 9595 return __builtin_s390_vfeezb(__a, __b); 9596 } 9597 9598 static inline __ATTRS_o_ai __vector signed short 9599 vec_cmpeq_or_0_idx(__vector signed short __a, __vector signed short __b) { 9600 return (__vector signed short) 9601 __builtin_s390_vfeezh((__vector unsigned short)__a, 9602 (__vector unsigned short)__b); 9603 } 9604 9605 static inline __ATTRS_o_ai __vector unsigned short 9606 vec_cmpeq_or_0_idx(__vector __bool short __a, __vector __bool short __b) { 9607 return __builtin_s390_vfeezh((__vector unsigned short)__a, 9608 (__vector unsigned short)__b); 9609 } 9610 9611 static inline __ATTRS_o_ai __vector unsigned short 9612 vec_cmpeq_or_0_idx(__vector unsigned short __a, __vector unsigned short __b) { 9613 return __builtin_s390_vfeezh(__a, __b); 9614 } 9615 9616 static inline __ATTRS_o_ai __vector signed int 9617 vec_cmpeq_or_0_idx(__vector signed int __a, __vector signed int __b) { 9618 return (__vector signed int) 9619 __builtin_s390_vfeezf((__vector unsigned int)__a, 9620 (__vector unsigned int)__b); 9621 } 9622 9623 static inline __ATTRS_o_ai __vector unsigned int 9624 vec_cmpeq_or_0_idx(__vector __bool int __a, __vector __bool int __b) { 9625 return __builtin_s390_vfeezf((__vector unsigned int)__a, 9626 (__vector unsigned int)__b); 9627 } 9628 9629 static inline __ATTRS_o_ai __vector unsigned int 9630 vec_cmpeq_or_0_idx(__vector unsigned int __a, __vector unsigned int __b) { 9631 return __builtin_s390_vfeezf(__a, __b); 9632 } 9633 9634 /*-- vec_cmpeq_or_0_idx_cc --------------------------------------------------*/ 9635 9636 static inline __ATTRS_o_ai __vector signed char 9637 vec_cmpeq_or_0_idx_cc(__vector signed char __a, __vector signed char __b, 9638 int *__cc) { 9639 return (__vector signed char) 9640 __builtin_s390_vfeezbs((__vector unsigned char)__a, 9641 (__vector unsigned char)__b, __cc); 9642 } 9643 9644 static inline __ATTRS_o_ai __vector unsigned char 9645 vec_cmpeq_or_0_idx_cc(__vector __bool char __a, __vector __bool char __b, 9646 int *__cc) { 9647 return __builtin_s390_vfeezbs((__vector unsigned char)__a, 9648 (__vector unsigned char)__b, __cc); 9649 } 9650 9651 static inline __ATTRS_o_ai __vector unsigned char 9652 vec_cmpeq_or_0_idx_cc(__vector unsigned char __a, __vector unsigned char __b, 9653 int *__cc) { 9654 return __builtin_s390_vfeezbs(__a, __b, __cc); 9655 } 9656 9657 static inline __ATTRS_o_ai __vector signed short 9658 vec_cmpeq_or_0_idx_cc(__vector signed short __a, __vector signed short __b, 9659 int *__cc) { 9660 return (__vector signed short) 9661 __builtin_s390_vfeezhs((__vector unsigned short)__a, 9662 (__vector unsigned short)__b, __cc); 9663 } 9664 9665 static inline __ATTRS_o_ai __vector unsigned short 9666 vec_cmpeq_or_0_idx_cc(__vector __bool short __a, __vector __bool short __b, 9667 int *__cc) { 9668 return __builtin_s390_vfeezhs((__vector unsigned short)__a, 9669 (__vector unsigned short)__b, __cc); 9670 } 9671 9672 static inline __ATTRS_o_ai __vector unsigned short 9673 vec_cmpeq_or_0_idx_cc(__vector unsigned short __a, __vector unsigned short __b, 9674 int *__cc) { 9675 return __builtin_s390_vfeezhs(__a, __b, __cc); 9676 } 9677 9678 static inline __ATTRS_o_ai __vector signed int 9679 vec_cmpeq_or_0_idx_cc(__vector signed int __a, __vector signed int __b, 9680 int *__cc) { 9681 return (__vector signed int) 9682 __builtin_s390_vfeezfs((__vector unsigned int)__a, 9683 (__vector unsigned int)__b, __cc); 9684 } 9685 9686 static inline __ATTRS_o_ai __vector unsigned int 9687 vec_cmpeq_or_0_idx_cc(__vector __bool int __a, __vector __bool int __b, 9688 int *__cc) { 9689 return __builtin_s390_vfeezfs((__vector unsigned int)__a, 9690 (__vector unsigned int)__b, __cc); 9691 } 9692 9693 static inline __ATTRS_o_ai __vector unsigned int 9694 vec_cmpeq_or_0_idx_cc(__vector unsigned int __a, __vector unsigned int __b, 9695 int *__cc) { 9696 return __builtin_s390_vfeezfs(__a, __b, __cc); 9697 } 9698 9699 /*-- vec_cmpne_idx ----------------------------------------------------------*/ 9700 9701 static inline __ATTRS_o_ai __vector signed char 9702 vec_cmpne_idx(__vector signed char __a, __vector signed char __b) { 9703 return (__vector signed char) 9704 __builtin_s390_vfeneb((__vector unsigned char)__a, 9705 (__vector unsigned char)__b); 9706 } 9707 9708 static inline __ATTRS_o_ai __vector unsigned char 9709 vec_cmpne_idx(__vector __bool char __a, __vector __bool char __b) { 9710 return __builtin_s390_vfeneb((__vector unsigned char)__a, 9711 (__vector unsigned char)__b); 9712 } 9713 9714 static inline __ATTRS_o_ai __vector unsigned char 9715 vec_cmpne_idx(__vector unsigned char __a, __vector unsigned char __b) { 9716 return __builtin_s390_vfeneb(__a, __b); 9717 } 9718 9719 static inline __ATTRS_o_ai __vector signed short 9720 vec_cmpne_idx(__vector signed short __a, __vector signed short __b) { 9721 return (__vector signed short) 9722 __builtin_s390_vfeneh((__vector unsigned short)__a, 9723 (__vector unsigned short)__b); 9724 } 9725 9726 static inline __ATTRS_o_ai __vector unsigned short 9727 vec_cmpne_idx(__vector __bool short __a, __vector __bool short __b) { 9728 return __builtin_s390_vfeneh((__vector unsigned short)__a, 9729 (__vector unsigned short)__b); 9730 } 9731 9732 static inline __ATTRS_o_ai __vector unsigned short 9733 vec_cmpne_idx(__vector unsigned short __a, __vector unsigned short __b) { 9734 return __builtin_s390_vfeneh(__a, __b); 9735 } 9736 9737 static inline __ATTRS_o_ai __vector signed int 9738 vec_cmpne_idx(__vector signed int __a, __vector signed int __b) { 9739 return (__vector signed int) 9740 __builtin_s390_vfenef((__vector unsigned int)__a, 9741 (__vector unsigned int)__b); 9742 } 9743 9744 static inline __ATTRS_o_ai __vector unsigned int 9745 vec_cmpne_idx(__vector __bool int __a, __vector __bool int __b) { 9746 return __builtin_s390_vfenef((__vector unsigned int)__a, 9747 (__vector unsigned int)__b); 9748 } 9749 9750 static inline __ATTRS_o_ai __vector unsigned int 9751 vec_cmpne_idx(__vector unsigned int __a, __vector unsigned int __b) { 9752 return __builtin_s390_vfenef(__a, __b); 9753 } 9754 9755 /*-- vec_cmpne_idx_cc -------------------------------------------------------*/ 9756 9757 static inline __ATTRS_o_ai __vector signed char 9758 vec_cmpne_idx_cc(__vector signed char __a, __vector signed char __b, int *__cc) { 9759 return (__vector signed char) 9760 __builtin_s390_vfenebs((__vector unsigned char)__a, 9761 (__vector unsigned char)__b, __cc); 9762 } 9763 9764 static inline __ATTRS_o_ai __vector unsigned char 9765 vec_cmpne_idx_cc(__vector __bool char __a, __vector __bool char __b, int *__cc) { 9766 return __builtin_s390_vfenebs((__vector unsigned char)__a, 9767 (__vector unsigned char)__b, __cc); 9768 } 9769 9770 static inline __ATTRS_o_ai __vector unsigned char 9771 vec_cmpne_idx_cc(__vector unsigned char __a, __vector unsigned char __b, 9772 int *__cc) { 9773 return __builtin_s390_vfenebs(__a, __b, __cc); 9774 } 9775 9776 static inline __ATTRS_o_ai __vector signed short 9777 vec_cmpne_idx_cc(__vector signed short __a, __vector signed short __b, 9778 int *__cc) { 9779 return (__vector signed short) 9780 __builtin_s390_vfenehs((__vector unsigned short)__a, 9781 (__vector unsigned short)__b, __cc); 9782 } 9783 9784 static inline __ATTRS_o_ai __vector unsigned short 9785 vec_cmpne_idx_cc(__vector __bool short __a, __vector __bool short __b, 9786 int *__cc) { 9787 return __builtin_s390_vfenehs((__vector unsigned short)__a, 9788 (__vector unsigned short)__b, __cc); 9789 } 9790 9791 static inline __ATTRS_o_ai __vector unsigned short 9792 vec_cmpne_idx_cc(__vector unsigned short __a, __vector unsigned short __b, 9793 int *__cc) { 9794 return __builtin_s390_vfenehs(__a, __b, __cc); 9795 } 9796 9797 static inline __ATTRS_o_ai __vector signed int 9798 vec_cmpne_idx_cc(__vector signed int __a, __vector signed int __b, int *__cc) { 9799 return (__vector signed int) 9800 __builtin_s390_vfenefs((__vector unsigned int)__a, 9801 (__vector unsigned int)__b, __cc); 9802 } 9803 9804 static inline __ATTRS_o_ai __vector unsigned int 9805 vec_cmpne_idx_cc(__vector __bool int __a, __vector __bool int __b, int *__cc) { 9806 return __builtin_s390_vfenefs((__vector unsigned int)__a, 9807 (__vector unsigned int)__b, __cc); 9808 } 9809 9810 static inline __ATTRS_o_ai __vector unsigned int 9811 vec_cmpne_idx_cc(__vector unsigned int __a, __vector unsigned int __b, 9812 int *__cc) { 9813 return __builtin_s390_vfenefs(__a, __b, __cc); 9814 } 9815 9816 /*-- vec_cmpne_or_0_idx -----------------------------------------------------*/ 9817 9818 static inline __ATTRS_o_ai __vector signed char 9819 vec_cmpne_or_0_idx(__vector signed char __a, __vector signed char __b) { 9820 return (__vector signed char) 9821 __builtin_s390_vfenezb((__vector unsigned char)__a, 9822 (__vector unsigned char)__b); 9823 } 9824 9825 static inline __ATTRS_o_ai __vector unsigned char 9826 vec_cmpne_or_0_idx(__vector __bool char __a, __vector __bool char __b) { 9827 return __builtin_s390_vfenezb((__vector unsigned char)__a, 9828 (__vector unsigned char)__b); 9829 } 9830 9831 static inline __ATTRS_o_ai __vector unsigned char 9832 vec_cmpne_or_0_idx(__vector unsigned char __a, __vector unsigned char __b) { 9833 return __builtin_s390_vfenezb(__a, __b); 9834 } 9835 9836 static inline __ATTRS_o_ai __vector signed short 9837 vec_cmpne_or_0_idx(__vector signed short __a, __vector signed short __b) { 9838 return (__vector signed short) 9839 __builtin_s390_vfenezh((__vector unsigned short)__a, 9840 (__vector unsigned short)__b); 9841 } 9842 9843 static inline __ATTRS_o_ai __vector unsigned short 9844 vec_cmpne_or_0_idx(__vector __bool short __a, __vector __bool short __b) { 9845 return __builtin_s390_vfenezh((__vector unsigned short)__a, 9846 (__vector unsigned short)__b); 9847 } 9848 9849 static inline __ATTRS_o_ai __vector unsigned short 9850 vec_cmpne_or_0_idx(__vector unsigned short __a, __vector unsigned short __b) { 9851 return __builtin_s390_vfenezh(__a, __b); 9852 } 9853 9854 static inline __ATTRS_o_ai __vector signed int 9855 vec_cmpne_or_0_idx(__vector signed int __a, __vector signed int __b) { 9856 return (__vector signed int) 9857 __builtin_s390_vfenezf((__vector unsigned int)__a, 9858 (__vector unsigned int)__b); 9859 } 9860 9861 static inline __ATTRS_o_ai __vector unsigned int 9862 vec_cmpne_or_0_idx(__vector __bool int __a, __vector __bool int __b) { 9863 return __builtin_s390_vfenezf((__vector unsigned int)__a, 9864 (__vector unsigned int)__b); 9865 } 9866 9867 static inline __ATTRS_o_ai __vector unsigned int 9868 vec_cmpne_or_0_idx(__vector unsigned int __a, __vector unsigned int __b) { 9869 return __builtin_s390_vfenezf(__a, __b); 9870 } 9871 9872 /*-- vec_cmpne_or_0_idx_cc --------------------------------------------------*/ 9873 9874 static inline __ATTRS_o_ai __vector signed char 9875 vec_cmpne_or_0_idx_cc(__vector signed char __a, __vector signed char __b, 9876 int *__cc) { 9877 return (__vector signed char) 9878 __builtin_s390_vfenezbs((__vector unsigned char)__a, 9879 (__vector unsigned char)__b, __cc); 9880 } 9881 9882 static inline __ATTRS_o_ai __vector unsigned char 9883 vec_cmpne_or_0_idx_cc(__vector __bool char __a, __vector __bool char __b, 9884 int *__cc) { 9885 return __builtin_s390_vfenezbs((__vector unsigned char)__a, 9886 (__vector unsigned char)__b, __cc); 9887 } 9888 9889 static inline __ATTRS_o_ai __vector unsigned char 9890 vec_cmpne_or_0_idx_cc(__vector unsigned char __a, __vector unsigned char __b, 9891 int *__cc) { 9892 return __builtin_s390_vfenezbs(__a, __b, __cc); 9893 } 9894 9895 static inline __ATTRS_o_ai __vector signed short 9896 vec_cmpne_or_0_idx_cc(__vector signed short __a, __vector signed short __b, 9897 int *__cc) { 9898 return (__vector signed short) 9899 __builtin_s390_vfenezhs((__vector unsigned short)__a, 9900 (__vector unsigned short)__b, __cc); 9901 } 9902 9903 static inline __ATTRS_o_ai __vector unsigned short 9904 vec_cmpne_or_0_idx_cc(__vector __bool short __a, __vector __bool short __b, 9905 int *__cc) { 9906 return __builtin_s390_vfenezhs((__vector unsigned short)__a, 9907 (__vector unsigned short)__b, __cc); 9908 } 9909 9910 static inline __ATTRS_o_ai __vector unsigned short 9911 vec_cmpne_or_0_idx_cc(__vector unsigned short __a, __vector unsigned short __b, 9912 int *__cc) { 9913 return __builtin_s390_vfenezhs(__a, __b, __cc); 9914 } 9915 9916 static inline __ATTRS_o_ai __vector signed int 9917 vec_cmpne_or_0_idx_cc(__vector signed int __a, __vector signed int __b, 9918 int *__cc) { 9919 return (__vector signed int) 9920 __builtin_s390_vfenezfs((__vector unsigned int)__a, 9921 (__vector unsigned int)__b, __cc); 9922 } 9923 9924 static inline __ATTRS_o_ai __vector unsigned int 9925 vec_cmpne_or_0_idx_cc(__vector __bool int __a, __vector __bool int __b, 9926 int *__cc) { 9927 return __builtin_s390_vfenezfs((__vector unsigned int)__a, 9928 (__vector unsigned int)__b, __cc); 9929 } 9930 9931 static inline __ATTRS_o_ai __vector unsigned int 9932 vec_cmpne_or_0_idx_cc(__vector unsigned int __a, __vector unsigned int __b, 9933 int *__cc) { 9934 return __builtin_s390_vfenezfs(__a, __b, __cc); 9935 } 9936 9937 /*-- vec_cmprg --------------------------------------------------------------*/ 9938 9939 static inline __ATTRS_o_ai __vector __bool char 9940 vec_cmprg(__vector unsigned char __a, __vector unsigned char __b, 9941 __vector unsigned char __c) { 9942 return (__vector __bool char)__builtin_s390_vstrcb(__a, __b, __c, 4); 9943 } 9944 9945 static inline __ATTRS_o_ai __vector __bool short 9946 vec_cmprg(__vector unsigned short __a, __vector unsigned short __b, 9947 __vector unsigned short __c) { 9948 return (__vector __bool short)__builtin_s390_vstrch(__a, __b, __c, 4); 9949 } 9950 9951 static inline __ATTRS_o_ai __vector __bool int 9952 vec_cmprg(__vector unsigned int __a, __vector unsigned int __b, 9953 __vector unsigned int __c) { 9954 return (__vector __bool int)__builtin_s390_vstrcf(__a, __b, __c, 4); 9955 } 9956 9957 /*-- vec_cmprg_cc -----------------------------------------------------------*/ 9958 9959 static inline __ATTRS_o_ai __vector __bool char 9960 vec_cmprg_cc(__vector unsigned char __a, __vector unsigned char __b, 9961 __vector unsigned char __c, int *__cc) { 9962 return (__vector __bool char)__builtin_s390_vstrcbs(__a, __b, __c, 4, __cc); 9963 } 9964 9965 static inline __ATTRS_o_ai __vector __bool short 9966 vec_cmprg_cc(__vector unsigned short __a, __vector unsigned short __b, 9967 __vector unsigned short __c, int *__cc) { 9968 return (__vector __bool short)__builtin_s390_vstrchs(__a, __b, __c, 4, __cc); 9969 } 9970 9971 static inline __ATTRS_o_ai __vector __bool int 9972 vec_cmprg_cc(__vector unsigned int __a, __vector unsigned int __b, 9973 __vector unsigned int __c, int *__cc) { 9974 return (__vector __bool int)__builtin_s390_vstrcfs(__a, __b, __c, 4, __cc); 9975 } 9976 9977 /*-- vec_cmprg_idx ----------------------------------------------------------*/ 9978 9979 static inline __ATTRS_o_ai __vector unsigned char 9980 vec_cmprg_idx(__vector unsigned char __a, __vector unsigned char __b, 9981 __vector unsigned char __c) { 9982 return __builtin_s390_vstrcb(__a, __b, __c, 0); 9983 } 9984 9985 static inline __ATTRS_o_ai __vector unsigned short 9986 vec_cmprg_idx(__vector unsigned short __a, __vector unsigned short __b, 9987 __vector unsigned short __c) { 9988 return __builtin_s390_vstrch(__a, __b, __c, 0); 9989 } 9990 9991 static inline __ATTRS_o_ai __vector unsigned int 9992 vec_cmprg_idx(__vector unsigned int __a, __vector unsigned int __b, 9993 __vector unsigned int __c) { 9994 return __builtin_s390_vstrcf(__a, __b, __c, 0); 9995 } 9996 9997 /*-- vec_cmprg_idx_cc -------------------------------------------------------*/ 9998 9999 static inline __ATTRS_o_ai __vector unsigned char 10000 vec_cmprg_idx_cc(__vector unsigned char __a, __vector unsigned char __b, 10001 __vector unsigned char __c, int *__cc) { 10002 return __builtin_s390_vstrcbs(__a, __b, __c, 0, __cc); 10003 } 10004 10005 static inline __ATTRS_o_ai __vector unsigned short 10006 vec_cmprg_idx_cc(__vector unsigned short __a, __vector unsigned short __b, 10007 __vector unsigned short __c, int *__cc) { 10008 return __builtin_s390_vstrchs(__a, __b, __c, 0, __cc); 10009 } 10010 10011 static inline __ATTRS_o_ai __vector unsigned int 10012 vec_cmprg_idx_cc(__vector unsigned int __a, __vector unsigned int __b, 10013 __vector unsigned int __c, int *__cc) { 10014 return __builtin_s390_vstrcfs(__a, __b, __c, 0, __cc); 10015 } 10016 10017 /*-- vec_cmprg_or_0_idx -----------------------------------------------------*/ 10018 10019 static inline __ATTRS_o_ai __vector unsigned char 10020 vec_cmprg_or_0_idx(__vector unsigned char __a, __vector unsigned char __b, 10021 __vector unsigned char __c) { 10022 return __builtin_s390_vstrczb(__a, __b, __c, 0); 10023 } 10024 10025 static inline __ATTRS_o_ai __vector unsigned short 10026 vec_cmprg_or_0_idx(__vector unsigned short __a, __vector unsigned short __b, 10027 __vector unsigned short __c) { 10028 return __builtin_s390_vstrczh(__a, __b, __c, 0); 10029 } 10030 10031 static inline __ATTRS_o_ai __vector unsigned int 10032 vec_cmprg_or_0_idx(__vector unsigned int __a, __vector unsigned int __b, 10033 __vector unsigned int __c) { 10034 return __builtin_s390_vstrczf(__a, __b, __c, 0); 10035 } 10036 10037 /*-- vec_cmprg_or_0_idx_cc --------------------------------------------------*/ 10038 10039 static inline __ATTRS_o_ai __vector unsigned char 10040 vec_cmprg_or_0_idx_cc(__vector unsigned char __a, __vector unsigned char __b, 10041 __vector unsigned char __c, int *__cc) { 10042 return __builtin_s390_vstrczbs(__a, __b, __c, 0, __cc); 10043 } 10044 10045 static inline __ATTRS_o_ai __vector unsigned short 10046 vec_cmprg_or_0_idx_cc(__vector unsigned short __a, __vector unsigned short __b, 10047 __vector unsigned short __c, int *__cc) { 10048 return __builtin_s390_vstrczhs(__a, __b, __c, 0, __cc); 10049 } 10050 10051 static inline __ATTRS_o_ai __vector unsigned int 10052 vec_cmprg_or_0_idx_cc(__vector unsigned int __a, __vector unsigned int __b, 10053 __vector unsigned int __c, int *__cc) { 10054 return __builtin_s390_vstrczfs(__a, __b, __c, 0, __cc); 10055 } 10056 10057 /*-- vec_cmpnrg -------------------------------------------------------------*/ 10058 10059 static inline __ATTRS_o_ai __vector __bool char 10060 vec_cmpnrg(__vector unsigned char __a, __vector unsigned char __b, 10061 __vector unsigned char __c) { 10062 return (__vector __bool char)__builtin_s390_vstrcb(__a, __b, __c, 12); 10063 } 10064 10065 static inline __ATTRS_o_ai __vector __bool short 10066 vec_cmpnrg(__vector unsigned short __a, __vector unsigned short __b, 10067 __vector unsigned short __c) { 10068 return (__vector __bool short)__builtin_s390_vstrch(__a, __b, __c, 12); 10069 } 10070 10071 static inline __ATTRS_o_ai __vector __bool int 10072 vec_cmpnrg(__vector unsigned int __a, __vector unsigned int __b, 10073 __vector unsigned int __c) { 10074 return (__vector __bool int)__builtin_s390_vstrcf(__a, __b, __c, 12); 10075 } 10076 10077 /*-- vec_cmpnrg_cc ----------------------------------------------------------*/ 10078 10079 static inline __ATTRS_o_ai __vector __bool char 10080 vec_cmpnrg_cc(__vector unsigned char __a, __vector unsigned char __b, 10081 __vector unsigned char __c, int *__cc) { 10082 return (__vector __bool char) 10083 __builtin_s390_vstrcbs(__a, __b, __c, 12, __cc); 10084 } 10085 10086 static inline __ATTRS_o_ai __vector __bool short 10087 vec_cmpnrg_cc(__vector unsigned short __a, __vector unsigned short __b, 10088 __vector unsigned short __c, int *__cc) { 10089 return (__vector __bool short) 10090 __builtin_s390_vstrchs(__a, __b, __c, 12, __cc); 10091 } 10092 10093 static inline __ATTRS_o_ai __vector __bool int 10094 vec_cmpnrg_cc(__vector unsigned int __a, __vector unsigned int __b, 10095 __vector unsigned int __c, int *__cc) { 10096 return (__vector __bool int) 10097 __builtin_s390_vstrcfs(__a, __b, __c, 12, __cc); 10098 } 10099 10100 /*-- vec_cmpnrg_idx ---------------------------------------------------------*/ 10101 10102 static inline __ATTRS_o_ai __vector unsigned char 10103 vec_cmpnrg_idx(__vector unsigned char __a, __vector unsigned char __b, 10104 __vector unsigned char __c) { 10105 return __builtin_s390_vstrcb(__a, __b, __c, 8); 10106 } 10107 10108 static inline __ATTRS_o_ai __vector unsigned short 10109 vec_cmpnrg_idx(__vector unsigned short __a, __vector unsigned short __b, 10110 __vector unsigned short __c) { 10111 return __builtin_s390_vstrch(__a, __b, __c, 8); 10112 } 10113 10114 static inline __ATTRS_o_ai __vector unsigned int 10115 vec_cmpnrg_idx(__vector unsigned int __a, __vector unsigned int __b, 10116 __vector unsigned int __c) { 10117 return __builtin_s390_vstrcf(__a, __b, __c, 8); 10118 } 10119 10120 /*-- vec_cmpnrg_idx_cc ------------------------------------------------------*/ 10121 10122 static inline __ATTRS_o_ai __vector unsigned char 10123 vec_cmpnrg_idx_cc(__vector unsigned char __a, __vector unsigned char __b, 10124 __vector unsigned char __c, int *__cc) { 10125 return __builtin_s390_vstrcbs(__a, __b, __c, 8, __cc); 10126 } 10127 10128 static inline __ATTRS_o_ai __vector unsigned short 10129 vec_cmpnrg_idx_cc(__vector unsigned short __a, __vector unsigned short __b, 10130 __vector unsigned short __c, int *__cc) { 10131 return __builtin_s390_vstrchs(__a, __b, __c, 8, __cc); 10132 } 10133 10134 static inline __ATTRS_o_ai __vector unsigned int 10135 vec_cmpnrg_idx_cc(__vector unsigned int __a, __vector unsigned int __b, 10136 __vector unsigned int __c, int *__cc) { 10137 return __builtin_s390_vstrcfs(__a, __b, __c, 8, __cc); 10138 } 10139 10140 /*-- vec_cmpnrg_or_0_idx ----------------------------------------------------*/ 10141 10142 static inline __ATTRS_o_ai __vector unsigned char 10143 vec_cmpnrg_or_0_idx(__vector unsigned char __a, __vector unsigned char __b, 10144 __vector unsigned char __c) { 10145 return __builtin_s390_vstrczb(__a, __b, __c, 8); 10146 } 10147 10148 static inline __ATTRS_o_ai __vector unsigned short 10149 vec_cmpnrg_or_0_idx(__vector unsigned short __a, __vector unsigned short __b, 10150 __vector unsigned short __c) { 10151 return __builtin_s390_vstrczh(__a, __b, __c, 8); 10152 } 10153 10154 static inline __ATTRS_o_ai __vector unsigned int 10155 vec_cmpnrg_or_0_idx(__vector unsigned int __a, __vector unsigned int __b, 10156 __vector unsigned int __c) { 10157 return __builtin_s390_vstrczf(__a, __b, __c, 8); 10158 } 10159 10160 /*-- vec_cmpnrg_or_0_idx_cc -------------------------------------------------*/ 10161 10162 static inline __ATTRS_o_ai __vector unsigned char 10163 vec_cmpnrg_or_0_idx_cc(__vector unsigned char __a, 10164 __vector unsigned char __b, 10165 __vector unsigned char __c, int *__cc) { 10166 return __builtin_s390_vstrczbs(__a, __b, __c, 8, __cc); 10167 } 10168 10169 static inline __ATTRS_o_ai __vector unsigned short 10170 vec_cmpnrg_or_0_idx_cc(__vector unsigned short __a, 10171 __vector unsigned short __b, 10172 __vector unsigned short __c, int *__cc) { 10173 return __builtin_s390_vstrczhs(__a, __b, __c, 8, __cc); 10174 } 10175 10176 static inline __ATTRS_o_ai __vector unsigned int 10177 vec_cmpnrg_or_0_idx_cc(__vector unsigned int __a, 10178 __vector unsigned int __b, 10179 __vector unsigned int __c, int *__cc) { 10180 return __builtin_s390_vstrczfs(__a, __b, __c, 8, __cc); 10181 } 10182 10183 /*-- vec_find_any_eq --------------------------------------------------------*/ 10184 10185 static inline __ATTRS_o_ai __vector __bool char 10186 vec_find_any_eq(__vector signed char __a, __vector signed char __b) { 10187 return (__vector __bool char) 10188 __builtin_s390_vfaeb((__vector unsigned char)__a, 10189 (__vector unsigned char)__b, 4); 10190 } 10191 10192 static inline __ATTRS_o_ai __vector __bool char 10193 vec_find_any_eq(__vector __bool char __a, __vector __bool char __b) { 10194 return (__vector __bool char) 10195 __builtin_s390_vfaeb((__vector unsigned char)__a, 10196 (__vector unsigned char)__b, 4); 10197 } 10198 10199 static inline __ATTRS_o_ai __vector __bool char 10200 vec_find_any_eq(__vector unsigned char __a, __vector unsigned char __b) { 10201 return (__vector __bool char)__builtin_s390_vfaeb(__a, __b, 4); 10202 } 10203 10204 static inline __ATTRS_o_ai __vector __bool short 10205 vec_find_any_eq(__vector signed short __a, __vector signed short __b) { 10206 return (__vector __bool short) 10207 __builtin_s390_vfaeh((__vector unsigned short)__a, 10208 (__vector unsigned short)__b, 4); 10209 } 10210 10211 static inline __ATTRS_o_ai __vector __bool short 10212 vec_find_any_eq(__vector __bool short __a, __vector __bool short __b) { 10213 return (__vector __bool short) 10214 __builtin_s390_vfaeh((__vector unsigned short)__a, 10215 (__vector unsigned short)__b, 4); 10216 } 10217 10218 static inline __ATTRS_o_ai __vector __bool short 10219 vec_find_any_eq(__vector unsigned short __a, __vector unsigned short __b) { 10220 return (__vector __bool short)__builtin_s390_vfaeh(__a, __b, 4); 10221 } 10222 10223 static inline __ATTRS_o_ai __vector __bool int 10224 vec_find_any_eq(__vector signed int __a, __vector signed int __b) { 10225 return (__vector __bool int) 10226 __builtin_s390_vfaef((__vector unsigned int)__a, 10227 (__vector unsigned int)__b, 4); 10228 } 10229 10230 static inline __ATTRS_o_ai __vector __bool int 10231 vec_find_any_eq(__vector __bool int __a, __vector __bool int __b) { 10232 return (__vector __bool int) 10233 __builtin_s390_vfaef((__vector unsigned int)__a, 10234 (__vector unsigned int)__b, 4); 10235 } 10236 10237 static inline __ATTRS_o_ai __vector __bool int 10238 vec_find_any_eq(__vector unsigned int __a, __vector unsigned int __b) { 10239 return (__vector __bool int)__builtin_s390_vfaef(__a, __b, 4); 10240 } 10241 10242 /*-- vec_find_any_eq_cc -----------------------------------------------------*/ 10243 10244 static inline __ATTRS_o_ai __vector __bool char 10245 vec_find_any_eq_cc(__vector signed char __a, __vector signed char __b, 10246 int *__cc) { 10247 return (__vector __bool char) 10248 __builtin_s390_vfaebs((__vector unsigned char)__a, 10249 (__vector unsigned char)__b, 4, __cc); 10250 } 10251 10252 static inline __ATTRS_o_ai __vector __bool char 10253 vec_find_any_eq_cc(__vector __bool char __a, __vector __bool char __b, 10254 int *__cc) { 10255 return (__vector __bool char) 10256 __builtin_s390_vfaebs((__vector unsigned char)__a, 10257 (__vector unsigned char)__b, 4, __cc); 10258 } 10259 10260 static inline __ATTRS_o_ai __vector __bool char 10261 vec_find_any_eq_cc(__vector unsigned char __a, __vector unsigned char __b, 10262 int *__cc) { 10263 return (__vector __bool char)__builtin_s390_vfaebs(__a, __b, 4, __cc); 10264 } 10265 10266 static inline __ATTRS_o_ai __vector __bool short 10267 vec_find_any_eq_cc(__vector signed short __a, __vector signed short __b, 10268 int *__cc) { 10269 return (__vector __bool short) 10270 __builtin_s390_vfaehs((__vector unsigned short)__a, 10271 (__vector unsigned short)__b, 4, __cc); 10272 } 10273 10274 static inline __ATTRS_o_ai __vector __bool short 10275 vec_find_any_eq_cc(__vector __bool short __a, __vector __bool short __b, 10276 int *__cc) { 10277 return (__vector __bool short) 10278 __builtin_s390_vfaehs((__vector unsigned short)__a, 10279 (__vector unsigned short)__b, 4, __cc); 10280 } 10281 10282 static inline __ATTRS_o_ai __vector __bool short 10283 vec_find_any_eq_cc(__vector unsigned short __a, __vector unsigned short __b, 10284 int *__cc) { 10285 return (__vector __bool short)__builtin_s390_vfaehs(__a, __b, 4, __cc); 10286 } 10287 10288 static inline __ATTRS_o_ai __vector __bool int 10289 vec_find_any_eq_cc(__vector signed int __a, __vector signed int __b, 10290 int *__cc) { 10291 return (__vector __bool int) 10292 __builtin_s390_vfaefs((__vector unsigned int)__a, 10293 (__vector unsigned int)__b, 4, __cc); 10294 } 10295 10296 static inline __ATTRS_o_ai __vector __bool int 10297 vec_find_any_eq_cc(__vector __bool int __a, __vector __bool int __b, 10298 int *__cc) { 10299 return (__vector __bool int) 10300 __builtin_s390_vfaefs((__vector unsigned int)__a, 10301 (__vector unsigned int)__b, 4, __cc); 10302 } 10303 10304 static inline __ATTRS_o_ai __vector __bool int 10305 vec_find_any_eq_cc(__vector unsigned int __a, __vector unsigned int __b, 10306 int *__cc) { 10307 return (__vector __bool int)__builtin_s390_vfaefs(__a, __b, 4, __cc); 10308 } 10309 10310 /*-- vec_find_any_eq_idx ----------------------------------------------------*/ 10311 10312 static inline __ATTRS_o_ai __vector signed char 10313 vec_find_any_eq_idx(__vector signed char __a, __vector signed char __b) { 10314 return (__vector signed char) 10315 __builtin_s390_vfaeb((__vector unsigned char)__a, 10316 (__vector unsigned char)__b, 0); 10317 } 10318 10319 static inline __ATTRS_o_ai __vector unsigned char 10320 vec_find_any_eq_idx(__vector __bool char __a, __vector __bool char __b) { 10321 return __builtin_s390_vfaeb((__vector unsigned char)__a, 10322 (__vector unsigned char)__b, 0); 10323 } 10324 10325 static inline __ATTRS_o_ai __vector unsigned char 10326 vec_find_any_eq_idx(__vector unsigned char __a, __vector unsigned char __b) { 10327 return __builtin_s390_vfaeb(__a, __b, 0); 10328 } 10329 10330 static inline __ATTRS_o_ai __vector signed short 10331 vec_find_any_eq_idx(__vector signed short __a, __vector signed short __b) { 10332 return (__vector signed short) 10333 __builtin_s390_vfaeh((__vector unsigned short)__a, 10334 (__vector unsigned short)__b, 0); 10335 } 10336 10337 static inline __ATTRS_o_ai __vector unsigned short 10338 vec_find_any_eq_idx(__vector __bool short __a, __vector __bool short __b) { 10339 return __builtin_s390_vfaeh((__vector unsigned short)__a, 10340 (__vector unsigned short)__b, 0); 10341 } 10342 10343 static inline __ATTRS_o_ai __vector unsigned short 10344 vec_find_any_eq_idx(__vector unsigned short __a, __vector unsigned short __b) { 10345 return __builtin_s390_vfaeh(__a, __b, 0); 10346 } 10347 10348 static inline __ATTRS_o_ai __vector signed int 10349 vec_find_any_eq_idx(__vector signed int __a, __vector signed int __b) { 10350 return (__vector signed int) 10351 __builtin_s390_vfaef((__vector unsigned int)__a, 10352 (__vector unsigned int)__b, 0); 10353 } 10354 10355 static inline __ATTRS_o_ai __vector unsigned int 10356 vec_find_any_eq_idx(__vector __bool int __a, __vector __bool int __b) { 10357 return __builtin_s390_vfaef((__vector unsigned int)__a, 10358 (__vector unsigned int)__b, 0); 10359 } 10360 10361 static inline __ATTRS_o_ai __vector unsigned int 10362 vec_find_any_eq_idx(__vector unsigned int __a, __vector unsigned int __b) { 10363 return __builtin_s390_vfaef(__a, __b, 0); 10364 } 10365 10366 /*-- vec_find_any_eq_idx_cc -------------------------------------------------*/ 10367 10368 static inline __ATTRS_o_ai __vector signed char 10369 vec_find_any_eq_idx_cc(__vector signed char __a, 10370 __vector signed char __b, int *__cc) { 10371 return (__vector signed char) 10372 __builtin_s390_vfaebs((__vector unsigned char)__a, 10373 (__vector unsigned char)__b, 0, __cc); 10374 } 10375 10376 static inline __ATTRS_o_ai __vector unsigned char 10377 vec_find_any_eq_idx_cc(__vector __bool char __a, 10378 __vector __bool char __b, int *__cc) { 10379 return __builtin_s390_vfaebs((__vector unsigned char)__a, 10380 (__vector unsigned char)__b, 0, __cc); 10381 } 10382 10383 static inline __ATTRS_o_ai __vector unsigned char 10384 vec_find_any_eq_idx_cc(__vector unsigned char __a, 10385 __vector unsigned char __b, int *__cc) { 10386 return __builtin_s390_vfaebs(__a, __b, 0, __cc); 10387 } 10388 10389 static inline __ATTRS_o_ai __vector signed short 10390 vec_find_any_eq_idx_cc(__vector signed short __a, 10391 __vector signed short __b, int *__cc) { 10392 return (__vector signed short) 10393 __builtin_s390_vfaehs((__vector unsigned short)__a, 10394 (__vector unsigned short)__b, 0, __cc); 10395 } 10396 10397 static inline __ATTRS_o_ai __vector unsigned short 10398 vec_find_any_eq_idx_cc(__vector __bool short __a, 10399 __vector __bool short __b, int *__cc) { 10400 return __builtin_s390_vfaehs((__vector unsigned short)__a, 10401 (__vector unsigned short)__b, 0, __cc); 10402 } 10403 10404 static inline __ATTRS_o_ai __vector unsigned short 10405 vec_find_any_eq_idx_cc(__vector unsigned short __a, 10406 __vector unsigned short __b, int *__cc) { 10407 return __builtin_s390_vfaehs(__a, __b, 0, __cc); 10408 } 10409 10410 static inline __ATTRS_o_ai __vector signed int 10411 vec_find_any_eq_idx_cc(__vector signed int __a, 10412 __vector signed int __b, int *__cc) { 10413 return (__vector signed int) 10414 __builtin_s390_vfaefs((__vector unsigned int)__a, 10415 (__vector unsigned int)__b, 0, __cc); 10416 } 10417 10418 static inline __ATTRS_o_ai __vector unsigned int 10419 vec_find_any_eq_idx_cc(__vector __bool int __a, 10420 __vector __bool int __b, int *__cc) { 10421 return __builtin_s390_vfaefs((__vector unsigned int)__a, 10422 (__vector unsigned int)__b, 0, __cc); 10423 } 10424 10425 static inline __ATTRS_o_ai __vector unsigned int 10426 vec_find_any_eq_idx_cc(__vector unsigned int __a, 10427 __vector unsigned int __b, int *__cc) { 10428 return __builtin_s390_vfaefs(__a, __b, 0, __cc); 10429 } 10430 10431 /*-- vec_find_any_eq_or_0_idx -----------------------------------------------*/ 10432 10433 static inline __ATTRS_o_ai __vector signed char 10434 vec_find_any_eq_or_0_idx(__vector signed char __a, 10435 __vector signed char __b) { 10436 return (__vector signed char) 10437 __builtin_s390_vfaezb((__vector unsigned char)__a, 10438 (__vector unsigned char)__b, 0); 10439 } 10440 10441 static inline __ATTRS_o_ai __vector unsigned char 10442 vec_find_any_eq_or_0_idx(__vector __bool char __a, 10443 __vector __bool char __b) { 10444 return __builtin_s390_vfaezb((__vector unsigned char)__a, 10445 (__vector unsigned char)__b, 0); 10446 } 10447 10448 static inline __ATTRS_o_ai __vector unsigned char 10449 vec_find_any_eq_or_0_idx(__vector unsigned char __a, 10450 __vector unsigned char __b) { 10451 return __builtin_s390_vfaezb(__a, __b, 0); 10452 } 10453 10454 static inline __ATTRS_o_ai __vector signed short 10455 vec_find_any_eq_or_0_idx(__vector signed short __a, 10456 __vector signed short __b) { 10457 return (__vector signed short) 10458 __builtin_s390_vfaezh((__vector unsigned short)__a, 10459 (__vector unsigned short)__b, 0); 10460 } 10461 10462 static inline __ATTRS_o_ai __vector unsigned short 10463 vec_find_any_eq_or_0_idx(__vector __bool short __a, 10464 __vector __bool short __b) { 10465 return __builtin_s390_vfaezh((__vector unsigned short)__a, 10466 (__vector unsigned short)__b, 0); 10467 } 10468 10469 static inline __ATTRS_o_ai __vector unsigned short 10470 vec_find_any_eq_or_0_idx(__vector unsigned short __a, 10471 __vector unsigned short __b) { 10472 return __builtin_s390_vfaezh(__a, __b, 0); 10473 } 10474 10475 static inline __ATTRS_o_ai __vector signed int 10476 vec_find_any_eq_or_0_idx(__vector signed int __a, 10477 __vector signed int __b) { 10478 return (__vector signed int) 10479 __builtin_s390_vfaezf((__vector unsigned int)__a, 10480 (__vector unsigned int)__b, 0); 10481 } 10482 10483 static inline __ATTRS_o_ai __vector unsigned int 10484 vec_find_any_eq_or_0_idx(__vector __bool int __a, 10485 __vector __bool int __b) { 10486 return __builtin_s390_vfaezf((__vector unsigned int)__a, 10487 (__vector unsigned int)__b, 0); 10488 } 10489 10490 static inline __ATTRS_o_ai __vector unsigned int 10491 vec_find_any_eq_or_0_idx(__vector unsigned int __a, 10492 __vector unsigned int __b) { 10493 return __builtin_s390_vfaezf(__a, __b, 0); 10494 } 10495 10496 /*-- vec_find_any_eq_or_0_idx_cc --------------------------------------------*/ 10497 10498 static inline __ATTRS_o_ai __vector signed char 10499 vec_find_any_eq_or_0_idx_cc(__vector signed char __a, 10500 __vector signed char __b, int *__cc) { 10501 return (__vector signed char) 10502 __builtin_s390_vfaezbs((__vector unsigned char)__a, 10503 (__vector unsigned char)__b, 0, __cc); 10504 } 10505 10506 static inline __ATTRS_o_ai __vector unsigned char 10507 vec_find_any_eq_or_0_idx_cc(__vector __bool char __a, 10508 __vector __bool char __b, int *__cc) { 10509 return __builtin_s390_vfaezbs((__vector unsigned char)__a, 10510 (__vector unsigned char)__b, 0, __cc); 10511 } 10512 10513 static inline __ATTRS_o_ai __vector unsigned char 10514 vec_find_any_eq_or_0_idx_cc(__vector unsigned char __a, 10515 __vector unsigned char __b, int *__cc) { 10516 return __builtin_s390_vfaezbs(__a, __b, 0, __cc); 10517 } 10518 10519 static inline __ATTRS_o_ai __vector signed short 10520 vec_find_any_eq_or_0_idx_cc(__vector signed short __a, 10521 __vector signed short __b, int *__cc) { 10522 return (__vector signed short) 10523 __builtin_s390_vfaezhs((__vector unsigned short)__a, 10524 (__vector unsigned short)__b, 0, __cc); 10525 } 10526 10527 static inline __ATTRS_o_ai __vector unsigned short 10528 vec_find_any_eq_or_0_idx_cc(__vector __bool short __a, 10529 __vector __bool short __b, int *__cc) { 10530 return __builtin_s390_vfaezhs((__vector unsigned short)__a, 10531 (__vector unsigned short)__b, 0, __cc); 10532 } 10533 10534 static inline __ATTRS_o_ai __vector unsigned short 10535 vec_find_any_eq_or_0_idx_cc(__vector unsigned short __a, 10536 __vector unsigned short __b, int *__cc) { 10537 return __builtin_s390_vfaezhs(__a, __b, 0, __cc); 10538 } 10539 10540 static inline __ATTRS_o_ai __vector signed int 10541 vec_find_any_eq_or_0_idx_cc(__vector signed int __a, 10542 __vector signed int __b, int *__cc) { 10543 return (__vector signed int) 10544 __builtin_s390_vfaezfs((__vector unsigned int)__a, 10545 (__vector unsigned int)__b, 0, __cc); 10546 } 10547 10548 static inline __ATTRS_o_ai __vector unsigned int 10549 vec_find_any_eq_or_0_idx_cc(__vector __bool int __a, 10550 __vector __bool int __b, int *__cc) { 10551 return __builtin_s390_vfaezfs((__vector unsigned int)__a, 10552 (__vector unsigned int)__b, 0, __cc); 10553 } 10554 10555 static inline __ATTRS_o_ai __vector unsigned int 10556 vec_find_any_eq_or_0_idx_cc(__vector unsigned int __a, 10557 __vector unsigned int __b, int *__cc) { 10558 return __builtin_s390_vfaezfs(__a, __b, 0, __cc); 10559 } 10560 10561 /*-- vec_find_any_ne --------------------------------------------------------*/ 10562 10563 static inline __ATTRS_o_ai __vector __bool char 10564 vec_find_any_ne(__vector signed char __a, __vector signed char __b) { 10565 return (__vector __bool char) 10566 __builtin_s390_vfaeb((__vector unsigned char)__a, 10567 (__vector unsigned char)__b, 12); 10568 } 10569 10570 static inline __ATTRS_o_ai __vector __bool char 10571 vec_find_any_ne(__vector __bool char __a, __vector __bool char __b) { 10572 return (__vector __bool char) 10573 __builtin_s390_vfaeb((__vector unsigned char)__a, 10574 (__vector unsigned char)__b, 12); 10575 } 10576 10577 static inline __ATTRS_o_ai __vector __bool char 10578 vec_find_any_ne(__vector unsigned char __a, __vector unsigned char __b) { 10579 return (__vector __bool char)__builtin_s390_vfaeb(__a, __b, 12); 10580 } 10581 10582 static inline __ATTRS_o_ai __vector __bool short 10583 vec_find_any_ne(__vector signed short __a, __vector signed short __b) { 10584 return (__vector __bool short) 10585 __builtin_s390_vfaeh((__vector unsigned short)__a, 10586 (__vector unsigned short)__b, 12); 10587 } 10588 10589 static inline __ATTRS_o_ai __vector __bool short 10590 vec_find_any_ne(__vector __bool short __a, __vector __bool short __b) { 10591 return (__vector __bool short) 10592 __builtin_s390_vfaeh((__vector unsigned short)__a, 10593 (__vector unsigned short)__b, 12); 10594 } 10595 10596 static inline __ATTRS_o_ai __vector __bool short 10597 vec_find_any_ne(__vector unsigned short __a, __vector unsigned short __b) { 10598 return (__vector __bool short)__builtin_s390_vfaeh(__a, __b, 12); 10599 } 10600 10601 static inline __ATTRS_o_ai __vector __bool int 10602 vec_find_any_ne(__vector signed int __a, __vector signed int __b) { 10603 return (__vector __bool int) 10604 __builtin_s390_vfaef((__vector unsigned int)__a, 10605 (__vector unsigned int)__b, 12); 10606 } 10607 10608 static inline __ATTRS_o_ai __vector __bool int 10609 vec_find_any_ne(__vector __bool int __a, __vector __bool int __b) { 10610 return (__vector __bool int) 10611 __builtin_s390_vfaef((__vector unsigned int)__a, 10612 (__vector unsigned int)__b, 12); 10613 } 10614 10615 static inline __ATTRS_o_ai __vector __bool int 10616 vec_find_any_ne(__vector unsigned int __a, __vector unsigned int __b) { 10617 return (__vector __bool int)__builtin_s390_vfaef(__a, __b, 12); 10618 } 10619 10620 /*-- vec_find_any_ne_cc -----------------------------------------------------*/ 10621 10622 static inline __ATTRS_o_ai __vector __bool char 10623 vec_find_any_ne_cc(__vector signed char __a, 10624 __vector signed char __b, int *__cc) { 10625 return (__vector __bool char) 10626 __builtin_s390_vfaebs((__vector unsigned char)__a, 10627 (__vector unsigned char)__b, 12, __cc); 10628 } 10629 10630 static inline __ATTRS_o_ai __vector __bool char 10631 vec_find_any_ne_cc(__vector __bool char __a, 10632 __vector __bool char __b, int *__cc) { 10633 return (__vector __bool char) 10634 __builtin_s390_vfaebs((__vector unsigned char)__a, 10635 (__vector unsigned char)__b, 12, __cc); 10636 } 10637 10638 static inline __ATTRS_o_ai __vector __bool char 10639 vec_find_any_ne_cc(__vector unsigned char __a, 10640 __vector unsigned char __b, int *__cc) { 10641 return (__vector __bool char)__builtin_s390_vfaebs(__a, __b, 12, __cc); 10642 } 10643 10644 static inline __ATTRS_o_ai __vector __bool short 10645 vec_find_any_ne_cc(__vector signed short __a, 10646 __vector signed short __b, int *__cc) { 10647 return (__vector __bool short) 10648 __builtin_s390_vfaehs((__vector unsigned short)__a, 10649 (__vector unsigned short)__b, 12, __cc); 10650 } 10651 10652 static inline __ATTRS_o_ai __vector __bool short 10653 vec_find_any_ne_cc(__vector __bool short __a, 10654 __vector __bool short __b, int *__cc) { 10655 return (__vector __bool short) 10656 __builtin_s390_vfaehs((__vector unsigned short)__a, 10657 (__vector unsigned short)__b, 12, __cc); 10658 } 10659 10660 static inline __ATTRS_o_ai __vector __bool short 10661 vec_find_any_ne_cc(__vector unsigned short __a, 10662 __vector unsigned short __b, int *__cc) { 10663 return (__vector __bool short)__builtin_s390_vfaehs(__a, __b, 12, __cc); 10664 } 10665 10666 static inline __ATTRS_o_ai __vector __bool int 10667 vec_find_any_ne_cc(__vector signed int __a, 10668 __vector signed int __b, int *__cc) { 10669 return (__vector __bool int) 10670 __builtin_s390_vfaefs((__vector unsigned int)__a, 10671 (__vector unsigned int)__b, 12, __cc); 10672 } 10673 10674 static inline __ATTRS_o_ai __vector __bool int 10675 vec_find_any_ne_cc(__vector __bool int __a, 10676 __vector __bool int __b, int *__cc) { 10677 return (__vector __bool int) 10678 __builtin_s390_vfaefs((__vector unsigned int)__a, 10679 (__vector unsigned int)__b, 12, __cc); 10680 } 10681 10682 static inline __ATTRS_o_ai __vector __bool int 10683 vec_find_any_ne_cc(__vector unsigned int __a, 10684 __vector unsigned int __b, int *__cc) { 10685 return (__vector __bool int)__builtin_s390_vfaefs(__a, __b, 12, __cc); 10686 } 10687 10688 /*-- vec_find_any_ne_idx ----------------------------------------------------*/ 10689 10690 static inline __ATTRS_o_ai __vector signed char 10691 vec_find_any_ne_idx(__vector signed char __a, __vector signed char __b) { 10692 return (__vector signed char) 10693 __builtin_s390_vfaeb((__vector unsigned char)__a, 10694 (__vector unsigned char)__b, 8); 10695 } 10696 10697 static inline __ATTRS_o_ai __vector unsigned char 10698 vec_find_any_ne_idx(__vector __bool char __a, __vector __bool char __b) { 10699 return __builtin_s390_vfaeb((__vector unsigned char)__a, 10700 (__vector unsigned char)__b, 8); 10701 } 10702 10703 static inline __ATTRS_o_ai __vector unsigned char 10704 vec_find_any_ne_idx(__vector unsigned char __a, __vector unsigned char __b) { 10705 return __builtin_s390_vfaeb(__a, __b, 8); 10706 } 10707 10708 static inline __ATTRS_o_ai __vector signed short 10709 vec_find_any_ne_idx(__vector signed short __a, __vector signed short __b) { 10710 return (__vector signed short) 10711 __builtin_s390_vfaeh((__vector unsigned short)__a, 10712 (__vector unsigned short)__b, 8); 10713 } 10714 10715 static inline __ATTRS_o_ai __vector unsigned short 10716 vec_find_any_ne_idx(__vector __bool short __a, __vector __bool short __b) { 10717 return __builtin_s390_vfaeh((__vector unsigned short)__a, 10718 (__vector unsigned short)__b, 8); 10719 } 10720 10721 static inline __ATTRS_o_ai __vector unsigned short 10722 vec_find_any_ne_idx(__vector unsigned short __a, __vector unsigned short __b) { 10723 return __builtin_s390_vfaeh(__a, __b, 8); 10724 } 10725 10726 static inline __ATTRS_o_ai __vector signed int 10727 vec_find_any_ne_idx(__vector signed int __a, __vector signed int __b) { 10728 return (__vector signed int) 10729 __builtin_s390_vfaef((__vector unsigned int)__a, 10730 (__vector unsigned int)__b, 8); 10731 } 10732 10733 static inline __ATTRS_o_ai __vector unsigned int 10734 vec_find_any_ne_idx(__vector __bool int __a, __vector __bool int __b) { 10735 return __builtin_s390_vfaef((__vector unsigned int)__a, 10736 (__vector unsigned int)__b, 8); 10737 } 10738 10739 static inline __ATTRS_o_ai __vector unsigned int 10740 vec_find_any_ne_idx(__vector unsigned int __a, __vector unsigned int __b) { 10741 return __builtin_s390_vfaef(__a, __b, 8); 10742 } 10743 10744 /*-- vec_find_any_ne_idx_cc -------------------------------------------------*/ 10745 10746 static inline __ATTRS_o_ai __vector signed char 10747 vec_find_any_ne_idx_cc(__vector signed char __a, 10748 __vector signed char __b, int *__cc) { 10749 return (__vector signed char) 10750 __builtin_s390_vfaebs((__vector unsigned char)__a, 10751 (__vector unsigned char)__b, 8, __cc); 10752 } 10753 10754 static inline __ATTRS_o_ai __vector unsigned char 10755 vec_find_any_ne_idx_cc(__vector __bool char __a, 10756 __vector __bool char __b, int *__cc) { 10757 return __builtin_s390_vfaebs((__vector unsigned char)__a, 10758 (__vector unsigned char)__b, 8, __cc); 10759 } 10760 10761 static inline __ATTRS_o_ai __vector unsigned char 10762 vec_find_any_ne_idx_cc(__vector unsigned char __a, 10763 __vector unsigned char __b, 10764 int *__cc) { 10765 return __builtin_s390_vfaebs(__a, __b, 8, __cc); 10766 } 10767 10768 static inline __ATTRS_o_ai __vector signed short 10769 vec_find_any_ne_idx_cc(__vector signed short __a, 10770 __vector signed short __b, int *__cc) { 10771 return (__vector signed short) 10772 __builtin_s390_vfaehs((__vector unsigned short)__a, 10773 (__vector unsigned short)__b, 8, __cc); 10774 } 10775 10776 static inline __ATTRS_o_ai __vector unsigned short 10777 vec_find_any_ne_idx_cc(__vector __bool short __a, 10778 __vector __bool short __b, int *__cc) { 10779 return __builtin_s390_vfaehs((__vector unsigned short)__a, 10780 (__vector unsigned short)__b, 8, __cc); 10781 } 10782 10783 static inline __ATTRS_o_ai __vector unsigned short 10784 vec_find_any_ne_idx_cc(__vector unsigned short __a, 10785 __vector unsigned short __b, int *__cc) { 10786 return __builtin_s390_vfaehs(__a, __b, 8, __cc); 10787 } 10788 10789 static inline __ATTRS_o_ai __vector signed int 10790 vec_find_any_ne_idx_cc(__vector signed int __a, 10791 __vector signed int __b, int *__cc) { 10792 return (__vector signed int) 10793 __builtin_s390_vfaefs((__vector unsigned int)__a, 10794 (__vector unsigned int)__b, 8, __cc); 10795 } 10796 10797 static inline __ATTRS_o_ai __vector unsigned int 10798 vec_find_any_ne_idx_cc(__vector __bool int __a, 10799 __vector __bool int __b, int *__cc) { 10800 return __builtin_s390_vfaefs((__vector unsigned int)__a, 10801 (__vector unsigned int)__b, 8, __cc); 10802 } 10803 10804 static inline __ATTRS_o_ai __vector unsigned int 10805 vec_find_any_ne_idx_cc(__vector unsigned int __a, 10806 __vector unsigned int __b, int *__cc) { 10807 return __builtin_s390_vfaefs(__a, __b, 8, __cc); 10808 } 10809 10810 /*-- vec_find_any_ne_or_0_idx -----------------------------------------------*/ 10811 10812 static inline __ATTRS_o_ai __vector signed char 10813 vec_find_any_ne_or_0_idx(__vector signed char __a, 10814 __vector signed char __b) { 10815 return (__vector signed char) 10816 __builtin_s390_vfaezb((__vector unsigned char)__a, 10817 (__vector unsigned char)__b, 8); 10818 } 10819 10820 static inline __ATTRS_o_ai __vector unsigned char 10821 vec_find_any_ne_or_0_idx(__vector __bool char __a, 10822 __vector __bool char __b) { 10823 return __builtin_s390_vfaezb((__vector unsigned char)__a, 10824 (__vector unsigned char)__b, 8); 10825 } 10826 10827 static inline __ATTRS_o_ai __vector unsigned char 10828 vec_find_any_ne_or_0_idx(__vector unsigned char __a, 10829 __vector unsigned char __b) { 10830 return __builtin_s390_vfaezb(__a, __b, 8); 10831 } 10832 10833 static inline __ATTRS_o_ai __vector signed short 10834 vec_find_any_ne_or_0_idx(__vector signed short __a, 10835 __vector signed short __b) { 10836 return (__vector signed short) 10837 __builtin_s390_vfaezh((__vector unsigned short)__a, 10838 (__vector unsigned short)__b, 8); 10839 } 10840 10841 static inline __ATTRS_o_ai __vector unsigned short 10842 vec_find_any_ne_or_0_idx(__vector __bool short __a, 10843 __vector __bool short __b) { 10844 return __builtin_s390_vfaezh((__vector unsigned short)__a, 10845 (__vector unsigned short)__b, 8); 10846 } 10847 10848 static inline __ATTRS_o_ai __vector unsigned short 10849 vec_find_any_ne_or_0_idx(__vector unsigned short __a, 10850 __vector unsigned short __b) { 10851 return __builtin_s390_vfaezh(__a, __b, 8); 10852 } 10853 10854 static inline __ATTRS_o_ai __vector signed int 10855 vec_find_any_ne_or_0_idx(__vector signed int __a, 10856 __vector signed int __b) { 10857 return (__vector signed int) 10858 __builtin_s390_vfaezf((__vector unsigned int)__a, 10859 (__vector unsigned int)__b, 8); 10860 } 10861 10862 static inline __ATTRS_o_ai __vector unsigned int 10863 vec_find_any_ne_or_0_idx(__vector __bool int __a, 10864 __vector __bool int __b) { 10865 return __builtin_s390_vfaezf((__vector unsigned int)__a, 10866 (__vector unsigned int)__b, 8); 10867 } 10868 10869 static inline __ATTRS_o_ai __vector unsigned int 10870 vec_find_any_ne_or_0_idx(__vector unsigned int __a, 10871 __vector unsigned int __b) { 10872 return __builtin_s390_vfaezf(__a, __b, 8); 10873 } 10874 10875 /*-- vec_find_any_ne_or_0_idx_cc --------------------------------------------*/ 10876 10877 static inline __ATTRS_o_ai __vector signed char 10878 vec_find_any_ne_or_0_idx_cc(__vector signed char __a, 10879 __vector signed char __b, int *__cc) { 10880 return (__vector signed char) 10881 __builtin_s390_vfaezbs((__vector unsigned char)__a, 10882 (__vector unsigned char)__b, 8, __cc); 10883 } 10884 10885 static inline __ATTRS_o_ai __vector unsigned char 10886 vec_find_any_ne_or_0_idx_cc(__vector __bool char __a, 10887 __vector __bool char __b, int *__cc) { 10888 return __builtin_s390_vfaezbs((__vector unsigned char)__a, 10889 (__vector unsigned char)__b, 8, __cc); 10890 } 10891 10892 static inline __ATTRS_o_ai __vector unsigned char 10893 vec_find_any_ne_or_0_idx_cc(__vector unsigned char __a, 10894 __vector unsigned char __b, int *__cc) { 10895 return __builtin_s390_vfaezbs(__a, __b, 8, __cc); 10896 } 10897 10898 static inline __ATTRS_o_ai __vector signed short 10899 vec_find_any_ne_or_0_idx_cc(__vector signed short __a, 10900 __vector signed short __b, int *__cc) { 10901 return (__vector signed short) 10902 __builtin_s390_vfaezhs((__vector unsigned short)__a, 10903 (__vector unsigned short)__b, 8, __cc); 10904 } 10905 10906 static inline __ATTRS_o_ai __vector unsigned short 10907 vec_find_any_ne_or_0_idx_cc(__vector __bool short __a, 10908 __vector __bool short __b, int *__cc) { 10909 return __builtin_s390_vfaezhs((__vector unsigned short)__a, 10910 (__vector unsigned short)__b, 8, __cc); 10911 } 10912 10913 static inline __ATTRS_o_ai __vector unsigned short 10914 vec_find_any_ne_or_0_idx_cc(__vector unsigned short __a, 10915 __vector unsigned short __b, int *__cc) { 10916 return __builtin_s390_vfaezhs(__a, __b, 8, __cc); 10917 } 10918 10919 static inline __ATTRS_o_ai __vector signed int 10920 vec_find_any_ne_or_0_idx_cc(__vector signed int __a, 10921 __vector signed int __b, int *__cc) { 10922 return (__vector signed int) 10923 __builtin_s390_vfaezfs((__vector unsigned int)__a, 10924 (__vector unsigned int)__b, 8, __cc); 10925 } 10926 10927 static inline __ATTRS_o_ai __vector unsigned int 10928 vec_find_any_ne_or_0_idx_cc(__vector __bool int __a, 10929 __vector __bool int __b, int *__cc) { 10930 return __builtin_s390_vfaezfs((__vector unsigned int)__a, 10931 (__vector unsigned int)__b, 8, __cc); 10932 } 10933 10934 static inline __ATTRS_o_ai __vector unsigned int 10935 vec_find_any_ne_or_0_idx_cc(__vector unsigned int __a, 10936 __vector unsigned int __b, int *__cc) { 10937 return __builtin_s390_vfaezfs(__a, __b, 8, __cc); 10938 } 10939 10940 /*-- vec_search_string_cc ---------------------------------------------------*/ 10941 10942 #if __ARCH__ >= 13 10943 10944 static inline __ATTRS_o_ai __vector unsigned char 10945 vec_search_string_cc(__vector signed char __a, __vector signed char __b, 10946 __vector unsigned char __c, int *__cc) { 10947 return __builtin_s390_vstrsb((__vector unsigned char)__a, 10948 (__vector unsigned char)__b, __c, __cc); 10949 } 10950 10951 static inline __ATTRS_o_ai __vector unsigned char 10952 vec_search_string_cc(__vector __bool char __a, __vector __bool char __b, 10953 __vector unsigned char __c, int *__cc) { 10954 return __builtin_s390_vstrsb((__vector unsigned char)__a, 10955 (__vector unsigned char)__b, __c, __cc); 10956 } 10957 10958 static inline __ATTRS_o_ai __vector unsigned char 10959 vec_search_string_cc(__vector unsigned char __a, __vector unsigned char __b, 10960 __vector unsigned char __c, int *__cc) { 10961 return __builtin_s390_vstrsb(__a, __b, __c, __cc); 10962 } 10963 10964 static inline __ATTRS_o_ai __vector unsigned char 10965 vec_search_string_cc(__vector signed short __a, __vector signed short __b, 10966 __vector unsigned char __c, int *__cc) { 10967 return __builtin_s390_vstrsh((__vector unsigned short)__a, 10968 (__vector unsigned short)__b, __c, __cc); 10969 } 10970 10971 static inline __ATTRS_o_ai __vector unsigned char 10972 vec_search_string_cc(__vector __bool short __a, __vector __bool short __b, 10973 __vector unsigned char __c, int *__cc) { 10974 return __builtin_s390_vstrsh((__vector unsigned short)__a, 10975 (__vector unsigned short)__b, __c, __cc); 10976 } 10977 10978 static inline __ATTRS_o_ai __vector unsigned char 10979 vec_search_string_cc(__vector unsigned short __a, __vector unsigned short __b, 10980 __vector unsigned char __c, int *__cc) { 10981 return __builtin_s390_vstrsh(__a, __b, __c, __cc); 10982 } 10983 10984 static inline __ATTRS_o_ai __vector unsigned char 10985 vec_search_string_cc(__vector signed int __a, __vector signed int __b, 10986 __vector unsigned char __c, int *__cc) { 10987 return __builtin_s390_vstrsf((__vector unsigned int)__a, 10988 (__vector unsigned int)__b, __c, __cc); 10989 } 10990 10991 static inline __ATTRS_o_ai __vector unsigned char 10992 vec_search_string_cc(__vector __bool int __a, __vector __bool int __b, 10993 __vector unsigned char __c, int *__cc) { 10994 return __builtin_s390_vstrsf((__vector unsigned int)__a, 10995 (__vector unsigned int)__b, __c, __cc); 10996 } 10997 10998 static inline __ATTRS_o_ai __vector unsigned char 10999 vec_search_string_cc(__vector unsigned int __a, __vector unsigned int __b, 11000 __vector unsigned char __c, int *__cc) { 11001 return __builtin_s390_vstrsf(__a, __b, __c, __cc); 11002 } 11003 11004 #endif 11005 11006 /*-- vec_search_string_until_zero_cc ----------------------------------------*/ 11007 11008 #if __ARCH__ >= 13 11009 11010 static inline __ATTRS_o_ai __vector unsigned char 11011 vec_search_string_until_zero_cc(__vector signed char __a, 11012 __vector signed char __b, 11013 __vector unsigned char __c, int *__cc) { 11014 return __builtin_s390_vstrszb((__vector unsigned char)__a, 11015 (__vector unsigned char)__b, __c, __cc); 11016 } 11017 11018 static inline __ATTRS_o_ai __vector unsigned char 11019 vec_search_string_until_zero_cc(__vector __bool char __a, 11020 __vector __bool char __b, 11021 __vector unsigned char __c, int *__cc) { 11022 return __builtin_s390_vstrszb((__vector unsigned char)__a, 11023 (__vector unsigned char)__b, __c, __cc); 11024 } 11025 11026 static inline __ATTRS_o_ai __vector unsigned char 11027 vec_search_string_until_zero_cc(__vector unsigned char __a, 11028 __vector unsigned char __b, 11029 __vector unsigned char __c, int *__cc) { 11030 return __builtin_s390_vstrszb(__a, __b, __c, __cc); 11031 } 11032 11033 static inline __ATTRS_o_ai __vector unsigned char 11034 vec_search_string_until_zero_cc(__vector signed short __a, 11035 __vector signed short __b, 11036 __vector unsigned char __c, int *__cc) { 11037 return __builtin_s390_vstrszh((__vector unsigned short)__a, 11038 (__vector unsigned short)__b, __c, __cc); 11039 } 11040 11041 static inline __ATTRS_o_ai __vector unsigned char 11042 vec_search_string_until_zero_cc(__vector __bool short __a, 11043 __vector __bool short __b, 11044 __vector unsigned char __c, int *__cc) { 11045 return __builtin_s390_vstrszh((__vector unsigned short)__a, 11046 (__vector unsigned short)__b, __c, __cc); 11047 } 11048 11049 static inline __ATTRS_o_ai __vector unsigned char 11050 vec_search_string_until_zero_cc(__vector unsigned short __a, 11051 __vector unsigned short __b, 11052 __vector unsigned char __c, int *__cc) { 11053 return __builtin_s390_vstrszh(__a, __b, __c, __cc); 11054 } 11055 11056 static inline __ATTRS_o_ai __vector unsigned char 11057 vec_search_string_until_zero_cc(__vector signed int __a, 11058 __vector signed int __b, 11059 __vector unsigned char __c, int *__cc) { 11060 return __builtin_s390_vstrszf((__vector unsigned int)__a, 11061 (__vector unsigned int)__b, __c, __cc); 11062 } 11063 11064 static inline __ATTRS_o_ai __vector unsigned char 11065 vec_search_string_until_zero_cc(__vector __bool int __a, 11066 __vector __bool int __b, 11067 __vector unsigned char __c, int *__cc) { 11068 return __builtin_s390_vstrszf((__vector unsigned int)__a, 11069 (__vector unsigned int)__b, __c, __cc); 11070 } 11071 11072 static inline __ATTRS_o_ai __vector unsigned char 11073 vec_search_string_until_zero_cc(__vector unsigned int __a, 11074 __vector unsigned int __b, 11075 __vector unsigned char __c, int *__cc) { 11076 return __builtin_s390_vstrszf(__a, __b, __c, __cc); 11077 } 11078 11079 #endif 11080 11081 #undef __constant_pow2_range 11082 #undef __constant_range 11083 #undef __constant 11084 #undef __ATTRS_o 11085 #undef __ATTRS_o_ai 11086 #undef __ATTRS_ai 11087 11088 #else 11089 11090 #error "Use -fzvector to enable vector extensions" 11091 11092 #endif 11093