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 <avx512vlbwintrin.h> directly; include <immintrin.h> instead." 26 #endif 27 28 #ifndef _AVX512VLBWINTRIN_H_INCLUDED 29 #define _AVX512VLBWINTRIN_H_INCLUDED 30 31 #if !defined(__AVX512VL__) || !defined(__AVX512BW__) 32 #pragma GCC push_options 33 #pragma GCC target("avx512vl,avx512bw") 34 #define __DISABLE_AVX512VLBW__ 35 #endif /* __AVX512VLBW__ */ 36 37 38 extern __inline __m256i 39 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 40 _mm256_mask_mov_epi8 (__m256i __W, __mmask32 __U, __m256i __A) 41 { 42 return (__m256i) __builtin_ia32_movdquqi256_mask ((__v32qi) __A, 43 (__v32qi) __W, 44 (__mmask32) __U); 45 } 46 47 extern __inline __m256i 48 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 49 _mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A) 50 { 51 return (__m256i) __builtin_ia32_movdquqi256_mask ((__v32qi) __A, 52 (__v32qi) 53 _mm256_setzero_si256 (), 54 (__mmask32) __U); 55 } 56 57 extern __inline __m128i 58 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 59 _mm_mask_mov_epi8 (__m128i __W, __mmask16 __U, __m128i __A) 60 { 61 return (__m128i) __builtin_ia32_movdquqi128_mask ((__v16qi) __A, 62 (__v16qi) __W, 63 (__mmask16) __U); 64 } 65 66 extern __inline __m128i 67 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 68 _mm_maskz_mov_epi8 (__mmask16 __U, __m128i __A) 69 { 70 return (__m128i) __builtin_ia32_movdquqi128_mask ((__v16qi) __A, 71 (__v16qi) 72 _mm_setzero_si128 (), 73 (__mmask16) __U); 74 } 75 76 extern __inline void 77 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 78 _mm256_mask_storeu_epi8 (void *__P, __mmask32 __U, __m256i __A) 79 { 80 __builtin_ia32_storedquqi256_mask ((char *) __P, 81 (__v32qi) __A, 82 (__mmask32) __U); 83 } 84 85 extern __inline void 86 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 87 _mm_mask_storeu_epi8 (void *__P, __mmask16 __U, __m128i __A) 88 { 89 __builtin_ia32_storedquqi128_mask ((char *) __P, 90 (__v16qi) __A, 91 (__mmask16) __U); 92 } 93 94 extern __inline __m256i 95 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 96 _mm256_mask_loadu_epi16 (__m256i __W, __mmask16 __U, void const *__P) 97 { 98 return (__m256i) __builtin_ia32_loaddquhi256_mask ((const short *) __P, 99 (__v16hi) __W, 100 (__mmask16) __U); 101 } 102 103 extern __inline __m256i 104 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 105 _mm256_maskz_loadu_epi16 (__mmask16 __U, void const *__P) 106 { 107 return (__m256i) __builtin_ia32_loaddquhi256_mask ((const short *) __P, 108 (__v16hi) 109 _mm256_setzero_si256 (), 110 (__mmask16) __U); 111 } 112 113 extern __inline __m128i 114 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 115 _mm_mask_loadu_epi16 (__m128i __W, __mmask8 __U, void const *__P) 116 { 117 return (__m128i) __builtin_ia32_loaddquhi128_mask ((const short *) __P, 118 (__v8hi) __W, 119 (__mmask8) __U); 120 } 121 122 extern __inline __m128i 123 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 124 _mm_maskz_loadu_epi16 (__mmask8 __U, void const *__P) 125 { 126 return (__m128i) __builtin_ia32_loaddquhi128_mask ((const short *) __P, 127 (__v8hi) 128 _mm_setzero_si128 (), 129 (__mmask8) __U); 130 } 131 132 133 extern __inline __m256i 134 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 135 _mm256_mask_mov_epi16 (__m256i __W, __mmask16 __U, __m256i __A) 136 { 137 return (__m256i) __builtin_ia32_movdquhi256_mask ((__v16hi) __A, 138 (__v16hi) __W, 139 (__mmask16) __U); 140 } 141 142 extern __inline __m256i 143 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 144 _mm256_maskz_mov_epi16 (__mmask16 __U, __m256i __A) 145 { 146 return (__m256i) __builtin_ia32_movdquhi256_mask ((__v16hi) __A, 147 (__v16hi) 148 _mm256_setzero_si256 (), 149 (__mmask16) __U); 150 } 151 152 extern __inline __m128i 153 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 154 _mm_mask_mov_epi16 (__m128i __W, __mmask8 __U, __m128i __A) 155 { 156 return (__m128i) __builtin_ia32_movdquhi128_mask ((__v8hi) __A, 157 (__v8hi) __W, 158 (__mmask8) __U); 159 } 160 161 extern __inline __m128i 162 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 163 _mm_maskz_mov_epi16 (__mmask8 __U, __m128i __A) 164 { 165 return (__m128i) __builtin_ia32_movdquhi128_mask ((__v8hi) __A, 166 (__v8hi) 167 _mm_setzero_si128 (), 168 (__mmask8) __U); 169 } 170 171 extern __inline __m256i 172 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 173 _mm256_mask_loadu_epi8 (__m256i __W, __mmask32 __U, void const *__P) 174 { 175 return (__m256i) __builtin_ia32_loaddquqi256_mask ((const char *) __P, 176 (__v32qi) __W, 177 (__mmask32) __U); 178 } 179 180 extern __inline __m256i 181 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 182 _mm256_maskz_loadu_epi8 (__mmask32 __U, void const *__P) 183 { 184 return (__m256i) __builtin_ia32_loaddquqi256_mask ((const char *) __P, 185 (__v32qi) 186 _mm256_setzero_si256 (), 187 (__mmask32) __U); 188 } 189 190 extern __inline __m128i 191 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 192 _mm_mask_loadu_epi8 (__m128i __W, __mmask16 __U, void const *__P) 193 { 194 return (__m128i) __builtin_ia32_loaddquqi128_mask ((const char *) __P, 195 (__v16qi) __W, 196 (__mmask16) __U); 197 } 198 199 extern __inline __m128i 200 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 201 _mm_maskz_loadu_epi8 (__mmask16 __U, void const *__P) 202 { 203 return (__m128i) __builtin_ia32_loaddquqi128_mask ((const char *) __P, 204 (__v16qi) 205 _mm_setzero_si128 (), 206 (__mmask16) __U); 207 } 208 209 extern __inline __m128i 210 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 211 _mm256_cvtepi16_epi8 (__m256i __A) 212 { 213 214 return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A, 215 (__v16qi)_mm_undefined_si128(), 216 (__mmask16) -1); 217 } 218 219 extern __inline __m128i 220 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 221 _mm256_mask_cvtepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) 222 { 223 return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A, 224 (__v16qi) __O, __M); 225 } 226 227 extern __inline __m128i 228 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 229 _mm256_maskz_cvtepi16_epi8 (__mmask16 __M, __m256i __A) 230 { 231 return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A, 232 (__v16qi) 233 _mm_setzero_si128 (), 234 __M); 235 } 236 237 extern __inline __m128i 238 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 239 _mm_cvtsepi16_epi8 (__m128i __A) 240 { 241 242 return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A, 243 (__v16qi)_mm_undefined_si128(), 244 (__mmask8) -1); 245 } 246 247 extern __inline __m128i 248 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 249 _mm_mask_cvtsepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) 250 { 251 return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A, 252 (__v16qi) __O, __M); 253 } 254 255 extern __inline __m128i 256 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 257 _mm_maskz_cvtsepi16_epi8 (__mmask8 __M, __m128i __A) 258 { 259 return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A, 260 (__v16qi) 261 _mm_setzero_si128 (), 262 __M); 263 } 264 265 extern __inline __m128i 266 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 267 _mm256_cvtsepi16_epi8 (__m256i __A) 268 { 269 270 return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A, 271 (__v16qi)_mm_undefined_si128(), 272 (__mmask16) -1); 273 } 274 275 extern __inline __m128i 276 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 277 _mm256_mask_cvtsepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) 278 { 279 return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A, 280 (__v16qi) __O, __M); 281 } 282 283 extern __inline __m128i 284 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 285 _mm256_maskz_cvtsepi16_epi8 (__mmask16 __M, __m256i __A) 286 { 287 return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A, 288 (__v16qi) 289 _mm_setzero_si128 (), 290 __M); 291 } 292 293 extern __inline __m128i 294 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 295 _mm_cvtusepi16_epi8 (__m128i __A) 296 { 297 298 return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A, 299 (__v16qi)_mm_undefined_si128(), 300 (__mmask8) -1); 301 } 302 303 extern __inline __m128i 304 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 305 _mm_mask_cvtusepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) 306 { 307 return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A, 308 (__v16qi) __O, 309 __M); 310 } 311 312 extern __inline __m128i 313 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 314 _mm_maskz_cvtusepi16_epi8 (__mmask8 __M, __m128i __A) 315 { 316 return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A, 317 (__v16qi) 318 _mm_setzero_si128 (), 319 __M); 320 } 321 322 extern __inline __m128i 323 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 324 _mm256_cvtusepi16_epi8 (__m256i __A) 325 { 326 327 return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A, 328 (__v16qi)_mm_undefined_si128(), 329 (__mmask16) -1); 330 } 331 332 extern __inline __m128i 333 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 334 _mm256_mask_cvtusepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) 335 { 336 return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A, 337 (__v16qi) __O, 338 __M); 339 } 340 341 extern __inline __m128i 342 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 343 _mm256_maskz_cvtusepi16_epi8 (__mmask16 __M, __m256i __A) 344 { 345 return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A, 346 (__v16qi) 347 _mm_setzero_si128 (), 348 __M); 349 } 350 351 extern __inline __m256i 352 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 353 _mm256_mask_broadcastb_epi8 (__m256i __O, __mmask32 __M, __m128i __A) 354 { 355 return (__m256i) __builtin_ia32_pbroadcastb256_mask ((__v16qi) __A, 356 (__v32qi) __O, 357 __M); 358 } 359 360 extern __inline __m256i 361 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 362 _mm256_maskz_broadcastb_epi8 (__mmask32 __M, __m128i __A) 363 { 364 return (__m256i) __builtin_ia32_pbroadcastb256_mask ((__v16qi) __A, 365 (__v32qi) 366 _mm256_setzero_si256 (), 367 __M); 368 } 369 370 extern __inline __m256i 371 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 372 _mm256_mask_set1_epi8 (__m256i __O, __mmask32 __M, char __A) 373 { 374 return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A, 375 (__v32qi) __O, 376 __M); 377 } 378 379 extern __inline __m256i 380 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 381 _mm256_maskz_set1_epi8 (__mmask32 __M, char __A) 382 { 383 return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A, 384 (__v32qi) 385 _mm256_setzero_si256 (), 386 __M); 387 } 388 389 extern __inline __m128i 390 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 391 _mm_mask_broadcastb_epi8 (__m128i __O, __mmask16 __M, __m128i __A) 392 { 393 return (__m128i) __builtin_ia32_pbroadcastb128_mask ((__v16qi) __A, 394 (__v16qi) __O, 395 __M); 396 } 397 398 extern __inline __m128i 399 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 400 _mm_maskz_broadcastb_epi8 (__mmask16 __M, __m128i __A) 401 { 402 return (__m128i) __builtin_ia32_pbroadcastb128_mask ((__v16qi) __A, 403 (__v16qi) 404 _mm_setzero_si128 (), 405 __M); 406 } 407 408 extern __inline __m128i 409 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 410 _mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A) 411 { 412 return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A, 413 (__v16qi) __O, 414 __M); 415 } 416 417 extern __inline __m128i 418 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 419 _mm_maskz_set1_epi8 (__mmask16 __M, char __A) 420 { 421 return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A, 422 (__v16qi) 423 _mm_setzero_si128 (), 424 __M); 425 } 426 427 extern __inline __m256i 428 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 429 _mm256_mask_broadcastw_epi16 (__m256i __O, __mmask16 __M, __m128i __A) 430 { 431 return (__m256i) __builtin_ia32_pbroadcastw256_mask ((__v8hi) __A, 432 (__v16hi) __O, 433 __M); 434 } 435 436 extern __inline __m256i 437 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 438 _mm256_maskz_broadcastw_epi16 (__mmask16 __M, __m128i __A) 439 { 440 return (__m256i) __builtin_ia32_pbroadcastw256_mask ((__v8hi) __A, 441 (__v16hi) 442 _mm256_setzero_si256 (), 443 __M); 444 } 445 446 extern __inline __m256i 447 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 448 _mm256_mask_set1_epi16 (__m256i __O, __mmask16 __M, short __A) 449 { 450 return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A, 451 (__v16hi) __O, 452 __M); 453 } 454 455 extern __inline __m256i 456 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 457 _mm256_maskz_set1_epi16 (__mmask16 __M, short __A) 458 { 459 return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A, 460 (__v16hi) 461 _mm256_setzero_si256 (), 462 __M); 463 } 464 465 extern __inline __m128i 466 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 467 _mm_mask_broadcastw_epi16 (__m128i __O, __mmask8 __M, __m128i __A) 468 { 469 return (__m128i) __builtin_ia32_pbroadcastw128_mask ((__v8hi) __A, 470 (__v8hi) __O, 471 __M); 472 } 473 474 extern __inline __m128i 475 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 476 _mm_maskz_broadcastw_epi16 (__mmask8 __M, __m128i __A) 477 { 478 return (__m128i) __builtin_ia32_pbroadcastw128_mask ((__v8hi) __A, 479 (__v8hi) 480 _mm_setzero_si128 (), 481 __M); 482 } 483 484 extern __inline __m128i 485 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 486 _mm_mask_set1_epi16 (__m128i __O, __mmask8 __M, short __A) 487 { 488 return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A, 489 (__v8hi) __O, 490 __M); 491 } 492 493 extern __inline __m128i 494 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 495 _mm_maskz_set1_epi16 (__mmask8 __M, short __A) 496 { 497 return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A, 498 (__v8hi) 499 _mm_setzero_si128 (), 500 __M); 501 } 502 503 extern __inline __m256i 504 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 505 _mm256_permutexvar_epi16 (__m256i __A, __m256i __B) 506 { 507 return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B, 508 (__v16hi) __A, 509 (__v16hi) 510 _mm256_setzero_si256 (), 511 (__mmask16) -1); 512 } 513 514 extern __inline __m256i 515 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 516 _mm256_maskz_permutexvar_epi16 (__mmask16 __M, __m256i __A, 517 __m256i __B) 518 { 519 return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B, 520 (__v16hi) __A, 521 (__v16hi) 522 _mm256_setzero_si256 (), 523 (__mmask16) __M); 524 } 525 526 extern __inline __m256i 527 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 528 _mm256_mask_permutexvar_epi16 (__m256i __W, __mmask16 __M, __m256i __A, 529 __m256i __B) 530 { 531 return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B, 532 (__v16hi) __A, 533 (__v16hi) __W, 534 (__mmask16) __M); 535 } 536 537 extern __inline __m128i 538 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 539 _mm_permutexvar_epi16 (__m128i __A, __m128i __B) 540 { 541 return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B, 542 (__v8hi) __A, 543 (__v8hi) 544 _mm_setzero_si128 (), 545 (__mmask8) -1); 546 } 547 548 extern __inline __m128i 549 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 550 _mm_maskz_permutexvar_epi16 (__mmask8 __M, __m128i __A, __m128i __B) 551 { 552 return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B, 553 (__v8hi) __A, 554 (__v8hi) 555 _mm_setzero_si128 (), 556 (__mmask8) __M); 557 } 558 559 extern __inline __m128i 560 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 561 _mm_mask_permutexvar_epi16 (__m128i __W, __mmask8 __M, __m128i __A, 562 __m128i __B) 563 { 564 return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B, 565 (__v8hi) __A, 566 (__v8hi) __W, 567 (__mmask8) __M); 568 } 569 570 extern __inline __m256i 571 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 572 _mm256_permutex2var_epi16 (__m256i __A, __m256i __I, __m256i __B) 573 { 574 return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I 575 /* idx */ , 576 (__v16hi) __A, 577 (__v16hi) __B, 578 (__mmask16) -1); 579 } 580 581 extern __inline __m256i 582 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 583 _mm256_mask_permutex2var_epi16 (__m256i __A, __mmask16 __U, 584 __m256i __I, __m256i __B) 585 { 586 return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I 587 /* idx */ , 588 (__v16hi) __A, 589 (__v16hi) __B, 590 (__mmask16) 591 __U); 592 } 593 594 extern __inline __m256i 595 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 596 _mm256_mask2_permutex2var_epi16 (__m256i __A, __m256i __I, 597 __mmask16 __U, __m256i __B) 598 { 599 return (__m256i) __builtin_ia32_vpermi2varhi256_mask ((__v16hi) __A, 600 (__v16hi) __I 601 /* idx */ , 602 (__v16hi) __B, 603 (__mmask16) 604 __U); 605 } 606 607 extern __inline __m256i 608 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 609 _mm256_maskz_permutex2var_epi16 (__mmask16 __U, __m256i __A, 610 __m256i __I, __m256i __B) 611 { 612 return (__m256i) __builtin_ia32_vpermt2varhi256_maskz ((__v16hi) __I 613 /* idx */ , 614 (__v16hi) __A, 615 (__v16hi) __B, 616 (__mmask16) 617 __U); 618 } 619 620 extern __inline __m128i 621 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 622 _mm_permutex2var_epi16 (__m128i __A, __m128i __I, __m128i __B) 623 { 624 return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I 625 /* idx */ , 626 (__v8hi) __A, 627 (__v8hi) __B, 628 (__mmask8) -1); 629 } 630 631 extern __inline __m128i 632 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 633 _mm_mask_permutex2var_epi16 (__m128i __A, __mmask8 __U, __m128i __I, 634 __m128i __B) 635 { 636 return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I 637 /* idx */ , 638 (__v8hi) __A, 639 (__v8hi) __B, 640 (__mmask8) 641 __U); 642 } 643 644 extern __inline __m128i 645 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 646 _mm_mask2_permutex2var_epi16 (__m128i __A, __m128i __I, __mmask8 __U, 647 __m128i __B) 648 { 649 return (__m128i) __builtin_ia32_vpermi2varhi128_mask ((__v8hi) __A, 650 (__v8hi) __I 651 /* idx */ , 652 (__v8hi) __B, 653 (__mmask8) 654 __U); 655 } 656 657 extern __inline __m128i 658 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 659 _mm_maskz_permutex2var_epi16 (__mmask8 __U, __m128i __A, __m128i __I, 660 __m128i __B) 661 { 662 return (__m128i) __builtin_ia32_vpermt2varhi128_maskz ((__v8hi) __I 663 /* idx */ , 664 (__v8hi) __A, 665 (__v8hi) __B, 666 (__mmask8) 667 __U); 668 } 669 670 extern __inline __m256i 671 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 672 _mm256_mask_maddubs_epi16 (__m256i __W, __mmask16 __U, __m256i __X, 673 __m256i __Y) 674 { 675 return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X, 676 (__v32qi) __Y, 677 (__v16hi) __W, 678 (__mmask16) __U); 679 } 680 681 extern __inline __m256i 682 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 683 _mm256_maskz_maddubs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y) 684 { 685 return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X, 686 (__v32qi) __Y, 687 (__v16hi) 688 _mm256_setzero_si256 (), 689 (__mmask16) __U); 690 } 691 692 extern __inline __m128i 693 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 694 _mm_mask_maddubs_epi16 (__m128i __W, __mmask8 __U, __m128i __X, 695 __m128i __Y) 696 { 697 return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X, 698 (__v16qi) __Y, 699 (__v8hi) __W, 700 (__mmask8) __U); 701 } 702 703 extern __inline __m128i 704 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 705 _mm_maskz_maddubs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y) 706 { 707 return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X, 708 (__v16qi) __Y, 709 (__v8hi) 710 _mm_setzero_si128 (), 711 (__mmask8) __U); 712 } 713 714 extern __inline __m256i 715 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 716 _mm256_mask_madd_epi16 (__m256i __W, __mmask8 __U, __m256i __A, 717 __m256i __B) 718 { 719 return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A, 720 (__v16hi) __B, 721 (__v8si) __W, 722 (__mmask8) __U); 723 } 724 725 extern __inline __m256i 726 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 727 _mm256_maskz_madd_epi16 (__mmask8 __U, __m256i __A, __m256i __B) 728 { 729 return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A, 730 (__v16hi) __B, 731 (__v8si) 732 _mm256_setzero_si256 (), 733 (__mmask8) __U); 734 } 735 736 extern __inline __m128i 737 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 738 _mm_mask_madd_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 739 __m128i __B) 740 { 741 return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A, 742 (__v8hi) __B, 743 (__v4si) __W, 744 (__mmask8) __U); 745 } 746 747 extern __inline __m128i 748 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 749 _mm_maskz_madd_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 750 { 751 return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A, 752 (__v8hi) __B, 753 (__v4si) 754 _mm_setzero_si128 (), 755 (__mmask8) __U); 756 } 757 758 extern __inline __mmask16 759 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 760 _mm_movepi8_mask (__m128i __A) 761 { 762 return (__mmask16) __builtin_ia32_cvtb2mask128 ((__v16qi) __A); 763 } 764 765 extern __inline __mmask32 766 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 767 _mm256_movepi8_mask (__m256i __A) 768 { 769 return (__mmask32) __builtin_ia32_cvtb2mask256 ((__v32qi) __A); 770 } 771 772 extern __inline __mmask8 773 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 774 _mm_movepi16_mask (__m128i __A) 775 { 776 return (__mmask8) __builtin_ia32_cvtw2mask128 ((__v8hi) __A); 777 } 778 779 extern __inline __mmask16 780 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 781 _mm256_movepi16_mask (__m256i __A) 782 { 783 return (__mmask16) __builtin_ia32_cvtw2mask256 ((__v16hi) __A); 784 } 785 786 extern __inline __m128i 787 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 788 _mm_movm_epi8 (__mmask16 __A) 789 { 790 return (__m128i) __builtin_ia32_cvtmask2b128 (__A); 791 } 792 793 extern __inline __m256i 794 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 795 _mm256_movm_epi8 (__mmask32 __A) 796 { 797 return (__m256i) __builtin_ia32_cvtmask2b256 (__A); 798 } 799 800 extern __inline __m128i 801 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 802 _mm_movm_epi16 (__mmask8 __A) 803 { 804 return (__m128i) __builtin_ia32_cvtmask2w128 (__A); 805 } 806 807 extern __inline __m256i 808 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 809 _mm256_movm_epi16 (__mmask16 __A) 810 { 811 return (__m256i) __builtin_ia32_cvtmask2w256 (__A); 812 } 813 814 extern __inline __mmask16 815 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 816 _mm_test_epi8_mask (__m128i __A, __m128i __B) 817 { 818 return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A, 819 (__v16qi) __B, 820 (__mmask16) -1); 821 } 822 823 extern __inline __mmask16 824 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 825 _mm_mask_test_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B) 826 { 827 return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A, 828 (__v16qi) __B, __U); 829 } 830 831 extern __inline __mmask32 832 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 833 _mm256_test_epi8_mask (__m256i __A, __m256i __B) 834 { 835 return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A, 836 (__v32qi) __B, 837 (__mmask32) -1); 838 } 839 840 extern __inline __mmask32 841 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 842 _mm256_mask_test_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B) 843 { 844 return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A, 845 (__v32qi) __B, __U); 846 } 847 848 extern __inline __mmask8 849 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 850 _mm_test_epi16_mask (__m128i __A, __m128i __B) 851 { 852 return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A, 853 (__v8hi) __B, 854 (__mmask8) -1); 855 } 856 857 extern __inline __mmask8 858 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 859 _mm_mask_test_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B) 860 { 861 return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A, 862 (__v8hi) __B, __U); 863 } 864 865 extern __inline __mmask16 866 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 867 _mm256_test_epi16_mask (__m256i __A, __m256i __B) 868 { 869 return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A, 870 (__v16hi) __B, 871 (__mmask16) -1); 872 } 873 874 extern __inline __mmask16 875 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 876 _mm256_mask_test_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B) 877 { 878 return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A, 879 (__v16hi) __B, __U); 880 } 881 882 extern __inline __m256i 883 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 884 _mm256_maskz_min_epu16 (__mmask16 __M, __m256i __A, __m256i __B) 885 { 886 return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A, 887 (__v16hi) __B, 888 (__v16hi) 889 _mm256_setzero_si256 (), 890 (__mmask16) __M); 891 } 892 893 extern __inline __m256i 894 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 895 _mm256_mask_min_epu16 (__m256i __W, __mmask16 __M, __m256i __A, 896 __m256i __B) 897 { 898 return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A, 899 (__v16hi) __B, 900 (__v16hi) __W, 901 (__mmask16) __M); 902 } 903 904 extern __inline __m128i 905 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 906 _mm_maskz_min_epu16 (__mmask8 __M, __m128i __A, __m128i __B) 907 { 908 return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A, 909 (__v8hi) __B, 910 (__v8hi) 911 _mm_setzero_si128 (), 912 (__mmask8) __M); 913 } 914 915 extern __inline __m128i 916 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 917 _mm_mask_min_epu16 (__m128i __W, __mmask8 __M, __m128i __A, 918 __m128i __B) 919 { 920 return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A, 921 (__v8hi) __B, 922 (__v8hi) __W, 923 (__mmask8) __M); 924 } 925 926 extern __inline __m256i 927 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 928 _mm256_maskz_min_epi16 (__mmask16 __M, __m256i __A, __m256i __B) 929 { 930 return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A, 931 (__v16hi) __B, 932 (__v16hi) 933 _mm256_setzero_si256 (), 934 (__mmask16) __M); 935 } 936 937 extern __inline __m256i 938 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 939 _mm256_mask_min_epi16 (__m256i __W, __mmask16 __M, __m256i __A, 940 __m256i __B) 941 { 942 return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A, 943 (__v16hi) __B, 944 (__v16hi) __W, 945 (__mmask16) __M); 946 } 947 948 extern __inline __m256i 949 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 950 _mm256_maskz_max_epu8 (__mmask32 __M, __m256i __A, __m256i __B) 951 { 952 return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A, 953 (__v32qi) __B, 954 (__v32qi) 955 _mm256_setzero_si256 (), 956 (__mmask32) __M); 957 } 958 959 extern __inline __m256i 960 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 961 _mm256_mask_max_epu8 (__m256i __W, __mmask32 __M, __m256i __A, 962 __m256i __B) 963 { 964 return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A, 965 (__v32qi) __B, 966 (__v32qi) __W, 967 (__mmask32) __M); 968 } 969 970 extern __inline __m128i 971 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 972 _mm_maskz_max_epu8 (__mmask16 __M, __m128i __A, __m128i __B) 973 { 974 return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A, 975 (__v16qi) __B, 976 (__v16qi) 977 _mm_setzero_si128 (), 978 (__mmask16) __M); 979 } 980 981 extern __inline __m128i 982 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 983 _mm_mask_max_epu8 (__m128i __W, __mmask16 __M, __m128i __A, 984 __m128i __B) 985 { 986 return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A, 987 (__v16qi) __B, 988 (__v16qi) __W, 989 (__mmask16) __M); 990 } 991 992 extern __inline __m256i 993 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 994 _mm256_maskz_max_epi8 (__mmask32 __M, __m256i __A, __m256i __B) 995 { 996 return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A, 997 (__v32qi) __B, 998 (__v32qi) 999 _mm256_setzero_si256 (), 1000 (__mmask32) __M); 1001 } 1002 1003 extern __inline __m256i 1004 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1005 _mm256_mask_max_epi8 (__m256i __W, __mmask32 __M, __m256i __A, 1006 __m256i __B) 1007 { 1008 return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A, 1009 (__v32qi) __B, 1010 (__v32qi) __W, 1011 (__mmask32) __M); 1012 } 1013 1014 extern __inline __m128i 1015 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1016 _mm_maskz_max_epi8 (__mmask16 __M, __m128i __A, __m128i __B) 1017 { 1018 return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A, 1019 (__v16qi) __B, 1020 (__v16qi) 1021 _mm_setzero_si128 (), 1022 (__mmask16) __M); 1023 } 1024 1025 extern __inline __m128i 1026 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1027 _mm_mask_max_epi8 (__m128i __W, __mmask16 __M, __m128i __A, 1028 __m128i __B) 1029 { 1030 return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A, 1031 (__v16qi) __B, 1032 (__v16qi) __W, 1033 (__mmask16) __M); 1034 } 1035 1036 extern __inline __m256i 1037 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1038 _mm256_maskz_min_epu8 (__mmask32 __M, __m256i __A, __m256i __B) 1039 { 1040 return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A, 1041 (__v32qi) __B, 1042 (__v32qi) 1043 _mm256_setzero_si256 (), 1044 (__mmask32) __M); 1045 } 1046 1047 extern __inline __m256i 1048 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1049 _mm256_mask_min_epu8 (__m256i __W, __mmask32 __M, __m256i __A, 1050 __m256i __B) 1051 { 1052 return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A, 1053 (__v32qi) __B, 1054 (__v32qi) __W, 1055 (__mmask32) __M); 1056 } 1057 1058 extern __inline __m128i 1059 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1060 _mm_maskz_min_epu8 (__mmask16 __M, __m128i __A, __m128i __B) 1061 { 1062 return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A, 1063 (__v16qi) __B, 1064 (__v16qi) 1065 _mm_setzero_si128 (), 1066 (__mmask16) __M); 1067 } 1068 1069 extern __inline __m128i 1070 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1071 _mm_mask_min_epu8 (__m128i __W, __mmask16 __M, __m128i __A, 1072 __m128i __B) 1073 { 1074 return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A, 1075 (__v16qi) __B, 1076 (__v16qi) __W, 1077 (__mmask16) __M); 1078 } 1079 1080 extern __inline __m256i 1081 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1082 _mm256_maskz_min_epi8 (__mmask32 __M, __m256i __A, __m256i __B) 1083 { 1084 return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A, 1085 (__v32qi) __B, 1086 (__v32qi) 1087 _mm256_setzero_si256 (), 1088 (__mmask32) __M); 1089 } 1090 1091 extern __inline __m256i 1092 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1093 _mm256_mask_min_epi8 (__m256i __W, __mmask32 __M, __m256i __A, 1094 __m256i __B) 1095 { 1096 return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A, 1097 (__v32qi) __B, 1098 (__v32qi) __W, 1099 (__mmask32) __M); 1100 } 1101 1102 extern __inline __m128i 1103 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1104 _mm_maskz_min_epi8 (__mmask16 __M, __m128i __A, __m128i __B) 1105 { 1106 return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A, 1107 (__v16qi) __B, 1108 (__v16qi) 1109 _mm_setzero_si128 (), 1110 (__mmask16) __M); 1111 } 1112 1113 extern __inline __m128i 1114 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1115 _mm_mask_min_epi8 (__m128i __W, __mmask16 __M, __m128i __A, 1116 __m128i __B) 1117 { 1118 return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A, 1119 (__v16qi) __B, 1120 (__v16qi) __W, 1121 (__mmask16) __M); 1122 } 1123 1124 extern __inline __m256i 1125 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1126 _mm256_maskz_max_epi16 (__mmask16 __M, __m256i __A, __m256i __B) 1127 { 1128 return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A, 1129 (__v16hi) __B, 1130 (__v16hi) 1131 _mm256_setzero_si256 (), 1132 (__mmask16) __M); 1133 } 1134 1135 extern __inline __m256i 1136 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1137 _mm256_mask_max_epi16 (__m256i __W, __mmask16 __M, __m256i __A, 1138 __m256i __B) 1139 { 1140 return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A, 1141 (__v16hi) __B, 1142 (__v16hi) __W, 1143 (__mmask16) __M); 1144 } 1145 1146 extern __inline __m128i 1147 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1148 _mm_maskz_max_epi16 (__mmask8 __M, __m128i __A, __m128i __B) 1149 { 1150 return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A, 1151 (__v8hi) __B, 1152 (__v8hi) 1153 _mm_setzero_si128 (), 1154 (__mmask8) __M); 1155 } 1156 1157 extern __inline __m128i 1158 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1159 _mm_mask_max_epi16 (__m128i __W, __mmask8 __M, __m128i __A, 1160 __m128i __B) 1161 { 1162 return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A, 1163 (__v8hi) __B, 1164 (__v8hi) __W, 1165 (__mmask8) __M); 1166 } 1167 1168 extern __inline __m256i 1169 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1170 _mm256_maskz_max_epu16 (__mmask16 __M, __m256i __A, __m256i __B) 1171 { 1172 return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A, 1173 (__v16hi) __B, 1174 (__v16hi) 1175 _mm256_setzero_si256 (), 1176 (__mmask16) __M); 1177 } 1178 1179 extern __inline __m256i 1180 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1181 _mm256_mask_max_epu16 (__m256i __W, __mmask16 __M, __m256i __A, 1182 __m256i __B) 1183 { 1184 return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A, 1185 (__v16hi) __B, 1186 (__v16hi) __W, 1187 (__mmask16) __M); 1188 } 1189 1190 extern __inline __m128i 1191 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1192 _mm_maskz_max_epu16 (__mmask8 __M, __m128i __A, __m128i __B) 1193 { 1194 return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A, 1195 (__v8hi) __B, 1196 (__v8hi) 1197 _mm_setzero_si128 (), 1198 (__mmask8) __M); 1199 } 1200 1201 extern __inline __m128i 1202 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1203 _mm_mask_max_epu16 (__m128i __W, __mmask8 __M, __m128i __A, 1204 __m128i __B) 1205 { 1206 return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A, 1207 (__v8hi) __B, 1208 (__v8hi) __W, 1209 (__mmask8) __M); 1210 } 1211 1212 extern __inline __m128i 1213 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1214 _mm_maskz_min_epi16 (__mmask8 __M, __m128i __A, __m128i __B) 1215 { 1216 return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A, 1217 (__v8hi) __B, 1218 (__v8hi) 1219 _mm_setzero_si128 (), 1220 (__mmask8) __M); 1221 } 1222 1223 extern __inline __m128i 1224 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1225 _mm_mask_min_epi16 (__m128i __W, __mmask8 __M, __m128i __A, 1226 __m128i __B) 1227 { 1228 return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A, 1229 (__v8hi) __B, 1230 (__v8hi) __W, 1231 (__mmask8) __M); 1232 } 1233 1234 #ifdef __OPTIMIZE__ 1235 extern __inline __m256i 1236 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1237 _mm256_mask_alignr_epi8 (__m256i __W, __mmask32 __U, __m256i __A, 1238 __m256i __B, const int __N) 1239 { 1240 return (__m256i) __builtin_ia32_palignr256_mask ((__v4di) __A, 1241 (__v4di) __B, 1242 __N * 8, 1243 (__v4di) __W, 1244 (__mmask32) __U); 1245 } 1246 1247 extern __inline __m256i 1248 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1249 _mm256_maskz_alignr_epi8 (__mmask32 __U, __m256i __A, __m256i __B, 1250 const int __N) 1251 { 1252 return (__m256i) __builtin_ia32_palignr256_mask ((__v4di) __A, 1253 (__v4di) __B, 1254 __N * 8, 1255 (__v4di) 1256 _mm256_setzero_si256 (), 1257 (__mmask32) __U); 1258 } 1259 1260 extern __inline __m128i 1261 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1262 _mm_mask_alignr_epi8 (__m128i __W, __mmask16 __U, __m128i __A, 1263 __m128i __B, const int __N) 1264 { 1265 return (__m128i) __builtin_ia32_palignr128_mask ((__v2di) __A, 1266 (__v2di) __B, 1267 __N * 8, 1268 (__v2di) __W, 1269 (__mmask16) __U); 1270 } 1271 1272 extern __inline __m128i 1273 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1274 _mm_maskz_alignr_epi8 (__mmask16 __U, __m128i __A, __m128i __B, 1275 const int __N) 1276 { 1277 return (__m128i) __builtin_ia32_palignr128_mask ((__v2di) __A, 1278 (__v2di) __B, 1279 __N * 8, 1280 (__v2di) 1281 _mm_setzero_si128 (), 1282 (__mmask16) __U); 1283 } 1284 1285 extern __inline __m256i 1286 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1287 _mm256_dbsad_epu8 (__m256i __A, __m256i __B, const int __imm) 1288 { 1289 return (__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi) __A, 1290 (__v32qi) __B, 1291 __imm, 1292 (__v16hi) 1293 _mm256_setzero_si256 (), 1294 (__mmask16) -1); 1295 } 1296 1297 extern __inline __m256i 1298 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1299 _mm256_mask_dbsad_epu8 (__m256i __W, __mmask16 __U, __m256i __A, 1300 __m256i __B, const int __imm) 1301 { 1302 return (__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi) __A, 1303 (__v32qi) __B, 1304 __imm, 1305 (__v16hi) __W, 1306 (__mmask16) __U); 1307 } 1308 1309 extern __inline __m256i 1310 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1311 _mm256_maskz_dbsad_epu8 (__mmask16 __U, __m256i __A, __m256i __B, 1312 const int __imm) 1313 { 1314 return (__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi) __A, 1315 (__v32qi) __B, 1316 __imm, 1317 (__v16hi) 1318 _mm256_setzero_si256 (), 1319 (__mmask16) __U); 1320 } 1321 1322 extern __inline __m128i 1323 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1324 _mm_dbsad_epu8 (__m128i __A, __m128i __B, const int __imm) 1325 { 1326 return (__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi) __A, 1327 (__v16qi) __B, 1328 __imm, 1329 (__v8hi) 1330 _mm_setzero_si128 (), 1331 (__mmask8) -1); 1332 } 1333 1334 extern __inline __m128i 1335 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1336 _mm_mask_dbsad_epu8 (__m128i __W, __mmask8 __U, __m128i __A, 1337 __m128i __B, const int __imm) 1338 { 1339 return (__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi) __A, 1340 (__v16qi) __B, 1341 __imm, 1342 (__v8hi) __W, 1343 (__mmask8) __U); 1344 } 1345 1346 extern __inline __m128i 1347 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1348 _mm_maskz_dbsad_epu8 (__mmask8 __U, __m128i __A, __m128i __B, 1349 const int __imm) 1350 { 1351 return (__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi) __A, 1352 (__v16qi) __B, 1353 __imm, 1354 (__v8hi) 1355 _mm_setzero_si128 (), 1356 (__mmask8) __U); 1357 } 1358 1359 extern __inline __m128i 1360 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1361 _mm_mask_blend_epi16 (__mmask8 __U, __m128i __A, __m128i __W) 1362 { 1363 return (__m128i) __builtin_ia32_blendmw_128_mask ((__v8hi) __A, 1364 (__v8hi) __W, 1365 (__mmask8) __U); 1366 } 1367 1368 extern __inline __m128i 1369 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1370 _mm_mask_blend_epi8 (__mmask16 __U, __m128i __A, __m128i __W) 1371 { 1372 return (__m128i) __builtin_ia32_blendmb_128_mask ((__v16qi) __A, 1373 (__v16qi) __W, 1374 (__mmask16) __U); 1375 } 1376 1377 extern __inline __m256i 1378 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1379 _mm256_mask_blend_epi16 (__mmask16 __U, __m256i __A, __m256i __W) 1380 { 1381 return (__m256i) __builtin_ia32_blendmw_256_mask ((__v16hi) __A, 1382 (__v16hi) __W, 1383 (__mmask16) __U); 1384 } 1385 1386 extern __inline __m256i 1387 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1388 _mm256_mask_blend_epi8 (__mmask32 __U, __m256i __A, __m256i __W) 1389 { 1390 return (__m256i) __builtin_ia32_blendmb_256_mask ((__v32qi) __A, 1391 (__v32qi) __W, 1392 (__mmask32) __U); 1393 } 1394 1395 extern __inline __mmask8 1396 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1397 _mm_mask_cmp_epi16_mask (__mmask8 __U, __m128i __X, __m128i __Y, 1398 const int __P) 1399 { 1400 return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X, 1401 (__v8hi) __Y, __P, 1402 (__mmask8) __U); 1403 } 1404 1405 extern __inline __mmask8 1406 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1407 _mm_cmp_epi16_mask (__m128i __X, __m128i __Y, const int __P) 1408 { 1409 return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X, 1410 (__v8hi) __Y, __P, 1411 (__mmask8) -1); 1412 } 1413 1414 extern __inline __mmask16 1415 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1416 _mm256_mask_cmp_epi16_mask (__mmask16 __U, __m256i __X, __m256i __Y, 1417 const int __P) 1418 { 1419 return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X, 1420 (__v16hi) __Y, __P, 1421 (__mmask16) __U); 1422 } 1423 1424 extern __inline __mmask16 1425 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1426 _mm256_cmp_epi16_mask (__m256i __X, __m256i __Y, const int __P) 1427 { 1428 return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X, 1429 (__v16hi) __Y, __P, 1430 (__mmask16) -1); 1431 } 1432 1433 extern __inline __mmask16 1434 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1435 _mm_mask_cmp_epi8_mask (__mmask8 __U, __m128i __X, __m128i __Y, 1436 const int __P) 1437 { 1438 return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X, 1439 (__v16qi) __Y, __P, 1440 (__mmask16) __U); 1441 } 1442 1443 extern __inline __mmask16 1444 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1445 _mm_cmp_epi8_mask (__m128i __X, __m128i __Y, const int __P) 1446 { 1447 return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X, 1448 (__v16qi) __Y, __P, 1449 (__mmask16) -1); 1450 } 1451 1452 extern __inline __mmask32 1453 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1454 _mm256_mask_cmp_epi8_mask (__mmask16 __U, __m256i __X, __m256i __Y, 1455 const int __P) 1456 { 1457 return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X, 1458 (__v32qi) __Y, __P, 1459 (__mmask32) __U); 1460 } 1461 1462 extern __inline __mmask16 1463 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1464 _mm256_cmp_epi8_mask (__m256i __X, __m256i __Y, const int __P) 1465 { 1466 return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X, 1467 (__v32qi) __Y, __P, 1468 (__mmask32) -1); 1469 } 1470 1471 extern __inline __mmask8 1472 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1473 _mm_mask_cmp_epu16_mask (__mmask8 __U, __m128i __X, __m128i __Y, 1474 const int __P) 1475 { 1476 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X, 1477 (__v8hi) __Y, __P, 1478 (__mmask8) __U); 1479 } 1480 1481 extern __inline __mmask8 1482 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1483 _mm_cmp_epu16_mask (__m128i __X, __m128i __Y, const int __P) 1484 { 1485 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X, 1486 (__v8hi) __Y, __P, 1487 (__mmask8) -1); 1488 } 1489 1490 extern __inline __mmask16 1491 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1492 _mm256_mask_cmp_epu16_mask (__mmask16 __U, __m256i __X, __m256i __Y, 1493 const int __P) 1494 { 1495 return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X, 1496 (__v16hi) __Y, __P, 1497 (__mmask16) __U); 1498 } 1499 1500 extern __inline __mmask16 1501 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1502 _mm256_cmp_epu16_mask (__m256i __X, __m256i __Y, const int __P) 1503 { 1504 return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X, 1505 (__v16hi) __Y, __P, 1506 (__mmask16) -1); 1507 } 1508 1509 extern __inline __mmask16 1510 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1511 _mm_mask_cmp_epu8_mask (__mmask8 __U, __m128i __X, __m128i __Y, 1512 const int __P) 1513 { 1514 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X, 1515 (__v16qi) __Y, __P, 1516 (__mmask16) __U); 1517 } 1518 1519 extern __inline __mmask16 1520 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1521 _mm_cmp_epu8_mask (__m128i __X, __m128i __Y, const int __P) 1522 { 1523 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X, 1524 (__v16qi) __Y, __P, 1525 (__mmask16) -1); 1526 } 1527 1528 extern __inline __mmask32 1529 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1530 _mm256_mask_cmp_epu8_mask (__mmask16 __U, __m256i __X, __m256i __Y, 1531 const int __P) 1532 { 1533 return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X, 1534 (__v32qi) __Y, __P, 1535 (__mmask32) __U); 1536 } 1537 1538 extern __inline __mmask16 1539 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1540 _mm256_cmp_epu8_mask (__m256i __X, __m256i __Y, const int __P) 1541 { 1542 return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X, 1543 (__v32qi) __Y, __P, 1544 (__mmask32) -1); 1545 } 1546 1547 extern __inline __m256i 1548 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1549 _mm256_mask_srli_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 1550 const int __imm) 1551 { 1552 return (__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi) __A, __imm, 1553 (__v16hi) __W, 1554 (__mmask16) __U); 1555 } 1556 1557 extern __inline __m256i 1558 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1559 _mm256_maskz_srli_epi16 (__mmask16 __U, __m256i __A, const int __imm) 1560 { 1561 return (__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi) __A, __imm, 1562 (__v16hi) 1563 _mm256_setzero_si256 (), 1564 (__mmask16) __U); 1565 } 1566 1567 extern __inline __m128i 1568 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1569 _mm_mask_srli_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 1570 const int __imm) 1571 { 1572 return (__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi) __A, __imm, 1573 (__v8hi) __W, 1574 (__mmask8) __U); 1575 } 1576 1577 extern __inline __m128i 1578 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1579 _mm_maskz_srli_epi16 (__mmask8 __U, __m128i __A, const int __imm) 1580 { 1581 return (__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi) __A, __imm, 1582 (__v8hi) 1583 _mm_setzero_si128 (), 1584 (__mmask8) __U); 1585 } 1586 1587 extern __inline __m256i 1588 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1589 _mm256_mask_shufflehi_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 1590 const int __imm) 1591 { 1592 return (__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi) __A, 1593 __imm, 1594 (__v16hi) __W, 1595 (__mmask16) __U); 1596 } 1597 1598 extern __inline __m256i 1599 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1600 _mm256_maskz_shufflehi_epi16 (__mmask16 __U, __m256i __A, 1601 const int __imm) 1602 { 1603 return (__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi) __A, 1604 __imm, 1605 (__v16hi) 1606 _mm256_setzero_si256 (), 1607 (__mmask16) __U); 1608 } 1609 1610 extern __inline __m128i 1611 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1612 _mm_mask_shufflehi_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 1613 const int __imm) 1614 { 1615 return (__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi) __A, __imm, 1616 (__v8hi) __W, 1617 (__mmask8) __U); 1618 } 1619 1620 extern __inline __m128i 1621 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1622 _mm_maskz_shufflehi_epi16 (__mmask8 __U, __m128i __A, const int __imm) 1623 { 1624 return (__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi) __A, __imm, 1625 (__v8hi) 1626 _mm_setzero_si128 (), 1627 (__mmask8) __U); 1628 } 1629 1630 extern __inline __m256i 1631 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1632 _mm256_mask_shufflelo_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 1633 const int __imm) 1634 { 1635 return (__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi) __A, 1636 __imm, 1637 (__v16hi) __W, 1638 (__mmask16) __U); 1639 } 1640 1641 extern __inline __m256i 1642 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1643 _mm256_maskz_shufflelo_epi16 (__mmask16 __U, __m256i __A, 1644 const int __imm) 1645 { 1646 return (__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi) __A, 1647 __imm, 1648 (__v16hi) 1649 _mm256_setzero_si256 (), 1650 (__mmask16) __U); 1651 } 1652 1653 extern __inline __m128i 1654 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1655 _mm_mask_shufflelo_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 1656 const int __imm) 1657 { 1658 return (__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi) __A, __imm, 1659 (__v8hi) __W, 1660 (__mmask8) __U); 1661 } 1662 1663 extern __inline __m128i 1664 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1665 _mm_maskz_shufflelo_epi16 (__mmask8 __U, __m128i __A, const int __imm) 1666 { 1667 return (__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi) __A, __imm, 1668 (__v8hi) 1669 _mm_setzero_si128 (), 1670 (__mmask8) __U); 1671 } 1672 1673 extern __inline __m256i 1674 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1675 _mm256_mask_srai_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 1676 const int __imm) 1677 { 1678 return (__m256i) __builtin_ia32_psrawi256_mask ((__v16hi) __A, __imm, 1679 (__v16hi) __W, 1680 (__mmask16) __U); 1681 } 1682 1683 extern __inline __m256i 1684 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1685 _mm256_maskz_srai_epi16 (__mmask16 __U, __m256i __A, const int __imm) 1686 { 1687 return (__m256i) __builtin_ia32_psrawi256_mask ((__v16hi) __A, __imm, 1688 (__v16hi) 1689 _mm256_setzero_si256 (), 1690 (__mmask16) __U); 1691 } 1692 1693 extern __inline __m128i 1694 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1695 _mm_mask_srai_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 1696 const int __imm) 1697 { 1698 return (__m128i) __builtin_ia32_psrawi128_mask ((__v8hi) __A, __imm, 1699 (__v8hi) __W, 1700 (__mmask8) __U); 1701 } 1702 1703 extern __inline __m128i 1704 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1705 _mm_maskz_srai_epi16 (__mmask8 __U, __m128i __A, const int __imm) 1706 { 1707 return (__m128i) __builtin_ia32_psrawi128_mask ((__v8hi) __A, __imm, 1708 (__v8hi) 1709 _mm_setzero_si128 (), 1710 (__mmask8) __U); 1711 } 1712 1713 extern __inline __m256i 1714 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1715 _mm256_mask_slli_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 1716 int __B) 1717 { 1718 return (__m256i) __builtin_ia32_psllwi256_mask ((__v16hi) __A, __B, 1719 (__v16hi) __W, 1720 (__mmask16) __U); 1721 } 1722 1723 extern __inline __m256i 1724 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1725 _mm256_maskz_slli_epi16 (__mmask16 __U, __m256i __A, int __B) 1726 { 1727 return (__m256i) __builtin_ia32_psllwi256_mask ((__v16hi) __A, __B, 1728 (__v16hi) 1729 _mm256_setzero_si256 (), 1730 (__mmask16) __U); 1731 } 1732 1733 extern __inline __m128i 1734 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1735 _mm_mask_slli_epi16 (__m128i __W, __mmask8 __U, __m128i __A, int __B) 1736 { 1737 return (__m128i) __builtin_ia32_psllwi128_mask ((__v8hi) __A, __B, 1738 (__v8hi) __W, 1739 (__mmask8) __U); 1740 } 1741 1742 extern __inline __m128i 1743 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1744 _mm_maskz_slli_epi16 (__mmask8 __U, __m128i __A, int __B) 1745 { 1746 return (__m128i) __builtin_ia32_psllwi128_mask ((__v8hi) __A, __B, 1747 (__v8hi) 1748 _mm_setzero_si128 (), 1749 (__mmask8) __U); 1750 } 1751 1752 #else 1753 #define _mm256_mask_alignr_epi8(W, U, X, Y, N) \ 1754 ((__m256i) __builtin_ia32_palignr256_mask ((__v4di)(__m256i)(X), \ 1755 (__v4di)(__m256i)(Y), (int)(N * 8), \ 1756 (__v4di)(__m256i)(X), (__mmask32)(U))) 1757 1758 #define _mm256_mask_srli_epi16(W, U, A, B) \ 1759 ((__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi)(__m256i)(A), \ 1760 (int)(B), (__v16hi)(__m256i)(W), (__mmask16)(U))) 1761 1762 #define _mm256_maskz_srli_epi16(U, A, B) \ 1763 ((__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi)(__m256i)(A), \ 1764 (int)(B), (__v16hi)_mm256_setzero_si256 (), (__mmask16)(U))) 1765 1766 #define _mm_mask_srli_epi16(W, U, A, B) \ 1767 ((__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi)(__m128i)(A), \ 1768 (int)(B), (__v8hi)(__m128i)(W), (__mmask8)(U))) 1769 1770 #define _mm_maskz_srli_epi16(U, A, B) \ 1771 ((__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi)(__m128i)(A), \ 1772 (int)(B), (__v8hi)_mm_setzero_si128(), (__mmask8)(U))) 1773 1774 #define _mm256_mask_srai_epi16(W, U, A, B) \ 1775 ((__m256i) __builtin_ia32_psrawi256_mask ((__v16hi)(__m256i)(A), \ 1776 (int)(B), (__v16hi)(__m256i)(W), (__mmask16)(U))) 1777 1778 #define _mm256_maskz_srai_epi16(U, A, B) \ 1779 ((__m256i) __builtin_ia32_psrawi256_mask ((__v16hi)(__m256i)(A), \ 1780 (int)(B), (__v16hi)_mm256_setzero_si256 (), (__mmask16)(U))) 1781 1782 #define _mm_mask_srai_epi16(W, U, A, B) \ 1783 ((__m128i) __builtin_ia32_psrawi128_mask ((__v8hi)(__m128i)(A), \ 1784 (int)(B), (__v8hi)(__m128i)(W), (__mmask8)(U))) 1785 1786 #define _mm_maskz_srai_epi16(U, A, B) \ 1787 ((__m128i) __builtin_ia32_psrawi128_mask ((__v8hi)(__m128i)(A), \ 1788 (int)(B), (__v8hi)_mm_setzero_si128(), (__mmask8)(U))) 1789 1790 #define _mm256_mask_shufflehi_epi16(W, U, A, B) \ 1791 ((__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi)(__m256i)(A), (int)(B), \ 1792 (__v16hi)(__m256i)(W), \ 1793 (__mmask16)(U))) 1794 1795 #define _mm256_maskz_shufflehi_epi16(U, A, B) \ 1796 ((__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi)(__m256i)(A), (int)(B), \ 1797 (__v16hi)(__m256i)_mm256_setzero_si256 (), \ 1798 (__mmask16)(U))) 1799 1800 #define _mm_mask_shufflehi_epi16(W, U, A, B) \ 1801 ((__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi)(__m128i)(A), (int)(B), \ 1802 (__v8hi)(__m128i)(W), \ 1803 (__mmask8)(U))) 1804 1805 #define _mm_maskz_shufflehi_epi16(U, A, B) \ 1806 ((__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi)(__m128i)(A), (int)(B), \ 1807 (__v8hi)(__m128i)_mm_setzero_si128 (), \ 1808 (__mmask8)(U))) 1809 1810 #define _mm256_mask_shufflelo_epi16(W, U, A, B) \ 1811 ((__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi)(__m256i)(A), (int)(B), \ 1812 (__v16hi)(__m256i)(W), \ 1813 (__mmask16)(U))) 1814 1815 #define _mm256_maskz_shufflelo_epi16(U, A, B) \ 1816 ((__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi)(__m256i)(A), (int)(B), \ 1817 (__v16hi)(__m256i)_mm256_setzero_si256 (), \ 1818 (__mmask16)(U))) 1819 1820 #define _mm_mask_shufflelo_epi16(W, U, A, B) \ 1821 ((__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi)(__m128i)(A), (int)(B), \ 1822 (__v8hi)(__m128i)(W), \ 1823 (__mmask8)(U))) 1824 1825 #define _mm_maskz_shufflelo_epi16(U, A, B) \ 1826 ((__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi)(__m128i)(A), (int)(B), \ 1827 (__v8hi)(__m128i)_mm_setzero_si128 (), \ 1828 (__mmask8)(U))) 1829 1830 #define _mm256_maskz_alignr_epi8(U, X, Y, N) \ 1831 ((__m256i) __builtin_ia32_palignr256_mask ((__v4di)(__m256i)(X), \ 1832 (__v4di)(__m256i)(Y), (int)(N * 8), \ 1833 (__v4di)(__m256i)_mm256_setzero_si256 (), \ 1834 (__mmask32)(U))) 1835 1836 #define _mm_mask_alignr_epi8(W, U, X, Y, N) \ 1837 ((__m128i) __builtin_ia32_palignr128_mask ((__v2di)(__m128i)(X), \ 1838 (__v2di)(__m128i)(Y), (int)(N * 8), \ 1839 (__v2di)(__m128i)(X), (__mmask16)(U))) 1840 1841 #define _mm_maskz_alignr_epi8(U, X, Y, N) \ 1842 ((__m128i) __builtin_ia32_palignr128_mask ((__v2di)(__m128i)(X), \ 1843 (__v2di)(__m128i)(Y), (int)(N * 8), \ 1844 (__v2di)(__m128i)_mm_setzero_si128 (), \ 1845 (__mmask16)(U))) 1846 1847 #define _mm_mask_slli_epi16(W, U, X, C) \ 1848 ((__m128i)__builtin_ia32_psllwi128_mask ((__v8hi)(__m128i)(X), (int)(C),\ 1849 (__v8hi)(__m128i)(W),\ 1850 (__mmask8)(U))) 1851 1852 #define _mm_maskz_slli_epi16(U, X, C) \ 1853 ((__m128i)__builtin_ia32_psllwi128_mask ((__v8hi)(__m128i)(X), (int)(C),\ 1854 (__v8hi)(__m128i)_mm_setzero_si128 (),\ 1855 (__mmask8)(U))) 1856 1857 #define _mm256_dbsad_epu8(X, Y, C) \ 1858 ((__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi)(__m256i) (X), \ 1859 (__v32qi)(__m256i) (Y), (int) (C), \ 1860 (__v16hi)(__m256i)_mm256_setzero_si256(),\ 1861 (__mmask16)-1)) 1862 1863 #define _mm256_mask_slli_epi16(W, U, X, C) \ 1864 ((__m256i)__builtin_ia32_psllwi256_mask ((__v16hi)(__m256i)(X), (int)(C),\ 1865 (__v16hi)(__m256i)(W),\ 1866 (__mmask16)(U))) 1867 1868 #define _mm256_maskz_slli_epi16(U, X, C) \ 1869 ((__m256i)__builtin_ia32_psllwi256_mask ((__v16hi)(__m256i)(X), (int)(C),\ 1870 (__v16hi)(__m256i)_mm256_setzero_si256 (),\ 1871 (__mmask16)(U))) 1872 1873 #define _mm256_mask_dbsad_epu8(W, U, X, Y, C) \ 1874 ((__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi)(__m256i) (X), \ 1875 (__v32qi)(__m256i) (Y), (int) (C), \ 1876 (__v16hi)(__m256i)(W), \ 1877 (__mmask16)(U))) 1878 1879 #define _mm256_maskz_dbsad_epu8(U, X, Y, C) \ 1880 ((__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi)(__m256i) (X), \ 1881 (__v32qi)(__m256i) (Y), (int) (C), \ 1882 (__v16hi)(__m256i)_mm256_setzero_si256(),\ 1883 (__mmask16)(U))) 1884 1885 #define _mm_dbsad_epu8(X, Y, C) \ 1886 ((__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi)(__m128i) (X), \ 1887 (__v16qi)(__m128i) (Y), (int) (C), \ 1888 (__v8hi)(__m128i)_mm_setzero_si128(), \ 1889 (__mmask8)-1)) 1890 1891 #define _mm_mask_dbsad_epu8(W, U, X, Y, C) \ 1892 ((__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi)(__m128i) (X), \ 1893 (__v16qi)(__m128i) (Y), (int) (C), \ 1894 (__v8hi)(__m128i)(W), \ 1895 (__mmask8)(U))) 1896 1897 #define _mm_maskz_dbsad_epu8(U, X, Y, C) \ 1898 ((__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi)(__m128i) (X), \ 1899 (__v16qi)(__m128i) (Y), (int) (C), \ 1900 (__v8hi)(__m128i)_mm_setzero_si128(), \ 1901 (__mmask8)(U))) 1902 1903 #define _mm_mask_blend_epi16(__U, __A, __W) \ 1904 ((__m128i) __builtin_ia32_blendmw_128_mask ((__v8hi) (__A), \ 1905 (__v8hi) (__W), \ 1906 (__mmask8) (__U))) 1907 1908 #define _mm_mask_blend_epi8(__U, __A, __W) \ 1909 ((__m128i) __builtin_ia32_blendmb_128_mask ((__v16qi) (__A), \ 1910 (__v16qi) (__W), \ 1911 (__mmask16) (__U))) 1912 1913 #define _mm256_mask_blend_epi16(__U, __A, __W) \ 1914 ((__m256i) __builtin_ia32_blendmw_256_mask ((__v16hi) (__A), \ 1915 (__v16hi) (__W), \ 1916 (__mmask16) (__U))) 1917 1918 #define _mm256_mask_blend_epi8(__U, __A, __W) \ 1919 ((__m256i) __builtin_ia32_blendmb_256_mask ((__v32qi) (__A), \ 1920 (__v32qi) (__W), \ 1921 (__mmask32) (__U))) 1922 1923 #define _mm_cmp_epi16_mask(X, Y, P) \ 1924 ((__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi)(__m128i)(X), \ 1925 (__v8hi)(__m128i)(Y), (int)(P),\ 1926 (__mmask8)(-1))) 1927 1928 #define _mm_cmp_epi8_mask(X, Y, P) \ 1929 ((__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi)(__m128i)(X), \ 1930 (__v16qi)(__m128i)(Y), (int)(P),\ 1931 (__mmask16)(-1))) 1932 1933 #define _mm256_cmp_epi16_mask(X, Y, P) \ 1934 ((__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi)(__m256i)(X), \ 1935 (__v16hi)(__m256i)(Y), (int)(P),\ 1936 (__mmask16)(-1))) 1937 1938 #define _mm256_cmp_epi8_mask(X, Y, P) \ 1939 ((__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi)(__m256i)(X), \ 1940 (__v32qi)(__m256i)(Y), (int)(P),\ 1941 (__mmask32)(-1))) 1942 1943 #define _mm_cmp_epu16_mask(X, Y, P) \ 1944 ((__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi)(__m128i)(X), \ 1945 (__v8hi)(__m128i)(Y), (int)(P),\ 1946 (__mmask8)(-1))) 1947 1948 #define _mm_cmp_epu8_mask(X, Y, P) \ 1949 ((__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi)(__m128i)(X), \ 1950 (__v16qi)(__m128i)(Y), (int)(P),\ 1951 (__mmask16)(-1))) 1952 1953 #define _mm256_cmp_epu16_mask(X, Y, P) \ 1954 ((__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi)(__m256i)(X), \ 1955 (__v16hi)(__m256i)(Y), (int)(P),\ 1956 (__mmask16)(-1))) 1957 1958 #define _mm256_cmp_epu8_mask(X, Y, P) \ 1959 ((__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi)(__m256i)(X), \ 1960 (__v32qi)(__m256i)(Y), (int)(P),\ 1961 (__mmask32)-1)) 1962 1963 #define _mm_mask_cmp_epi16_mask(M, X, Y, P) \ 1964 ((__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi)(__m128i)(X), \ 1965 (__v8hi)(__m128i)(Y), (int)(P),\ 1966 (__mmask16)(M))) 1967 1968 #define _mm_mask_cmp_epi8_mask(M, X, Y, P) \ 1969 ((__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi)(__m128i)(X), \ 1970 (__v16qi)(__m128i)(Y), (int)(P),\ 1971 (__mmask16)(M))) 1972 1973 #define _mm256_mask_cmp_epi16_mask(M, X, Y, P) \ 1974 ((__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi)(__m256i)(X), \ 1975 (__v16hi)(__m256i)(Y), (int)(P),\ 1976 (__mmask16)(M))) 1977 1978 #define _mm256_mask_cmp_epi8_mask(M, X, Y, P) \ 1979 ((__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi)(__m256i)(X), \ 1980 (__v32qi)(__m256i)(Y), (int)(P),\ 1981 (__mmask32)(M))) 1982 1983 #define _mm_mask_cmp_epu16_mask(M, X, Y, P) \ 1984 ((__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi)(__m128i)(X), \ 1985 (__v8hi)(__m128i)(Y), (int)(P),\ 1986 (__mmask8)(M))) 1987 1988 #define _mm_mask_cmp_epu8_mask(M, X, Y, P) \ 1989 ((__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi)(__m128i)(X), \ 1990 (__v16qi)(__m128i)(Y), (int)(P),\ 1991 (__mmask16)(M))) 1992 1993 #define _mm256_mask_cmp_epu16_mask(M, X, Y, P) \ 1994 ((__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi)(__m256i)(X), \ 1995 (__v16hi)(__m256i)(Y), (int)(P),\ 1996 (__mmask16)(M))) 1997 1998 #define _mm256_mask_cmp_epu8_mask(M, X, Y, P) \ 1999 ((__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi)(__m256i)(X), \ 2000 (__v32qi)(__m256i)(Y), (int)(P),\ 2001 (__mmask32)M)) 2002 #endif 2003 2004 extern __inline __mmask32 2005 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2006 _mm256_cmpneq_epi8_mask (__m256i __X, __m256i __Y) 2007 { 2008 return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X, 2009 (__v32qi) __Y, 4, 2010 (__mmask32) -1); 2011 } 2012 2013 extern __inline __mmask32 2014 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2015 _mm256_cmplt_epi8_mask (__m256i __X, __m256i __Y) 2016 { 2017 return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X, 2018 (__v32qi) __Y, 1, 2019 (__mmask32) -1); 2020 } 2021 2022 extern __inline __mmask32 2023 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2024 _mm256_cmpge_epi8_mask (__m256i __X, __m256i __Y) 2025 { 2026 return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X, 2027 (__v32qi) __Y, 5, 2028 (__mmask32) -1); 2029 } 2030 2031 extern __inline __mmask32 2032 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2033 _mm256_cmple_epi8_mask (__m256i __X, __m256i __Y) 2034 { 2035 return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X, 2036 (__v32qi) __Y, 2, 2037 (__mmask32) -1); 2038 } 2039 2040 extern __inline __mmask16 2041 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2042 _mm256_cmpneq_epi16_mask (__m256i __X, __m256i __Y) 2043 { 2044 return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X, 2045 (__v16hi) __Y, 4, 2046 (__mmask16) -1); 2047 } 2048 2049 extern __inline __mmask16 2050 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2051 _mm256_cmplt_epi16_mask (__m256i __X, __m256i __Y) 2052 { 2053 return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X, 2054 (__v16hi) __Y, 1, 2055 (__mmask16) -1); 2056 } 2057 2058 extern __inline __mmask16 2059 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2060 _mm256_cmpge_epi16_mask (__m256i __X, __m256i __Y) 2061 { 2062 return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X, 2063 (__v16hi) __Y, 5, 2064 (__mmask16) -1); 2065 } 2066 2067 extern __inline __mmask16 2068 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2069 _mm256_cmple_epi16_mask (__m256i __X, __m256i __Y) 2070 { 2071 return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X, 2072 (__v16hi) __Y, 2, 2073 (__mmask16) -1); 2074 } 2075 2076 extern __inline __mmask16 2077 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2078 _mm_cmpneq_epu8_mask (__m128i __X, __m128i __Y) 2079 { 2080 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X, 2081 (__v16qi) __Y, 4, 2082 (__mmask16) -1); 2083 } 2084 2085 extern __inline __mmask16 2086 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2087 _mm_cmplt_epu8_mask (__m128i __X, __m128i __Y) 2088 { 2089 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X, 2090 (__v16qi) __Y, 1, 2091 (__mmask16) -1); 2092 } 2093 2094 extern __inline __mmask16 2095 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2096 _mm_cmpge_epu8_mask (__m128i __X, __m128i __Y) 2097 { 2098 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X, 2099 (__v16qi) __Y, 5, 2100 (__mmask16) -1); 2101 } 2102 2103 extern __inline __mmask16 2104 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2105 _mm_cmple_epu8_mask (__m128i __X, __m128i __Y) 2106 { 2107 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X, 2108 (__v16qi) __Y, 2, 2109 (__mmask16) -1); 2110 } 2111 2112 extern __inline __mmask8 2113 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2114 _mm_cmpneq_epu16_mask (__m128i __X, __m128i __Y) 2115 { 2116 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X, 2117 (__v8hi) __Y, 4, 2118 (__mmask8) -1); 2119 } 2120 2121 extern __inline __mmask8 2122 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2123 _mm_cmplt_epu16_mask (__m128i __X, __m128i __Y) 2124 { 2125 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X, 2126 (__v8hi) __Y, 1, 2127 (__mmask8) -1); 2128 } 2129 2130 extern __inline __mmask8 2131 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2132 _mm_cmpge_epu16_mask (__m128i __X, __m128i __Y) 2133 { 2134 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X, 2135 (__v8hi) __Y, 5, 2136 (__mmask8) -1); 2137 } 2138 2139 extern __inline __mmask8 2140 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2141 _mm_cmple_epu16_mask (__m128i __X, __m128i __Y) 2142 { 2143 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X, 2144 (__v8hi) __Y, 2, 2145 (__mmask8) -1); 2146 } 2147 2148 extern __inline __mmask16 2149 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2150 _mm_cmpneq_epi8_mask (__m128i __X, __m128i __Y) 2151 { 2152 return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X, 2153 (__v16qi) __Y, 4, 2154 (__mmask16) -1); 2155 } 2156 2157 extern __inline __mmask16 2158 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2159 _mm_cmplt_epi8_mask (__m128i __X, __m128i __Y) 2160 { 2161 return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X, 2162 (__v16qi) __Y, 1, 2163 (__mmask16) -1); 2164 } 2165 2166 extern __inline __mmask16 2167 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2168 _mm_cmpge_epi8_mask (__m128i __X, __m128i __Y) 2169 { 2170 return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X, 2171 (__v16qi) __Y, 5, 2172 (__mmask16) -1); 2173 } 2174 2175 extern __inline __mmask16 2176 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2177 _mm_cmple_epi8_mask (__m128i __X, __m128i __Y) 2178 { 2179 return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X, 2180 (__v16qi) __Y, 2, 2181 (__mmask16) -1); 2182 } 2183 2184 extern __inline __mmask8 2185 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2186 _mm_cmpneq_epi16_mask (__m128i __X, __m128i __Y) 2187 { 2188 return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X, 2189 (__v8hi) __Y, 4, 2190 (__mmask8) -1); 2191 } 2192 2193 extern __inline __mmask8 2194 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2195 _mm_cmplt_epi16_mask (__m128i __X, __m128i __Y) 2196 { 2197 return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X, 2198 (__v8hi) __Y, 1, 2199 (__mmask8) -1); 2200 } 2201 2202 extern __inline __mmask8 2203 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2204 _mm_cmpge_epi16_mask (__m128i __X, __m128i __Y) 2205 { 2206 return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X, 2207 (__v8hi) __Y, 5, 2208 (__mmask8) -1); 2209 } 2210 2211 extern __inline __mmask8 2212 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2213 _mm_cmple_epi16_mask (__m128i __X, __m128i __Y) 2214 { 2215 return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X, 2216 (__v8hi) __Y, 2, 2217 (__mmask8) -1); 2218 } 2219 2220 extern __inline __m256i 2221 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2222 _mm256_mask_mulhrs_epi16 (__m256i __W, __mmask16 __U, __m256i __X, 2223 __m256i __Y) 2224 { 2225 return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X, 2226 (__v16hi) __Y, 2227 (__v16hi) __W, 2228 (__mmask16) __U); 2229 } 2230 2231 extern __inline __m256i 2232 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2233 _mm256_maskz_mulhrs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y) 2234 { 2235 return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X, 2236 (__v16hi) __Y, 2237 (__v16hi) 2238 _mm256_setzero_si256 (), 2239 (__mmask16) __U); 2240 } 2241 2242 extern __inline __m256i 2243 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2244 _mm256_mask_mulhi_epu16 (__m256i __W, __mmask16 __U, __m256i __A, 2245 __m256i __B) 2246 { 2247 return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A, 2248 (__v16hi) __B, 2249 (__v16hi) __W, 2250 (__mmask16) __U); 2251 } 2252 2253 extern __inline __m256i 2254 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2255 _mm256_maskz_mulhi_epu16 (__mmask16 __U, __m256i __A, __m256i __B) 2256 { 2257 return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A, 2258 (__v16hi) __B, 2259 (__v16hi) 2260 _mm256_setzero_si256 (), 2261 (__mmask16) __U); 2262 } 2263 2264 extern __inline __m256i 2265 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2266 _mm256_mask_mulhi_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 2267 __m256i __B) 2268 { 2269 return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A, 2270 (__v16hi) __B, 2271 (__v16hi) __W, 2272 (__mmask16) __U); 2273 } 2274 2275 extern __inline __m256i 2276 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2277 _mm256_maskz_mulhi_epi16 (__mmask16 __U, __m256i __A, __m256i __B) 2278 { 2279 return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A, 2280 (__v16hi) __B, 2281 (__v16hi) 2282 _mm256_setzero_si256 (), 2283 (__mmask16) __U); 2284 } 2285 2286 extern __inline __m128i 2287 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2288 _mm_mask_mulhi_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 2289 __m128i __B) 2290 { 2291 return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A, 2292 (__v8hi) __B, 2293 (__v8hi) __W, 2294 (__mmask8) __U); 2295 } 2296 2297 extern __inline __m128i 2298 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2299 _mm_maskz_mulhi_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 2300 { 2301 return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A, 2302 (__v8hi) __B, 2303 (__v8hi) 2304 _mm_setzero_si128 (), 2305 (__mmask8) __U); 2306 } 2307 2308 extern __inline __m128i 2309 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2310 _mm_mask_mulhi_epu16 (__m128i __W, __mmask8 __U, __m128i __A, 2311 __m128i __B) 2312 { 2313 return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A, 2314 (__v8hi) __B, 2315 (__v8hi) __W, 2316 (__mmask8) __U); 2317 } 2318 2319 extern __inline __m128i 2320 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2321 _mm_maskz_mulhi_epu16 (__mmask8 __U, __m128i __A, __m128i __B) 2322 { 2323 return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A, 2324 (__v8hi) __B, 2325 (__v8hi) 2326 _mm_setzero_si128 (), 2327 (__mmask8) __U); 2328 } 2329 2330 extern __inline __m128i 2331 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2332 _mm_mask_mulhrs_epi16 (__m128i __W, __mmask8 __U, __m128i __X, 2333 __m128i __Y) 2334 { 2335 return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X, 2336 (__v8hi) __Y, 2337 (__v8hi) __W, 2338 (__mmask8) __U); 2339 } 2340 2341 extern __inline __m128i 2342 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2343 _mm_maskz_mulhrs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y) 2344 { 2345 return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X, 2346 (__v8hi) __Y, 2347 (__v8hi) 2348 _mm_setzero_si128 (), 2349 (__mmask8) __U); 2350 } 2351 2352 extern __inline __m256i 2353 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2354 _mm256_mask_mullo_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 2355 __m256i __B) 2356 { 2357 return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A, 2358 (__v16hi) __B, 2359 (__v16hi) __W, 2360 (__mmask16) __U); 2361 } 2362 2363 extern __inline __m256i 2364 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2365 _mm256_maskz_mullo_epi16 (__mmask16 __U, __m256i __A, __m256i __B) 2366 { 2367 return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A, 2368 (__v16hi) __B, 2369 (__v16hi) 2370 _mm256_setzero_si256 (), 2371 (__mmask16) __U); 2372 } 2373 2374 extern __inline __m128i 2375 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2376 _mm_mask_mullo_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 2377 __m128i __B) 2378 { 2379 return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A, 2380 (__v8hi) __B, 2381 (__v8hi) __W, 2382 (__mmask8) __U); 2383 } 2384 2385 extern __inline __m128i 2386 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2387 _mm_maskz_mullo_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 2388 { 2389 return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A, 2390 (__v8hi) __B, 2391 (__v8hi) 2392 _mm_setzero_si128 (), 2393 (__mmask8) __U); 2394 } 2395 2396 extern __inline __m256i 2397 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2398 _mm256_mask_cvtepi8_epi16 (__m256i __W, __mmask32 __U, __m128i __A) 2399 { 2400 return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A, 2401 (__v16hi) __W, 2402 (__mmask16) __U); 2403 } 2404 2405 extern __inline __m256i 2406 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2407 _mm256_maskz_cvtepi8_epi16 (__mmask16 __U, __m128i __A) 2408 { 2409 return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A, 2410 (__v16hi) 2411 _mm256_setzero_si256 (), 2412 (__mmask16) __U); 2413 } 2414 2415 extern __inline __m128i 2416 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2417 _mm_mask_cvtepi8_epi16 (__m128i __W, __mmask32 __U, __m128i __A) 2418 { 2419 return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A, 2420 (__v8hi) __W, 2421 (__mmask8) __U); 2422 } 2423 2424 extern __inline __m128i 2425 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2426 _mm_maskz_cvtepi8_epi16 (__mmask8 __U, __m128i __A) 2427 { 2428 return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A, 2429 (__v8hi) 2430 _mm_setzero_si128 (), 2431 (__mmask8) __U); 2432 } 2433 2434 extern __inline __m256i 2435 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2436 _mm256_mask_cvtepu8_epi16 (__m256i __W, __mmask32 __U, __m128i __A) 2437 { 2438 return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A, 2439 (__v16hi) __W, 2440 (__mmask16) __U); 2441 } 2442 2443 extern __inline __m256i 2444 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2445 _mm256_maskz_cvtepu8_epi16 (__mmask16 __U, __m128i __A) 2446 { 2447 return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A, 2448 (__v16hi) 2449 _mm256_setzero_si256 (), 2450 (__mmask16) __U); 2451 } 2452 2453 extern __inline __m128i 2454 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2455 _mm_mask_cvtepu8_epi16 (__m128i __W, __mmask32 __U, __m128i __A) 2456 { 2457 return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A, 2458 (__v8hi) __W, 2459 (__mmask8) __U); 2460 } 2461 2462 extern __inline __m128i 2463 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2464 _mm_maskz_cvtepu8_epi16 (__mmask8 __U, __m128i __A) 2465 { 2466 return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A, 2467 (__v8hi) 2468 _mm_setzero_si128 (), 2469 (__mmask8) __U); 2470 } 2471 2472 extern __inline __m256i 2473 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2474 _mm256_mask_avg_epu8 (__m256i __W, __mmask32 __U, __m256i __A, 2475 __m256i __B) 2476 { 2477 return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A, 2478 (__v32qi) __B, 2479 (__v32qi) __W, 2480 (__mmask32) __U); 2481 } 2482 2483 extern __inline __m256i 2484 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2485 _mm256_maskz_avg_epu8 (__mmask32 __U, __m256i __A, __m256i __B) 2486 { 2487 return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A, 2488 (__v32qi) __B, 2489 (__v32qi) 2490 _mm256_setzero_si256 (), 2491 (__mmask32) __U); 2492 } 2493 2494 extern __inline __m128i 2495 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2496 _mm_mask_avg_epu8 (__m128i __W, __mmask16 __U, __m128i __A, 2497 __m128i __B) 2498 { 2499 return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A, 2500 (__v16qi) __B, 2501 (__v16qi) __W, 2502 (__mmask16) __U); 2503 } 2504 2505 extern __inline __m128i 2506 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2507 _mm_maskz_avg_epu8 (__mmask16 __U, __m128i __A, __m128i __B) 2508 { 2509 return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A, 2510 (__v16qi) __B, 2511 (__v16qi) 2512 _mm_setzero_si128 (), 2513 (__mmask16) __U); 2514 } 2515 2516 extern __inline __m256i 2517 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2518 _mm256_mask_avg_epu16 (__m256i __W, __mmask16 __U, __m256i __A, 2519 __m256i __B) 2520 { 2521 return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A, 2522 (__v16hi) __B, 2523 (__v16hi) __W, 2524 (__mmask16) __U); 2525 } 2526 2527 extern __inline __m256i 2528 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2529 _mm256_maskz_avg_epu16 (__mmask16 __U, __m256i __A, __m256i __B) 2530 { 2531 return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A, 2532 (__v16hi) __B, 2533 (__v16hi) 2534 _mm256_setzero_si256 (), 2535 (__mmask16) __U); 2536 } 2537 2538 extern __inline __m128i 2539 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2540 _mm_mask_avg_epu16 (__m128i __W, __mmask8 __U, __m128i __A, 2541 __m128i __B) 2542 { 2543 return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A, 2544 (__v8hi) __B, 2545 (__v8hi) __W, 2546 (__mmask8) __U); 2547 } 2548 2549 extern __inline __m128i 2550 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2551 _mm_maskz_avg_epu16 (__mmask8 __U, __m128i __A, __m128i __B) 2552 { 2553 return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A, 2554 (__v8hi) __B, 2555 (__v8hi) 2556 _mm_setzero_si128 (), 2557 (__mmask8) __U); 2558 } 2559 2560 extern __inline __m256i 2561 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2562 _mm256_mask_add_epi8 (__m256i __W, __mmask32 __U, __m256i __A, 2563 __m256i __B) 2564 { 2565 return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A, 2566 (__v32qi) __B, 2567 (__v32qi) __W, 2568 (__mmask32) __U); 2569 } 2570 2571 extern __inline __m256i 2572 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2573 _mm256_maskz_add_epi8 (__mmask32 __U, __m256i __A, __m256i __B) 2574 { 2575 return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A, 2576 (__v32qi) __B, 2577 (__v32qi) 2578 _mm256_setzero_si256 (), 2579 (__mmask32) __U); 2580 } 2581 2582 extern __inline __m256i 2583 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2584 _mm256_mask_add_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 2585 __m256i __B) 2586 { 2587 return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A, 2588 (__v16hi) __B, 2589 (__v16hi) __W, 2590 (__mmask16) __U); 2591 } 2592 2593 extern __inline __m256i 2594 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2595 _mm256_maskz_add_epi16 (__mmask16 __U, __m256i __A, __m256i __B) 2596 { 2597 return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A, 2598 (__v16hi) __B, 2599 (__v16hi) 2600 _mm256_setzero_si256 (), 2601 (__mmask16) __U); 2602 } 2603 2604 extern __inline __m256i 2605 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2606 _mm256_mask_adds_epi8 (__m256i __W, __mmask32 __U, __m256i __A, 2607 __m256i __B) 2608 { 2609 return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A, 2610 (__v32qi) __B, 2611 (__v32qi) __W, 2612 (__mmask32) __U); 2613 } 2614 2615 extern __inline __m256i 2616 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2617 _mm256_maskz_adds_epi8 (__mmask32 __U, __m256i __A, __m256i __B) 2618 { 2619 return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A, 2620 (__v32qi) __B, 2621 (__v32qi) 2622 _mm256_setzero_si256 (), 2623 (__mmask32) __U); 2624 } 2625 2626 extern __inline __m256i 2627 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2628 _mm256_mask_adds_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 2629 __m256i __B) 2630 { 2631 return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A, 2632 (__v16hi) __B, 2633 (__v16hi) __W, 2634 (__mmask16) __U); 2635 } 2636 2637 extern __inline __m256i 2638 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2639 _mm256_maskz_adds_epi16 (__mmask16 __U, __m256i __A, __m256i __B) 2640 { 2641 return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A, 2642 (__v16hi) __B, 2643 (__v16hi) 2644 _mm256_setzero_si256 (), 2645 (__mmask16) __U); 2646 } 2647 2648 extern __inline __m256i 2649 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2650 _mm256_mask_adds_epu8 (__m256i __W, __mmask32 __U, __m256i __A, 2651 __m256i __B) 2652 { 2653 return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A, 2654 (__v32qi) __B, 2655 (__v32qi) __W, 2656 (__mmask32) __U); 2657 } 2658 2659 extern __inline __m256i 2660 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2661 _mm256_maskz_adds_epu8 (__mmask32 __U, __m256i __A, __m256i __B) 2662 { 2663 return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A, 2664 (__v32qi) __B, 2665 (__v32qi) 2666 _mm256_setzero_si256 (), 2667 (__mmask32) __U); 2668 } 2669 2670 extern __inline __m256i 2671 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2672 _mm256_mask_adds_epu16 (__m256i __W, __mmask16 __U, __m256i __A, 2673 __m256i __B) 2674 { 2675 return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A, 2676 (__v16hi) __B, 2677 (__v16hi) __W, 2678 (__mmask16) __U); 2679 } 2680 2681 extern __inline __m256i 2682 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2683 _mm256_maskz_adds_epu16 (__mmask16 __U, __m256i __A, __m256i __B) 2684 { 2685 return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A, 2686 (__v16hi) __B, 2687 (__v16hi) 2688 _mm256_setzero_si256 (), 2689 (__mmask16) __U); 2690 } 2691 2692 extern __inline __m256i 2693 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2694 _mm256_mask_sub_epi8 (__m256i __W, __mmask32 __U, __m256i __A, 2695 __m256i __B) 2696 { 2697 return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A, 2698 (__v32qi) __B, 2699 (__v32qi) __W, 2700 (__mmask32) __U); 2701 } 2702 2703 extern __inline __m256i 2704 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2705 _mm256_maskz_sub_epi8 (__mmask32 __U, __m256i __A, __m256i __B) 2706 { 2707 return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A, 2708 (__v32qi) __B, 2709 (__v32qi) 2710 _mm256_setzero_si256 (), 2711 (__mmask32) __U); 2712 } 2713 2714 extern __inline __m256i 2715 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2716 _mm256_mask_sub_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 2717 __m256i __B) 2718 { 2719 return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A, 2720 (__v16hi) __B, 2721 (__v16hi) __W, 2722 (__mmask16) __U); 2723 } 2724 2725 extern __inline __m256i 2726 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2727 _mm256_maskz_sub_epi16 (__mmask16 __U, __m256i __A, __m256i __B) 2728 { 2729 return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A, 2730 (__v16hi) __B, 2731 (__v16hi) 2732 _mm256_setzero_si256 (), 2733 (__mmask16) __U); 2734 } 2735 2736 extern __inline __m256i 2737 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2738 _mm256_mask_subs_epi8 (__m256i __W, __mmask32 __U, __m256i __A, 2739 __m256i __B) 2740 { 2741 return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A, 2742 (__v32qi) __B, 2743 (__v32qi) __W, 2744 (__mmask32) __U); 2745 } 2746 2747 extern __inline __m256i 2748 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2749 _mm256_maskz_subs_epi8 (__mmask32 __U, __m256i __A, __m256i __B) 2750 { 2751 return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A, 2752 (__v32qi) __B, 2753 (__v32qi) 2754 _mm256_setzero_si256 (), 2755 (__mmask32) __U); 2756 } 2757 2758 extern __inline __m256i 2759 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2760 _mm256_mask_subs_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 2761 __m256i __B) 2762 { 2763 return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A, 2764 (__v16hi) __B, 2765 (__v16hi) __W, 2766 (__mmask16) __U); 2767 } 2768 2769 extern __inline __m256i 2770 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2771 _mm256_maskz_subs_epi16 (__mmask16 __U, __m256i __A, __m256i __B) 2772 { 2773 return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A, 2774 (__v16hi) __B, 2775 (__v16hi) 2776 _mm256_setzero_si256 (), 2777 (__mmask16) __U); 2778 } 2779 2780 extern __inline __m256i 2781 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2782 _mm256_mask_subs_epu8 (__m256i __W, __mmask32 __U, __m256i __A, 2783 __m256i __B) 2784 { 2785 return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A, 2786 (__v32qi) __B, 2787 (__v32qi) __W, 2788 (__mmask32) __U); 2789 } 2790 2791 extern __inline __m256i 2792 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2793 _mm256_maskz_subs_epu8 (__mmask32 __U, __m256i __A, __m256i __B) 2794 { 2795 return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A, 2796 (__v32qi) __B, 2797 (__v32qi) 2798 _mm256_setzero_si256 (), 2799 (__mmask32) __U); 2800 } 2801 2802 extern __inline __m256i 2803 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2804 _mm256_mask_subs_epu16 (__m256i __W, __mmask16 __U, __m256i __A, 2805 __m256i __B) 2806 { 2807 return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A, 2808 (__v16hi) __B, 2809 (__v16hi) __W, 2810 (__mmask16) __U); 2811 } 2812 2813 extern __inline __m256i 2814 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2815 _mm256_maskz_subs_epu16 (__mmask16 __U, __m256i __A, __m256i __B) 2816 { 2817 return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A, 2818 (__v16hi) __B, 2819 (__v16hi) 2820 _mm256_setzero_si256 (), 2821 (__mmask16) __U); 2822 } 2823 2824 extern __inline __m128i 2825 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2826 _mm_mask_add_epi8 (__m128i __W, __mmask16 __U, __m128i __A, 2827 __m128i __B) 2828 { 2829 return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A, 2830 (__v16qi) __B, 2831 (__v16qi) __W, 2832 (__mmask16) __U); 2833 } 2834 2835 extern __inline __m128i 2836 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2837 _mm_maskz_add_epi8 (__mmask16 __U, __m128i __A, __m128i __B) 2838 { 2839 return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A, 2840 (__v16qi) __B, 2841 (__v16qi) 2842 _mm_setzero_si128 (), 2843 (__mmask16) __U); 2844 } 2845 2846 extern __inline __m128i 2847 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2848 _mm_mask_add_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 2849 __m128i __B) 2850 { 2851 return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A, 2852 (__v8hi) __B, 2853 (__v8hi) __W, 2854 (__mmask8) __U); 2855 } 2856 2857 extern __inline __m128i 2858 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2859 _mm_maskz_add_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 2860 { 2861 return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A, 2862 (__v8hi) __B, 2863 (__v8hi) 2864 _mm_setzero_si128 (), 2865 (__mmask8) __U); 2866 } 2867 2868 extern __inline __m256i 2869 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2870 _mm256_mask_unpackhi_epi8 (__m256i __W, __mmask32 __U, __m256i __A, 2871 __m256i __B) 2872 { 2873 return (__m256i) __builtin_ia32_punpckhbw256_mask ((__v32qi) __A, 2874 (__v32qi) __B, 2875 (__v32qi) __W, 2876 (__mmask32) __U); 2877 } 2878 2879 extern __inline __m256i 2880 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2881 _mm256_maskz_unpackhi_epi8 (__mmask32 __U, __m256i __A, __m256i __B) 2882 { 2883 return (__m256i) __builtin_ia32_punpckhbw256_mask ((__v32qi) __A, 2884 (__v32qi) __B, 2885 (__v32qi) 2886 _mm256_setzero_si256 (), 2887 (__mmask32) __U); 2888 } 2889 2890 extern __inline __m128i 2891 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2892 _mm_mask_unpackhi_epi8 (__m128i __W, __mmask16 __U, __m128i __A, 2893 __m128i __B) 2894 { 2895 return (__m128i) __builtin_ia32_punpckhbw128_mask ((__v16qi) __A, 2896 (__v16qi) __B, 2897 (__v16qi) __W, 2898 (__mmask16) __U); 2899 } 2900 2901 extern __inline __m128i 2902 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2903 _mm_maskz_unpackhi_epi8 (__mmask16 __U, __m128i __A, __m128i __B) 2904 { 2905 return (__m128i) __builtin_ia32_punpckhbw128_mask ((__v16qi) __A, 2906 (__v16qi) __B, 2907 (__v16qi) 2908 _mm_setzero_si128 (), 2909 (__mmask16) __U); 2910 } 2911 2912 extern __inline __m256i 2913 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2914 _mm256_mask_unpackhi_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 2915 __m256i __B) 2916 { 2917 return (__m256i) __builtin_ia32_punpckhwd256_mask ((__v16hi) __A, 2918 (__v16hi) __B, 2919 (__v16hi) __W, 2920 (__mmask16) __U); 2921 } 2922 2923 extern __inline __m256i 2924 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2925 _mm256_maskz_unpackhi_epi16 (__mmask16 __U, __m256i __A, __m256i __B) 2926 { 2927 return (__m256i) __builtin_ia32_punpckhwd256_mask ((__v16hi) __A, 2928 (__v16hi) __B, 2929 (__v16hi) 2930 _mm256_setzero_si256 (), 2931 (__mmask16) __U); 2932 } 2933 2934 extern __inline __m128i 2935 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2936 _mm_mask_unpackhi_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 2937 __m128i __B) 2938 { 2939 return (__m128i) __builtin_ia32_punpckhwd128_mask ((__v8hi) __A, 2940 (__v8hi) __B, 2941 (__v8hi) __W, 2942 (__mmask8) __U); 2943 } 2944 2945 extern __inline __m128i 2946 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2947 _mm_maskz_unpackhi_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 2948 { 2949 return (__m128i) __builtin_ia32_punpckhwd128_mask ((__v8hi) __A, 2950 (__v8hi) __B, 2951 (__v8hi) 2952 _mm_setzero_si128 (), 2953 (__mmask8) __U); 2954 } 2955 2956 extern __inline __m256i 2957 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2958 _mm256_mask_unpacklo_epi8 (__m256i __W, __mmask32 __U, __m256i __A, 2959 __m256i __B) 2960 { 2961 return (__m256i) __builtin_ia32_punpcklbw256_mask ((__v32qi) __A, 2962 (__v32qi) __B, 2963 (__v32qi) __W, 2964 (__mmask32) __U); 2965 } 2966 2967 extern __inline __m256i 2968 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2969 _mm256_maskz_unpacklo_epi8 (__mmask32 __U, __m256i __A, __m256i __B) 2970 { 2971 return (__m256i) __builtin_ia32_punpcklbw256_mask ((__v32qi) __A, 2972 (__v32qi) __B, 2973 (__v32qi) 2974 _mm256_setzero_si256 (), 2975 (__mmask32) __U); 2976 } 2977 2978 extern __inline __m128i 2979 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2980 _mm_mask_unpacklo_epi8 (__m128i __W, __mmask16 __U, __m128i __A, 2981 __m128i __B) 2982 { 2983 return (__m128i) __builtin_ia32_punpcklbw128_mask ((__v16qi) __A, 2984 (__v16qi) __B, 2985 (__v16qi) __W, 2986 (__mmask16) __U); 2987 } 2988 2989 extern __inline __m128i 2990 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2991 _mm_maskz_unpacklo_epi8 (__mmask16 __U, __m128i __A, __m128i __B) 2992 { 2993 return (__m128i) __builtin_ia32_punpcklbw128_mask ((__v16qi) __A, 2994 (__v16qi) __B, 2995 (__v16qi) 2996 _mm_setzero_si128 (), 2997 (__mmask16) __U); 2998 } 2999 3000 extern __inline __m256i 3001 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3002 _mm256_mask_unpacklo_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 3003 __m256i __B) 3004 { 3005 return (__m256i) __builtin_ia32_punpcklwd256_mask ((__v16hi) __A, 3006 (__v16hi) __B, 3007 (__v16hi) __W, 3008 (__mmask16) __U); 3009 } 3010 3011 extern __inline __m256i 3012 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3013 _mm256_maskz_unpacklo_epi16 (__mmask16 __U, __m256i __A, __m256i __B) 3014 { 3015 return (__m256i) __builtin_ia32_punpcklwd256_mask ((__v16hi) __A, 3016 (__v16hi) __B, 3017 (__v16hi) 3018 _mm256_setzero_si256 (), 3019 (__mmask16) __U); 3020 } 3021 3022 extern __inline __m128i 3023 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3024 _mm_mask_unpacklo_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 3025 __m128i __B) 3026 { 3027 return (__m128i) __builtin_ia32_punpcklwd128_mask ((__v8hi) __A, 3028 (__v8hi) __B, 3029 (__v8hi) __W, 3030 (__mmask8) __U); 3031 } 3032 3033 extern __inline __m128i 3034 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3035 _mm_maskz_unpacklo_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 3036 { 3037 return (__m128i) __builtin_ia32_punpcklwd128_mask ((__v8hi) __A, 3038 (__v8hi) __B, 3039 (__v8hi) 3040 _mm_setzero_si128 (), 3041 (__mmask8) __U); 3042 } 3043 3044 extern __inline __mmask16 3045 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3046 _mm_cmpeq_epi8_mask (__m128i __A, __m128i __B) 3047 { 3048 return (__mmask16) __builtin_ia32_pcmpeqb128_mask ((__v16qi) __A, 3049 (__v16qi) __B, 3050 (__mmask16) -1); 3051 } 3052 3053 extern __inline __mmask16 3054 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3055 _mm_cmpeq_epu8_mask (__m128i __A, __m128i __B) 3056 { 3057 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A, 3058 (__v16qi) __B, 0, 3059 (__mmask16) -1); 3060 } 3061 3062 extern __inline __mmask16 3063 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3064 _mm_mask_cmpeq_epu8_mask (__mmask16 __U, __m128i __A, __m128i __B) 3065 { 3066 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A, 3067 (__v16qi) __B, 0, 3068 __U); 3069 } 3070 3071 extern __inline __mmask16 3072 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3073 _mm_mask_cmpeq_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B) 3074 { 3075 return (__mmask16) __builtin_ia32_pcmpeqb128_mask ((__v16qi) __A, 3076 (__v16qi) __B, 3077 __U); 3078 } 3079 3080 extern __inline __mmask32 3081 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3082 _mm256_cmpeq_epu8_mask (__m256i __A, __m256i __B) 3083 { 3084 return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A, 3085 (__v32qi) __B, 0, 3086 (__mmask32) -1); 3087 } 3088 3089 extern __inline __mmask32 3090 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3091 _mm256_cmpeq_epi8_mask (__m256i __A, __m256i __B) 3092 { 3093 return (__mmask32) __builtin_ia32_pcmpeqb256_mask ((__v32qi) __A, 3094 (__v32qi) __B, 3095 (__mmask32) -1); 3096 } 3097 3098 extern __inline __mmask32 3099 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3100 _mm256_mask_cmpeq_epu8_mask (__mmask32 __U, __m256i __A, __m256i __B) 3101 { 3102 return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A, 3103 (__v32qi) __B, 0, 3104 __U); 3105 } 3106 3107 extern __inline __mmask32 3108 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3109 _mm256_mask_cmpeq_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B) 3110 { 3111 return (__mmask32) __builtin_ia32_pcmpeqb256_mask ((__v32qi) __A, 3112 (__v32qi) __B, 3113 __U); 3114 } 3115 3116 extern __inline __mmask8 3117 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3118 _mm_cmpeq_epu16_mask (__m128i __A, __m128i __B) 3119 { 3120 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A, 3121 (__v8hi) __B, 0, 3122 (__mmask8) -1); 3123 } 3124 3125 extern __inline __mmask8 3126 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3127 _mm_cmpeq_epi16_mask (__m128i __A, __m128i __B) 3128 { 3129 return (__mmask8) __builtin_ia32_pcmpeqw128_mask ((__v8hi) __A, 3130 (__v8hi) __B, 3131 (__mmask8) -1); 3132 } 3133 3134 extern __inline __mmask8 3135 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3136 _mm_mask_cmpeq_epu16_mask (__mmask8 __U, __m128i __A, __m128i __B) 3137 { 3138 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A, 3139 (__v8hi) __B, 0, __U); 3140 } 3141 3142 extern __inline __mmask8 3143 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3144 _mm_mask_cmpeq_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B) 3145 { 3146 return (__mmask8) __builtin_ia32_pcmpeqw128_mask ((__v8hi) __A, 3147 (__v8hi) __B, __U); 3148 } 3149 3150 extern __inline __mmask16 3151 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3152 _mm256_cmpeq_epu16_mask (__m256i __A, __m256i __B) 3153 { 3154 return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A, 3155 (__v16hi) __B, 0, 3156 (__mmask16) -1); 3157 } 3158 3159 extern __inline __mmask16 3160 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3161 _mm256_cmpeq_epi16_mask (__m256i __A, __m256i __B) 3162 { 3163 return (__mmask16) __builtin_ia32_pcmpeqw256_mask ((__v16hi) __A, 3164 (__v16hi) __B, 3165 (__mmask16) -1); 3166 } 3167 3168 extern __inline __mmask16 3169 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3170 _mm256_mask_cmpeq_epu16_mask (__mmask16 __U, __m256i __A, __m256i __B) 3171 { 3172 return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A, 3173 (__v16hi) __B, 0, 3174 __U); 3175 } 3176 3177 extern __inline __mmask16 3178 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3179 _mm256_mask_cmpeq_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B) 3180 { 3181 return (__mmask16) __builtin_ia32_pcmpeqw256_mask ((__v16hi) __A, 3182 (__v16hi) __B, 3183 __U); 3184 } 3185 3186 extern __inline __mmask16 3187 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3188 _mm_cmpgt_epu8_mask (__m128i __A, __m128i __B) 3189 { 3190 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A, 3191 (__v16qi) __B, 6, 3192 (__mmask16) -1); 3193 } 3194 3195 extern __inline __mmask16 3196 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3197 _mm_cmpgt_epi8_mask (__m128i __A, __m128i __B) 3198 { 3199 return (__mmask16) __builtin_ia32_pcmpgtb128_mask ((__v16qi) __A, 3200 (__v16qi) __B, 3201 (__mmask16) -1); 3202 } 3203 3204 extern __inline __mmask16 3205 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3206 _mm_mask_cmpgt_epu8_mask (__mmask16 __U, __m128i __A, __m128i __B) 3207 { 3208 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A, 3209 (__v16qi) __B, 6, 3210 __U); 3211 } 3212 3213 extern __inline __mmask16 3214 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3215 _mm_mask_cmpgt_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B) 3216 { 3217 return (__mmask16) __builtin_ia32_pcmpgtb128_mask ((__v16qi) __A, 3218 (__v16qi) __B, 3219 __U); 3220 } 3221 3222 extern __inline __mmask32 3223 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3224 _mm256_cmpgt_epu8_mask (__m256i __A, __m256i __B) 3225 { 3226 return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A, 3227 (__v32qi) __B, 6, 3228 (__mmask32) -1); 3229 } 3230 3231 extern __inline __mmask32 3232 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3233 _mm256_cmpgt_epi8_mask (__m256i __A, __m256i __B) 3234 { 3235 return (__mmask32) __builtin_ia32_pcmpgtb256_mask ((__v32qi) __A, 3236 (__v32qi) __B, 3237 (__mmask32) -1); 3238 } 3239 3240 extern __inline __mmask32 3241 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3242 _mm256_mask_cmpgt_epu8_mask (__mmask32 __U, __m256i __A, __m256i __B) 3243 { 3244 return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A, 3245 (__v32qi) __B, 6, 3246 __U); 3247 } 3248 3249 extern __inline __mmask32 3250 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3251 _mm256_mask_cmpgt_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B) 3252 { 3253 return (__mmask32) __builtin_ia32_pcmpgtb256_mask ((__v32qi) __A, 3254 (__v32qi) __B, 3255 __U); 3256 } 3257 3258 extern __inline __mmask8 3259 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3260 _mm_cmpgt_epu16_mask (__m128i __A, __m128i __B) 3261 { 3262 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A, 3263 (__v8hi) __B, 6, 3264 (__mmask8) -1); 3265 } 3266 3267 extern __inline __mmask8 3268 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3269 _mm_cmpgt_epi16_mask (__m128i __A, __m128i __B) 3270 { 3271 return (__mmask8) __builtin_ia32_pcmpgtw128_mask ((__v8hi) __A, 3272 (__v8hi) __B, 3273 (__mmask8) -1); 3274 } 3275 3276 extern __inline __mmask8 3277 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3278 _mm_mask_cmpgt_epu16_mask (__mmask8 __U, __m128i __A, __m128i __B) 3279 { 3280 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A, 3281 (__v8hi) __B, 6, __U); 3282 } 3283 3284 extern __inline __mmask8 3285 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3286 _mm_mask_cmpgt_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B) 3287 { 3288 return (__mmask8) __builtin_ia32_pcmpgtw128_mask ((__v8hi) __A, 3289 (__v8hi) __B, __U); 3290 } 3291 3292 extern __inline __mmask16 3293 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3294 _mm256_cmpgt_epu16_mask (__m256i __A, __m256i __B) 3295 { 3296 return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A, 3297 (__v16hi) __B, 6, 3298 (__mmask16) -1); 3299 } 3300 3301 extern __inline __mmask16 3302 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3303 _mm256_cmpgt_epi16_mask (__m256i __A, __m256i __B) 3304 { 3305 return (__mmask16) __builtin_ia32_pcmpgtw256_mask ((__v16hi) __A, 3306 (__v16hi) __B, 3307 (__mmask16) -1); 3308 } 3309 3310 extern __inline __mmask16 3311 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3312 _mm256_mask_cmpgt_epu16_mask (__mmask16 __U, __m256i __A, __m256i __B) 3313 { 3314 return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A, 3315 (__v16hi) __B, 6, 3316 __U); 3317 } 3318 3319 extern __inline __mmask16 3320 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3321 _mm256_mask_cmpgt_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B) 3322 { 3323 return (__mmask16) __builtin_ia32_pcmpgtw256_mask ((__v16hi) __A, 3324 (__v16hi) __B, 3325 __U); 3326 } 3327 3328 extern __inline __mmask16 3329 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3330 _mm_testn_epi8_mask (__m128i __A, __m128i __B) 3331 { 3332 return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A, 3333 (__v16qi) __B, 3334 (__mmask16) -1); 3335 } 3336 3337 extern __inline __mmask16 3338 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3339 _mm_mask_testn_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B) 3340 { 3341 return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A, 3342 (__v16qi) __B, __U); 3343 } 3344 3345 extern __inline __mmask32 3346 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3347 _mm256_testn_epi8_mask (__m256i __A, __m256i __B) 3348 { 3349 return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A, 3350 (__v32qi) __B, 3351 (__mmask32) -1); 3352 } 3353 3354 extern __inline __mmask32 3355 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3356 _mm256_mask_testn_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B) 3357 { 3358 return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A, 3359 (__v32qi) __B, __U); 3360 } 3361 3362 extern __inline __mmask8 3363 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3364 _mm_testn_epi16_mask (__m128i __A, __m128i __B) 3365 { 3366 return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A, 3367 (__v8hi) __B, 3368 (__mmask8) -1); 3369 } 3370 3371 extern __inline __mmask8 3372 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3373 _mm_mask_testn_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B) 3374 { 3375 return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A, 3376 (__v8hi) __B, __U); 3377 } 3378 3379 extern __inline __mmask16 3380 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3381 _mm256_testn_epi16_mask (__m256i __A, __m256i __B) 3382 { 3383 return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A, 3384 (__v16hi) __B, 3385 (__mmask16) -1); 3386 } 3387 3388 extern __inline __mmask16 3389 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3390 _mm256_mask_testn_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B) 3391 { 3392 return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A, 3393 (__v16hi) __B, __U); 3394 } 3395 3396 extern __inline __m256i 3397 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3398 _mm256_mask_shuffle_epi8 (__m256i __W, __mmask32 __U, __m256i __A, 3399 __m256i __B) 3400 { 3401 return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A, 3402 (__v32qi) __B, 3403 (__v32qi) __W, 3404 (__mmask32) __U); 3405 } 3406 3407 extern __inline __m256i 3408 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3409 _mm256_maskz_shuffle_epi8 (__mmask32 __U, __m256i __A, __m256i __B) 3410 { 3411 return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A, 3412 (__v32qi) __B, 3413 (__v32qi) 3414 _mm256_setzero_si256 (), 3415 (__mmask32) __U); 3416 } 3417 3418 extern __inline __m128i 3419 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3420 _mm_mask_shuffle_epi8 (__m128i __W, __mmask16 __U, __m128i __A, 3421 __m128i __B) 3422 { 3423 return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A, 3424 (__v16qi) __B, 3425 (__v16qi) __W, 3426 (__mmask16) __U); 3427 } 3428 3429 extern __inline __m128i 3430 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3431 _mm_maskz_shuffle_epi8 (__mmask16 __U, __m128i __A, __m128i __B) 3432 { 3433 return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A, 3434 (__v16qi) __B, 3435 (__v16qi) 3436 _mm_setzero_si128 (), 3437 (__mmask16) __U); 3438 } 3439 3440 extern __inline __m256i 3441 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3442 _mm256_maskz_packs_epi16 (__mmask32 __M, __m256i __A, __m256i __B) 3443 { 3444 return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A, 3445 (__v16hi) __B, 3446 (__v32qi) 3447 _mm256_setzero_si256 (), 3448 __M); 3449 } 3450 3451 extern __inline __m256i 3452 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3453 _mm256_mask_packs_epi16 (__m256i __W, __mmask32 __M, __m256i __A, 3454 __m256i __B) 3455 { 3456 return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A, 3457 (__v16hi) __B, 3458 (__v32qi) __W, 3459 __M); 3460 } 3461 3462 extern __inline __m128i 3463 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3464 _mm_maskz_packs_epi16 (__mmask16 __M, __m128i __A, __m128i __B) 3465 { 3466 return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A, 3467 (__v8hi) __B, 3468 (__v16qi) 3469 _mm_setzero_si128 (), 3470 __M); 3471 } 3472 3473 extern __inline __m128i 3474 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3475 _mm_mask_packs_epi16 (__m128i __W, __mmask16 __M, __m128i __A, 3476 __m128i __B) 3477 { 3478 return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A, 3479 (__v8hi) __B, 3480 (__v16qi) __W, 3481 __M); 3482 } 3483 3484 extern __inline __m256i 3485 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3486 _mm256_maskz_packus_epi16 (__mmask32 __M, __m256i __A, __m256i __B) 3487 { 3488 return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A, 3489 (__v16hi) __B, 3490 (__v32qi) 3491 _mm256_setzero_si256 (), 3492 __M); 3493 } 3494 3495 extern __inline __m256i 3496 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3497 _mm256_mask_packus_epi16 (__m256i __W, __mmask32 __M, __m256i __A, 3498 __m256i __B) 3499 { 3500 return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A, 3501 (__v16hi) __B, 3502 (__v32qi) __W, 3503 __M); 3504 } 3505 3506 extern __inline __m128i 3507 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3508 _mm_maskz_packus_epi16 (__mmask16 __M, __m128i __A, __m128i __B) 3509 { 3510 return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A, 3511 (__v8hi) __B, 3512 (__v16qi) 3513 _mm_setzero_si128 (), 3514 __M); 3515 } 3516 3517 extern __inline __m128i 3518 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3519 _mm_mask_packus_epi16 (__m128i __W, __mmask16 __M, __m128i __A, 3520 __m128i __B) 3521 { 3522 return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A, 3523 (__v8hi) __B, 3524 (__v16qi) __W, 3525 __M); 3526 } 3527 3528 extern __inline __m256i 3529 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3530 _mm256_mask_abs_epi8 (__m256i __W, __mmask32 __U, __m256i __A) 3531 { 3532 return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A, 3533 (__v32qi) __W, 3534 (__mmask32) __U); 3535 } 3536 3537 extern __inline __m256i 3538 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3539 _mm256_maskz_abs_epi8 (__mmask32 __U, __m256i __A) 3540 { 3541 return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A, 3542 (__v32qi) 3543 _mm256_setzero_si256 (), 3544 (__mmask32) __U); 3545 } 3546 3547 extern __inline __m128i 3548 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3549 _mm_mask_abs_epi8 (__m128i __W, __mmask16 __U, __m128i __A) 3550 { 3551 return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A, 3552 (__v16qi) __W, 3553 (__mmask16) __U); 3554 } 3555 3556 extern __inline __m128i 3557 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3558 _mm_maskz_abs_epi8 (__mmask16 __U, __m128i __A) 3559 { 3560 return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A, 3561 (__v16qi) 3562 _mm_setzero_si128 (), 3563 (__mmask16) __U); 3564 } 3565 3566 extern __inline __m256i 3567 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3568 _mm256_mask_abs_epi16 (__m256i __W, __mmask16 __U, __m256i __A) 3569 { 3570 return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A, 3571 (__v16hi) __W, 3572 (__mmask16) __U); 3573 } 3574 3575 extern __inline __m256i 3576 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3577 _mm256_maskz_abs_epi16 (__mmask16 __U, __m256i __A) 3578 { 3579 return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A, 3580 (__v16hi) 3581 _mm256_setzero_si256 (), 3582 (__mmask16) __U); 3583 } 3584 3585 extern __inline __m128i 3586 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3587 _mm_mask_abs_epi16 (__m128i __W, __mmask8 __U, __m128i __A) 3588 { 3589 return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A, 3590 (__v8hi) __W, 3591 (__mmask8) __U); 3592 } 3593 3594 extern __inline __m128i 3595 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3596 _mm_maskz_abs_epi16 (__mmask8 __U, __m128i __A) 3597 { 3598 return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A, 3599 (__v8hi) 3600 _mm_setzero_si128 (), 3601 (__mmask8) __U); 3602 } 3603 3604 extern __inline __mmask32 3605 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3606 _mm256_cmpneq_epu8_mask (__m256i __X, __m256i __Y) 3607 { 3608 return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X, 3609 (__v32qi) __Y, 4, 3610 (__mmask32) -1); 3611 } 3612 3613 extern __inline __mmask32 3614 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3615 _mm256_cmplt_epu8_mask (__m256i __X, __m256i __Y) 3616 { 3617 return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X, 3618 (__v32qi) __Y, 1, 3619 (__mmask32) -1); 3620 } 3621 3622 extern __inline __mmask32 3623 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3624 _mm256_cmpge_epu8_mask (__m256i __X, __m256i __Y) 3625 { 3626 return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X, 3627 (__v32qi) __Y, 5, 3628 (__mmask32) -1); 3629 } 3630 3631 extern __inline __mmask32 3632 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3633 _mm256_cmple_epu8_mask (__m256i __X, __m256i __Y) 3634 { 3635 return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X, 3636 (__v32qi) __Y, 2, 3637 (__mmask32) -1); 3638 } 3639 3640 extern __inline __mmask16 3641 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3642 _mm256_cmpneq_epu16_mask (__m256i __X, __m256i __Y) 3643 { 3644 return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X, 3645 (__v16hi) __Y, 4, 3646 (__mmask16) -1); 3647 } 3648 3649 extern __inline __mmask16 3650 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3651 _mm256_cmplt_epu16_mask (__m256i __X, __m256i __Y) 3652 { 3653 return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X, 3654 (__v16hi) __Y, 1, 3655 (__mmask16) -1); 3656 } 3657 3658 extern __inline __mmask16 3659 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3660 _mm256_cmpge_epu16_mask (__m256i __X, __m256i __Y) 3661 { 3662 return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X, 3663 (__v16hi) __Y, 5, 3664 (__mmask16) -1); 3665 } 3666 3667 extern __inline __mmask16 3668 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3669 _mm256_cmple_epu16_mask (__m256i __X, __m256i __Y) 3670 { 3671 return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X, 3672 (__v16hi) __Y, 2, 3673 (__mmask16) -1); 3674 } 3675 3676 extern __inline void 3677 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3678 _mm256_mask_storeu_epi16 (void *__P, __mmask16 __U, __m256i __A) 3679 { 3680 __builtin_ia32_storedquhi256_mask ((short *) __P, 3681 (__v16hi) __A, 3682 (__mmask16) __U); 3683 } 3684 3685 extern __inline void 3686 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3687 _mm_mask_storeu_epi16 (void *__P, __mmask8 __U, __m128i __A) 3688 { 3689 __builtin_ia32_storedquhi128_mask ((short *) __P, 3690 (__v8hi) __A, 3691 (__mmask8) __U); 3692 } 3693 3694 extern __inline __m128i 3695 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3696 _mm_mask_adds_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 3697 __m128i __B) 3698 { 3699 return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A, 3700 (__v8hi) __B, 3701 (__v8hi) __W, 3702 (__mmask8) __U); 3703 } 3704 3705 extern __inline __m128i 3706 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3707 _mm_mask_subs_epi8 (__m128i __W, __mmask16 __U, __m128i __A, 3708 __m128i __B) 3709 { 3710 return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A, 3711 (__v16qi) __B, 3712 (__v16qi) __W, 3713 (__mmask16) __U); 3714 } 3715 3716 extern __inline __m128i 3717 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3718 _mm_maskz_subs_epi8 (__mmask16 __U, __m128i __A, __m128i __B) 3719 { 3720 return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A, 3721 (__v16qi) __B, 3722 (__v16qi) 3723 _mm_setzero_si128 (), 3724 (__mmask16) __U); 3725 } 3726 3727 extern __inline __m128i 3728 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3729 _mm_mask_subs_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 3730 __m128i __B) 3731 { 3732 return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A, 3733 (__v8hi) __B, 3734 (__v8hi) __W, 3735 (__mmask8) __U); 3736 } 3737 3738 extern __inline __m128i 3739 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3740 _mm_maskz_subs_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 3741 { 3742 return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A, 3743 (__v8hi) __B, 3744 (__v8hi) 3745 _mm_setzero_si128 (), 3746 (__mmask8) __U); 3747 } 3748 3749 extern __inline __m128i 3750 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3751 _mm_mask_subs_epu8 (__m128i __W, __mmask16 __U, __m128i __A, 3752 __m128i __B) 3753 { 3754 return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A, 3755 (__v16qi) __B, 3756 (__v16qi) __W, 3757 (__mmask16) __U); 3758 } 3759 3760 extern __inline __m128i 3761 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3762 _mm_maskz_subs_epu8 (__mmask16 __U, __m128i __A, __m128i __B) 3763 { 3764 return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A, 3765 (__v16qi) __B, 3766 (__v16qi) 3767 _mm_setzero_si128 (), 3768 (__mmask16) __U); 3769 } 3770 3771 extern __inline __m128i 3772 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3773 _mm_mask_subs_epu16 (__m128i __W, __mmask8 __U, __m128i __A, 3774 __m128i __B) 3775 { 3776 return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A, 3777 (__v8hi) __B, 3778 (__v8hi) __W, 3779 (__mmask8) __U); 3780 } 3781 3782 extern __inline __m128i 3783 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3784 _mm_maskz_subs_epu16 (__mmask8 __U, __m128i __A, __m128i __B) 3785 { 3786 return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A, 3787 (__v8hi) __B, 3788 (__v8hi) 3789 _mm_setzero_si128 (), 3790 (__mmask8) __U); 3791 } 3792 3793 extern __inline __m256i 3794 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3795 _mm256_mask_srl_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 3796 __m128i __B) 3797 { 3798 return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A, 3799 (__v8hi) __B, 3800 (__v16hi) __W, 3801 (__mmask16) __U); 3802 } 3803 3804 extern __inline __m256i 3805 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3806 _mm256_maskz_srl_epi16 (__mmask16 __U, __m256i __A, __m128i __B) 3807 { 3808 return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A, 3809 (__v8hi) __B, 3810 (__v16hi) 3811 _mm256_setzero_si256 (), 3812 (__mmask16) __U); 3813 } 3814 3815 extern __inline __m128i 3816 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3817 _mm_mask_srl_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 3818 __m128i __B) 3819 { 3820 return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A, 3821 (__v8hi) __B, 3822 (__v8hi) __W, 3823 (__mmask8) __U); 3824 } 3825 3826 extern __inline __m128i 3827 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3828 _mm_maskz_srl_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 3829 { 3830 return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A, 3831 (__v8hi) __B, 3832 (__v8hi) 3833 _mm_setzero_si128 (), 3834 (__mmask8) __U); 3835 } 3836 3837 extern __inline __m256i 3838 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3839 _mm256_mask_sra_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 3840 __m128i __B) 3841 { 3842 return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A, 3843 (__v8hi) __B, 3844 (__v16hi) __W, 3845 (__mmask16) __U); 3846 } 3847 3848 extern __inline __m256i 3849 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3850 _mm256_maskz_sra_epi16 (__mmask16 __U, __m256i __A, __m128i __B) 3851 { 3852 return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A, 3853 (__v8hi) __B, 3854 (__v16hi) 3855 _mm256_setzero_si256 (), 3856 (__mmask16) __U); 3857 } 3858 3859 extern __inline __m128i 3860 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3861 _mm_mask_sra_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 3862 __m128i __B) 3863 { 3864 return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A, 3865 (__v8hi) __B, 3866 (__v8hi) __W, 3867 (__mmask8) __U); 3868 } 3869 3870 extern __inline __m128i 3871 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3872 _mm_maskz_sra_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 3873 { 3874 return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A, 3875 (__v8hi) __B, 3876 (__v8hi) 3877 _mm_setzero_si128 (), 3878 (__mmask8) __U); 3879 } 3880 3881 extern __inline __m128i 3882 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3883 _mm_maskz_adds_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 3884 { 3885 return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A, 3886 (__v8hi) __B, 3887 (__v8hi) 3888 _mm_setzero_si128 (), 3889 (__mmask8) __U); 3890 } 3891 3892 extern __inline __m128i 3893 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3894 _mm_mask_adds_epu8 (__m128i __W, __mmask16 __U, __m128i __A, 3895 __m128i __B) 3896 { 3897 return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A, 3898 (__v16qi) __B, 3899 (__v16qi) __W, 3900 (__mmask16) __U); 3901 } 3902 3903 extern __inline __m128i 3904 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3905 _mm_maskz_adds_epu8 (__mmask16 __U, __m128i __A, __m128i __B) 3906 { 3907 return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A, 3908 (__v16qi) __B, 3909 (__v16qi) 3910 _mm_setzero_si128 (), 3911 (__mmask16) __U); 3912 } 3913 3914 extern __inline __m128i 3915 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3916 _mm_mask_adds_epu16 (__m128i __W, __mmask8 __U, __m128i __A, 3917 __m128i __B) 3918 { 3919 return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A, 3920 (__v8hi) __B, 3921 (__v8hi) __W, 3922 (__mmask8) __U); 3923 } 3924 3925 extern __inline __m128i 3926 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3927 _mm_maskz_adds_epu16 (__mmask8 __U, __m128i __A, __m128i __B) 3928 { 3929 return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A, 3930 (__v8hi) __B, 3931 (__v8hi) 3932 _mm_setzero_si128 (), 3933 (__mmask8) __U); 3934 } 3935 3936 extern __inline __m128i 3937 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3938 _mm_mask_sub_epi8 (__m128i __W, __mmask16 __U, __m128i __A, 3939 __m128i __B) 3940 { 3941 return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A, 3942 (__v16qi) __B, 3943 (__v16qi) __W, 3944 (__mmask16) __U); 3945 } 3946 3947 extern __inline __m128i 3948 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3949 _mm_maskz_sub_epi8 (__mmask16 __U, __m128i __A, __m128i __B) 3950 { 3951 return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A, 3952 (__v16qi) __B, 3953 (__v16qi) 3954 _mm_setzero_si128 (), 3955 (__mmask16) __U); 3956 } 3957 3958 extern __inline __m128i 3959 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3960 _mm_mask_sub_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 3961 __m128i __B) 3962 { 3963 return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A, 3964 (__v8hi) __B, 3965 (__v8hi) __W, 3966 (__mmask8) __U); 3967 } 3968 3969 extern __inline __m128i 3970 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3971 _mm_maskz_sub_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 3972 { 3973 return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A, 3974 (__v8hi) __B, 3975 (__v8hi) 3976 _mm_setzero_si128 (), 3977 (__mmask8) __U); 3978 } 3979 3980 extern __inline __m128i 3981 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3982 _mm_mask_adds_epi8 (__m128i __W, __mmask16 __U, __m128i __A, 3983 __m128i __B) 3984 { 3985 return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A, 3986 (__v16qi) __B, 3987 (__v16qi) __W, 3988 (__mmask16) __U); 3989 } 3990 3991 extern __inline __m128i 3992 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3993 _mm_maskz_adds_epi8 (__mmask16 __U, __m128i __A, __m128i __B) 3994 { 3995 return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A, 3996 (__v16qi) __B, 3997 (__v16qi) 3998 _mm_setzero_si128 (), 3999 (__mmask16) __U); 4000 } 4001 4002 extern __inline __m128i 4003 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4004 _mm_cvtepi16_epi8 (__m128i __A) 4005 { 4006 4007 return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A, 4008 (__v16qi)_mm_undefined_si128(), 4009 (__mmask8) -1); 4010 } 4011 4012 extern __inline __m128i 4013 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4014 _mm_mask_cvtepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) 4015 { 4016 return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A, 4017 (__v16qi) __O, __M); 4018 } 4019 4020 extern __inline __m128i 4021 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4022 _mm_maskz_cvtepi16_epi8 (__mmask8 __M, __m128i __A) 4023 { 4024 return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A, 4025 (__v16qi) 4026 _mm_setzero_si128 (), 4027 __M); 4028 } 4029 4030 extern __inline __m256i 4031 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4032 _mm256_srav_epi16 (__m256i __A, __m256i __B) 4033 { 4034 return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A, 4035 (__v16hi) __B, 4036 (__v16hi) 4037 _mm256_setzero_si256 (), 4038 (__mmask16) -1); 4039 } 4040 4041 extern __inline __m256i 4042 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4043 _mm256_mask_srav_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 4044 __m256i __B) 4045 { 4046 return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A, 4047 (__v16hi) __B, 4048 (__v16hi) __W, 4049 (__mmask16) __U); 4050 } 4051 4052 extern __inline __m256i 4053 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4054 _mm256_maskz_srav_epi16 (__mmask16 __U, __m256i __A, __m256i __B) 4055 { 4056 return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A, 4057 (__v16hi) __B, 4058 (__v16hi) 4059 _mm256_setzero_si256 (), 4060 (__mmask16) __U); 4061 } 4062 4063 extern __inline __m128i 4064 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4065 _mm_srav_epi16 (__m128i __A, __m128i __B) 4066 { 4067 return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A, 4068 (__v8hi) __B, 4069 (__v8hi) 4070 _mm_setzero_si128 (), 4071 (__mmask8) -1); 4072 } 4073 4074 extern __inline __m128i 4075 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4076 _mm_mask_srav_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 4077 __m128i __B) 4078 { 4079 return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A, 4080 (__v8hi) __B, 4081 (__v8hi) __W, 4082 (__mmask8) __U); 4083 } 4084 4085 extern __inline __m128i 4086 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4087 _mm_maskz_srav_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 4088 { 4089 return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A, 4090 (__v8hi) __B, 4091 (__v8hi) 4092 _mm_setzero_si128 (), 4093 (__mmask8) __U); 4094 } 4095 4096 extern __inline __m256i 4097 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4098 _mm256_srlv_epi16 (__m256i __A, __m256i __B) 4099 { 4100 return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A, 4101 (__v16hi) __B, 4102 (__v16hi) 4103 _mm256_setzero_si256 (), 4104 (__mmask16) -1); 4105 } 4106 4107 extern __inline __m256i 4108 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4109 _mm256_mask_srlv_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 4110 __m256i __B) 4111 { 4112 return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A, 4113 (__v16hi) __B, 4114 (__v16hi) __W, 4115 (__mmask16) __U); 4116 } 4117 4118 extern __inline __m256i 4119 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4120 _mm256_maskz_srlv_epi16 (__mmask16 __U, __m256i __A, __m256i __B) 4121 { 4122 return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A, 4123 (__v16hi) __B, 4124 (__v16hi) 4125 _mm256_setzero_si256 (), 4126 (__mmask16) __U); 4127 } 4128 4129 extern __inline __m128i 4130 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4131 _mm_srlv_epi16 (__m128i __A, __m128i __B) 4132 { 4133 return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A, 4134 (__v8hi) __B, 4135 (__v8hi) 4136 _mm_setzero_si128 (), 4137 (__mmask8) -1); 4138 } 4139 4140 extern __inline __m128i 4141 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4142 _mm_mask_srlv_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 4143 __m128i __B) 4144 { 4145 return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A, 4146 (__v8hi) __B, 4147 (__v8hi) __W, 4148 (__mmask8) __U); 4149 } 4150 4151 extern __inline __m128i 4152 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4153 _mm_maskz_srlv_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 4154 { 4155 return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A, 4156 (__v8hi) __B, 4157 (__v8hi) 4158 _mm_setzero_si128 (), 4159 (__mmask8) __U); 4160 } 4161 4162 extern __inline __m256i 4163 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4164 _mm256_sllv_epi16 (__m256i __A, __m256i __B) 4165 { 4166 return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A, 4167 (__v16hi) __B, 4168 (__v16hi) 4169 _mm256_setzero_si256 (), 4170 (__mmask16) -1); 4171 } 4172 4173 extern __inline __m256i 4174 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4175 _mm256_mask_sllv_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 4176 __m256i __B) 4177 { 4178 return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A, 4179 (__v16hi) __B, 4180 (__v16hi) __W, 4181 (__mmask16) __U); 4182 } 4183 4184 extern __inline __m256i 4185 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4186 _mm256_maskz_sllv_epi16 (__mmask16 __U, __m256i __A, __m256i __B) 4187 { 4188 return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A, 4189 (__v16hi) __B, 4190 (__v16hi) 4191 _mm256_setzero_si256 (), 4192 (__mmask16) __U); 4193 } 4194 4195 extern __inline __m128i 4196 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4197 _mm_sllv_epi16 (__m128i __A, __m128i __B) 4198 { 4199 return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A, 4200 (__v8hi) __B, 4201 (__v8hi) 4202 _mm_setzero_si128 (), 4203 (__mmask8) -1); 4204 } 4205 4206 extern __inline __m128i 4207 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4208 _mm_mask_sllv_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 4209 __m128i __B) 4210 { 4211 return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A, 4212 (__v8hi) __B, 4213 (__v8hi) __W, 4214 (__mmask8) __U); 4215 } 4216 4217 extern __inline __m128i 4218 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4219 _mm_maskz_sllv_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 4220 { 4221 return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A, 4222 (__v8hi) __B, 4223 (__v8hi) 4224 _mm_setzero_si128 (), 4225 (__mmask8) __U); 4226 } 4227 4228 extern __inline __m128i 4229 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4230 _mm_mask_sll_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 4231 __m128i __B) 4232 { 4233 return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A, 4234 (__v8hi) __B, 4235 (__v8hi) __W, 4236 (__mmask8) __U); 4237 } 4238 4239 extern __inline __m128i 4240 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4241 _mm_maskz_sll_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 4242 { 4243 return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A, 4244 (__v8hi) __B, 4245 (__v8hi) 4246 _mm_setzero_si128 (), 4247 (__mmask8) __U); 4248 } 4249 4250 extern __inline __m256i 4251 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4252 _mm256_mask_sll_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 4253 __m128i __B) 4254 { 4255 return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A, 4256 (__v8hi) __B, 4257 (__v16hi) __W, 4258 (__mmask16) __U); 4259 } 4260 4261 extern __inline __m256i 4262 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4263 _mm256_maskz_sll_epi16 (__mmask16 __U, __m256i __A, __m128i __B) 4264 { 4265 return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A, 4266 (__v8hi) __B, 4267 (__v16hi) 4268 _mm256_setzero_si256 (), 4269 (__mmask16) __U); 4270 } 4271 4272 extern __inline __m256i 4273 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4274 _mm256_maskz_packus_epi32 (__mmask16 __M, __m256i __A, __m256i __B) 4275 { 4276 return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A, 4277 (__v8si) __B, 4278 (__v16hi) 4279 _mm256_setzero_si256 (), 4280 __M); 4281 } 4282 4283 extern __inline __m256i 4284 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4285 _mm256_mask_packus_epi32 (__m256i __W, __mmask16 __M, __m256i __A, 4286 __m256i __B) 4287 { 4288 return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A, 4289 (__v8si) __B, 4290 (__v16hi) __W, 4291 __M); 4292 } 4293 4294 extern __inline __m128i 4295 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4296 _mm_maskz_packus_epi32 (__mmask8 __M, __m128i __A, __m128i __B) 4297 { 4298 return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A, 4299 (__v4si) __B, 4300 (__v8hi) 4301 _mm_setzero_si128 (), 4302 __M); 4303 } 4304 4305 extern __inline __m128i 4306 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4307 _mm_mask_packus_epi32 (__m128i __W, __mmask16 __M, __m128i __A, 4308 __m128i __B) 4309 { 4310 return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A, 4311 (__v4si) __B, 4312 (__v8hi) __W, __M); 4313 } 4314 4315 extern __inline __m256i 4316 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4317 _mm256_maskz_packs_epi32 (__mmask16 __M, __m256i __A, __m256i __B) 4318 { 4319 return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A, 4320 (__v8si) __B, 4321 (__v16hi) 4322 _mm256_setzero_si256 (), 4323 __M); 4324 } 4325 4326 extern __inline __m256i 4327 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4328 _mm256_mask_packs_epi32 (__m256i __W, __mmask16 __M, __m256i __A, 4329 __m256i __B) 4330 { 4331 return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A, 4332 (__v8si) __B, 4333 (__v16hi) __W, 4334 __M); 4335 } 4336 4337 extern __inline __m128i 4338 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4339 _mm_maskz_packs_epi32 (__mmask8 __M, __m128i __A, __m128i __B) 4340 { 4341 return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A, 4342 (__v4si) __B, 4343 (__v8hi) 4344 _mm_setzero_si128 (), 4345 __M); 4346 } 4347 4348 extern __inline __m128i 4349 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4350 _mm_mask_packs_epi32 (__m128i __W, __mmask16 __M, __m128i __A, 4351 __m128i __B) 4352 { 4353 return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A, 4354 (__v4si) __B, 4355 (__v8hi) __W, __M); 4356 } 4357 4358 extern __inline __mmask16 4359 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4360 _mm_mask_cmpneq_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y) 4361 { 4362 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X, 4363 (__v16qi) __Y, 4, 4364 (__mmask16) __M); 4365 } 4366 4367 extern __inline __mmask16 4368 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4369 _mm_mask_cmplt_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y) 4370 { 4371 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X, 4372 (__v16qi) __Y, 1, 4373 (__mmask16) __M); 4374 } 4375 4376 extern __inline __mmask16 4377 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4378 _mm_mask_cmpge_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y) 4379 { 4380 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X, 4381 (__v16qi) __Y, 5, 4382 (__mmask16) __M); 4383 } 4384 4385 extern __inline __mmask16 4386 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4387 _mm_mask_cmple_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y) 4388 { 4389 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X, 4390 (__v16qi) __Y, 2, 4391 (__mmask16) __M); 4392 } 4393 4394 extern __inline __mmask8 4395 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4396 _mm_mask_cmpneq_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y) 4397 { 4398 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X, 4399 (__v8hi) __Y, 4, 4400 (__mmask8) __M); 4401 } 4402 4403 extern __inline __mmask8 4404 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4405 _mm_mask_cmplt_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y) 4406 { 4407 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X, 4408 (__v8hi) __Y, 1, 4409 (__mmask8) __M); 4410 } 4411 4412 extern __inline __mmask8 4413 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4414 _mm_mask_cmpge_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y) 4415 { 4416 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X, 4417 (__v8hi) __Y, 5, 4418 (__mmask8) __M); 4419 } 4420 4421 extern __inline __mmask8 4422 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4423 _mm_mask_cmple_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y) 4424 { 4425 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X, 4426 (__v8hi) __Y, 2, 4427 (__mmask8) __M); 4428 } 4429 4430 extern __inline __mmask16 4431 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4432 _mm_mask_cmpneq_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y) 4433 { 4434 return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X, 4435 (__v16qi) __Y, 4, 4436 (__mmask16) __M); 4437 } 4438 4439 extern __inline __mmask16 4440 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4441 _mm_mask_cmplt_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y) 4442 { 4443 return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X, 4444 (__v16qi) __Y, 1, 4445 (__mmask16) __M); 4446 } 4447 4448 extern __inline __mmask16 4449 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4450 _mm_mask_cmpge_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y) 4451 { 4452 return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X, 4453 (__v16qi) __Y, 5, 4454 (__mmask16) __M); 4455 } 4456 4457 extern __inline __mmask16 4458 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4459 _mm_mask_cmple_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y) 4460 { 4461 return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X, 4462 (__v16qi) __Y, 2, 4463 (__mmask16) __M); 4464 } 4465 4466 extern __inline __mmask8 4467 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4468 _mm_mask_cmpneq_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y) 4469 { 4470 return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X, 4471 (__v8hi) __Y, 4, 4472 (__mmask8) __M); 4473 } 4474 4475 extern __inline __mmask8 4476 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4477 _mm_mask_cmplt_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y) 4478 { 4479 return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X, 4480 (__v8hi) __Y, 1, 4481 (__mmask8) __M); 4482 } 4483 4484 extern __inline __mmask8 4485 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4486 _mm_mask_cmpge_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y) 4487 { 4488 return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X, 4489 (__v8hi) __Y, 5, 4490 (__mmask8) __M); 4491 } 4492 4493 extern __inline __mmask8 4494 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4495 _mm_mask_cmple_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y) 4496 { 4497 return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X, 4498 (__v8hi) __Y, 2, 4499 (__mmask8) __M); 4500 } 4501 4502 extern __inline __mmask8 4503 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4504 _mm256_mask_cmpneq_epu8_mask (__mmask8 __M, __m256i __X, __m256i __Y) 4505 { 4506 return (__mmask8) __builtin_ia32_ucmpb256_mask ((__v32qi) __X, 4507 (__v32qi) __Y, 4, 4508 (__mmask8) __M); 4509 } 4510 4511 extern __inline __mmask8 4512 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4513 _mm256_mask_cmplt_epu8_mask (__mmask8 __M, __m256i __X, __m256i __Y) 4514 { 4515 return (__mmask8) __builtin_ia32_ucmpb256_mask ((__v32qi) __X, 4516 (__v32qi) __Y, 1, 4517 (__mmask8) __M); 4518 } 4519 4520 extern __inline __mmask8 4521 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4522 _mm256_mask_cmpge_epu8_mask (__mmask8 __M, __m256i __X, __m256i __Y) 4523 { 4524 return (__mmask8) __builtin_ia32_ucmpb256_mask ((__v32qi) __X, 4525 (__v32qi) __Y, 5, 4526 (__mmask8) __M); 4527 } 4528 4529 extern __inline __mmask8 4530 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4531 _mm256_mask_cmple_epu8_mask (__mmask8 __M, __m256i __X, __m256i __Y) 4532 { 4533 return (__mmask8) __builtin_ia32_ucmpb256_mask ((__v32qi) __X, 4534 (__v32qi) __Y, 2, 4535 (__mmask8) __M); 4536 } 4537 4538 extern __inline __mmask8 4539 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4540 _mm256_mask_cmpneq_epu16_mask (__mmask8 __M, __m256i __X, __m256i __Y) 4541 { 4542 return (__mmask8) __builtin_ia32_ucmpw256_mask ((__v16hi) __X, 4543 (__v16hi) __Y, 4, 4544 (__mmask8) __M); 4545 } 4546 4547 extern __inline __mmask8 4548 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4549 _mm256_mask_cmplt_epu16_mask (__mmask8 __M, __m256i __X, __m256i __Y) 4550 { 4551 return (__mmask8) __builtin_ia32_ucmpw256_mask ((__v16hi) __X, 4552 (__v16hi) __Y, 1, 4553 (__mmask8) __M); 4554 } 4555 4556 extern __inline __mmask8 4557 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4558 _mm256_mask_cmpge_epu16_mask (__mmask8 __M, __m256i __X, __m256i __Y) 4559 { 4560 return (__mmask8) __builtin_ia32_ucmpw256_mask ((__v16hi) __X, 4561 (__v16hi) __Y, 5, 4562 (__mmask8) __M); 4563 } 4564 4565 extern __inline __mmask8 4566 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4567 _mm256_mask_cmple_epu16_mask (__mmask8 __M, __m256i __X, __m256i __Y) 4568 { 4569 return (__mmask8) __builtin_ia32_ucmpw256_mask ((__v16hi) __X, 4570 (__v16hi) __Y, 2, 4571 (__mmask8) __M); 4572 } 4573 4574 extern __inline __mmask8 4575 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4576 _mm256_mask_cmpneq_epi8_mask (__mmask8 __M, __m256i __X, __m256i __Y) 4577 { 4578 return (__mmask8) __builtin_ia32_cmpb256_mask ((__v32qi) __X, 4579 (__v32qi) __Y, 4, 4580 (__mmask8) __M); 4581 } 4582 4583 extern __inline __mmask8 4584 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4585 _mm256_mask_cmplt_epi8_mask (__mmask8 __M, __m256i __X, __m256i __Y) 4586 { 4587 return (__mmask8) __builtin_ia32_cmpb256_mask ((__v32qi) __X, 4588 (__v32qi) __Y, 1, 4589 (__mmask8) __M); 4590 } 4591 4592 extern __inline __mmask8 4593 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4594 _mm256_mask_cmpge_epi8_mask (__mmask8 __M, __m256i __X, __m256i __Y) 4595 { 4596 return (__mmask8) __builtin_ia32_cmpb256_mask ((__v32qi) __X, 4597 (__v32qi) __Y, 5, 4598 (__mmask8) __M); 4599 } 4600 4601 extern __inline __mmask8 4602 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4603 _mm256_mask_cmple_epi8_mask (__mmask8 __M, __m256i __X, __m256i __Y) 4604 { 4605 return (__mmask8) __builtin_ia32_cmpb256_mask ((__v32qi) __X, 4606 (__v32qi) __Y, 2, 4607 (__mmask8) __M); 4608 } 4609 4610 extern __inline __mmask8 4611 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4612 _mm256_mask_cmpneq_epi16_mask (__mmask8 __M, __m256i __X, __m256i __Y) 4613 { 4614 return (__mmask8) __builtin_ia32_cmpw256_mask ((__v16hi) __X, 4615 (__v16hi) __Y, 4, 4616 (__mmask8) __M); 4617 } 4618 4619 extern __inline __mmask8 4620 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4621 _mm256_mask_cmplt_epi16_mask (__mmask8 __M, __m256i __X, __m256i __Y) 4622 { 4623 return (__mmask8) __builtin_ia32_cmpw256_mask ((__v16hi) __X, 4624 (__v16hi) __Y, 1, 4625 (__mmask8) __M); 4626 } 4627 4628 extern __inline __mmask8 4629 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4630 _mm256_mask_cmpge_epi16_mask (__mmask8 __M, __m256i __X, __m256i __Y) 4631 { 4632 return (__mmask8) __builtin_ia32_cmpw256_mask ((__v16hi) __X, 4633 (__v16hi) __Y, 5, 4634 (__mmask8) __M); 4635 } 4636 4637 extern __inline __mmask8 4638 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 4639 _mm256_mask_cmple_epi16_mask (__mmask8 __M, __m256i __X, __m256i __Y) 4640 { 4641 return (__mmask8) __builtin_ia32_cmpw256_mask ((__v16hi) __X, 4642 (__v16hi) __Y, 2, 4643 (__mmask8) __M); 4644 } 4645 4646 #ifdef __DISABLE_AVX512VLBW__ 4647 #undef __DISABLE_AVX512VLBW__ 4648 #pragma GCC pop_options 4649 #endif /* __DISABLE_AVX512VLBW__ */ 4650 4651 #endif /* _AVX512VLBWINTRIN_H_INCLUDED */ 4652