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 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A, 710 (__v64qi) __B, 711 (__v64qi) _mm512_setzero_qi(), 712 (__mmask64) -1); 713} 714 715static __inline__ __m512i __DEFAULT_FN_ATTRS 716_mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A, 717 __m512i __B) 718{ 719 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A, 720 (__v64qi) __B, 721 (__v64qi) __W, 722 (__mmask64) __U); 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_pavgb512_mask ((__v64qi) __A, 729 (__v64qi) __B, 730 (__v64qi) _mm512_setzero_qi(), 731 (__mmask64) __U); 732} 733 734static __inline__ __m512i __DEFAULT_FN_ATTRS 735_mm512_avg_epu16 (__m512i __A, __m512i __B) 736{ 737 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A, 738 (__v32hi) __B, 739 (__v32hi) _mm512_setzero_hi(), 740 (__mmask32) -1); 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_pavgw512_mask ((__v32hi) __A, 748 (__v32hi) __B, 749 (__v32hi) __W, 750 (__mmask32) __U); 751} 752 753static __inline__ __m512i __DEFAULT_FN_ATTRS 754_mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 755{ 756 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A, 757 (__v32hi) __B, 758 (__v32hi) _mm512_setzero_hi(), 759 (__mmask32) __U); 760} 761 762static __inline__ __m512i __DEFAULT_FN_ATTRS 763_mm512_max_epi8 (__m512i __A, __m512i __B) 764{ 765 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, 766 (__v64qi) __B, 767 (__v64qi) _mm512_setzero_qi(), 768 (__mmask64) -1); 769} 770 771static __inline__ __m512i __DEFAULT_FN_ATTRS 772_mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B) 773{ 774 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, 775 (__v64qi) __B, 776 (__v64qi) _mm512_setzero_qi(), 777 (__mmask64) __M); 778} 779 780static __inline__ __m512i __DEFAULT_FN_ATTRS 781_mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A, 782 __m512i __B) 783{ 784 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, 785 (__v64qi) __B, 786 (__v64qi) __W, 787 (__mmask64) __M); 788} 789 790static __inline__ __m512i __DEFAULT_FN_ATTRS 791_mm512_max_epi16 (__m512i __A, __m512i __B) 792{ 793 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, 794 (__v32hi) __B, 795 (__v32hi) _mm512_setzero_hi(), 796 (__mmask32) -1); 797} 798 799static __inline__ __m512i __DEFAULT_FN_ATTRS 800_mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B) 801{ 802 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, 803 (__v32hi) __B, 804 (__v32hi) _mm512_setzero_hi(), 805 (__mmask32) __M); 806} 807 808static __inline__ __m512i __DEFAULT_FN_ATTRS 809_mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A, 810 __m512i __B) 811{ 812 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, 813 (__v32hi) __B, 814 (__v32hi) __W, 815 (__mmask32) __M); 816} 817 818static __inline__ __m512i __DEFAULT_FN_ATTRS 819_mm512_max_epu8 (__m512i __A, __m512i __B) 820{ 821 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, 822 (__v64qi) __B, 823 (__v64qi) _mm512_setzero_qi(), 824 (__mmask64) -1); 825} 826 827static __inline__ __m512i __DEFAULT_FN_ATTRS 828_mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B) 829{ 830 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, 831 (__v64qi) __B, 832 (__v64qi) _mm512_setzero_qi(), 833 (__mmask64) __M); 834} 835 836static __inline__ __m512i __DEFAULT_FN_ATTRS 837_mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A, 838 __m512i __B) 839{ 840 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, 841 (__v64qi) __B, 842 (__v64qi) __W, 843 (__mmask64) __M); 844} 845 846static __inline__ __m512i __DEFAULT_FN_ATTRS 847_mm512_max_epu16 (__m512i __A, __m512i __B) 848{ 849 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, 850 (__v32hi) __B, 851 (__v32hi) _mm512_setzero_hi(), 852 (__mmask32) -1); 853} 854 855static __inline__ __m512i __DEFAULT_FN_ATTRS 856_mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B) 857{ 858 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, 859 (__v32hi) __B, 860 (__v32hi) _mm512_setzero_hi(), 861 (__mmask32) __M); 862} 863 864static __inline__ __m512i __DEFAULT_FN_ATTRS 865_mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A, 866 __m512i __B) 867{ 868 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, 869 (__v32hi) __B, 870 (__v32hi) __W, 871 (__mmask32) __M); 872} 873 874static __inline__ __m512i __DEFAULT_FN_ATTRS 875_mm512_min_epi8 (__m512i __A, __m512i __B) 876{ 877 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, 878 (__v64qi) __B, 879 (__v64qi) _mm512_setzero_qi(), 880 (__mmask64) -1); 881} 882 883static __inline__ __m512i __DEFAULT_FN_ATTRS 884_mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B) 885{ 886 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, 887 (__v64qi) __B, 888 (__v64qi) _mm512_setzero_qi(), 889 (__mmask64) __M); 890} 891 892static __inline__ __m512i __DEFAULT_FN_ATTRS 893_mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A, 894 __m512i __B) 895{ 896 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, 897 (__v64qi) __B, 898 (__v64qi) __W, 899 (__mmask64) __M); 900} 901 902static __inline__ __m512i __DEFAULT_FN_ATTRS 903_mm512_min_epi16 (__m512i __A, __m512i __B) 904{ 905 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, 906 (__v32hi) __B, 907 (__v32hi) _mm512_setzero_hi(), 908 (__mmask32) -1); 909} 910 911static __inline__ __m512i __DEFAULT_FN_ATTRS 912_mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B) 913{ 914 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, 915 (__v32hi) __B, 916 (__v32hi) _mm512_setzero_hi(), 917 (__mmask32) __M); 918} 919 920static __inline__ __m512i __DEFAULT_FN_ATTRS 921_mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A, 922 __m512i __B) 923{ 924 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, 925 (__v32hi) __B, 926 (__v32hi) __W, 927 (__mmask32) __M); 928} 929 930static __inline__ __m512i __DEFAULT_FN_ATTRS 931_mm512_min_epu8 (__m512i __A, __m512i __B) 932{ 933 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, 934 (__v64qi) __B, 935 (__v64qi) _mm512_setzero_qi(), 936 (__mmask64) -1); 937} 938 939static __inline__ __m512i __DEFAULT_FN_ATTRS 940_mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B) 941{ 942 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, 943 (__v64qi) __B, 944 (__v64qi) _mm512_setzero_qi(), 945 (__mmask64) __M); 946} 947 948static __inline__ __m512i __DEFAULT_FN_ATTRS 949_mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A, 950 __m512i __B) 951{ 952 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, 953 (__v64qi) __B, 954 (__v64qi) __W, 955 (__mmask64) __M); 956} 957 958static __inline__ __m512i __DEFAULT_FN_ATTRS 959_mm512_min_epu16 (__m512i __A, __m512i __B) 960{ 961 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, 962 (__v32hi) __B, 963 (__v32hi) _mm512_setzero_hi(), 964 (__mmask32) -1); 965} 966 967static __inline__ __m512i __DEFAULT_FN_ATTRS 968_mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B) 969{ 970 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, 971 (__v32hi) __B, 972 (__v32hi) _mm512_setzero_hi(), 973 (__mmask32) __M); 974} 975 976static __inline__ __m512i __DEFAULT_FN_ATTRS 977_mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A, 978 __m512i __B) 979{ 980 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, 981 (__v32hi) __B, 982 (__v32hi) __W, 983 (__mmask32) __M); 984} 985 986static __inline__ __m512i __DEFAULT_FN_ATTRS 987_mm512_shuffle_epi8(__m512i __A, __m512i __B) 988{ 989 return (__m512i)__builtin_ia32_pshufb512((__v64qi)__A,(__v64qi)__B); 990} 991 992static __inline__ __m512i __DEFAULT_FN_ATTRS 993_mm512_mask_shuffle_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) 994{ 995 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U, 996 (__v64qi)_mm512_shuffle_epi8(__A, __B), 997 (__v64qi)__W); 998} 999 1000static __inline__ __m512i __DEFAULT_FN_ATTRS 1001_mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B) 1002{ 1003 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U, 1004 (__v64qi)_mm512_shuffle_epi8(__A, __B), 1005 (__v64qi)_mm512_setzero_qi()); 1006} 1007 1008static __inline__ __m512i __DEFAULT_FN_ATTRS 1009_mm512_subs_epi8 (__m512i __A, __m512i __B) 1010{ 1011 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, 1012 (__v64qi) __B, 1013 (__v64qi) _mm512_setzero_qi(), 1014 (__mmask64) -1); 1015} 1016 1017static __inline__ __m512i __DEFAULT_FN_ATTRS 1018_mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 1019 __m512i __B) 1020{ 1021 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, 1022 (__v64qi) __B, 1023 (__v64qi) __W, 1024 (__mmask64) __U); 1025} 1026 1027static __inline__ __m512i __DEFAULT_FN_ATTRS 1028_mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 1029{ 1030 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, 1031 (__v64qi) __B, 1032 (__v64qi) _mm512_setzero_qi(), 1033 (__mmask64) __U); 1034} 1035 1036static __inline__ __m512i __DEFAULT_FN_ATTRS 1037_mm512_subs_epi16 (__m512i __A, __m512i __B) 1038{ 1039 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, 1040 (__v32hi) __B, 1041 (__v32hi) _mm512_setzero_hi(), 1042 (__mmask32) -1); 1043} 1044 1045static __inline__ __m512i __DEFAULT_FN_ATTRS 1046_mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1047 __m512i __B) 1048{ 1049 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, 1050 (__v32hi) __B, 1051 (__v32hi) __W, 1052 (__mmask32) __U); 1053} 1054 1055static __inline__ __m512i __DEFAULT_FN_ATTRS 1056_mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1057{ 1058 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, 1059 (__v32hi) __B, 1060 (__v32hi) _mm512_setzero_hi(), 1061 (__mmask32) __U); 1062} 1063 1064static __inline__ __m512i __DEFAULT_FN_ATTRS 1065_mm512_subs_epu8 (__m512i __A, __m512i __B) 1066{ 1067 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, 1068 (__v64qi) __B, 1069 (__v64qi) _mm512_setzero_qi(), 1070 (__mmask64) -1); 1071} 1072 1073static __inline__ __m512i __DEFAULT_FN_ATTRS 1074_mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A, 1075 __m512i __B) 1076{ 1077 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, 1078 (__v64qi) __B, 1079 (__v64qi) __W, 1080 (__mmask64) __U); 1081} 1082 1083static __inline__ __m512i __DEFAULT_FN_ATTRS 1084_mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B) 1085{ 1086 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, 1087 (__v64qi) __B, 1088 (__v64qi) _mm512_setzero_qi(), 1089 (__mmask64) __U); 1090} 1091 1092static __inline__ __m512i __DEFAULT_FN_ATTRS 1093_mm512_subs_epu16 (__m512i __A, __m512i __B) 1094{ 1095 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, 1096 (__v32hi) __B, 1097 (__v32hi) _mm512_setzero_hi(), 1098 (__mmask32) -1); 1099} 1100 1101static __inline__ __m512i __DEFAULT_FN_ATTRS 1102_mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 1103 __m512i __B) 1104{ 1105 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, 1106 (__v32hi) __B, 1107 (__v32hi) __W, 1108 (__mmask32) __U); 1109} 1110 1111static __inline__ __m512i __DEFAULT_FN_ATTRS 1112_mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 1113{ 1114 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, 1115 (__v32hi) __B, 1116 (__v32hi) _mm512_setzero_hi(), 1117 (__mmask32) __U); 1118} 1119 1120static __inline__ __m512i __DEFAULT_FN_ATTRS 1121_mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I, 1122 __mmask32 __U, __m512i __B) 1123{ 1124 return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A, 1125 (__v32hi) __I /* idx */ , 1126 (__v32hi) __B, 1127 (__mmask32) __U); 1128} 1129 1130static __inline__ __m512i __DEFAULT_FN_ATTRS 1131_mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B) 1132{ 1133 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */, 1134 (__v32hi) __A, 1135 (__v32hi) __B, 1136 (__mmask32) -1); 1137} 1138 1139static __inline__ __m512i __DEFAULT_FN_ATTRS 1140_mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U, 1141 __m512i __I, __m512i __B) 1142{ 1143 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */, 1144 (__v32hi) __A, 1145 (__v32hi) __B, 1146 (__mmask32) __U); 1147} 1148 1149static __inline__ __m512i __DEFAULT_FN_ATTRS 1150_mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A, 1151 __m512i __I, __m512i __B) 1152{ 1153 return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I 1154 /* idx */ , 1155 (__v32hi) __A, 1156 (__v32hi) __B, 1157 (__mmask32) __U); 1158} 1159 1160static __inline__ __m512i __DEFAULT_FN_ATTRS 1161_mm512_mulhrs_epi16 (__m512i __A, __m512i __B) 1162{ 1163 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A, 1164 (__v32hi) __B, 1165 (__v32hi) _mm512_setzero_hi(), 1166 (__mmask32) -1); 1167} 1168 1169static __inline__ __m512i __DEFAULT_FN_ATTRS 1170_mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1171 __m512i __B) 1172{ 1173 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A, 1174 (__v32hi) __B, 1175 (__v32hi) __W, 1176 (__mmask32) __U); 1177} 1178 1179static __inline__ __m512i __DEFAULT_FN_ATTRS 1180_mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1181{ 1182 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A, 1183 (__v32hi) __B, 1184 (__v32hi) _mm512_setzero_hi(), 1185 (__mmask32) __U); 1186} 1187 1188static __inline__ __m512i __DEFAULT_FN_ATTRS 1189_mm512_mulhi_epi16 (__m512i __A, __m512i __B) 1190{ 1191 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A, 1192 (__v32hi) __B, 1193 (__v32hi) _mm512_setzero_hi(), 1194 (__mmask32) -1); 1195} 1196 1197static __inline__ __m512i __DEFAULT_FN_ATTRS 1198_mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1199 __m512i __B) 1200{ 1201 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A, 1202 (__v32hi) __B, 1203 (__v32hi) __W, 1204 (__mmask32) __U); 1205} 1206 1207static __inline__ __m512i __DEFAULT_FN_ATTRS 1208_mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1209{ 1210 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A, 1211 (__v32hi) __B, 1212 (__v32hi) _mm512_setzero_hi(), 1213 (__mmask32) __U); 1214} 1215 1216static __inline__ __m512i __DEFAULT_FN_ATTRS 1217_mm512_mulhi_epu16 (__m512i __A, __m512i __B) 1218{ 1219 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A, 1220 (__v32hi) __B, 1221 (__v32hi) _mm512_setzero_hi(), 1222 (__mmask32) -1); 1223} 1224 1225static __inline__ __m512i __DEFAULT_FN_ATTRS 1226_mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 1227 __m512i __B) 1228{ 1229 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A, 1230 (__v32hi) __B, 1231 (__v32hi) __W, 1232 (__mmask32) __U); 1233} 1234 1235static __inline__ __m512i __DEFAULT_FN_ATTRS 1236_mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 1237{ 1238 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A, 1239 (__v32hi) __B, 1240 (__v32hi) _mm512_setzero_hi(), 1241 (__mmask32) __U); 1242} 1243 1244static __inline__ __m512i __DEFAULT_FN_ATTRS 1245_mm512_maddubs_epi16 (__m512i __X, __m512i __Y) { 1246 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X, 1247 (__v64qi) __Y, 1248 (__v32hi) _mm512_setzero_hi(), 1249 (__mmask32) -1); 1250} 1251 1252static __inline__ __m512i __DEFAULT_FN_ATTRS 1253_mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X, 1254 __m512i __Y) { 1255 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X, 1256 (__v64qi) __Y, 1257 (__v32hi) __W, 1258 (__mmask32) __U); 1259} 1260 1261static __inline__ __m512i __DEFAULT_FN_ATTRS 1262_mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y) { 1263 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X, 1264 (__v64qi) __Y, 1265 (__v32hi) _mm512_setzero_hi(), 1266 (__mmask32) __U); 1267} 1268 1269static __inline__ __m512i __DEFAULT_FN_ATTRS 1270_mm512_madd_epi16 (__m512i __A, __m512i __B) { 1271 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A, 1272 (__v32hi) __B, 1273 (__v16si) _mm512_setzero_si512(), 1274 (__mmask16) -1); 1275} 1276 1277static __inline__ __m512i __DEFAULT_FN_ATTRS 1278_mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A, 1279 __m512i __B) { 1280 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A, 1281 (__v32hi) __B, 1282 (__v16si) __W, 1283 (__mmask16) __U); 1284} 1285 1286static __inline__ __m512i __DEFAULT_FN_ATTRS 1287_mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B) { 1288 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A, 1289 (__v32hi) __B, 1290 (__v16si) _mm512_setzero_si512(), 1291 (__mmask16) __U); 1292} 1293 1294static __inline__ __m256i __DEFAULT_FN_ATTRS 1295_mm512_cvtsepi16_epi8 (__m512i __A) { 1296 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A, 1297 (__v32qi)_mm256_setzero_si256(), 1298 (__mmask32) -1); 1299} 1300 1301static __inline__ __m256i __DEFAULT_FN_ATTRS 1302_mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) { 1303 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A, 1304 (__v32qi)__O, 1305 __M); 1306} 1307 1308static __inline__ __m256i __DEFAULT_FN_ATTRS 1309_mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A) { 1310 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A, 1311 (__v32qi) _mm256_setzero_si256(), 1312 __M); 1313} 1314 1315static __inline__ __m256i __DEFAULT_FN_ATTRS 1316_mm512_cvtusepi16_epi8 (__m512i __A) { 1317 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A, 1318 (__v32qi) _mm256_setzero_si256(), 1319 (__mmask32) -1); 1320} 1321 1322static __inline__ __m256i __DEFAULT_FN_ATTRS 1323_mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) { 1324 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A, 1325 (__v32qi) __O, 1326 __M); 1327} 1328 1329static __inline__ __m256i __DEFAULT_FN_ATTRS 1330_mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A) { 1331 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A, 1332 (__v32qi) _mm256_setzero_si256(), 1333 __M); 1334} 1335 1336static __inline__ __m256i __DEFAULT_FN_ATTRS 1337_mm512_cvtepi16_epi8 (__m512i __A) { 1338 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A, 1339 (__v32qi) _mm256_setzero_si256(), 1340 (__mmask32) -1); 1341} 1342 1343static __inline__ __m256i __DEFAULT_FN_ATTRS 1344_mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) { 1345 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A, 1346 (__v32qi) __O, 1347 __M); 1348} 1349 1350static __inline__ __m256i __DEFAULT_FN_ATTRS 1351_mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A) { 1352 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A, 1353 (__v32qi) _mm256_setzero_si256(), 1354 __M); 1355} 1356 1357static __inline__ void __DEFAULT_FN_ATTRS 1358_mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A) 1359{ 1360 __builtin_ia32_pmovwb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M); 1361} 1362 1363static __inline__ void __DEFAULT_FN_ATTRS 1364_mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A) 1365{ 1366 __builtin_ia32_pmovswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M); 1367} 1368 1369static __inline__ void __DEFAULT_FN_ATTRS 1370_mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A) 1371{ 1372 __builtin_ia32_pmovuswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M); 1373} 1374 1375static __inline__ __m512i __DEFAULT_FN_ATTRS 1376_mm512_unpackhi_epi8(__m512i __A, __m512i __B) { 1377 return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B, 1378 8, 64+8, 9, 64+9, 1379 10, 64+10, 11, 64+11, 1380 12, 64+12, 13, 64+13, 1381 14, 64+14, 15, 64+15, 1382 24, 64+24, 25, 64+25, 1383 26, 64+26, 27, 64+27, 1384 28, 64+28, 29, 64+29, 1385 30, 64+30, 31, 64+31, 1386 40, 64+40, 41, 64+41, 1387 42, 64+42, 43, 64+43, 1388 44, 64+44, 45, 64+45, 1389 46, 64+46, 47, 64+47, 1390 56, 64+56, 57, 64+57, 1391 58, 64+58, 59, 64+59, 1392 60, 64+60, 61, 64+61, 1393 62, 64+62, 63, 64+63); 1394} 1395 1396static __inline__ __m512i __DEFAULT_FN_ATTRS 1397_mm512_mask_unpackhi_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { 1398 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U, 1399 (__v64qi)_mm512_unpackhi_epi8(__A, __B), 1400 (__v64qi)__W); 1401} 1402 1403static __inline__ __m512i __DEFAULT_FN_ATTRS 1404_mm512_maskz_unpackhi_epi8(__mmask64 __U, __m512i __A, __m512i __B) { 1405 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U, 1406 (__v64qi)_mm512_unpackhi_epi8(__A, __B), 1407 (__v64qi)_mm512_setzero_qi()); 1408} 1409 1410static __inline__ __m512i __DEFAULT_FN_ATTRS 1411_mm512_unpackhi_epi16(__m512i __A, __m512i __B) { 1412 return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B, 1413 4, 32+4, 5, 32+5, 1414 6, 32+6, 7, 32+7, 1415 12, 32+12, 13, 32+13, 1416 14, 32+14, 15, 32+15, 1417 20, 32+20, 21, 32+21, 1418 22, 32+22, 23, 32+23, 1419 28, 32+28, 29, 32+29, 1420 30, 32+30, 31, 32+31); 1421} 1422 1423static __inline__ __m512i __DEFAULT_FN_ATTRS 1424_mm512_mask_unpackhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 1425 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1426 (__v32hi)_mm512_unpackhi_epi16(__A, __B), 1427 (__v32hi)__W); 1428} 1429 1430static __inline__ __m512i __DEFAULT_FN_ATTRS 1431_mm512_maskz_unpackhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) { 1432 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1433 (__v32hi)_mm512_unpackhi_epi16(__A, __B), 1434 (__v32hi)_mm512_setzero_hi()); 1435} 1436 1437static __inline__ __m512i __DEFAULT_FN_ATTRS 1438_mm512_unpacklo_epi8(__m512i __A, __m512i __B) { 1439 return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B, 1440 0, 64+0, 1, 64+1, 1441 2, 64+2, 3, 64+3, 1442 4, 64+4, 5, 64+5, 1443 6, 64+6, 7, 64+7, 1444 16, 64+16, 17, 64+17, 1445 18, 64+18, 19, 64+19, 1446 20, 64+20, 21, 64+21, 1447 22, 64+22, 23, 64+23, 1448 32, 64+32, 33, 64+33, 1449 34, 64+34, 35, 64+35, 1450 36, 64+36, 37, 64+37, 1451 38, 64+38, 39, 64+39, 1452 48, 64+48, 49, 64+49, 1453 50, 64+50, 51, 64+51, 1454 52, 64+52, 53, 64+53, 1455 54, 64+54, 55, 64+55); 1456} 1457 1458static __inline__ __m512i __DEFAULT_FN_ATTRS 1459_mm512_mask_unpacklo_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) { 1460 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U, 1461 (__v64qi)_mm512_unpacklo_epi8(__A, __B), 1462 (__v64qi)__W); 1463} 1464 1465static __inline__ __m512i __DEFAULT_FN_ATTRS 1466_mm512_maskz_unpacklo_epi8(__mmask64 __U, __m512i __A, __m512i __B) { 1467 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U, 1468 (__v64qi)_mm512_unpacklo_epi8(__A, __B), 1469 (__v64qi)_mm512_setzero_qi()); 1470} 1471 1472static __inline__ __m512i __DEFAULT_FN_ATTRS 1473_mm512_unpacklo_epi16(__m512i __A, __m512i __B) { 1474 return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B, 1475 0, 32+0, 1, 32+1, 1476 2, 32+2, 3, 32+3, 1477 8, 32+8, 9, 32+9, 1478 10, 32+10, 11, 32+11, 1479 16, 32+16, 17, 32+17, 1480 18, 32+18, 19, 32+19, 1481 24, 32+24, 25, 32+25, 1482 26, 32+26, 27, 32+27); 1483} 1484 1485static __inline__ __m512i __DEFAULT_FN_ATTRS 1486_mm512_mask_unpacklo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) { 1487 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1488 (__v32hi)_mm512_unpacklo_epi16(__A, __B), 1489 (__v32hi)__W); 1490} 1491 1492static __inline__ __m512i __DEFAULT_FN_ATTRS 1493_mm512_maskz_unpacklo_epi16(__mmask32 __U, __m512i __A, __m512i __B) { 1494 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1495 (__v32hi)_mm512_unpacklo_epi16(__A, __B), 1496 (__v32hi)_mm512_setzero_hi()); 1497} 1498 1499static __inline__ __m512i __DEFAULT_FN_ATTRS 1500_mm512_cvtepi8_epi16(__m256i __A) 1501{ 1502 /* This function always performs a signed extension, but __v32qi is a char 1503 which may be signed or unsigned, so use __v32qs. */ 1504 return (__m512i)__builtin_convertvector((__v32qs)__A, __v32hi); 1505} 1506 1507static __inline__ __m512i __DEFAULT_FN_ATTRS 1508_mm512_mask_cvtepi8_epi16(__m512i __W, __mmask32 __U, __m256i __A) 1509{ 1510 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1511 (__v32hi)_mm512_cvtepi8_epi16(__A), 1512 (__v32hi)__W); 1513} 1514 1515static __inline__ __m512i __DEFAULT_FN_ATTRS 1516_mm512_maskz_cvtepi8_epi16(__mmask32 __U, __m256i __A) 1517{ 1518 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1519 (__v32hi)_mm512_cvtepi8_epi16(__A), 1520 (__v32hi)_mm512_setzero_hi()); 1521} 1522 1523static __inline__ __m512i __DEFAULT_FN_ATTRS 1524_mm512_cvtepu8_epi16(__m256i __A) 1525{ 1526 return (__m512i)__builtin_convertvector((__v32qu)__A, __v32hi); 1527} 1528 1529static __inline__ __m512i __DEFAULT_FN_ATTRS 1530_mm512_mask_cvtepu8_epi16(__m512i __W, __mmask32 __U, __m256i __A) 1531{ 1532 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1533 (__v32hi)_mm512_cvtepu8_epi16(__A), 1534 (__v32hi)__W); 1535} 1536 1537static __inline__ __m512i __DEFAULT_FN_ATTRS 1538_mm512_maskz_cvtepu8_epi16(__mmask32 __U, __m256i __A) 1539{ 1540 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1541 (__v32hi)_mm512_cvtepu8_epi16(__A), 1542 (__v32hi)_mm512_setzero_hi()); 1543} 1544 1545 1546#define _mm512_cmp_epi8_mask(a, b, p) __extension__ ({ \ 1547 (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \ 1548 (__v64qi)(__m512i)(b), (int)(p), \ 1549 (__mmask64)-1); }) 1550 1551#define _mm512_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \ 1552 (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \ 1553 (__v64qi)(__m512i)(b), (int)(p), \ 1554 (__mmask64)(m)); }) 1555 1556#define _mm512_cmp_epu8_mask(a, b, p) __extension__ ({ \ 1557 (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \ 1558 (__v64qi)(__m512i)(b), (int)(p), \ 1559 (__mmask64)-1); }) 1560 1561#define _mm512_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \ 1562 (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \ 1563 (__v64qi)(__m512i)(b), (int)(p), \ 1564 (__mmask64)(m)); }) 1565 1566#define _mm512_cmp_epi16_mask(a, b, p) __extension__ ({ \ 1567 (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \ 1568 (__v32hi)(__m512i)(b), (int)(p), \ 1569 (__mmask32)-1); }) 1570 1571#define _mm512_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \ 1572 (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \ 1573 (__v32hi)(__m512i)(b), (int)(p), \ 1574 (__mmask32)(m)); }) 1575 1576#define _mm512_cmp_epu16_mask(a, b, p) __extension__ ({ \ 1577 (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \ 1578 (__v32hi)(__m512i)(b), (int)(p), \ 1579 (__mmask32)-1); }) 1580 1581#define _mm512_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \ 1582 (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \ 1583 (__v32hi)(__m512i)(b), (int)(p), \ 1584 (__mmask32)(m)); }) 1585 1586#define _mm512_shufflehi_epi16(A, imm) __extension__ ({ \ 1587 (__m512i)__builtin_shufflevector((__v32hi)(__m512i)(A), \ 1588 (__v32hi)_mm512_undefined_epi32(), \ 1589 0, 1, 2, 3, \ 1590 4 + (((imm) >> 0) & 0x3), \ 1591 4 + (((imm) >> 2) & 0x3), \ 1592 4 + (((imm) >> 4) & 0x3), \ 1593 4 + (((imm) >> 6) & 0x3), \ 1594 8, 9, 10, 11, \ 1595 12 + (((imm) >> 0) & 0x3), \ 1596 12 + (((imm) >> 2) & 0x3), \ 1597 12 + (((imm) >> 4) & 0x3), \ 1598 12 + (((imm) >> 6) & 0x3), \ 1599 16, 17, 18, 19, \ 1600 20 + (((imm) >> 0) & 0x3), \ 1601 20 + (((imm) >> 2) & 0x3), \ 1602 20 + (((imm) >> 4) & 0x3), \ 1603 20 + (((imm) >> 6) & 0x3), \ 1604 24, 25, 26, 27, \ 1605 28 + (((imm) >> 0) & 0x3), \ 1606 28 + (((imm) >> 2) & 0x3), \ 1607 28 + (((imm) >> 4) & 0x3), \ 1608 28 + (((imm) >> 6) & 0x3)); }) 1609 1610#define _mm512_mask_shufflehi_epi16(W, U, A, imm) __extension__ ({ \ 1611 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \ 1612 (__v32hi)_mm512_shufflehi_epi16((A), \ 1613 (imm)), \ 1614 (__v32hi)(__m512i)(W)); }) 1615 1616#define _mm512_maskz_shufflehi_epi16(U, A, imm) __extension__ ({ \ 1617 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \ 1618 (__v32hi)_mm512_shufflehi_epi16((A), \ 1619 (imm)), \ 1620 (__v32hi)_mm512_setzero_hi()); }) 1621 1622#define _mm512_shufflelo_epi16(A, imm) __extension__ ({ \ 1623 (__m512i)__builtin_shufflevector((__v32hi)(__m512i)(A), \ 1624 (__v32hi)_mm512_undefined_epi32(), \ 1625 0 + (((imm) >> 0) & 0x3), \ 1626 0 + (((imm) >> 2) & 0x3), \ 1627 0 + (((imm) >> 4) & 0x3), \ 1628 0 + (((imm) >> 6) & 0x3), \ 1629 4, 5, 6, 7, \ 1630 8 + (((imm) >> 0) & 0x3), \ 1631 8 + (((imm) >> 2) & 0x3), \ 1632 8 + (((imm) >> 4) & 0x3), \ 1633 8 + (((imm) >> 6) & 0x3), \ 1634 12, 13, 14, 15, \ 1635 16 + (((imm) >> 0) & 0x3), \ 1636 16 + (((imm) >> 2) & 0x3), \ 1637 16 + (((imm) >> 4) & 0x3), \ 1638 16 + (((imm) >> 6) & 0x3), \ 1639 20, 21, 22, 23, \ 1640 24 + (((imm) >> 0) & 0x3), \ 1641 24 + (((imm) >> 2) & 0x3), \ 1642 24 + (((imm) >> 4) & 0x3), \ 1643 24 + (((imm) >> 6) & 0x3), \ 1644 28, 29, 30, 31); }) 1645 1646 1647#define _mm512_mask_shufflelo_epi16(W, U, A, imm) __extension__ ({ \ 1648 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \ 1649 (__v32hi)_mm512_shufflelo_epi16((A), \ 1650 (imm)), \ 1651 (__v32hi)(__m512i)(W)); }) 1652 1653 1654#define _mm512_maskz_shufflelo_epi16(U, A, imm) __extension__ ({ \ 1655 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \ 1656 (__v32hi)_mm512_shufflelo_epi16((A), \ 1657 (imm)), \ 1658 (__v32hi)_mm512_setzero_hi()); }) 1659 1660static __inline__ __m512i __DEFAULT_FN_ATTRS 1661_mm512_sllv_epi16(__m512i __A, __m512i __B) 1662{ 1663 return (__m512i)__builtin_ia32_psllv32hi((__v32hi) __A, (__v32hi) __B); 1664} 1665 1666static __inline__ __m512i __DEFAULT_FN_ATTRS 1667_mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) 1668{ 1669 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1670 (__v32hi)_mm512_sllv_epi16(__A, __B), 1671 (__v32hi)__W); 1672} 1673 1674static __inline__ __m512i __DEFAULT_FN_ATTRS 1675_mm512_maskz_sllv_epi16(__mmask32 __U, __m512i __A, __m512i __B) 1676{ 1677 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1678 (__v32hi)_mm512_sllv_epi16(__A, __B), 1679 (__v32hi)_mm512_setzero_hi()); 1680} 1681 1682static __inline__ __m512i __DEFAULT_FN_ATTRS 1683_mm512_sll_epi16(__m512i __A, __m128i __B) 1684{ 1685 return (__m512i)__builtin_ia32_psllw512((__v32hi) __A, (__v8hi) __B); 1686} 1687 1688static __inline__ __m512i __DEFAULT_FN_ATTRS 1689_mm512_mask_sll_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) 1690{ 1691 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1692 (__v32hi)_mm512_sll_epi16(__A, __B), 1693 (__v32hi)__W); 1694} 1695 1696static __inline__ __m512i __DEFAULT_FN_ATTRS 1697_mm512_maskz_sll_epi16(__mmask32 __U, __m512i __A, __m128i __B) 1698{ 1699 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1700 (__v32hi)_mm512_sll_epi16(__A, __B), 1701 (__v32hi)_mm512_setzero_hi()); 1702} 1703 1704static __inline__ __m512i __DEFAULT_FN_ATTRS 1705_mm512_slli_epi16(__m512i __A, int __B) 1706{ 1707 return (__m512i)__builtin_ia32_psllwi512((__v32hi)__A, __B); 1708} 1709 1710static __inline__ __m512i __DEFAULT_FN_ATTRS 1711_mm512_mask_slli_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B) 1712{ 1713 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1714 (__v32hi)_mm512_slli_epi16(__A, __B), 1715 (__v32hi)__W); 1716} 1717 1718static __inline__ __m512i __DEFAULT_FN_ATTRS 1719_mm512_maskz_slli_epi16(__mmask32 __U, __m512i __A, int __B) 1720{ 1721 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1722 (__v32hi)_mm512_slli_epi16(__A, __B), 1723 (__v32hi)_mm512_setzero_hi()); 1724} 1725 1726#define _mm512_bslli_epi128(a, imm) __extension__ ({ \ 1727 (__m512i)__builtin_shufflevector( \ 1728 (__v64qi)_mm512_setzero_si512(), \ 1729 (__v64qi)(__m512i)(a), \ 1730 ((char)(imm)&0xF0) ? 0 : ((char)(imm)>0x0 ? 16 : 64) - (char)(imm), \ 1731 ((char)(imm)&0xF0) ? 1 : ((char)(imm)>0x1 ? 17 : 65) - (char)(imm), \ 1732 ((char)(imm)&0xF0) ? 2 : ((char)(imm)>0x2 ? 18 : 66) - (char)(imm), \ 1733 ((char)(imm)&0xF0) ? 3 : ((char)(imm)>0x3 ? 19 : 67) - (char)(imm), \ 1734 ((char)(imm)&0xF0) ? 4 : ((char)(imm)>0x4 ? 20 : 68) - (char)(imm), \ 1735 ((char)(imm)&0xF0) ? 5 : ((char)(imm)>0x5 ? 21 : 69) - (char)(imm), \ 1736 ((char)(imm)&0xF0) ? 6 : ((char)(imm)>0x6 ? 22 : 70) - (char)(imm), \ 1737 ((char)(imm)&0xF0) ? 7 : ((char)(imm)>0x7 ? 23 : 71) - (char)(imm), \ 1738 ((char)(imm)&0xF0) ? 8 : ((char)(imm)>0x8 ? 24 : 72) - (char)(imm), \ 1739 ((char)(imm)&0xF0) ? 9 : ((char)(imm)>0x9 ? 25 : 73) - (char)(imm), \ 1740 ((char)(imm)&0xF0) ? 10 : ((char)(imm)>0xA ? 26 : 74) - (char)(imm), \ 1741 ((char)(imm)&0xF0) ? 11 : ((char)(imm)>0xB ? 27 : 75) - (char)(imm), \ 1742 ((char)(imm)&0xF0) ? 12 : ((char)(imm)>0xC ? 28 : 76) - (char)(imm), \ 1743 ((char)(imm)&0xF0) ? 13 : ((char)(imm)>0xD ? 29 : 77) - (char)(imm), \ 1744 ((char)(imm)&0xF0) ? 14 : ((char)(imm)>0xE ? 30 : 78) - (char)(imm), \ 1745 ((char)(imm)&0xF0) ? 15 : ((char)(imm)>0xF ? 31 : 79) - (char)(imm), \ 1746 ((char)(imm)&0xF0) ? 16 : ((char)(imm)>0x0 ? 32 : 80) - (char)(imm), \ 1747 ((char)(imm)&0xF0) ? 17 : ((char)(imm)>0x1 ? 33 : 81) - (char)(imm), \ 1748 ((char)(imm)&0xF0) ? 18 : ((char)(imm)>0x2 ? 34 : 82) - (char)(imm), \ 1749 ((char)(imm)&0xF0) ? 19 : ((char)(imm)>0x3 ? 35 : 83) - (char)(imm), \ 1750 ((char)(imm)&0xF0) ? 20 : ((char)(imm)>0x4 ? 36 : 84) - (char)(imm), \ 1751 ((char)(imm)&0xF0) ? 21 : ((char)(imm)>0x5 ? 37 : 85) - (char)(imm), \ 1752 ((char)(imm)&0xF0) ? 22 : ((char)(imm)>0x6 ? 38 : 86) - (char)(imm), \ 1753 ((char)(imm)&0xF0) ? 23 : ((char)(imm)>0x7 ? 39 : 87) - (char)(imm), \ 1754 ((char)(imm)&0xF0) ? 24 : ((char)(imm)>0x8 ? 40 : 88) - (char)(imm), \ 1755 ((char)(imm)&0xF0) ? 25 : ((char)(imm)>0x9 ? 41 : 89) - (char)(imm), \ 1756 ((char)(imm)&0xF0) ? 26 : ((char)(imm)>0xA ? 42 : 90) - (char)(imm), \ 1757 ((char)(imm)&0xF0) ? 27 : ((char)(imm)>0xB ? 43 : 91) - (char)(imm), \ 1758 ((char)(imm)&0xF0) ? 28 : ((char)(imm)>0xC ? 44 : 92) - (char)(imm), \ 1759 ((char)(imm)&0xF0) ? 29 : ((char)(imm)>0xD ? 45 : 93) - (char)(imm), \ 1760 ((char)(imm)&0xF0) ? 30 : ((char)(imm)>0xE ? 46 : 94) - (char)(imm), \ 1761 ((char)(imm)&0xF0) ? 31 : ((char)(imm)>0xF ? 47 : 95) - (char)(imm), \ 1762 ((char)(imm)&0xF0) ? 32 : ((char)(imm)>0x0 ? 48 : 96) - (char)(imm), \ 1763 ((char)(imm)&0xF0) ? 33 : ((char)(imm)>0x1 ? 49 : 97) - (char)(imm), \ 1764 ((char)(imm)&0xF0) ? 34 : ((char)(imm)>0x2 ? 50 : 98) - (char)(imm), \ 1765 ((char)(imm)&0xF0) ? 35 : ((char)(imm)>0x3 ? 51 : 99) - (char)(imm), \ 1766 ((char)(imm)&0xF0) ? 36 : ((char)(imm)>0x4 ? 52 : 100) - (char)(imm), \ 1767 ((char)(imm)&0xF0) ? 37 : ((char)(imm)>0x5 ? 53 : 101) - (char)(imm), \ 1768 ((char)(imm)&0xF0) ? 38 : ((char)(imm)>0x6 ? 54 : 102) - (char)(imm), \ 1769 ((char)(imm)&0xF0) ? 39 : ((char)(imm)>0x7 ? 55 : 103) - (char)(imm), \ 1770 ((char)(imm)&0xF0) ? 40 : ((char)(imm)>0x8 ? 56 : 104) - (char)(imm), \ 1771 ((char)(imm)&0xF0) ? 41 : ((char)(imm)>0x9 ? 57 : 105) - (char)(imm), \ 1772 ((char)(imm)&0xF0) ? 42 : ((char)(imm)>0xA ? 58 : 106) - (char)(imm), \ 1773 ((char)(imm)&0xF0) ? 43 : ((char)(imm)>0xB ? 59 : 107) - (char)(imm), \ 1774 ((char)(imm)&0xF0) ? 44 : ((char)(imm)>0xC ? 60 : 108) - (char)(imm), \ 1775 ((char)(imm)&0xF0) ? 45 : ((char)(imm)>0xD ? 61 : 109) - (char)(imm), \ 1776 ((char)(imm)&0xF0) ? 46 : ((char)(imm)>0xE ? 62 : 110) - (char)(imm), \ 1777 ((char)(imm)&0xF0) ? 47 : ((char)(imm)>0xF ? 63 : 111) - (char)(imm), \ 1778 ((char)(imm)&0xF0) ? 48 : ((char)(imm)>0x0 ? 64 : 112) - (char)(imm), \ 1779 ((char)(imm)&0xF0) ? 49 : ((char)(imm)>0x1 ? 65 : 113) - (char)(imm), \ 1780 ((char)(imm)&0xF0) ? 50 : ((char)(imm)>0x2 ? 66 : 114) - (char)(imm), \ 1781 ((char)(imm)&0xF0) ? 51 : ((char)(imm)>0x3 ? 67 : 115) - (char)(imm), \ 1782 ((char)(imm)&0xF0) ? 52 : ((char)(imm)>0x4 ? 68 : 116) - (char)(imm), \ 1783 ((char)(imm)&0xF0) ? 53 : ((char)(imm)>0x5 ? 69 : 117) - (char)(imm), \ 1784 ((char)(imm)&0xF0) ? 54 : ((char)(imm)>0x6 ? 70 : 118) - (char)(imm), \ 1785 ((char)(imm)&0xF0) ? 55 : ((char)(imm)>0x7 ? 71 : 119) - (char)(imm), \ 1786 ((char)(imm)&0xF0) ? 56 : ((char)(imm)>0x8 ? 72 : 120) - (char)(imm), \ 1787 ((char)(imm)&0xF0) ? 57 : ((char)(imm)>0x9 ? 73 : 121) - (char)(imm), \ 1788 ((char)(imm)&0xF0) ? 58 : ((char)(imm)>0xA ? 74 : 122) - (char)(imm), \ 1789 ((char)(imm)&0xF0) ? 59 : ((char)(imm)>0xB ? 75 : 123) - (char)(imm), \ 1790 ((char)(imm)&0xF0) ? 60 : ((char)(imm)>0xC ? 76 : 124) - (char)(imm), \ 1791 ((char)(imm)&0xF0) ? 61 : ((char)(imm)>0xD ? 77 : 125) - (char)(imm), \ 1792 ((char)(imm)&0xF0) ? 62 : ((char)(imm)>0xE ? 78 : 126) - (char)(imm), \ 1793 ((char)(imm)&0xF0) ? 63 : ((char)(imm)>0xF ? 79 : 127) - (char)(imm)); }) 1794 1795static __inline__ __m512i __DEFAULT_FN_ATTRS 1796_mm512_srlv_epi16(__m512i __A, __m512i __B) 1797{ 1798 return (__m512i)__builtin_ia32_psrlv32hi((__v32hi)__A, (__v32hi)__B); 1799} 1800 1801static __inline__ __m512i __DEFAULT_FN_ATTRS 1802_mm512_mask_srlv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) 1803{ 1804 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1805 (__v32hi)_mm512_srlv_epi16(__A, __B), 1806 (__v32hi)__W); 1807} 1808 1809static __inline__ __m512i __DEFAULT_FN_ATTRS 1810_mm512_maskz_srlv_epi16(__mmask32 __U, __m512i __A, __m512i __B) 1811{ 1812 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1813 (__v32hi)_mm512_srlv_epi16(__A, __B), 1814 (__v32hi)_mm512_setzero_hi()); 1815} 1816 1817static __inline__ __m512i __DEFAULT_FN_ATTRS 1818_mm512_srav_epi16(__m512i __A, __m512i __B) 1819{ 1820 return (__m512i)__builtin_ia32_psrav32hi((__v32hi)__A, (__v32hi)__B); 1821} 1822 1823static __inline__ __m512i __DEFAULT_FN_ATTRS 1824_mm512_mask_srav_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) 1825{ 1826 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1827 (__v32hi)_mm512_srav_epi16(__A, __B), 1828 (__v32hi)__W); 1829} 1830 1831static __inline__ __m512i __DEFAULT_FN_ATTRS 1832_mm512_maskz_srav_epi16(__mmask32 __U, __m512i __A, __m512i __B) 1833{ 1834 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1835 (__v32hi)_mm512_srav_epi16(__A, __B), 1836 (__v32hi)_mm512_setzero_hi()); 1837} 1838 1839static __inline__ __m512i __DEFAULT_FN_ATTRS 1840_mm512_sra_epi16(__m512i __A, __m128i __B) 1841{ 1842 return (__m512i)__builtin_ia32_psraw512((__v32hi) __A, (__v8hi) __B); 1843} 1844 1845static __inline__ __m512i __DEFAULT_FN_ATTRS 1846_mm512_mask_sra_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) 1847{ 1848 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1849 (__v32hi)_mm512_sra_epi16(__A, __B), 1850 (__v32hi)__W); 1851} 1852 1853static __inline__ __m512i __DEFAULT_FN_ATTRS 1854_mm512_maskz_sra_epi16(__mmask32 __U, __m512i __A, __m128i __B) 1855{ 1856 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1857 (__v32hi)_mm512_sra_epi16(__A, __B), 1858 (__v32hi)_mm512_setzero_hi()); 1859} 1860 1861static __inline__ __m512i __DEFAULT_FN_ATTRS 1862_mm512_srai_epi16(__m512i __A, int __B) 1863{ 1864 return (__m512i)__builtin_ia32_psrawi512((__v32hi)__A, __B); 1865} 1866 1867static __inline__ __m512i __DEFAULT_FN_ATTRS 1868_mm512_mask_srai_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B) 1869{ 1870 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1871 (__v32hi)_mm512_srai_epi16(__A, __B), 1872 (__v32hi)__W); 1873} 1874 1875static __inline__ __m512i __DEFAULT_FN_ATTRS 1876_mm512_maskz_srai_epi16(__mmask32 __U, __m512i __A, int __B) 1877{ 1878 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1879 (__v32hi)_mm512_srai_epi16(__A, __B), 1880 (__v32hi)_mm512_setzero_hi()); 1881} 1882 1883static __inline__ __m512i __DEFAULT_FN_ATTRS 1884_mm512_srl_epi16(__m512i __A, __m128i __B) 1885{ 1886 return (__m512i)__builtin_ia32_psrlw512((__v32hi) __A, (__v8hi) __B); 1887} 1888 1889static __inline__ __m512i __DEFAULT_FN_ATTRS 1890_mm512_mask_srl_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) 1891{ 1892 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1893 (__v32hi)_mm512_srl_epi16(__A, __B), 1894 (__v32hi)__W); 1895} 1896 1897static __inline__ __m512i __DEFAULT_FN_ATTRS 1898_mm512_maskz_srl_epi16(__mmask32 __U, __m512i __A, __m128i __B) 1899{ 1900 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1901 (__v32hi)_mm512_srl_epi16(__A, __B), 1902 (__v32hi)_mm512_setzero_hi()); 1903} 1904 1905static __inline__ __m512i __DEFAULT_FN_ATTRS 1906_mm512_srli_epi16(__m512i __A, int __B) 1907{ 1908 return (__m512i)__builtin_ia32_psrlwi512((__v32hi)__A, __B); 1909} 1910 1911static __inline__ __m512i __DEFAULT_FN_ATTRS 1912_mm512_mask_srli_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B) 1913{ 1914 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1915 (__v32hi)_mm512_srli_epi16(__A, __B), 1916 (__v32hi)__W); 1917} 1918 1919static __inline__ __m512i __DEFAULT_FN_ATTRS 1920_mm512_maskz_srli_epi16(__mmask32 __U, __m512i __A, int __B) 1921{ 1922 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U, 1923 (__v32hi)_mm512_srli_epi16(__A, __B), 1924 (__v32hi)_mm512_setzero_hi()); 1925} 1926 1927#define _mm512_bsrli_epi128(a, imm) __extension__ ({ \ 1928 (__m512i)__builtin_shufflevector( \ 1929 (__v64qi)(__m512i)(a), \ 1930 (__v64qi)_mm512_setzero_si512(), \ 1931 ((char)(imm)&0xF0) ? 64 : (char)(imm) + ((char)(imm)>0xF ? 48 : 0), \ 1932 ((char)(imm)&0xF0) ? 65 : (char)(imm) + ((char)(imm)>0xE ? 49 : 1), \ 1933 ((char)(imm)&0xF0) ? 66 : (char)(imm) + ((char)(imm)>0xD ? 50 : 2), \ 1934 ((char)(imm)&0xF0) ? 67 : (char)(imm) + ((char)(imm)>0xC ? 51 : 3), \ 1935 ((char)(imm)&0xF0) ? 68 : (char)(imm) + ((char)(imm)>0xB ? 52 : 4), \ 1936 ((char)(imm)&0xF0) ? 69 : (char)(imm) + ((char)(imm)>0xA ? 53 : 5), \ 1937 ((char)(imm)&0xF0) ? 70 : (char)(imm) + ((char)(imm)>0x9 ? 54 : 6), \ 1938 ((char)(imm)&0xF0) ? 71 : (char)(imm) + ((char)(imm)>0x8 ? 55 : 7), \ 1939 ((char)(imm)&0xF0) ? 72 : (char)(imm) + ((char)(imm)>0x7 ? 56 : 8), \ 1940 ((char)(imm)&0xF0) ? 73 : (char)(imm) + ((char)(imm)>0x6 ? 57 : 9), \ 1941 ((char)(imm)&0xF0) ? 74 : (char)(imm) + ((char)(imm)>0x5 ? 58 : 10), \ 1942 ((char)(imm)&0xF0) ? 75 : (char)(imm) + ((char)(imm)>0x4 ? 59 : 11), \ 1943 ((char)(imm)&0xF0) ? 76 : (char)(imm) + ((char)(imm)>0x3 ? 60 : 12), \ 1944 ((char)(imm)&0xF0) ? 77 : (char)(imm) + ((char)(imm)>0x2 ? 61 : 13), \ 1945 ((char)(imm)&0xF0) ? 78 : (char)(imm) + ((char)(imm)>0x1 ? 62 : 14), \ 1946 ((char)(imm)&0xF0) ? 79 : (char)(imm) + ((char)(imm)>0x0 ? 63 : 15), \ 1947 ((char)(imm)&0xF0) ? 80 : (char)(imm) + ((char)(imm)>0xF ? 64 : 16), \ 1948 ((char)(imm)&0xF0) ? 81 : (char)(imm) + ((char)(imm)>0xE ? 65 : 17), \ 1949 ((char)(imm)&0xF0) ? 82 : (char)(imm) + ((char)(imm)>0xD ? 66 : 18), \ 1950 ((char)(imm)&0xF0) ? 83 : (char)(imm) + ((char)(imm)>0xC ? 67 : 19), \ 1951 ((char)(imm)&0xF0) ? 84 : (char)(imm) + ((char)(imm)>0xB ? 68 : 20), \ 1952 ((char)(imm)&0xF0) ? 85 : (char)(imm) + ((char)(imm)>0xA ? 69 : 21), \ 1953 ((char)(imm)&0xF0) ? 86 : (char)(imm) + ((char)(imm)>0x9 ? 70 : 22), \ 1954 ((char)(imm)&0xF0) ? 87 : (char)(imm) + ((char)(imm)>0x8 ? 71 : 23), \ 1955 ((char)(imm)&0xF0) ? 88 : (char)(imm) + ((char)(imm)>0x7 ? 72 : 24), \ 1956 ((char)(imm)&0xF0) ? 89 : (char)(imm) + ((char)(imm)>0x6 ? 73 : 25), \ 1957 ((char)(imm)&0xF0) ? 90 : (char)(imm) + ((char)(imm)>0x5 ? 74 : 26), \ 1958 ((char)(imm)&0xF0) ? 91 : (char)(imm) + ((char)(imm)>0x4 ? 75 : 27), \ 1959 ((char)(imm)&0xF0) ? 92 : (char)(imm) + ((char)(imm)>0x3 ? 76 : 28), \ 1960 ((char)(imm)&0xF0) ? 93 : (char)(imm) + ((char)(imm)>0x2 ? 77 : 29), \ 1961 ((char)(imm)&0xF0) ? 94 : (char)(imm) + ((char)(imm)>0x1 ? 78 : 30), \ 1962 ((char)(imm)&0xF0) ? 95 : (char)(imm) + ((char)(imm)>0x0 ? 79 : 31), \ 1963 ((char)(imm)&0xF0) ? 96 : (char)(imm) + ((char)(imm)>0xF ? 80 : 32), \ 1964 ((char)(imm)&0xF0) ? 97 : (char)(imm) + ((char)(imm)>0xE ? 81 : 33), \ 1965 ((char)(imm)&0xF0) ? 98 : (char)(imm) + ((char)(imm)>0xD ? 82 : 34), \ 1966 ((char)(imm)&0xF0) ? 99 : (char)(imm) + ((char)(imm)>0xC ? 83 : 35), \ 1967 ((char)(imm)&0xF0) ? 100 : (char)(imm) + ((char)(imm)>0xB ? 84 : 36), \ 1968 ((char)(imm)&0xF0) ? 101 : (char)(imm) + ((char)(imm)>0xA ? 85 : 37), \ 1969 ((char)(imm)&0xF0) ? 102 : (char)(imm) + ((char)(imm)>0x9 ? 86 : 38), \ 1970 ((char)(imm)&0xF0) ? 103 : (char)(imm) + ((char)(imm)>0x8 ? 87 : 39), \ 1971 ((char)(imm)&0xF0) ? 104 : (char)(imm) + ((char)(imm)>0x7 ? 88 : 40), \ 1972 ((char)(imm)&0xF0) ? 105 : (char)(imm) + ((char)(imm)>0x6 ? 89 : 41), \ 1973 ((char)(imm)&0xF0) ? 106 : (char)(imm) + ((char)(imm)>0x5 ? 90 : 42), \ 1974 ((char)(imm)&0xF0) ? 107 : (char)(imm) + ((char)(imm)>0x4 ? 91 : 43), \ 1975 ((char)(imm)&0xF0) ? 108 : (char)(imm) + ((char)(imm)>0x3 ? 92 : 44), \ 1976 ((char)(imm)&0xF0) ? 109 : (char)(imm) + ((char)(imm)>0x2 ? 93 : 45), \ 1977 ((char)(imm)&0xF0) ? 110 : (char)(imm) + ((char)(imm)>0x1 ? 94 : 46), \ 1978 ((char)(imm)&0xF0) ? 111 : (char)(imm) + ((char)(imm)>0x0 ? 95 : 47), \ 1979 ((char)(imm)&0xF0) ? 112 : (char)(imm) + ((char)(imm)>0xF ? 96 : 48), \ 1980 ((char)(imm)&0xF0) ? 113 : (char)(imm) + ((char)(imm)>0xE ? 97 : 49), \ 1981 ((char)(imm)&0xF0) ? 114 : (char)(imm) + ((char)(imm)>0xD ? 98 : 50), \ 1982 ((char)(imm)&0xF0) ? 115 : (char)(imm) + ((char)(imm)>0xC ? 99 : 51), \ 1983 ((char)(imm)&0xF0) ? 116 : (char)(imm) + ((char)(imm)>0xB ? 100 : 52), \ 1984 ((char)(imm)&0xF0) ? 117 : (char)(imm) + ((char)(imm)>0xA ? 101 : 53), \ 1985 ((char)(imm)&0xF0) ? 118 : (char)(imm) + ((char)(imm)>0x9 ? 102 : 54), \ 1986 ((char)(imm)&0xF0) ? 119 : (char)(imm) + ((char)(imm)>0x8 ? 103 : 55), \ 1987 ((char)(imm)&0xF0) ? 120 : (char)(imm) + ((char)(imm)>0x7 ? 104 : 56), \ 1988 ((char)(imm)&0xF0) ? 121 : (char)(imm) + ((char)(imm)>0x6 ? 105 : 57), \ 1989 ((char)(imm)&0xF0) ? 122 : (char)(imm) + ((char)(imm)>0x5 ? 106 : 58), \ 1990 ((char)(imm)&0xF0) ? 123 : (char)(imm) + ((char)(imm)>0x4 ? 107 : 59), \ 1991 ((char)(imm)&0xF0) ? 124 : (char)(imm) + ((char)(imm)>0x3 ? 108 : 60), \ 1992 ((char)(imm)&0xF0) ? 125 : (char)(imm) + ((char)(imm)>0x2 ? 109 : 61), \ 1993 ((char)(imm)&0xF0) ? 126 : (char)(imm) + ((char)(imm)>0x1 ? 110 : 62), \ 1994 ((char)(imm)&0xF0) ? 127 : (char)(imm) + ((char)(imm)>0x0 ? 111 : 63)); }) 1995 1996static __inline__ __m512i __DEFAULT_FN_ATTRS 1997_mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A) 1998{ 1999 return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U, 2000 (__v32hi) __A, 2001 (__v32hi) __W); 2002} 2003 2004static __inline__ __m512i __DEFAULT_FN_ATTRS 2005_mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A) 2006{ 2007 return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U, 2008 (__v32hi) __A, 2009 (__v32hi) _mm512_setzero_hi ()); 2010} 2011 2012static __inline__ __m512i __DEFAULT_FN_ATTRS 2013_mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A) 2014{ 2015 return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U, 2016 (__v64qi) __A, 2017 (__v64qi) __W); 2018} 2019 2020static __inline__ __m512i __DEFAULT_FN_ATTRS 2021_mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A) 2022{ 2023 return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U, 2024 (__v64qi) __A, 2025 (__v64qi) _mm512_setzero_hi ()); 2026} 2027 2028static __inline__ __m512i __DEFAULT_FN_ATTRS 2029_mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A) 2030{ 2031 return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A, 2032 (__v64qi) __O, 2033 __M); 2034} 2035 2036static __inline__ __m512i __DEFAULT_FN_ATTRS 2037_mm512_maskz_set1_epi8 (__mmask64 __M, char __A) 2038{ 2039 return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A, 2040 (__v64qi) 2041 _mm512_setzero_qi(), 2042 __M); 2043} 2044 2045static __inline__ __mmask64 __DEFAULT_FN_ATTRS 2046_mm512_kunpackd (__mmask64 __A, __mmask64 __B) 2047{ 2048 return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A, 2049 (__mmask64) __B); 2050} 2051 2052static __inline__ __mmask32 __DEFAULT_FN_ATTRS 2053_mm512_kunpackw (__mmask32 __A, __mmask32 __B) 2054{ 2055 return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A, 2056 (__mmask32) __B); 2057} 2058 2059static __inline__ __m512i __DEFAULT_FN_ATTRS 2060_mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P) 2061{ 2062 return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P, 2063 (__v32hi) __W, 2064 (__mmask32) __U); 2065} 2066 2067static __inline__ __m512i __DEFAULT_FN_ATTRS 2068_mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P) 2069{ 2070 return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P, 2071 (__v32hi) 2072 _mm512_setzero_hi (), 2073 (__mmask32) __U); 2074} 2075 2076static __inline__ __m512i __DEFAULT_FN_ATTRS 2077_mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P) 2078{ 2079 return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P, 2080 (__v64qi) __W, 2081 (__mmask64) __U); 2082} 2083 2084static __inline__ __m512i __DEFAULT_FN_ATTRS 2085_mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P) 2086{ 2087 return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P, 2088 (__v64qi) 2089 _mm512_setzero_hi (), 2090 (__mmask64) __U); 2091} 2092static __inline__ void __DEFAULT_FN_ATTRS 2093_mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A) 2094{ 2095 __builtin_ia32_storedquhi512_mask ((__v32hi *) __P, 2096 (__v32hi) __A, 2097 (__mmask32) __U); 2098} 2099 2100static __inline__ void __DEFAULT_FN_ATTRS 2101_mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A) 2102{ 2103 __builtin_ia32_storedquqi512_mask ((__v64qi *) __P, 2104 (__v64qi) __A, 2105 (__mmask64) __U); 2106} 2107 2108static __inline__ __mmask64 __DEFAULT_FN_ATTRS 2109_mm512_test_epi8_mask (__m512i __A, __m512i __B) 2110{ 2111 return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A, 2112 (__v64qi) __B, 2113 (__mmask64) -1); 2114} 2115 2116static __inline__ __mmask64 __DEFAULT_FN_ATTRS 2117_mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B) 2118{ 2119 return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A, 2120 (__v64qi) __B, __U); 2121} 2122 2123static __inline__ __mmask32 __DEFAULT_FN_ATTRS 2124_mm512_test_epi16_mask (__m512i __A, __m512i __B) 2125{ 2126 return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A, 2127 (__v32hi) __B, 2128 (__mmask32) -1); 2129} 2130 2131static __inline__ __mmask32 __DEFAULT_FN_ATTRS 2132_mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B) 2133{ 2134 return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A, 2135 (__v32hi) __B, __U); 2136} 2137 2138static __inline__ __mmask64 __DEFAULT_FN_ATTRS 2139_mm512_testn_epi8_mask (__m512i __A, __m512i __B) 2140{ 2141 return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A, 2142 (__v64qi) __B, 2143 (__mmask64) -1); 2144} 2145 2146static __inline__ __mmask64 __DEFAULT_FN_ATTRS 2147_mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B) 2148{ 2149 return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A, 2150 (__v64qi) __B, __U); 2151} 2152 2153static __inline__ __mmask32 __DEFAULT_FN_ATTRS 2154_mm512_testn_epi16_mask (__m512i __A, __m512i __B) 2155{ 2156 return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A, 2157 (__v32hi) __B, 2158 (__mmask32) -1); 2159} 2160 2161static __inline__ __mmask32 __DEFAULT_FN_ATTRS 2162_mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B) 2163{ 2164 return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A, 2165 (__v32hi) __B, __U); 2166} 2167 2168static __inline__ __mmask64 __DEFAULT_FN_ATTRS 2169_mm512_movepi8_mask (__m512i __A) 2170{ 2171 return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A); 2172} 2173 2174static __inline__ __mmask32 __DEFAULT_FN_ATTRS 2175_mm512_movepi16_mask (__m512i __A) 2176{ 2177 return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A); 2178} 2179 2180static __inline__ __m512i __DEFAULT_FN_ATTRS 2181_mm512_movm_epi8 (__mmask64 __A) 2182{ 2183 return (__m512i) __builtin_ia32_cvtmask2b512 (__A); 2184} 2185 2186static __inline__ __m512i __DEFAULT_FN_ATTRS 2187_mm512_movm_epi16 (__mmask32 __A) 2188{ 2189 return (__m512i) __builtin_ia32_cvtmask2w512 (__A); 2190} 2191 2192static __inline__ __m512i __DEFAULT_FN_ATTRS 2193_mm512_broadcastb_epi8 (__m128i __A) 2194{ 2195 return (__m512i)__builtin_shufflevector((__v16qi) __A, 2196 (__v16qi)_mm_undefined_si128(), 2197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2198 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2199 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2200 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); 2201} 2202 2203static __inline__ __m512i __DEFAULT_FN_ATTRS 2204_mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A) 2205{ 2206 return (__m512i)__builtin_ia32_selectb_512(__M, 2207 (__v64qi) _mm512_broadcastb_epi8(__A), 2208 (__v64qi) __O); 2209} 2210 2211static __inline__ __m512i __DEFAULT_FN_ATTRS 2212_mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A) 2213{ 2214 return (__m512i)__builtin_ia32_selectb_512(__M, 2215 (__v64qi) _mm512_broadcastb_epi8(__A), 2216 (__v64qi) _mm512_setzero_si512()); 2217} 2218 2219static __inline__ __m512i __DEFAULT_FN_ATTRS 2220_mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A) 2221{ 2222 return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A, 2223 (__v32hi) __O, 2224 __M); 2225} 2226 2227static __inline__ __m512i __DEFAULT_FN_ATTRS 2228_mm512_maskz_set1_epi16 (__mmask32 __M, short __A) 2229{ 2230 return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A, 2231 (__v32hi) _mm512_setzero_hi(), 2232 __M); 2233} 2234 2235static __inline__ __m512i __DEFAULT_FN_ATTRS 2236_mm512_broadcastw_epi16 (__m128i __A) 2237{ 2238 return (__m512i)__builtin_shufflevector((__v8hi) __A, 2239 (__v8hi)_mm_undefined_si128(), 2240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2241 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); 2242} 2243 2244static __inline__ __m512i __DEFAULT_FN_ATTRS 2245_mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A) 2246{ 2247 return (__m512i)__builtin_ia32_selectw_512(__M, 2248 (__v32hi) _mm512_broadcastw_epi16(__A), 2249 (__v32hi) __O); 2250} 2251 2252static __inline__ __m512i __DEFAULT_FN_ATTRS 2253_mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A) 2254{ 2255 return (__m512i)__builtin_ia32_selectw_512(__M, 2256 (__v32hi) _mm512_broadcastw_epi16(__A), 2257 (__v32hi) _mm512_setzero_si512()); 2258} 2259 2260static __inline__ __m512i __DEFAULT_FN_ATTRS 2261_mm512_permutexvar_epi16 (__m512i __A, __m512i __B) 2262{ 2263 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B, 2264 (__v32hi) __A, 2265 (__v32hi) _mm512_undefined_epi32 (), 2266 (__mmask32) -1); 2267} 2268 2269static __inline__ __m512i __DEFAULT_FN_ATTRS 2270_mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A, 2271 __m512i __B) 2272{ 2273 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B, 2274 (__v32hi) __A, 2275 (__v32hi) _mm512_setzero_hi(), 2276 (__mmask32) __M); 2277} 2278 2279static __inline__ __m512i __DEFAULT_FN_ATTRS 2280_mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A, 2281 __m512i __B) 2282{ 2283 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B, 2284 (__v32hi) __A, 2285 (__v32hi) __W, 2286 (__mmask32) __M); 2287} 2288 2289#define _mm512_alignr_epi8(A, B, N) __extension__ ({\ 2290 (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \ 2291 (__v64qi)(__m512i)(B), (int)(N), \ 2292 (__v64qi)_mm512_undefined_pd(), \ 2293 (__mmask64)-1); }) 2294 2295#define _mm512_mask_alignr_epi8(W, U, A, B, N) __extension__({\ 2296 (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \ 2297 (__v64qi)(__m512i)(B), (int)(N), \ 2298 (__v64qi)(__m512i)(W), \ 2299 (__mmask64)(U)); }) 2300 2301#define _mm512_maskz_alignr_epi8(U, A, B, N) __extension__({\ 2302 (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \ 2303 (__v64qi)(__m512i)(B), (int)(N), \ 2304 (__v64qi)_mm512_setzero_si512(), \ 2305 (__mmask64)(U)); }) 2306 2307#define _mm512_dbsad_epu8(A, B, imm) __extension__ ({\ 2308 (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \ 2309 (__v64qi)(__m512i)(B), (int)(imm), \ 2310 (__v32hi)_mm512_undefined_epi32(), \ 2311 (__mmask32)-1); }) 2312 2313#define _mm512_mask_dbsad_epu8(W, U, A, B, imm) ({\ 2314 (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \ 2315 (__v64qi)(__m512i)(B), (int)(imm), \ 2316 (__v32hi)(__m512i)(W), \ 2317 (__mmask32)(U)); }) 2318 2319#define _mm512_maskz_dbsad_epu8(U, A, B, imm) ({\ 2320 (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \ 2321 (__v64qi)(__m512i)(B), (int)(imm), \ 2322 (__v32hi)_mm512_setzero_hi(), \ 2323 (__mmask32)(U)); }) 2324 2325static __inline__ __m512i __DEFAULT_FN_ATTRS 2326_mm512_sad_epu8 (__m512i __A, __m512i __B) 2327{ 2328 return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A, 2329 (__v64qi) __B); 2330} 2331 2332 2333 2334#undef __DEFAULT_FN_ATTRS 2335 2336#endif 2337