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((__v16si)__A, (__v16si)__B); 510 } 511 512 static __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 520 static __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 528 static __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 534 static __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 542 static __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 550 static __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 556 static __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 564 static __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 572 static __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 578 static __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 586 static __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 594 static __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 603 static __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 613 static __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 622 static __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 631 static __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 641 static __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 650 static __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 659 static __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 669 static __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 678 static __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 687 static __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 697 static __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 706 static __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 715 static __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 725 static __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 734 static __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 743 static __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 753 static __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 762 static __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 771 static __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 780 static __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 790 static __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 799 static __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 808 static __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 818 static __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 827 static __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 836 static __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 846 static __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 855 static __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 864 static __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 874 static __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 883 static __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 892 static __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 902 static __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 911 static __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 920 static __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 930 static __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 939 static __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 948 static __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 958 static __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 967 static __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 976 static __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 986 static __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 992 static __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 1000 static __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 1008 static __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 1017 static __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 1027 static __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 1036 static __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 1045 static __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 1055 static __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 1064 static __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 1073 static __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 1083 static __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 1092 static __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 1101 static __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 1111 static __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 1120 static __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 1130 static __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 1139 static __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 1149 static __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 1160 static __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 1169 static __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 1179 static __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 1188 static __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 1197 static __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 1207 static __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 1216 static __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 1225 static __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 1235 static __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 1244 static __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 1252 static __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 1261 static __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 1269 static __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 1277 static __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 1286 static __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 1294 static __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 1301 static __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 1308 static __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 1315 static __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 1322 static __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 1329 static __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 1336 static __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 1343 static __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 1350 static __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 1357 static __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 1363 static __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 1369 static __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 1375 static __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 1396 static __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 1403 static __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 1410 static __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 1423 static __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 1430 static __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 1437 static __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 1458 static __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 1465 static __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 1472 static __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 1485 static __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 1492 static __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 1499 static __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 1507 static __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 1515 static __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 1523 static __inline__ __m512i __DEFAULT_FN_ATTRS 1524 _mm512_cvtepu8_epi16(__m256i __A) 1525 { 1526 return (__m512i)__builtin_convertvector((__v32qu)__A, __v32hi); 1527 } 1528 1529 static __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 1537 static __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 1660 static __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 1666 static __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 1674 static __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 1682 static __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 1688 static __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 1696 static __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 1704 static __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 1710 static __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 1718 static __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 1795 static __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 1801 static __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 1809 static __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 1817 static __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 1823 static __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 1831 static __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 1839 static __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 1845 static __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 1853 static __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 1861 static __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 1867 static __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 1875 static __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 1883 static __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 1889 static __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 1897 static __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 1905 static __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 1911 static __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 1919 static __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 1996 static __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 2004 static __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 2012 static __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 2020 static __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 2028 static __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 2036 static __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 2045 static __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 2052 static __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 2059 static __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 2067 static __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 2076 static __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 2084 static __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 } 2092 static __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 2100 static __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 2108 static __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 2116 static __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 2123 static __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 2131 static __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 2138 static __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 2146 static __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 2153 static __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 2161 static __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 2168 static __inline__ __mmask64 __DEFAULT_FN_ATTRS 2169 _mm512_movepi8_mask (__m512i __A) 2170 { 2171 return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A); 2172 } 2173 2174 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 2175 _mm512_movepi16_mask (__m512i __A) 2176 { 2177 return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A); 2178 } 2179 2180 static __inline__ __m512i __DEFAULT_FN_ATTRS 2181 _mm512_movm_epi8 (__mmask64 __A) 2182 { 2183 return (__m512i) __builtin_ia32_cvtmask2b512 (__A); 2184 } 2185 2186 static __inline__ __m512i __DEFAULT_FN_ATTRS 2187 _mm512_movm_epi16 (__mmask32 __A) 2188 { 2189 return (__m512i) __builtin_ia32_cvtmask2w512 (__A); 2190 } 2191 2192 static __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 2203 static __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 2211 static __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 2219 static __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 2227 static __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 2235 static __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 2244 static __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 2252 static __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 2260 static __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 2269 static __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 2279 static __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 2325 static __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