avx512bwintrin.h revision 288943
1/*===------------- avx512bwintrin.h - AVX512BW intrinsics ------------------=== 2 * 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a copy 5 * of this software and associated documentation files (the "Software"), to deal 6 * in the Software without restriction, including without limitation the rights 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 * copies of the Software, and to permit persons to whom the Software is 9 * furnished to do so, subject to the following conditions: 10 * 11 * The above copyright notice and this permission notice shall be included in 12 * all copies or substantial portions of the Software. 13 * 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 20 * THE SOFTWARE. 21 * 22 *===-----------------------------------------------------------------------=== 23 */ 24#ifndef __IMMINTRIN_H 25#error "Never use <avx512bwintrin.h> directly; include <immintrin.h> instead." 26#endif 27 28#ifndef __AVX512BWINTRIN_H 29#define __AVX512BWINTRIN_H 30 31typedef unsigned int __mmask32; 32typedef unsigned long long __mmask64; 33typedef char __v64qi __attribute__ ((__vector_size__ (64))); 34typedef short __v32hi __attribute__ ((__vector_size__ (64))); 35 36/* Define the default attributes for the functions in this file. */ 37#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__)) 38 39static __inline __v64qi __DEFAULT_FN_ATTRS 40_mm512_setzero_qi (void) { 41 return (__v64qi){ 0, 0, 0, 0, 0, 0, 0, 0, 42 0, 0, 0, 0, 0, 0, 0, 0, 43 0, 0, 0, 0, 0, 0, 0, 0, 44 0, 0, 0, 0, 0, 0, 0, 0, 45 0, 0, 0, 0, 0, 0, 0, 0, 46 0, 0, 0, 0, 0, 0, 0, 0, 47 0, 0, 0, 0, 0, 0, 0, 0, 48 0, 0, 0, 0, 0, 0, 0, 0 }; 49} 50 51static __inline __v32hi __DEFAULT_FN_ATTRS 52_mm512_setzero_hi (void) { 53 return (__v32hi){ 0, 0, 0, 0, 0, 0, 0, 0, 54 0, 0, 0, 0, 0, 0, 0, 0, 55 0, 0, 0, 0, 0, 0, 0, 0, 56 0, 0, 0, 0, 0, 0, 0, 0 }; 57} 58 59/* Integer compare */ 60 61static __inline__ __mmask64 __DEFAULT_FN_ATTRS 62_mm512_cmpeq_epi8_mask(__m512i __a, __m512i __b) { 63 return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b, 64 (__mmask64)-1); 65} 66 67static __inline__ __mmask64 __DEFAULT_FN_ATTRS 68_mm512_mask_cmpeq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 69 return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b, 70 __u); 71} 72 73static __inline__ __mmask64 __DEFAULT_FN_ATTRS 74_mm512_cmpeq_epu8_mask(__m512i __a, __m512i __b) { 75 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0, 76 (__mmask64)-1); 77} 78 79static __inline__ __mmask64 __DEFAULT_FN_ATTRS 80_mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 81 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0, 82 __u); 83} 84 85static __inline__ __mmask32 __DEFAULT_FN_ATTRS 86_mm512_cmpeq_epi16_mask(__m512i __a, __m512i __b) { 87 return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b, 88 (__mmask32)-1); 89} 90 91static __inline__ __mmask32 __DEFAULT_FN_ATTRS 92_mm512_mask_cmpeq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 93 return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b, 94 __u); 95} 96 97static __inline__ __mmask32 __DEFAULT_FN_ATTRS 98_mm512_cmpeq_epu16_mask(__m512i __a, __m512i __b) { 99 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0, 100 (__mmask32)-1); 101} 102 103static __inline__ __mmask32 __DEFAULT_FN_ATTRS 104_mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 105 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0, 106 __u); 107} 108 109static __inline__ __mmask64 __DEFAULT_FN_ATTRS 110_mm512_cmpge_epi8_mask(__m512i __a, __m512i __b) { 111 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5, 112 (__mmask64)-1); 113} 114 115static __inline__ __mmask64 __DEFAULT_FN_ATTRS 116_mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 117 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5, 118 __u); 119} 120 121static __inline__ __mmask64 __DEFAULT_FN_ATTRS 122_mm512_cmpge_epu8_mask(__m512i __a, __m512i __b) { 123 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5, 124 (__mmask64)-1); 125} 126 127static __inline__ __mmask64 __DEFAULT_FN_ATTRS 128_mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 129 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5, 130 __u); 131} 132 133static __inline__ __mmask32 __DEFAULT_FN_ATTRS 134_mm512_cmpge_epi16_mask(__m512i __a, __m512i __b) { 135 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5, 136 (__mmask32)-1); 137} 138 139static __inline__ __mmask32 __DEFAULT_FN_ATTRS 140_mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 141 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5, 142 __u); 143} 144 145static __inline__ __mmask32 __DEFAULT_FN_ATTRS 146_mm512_cmpge_epu16_mask(__m512i __a, __m512i __b) { 147 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5, 148 (__mmask32)-1); 149} 150 151static __inline__ __mmask32 __DEFAULT_FN_ATTRS 152_mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 153 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5, 154 __u); 155} 156 157static __inline__ __mmask64 __DEFAULT_FN_ATTRS 158_mm512_cmpgt_epi8_mask(__m512i __a, __m512i __b) { 159 return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b, 160 (__mmask64)-1); 161} 162 163static __inline__ __mmask64 __DEFAULT_FN_ATTRS 164_mm512_mask_cmpgt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 165 return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b, 166 __u); 167} 168 169static __inline__ __mmask64 __DEFAULT_FN_ATTRS 170_mm512_cmpgt_epu8_mask(__m512i __a, __m512i __b) { 171 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6, 172 (__mmask64)-1); 173} 174 175static __inline__ __mmask64 __DEFAULT_FN_ATTRS 176_mm512_mask_cmpgt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 177 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6, 178 __u); 179} 180 181static __inline__ __mmask32 __DEFAULT_FN_ATTRS 182_mm512_cmpgt_epi16_mask(__m512i __a, __m512i __b) { 183 return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b, 184 (__mmask32)-1); 185} 186 187static __inline__ __mmask32 __DEFAULT_FN_ATTRS 188_mm512_mask_cmpgt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 189 return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b, 190 __u); 191} 192 193static __inline__ __mmask32 __DEFAULT_FN_ATTRS 194_mm512_cmpgt_epu16_mask(__m512i __a, __m512i __b) { 195 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6, 196 (__mmask32)-1); 197} 198 199static __inline__ __mmask32 __DEFAULT_FN_ATTRS 200_mm512_mask_cmpgt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 201 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6, 202 __u); 203} 204 205static __inline__ __mmask64 __DEFAULT_FN_ATTRS 206_mm512_cmple_epi8_mask(__m512i __a, __m512i __b) { 207 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2, 208 (__mmask64)-1); 209} 210 211static __inline__ __mmask64 __DEFAULT_FN_ATTRS 212_mm512_mask_cmple_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 213 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2, 214 __u); 215} 216 217static __inline__ __mmask64 __DEFAULT_FN_ATTRS 218_mm512_cmple_epu8_mask(__m512i __a, __m512i __b) { 219 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2, 220 (__mmask64)-1); 221} 222 223static __inline__ __mmask64 __DEFAULT_FN_ATTRS 224_mm512_mask_cmple_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 225 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2, 226 __u); 227} 228 229static __inline__ __mmask32 __DEFAULT_FN_ATTRS 230_mm512_cmple_epi16_mask(__m512i __a, __m512i __b) { 231 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2, 232 (__mmask32)-1); 233} 234 235static __inline__ __mmask32 __DEFAULT_FN_ATTRS 236_mm512_mask_cmple_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 237 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2, 238 __u); 239} 240 241static __inline__ __mmask32 __DEFAULT_FN_ATTRS 242_mm512_cmple_epu16_mask(__m512i __a, __m512i __b) { 243 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2, 244 (__mmask32)-1); 245} 246 247static __inline__ __mmask32 __DEFAULT_FN_ATTRS 248_mm512_mask_cmple_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 249 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2, 250 __u); 251} 252 253static __inline__ __mmask64 __DEFAULT_FN_ATTRS 254_mm512_cmplt_epi8_mask(__m512i __a, __m512i __b) { 255 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1, 256 (__mmask64)-1); 257} 258 259static __inline__ __mmask64 __DEFAULT_FN_ATTRS 260_mm512_mask_cmplt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 261 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1, 262 __u); 263} 264 265static __inline__ __mmask64 __DEFAULT_FN_ATTRS 266_mm512_cmplt_epu8_mask(__m512i __a, __m512i __b) { 267 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1, 268 (__mmask64)-1); 269} 270 271static __inline__ __mmask64 __DEFAULT_FN_ATTRS 272_mm512_mask_cmplt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 273 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1, 274 __u); 275} 276 277static __inline__ __mmask32 __DEFAULT_FN_ATTRS 278_mm512_cmplt_epi16_mask(__m512i __a, __m512i __b) { 279 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1, 280 (__mmask32)-1); 281} 282 283static __inline__ __mmask32 __DEFAULT_FN_ATTRS 284_mm512_mask_cmplt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 285 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1, 286 __u); 287} 288 289static __inline__ __mmask32 __DEFAULT_FN_ATTRS 290_mm512_cmplt_epu16_mask(__m512i __a, __m512i __b) { 291 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1, 292 (__mmask32)-1); 293} 294 295static __inline__ __mmask32 __DEFAULT_FN_ATTRS 296_mm512_mask_cmplt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 297 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1, 298 __u); 299} 300 301static __inline__ __mmask64 __DEFAULT_FN_ATTRS 302_mm512_cmpneq_epi8_mask(__m512i __a, __m512i __b) { 303 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4, 304 (__mmask64)-1); 305} 306 307static __inline__ __mmask64 __DEFAULT_FN_ATTRS 308_mm512_mask_cmpneq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 309 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4, 310 __u); 311} 312 313static __inline__ __mmask64 __DEFAULT_FN_ATTRS 314_mm512_cmpneq_epu8_mask(__m512i __a, __m512i __b) { 315 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4, 316 (__mmask64)-1); 317} 318 319static __inline__ __mmask64 __DEFAULT_FN_ATTRS 320_mm512_mask_cmpneq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 321 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4, 322 __u); 323} 324 325static __inline__ __mmask32 __DEFAULT_FN_ATTRS 326_mm512_cmpneq_epi16_mask(__m512i __a, __m512i __b) { 327 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4, 328 (__mmask32)-1); 329} 330 331static __inline__ __mmask32 __DEFAULT_FN_ATTRS 332_mm512_mask_cmpneq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 333 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4, 334 __u); 335} 336 337static __inline__ __mmask32 __DEFAULT_FN_ATTRS 338_mm512_cmpneq_epu16_mask(__m512i __a, __m512i __b) { 339 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4, 340 (__mmask32)-1); 341} 342 343static __inline__ __mmask32 __DEFAULT_FN_ATTRS 344_mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 345 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4, 346 __u); 347} 348 349static __inline__ __m512i __DEFAULT_FN_ATTRS 350_mm512_add_epi8 (__m512i __A, __m512i __B) { 351 return (__m512i) ((__v64qi) __A + (__v64qi) __B); 352} 353 354static __inline__ __m512i __DEFAULT_FN_ATTRS 355_mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { 356 return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A, 357 (__v64qi) __B, 358 (__v64qi) __W, 359 (__mmask64) __U); 360} 361 362static __inline__ __m512i __DEFAULT_FN_ATTRS 363_mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B) { 364 return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A, 365 (__v64qi) __B, 366 (__v64qi) 367 _mm512_setzero_qi (), 368 (__mmask64) __U); 369} 370 371static __inline__ __m512i __DEFAULT_FN_ATTRS 372_mm512_sub_epi8 (__m512i __A, __m512i __B) { 373 return (__m512i) ((__v64qi) __A - (__v64qi) __B); 374} 375 376static __inline__ __m512i __DEFAULT_FN_ATTRS 377_mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { 378 return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A, 379 (__v64qi) __B, 380 (__v64qi) __W, 381 (__mmask64) __U); 382} 383 384static __inline__ __m512i __DEFAULT_FN_ATTRS 385_mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B) { 386 return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A, 387 (__v64qi) __B, 388 (__v64qi) 389 _mm512_setzero_qi (), 390 (__mmask64) __U); 391} 392 393static __inline__ __m512i __DEFAULT_FN_ATTRS 394_mm512_add_epi16 (__m512i __A, __m512i __B) { 395 return (__m512i) ((__v32hi) __A + (__v32hi) __B); 396} 397 398static __inline__ __m512i __DEFAULT_FN_ATTRS 399_mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 400 return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A, 401 (__v32hi) __B, 402 (__v32hi) __W, 403 (__mmask32) __U); 404} 405 406static __inline__ __m512i __DEFAULT_FN_ATTRS 407_mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B) { 408 return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A, 409 (__v32hi) __B, 410 (__v32hi) 411 _mm512_setzero_hi (), 412 (__mmask32) __U); 413} 414 415static __inline__ __m512i __DEFAULT_FN_ATTRS 416_mm512_sub_epi16 (__m512i __A, __m512i __B) { 417 return (__m512i) ((__v32hi) __A - (__v32hi) __B); 418} 419 420static __inline__ __m512i __DEFAULT_FN_ATTRS 421_mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 422 return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A, 423 (__v32hi) __B, 424 (__v32hi) __W, 425 (__mmask32) __U); 426} 427 428static __inline__ __m512i __DEFAULT_FN_ATTRS 429_mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B) { 430 return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A, 431 (__v32hi) __B, 432 (__v32hi) 433 _mm512_setzero_hi (), 434 (__mmask32) __U); 435} 436 437static __inline__ __m512i __DEFAULT_FN_ATTRS 438_mm512_mullo_epi16 (__m512i __A, __m512i __B) { 439 return (__m512i) ((__v32hi) __A * (__v32hi) __B); 440} 441 442static __inline__ __m512i __DEFAULT_FN_ATTRS 443_mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 444 return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A, 445 (__v32hi) __B, 446 (__v32hi) __W, 447 (__mmask32) __U); 448} 449 450static __inline__ __m512i __DEFAULT_FN_ATTRS 451_mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) { 452 return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A, 453 (__v32hi) __B, 454 (__v32hi) 455 _mm512_setzero_hi (), 456 (__mmask32) __U); 457} 458 459static __inline__ __m512i __DEFAULT_FN_ATTRS 460_mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W) 461{ 462 return (__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) __A, 463 (__v64qi) __W, 464 (__mmask64) __U); 465} 466 467static __inline__ __m512i __DEFAULT_FN_ATTRS 468_mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W) 469{ 470 return (__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) __A, 471 (__v32hi) __W, 472 (__mmask32) __U); 473} 474 475static __inline__ __m512i __DEFAULT_FN_ATTRS 476_mm512_abs_epi8 (__m512i __A) 477{ 478 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A, 479 (__v64qi) _mm512_setzero_qi (), 480 (__mmask64) -1); 481} 482 483static __inline__ __m512i __DEFAULT_FN_ATTRS 484_mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A) 485{ 486 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A, 487 (__v64qi) __W, 488 (__mmask64) __U); 489} 490 491static __inline__ __m512i __DEFAULT_FN_ATTRS 492_mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A) 493{ 494 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A, 495 (__v64qi) _mm512_setzero_qi (), 496 (__mmask64) __U); 497} 498 499static __inline__ __m512i __DEFAULT_FN_ATTRS 500_mm512_abs_epi16 (__m512i __A) 501{ 502 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A, 503 (__v32hi) _mm512_setzero_hi (), 504 (__mmask32) -1); 505} 506 507static __inline__ __m512i __DEFAULT_FN_ATTRS 508_mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A) 509{ 510 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A, 511 (__v32hi) __W, 512 (__mmask32) __U); 513} 514 515static __inline__ __m512i __DEFAULT_FN_ATTRS 516_mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A) 517{ 518 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A, 519 (__v32hi) _mm512_setzero_hi (), 520 (__mmask32) __U); 521} 522 523static __inline__ __m512i __DEFAULT_FN_ATTRS 524_mm512_packs_epi32 (__m512i __A, __m512i __B) 525{ 526 return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A, 527 (__v16si) __B, 528 (__v32hi) _mm512_setzero_hi (), 529 (__mmask32) -1); 530} 531 532static __inline__ __m512i __DEFAULT_FN_ATTRS 533_mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B) 534{ 535 return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A, 536 (__v16si) __B, 537 (__v32hi) _mm512_setzero_hi(), 538 __M); 539} 540 541static __inline__ __m512i __DEFAULT_FN_ATTRS 542_mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A, 543 __m512i __B) 544{ 545 return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A, 546 (__v16si) __B, 547 (__v32hi) __W, 548 __M); 549} 550 551static __inline__ __m512i __DEFAULT_FN_ATTRS 552_mm512_packs_epi16 (__m512i __A, __m512i __B) 553{ 554 return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A, 555 (__v32hi) __B, 556 (__v64qi) _mm512_setzero_qi (), 557 (__mmask64) -1); 558} 559 560static __inline__ __m512i __DEFAULT_FN_ATTRS 561_mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A, 562 __m512i __B) 563{ 564 return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A, 565 (__v32hi) __B, 566 (__v64qi) __W, 567 (__mmask64) __M); 568} 569 570static __inline__ __m512i __DEFAULT_FN_ATTRS 571_mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B) 572{ 573 return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A, 574 (__v32hi) __B, 575 (__v64qi) _mm512_setzero_qi(), 576 __M); 577} 578 579static __inline__ __m512i __DEFAULT_FN_ATTRS 580_mm512_packus_epi32 (__m512i __A, __m512i __B) 581{ 582 return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A, 583 (__v16si) __B, 584 (__v32hi) _mm512_setzero_hi (), 585 (__mmask32) -1); 586} 587 588static __inline__ __m512i __DEFAULT_FN_ATTRS 589_mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B) 590{ 591 return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A, 592 (__v16si) __B, 593 (__v32hi) _mm512_setzero_hi(), 594 __M); 595} 596 597static __inline__ __m512i __DEFAULT_FN_ATTRS 598_mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A, 599 __m512i __B) 600{ 601 return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A, 602 (__v16si) __B, 603 (__v32hi) __W, 604 __M); 605} 606 607static __inline__ __m512i __DEFAULT_FN_ATTRS 608_mm512_packus_epi16 (__m512i __A, __m512i __B) 609{ 610 return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A, 611 (__v32hi) __B, 612 (__v64qi) _mm512_setzero_qi (), 613 (__mmask64) -1); 614} 615 616static __inline__ __m512i __DEFAULT_FN_ATTRS 617_mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A, 618 __m512i __B) 619{ 620 return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A, 621 (__v32hi) __B, 622 (__v64qi) __W, 623 (__mmask64) __M); 624} 625 626static __inline__ __m512i __DEFAULT_FN_ATTRS 627_mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B) 628{ 629 return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A, 630 (__v32hi) __B, 631 (__v64qi) _mm512_setzero_qi(), 632 (__mmask64) __M); 633} 634 635static __inline__ __m512i __DEFAULT_FN_ATTRS 636_mm512_adds_epi8 (__m512i __A, __m512i __B) 637{ 638 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A, 639 (__v64qi) __B, 640 (__v64qi) _mm512_setzero_qi (), 641 (__mmask64) -1); 642} 643 644static __inline__ __m512i __DEFAULT_FN_ATTRS 645_mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 646 __m512i __B) 647{ 648 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A, 649 (__v64qi) __B, 650 (__v64qi) __W, 651 (__mmask64) __U); 652} 653 654static __inline__ __m512i __DEFAULT_FN_ATTRS 655_mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 656{ 657 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A, 658 (__v64qi) __B, 659 (__v64qi) _mm512_setzero_qi (), 660 (__mmask64) __U); 661} 662 663static __inline__ __m512i __DEFAULT_FN_ATTRS 664_mm512_adds_epi16 (__m512i __A, __m512i __B) 665{ 666 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A, 667 (__v32hi) __B, 668 (__v32hi) _mm512_setzero_hi (), 669 (__mmask32) -1); 670} 671 672static __inline__ __m512i __DEFAULT_FN_ATTRS 673_mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 674 __m512i __B) 675{ 676 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A, 677 (__v32hi) __B, 678 (__v32hi) __W, 679 (__mmask32) __U); 680} 681 682static __inline__ __m512i __DEFAULT_FN_ATTRS 683_mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 684{ 685 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A, 686 (__v32hi) __B, 687 (__v32hi) _mm512_setzero_hi (), 688 (__mmask32) __U); 689} 690 691static __inline__ __m512i __DEFAULT_FN_ATTRS 692_mm512_adds_epu8 (__m512i __A, __m512i __B) 693{ 694 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A, 695 (__v64qi) __B, 696 (__v64qi) _mm512_setzero_qi (), 697 (__mmask64) -1); 698} 699 700static __inline__ __m512i __DEFAULT_FN_ATTRS 701_mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A, 702 __m512i __B) 703{ 704 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A, 705 (__v64qi) __B, 706 (__v64qi) __W, 707 (__mmask64) __U); 708} 709 710static __inline__ __m512i __DEFAULT_FN_ATTRS 711_mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B) 712{ 713 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A, 714 (__v64qi) __B, 715 (__v64qi) _mm512_setzero_qi (), 716 (__mmask64) __U); 717} 718 719static __inline__ __m512i __DEFAULT_FN_ATTRS 720_mm512_adds_epu16 (__m512i __A, __m512i __B) 721{ 722 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A, 723 (__v32hi) __B, 724 (__v32hi) _mm512_setzero_hi (), 725 (__mmask32) -1); 726} 727 728static __inline__ __m512i __DEFAULT_FN_ATTRS 729_mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 730 __m512i __B) 731{ 732 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A, 733 (__v32hi) __B, 734 (__v32hi) __W, 735 (__mmask32) __U); 736} 737 738static __inline__ __m512i __DEFAULT_FN_ATTRS 739_mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 740{ 741 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A, 742 (__v32hi) __B, 743 (__v32hi) _mm512_setzero_hi (), 744 (__mmask32) __U); 745} 746 747static __inline__ __m512i __DEFAULT_FN_ATTRS 748_mm512_avg_epu8 (__m512i __A, __m512i __B) 749{ 750 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A, 751 (__v64qi) __B, 752 (__v64qi) _mm512_setzero_qi (), 753 (__mmask64) -1); 754} 755 756static __inline__ __m512i __DEFAULT_FN_ATTRS 757_mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A, 758 __m512i __B) 759{ 760 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A, 761 (__v64qi) __B, 762 (__v64qi) __W, 763 (__mmask64) __U); 764} 765 766static __inline__ __m512i __DEFAULT_FN_ATTRS 767_mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B) 768{ 769 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A, 770 (__v64qi) __B, 771 (__v64qi) _mm512_setzero_qi(), 772 (__mmask64) __U); 773} 774 775static __inline__ __m512i __DEFAULT_FN_ATTRS 776_mm512_avg_epu16 (__m512i __A, __m512i __B) 777{ 778 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A, 779 (__v32hi) __B, 780 (__v32hi) _mm512_setzero_hi (), 781 (__mmask32) -1); 782} 783 784static __inline__ __m512i __DEFAULT_FN_ATTRS 785_mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 786 __m512i __B) 787{ 788 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A, 789 (__v32hi) __B, 790 (__v32hi) __W, 791 (__mmask32) __U); 792} 793 794static __inline__ __m512i __DEFAULT_FN_ATTRS 795_mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 796{ 797 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A, 798 (__v32hi) __B, 799 (__v32hi) _mm512_setzero_hi(), 800 (__mmask32) __U); 801} 802 803static __inline__ __m512i __DEFAULT_FN_ATTRS 804_mm512_max_epi8 (__m512i __A, __m512i __B) 805{ 806 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, 807 (__v64qi) __B, 808 (__v64qi) _mm512_setzero_qi (), 809 (__mmask64) -1); 810} 811 812static __inline__ __m512i __DEFAULT_FN_ATTRS 813_mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B) 814{ 815 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, 816 (__v64qi) __B, 817 (__v64qi) _mm512_setzero_qi(), 818 (__mmask64) __M); 819} 820 821static __inline__ __m512i __DEFAULT_FN_ATTRS 822_mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A, 823 __m512i __B) 824{ 825 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, 826 (__v64qi) __B, 827 (__v64qi) __W, 828 (__mmask64) __M); 829} 830 831static __inline__ __m512i __DEFAULT_FN_ATTRS 832_mm512_max_epi16 (__m512i __A, __m512i __B) 833{ 834 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, 835 (__v32hi) __B, 836 (__v32hi) _mm512_setzero_hi (), 837 (__mmask32) -1); 838} 839 840static __inline__ __m512i __DEFAULT_FN_ATTRS 841_mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B) 842{ 843 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, 844 (__v32hi) __B, 845 (__v32hi) _mm512_setzero_hi(), 846 (__mmask32) __M); 847} 848 849static __inline__ __m512i __DEFAULT_FN_ATTRS 850_mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A, 851 __m512i __B) 852{ 853 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, 854 (__v32hi) __B, 855 (__v32hi) __W, 856 (__mmask32) __M); 857} 858 859static __inline__ __m512i __DEFAULT_FN_ATTRS 860_mm512_max_epu8 (__m512i __A, __m512i __B) 861{ 862 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, 863 (__v64qi) __B, 864 (__v64qi) _mm512_setzero_qi (), 865 (__mmask64) -1); 866} 867 868static __inline__ __m512i __DEFAULT_FN_ATTRS 869_mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B) 870{ 871 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, 872 (__v64qi) __B, 873 (__v64qi) _mm512_setzero_qi(), 874 (__mmask64) __M); 875} 876 877static __inline__ __m512i __DEFAULT_FN_ATTRS 878_mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A, 879 __m512i __B) 880{ 881 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, 882 (__v64qi) __B, 883 (__v64qi) __W, 884 (__mmask64) __M); 885} 886 887static __inline__ __m512i __DEFAULT_FN_ATTRS 888_mm512_max_epu16 (__m512i __A, __m512i __B) 889{ 890 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, 891 (__v32hi) __B, 892 (__v32hi) _mm512_setzero_hi (), 893 (__mmask32) -1); 894} 895 896static __inline__ __m512i __DEFAULT_FN_ATTRS 897_mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B) 898{ 899 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, 900 (__v32hi) __B, 901 (__v32hi) _mm512_setzero_hi(), 902 (__mmask32) __M); 903} 904 905static __inline__ __m512i __DEFAULT_FN_ATTRS 906_mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A, 907 __m512i __B) 908{ 909 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, 910 (__v32hi) __B, 911 (__v32hi) __W, 912 (__mmask32) __M); 913} 914 915static __inline__ __m512i __DEFAULT_FN_ATTRS 916_mm512_min_epi8 (__m512i __A, __m512i __B) 917{ 918 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, 919 (__v64qi) __B, 920 (__v64qi) _mm512_setzero_qi (), 921 (__mmask64) -1); 922} 923 924static __inline__ __m512i __DEFAULT_FN_ATTRS 925_mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B) 926{ 927 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, 928 (__v64qi) __B, 929 (__v64qi) _mm512_setzero_qi(), 930 (__mmask64) __M); 931} 932 933static __inline__ __m512i __DEFAULT_FN_ATTRS 934_mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A, 935 __m512i __B) 936{ 937 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, 938 (__v64qi) __B, 939 (__v64qi) __W, 940 (__mmask64) __M); 941} 942 943static __inline__ __m512i __DEFAULT_FN_ATTRS 944_mm512_min_epi16 (__m512i __A, __m512i __B) 945{ 946 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, 947 (__v32hi) __B, 948 (__v32hi) _mm512_setzero_hi (), 949 (__mmask32) -1); 950} 951 952static __inline__ __m512i __DEFAULT_FN_ATTRS 953_mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B) 954{ 955 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, 956 (__v32hi) __B, 957 (__v32hi) _mm512_setzero_hi(), 958 (__mmask32) __M); 959} 960 961static __inline__ __m512i __DEFAULT_FN_ATTRS 962_mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A, 963 __m512i __B) 964{ 965 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, 966 (__v32hi) __B, 967 (__v32hi) __W, 968 (__mmask32) __M); 969} 970 971static __inline__ __m512i __DEFAULT_FN_ATTRS 972_mm512_min_epu8 (__m512i __A, __m512i __B) 973{ 974 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, 975 (__v64qi) __B, 976 (__v64qi) _mm512_setzero_qi (), 977 (__mmask64) -1); 978} 979 980static __inline__ __m512i __DEFAULT_FN_ATTRS 981_mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B) 982{ 983 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, 984 (__v64qi) __B, 985 (__v64qi) _mm512_setzero_qi(), 986 (__mmask64) __M); 987} 988 989static __inline__ __m512i __DEFAULT_FN_ATTRS 990_mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A, 991 __m512i __B) 992{ 993 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, 994 (__v64qi) __B, 995 (__v64qi) __W, 996 (__mmask64) __M); 997} 998 999static __inline__ __m512i __DEFAULT_FN_ATTRS 1000_mm512_min_epu16 (__m512i __A, __m512i __B) 1001{ 1002 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, 1003 (__v32hi) __B, 1004 (__v32hi) _mm512_setzero_hi (), 1005 (__mmask32) -1); 1006} 1007 1008static __inline__ __m512i __DEFAULT_FN_ATTRS 1009_mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B) 1010{ 1011 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, 1012 (__v32hi) __B, 1013 (__v32hi) _mm512_setzero_hi(), 1014 (__mmask32) __M); 1015} 1016 1017static __inline__ __m512i __DEFAULT_FN_ATTRS 1018_mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A, 1019 __m512i __B) 1020{ 1021 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, 1022 (__v32hi) __B, 1023 (__v32hi) __W, 1024 (__mmask32) __M); 1025} 1026 1027static __inline__ __m512i __DEFAULT_FN_ATTRS 1028_mm512_shuffle_epi8 (__m512i __A, __m512i __B) 1029{ 1030 return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A, 1031 (__v64qi) __B, 1032 (__v64qi) _mm512_setzero_qi (), 1033 (__mmask64) -1); 1034} 1035 1036static __inline__ __m512i __DEFAULT_FN_ATTRS 1037_mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 1038 __m512i __B) 1039{ 1040 return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A, 1041 (__v64qi) __B, 1042 (__v64qi) __W, 1043 (__mmask64) __U); 1044} 1045 1046static __inline__ __m512i __DEFAULT_FN_ATTRS 1047_mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 1048{ 1049 return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A, 1050 (__v64qi) __B, 1051 (__v64qi) _mm512_setzero_qi (), 1052 (__mmask64) __U); 1053} 1054 1055static __inline__ __m512i __DEFAULT_FN_ATTRS 1056_mm512_subs_epi8 (__m512i __A, __m512i __B) 1057{ 1058 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, 1059 (__v64qi) __B, 1060 (__v64qi) _mm512_setzero_qi (), 1061 (__mmask64) -1); 1062} 1063 1064static __inline__ __m512i __DEFAULT_FN_ATTRS 1065_mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 1066 __m512i __B) 1067{ 1068 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, 1069 (__v64qi) __B, 1070 (__v64qi) __W, 1071 (__mmask64) __U); 1072} 1073 1074static __inline__ __m512i __DEFAULT_FN_ATTRS 1075_mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 1076{ 1077 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, 1078 (__v64qi) __B, 1079 (__v64qi) _mm512_setzero_qi (), 1080 (__mmask64) __U); 1081} 1082 1083static __inline__ __m512i __DEFAULT_FN_ATTRS 1084_mm512_subs_epi16 (__m512i __A, __m512i __B) 1085{ 1086 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, 1087 (__v32hi) __B, 1088 (__v32hi) _mm512_setzero_hi (), 1089 (__mmask32) -1); 1090} 1091 1092static __inline__ __m512i __DEFAULT_FN_ATTRS 1093_mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1094 __m512i __B) 1095{ 1096 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, 1097 (__v32hi) __B, 1098 (__v32hi) __W, 1099 (__mmask32) __U); 1100} 1101 1102static __inline__ __m512i __DEFAULT_FN_ATTRS 1103_mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1104{ 1105 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, 1106 (__v32hi) __B, 1107 (__v32hi) _mm512_setzero_hi (), 1108 (__mmask32) __U); 1109} 1110 1111static __inline__ __m512i __DEFAULT_FN_ATTRS 1112_mm512_subs_epu8 (__m512i __A, __m512i __B) 1113{ 1114 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, 1115 (__v64qi) __B, 1116 (__v64qi) _mm512_setzero_qi (), 1117 (__mmask64) -1); 1118} 1119 1120static __inline__ __m512i __DEFAULT_FN_ATTRS 1121_mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A, 1122 __m512i __B) 1123{ 1124 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, 1125 (__v64qi) __B, 1126 (__v64qi) __W, 1127 (__mmask64) __U); 1128} 1129 1130static __inline__ __m512i __DEFAULT_FN_ATTRS 1131_mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B) 1132{ 1133 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, 1134 (__v64qi) __B, 1135 (__v64qi) _mm512_setzero_qi (), 1136 (__mmask64) __U); 1137} 1138 1139static __inline__ __m512i __DEFAULT_FN_ATTRS 1140_mm512_subs_epu16 (__m512i __A, __m512i __B) 1141{ 1142 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, 1143 (__v32hi) __B, 1144 (__v32hi) _mm512_setzero_hi (), 1145 (__mmask32) -1); 1146} 1147 1148static __inline__ __m512i __DEFAULT_FN_ATTRS 1149_mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 1150 __m512i __B) 1151{ 1152 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, 1153 (__v32hi) __B, 1154 (__v32hi) __W, 1155 (__mmask32) __U); 1156} 1157 1158static __inline__ __m512i __DEFAULT_FN_ATTRS 1159_mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 1160{ 1161 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, 1162 (__v32hi) __B, 1163 (__v32hi) _mm512_setzero_hi (), 1164 (__mmask32) __U); 1165} 1166 1167static __inline__ __m512i __DEFAULT_FN_ATTRS 1168_mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I, 1169 __mmask32 __U, __m512i __B) 1170{ 1171 return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A, 1172 (__v32hi) __I /* idx */ , 1173 (__v32hi) __B, 1174 (__mmask32) __U); 1175} 1176 1177static __inline__ __m512i __DEFAULT_FN_ATTRS 1178_mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B) 1179{ 1180 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */, 1181 (__v32hi) __A, 1182 (__v32hi) __B, 1183 (__mmask32) -1); 1184} 1185 1186static __inline__ __m512i __DEFAULT_FN_ATTRS 1187_mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U, 1188 __m512i __I, __m512i __B) 1189{ 1190 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */, 1191 (__v32hi) __A, 1192 (__v32hi) __B, 1193 (__mmask32) __U); 1194} 1195 1196static __inline__ __m512i __DEFAULT_FN_ATTRS 1197_mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A, 1198 __m512i __I, __m512i __B) 1199{ 1200 return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I 1201 /* idx */ , 1202 (__v32hi) __A, 1203 (__v32hi) __B, 1204 (__mmask32) __U); 1205} 1206 1207#define _mm512_cmp_epi8_mask(a, b, p) __extension__ ({ \ 1208 (__mmask16)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \ 1209 (__v64qi)(__m512i)(b), \ 1210 (p), (__mmask64)-1); }) 1211 1212#define _mm512_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \ 1213 (__mmask16)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \ 1214 (__v64qi)(__m512i)(b), \ 1215 (p), (__mmask64)(m)); }) 1216 1217#define _mm512_cmp_epu8_mask(a, b, p) __extension__ ({ \ 1218 (__mmask16)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \ 1219 (__v64qi)(__m512i)(b), \ 1220 (p), (__mmask64)-1); }) 1221 1222#define _mm512_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \ 1223 (__mmask16)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \ 1224 (__v64qi)(__m512i)(b), \ 1225 (p), (__mmask64)(m)); }) 1226 1227#define _mm512_cmp_epi16_mask(a, b, p) __extension__ ({ \ 1228 (__mmask16)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \ 1229 (__v32hi)(__m512i)(b), \ 1230 (p), (__mmask32)-1); }) 1231 1232#define _mm512_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \ 1233 (__mmask16)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \ 1234 (__v32hi)(__m512i)(b), \ 1235 (p), (__mmask32)(m)); }) 1236 1237#define _mm512_cmp_epu16_mask(a, b, p) __extension__ ({ \ 1238 (__mmask16)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \ 1239 (__v32hi)(__m512i)(b), \ 1240 (p), (__mmask32)-1); }) 1241 1242#define _mm512_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \ 1243 (__mmask16)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \ 1244 (__v32hi)(__m512i)(b), \ 1245 (p), (__mmask32)(m)); }) 1246 1247 1248#undef __DEFAULT_FN_ATTRS 1249 1250#endif 1251