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; 33 34/* Define the default attributes for the functions in this file. */ 35#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512bw"))) 36 37static __inline __m512i __DEFAULT_FN_ATTRS 38_mm512_setzero_qi(void) { 39 return (__m512i)(__v64qi){ 0, 0, 0, 0, 0, 0, 0, 0, 40 0, 0, 0, 0, 0, 0, 0, 0, 41 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} 48 49static __inline __m512i __DEFAULT_FN_ATTRS 50_mm512_setzero_hi(void) { 51 return (__m512i)(__v32hi){ 0, 0, 0, 0, 0, 0, 0, 0, 52 0, 0, 0, 0, 0, 0, 0, 0, 53 0, 0, 0, 0, 0, 0, 0, 0, 54 0, 0, 0, 0, 0, 0, 0, 0 }; 55} 56 57/* Integer compare */ 58 59static __inline__ __mmask64 __DEFAULT_FN_ATTRS 60_mm512_cmpeq_epi8_mask(__m512i __a, __m512i __b) { 61 return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b, 62 (__mmask64)-1); 63} 64 65static __inline__ __mmask64 __DEFAULT_FN_ATTRS 66_mm512_mask_cmpeq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 67 return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b, 68 __u); 69} 70 71static __inline__ __mmask64 __DEFAULT_FN_ATTRS 72_mm512_cmpeq_epu8_mask(__m512i __a, __m512i __b) { 73 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0, 74 (__mmask64)-1); 75} 76 77static __inline__ __mmask64 __DEFAULT_FN_ATTRS 78_mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 79 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0, 80 __u); 81} 82 83static __inline__ __mmask32 __DEFAULT_FN_ATTRS 84_mm512_cmpeq_epi16_mask(__m512i __a, __m512i __b) { 85 return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b, 86 (__mmask32)-1); 87} 88 89static __inline__ __mmask32 __DEFAULT_FN_ATTRS 90_mm512_mask_cmpeq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 91 return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b, 92 __u); 93} 94 95static __inline__ __mmask32 __DEFAULT_FN_ATTRS 96_mm512_cmpeq_epu16_mask(__m512i __a, __m512i __b) { 97 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0, 98 (__mmask32)-1); 99} 100 101static __inline__ __mmask32 __DEFAULT_FN_ATTRS 102_mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 103 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0, 104 __u); 105} 106 107static __inline__ __mmask64 __DEFAULT_FN_ATTRS 108_mm512_cmpge_epi8_mask(__m512i __a, __m512i __b) { 109 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5, 110 (__mmask64)-1); 111} 112 113static __inline__ __mmask64 __DEFAULT_FN_ATTRS 114_mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 115 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5, 116 __u); 117} 118 119static __inline__ __mmask64 __DEFAULT_FN_ATTRS 120_mm512_cmpge_epu8_mask(__m512i __a, __m512i __b) { 121 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5, 122 (__mmask64)-1); 123} 124 125static __inline__ __mmask64 __DEFAULT_FN_ATTRS 126_mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 127 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5, 128 __u); 129} 130 131static __inline__ __mmask32 __DEFAULT_FN_ATTRS 132_mm512_cmpge_epi16_mask(__m512i __a, __m512i __b) { 133 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5, 134 (__mmask32)-1); 135} 136 137static __inline__ __mmask32 __DEFAULT_FN_ATTRS 138_mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 139 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5, 140 __u); 141} 142 143static __inline__ __mmask32 __DEFAULT_FN_ATTRS 144_mm512_cmpge_epu16_mask(__m512i __a, __m512i __b) { 145 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5, 146 (__mmask32)-1); 147} 148 149static __inline__ __mmask32 __DEFAULT_FN_ATTRS 150_mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 151 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5, 152 __u); 153} 154 155static __inline__ __mmask64 __DEFAULT_FN_ATTRS 156_mm512_cmpgt_epi8_mask(__m512i __a, __m512i __b) { 157 return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b, 158 (__mmask64)-1); 159} 160 161static __inline__ __mmask64 __DEFAULT_FN_ATTRS 162_mm512_mask_cmpgt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 163 return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b, 164 __u); 165} 166 167static __inline__ __mmask64 __DEFAULT_FN_ATTRS 168_mm512_cmpgt_epu8_mask(__m512i __a, __m512i __b) { 169 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6, 170 (__mmask64)-1); 171} 172 173static __inline__ __mmask64 __DEFAULT_FN_ATTRS 174_mm512_mask_cmpgt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 175 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6, 176 __u); 177} 178 179static __inline__ __mmask32 __DEFAULT_FN_ATTRS 180_mm512_cmpgt_epi16_mask(__m512i __a, __m512i __b) { 181 return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b, 182 (__mmask32)-1); 183} 184 185static __inline__ __mmask32 __DEFAULT_FN_ATTRS 186_mm512_mask_cmpgt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 187 return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b, 188 __u); 189} 190 191static __inline__ __mmask32 __DEFAULT_FN_ATTRS 192_mm512_cmpgt_epu16_mask(__m512i __a, __m512i __b) { 193 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6, 194 (__mmask32)-1); 195} 196 197static __inline__ __mmask32 __DEFAULT_FN_ATTRS 198_mm512_mask_cmpgt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 199 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6, 200 __u); 201} 202 203static __inline__ __mmask64 __DEFAULT_FN_ATTRS 204_mm512_cmple_epi8_mask(__m512i __a, __m512i __b) { 205 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2, 206 (__mmask64)-1); 207} 208 209static __inline__ __mmask64 __DEFAULT_FN_ATTRS 210_mm512_mask_cmple_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 211 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2, 212 __u); 213} 214 215static __inline__ __mmask64 __DEFAULT_FN_ATTRS 216_mm512_cmple_epu8_mask(__m512i __a, __m512i __b) { 217 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2, 218 (__mmask64)-1); 219} 220 221static __inline__ __mmask64 __DEFAULT_FN_ATTRS 222_mm512_mask_cmple_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 223 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2, 224 __u); 225} 226 227static __inline__ __mmask32 __DEFAULT_FN_ATTRS 228_mm512_cmple_epi16_mask(__m512i __a, __m512i __b) { 229 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2, 230 (__mmask32)-1); 231} 232 233static __inline__ __mmask32 __DEFAULT_FN_ATTRS 234_mm512_mask_cmple_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 235 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2, 236 __u); 237} 238 239static __inline__ __mmask32 __DEFAULT_FN_ATTRS 240_mm512_cmple_epu16_mask(__m512i __a, __m512i __b) { 241 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2, 242 (__mmask32)-1); 243} 244 245static __inline__ __mmask32 __DEFAULT_FN_ATTRS 246_mm512_mask_cmple_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 247 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2, 248 __u); 249} 250 251static __inline__ __mmask64 __DEFAULT_FN_ATTRS 252_mm512_cmplt_epi8_mask(__m512i __a, __m512i __b) { 253 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1, 254 (__mmask64)-1); 255} 256 257static __inline__ __mmask64 __DEFAULT_FN_ATTRS 258_mm512_mask_cmplt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 259 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1, 260 __u); 261} 262 263static __inline__ __mmask64 __DEFAULT_FN_ATTRS 264_mm512_cmplt_epu8_mask(__m512i __a, __m512i __b) { 265 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1, 266 (__mmask64)-1); 267} 268 269static __inline__ __mmask64 __DEFAULT_FN_ATTRS 270_mm512_mask_cmplt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 271 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1, 272 __u); 273} 274 275static __inline__ __mmask32 __DEFAULT_FN_ATTRS 276_mm512_cmplt_epi16_mask(__m512i __a, __m512i __b) { 277 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1, 278 (__mmask32)-1); 279} 280 281static __inline__ __mmask32 __DEFAULT_FN_ATTRS 282_mm512_mask_cmplt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 283 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1, 284 __u); 285} 286 287static __inline__ __mmask32 __DEFAULT_FN_ATTRS 288_mm512_cmplt_epu16_mask(__m512i __a, __m512i __b) { 289 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1, 290 (__mmask32)-1); 291} 292 293static __inline__ __mmask32 __DEFAULT_FN_ATTRS 294_mm512_mask_cmplt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 295 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1, 296 __u); 297} 298 299static __inline__ __mmask64 __DEFAULT_FN_ATTRS 300_mm512_cmpneq_epi8_mask(__m512i __a, __m512i __b) { 301 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4, 302 (__mmask64)-1); 303} 304 305static __inline__ __mmask64 __DEFAULT_FN_ATTRS 306_mm512_mask_cmpneq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 307 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4, 308 __u); 309} 310 311static __inline__ __mmask64 __DEFAULT_FN_ATTRS 312_mm512_cmpneq_epu8_mask(__m512i __a, __m512i __b) { 313 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4, 314 (__mmask64)-1); 315} 316 317static __inline__ __mmask64 __DEFAULT_FN_ATTRS 318_mm512_mask_cmpneq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) { 319 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4, 320 __u); 321} 322 323static __inline__ __mmask32 __DEFAULT_FN_ATTRS 324_mm512_cmpneq_epi16_mask(__m512i __a, __m512i __b) { 325 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4, 326 (__mmask32)-1); 327} 328 329static __inline__ __mmask32 __DEFAULT_FN_ATTRS 330_mm512_mask_cmpneq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 331 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4, 332 __u); 333} 334 335static __inline__ __mmask32 __DEFAULT_FN_ATTRS 336_mm512_cmpneq_epu16_mask(__m512i __a, __m512i __b) { 337 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4, 338 (__mmask32)-1); 339} 340 341static __inline__ __mmask32 __DEFAULT_FN_ATTRS 342_mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) { 343 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4, 344 __u); 345} 346 347static __inline__ __m512i __DEFAULT_FN_ATTRS 348_mm512_add_epi8 (__m512i __A, __m512i __B) { 349 return (__m512i) ((__v64qu) __A + (__v64qu) __B); 350} 351 352static __inline__ __m512i __DEFAULT_FN_ATTRS 353_mm512_mask_add_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { 354 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U, 355 (__v64qi)_mm512_add_epi8(__A, __B), 356 (__v64qi)__W); 357} 358 359static __inline__ __m512i __DEFAULT_FN_ATTRS 360_mm512_maskz_add_epi8(__mmask64 __U, __m512i __A, __m512i __B) { 361 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U, 362 (__v64qi)_mm512_add_epi8(__A, __B), 363 (__v64qi)_mm512_setzero_qi()); 364} 365 366static __inline__ __m512i __DEFAULT_FN_ATTRS 367_mm512_sub_epi8 (__m512i __A, __m512i __B) { 368 return (__m512i) ((__v64qu) __A - (__v64qu) __B); 369} 370 371static __inline__ __m512i __DEFAULT_FN_ATTRS 372_mm512_mask_sub_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { 373 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U, 374 (__v64qi)_mm512_sub_epi8(__A, __B), 375 (__v64qi)__W); 376} 377 378static __inline__ __m512i __DEFAULT_FN_ATTRS 379_mm512_maskz_sub_epi8(__mmask64 __U, __m512i __A, __m512i __B) { 380 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U, 381 (__v64qi)_mm512_sub_epi8(__A, __B), 382 (__v64qi)_mm512_setzero_qi()); 383} 384 385static __inline__ __m512i __DEFAULT_FN_ATTRS 386_mm512_add_epi16 (__m512i __A, __m512i __B) { 387 return (__m512i) ((__v32hu) __A + (__v32hu) __B); 388} 389 390static __inline__ __m512i __DEFAULT_FN_ATTRS 391_mm512_mask_add_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 392 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 393 (__v32hi)_mm512_add_epi16(__A, __B), 394 (__v32hi)__W); 395} 396 397static __inline__ __m512i __DEFAULT_FN_ATTRS 398_mm512_maskz_add_epi16(__mmask32 __U, __m512i __A, __m512i __B) { 399 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 400 (__v32hi)_mm512_add_epi16(__A, __B), 401 (__v32hi)_mm512_setzero_hi()); 402} 403 404static __inline__ __m512i __DEFAULT_FN_ATTRS 405_mm512_sub_epi16 (__m512i __A, __m512i __B) { 406 return (__m512i) ((__v32hu) __A - (__v32hu) __B); 407} 408 409static __inline__ __m512i __DEFAULT_FN_ATTRS 410_mm512_mask_sub_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 411 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 412 (__v32hi)_mm512_sub_epi16(__A, __B), 413 (__v32hi)__W); 414} 415 416static __inline__ __m512i __DEFAULT_FN_ATTRS 417_mm512_maskz_sub_epi16(__mmask32 __U, __m512i __A, __m512i __B) { 418 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 419 (__v32hi)_mm512_sub_epi16(__A, __B), 420 (__v32hi)_mm512_setzero_hi()); 421} 422 423static __inline__ __m512i __DEFAULT_FN_ATTRS 424_mm512_mullo_epi16 (__m512i __A, __m512i __B) { 425 return (__m512i) ((__v32hu) __A * (__v32hu) __B); 426} 427 428static __inline__ __m512i __DEFAULT_FN_ATTRS 429_mm512_mask_mullo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 430 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 431 (__v32hi)_mm512_mullo_epi16(__A, __B), 432 (__v32hi)__W); 433} 434 435static __inline__ __m512i __DEFAULT_FN_ATTRS 436_mm512_maskz_mullo_epi16(__mmask32 __U, __m512i __A, __m512i __B) { 437 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 438 (__v32hi)_mm512_mullo_epi16(__A, __B), 439 (__v32hi)_mm512_setzero_hi()); 440} 441 442static __inline__ __m512i __DEFAULT_FN_ATTRS 443_mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W) 444{ 445 return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U, 446 (__v64qi) __W, 447 (__v64qi) __A); 448} 449 450static __inline__ __m512i __DEFAULT_FN_ATTRS 451_mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W) 452{ 453 return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U, 454 (__v32hi) __W, 455 (__v32hi) __A); 456} 457 458static __inline__ __m512i __DEFAULT_FN_ATTRS 459_mm512_abs_epi8 (__m512i __A) 460{ 461 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A, 462 (__v64qi) _mm512_setzero_qi(), 463 (__mmask64) -1); 464} 465 466static __inline__ __m512i __DEFAULT_FN_ATTRS 467_mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A) 468{ 469 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A, 470 (__v64qi) __W, 471 (__mmask64) __U); 472} 473 474static __inline__ __m512i __DEFAULT_FN_ATTRS 475_mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A) 476{ 477 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A, 478 (__v64qi) _mm512_setzero_qi(), 479 (__mmask64) __U); 480} 481 482static __inline__ __m512i __DEFAULT_FN_ATTRS 483_mm512_abs_epi16 (__m512i __A) 484{ 485 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A, 486 (__v32hi) _mm512_setzero_hi(), 487 (__mmask32) -1); 488} 489 490static __inline__ __m512i __DEFAULT_FN_ATTRS 491_mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A) 492{ 493 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A, 494 (__v32hi) __W, 495 (__mmask32) __U); 496} 497 498static __inline__ __m512i __DEFAULT_FN_ATTRS 499_mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A) 500{ 501 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A, 502 (__v32hi) _mm512_setzero_hi(), 503 (__mmask32) __U); 504} 505 506static __inline__ __m512i __DEFAULT_FN_ATTRS 507_mm512_packs_epi32(__m512i __A, __m512i __B) 508{ 509 return (__m512i)__builtin_ia32_packssdw512((__v16si)__A, (__v16si)__B); 510} 511 512static __inline__ __m512i __DEFAULT_FN_ATTRS 513_mm512_maskz_packs_epi32(__mmask32 __M, __m512i __A, __m512i __B) 514{ 515 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M, 516 (__v32hi)_mm512_packs_epi32(__A, __B), 517 (__v32hi)_mm512_setzero_hi()); 518} 519 520static __inline__ __m512i __DEFAULT_FN_ATTRS 521_mm512_mask_packs_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) 522{ 523 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M, 524 (__v32hi)_mm512_packs_epi32(__A, __B), 525 (__v32hi)__W); 526} 527 528static __inline__ __m512i __DEFAULT_FN_ATTRS 529_mm512_packs_epi16(__m512i __A, __m512i __B) 530{ 531 return (__m512i)__builtin_ia32_packsswb512((__v32hi)__A, (__v32hi) __B); 532} 533 534static __inline__ __m512i __DEFAULT_FN_ATTRS 535_mm512_mask_packs_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) 536{ 537 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M, 538 (__v64qi)_mm512_packs_epi16(__A, __B), 539 (__v64qi)__W); 540} 541 542static __inline__ __m512i __DEFAULT_FN_ATTRS 543_mm512_maskz_packs_epi16(__mmask64 __M, __m512i __A, __m512i __B) 544{ 545 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M, 546 (__v64qi)_mm512_packs_epi16(__A, __B), 547 (__v64qi)_mm512_setzero_qi()); 548} 549 550static __inline__ __m512i __DEFAULT_FN_ATTRS 551_mm512_packus_epi32(__m512i __A, __m512i __B) 552{ 553 return (__m512i)__builtin_ia32_packusdw512((__v16si) __A, (__v16si) __B); 554} 555 556static __inline__ __m512i __DEFAULT_FN_ATTRS 557_mm512_maskz_packus_epi32(__mmask32 __M, __m512i __A, __m512i __B) 558{ 559 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M, 560 (__v32hi)_mm512_packus_epi32(__A, __B), 561 (__v32hi)_mm512_setzero_hi()); 562} 563 564static __inline__ __m512i __DEFAULT_FN_ATTRS 565_mm512_mask_packus_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) 566{ 567 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M, 568 (__v32hi)_mm512_packus_epi32(__A, __B), 569 (__v32hi)__W); 570} 571 572static __inline__ __m512i __DEFAULT_FN_ATTRS 573_mm512_packus_epi16(__m512i __A, __m512i __B) 574{ 575 return (__m512i)__builtin_ia32_packuswb512((__v32hi) __A, (__v32hi) __B); 576} 577 578static __inline__ __m512i __DEFAULT_FN_ATTRS 579_mm512_mask_packus_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) 580{ 581 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M, 582 (__v64qi)_mm512_packus_epi16(__A, __B), 583 (__v64qi)__W); 584} 585 586static __inline__ __m512i __DEFAULT_FN_ATTRS 587_mm512_maskz_packus_epi16(__mmask64 __M, __m512i __A, __m512i __B) 588{ 589 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M, 590 (__v64qi)_mm512_packus_epi16(__A, __B), 591 (__v64qi)_mm512_setzero_qi()); 592} 593 594static __inline__ __m512i __DEFAULT_FN_ATTRS 595_mm512_adds_epi8 (__m512i __A, __m512i __B) 596{ 597 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A, 598 (__v64qi) __B, 599 (__v64qi) _mm512_setzero_qi(), 600 (__mmask64) -1); 601} 602 603static __inline__ __m512i __DEFAULT_FN_ATTRS 604_mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 605 __m512i __B) 606{ 607 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A, 608 (__v64qi) __B, 609 (__v64qi) __W, 610 (__mmask64) __U); 611} 612 613static __inline__ __m512i __DEFAULT_FN_ATTRS 614_mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 615{ 616 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A, 617 (__v64qi) __B, 618 (__v64qi) _mm512_setzero_qi(), 619 (__mmask64) __U); 620} 621 622static __inline__ __m512i __DEFAULT_FN_ATTRS 623_mm512_adds_epi16 (__m512i __A, __m512i __B) 624{ 625 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A, 626 (__v32hi) __B, 627 (__v32hi) _mm512_setzero_hi(), 628 (__mmask32) -1); 629} 630 631static __inline__ __m512i __DEFAULT_FN_ATTRS 632_mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 633 __m512i __B) 634{ 635 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A, 636 (__v32hi) __B, 637 (__v32hi) __W, 638 (__mmask32) __U); 639} 640 641static __inline__ __m512i __DEFAULT_FN_ATTRS 642_mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 643{ 644 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A, 645 (__v32hi) __B, 646 (__v32hi) _mm512_setzero_hi(), 647 (__mmask32) __U); 648} 649 650static __inline__ __m512i __DEFAULT_FN_ATTRS 651_mm512_adds_epu8 (__m512i __A, __m512i __B) 652{ 653 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A, 654 (__v64qi) __B, 655 (__v64qi) _mm512_setzero_qi(), 656 (__mmask64) -1); 657} 658 659static __inline__ __m512i __DEFAULT_FN_ATTRS 660_mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A, 661 __m512i __B) 662{ 663 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A, 664 (__v64qi) __B, 665 (__v64qi) __W, 666 (__mmask64) __U); 667} 668 669static __inline__ __m512i __DEFAULT_FN_ATTRS 670_mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B) 671{ 672 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A, 673 (__v64qi) __B, 674 (__v64qi) _mm512_setzero_qi(), 675 (__mmask64) __U); 676} 677 678static __inline__ __m512i __DEFAULT_FN_ATTRS 679_mm512_adds_epu16 (__m512i __A, __m512i __B) 680{ 681 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A, 682 (__v32hi) __B, 683 (__v32hi) _mm512_setzero_hi(), 684 (__mmask32) -1); 685} 686 687static __inline__ __m512i __DEFAULT_FN_ATTRS 688_mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 689 __m512i __B) 690{ 691 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A, 692 (__v32hi) __B, 693 (__v32hi) __W, 694 (__mmask32) __U); 695} 696 697static __inline__ __m512i __DEFAULT_FN_ATTRS 698_mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 699{ 700 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A, 701 (__v32hi) __B, 702 (__v32hi) _mm512_setzero_hi(), 703 (__mmask32) __U); 704} 705 706static __inline__ __m512i __DEFAULT_FN_ATTRS 707_mm512_avg_epu8 (__m512i __A, __m512i __B) 708{ 709 typedef unsigned short __v64hu __attribute__((__vector_size__(128))); 710 return (__m512i)__builtin_convertvector( 711 ((__builtin_convertvector((__v64qu) __A, __v64hu) + 712 __builtin_convertvector((__v64qu) __B, __v64hu)) + 1) 713 >> 1, __v64qu); 714} 715 716static __inline__ __m512i __DEFAULT_FN_ATTRS 717_mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A, 718 __m512i __B) 719{ 720 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U, 721 (__v64qi)_mm512_avg_epu8(__A, __B), 722 (__v64qi)__W); 723} 724 725static __inline__ __m512i __DEFAULT_FN_ATTRS 726_mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B) 727{ 728 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U, 729 (__v64qi)_mm512_avg_epu8(__A, __B), 730 (__v64qi)_mm512_setzero_qi()); 731} 732 733static __inline__ __m512i __DEFAULT_FN_ATTRS 734_mm512_avg_epu16 (__m512i __A, __m512i __B) 735{ 736 typedef unsigned int __v32su __attribute__((__vector_size__(128))); 737 return (__m512i)__builtin_convertvector( 738 ((__builtin_convertvector((__v32hu) __A, __v32su) + 739 __builtin_convertvector((__v32hu) __B, __v32su)) + 1) 740 >> 1, __v32hu); 741} 742 743static __inline__ __m512i __DEFAULT_FN_ATTRS 744_mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 745 __m512i __B) 746{ 747 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 748 (__v32hi)_mm512_avg_epu16(__A, __B), 749 (__v32hi)__W); 750} 751 752static __inline__ __m512i __DEFAULT_FN_ATTRS 753_mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 754{ 755 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 756 (__v32hi)_mm512_avg_epu16(__A, __B), 757 (__v32hi) _mm512_setzero_hi()); 758} 759 760static __inline__ __m512i __DEFAULT_FN_ATTRS 761_mm512_max_epi8 (__m512i __A, __m512i __B) 762{ 763 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, 764 (__v64qi) __B, 765 (__v64qi) _mm512_setzero_qi(), 766 (__mmask64) -1); 767} 768 769static __inline__ __m512i __DEFAULT_FN_ATTRS 770_mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B) 771{ 772 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, 773 (__v64qi) __B, 774 (__v64qi) _mm512_setzero_qi(), 775 (__mmask64) __M); 776} 777 778static __inline__ __m512i __DEFAULT_FN_ATTRS 779_mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A, 780 __m512i __B) 781{ 782 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, 783 (__v64qi) __B, 784 (__v64qi) __W, 785 (__mmask64) __M); 786} 787 788static __inline__ __m512i __DEFAULT_FN_ATTRS 789_mm512_max_epi16 (__m512i __A, __m512i __B) 790{ 791 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, 792 (__v32hi) __B, 793 (__v32hi) _mm512_setzero_hi(), 794 (__mmask32) -1); 795} 796 797static __inline__ __m512i __DEFAULT_FN_ATTRS 798_mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B) 799{ 800 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, 801 (__v32hi) __B, 802 (__v32hi) _mm512_setzero_hi(), 803 (__mmask32) __M); 804} 805 806static __inline__ __m512i __DEFAULT_FN_ATTRS 807_mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A, 808 __m512i __B) 809{ 810 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, 811 (__v32hi) __B, 812 (__v32hi) __W, 813 (__mmask32) __M); 814} 815 816static __inline__ __m512i __DEFAULT_FN_ATTRS 817_mm512_max_epu8 (__m512i __A, __m512i __B) 818{ 819 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, 820 (__v64qi) __B, 821 (__v64qi) _mm512_setzero_qi(), 822 (__mmask64) -1); 823} 824 825static __inline__ __m512i __DEFAULT_FN_ATTRS 826_mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B) 827{ 828 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, 829 (__v64qi) __B, 830 (__v64qi) _mm512_setzero_qi(), 831 (__mmask64) __M); 832} 833 834static __inline__ __m512i __DEFAULT_FN_ATTRS 835_mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A, 836 __m512i __B) 837{ 838 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, 839 (__v64qi) __B, 840 (__v64qi) __W, 841 (__mmask64) __M); 842} 843 844static __inline__ __m512i __DEFAULT_FN_ATTRS 845_mm512_max_epu16 (__m512i __A, __m512i __B) 846{ 847 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, 848 (__v32hi) __B, 849 (__v32hi) _mm512_setzero_hi(), 850 (__mmask32) -1); 851} 852 853static __inline__ __m512i __DEFAULT_FN_ATTRS 854_mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B) 855{ 856 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, 857 (__v32hi) __B, 858 (__v32hi) _mm512_setzero_hi(), 859 (__mmask32) __M); 860} 861 862static __inline__ __m512i __DEFAULT_FN_ATTRS 863_mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A, 864 __m512i __B) 865{ 866 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, 867 (__v32hi) __B, 868 (__v32hi) __W, 869 (__mmask32) __M); 870} 871 872static __inline__ __m512i __DEFAULT_FN_ATTRS 873_mm512_min_epi8 (__m512i __A, __m512i __B) 874{ 875 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, 876 (__v64qi) __B, 877 (__v64qi) _mm512_setzero_qi(), 878 (__mmask64) -1); 879} 880 881static __inline__ __m512i __DEFAULT_FN_ATTRS 882_mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B) 883{ 884 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, 885 (__v64qi) __B, 886 (__v64qi) _mm512_setzero_qi(), 887 (__mmask64) __M); 888} 889 890static __inline__ __m512i __DEFAULT_FN_ATTRS 891_mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A, 892 __m512i __B) 893{ 894 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, 895 (__v64qi) __B, 896 (__v64qi) __W, 897 (__mmask64) __M); 898} 899 900static __inline__ __m512i __DEFAULT_FN_ATTRS 901_mm512_min_epi16 (__m512i __A, __m512i __B) 902{ 903 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, 904 (__v32hi) __B, 905 (__v32hi) _mm512_setzero_hi(), 906 (__mmask32) -1); 907} 908 909static __inline__ __m512i __DEFAULT_FN_ATTRS 910_mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B) 911{ 912 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, 913 (__v32hi) __B, 914 (__v32hi) _mm512_setzero_hi(), 915 (__mmask32) __M); 916} 917 918static __inline__ __m512i __DEFAULT_FN_ATTRS 919_mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A, 920 __m512i __B) 921{ 922 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, 923 (__v32hi) __B, 924 (__v32hi) __W, 925 (__mmask32) __M); 926} 927 928static __inline__ __m512i __DEFAULT_FN_ATTRS 929_mm512_min_epu8 (__m512i __A, __m512i __B) 930{ 931 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, 932 (__v64qi) __B, 933 (__v64qi) _mm512_setzero_qi(), 934 (__mmask64) -1); 935} 936 937static __inline__ __m512i __DEFAULT_FN_ATTRS 938_mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B) 939{ 940 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, 941 (__v64qi) __B, 942 (__v64qi) _mm512_setzero_qi(), 943 (__mmask64) __M); 944} 945 946static __inline__ __m512i __DEFAULT_FN_ATTRS 947_mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A, 948 __m512i __B) 949{ 950 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, 951 (__v64qi) __B, 952 (__v64qi) __W, 953 (__mmask64) __M); 954} 955 956static __inline__ __m512i __DEFAULT_FN_ATTRS 957_mm512_min_epu16 (__m512i __A, __m512i __B) 958{ 959 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, 960 (__v32hi) __B, 961 (__v32hi) _mm512_setzero_hi(), 962 (__mmask32) -1); 963} 964 965static __inline__ __m512i __DEFAULT_FN_ATTRS 966_mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B) 967{ 968 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, 969 (__v32hi) __B, 970 (__v32hi) _mm512_setzero_hi(), 971 (__mmask32) __M); 972} 973 974static __inline__ __m512i __DEFAULT_FN_ATTRS 975_mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A, 976 __m512i __B) 977{ 978 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, 979 (__v32hi) __B, 980 (__v32hi) __W, 981 (__mmask32) __M); 982} 983 984static __inline__ __m512i __DEFAULT_FN_ATTRS 985_mm512_shuffle_epi8(__m512i __A, __m512i __B) 986{ 987 return (__m512i)__builtin_ia32_pshufb512((__v64qi)__A,(__v64qi)__B); 988} 989 990static __inline__ __m512i __DEFAULT_FN_ATTRS 991_mm512_mask_shuffle_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) 992{ 993 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U, 994 (__v64qi)_mm512_shuffle_epi8(__A, __B), 995 (__v64qi)__W); 996} 997 998static __inline__ __m512i __DEFAULT_FN_ATTRS 999_mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B) 1000{ 1001 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U, 1002 (__v64qi)_mm512_shuffle_epi8(__A, __B), 1003 (__v64qi)_mm512_setzero_qi()); 1004} 1005 1006static __inline__ __m512i __DEFAULT_FN_ATTRS 1007_mm512_subs_epi8 (__m512i __A, __m512i __B) 1008{ 1009 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, 1010 (__v64qi) __B, 1011 (__v64qi) _mm512_setzero_qi(), 1012 (__mmask64) -1); 1013} 1014 1015static __inline__ __m512i __DEFAULT_FN_ATTRS 1016_mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 1017 __m512i __B) 1018{ 1019 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, 1020 (__v64qi) __B, 1021 (__v64qi) __W, 1022 (__mmask64) __U); 1023} 1024 1025static __inline__ __m512i __DEFAULT_FN_ATTRS 1026_mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 1027{ 1028 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, 1029 (__v64qi) __B, 1030 (__v64qi) _mm512_setzero_qi(), 1031 (__mmask64) __U); 1032} 1033 1034static __inline__ __m512i __DEFAULT_FN_ATTRS 1035_mm512_subs_epi16 (__m512i __A, __m512i __B) 1036{ 1037 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, 1038 (__v32hi) __B, 1039 (__v32hi) _mm512_setzero_hi(), 1040 (__mmask32) -1); 1041} 1042 1043static __inline__ __m512i __DEFAULT_FN_ATTRS 1044_mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1045 __m512i __B) 1046{ 1047 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, 1048 (__v32hi) __B, 1049 (__v32hi) __W, 1050 (__mmask32) __U); 1051} 1052 1053static __inline__ __m512i __DEFAULT_FN_ATTRS 1054_mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1055{ 1056 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, 1057 (__v32hi) __B, 1058 (__v32hi) _mm512_setzero_hi(), 1059 (__mmask32) __U); 1060} 1061 1062static __inline__ __m512i __DEFAULT_FN_ATTRS 1063_mm512_subs_epu8 (__m512i __A, __m512i __B) 1064{ 1065 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, 1066 (__v64qi) __B, 1067 (__v64qi) _mm512_setzero_qi(), 1068 (__mmask64) -1); 1069} 1070 1071static __inline__ __m512i __DEFAULT_FN_ATTRS 1072_mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A, 1073 __m512i __B) 1074{ 1075 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, 1076 (__v64qi) __B, 1077 (__v64qi) __W, 1078 (__mmask64) __U); 1079} 1080 1081static __inline__ __m512i __DEFAULT_FN_ATTRS 1082_mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B) 1083{ 1084 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, 1085 (__v64qi) __B, 1086 (__v64qi) _mm512_setzero_qi(), 1087 (__mmask64) __U); 1088} 1089 1090static __inline__ __m512i __DEFAULT_FN_ATTRS 1091_mm512_subs_epu16 (__m512i __A, __m512i __B) 1092{ 1093 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, 1094 (__v32hi) __B, 1095 (__v32hi) _mm512_setzero_hi(), 1096 (__mmask32) -1); 1097} 1098 1099static __inline__ __m512i __DEFAULT_FN_ATTRS 1100_mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 1101 __m512i __B) 1102{ 1103 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, 1104 (__v32hi) __B, 1105 (__v32hi) __W, 1106 (__mmask32) __U); 1107} 1108 1109static __inline__ __m512i __DEFAULT_FN_ATTRS 1110_mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 1111{ 1112 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, 1113 (__v32hi) __B, 1114 (__v32hi) _mm512_setzero_hi(), 1115 (__mmask32) __U); 1116} 1117 1118static __inline__ __m512i __DEFAULT_FN_ATTRS 1119_mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I, 1120 __mmask32 __U, __m512i __B) 1121{ 1122 return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A, 1123 (__v32hi) __I /* idx */ , 1124 (__v32hi) __B, 1125 (__mmask32) __U); 1126} 1127 1128static __inline__ __m512i __DEFAULT_FN_ATTRS 1129_mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B) 1130{ 1131 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */, 1132 (__v32hi) __A, 1133 (__v32hi) __B, 1134 (__mmask32) -1); 1135} 1136 1137static __inline__ __m512i __DEFAULT_FN_ATTRS 1138_mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U, 1139 __m512i __I, __m512i __B) 1140{ 1141 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */, 1142 (__v32hi) __A, 1143 (__v32hi) __B, 1144 (__mmask32) __U); 1145} 1146 1147static __inline__ __m512i __DEFAULT_FN_ATTRS 1148_mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A, 1149 __m512i __I, __m512i __B) 1150{ 1151 return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I 1152 /* idx */ , 1153 (__v32hi) __A, 1154 (__v32hi) __B, 1155 (__mmask32) __U); 1156} 1157 1158static __inline__ __m512i __DEFAULT_FN_ATTRS 1159_mm512_mulhrs_epi16 (__m512i __A, __m512i __B) 1160{ 1161 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A, 1162 (__v32hi) __B, 1163 (__v32hi) _mm512_setzero_hi(), 1164 (__mmask32) -1); 1165} 1166 1167static __inline__ __m512i __DEFAULT_FN_ATTRS 1168_mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1169 __m512i __B) 1170{ 1171 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A, 1172 (__v32hi) __B, 1173 (__v32hi) __W, 1174 (__mmask32) __U); 1175} 1176 1177static __inline__ __m512i __DEFAULT_FN_ATTRS 1178_mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1179{ 1180 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A, 1181 (__v32hi) __B, 1182 (__v32hi) _mm512_setzero_hi(), 1183 (__mmask32) __U); 1184} 1185 1186static __inline__ __m512i __DEFAULT_FN_ATTRS 1187_mm512_mulhi_epi16 (__m512i __A, __m512i __B) 1188{ 1189 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A, 1190 (__v32hi) __B, 1191 (__v32hi) _mm512_setzero_hi(), 1192 (__mmask32) -1); 1193} 1194 1195static __inline__ __m512i __DEFAULT_FN_ATTRS 1196_mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1197 __m512i __B) 1198{ 1199 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A, 1200 (__v32hi) __B, 1201 (__v32hi) __W, 1202 (__mmask32) __U); 1203} 1204 1205static __inline__ __m512i __DEFAULT_FN_ATTRS 1206_mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1207{ 1208 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A, 1209 (__v32hi) __B, 1210 (__v32hi) _mm512_setzero_hi(), 1211 (__mmask32) __U); 1212} 1213 1214static __inline__ __m512i __DEFAULT_FN_ATTRS 1215_mm512_mulhi_epu16 (__m512i __A, __m512i __B) 1216{ 1217 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A, 1218 (__v32hi) __B, 1219 (__v32hi) _mm512_setzero_hi(), 1220 (__mmask32) -1); 1221} 1222 1223static __inline__ __m512i __DEFAULT_FN_ATTRS 1224_mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 1225 __m512i __B) 1226{ 1227 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A, 1228 (__v32hi) __B, 1229 (__v32hi) __W, 1230 (__mmask32) __U); 1231} 1232 1233static __inline__ __m512i __DEFAULT_FN_ATTRS 1234_mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 1235{ 1236 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A, 1237 (__v32hi) __B, 1238 (__v32hi) _mm512_setzero_hi(), 1239 (__mmask32) __U); 1240} 1241 1242static __inline__ __m512i __DEFAULT_FN_ATTRS 1243_mm512_maddubs_epi16 (__m512i __X, __m512i __Y) { 1244 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X, 1245 (__v64qi) __Y, 1246 (__v32hi) _mm512_setzero_hi(), 1247 (__mmask32) -1); 1248} 1249 1250static __inline__ __m512i __DEFAULT_FN_ATTRS 1251_mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X, 1252 __m512i __Y) { 1253 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X, 1254 (__v64qi) __Y, 1255 (__v32hi) __W, 1256 (__mmask32) __U); 1257} 1258 1259static __inline__ __m512i __DEFAULT_FN_ATTRS 1260_mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y) { 1261 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X, 1262 (__v64qi) __Y, 1263 (__v32hi) _mm512_setzero_hi(), 1264 (__mmask32) __U); 1265} 1266 1267static __inline__ __m512i __DEFAULT_FN_ATTRS 1268_mm512_madd_epi16 (__m512i __A, __m512i __B) { 1269 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A, 1270 (__v32hi) __B, 1271 (__v16si) _mm512_setzero_si512(), 1272 (__mmask16) -1); 1273} 1274 1275static __inline__ __m512i __DEFAULT_FN_ATTRS 1276_mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A, 1277 __m512i __B) { 1278 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A, 1279 (__v32hi) __B, 1280 (__v16si) __W, 1281 (__mmask16) __U); 1282} 1283 1284static __inline__ __m512i __DEFAULT_FN_ATTRS 1285_mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B) { 1286 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A, 1287 (__v32hi) __B, 1288 (__v16si) _mm512_setzero_si512(), 1289 (__mmask16) __U); 1290} 1291 1292static __inline__ __m256i __DEFAULT_FN_ATTRS 1293_mm512_cvtsepi16_epi8 (__m512i __A) { 1294 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A, 1295 (__v32qi)_mm256_setzero_si256(), 1296 (__mmask32) -1); 1297} 1298 1299static __inline__ __m256i __DEFAULT_FN_ATTRS 1300_mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) { 1301 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A, 1302 (__v32qi)__O, 1303 __M); 1304} 1305 1306static __inline__ __m256i __DEFAULT_FN_ATTRS 1307_mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A) { 1308 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A, 1309 (__v32qi) _mm256_setzero_si256(), 1310 __M); 1311} 1312 1313static __inline__ __m256i __DEFAULT_FN_ATTRS 1314_mm512_cvtusepi16_epi8 (__m512i __A) { 1315 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A, 1316 (__v32qi) _mm256_setzero_si256(), 1317 (__mmask32) -1); 1318} 1319 1320static __inline__ __m256i __DEFAULT_FN_ATTRS 1321_mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) { 1322 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A, 1323 (__v32qi) __O, 1324 __M); 1325} 1326 1327static __inline__ __m256i __DEFAULT_FN_ATTRS 1328_mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A) { 1329 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A, 1330 (__v32qi) _mm256_setzero_si256(), 1331 __M); 1332} 1333 1334static __inline__ __m256i __DEFAULT_FN_ATTRS 1335_mm512_cvtepi16_epi8 (__m512i __A) { 1336 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A, 1337 (__v32qi) _mm256_setzero_si256(), 1338 (__mmask32) -1); 1339} 1340 1341static __inline__ __m256i __DEFAULT_FN_ATTRS 1342_mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) { 1343 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A, 1344 (__v32qi) __O, 1345 __M); 1346} 1347 1348static __inline__ __m256i __DEFAULT_FN_ATTRS 1349_mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A) { 1350 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A, 1351 (__v32qi) _mm256_setzero_si256(), 1352 __M); 1353} 1354 1355static __inline__ void __DEFAULT_FN_ATTRS 1356_mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A) 1357{ 1358 __builtin_ia32_pmovwb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M); 1359} 1360 1361static __inline__ void __DEFAULT_FN_ATTRS 1362_mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A) 1363{ 1364 __builtin_ia32_pmovswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M); 1365} 1366 1367static __inline__ void __DEFAULT_FN_ATTRS 1368_mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A) 1369{ 1370 __builtin_ia32_pmovuswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M); 1371} 1372 1373static __inline__ __m512i __DEFAULT_FN_ATTRS 1374_mm512_unpackhi_epi8(__m512i __A, __m512i __B) { 1375 return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B, 1376 8, 64+8, 9, 64+9, 1377 10, 64+10, 11, 64+11, 1378 12, 64+12, 13, 64+13, 1379 14, 64+14, 15, 64+15, 1380 24, 64+24, 25, 64+25, 1381 26, 64+26, 27, 64+27, 1382 28, 64+28, 29, 64+29, 1383 30, 64+30, 31, 64+31, 1384 40, 64+40, 41, 64+41, 1385 42, 64+42, 43, 64+43, 1386 44, 64+44, 45, 64+45, 1387 46, 64+46, 47, 64+47, 1388 56, 64+56, 57, 64+57, 1389 58, 64+58, 59, 64+59, 1390 60, 64+60, 61, 64+61, 1391 62, 64+62, 63, 64+63); 1392} 1393 1394static __inline__ __m512i __DEFAULT_FN_ATTRS 1395_mm512_mask_unpackhi_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { 1396 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U, 1397 (__v64qi)_mm512_unpackhi_epi8(__A, __B), 1398 (__v64qi)__W); 1399} 1400 1401static __inline__ __m512i __DEFAULT_FN_ATTRS 1402_mm512_maskz_unpackhi_epi8(__mmask64 __U, __m512i __A, __m512i __B) { 1403 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U, 1404 (__v64qi)_mm512_unpackhi_epi8(__A, __B), 1405 (__v64qi)_mm512_setzero_qi()); 1406} 1407 1408static __inline__ __m512i __DEFAULT_FN_ATTRS 1409_mm512_unpackhi_epi16(__m512i __A, __m512i __B) { 1410 return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B, 1411 4, 32+4, 5, 32+5, 1412 6, 32+6, 7, 32+7, 1413 12, 32+12, 13, 32+13, 1414 14, 32+14, 15, 32+15, 1415 20, 32+20, 21, 32+21, 1416 22, 32+22, 23, 32+23, 1417 28, 32+28, 29, 32+29, 1418 30, 32+30, 31, 32+31); 1419} 1420 1421static __inline__ __m512i __DEFAULT_FN_ATTRS 1422_mm512_mask_unpackhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 1423 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1424 (__v32hi)_mm512_unpackhi_epi16(__A, __B), 1425 (__v32hi)__W); 1426} 1427 1428static __inline__ __m512i __DEFAULT_FN_ATTRS 1429_mm512_maskz_unpackhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) { 1430 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1431 (__v32hi)_mm512_unpackhi_epi16(__A, __B), 1432 (__v32hi)_mm512_setzero_hi()); 1433} 1434 1435static __inline__ __m512i __DEFAULT_FN_ATTRS 1436_mm512_unpacklo_epi8(__m512i __A, __m512i __B) { 1437 return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B, 1438 0, 64+0, 1, 64+1, 1439 2, 64+2, 3, 64+3, 1440 4, 64+4, 5, 64+5, 1441 6, 64+6, 7, 64+7, 1442 16, 64+16, 17, 64+17, 1443 18, 64+18, 19, 64+19, 1444 20, 64+20, 21, 64+21, 1445 22, 64+22, 23, 64+23, 1446 32, 64+32, 33, 64+33, 1447 34, 64+34, 35, 64+35, 1448 36, 64+36, 37, 64+37, 1449 38, 64+38, 39, 64+39, 1450 48, 64+48, 49, 64+49, 1451 50, 64+50, 51, 64+51, 1452 52, 64+52, 53, 64+53, 1453 54, 64+54, 55, 64+55); 1454} 1455 1456static __inline__ __m512i __DEFAULT_FN_ATTRS 1457_mm512_mask_unpacklo_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { 1458 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U, 1459 (__v64qi)_mm512_unpacklo_epi8(__A, __B), 1460 (__v64qi)__W); 1461} 1462 1463static __inline__ __m512i __DEFAULT_FN_ATTRS 1464_mm512_maskz_unpacklo_epi8(__mmask64 __U, __m512i __A, __m512i __B) { 1465 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U, 1466 (__v64qi)_mm512_unpacklo_epi8(__A, __B), 1467 (__v64qi)_mm512_setzero_qi()); 1468} 1469 1470static __inline__ __m512i __DEFAULT_FN_ATTRS 1471_mm512_unpacklo_epi16(__m512i __A, __m512i __B) { 1472 return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B, 1473 0, 32+0, 1, 32+1, 1474 2, 32+2, 3, 32+3, 1475 8, 32+8, 9, 32+9, 1476 10, 32+10, 11, 32+11, 1477 16, 32+16, 17, 32+17, 1478 18, 32+18, 19, 32+19, 1479 24, 32+24, 25, 32+25, 1480 26, 32+26, 27, 32+27); 1481} 1482 1483static __inline__ __m512i __DEFAULT_FN_ATTRS 1484_mm512_mask_unpacklo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 1485 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1486 (__v32hi)_mm512_unpacklo_epi16(__A, __B), 1487 (__v32hi)__W); 1488} 1489 1490static __inline__ __m512i __DEFAULT_FN_ATTRS 1491_mm512_maskz_unpacklo_epi16(__mmask32 __U, __m512i __A, __m512i __B) { 1492 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1493 (__v32hi)_mm512_unpacklo_epi16(__A, __B), 1494 (__v32hi)_mm512_setzero_hi()); 1495} 1496 1497static __inline__ __m512i __DEFAULT_FN_ATTRS 1498_mm512_cvtepi8_epi16(__m256i __A) 1499{ 1500 /* This function always performs a signed extension, but __v32qi is a char 1501 which may be signed or unsigned, so use __v32qs. */ 1502 return (__m512i)__builtin_convertvector((__v32qs)__A, __v32hi); 1503} 1504 1505static __inline__ __m512i __DEFAULT_FN_ATTRS 1506_mm512_mask_cvtepi8_epi16(__m512i __W, __mmask32 __U, __m256i __A) 1507{ 1508 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1509 (__v32hi)_mm512_cvtepi8_epi16(__A), 1510 (__v32hi)__W); 1511} 1512 1513static __inline__ __m512i __DEFAULT_FN_ATTRS 1514_mm512_maskz_cvtepi8_epi16(__mmask32 __U, __m256i __A) 1515{ 1516 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1517 (__v32hi)_mm512_cvtepi8_epi16(__A), 1518 (__v32hi)_mm512_setzero_hi()); 1519} 1520 1521static __inline__ __m512i __DEFAULT_FN_ATTRS 1522_mm512_cvtepu8_epi16(__m256i __A) 1523{ 1524 return (__m512i)__builtin_convertvector((__v32qu)__A, __v32hi); 1525} 1526 1527static __inline__ __m512i __DEFAULT_FN_ATTRS 1528_mm512_mask_cvtepu8_epi16(__m512i __W, __mmask32 __U, __m256i __A) 1529{ 1530 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1531 (__v32hi)_mm512_cvtepu8_epi16(__A), 1532 (__v32hi)__W); 1533} 1534 1535static __inline__ __m512i __DEFAULT_FN_ATTRS 1536_mm512_maskz_cvtepu8_epi16(__mmask32 __U, __m256i __A) 1537{ 1538 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1539 (__v32hi)_mm512_cvtepu8_epi16(__A), 1540 (__v32hi)_mm512_setzero_hi()); 1541} 1542 1543 1544#define _mm512_cmp_epi8_mask(a, b, p) __extension__ ({ \ 1545 (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \ 1546 (__v64qi)(__m512i)(b), (int)(p), \ 1547 (__mmask64)-1); }) 1548 1549#define _mm512_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \ 1550 (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \ 1551 (__v64qi)(__m512i)(b), (int)(p), \ 1552 (__mmask64)(m)); }) 1553 1554#define _mm512_cmp_epu8_mask(a, b, p) __extension__ ({ \ 1555 (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \ 1556 (__v64qi)(__m512i)(b), (int)(p), \ 1557 (__mmask64)-1); }) 1558 1559#define _mm512_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \ 1560 (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \ 1561 (__v64qi)(__m512i)(b), (int)(p), \ 1562 (__mmask64)(m)); }) 1563 1564#define _mm512_cmp_epi16_mask(a, b, p) __extension__ ({ \ 1565 (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \ 1566 (__v32hi)(__m512i)(b), (int)(p), \ 1567 (__mmask32)-1); }) 1568 1569#define _mm512_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \ 1570 (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \ 1571 (__v32hi)(__m512i)(b), (int)(p), \ 1572 (__mmask32)(m)); }) 1573 1574#define _mm512_cmp_epu16_mask(a, b, p) __extension__ ({ \ 1575 (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \ 1576 (__v32hi)(__m512i)(b), (int)(p), \ 1577 (__mmask32)-1); }) 1578 1579#define _mm512_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \ 1580 (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \ 1581 (__v32hi)(__m512i)(b), (int)(p), \ 1582 (__mmask32)(m)); }) 1583 1584#define _mm512_shufflehi_epi16(A, imm) __extension__ ({ \ 1585 (__m512i)__builtin_shufflevector((__v32hi)(__m512i)(A), \ 1586 (__v32hi)_mm512_undefined_epi32(), \ 1587 0, 1, 2, 3, \ 1588 4 + (((imm) >> 0) & 0x3), \ 1589 4 + (((imm) >> 2) & 0x3), \ 1590 4 + (((imm) >> 4) & 0x3), \ 1591 4 + (((imm) >> 6) & 0x3), \ 1592 8, 9, 10, 11, \ 1593 12 + (((imm) >> 0) & 0x3), \ 1594 12 + (((imm) >> 2) & 0x3), \ 1595 12 + (((imm) >> 4) & 0x3), \ 1596 12 + (((imm) >> 6) & 0x3), \ 1597 16, 17, 18, 19, \ 1598 20 + (((imm) >> 0) & 0x3), \ 1599 20 + (((imm) >> 2) & 0x3), \ 1600 20 + (((imm) >> 4) & 0x3), \ 1601 20 + (((imm) >> 6) & 0x3), \ 1602 24, 25, 26, 27, \ 1603 28 + (((imm) >> 0) & 0x3), \ 1604 28 + (((imm) >> 2) & 0x3), \ 1605 28 + (((imm) >> 4) & 0x3), \ 1606 28 + (((imm) >> 6) & 0x3)); }) 1607 1608#define _mm512_mask_shufflehi_epi16(W, U, A, imm) __extension__ ({ \ 1609 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \ 1610 (__v32hi)_mm512_shufflehi_epi16((A), \ 1611 (imm)), \ 1612 (__v32hi)(__m512i)(W)); }) 1613 1614#define _mm512_maskz_shufflehi_epi16(U, A, imm) __extension__ ({ \ 1615 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \ 1616 (__v32hi)_mm512_shufflehi_epi16((A), \ 1617 (imm)), \ 1618 (__v32hi)_mm512_setzero_hi()); }) 1619 1620#define _mm512_shufflelo_epi16(A, imm) __extension__ ({ \ 1621 (__m512i)__builtin_shufflevector((__v32hi)(__m512i)(A), \ 1622 (__v32hi)_mm512_undefined_epi32(), \ 1623 0 + (((imm) >> 0) & 0x3), \ 1624 0 + (((imm) >> 2) & 0x3), \ 1625 0 + (((imm) >> 4) & 0x3), \ 1626 0 + (((imm) >> 6) & 0x3), \ 1627 4, 5, 6, 7, \ 1628 8 + (((imm) >> 0) & 0x3), \ 1629 8 + (((imm) >> 2) & 0x3), \ 1630 8 + (((imm) >> 4) & 0x3), \ 1631 8 + (((imm) >> 6) & 0x3), \ 1632 12, 13, 14, 15, \ 1633 16 + (((imm) >> 0) & 0x3), \ 1634 16 + (((imm) >> 2) & 0x3), \ 1635 16 + (((imm) >> 4) & 0x3), \ 1636 16 + (((imm) >> 6) & 0x3), \ 1637 20, 21, 22, 23, \ 1638 24 + (((imm) >> 0) & 0x3), \ 1639 24 + (((imm) >> 2) & 0x3), \ 1640 24 + (((imm) >> 4) & 0x3), \ 1641 24 + (((imm) >> 6) & 0x3), \ 1642 28, 29, 30, 31); }) 1643 1644 1645#define _mm512_mask_shufflelo_epi16(W, U, A, imm) __extension__ ({ \ 1646 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \ 1647 (__v32hi)_mm512_shufflelo_epi16((A), \ 1648 (imm)), \ 1649 (__v32hi)(__m512i)(W)); }) 1650 1651 1652#define _mm512_maskz_shufflelo_epi16(U, A, imm) __extension__ ({ \ 1653 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \ 1654 (__v32hi)_mm512_shufflelo_epi16((A), \ 1655 (imm)), \ 1656 (__v32hi)_mm512_setzero_hi()); }) 1657 1658static __inline__ __m512i __DEFAULT_FN_ATTRS 1659_mm512_sllv_epi16(__m512i __A, __m512i __B) 1660{ 1661 return (__m512i)__builtin_ia32_psllv32hi((__v32hi) __A, (__v32hi) __B); 1662} 1663 1664static __inline__ __m512i __DEFAULT_FN_ATTRS 1665_mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) 1666{ 1667 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1668 (__v32hi)_mm512_sllv_epi16(__A, __B), 1669 (__v32hi)__W); 1670} 1671 1672static __inline__ __m512i __DEFAULT_FN_ATTRS 1673_mm512_maskz_sllv_epi16(__mmask32 __U, __m512i __A, __m512i __B) 1674{ 1675 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1676 (__v32hi)_mm512_sllv_epi16(__A, __B), 1677 (__v32hi)_mm512_setzero_hi()); 1678} 1679 1680static __inline__ __m512i __DEFAULT_FN_ATTRS 1681_mm512_sll_epi16(__m512i __A, __m128i __B) 1682{ 1683 return (__m512i)__builtin_ia32_psllw512((__v32hi) __A, (__v8hi) __B); 1684} 1685 1686static __inline__ __m512i __DEFAULT_FN_ATTRS 1687_mm512_mask_sll_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) 1688{ 1689 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1690 (__v32hi)_mm512_sll_epi16(__A, __B), 1691 (__v32hi)__W); 1692} 1693 1694static __inline__ __m512i __DEFAULT_FN_ATTRS 1695_mm512_maskz_sll_epi16(__mmask32 __U, __m512i __A, __m128i __B) 1696{ 1697 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1698 (__v32hi)_mm512_sll_epi16(__A, __B), 1699 (__v32hi)_mm512_setzero_hi()); 1700} 1701 1702static __inline__ __m512i __DEFAULT_FN_ATTRS 1703_mm512_slli_epi16(__m512i __A, int __B) 1704{ 1705 return (__m512i)__builtin_ia32_psllwi512((__v32hi)__A, __B); 1706} 1707 1708static __inline__ __m512i __DEFAULT_FN_ATTRS 1709_mm512_mask_slli_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B) 1710{ 1711 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1712 (__v32hi)_mm512_slli_epi16(__A, __B), 1713 (__v32hi)__W); 1714} 1715 1716static __inline__ __m512i __DEFAULT_FN_ATTRS 1717_mm512_maskz_slli_epi16(__mmask32 __U, __m512i __A, int __B) 1718{ 1719 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1720 (__v32hi)_mm512_slli_epi16(__A, __B), 1721 (__v32hi)_mm512_setzero_hi()); 1722} 1723 1724#define _mm512_bslli_epi128(a, imm) __extension__ ({ \ 1725 (__m512i)__builtin_shufflevector( \ 1726 (__v64qi)_mm512_setzero_si512(), \ 1727 (__v64qi)(__m512i)(a), \ 1728 ((char)(imm)&0xF0) ? 0 : ((char)(imm)>0x0 ? 16 : 64) - (char)(imm), \ 1729 ((char)(imm)&0xF0) ? 1 : ((char)(imm)>0x1 ? 17 : 65) - (char)(imm), \ 1730 ((char)(imm)&0xF0) ? 2 : ((char)(imm)>0x2 ? 18 : 66) - (char)(imm), \ 1731 ((char)(imm)&0xF0) ? 3 : ((char)(imm)>0x3 ? 19 : 67) - (char)(imm), \ 1732 ((char)(imm)&0xF0) ? 4 : ((char)(imm)>0x4 ? 20 : 68) - (char)(imm), \ 1733 ((char)(imm)&0xF0) ? 5 : ((char)(imm)>0x5 ? 21 : 69) - (char)(imm), \ 1734 ((char)(imm)&0xF0) ? 6 : ((char)(imm)>0x6 ? 22 : 70) - (char)(imm), \ 1735 ((char)(imm)&0xF0) ? 7 : ((char)(imm)>0x7 ? 23 : 71) - (char)(imm), \ 1736 ((char)(imm)&0xF0) ? 8 : ((char)(imm)>0x8 ? 24 : 72) - (char)(imm), \ 1737 ((char)(imm)&0xF0) ? 9 : ((char)(imm)>0x9 ? 25 : 73) - (char)(imm), \ 1738 ((char)(imm)&0xF0) ? 10 : ((char)(imm)>0xA ? 26 : 74) - (char)(imm), \ 1739 ((char)(imm)&0xF0) ? 11 : ((char)(imm)>0xB ? 27 : 75) - (char)(imm), \ 1740 ((char)(imm)&0xF0) ? 12 : ((char)(imm)>0xC ? 28 : 76) - (char)(imm), \ 1741 ((char)(imm)&0xF0) ? 13 : ((char)(imm)>0xD ? 29 : 77) - (char)(imm), \ 1742 ((char)(imm)&0xF0) ? 14 : ((char)(imm)>0xE ? 30 : 78) - (char)(imm), \ 1743 ((char)(imm)&0xF0) ? 15 : ((char)(imm)>0xF ? 31 : 79) - (char)(imm), \ 1744 ((char)(imm)&0xF0) ? 16 : ((char)(imm)>0x0 ? 32 : 80) - (char)(imm), \ 1745 ((char)(imm)&0xF0) ? 17 : ((char)(imm)>0x1 ? 33 : 81) - (char)(imm), \ 1746 ((char)(imm)&0xF0) ? 18 : ((char)(imm)>0x2 ? 34 : 82) - (char)(imm), \ 1747 ((char)(imm)&0xF0) ? 19 : ((char)(imm)>0x3 ? 35 : 83) - (char)(imm), \ 1748 ((char)(imm)&0xF0) ? 20 : ((char)(imm)>0x4 ? 36 : 84) - (char)(imm), \ 1749 ((char)(imm)&0xF0) ? 21 : ((char)(imm)>0x5 ? 37 : 85) - (char)(imm), \ 1750 ((char)(imm)&0xF0) ? 22 : ((char)(imm)>0x6 ? 38 : 86) - (char)(imm), \ 1751 ((char)(imm)&0xF0) ? 23 : ((char)(imm)>0x7 ? 39 : 87) - (char)(imm), \ 1752 ((char)(imm)&0xF0) ? 24 : ((char)(imm)>0x8 ? 40 : 88) - (char)(imm), \ 1753 ((char)(imm)&0xF0) ? 25 : ((char)(imm)>0x9 ? 41 : 89) - (char)(imm), \ 1754 ((char)(imm)&0xF0) ? 26 : ((char)(imm)>0xA ? 42 : 90) - (char)(imm), \ 1755 ((char)(imm)&0xF0) ? 27 : ((char)(imm)>0xB ? 43 : 91) - (char)(imm), \ 1756 ((char)(imm)&0xF0) ? 28 : ((char)(imm)>0xC ? 44 : 92) - (char)(imm), \ 1757 ((char)(imm)&0xF0) ? 29 : ((char)(imm)>0xD ? 45 : 93) - (char)(imm), \ 1758 ((char)(imm)&0xF0) ? 30 : ((char)(imm)>0xE ? 46 : 94) - (char)(imm), \ 1759 ((char)(imm)&0xF0) ? 31 : ((char)(imm)>0xF ? 47 : 95) - (char)(imm), \ 1760 ((char)(imm)&0xF0) ? 32 : ((char)(imm)>0x0 ? 48 : 96) - (char)(imm), \ 1761 ((char)(imm)&0xF0) ? 33 : ((char)(imm)>0x1 ? 49 : 97) - (char)(imm), \ 1762 ((char)(imm)&0xF0) ? 34 : ((char)(imm)>0x2 ? 50 : 98) - (char)(imm), \ 1763 ((char)(imm)&0xF0) ? 35 : ((char)(imm)>0x3 ? 51 : 99) - (char)(imm), \ 1764 ((char)(imm)&0xF0) ? 36 : ((char)(imm)>0x4 ? 52 : 100) - (char)(imm), \ 1765 ((char)(imm)&0xF0) ? 37 : ((char)(imm)>0x5 ? 53 : 101) - (char)(imm), \ 1766 ((char)(imm)&0xF0) ? 38 : ((char)(imm)>0x6 ? 54 : 102) - (char)(imm), \ 1767 ((char)(imm)&0xF0) ? 39 : ((char)(imm)>0x7 ? 55 : 103) - (char)(imm), \ 1768 ((char)(imm)&0xF0) ? 40 : ((char)(imm)>0x8 ? 56 : 104) - (char)(imm), \ 1769 ((char)(imm)&0xF0) ? 41 : ((char)(imm)>0x9 ? 57 : 105) - (char)(imm), \ 1770 ((char)(imm)&0xF0) ? 42 : ((char)(imm)>0xA ? 58 : 106) - (char)(imm), \ 1771 ((char)(imm)&0xF0) ? 43 : ((char)(imm)>0xB ? 59 : 107) - (char)(imm), \ 1772 ((char)(imm)&0xF0) ? 44 : ((char)(imm)>0xC ? 60 : 108) - (char)(imm), \ 1773 ((char)(imm)&0xF0) ? 45 : ((char)(imm)>0xD ? 61 : 109) - (char)(imm), \ 1774 ((char)(imm)&0xF0) ? 46 : ((char)(imm)>0xE ? 62 : 110) - (char)(imm), \ 1775 ((char)(imm)&0xF0) ? 47 : ((char)(imm)>0xF ? 63 : 111) - (char)(imm), \ 1776 ((char)(imm)&0xF0) ? 48 : ((char)(imm)>0x0 ? 64 : 112) - (char)(imm), \ 1777 ((char)(imm)&0xF0) ? 49 : ((char)(imm)>0x1 ? 65 : 113) - (char)(imm), \ 1778 ((char)(imm)&0xF0) ? 50 : ((char)(imm)>0x2 ? 66 : 114) - (char)(imm), \ 1779 ((char)(imm)&0xF0) ? 51 : ((char)(imm)>0x3 ? 67 : 115) - (char)(imm), \ 1780 ((char)(imm)&0xF0) ? 52 : ((char)(imm)>0x4 ? 68 : 116) - (char)(imm), \ 1781 ((char)(imm)&0xF0) ? 53 : ((char)(imm)>0x5 ? 69 : 117) - (char)(imm), \ 1782 ((char)(imm)&0xF0) ? 54 : ((char)(imm)>0x6 ? 70 : 118) - (char)(imm), \ 1783 ((char)(imm)&0xF0) ? 55 : ((char)(imm)>0x7 ? 71 : 119) - (char)(imm), \ 1784 ((char)(imm)&0xF0) ? 56 : ((char)(imm)>0x8 ? 72 : 120) - (char)(imm), \ 1785 ((char)(imm)&0xF0) ? 57 : ((char)(imm)>0x9 ? 73 : 121) - (char)(imm), \ 1786 ((char)(imm)&0xF0) ? 58 : ((char)(imm)>0xA ? 74 : 122) - (char)(imm), \ 1787 ((char)(imm)&0xF0) ? 59 : ((char)(imm)>0xB ? 75 : 123) - (char)(imm), \ 1788 ((char)(imm)&0xF0) ? 60 : ((char)(imm)>0xC ? 76 : 124) - (char)(imm), \ 1789 ((char)(imm)&0xF0) ? 61 : ((char)(imm)>0xD ? 77 : 125) - (char)(imm), \ 1790 ((char)(imm)&0xF0) ? 62 : ((char)(imm)>0xE ? 78 : 126) - (char)(imm), \ 1791 ((char)(imm)&0xF0) ? 63 : ((char)(imm)>0xF ? 79 : 127) - (char)(imm)); }) 1792 1793static __inline__ __m512i __DEFAULT_FN_ATTRS 1794_mm512_srlv_epi16(__m512i __A, __m512i __B) 1795{ 1796 return (__m512i)__builtin_ia32_psrlv32hi((__v32hi)__A, (__v32hi)__B); 1797} 1798 1799static __inline__ __m512i __DEFAULT_FN_ATTRS 1800_mm512_mask_srlv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) 1801{ 1802 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1803 (__v32hi)_mm512_srlv_epi16(__A, __B), 1804 (__v32hi)__W); 1805} 1806 1807static __inline__ __m512i __DEFAULT_FN_ATTRS 1808_mm512_maskz_srlv_epi16(__mmask32 __U, __m512i __A, __m512i __B) 1809{ 1810 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1811 (__v32hi)_mm512_srlv_epi16(__A, __B), 1812 (__v32hi)_mm512_setzero_hi()); 1813} 1814 1815static __inline__ __m512i __DEFAULT_FN_ATTRS 1816_mm512_srav_epi16(__m512i __A, __m512i __B) 1817{ 1818 return (__m512i)__builtin_ia32_psrav32hi((__v32hi)__A, (__v32hi)__B); 1819} 1820 1821static __inline__ __m512i __DEFAULT_FN_ATTRS 1822_mm512_mask_srav_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) 1823{ 1824 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1825 (__v32hi)_mm512_srav_epi16(__A, __B), 1826 (__v32hi)__W); 1827} 1828 1829static __inline__ __m512i __DEFAULT_FN_ATTRS 1830_mm512_maskz_srav_epi16(__mmask32 __U, __m512i __A, __m512i __B) 1831{ 1832 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1833 (__v32hi)_mm512_srav_epi16(__A, __B), 1834 (__v32hi)_mm512_setzero_hi()); 1835} 1836 1837static __inline__ __m512i __DEFAULT_FN_ATTRS 1838_mm512_sra_epi16(__m512i __A, __m128i __B) 1839{ 1840 return (__m512i)__builtin_ia32_psraw512((__v32hi) __A, (__v8hi) __B); 1841} 1842 1843static __inline__ __m512i __DEFAULT_FN_ATTRS 1844_mm512_mask_sra_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) 1845{ 1846 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1847 (__v32hi)_mm512_sra_epi16(__A, __B), 1848 (__v32hi)__W); 1849} 1850 1851static __inline__ __m512i __DEFAULT_FN_ATTRS 1852_mm512_maskz_sra_epi16(__mmask32 __U, __m512i __A, __m128i __B) 1853{ 1854 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1855 (__v32hi)_mm512_sra_epi16(__A, __B), 1856 (__v32hi)_mm512_setzero_hi()); 1857} 1858 1859static __inline__ __m512i __DEFAULT_FN_ATTRS 1860_mm512_srai_epi16(__m512i __A, int __B) 1861{ 1862 return (__m512i)__builtin_ia32_psrawi512((__v32hi)__A, __B); 1863} 1864 1865static __inline__ __m512i __DEFAULT_FN_ATTRS 1866_mm512_mask_srai_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B) 1867{ 1868 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1869 (__v32hi)_mm512_srai_epi16(__A, __B), 1870 (__v32hi)__W); 1871} 1872 1873static __inline__ __m512i __DEFAULT_FN_ATTRS 1874_mm512_maskz_srai_epi16(__mmask32 __U, __m512i __A, int __B) 1875{ 1876 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1877 (__v32hi)_mm512_srai_epi16(__A, __B), 1878 (__v32hi)_mm512_setzero_hi()); 1879} 1880 1881static __inline__ __m512i __DEFAULT_FN_ATTRS 1882_mm512_srl_epi16(__m512i __A, __m128i __B) 1883{ 1884 return (__m512i)__builtin_ia32_psrlw512((__v32hi) __A, (__v8hi) __B); 1885} 1886 1887static __inline__ __m512i __DEFAULT_FN_ATTRS 1888_mm512_mask_srl_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) 1889{ 1890 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1891 (__v32hi)_mm512_srl_epi16(__A, __B), 1892 (__v32hi)__W); 1893} 1894 1895static __inline__ __m512i __DEFAULT_FN_ATTRS 1896_mm512_maskz_srl_epi16(__mmask32 __U, __m512i __A, __m128i __B) 1897{ 1898 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1899 (__v32hi)_mm512_srl_epi16(__A, __B), 1900 (__v32hi)_mm512_setzero_hi()); 1901} 1902 1903static __inline__ __m512i __DEFAULT_FN_ATTRS 1904_mm512_srli_epi16(__m512i __A, int __B) 1905{ 1906 return (__m512i)__builtin_ia32_psrlwi512((__v32hi)__A, __B); 1907} 1908 1909static __inline__ __m512i __DEFAULT_FN_ATTRS 1910_mm512_mask_srli_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B) 1911{ 1912 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1913 (__v32hi)_mm512_srli_epi16(__A, __B), 1914 (__v32hi)__W); 1915} 1916 1917static __inline__ __m512i __DEFAULT_FN_ATTRS 1918_mm512_maskz_srli_epi16(__mmask32 __U, __m512i __A, int __B) 1919{ 1920 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1921 (__v32hi)_mm512_srli_epi16(__A, __B), 1922 (__v32hi)_mm512_setzero_hi()); 1923} 1924 1925#define _mm512_bsrli_epi128(a, imm) __extension__ ({ \ 1926 (__m512i)__builtin_shufflevector( \ 1927 (__v64qi)(__m512i)(a), \ 1928 (__v64qi)_mm512_setzero_si512(), \ 1929 ((char)(imm)&0xF0) ? 64 : (char)(imm) + ((char)(imm)>0xF ? 48 : 0), \ 1930 ((char)(imm)&0xF0) ? 65 : (char)(imm) + ((char)(imm)>0xE ? 49 : 1), \ 1931 ((char)(imm)&0xF0) ? 66 : (char)(imm) + ((char)(imm)>0xD ? 50 : 2), \ 1932 ((char)(imm)&0xF0) ? 67 : (char)(imm) + ((char)(imm)>0xC ? 51 : 3), \ 1933 ((char)(imm)&0xF0) ? 68 : (char)(imm) + ((char)(imm)>0xB ? 52 : 4), \ 1934 ((char)(imm)&0xF0) ? 69 : (char)(imm) + ((char)(imm)>0xA ? 53 : 5), \ 1935 ((char)(imm)&0xF0) ? 70 : (char)(imm) + ((char)(imm)>0x9 ? 54 : 6), \ 1936 ((char)(imm)&0xF0) ? 71 : (char)(imm) + ((char)(imm)>0x8 ? 55 : 7), \ 1937 ((char)(imm)&0xF0) ? 72 : (char)(imm) + ((char)(imm)>0x7 ? 56 : 8), \ 1938 ((char)(imm)&0xF0) ? 73 : (char)(imm) + ((char)(imm)>0x6 ? 57 : 9), \ 1939 ((char)(imm)&0xF0) ? 74 : (char)(imm) + ((char)(imm)>0x5 ? 58 : 10), \ 1940 ((char)(imm)&0xF0) ? 75 : (char)(imm) + ((char)(imm)>0x4 ? 59 : 11), \ 1941 ((char)(imm)&0xF0) ? 76 : (char)(imm) + ((char)(imm)>0x3 ? 60 : 12), \ 1942 ((char)(imm)&0xF0) ? 77 : (char)(imm) + ((char)(imm)>0x2 ? 61 : 13), \ 1943 ((char)(imm)&0xF0) ? 78 : (char)(imm) + ((char)(imm)>0x1 ? 62 : 14), \ 1944 ((char)(imm)&0xF0) ? 79 : (char)(imm) + ((char)(imm)>0x0 ? 63 : 15), \ 1945 ((char)(imm)&0xF0) ? 80 : (char)(imm) + ((char)(imm)>0xF ? 64 : 16), \ 1946 ((char)(imm)&0xF0) ? 81 : (char)(imm) + ((char)(imm)>0xE ? 65 : 17), \ 1947 ((char)(imm)&0xF0) ? 82 : (char)(imm) + ((char)(imm)>0xD ? 66 : 18), \ 1948 ((char)(imm)&0xF0) ? 83 : (char)(imm) + ((char)(imm)>0xC ? 67 : 19), \ 1949 ((char)(imm)&0xF0) ? 84 : (char)(imm) + ((char)(imm)>0xB ? 68 : 20), \ 1950 ((char)(imm)&0xF0) ? 85 : (char)(imm) + ((char)(imm)>0xA ? 69 : 21), \ 1951 ((char)(imm)&0xF0) ? 86 : (char)(imm) + ((char)(imm)>0x9 ? 70 : 22), \ 1952 ((char)(imm)&0xF0) ? 87 : (char)(imm) + ((char)(imm)>0x8 ? 71 : 23), \ 1953 ((char)(imm)&0xF0) ? 88 : (char)(imm) + ((char)(imm)>0x7 ? 72 : 24), \ 1954 ((char)(imm)&0xF0) ? 89 : (char)(imm) + ((char)(imm)>0x6 ? 73 : 25), \ 1955 ((char)(imm)&0xF0) ? 90 : (char)(imm) + ((char)(imm)>0x5 ? 74 : 26), \ 1956 ((char)(imm)&0xF0) ? 91 : (char)(imm) + ((char)(imm)>0x4 ? 75 : 27), \ 1957 ((char)(imm)&0xF0) ? 92 : (char)(imm) + ((char)(imm)>0x3 ? 76 : 28), \ 1958 ((char)(imm)&0xF0) ? 93 : (char)(imm) + ((char)(imm)>0x2 ? 77 : 29), \ 1959 ((char)(imm)&0xF0) ? 94 : (char)(imm) + ((char)(imm)>0x1 ? 78 : 30), \ 1960 ((char)(imm)&0xF0) ? 95 : (char)(imm) + ((char)(imm)>0x0 ? 79 : 31), \ 1961 ((char)(imm)&0xF0) ? 96 : (char)(imm) + ((char)(imm)>0xF ? 80 : 32), \ 1962 ((char)(imm)&0xF0) ? 97 : (char)(imm) + ((char)(imm)>0xE ? 81 : 33), \ 1963 ((char)(imm)&0xF0) ? 98 : (char)(imm) + ((char)(imm)>0xD ? 82 : 34), \ 1964 ((char)(imm)&0xF0) ? 99 : (char)(imm) + ((char)(imm)>0xC ? 83 : 35), \ 1965 ((char)(imm)&0xF0) ? 100 : (char)(imm) + ((char)(imm)>0xB ? 84 : 36), \ 1966 ((char)(imm)&0xF0) ? 101 : (char)(imm) + ((char)(imm)>0xA ? 85 : 37), \ 1967 ((char)(imm)&0xF0) ? 102 : (char)(imm) + ((char)(imm)>0x9 ? 86 : 38), \ 1968 ((char)(imm)&0xF0) ? 103 : (char)(imm) + ((char)(imm)>0x8 ? 87 : 39), \ 1969 ((char)(imm)&0xF0) ? 104 : (char)(imm) + ((char)(imm)>0x7 ? 88 : 40), \ 1970 ((char)(imm)&0xF0) ? 105 : (char)(imm) + ((char)(imm)>0x6 ? 89 : 41), \ 1971 ((char)(imm)&0xF0) ? 106 : (char)(imm) + ((char)(imm)>0x5 ? 90 : 42), \ 1972 ((char)(imm)&0xF0) ? 107 : (char)(imm) + ((char)(imm)>0x4 ? 91 : 43), \ 1973 ((char)(imm)&0xF0) ? 108 : (char)(imm) + ((char)(imm)>0x3 ? 92 : 44), \ 1974 ((char)(imm)&0xF0) ? 109 : (char)(imm) + ((char)(imm)>0x2 ? 93 : 45), \ 1975 ((char)(imm)&0xF0) ? 110 : (char)(imm) + ((char)(imm)>0x1 ? 94 : 46), \ 1976 ((char)(imm)&0xF0) ? 111 : (char)(imm) + ((char)(imm)>0x0 ? 95 : 47), \ 1977 ((char)(imm)&0xF0) ? 112 : (char)(imm) + ((char)(imm)>0xF ? 96 : 48), \ 1978 ((char)(imm)&0xF0) ? 113 : (char)(imm) + ((char)(imm)>0xE ? 97 : 49), \ 1979 ((char)(imm)&0xF0) ? 114 : (char)(imm) + ((char)(imm)>0xD ? 98 : 50), \ 1980 ((char)(imm)&0xF0) ? 115 : (char)(imm) + ((char)(imm)>0xC ? 99 : 51), \ 1981 ((char)(imm)&0xF0) ? 116 : (char)(imm) + ((char)(imm)>0xB ? 100 : 52), \ 1982 ((char)(imm)&0xF0) ? 117 : (char)(imm) + ((char)(imm)>0xA ? 101 : 53), \ 1983 ((char)(imm)&0xF0) ? 118 : (char)(imm) + ((char)(imm)>0x9 ? 102 : 54), \ 1984 ((char)(imm)&0xF0) ? 119 : (char)(imm) + ((char)(imm)>0x8 ? 103 : 55), \ 1985 ((char)(imm)&0xF0) ? 120 : (char)(imm) + ((char)(imm)>0x7 ? 104 : 56), \ 1986 ((char)(imm)&0xF0) ? 121 : (char)(imm) + ((char)(imm)>0x6 ? 105 : 57), \ 1987 ((char)(imm)&0xF0) ? 122 : (char)(imm) + ((char)(imm)>0x5 ? 106 : 58), \ 1988 ((char)(imm)&0xF0) ? 123 : (char)(imm) + ((char)(imm)>0x4 ? 107 : 59), \ 1989 ((char)(imm)&0xF0) ? 124 : (char)(imm) + ((char)(imm)>0x3 ? 108 : 60), \ 1990 ((char)(imm)&0xF0) ? 125 : (char)(imm) + ((char)(imm)>0x2 ? 109 : 61), \ 1991 ((char)(imm)&0xF0) ? 126 : (char)(imm) + ((char)(imm)>0x1 ? 110 : 62), \ 1992 ((char)(imm)&0xF0) ? 127 : (char)(imm) + ((char)(imm)>0x0 ? 111 : 63)); }) 1993 1994static __inline__ __m512i __DEFAULT_FN_ATTRS 1995_mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A) 1996{ 1997 return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U, 1998 (__v32hi) __A, 1999 (__v32hi) __W); 2000} 2001 2002static __inline__ __m512i __DEFAULT_FN_ATTRS 2003_mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A) 2004{ 2005 return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U, 2006 (__v32hi) __A, 2007 (__v32hi) _mm512_setzero_hi ()); 2008} 2009 2010static __inline__ __m512i __DEFAULT_FN_ATTRS 2011_mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A) 2012{ 2013 return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U, 2014 (__v64qi) __A, 2015 (__v64qi) __W); 2016} 2017 2018static __inline__ __m512i __DEFAULT_FN_ATTRS 2019_mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A) 2020{ 2021 return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U, 2022 (__v64qi) __A, 2023 (__v64qi) _mm512_setzero_hi ()); 2024} 2025 2026static __inline__ __m512i __DEFAULT_FN_ATTRS 2027_mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A) 2028{ 2029 return (__m512i) __builtin_ia32_selectb_512(__M, 2030 (__v64qi)_mm512_set1_epi8(__A), 2031 (__v64qi) __O); 2032} 2033 2034static __inline__ __m512i __DEFAULT_FN_ATTRS 2035_mm512_maskz_set1_epi8 (__mmask64 __M, char __A) 2036{ 2037 return (__m512i) __builtin_ia32_selectb_512(__M, 2038 (__v64qi) _mm512_set1_epi8(__A), 2039 (__v64qi) _mm512_setzero_si512()); 2040} 2041 2042static __inline__ __mmask64 __DEFAULT_FN_ATTRS 2043_mm512_kunpackd (__mmask64 __A, __mmask64 __B) 2044{ 2045 return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A, 2046 (__mmask64) __B); 2047} 2048 2049static __inline__ __mmask32 __DEFAULT_FN_ATTRS 2050_mm512_kunpackw (__mmask32 __A, __mmask32 __B) 2051{ 2052 return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A, 2053 (__mmask32) __B); 2054} 2055 2056static __inline__ __m512i __DEFAULT_FN_ATTRS 2057_mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P) 2058{ 2059 return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P, 2060 (__v32hi) __W, 2061 (__mmask32) __U); 2062} 2063 2064static __inline__ __m512i __DEFAULT_FN_ATTRS 2065_mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P) 2066{ 2067 return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P, 2068 (__v32hi) 2069 _mm512_setzero_hi (), 2070 (__mmask32) __U); 2071} 2072 2073static __inline__ __m512i __DEFAULT_FN_ATTRS 2074_mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P) 2075{ 2076 return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P, 2077 (__v64qi) __W, 2078 (__mmask64) __U); 2079} 2080 2081static __inline__ __m512i __DEFAULT_FN_ATTRS 2082_mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P) 2083{ 2084 return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P, 2085 (__v64qi) 2086 _mm512_setzero_hi (), 2087 (__mmask64) __U); 2088} 2089static __inline__ void __DEFAULT_FN_ATTRS 2090_mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A) 2091{ 2092 __builtin_ia32_storedquhi512_mask ((__v32hi *) __P, 2093 (__v32hi) __A, 2094 (__mmask32) __U); 2095} 2096 2097static __inline__ void __DEFAULT_FN_ATTRS 2098_mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A) 2099{ 2100 __builtin_ia32_storedquqi512_mask ((__v64qi *) __P, 2101 (__v64qi) __A, 2102 (__mmask64) __U); 2103} 2104 2105static __inline__ __mmask64 __DEFAULT_FN_ATTRS 2106_mm512_test_epi8_mask (__m512i __A, __m512i __B) 2107{ 2108 return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A, 2109 (__v64qi) __B, 2110 (__mmask64) -1); 2111} 2112 2113static __inline__ __mmask64 __DEFAULT_FN_ATTRS 2114_mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B) 2115{ 2116 return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A, 2117 (__v64qi) __B, __U); 2118} 2119 2120static __inline__ __mmask32 __DEFAULT_FN_ATTRS 2121_mm512_test_epi16_mask (__m512i __A, __m512i __B) 2122{ 2123 return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A, 2124 (__v32hi) __B, 2125 (__mmask32) -1); 2126} 2127 2128static __inline__ __mmask32 __DEFAULT_FN_ATTRS 2129_mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B) 2130{ 2131 return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A, 2132 (__v32hi) __B, __U); 2133} 2134 2135static __inline__ __mmask64 __DEFAULT_FN_ATTRS 2136_mm512_testn_epi8_mask (__m512i __A, __m512i __B) 2137{ 2138 return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A, 2139 (__v64qi) __B, 2140 (__mmask64) -1); 2141} 2142 2143static __inline__ __mmask64 __DEFAULT_FN_ATTRS 2144_mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B) 2145{ 2146 return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A, 2147 (__v64qi) __B, __U); 2148} 2149 2150static __inline__ __mmask32 __DEFAULT_FN_ATTRS 2151_mm512_testn_epi16_mask (__m512i __A, __m512i __B) 2152{ 2153 return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A, 2154 (__v32hi) __B, 2155 (__mmask32) -1); 2156} 2157 2158static __inline__ __mmask32 __DEFAULT_FN_ATTRS 2159_mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B) 2160{ 2161 return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A, 2162 (__v32hi) __B, __U); 2163} 2164 2165static __inline__ __mmask64 __DEFAULT_FN_ATTRS 2166_mm512_movepi8_mask (__m512i __A) 2167{ 2168 return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A); 2169} 2170 2171static __inline__ __mmask32 __DEFAULT_FN_ATTRS 2172_mm512_movepi16_mask (__m512i __A) 2173{ 2174 return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A); 2175} 2176 2177static __inline__ __m512i __DEFAULT_FN_ATTRS 2178_mm512_movm_epi8 (__mmask64 __A) 2179{ 2180 return (__m512i) __builtin_ia32_cvtmask2b512 (__A); 2181} 2182 2183static __inline__ __m512i __DEFAULT_FN_ATTRS 2184_mm512_movm_epi16 (__mmask32 __A) 2185{ 2186 return (__m512i) __builtin_ia32_cvtmask2w512 (__A); 2187} 2188 2189static __inline__ __m512i __DEFAULT_FN_ATTRS 2190_mm512_broadcastb_epi8 (__m128i __A) 2191{ 2192 return (__m512i)__builtin_shufflevector((__v16qi) __A, 2193 (__v16qi)_mm_undefined_si128(), 2194 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2195 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2196 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); 2198} 2199 2200static __inline__ __m512i __DEFAULT_FN_ATTRS 2201_mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A) 2202{ 2203 return (__m512i)__builtin_ia32_selectb_512(__M, 2204 (__v64qi) _mm512_broadcastb_epi8(__A), 2205 (__v64qi) __O); 2206} 2207 2208static __inline__ __m512i __DEFAULT_FN_ATTRS 2209_mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A) 2210{ 2211 return (__m512i)__builtin_ia32_selectb_512(__M, 2212 (__v64qi) _mm512_broadcastb_epi8(__A), 2213 (__v64qi) _mm512_setzero_si512()); 2214} 2215 2216static __inline__ __m512i __DEFAULT_FN_ATTRS 2217_mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A) 2218{ 2219 return (__m512i) __builtin_ia32_selectw_512(__M, 2220 (__v32hi) _mm512_set1_epi16(__A), 2221 (__v32hi) __O); 2222} 2223 2224static __inline__ __m512i __DEFAULT_FN_ATTRS 2225_mm512_maskz_set1_epi16 (__mmask32 __M, short __A) 2226{ 2227 return (__m512i) __builtin_ia32_selectw_512(__M, 2228 (__v32hi) _mm512_set1_epi16(__A), 2229 (__v32hi) _mm512_setzero_si512()); 2230} 2231 2232static __inline__ __m512i __DEFAULT_FN_ATTRS 2233_mm512_broadcastw_epi16 (__m128i __A) 2234{ 2235 return (__m512i)__builtin_shufflevector((__v8hi) __A, 2236 (__v8hi)_mm_undefined_si128(), 2237 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2238 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); 2239} 2240 2241static __inline__ __m512i __DEFAULT_FN_ATTRS 2242_mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A) 2243{ 2244 return (__m512i)__builtin_ia32_selectw_512(__M, 2245 (__v32hi) _mm512_broadcastw_epi16(__A), 2246 (__v32hi) __O); 2247} 2248 2249static __inline__ __m512i __DEFAULT_FN_ATTRS 2250_mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A) 2251{ 2252 return (__m512i)__builtin_ia32_selectw_512(__M, 2253 (__v32hi) _mm512_broadcastw_epi16(__A), 2254 (__v32hi) _mm512_setzero_si512()); 2255} 2256 2257static __inline__ __m512i __DEFAULT_FN_ATTRS 2258_mm512_permutexvar_epi16 (__m512i __A, __m512i __B) 2259{ 2260 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B, 2261 (__v32hi) __A, 2262 (__v32hi) _mm512_undefined_epi32 (), 2263 (__mmask32) -1); 2264} 2265 2266static __inline__ __m512i __DEFAULT_FN_ATTRS 2267_mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A, 2268 __m512i __B) 2269{ 2270 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B, 2271 (__v32hi) __A, 2272 (__v32hi) _mm512_setzero_hi(), 2273 (__mmask32) __M); 2274} 2275 2276static __inline__ __m512i __DEFAULT_FN_ATTRS 2277_mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A, 2278 __m512i __B) 2279{ 2280 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B, 2281 (__v32hi) __A, 2282 (__v32hi) __W, 2283 (__mmask32) __M); 2284} 2285 2286#define _mm512_alignr_epi8(A, B, N) __extension__ ({\ 2287 (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \ 2288 (__v64qi)(__m512i)(B), (int)(N), \ 2289 (__v64qi)_mm512_undefined_pd(), \ 2290 (__mmask64)-1); }) 2291 2292#define _mm512_mask_alignr_epi8(W, U, A, B, N) __extension__({\ 2293 (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \ 2294 (__v64qi)(__m512i)(B), (int)(N), \ 2295 (__v64qi)(__m512i)(W), \ 2296 (__mmask64)(U)); }) 2297 2298#define _mm512_maskz_alignr_epi8(U, A, B, N) __extension__({\ 2299 (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \ 2300 (__v64qi)(__m512i)(B), (int)(N), \ 2301 (__v64qi)_mm512_setzero_si512(), \ 2302 (__mmask64)(U)); }) 2303 2304#define _mm512_dbsad_epu8(A, B, imm) __extension__ ({\ 2305 (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \ 2306 (__v64qi)(__m512i)(B), (int)(imm), \ 2307 (__v32hi)_mm512_undefined_epi32(), \ 2308 (__mmask32)-1); }) 2309 2310#define _mm512_mask_dbsad_epu8(W, U, A, B, imm) ({\ 2311 (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \ 2312 (__v64qi)(__m512i)(B), (int)(imm), \ 2313 (__v32hi)(__m512i)(W), \ 2314 (__mmask32)(U)); }) 2315 2316#define _mm512_maskz_dbsad_epu8(U, A, B, imm) ({\ 2317 (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \ 2318 (__v64qi)(__m512i)(B), (int)(imm), \ 2319 (__v32hi)_mm512_setzero_hi(), \ 2320 (__mmask32)(U)); }) 2321 2322static __inline__ __m512i __DEFAULT_FN_ATTRS 2323_mm512_sad_epu8 (__m512i __A, __m512i __B) 2324{ 2325 return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A, 2326 (__v64qi) __B); 2327} 2328 2329 2330 2331#undef __DEFAULT_FN_ATTRS 2332 2333#endif 2334