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__, __target__("avx512bw"))) 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) _mm512_setzero_qi(), 367 (__mmask64) __U); 368} 369 370static __inline__ __m512i __DEFAULT_FN_ATTRS 371_mm512_sub_epi8 (__m512i __A, __m512i __B) { 372 return (__m512i) ((__v64qi) __A - (__v64qi) __B); 373} 374 375static __inline__ __m512i __DEFAULT_FN_ATTRS 376_mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { 377 return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A, 378 (__v64qi) __B, 379 (__v64qi) __W, 380 (__mmask64) __U); 381} 382 383static __inline__ __m512i __DEFAULT_FN_ATTRS 384_mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B) { 385 return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A, 386 (__v64qi) __B, 387 (__v64qi) _mm512_setzero_qi(), 388 (__mmask64) __U); 389} 390 391static __inline__ __m512i __DEFAULT_FN_ATTRS 392_mm512_add_epi16 (__m512i __A, __m512i __B) { 393 return (__m512i) ((__v32hi) __A + (__v32hi) __B); 394} 395 396static __inline__ __m512i __DEFAULT_FN_ATTRS 397_mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 398 return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A, 399 (__v32hi) __B, 400 (__v32hi) __W, 401 (__mmask32) __U); 402} 403 404static __inline__ __m512i __DEFAULT_FN_ATTRS 405_mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B) { 406 return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A, 407 (__v32hi) __B, 408 (__v32hi) _mm512_setzero_hi(), 409 (__mmask32) __U); 410} 411 412static __inline__ __m512i __DEFAULT_FN_ATTRS 413_mm512_sub_epi16 (__m512i __A, __m512i __B) { 414 return (__m512i) ((__v32hi) __A - (__v32hi) __B); 415} 416 417static __inline__ __m512i __DEFAULT_FN_ATTRS 418_mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 419 return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A, 420 (__v32hi) __B, 421 (__v32hi) __W, 422 (__mmask32) __U); 423} 424 425static __inline__ __m512i __DEFAULT_FN_ATTRS 426_mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B) { 427 return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A, 428 (__v32hi) __B, 429 (__v32hi) _mm512_setzero_hi(), 430 (__mmask32) __U); 431} 432 433static __inline__ __m512i __DEFAULT_FN_ATTRS 434_mm512_mullo_epi16 (__m512i __A, __m512i __B) { 435 return (__m512i) ((__v32hi) __A * (__v32hi) __B); 436} 437 438static __inline__ __m512i __DEFAULT_FN_ATTRS 439_mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 440 return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A, 441 (__v32hi) __B, 442 (__v32hi) __W, 443 (__mmask32) __U); 444} 445 446static __inline__ __m512i __DEFAULT_FN_ATTRS 447_mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) { 448 return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A, 449 (__v32hi) __B, 450 (__v32hi) _mm512_setzero_hi(), 451 (__mmask32) __U); 452} 453 454static __inline__ __m512i __DEFAULT_FN_ATTRS 455_mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W) 456{ 457 return (__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) __A, 458 (__v64qi) __W, 459 (__mmask64) __U); 460} 461 462static __inline__ __m512i __DEFAULT_FN_ATTRS 463_mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W) 464{ 465 return (__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) __A, 466 (__v32hi) __W, 467 (__mmask32) __U); 468} 469 470static __inline__ __m512i __DEFAULT_FN_ATTRS 471_mm512_abs_epi8 (__m512i __A) 472{ 473 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A, 474 (__v64qi) _mm512_setzero_qi(), 475 (__mmask64) -1); 476} 477 478static __inline__ __m512i __DEFAULT_FN_ATTRS 479_mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A) 480{ 481 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A, 482 (__v64qi) __W, 483 (__mmask64) __U); 484} 485 486static __inline__ __m512i __DEFAULT_FN_ATTRS 487_mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A) 488{ 489 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A, 490 (__v64qi) _mm512_setzero_qi(), 491 (__mmask64) __U); 492} 493 494static __inline__ __m512i __DEFAULT_FN_ATTRS 495_mm512_abs_epi16 (__m512i __A) 496{ 497 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A, 498 (__v32hi) _mm512_setzero_hi(), 499 (__mmask32) -1); 500} 501 502static __inline__ __m512i __DEFAULT_FN_ATTRS 503_mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A) 504{ 505 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A, 506 (__v32hi) __W, 507 (__mmask32) __U); 508} 509 510static __inline__ __m512i __DEFAULT_FN_ATTRS 511_mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A) 512{ 513 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A, 514 (__v32hi) _mm512_setzero_hi(), 515 (__mmask32) __U); 516} 517 518static __inline__ __m512i __DEFAULT_FN_ATTRS 519_mm512_packs_epi32 (__m512i __A, __m512i __B) 520{ 521 return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A, 522 (__v16si) __B, 523 (__v32hi) _mm512_setzero_hi(), 524 (__mmask32) -1); 525} 526 527static __inline__ __m512i __DEFAULT_FN_ATTRS 528_mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B) 529{ 530 return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A, 531 (__v16si) __B, 532 (__v32hi) _mm512_setzero_hi(), 533 __M); 534} 535 536static __inline__ __m512i __DEFAULT_FN_ATTRS 537_mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A, 538 __m512i __B) 539{ 540 return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A, 541 (__v16si) __B, 542 (__v32hi) __W, 543 __M); 544} 545 546static __inline__ __m512i __DEFAULT_FN_ATTRS 547_mm512_packs_epi16 (__m512i __A, __m512i __B) 548{ 549 return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A, 550 (__v32hi) __B, 551 (__v64qi) _mm512_setzero_qi(), 552 (__mmask64) -1); 553} 554 555static __inline__ __m512i __DEFAULT_FN_ATTRS 556_mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A, 557 __m512i __B) 558{ 559 return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A, 560 (__v32hi) __B, 561 (__v64qi) __W, 562 (__mmask64) __M); 563} 564 565static __inline__ __m512i __DEFAULT_FN_ATTRS 566_mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B) 567{ 568 return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A, 569 (__v32hi) __B, 570 (__v64qi) _mm512_setzero_qi(), 571 __M); 572} 573 574static __inline__ __m512i __DEFAULT_FN_ATTRS 575_mm512_packus_epi32 (__m512i __A, __m512i __B) 576{ 577 return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A, 578 (__v16si) __B, 579 (__v32hi) _mm512_setzero_hi(), 580 (__mmask32) -1); 581} 582 583static __inline__ __m512i __DEFAULT_FN_ATTRS 584_mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B) 585{ 586 return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A, 587 (__v16si) __B, 588 (__v32hi) _mm512_setzero_hi(), 589 __M); 590} 591 592static __inline__ __m512i __DEFAULT_FN_ATTRS 593_mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A, 594 __m512i __B) 595{ 596 return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A, 597 (__v16si) __B, 598 (__v32hi) __W, 599 __M); 600} 601 602static __inline__ __m512i __DEFAULT_FN_ATTRS 603_mm512_packus_epi16 (__m512i __A, __m512i __B) 604{ 605 return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A, 606 (__v32hi) __B, 607 (__v64qi) _mm512_setzero_qi(), 608 (__mmask64) -1); 609} 610 611static __inline__ __m512i __DEFAULT_FN_ATTRS 612_mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A, 613 __m512i __B) 614{ 615 return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A, 616 (__v32hi) __B, 617 (__v64qi) __W, 618 (__mmask64) __M); 619} 620 621static __inline__ __m512i __DEFAULT_FN_ATTRS 622_mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B) 623{ 624 return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A, 625 (__v32hi) __B, 626 (__v64qi) _mm512_setzero_qi(), 627 (__mmask64) __M); 628} 629 630static __inline__ __m512i __DEFAULT_FN_ATTRS 631_mm512_adds_epi8 (__m512i __A, __m512i __B) 632{ 633 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A, 634 (__v64qi) __B, 635 (__v64qi) _mm512_setzero_qi(), 636 (__mmask64) -1); 637} 638 639static __inline__ __m512i __DEFAULT_FN_ATTRS 640_mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 641 __m512i __B) 642{ 643 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A, 644 (__v64qi) __B, 645 (__v64qi) __W, 646 (__mmask64) __U); 647} 648 649static __inline__ __m512i __DEFAULT_FN_ATTRS 650_mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 651{ 652 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A, 653 (__v64qi) __B, 654 (__v64qi) _mm512_setzero_qi(), 655 (__mmask64) __U); 656} 657 658static __inline__ __m512i __DEFAULT_FN_ATTRS 659_mm512_adds_epi16 (__m512i __A, __m512i __B) 660{ 661 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A, 662 (__v32hi) __B, 663 (__v32hi) _mm512_setzero_hi(), 664 (__mmask32) -1); 665} 666 667static __inline__ __m512i __DEFAULT_FN_ATTRS 668_mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 669 __m512i __B) 670{ 671 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A, 672 (__v32hi) __B, 673 (__v32hi) __W, 674 (__mmask32) __U); 675} 676 677static __inline__ __m512i __DEFAULT_FN_ATTRS 678_mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 679{ 680 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A, 681 (__v32hi) __B, 682 (__v32hi) _mm512_setzero_hi(), 683 (__mmask32) __U); 684} 685 686static __inline__ __m512i __DEFAULT_FN_ATTRS 687_mm512_adds_epu8 (__m512i __A, __m512i __B) 688{ 689 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A, 690 (__v64qi) __B, 691 (__v64qi) _mm512_setzero_qi(), 692 (__mmask64) -1); 693} 694 695static __inline__ __m512i __DEFAULT_FN_ATTRS 696_mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A, 697 __m512i __B) 698{ 699 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A, 700 (__v64qi) __B, 701 (__v64qi) __W, 702 (__mmask64) __U); 703} 704 705static __inline__ __m512i __DEFAULT_FN_ATTRS 706_mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B) 707{ 708 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A, 709 (__v64qi) __B, 710 (__v64qi) _mm512_setzero_qi(), 711 (__mmask64) __U); 712} 713 714static __inline__ __m512i __DEFAULT_FN_ATTRS 715_mm512_adds_epu16 (__m512i __A, __m512i __B) 716{ 717 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A, 718 (__v32hi) __B, 719 (__v32hi) _mm512_setzero_hi(), 720 (__mmask32) -1); 721} 722 723static __inline__ __m512i __DEFAULT_FN_ATTRS 724_mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 725 __m512i __B) 726{ 727 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A, 728 (__v32hi) __B, 729 (__v32hi) __W, 730 (__mmask32) __U); 731} 732 733static __inline__ __m512i __DEFAULT_FN_ATTRS 734_mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 735{ 736 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A, 737 (__v32hi) __B, 738 (__v32hi) _mm512_setzero_hi(), 739 (__mmask32) __U); 740} 741 742static __inline__ __m512i __DEFAULT_FN_ATTRS 743_mm512_avg_epu8 (__m512i __A, __m512i __B) 744{ 745 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A, 746 (__v64qi) __B, 747 (__v64qi) _mm512_setzero_qi(), 748 (__mmask64) -1); 749} 750 751static __inline__ __m512i __DEFAULT_FN_ATTRS 752_mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A, 753 __m512i __B) 754{ 755 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A, 756 (__v64qi) __B, 757 (__v64qi) __W, 758 (__mmask64) __U); 759} 760 761static __inline__ __m512i __DEFAULT_FN_ATTRS 762_mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B) 763{ 764 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A, 765 (__v64qi) __B, 766 (__v64qi) _mm512_setzero_qi(), 767 (__mmask64) __U); 768} 769 770static __inline__ __m512i __DEFAULT_FN_ATTRS 771_mm512_avg_epu16 (__m512i __A, __m512i __B) 772{ 773 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A, 774 (__v32hi) __B, 775 (__v32hi) _mm512_setzero_hi(), 776 (__mmask32) -1); 777} 778 779static __inline__ __m512i __DEFAULT_FN_ATTRS 780_mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 781 __m512i __B) 782{ 783 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A, 784 (__v32hi) __B, 785 (__v32hi) __W, 786 (__mmask32) __U); 787} 788 789static __inline__ __m512i __DEFAULT_FN_ATTRS 790_mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 791{ 792 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A, 793 (__v32hi) __B, 794 (__v32hi) _mm512_setzero_hi(), 795 (__mmask32) __U); 796} 797 798static __inline__ __m512i __DEFAULT_FN_ATTRS 799_mm512_max_epi8 (__m512i __A, __m512i __B) 800{ 801 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, 802 (__v64qi) __B, 803 (__v64qi) _mm512_setzero_qi(), 804 (__mmask64) -1); 805} 806 807static __inline__ __m512i __DEFAULT_FN_ATTRS 808_mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B) 809{ 810 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, 811 (__v64qi) __B, 812 (__v64qi) _mm512_setzero_qi(), 813 (__mmask64) __M); 814} 815 816static __inline__ __m512i __DEFAULT_FN_ATTRS 817_mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A, 818 __m512i __B) 819{ 820 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, 821 (__v64qi) __B, 822 (__v64qi) __W, 823 (__mmask64) __M); 824} 825 826static __inline__ __m512i __DEFAULT_FN_ATTRS 827_mm512_max_epi16 (__m512i __A, __m512i __B) 828{ 829 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, 830 (__v32hi) __B, 831 (__v32hi) _mm512_setzero_hi(), 832 (__mmask32) -1); 833} 834 835static __inline__ __m512i __DEFAULT_FN_ATTRS 836_mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B) 837{ 838 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, 839 (__v32hi) __B, 840 (__v32hi) _mm512_setzero_hi(), 841 (__mmask32) __M); 842} 843 844static __inline__ __m512i __DEFAULT_FN_ATTRS 845_mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A, 846 __m512i __B) 847{ 848 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, 849 (__v32hi) __B, 850 (__v32hi) __W, 851 (__mmask32) __M); 852} 853 854static __inline__ __m512i __DEFAULT_FN_ATTRS 855_mm512_max_epu8 (__m512i __A, __m512i __B) 856{ 857 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, 858 (__v64qi) __B, 859 (__v64qi) _mm512_setzero_qi(), 860 (__mmask64) -1); 861} 862 863static __inline__ __m512i __DEFAULT_FN_ATTRS 864_mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B) 865{ 866 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, 867 (__v64qi) __B, 868 (__v64qi) _mm512_setzero_qi(), 869 (__mmask64) __M); 870} 871 872static __inline__ __m512i __DEFAULT_FN_ATTRS 873_mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A, 874 __m512i __B) 875{ 876 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, 877 (__v64qi) __B, 878 (__v64qi) __W, 879 (__mmask64) __M); 880} 881 882static __inline__ __m512i __DEFAULT_FN_ATTRS 883_mm512_max_epu16 (__m512i __A, __m512i __B) 884{ 885 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, 886 (__v32hi) __B, 887 (__v32hi) _mm512_setzero_hi(), 888 (__mmask32) -1); 889} 890 891static __inline__ __m512i __DEFAULT_FN_ATTRS 892_mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B) 893{ 894 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, 895 (__v32hi) __B, 896 (__v32hi) _mm512_setzero_hi(), 897 (__mmask32) __M); 898} 899 900static __inline__ __m512i __DEFAULT_FN_ATTRS 901_mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A, 902 __m512i __B) 903{ 904 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, 905 (__v32hi) __B, 906 (__v32hi) __W, 907 (__mmask32) __M); 908} 909 910static __inline__ __m512i __DEFAULT_FN_ATTRS 911_mm512_min_epi8 (__m512i __A, __m512i __B) 912{ 913 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, 914 (__v64qi) __B, 915 (__v64qi) _mm512_setzero_qi(), 916 (__mmask64) -1); 917} 918 919static __inline__ __m512i __DEFAULT_FN_ATTRS 920_mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B) 921{ 922 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, 923 (__v64qi) __B, 924 (__v64qi) _mm512_setzero_qi(), 925 (__mmask64) __M); 926} 927 928static __inline__ __m512i __DEFAULT_FN_ATTRS 929_mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A, 930 __m512i __B) 931{ 932 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, 933 (__v64qi) __B, 934 (__v64qi) __W, 935 (__mmask64) __M); 936} 937 938static __inline__ __m512i __DEFAULT_FN_ATTRS 939_mm512_min_epi16 (__m512i __A, __m512i __B) 940{ 941 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, 942 (__v32hi) __B, 943 (__v32hi) _mm512_setzero_hi(), 944 (__mmask32) -1); 945} 946 947static __inline__ __m512i __DEFAULT_FN_ATTRS 948_mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B) 949{ 950 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, 951 (__v32hi) __B, 952 (__v32hi) _mm512_setzero_hi(), 953 (__mmask32) __M); 954} 955 956static __inline__ __m512i __DEFAULT_FN_ATTRS 957_mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A, 958 __m512i __B) 959{ 960 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, 961 (__v32hi) __B, 962 (__v32hi) __W, 963 (__mmask32) __M); 964} 965 966static __inline__ __m512i __DEFAULT_FN_ATTRS 967_mm512_min_epu8 (__m512i __A, __m512i __B) 968{ 969 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, 970 (__v64qi) __B, 971 (__v64qi) _mm512_setzero_qi(), 972 (__mmask64) -1); 973} 974 975static __inline__ __m512i __DEFAULT_FN_ATTRS 976_mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B) 977{ 978 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, 979 (__v64qi) __B, 980 (__v64qi) _mm512_setzero_qi(), 981 (__mmask64) __M); 982} 983 984static __inline__ __m512i __DEFAULT_FN_ATTRS 985_mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A, 986 __m512i __B) 987{ 988 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, 989 (__v64qi) __B, 990 (__v64qi) __W, 991 (__mmask64) __M); 992} 993 994static __inline__ __m512i __DEFAULT_FN_ATTRS 995_mm512_min_epu16 (__m512i __A, __m512i __B) 996{ 997 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, 998 (__v32hi) __B, 999 (__v32hi) _mm512_setzero_hi(), 1000 (__mmask32) -1); 1001} 1002 1003static __inline__ __m512i __DEFAULT_FN_ATTRS 1004_mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B) 1005{ 1006 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, 1007 (__v32hi) __B, 1008 (__v32hi) _mm512_setzero_hi(), 1009 (__mmask32) __M); 1010} 1011 1012static __inline__ __m512i __DEFAULT_FN_ATTRS 1013_mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A, 1014 __m512i __B) 1015{ 1016 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, 1017 (__v32hi) __B, 1018 (__v32hi) __W, 1019 (__mmask32) __M); 1020} 1021 1022static __inline__ __m512i __DEFAULT_FN_ATTRS 1023_mm512_shuffle_epi8 (__m512i __A, __m512i __B) 1024{ 1025 return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A, 1026 (__v64qi) __B, 1027 (__v64qi) _mm512_setzero_qi(), 1028 (__mmask64) -1); 1029} 1030 1031static __inline__ __m512i __DEFAULT_FN_ATTRS 1032_mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 1033 __m512i __B) 1034{ 1035 return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A, 1036 (__v64qi) __B, 1037 (__v64qi) __W, 1038 (__mmask64) __U); 1039} 1040 1041static __inline__ __m512i __DEFAULT_FN_ATTRS 1042_mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 1043{ 1044 return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A, 1045 (__v64qi) __B, 1046 (__v64qi) _mm512_setzero_qi(), 1047 (__mmask64) __U); 1048} 1049 1050static __inline__ __m512i __DEFAULT_FN_ATTRS 1051_mm512_subs_epi8 (__m512i __A, __m512i __B) 1052{ 1053 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, 1054 (__v64qi) __B, 1055 (__v64qi) _mm512_setzero_qi(), 1056 (__mmask64) -1); 1057} 1058 1059static __inline__ __m512i __DEFAULT_FN_ATTRS 1060_mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 1061 __m512i __B) 1062{ 1063 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, 1064 (__v64qi) __B, 1065 (__v64qi) __W, 1066 (__mmask64) __U); 1067} 1068 1069static __inline__ __m512i __DEFAULT_FN_ATTRS 1070_mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 1071{ 1072 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, 1073 (__v64qi) __B, 1074 (__v64qi) _mm512_setzero_qi(), 1075 (__mmask64) __U); 1076} 1077 1078static __inline__ __m512i __DEFAULT_FN_ATTRS 1079_mm512_subs_epi16 (__m512i __A, __m512i __B) 1080{ 1081 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, 1082 (__v32hi) __B, 1083 (__v32hi) _mm512_setzero_hi(), 1084 (__mmask32) -1); 1085} 1086 1087static __inline__ __m512i __DEFAULT_FN_ATTRS 1088_mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1089 __m512i __B) 1090{ 1091 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, 1092 (__v32hi) __B, 1093 (__v32hi) __W, 1094 (__mmask32) __U); 1095} 1096 1097static __inline__ __m512i __DEFAULT_FN_ATTRS 1098_mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1099{ 1100 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, 1101 (__v32hi) __B, 1102 (__v32hi) _mm512_setzero_hi(), 1103 (__mmask32) __U); 1104} 1105 1106static __inline__ __m512i __DEFAULT_FN_ATTRS 1107_mm512_subs_epu8 (__m512i __A, __m512i __B) 1108{ 1109 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, 1110 (__v64qi) __B, 1111 (__v64qi) _mm512_setzero_qi(), 1112 (__mmask64) -1); 1113} 1114 1115static __inline__ __m512i __DEFAULT_FN_ATTRS 1116_mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A, 1117 __m512i __B) 1118{ 1119 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, 1120 (__v64qi) __B, 1121 (__v64qi) __W, 1122 (__mmask64) __U); 1123} 1124 1125static __inline__ __m512i __DEFAULT_FN_ATTRS 1126_mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B) 1127{ 1128 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, 1129 (__v64qi) __B, 1130 (__v64qi) _mm512_setzero_qi(), 1131 (__mmask64) __U); 1132} 1133 1134static __inline__ __m512i __DEFAULT_FN_ATTRS 1135_mm512_subs_epu16 (__m512i __A, __m512i __B) 1136{ 1137 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, 1138 (__v32hi) __B, 1139 (__v32hi) _mm512_setzero_hi(), 1140 (__mmask32) -1); 1141} 1142 1143static __inline__ __m512i __DEFAULT_FN_ATTRS 1144_mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 1145 __m512i __B) 1146{ 1147 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, 1148 (__v32hi) __B, 1149 (__v32hi) __W, 1150 (__mmask32) __U); 1151} 1152 1153static __inline__ __m512i __DEFAULT_FN_ATTRS 1154_mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 1155{ 1156 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, 1157 (__v32hi) __B, 1158 (__v32hi) _mm512_setzero_hi(), 1159 (__mmask32) __U); 1160} 1161 1162static __inline__ __m512i __DEFAULT_FN_ATTRS 1163_mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I, 1164 __mmask32 __U, __m512i __B) 1165{ 1166 return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A, 1167 (__v32hi) __I /* idx */ , 1168 (__v32hi) __B, 1169 (__mmask32) __U); 1170} 1171 1172static __inline__ __m512i __DEFAULT_FN_ATTRS 1173_mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B) 1174{ 1175 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */, 1176 (__v32hi) __A, 1177 (__v32hi) __B, 1178 (__mmask32) -1); 1179} 1180 1181static __inline__ __m512i __DEFAULT_FN_ATTRS 1182_mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U, 1183 __m512i __I, __m512i __B) 1184{ 1185 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */, 1186 (__v32hi) __A, 1187 (__v32hi) __B, 1188 (__mmask32) __U); 1189} 1190 1191static __inline__ __m512i __DEFAULT_FN_ATTRS 1192_mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A, 1193 __m512i __I, __m512i __B) 1194{ 1195 return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I 1196 /* idx */ , 1197 (__v32hi) __A, 1198 (__v32hi) __B, 1199 (__mmask32) __U); 1200} 1201 1202static __inline__ __m512i __DEFAULT_FN_ATTRS 1203_mm512_mulhrs_epi16 (__m512i __A, __m512i __B) 1204{ 1205 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A, 1206 (__v32hi) __B, 1207 (__v32hi) _mm512_setzero_hi(), 1208 (__mmask32) -1); 1209} 1210 1211static __inline__ __m512i __DEFAULT_FN_ATTRS 1212_mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1213 __m512i __B) 1214{ 1215 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A, 1216 (__v32hi) __B, 1217 (__v32hi) __W, 1218 (__mmask32) __U); 1219} 1220 1221static __inline__ __m512i __DEFAULT_FN_ATTRS 1222_mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1223{ 1224 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A, 1225 (__v32hi) __B, 1226 (__v32hi) _mm512_setzero_hi(), 1227 (__mmask32) __U); 1228} 1229 1230static __inline__ __m512i __DEFAULT_FN_ATTRS 1231_mm512_mulhi_epi16 (__m512i __A, __m512i __B) 1232{ 1233 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A, 1234 (__v32hi) __B, 1235 (__v32hi) _mm512_setzero_hi(), 1236 (__mmask32) -1); 1237} 1238 1239static __inline__ __m512i __DEFAULT_FN_ATTRS 1240_mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1241 __m512i __B) 1242{ 1243 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A, 1244 (__v32hi) __B, 1245 (__v32hi) __W, 1246 (__mmask32) __U); 1247} 1248 1249static __inline__ __m512i __DEFAULT_FN_ATTRS 1250_mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1251{ 1252 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A, 1253 (__v32hi) __B, 1254 (__v32hi) _mm512_setzero_hi(), 1255 (__mmask32) __U); 1256} 1257 1258static __inline__ __m512i __DEFAULT_FN_ATTRS 1259_mm512_mulhi_epu16 (__m512i __A, __m512i __B) 1260{ 1261 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A, 1262 (__v32hi) __B, 1263 (__v32hi) _mm512_setzero_hi(), 1264 (__mmask32) -1); 1265} 1266 1267static __inline__ __m512i __DEFAULT_FN_ATTRS 1268_mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 1269 __m512i __B) 1270{ 1271 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A, 1272 (__v32hi) __B, 1273 (__v32hi) __W, 1274 (__mmask32) __U); 1275} 1276 1277static __inline__ __m512i __DEFAULT_FN_ATTRS 1278_mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 1279{ 1280 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A, 1281 (__v32hi) __B, 1282 (__v32hi) _mm512_setzero_hi(), 1283 (__mmask32) __U); 1284} 1285 1286static __inline__ __m512i __DEFAULT_FN_ATTRS 1287_mm512_maddubs_epi16 (__m512i __X, __m512i __Y) { 1288 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X, 1289 (__v64qi) __Y, 1290 (__v32hi) _mm512_setzero_hi(), 1291 (__mmask32) -1); 1292} 1293 1294static __inline__ __m512i __DEFAULT_FN_ATTRS 1295_mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X, 1296 __m512i __Y) { 1297 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X, 1298 (__v64qi) __Y, 1299 (__v32hi) __W, 1300 (__mmask32) __U); 1301} 1302 1303static __inline__ __m512i __DEFAULT_FN_ATTRS 1304_mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y) { 1305 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X, 1306 (__v64qi) __Y, 1307 (__v32hi) _mm512_setzero_hi(), 1308 (__mmask32) __U); 1309} 1310 1311static __inline__ __m512i __DEFAULT_FN_ATTRS 1312_mm512_madd_epi16 (__m512i __A, __m512i __B) { 1313 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A, 1314 (__v32hi) __B, 1315 (__v16si) _mm512_setzero_si512(), 1316 (__mmask16) -1); 1317} 1318 1319static __inline__ __m512i __DEFAULT_FN_ATTRS 1320_mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A, 1321 __m512i __B) { 1322 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A, 1323 (__v32hi) __B, 1324 (__v16si) __W, 1325 (__mmask16) __U); 1326} 1327 1328static __inline__ __m512i __DEFAULT_FN_ATTRS 1329_mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B) { 1330 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A, 1331 (__v32hi) __B, 1332 (__v16si) _mm512_setzero_si512(), 1333 (__mmask16) __U); 1334} 1335 1336static __inline__ __m256i __DEFAULT_FN_ATTRS 1337_mm512_cvtsepi16_epi8 (__m512i __A) { 1338 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A, 1339 (__v32qi)_mm256_setzero_si256(), 1340 (__mmask32) -1); 1341} 1342 1343static __inline__ __m256i __DEFAULT_FN_ATTRS 1344_mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) { 1345 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A, 1346 (__v32qi)__O, 1347 __M); 1348} 1349 1350static __inline__ __m256i __DEFAULT_FN_ATTRS 1351_mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A) { 1352 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A, 1353 (__v32qi) _mm256_setzero_si256(), 1354 __M); 1355} 1356 1357static __inline__ __m256i __DEFAULT_FN_ATTRS 1358_mm512_cvtusepi16_epi8 (__m512i __A) { 1359 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A, 1360 (__v32qi) _mm256_setzero_si256(), 1361 (__mmask32) -1); 1362} 1363 1364static __inline__ __m256i __DEFAULT_FN_ATTRS 1365_mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) { 1366 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A, 1367 (__v32qi) __O, 1368 __M); 1369} 1370 1371static __inline__ __m256i __DEFAULT_FN_ATTRS 1372_mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A) { 1373 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A, 1374 (__v32qi) _mm256_setzero_si256(), 1375 __M); 1376} 1377 1378static __inline__ __m256i __DEFAULT_FN_ATTRS 1379_mm512_cvtepi16_epi8 (__m512i __A) { 1380 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A, 1381 (__v32qi) _mm256_setzero_si256(), 1382 (__mmask32) -1); 1383} 1384 1385static __inline__ __m256i __DEFAULT_FN_ATTRS 1386_mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) { 1387 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A, 1388 (__v32qi) __O, 1389 __M); 1390} 1391 1392static __inline__ __m256i __DEFAULT_FN_ATTRS 1393_mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A) { 1394 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A, 1395 (__v32qi) _mm256_setzero_si256(), 1396 __M); 1397} 1398 1399static __inline__ __m512i __DEFAULT_FN_ATTRS 1400_mm512_unpackhi_epi8 (__m512i __A, __m512i __B) { 1401 return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A, 1402 (__v64qi) __B, 1403 (__v64qi) _mm512_setzero_qi(), 1404 (__mmask64) -1); 1405} 1406 1407static __inline__ __m512i __DEFAULT_FN_ATTRS 1408_mm512_mask_unpackhi_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 1409 __m512i __B) { 1410 return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A, 1411 (__v64qi) __B, 1412 (__v64qi) __W, 1413 (__mmask64) __U); 1414} 1415 1416static __inline__ __m512i __DEFAULT_FN_ATTRS 1417_mm512_maskz_unpackhi_epi8 (__mmask64 __U, __m512i __A, __m512i __B) { 1418 return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A, 1419 (__v64qi) __B, 1420 (__v64qi) _mm512_setzero_qi(), 1421 (__mmask64) __U); 1422} 1423 1424static __inline__ __m512i __DEFAULT_FN_ATTRS 1425_mm512_unpackhi_epi16 (__m512i __A, __m512i __B) { 1426 return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A, 1427 (__v32hi) __B, 1428 (__v32hi) _mm512_setzero_hi(), 1429 (__mmask32) -1); 1430} 1431 1432static __inline__ __m512i __DEFAULT_FN_ATTRS 1433_mm512_mask_unpackhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1434 __m512i __B) { 1435 return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A, 1436 (__v32hi) __B, 1437 (__v32hi) __W, 1438 (__mmask32) __U); 1439} 1440 1441static __inline__ __m512i __DEFAULT_FN_ATTRS 1442_mm512_maskz_unpackhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B) { 1443 return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A, 1444 (__v32hi) __B, 1445 (__v32hi) _mm512_setzero_hi(), 1446 (__mmask32) __U); 1447} 1448 1449static __inline__ __m512i __DEFAULT_FN_ATTRS 1450_mm512_unpacklo_epi8 (__m512i __A, __m512i __B) { 1451 return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A, 1452 (__v64qi) __B, 1453 (__v64qi) _mm512_setzero_qi(), 1454 (__mmask64) -1); 1455} 1456 1457static __inline__ __m512i __DEFAULT_FN_ATTRS 1458_mm512_mask_unpacklo_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 1459 __m512i __B) { 1460 return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A, 1461 (__v64qi) __B, 1462 (__v64qi) __W, 1463 (__mmask64) __U); 1464} 1465 1466static __inline__ __m512i __DEFAULT_FN_ATTRS 1467_mm512_maskz_unpacklo_epi8 (__mmask64 __U, __m512i __A, __m512i __B) { 1468 return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A, 1469 (__v64qi) __B, 1470 (__v64qi) _mm512_setzero_qi(), 1471 (__mmask64) __U); 1472} 1473 1474static __inline__ __m512i __DEFAULT_FN_ATTRS 1475_mm512_unpacklo_epi16 (__m512i __A, __m512i __B) { 1476 return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A, 1477 (__v32hi) __B, 1478 (__v32hi) _mm512_setzero_hi(), 1479 (__mmask32) -1); 1480} 1481 1482static __inline__ __m512i __DEFAULT_FN_ATTRS 1483_mm512_mask_unpacklo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1484 __m512i __B) { 1485 return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A, 1486 (__v32hi) __B, 1487 (__v32hi) __W, 1488 (__mmask32) __U); 1489} 1490 1491static __inline__ __m512i __DEFAULT_FN_ATTRS 1492_mm512_maskz_unpacklo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) { 1493 return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A, 1494 (__v32hi) __B, 1495 (__v32hi) _mm512_setzero_hi(), 1496 (__mmask32) __U); 1497} 1498 1499#define _mm512_cmp_epi8_mask(a, b, p) __extension__ ({ \ 1500 (__mmask16)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \ 1501 (__v64qi)(__m512i)(b), \ 1502 (p), (__mmask64)-1); }) 1503 1504#define _mm512_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \ 1505 (__mmask16)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \ 1506 (__v64qi)(__m512i)(b), \ 1507 (p), (__mmask64)(m)); }) 1508 1509#define _mm512_cmp_epu8_mask(a, b, p) __extension__ ({ \ 1510 (__mmask16)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \ 1511 (__v64qi)(__m512i)(b), \ 1512 (p), (__mmask64)-1); }) 1513 1514#define _mm512_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \ 1515 (__mmask16)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \ 1516 (__v64qi)(__m512i)(b), \ 1517 (p), (__mmask64)(m)); }) 1518 1519#define _mm512_cmp_epi16_mask(a, b, p) __extension__ ({ \ 1520 (__mmask16)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \ 1521 (__v32hi)(__m512i)(b), \ 1522 (p), (__mmask32)-1); }) 1523 1524#define _mm512_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \ 1525 (__mmask16)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \ 1526 (__v32hi)(__m512i)(b), \ 1527 (p), (__mmask32)(m)); }) 1528 1529#define _mm512_cmp_epu16_mask(a, b, p) __extension__ ({ \ 1530 (__mmask16)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \ 1531 (__v32hi)(__m512i)(b), \ 1532 (p), (__mmask32)-1); }) 1533 1534#define _mm512_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \ 1535 (__mmask16)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \ 1536 (__v32hi)(__m512i)(b), \ 1537 (p), (__mmask32)(m)); }) 1538 1539 1540#undef __DEFAULT_FN_ATTRS 1541 1542#endif 1543