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