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