1 1.7 mrg /* Copyright (C) 2014-2022 Free Software Foundation, Inc. 2 1.1 mrg 3 1.1 mrg This file is part of GCC. 4 1.1 mrg 5 1.1 mrg GCC is free software; you can redistribute it and/or modify 6 1.1 mrg it under the terms of the GNU General Public License as published by 7 1.1 mrg the Free Software Foundation; either version 3, or (at your option) 8 1.1 mrg any later version. 9 1.1 mrg 10 1.1 mrg GCC is distributed in the hope that it will be useful, 11 1.1 mrg but WITHOUT ANY WARRANTY; without even the implied warranty of 12 1.1 mrg MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 1.1 mrg GNU General Public License for more details. 14 1.1 mrg 15 1.1 mrg Under Section 7 of GPL version 3, you are granted additional 16 1.1 mrg permissions described in the GCC Runtime Library Exception, version 17 1.1 mrg 3.1, as published by the Free Software Foundation. 18 1.1 mrg 19 1.1 mrg You should have received a copy of the GNU General Public License and 20 1.1 mrg a copy of the GCC Runtime Library Exception along with this program; 21 1.1 mrg see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 22 1.1 mrg <http://www.gnu.org/licenses/>. */ 23 1.1 mrg 24 1.1 mrg #ifndef _IMMINTRIN_H_INCLUDED 25 1.1 mrg #error "Never use <avx512bwintrin.h> directly; include <immintrin.h> instead." 26 1.1 mrg #endif 27 1.1 mrg 28 1.1 mrg #ifndef _AVX512BWINTRIN_H_INCLUDED 29 1.1 mrg #define _AVX512BWINTRIN_H_INCLUDED 30 1.1 mrg 31 1.1 mrg #ifndef __AVX512BW__ 32 1.1 mrg #pragma GCC push_options 33 1.1 mrg #pragma GCC target("avx512bw") 34 1.1 mrg #define __DISABLE_AVX512BW__ 35 1.1 mrg #endif /* __AVX512BW__ */ 36 1.1 mrg 37 1.1 mrg /* Internal data types for implementing the intrinsics. */ 38 1.1 mrg typedef short __v32hi __attribute__ ((__vector_size__ (64))); 39 1.7 mrg typedef short __v32hi_u __attribute__ ((__vector_size__ (64), \ 40 1.7 mrg __may_alias__, __aligned__ (1))); 41 1.1 mrg typedef char __v64qi __attribute__ ((__vector_size__ (64))); 42 1.7 mrg typedef char __v64qi_u __attribute__ ((__vector_size__ (64), \ 43 1.7 mrg __may_alias__, __aligned__ (1))); 44 1.1 mrg 45 1.1 mrg typedef unsigned long long __mmask64; 46 1.1 mrg 47 1.3 mrg extern __inline unsigned char 48 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 49 1.3 mrg _ktest_mask32_u8 (__mmask32 __A, __mmask32 __B, unsigned char *__CF) 50 1.3 mrg { 51 1.3 mrg *__CF = (unsigned char) __builtin_ia32_ktestcsi (__A, __B); 52 1.3 mrg return (unsigned char) __builtin_ia32_ktestzsi (__A, __B); 53 1.3 mrg } 54 1.3 mrg 55 1.3 mrg extern __inline unsigned char 56 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 57 1.3 mrg _ktest_mask64_u8 (__mmask64 __A, __mmask64 __B, unsigned char *__CF) 58 1.3 mrg { 59 1.3 mrg *__CF = (unsigned char) __builtin_ia32_ktestcdi (__A, __B); 60 1.3 mrg return (unsigned char) __builtin_ia32_ktestzdi (__A, __B); 61 1.3 mrg } 62 1.3 mrg 63 1.3 mrg extern __inline unsigned char 64 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 65 1.3 mrg _ktestz_mask32_u8 (__mmask32 __A, __mmask32 __B) 66 1.3 mrg { 67 1.3 mrg return (unsigned char) __builtin_ia32_ktestzsi (__A, __B); 68 1.3 mrg } 69 1.3 mrg 70 1.3 mrg extern __inline unsigned char 71 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 72 1.3 mrg _ktestz_mask64_u8 (__mmask64 __A, __mmask64 __B) 73 1.3 mrg { 74 1.3 mrg return (unsigned char) __builtin_ia32_ktestzdi (__A, __B); 75 1.3 mrg } 76 1.3 mrg 77 1.3 mrg extern __inline unsigned char 78 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 79 1.3 mrg _ktestc_mask32_u8 (__mmask32 __A, __mmask32 __B) 80 1.3 mrg { 81 1.3 mrg return (unsigned char) __builtin_ia32_ktestcsi (__A, __B); 82 1.3 mrg } 83 1.3 mrg 84 1.3 mrg extern __inline unsigned char 85 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 86 1.3 mrg _ktestc_mask64_u8 (__mmask64 __A, __mmask64 __B) 87 1.3 mrg { 88 1.3 mrg return (unsigned char) __builtin_ia32_ktestcdi (__A, __B); 89 1.3 mrg } 90 1.3 mrg 91 1.3 mrg extern __inline unsigned char 92 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 93 1.3 mrg _kortest_mask32_u8 (__mmask32 __A, __mmask32 __B, unsigned char *__CF) 94 1.3 mrg { 95 1.3 mrg *__CF = (unsigned char) __builtin_ia32_kortestcsi (__A, __B); 96 1.3 mrg return (unsigned char) __builtin_ia32_kortestzsi (__A, __B); 97 1.3 mrg } 98 1.3 mrg 99 1.3 mrg extern __inline unsigned char 100 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 101 1.3 mrg _kortest_mask64_u8 (__mmask64 __A, __mmask64 __B, unsigned char *__CF) 102 1.3 mrg { 103 1.3 mrg *__CF = (unsigned char) __builtin_ia32_kortestcdi (__A, __B); 104 1.3 mrg return (unsigned char) __builtin_ia32_kortestzdi (__A, __B); 105 1.3 mrg } 106 1.3 mrg 107 1.3 mrg extern __inline unsigned char 108 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 109 1.3 mrg _kortestz_mask32_u8 (__mmask32 __A, __mmask32 __B) 110 1.3 mrg { 111 1.3 mrg return (unsigned char) __builtin_ia32_kortestzsi (__A, __B); 112 1.3 mrg } 113 1.3 mrg 114 1.3 mrg extern __inline unsigned char 115 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 116 1.3 mrg _kortestz_mask64_u8 (__mmask64 __A, __mmask64 __B) 117 1.3 mrg { 118 1.3 mrg return (unsigned char) __builtin_ia32_kortestzdi (__A, __B); 119 1.3 mrg } 120 1.3 mrg 121 1.3 mrg extern __inline unsigned char 122 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 123 1.3 mrg _kortestc_mask32_u8 (__mmask32 __A, __mmask32 __B) 124 1.3 mrg { 125 1.3 mrg return (unsigned char) __builtin_ia32_kortestcsi (__A, __B); 126 1.3 mrg } 127 1.3 mrg 128 1.3 mrg extern __inline unsigned char 129 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 130 1.3 mrg _kortestc_mask64_u8 (__mmask64 __A, __mmask64 __B) 131 1.3 mrg { 132 1.3 mrg return (unsigned char) __builtin_ia32_kortestcdi (__A, __B); 133 1.3 mrg } 134 1.3 mrg 135 1.3 mrg extern __inline __mmask32 136 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 137 1.3 mrg _kadd_mask32 (__mmask32 __A, __mmask32 __B) 138 1.3 mrg { 139 1.3 mrg return (__mmask32) __builtin_ia32_kaddsi ((__mmask32) __A, (__mmask32) __B); 140 1.3 mrg } 141 1.3 mrg 142 1.3 mrg extern __inline __mmask64 143 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 144 1.3 mrg _kadd_mask64 (__mmask64 __A, __mmask64 __B) 145 1.3 mrg { 146 1.3 mrg return (__mmask64) __builtin_ia32_kadddi ((__mmask64) __A, (__mmask64) __B); 147 1.3 mrg } 148 1.3 mrg 149 1.3 mrg extern __inline unsigned int 150 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 151 1.3 mrg _cvtmask32_u32 (__mmask32 __A) 152 1.3 mrg { 153 1.3 mrg return (unsigned int) __builtin_ia32_kmovd ((__mmask32) __A); 154 1.3 mrg } 155 1.3 mrg 156 1.3 mrg extern __inline unsigned long long 157 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 158 1.3 mrg _cvtmask64_u64 (__mmask64 __A) 159 1.3 mrg { 160 1.3 mrg return (unsigned long long) __builtin_ia32_kmovq ((__mmask64) __A); 161 1.3 mrg } 162 1.3 mrg 163 1.3 mrg extern __inline __mmask32 164 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 165 1.3 mrg _cvtu32_mask32 (unsigned int __A) 166 1.3 mrg { 167 1.3 mrg return (__mmask32) __builtin_ia32_kmovd ((__mmask32) __A); 168 1.3 mrg } 169 1.3 mrg 170 1.3 mrg extern __inline __mmask64 171 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 172 1.3 mrg _cvtu64_mask64 (unsigned long long __A) 173 1.3 mrg { 174 1.3 mrg return (__mmask64) __builtin_ia32_kmovq ((__mmask64) __A); 175 1.3 mrg } 176 1.3 mrg 177 1.3 mrg extern __inline __mmask32 178 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 179 1.3 mrg _load_mask32 (__mmask32 *__A) 180 1.3 mrg { 181 1.3 mrg return (__mmask32) __builtin_ia32_kmovd (*__A); 182 1.3 mrg } 183 1.3 mrg 184 1.3 mrg extern __inline __mmask64 185 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 186 1.3 mrg _load_mask64 (__mmask64 *__A) 187 1.3 mrg { 188 1.3 mrg return (__mmask64) __builtin_ia32_kmovq (*(__mmask64 *) __A); 189 1.3 mrg } 190 1.3 mrg 191 1.3 mrg extern __inline void 192 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 193 1.3 mrg _store_mask32 (__mmask32 *__A, __mmask32 __B) 194 1.3 mrg { 195 1.3 mrg *(__mmask32 *) __A = __builtin_ia32_kmovd (__B); 196 1.3 mrg } 197 1.3 mrg 198 1.3 mrg extern __inline void 199 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 200 1.3 mrg _store_mask64 (__mmask64 *__A, __mmask64 __B) 201 1.3 mrg { 202 1.3 mrg *(__mmask64 *) __A = __builtin_ia32_kmovq (__B); 203 1.3 mrg } 204 1.3 mrg 205 1.3 mrg extern __inline __mmask32 206 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 207 1.3 mrg _knot_mask32 (__mmask32 __A) 208 1.3 mrg { 209 1.3 mrg return (__mmask32) __builtin_ia32_knotsi ((__mmask32) __A); 210 1.3 mrg } 211 1.3 mrg 212 1.3 mrg extern __inline __mmask64 213 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 214 1.3 mrg _knot_mask64 (__mmask64 __A) 215 1.3 mrg { 216 1.3 mrg return (__mmask64) __builtin_ia32_knotdi ((__mmask64) __A); 217 1.3 mrg } 218 1.3 mrg 219 1.3 mrg extern __inline __mmask32 220 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 221 1.3 mrg _kor_mask32 (__mmask32 __A, __mmask32 __B) 222 1.3 mrg { 223 1.3 mrg return (__mmask32) __builtin_ia32_korsi ((__mmask32) __A, (__mmask32) __B); 224 1.3 mrg } 225 1.3 mrg 226 1.3 mrg extern __inline __mmask64 227 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 228 1.3 mrg _kor_mask64 (__mmask64 __A, __mmask64 __B) 229 1.3 mrg { 230 1.3 mrg return (__mmask64) __builtin_ia32_kordi ((__mmask64) __A, (__mmask64) __B); 231 1.3 mrg } 232 1.3 mrg 233 1.3 mrg extern __inline __mmask32 234 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 235 1.3 mrg _kxnor_mask32 (__mmask32 __A, __mmask32 __B) 236 1.3 mrg { 237 1.3 mrg return (__mmask32) __builtin_ia32_kxnorsi ((__mmask32) __A, (__mmask32) __B); 238 1.3 mrg } 239 1.3 mrg 240 1.3 mrg extern __inline __mmask64 241 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 242 1.3 mrg _kxnor_mask64 (__mmask64 __A, __mmask64 __B) 243 1.3 mrg { 244 1.3 mrg return (__mmask64) __builtin_ia32_kxnordi ((__mmask64) __A, (__mmask64) __B); 245 1.3 mrg } 246 1.3 mrg 247 1.3 mrg extern __inline __mmask32 248 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 249 1.3 mrg _kxor_mask32 (__mmask32 __A, __mmask32 __B) 250 1.3 mrg { 251 1.3 mrg return (__mmask32) __builtin_ia32_kxorsi ((__mmask32) __A, (__mmask32) __B); 252 1.3 mrg } 253 1.3 mrg 254 1.3 mrg extern __inline __mmask64 255 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 256 1.3 mrg _kxor_mask64 (__mmask64 __A, __mmask64 __B) 257 1.3 mrg { 258 1.3 mrg return (__mmask64) __builtin_ia32_kxordi ((__mmask64) __A, (__mmask64) __B); 259 1.3 mrg } 260 1.3 mrg 261 1.3 mrg extern __inline __mmask32 262 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 263 1.3 mrg _kand_mask32 (__mmask32 __A, __mmask32 __B) 264 1.3 mrg { 265 1.3 mrg return (__mmask32) __builtin_ia32_kandsi ((__mmask32) __A, (__mmask32) __B); 266 1.3 mrg } 267 1.3 mrg 268 1.3 mrg extern __inline __mmask64 269 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 270 1.3 mrg _kand_mask64 (__mmask64 __A, __mmask64 __B) 271 1.3 mrg { 272 1.3 mrg return (__mmask64) __builtin_ia32_kanddi ((__mmask64) __A, (__mmask64) __B); 273 1.3 mrg } 274 1.3 mrg 275 1.3 mrg extern __inline __mmask32 276 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 277 1.3 mrg _kandn_mask32 (__mmask32 __A, __mmask32 __B) 278 1.1 mrg { 279 1.3 mrg return (__mmask32) __builtin_ia32_kandnsi ((__mmask32) __A, (__mmask32) __B); 280 1.1 mrg } 281 1.1 mrg 282 1.3 mrg extern __inline __mmask64 283 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 284 1.3 mrg _kandn_mask64 (__mmask64 __A, __mmask64 __B) 285 1.1 mrg { 286 1.3 mrg return (__mmask64) __builtin_ia32_kandndi ((__mmask64) __A, (__mmask64) __B); 287 1.1 mrg } 288 1.1 mrg 289 1.1 mrg extern __inline __m512i 290 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 291 1.1 mrg _mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A) 292 1.1 mrg { 293 1.1 mrg return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A, 294 1.1 mrg (__v32hi) __W, 295 1.1 mrg (__mmask32) __U); 296 1.1 mrg } 297 1.1 mrg 298 1.1 mrg extern __inline __m512i 299 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 300 1.1 mrg _mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A) 301 1.1 mrg { 302 1.1 mrg return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A, 303 1.1 mrg (__v32hi) 304 1.3 mrg _mm512_setzero_si512 (), 305 1.1 mrg (__mmask32) __U); 306 1.1 mrg } 307 1.1 mrg 308 1.1 mrg extern __inline __m512i 309 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 310 1.7 mrg _mm512_loadu_epi16 (void const *__P) 311 1.7 mrg { 312 1.7 mrg return (__m512i) (*(const __v32hi_u *) __P); 313 1.7 mrg } 314 1.7 mrg 315 1.7 mrg extern __inline __m512i 316 1.7 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 317 1.1 mrg _mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P) 318 1.1 mrg { 319 1.3 mrg return (__m512i) __builtin_ia32_loaddquhi512_mask ((const short *) __P, 320 1.1 mrg (__v32hi) __W, 321 1.1 mrg (__mmask32) __U); 322 1.1 mrg } 323 1.1 mrg 324 1.1 mrg extern __inline __m512i 325 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 326 1.1 mrg _mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P) 327 1.1 mrg { 328 1.3 mrg return (__m512i) __builtin_ia32_loaddquhi512_mask ((const short *) __P, 329 1.1 mrg (__v32hi) 330 1.3 mrg _mm512_setzero_si512 (), 331 1.1 mrg (__mmask32) __U); 332 1.1 mrg } 333 1.1 mrg 334 1.1 mrg extern __inline void 335 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 336 1.7 mrg _mm512_storeu_epi16 (void *__P, __m512i __A) 337 1.7 mrg { 338 1.7 mrg *(__v32hi_u *) __P = (__v32hi_u) __A; 339 1.7 mrg } 340 1.7 mrg 341 1.7 mrg extern __inline void 342 1.7 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 343 1.1 mrg _mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A) 344 1.1 mrg { 345 1.3 mrg __builtin_ia32_storedquhi512_mask ((short *) __P, 346 1.1 mrg (__v32hi) __A, 347 1.1 mrg (__mmask32) __U); 348 1.1 mrg } 349 1.1 mrg 350 1.1 mrg extern __inline __m512i 351 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 352 1.1 mrg _mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A) 353 1.1 mrg { 354 1.1 mrg return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A, 355 1.1 mrg (__v64qi) __W, 356 1.1 mrg (__mmask64) __U); 357 1.1 mrg } 358 1.1 mrg 359 1.1 mrg extern __inline __m512i 360 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 361 1.1 mrg _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A) 362 1.1 mrg { 363 1.1 mrg return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A, 364 1.1 mrg (__v64qi) 365 1.3 mrg _mm512_setzero_si512 (), 366 1.1 mrg (__mmask64) __U); 367 1.1 mrg } 368 1.1 mrg 369 1.1 mrg extern __inline __mmask32 370 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 371 1.1 mrg _mm512_kunpackw (__mmask32 __A, __mmask32 __B) 372 1.1 mrg { 373 1.1 mrg return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A, 374 1.1 mrg (__mmask32) __B); 375 1.1 mrg } 376 1.1 mrg 377 1.3 mrg extern __inline __mmask32 378 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 379 1.3 mrg _kunpackw_mask32 (__mmask16 __A, __mmask16 __B) 380 1.3 mrg { 381 1.3 mrg return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A, 382 1.3 mrg (__mmask32) __B); 383 1.3 mrg } 384 1.3 mrg 385 1.1 mrg extern __inline __mmask64 386 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 387 1.1 mrg _mm512_kunpackd (__mmask64 __A, __mmask64 __B) 388 1.1 mrg { 389 1.1 mrg return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A, 390 1.1 mrg (__mmask64) __B); 391 1.1 mrg } 392 1.1 mrg 393 1.3 mrg extern __inline __mmask64 394 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 395 1.3 mrg _kunpackd_mask64 (__mmask32 __A, __mmask32 __B) 396 1.3 mrg { 397 1.3 mrg return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A, 398 1.3 mrg (__mmask64) __B); 399 1.3 mrg } 400 1.3 mrg 401 1.1 mrg extern __inline __m512i 402 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 403 1.7 mrg _mm512_loadu_epi8 (void const *__P) 404 1.7 mrg { 405 1.7 mrg return (__m512i) (*(const __v64qi_u *) __P); 406 1.7 mrg } 407 1.7 mrg 408 1.7 mrg extern __inline __m512i 409 1.7 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 410 1.1 mrg _mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P) 411 1.1 mrg { 412 1.3 mrg return (__m512i) __builtin_ia32_loaddquqi512_mask ((const char *) __P, 413 1.1 mrg (__v64qi) __W, 414 1.1 mrg (__mmask64) __U); 415 1.1 mrg } 416 1.1 mrg 417 1.1 mrg extern __inline __m512i 418 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 419 1.1 mrg _mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P) 420 1.1 mrg { 421 1.3 mrg return (__m512i) __builtin_ia32_loaddquqi512_mask ((const char *) __P, 422 1.1 mrg (__v64qi) 423 1.3 mrg _mm512_setzero_si512 (), 424 1.1 mrg (__mmask64) __U); 425 1.1 mrg } 426 1.1 mrg 427 1.1 mrg extern __inline void 428 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 429 1.7 mrg _mm512_storeu_epi8 (void *__P, __m512i __A) 430 1.7 mrg { 431 1.7 mrg *(__v64qi_u *) __P = (__v64qi_u) __A; 432 1.7 mrg } 433 1.7 mrg 434 1.7 mrg extern __inline void 435 1.7 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 436 1.1 mrg _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A) 437 1.1 mrg { 438 1.3 mrg __builtin_ia32_storedquqi512_mask ((char *) __P, 439 1.1 mrg (__v64qi) __A, 440 1.1 mrg (__mmask64) __U); 441 1.1 mrg } 442 1.1 mrg 443 1.1 mrg extern __inline __m512i 444 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 445 1.1 mrg _mm512_sad_epu8 (__m512i __A, __m512i __B) 446 1.1 mrg { 447 1.1 mrg return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A, 448 1.1 mrg (__v64qi) __B); 449 1.1 mrg } 450 1.1 mrg 451 1.1 mrg extern __inline __m256i 452 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 453 1.1 mrg _mm512_cvtepi16_epi8 (__m512i __A) 454 1.1 mrg { 455 1.1 mrg return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A, 456 1.1 mrg (__v32qi) _mm256_undefined_si256(), 457 1.1 mrg (__mmask32) -1); 458 1.1 mrg } 459 1.1 mrg 460 1.4 mrg extern __inline void 461 1.4 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 462 1.4 mrg _mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A) 463 1.4 mrg { 464 1.4 mrg __builtin_ia32_pmovwb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M); 465 1.4 mrg } 466 1.4 mrg 467 1.1 mrg extern __inline __m256i 468 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 469 1.1 mrg _mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) 470 1.1 mrg { 471 1.1 mrg return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A, 472 1.1 mrg (__v32qi) __O, __M); 473 1.1 mrg } 474 1.1 mrg 475 1.1 mrg extern __inline __m256i 476 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 477 1.1 mrg _mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A) 478 1.1 mrg { 479 1.1 mrg return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A, 480 1.1 mrg (__v32qi) 481 1.1 mrg _mm256_setzero_si256 (), 482 1.1 mrg __M); 483 1.1 mrg } 484 1.1 mrg 485 1.1 mrg extern __inline __m256i 486 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 487 1.1 mrg _mm512_cvtsepi16_epi8 (__m512i __A) 488 1.1 mrg { 489 1.1 mrg return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A, 490 1.1 mrg (__v32qi)_mm256_undefined_si256(), 491 1.1 mrg (__mmask32) -1); 492 1.1 mrg } 493 1.1 mrg 494 1.4 mrg extern __inline void 495 1.4 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 496 1.4 mrg _mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A) 497 1.4 mrg { 498 1.4 mrg __builtin_ia32_pmovswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M); 499 1.4 mrg } 500 1.4 mrg 501 1.1 mrg extern __inline __m256i 502 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 503 1.1 mrg _mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) 504 1.1 mrg { 505 1.1 mrg return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A, 506 1.1 mrg (__v32qi)__O, 507 1.1 mrg __M); 508 1.1 mrg } 509 1.1 mrg 510 1.1 mrg extern __inline __m256i 511 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 512 1.1 mrg _mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A) 513 1.1 mrg { 514 1.1 mrg return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A, 515 1.1 mrg (__v32qi) 516 1.1 mrg _mm256_setzero_si256 (), 517 1.1 mrg __M); 518 1.1 mrg } 519 1.1 mrg 520 1.1 mrg extern __inline __m256i 521 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 522 1.1 mrg _mm512_cvtusepi16_epi8 (__m512i __A) 523 1.1 mrg { 524 1.1 mrg return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A, 525 1.1 mrg (__v32qi)_mm256_undefined_si256(), 526 1.1 mrg (__mmask32) -1); 527 1.1 mrg } 528 1.1 mrg 529 1.1 mrg extern __inline __m256i 530 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 531 1.1 mrg _mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) 532 1.1 mrg { 533 1.1 mrg return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A, 534 1.1 mrg (__v32qi) __O, 535 1.1 mrg __M); 536 1.1 mrg } 537 1.1 mrg 538 1.4 mrg extern __inline void 539 1.4 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 540 1.4 mrg _mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A) 541 1.4 mrg { 542 1.4 mrg __builtin_ia32_pmovuswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M); 543 1.4 mrg } 544 1.4 mrg 545 1.1 mrg extern __inline __m256i 546 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 547 1.1 mrg _mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A) 548 1.1 mrg { 549 1.1 mrg return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A, 550 1.1 mrg (__v32qi) 551 1.1 mrg _mm256_setzero_si256 (), 552 1.1 mrg __M); 553 1.1 mrg } 554 1.1 mrg 555 1.1 mrg extern __inline __m512i 556 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 557 1.1 mrg _mm512_broadcastb_epi8 (__m128i __A) 558 1.1 mrg { 559 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A, 560 1.3 mrg (__v64qi)_mm512_undefined_epi32(), 561 1.3 mrg (__mmask64) -1); 562 1.1 mrg } 563 1.1 mrg 564 1.1 mrg extern __inline __m512i 565 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 566 1.1 mrg _mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A) 567 1.1 mrg { 568 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A, 569 1.1 mrg (__v64qi) __O, 570 1.1 mrg __M); 571 1.1 mrg } 572 1.1 mrg 573 1.1 mrg extern __inline __m512i 574 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 575 1.1 mrg _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A) 576 1.1 mrg { 577 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A, 578 1.1 mrg (__v64qi) 579 1.3 mrg _mm512_setzero_si512 (), 580 1.1 mrg __M); 581 1.1 mrg } 582 1.1 mrg 583 1.1 mrg extern __inline __m512i 584 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 585 1.1 mrg _mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A) 586 1.1 mrg { 587 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A, 588 1.1 mrg (__v64qi) __O, 589 1.1 mrg __M); 590 1.1 mrg } 591 1.1 mrg 592 1.1 mrg extern __inline __m512i 593 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 594 1.1 mrg _mm512_maskz_set1_epi8 (__mmask64 __M, char __A) 595 1.1 mrg { 596 1.3 mrg return (__m512i) 597 1.3 mrg __builtin_ia32_pbroadcastb512_gpr_mask (__A, 598 1.3 mrg (__v64qi) 599 1.3 mrg _mm512_setzero_si512 (), 600 1.3 mrg __M); 601 1.1 mrg } 602 1.1 mrg 603 1.1 mrg extern __inline __m512i 604 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 605 1.1 mrg _mm512_broadcastw_epi16 (__m128i __A) 606 1.1 mrg { 607 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A, 608 1.3 mrg (__v32hi)_mm512_undefined_epi32(), 609 1.3 mrg (__mmask32) -1); 610 1.1 mrg } 611 1.1 mrg 612 1.1 mrg extern __inline __m512i 613 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 614 1.1 mrg _mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A) 615 1.1 mrg { 616 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A, 617 1.1 mrg (__v32hi) __O, 618 1.1 mrg __M); 619 1.1 mrg } 620 1.1 mrg 621 1.1 mrg extern __inline __m512i 622 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 623 1.1 mrg _mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A) 624 1.1 mrg { 625 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A, 626 1.1 mrg (__v32hi) 627 1.3 mrg _mm512_setzero_si512 (), 628 1.1 mrg __M); 629 1.1 mrg } 630 1.1 mrg 631 1.1 mrg extern __inline __m512i 632 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 633 1.1 mrg _mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A) 634 1.1 mrg { 635 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A, 636 1.1 mrg (__v32hi) __O, 637 1.1 mrg __M); 638 1.1 mrg } 639 1.1 mrg 640 1.1 mrg extern __inline __m512i 641 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 642 1.1 mrg _mm512_maskz_set1_epi16 (__mmask32 __M, short __A) 643 1.1 mrg { 644 1.3 mrg return (__m512i) 645 1.3 mrg __builtin_ia32_pbroadcastw512_gpr_mask (__A, 646 1.3 mrg (__v32hi) 647 1.3 mrg _mm512_setzero_si512 (), 648 1.3 mrg __M); 649 1.1 mrg } 650 1.1 mrg 651 1.1 mrg extern __inline __m512i 652 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 653 1.1 mrg _mm512_mulhrs_epi16 (__m512i __A, __m512i __B) 654 1.1 mrg { 655 1.1 mrg return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A, 656 1.1 mrg (__v32hi) __B, 657 1.1 mrg (__v32hi) 658 1.3 mrg _mm512_setzero_si512 (), 659 1.1 mrg (__mmask32) -1); 660 1.1 mrg } 661 1.1 mrg 662 1.1 mrg extern __inline __m512i 663 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 664 1.1 mrg _mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 665 1.1 mrg __m512i __B) 666 1.1 mrg { 667 1.1 mrg return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A, 668 1.1 mrg (__v32hi) __B, 669 1.1 mrg (__v32hi) __W, 670 1.1 mrg (__mmask32) __U); 671 1.1 mrg } 672 1.1 mrg 673 1.1 mrg extern __inline __m512i 674 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 675 1.1 mrg _mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 676 1.1 mrg { 677 1.1 mrg return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A, 678 1.1 mrg (__v32hi) __B, 679 1.1 mrg (__v32hi) 680 1.3 mrg _mm512_setzero_si512 (), 681 1.1 mrg (__mmask32) __U); 682 1.1 mrg } 683 1.1 mrg 684 1.1 mrg extern __inline __m512i 685 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 686 1.1 mrg _mm512_mulhi_epi16 (__m512i __A, __m512i __B) 687 1.1 mrg { 688 1.1 mrg return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A, 689 1.1 mrg (__v32hi) __B, 690 1.1 mrg (__v32hi) 691 1.3 mrg _mm512_setzero_si512 (), 692 1.1 mrg (__mmask32) -1); 693 1.1 mrg } 694 1.1 mrg 695 1.1 mrg extern __inline __m512i 696 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 697 1.1 mrg _mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 698 1.1 mrg __m512i __B) 699 1.1 mrg { 700 1.1 mrg return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A, 701 1.1 mrg (__v32hi) __B, 702 1.1 mrg (__v32hi) __W, 703 1.1 mrg (__mmask32) __U); 704 1.1 mrg } 705 1.1 mrg 706 1.1 mrg extern __inline __m512i 707 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 708 1.1 mrg _mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 709 1.1 mrg { 710 1.1 mrg return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A, 711 1.1 mrg (__v32hi) __B, 712 1.1 mrg (__v32hi) 713 1.3 mrg _mm512_setzero_si512 (), 714 1.1 mrg (__mmask32) __U); 715 1.1 mrg } 716 1.1 mrg 717 1.1 mrg extern __inline __m512i 718 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 719 1.1 mrg _mm512_mulhi_epu16 (__m512i __A, __m512i __B) 720 1.1 mrg { 721 1.1 mrg return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A, 722 1.1 mrg (__v32hi) __B, 723 1.1 mrg (__v32hi) 724 1.3 mrg _mm512_setzero_si512 (), 725 1.1 mrg (__mmask32) -1); 726 1.1 mrg } 727 1.1 mrg 728 1.1 mrg extern __inline __m512i 729 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 730 1.1 mrg _mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 731 1.1 mrg __m512i __B) 732 1.1 mrg { 733 1.1 mrg return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A, 734 1.1 mrg (__v32hi) __B, 735 1.1 mrg (__v32hi) __W, 736 1.1 mrg (__mmask32) __U); 737 1.1 mrg } 738 1.1 mrg 739 1.1 mrg extern __inline __m512i 740 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 741 1.1 mrg _mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 742 1.1 mrg { 743 1.1 mrg return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A, 744 1.1 mrg (__v32hi) __B, 745 1.1 mrg (__v32hi) 746 1.3 mrg _mm512_setzero_si512 (), 747 1.1 mrg (__mmask32) __U); 748 1.1 mrg } 749 1.1 mrg 750 1.1 mrg extern __inline __m512i 751 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 752 1.1 mrg _mm512_mullo_epi16 (__m512i __A, __m512i __B) 753 1.1 mrg { 754 1.1 mrg return (__m512i) ((__v32hu) __A * (__v32hu) __B); 755 1.1 mrg } 756 1.1 mrg 757 1.1 mrg extern __inline __m512i 758 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 759 1.1 mrg _mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 760 1.1 mrg __m512i __B) 761 1.1 mrg { 762 1.1 mrg return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A, 763 1.1 mrg (__v32hi) __B, 764 1.1 mrg (__v32hi) __W, 765 1.1 mrg (__mmask32) __U); 766 1.1 mrg } 767 1.1 mrg 768 1.1 mrg extern __inline __m512i 769 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 770 1.1 mrg _mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 771 1.1 mrg { 772 1.1 mrg return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A, 773 1.1 mrg (__v32hi) __B, 774 1.1 mrg (__v32hi) 775 1.3 mrg _mm512_setzero_si512 (), 776 1.1 mrg (__mmask32) __U); 777 1.1 mrg } 778 1.1 mrg 779 1.1 mrg extern __inline __m512i 780 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 781 1.1 mrg _mm512_cvtepi8_epi16 (__m256i __A) 782 1.1 mrg { 783 1.1 mrg return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A, 784 1.1 mrg (__v32hi) 785 1.3 mrg _mm512_setzero_si512 (), 786 1.1 mrg (__mmask32) -1); 787 1.1 mrg } 788 1.1 mrg 789 1.1 mrg extern __inline __m512i 790 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 791 1.1 mrg _mm512_mask_cvtepi8_epi16 (__m512i __W, __mmask32 __U, __m256i __A) 792 1.1 mrg { 793 1.1 mrg return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A, 794 1.1 mrg (__v32hi) __W, 795 1.1 mrg (__mmask32) __U); 796 1.1 mrg } 797 1.1 mrg 798 1.1 mrg extern __inline __m512i 799 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 800 1.1 mrg _mm512_maskz_cvtepi8_epi16 (__mmask32 __U, __m256i __A) 801 1.1 mrg { 802 1.1 mrg return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A, 803 1.1 mrg (__v32hi) 804 1.3 mrg _mm512_setzero_si512 (), 805 1.1 mrg (__mmask32) __U); 806 1.1 mrg } 807 1.1 mrg 808 1.1 mrg extern __inline __m512i 809 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 810 1.1 mrg _mm512_cvtepu8_epi16 (__m256i __A) 811 1.1 mrg { 812 1.1 mrg return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A, 813 1.1 mrg (__v32hi) 814 1.3 mrg _mm512_setzero_si512 (), 815 1.1 mrg (__mmask32) -1); 816 1.1 mrg } 817 1.1 mrg 818 1.1 mrg extern __inline __m512i 819 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 820 1.1 mrg _mm512_mask_cvtepu8_epi16 (__m512i __W, __mmask32 __U, __m256i __A) 821 1.1 mrg { 822 1.1 mrg return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A, 823 1.1 mrg (__v32hi) __W, 824 1.1 mrg (__mmask32) __U); 825 1.1 mrg } 826 1.1 mrg 827 1.1 mrg extern __inline __m512i 828 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 829 1.1 mrg _mm512_maskz_cvtepu8_epi16 (__mmask32 __U, __m256i __A) 830 1.1 mrg { 831 1.1 mrg return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A, 832 1.1 mrg (__v32hi) 833 1.3 mrg _mm512_setzero_si512 (), 834 1.1 mrg (__mmask32) __U); 835 1.1 mrg } 836 1.1 mrg 837 1.1 mrg extern __inline __m512i 838 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 839 1.1 mrg _mm512_permutexvar_epi16 (__m512i __A, __m512i __B) 840 1.1 mrg { 841 1.1 mrg return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B, 842 1.1 mrg (__v32hi) __A, 843 1.1 mrg (__v32hi) 844 1.3 mrg _mm512_setzero_si512 (), 845 1.1 mrg (__mmask32) -1); 846 1.1 mrg } 847 1.1 mrg 848 1.1 mrg extern __inline __m512i 849 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 850 1.1 mrg _mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A, 851 1.1 mrg __m512i __B) 852 1.1 mrg { 853 1.1 mrg return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B, 854 1.1 mrg (__v32hi) __A, 855 1.1 mrg (__v32hi) 856 1.3 mrg _mm512_setzero_si512 (), 857 1.1 mrg (__mmask32) __M); 858 1.1 mrg } 859 1.1 mrg 860 1.1 mrg extern __inline __m512i 861 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 862 1.1 mrg _mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A, 863 1.1 mrg __m512i __B) 864 1.1 mrg { 865 1.1 mrg return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B, 866 1.1 mrg (__v32hi) __A, 867 1.1 mrg (__v32hi) __W, 868 1.1 mrg (__mmask32) __M); 869 1.1 mrg } 870 1.1 mrg 871 1.1 mrg extern __inline __m512i 872 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 873 1.1 mrg _mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B) 874 1.1 mrg { 875 1.1 mrg return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I 876 1.1 mrg /* idx */ , 877 1.1 mrg (__v32hi) __A, 878 1.1 mrg (__v32hi) __B, 879 1.3 mrg (__mmask32) -1); 880 1.1 mrg } 881 1.1 mrg 882 1.1 mrg extern __inline __m512i 883 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 884 1.1 mrg _mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U, 885 1.1 mrg __m512i __I, __m512i __B) 886 1.1 mrg { 887 1.1 mrg return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I 888 1.1 mrg /* idx */ , 889 1.1 mrg (__v32hi) __A, 890 1.1 mrg (__v32hi) __B, 891 1.1 mrg (__mmask32) 892 1.1 mrg __U); 893 1.1 mrg } 894 1.1 mrg 895 1.1 mrg extern __inline __m512i 896 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 897 1.1 mrg _mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I, 898 1.1 mrg __mmask32 __U, __m512i __B) 899 1.1 mrg { 900 1.1 mrg return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A, 901 1.1 mrg (__v32hi) __I 902 1.1 mrg /* idx */ , 903 1.1 mrg (__v32hi) __B, 904 1.1 mrg (__mmask32) 905 1.1 mrg __U); 906 1.1 mrg } 907 1.1 mrg 908 1.1 mrg extern __inline __m512i 909 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 910 1.1 mrg _mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A, 911 1.1 mrg __m512i __I, __m512i __B) 912 1.1 mrg { 913 1.1 mrg return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I 914 1.1 mrg /* idx */ , 915 1.1 mrg (__v32hi) __A, 916 1.1 mrg (__v32hi) __B, 917 1.1 mrg (__mmask32) 918 1.1 mrg __U); 919 1.1 mrg } 920 1.1 mrg 921 1.1 mrg extern __inline __m512i 922 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 923 1.1 mrg _mm512_avg_epu8 (__m512i __A, __m512i __B) 924 1.1 mrg { 925 1.1 mrg return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A, 926 1.1 mrg (__v64qi) __B, 927 1.1 mrg (__v64qi) 928 1.3 mrg _mm512_setzero_si512 (), 929 1.1 mrg (__mmask64) -1); 930 1.1 mrg } 931 1.1 mrg 932 1.1 mrg extern __inline __m512i 933 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 934 1.1 mrg _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A, 935 1.1 mrg __m512i __B) 936 1.1 mrg { 937 1.1 mrg return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A, 938 1.1 mrg (__v64qi) __B, 939 1.1 mrg (__v64qi) __W, 940 1.1 mrg (__mmask64) __U); 941 1.1 mrg } 942 1.1 mrg 943 1.1 mrg extern __inline __m512i 944 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 945 1.1 mrg _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B) 946 1.1 mrg { 947 1.1 mrg return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A, 948 1.1 mrg (__v64qi) __B, 949 1.1 mrg (__v64qi) 950 1.3 mrg _mm512_setzero_si512 (), 951 1.1 mrg (__mmask64) __U); 952 1.1 mrg } 953 1.1 mrg 954 1.1 mrg extern __inline __m512i 955 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 956 1.1 mrg _mm512_add_epi8 (__m512i __A, __m512i __B) 957 1.1 mrg { 958 1.1 mrg return (__m512i) ((__v64qu) __A + (__v64qu) __B); 959 1.1 mrg } 960 1.1 mrg 961 1.1 mrg extern __inline __m512i 962 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 963 1.1 mrg _mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 964 1.1 mrg __m512i __B) 965 1.1 mrg { 966 1.1 mrg return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A, 967 1.1 mrg (__v64qi) __B, 968 1.1 mrg (__v64qi) __W, 969 1.1 mrg (__mmask64) __U); 970 1.1 mrg } 971 1.1 mrg 972 1.1 mrg extern __inline __m512i 973 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 974 1.1 mrg _mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 975 1.1 mrg { 976 1.1 mrg return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A, 977 1.1 mrg (__v64qi) __B, 978 1.1 mrg (__v64qi) 979 1.3 mrg _mm512_setzero_si512 (), 980 1.1 mrg (__mmask64) __U); 981 1.1 mrg } 982 1.1 mrg 983 1.1 mrg extern __inline __m512i 984 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 985 1.1 mrg _mm512_sub_epi8 (__m512i __A, __m512i __B) 986 1.1 mrg { 987 1.1 mrg return (__m512i) ((__v64qu) __A - (__v64qu) __B); 988 1.1 mrg } 989 1.1 mrg 990 1.1 mrg extern __inline __m512i 991 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 992 1.1 mrg _mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 993 1.1 mrg __m512i __B) 994 1.1 mrg { 995 1.1 mrg return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A, 996 1.1 mrg (__v64qi) __B, 997 1.1 mrg (__v64qi) __W, 998 1.1 mrg (__mmask64) __U); 999 1.1 mrg } 1000 1.1 mrg 1001 1.1 mrg extern __inline __m512i 1002 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1003 1.1 mrg _mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 1004 1.1 mrg { 1005 1.1 mrg return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A, 1006 1.1 mrg (__v64qi) __B, 1007 1.1 mrg (__v64qi) 1008 1.3 mrg _mm512_setzero_si512 (), 1009 1.1 mrg (__mmask64) __U); 1010 1.1 mrg } 1011 1.1 mrg 1012 1.1 mrg extern __inline __m512i 1013 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1014 1.1 mrg _mm512_avg_epu16 (__m512i __A, __m512i __B) 1015 1.1 mrg { 1016 1.1 mrg return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A, 1017 1.1 mrg (__v32hi) __B, 1018 1.1 mrg (__v32hi) 1019 1.3 mrg _mm512_setzero_si512 (), 1020 1.1 mrg (__mmask32) -1); 1021 1.1 mrg } 1022 1.1 mrg 1023 1.1 mrg extern __inline __m512i 1024 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1025 1.1 mrg _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 1026 1.1 mrg __m512i __B) 1027 1.1 mrg { 1028 1.1 mrg return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A, 1029 1.1 mrg (__v32hi) __B, 1030 1.1 mrg (__v32hi) __W, 1031 1.1 mrg (__mmask32) __U); 1032 1.1 mrg } 1033 1.1 mrg 1034 1.1 mrg extern __inline __m512i 1035 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1036 1.1 mrg _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 1037 1.1 mrg { 1038 1.1 mrg return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A, 1039 1.1 mrg (__v32hi) __B, 1040 1.1 mrg (__v32hi) 1041 1.3 mrg _mm512_setzero_si512 (), 1042 1.1 mrg (__mmask32) __U); 1043 1.1 mrg } 1044 1.1 mrg 1045 1.1 mrg extern __inline __m512i 1046 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1047 1.1 mrg _mm512_subs_epi8 (__m512i __A, __m512i __B) 1048 1.1 mrg { 1049 1.1 mrg return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, 1050 1.1 mrg (__v64qi) __B, 1051 1.1 mrg (__v64qi) 1052 1.3 mrg _mm512_setzero_si512 (), 1053 1.1 mrg (__mmask64) -1); 1054 1.1 mrg } 1055 1.1 mrg 1056 1.1 mrg extern __inline __m512i 1057 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1058 1.1 mrg _mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 1059 1.1 mrg __m512i __B) 1060 1.1 mrg { 1061 1.1 mrg return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, 1062 1.1 mrg (__v64qi) __B, 1063 1.1 mrg (__v64qi) __W, 1064 1.1 mrg (__mmask64) __U); 1065 1.1 mrg } 1066 1.1 mrg 1067 1.1 mrg extern __inline __m512i 1068 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1069 1.1 mrg _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 1070 1.1 mrg { 1071 1.1 mrg return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A, 1072 1.1 mrg (__v64qi) __B, 1073 1.1 mrg (__v64qi) 1074 1.3 mrg _mm512_setzero_si512 (), 1075 1.1 mrg (__mmask64) __U); 1076 1.1 mrg } 1077 1.1 mrg 1078 1.1 mrg extern __inline __m512i 1079 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1080 1.1 mrg _mm512_subs_epu8 (__m512i __A, __m512i __B) 1081 1.1 mrg { 1082 1.1 mrg return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, 1083 1.1 mrg (__v64qi) __B, 1084 1.1 mrg (__v64qi) 1085 1.3 mrg _mm512_setzero_si512 (), 1086 1.1 mrg (__mmask64) -1); 1087 1.1 mrg } 1088 1.1 mrg 1089 1.1 mrg extern __inline __m512i 1090 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1091 1.1 mrg _mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A, 1092 1.1 mrg __m512i __B) 1093 1.1 mrg { 1094 1.1 mrg return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, 1095 1.1 mrg (__v64qi) __B, 1096 1.1 mrg (__v64qi) __W, 1097 1.1 mrg (__mmask64) __U); 1098 1.1 mrg } 1099 1.1 mrg 1100 1.1 mrg extern __inline __m512i 1101 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1102 1.1 mrg _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B) 1103 1.1 mrg { 1104 1.1 mrg return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A, 1105 1.1 mrg (__v64qi) __B, 1106 1.1 mrg (__v64qi) 1107 1.3 mrg _mm512_setzero_si512 (), 1108 1.1 mrg (__mmask64) __U); 1109 1.1 mrg } 1110 1.1 mrg 1111 1.1 mrg extern __inline __m512i 1112 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1113 1.1 mrg _mm512_adds_epi8 (__m512i __A, __m512i __B) 1114 1.1 mrg { 1115 1.1 mrg return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A, 1116 1.1 mrg (__v64qi) __B, 1117 1.1 mrg (__v64qi) 1118 1.3 mrg _mm512_setzero_si512 (), 1119 1.1 mrg (__mmask64) -1); 1120 1.1 mrg } 1121 1.1 mrg 1122 1.1 mrg extern __inline __m512i 1123 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1124 1.1 mrg _mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 1125 1.1 mrg __m512i __B) 1126 1.1 mrg { 1127 1.1 mrg return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A, 1128 1.1 mrg (__v64qi) __B, 1129 1.1 mrg (__v64qi) __W, 1130 1.1 mrg (__mmask64) __U); 1131 1.1 mrg } 1132 1.1 mrg 1133 1.1 mrg extern __inline __m512i 1134 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1135 1.1 mrg _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 1136 1.1 mrg { 1137 1.1 mrg return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A, 1138 1.1 mrg (__v64qi) __B, 1139 1.1 mrg (__v64qi) 1140 1.3 mrg _mm512_setzero_si512 (), 1141 1.1 mrg (__mmask64) __U); 1142 1.1 mrg } 1143 1.1 mrg 1144 1.1 mrg extern __inline __m512i 1145 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1146 1.1 mrg _mm512_adds_epu8 (__m512i __A, __m512i __B) 1147 1.1 mrg { 1148 1.1 mrg return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A, 1149 1.1 mrg (__v64qi) __B, 1150 1.1 mrg (__v64qi) 1151 1.3 mrg _mm512_setzero_si512 (), 1152 1.1 mrg (__mmask64) -1); 1153 1.1 mrg } 1154 1.1 mrg 1155 1.1 mrg extern __inline __m512i 1156 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1157 1.1 mrg _mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A, 1158 1.1 mrg __m512i __B) 1159 1.1 mrg { 1160 1.1 mrg return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A, 1161 1.1 mrg (__v64qi) __B, 1162 1.1 mrg (__v64qi) __W, 1163 1.1 mrg (__mmask64) __U); 1164 1.1 mrg } 1165 1.1 mrg 1166 1.1 mrg extern __inline __m512i 1167 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1168 1.1 mrg _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B) 1169 1.1 mrg { 1170 1.1 mrg return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A, 1171 1.1 mrg (__v64qi) __B, 1172 1.1 mrg (__v64qi) 1173 1.3 mrg _mm512_setzero_si512 (), 1174 1.1 mrg (__mmask64) __U); 1175 1.1 mrg } 1176 1.1 mrg 1177 1.1 mrg extern __inline __m512i 1178 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1179 1.1 mrg _mm512_sub_epi16 (__m512i __A, __m512i __B) 1180 1.1 mrg { 1181 1.1 mrg return (__m512i) ((__v32hu) __A - (__v32hu) __B); 1182 1.1 mrg } 1183 1.1 mrg 1184 1.1 mrg extern __inline __m512i 1185 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1186 1.1 mrg _mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1187 1.1 mrg __m512i __B) 1188 1.1 mrg { 1189 1.1 mrg return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A, 1190 1.1 mrg (__v32hi) __B, 1191 1.1 mrg (__v32hi) __W, 1192 1.1 mrg (__mmask32) __U); 1193 1.1 mrg } 1194 1.1 mrg 1195 1.1 mrg extern __inline __m512i 1196 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1197 1.1 mrg _mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1198 1.1 mrg { 1199 1.1 mrg return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A, 1200 1.1 mrg (__v32hi) __B, 1201 1.1 mrg (__v32hi) 1202 1.3 mrg _mm512_setzero_si512 (), 1203 1.1 mrg (__mmask32) __U); 1204 1.1 mrg } 1205 1.1 mrg 1206 1.1 mrg extern __inline __m512i 1207 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1208 1.1 mrg _mm512_subs_epi16 (__m512i __A, __m512i __B) 1209 1.1 mrg { 1210 1.1 mrg return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, 1211 1.1 mrg (__v32hi) __B, 1212 1.1 mrg (__v32hi) 1213 1.3 mrg _mm512_setzero_si512 (), 1214 1.1 mrg (__mmask32) -1); 1215 1.1 mrg } 1216 1.1 mrg 1217 1.1 mrg extern __inline __m512i 1218 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1219 1.1 mrg _mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1220 1.1 mrg __m512i __B) 1221 1.1 mrg { 1222 1.1 mrg return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, 1223 1.1 mrg (__v32hi) __B, 1224 1.1 mrg (__v32hi) __W, 1225 1.1 mrg (__mmask32) __U); 1226 1.1 mrg } 1227 1.1 mrg 1228 1.1 mrg extern __inline __m512i 1229 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1230 1.1 mrg _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1231 1.1 mrg { 1232 1.1 mrg return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A, 1233 1.1 mrg (__v32hi) __B, 1234 1.1 mrg (__v32hi) 1235 1.3 mrg _mm512_setzero_si512 (), 1236 1.1 mrg (__mmask32) __U); 1237 1.1 mrg } 1238 1.1 mrg 1239 1.1 mrg extern __inline __m512i 1240 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1241 1.1 mrg _mm512_subs_epu16 (__m512i __A, __m512i __B) 1242 1.1 mrg { 1243 1.1 mrg return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, 1244 1.1 mrg (__v32hi) __B, 1245 1.1 mrg (__v32hi) 1246 1.3 mrg _mm512_setzero_si512 (), 1247 1.1 mrg (__mmask32) -1); 1248 1.1 mrg } 1249 1.1 mrg 1250 1.1 mrg extern __inline __m512i 1251 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1252 1.1 mrg _mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 1253 1.1 mrg __m512i __B) 1254 1.1 mrg { 1255 1.1 mrg return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, 1256 1.1 mrg (__v32hi) __B, 1257 1.1 mrg (__v32hi) __W, 1258 1.1 mrg (__mmask32) __U); 1259 1.1 mrg } 1260 1.1 mrg 1261 1.1 mrg extern __inline __m512i 1262 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1263 1.1 mrg _mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 1264 1.1 mrg { 1265 1.1 mrg return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A, 1266 1.1 mrg (__v32hi) __B, 1267 1.1 mrg (__v32hi) 1268 1.3 mrg _mm512_setzero_si512 (), 1269 1.1 mrg (__mmask32) __U); 1270 1.1 mrg } 1271 1.1 mrg 1272 1.1 mrg extern __inline __m512i 1273 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1274 1.1 mrg _mm512_add_epi16 (__m512i __A, __m512i __B) 1275 1.1 mrg { 1276 1.1 mrg return (__m512i) ((__v32hu) __A + (__v32hu) __B); 1277 1.1 mrg } 1278 1.1 mrg 1279 1.1 mrg extern __inline __m512i 1280 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1281 1.1 mrg _mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1282 1.1 mrg __m512i __B) 1283 1.1 mrg { 1284 1.1 mrg return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A, 1285 1.1 mrg (__v32hi) __B, 1286 1.1 mrg (__v32hi) __W, 1287 1.1 mrg (__mmask32) __U); 1288 1.1 mrg } 1289 1.1 mrg 1290 1.1 mrg extern __inline __m512i 1291 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1292 1.1 mrg _mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1293 1.1 mrg { 1294 1.1 mrg return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A, 1295 1.1 mrg (__v32hi) __B, 1296 1.1 mrg (__v32hi) 1297 1.3 mrg _mm512_setzero_si512 (), 1298 1.1 mrg (__mmask32) __U); 1299 1.1 mrg } 1300 1.1 mrg 1301 1.1 mrg extern __inline __m512i 1302 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1303 1.1 mrg _mm512_adds_epi16 (__m512i __A, __m512i __B) 1304 1.1 mrg { 1305 1.1 mrg return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A, 1306 1.1 mrg (__v32hi) __B, 1307 1.1 mrg (__v32hi) 1308 1.3 mrg _mm512_setzero_si512 (), 1309 1.1 mrg (__mmask32) -1); 1310 1.1 mrg } 1311 1.1 mrg 1312 1.1 mrg extern __inline __m512i 1313 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1314 1.1 mrg _mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1315 1.1 mrg __m512i __B) 1316 1.1 mrg { 1317 1.1 mrg return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A, 1318 1.1 mrg (__v32hi) __B, 1319 1.1 mrg (__v32hi) __W, 1320 1.1 mrg (__mmask32) __U); 1321 1.1 mrg } 1322 1.1 mrg 1323 1.1 mrg extern __inline __m512i 1324 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1325 1.1 mrg _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1326 1.1 mrg { 1327 1.1 mrg return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A, 1328 1.1 mrg (__v32hi) __B, 1329 1.1 mrg (__v32hi) 1330 1.3 mrg _mm512_setzero_si512 (), 1331 1.1 mrg (__mmask32) __U); 1332 1.1 mrg } 1333 1.1 mrg 1334 1.1 mrg extern __inline __m512i 1335 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1336 1.1 mrg _mm512_adds_epu16 (__m512i __A, __m512i __B) 1337 1.1 mrg { 1338 1.1 mrg return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A, 1339 1.1 mrg (__v32hi) __B, 1340 1.1 mrg (__v32hi) 1341 1.3 mrg _mm512_setzero_si512 (), 1342 1.1 mrg (__mmask32) -1); 1343 1.1 mrg } 1344 1.1 mrg 1345 1.1 mrg extern __inline __m512i 1346 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1347 1.1 mrg _mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A, 1348 1.1 mrg __m512i __B) 1349 1.1 mrg { 1350 1.1 mrg return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A, 1351 1.1 mrg (__v32hi) __B, 1352 1.1 mrg (__v32hi) __W, 1353 1.1 mrg (__mmask32) __U); 1354 1.1 mrg } 1355 1.1 mrg 1356 1.1 mrg extern __inline __m512i 1357 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1358 1.1 mrg _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B) 1359 1.1 mrg { 1360 1.1 mrg return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A, 1361 1.1 mrg (__v32hi) __B, 1362 1.1 mrg (__v32hi) 1363 1.3 mrg _mm512_setzero_si512 (), 1364 1.1 mrg (__mmask32) __U); 1365 1.1 mrg } 1366 1.1 mrg 1367 1.1 mrg extern __inline __m512i 1368 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1369 1.1 mrg _mm512_srl_epi16 (__m512i __A, __m128i __B) 1370 1.1 mrg { 1371 1.1 mrg return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A, 1372 1.1 mrg (__v8hi) __B, 1373 1.1 mrg (__v32hi) 1374 1.3 mrg _mm512_setzero_si512 (), 1375 1.1 mrg (__mmask32) -1); 1376 1.1 mrg } 1377 1.1 mrg 1378 1.1 mrg extern __inline __m512i 1379 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1380 1.1 mrg _mm512_mask_srl_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1381 1.1 mrg __m128i __B) 1382 1.1 mrg { 1383 1.1 mrg return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A, 1384 1.1 mrg (__v8hi) __B, 1385 1.1 mrg (__v32hi) __W, 1386 1.1 mrg (__mmask32) __U); 1387 1.1 mrg } 1388 1.1 mrg 1389 1.1 mrg extern __inline __m512i 1390 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1391 1.1 mrg _mm512_maskz_srl_epi16 (__mmask32 __U, __m512i __A, __m128i __B) 1392 1.1 mrg { 1393 1.1 mrg return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A, 1394 1.1 mrg (__v8hi) __B, 1395 1.1 mrg (__v32hi) 1396 1.3 mrg _mm512_setzero_si512 (), 1397 1.1 mrg (__mmask32) __U); 1398 1.1 mrg } 1399 1.1 mrg 1400 1.1 mrg extern __inline __m512i 1401 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1402 1.1 mrg _mm512_packs_epi16 (__m512i __A, __m512i __B) 1403 1.1 mrg { 1404 1.1 mrg return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A, 1405 1.1 mrg (__v32hi) __B, 1406 1.1 mrg (__v64qi) 1407 1.3 mrg _mm512_setzero_si512 (), 1408 1.1 mrg (__mmask64) -1); 1409 1.1 mrg } 1410 1.1 mrg 1411 1.1 mrg extern __inline __m512i 1412 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1413 1.1 mrg _mm512_sll_epi16 (__m512i __A, __m128i __B) 1414 1.1 mrg { 1415 1.1 mrg return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A, 1416 1.1 mrg (__v8hi) __B, 1417 1.1 mrg (__v32hi) 1418 1.3 mrg _mm512_setzero_si512 (), 1419 1.1 mrg (__mmask32) -1); 1420 1.1 mrg } 1421 1.1 mrg 1422 1.1 mrg extern __inline __m512i 1423 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1424 1.1 mrg _mm512_mask_sll_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1425 1.1 mrg __m128i __B) 1426 1.1 mrg { 1427 1.1 mrg return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A, 1428 1.1 mrg (__v8hi) __B, 1429 1.1 mrg (__v32hi) __W, 1430 1.1 mrg (__mmask32) __U); 1431 1.1 mrg } 1432 1.1 mrg 1433 1.1 mrg extern __inline __m512i 1434 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1435 1.1 mrg _mm512_maskz_sll_epi16 (__mmask32 __U, __m512i __A, __m128i __B) 1436 1.1 mrg { 1437 1.1 mrg return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A, 1438 1.1 mrg (__v8hi) __B, 1439 1.1 mrg (__v32hi) 1440 1.3 mrg _mm512_setzero_si512 (), 1441 1.1 mrg (__mmask32) __U); 1442 1.1 mrg } 1443 1.1 mrg 1444 1.1 mrg extern __inline __m512i 1445 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1446 1.1 mrg _mm512_maddubs_epi16 (__m512i __X, __m512i __Y) 1447 1.1 mrg { 1448 1.1 mrg return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X, 1449 1.1 mrg (__v64qi) __Y, 1450 1.1 mrg (__v32hi) 1451 1.3 mrg _mm512_setzero_si512 (), 1452 1.1 mrg (__mmask32) -1); 1453 1.1 mrg } 1454 1.1 mrg 1455 1.1 mrg extern __inline __m512i 1456 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1457 1.1 mrg _mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X, 1458 1.1 mrg __m512i __Y) 1459 1.1 mrg { 1460 1.1 mrg return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X, 1461 1.1 mrg (__v64qi) __Y, 1462 1.1 mrg (__v32hi) __W, 1463 1.1 mrg (__mmask32) __U); 1464 1.1 mrg } 1465 1.1 mrg 1466 1.1 mrg extern __inline __m512i 1467 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1468 1.1 mrg _mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y) 1469 1.1 mrg { 1470 1.1 mrg return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X, 1471 1.1 mrg (__v64qi) __Y, 1472 1.1 mrg (__v32hi) 1473 1.3 mrg _mm512_setzero_si512 (), 1474 1.1 mrg (__mmask32) __U); 1475 1.1 mrg } 1476 1.1 mrg 1477 1.1 mrg extern __inline __m512i 1478 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1479 1.1 mrg _mm512_madd_epi16 (__m512i __A, __m512i __B) 1480 1.1 mrg { 1481 1.1 mrg return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A, 1482 1.1 mrg (__v32hi) __B, 1483 1.1 mrg (__v16si) 1484 1.1 mrg _mm512_setzero_si512 (), 1485 1.1 mrg (__mmask16) -1); 1486 1.1 mrg } 1487 1.1 mrg 1488 1.1 mrg extern __inline __m512i 1489 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1490 1.1 mrg _mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A, 1491 1.1 mrg __m512i __B) 1492 1.1 mrg { 1493 1.1 mrg return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A, 1494 1.1 mrg (__v32hi) __B, 1495 1.1 mrg (__v16si) __W, 1496 1.1 mrg (__mmask16) __U); 1497 1.1 mrg } 1498 1.1 mrg 1499 1.1 mrg extern __inline __m512i 1500 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1501 1.1 mrg _mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B) 1502 1.1 mrg { 1503 1.1 mrg return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A, 1504 1.1 mrg (__v32hi) __B, 1505 1.1 mrg (__v16si) 1506 1.1 mrg _mm512_setzero_si512 (), 1507 1.1 mrg (__mmask16) __U); 1508 1.1 mrg } 1509 1.1 mrg 1510 1.1 mrg extern __inline __m512i 1511 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1512 1.1 mrg _mm512_unpackhi_epi8 (__m512i __A, __m512i __B) 1513 1.1 mrg { 1514 1.1 mrg return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A, 1515 1.1 mrg (__v64qi) __B, 1516 1.1 mrg (__v64qi) 1517 1.3 mrg _mm512_setzero_si512 (), 1518 1.1 mrg (__mmask64) -1); 1519 1.1 mrg } 1520 1.1 mrg 1521 1.1 mrg extern __inline __m512i 1522 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1523 1.1 mrg _mm512_mask_unpackhi_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 1524 1.1 mrg __m512i __B) 1525 1.1 mrg { 1526 1.1 mrg return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A, 1527 1.1 mrg (__v64qi) __B, 1528 1.1 mrg (__v64qi) __W, 1529 1.1 mrg (__mmask64) __U); 1530 1.1 mrg } 1531 1.1 mrg 1532 1.1 mrg extern __inline __m512i 1533 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1534 1.1 mrg _mm512_maskz_unpackhi_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 1535 1.1 mrg { 1536 1.1 mrg return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A, 1537 1.1 mrg (__v64qi) __B, 1538 1.1 mrg (__v64qi) 1539 1.3 mrg _mm512_setzero_si512 (), 1540 1.1 mrg (__mmask64) __U); 1541 1.1 mrg } 1542 1.1 mrg 1543 1.1 mrg extern __inline __m512i 1544 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1545 1.1 mrg _mm512_unpackhi_epi16 (__m512i __A, __m512i __B) 1546 1.1 mrg { 1547 1.1 mrg return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A, 1548 1.1 mrg (__v32hi) __B, 1549 1.1 mrg (__v32hi) 1550 1.3 mrg _mm512_setzero_si512 (), 1551 1.1 mrg (__mmask32) -1); 1552 1.1 mrg } 1553 1.1 mrg 1554 1.1 mrg extern __inline __m512i 1555 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1556 1.1 mrg _mm512_mask_unpackhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1557 1.1 mrg __m512i __B) 1558 1.1 mrg { 1559 1.1 mrg return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A, 1560 1.1 mrg (__v32hi) __B, 1561 1.1 mrg (__v32hi) __W, 1562 1.1 mrg (__mmask32) __U); 1563 1.1 mrg } 1564 1.1 mrg 1565 1.1 mrg extern __inline __m512i 1566 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1567 1.1 mrg _mm512_maskz_unpackhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1568 1.1 mrg { 1569 1.1 mrg return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A, 1570 1.1 mrg (__v32hi) __B, 1571 1.1 mrg (__v32hi) 1572 1.3 mrg _mm512_setzero_si512 (), 1573 1.1 mrg (__mmask32) __U); 1574 1.1 mrg } 1575 1.1 mrg 1576 1.1 mrg extern __inline __m512i 1577 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1578 1.1 mrg _mm512_unpacklo_epi8 (__m512i __A, __m512i __B) 1579 1.1 mrg { 1580 1.1 mrg return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A, 1581 1.1 mrg (__v64qi) __B, 1582 1.1 mrg (__v64qi) 1583 1.3 mrg _mm512_setzero_si512 (), 1584 1.1 mrg (__mmask64) -1); 1585 1.1 mrg } 1586 1.1 mrg 1587 1.1 mrg extern __inline __m512i 1588 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1589 1.1 mrg _mm512_mask_unpacklo_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 1590 1.1 mrg __m512i __B) 1591 1.1 mrg { 1592 1.1 mrg return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A, 1593 1.1 mrg (__v64qi) __B, 1594 1.1 mrg (__v64qi) __W, 1595 1.1 mrg (__mmask64) __U); 1596 1.1 mrg } 1597 1.1 mrg 1598 1.1 mrg extern __inline __m512i 1599 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1600 1.1 mrg _mm512_maskz_unpacklo_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 1601 1.1 mrg { 1602 1.1 mrg return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A, 1603 1.1 mrg (__v64qi) __B, 1604 1.1 mrg (__v64qi) 1605 1.3 mrg _mm512_setzero_si512 (), 1606 1.1 mrg (__mmask64) __U); 1607 1.1 mrg } 1608 1.1 mrg 1609 1.1 mrg extern __inline __m512i 1610 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1611 1.1 mrg _mm512_unpacklo_epi16 (__m512i __A, __m512i __B) 1612 1.1 mrg { 1613 1.1 mrg return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A, 1614 1.1 mrg (__v32hi) __B, 1615 1.1 mrg (__v32hi) 1616 1.3 mrg _mm512_setzero_si512 (), 1617 1.1 mrg (__mmask32) -1); 1618 1.1 mrg } 1619 1.1 mrg 1620 1.1 mrg extern __inline __m512i 1621 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1622 1.1 mrg _mm512_mask_unpacklo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 1623 1.1 mrg __m512i __B) 1624 1.1 mrg { 1625 1.1 mrg return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A, 1626 1.1 mrg (__v32hi) __B, 1627 1.1 mrg (__v32hi) __W, 1628 1.1 mrg (__mmask32) __U); 1629 1.1 mrg } 1630 1.1 mrg 1631 1.1 mrg extern __inline __m512i 1632 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1633 1.1 mrg _mm512_maskz_unpacklo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 1634 1.1 mrg { 1635 1.1 mrg return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A, 1636 1.1 mrg (__v32hi) __B, 1637 1.1 mrg (__v32hi) 1638 1.3 mrg _mm512_setzero_si512 (), 1639 1.1 mrg (__mmask32) __U); 1640 1.1 mrg } 1641 1.1 mrg 1642 1.1 mrg extern __inline __mmask64 1643 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1644 1.1 mrg _mm512_cmpeq_epu8_mask (__m512i __A, __m512i __B) 1645 1.1 mrg { 1646 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A, 1647 1.1 mrg (__v64qi) __B, 0, 1648 1.1 mrg (__mmask64) -1); 1649 1.1 mrg } 1650 1.1 mrg 1651 1.1 mrg extern __inline __mmask64 1652 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1653 1.1 mrg _mm512_cmpeq_epi8_mask (__m512i __A, __m512i __B) 1654 1.1 mrg { 1655 1.1 mrg return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A, 1656 1.1 mrg (__v64qi) __B, 1657 1.1 mrg (__mmask64) -1); 1658 1.1 mrg } 1659 1.1 mrg 1660 1.1 mrg extern __inline __mmask64 1661 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1662 1.1 mrg _mm512_mask_cmpeq_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B) 1663 1.1 mrg { 1664 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A, 1665 1.1 mrg (__v64qi) __B, 0, 1666 1.1 mrg __U); 1667 1.1 mrg } 1668 1.1 mrg 1669 1.1 mrg extern __inline __mmask64 1670 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1671 1.1 mrg _mm512_mask_cmpeq_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B) 1672 1.1 mrg { 1673 1.1 mrg return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A, 1674 1.1 mrg (__v64qi) __B, 1675 1.1 mrg __U); 1676 1.1 mrg } 1677 1.1 mrg 1678 1.1 mrg extern __inline __mmask32 1679 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1680 1.1 mrg _mm512_cmpeq_epu16_mask (__m512i __A, __m512i __B) 1681 1.1 mrg { 1682 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A, 1683 1.1 mrg (__v32hi) __B, 0, 1684 1.1 mrg (__mmask32) -1); 1685 1.1 mrg } 1686 1.1 mrg 1687 1.1 mrg extern __inline __mmask32 1688 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1689 1.1 mrg _mm512_cmpeq_epi16_mask (__m512i __A, __m512i __B) 1690 1.1 mrg { 1691 1.1 mrg return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A, 1692 1.1 mrg (__v32hi) __B, 1693 1.1 mrg (__mmask32) -1); 1694 1.1 mrg } 1695 1.1 mrg 1696 1.1 mrg extern __inline __mmask32 1697 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1698 1.1 mrg _mm512_mask_cmpeq_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B) 1699 1.1 mrg { 1700 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A, 1701 1.1 mrg (__v32hi) __B, 0, 1702 1.1 mrg __U); 1703 1.1 mrg } 1704 1.1 mrg 1705 1.1 mrg extern __inline __mmask32 1706 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1707 1.1 mrg _mm512_mask_cmpeq_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B) 1708 1.1 mrg { 1709 1.1 mrg return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A, 1710 1.1 mrg (__v32hi) __B, 1711 1.1 mrg __U); 1712 1.1 mrg } 1713 1.1 mrg 1714 1.1 mrg extern __inline __mmask64 1715 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1716 1.1 mrg _mm512_cmpgt_epu8_mask (__m512i __A, __m512i __B) 1717 1.1 mrg { 1718 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A, 1719 1.1 mrg (__v64qi) __B, 6, 1720 1.1 mrg (__mmask64) -1); 1721 1.1 mrg } 1722 1.1 mrg 1723 1.1 mrg extern __inline __mmask64 1724 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1725 1.1 mrg _mm512_cmpgt_epi8_mask (__m512i __A, __m512i __B) 1726 1.1 mrg { 1727 1.1 mrg return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A, 1728 1.1 mrg (__v64qi) __B, 1729 1.1 mrg (__mmask64) -1); 1730 1.1 mrg } 1731 1.1 mrg 1732 1.1 mrg extern __inline __mmask64 1733 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1734 1.1 mrg _mm512_mask_cmpgt_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B) 1735 1.1 mrg { 1736 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A, 1737 1.1 mrg (__v64qi) __B, 6, 1738 1.1 mrg __U); 1739 1.1 mrg } 1740 1.1 mrg 1741 1.1 mrg extern __inline __mmask64 1742 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1743 1.1 mrg _mm512_mask_cmpgt_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B) 1744 1.1 mrg { 1745 1.1 mrg return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A, 1746 1.1 mrg (__v64qi) __B, 1747 1.1 mrg __U); 1748 1.1 mrg } 1749 1.1 mrg 1750 1.1 mrg extern __inline __mmask32 1751 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1752 1.1 mrg _mm512_cmpgt_epu16_mask (__m512i __A, __m512i __B) 1753 1.1 mrg { 1754 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A, 1755 1.1 mrg (__v32hi) __B, 6, 1756 1.1 mrg (__mmask32) -1); 1757 1.1 mrg } 1758 1.1 mrg 1759 1.1 mrg extern __inline __mmask32 1760 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1761 1.1 mrg _mm512_cmpgt_epi16_mask (__m512i __A, __m512i __B) 1762 1.1 mrg { 1763 1.1 mrg return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A, 1764 1.1 mrg (__v32hi) __B, 1765 1.1 mrg (__mmask32) -1); 1766 1.1 mrg } 1767 1.1 mrg 1768 1.1 mrg extern __inline __mmask32 1769 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1770 1.1 mrg _mm512_mask_cmpgt_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B) 1771 1.1 mrg { 1772 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A, 1773 1.1 mrg (__v32hi) __B, 6, 1774 1.1 mrg __U); 1775 1.1 mrg } 1776 1.1 mrg 1777 1.1 mrg extern __inline __mmask32 1778 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1779 1.1 mrg _mm512_mask_cmpgt_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B) 1780 1.1 mrg { 1781 1.1 mrg return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A, 1782 1.1 mrg (__v32hi) __B, 1783 1.1 mrg __U); 1784 1.1 mrg } 1785 1.1 mrg 1786 1.1 mrg extern __inline __mmask64 1787 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1788 1.1 mrg _mm512_movepi8_mask (__m512i __A) 1789 1.1 mrg { 1790 1.1 mrg return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A); 1791 1.1 mrg } 1792 1.1 mrg 1793 1.1 mrg extern __inline __mmask32 1794 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1795 1.1 mrg _mm512_movepi16_mask (__m512i __A) 1796 1.1 mrg { 1797 1.1 mrg return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A); 1798 1.1 mrg } 1799 1.1 mrg 1800 1.1 mrg extern __inline __m512i 1801 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1802 1.1 mrg _mm512_movm_epi8 (__mmask64 __A) 1803 1.1 mrg { 1804 1.1 mrg return (__m512i) __builtin_ia32_cvtmask2b512 (__A); 1805 1.1 mrg } 1806 1.1 mrg 1807 1.1 mrg extern __inline __m512i 1808 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1809 1.1 mrg _mm512_movm_epi16 (__mmask32 __A) 1810 1.1 mrg { 1811 1.1 mrg return (__m512i) __builtin_ia32_cvtmask2w512 (__A); 1812 1.1 mrg } 1813 1.1 mrg 1814 1.1 mrg extern __inline __mmask64 1815 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1816 1.1 mrg _mm512_test_epi8_mask (__m512i __A, __m512i __B) 1817 1.1 mrg { 1818 1.1 mrg return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A, 1819 1.1 mrg (__v64qi) __B, 1820 1.1 mrg (__mmask64) -1); 1821 1.1 mrg } 1822 1.1 mrg 1823 1.1 mrg extern __inline __mmask64 1824 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1825 1.1 mrg _mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B) 1826 1.1 mrg { 1827 1.1 mrg return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A, 1828 1.1 mrg (__v64qi) __B, __U); 1829 1.1 mrg } 1830 1.1 mrg 1831 1.1 mrg extern __inline __mmask32 1832 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1833 1.1 mrg _mm512_test_epi16_mask (__m512i __A, __m512i __B) 1834 1.1 mrg { 1835 1.1 mrg return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A, 1836 1.1 mrg (__v32hi) __B, 1837 1.1 mrg (__mmask32) -1); 1838 1.1 mrg } 1839 1.1 mrg 1840 1.1 mrg extern __inline __mmask32 1841 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1842 1.1 mrg _mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B) 1843 1.1 mrg { 1844 1.1 mrg return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A, 1845 1.1 mrg (__v32hi) __B, __U); 1846 1.1 mrg } 1847 1.1 mrg 1848 1.1 mrg extern __inline __mmask64 1849 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1850 1.1 mrg _mm512_testn_epi8_mask (__m512i __A, __m512i __B) 1851 1.1 mrg { 1852 1.1 mrg return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A, 1853 1.1 mrg (__v64qi) __B, 1854 1.1 mrg (__mmask64) -1); 1855 1.1 mrg } 1856 1.1 mrg 1857 1.1 mrg extern __inline __mmask64 1858 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1859 1.1 mrg _mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B) 1860 1.1 mrg { 1861 1.1 mrg return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A, 1862 1.1 mrg (__v64qi) __B, __U); 1863 1.1 mrg } 1864 1.1 mrg 1865 1.1 mrg extern __inline __mmask32 1866 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1867 1.1 mrg _mm512_testn_epi16_mask (__m512i __A, __m512i __B) 1868 1.1 mrg { 1869 1.1 mrg return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A, 1870 1.1 mrg (__v32hi) __B, 1871 1.1 mrg (__mmask32) -1); 1872 1.1 mrg } 1873 1.1 mrg 1874 1.1 mrg extern __inline __mmask32 1875 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1876 1.1 mrg _mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B) 1877 1.1 mrg { 1878 1.1 mrg return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A, 1879 1.1 mrg (__v32hi) __B, __U); 1880 1.1 mrg } 1881 1.1 mrg 1882 1.1 mrg extern __inline __m512i 1883 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1884 1.1 mrg _mm512_shuffle_epi8 (__m512i __A, __m512i __B) 1885 1.1 mrg { 1886 1.1 mrg return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A, 1887 1.1 mrg (__v64qi) __B, 1888 1.1 mrg (__v64qi) 1889 1.3 mrg _mm512_setzero_si512 (), 1890 1.1 mrg (__mmask64) -1); 1891 1.1 mrg } 1892 1.1 mrg 1893 1.1 mrg extern __inline __m512i 1894 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1895 1.1 mrg _mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 1896 1.1 mrg __m512i __B) 1897 1.1 mrg { 1898 1.1 mrg return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A, 1899 1.1 mrg (__v64qi) __B, 1900 1.1 mrg (__v64qi) __W, 1901 1.1 mrg (__mmask64) __U); 1902 1.1 mrg } 1903 1.1 mrg 1904 1.1 mrg extern __inline __m512i 1905 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1906 1.1 mrg _mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B) 1907 1.1 mrg { 1908 1.1 mrg return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A, 1909 1.1 mrg (__v64qi) __B, 1910 1.1 mrg (__v64qi) 1911 1.3 mrg _mm512_setzero_si512 (), 1912 1.1 mrg (__mmask64) __U); 1913 1.1 mrg } 1914 1.1 mrg 1915 1.1 mrg extern __inline __m512i 1916 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1917 1.1 mrg _mm512_min_epu16 (__m512i __A, __m512i __B) 1918 1.1 mrg { 1919 1.1 mrg return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, 1920 1.1 mrg (__v32hi) __B, 1921 1.1 mrg (__v32hi) 1922 1.3 mrg _mm512_setzero_si512 (), 1923 1.1 mrg (__mmask32) -1); 1924 1.1 mrg } 1925 1.1 mrg 1926 1.1 mrg extern __inline __m512i 1927 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1928 1.1 mrg _mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B) 1929 1.1 mrg { 1930 1.1 mrg return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, 1931 1.1 mrg (__v32hi) __B, 1932 1.1 mrg (__v32hi) 1933 1.3 mrg _mm512_setzero_si512 (), 1934 1.1 mrg (__mmask32) __M); 1935 1.1 mrg } 1936 1.1 mrg 1937 1.1 mrg extern __inline __m512i 1938 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1939 1.1 mrg _mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A, 1940 1.1 mrg __m512i __B) 1941 1.1 mrg { 1942 1.1 mrg return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A, 1943 1.1 mrg (__v32hi) __B, 1944 1.1 mrg (__v32hi) __W, 1945 1.1 mrg (__mmask32) __M); 1946 1.1 mrg } 1947 1.1 mrg 1948 1.1 mrg extern __inline __m512i 1949 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1950 1.1 mrg _mm512_min_epi16 (__m512i __A, __m512i __B) 1951 1.1 mrg { 1952 1.1 mrg return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, 1953 1.1 mrg (__v32hi) __B, 1954 1.1 mrg (__v32hi) 1955 1.3 mrg _mm512_setzero_si512 (), 1956 1.1 mrg (__mmask32) -1); 1957 1.1 mrg } 1958 1.1 mrg 1959 1.1 mrg extern __inline __m512i 1960 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1961 1.1 mrg _mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B) 1962 1.1 mrg { 1963 1.1 mrg return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, 1964 1.1 mrg (__v32hi) __B, 1965 1.1 mrg (__v32hi) 1966 1.3 mrg _mm512_setzero_si512 (), 1967 1.1 mrg (__mmask32) __M); 1968 1.1 mrg } 1969 1.1 mrg 1970 1.1 mrg extern __inline __m512i 1971 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1972 1.1 mrg _mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A, 1973 1.1 mrg __m512i __B) 1974 1.1 mrg { 1975 1.1 mrg return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A, 1976 1.1 mrg (__v32hi) __B, 1977 1.1 mrg (__v32hi) __W, 1978 1.1 mrg (__mmask32) __M); 1979 1.1 mrg } 1980 1.1 mrg 1981 1.1 mrg extern __inline __m512i 1982 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1983 1.1 mrg _mm512_max_epu8 (__m512i __A, __m512i __B) 1984 1.1 mrg { 1985 1.1 mrg return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, 1986 1.1 mrg (__v64qi) __B, 1987 1.1 mrg (__v64qi) 1988 1.3 mrg _mm512_setzero_si512 (), 1989 1.1 mrg (__mmask64) -1); 1990 1.1 mrg } 1991 1.1 mrg 1992 1.1 mrg extern __inline __m512i 1993 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 1994 1.1 mrg _mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B) 1995 1.1 mrg { 1996 1.1 mrg return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, 1997 1.1 mrg (__v64qi) __B, 1998 1.1 mrg (__v64qi) 1999 1.3 mrg _mm512_setzero_si512 (), 2000 1.1 mrg (__mmask64) __M); 2001 1.1 mrg } 2002 1.1 mrg 2003 1.1 mrg extern __inline __m512i 2004 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2005 1.1 mrg _mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A, 2006 1.1 mrg __m512i __B) 2007 1.1 mrg { 2008 1.1 mrg return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A, 2009 1.1 mrg (__v64qi) __B, 2010 1.1 mrg (__v64qi) __W, 2011 1.1 mrg (__mmask64) __M); 2012 1.1 mrg } 2013 1.1 mrg 2014 1.1 mrg extern __inline __m512i 2015 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2016 1.1 mrg _mm512_max_epi8 (__m512i __A, __m512i __B) 2017 1.1 mrg { 2018 1.1 mrg return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, 2019 1.1 mrg (__v64qi) __B, 2020 1.1 mrg (__v64qi) 2021 1.3 mrg _mm512_setzero_si512 (), 2022 1.1 mrg (__mmask64) -1); 2023 1.1 mrg } 2024 1.1 mrg 2025 1.1 mrg extern __inline __m512i 2026 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2027 1.1 mrg _mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B) 2028 1.1 mrg { 2029 1.1 mrg return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, 2030 1.1 mrg (__v64qi) __B, 2031 1.1 mrg (__v64qi) 2032 1.3 mrg _mm512_setzero_si512 (), 2033 1.1 mrg (__mmask64) __M); 2034 1.1 mrg } 2035 1.1 mrg 2036 1.1 mrg extern __inline __m512i 2037 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2038 1.1 mrg _mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A, 2039 1.1 mrg __m512i __B) 2040 1.1 mrg { 2041 1.1 mrg return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A, 2042 1.1 mrg (__v64qi) __B, 2043 1.1 mrg (__v64qi) __W, 2044 1.1 mrg (__mmask64) __M); 2045 1.1 mrg } 2046 1.1 mrg 2047 1.1 mrg extern __inline __m512i 2048 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2049 1.1 mrg _mm512_min_epu8 (__m512i __A, __m512i __B) 2050 1.1 mrg { 2051 1.1 mrg return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, 2052 1.1 mrg (__v64qi) __B, 2053 1.1 mrg (__v64qi) 2054 1.3 mrg _mm512_setzero_si512 (), 2055 1.1 mrg (__mmask64) -1); 2056 1.1 mrg } 2057 1.1 mrg 2058 1.1 mrg extern __inline __m512i 2059 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2060 1.1 mrg _mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B) 2061 1.1 mrg { 2062 1.1 mrg return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, 2063 1.1 mrg (__v64qi) __B, 2064 1.1 mrg (__v64qi) 2065 1.3 mrg _mm512_setzero_si512 (), 2066 1.1 mrg (__mmask64) __M); 2067 1.1 mrg } 2068 1.1 mrg 2069 1.1 mrg extern __inline __m512i 2070 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2071 1.1 mrg _mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A, 2072 1.1 mrg __m512i __B) 2073 1.1 mrg { 2074 1.1 mrg return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A, 2075 1.1 mrg (__v64qi) __B, 2076 1.1 mrg (__v64qi) __W, 2077 1.1 mrg (__mmask64) __M); 2078 1.1 mrg } 2079 1.1 mrg 2080 1.1 mrg extern __inline __m512i 2081 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2082 1.1 mrg _mm512_min_epi8 (__m512i __A, __m512i __B) 2083 1.1 mrg { 2084 1.1 mrg return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, 2085 1.1 mrg (__v64qi) __B, 2086 1.1 mrg (__v64qi) 2087 1.3 mrg _mm512_setzero_si512 (), 2088 1.1 mrg (__mmask64) -1); 2089 1.1 mrg } 2090 1.1 mrg 2091 1.1 mrg extern __inline __m512i 2092 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2093 1.1 mrg _mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B) 2094 1.1 mrg { 2095 1.1 mrg return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, 2096 1.1 mrg (__v64qi) __B, 2097 1.1 mrg (__v64qi) 2098 1.3 mrg _mm512_setzero_si512 (), 2099 1.1 mrg (__mmask64) __M); 2100 1.1 mrg } 2101 1.1 mrg 2102 1.1 mrg extern __inline __m512i 2103 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2104 1.1 mrg _mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A, 2105 1.1 mrg __m512i __B) 2106 1.1 mrg { 2107 1.1 mrg return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A, 2108 1.1 mrg (__v64qi) __B, 2109 1.1 mrg (__v64qi) __W, 2110 1.1 mrg (__mmask64) __M); 2111 1.1 mrg } 2112 1.1 mrg 2113 1.1 mrg extern __inline __m512i 2114 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2115 1.1 mrg _mm512_max_epi16 (__m512i __A, __m512i __B) 2116 1.1 mrg { 2117 1.1 mrg return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, 2118 1.1 mrg (__v32hi) __B, 2119 1.1 mrg (__v32hi) 2120 1.3 mrg _mm512_setzero_si512 (), 2121 1.1 mrg (__mmask32) -1); 2122 1.1 mrg } 2123 1.1 mrg 2124 1.1 mrg extern __inline __m512i 2125 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2126 1.1 mrg _mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B) 2127 1.1 mrg { 2128 1.1 mrg return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, 2129 1.1 mrg (__v32hi) __B, 2130 1.1 mrg (__v32hi) 2131 1.3 mrg _mm512_setzero_si512 (), 2132 1.1 mrg (__mmask32) __M); 2133 1.1 mrg } 2134 1.1 mrg 2135 1.1 mrg extern __inline __m512i 2136 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2137 1.1 mrg _mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A, 2138 1.1 mrg __m512i __B) 2139 1.1 mrg { 2140 1.1 mrg return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A, 2141 1.1 mrg (__v32hi) __B, 2142 1.1 mrg (__v32hi) __W, 2143 1.1 mrg (__mmask32) __M); 2144 1.1 mrg } 2145 1.1 mrg 2146 1.1 mrg extern __inline __m512i 2147 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2148 1.1 mrg _mm512_max_epu16 (__m512i __A, __m512i __B) 2149 1.1 mrg { 2150 1.1 mrg return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, 2151 1.1 mrg (__v32hi) __B, 2152 1.1 mrg (__v32hi) 2153 1.3 mrg _mm512_setzero_si512 (), 2154 1.1 mrg (__mmask32) -1); 2155 1.1 mrg } 2156 1.1 mrg 2157 1.1 mrg extern __inline __m512i 2158 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2159 1.1 mrg _mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B) 2160 1.1 mrg { 2161 1.1 mrg return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, 2162 1.1 mrg (__v32hi) __B, 2163 1.1 mrg (__v32hi) 2164 1.3 mrg _mm512_setzero_si512 (), 2165 1.1 mrg (__mmask32) __M); 2166 1.1 mrg } 2167 1.1 mrg 2168 1.1 mrg extern __inline __m512i 2169 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2170 1.1 mrg _mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A, 2171 1.1 mrg __m512i __B) 2172 1.1 mrg { 2173 1.1 mrg return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A, 2174 1.1 mrg (__v32hi) __B, 2175 1.1 mrg (__v32hi) __W, 2176 1.1 mrg (__mmask32) __M); 2177 1.1 mrg } 2178 1.1 mrg 2179 1.1 mrg extern __inline __m512i 2180 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2181 1.1 mrg _mm512_sra_epi16 (__m512i __A, __m128i __B) 2182 1.1 mrg { 2183 1.1 mrg return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A, 2184 1.1 mrg (__v8hi) __B, 2185 1.1 mrg (__v32hi) 2186 1.3 mrg _mm512_setzero_si512 (), 2187 1.1 mrg (__mmask32) -1); 2188 1.1 mrg } 2189 1.1 mrg 2190 1.1 mrg extern __inline __m512i 2191 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2192 1.1 mrg _mm512_mask_sra_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 2193 1.1 mrg __m128i __B) 2194 1.1 mrg { 2195 1.1 mrg return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A, 2196 1.1 mrg (__v8hi) __B, 2197 1.1 mrg (__v32hi) __W, 2198 1.1 mrg (__mmask32) __U); 2199 1.1 mrg } 2200 1.1 mrg 2201 1.1 mrg extern __inline __m512i 2202 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2203 1.1 mrg _mm512_maskz_sra_epi16 (__mmask32 __U, __m512i __A, __m128i __B) 2204 1.1 mrg { 2205 1.1 mrg return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A, 2206 1.1 mrg (__v8hi) __B, 2207 1.1 mrg (__v32hi) 2208 1.3 mrg _mm512_setzero_si512 (), 2209 1.1 mrg (__mmask32) __U); 2210 1.1 mrg } 2211 1.1 mrg 2212 1.1 mrg extern __inline __m512i 2213 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2214 1.1 mrg _mm512_srav_epi16 (__m512i __A, __m512i __B) 2215 1.1 mrg { 2216 1.1 mrg return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A, 2217 1.1 mrg (__v32hi) __B, 2218 1.1 mrg (__v32hi) 2219 1.3 mrg _mm512_setzero_si512 (), 2220 1.1 mrg (__mmask32) -1); 2221 1.1 mrg } 2222 1.1 mrg 2223 1.1 mrg extern __inline __m512i 2224 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2225 1.1 mrg _mm512_mask_srav_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 2226 1.1 mrg __m512i __B) 2227 1.1 mrg { 2228 1.1 mrg return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A, 2229 1.1 mrg (__v32hi) __B, 2230 1.1 mrg (__v32hi) __W, 2231 1.1 mrg (__mmask32) __U); 2232 1.1 mrg } 2233 1.1 mrg 2234 1.1 mrg extern __inline __m512i 2235 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2236 1.1 mrg _mm512_maskz_srav_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 2237 1.1 mrg { 2238 1.1 mrg return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A, 2239 1.1 mrg (__v32hi) __B, 2240 1.1 mrg (__v32hi) 2241 1.3 mrg _mm512_setzero_si512 (), 2242 1.1 mrg (__mmask32) __U); 2243 1.1 mrg } 2244 1.1 mrg 2245 1.1 mrg extern __inline __m512i 2246 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2247 1.1 mrg _mm512_srlv_epi16 (__m512i __A, __m512i __B) 2248 1.1 mrg { 2249 1.1 mrg return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A, 2250 1.1 mrg (__v32hi) __B, 2251 1.1 mrg (__v32hi) 2252 1.3 mrg _mm512_setzero_si512 (), 2253 1.1 mrg (__mmask32) -1); 2254 1.1 mrg } 2255 1.1 mrg 2256 1.1 mrg extern __inline __m512i 2257 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2258 1.1 mrg _mm512_mask_srlv_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 2259 1.1 mrg __m512i __B) 2260 1.1 mrg { 2261 1.1 mrg return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A, 2262 1.1 mrg (__v32hi) __B, 2263 1.1 mrg (__v32hi) __W, 2264 1.1 mrg (__mmask32) __U); 2265 1.1 mrg } 2266 1.1 mrg 2267 1.1 mrg extern __inline __m512i 2268 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2269 1.1 mrg _mm512_maskz_srlv_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 2270 1.1 mrg { 2271 1.1 mrg return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A, 2272 1.1 mrg (__v32hi) __B, 2273 1.1 mrg (__v32hi) 2274 1.3 mrg _mm512_setzero_si512 (), 2275 1.1 mrg (__mmask32) __U); 2276 1.1 mrg } 2277 1.1 mrg 2278 1.1 mrg extern __inline __m512i 2279 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2280 1.1 mrg _mm512_sllv_epi16 (__m512i __A, __m512i __B) 2281 1.1 mrg { 2282 1.1 mrg return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A, 2283 1.1 mrg (__v32hi) __B, 2284 1.1 mrg (__v32hi) 2285 1.3 mrg _mm512_setzero_si512 (), 2286 1.1 mrg (__mmask32) -1); 2287 1.1 mrg } 2288 1.1 mrg 2289 1.1 mrg extern __inline __m512i 2290 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2291 1.1 mrg _mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 2292 1.1 mrg __m512i __B) 2293 1.1 mrg { 2294 1.1 mrg return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A, 2295 1.1 mrg (__v32hi) __B, 2296 1.1 mrg (__v32hi) __W, 2297 1.1 mrg (__mmask32) __U); 2298 1.1 mrg } 2299 1.1 mrg 2300 1.1 mrg extern __inline __m512i 2301 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2302 1.1 mrg _mm512_maskz_sllv_epi16 (__mmask32 __U, __m512i __A, __m512i __B) 2303 1.1 mrg { 2304 1.1 mrg return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A, 2305 1.1 mrg (__v32hi) __B, 2306 1.1 mrg (__v32hi) 2307 1.3 mrg _mm512_setzero_si512 (), 2308 1.1 mrg (__mmask32) __U); 2309 1.1 mrg } 2310 1.1 mrg 2311 1.1 mrg extern __inline __m512i 2312 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2313 1.1 mrg _mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A, 2314 1.1 mrg __m512i __B) 2315 1.1 mrg { 2316 1.1 mrg return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A, 2317 1.1 mrg (__v32hi) __B, 2318 1.1 mrg (__v64qi) __W, 2319 1.1 mrg (__mmask64) __M); 2320 1.1 mrg } 2321 1.1 mrg 2322 1.1 mrg extern __inline __m512i 2323 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2324 1.1 mrg _mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B) 2325 1.1 mrg { 2326 1.1 mrg return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A, 2327 1.1 mrg (__v32hi) __B, 2328 1.1 mrg (__v64qi) 2329 1.3 mrg _mm512_setzero_si512 (), 2330 1.1 mrg __M); 2331 1.1 mrg } 2332 1.1 mrg 2333 1.1 mrg extern __inline __m512i 2334 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2335 1.1 mrg _mm512_packus_epi16 (__m512i __A, __m512i __B) 2336 1.1 mrg { 2337 1.1 mrg return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A, 2338 1.1 mrg (__v32hi) __B, 2339 1.1 mrg (__v64qi) 2340 1.3 mrg _mm512_setzero_si512 (), 2341 1.1 mrg (__mmask64) -1); 2342 1.1 mrg } 2343 1.1 mrg 2344 1.1 mrg extern __inline __m512i 2345 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2346 1.1 mrg _mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A, 2347 1.1 mrg __m512i __B) 2348 1.1 mrg { 2349 1.1 mrg return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A, 2350 1.1 mrg (__v32hi) __B, 2351 1.1 mrg (__v64qi) __W, 2352 1.1 mrg (__mmask64) __M); 2353 1.1 mrg } 2354 1.1 mrg 2355 1.1 mrg extern __inline __m512i 2356 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2357 1.1 mrg _mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B) 2358 1.1 mrg { 2359 1.1 mrg return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A, 2360 1.1 mrg (__v32hi) __B, 2361 1.1 mrg (__v64qi) 2362 1.3 mrg _mm512_setzero_si512 (), 2363 1.1 mrg (__mmask64) __M); 2364 1.1 mrg } 2365 1.1 mrg 2366 1.1 mrg extern __inline __m512i 2367 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2368 1.1 mrg _mm512_abs_epi8 (__m512i __A) 2369 1.1 mrg { 2370 1.1 mrg return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A, 2371 1.1 mrg (__v64qi) 2372 1.3 mrg _mm512_setzero_si512 (), 2373 1.1 mrg (__mmask64) -1); 2374 1.1 mrg } 2375 1.1 mrg 2376 1.1 mrg extern __inline __m512i 2377 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2378 1.1 mrg _mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A) 2379 1.1 mrg { 2380 1.1 mrg return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A, 2381 1.1 mrg (__v64qi) __W, 2382 1.1 mrg (__mmask64) __U); 2383 1.1 mrg } 2384 1.1 mrg 2385 1.1 mrg extern __inline __m512i 2386 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2387 1.1 mrg _mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A) 2388 1.1 mrg { 2389 1.1 mrg return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A, 2390 1.1 mrg (__v64qi) 2391 1.3 mrg _mm512_setzero_si512 (), 2392 1.1 mrg (__mmask64) __U); 2393 1.1 mrg } 2394 1.1 mrg 2395 1.1 mrg extern __inline __m512i 2396 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2397 1.1 mrg _mm512_abs_epi16 (__m512i __A) 2398 1.1 mrg { 2399 1.1 mrg return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A, 2400 1.1 mrg (__v32hi) 2401 1.3 mrg _mm512_setzero_si512 (), 2402 1.1 mrg (__mmask32) -1); 2403 1.1 mrg } 2404 1.1 mrg 2405 1.1 mrg extern __inline __m512i 2406 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2407 1.1 mrg _mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A) 2408 1.1 mrg { 2409 1.1 mrg return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A, 2410 1.1 mrg (__v32hi) __W, 2411 1.1 mrg (__mmask32) __U); 2412 1.1 mrg } 2413 1.1 mrg 2414 1.1 mrg extern __inline __m512i 2415 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2416 1.1 mrg _mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A) 2417 1.1 mrg { 2418 1.1 mrg return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A, 2419 1.1 mrg (__v32hi) 2420 1.3 mrg _mm512_setzero_si512 (), 2421 1.1 mrg (__mmask32) __U); 2422 1.1 mrg } 2423 1.1 mrg 2424 1.1 mrg extern __inline __mmask64 2425 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2426 1.1 mrg _mm512_mask_cmpneq_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y) 2427 1.1 mrg { 2428 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 2429 1.1 mrg (__v64qi) __Y, 4, 2430 1.1 mrg (__mmask64) __M); 2431 1.1 mrg } 2432 1.1 mrg 2433 1.1 mrg extern __inline __mmask64 2434 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2435 1.1 mrg _mm512_mask_cmplt_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y) 2436 1.1 mrg { 2437 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 2438 1.1 mrg (__v64qi) __Y, 1, 2439 1.1 mrg (__mmask64) __M); 2440 1.1 mrg } 2441 1.1 mrg 2442 1.1 mrg extern __inline __mmask64 2443 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2444 1.1 mrg _mm512_mask_cmpge_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y) 2445 1.1 mrg { 2446 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 2447 1.1 mrg (__v64qi) __Y, 5, 2448 1.1 mrg (__mmask64) __M); 2449 1.1 mrg } 2450 1.1 mrg 2451 1.1 mrg extern __inline __mmask64 2452 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2453 1.1 mrg _mm512_mask_cmple_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y) 2454 1.1 mrg { 2455 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 2456 1.1 mrg (__v64qi) __Y, 2, 2457 1.1 mrg (__mmask64) __M); 2458 1.1 mrg } 2459 1.1 mrg 2460 1.1 mrg extern __inline __mmask32 2461 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2462 1.1 mrg _mm512_mask_cmpneq_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y) 2463 1.1 mrg { 2464 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 2465 1.1 mrg (__v32hi) __Y, 4, 2466 1.1 mrg (__mmask32) __M); 2467 1.1 mrg } 2468 1.1 mrg 2469 1.1 mrg extern __inline __mmask32 2470 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2471 1.1 mrg _mm512_mask_cmplt_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y) 2472 1.1 mrg { 2473 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 2474 1.1 mrg (__v32hi) __Y, 1, 2475 1.1 mrg (__mmask32) __M); 2476 1.1 mrg } 2477 1.1 mrg 2478 1.1 mrg extern __inline __mmask32 2479 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2480 1.1 mrg _mm512_mask_cmpge_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y) 2481 1.1 mrg { 2482 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 2483 1.1 mrg (__v32hi) __Y, 5, 2484 1.1 mrg (__mmask32) __M); 2485 1.1 mrg } 2486 1.1 mrg 2487 1.1 mrg extern __inline __mmask32 2488 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2489 1.1 mrg _mm512_mask_cmple_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y) 2490 1.1 mrg { 2491 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 2492 1.1 mrg (__v32hi) __Y, 2, 2493 1.1 mrg (__mmask32) __M); 2494 1.1 mrg } 2495 1.1 mrg 2496 1.1 mrg extern __inline __mmask64 2497 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2498 1.1 mrg _mm512_mask_cmpneq_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y) 2499 1.1 mrg { 2500 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 2501 1.1 mrg (__v64qi) __Y, 4, 2502 1.1 mrg (__mmask64) __M); 2503 1.1 mrg } 2504 1.1 mrg 2505 1.1 mrg extern __inline __mmask64 2506 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2507 1.1 mrg _mm512_mask_cmplt_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y) 2508 1.1 mrg { 2509 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 2510 1.1 mrg (__v64qi) __Y, 1, 2511 1.1 mrg (__mmask64) __M); 2512 1.1 mrg } 2513 1.1 mrg 2514 1.1 mrg extern __inline __mmask64 2515 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2516 1.1 mrg _mm512_mask_cmpge_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y) 2517 1.1 mrg { 2518 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 2519 1.1 mrg (__v64qi) __Y, 5, 2520 1.1 mrg (__mmask64) __M); 2521 1.1 mrg } 2522 1.1 mrg 2523 1.1 mrg extern __inline __mmask64 2524 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2525 1.1 mrg _mm512_mask_cmple_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y) 2526 1.1 mrg { 2527 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 2528 1.1 mrg (__v64qi) __Y, 2, 2529 1.1 mrg (__mmask64) __M); 2530 1.1 mrg } 2531 1.1 mrg 2532 1.1 mrg extern __inline __mmask32 2533 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2534 1.1 mrg _mm512_mask_cmpneq_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y) 2535 1.1 mrg { 2536 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 2537 1.1 mrg (__v32hi) __Y, 4, 2538 1.1 mrg (__mmask32) __M); 2539 1.1 mrg } 2540 1.1 mrg 2541 1.1 mrg extern __inline __mmask32 2542 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2543 1.1 mrg _mm512_mask_cmplt_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y) 2544 1.1 mrg { 2545 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 2546 1.1 mrg (__v32hi) __Y, 1, 2547 1.1 mrg (__mmask32) __M); 2548 1.1 mrg } 2549 1.1 mrg 2550 1.1 mrg extern __inline __mmask32 2551 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2552 1.1 mrg _mm512_mask_cmpge_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y) 2553 1.1 mrg { 2554 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 2555 1.1 mrg (__v32hi) __Y, 5, 2556 1.1 mrg (__mmask32) __M); 2557 1.1 mrg } 2558 1.1 mrg 2559 1.1 mrg extern __inline __mmask32 2560 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2561 1.1 mrg _mm512_mask_cmple_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y) 2562 1.1 mrg { 2563 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 2564 1.1 mrg (__v32hi) __Y, 2, 2565 1.1 mrg (__mmask32) __M); 2566 1.1 mrg } 2567 1.1 mrg 2568 1.1 mrg extern __inline __mmask64 2569 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2570 1.1 mrg _mm512_cmpneq_epu8_mask (__m512i __X, __m512i __Y) 2571 1.1 mrg { 2572 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 2573 1.1 mrg (__v64qi) __Y, 4, 2574 1.3 mrg (__mmask64) -1); 2575 1.1 mrg } 2576 1.1 mrg 2577 1.1 mrg extern __inline __mmask64 2578 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2579 1.1 mrg _mm512_cmplt_epu8_mask (__m512i __X, __m512i __Y) 2580 1.1 mrg { 2581 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 2582 1.1 mrg (__v64qi) __Y, 1, 2583 1.3 mrg (__mmask64) -1); 2584 1.1 mrg } 2585 1.1 mrg 2586 1.1 mrg extern __inline __mmask64 2587 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2588 1.1 mrg _mm512_cmpge_epu8_mask (__m512i __X, __m512i __Y) 2589 1.1 mrg { 2590 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 2591 1.1 mrg (__v64qi) __Y, 5, 2592 1.3 mrg (__mmask64) -1); 2593 1.1 mrg } 2594 1.1 mrg 2595 1.1 mrg extern __inline __mmask64 2596 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2597 1.1 mrg _mm512_cmple_epu8_mask (__m512i __X, __m512i __Y) 2598 1.1 mrg { 2599 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 2600 1.1 mrg (__v64qi) __Y, 2, 2601 1.3 mrg (__mmask64) -1); 2602 1.1 mrg } 2603 1.1 mrg 2604 1.1 mrg extern __inline __mmask32 2605 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2606 1.1 mrg _mm512_cmpneq_epu16_mask (__m512i __X, __m512i __Y) 2607 1.1 mrg { 2608 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 2609 1.1 mrg (__v32hi) __Y, 4, 2610 1.3 mrg (__mmask32) -1); 2611 1.1 mrg } 2612 1.1 mrg 2613 1.1 mrg extern __inline __mmask32 2614 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2615 1.1 mrg _mm512_cmplt_epu16_mask (__m512i __X, __m512i __Y) 2616 1.1 mrg { 2617 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 2618 1.1 mrg (__v32hi) __Y, 1, 2619 1.3 mrg (__mmask32) -1); 2620 1.1 mrg } 2621 1.1 mrg 2622 1.1 mrg extern __inline __mmask32 2623 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2624 1.1 mrg _mm512_cmpge_epu16_mask (__m512i __X, __m512i __Y) 2625 1.1 mrg { 2626 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 2627 1.1 mrg (__v32hi) __Y, 5, 2628 1.3 mrg (__mmask32) -1); 2629 1.1 mrg } 2630 1.1 mrg 2631 1.1 mrg extern __inline __mmask32 2632 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2633 1.1 mrg _mm512_cmple_epu16_mask (__m512i __X, __m512i __Y) 2634 1.1 mrg { 2635 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 2636 1.1 mrg (__v32hi) __Y, 2, 2637 1.3 mrg (__mmask32) -1); 2638 1.1 mrg } 2639 1.1 mrg 2640 1.1 mrg extern __inline __mmask64 2641 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2642 1.1 mrg _mm512_cmpneq_epi8_mask (__m512i __X, __m512i __Y) 2643 1.1 mrg { 2644 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 2645 1.1 mrg (__v64qi) __Y, 4, 2646 1.3 mrg (__mmask64) -1); 2647 1.1 mrg } 2648 1.1 mrg 2649 1.1 mrg extern __inline __mmask64 2650 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2651 1.1 mrg _mm512_cmplt_epi8_mask (__m512i __X, __m512i __Y) 2652 1.1 mrg { 2653 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 2654 1.1 mrg (__v64qi) __Y, 1, 2655 1.3 mrg (__mmask64) -1); 2656 1.1 mrg } 2657 1.1 mrg 2658 1.1 mrg extern __inline __mmask64 2659 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2660 1.1 mrg _mm512_cmpge_epi8_mask (__m512i __X, __m512i __Y) 2661 1.1 mrg { 2662 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 2663 1.1 mrg (__v64qi) __Y, 5, 2664 1.3 mrg (__mmask64) -1); 2665 1.1 mrg } 2666 1.1 mrg 2667 1.1 mrg extern __inline __mmask64 2668 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2669 1.1 mrg _mm512_cmple_epi8_mask (__m512i __X, __m512i __Y) 2670 1.1 mrg { 2671 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 2672 1.1 mrg (__v64qi) __Y, 2, 2673 1.3 mrg (__mmask64) -1); 2674 1.1 mrg } 2675 1.1 mrg 2676 1.1 mrg extern __inline __mmask32 2677 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2678 1.1 mrg _mm512_cmpneq_epi16_mask (__m512i __X, __m512i __Y) 2679 1.1 mrg { 2680 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 2681 1.1 mrg (__v32hi) __Y, 4, 2682 1.3 mrg (__mmask32) -1); 2683 1.1 mrg } 2684 1.1 mrg 2685 1.1 mrg extern __inline __mmask32 2686 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2687 1.1 mrg _mm512_cmplt_epi16_mask (__m512i __X, __m512i __Y) 2688 1.1 mrg { 2689 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 2690 1.1 mrg (__v32hi) __Y, 1, 2691 1.3 mrg (__mmask32) -1); 2692 1.1 mrg } 2693 1.1 mrg 2694 1.1 mrg extern __inline __mmask32 2695 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2696 1.1 mrg _mm512_cmpge_epi16_mask (__m512i __X, __m512i __Y) 2697 1.1 mrg { 2698 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 2699 1.1 mrg (__v32hi) __Y, 5, 2700 1.3 mrg (__mmask32) -1); 2701 1.1 mrg } 2702 1.1 mrg 2703 1.1 mrg extern __inline __mmask32 2704 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2705 1.1 mrg _mm512_cmple_epi16_mask (__m512i __X, __m512i __Y) 2706 1.1 mrg { 2707 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 2708 1.1 mrg (__v32hi) __Y, 2, 2709 1.3 mrg (__mmask32) -1); 2710 1.3 mrg } 2711 1.3 mrg 2712 1.3 mrg extern __inline __m512i 2713 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2714 1.3 mrg _mm512_packs_epi32 (__m512i __A, __m512i __B) 2715 1.3 mrg { 2716 1.3 mrg return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A, 2717 1.3 mrg (__v16si) __B, 2718 1.3 mrg (__v32hi) 2719 1.3 mrg _mm512_setzero_si512 (), 2720 1.3 mrg (__mmask32) -1); 2721 1.3 mrg } 2722 1.3 mrg 2723 1.3 mrg extern __inline __m512i 2724 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2725 1.3 mrg _mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B) 2726 1.3 mrg { 2727 1.3 mrg return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A, 2728 1.3 mrg (__v16si) __B, 2729 1.3 mrg (__v32hi) 2730 1.3 mrg _mm512_setzero_si512 (), 2731 1.3 mrg __M); 2732 1.3 mrg } 2733 1.3 mrg 2734 1.3 mrg extern __inline __m512i 2735 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2736 1.3 mrg _mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A, 2737 1.3 mrg __m512i __B) 2738 1.3 mrg { 2739 1.3 mrg return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A, 2740 1.3 mrg (__v16si) __B, 2741 1.3 mrg (__v32hi) __W, 2742 1.3 mrg __M); 2743 1.3 mrg } 2744 1.3 mrg 2745 1.3 mrg extern __inline __m512i 2746 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2747 1.3 mrg _mm512_packus_epi32 (__m512i __A, __m512i __B) 2748 1.3 mrg { 2749 1.3 mrg return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A, 2750 1.3 mrg (__v16si) __B, 2751 1.3 mrg (__v32hi) 2752 1.3 mrg _mm512_setzero_si512 (), 2753 1.3 mrg (__mmask32) -1); 2754 1.3 mrg } 2755 1.3 mrg 2756 1.3 mrg extern __inline __m512i 2757 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2758 1.3 mrg _mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B) 2759 1.3 mrg { 2760 1.3 mrg return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A, 2761 1.3 mrg (__v16si) __B, 2762 1.3 mrg (__v32hi) 2763 1.3 mrg _mm512_setzero_si512 (), 2764 1.3 mrg __M); 2765 1.3 mrg } 2766 1.3 mrg 2767 1.3 mrg extern __inline __m512i 2768 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2769 1.3 mrg _mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A, 2770 1.3 mrg __m512i __B) 2771 1.3 mrg { 2772 1.3 mrg return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A, 2773 1.3 mrg (__v16si) __B, 2774 1.3 mrg (__v32hi) __W, 2775 1.3 mrg __M); 2776 1.1 mrg } 2777 1.1 mrg 2778 1.1 mrg #ifdef __OPTIMIZE__ 2779 1.3 mrg extern __inline __mmask32 2780 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2781 1.3 mrg _kshiftli_mask32 (__mmask32 __A, unsigned int __B) 2782 1.3 mrg { 2783 1.3 mrg return (__mmask32) __builtin_ia32_kshiftlisi ((__mmask32) __A, 2784 1.3 mrg (__mmask8) __B); 2785 1.3 mrg } 2786 1.3 mrg 2787 1.3 mrg extern __inline __mmask64 2788 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2789 1.3 mrg _kshiftli_mask64 (__mmask64 __A, unsigned int __B) 2790 1.3 mrg { 2791 1.3 mrg return (__mmask64) __builtin_ia32_kshiftlidi ((__mmask64) __A, 2792 1.3 mrg (__mmask8) __B); 2793 1.3 mrg } 2794 1.3 mrg 2795 1.3 mrg extern __inline __mmask32 2796 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2797 1.3 mrg _kshiftri_mask32 (__mmask32 __A, unsigned int __B) 2798 1.3 mrg { 2799 1.3 mrg return (__mmask32) __builtin_ia32_kshiftrisi ((__mmask32) __A, 2800 1.3 mrg (__mmask8) __B); 2801 1.3 mrg } 2802 1.3 mrg 2803 1.3 mrg extern __inline __mmask64 2804 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2805 1.3 mrg _kshiftri_mask64 (__mmask64 __A, unsigned int __B) 2806 1.3 mrg { 2807 1.3 mrg return (__mmask64) __builtin_ia32_kshiftridi ((__mmask64) __A, 2808 1.3 mrg (__mmask8) __B); 2809 1.3 mrg } 2810 1.3 mrg 2811 1.1 mrg extern __inline __m512i 2812 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2813 1.1 mrg _mm512_alignr_epi8 (__m512i __A, __m512i __B, const int __N) 2814 1.1 mrg { 2815 1.1 mrg return (__m512i) __builtin_ia32_palignr512 ((__v8di) __A, 2816 1.1 mrg (__v8di) __B, __N * 8); 2817 1.1 mrg } 2818 1.1 mrg 2819 1.1 mrg extern __inline __m512i 2820 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2821 1.1 mrg _mm512_mask_alignr_epi8 (__m512i __W, __mmask64 __U, __m512i __A, 2822 1.1 mrg __m512i __B, const int __N) 2823 1.1 mrg { 2824 1.1 mrg return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A, 2825 1.1 mrg (__v8di) __B, 2826 1.1 mrg __N * 8, 2827 1.1 mrg (__v8di) __W, 2828 1.1 mrg (__mmask64) __U); 2829 1.1 mrg } 2830 1.1 mrg 2831 1.1 mrg extern __inline __m512i 2832 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2833 1.1 mrg _mm512_maskz_alignr_epi8 (__mmask64 __U, __m512i __A, __m512i __B, 2834 1.1 mrg const int __N) 2835 1.1 mrg { 2836 1.1 mrg return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A, 2837 1.1 mrg (__v8di) __B, 2838 1.1 mrg __N * 8, 2839 1.1 mrg (__v8di) 2840 1.1 mrg _mm512_setzero_si512 (), 2841 1.1 mrg (__mmask64) __U); 2842 1.1 mrg } 2843 1.1 mrg 2844 1.1 mrg extern __inline __m512i 2845 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2846 1.1 mrg _mm512_dbsad_epu8 (__m512i __A, __m512i __B, const int __imm) 2847 1.1 mrg { 2848 1.1 mrg return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A, 2849 1.1 mrg (__v64qi) __B, 2850 1.1 mrg __imm, 2851 1.1 mrg (__v32hi) 2852 1.3 mrg _mm512_setzero_si512 (), 2853 1.1 mrg (__mmask32) -1); 2854 1.1 mrg } 2855 1.1 mrg 2856 1.1 mrg extern __inline __m512i 2857 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2858 1.1 mrg _mm512_mask_dbsad_epu8 (__m512i __W, __mmask32 __U, __m512i __A, 2859 1.1 mrg __m512i __B, const int __imm) 2860 1.1 mrg { 2861 1.1 mrg return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A, 2862 1.1 mrg (__v64qi) __B, 2863 1.1 mrg __imm, 2864 1.1 mrg (__v32hi) __W, 2865 1.1 mrg (__mmask32) __U); 2866 1.1 mrg } 2867 1.1 mrg 2868 1.1 mrg extern __inline __m512i 2869 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2870 1.1 mrg _mm512_maskz_dbsad_epu8 (__mmask32 __U, __m512i __A, __m512i __B, 2871 1.1 mrg const int __imm) 2872 1.1 mrg { 2873 1.1 mrg return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A, 2874 1.1 mrg (__v64qi) __B, 2875 1.1 mrg __imm, 2876 1.1 mrg (__v32hi) 2877 1.3 mrg _mm512_setzero_si512 (), 2878 1.1 mrg (__mmask32) __U); 2879 1.1 mrg } 2880 1.1 mrg 2881 1.1 mrg extern __inline __m512i 2882 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2883 1.1 mrg _mm512_srli_epi16 (__m512i __A, const int __imm) 2884 1.1 mrg { 2885 1.1 mrg return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm, 2886 1.1 mrg (__v32hi) 2887 1.3 mrg _mm512_setzero_si512 (), 2888 1.1 mrg (__mmask32) -1); 2889 1.1 mrg } 2890 1.1 mrg 2891 1.1 mrg extern __inline __m512i 2892 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2893 1.1 mrg _mm512_mask_srli_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 2894 1.1 mrg const int __imm) 2895 1.1 mrg { 2896 1.1 mrg return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm, 2897 1.1 mrg (__v32hi) __W, 2898 1.1 mrg (__mmask32) __U); 2899 1.1 mrg } 2900 1.1 mrg 2901 1.1 mrg extern __inline __m512i 2902 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2903 1.1 mrg _mm512_maskz_srli_epi16 (__mmask32 __U, __m512i __A, const int __imm) 2904 1.1 mrg { 2905 1.1 mrg return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm, 2906 1.1 mrg (__v32hi) 2907 1.3 mrg _mm512_setzero_si512 (), 2908 1.1 mrg (__mmask32) __U); 2909 1.1 mrg } 2910 1.1 mrg 2911 1.1 mrg extern __inline __m512i 2912 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2913 1.1 mrg _mm512_slli_epi16 (__m512i __A, const int __B) 2914 1.1 mrg { 2915 1.1 mrg return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B, 2916 1.1 mrg (__v32hi) 2917 1.3 mrg _mm512_setzero_si512 (), 2918 1.1 mrg (__mmask32) -1); 2919 1.1 mrg } 2920 1.1 mrg 2921 1.1 mrg extern __inline __m512i 2922 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2923 1.1 mrg _mm512_mask_slli_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 2924 1.1 mrg const int __B) 2925 1.1 mrg { 2926 1.1 mrg return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B, 2927 1.1 mrg (__v32hi) __W, 2928 1.1 mrg (__mmask32) __U); 2929 1.1 mrg } 2930 1.1 mrg 2931 1.1 mrg extern __inline __m512i 2932 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2933 1.1 mrg _mm512_maskz_slli_epi16 (__mmask32 __U, __m512i __A, const int __B) 2934 1.1 mrg { 2935 1.1 mrg return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B, 2936 1.1 mrg (__v32hi) 2937 1.3 mrg _mm512_setzero_si512 (), 2938 1.1 mrg (__mmask32) __U); 2939 1.1 mrg } 2940 1.1 mrg 2941 1.1 mrg extern __inline __m512i 2942 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2943 1.1 mrg _mm512_shufflehi_epi16 (__m512i __A, const int __imm) 2944 1.1 mrg { 2945 1.1 mrg return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A, 2946 1.1 mrg __imm, 2947 1.1 mrg (__v32hi) 2948 1.3 mrg _mm512_setzero_si512 (), 2949 1.1 mrg (__mmask32) -1); 2950 1.1 mrg } 2951 1.1 mrg 2952 1.1 mrg extern __inline __m512i 2953 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2954 1.1 mrg _mm512_mask_shufflehi_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 2955 1.1 mrg const int __imm) 2956 1.1 mrg { 2957 1.1 mrg return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A, 2958 1.1 mrg __imm, 2959 1.1 mrg (__v32hi) __W, 2960 1.1 mrg (__mmask32) __U); 2961 1.1 mrg } 2962 1.1 mrg 2963 1.1 mrg extern __inline __m512i 2964 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2965 1.1 mrg _mm512_maskz_shufflehi_epi16 (__mmask32 __U, __m512i __A, 2966 1.1 mrg const int __imm) 2967 1.1 mrg { 2968 1.1 mrg return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A, 2969 1.1 mrg __imm, 2970 1.1 mrg (__v32hi) 2971 1.3 mrg _mm512_setzero_si512 (), 2972 1.1 mrg (__mmask32) __U); 2973 1.1 mrg } 2974 1.1 mrg 2975 1.1 mrg extern __inline __m512i 2976 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2977 1.1 mrg _mm512_shufflelo_epi16 (__m512i __A, const int __imm) 2978 1.1 mrg { 2979 1.1 mrg return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A, 2980 1.1 mrg __imm, 2981 1.1 mrg (__v32hi) 2982 1.3 mrg _mm512_setzero_si512 (), 2983 1.1 mrg (__mmask32) -1); 2984 1.1 mrg } 2985 1.1 mrg 2986 1.1 mrg extern __inline __m512i 2987 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2988 1.1 mrg _mm512_mask_shufflelo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 2989 1.1 mrg const int __imm) 2990 1.1 mrg { 2991 1.1 mrg return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A, 2992 1.1 mrg __imm, 2993 1.1 mrg (__v32hi) __W, 2994 1.1 mrg (__mmask32) __U); 2995 1.1 mrg } 2996 1.1 mrg 2997 1.1 mrg extern __inline __m512i 2998 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 2999 1.1 mrg _mm512_maskz_shufflelo_epi16 (__mmask32 __U, __m512i __A, 3000 1.1 mrg const int __imm) 3001 1.1 mrg { 3002 1.1 mrg return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A, 3003 1.1 mrg __imm, 3004 1.1 mrg (__v32hi) 3005 1.3 mrg _mm512_setzero_si512 (), 3006 1.1 mrg (__mmask32) __U); 3007 1.1 mrg } 3008 1.1 mrg 3009 1.1 mrg extern __inline __m512i 3010 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3011 1.1 mrg _mm512_srai_epi16 (__m512i __A, const int __imm) 3012 1.1 mrg { 3013 1.1 mrg return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm, 3014 1.1 mrg (__v32hi) 3015 1.3 mrg _mm512_setzero_si512 (), 3016 1.1 mrg (__mmask32) -1); 3017 1.1 mrg } 3018 1.1 mrg 3019 1.1 mrg extern __inline __m512i 3020 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3021 1.1 mrg _mm512_mask_srai_epi16 (__m512i __W, __mmask32 __U, __m512i __A, 3022 1.1 mrg const int __imm) 3023 1.1 mrg { 3024 1.1 mrg return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm, 3025 1.1 mrg (__v32hi) __W, 3026 1.1 mrg (__mmask32) __U); 3027 1.1 mrg } 3028 1.1 mrg 3029 1.1 mrg extern __inline __m512i 3030 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3031 1.1 mrg _mm512_maskz_srai_epi16 (__mmask32 __U, __m512i __A, const int __imm) 3032 1.1 mrg { 3033 1.1 mrg return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm, 3034 1.1 mrg (__v32hi) 3035 1.3 mrg _mm512_setzero_si512 (), 3036 1.1 mrg (__mmask32) __U); 3037 1.1 mrg } 3038 1.1 mrg 3039 1.1 mrg extern __inline __m512i 3040 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3041 1.1 mrg _mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W) 3042 1.1 mrg { 3043 1.1 mrg return (__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) __A, 3044 1.1 mrg (__v32hi) __W, 3045 1.1 mrg (__mmask32) __U); 3046 1.1 mrg } 3047 1.1 mrg 3048 1.1 mrg extern __inline __m512i 3049 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3050 1.1 mrg _mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W) 3051 1.1 mrg { 3052 1.1 mrg return (__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) __A, 3053 1.1 mrg (__v64qi) __W, 3054 1.1 mrg (__mmask64) __U); 3055 1.1 mrg } 3056 1.1 mrg 3057 1.1 mrg extern __inline __mmask32 3058 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3059 1.1 mrg _mm512_mask_cmp_epi16_mask (__mmask32 __U, __m512i __X, __m512i __Y, 3060 1.1 mrg const int __P) 3061 1.1 mrg { 3062 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 3063 1.1 mrg (__v32hi) __Y, __P, 3064 1.1 mrg (__mmask32) __U); 3065 1.1 mrg } 3066 1.1 mrg 3067 1.1 mrg extern __inline __mmask32 3068 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3069 1.1 mrg _mm512_cmp_epi16_mask (__m512i __X, __m512i __Y, const int __P) 3070 1.1 mrg { 3071 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X, 3072 1.1 mrg (__v32hi) __Y, __P, 3073 1.1 mrg (__mmask32) -1); 3074 1.1 mrg } 3075 1.1 mrg 3076 1.1 mrg extern __inline __mmask64 3077 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3078 1.4 mrg _mm512_mask_cmp_epi8_mask (__mmask64 __U, __m512i __X, __m512i __Y, 3079 1.1 mrg const int __P) 3080 1.1 mrg { 3081 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 3082 1.1 mrg (__v64qi) __Y, __P, 3083 1.1 mrg (__mmask64) __U); 3084 1.1 mrg } 3085 1.1 mrg 3086 1.1 mrg extern __inline __mmask64 3087 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3088 1.1 mrg _mm512_cmp_epi8_mask (__m512i __X, __m512i __Y, const int __P) 3089 1.1 mrg { 3090 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X, 3091 1.1 mrg (__v64qi) __Y, __P, 3092 1.1 mrg (__mmask64) -1); 3093 1.1 mrg } 3094 1.1 mrg 3095 1.1 mrg extern __inline __mmask32 3096 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3097 1.1 mrg _mm512_mask_cmp_epu16_mask (__mmask32 __U, __m512i __X, __m512i __Y, 3098 1.1 mrg const int __P) 3099 1.1 mrg { 3100 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 3101 1.1 mrg (__v32hi) __Y, __P, 3102 1.1 mrg (__mmask32) __U); 3103 1.1 mrg } 3104 1.1 mrg 3105 1.1 mrg extern __inline __mmask32 3106 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3107 1.1 mrg _mm512_cmp_epu16_mask (__m512i __X, __m512i __Y, const int __P) 3108 1.1 mrg { 3109 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X, 3110 1.1 mrg (__v32hi) __Y, __P, 3111 1.1 mrg (__mmask32) -1); 3112 1.1 mrg } 3113 1.1 mrg 3114 1.1 mrg extern __inline __mmask64 3115 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3116 1.4 mrg _mm512_mask_cmp_epu8_mask (__mmask64 __U, __m512i __X, __m512i __Y, 3117 1.1 mrg const int __P) 3118 1.1 mrg { 3119 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 3120 1.1 mrg (__v64qi) __Y, __P, 3121 1.1 mrg (__mmask64) __U); 3122 1.1 mrg } 3123 1.1 mrg 3124 1.1 mrg extern __inline __mmask64 3125 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3126 1.1 mrg _mm512_cmp_epu8_mask (__m512i __X, __m512i __Y, const int __P) 3127 1.1 mrg { 3128 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X, 3129 1.1 mrg (__v64qi) __Y, __P, 3130 1.1 mrg (__mmask64) -1); 3131 1.1 mrg } 3132 1.1 mrg 3133 1.1 mrg extern __inline __m512i 3134 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3135 1.1 mrg _mm512_bslli_epi128 (__m512i __A, const int __N) 3136 1.1 mrg { 3137 1.1 mrg return (__m512i) __builtin_ia32_pslldq512 (__A, __N * 8); 3138 1.1 mrg } 3139 1.1 mrg 3140 1.1 mrg extern __inline __m512i 3141 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) 3142 1.1 mrg _mm512_bsrli_epi128 (__m512i __A, const int __N) 3143 1.1 mrg { 3144 1.1 mrg return (__m512i) __builtin_ia32_psrldq512 (__A, __N * 8); 3145 1.1 mrg } 3146 1.1 mrg 3147 1.1 mrg #else 3148 1.3 mrg #define _kshiftli_mask32(X, Y) \ 3149 1.3 mrg ((__mmask32) __builtin_ia32_kshiftlisi ((__mmask32)(X), (__mmask8)(Y))) 3150 1.3 mrg 3151 1.3 mrg #define _kshiftli_mask64(X, Y) \ 3152 1.3 mrg ((__mmask64) __builtin_ia32_kshiftlidi ((__mmask64)(X), (__mmask8)(Y))) 3153 1.3 mrg 3154 1.3 mrg #define _kshiftri_mask32(X, Y) \ 3155 1.3 mrg ((__mmask32) __builtin_ia32_kshiftrisi ((__mmask32)(X), (__mmask8)(Y))) 3156 1.3 mrg 3157 1.3 mrg #define _kshiftri_mask64(X, Y) \ 3158 1.3 mrg ((__mmask64) __builtin_ia32_kshiftridi ((__mmask64)(X), (__mmask8)(Y))) 3159 1.3 mrg 3160 1.1 mrg #define _mm512_alignr_epi8(X, Y, N) \ 3161 1.1 mrg ((__m512i) __builtin_ia32_palignr512 ((__v8di)(__m512i)(X), \ 3162 1.1 mrg (__v8di)(__m512i)(Y), \ 3163 1.6 mrg (int)((N) * 8))) 3164 1.1 mrg 3165 1.1 mrg #define _mm512_mask_alignr_epi8(W, U, X, Y, N) \ 3166 1.1 mrg ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X), \ 3167 1.6 mrg (__v8di)(__m512i)(Y), (int)((N) * 8), \ 3168 1.1 mrg (__v8di)(__m512i)(W), (__mmask64)(U))) 3169 1.1 mrg 3170 1.1 mrg #define _mm512_maskz_alignr_epi8(U, X, Y, N) \ 3171 1.1 mrg ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X), \ 3172 1.6 mrg (__v8di)(__m512i)(Y), (int)((N) * 8), \ 3173 1.3 mrg (__v8di)(__m512i) \ 3174 1.3 mrg _mm512_setzero_si512 (), \ 3175 1.3 mrg (__mmask64)(U))) 3176 1.1 mrg 3177 1.1 mrg #define _mm512_dbsad_epu8(X, Y, C) \ 3178 1.1 mrg ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \ 3179 1.1 mrg (__v64qi)(__m512i) (Y), (int) (C), \ 3180 1.3 mrg (__v32hi)(__m512i) \ 3181 1.3 mrg _mm512_setzero_si512 (), \ 3182 1.1 mrg (__mmask32)-1)) 3183 1.1 mrg 3184 1.1 mrg #define _mm512_mask_dbsad_epu8(W, U, X, Y, C) \ 3185 1.1 mrg ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \ 3186 1.1 mrg (__v64qi)(__m512i) (Y), (int) (C), \ 3187 1.1 mrg (__v32hi)(__m512i)(W), \ 3188 1.1 mrg (__mmask32)(U))) 3189 1.1 mrg 3190 1.1 mrg #define _mm512_maskz_dbsad_epu8(U, X, Y, C) \ 3191 1.1 mrg ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \ 3192 1.1 mrg (__v64qi)(__m512i) (Y), (int) (C), \ 3193 1.3 mrg (__v32hi)(__m512i) \ 3194 1.3 mrg _mm512_setzero_si512 (), \ 3195 1.1 mrg (__mmask32)(U))) 3196 1.1 mrg 3197 1.1 mrg #define _mm512_srli_epi16(A, B) \ 3198 1.1 mrg ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \ 3199 1.3 mrg (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)-1)) 3200 1.1 mrg 3201 1.1 mrg #define _mm512_mask_srli_epi16(W, U, A, B) \ 3202 1.1 mrg ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \ 3203 1.1 mrg (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U))) 3204 1.1 mrg 3205 1.1 mrg #define _mm512_maskz_srli_epi16(U, A, B) \ 3206 1.1 mrg ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \ 3207 1.3 mrg (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)(U))) 3208 1.1 mrg 3209 1.1 mrg #define _mm512_slli_epi16(X, C) \ 3210 1.1 mrg ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\ 3211 1.3 mrg (__v32hi)(__m512i)_mm512_setzero_si512 (), \ 3212 1.1 mrg (__mmask32)-1)) 3213 1.1 mrg 3214 1.1 mrg #define _mm512_mask_slli_epi16(W, U, X, C) \ 3215 1.1 mrg ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\ 3216 1.1 mrg (__v32hi)(__m512i)(W),\ 3217 1.1 mrg (__mmask32)(U))) 3218 1.1 mrg 3219 1.1 mrg #define _mm512_maskz_slli_epi16(U, X, C) \ 3220 1.1 mrg ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\ 3221 1.3 mrg (__v32hi)(__m512i)_mm512_setzero_si512 (), \ 3222 1.1 mrg (__mmask32)(U))) 3223 1.1 mrg 3224 1.1 mrg #define _mm512_shufflehi_epi16(A, B) \ 3225 1.1 mrg ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \ 3226 1.3 mrg (__v32hi)(__m512i) \ 3227 1.3 mrg _mm512_setzero_si512 (), \ 3228 1.1 mrg (__mmask32)-1)) 3229 1.1 mrg 3230 1.1 mrg #define _mm512_mask_shufflehi_epi16(W, U, A, B) \ 3231 1.1 mrg ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \ 3232 1.1 mrg (__v32hi)(__m512i)(W), \ 3233 1.1 mrg (__mmask32)(U))) 3234 1.1 mrg 3235 1.1 mrg #define _mm512_maskz_shufflehi_epi16(U, A, B) \ 3236 1.1 mrg ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \ 3237 1.3 mrg (__v32hi)(__m512i) \ 3238 1.3 mrg _mm512_setzero_si512 (), \ 3239 1.1 mrg (__mmask32)(U))) 3240 1.1 mrg 3241 1.1 mrg #define _mm512_shufflelo_epi16(A, B) \ 3242 1.1 mrg ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \ 3243 1.3 mrg (__v32hi)(__m512i) \ 3244 1.3 mrg _mm512_setzero_si512 (), \ 3245 1.1 mrg (__mmask32)-1)) 3246 1.1 mrg 3247 1.1 mrg #define _mm512_mask_shufflelo_epi16(W, U, A, B) \ 3248 1.1 mrg ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \ 3249 1.1 mrg (__v32hi)(__m512i)(W), \ 3250 1.1 mrg (__mmask32)(U))) 3251 1.1 mrg 3252 1.1 mrg #define _mm512_maskz_shufflelo_epi16(U, A, B) \ 3253 1.1 mrg ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \ 3254 1.3 mrg (__v32hi)(__m512i) \ 3255 1.3 mrg _mm512_setzero_si512 (), \ 3256 1.1 mrg (__mmask32)(U))) 3257 1.1 mrg 3258 1.1 mrg #define _mm512_srai_epi16(A, B) \ 3259 1.1 mrg ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \ 3260 1.3 mrg (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)-1)) 3261 1.1 mrg 3262 1.1 mrg #define _mm512_mask_srai_epi16(W, U, A, B) \ 3263 1.1 mrg ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \ 3264 1.1 mrg (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U))) 3265 1.1 mrg 3266 1.1 mrg #define _mm512_maskz_srai_epi16(U, A, B) \ 3267 1.1 mrg ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \ 3268 1.3 mrg (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)(U))) 3269 1.1 mrg 3270 1.1 mrg #define _mm512_mask_blend_epi16(__U, __A, __W) \ 3271 1.1 mrg ((__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) (__A), \ 3272 1.1 mrg (__v32hi) (__W), \ 3273 1.1 mrg (__mmask32) (__U))) 3274 1.1 mrg 3275 1.1 mrg #define _mm512_mask_blend_epi8(__U, __A, __W) \ 3276 1.1 mrg ((__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) (__A), \ 3277 1.1 mrg (__v64qi) (__W), \ 3278 1.1 mrg (__mmask64) (__U))) 3279 1.1 mrg 3280 1.1 mrg #define _mm512_cmp_epi16_mask(X, Y, P) \ 3281 1.1 mrg ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X), \ 3282 1.1 mrg (__v32hi)(__m512i)(Y), (int)(P),\ 3283 1.1 mrg (__mmask32)(-1))) 3284 1.1 mrg 3285 1.1 mrg #define _mm512_cmp_epi8_mask(X, Y, P) \ 3286 1.1 mrg ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X), \ 3287 1.1 mrg (__v64qi)(__m512i)(Y), (int)(P),\ 3288 1.1 mrg (__mmask64)(-1))) 3289 1.1 mrg 3290 1.1 mrg #define _mm512_cmp_epu16_mask(X, Y, P) \ 3291 1.1 mrg ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X), \ 3292 1.1 mrg (__v32hi)(__m512i)(Y), (int)(P),\ 3293 1.1 mrg (__mmask32)(-1))) 3294 1.1 mrg 3295 1.1 mrg #define _mm512_cmp_epu8_mask(X, Y, P) \ 3296 1.1 mrg ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X), \ 3297 1.1 mrg (__v64qi)(__m512i)(Y), (int)(P),\ 3298 1.1 mrg (__mmask64)(-1))) 3299 1.1 mrg 3300 1.1 mrg #define _mm512_mask_cmp_epi16_mask(M, X, Y, P) \ 3301 1.1 mrg ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X), \ 3302 1.1 mrg (__v32hi)(__m512i)(Y), (int)(P),\ 3303 1.1 mrg (__mmask32)(M))) 3304 1.1 mrg 3305 1.1 mrg #define _mm512_mask_cmp_epi8_mask(M, X, Y, P) \ 3306 1.1 mrg ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X), \ 3307 1.1 mrg (__v64qi)(__m512i)(Y), (int)(P),\ 3308 1.1 mrg (__mmask64)(M))) 3309 1.1 mrg 3310 1.1 mrg #define _mm512_mask_cmp_epu16_mask(M, X, Y, P) \ 3311 1.1 mrg ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X), \ 3312 1.1 mrg (__v32hi)(__m512i)(Y), (int)(P),\ 3313 1.1 mrg (__mmask32)(M))) 3314 1.1 mrg 3315 1.1 mrg #define _mm512_mask_cmp_epu8_mask(M, X, Y, P) \ 3316 1.1 mrg ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X), \ 3317 1.1 mrg (__v64qi)(__m512i)(Y), (int)(P),\ 3318 1.1 mrg (__mmask64)(M))) 3319 1.1 mrg 3320 1.1 mrg #define _mm512_bslli_epi128(A, N) \ 3321 1.1 mrg ((__m512i)__builtin_ia32_pslldq512 ((__m512i)(A), (int)(N) * 8)) 3322 1.1 mrg 3323 1.1 mrg #define _mm512_bsrli_epi128(A, N) \ 3324 1.1 mrg ((__m512i)__builtin_ia32_psrldq512 ((__m512i)(A), (int)(N) * 8)) 3325 1.1 mrg 3326 1.1 mrg #endif 3327 1.1 mrg 3328 1.1 mrg #ifdef __DISABLE_AVX512BW__ 3329 1.1 mrg #undef __DISABLE_AVX512BW__ 3330 1.1 mrg #pragma GCC pop_options 3331 1.1 mrg #endif /* __DISABLE_AVX512BW__ */ 3332 1.1 mrg 3333 1.1 mrg #endif /* _AVX512BWINTRIN_H_INCLUDED */ 3334