1 /* Copyright (C) 2014-2017 Free Software Foundation, Inc. 2 3 This file is part of GCC. 4 5 GCC is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 3, or (at your option) 8 any later version. 9 10 GCC is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 Under Section 7 of GPL version 3, you are granted additional 16 permissions described in the GCC Runtime Library Exception, version 17 3.1, as published by the Free Software Foundation. 18 19 You should have received a copy of the GNU General Public License and 20 a copy of the GCC Runtime Library Exception along with this program; 21 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 22 <http://www.gnu.org/licenses/>. */ 23 24 #ifndef _IMMINTRIN_H_INCLUDED 25 #error "Never use <avx512bwintrin.h> directly; include <immintrin.h> instead." 26 #endif 27 28 #ifndef _AVX512BWINTRIN_H_INCLUDED 29 #define _AVX512BWINTRIN_H_INCLUDED 30 31 #ifndef __AVX512BW__ 32 #pragma GCC push_options 33 #pragma GCC target("avx512bw") 34 #define __DISABLE_AVX512BW__ 35 #endif /* __AVX512BW__ */ 36 37 /* Internal data types for implementing the intrinsics. */ 38 typedef short __v32hi __attribute__ ((__vector_size__ (64))); 39 typedef char __v64qi __attribute__ ((__vector_size__ (64))); 40 41 typedef unsigned long long __mmask64; 42 43 extern __inline unsigned char 44 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 45 _ktest_mask32_u8 (__mmask32 __A, __mmask32 __B, unsigned char *__CF) 46 { 47 *__CF = (unsigned char) __builtin_ia32_ktestcsi (__A, __B); 48 return (unsigned char) __builtin_ia32_ktestzsi (__A, __B); 49 } 50 51 extern __inline unsigned char 52 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 53 _ktest_mask64_u8 (__mmask64 __A, __mmask64 __B, unsigned char *__CF) 54 { 55 *__CF = (unsigned char) __builtin_ia32_ktestcdi (__A, __B); 56 return (unsigned char) __builtin_ia32_ktestzdi (__A, __B); 57 } 58 59 extern __inline unsigned char 60 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 61 _ktestz_mask32_u8 (__mmask32 __A, __mmask32 __B) 62 { 63 return (unsigned char) __builtin_ia32_ktestzsi (__A, __B); 64 } 65 66 extern __inline unsigned char 67 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 68 _ktestz_mask64_u8 (__mmask64 __A, __mmask64 __B) 69 { 70 return (unsigned char) __builtin_ia32_ktestzdi (__A, __B); 71 } 72 73 extern __inline unsigned char 74 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 75 _ktestc_mask32_u8 (__mmask32 __A, __mmask32 __B) 76 { 77 return (unsigned char) __builtin_ia32_ktestcsi (__A, __B); 78 } 79 80 extern __inline unsigned char 81 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 82 _ktestc_mask64_u8 (__mmask64 __A, __mmask64 __B) 83 { 84 return (unsigned char) __builtin_ia32_ktestcdi (__A, __B); 85 } 86 87 extern __inline unsigned char 88 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 89 _kortest_mask32_u8 (__mmask32 __A, __mmask32 __B, unsigned char *__CF) 90 { 91 *__CF = (unsigned char) __builtin_ia32_kortestcsi (__A, __B); 92 return (unsigned char) __builtin_ia32_kortestzsi (__A, __B); 93 } 94 95 extern __inline unsigned char 96 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 97 _kortest_mask64_u8 (__mmask64 __A, __mmask64 __B, unsigned char *__CF) 98 { 99 *__CF = (unsigned char) __builtin_ia32_kortestcdi (__A, __B); 100 return (unsigned char) __builtin_ia32_kortestzdi (__A, __B); 101 } 102 103 extern __inline unsigned char 104 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 105 _kortestz_mask32_u8 (__mmask32 __A, __mmask32 __B) 106 { 107 return (unsigned char) __builtin_ia32_kortestzsi (__A, __B); 108 } 109 110 extern __inline unsigned char 111 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 112 _kortestz_mask64_u8 (__mmask64 __A, __mmask64 __B) 113 { 114 return (unsigned char) __builtin_ia32_kortestzdi (__A, __B); 115 } 116 117 extern __inline unsigned char 118 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 119 _kortestc_mask32_u8 (__mmask32 __A, __mmask32 __B) 120 { 121 return (unsigned char) __builtin_ia32_kortestcsi (__A, __B); 122 } 123 124 extern __inline unsigned char 125 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 126 _kortestc_mask64_u8 (__mmask64 __A, __mmask64 __B) 127 { 128 return (unsigned char) __builtin_ia32_kortestcdi (__A, __B); 129 } 130 131 extern __inline __mmask32 132 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 133 _kadd_mask32 (__mmask32 __A, __mmask32 __B) 134 { 135 return (__mmask32) __builtin_ia32_kaddsi ((__mmask32) __A, (__mmask32) __B); 136 } 137 138 extern __inline __mmask64 139 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 140 _kadd_mask64 (__mmask64 __A, __mmask64 __B) 141 { 142 return (__mmask64) __builtin_ia32_kadddi ((__mmask64) __A, (__mmask64) __B); 143 } 144 145 extern __inline unsigned int 146 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 147 _cvtmask32_u32 (__mmask32 __A) 148 { 149 return (unsigned int) __builtin_ia32_kmovd ((__mmask32) __A); 150 } 151 152 extern __inline unsigned long long 153 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 154 _cvtmask64_u64 (__mmask64 __A) 155 { 156 return (unsigned long long) __builtin_ia32_kmovq ((__mmask64) __A); 157 } 158 159 extern __inline __mmask32 160 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 161 _cvtu32_mask32 (unsigned int __A) 162 { 163 return (__mmask32) __builtin_ia32_kmovd ((__mmask32) __A); 164 } 165 166 extern __inline __mmask64 167 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 168 _cvtu64_mask64 (unsigned long long __A) 169 { 170 return (__mmask64) __builtin_ia32_kmovq ((__mmask64) __A); 171 } 172 173 extern __inline __mmask32 174 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 175 _load_mask32 (__mmask32 *__A) 176 { 177 return (__mmask32) __builtin_ia32_kmovd (*__A); 178 } 179 180 extern __inline __mmask64 181 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 182 _load_mask64 (__mmask64 *__A) 183 { 184 return (__mmask64) __builtin_ia32_kmovq (*(__mmask64 *) __A); 185 } 186 187 extern __inline void 188 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 189 _store_mask32 (__mmask32 *__A, __mmask32 __B) 190 { 191 *(__mmask32 *) __A = __builtin_ia32_kmovd (__B); 192 } 193 194 extern __inline void 195 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 196 _store_mask64 (__mmask64 *__A, __mmask64 __B) 197 { 198 *(__mmask64 *) __A = __builtin_ia32_kmovq (__B); 199 } 200 201 extern __inline __mmask32 202 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 203 _knot_mask32 (__mmask32 __A) 204 { 205 return (__mmask32) __builtin_ia32_knotsi ((__mmask32) __A); 206 } 207 208 extern __inline __mmask64 209 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 210 _knot_mask64 (__mmask64 __A) 211 { 212 return (__mmask64) __builtin_ia32_knotdi ((__mmask64) __A); 213 } 214 215 extern __inline __mmask32 216 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 217 _kor_mask32 (__mmask32 __A, __mmask32 __B) 218 { 219 return (__mmask32) __builtin_ia32_korsi ((__mmask32) __A, (__mmask32) __B); 220 } 221 222 extern __inline __mmask64 223 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 224 _kor_mask64 (__mmask64 __A, __mmask64 __B) 225 { 226 return (__mmask64) __builtin_ia32_kordi ((__mmask64) __A, (__mmask64) __B); 227 } 228 229 extern __inline __mmask32 230 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 231 _kxnor_mask32 (__mmask32 __A, __mmask32 __B) 232 { 233 return (__mmask32) __builtin_ia32_kxnorsi ((__mmask32) __A, (__mmask32) __B); 234 } 235 236 extern __inline __mmask64 237 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 238 _kxnor_mask64 (__mmask64 __A, __mmask64 __B) 239 { 240 return (__mmask64) __builtin_ia32_kxnordi ((__mmask64) __A, (__mmask64) __B); 241 } 242 243 extern __inline __mmask32 244 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 245 _kxor_mask32 (__mmask32 __A, __mmask32 __B) 246 { 247 return (__mmask32) __builtin_ia32_kxorsi ((__mmask32) __A, (__mmask32) __B); 248 } 249 250 extern __inline __mmask64 251 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 252 _kxor_mask64 (__mmask64 __A, __mmask64 __B) 253 { 254 return (__mmask64) __builtin_ia32_kxordi ((__mmask64) __A, (__mmask64) __B); 255 } 256 257 extern __inline __mmask32 258 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 259 _kand_mask32 (__mmask32 __A, __mmask32 __B) 260 { 261 return (__mmask32) __builtin_ia32_kandsi ((__mmask32) __A, (__mmask32) __B); 262 } 263 264 extern __inline __mmask64 265 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 266 _kand_mask64 (__mmask64 __A, __mmask64 __B) 267 { 268 return (__mmask64) __builtin_ia32_kanddi ((__mmask64) __A, (__mmask64) __B); 269 } 270 271 extern __inline __mmask32 272 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 273 _kandn_mask32 (__mmask32 __A, __mmask32 __B) 274 { 275 return (__mmask32) __builtin_ia32_kandnsi ((__mmask32) __A, (__mmask32) __B); 276 } 277 278 extern __inline __mmask64 279 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 280 _kandn_mask64 (__mmask64 __A, __mmask64 __B) 281 { 282 return (__mmask64) __builtin_ia32_kandndi ((__mmask64) __A, (__mmask64) __B); 283 } 284 285 extern __inline __m512i 286 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 287 _mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A) 288 { 289 return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A, 290 (__v32hi) __W, 291 (__mmask32) __U); 292 } 293 294 extern __inline __m512i 295 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 296 _mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A) 297 { 298 return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A, 299 (__v32hi) 300 _mm512_setzero_si512 (), 301 (__mmask32) __U); 302 } 303 304 extern __inline __m512i 305 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 306 _mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P) 307 { 308 return (__m512i) __builtin_ia32_loaddquhi512_mask ((const short *) __P, 309 (__v32hi) __W, 310 (__mmask32) __U); 311 } 312 313 extern __inline __m512i 314 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 315 _mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P) 316 { 317 return (__m512i) __builtin_ia32_loaddquhi512_mask ((const short *) __P, 318 (__v32hi) 319 _mm512_setzero_si512 (), 320 (__mmask32) __U); 321 } 322 323 extern __inline void 324 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 325 _mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A) 326 { 327 __builtin_ia32_storedquhi512_mask ((short *) __P, 328 (__v32hi) __A, 329 (__mmask32) __U); 330 } 331 332 extern __inline __m512i 333 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 334 _mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A) 335 { 336 return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A, 337 (__v64qi) __W, 338 (__mmask64) __U); 339 } 340 341 extern __inline __m512i 342 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 343 _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A) 344 { 345 return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A, 346 (__v64qi) 347 _mm512_setzero_si512 (), 348 (__mmask64) __U); 349 } 350 351 extern __inline __mmask32 352 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 353 _mm512_kunpackw (__mmask32 __A, __mmask32 __B) 354 { 355 return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A, 356 (__mmask32) __B); 357 } 358 359 extern __inline __mmask32 360 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 361 _kunpackw_mask32 (__mmask16 __A, __mmask16 __B) 362 { 363 return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A, 364 (__mmask32) __B); 365 } 366 367 extern __inline __mmask64 368 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 369 _mm512_kunpackd (__mmask64 __A, __mmask64 __B) 370 { 371 return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A, 372 (__mmask64) __B); 373 } 374 375 extern __inline __mmask64 376 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 377 _kunpackd_mask64 (__mmask32 __A, __mmask32 __B) 378 { 379 return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A, 380 (__mmask64) __B); 381 } 382 383 extern __inline __m512i 384 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 385 _mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P) 386 { 387 return (__m512i) __builtin_ia32_loaddquqi512_mask ((const char *) __P, 388 (__v64qi) __W, 389 (__mmask64) __U); 390 } 391 392 extern __inline __m512i 393 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 394 _mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P) 395 { 396 return (__m512i) __builtin_ia32_loaddquqi512_mask ((const char *) __P, 397 (__v64qi) 398 _mm512_setzero_si512 (), 399 (__mmask64) __U); 400 } 401 402 extern __inline void 403 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 404 _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A) 405 { 406 __builtin_ia32_storedquqi512_mask ((char *) __P, 407 (__v64qi) __A, 408 (__mmask64) __U); 409 } 410 411 extern __inline __m512i 412 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 413 _mm512_sad_epu8 (__m512i __A, __m512i __B) 414 { 415 return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A, 416 (__v64qi) __B); 417 } 418 419 extern __inline __m256i 420 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 421 _mm512_cvtepi16_epi8 (__m512i __A) 422 { 423 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A, 424 (__v32qi) _mm256_undefined_si256(), 425 (__mmask32) -1); 426 } 427 428 extern __inline __m256i 429 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 430 _mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) 431 { 432 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A, 433 (__v32qi) __O, __M); 434 } 435 436 extern __inline __m256i 437 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 438 _mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A) 439 { 440 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A, 441 (__v32qi) 442 _mm256_setzero_si256 (), 443 __M); 444 } 445 446 extern __inline __m256i 447 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 448 _mm512_cvtsepi16_epi8 (__m512i __A) 449 { 450 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A, 451 (__v32qi)_mm256_undefined_si256(), 452 (__mmask32) -1); 453 } 454 455 extern __inline __m256i 456 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 457 _mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) 458 { 459 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A, 460 (__v32qi)__O, 461 __M); 462 } 463 464 extern __inline __m256i 465 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 466 _mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A) 467 { 468 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A, 469 (__v32qi) 470 _mm256_setzero_si256 (), 471 __M); 472 } 473 474 extern __inline __m256i 475 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 476 _mm512_cvtusepi16_epi8 (__m512i __A) 477 { 478 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A, 479 (__v32qi)_mm256_undefined_si256(), 480 (__mmask32) -1); 481 } 482 483 extern __inline __m256i 484 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 485 _mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) 486 { 487 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A, 488 (__v32qi) __O, 489 __M); 490 } 491 492 extern __inline __m256i 493 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 494 _mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A) 495 { 496 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A, 497 (__v32qi) 498 _mm256_setzero_si256 (), 499 __M); 500 } 501 502 extern __inline __m512i 503 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 504 _mm512_broadcastb_epi8 (__m128i __A) 505 { 506 return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A, 507 (__v64qi)_mm512_undefined_epi32(), 508 (__mmask64) -1); 509 } 510 511 extern __inline __m512i 512 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 513 _mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A) 514 { 515 return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A, 516 (__v64qi) __O, 517 __M); 518 } 519 520 extern __inline __m512i 521 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 522 _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A) 523 { 524 return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A, 525 (__v64qi) 526 _mm512_setzero_si512 (), 527 __M); 528 } 529 530 extern __inline __m512i 531 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 532 _mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A) 533 { 534 return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A, 535 (__v64qi) __O, 536 __M); 537 } 538 539 extern __inline __m512i 540 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 541 _mm512_maskz_set1_epi8 (__mmask64 __M, char __A) 542 { 543 return (__m512i) 544 __builtin_ia32_pbroadcastb512_gpr_mask (__A, 545 (__v64qi) 546 _mm512_setzero_si512 (), 547 __M); 548 } 549 550 extern __inline __m512i 551 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 552 _mm512_broadcastw_epi16 (__m128i __A) 553 { 554 return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A, 555 (__v32hi)_mm512_undefined_epi32(), 556 (__mmask32) -1); 557 } 558 559 extern __inline __m512i 560 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 561 _mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A) 562 { 563 return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A, 564 (__v32hi) __O, 565 __M); 566 } 567 568 extern __inline __m512i 569 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 570 _mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A) 571 { 572 return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A, 573 (__v32hi) 574 _mm512_setzero_si512 (), 575 __M); 576 } 577 578 extern __inline __m512i 579 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 580 _mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A) 581 { 582 return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A, 583 (__v32hi) __O, 584 __M); 585 } 586 587 extern __inline __m512i 588 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 589 _mm512_maskz_set1_epi16 (__mmask32 __M, short __A) 590 { 591 return (__m512i) 592 __builtin_ia32_pbroadcastw512_gpr_mask (__A, 593 (__v32hi) 594 _mm512_setzero_si512 (), 595 __M); 596 } 597 598 extern __inline __m512i 599 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 600 _mm512_mulhrs_epi16 (__m512i __A, __m512i __B) 601 { 602 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A, 603 (__v32hi) __B, 604 (__v32hi) 605 _mm512_setzero_si512 (), 606 (__mmask32) -1); 607 } 608 609 extern __inline __m512i 610 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 611 _mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 612 __m512i __B) 613 { 614 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A, 615 (__v32hi) __B, 616 (__v32hi) __W, 617 (__mmask32) __U); 618 } 619 620 extern __inline __m512i 621 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 622 _mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 623 { 624 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A, 625 (__v32hi) __B, 626 (__v32hi) 627 _mm512_setzero_si512 (), 628 (__mmask32) __U); 629 } 630 631 extern __inline __m512i 632 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 633 _mm512_mulhi_epi16 (__m512i __A, __m512i __B) 634 { 635 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A, 636 (__v32hi) __B, 637 (__v32hi) 638 _mm512_setzero_si512 (), 639 (__mmask32) -1); 640 } 641 642 extern __inline __m512i 643 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 644 _mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 645 __m512i __B) 646 { 647 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A, 648 (__v32hi) __B, 649 (__v32hi) __W, 650 (__mmask32) __U); 651 } 652 653 extern __inline __m512i 654 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 655 _mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 656 { 657 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A, 658 (__v32hi) __B, 659 (__v32hi) 660 _mm512_setzero_si512 (), 661 (__mmask32) __U); 662 } 663 664 extern __inline __m512i 665 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 666 _mm512_mulhi_epu16 (__m512i __A, __m512i __B) 667 { 668 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A, 669 (__v32hi) __B, 670 (__v32hi) 671 _mm512_setzero_si512 (), 672 (__mmask32) -1); 673 } 674 675 extern __inline __m512i 676 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 677 _mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 678 __m512i __B) 679 { 680 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A, 681 (__v32hi) __B, 682 (__v32hi) __W, 683 (__mmask32) __U); 684 } 685 686 extern __inline __m512i 687 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 688 _mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 689 { 690 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A, 691 (__v32hi) __B, 692 (__v32hi) 693 _mm512_setzero_si512 (), 694 (__mmask32) __U); 695 } 696 697 extern __inline __m512i 698 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 699 _mm512_mullo_epi16 (__m512i __A, __m512i __B) 700 { 701 return (__m512i) ((__v32hu) __A * (__v32hu) __B); 702 } 703 704 extern __inline __m512i 705 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 706 _mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 707 __m512i __B) 708 { 709 return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A, 710 (__v32hi) __B, 711 (__v32hi) __W, 712 (__mmask32) __U); 713 } 714 715 extern __inline __m512i 716 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 717 _mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 718 { 719 return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A, 720 (__v32hi) __B, 721 (__v32hi) 722 _mm512_setzero_si512 (), 723 (__mmask32) __U); 724 } 725 726 extern __inline __m512i 727 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 728 _mm512_cvtepi8_epi16 (__m256i __A) 729 { 730 return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A, 731 (__v32hi) 732 _mm512_setzero_si512 (), 733 (__mmask32) -1); 734 } 735 736 extern __inline __m512i 737 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 738 _mm512_mask_cvtepi8_epi16 (__m512i __W, __mmask32 __U, __m256i __A) 739 { 740 return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A, 741 (__v32hi) __W, 742 (__mmask32) __U); 743 } 744 745 extern __inline __m512i 746 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 747 _mm512_maskz_cvtepi8_epi16 (__mmask32 __U, __m256i __A) 748 { 749 return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A, 750 (__v32hi) 751 _mm512_setzero_si512 (), 752 (__mmask32) __U); 753 } 754 755 extern __inline __m512i 756 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 757 _mm512_cvtepu8_epi16 (__m256i __A) 758 { 759 return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A, 760 (__v32hi) 761 _mm512_setzero_si512 (), 762 (__mmask32) -1); 763 } 764 765 extern __inline __m512i 766 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 767 _mm512_mask_cvtepu8_epi16 (__m512i __W, __mmask32 __U, __m256i __A) 768 { 769 return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A, 770 (__v32hi) __W, 771 (__mmask32) __U); 772 } 773 774 extern __inline __m512i 775 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 776 _mm512_maskz_cvtepu8_epi16 (__mmask32 __U, __m256i __A) 777 { 778 return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A, 779 (__v32hi) 780 _mm512_setzero_si512 (), 781 (__mmask32) __U); 782 } 783 784 extern __inline __m512i 785 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 786 _mm512_permutexvar_epi16 (__m512i __A, __m512i __B) 787 { 788 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B, 789 (__v32hi) __A, 790 (__v32hi) 791 _mm512_setzero_si512 (), 792 (__mmask32) -1); 793 } 794 795 extern __inline __m512i 796 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 797 _mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A, 798 __m512i __B) 799 { 800 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B, 801 (__v32hi) __A, 802 (__v32hi) 803 _mm512_setzero_si512 (), 804 (__mmask32) __M); 805 } 806 807 extern __inline __m512i 808 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 809 _mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A, 810 __m512i __B) 811 { 812 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B, 813 (__v32hi) __A, 814 (__v32hi) __W, 815 (__mmask32) __M); 816 } 817 818 extern __inline __m512i 819 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 820 _mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B) 821 { 822 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I 823 /* idx */ , 824 (__v32hi) __A, 825 (__v32hi) __B, 826 (__mmask32) -1); 827 } 828 829 extern __inline __m512i 830 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 831 _mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U, 832 __m512i __I, __m512i __B) 833 { 834 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I 835 /* idx */ , 836 (__v32hi) __A, 837 (__v32hi) __B, 838 (__mmask32) 839 __U); 840 } 841 842 extern __inline __m512i 843 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 844 _mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I, 845 __mmask32 __U, __m512i __B) 846 { 847 return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A, 848 (__v32hi) __I 849 /* idx */ , 850 (__v32hi) __B, 851 (__mmask32) 852 __U); 853 } 854 855 extern __inline __m512i 856 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 857 _mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A, 858 __m512i __I, __m512i __B) 859 { 860 return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I 861 /* idx */ , 862 (__v32hi) __A, 863 (__v32hi) __B, 864 (__mmask32) 865 __U); 866 } 867 868 extern __inline __m512i 869 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 870 _mm512_avg_epu8 (__m512i __A, __m512i __B) 871 { 872 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A, 873 (__v64qi) __B, 874 (__v64qi) 875 _mm512_setzero_si512 (), 876 (__mmask64) -1); 877 } 878 879 extern __inline __m512i 880 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 881 _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A, 882 __m512i __B) 883 { 884 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A, 885 (__v64qi) __B, 886 (__v64qi) __W, 887 (__mmask64) __U); 888 } 889 890 extern __inline __m512i 891 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 892 _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B) 893 { 894 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A, 895 (__v64qi) __B, 896 (__v64qi) 897 _mm512_setzero_si512 (), 898 (__mmask64) __U); 899 } 900 901 extern __inline __m512i 902 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 903 _mm512_add_epi8 (__m512i __A, __m512i __B) 904 { 905 return (__m512i) ((__v64qu) __A + (__v64qu) __B); 906 } 907 908 extern __inline __m512i 909 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 910 _mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 911 __m512i __B) 912 { 913 return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A, 914 (__v64qi) __B, 915 (__v64qi) __W, 916 (__mmask64) __U); 917 } 918 919 extern __inline __m512i 920 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 921 _mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 922 { 923 return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A, 924 (__v64qi) __B, 925 (__v64qi) 926 _mm512_setzero_si512 (), 927 (__mmask64) __U); 928 } 929 930 extern __inline __m512i 931 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 932 _mm512_sub_epi8 (__m512i __A, __m512i __B) 933 { 934 return (__m512i) ((__v64qu) __A - (__v64qu) __B); 935 } 936 937 extern __inline __m512i 938 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 939 _mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 940 __m512i __B) 941 { 942 return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A, 943 (__v64qi) __B, 944 (__v64qi) __W, 945 (__mmask64) __U); 946 } 947 948 extern __inline __m512i 949 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 950 _mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 951 { 952 return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A, 953 (__v64qi) __B, 954 (__v64qi) 955 _mm512_setzero_si512 (), 956 (__mmask64) __U); 957 } 958 959 extern __inline __m512i 960 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 961 _mm512_avg_epu16 (__m512i __A, __m512i __B) 962 { 963 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A, 964 (__v32hi) __B, 965 (__v32hi) 966 _mm512_setzero_si512 (), 967 (__mmask32) -1); 968 } 969 970 extern __inline __m512i 971 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 972 _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 973 __m512i __B) 974 { 975 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A, 976 (__v32hi) __B, 977 (__v32hi) __W, 978 (__mmask32) __U); 979 } 980 981 extern __inline __m512i 982 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 983 _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 984 { 985 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A, 986 (__v32hi) __B, 987 (__v32hi) 988 _mm512_setzero_si512 (), 989 (__mmask32) __U); 990 } 991 992 extern __inline __m512i 993 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 994 _mm512_subs_epi8 (__m512i __A, __m512i __B) 995 { 996 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, 997 (__v64qi) __B, 998 (__v64qi) 999 _mm512_setzero_si512 (), 1000 (__mmask64) -1); 1001 } 1002 1003 extern __inline __m512i 1004 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1005 _mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 1006 __m512i __B) 1007 { 1008 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, 1009 (__v64qi) __B, 1010 (__v64qi) __W, 1011 (__mmask64) __U); 1012 } 1013 1014 extern __inline __m512i 1015 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1016 _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 1017 { 1018 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, 1019 (__v64qi) __B, 1020 (__v64qi) 1021 _mm512_setzero_si512 (), 1022 (__mmask64) __U); 1023 } 1024 1025 extern __inline __m512i 1026 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1027 _mm512_subs_epu8 (__m512i __A, __m512i __B) 1028 { 1029 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, 1030 (__v64qi) __B, 1031 (__v64qi) 1032 _mm512_setzero_si512 (), 1033 (__mmask64) -1); 1034 } 1035 1036 extern __inline __m512i 1037 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1038 _mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A, 1039 __m512i __B) 1040 { 1041 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, 1042 (__v64qi) __B, 1043 (__v64qi) __W, 1044 (__mmask64) __U); 1045 } 1046 1047 extern __inline __m512i 1048 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1049 _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B) 1050 { 1051 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, 1052 (__v64qi) __B, 1053 (__v64qi) 1054 _mm512_setzero_si512 (), 1055 (__mmask64) __U); 1056 } 1057 1058 extern __inline __m512i 1059 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1060 _mm512_adds_epi8 (__m512i __A, __m512i __B) 1061 { 1062 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A, 1063 (__v64qi) __B, 1064 (__v64qi) 1065 _mm512_setzero_si512 (), 1066 (__mmask64) -1); 1067 } 1068 1069 extern __inline __m512i 1070 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1071 _mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 1072 __m512i __B) 1073 { 1074 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A, 1075 (__v64qi) __B, 1076 (__v64qi) __W, 1077 (__mmask64) __U); 1078 } 1079 1080 extern __inline __m512i 1081 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1082 _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 1083 { 1084 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A, 1085 (__v64qi) __B, 1086 (__v64qi) 1087 _mm512_setzero_si512 (), 1088 (__mmask64) __U); 1089 } 1090 1091 extern __inline __m512i 1092 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1093 _mm512_adds_epu8 (__m512i __A, __m512i __B) 1094 { 1095 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A, 1096 (__v64qi) __B, 1097 (__v64qi) 1098 _mm512_setzero_si512 (), 1099 (__mmask64) -1); 1100 } 1101 1102 extern __inline __m512i 1103 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1104 _mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A, 1105 __m512i __B) 1106 { 1107 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A, 1108 (__v64qi) __B, 1109 (__v64qi) __W, 1110 (__mmask64) __U); 1111 } 1112 1113 extern __inline __m512i 1114 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1115 _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B) 1116 { 1117 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A, 1118 (__v64qi) __B, 1119 (__v64qi) 1120 _mm512_setzero_si512 (), 1121 (__mmask64) __U); 1122 } 1123 1124 extern __inline __m512i 1125 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1126 _mm512_sub_epi16 (__m512i __A, __m512i __B) 1127 { 1128 return (__m512i) ((__v32hu) __A - (__v32hu) __B); 1129 } 1130 1131 extern __inline __m512i 1132 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1133 _mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1134 __m512i __B) 1135 { 1136 return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A, 1137 (__v32hi) __B, 1138 (__v32hi) __W, 1139 (__mmask32) __U); 1140 } 1141 1142 extern __inline __m512i 1143 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1144 _mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1145 { 1146 return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A, 1147 (__v32hi) __B, 1148 (__v32hi) 1149 _mm512_setzero_si512 (), 1150 (__mmask32) __U); 1151 } 1152 1153 extern __inline __m512i 1154 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1155 _mm512_subs_epi16 (__m512i __A, __m512i __B) 1156 { 1157 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, 1158 (__v32hi) __B, 1159 (__v32hi) 1160 _mm512_setzero_si512 (), 1161 (__mmask32) -1); 1162 } 1163 1164 extern __inline __m512i 1165 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1166 _mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1167 __m512i __B) 1168 { 1169 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, 1170 (__v32hi) __B, 1171 (__v32hi) __W, 1172 (__mmask32) __U); 1173 } 1174 1175 extern __inline __m512i 1176 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1177 _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1178 { 1179 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, 1180 (__v32hi) __B, 1181 (__v32hi) 1182 _mm512_setzero_si512 (), 1183 (__mmask32) __U); 1184 } 1185 1186 extern __inline __m512i 1187 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1188 _mm512_subs_epu16 (__m512i __A, __m512i __B) 1189 { 1190 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, 1191 (__v32hi) __B, 1192 (__v32hi) 1193 _mm512_setzero_si512 (), 1194 (__mmask32) -1); 1195 } 1196 1197 extern __inline __m512i 1198 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1199 _mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 1200 __m512i __B) 1201 { 1202 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, 1203 (__v32hi) __B, 1204 (__v32hi) __W, 1205 (__mmask32) __U); 1206 } 1207 1208 extern __inline __m512i 1209 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1210 _mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 1211 { 1212 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, 1213 (__v32hi) __B, 1214 (__v32hi) 1215 _mm512_setzero_si512 (), 1216 (__mmask32) __U); 1217 } 1218 1219 extern __inline __m512i 1220 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1221 _mm512_add_epi16 (__m512i __A, __m512i __B) 1222 { 1223 return (__m512i) ((__v32hu) __A + (__v32hu) __B); 1224 } 1225 1226 extern __inline __m512i 1227 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1228 _mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1229 __m512i __B) 1230 { 1231 return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A, 1232 (__v32hi) __B, 1233 (__v32hi) __W, 1234 (__mmask32) __U); 1235 } 1236 1237 extern __inline __m512i 1238 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1239 _mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1240 { 1241 return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A, 1242 (__v32hi) __B, 1243 (__v32hi) 1244 _mm512_setzero_si512 (), 1245 (__mmask32) __U); 1246 } 1247 1248 extern __inline __m512i 1249 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1250 _mm512_adds_epi16 (__m512i __A, __m512i __B) 1251 { 1252 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A, 1253 (__v32hi) __B, 1254 (__v32hi) 1255 _mm512_setzero_si512 (), 1256 (__mmask32) -1); 1257 } 1258 1259 extern __inline __m512i 1260 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1261 _mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1262 __m512i __B) 1263 { 1264 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A, 1265 (__v32hi) __B, 1266 (__v32hi) __W, 1267 (__mmask32) __U); 1268 } 1269 1270 extern __inline __m512i 1271 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1272 _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1273 { 1274 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A, 1275 (__v32hi) __B, 1276 (__v32hi) 1277 _mm512_setzero_si512 (), 1278 (__mmask32) __U); 1279 } 1280 1281 extern __inline __m512i 1282 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1283 _mm512_adds_epu16 (__m512i __A, __m512i __B) 1284 { 1285 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A, 1286 (__v32hi) __B, 1287 (__v32hi) 1288 _mm512_setzero_si512 (), 1289 (__mmask32) -1); 1290 } 1291 1292 extern __inline __m512i 1293 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1294 _mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 1295 __m512i __B) 1296 { 1297 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A, 1298 (__v32hi) __B, 1299 (__v32hi) __W, 1300 (__mmask32) __U); 1301 } 1302 1303 extern __inline __m512i 1304 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1305 _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 1306 { 1307 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A, 1308 (__v32hi) __B, 1309 (__v32hi) 1310 _mm512_setzero_si512 (), 1311 (__mmask32) __U); 1312 } 1313 1314 extern __inline __m512i 1315 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1316 _mm512_srl_epi16 (__m512i __A, __m128i __B) 1317 { 1318 return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A, 1319 (__v8hi) __B, 1320 (__v32hi) 1321 _mm512_setzero_si512 (), 1322 (__mmask32) -1); 1323 } 1324 1325 extern __inline __m512i 1326 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1327 _mm512_mask_srl_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1328 __m128i __B) 1329 { 1330 return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A, 1331 (__v8hi) __B, 1332 (__v32hi) __W, 1333 (__mmask32) __U); 1334 } 1335 1336 extern __inline __m512i 1337 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1338 _mm512_maskz_srl_epi16 (__mmask32 __U, __m512i __A, __m128i __B) 1339 { 1340 return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A, 1341 (__v8hi) __B, 1342 (__v32hi) 1343 _mm512_setzero_si512 (), 1344 (__mmask32) __U); 1345 } 1346 1347 extern __inline __m512i 1348 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1349 _mm512_packs_epi16 (__m512i __A, __m512i __B) 1350 { 1351 return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A, 1352 (__v32hi) __B, 1353 (__v64qi) 1354 _mm512_setzero_si512 (), 1355 (__mmask64) -1); 1356 } 1357 1358 extern __inline __m512i 1359 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1360 _mm512_sll_epi16 (__m512i __A, __m128i __B) 1361 { 1362 return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A, 1363 (__v8hi) __B, 1364 (__v32hi) 1365 _mm512_setzero_si512 (), 1366 (__mmask32) -1); 1367 } 1368 1369 extern __inline __m512i 1370 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1371 _mm512_mask_sll_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1372 __m128i __B) 1373 { 1374 return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A, 1375 (__v8hi) __B, 1376 (__v32hi) __W, 1377 (__mmask32) __U); 1378 } 1379 1380 extern __inline __m512i 1381 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1382 _mm512_maskz_sll_epi16 (__mmask32 __U, __m512i __A, __m128i __B) 1383 { 1384 return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A, 1385 (__v8hi) __B, 1386 (__v32hi) 1387 _mm512_setzero_si512 (), 1388 (__mmask32) __U); 1389 } 1390 1391 extern __inline __m512i 1392 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1393 _mm512_maddubs_epi16 (__m512i __X, __m512i __Y) 1394 { 1395 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X, 1396 (__v64qi) __Y, 1397 (__v32hi) 1398 _mm512_setzero_si512 (), 1399 (__mmask32) -1); 1400 } 1401 1402 extern __inline __m512i 1403 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1404 _mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X, 1405 __m512i __Y) 1406 { 1407 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X, 1408 (__v64qi) __Y, 1409 (__v32hi) __W, 1410 (__mmask32) __U); 1411 } 1412 1413 extern __inline __m512i 1414 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1415 _mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y) 1416 { 1417 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X, 1418 (__v64qi) __Y, 1419 (__v32hi) 1420 _mm512_setzero_si512 (), 1421 (__mmask32) __U); 1422 } 1423 1424 extern __inline __m512i 1425 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1426 _mm512_madd_epi16 (__m512i __A, __m512i __B) 1427 { 1428 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A, 1429 (__v32hi) __B, 1430 (__v16si) 1431 _mm512_setzero_si512 (), 1432 (__mmask16) -1); 1433 } 1434 1435 extern __inline __m512i 1436 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1437 _mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A, 1438 __m512i __B) 1439 { 1440 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A, 1441 (__v32hi) __B, 1442 (__v16si) __W, 1443 (__mmask16) __U); 1444 } 1445 1446 extern __inline __m512i 1447 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1448 _mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B) 1449 { 1450 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A, 1451 (__v32hi) __B, 1452 (__v16si) 1453 _mm512_setzero_si512 (), 1454 (__mmask16) __U); 1455 } 1456 1457 extern __inline __m512i 1458 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1459 _mm512_unpackhi_epi8 (__m512i __A, __m512i __B) 1460 { 1461 return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A, 1462 (__v64qi) __B, 1463 (__v64qi) 1464 _mm512_setzero_si512 (), 1465 (__mmask64) -1); 1466 } 1467 1468 extern __inline __m512i 1469 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1470 _mm512_mask_unpackhi_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 1471 __m512i __B) 1472 { 1473 return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A, 1474 (__v64qi) __B, 1475 (__v64qi) __W, 1476 (__mmask64) __U); 1477 } 1478 1479 extern __inline __m512i 1480 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1481 _mm512_maskz_unpackhi_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 1482 { 1483 return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A, 1484 (__v64qi) __B, 1485 (__v64qi) 1486 _mm512_setzero_si512 (), 1487 (__mmask64) __U); 1488 } 1489 1490 extern __inline __m512i 1491 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1492 _mm512_unpackhi_epi16 (__m512i __A, __m512i __B) 1493 { 1494 return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A, 1495 (__v32hi) __B, 1496 (__v32hi) 1497 _mm512_setzero_si512 (), 1498 (__mmask32) -1); 1499 } 1500 1501 extern __inline __m512i 1502 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1503 _mm512_mask_unpackhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1504 __m512i __B) 1505 { 1506 return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A, 1507 (__v32hi) __B, 1508 (__v32hi) __W, 1509 (__mmask32) __U); 1510 } 1511 1512 extern __inline __m512i 1513 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1514 _mm512_maskz_unpackhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1515 { 1516 return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A, 1517 (__v32hi) __B, 1518 (__v32hi) 1519 _mm512_setzero_si512 (), 1520 (__mmask32) __U); 1521 } 1522 1523 extern __inline __m512i 1524 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1525 _mm512_unpacklo_epi8 (__m512i __A, __m512i __B) 1526 { 1527 return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A, 1528 (__v64qi) __B, 1529 (__v64qi) 1530 _mm512_setzero_si512 (), 1531 (__mmask64) -1); 1532 } 1533 1534 extern __inline __m512i 1535 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1536 _mm512_mask_unpacklo_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 1537 __m512i __B) 1538 { 1539 return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A, 1540 (__v64qi) __B, 1541 (__v64qi) __W, 1542 (__mmask64) __U); 1543 } 1544 1545 extern __inline __m512i 1546 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1547 _mm512_maskz_unpacklo_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 1548 { 1549 return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A, 1550 (__v64qi) __B, 1551 (__v64qi) 1552 _mm512_setzero_si512 (), 1553 (__mmask64) __U); 1554 } 1555 1556 extern __inline __m512i 1557 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1558 _mm512_unpacklo_epi16 (__m512i __A, __m512i __B) 1559 { 1560 return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A, 1561 (__v32hi) __B, 1562 (__v32hi) 1563 _mm512_setzero_si512 (), 1564 (__mmask32) -1); 1565 } 1566 1567 extern __inline __m512i 1568 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1569 _mm512_mask_unpacklo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1570 __m512i __B) 1571 { 1572 return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A, 1573 (__v32hi) __B, 1574 (__v32hi) __W, 1575 (__mmask32) __U); 1576 } 1577 1578 extern __inline __m512i 1579 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1580 _mm512_maskz_unpacklo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1581 { 1582 return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A, 1583 (__v32hi) __B, 1584 (__v32hi) 1585 _mm512_setzero_si512 (), 1586 (__mmask32) __U); 1587 } 1588 1589 extern __inline __mmask64 1590 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1591 _mm512_cmpeq_epu8_mask (__m512i __A, __m512i __B) 1592 { 1593 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A, 1594 (__v64qi) __B, 0, 1595 (__mmask64) -1); 1596 } 1597 1598 extern __inline __mmask64 1599 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1600 _mm512_cmpeq_epi8_mask (__m512i __A, __m512i __B) 1601 { 1602 return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A, 1603 (__v64qi) __B, 1604 (__mmask64) -1); 1605 } 1606 1607 extern __inline __mmask64 1608 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1609 _mm512_mask_cmpeq_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B) 1610 { 1611 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A, 1612 (__v64qi) __B, 0, 1613 __U); 1614 } 1615 1616 extern __inline __mmask64 1617 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1618 _mm512_mask_cmpeq_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B) 1619 { 1620 return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A, 1621 (__v64qi) __B, 1622 __U); 1623 } 1624 1625 extern __inline __mmask32 1626 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1627 _mm512_cmpeq_epu16_mask (__m512i __A, __m512i __B) 1628 { 1629 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A, 1630 (__v32hi) __B, 0, 1631 (__mmask32) -1); 1632 } 1633 1634 extern __inline __mmask32 1635 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1636 _mm512_cmpeq_epi16_mask (__m512i __A, __m512i __B) 1637 { 1638 return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A, 1639 (__v32hi) __B, 1640 (__mmask32) -1); 1641 } 1642 1643 extern __inline __mmask32 1644 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1645 _mm512_mask_cmpeq_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B) 1646 { 1647 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A, 1648 (__v32hi) __B, 0, 1649 __U); 1650 } 1651 1652 extern __inline __mmask32 1653 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1654 _mm512_mask_cmpeq_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B) 1655 { 1656 return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A, 1657 (__v32hi) __B, 1658 __U); 1659 } 1660 1661 extern __inline __mmask64 1662 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1663 _mm512_cmpgt_epu8_mask (__m512i __A, __m512i __B) 1664 { 1665 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A, 1666 (__v64qi) __B, 6, 1667 (__mmask64) -1); 1668 } 1669 1670 extern __inline __mmask64 1671 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1672 _mm512_cmpgt_epi8_mask (__m512i __A, __m512i __B) 1673 { 1674 return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A, 1675 (__v64qi) __B, 1676 (__mmask64) -1); 1677 } 1678 1679 extern __inline __mmask64 1680 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1681 _mm512_mask_cmpgt_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B) 1682 { 1683 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A, 1684 (__v64qi) __B, 6, 1685 __U); 1686 } 1687 1688 extern __inline __mmask64 1689 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1690 _mm512_mask_cmpgt_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B) 1691 { 1692 return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A, 1693 (__v64qi) __B, 1694 __U); 1695 } 1696 1697 extern __inline __mmask32 1698 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1699 _mm512_cmpgt_epu16_mask (__m512i __A, __m512i __B) 1700 { 1701 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A, 1702 (__v32hi) __B, 6, 1703 (__mmask32) -1); 1704 } 1705 1706 extern __inline __mmask32 1707 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1708 _mm512_cmpgt_epi16_mask (__m512i __A, __m512i __B) 1709 { 1710 return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A, 1711 (__v32hi) __B, 1712 (__mmask32) -1); 1713 } 1714 1715 extern __inline __mmask32 1716 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1717 _mm512_mask_cmpgt_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B) 1718 { 1719 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A, 1720 (__v32hi) __B, 6, 1721 __U); 1722 } 1723 1724 extern __inline __mmask32 1725 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1726 _mm512_mask_cmpgt_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B) 1727 { 1728 return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A, 1729 (__v32hi) __B, 1730 __U); 1731 } 1732 1733 extern __inline __mmask64 1734 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1735 _mm512_movepi8_mask (__m512i __A) 1736 { 1737 return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A); 1738 } 1739 1740 extern __inline __mmask32 1741 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1742 _mm512_movepi16_mask (__m512i __A) 1743 { 1744 return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A); 1745 } 1746 1747 extern __inline __m512i 1748 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1749 _mm512_movm_epi8 (__mmask64 __A) 1750 { 1751 return (__m512i) __builtin_ia32_cvtmask2b512 (__A); 1752 } 1753 1754 extern __inline __m512i 1755 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1756 _mm512_movm_epi16 (__mmask32 __A) 1757 { 1758 return (__m512i) __builtin_ia32_cvtmask2w512 (__A); 1759 } 1760 1761 extern __inline __mmask64 1762 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1763 _mm512_test_epi8_mask (__m512i __A, __m512i __B) 1764 { 1765 return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A, 1766 (__v64qi) __B, 1767 (__mmask64) -1); 1768 } 1769 1770 extern __inline __mmask64 1771 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1772 _mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B) 1773 { 1774 return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A, 1775 (__v64qi) __B, __U); 1776 } 1777 1778 extern __inline __mmask32 1779 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1780 _mm512_test_epi16_mask (__m512i __A, __m512i __B) 1781 { 1782 return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A, 1783 (__v32hi) __B, 1784 (__mmask32) -1); 1785 } 1786 1787 extern __inline __mmask32 1788 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1789 _mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B) 1790 { 1791 return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A, 1792 (__v32hi) __B, __U); 1793 } 1794 1795 extern __inline __mmask64 1796 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1797 _mm512_testn_epi8_mask (__m512i __A, __m512i __B) 1798 { 1799 return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A, 1800 (__v64qi) __B, 1801 (__mmask64) -1); 1802 } 1803 1804 extern __inline __mmask64 1805 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1806 _mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B) 1807 { 1808 return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A, 1809 (__v64qi) __B, __U); 1810 } 1811 1812 extern __inline __mmask32 1813 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1814 _mm512_testn_epi16_mask (__m512i __A, __m512i __B) 1815 { 1816 return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A, 1817 (__v32hi) __B, 1818 (__mmask32) -1); 1819 } 1820 1821 extern __inline __mmask32 1822 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1823 _mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B) 1824 { 1825 return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A, 1826 (__v32hi) __B, __U); 1827 } 1828 1829 extern __inline __m512i 1830 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1831 _mm512_shuffle_epi8 (__m512i __A, __m512i __B) 1832 { 1833 return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A, 1834 (__v64qi) __B, 1835 (__v64qi) 1836 _mm512_setzero_si512 (), 1837 (__mmask64) -1); 1838 } 1839 1840 extern __inline __m512i 1841 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1842 _mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 1843 __m512i __B) 1844 { 1845 return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A, 1846 (__v64qi) __B, 1847 (__v64qi) __W, 1848 (__mmask64) __U); 1849 } 1850 1851 extern __inline __m512i 1852 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1853 _mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 1854 { 1855 return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A, 1856 (__v64qi) __B, 1857 (__v64qi) 1858 _mm512_setzero_si512 (), 1859 (__mmask64) __U); 1860 } 1861 1862 extern __inline __m512i 1863 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1864 _mm512_min_epu16 (__m512i __A, __m512i __B) 1865 { 1866 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, 1867 (__v32hi) __B, 1868 (__v32hi) 1869 _mm512_setzero_si512 (), 1870 (__mmask32) -1); 1871 } 1872 1873 extern __inline __m512i 1874 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1875 _mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B) 1876 { 1877 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, 1878 (__v32hi) __B, 1879 (__v32hi) 1880 _mm512_setzero_si512 (), 1881 (__mmask32) __M); 1882 } 1883 1884 extern __inline __m512i 1885 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1886 _mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A, 1887 __m512i __B) 1888 { 1889 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, 1890 (__v32hi) __B, 1891 (__v32hi) __W, 1892 (__mmask32) __M); 1893 } 1894 1895 extern __inline __m512i 1896 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1897 _mm512_min_epi16 (__m512i __A, __m512i __B) 1898 { 1899 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, 1900 (__v32hi) __B, 1901 (__v32hi) 1902 _mm512_setzero_si512 (), 1903 (__mmask32) -1); 1904 } 1905 1906 extern __inline __m512i 1907 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1908 _mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B) 1909 { 1910 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, 1911 (__v32hi) __B, 1912 (__v32hi) 1913 _mm512_setzero_si512 (), 1914 (__mmask32) __M); 1915 } 1916 1917 extern __inline __m512i 1918 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1919 _mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A, 1920 __m512i __B) 1921 { 1922 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, 1923 (__v32hi) __B, 1924 (__v32hi) __W, 1925 (__mmask32) __M); 1926 } 1927 1928 extern __inline __m512i 1929 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1930 _mm512_max_epu8 (__m512i __A, __m512i __B) 1931 { 1932 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, 1933 (__v64qi) __B, 1934 (__v64qi) 1935 _mm512_setzero_si512 (), 1936 (__mmask64) -1); 1937 } 1938 1939 extern __inline __m512i 1940 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1941 _mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B) 1942 { 1943 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, 1944 (__v64qi) __B, 1945 (__v64qi) 1946 _mm512_setzero_si512 (), 1947 (__mmask64) __M); 1948 } 1949 1950 extern __inline __m512i 1951 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1952 _mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A, 1953 __m512i __B) 1954 { 1955 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, 1956 (__v64qi) __B, 1957 (__v64qi) __W, 1958 (__mmask64) __M); 1959 } 1960 1961 extern __inline __m512i 1962 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1963 _mm512_max_epi8 (__m512i __A, __m512i __B) 1964 { 1965 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, 1966 (__v64qi) __B, 1967 (__v64qi) 1968 _mm512_setzero_si512 (), 1969 (__mmask64) -1); 1970 } 1971 1972 extern __inline __m512i 1973 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1974 _mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B) 1975 { 1976 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, 1977 (__v64qi) __B, 1978 (__v64qi) 1979 _mm512_setzero_si512 (), 1980 (__mmask64) __M); 1981 } 1982 1983 extern __inline __m512i 1984 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1985 _mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A, 1986 __m512i __B) 1987 { 1988 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, 1989 (__v64qi) __B, 1990 (__v64qi) __W, 1991 (__mmask64) __M); 1992 } 1993 1994 extern __inline __m512i 1995 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1996 _mm512_min_epu8 (__m512i __A, __m512i __B) 1997 { 1998 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, 1999 (__v64qi) __B, 2000 (__v64qi) 2001 _mm512_setzero_si512 (), 2002 (__mmask64) -1); 2003 } 2004 2005 extern __inline __m512i 2006 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2007 _mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B) 2008 { 2009 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, 2010 (__v64qi) __B, 2011 (__v64qi) 2012 _mm512_setzero_si512 (), 2013 (__mmask64) __M); 2014 } 2015 2016 extern __inline __m512i 2017 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2018 _mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A, 2019 __m512i __B) 2020 { 2021 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, 2022 (__v64qi) __B, 2023 (__v64qi) __W, 2024 (__mmask64) __M); 2025 } 2026 2027 extern __inline __m512i 2028 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2029 _mm512_min_epi8 (__m512i __A, __m512i __B) 2030 { 2031 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, 2032 (__v64qi) __B, 2033 (__v64qi) 2034 _mm512_setzero_si512 (), 2035 (__mmask64) -1); 2036 } 2037 2038 extern __inline __m512i 2039 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2040 _mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B) 2041 { 2042 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, 2043 (__v64qi) __B, 2044 (__v64qi) 2045 _mm512_setzero_si512 (), 2046 (__mmask64) __M); 2047 } 2048 2049 extern __inline __m512i 2050 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2051 _mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A, 2052 __m512i __B) 2053 { 2054 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, 2055 (__v64qi) __B, 2056 (__v64qi) __W, 2057 (__mmask64) __M); 2058 } 2059 2060 extern __inline __m512i 2061 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2062 _mm512_max_epi16 (__m512i __A, __m512i __B) 2063 { 2064 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, 2065 (__v32hi) __B, 2066 (__v32hi) 2067 _mm512_setzero_si512 (), 2068 (__mmask32) -1); 2069 } 2070 2071 extern __inline __m512i 2072 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2073 _mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B) 2074 { 2075 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, 2076 (__v32hi) __B, 2077 (__v32hi) 2078 _mm512_setzero_si512 (), 2079 (__mmask32) __M); 2080 } 2081 2082 extern __inline __m512i 2083 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2084 _mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A, 2085 __m512i __B) 2086 { 2087 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, 2088 (__v32hi) __B, 2089 (__v32hi) __W, 2090 (__mmask32) __M); 2091 } 2092 2093 extern __inline __m512i 2094 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2095 _mm512_max_epu16 (__m512i __A, __m512i __B) 2096 { 2097 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, 2098 (__v32hi) __B, 2099 (__v32hi) 2100 _mm512_setzero_si512 (), 2101 (__mmask32) -1); 2102 } 2103 2104 extern __inline __m512i 2105 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2106 _mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B) 2107 { 2108 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, 2109 (__v32hi) __B, 2110 (__v32hi) 2111 _mm512_setzero_si512 (), 2112 (__mmask32) __M); 2113 } 2114 2115 extern __inline __m512i 2116 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2117 _mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A, 2118 __m512i __B) 2119 { 2120 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, 2121 (__v32hi) __B, 2122 (__v32hi) __W, 2123 (__mmask32) __M); 2124 } 2125 2126 extern __inline __m512i 2127 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2128 _mm512_sra_epi16 (__m512i __A, __m128i __B) 2129 { 2130 return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A, 2131 (__v8hi) __B, 2132 (__v32hi) 2133 _mm512_setzero_si512 (), 2134 (__mmask32) -1); 2135 } 2136 2137 extern __inline __m512i 2138 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2139 _mm512_mask_sra_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 2140 __m128i __B) 2141 { 2142 return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A, 2143 (__v8hi) __B, 2144 (__v32hi) __W, 2145 (__mmask32) __U); 2146 } 2147 2148 extern __inline __m512i 2149 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2150 _mm512_maskz_sra_epi16 (__mmask32 __U, __m512i __A, __m128i __B) 2151 { 2152 return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A, 2153 (__v8hi) __B, 2154 (__v32hi) 2155 _mm512_setzero_si512 (), 2156 (__mmask32) __U); 2157 } 2158 2159 extern __inline __m512i 2160 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2161 _mm512_srav_epi16 (__m512i __A, __m512i __B) 2162 { 2163 return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A, 2164 (__v32hi) __B, 2165 (__v32hi) 2166 _mm512_setzero_si512 (), 2167 (__mmask32) -1); 2168 } 2169 2170 extern __inline __m512i 2171 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2172 _mm512_mask_srav_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 2173 __m512i __B) 2174 { 2175 return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A, 2176 (__v32hi) __B, 2177 (__v32hi) __W, 2178 (__mmask32) __U); 2179 } 2180 2181 extern __inline __m512i 2182 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2183 _mm512_maskz_srav_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 2184 { 2185 return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A, 2186 (__v32hi) __B, 2187 (__v32hi) 2188 _mm512_setzero_si512 (), 2189 (__mmask32) __U); 2190 } 2191 2192 extern __inline __m512i 2193 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2194 _mm512_srlv_epi16 (__m512i __A, __m512i __B) 2195 { 2196 return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A, 2197 (__v32hi) __B, 2198 (__v32hi) 2199 _mm512_setzero_si512 (), 2200 (__mmask32) -1); 2201 } 2202 2203 extern __inline __m512i 2204 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2205 _mm512_mask_srlv_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 2206 __m512i __B) 2207 { 2208 return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A, 2209 (__v32hi) __B, 2210 (__v32hi) __W, 2211 (__mmask32) __U); 2212 } 2213 2214 extern __inline __m512i 2215 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2216 _mm512_maskz_srlv_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 2217 { 2218 return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A, 2219 (__v32hi) __B, 2220 (__v32hi) 2221 _mm512_setzero_si512 (), 2222 (__mmask32) __U); 2223 } 2224 2225 extern __inline __m512i 2226 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2227 _mm512_sllv_epi16 (__m512i __A, __m512i __B) 2228 { 2229 return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A, 2230 (__v32hi) __B, 2231 (__v32hi) 2232 _mm512_setzero_si512 (), 2233 (__mmask32) -1); 2234 } 2235 2236 extern __inline __m512i 2237 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2238 _mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 2239 __m512i __B) 2240 { 2241 return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A, 2242 (__v32hi) __B, 2243 (__v32hi) __W, 2244 (__mmask32) __U); 2245 } 2246 2247 extern __inline __m512i 2248 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2249 _mm512_maskz_sllv_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 2250 { 2251 return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A, 2252 (__v32hi) __B, 2253 (__v32hi) 2254 _mm512_setzero_si512 (), 2255 (__mmask32) __U); 2256 } 2257 2258 extern __inline __m512i 2259 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2260 _mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A, 2261 __m512i __B) 2262 { 2263 return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A, 2264 (__v32hi) __B, 2265 (__v64qi) __W, 2266 (__mmask64) __M); 2267 } 2268 2269 extern __inline __m512i 2270 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2271 _mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B) 2272 { 2273 return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A, 2274 (__v32hi) __B, 2275 (__v64qi) 2276 _mm512_setzero_si512 (), 2277 __M); 2278 } 2279 2280 extern __inline __m512i 2281 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2282 _mm512_packus_epi16 (__m512i __A, __m512i __B) 2283 { 2284 return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A, 2285 (__v32hi) __B, 2286 (__v64qi) 2287 _mm512_setzero_si512 (), 2288 (__mmask64) -1); 2289 } 2290 2291 extern __inline __m512i 2292 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2293 _mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A, 2294 __m512i __B) 2295 { 2296 return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A, 2297 (__v32hi) __B, 2298 (__v64qi) __W, 2299 (__mmask64) __M); 2300 } 2301 2302 extern __inline __m512i 2303 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2304 _mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B) 2305 { 2306 return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A, 2307 (__v32hi) __B, 2308 (__v64qi) 2309 _mm512_setzero_si512 (), 2310 (__mmask64) __M); 2311 } 2312 2313 extern __inline __m512i 2314 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2315 _mm512_abs_epi8 (__m512i __A) 2316 { 2317 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A, 2318 (__v64qi) 2319 _mm512_setzero_si512 (), 2320 (__mmask64) -1); 2321 } 2322 2323 extern __inline __m512i 2324 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2325 _mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A) 2326 { 2327 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A, 2328 (__v64qi) __W, 2329 (__mmask64) __U); 2330 } 2331 2332 extern __inline __m512i 2333 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2334 _mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A) 2335 { 2336 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A, 2337 (__v64qi) 2338 _mm512_setzero_si512 (), 2339 (__mmask64) __U); 2340 } 2341 2342 extern __inline __m512i 2343 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2344 _mm512_abs_epi16 (__m512i __A) 2345 { 2346 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A, 2347 (__v32hi) 2348 _mm512_setzero_si512 (), 2349 (__mmask32) -1); 2350 } 2351 2352 extern __inline __m512i 2353 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2354 _mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A) 2355 { 2356 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A, 2357 (__v32hi) __W, 2358 (__mmask32) __U); 2359 } 2360 2361 extern __inline __m512i 2362 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2363 _mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A) 2364 { 2365 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A, 2366 (__v32hi) 2367 _mm512_setzero_si512 (), 2368 (__mmask32) __U); 2369 } 2370 2371 extern __inline __mmask64 2372 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2373 _mm512_mask_cmpneq_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y) 2374 { 2375 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 2376 (__v64qi) __Y, 4, 2377 (__mmask64) __M); 2378 } 2379 2380 extern __inline __mmask64 2381 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2382 _mm512_mask_cmplt_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y) 2383 { 2384 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 2385 (__v64qi) __Y, 1, 2386 (__mmask64) __M); 2387 } 2388 2389 extern __inline __mmask64 2390 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2391 _mm512_mask_cmpge_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y) 2392 { 2393 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 2394 (__v64qi) __Y, 5, 2395 (__mmask64) __M); 2396 } 2397 2398 extern __inline __mmask64 2399 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2400 _mm512_mask_cmple_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y) 2401 { 2402 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 2403 (__v64qi) __Y, 2, 2404 (__mmask64) __M); 2405 } 2406 2407 extern __inline __mmask32 2408 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2409 _mm512_mask_cmpneq_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y) 2410 { 2411 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 2412 (__v32hi) __Y, 4, 2413 (__mmask32) __M); 2414 } 2415 2416 extern __inline __mmask32 2417 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2418 _mm512_mask_cmplt_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y) 2419 { 2420 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 2421 (__v32hi) __Y, 1, 2422 (__mmask32) __M); 2423 } 2424 2425 extern __inline __mmask32 2426 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2427 _mm512_mask_cmpge_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y) 2428 { 2429 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 2430 (__v32hi) __Y, 5, 2431 (__mmask32) __M); 2432 } 2433 2434 extern __inline __mmask32 2435 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2436 _mm512_mask_cmple_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y) 2437 { 2438 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 2439 (__v32hi) __Y, 2, 2440 (__mmask32) __M); 2441 } 2442 2443 extern __inline __mmask64 2444 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2445 _mm512_mask_cmpneq_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y) 2446 { 2447 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 2448 (__v64qi) __Y, 4, 2449 (__mmask64) __M); 2450 } 2451 2452 extern __inline __mmask64 2453 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2454 _mm512_mask_cmplt_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y) 2455 { 2456 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 2457 (__v64qi) __Y, 1, 2458 (__mmask64) __M); 2459 } 2460 2461 extern __inline __mmask64 2462 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2463 _mm512_mask_cmpge_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y) 2464 { 2465 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 2466 (__v64qi) __Y, 5, 2467 (__mmask64) __M); 2468 } 2469 2470 extern __inline __mmask64 2471 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2472 _mm512_mask_cmple_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y) 2473 { 2474 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 2475 (__v64qi) __Y, 2, 2476 (__mmask64) __M); 2477 } 2478 2479 extern __inline __mmask32 2480 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2481 _mm512_mask_cmpneq_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y) 2482 { 2483 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 2484 (__v32hi) __Y, 4, 2485 (__mmask32) __M); 2486 } 2487 2488 extern __inline __mmask32 2489 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2490 _mm512_mask_cmplt_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y) 2491 { 2492 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 2493 (__v32hi) __Y, 1, 2494 (__mmask32) __M); 2495 } 2496 2497 extern __inline __mmask32 2498 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2499 _mm512_mask_cmpge_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y) 2500 { 2501 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 2502 (__v32hi) __Y, 5, 2503 (__mmask32) __M); 2504 } 2505 2506 extern __inline __mmask32 2507 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2508 _mm512_mask_cmple_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y) 2509 { 2510 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 2511 (__v32hi) __Y, 2, 2512 (__mmask32) __M); 2513 } 2514 2515 extern __inline __mmask64 2516 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2517 _mm512_cmpneq_epu8_mask (__m512i __X, __m512i __Y) 2518 { 2519 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 2520 (__v64qi) __Y, 4, 2521 (__mmask64) -1); 2522 } 2523 2524 extern __inline __mmask64 2525 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2526 _mm512_cmplt_epu8_mask (__m512i __X, __m512i __Y) 2527 { 2528 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 2529 (__v64qi) __Y, 1, 2530 (__mmask64) -1); 2531 } 2532 2533 extern __inline __mmask64 2534 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2535 _mm512_cmpge_epu8_mask (__m512i __X, __m512i __Y) 2536 { 2537 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 2538 (__v64qi) __Y, 5, 2539 (__mmask64) -1); 2540 } 2541 2542 extern __inline __mmask64 2543 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2544 _mm512_cmple_epu8_mask (__m512i __X, __m512i __Y) 2545 { 2546 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 2547 (__v64qi) __Y, 2, 2548 (__mmask64) -1); 2549 } 2550 2551 extern __inline __mmask32 2552 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2553 _mm512_cmpneq_epu16_mask (__m512i __X, __m512i __Y) 2554 { 2555 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 2556 (__v32hi) __Y, 4, 2557 (__mmask32) -1); 2558 } 2559 2560 extern __inline __mmask32 2561 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2562 _mm512_cmplt_epu16_mask (__m512i __X, __m512i __Y) 2563 { 2564 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 2565 (__v32hi) __Y, 1, 2566 (__mmask32) -1); 2567 } 2568 2569 extern __inline __mmask32 2570 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2571 _mm512_cmpge_epu16_mask (__m512i __X, __m512i __Y) 2572 { 2573 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 2574 (__v32hi) __Y, 5, 2575 (__mmask32) -1); 2576 } 2577 2578 extern __inline __mmask32 2579 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2580 _mm512_cmple_epu16_mask (__m512i __X, __m512i __Y) 2581 { 2582 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 2583 (__v32hi) __Y, 2, 2584 (__mmask32) -1); 2585 } 2586 2587 extern __inline __mmask64 2588 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2589 _mm512_cmpneq_epi8_mask (__m512i __X, __m512i __Y) 2590 { 2591 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 2592 (__v64qi) __Y, 4, 2593 (__mmask64) -1); 2594 } 2595 2596 extern __inline __mmask64 2597 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2598 _mm512_cmplt_epi8_mask (__m512i __X, __m512i __Y) 2599 { 2600 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 2601 (__v64qi) __Y, 1, 2602 (__mmask64) -1); 2603 } 2604 2605 extern __inline __mmask64 2606 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2607 _mm512_cmpge_epi8_mask (__m512i __X, __m512i __Y) 2608 { 2609 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 2610 (__v64qi) __Y, 5, 2611 (__mmask64) -1); 2612 } 2613 2614 extern __inline __mmask64 2615 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2616 _mm512_cmple_epi8_mask (__m512i __X, __m512i __Y) 2617 { 2618 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 2619 (__v64qi) __Y, 2, 2620 (__mmask64) -1); 2621 } 2622 2623 extern __inline __mmask32 2624 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2625 _mm512_cmpneq_epi16_mask (__m512i __X, __m512i __Y) 2626 { 2627 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 2628 (__v32hi) __Y, 4, 2629 (__mmask32) -1); 2630 } 2631 2632 extern __inline __mmask32 2633 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2634 _mm512_cmplt_epi16_mask (__m512i __X, __m512i __Y) 2635 { 2636 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 2637 (__v32hi) __Y, 1, 2638 (__mmask32) -1); 2639 } 2640 2641 extern __inline __mmask32 2642 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2643 _mm512_cmpge_epi16_mask (__m512i __X, __m512i __Y) 2644 { 2645 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 2646 (__v32hi) __Y, 5, 2647 (__mmask32) -1); 2648 } 2649 2650 extern __inline __mmask32 2651 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2652 _mm512_cmple_epi16_mask (__m512i __X, __m512i __Y) 2653 { 2654 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 2655 (__v32hi) __Y, 2, 2656 (__mmask32) -1); 2657 } 2658 2659 extern __inline __m512i 2660 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2661 _mm512_packs_epi32 (__m512i __A, __m512i __B) 2662 { 2663 return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A, 2664 (__v16si) __B, 2665 (__v32hi) 2666 _mm512_setzero_si512 (), 2667 (__mmask32) -1); 2668 } 2669 2670 extern __inline __m512i 2671 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2672 _mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B) 2673 { 2674 return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A, 2675 (__v16si) __B, 2676 (__v32hi) 2677 _mm512_setzero_si512 (), 2678 __M); 2679 } 2680 2681 extern __inline __m512i 2682 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2683 _mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A, 2684 __m512i __B) 2685 { 2686 return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A, 2687 (__v16si) __B, 2688 (__v32hi) __W, 2689 __M); 2690 } 2691 2692 extern __inline __m512i 2693 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2694 _mm512_packus_epi32 (__m512i __A, __m512i __B) 2695 { 2696 return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A, 2697 (__v16si) __B, 2698 (__v32hi) 2699 _mm512_setzero_si512 (), 2700 (__mmask32) -1); 2701 } 2702 2703 extern __inline __m512i 2704 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2705 _mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B) 2706 { 2707 return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A, 2708 (__v16si) __B, 2709 (__v32hi) 2710 _mm512_setzero_si512 (), 2711 __M); 2712 } 2713 2714 extern __inline __m512i 2715 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2716 _mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A, 2717 __m512i __B) 2718 { 2719 return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A, 2720 (__v16si) __B, 2721 (__v32hi) __W, 2722 __M); 2723 } 2724 2725 #ifdef __OPTIMIZE__ 2726 extern __inline __mmask32 2727 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2728 _kshiftli_mask32 (__mmask32 __A, unsigned int __B) 2729 { 2730 return (__mmask32) __builtin_ia32_kshiftlisi ((__mmask32) __A, 2731 (__mmask8) __B); 2732 } 2733 2734 extern __inline __mmask64 2735 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2736 _kshiftli_mask64 (__mmask64 __A, unsigned int __B) 2737 { 2738 return (__mmask64) __builtin_ia32_kshiftlidi ((__mmask64) __A, 2739 (__mmask8) __B); 2740 } 2741 2742 extern __inline __mmask32 2743 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2744 _kshiftri_mask32 (__mmask32 __A, unsigned int __B) 2745 { 2746 return (__mmask32) __builtin_ia32_kshiftrisi ((__mmask32) __A, 2747 (__mmask8) __B); 2748 } 2749 2750 extern __inline __mmask64 2751 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2752 _kshiftri_mask64 (__mmask64 __A, unsigned int __B) 2753 { 2754 return (__mmask64) __builtin_ia32_kshiftridi ((__mmask64) __A, 2755 (__mmask8) __B); 2756 } 2757 2758 extern __inline __m512i 2759 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2760 _mm512_alignr_epi8 (__m512i __A, __m512i __B, const int __N) 2761 { 2762 return (__m512i) __builtin_ia32_palignr512 ((__v8di) __A, 2763 (__v8di) __B, __N * 8); 2764 } 2765 2766 extern __inline __m512i 2767 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2768 _mm512_mask_alignr_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 2769 __m512i __B, const int __N) 2770 { 2771 return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A, 2772 (__v8di) __B, 2773 __N * 8, 2774 (__v8di) __W, 2775 (__mmask64) __U); 2776 } 2777 2778 extern __inline __m512i 2779 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2780 _mm512_maskz_alignr_epi8 (__mmask64 __U, __m512i __A, __m512i __B, 2781 const int __N) 2782 { 2783 return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A, 2784 (__v8di) __B, 2785 __N * 8, 2786 (__v8di) 2787 _mm512_setzero_si512 (), 2788 (__mmask64) __U); 2789 } 2790 2791 extern __inline __m512i 2792 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2793 _mm512_dbsad_epu8 (__m512i __A, __m512i __B, const int __imm) 2794 { 2795 return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A, 2796 (__v64qi) __B, 2797 __imm, 2798 (__v32hi) 2799 _mm512_setzero_si512 (), 2800 (__mmask32) -1); 2801 } 2802 2803 extern __inline __m512i 2804 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2805 _mm512_mask_dbsad_epu8 (__m512i __W, __mmask32 __U, __m512i __A, 2806 __m512i __B, const int __imm) 2807 { 2808 return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A, 2809 (__v64qi) __B, 2810 __imm, 2811 (__v32hi) __W, 2812 (__mmask32) __U); 2813 } 2814 2815 extern __inline __m512i 2816 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2817 _mm512_maskz_dbsad_epu8 (__mmask32 __U, __m512i __A, __m512i __B, 2818 const int __imm) 2819 { 2820 return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A, 2821 (__v64qi) __B, 2822 __imm, 2823 (__v32hi) 2824 _mm512_setzero_si512 (), 2825 (__mmask32) __U); 2826 } 2827 2828 extern __inline __m512i 2829 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2830 _mm512_srli_epi16 (__m512i __A, const int __imm) 2831 { 2832 return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm, 2833 (__v32hi) 2834 _mm512_setzero_si512 (), 2835 (__mmask32) -1); 2836 } 2837 2838 extern __inline __m512i 2839 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2840 _mm512_mask_srli_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 2841 const int __imm) 2842 { 2843 return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm, 2844 (__v32hi) __W, 2845 (__mmask32) __U); 2846 } 2847 2848 extern __inline __m512i 2849 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2850 _mm512_maskz_srli_epi16 (__mmask32 __U, __m512i __A, const int __imm) 2851 { 2852 return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm, 2853 (__v32hi) 2854 _mm512_setzero_si512 (), 2855 (__mmask32) __U); 2856 } 2857 2858 extern __inline __m512i 2859 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2860 _mm512_slli_epi16 (__m512i __A, const int __B) 2861 { 2862 return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B, 2863 (__v32hi) 2864 _mm512_setzero_si512 (), 2865 (__mmask32) -1); 2866 } 2867 2868 extern __inline __m512i 2869 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2870 _mm512_mask_slli_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 2871 const int __B) 2872 { 2873 return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B, 2874 (__v32hi) __W, 2875 (__mmask32) __U); 2876 } 2877 2878 extern __inline __m512i 2879 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2880 _mm512_maskz_slli_epi16 (__mmask32 __U, __m512i __A, const int __B) 2881 { 2882 return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B, 2883 (__v32hi) 2884 _mm512_setzero_si512 (), 2885 (__mmask32) __U); 2886 } 2887 2888 extern __inline __m512i 2889 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2890 _mm512_shufflehi_epi16 (__m512i __A, const int __imm) 2891 { 2892 return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A, 2893 __imm, 2894 (__v32hi) 2895 _mm512_setzero_si512 (), 2896 (__mmask32) -1); 2897 } 2898 2899 extern __inline __m512i 2900 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2901 _mm512_mask_shufflehi_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 2902 const int __imm) 2903 { 2904 return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A, 2905 __imm, 2906 (__v32hi) __W, 2907 (__mmask32) __U); 2908 } 2909 2910 extern __inline __m512i 2911 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2912 _mm512_maskz_shufflehi_epi16 (__mmask32 __U, __m512i __A, 2913 const int __imm) 2914 { 2915 return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A, 2916 __imm, 2917 (__v32hi) 2918 _mm512_setzero_si512 (), 2919 (__mmask32) __U); 2920 } 2921 2922 extern __inline __m512i 2923 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2924 _mm512_shufflelo_epi16 (__m512i __A, const int __imm) 2925 { 2926 return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A, 2927 __imm, 2928 (__v32hi) 2929 _mm512_setzero_si512 (), 2930 (__mmask32) -1); 2931 } 2932 2933 extern __inline __m512i 2934 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2935 _mm512_mask_shufflelo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 2936 const int __imm) 2937 { 2938 return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A, 2939 __imm, 2940 (__v32hi) __W, 2941 (__mmask32) __U); 2942 } 2943 2944 extern __inline __m512i 2945 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2946 _mm512_maskz_shufflelo_epi16 (__mmask32 __U, __m512i __A, 2947 const int __imm) 2948 { 2949 return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A, 2950 __imm, 2951 (__v32hi) 2952 _mm512_setzero_si512 (), 2953 (__mmask32) __U); 2954 } 2955 2956 extern __inline __m512i 2957 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2958 _mm512_srai_epi16 (__m512i __A, const int __imm) 2959 { 2960 return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm, 2961 (__v32hi) 2962 _mm512_setzero_si512 (), 2963 (__mmask32) -1); 2964 } 2965 2966 extern __inline __m512i 2967 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2968 _mm512_mask_srai_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 2969 const int __imm) 2970 { 2971 return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm, 2972 (__v32hi) __W, 2973 (__mmask32) __U); 2974 } 2975 2976 extern __inline __m512i 2977 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2978 _mm512_maskz_srai_epi16 (__mmask32 __U, __m512i __A, const int __imm) 2979 { 2980 return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm, 2981 (__v32hi) 2982 _mm512_setzero_si512 (), 2983 (__mmask32) __U); 2984 } 2985 2986 extern __inline __m512i 2987 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2988 _mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W) 2989 { 2990 return (__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) __A, 2991 (__v32hi) __W, 2992 (__mmask32) __U); 2993 } 2994 2995 extern __inline __m512i 2996 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2997 _mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W) 2998 { 2999 return (__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) __A, 3000 (__v64qi) __W, 3001 (__mmask64) __U); 3002 } 3003 3004 extern __inline __mmask32 3005 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3006 _mm512_mask_cmp_epi16_mask (__mmask32 __U, __m512i __X, __m512i __Y, 3007 const int __P) 3008 { 3009 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 3010 (__v32hi) __Y, __P, 3011 (__mmask32) __U); 3012 } 3013 3014 extern __inline __mmask32 3015 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3016 _mm512_cmp_epi16_mask (__m512i __X, __m512i __Y, const int __P) 3017 { 3018 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 3019 (__v32hi) __Y, __P, 3020 (__mmask32) -1); 3021 } 3022 3023 extern __inline __mmask64 3024 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3025 _mm512_mask_cmp_epi8_mask (__mmask32 __U, __m512i __X, __m512i __Y, 3026 const int __P) 3027 { 3028 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 3029 (__v64qi) __Y, __P, 3030 (__mmask64) __U); 3031 } 3032 3033 extern __inline __mmask64 3034 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3035 _mm512_cmp_epi8_mask (__m512i __X, __m512i __Y, const int __P) 3036 { 3037 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 3038 (__v64qi) __Y, __P, 3039 (__mmask64) -1); 3040 } 3041 3042 extern __inline __mmask32 3043 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3044 _mm512_mask_cmp_epu16_mask (__mmask32 __U, __m512i __X, __m512i __Y, 3045 const int __P) 3046 { 3047 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 3048 (__v32hi) __Y, __P, 3049 (__mmask32) __U); 3050 } 3051 3052 extern __inline __mmask32 3053 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3054 _mm512_cmp_epu16_mask (__m512i __X, __m512i __Y, const int __P) 3055 { 3056 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 3057 (__v32hi) __Y, __P, 3058 (__mmask32) -1); 3059 } 3060 3061 extern __inline __mmask64 3062 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3063 _mm512_mask_cmp_epu8_mask (__mmask32 __U, __m512i __X, __m512i __Y, 3064 const int __P) 3065 { 3066 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 3067 (__v64qi) __Y, __P, 3068 (__mmask64) __U); 3069 } 3070 3071 extern __inline __mmask64 3072 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3073 _mm512_cmp_epu8_mask (__m512i __X, __m512i __Y, const int __P) 3074 { 3075 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 3076 (__v64qi) __Y, __P, 3077 (__mmask64) -1); 3078 } 3079 3080 extern __inline __m512i 3081 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3082 _mm512_bslli_epi128 (__m512i __A, const int __N) 3083 { 3084 return (__m512i) __builtin_ia32_pslldq512 (__A, __N * 8); 3085 } 3086 3087 extern __inline __m512i 3088 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3089 _mm512_bsrli_epi128 (__m512i __A, const int __N) 3090 { 3091 return (__m512i) __builtin_ia32_psrldq512 (__A, __N * 8); 3092 } 3093 3094 #else 3095 #define _kshiftli_mask32(X, Y) \ 3096 ((__mmask32) __builtin_ia32_kshiftlisi ((__mmask32)(X), (__mmask8)(Y))) 3097 3098 #define _kshiftli_mask64(X, Y) \ 3099 ((__mmask64) __builtin_ia32_kshiftlidi ((__mmask64)(X), (__mmask8)(Y))) 3100 3101 #define _kshiftri_mask32(X, Y) \ 3102 ((__mmask32) __builtin_ia32_kshiftrisi ((__mmask32)(X), (__mmask8)(Y))) 3103 3104 #define _kshiftri_mask64(X, Y) \ 3105 ((__mmask64) __builtin_ia32_kshiftridi ((__mmask64)(X), (__mmask8)(Y))) 3106 3107 #define _mm512_alignr_epi8(X, Y, N) \ 3108 ((__m512i) __builtin_ia32_palignr512 ((__v8di)(__m512i)(X), \ 3109 (__v8di)(__m512i)(Y), \ 3110 (int)(N * 8))) 3111 3112 #define _mm512_mask_alignr_epi8(W, U, X, Y, N) \ 3113 ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X), \ 3114 (__v8di)(__m512i)(Y), (int)(N * 8), \ 3115 (__v8di)(__m512i)(W), (__mmask64)(U))) 3116 3117 #define _mm512_maskz_alignr_epi8(U, X, Y, N) \ 3118 ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X), \ 3119 (__v8di)(__m512i)(Y), (int)(N * 8), \ 3120 (__v8di)(__m512i) \ 3121 _mm512_setzero_si512 (), \ 3122 (__mmask64)(U))) 3123 3124 #define _mm512_dbsad_epu8(X, Y, C) \ 3125 ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \ 3126 (__v64qi)(__m512i) (Y), (int) (C), \ 3127 (__v32hi)(__m512i) \ 3128 _mm512_setzero_si512 (), \ 3129 (__mmask32)-1)) 3130 3131 #define _mm512_mask_dbsad_epu8(W, U, X, Y, C) \ 3132 ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \ 3133 (__v64qi)(__m512i) (Y), (int) (C), \ 3134 (__v32hi)(__m512i)(W), \ 3135 (__mmask32)(U))) 3136 3137 #define _mm512_maskz_dbsad_epu8(U, X, Y, C) \ 3138 ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \ 3139 (__v64qi)(__m512i) (Y), (int) (C), \ 3140 (__v32hi)(__m512i) \ 3141 _mm512_setzero_si512 (), \ 3142 (__mmask32)(U))) 3143 3144 #define _mm512_srli_epi16(A, B) \ 3145 ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \ 3146 (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)-1)) 3147 3148 #define _mm512_mask_srli_epi16(W, U, A, B) \ 3149 ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \ 3150 (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U))) 3151 3152 #define _mm512_maskz_srli_epi16(U, A, B) \ 3153 ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \ 3154 (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)(U))) 3155 3156 #define _mm512_slli_epi16(X, C) \ 3157 ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\ 3158 (__v32hi)(__m512i)_mm512_setzero_si512 (), \ 3159 (__mmask32)-1)) 3160 3161 #define _mm512_mask_slli_epi16(W, U, X, C) \ 3162 ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\ 3163 (__v32hi)(__m512i)(W),\ 3164 (__mmask32)(U))) 3165 3166 #define _mm512_maskz_slli_epi16(U, X, C) \ 3167 ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\ 3168 (__v32hi)(__m512i)_mm512_setzero_si512 (), \ 3169 (__mmask32)(U))) 3170 3171 #define _mm512_shufflehi_epi16(A, B) \ 3172 ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \ 3173 (__v32hi)(__m512i) \ 3174 _mm512_setzero_si512 (), \ 3175 (__mmask32)-1)) 3176 3177 #define _mm512_mask_shufflehi_epi16(W, U, A, B) \ 3178 ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \ 3179 (__v32hi)(__m512i)(W), \ 3180 (__mmask32)(U))) 3181 3182 #define _mm512_maskz_shufflehi_epi16(U, A, B) \ 3183 ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \ 3184 (__v32hi)(__m512i) \ 3185 _mm512_setzero_si512 (), \ 3186 (__mmask32)(U))) 3187 3188 #define _mm512_shufflelo_epi16(A, B) \ 3189 ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \ 3190 (__v32hi)(__m512i) \ 3191 _mm512_setzero_si512 (), \ 3192 (__mmask32)-1)) 3193 3194 #define _mm512_mask_shufflelo_epi16(W, U, A, B) \ 3195 ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \ 3196 (__v32hi)(__m512i)(W), \ 3197 (__mmask32)(U))) 3198 3199 #define _mm512_maskz_shufflelo_epi16(U, A, B) \ 3200 ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \ 3201 (__v32hi)(__m512i) \ 3202 _mm512_setzero_si512 (), \ 3203 (__mmask32)(U))) 3204 3205 #define _mm512_srai_epi16(A, B) \ 3206 ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \ 3207 (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)-1)) 3208 3209 #define _mm512_mask_srai_epi16(W, U, A, B) \ 3210 ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \ 3211 (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U))) 3212 3213 #define _mm512_maskz_srai_epi16(U, A, B) \ 3214 ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \ 3215 (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)(U))) 3216 3217 #define _mm512_mask_blend_epi16(__U, __A, __W) \ 3218 ((__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) (__A), \ 3219 (__v32hi) (__W), \ 3220 (__mmask32) (__U))) 3221 3222 #define _mm512_mask_blend_epi8(__U, __A, __W) \ 3223 ((__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) (__A), \ 3224 (__v64qi) (__W), \ 3225 (__mmask64) (__U))) 3226 3227 #define _mm512_cmp_epi16_mask(X, Y, P) \ 3228 ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X), \ 3229 (__v32hi)(__m512i)(Y), (int)(P),\ 3230 (__mmask32)(-1))) 3231 3232 #define _mm512_cmp_epi8_mask(X, Y, P) \ 3233 ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X), \ 3234 (__v64qi)(__m512i)(Y), (int)(P),\ 3235 (__mmask64)(-1))) 3236 3237 #define _mm512_cmp_epu16_mask(X, Y, P) \ 3238 ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X), \ 3239 (__v32hi)(__m512i)(Y), (int)(P),\ 3240 (__mmask32)(-1))) 3241 3242 #define _mm512_cmp_epu8_mask(X, Y, P) \ 3243 ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X), \ 3244 (__v64qi)(__m512i)(Y), (int)(P),\ 3245 (__mmask64)(-1))) 3246 3247 #define _mm512_mask_cmp_epi16_mask(M, X, Y, P) \ 3248 ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X), \ 3249 (__v32hi)(__m512i)(Y), (int)(P),\ 3250 (__mmask32)(M))) 3251 3252 #define _mm512_mask_cmp_epi8_mask(M, X, Y, P) \ 3253 ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X), \ 3254 (__v64qi)(__m512i)(Y), (int)(P),\ 3255 (__mmask64)(M))) 3256 3257 #define _mm512_mask_cmp_epu16_mask(M, X, Y, P) \ 3258 ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X), \ 3259 (__v32hi)(__m512i)(Y), (int)(P),\ 3260 (__mmask32)(M))) 3261 3262 #define _mm512_mask_cmp_epu8_mask(M, X, Y, P) \ 3263 ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X), \ 3264 (__v64qi)(__m512i)(Y), (int)(P),\ 3265 (__mmask64)(M))) 3266 3267 #define _mm512_bslli_epi128(A, N) \ 3268 ((__m512i)__builtin_ia32_pslldq512 ((__m512i)(A), (int)(N) * 8)) 3269 3270 #define _mm512_bsrli_epi128(A, N) \ 3271 ((__m512i)__builtin_ia32_psrldq512 ((__m512i)(A), (int)(N) * 8)) 3272 3273 #endif 3274 3275 #ifdef __DISABLE_AVX512BW__ 3276 #undef __DISABLE_AVX512BW__ 3277 #pragma GCC pop_options 3278 #endif /* __DISABLE_AVX512BW__ */ 3279 3280 #endif /* _AVX512BWINTRIN_H_INCLUDED */ 3281