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