avx512vlbwintrin.h revision 360784
1/*===---- avx512vlbwintrin.h - AVX512VL and AVX512BW intrinsics ------------=== 2 * 3 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 * See https://llvm.org/LICENSE.txt for license information. 5 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 * 7 *===-----------------------------------------------------------------------=== 8 */ 9 10#ifndef __IMMINTRIN_H 11#error "Never use <avx512vlbwintrin.h> directly; include <immintrin.h> instead." 12#endif 13 14#ifndef __AVX512VLBWINTRIN_H 15#define __AVX512VLBWINTRIN_H 16 17/* Define the default attributes for the functions in this file. */ 18#define __DEFAULT_FN_ATTRS128 __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512bw"), __min_vector_width__(128))) 19#define __DEFAULT_FN_ATTRS256 __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512bw"), __min_vector_width__(256))) 20 21/* Integer compare */ 22 23#define _mm_cmp_epi8_mask(a, b, p) \ 24 (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \ 25 (__v16qi)(__m128i)(b), (int)(p), \ 26 (__mmask16)-1) 27 28#define _mm_mask_cmp_epi8_mask(m, a, b, p) \ 29 (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \ 30 (__v16qi)(__m128i)(b), (int)(p), \ 31 (__mmask16)(m)) 32 33#define _mm_cmp_epu8_mask(a, b, p) \ 34 (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \ 35 (__v16qi)(__m128i)(b), (int)(p), \ 36 (__mmask16)-1) 37 38#define _mm_mask_cmp_epu8_mask(m, a, b, p) \ 39 (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \ 40 (__v16qi)(__m128i)(b), (int)(p), \ 41 (__mmask16)(m)) 42 43#define _mm256_cmp_epi8_mask(a, b, p) \ 44 (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \ 45 (__v32qi)(__m256i)(b), (int)(p), \ 46 (__mmask32)-1) 47 48#define _mm256_mask_cmp_epi8_mask(m, a, b, p) \ 49 (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \ 50 (__v32qi)(__m256i)(b), (int)(p), \ 51 (__mmask32)(m)) 52 53#define _mm256_cmp_epu8_mask(a, b, p) \ 54 (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \ 55 (__v32qi)(__m256i)(b), (int)(p), \ 56 (__mmask32)-1) 57 58#define _mm256_mask_cmp_epu8_mask(m, a, b, p) \ 59 (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \ 60 (__v32qi)(__m256i)(b), (int)(p), \ 61 (__mmask32)(m)) 62 63#define _mm_cmp_epi16_mask(a, b, p) \ 64 (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \ 65 (__v8hi)(__m128i)(b), (int)(p), \ 66 (__mmask8)-1) 67 68#define _mm_mask_cmp_epi16_mask(m, a, b, p) \ 69 (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \ 70 (__v8hi)(__m128i)(b), (int)(p), \ 71 (__mmask8)(m)) 72 73#define _mm_cmp_epu16_mask(a, b, p) \ 74 (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \ 75 (__v8hi)(__m128i)(b), (int)(p), \ 76 (__mmask8)-1) 77 78#define _mm_mask_cmp_epu16_mask(m, a, b, p) \ 79 (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \ 80 (__v8hi)(__m128i)(b), (int)(p), \ 81 (__mmask8)(m)) 82 83#define _mm256_cmp_epi16_mask(a, b, p) \ 84 (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \ 85 (__v16hi)(__m256i)(b), (int)(p), \ 86 (__mmask16)-1) 87 88#define _mm256_mask_cmp_epi16_mask(m, a, b, p) \ 89 (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \ 90 (__v16hi)(__m256i)(b), (int)(p), \ 91 (__mmask16)(m)) 92 93#define _mm256_cmp_epu16_mask(a, b, p) \ 94 (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \ 95 (__v16hi)(__m256i)(b), (int)(p), \ 96 (__mmask16)-1) 97 98#define _mm256_mask_cmp_epu16_mask(m, a, b, p) \ 99 (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \ 100 (__v16hi)(__m256i)(b), (int)(p), \ 101 (__mmask16)(m)) 102 103#define _mm_cmpeq_epi8_mask(A, B) \ 104 _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_EQ) 105#define _mm_mask_cmpeq_epi8_mask(k, A, B) \ 106 _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_EQ) 107#define _mm_cmpge_epi8_mask(A, B) \ 108 _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_GE) 109#define _mm_mask_cmpge_epi8_mask(k, A, B) \ 110 _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GE) 111#define _mm_cmpgt_epi8_mask(A, B) \ 112 _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_GT) 113#define _mm_mask_cmpgt_epi8_mask(k, A, B) \ 114 _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GT) 115#define _mm_cmple_epi8_mask(A, B) \ 116 _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_LE) 117#define _mm_mask_cmple_epi8_mask(k, A, B) \ 118 _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LE) 119#define _mm_cmplt_epi8_mask(A, B) \ 120 _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_LT) 121#define _mm_mask_cmplt_epi8_mask(k, A, B) \ 122 _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LT) 123#define _mm_cmpneq_epi8_mask(A, B) \ 124 _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_NE) 125#define _mm_mask_cmpneq_epi8_mask(k, A, B) \ 126 _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_NE) 127 128#define _mm256_cmpeq_epi8_mask(A, B) \ 129 _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_EQ) 130#define _mm256_mask_cmpeq_epi8_mask(k, A, B) \ 131 _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_EQ) 132#define _mm256_cmpge_epi8_mask(A, B) \ 133 _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_GE) 134#define _mm256_mask_cmpge_epi8_mask(k, A, B) \ 135 _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GE) 136#define _mm256_cmpgt_epi8_mask(A, B) \ 137 _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_GT) 138#define _mm256_mask_cmpgt_epi8_mask(k, A, B) \ 139 _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GT) 140#define _mm256_cmple_epi8_mask(A, B) \ 141 _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_LE) 142#define _mm256_mask_cmple_epi8_mask(k, A, B) \ 143 _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LE) 144#define _mm256_cmplt_epi8_mask(A, B) \ 145 _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_LT) 146#define _mm256_mask_cmplt_epi8_mask(k, A, B) \ 147 _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LT) 148#define _mm256_cmpneq_epi8_mask(A, B) \ 149 _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_NE) 150#define _mm256_mask_cmpneq_epi8_mask(k, A, B) \ 151 _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_NE) 152 153#define _mm_cmpeq_epu8_mask(A, B) \ 154 _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_EQ) 155#define _mm_mask_cmpeq_epu8_mask(k, A, B) \ 156 _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_EQ) 157#define _mm_cmpge_epu8_mask(A, B) \ 158 _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_GE) 159#define _mm_mask_cmpge_epu8_mask(k, A, B) \ 160 _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GE) 161#define _mm_cmpgt_epu8_mask(A, B) \ 162 _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_GT) 163#define _mm_mask_cmpgt_epu8_mask(k, A, B) \ 164 _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GT) 165#define _mm_cmple_epu8_mask(A, B) \ 166 _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_LE) 167#define _mm_mask_cmple_epu8_mask(k, A, B) \ 168 _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LE) 169#define _mm_cmplt_epu8_mask(A, B) \ 170 _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_LT) 171#define _mm_mask_cmplt_epu8_mask(k, A, B) \ 172 _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LT) 173#define _mm_cmpneq_epu8_mask(A, B) \ 174 _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_NE) 175#define _mm_mask_cmpneq_epu8_mask(k, A, B) \ 176 _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_NE) 177 178#define _mm256_cmpeq_epu8_mask(A, B) \ 179 _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_EQ) 180#define _mm256_mask_cmpeq_epu8_mask(k, A, B) \ 181 _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_EQ) 182#define _mm256_cmpge_epu8_mask(A, B) \ 183 _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_GE) 184#define _mm256_mask_cmpge_epu8_mask(k, A, B) \ 185 _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GE) 186#define _mm256_cmpgt_epu8_mask(A, B) \ 187 _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_GT) 188#define _mm256_mask_cmpgt_epu8_mask(k, A, B) \ 189 _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GT) 190#define _mm256_cmple_epu8_mask(A, B) \ 191 _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_LE) 192#define _mm256_mask_cmple_epu8_mask(k, A, B) \ 193 _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LE) 194#define _mm256_cmplt_epu8_mask(A, B) \ 195 _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_LT) 196#define _mm256_mask_cmplt_epu8_mask(k, A, B) \ 197 _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LT) 198#define _mm256_cmpneq_epu8_mask(A, B) \ 199 _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_NE) 200#define _mm256_mask_cmpneq_epu8_mask(k, A, B) \ 201 _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_NE) 202 203#define _mm_cmpeq_epi16_mask(A, B) \ 204 _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_EQ) 205#define _mm_mask_cmpeq_epi16_mask(k, A, B) \ 206 _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_EQ) 207#define _mm_cmpge_epi16_mask(A, B) \ 208 _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_GE) 209#define _mm_mask_cmpge_epi16_mask(k, A, B) \ 210 _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GE) 211#define _mm_cmpgt_epi16_mask(A, B) \ 212 _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_GT) 213#define _mm_mask_cmpgt_epi16_mask(k, A, B) \ 214 _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GT) 215#define _mm_cmple_epi16_mask(A, B) \ 216 _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_LE) 217#define _mm_mask_cmple_epi16_mask(k, A, B) \ 218 _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LE) 219#define _mm_cmplt_epi16_mask(A, B) \ 220 _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_LT) 221#define _mm_mask_cmplt_epi16_mask(k, A, B) \ 222 _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LT) 223#define _mm_cmpneq_epi16_mask(A, B) \ 224 _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_NE) 225#define _mm_mask_cmpneq_epi16_mask(k, A, B) \ 226 _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_NE) 227 228#define _mm256_cmpeq_epi16_mask(A, B) \ 229 _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_EQ) 230#define _mm256_mask_cmpeq_epi16_mask(k, A, B) \ 231 _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_EQ) 232#define _mm256_cmpge_epi16_mask(A, B) \ 233 _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_GE) 234#define _mm256_mask_cmpge_epi16_mask(k, A, B) \ 235 _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GE) 236#define _mm256_cmpgt_epi16_mask(A, B) \ 237 _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_GT) 238#define _mm256_mask_cmpgt_epi16_mask(k, A, B) \ 239 _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GT) 240#define _mm256_cmple_epi16_mask(A, B) \ 241 _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_LE) 242#define _mm256_mask_cmple_epi16_mask(k, A, B) \ 243 _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LE) 244#define _mm256_cmplt_epi16_mask(A, B) \ 245 _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_LT) 246#define _mm256_mask_cmplt_epi16_mask(k, A, B) \ 247 _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LT) 248#define _mm256_cmpneq_epi16_mask(A, B) \ 249 _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_NE) 250#define _mm256_mask_cmpneq_epi16_mask(k, A, B) \ 251 _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_NE) 252 253#define _mm_cmpeq_epu16_mask(A, B) \ 254 _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_EQ) 255#define _mm_mask_cmpeq_epu16_mask(k, A, B) \ 256 _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_EQ) 257#define _mm_cmpge_epu16_mask(A, B) \ 258 _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_GE) 259#define _mm_mask_cmpge_epu16_mask(k, A, B) \ 260 _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GE) 261#define _mm_cmpgt_epu16_mask(A, B) \ 262 _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_GT) 263#define _mm_mask_cmpgt_epu16_mask(k, A, B) \ 264 _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GT) 265#define _mm_cmple_epu16_mask(A, B) \ 266 _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_LE) 267#define _mm_mask_cmple_epu16_mask(k, A, B) \ 268 _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LE) 269#define _mm_cmplt_epu16_mask(A, B) \ 270 _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_LT) 271#define _mm_mask_cmplt_epu16_mask(k, A, B) \ 272 _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LT) 273#define _mm_cmpneq_epu16_mask(A, B) \ 274 _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_NE) 275#define _mm_mask_cmpneq_epu16_mask(k, A, B) \ 276 _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_NE) 277 278#define _mm256_cmpeq_epu16_mask(A, B) \ 279 _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_EQ) 280#define _mm256_mask_cmpeq_epu16_mask(k, A, B) \ 281 _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_EQ) 282#define _mm256_cmpge_epu16_mask(A, B) \ 283 _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_GE) 284#define _mm256_mask_cmpge_epu16_mask(k, A, B) \ 285 _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GE) 286#define _mm256_cmpgt_epu16_mask(A, B) \ 287 _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_GT) 288#define _mm256_mask_cmpgt_epu16_mask(k, A, B) \ 289 _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GT) 290#define _mm256_cmple_epu16_mask(A, B) \ 291 _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_LE) 292#define _mm256_mask_cmple_epu16_mask(k, A, B) \ 293 _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LE) 294#define _mm256_cmplt_epu16_mask(A, B) \ 295 _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_LT) 296#define _mm256_mask_cmplt_epu16_mask(k, A, B) \ 297 _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LT) 298#define _mm256_cmpneq_epu16_mask(A, B) \ 299 _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_NE) 300#define _mm256_mask_cmpneq_epu16_mask(k, A, B) \ 301 _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_NE) 302 303static __inline__ __m256i __DEFAULT_FN_ATTRS256 304_mm256_mask_add_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B){ 305 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 306 (__v32qi)_mm256_add_epi8(__A, __B), 307 (__v32qi)__W); 308} 309 310static __inline__ __m256i __DEFAULT_FN_ATTRS256 311_mm256_maskz_add_epi8(__mmask32 __U, __m256i __A, __m256i __B) { 312 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 313 (__v32qi)_mm256_add_epi8(__A, __B), 314 (__v32qi)_mm256_setzero_si256()); 315} 316 317static __inline__ __m256i __DEFAULT_FN_ATTRS256 318_mm256_mask_add_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) { 319 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 320 (__v16hi)_mm256_add_epi16(__A, __B), 321 (__v16hi)__W); 322} 323 324static __inline__ __m256i __DEFAULT_FN_ATTRS256 325_mm256_maskz_add_epi16(__mmask16 __U, __m256i __A, __m256i __B) { 326 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 327 (__v16hi)_mm256_add_epi16(__A, __B), 328 (__v16hi)_mm256_setzero_si256()); 329} 330 331static __inline__ __m256i __DEFAULT_FN_ATTRS256 332_mm256_mask_sub_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) { 333 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 334 (__v32qi)_mm256_sub_epi8(__A, __B), 335 (__v32qi)__W); 336} 337 338static __inline__ __m256i __DEFAULT_FN_ATTRS256 339_mm256_maskz_sub_epi8(__mmask32 __U, __m256i __A, __m256i __B) { 340 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 341 (__v32qi)_mm256_sub_epi8(__A, __B), 342 (__v32qi)_mm256_setzero_si256()); 343} 344 345static __inline__ __m256i __DEFAULT_FN_ATTRS256 346_mm256_mask_sub_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) { 347 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 348 (__v16hi)_mm256_sub_epi16(__A, __B), 349 (__v16hi)__W); 350} 351 352static __inline__ __m256i __DEFAULT_FN_ATTRS256 353_mm256_maskz_sub_epi16(__mmask16 __U, __m256i __A, __m256i __B) { 354 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 355 (__v16hi)_mm256_sub_epi16(__A, __B), 356 (__v16hi)_mm256_setzero_si256()); 357} 358 359static __inline__ __m128i __DEFAULT_FN_ATTRS128 360_mm_mask_add_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) { 361 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 362 (__v16qi)_mm_add_epi8(__A, __B), 363 (__v16qi)__W); 364} 365 366static __inline__ __m128i __DEFAULT_FN_ATTRS128 367_mm_maskz_add_epi8(__mmask16 __U, __m128i __A, __m128i __B) { 368 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 369 (__v16qi)_mm_add_epi8(__A, __B), 370 (__v16qi)_mm_setzero_si128()); 371} 372 373static __inline__ __m128i __DEFAULT_FN_ATTRS128 374_mm_mask_add_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 375 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 376 (__v8hi)_mm_add_epi16(__A, __B), 377 (__v8hi)__W); 378} 379 380static __inline__ __m128i __DEFAULT_FN_ATTRS128 381_mm_maskz_add_epi16(__mmask8 __U, __m128i __A, __m128i __B) { 382 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 383 (__v8hi)_mm_add_epi16(__A, __B), 384 (__v8hi)_mm_setzero_si128()); 385} 386 387static __inline__ __m128i __DEFAULT_FN_ATTRS128 388_mm_mask_sub_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) { 389 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 390 (__v16qi)_mm_sub_epi8(__A, __B), 391 (__v16qi)__W); 392} 393 394static __inline__ __m128i __DEFAULT_FN_ATTRS128 395_mm_maskz_sub_epi8(__mmask16 __U, __m128i __A, __m128i __B) { 396 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 397 (__v16qi)_mm_sub_epi8(__A, __B), 398 (__v16qi)_mm_setzero_si128()); 399} 400 401static __inline__ __m128i __DEFAULT_FN_ATTRS128 402_mm_mask_sub_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 403 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 404 (__v8hi)_mm_sub_epi16(__A, __B), 405 (__v8hi)__W); 406} 407 408static __inline__ __m128i __DEFAULT_FN_ATTRS128 409_mm_maskz_sub_epi16(__mmask8 __U, __m128i __A, __m128i __B) { 410 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 411 (__v8hi)_mm_sub_epi16(__A, __B), 412 (__v8hi)_mm_setzero_si128()); 413} 414 415static __inline__ __m256i __DEFAULT_FN_ATTRS256 416_mm256_mask_mullo_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) { 417 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 418 (__v16hi)_mm256_mullo_epi16(__A, __B), 419 (__v16hi)__W); 420} 421 422static __inline__ __m256i __DEFAULT_FN_ATTRS256 423_mm256_maskz_mullo_epi16(__mmask16 __U, __m256i __A, __m256i __B) { 424 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 425 (__v16hi)_mm256_mullo_epi16(__A, __B), 426 (__v16hi)_mm256_setzero_si256()); 427} 428 429static __inline__ __m128i __DEFAULT_FN_ATTRS128 430_mm_mask_mullo_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 431 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 432 (__v8hi)_mm_mullo_epi16(__A, __B), 433 (__v8hi)__W); 434} 435 436static __inline__ __m128i __DEFAULT_FN_ATTRS128 437_mm_maskz_mullo_epi16(__mmask8 __U, __m128i __A, __m128i __B) { 438 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 439 (__v8hi)_mm_mullo_epi16(__A, __B), 440 (__v8hi)_mm_setzero_si128()); 441} 442 443static __inline__ __m128i __DEFAULT_FN_ATTRS128 444_mm_mask_blend_epi8 (__mmask16 __U, __m128i __A, __m128i __W) 445{ 446 return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U, 447 (__v16qi) __W, 448 (__v16qi) __A); 449} 450 451static __inline__ __m256i __DEFAULT_FN_ATTRS256 452_mm256_mask_blend_epi8 (__mmask32 __U, __m256i __A, __m256i __W) 453{ 454 return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U, 455 (__v32qi) __W, 456 (__v32qi) __A); 457} 458 459static __inline__ __m128i __DEFAULT_FN_ATTRS128 460_mm_mask_blend_epi16 (__mmask8 __U, __m128i __A, __m128i __W) 461{ 462 return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U, 463 (__v8hi) __W, 464 (__v8hi) __A); 465} 466 467static __inline__ __m256i __DEFAULT_FN_ATTRS256 468_mm256_mask_blend_epi16 (__mmask16 __U, __m256i __A, __m256i __W) 469{ 470 return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U, 471 (__v16hi) __W, 472 (__v16hi) __A); 473} 474 475static __inline__ __m128i __DEFAULT_FN_ATTRS128 476_mm_mask_abs_epi8(__m128i __W, __mmask16 __U, __m128i __A) 477{ 478 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 479 (__v16qi)_mm_abs_epi8(__A), 480 (__v16qi)__W); 481} 482 483static __inline__ __m128i __DEFAULT_FN_ATTRS128 484_mm_maskz_abs_epi8(__mmask16 __U, __m128i __A) 485{ 486 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 487 (__v16qi)_mm_abs_epi8(__A), 488 (__v16qi)_mm_setzero_si128()); 489} 490 491static __inline__ __m256i __DEFAULT_FN_ATTRS256 492_mm256_mask_abs_epi8(__m256i __W, __mmask32 __U, __m256i __A) 493{ 494 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 495 (__v32qi)_mm256_abs_epi8(__A), 496 (__v32qi)__W); 497} 498 499static __inline__ __m256i __DEFAULT_FN_ATTRS256 500_mm256_maskz_abs_epi8 (__mmask32 __U, __m256i __A) 501{ 502 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 503 (__v32qi)_mm256_abs_epi8(__A), 504 (__v32qi)_mm256_setzero_si256()); 505} 506 507static __inline__ __m128i __DEFAULT_FN_ATTRS128 508_mm_mask_abs_epi16(__m128i __W, __mmask8 __U, __m128i __A) 509{ 510 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 511 (__v8hi)_mm_abs_epi16(__A), 512 (__v8hi)__W); 513} 514 515static __inline__ __m128i __DEFAULT_FN_ATTRS128 516_mm_maskz_abs_epi16(__mmask8 __U, __m128i __A) 517{ 518 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 519 (__v8hi)_mm_abs_epi16(__A), 520 (__v8hi)_mm_setzero_si128()); 521} 522 523static __inline__ __m256i __DEFAULT_FN_ATTRS256 524_mm256_mask_abs_epi16(__m256i __W, __mmask16 __U, __m256i __A) 525{ 526 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 527 (__v16hi)_mm256_abs_epi16(__A), 528 (__v16hi)__W); 529} 530 531static __inline__ __m256i __DEFAULT_FN_ATTRS256 532_mm256_maskz_abs_epi16(__mmask16 __U, __m256i __A) 533{ 534 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 535 (__v16hi)_mm256_abs_epi16(__A), 536 (__v16hi)_mm256_setzero_si256()); 537} 538 539static __inline__ __m128i __DEFAULT_FN_ATTRS128 540_mm_maskz_packs_epi32(__mmask8 __M, __m128i __A, __m128i __B) { 541 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, 542 (__v8hi)_mm_packs_epi32(__A, __B), 543 (__v8hi)_mm_setzero_si128()); 544} 545 546static __inline__ __m128i __DEFAULT_FN_ATTRS128 547_mm_mask_packs_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) 548{ 549 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, 550 (__v8hi)_mm_packs_epi32(__A, __B), 551 (__v8hi)__W); 552} 553 554static __inline__ __m256i __DEFAULT_FN_ATTRS256 555_mm256_maskz_packs_epi32(__mmask16 __M, __m256i __A, __m256i __B) 556{ 557 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M, 558 (__v16hi)_mm256_packs_epi32(__A, __B), 559 (__v16hi)_mm256_setzero_si256()); 560} 561 562static __inline__ __m256i __DEFAULT_FN_ATTRS256 563_mm256_mask_packs_epi32(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) 564{ 565 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M, 566 (__v16hi)_mm256_packs_epi32(__A, __B), 567 (__v16hi)__W); 568} 569 570static __inline__ __m128i __DEFAULT_FN_ATTRS128 571_mm_maskz_packs_epi16(__mmask16 __M, __m128i __A, __m128i __B) 572{ 573 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M, 574 (__v16qi)_mm_packs_epi16(__A, __B), 575 (__v16qi)_mm_setzero_si128()); 576} 577 578static __inline__ __m128i __DEFAULT_FN_ATTRS128 579_mm_mask_packs_epi16(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) 580{ 581 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M, 582 (__v16qi)_mm_packs_epi16(__A, __B), 583 (__v16qi)__W); 584} 585 586static __inline__ __m256i __DEFAULT_FN_ATTRS256 587_mm256_maskz_packs_epi16(__mmask32 __M, __m256i __A, __m256i __B) 588{ 589 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M, 590 (__v32qi)_mm256_packs_epi16(__A, __B), 591 (__v32qi)_mm256_setzero_si256()); 592} 593 594static __inline__ __m256i __DEFAULT_FN_ATTRS256 595_mm256_mask_packs_epi16(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) 596{ 597 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M, 598 (__v32qi)_mm256_packs_epi16(__A, __B), 599 (__v32qi)__W); 600} 601 602static __inline__ __m128i __DEFAULT_FN_ATTRS128 603_mm_maskz_packus_epi32(__mmask8 __M, __m128i __A, __m128i __B) 604{ 605 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, 606 (__v8hi)_mm_packus_epi32(__A, __B), 607 (__v8hi)_mm_setzero_si128()); 608} 609 610static __inline__ __m128i __DEFAULT_FN_ATTRS128 611_mm_mask_packus_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) 612{ 613 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, 614 (__v8hi)_mm_packus_epi32(__A, __B), 615 (__v8hi)__W); 616} 617 618static __inline__ __m256i __DEFAULT_FN_ATTRS256 619_mm256_maskz_packus_epi32(__mmask16 __M, __m256i __A, __m256i __B) 620{ 621 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M, 622 (__v16hi)_mm256_packus_epi32(__A, __B), 623 (__v16hi)_mm256_setzero_si256()); 624} 625 626static __inline__ __m256i __DEFAULT_FN_ATTRS256 627_mm256_mask_packus_epi32(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) 628{ 629 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M, 630 (__v16hi)_mm256_packus_epi32(__A, __B), 631 (__v16hi)__W); 632} 633 634static __inline__ __m128i __DEFAULT_FN_ATTRS128 635_mm_maskz_packus_epi16(__mmask16 __M, __m128i __A, __m128i __B) 636{ 637 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M, 638 (__v16qi)_mm_packus_epi16(__A, __B), 639 (__v16qi)_mm_setzero_si128()); 640} 641 642static __inline__ __m128i __DEFAULT_FN_ATTRS128 643_mm_mask_packus_epi16(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) 644{ 645 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M, 646 (__v16qi)_mm_packus_epi16(__A, __B), 647 (__v16qi)__W); 648} 649 650static __inline__ __m256i __DEFAULT_FN_ATTRS256 651_mm256_maskz_packus_epi16(__mmask32 __M, __m256i __A, __m256i __B) 652{ 653 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M, 654 (__v32qi)_mm256_packus_epi16(__A, __B), 655 (__v32qi)_mm256_setzero_si256()); 656} 657 658static __inline__ __m256i __DEFAULT_FN_ATTRS256 659_mm256_mask_packus_epi16(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) 660{ 661 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M, 662 (__v32qi)_mm256_packus_epi16(__A, __B), 663 (__v32qi)__W); 664} 665 666static __inline__ __m128i __DEFAULT_FN_ATTRS128 667_mm_mask_adds_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) 668{ 669 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 670 (__v16qi)_mm_adds_epi8(__A, __B), 671 (__v16qi)__W); 672} 673 674static __inline__ __m128i __DEFAULT_FN_ATTRS128 675_mm_maskz_adds_epi8(__mmask16 __U, __m128i __A, __m128i __B) 676{ 677 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 678 (__v16qi)_mm_adds_epi8(__A, __B), 679 (__v16qi)_mm_setzero_si128()); 680} 681 682static __inline__ __m256i __DEFAULT_FN_ATTRS256 683_mm256_mask_adds_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) 684{ 685 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 686 (__v32qi)_mm256_adds_epi8(__A, __B), 687 (__v32qi)__W); 688} 689 690static __inline__ __m256i __DEFAULT_FN_ATTRS256 691_mm256_maskz_adds_epi8(__mmask32 __U, __m256i __A, __m256i __B) 692{ 693 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 694 (__v32qi)_mm256_adds_epi8(__A, __B), 695 (__v32qi)_mm256_setzero_si256()); 696} 697 698static __inline__ __m128i __DEFAULT_FN_ATTRS128 699_mm_mask_adds_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) 700{ 701 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 702 (__v8hi)_mm_adds_epi16(__A, __B), 703 (__v8hi)__W); 704} 705 706static __inline__ __m128i __DEFAULT_FN_ATTRS128 707_mm_maskz_adds_epi16(__mmask8 __U, __m128i __A, __m128i __B) 708{ 709 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 710 (__v8hi)_mm_adds_epi16(__A, __B), 711 (__v8hi)_mm_setzero_si128()); 712} 713 714static __inline__ __m256i __DEFAULT_FN_ATTRS256 715_mm256_mask_adds_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) 716{ 717 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 718 (__v16hi)_mm256_adds_epi16(__A, __B), 719 (__v16hi)__W); 720} 721 722static __inline__ __m256i __DEFAULT_FN_ATTRS256 723_mm256_maskz_adds_epi16(__mmask16 __U, __m256i __A, __m256i __B) 724{ 725 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 726 (__v16hi)_mm256_adds_epi16(__A, __B), 727 (__v16hi)_mm256_setzero_si256()); 728} 729 730static __inline__ __m128i __DEFAULT_FN_ATTRS128 731_mm_mask_adds_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) 732{ 733 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 734 (__v16qi)_mm_adds_epu8(__A, __B), 735 (__v16qi)__W); 736} 737 738static __inline__ __m128i __DEFAULT_FN_ATTRS128 739_mm_maskz_adds_epu8(__mmask16 __U, __m128i __A, __m128i __B) 740{ 741 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 742 (__v16qi)_mm_adds_epu8(__A, __B), 743 (__v16qi)_mm_setzero_si128()); 744} 745 746static __inline__ __m256i __DEFAULT_FN_ATTRS256 747_mm256_mask_adds_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) 748{ 749 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 750 (__v32qi)_mm256_adds_epu8(__A, __B), 751 (__v32qi)__W); 752} 753 754static __inline__ __m256i __DEFAULT_FN_ATTRS256 755_mm256_maskz_adds_epu8(__mmask32 __U, __m256i __A, __m256i __B) 756{ 757 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 758 (__v32qi)_mm256_adds_epu8(__A, __B), 759 (__v32qi)_mm256_setzero_si256()); 760} 761 762static __inline__ __m128i __DEFAULT_FN_ATTRS128 763_mm_mask_adds_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) 764{ 765 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 766 (__v8hi)_mm_adds_epu16(__A, __B), 767 (__v8hi)__W); 768} 769 770static __inline__ __m128i __DEFAULT_FN_ATTRS128 771_mm_maskz_adds_epu16(__mmask8 __U, __m128i __A, __m128i __B) 772{ 773 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 774 (__v8hi)_mm_adds_epu16(__A, __B), 775 (__v8hi)_mm_setzero_si128()); 776} 777 778static __inline__ __m256i __DEFAULT_FN_ATTRS256 779_mm256_mask_adds_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) 780{ 781 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 782 (__v16hi)_mm256_adds_epu16(__A, __B), 783 (__v16hi)__W); 784} 785 786static __inline__ __m256i __DEFAULT_FN_ATTRS256 787_mm256_maskz_adds_epu16(__mmask16 __U, __m256i __A, __m256i __B) 788{ 789 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 790 (__v16hi)_mm256_adds_epu16(__A, __B), 791 (__v16hi)_mm256_setzero_si256()); 792} 793 794static __inline__ __m128i __DEFAULT_FN_ATTRS128 795_mm_mask_avg_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) 796{ 797 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 798 (__v16qi)_mm_avg_epu8(__A, __B), 799 (__v16qi)__W); 800} 801 802static __inline__ __m128i __DEFAULT_FN_ATTRS128 803_mm_maskz_avg_epu8(__mmask16 __U, __m128i __A, __m128i __B) 804{ 805 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 806 (__v16qi)_mm_avg_epu8(__A, __B), 807 (__v16qi)_mm_setzero_si128()); 808} 809 810static __inline__ __m256i __DEFAULT_FN_ATTRS256 811_mm256_mask_avg_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) 812{ 813 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 814 (__v32qi)_mm256_avg_epu8(__A, __B), 815 (__v32qi)__W); 816} 817 818static __inline__ __m256i __DEFAULT_FN_ATTRS256 819_mm256_maskz_avg_epu8(__mmask32 __U, __m256i __A, __m256i __B) 820{ 821 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 822 (__v32qi)_mm256_avg_epu8(__A, __B), 823 (__v32qi)_mm256_setzero_si256()); 824} 825 826static __inline__ __m128i __DEFAULT_FN_ATTRS128 827_mm_mask_avg_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) 828{ 829 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 830 (__v8hi)_mm_avg_epu16(__A, __B), 831 (__v8hi)__W); 832} 833 834static __inline__ __m128i __DEFAULT_FN_ATTRS128 835_mm_maskz_avg_epu16(__mmask8 __U, __m128i __A, __m128i __B) 836{ 837 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 838 (__v8hi)_mm_avg_epu16(__A, __B), 839 (__v8hi)_mm_setzero_si128()); 840} 841 842static __inline__ __m256i __DEFAULT_FN_ATTRS256 843_mm256_mask_avg_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) 844{ 845 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 846 (__v16hi)_mm256_avg_epu16(__A, __B), 847 (__v16hi)__W); 848} 849 850static __inline__ __m256i __DEFAULT_FN_ATTRS256 851_mm256_maskz_avg_epu16(__mmask16 __U, __m256i __A, __m256i __B) 852{ 853 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 854 (__v16hi)_mm256_avg_epu16(__A, __B), 855 (__v16hi)_mm256_setzero_si256()); 856} 857 858static __inline__ __m128i __DEFAULT_FN_ATTRS128 859_mm_maskz_max_epi8(__mmask16 __M, __m128i __A, __m128i __B) 860{ 861 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M, 862 (__v16qi)_mm_max_epi8(__A, __B), 863 (__v16qi)_mm_setzero_si128()); 864} 865 866static __inline__ __m128i __DEFAULT_FN_ATTRS128 867_mm_mask_max_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) 868{ 869 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M, 870 (__v16qi)_mm_max_epi8(__A, __B), 871 (__v16qi)__W); 872} 873 874static __inline__ __m256i __DEFAULT_FN_ATTRS256 875_mm256_maskz_max_epi8(__mmask32 __M, __m256i __A, __m256i __B) 876{ 877 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M, 878 (__v32qi)_mm256_max_epi8(__A, __B), 879 (__v32qi)_mm256_setzero_si256()); 880} 881 882static __inline__ __m256i __DEFAULT_FN_ATTRS256 883_mm256_mask_max_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) 884{ 885 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M, 886 (__v32qi)_mm256_max_epi8(__A, __B), 887 (__v32qi)__W); 888} 889 890static __inline__ __m128i __DEFAULT_FN_ATTRS128 891_mm_maskz_max_epi16(__mmask8 __M, __m128i __A, __m128i __B) 892{ 893 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, 894 (__v8hi)_mm_max_epi16(__A, __B), 895 (__v8hi)_mm_setzero_si128()); 896} 897 898static __inline__ __m128i __DEFAULT_FN_ATTRS128 899_mm_mask_max_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) 900{ 901 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, 902 (__v8hi)_mm_max_epi16(__A, __B), 903 (__v8hi)__W); 904} 905 906static __inline__ __m256i __DEFAULT_FN_ATTRS256 907_mm256_maskz_max_epi16(__mmask16 __M, __m256i __A, __m256i __B) 908{ 909 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M, 910 (__v16hi)_mm256_max_epi16(__A, __B), 911 (__v16hi)_mm256_setzero_si256()); 912} 913 914static __inline__ __m256i __DEFAULT_FN_ATTRS256 915_mm256_mask_max_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) 916{ 917 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M, 918 (__v16hi)_mm256_max_epi16(__A, __B), 919 (__v16hi)__W); 920} 921 922static __inline__ __m128i __DEFAULT_FN_ATTRS128 923_mm_maskz_max_epu8(__mmask16 __M, __m128i __A, __m128i __B) 924{ 925 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M, 926 (__v16qi)_mm_max_epu8(__A, __B), 927 (__v16qi)_mm_setzero_si128()); 928} 929 930static __inline__ __m128i __DEFAULT_FN_ATTRS128 931_mm_mask_max_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) 932{ 933 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M, 934 (__v16qi)_mm_max_epu8(__A, __B), 935 (__v16qi)__W); 936} 937 938static __inline__ __m256i __DEFAULT_FN_ATTRS256 939_mm256_maskz_max_epu8 (__mmask32 __M, __m256i __A, __m256i __B) 940{ 941 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M, 942 (__v32qi)_mm256_max_epu8(__A, __B), 943 (__v32qi)_mm256_setzero_si256()); 944} 945 946static __inline__ __m256i __DEFAULT_FN_ATTRS256 947_mm256_mask_max_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) 948{ 949 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M, 950 (__v32qi)_mm256_max_epu8(__A, __B), 951 (__v32qi)__W); 952} 953 954static __inline__ __m128i __DEFAULT_FN_ATTRS128 955_mm_maskz_max_epu16(__mmask8 __M, __m128i __A, __m128i __B) 956{ 957 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, 958 (__v8hi)_mm_max_epu16(__A, __B), 959 (__v8hi)_mm_setzero_si128()); 960} 961 962static __inline__ __m128i __DEFAULT_FN_ATTRS128 963_mm_mask_max_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) 964{ 965 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, 966 (__v8hi)_mm_max_epu16(__A, __B), 967 (__v8hi)__W); 968} 969 970static __inline__ __m256i __DEFAULT_FN_ATTRS256 971_mm256_maskz_max_epu16(__mmask16 __M, __m256i __A, __m256i __B) 972{ 973 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M, 974 (__v16hi)_mm256_max_epu16(__A, __B), 975 (__v16hi)_mm256_setzero_si256()); 976} 977 978static __inline__ __m256i __DEFAULT_FN_ATTRS256 979_mm256_mask_max_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) 980{ 981 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M, 982 (__v16hi)_mm256_max_epu16(__A, __B), 983 (__v16hi)__W); 984} 985 986static __inline__ __m128i __DEFAULT_FN_ATTRS128 987_mm_maskz_min_epi8(__mmask16 __M, __m128i __A, __m128i __B) 988{ 989 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M, 990 (__v16qi)_mm_min_epi8(__A, __B), 991 (__v16qi)_mm_setzero_si128()); 992} 993 994static __inline__ __m128i __DEFAULT_FN_ATTRS128 995_mm_mask_min_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) 996{ 997 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M, 998 (__v16qi)_mm_min_epi8(__A, __B), 999 (__v16qi)__W); 1000} 1001 1002static __inline__ __m256i __DEFAULT_FN_ATTRS256 1003_mm256_maskz_min_epi8(__mmask32 __M, __m256i __A, __m256i __B) 1004{ 1005 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M, 1006 (__v32qi)_mm256_min_epi8(__A, __B), 1007 (__v32qi)_mm256_setzero_si256()); 1008} 1009 1010static __inline__ __m256i __DEFAULT_FN_ATTRS256 1011_mm256_mask_min_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) 1012{ 1013 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M, 1014 (__v32qi)_mm256_min_epi8(__A, __B), 1015 (__v32qi)__W); 1016} 1017 1018static __inline__ __m128i __DEFAULT_FN_ATTRS128 1019_mm_maskz_min_epi16(__mmask8 __M, __m128i __A, __m128i __B) 1020{ 1021 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, 1022 (__v8hi)_mm_min_epi16(__A, __B), 1023 (__v8hi)_mm_setzero_si128()); 1024} 1025 1026static __inline__ __m128i __DEFAULT_FN_ATTRS128 1027_mm_mask_min_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) 1028{ 1029 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, 1030 (__v8hi)_mm_min_epi16(__A, __B), 1031 (__v8hi)__W); 1032} 1033 1034static __inline__ __m256i __DEFAULT_FN_ATTRS256 1035_mm256_maskz_min_epi16(__mmask16 __M, __m256i __A, __m256i __B) 1036{ 1037 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M, 1038 (__v16hi)_mm256_min_epi16(__A, __B), 1039 (__v16hi)_mm256_setzero_si256()); 1040} 1041 1042static __inline__ __m256i __DEFAULT_FN_ATTRS256 1043_mm256_mask_min_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) 1044{ 1045 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M, 1046 (__v16hi)_mm256_min_epi16(__A, __B), 1047 (__v16hi)__W); 1048} 1049 1050static __inline__ __m128i __DEFAULT_FN_ATTRS128 1051_mm_maskz_min_epu8(__mmask16 __M, __m128i __A, __m128i __B) 1052{ 1053 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M, 1054 (__v16qi)_mm_min_epu8(__A, __B), 1055 (__v16qi)_mm_setzero_si128()); 1056} 1057 1058static __inline__ __m128i __DEFAULT_FN_ATTRS128 1059_mm_mask_min_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) 1060{ 1061 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M, 1062 (__v16qi)_mm_min_epu8(__A, __B), 1063 (__v16qi)__W); 1064} 1065 1066static __inline__ __m256i __DEFAULT_FN_ATTRS256 1067_mm256_maskz_min_epu8 (__mmask32 __M, __m256i __A, __m256i __B) 1068{ 1069 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M, 1070 (__v32qi)_mm256_min_epu8(__A, __B), 1071 (__v32qi)_mm256_setzero_si256()); 1072} 1073 1074static __inline__ __m256i __DEFAULT_FN_ATTRS256 1075_mm256_mask_min_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) 1076{ 1077 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M, 1078 (__v32qi)_mm256_min_epu8(__A, __B), 1079 (__v32qi)__W); 1080} 1081 1082static __inline__ __m128i __DEFAULT_FN_ATTRS128 1083_mm_maskz_min_epu16(__mmask8 __M, __m128i __A, __m128i __B) 1084{ 1085 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, 1086 (__v8hi)_mm_min_epu16(__A, __B), 1087 (__v8hi)_mm_setzero_si128()); 1088} 1089 1090static __inline__ __m128i __DEFAULT_FN_ATTRS128 1091_mm_mask_min_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) 1092{ 1093 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, 1094 (__v8hi)_mm_min_epu16(__A, __B), 1095 (__v8hi)__W); 1096} 1097 1098static __inline__ __m256i __DEFAULT_FN_ATTRS256 1099_mm256_maskz_min_epu16(__mmask16 __M, __m256i __A, __m256i __B) 1100{ 1101 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M, 1102 (__v16hi)_mm256_min_epu16(__A, __B), 1103 (__v16hi)_mm256_setzero_si256()); 1104} 1105 1106static __inline__ __m256i __DEFAULT_FN_ATTRS256 1107_mm256_mask_min_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) 1108{ 1109 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M, 1110 (__v16hi)_mm256_min_epu16(__A, __B), 1111 (__v16hi)__W); 1112} 1113 1114static __inline__ __m128i __DEFAULT_FN_ATTRS128 1115_mm_mask_shuffle_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) 1116{ 1117 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 1118 (__v16qi)_mm_shuffle_epi8(__A, __B), 1119 (__v16qi)__W); 1120} 1121 1122static __inline__ __m128i __DEFAULT_FN_ATTRS128 1123_mm_maskz_shuffle_epi8(__mmask16 __U, __m128i __A, __m128i __B) 1124{ 1125 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 1126 (__v16qi)_mm_shuffle_epi8(__A, __B), 1127 (__v16qi)_mm_setzero_si128()); 1128} 1129 1130static __inline__ __m256i __DEFAULT_FN_ATTRS256 1131_mm256_mask_shuffle_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) 1132{ 1133 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 1134 (__v32qi)_mm256_shuffle_epi8(__A, __B), 1135 (__v32qi)__W); 1136} 1137 1138static __inline__ __m256i __DEFAULT_FN_ATTRS256 1139_mm256_maskz_shuffle_epi8(__mmask32 __U, __m256i __A, __m256i __B) 1140{ 1141 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 1142 (__v32qi)_mm256_shuffle_epi8(__A, __B), 1143 (__v32qi)_mm256_setzero_si256()); 1144} 1145 1146static __inline__ __m128i __DEFAULT_FN_ATTRS128 1147_mm_mask_subs_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) 1148{ 1149 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 1150 (__v16qi)_mm_subs_epi8(__A, __B), 1151 (__v16qi)__W); 1152} 1153 1154static __inline__ __m128i __DEFAULT_FN_ATTRS128 1155_mm_maskz_subs_epi8(__mmask16 __U, __m128i __A, __m128i __B) 1156{ 1157 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 1158 (__v16qi)_mm_subs_epi8(__A, __B), 1159 (__v16qi)_mm_setzero_si128()); 1160} 1161 1162static __inline__ __m256i __DEFAULT_FN_ATTRS256 1163_mm256_mask_subs_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) 1164{ 1165 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 1166 (__v32qi)_mm256_subs_epi8(__A, __B), 1167 (__v32qi)__W); 1168} 1169 1170static __inline__ __m256i __DEFAULT_FN_ATTRS256 1171_mm256_maskz_subs_epi8(__mmask32 __U, __m256i __A, __m256i __B) 1172{ 1173 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 1174 (__v32qi)_mm256_subs_epi8(__A, __B), 1175 (__v32qi)_mm256_setzero_si256()); 1176} 1177 1178static __inline__ __m128i __DEFAULT_FN_ATTRS128 1179_mm_mask_subs_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) 1180{ 1181 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1182 (__v8hi)_mm_subs_epi16(__A, __B), 1183 (__v8hi)__W); 1184} 1185 1186static __inline__ __m128i __DEFAULT_FN_ATTRS128 1187_mm_maskz_subs_epi16(__mmask8 __U, __m128i __A, __m128i __B) 1188{ 1189 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1190 (__v8hi)_mm_subs_epi16(__A, __B), 1191 (__v8hi)_mm_setzero_si128()); 1192} 1193 1194static __inline__ __m256i __DEFAULT_FN_ATTRS256 1195_mm256_mask_subs_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) 1196{ 1197 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1198 (__v16hi)_mm256_subs_epi16(__A, __B), 1199 (__v16hi)__W); 1200} 1201 1202static __inline__ __m256i __DEFAULT_FN_ATTRS256 1203_mm256_maskz_subs_epi16(__mmask16 __U, __m256i __A, __m256i __B) 1204{ 1205 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1206 (__v16hi)_mm256_subs_epi16(__A, __B), 1207 (__v16hi)_mm256_setzero_si256()); 1208} 1209 1210static __inline__ __m128i __DEFAULT_FN_ATTRS128 1211_mm_mask_subs_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) 1212{ 1213 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 1214 (__v16qi)_mm_subs_epu8(__A, __B), 1215 (__v16qi)__W); 1216} 1217 1218static __inline__ __m128i __DEFAULT_FN_ATTRS128 1219_mm_maskz_subs_epu8(__mmask16 __U, __m128i __A, __m128i __B) 1220{ 1221 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 1222 (__v16qi)_mm_subs_epu8(__A, __B), 1223 (__v16qi)_mm_setzero_si128()); 1224} 1225 1226static __inline__ __m256i __DEFAULT_FN_ATTRS256 1227_mm256_mask_subs_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) 1228{ 1229 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 1230 (__v32qi)_mm256_subs_epu8(__A, __B), 1231 (__v32qi)__W); 1232} 1233 1234static __inline__ __m256i __DEFAULT_FN_ATTRS256 1235_mm256_maskz_subs_epu8(__mmask32 __U, __m256i __A, __m256i __B) 1236{ 1237 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 1238 (__v32qi)_mm256_subs_epu8(__A, __B), 1239 (__v32qi)_mm256_setzero_si256()); 1240} 1241 1242static __inline__ __m128i __DEFAULT_FN_ATTRS128 1243_mm_mask_subs_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) 1244{ 1245 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1246 (__v8hi)_mm_subs_epu16(__A, __B), 1247 (__v8hi)__W); 1248} 1249 1250static __inline__ __m128i __DEFAULT_FN_ATTRS128 1251_mm_maskz_subs_epu16(__mmask8 __U, __m128i __A, __m128i __B) 1252{ 1253 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1254 (__v8hi)_mm_subs_epu16(__A, __B), 1255 (__v8hi)_mm_setzero_si128()); 1256} 1257 1258static __inline__ __m256i __DEFAULT_FN_ATTRS256 1259_mm256_mask_subs_epu16(__m256i __W, __mmask16 __U, __m256i __A, 1260 __m256i __B) { 1261 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1262 (__v16hi)_mm256_subs_epu16(__A, __B), 1263 (__v16hi)__W); 1264} 1265 1266static __inline__ __m256i __DEFAULT_FN_ATTRS256 1267_mm256_maskz_subs_epu16(__mmask16 __U, __m256i __A, __m256i __B) 1268{ 1269 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1270 (__v16hi)_mm256_subs_epu16(__A, __B), 1271 (__v16hi)_mm256_setzero_si256()); 1272} 1273 1274static __inline__ __m128i __DEFAULT_FN_ATTRS128 1275_mm_permutex2var_epi16(__m128i __A, __m128i __I, __m128i __B) 1276{ 1277 return (__m128i)__builtin_ia32_vpermi2varhi128((__v8hi)__A, (__v8hi)__I, 1278 (__v8hi) __B); 1279} 1280 1281static __inline__ __m128i __DEFAULT_FN_ATTRS128 1282_mm_mask_permutex2var_epi16(__m128i __A, __mmask8 __U, __m128i __I, 1283 __m128i __B) 1284{ 1285 return (__m128i)__builtin_ia32_selectw_128(__U, 1286 (__v8hi)_mm_permutex2var_epi16(__A, __I, __B), 1287 (__v8hi)__A); 1288} 1289 1290static __inline__ __m128i __DEFAULT_FN_ATTRS128 1291_mm_mask2_permutex2var_epi16(__m128i __A, __m128i __I, __mmask8 __U, 1292 __m128i __B) 1293{ 1294 return (__m128i)__builtin_ia32_selectw_128(__U, 1295 (__v8hi)_mm_permutex2var_epi16(__A, __I, __B), 1296 (__v8hi)__I); 1297} 1298 1299static __inline__ __m128i __DEFAULT_FN_ATTRS128 1300_mm_maskz_permutex2var_epi16 (__mmask8 __U, __m128i __A, __m128i __I, 1301 __m128i __B) 1302{ 1303 return (__m128i)__builtin_ia32_selectw_128(__U, 1304 (__v8hi)_mm_permutex2var_epi16(__A, __I, __B), 1305 (__v8hi)_mm_setzero_si128()); 1306} 1307 1308static __inline__ __m256i __DEFAULT_FN_ATTRS256 1309_mm256_permutex2var_epi16(__m256i __A, __m256i __I, __m256i __B) 1310{ 1311 return (__m256i)__builtin_ia32_vpermi2varhi256((__v16hi)__A, (__v16hi)__I, 1312 (__v16hi)__B); 1313} 1314 1315static __inline__ __m256i __DEFAULT_FN_ATTRS256 1316_mm256_mask_permutex2var_epi16(__m256i __A, __mmask16 __U, __m256i __I, 1317 __m256i __B) 1318{ 1319 return (__m256i)__builtin_ia32_selectw_256(__U, 1320 (__v16hi)_mm256_permutex2var_epi16(__A, __I, __B), 1321 (__v16hi)__A); 1322} 1323 1324static __inline__ __m256i __DEFAULT_FN_ATTRS256 1325_mm256_mask2_permutex2var_epi16(__m256i __A, __m256i __I, __mmask16 __U, 1326 __m256i __B) 1327{ 1328 return (__m256i)__builtin_ia32_selectw_256(__U, 1329 (__v16hi)_mm256_permutex2var_epi16(__A, __I, __B), 1330 (__v16hi)__I); 1331} 1332 1333static __inline__ __m256i __DEFAULT_FN_ATTRS256 1334_mm256_maskz_permutex2var_epi16 (__mmask16 __U, __m256i __A, __m256i __I, 1335 __m256i __B) 1336{ 1337 return (__m256i)__builtin_ia32_selectw_256(__U, 1338 (__v16hi)_mm256_permutex2var_epi16(__A, __I, __B), 1339 (__v16hi)_mm256_setzero_si256()); 1340} 1341 1342static __inline__ __m128i __DEFAULT_FN_ATTRS128 1343_mm_mask_maddubs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) { 1344 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1345 (__v8hi)_mm_maddubs_epi16(__X, __Y), 1346 (__v8hi)__W); 1347} 1348 1349static __inline__ __m128i __DEFAULT_FN_ATTRS128 1350_mm_maskz_maddubs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) { 1351 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1352 (__v8hi)_mm_maddubs_epi16(__X, __Y), 1353 (__v8hi)_mm_setzero_si128()); 1354} 1355 1356static __inline__ __m256i __DEFAULT_FN_ATTRS256 1357_mm256_mask_maddubs_epi16(__m256i __W, __mmask16 __U, __m256i __X, 1358 __m256i __Y) { 1359 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1360 (__v16hi)_mm256_maddubs_epi16(__X, __Y), 1361 (__v16hi)__W); 1362} 1363 1364static __inline__ __m256i __DEFAULT_FN_ATTRS256 1365_mm256_maskz_maddubs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) { 1366 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1367 (__v16hi)_mm256_maddubs_epi16(__X, __Y), 1368 (__v16hi)_mm256_setzero_si256()); 1369} 1370 1371static __inline__ __m128i __DEFAULT_FN_ATTRS128 1372_mm_mask_madd_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 1373 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U, 1374 (__v4si)_mm_madd_epi16(__A, __B), 1375 (__v4si)__W); 1376} 1377 1378static __inline__ __m128i __DEFAULT_FN_ATTRS128 1379_mm_maskz_madd_epi16(__mmask8 __U, __m128i __A, __m128i __B) { 1380 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U, 1381 (__v4si)_mm_madd_epi16(__A, __B), 1382 (__v4si)_mm_setzero_si128()); 1383} 1384 1385static __inline__ __m256i __DEFAULT_FN_ATTRS256 1386_mm256_mask_madd_epi16(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) { 1387 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U, 1388 (__v8si)_mm256_madd_epi16(__A, __B), 1389 (__v8si)__W); 1390} 1391 1392static __inline__ __m256i __DEFAULT_FN_ATTRS256 1393_mm256_maskz_madd_epi16(__mmask8 __U, __m256i __A, __m256i __B) { 1394 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U, 1395 (__v8si)_mm256_madd_epi16(__A, __B), 1396 (__v8si)_mm256_setzero_si256()); 1397} 1398 1399static __inline__ __m128i __DEFAULT_FN_ATTRS128 1400_mm_cvtsepi16_epi8 (__m128i __A) { 1401 return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A, 1402 (__v16qi) _mm_setzero_si128(), 1403 (__mmask8) -1); 1404} 1405 1406static __inline__ __m128i __DEFAULT_FN_ATTRS128 1407_mm_mask_cvtsepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) { 1408 return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A, 1409 (__v16qi) __O, 1410 __M); 1411} 1412 1413static __inline__ __m128i __DEFAULT_FN_ATTRS128 1414_mm_maskz_cvtsepi16_epi8 (__mmask8 __M, __m128i __A) { 1415 return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A, 1416 (__v16qi) _mm_setzero_si128(), 1417 __M); 1418} 1419 1420static __inline__ __m128i __DEFAULT_FN_ATTRS256 1421_mm256_cvtsepi16_epi8 (__m256i __A) { 1422 return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A, 1423 (__v16qi) _mm_setzero_si128(), 1424 (__mmask16) -1); 1425} 1426 1427static __inline__ __m128i __DEFAULT_FN_ATTRS256 1428_mm256_mask_cvtsepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) { 1429 return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A, 1430 (__v16qi) __O, 1431 __M); 1432} 1433 1434static __inline__ __m128i __DEFAULT_FN_ATTRS256 1435_mm256_maskz_cvtsepi16_epi8 (__mmask16 __M, __m256i __A) { 1436 return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A, 1437 (__v16qi) _mm_setzero_si128(), 1438 __M); 1439} 1440 1441static __inline__ __m128i __DEFAULT_FN_ATTRS128 1442_mm_cvtusepi16_epi8 (__m128i __A) { 1443 return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A, 1444 (__v16qi) _mm_setzero_si128(), 1445 (__mmask8) -1); 1446} 1447 1448static __inline__ __m128i __DEFAULT_FN_ATTRS128 1449_mm_mask_cvtusepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) { 1450 return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A, 1451 (__v16qi) __O, 1452 __M); 1453} 1454 1455static __inline__ __m128i __DEFAULT_FN_ATTRS128 1456_mm_maskz_cvtusepi16_epi8 (__mmask8 __M, __m128i __A) { 1457 return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A, 1458 (__v16qi) _mm_setzero_si128(), 1459 __M); 1460} 1461 1462static __inline__ __m128i __DEFAULT_FN_ATTRS256 1463_mm256_cvtusepi16_epi8 (__m256i __A) { 1464 return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A, 1465 (__v16qi) _mm_setzero_si128(), 1466 (__mmask16) -1); 1467} 1468 1469static __inline__ __m128i __DEFAULT_FN_ATTRS256 1470_mm256_mask_cvtusepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) { 1471 return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A, 1472 (__v16qi) __O, 1473 __M); 1474} 1475 1476static __inline__ __m128i __DEFAULT_FN_ATTRS256 1477_mm256_maskz_cvtusepi16_epi8 (__mmask16 __M, __m256i __A) { 1478 return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A, 1479 (__v16qi) _mm_setzero_si128(), 1480 __M); 1481} 1482 1483static __inline__ __m128i __DEFAULT_FN_ATTRS128 1484_mm_cvtepi16_epi8 (__m128i __A) { 1485 return (__m128i)__builtin_shufflevector( 1486 __builtin_convertvector((__v8hi)__A, __v8qi), 1487 (__v8qi){0, 0, 0, 0, 0, 0, 0, 0}, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1488 12, 13, 14, 15); 1489} 1490 1491static __inline__ __m128i __DEFAULT_FN_ATTRS128 1492_mm_mask_cvtepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) { 1493 return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A, 1494 (__v16qi) __O, 1495 __M); 1496} 1497 1498static __inline__ __m128i __DEFAULT_FN_ATTRS128 1499_mm_maskz_cvtepi16_epi8 (__mmask8 __M, __m128i __A) { 1500 return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A, 1501 (__v16qi) _mm_setzero_si128(), 1502 __M); 1503} 1504 1505static __inline__ void __DEFAULT_FN_ATTRS128 1506_mm_mask_cvtepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A) 1507{ 1508 __builtin_ia32_pmovwb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M); 1509} 1510 1511 1512static __inline__ void __DEFAULT_FN_ATTRS128 1513_mm_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A) 1514{ 1515 __builtin_ia32_pmovswb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M); 1516} 1517 1518static __inline__ void __DEFAULT_FN_ATTRS128 1519_mm_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A) 1520{ 1521 __builtin_ia32_pmovuswb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M); 1522} 1523 1524static __inline__ __m128i __DEFAULT_FN_ATTRS256 1525_mm256_cvtepi16_epi8 (__m256i __A) { 1526 return (__m128i)__builtin_convertvector((__v16hi) __A, __v16qi); 1527} 1528 1529static __inline__ __m128i __DEFAULT_FN_ATTRS256 1530_mm256_mask_cvtepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) { 1531 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M, 1532 (__v16qi)_mm256_cvtepi16_epi8(__A), 1533 (__v16qi)__O); 1534} 1535 1536static __inline__ __m128i __DEFAULT_FN_ATTRS256 1537_mm256_maskz_cvtepi16_epi8 (__mmask16 __M, __m256i __A) { 1538 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M, 1539 (__v16qi)_mm256_cvtepi16_epi8(__A), 1540 (__v16qi)_mm_setzero_si128()); 1541} 1542 1543static __inline__ void __DEFAULT_FN_ATTRS256 1544_mm256_mask_cvtepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A) 1545{ 1546 __builtin_ia32_pmovwb256mem_mask ((__v16qi *) __P, (__v16hi) __A, __M); 1547} 1548 1549static __inline__ void __DEFAULT_FN_ATTRS256 1550_mm256_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A) 1551{ 1552 __builtin_ia32_pmovswb256mem_mask ((__v16qi *) __P, (__v16hi) __A, __M); 1553} 1554 1555static __inline__ void __DEFAULT_FN_ATTRS256 1556_mm256_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A) 1557{ 1558 __builtin_ia32_pmovuswb256mem_mask ((__v16qi*) __P, (__v16hi) __A, __M); 1559} 1560 1561static __inline__ __m128i __DEFAULT_FN_ATTRS128 1562_mm_mask_mulhrs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) { 1563 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1564 (__v8hi)_mm_mulhrs_epi16(__X, __Y), 1565 (__v8hi)__W); 1566} 1567 1568static __inline__ __m128i __DEFAULT_FN_ATTRS128 1569_mm_maskz_mulhrs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) { 1570 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1571 (__v8hi)_mm_mulhrs_epi16(__X, __Y), 1572 (__v8hi)_mm_setzero_si128()); 1573} 1574 1575static __inline__ __m256i __DEFAULT_FN_ATTRS256 1576_mm256_mask_mulhrs_epi16(__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) { 1577 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1578 (__v16hi)_mm256_mulhrs_epi16(__X, __Y), 1579 (__v16hi)__W); 1580} 1581 1582static __inline__ __m256i __DEFAULT_FN_ATTRS256 1583_mm256_maskz_mulhrs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) { 1584 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1585 (__v16hi)_mm256_mulhrs_epi16(__X, __Y), 1586 (__v16hi)_mm256_setzero_si256()); 1587} 1588 1589static __inline__ __m128i __DEFAULT_FN_ATTRS128 1590_mm_mask_mulhi_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 1591 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1592 (__v8hi)_mm_mulhi_epu16(__A, __B), 1593 (__v8hi)__W); 1594} 1595 1596static __inline__ __m128i __DEFAULT_FN_ATTRS128 1597_mm_maskz_mulhi_epu16(__mmask8 __U, __m128i __A, __m128i __B) { 1598 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1599 (__v8hi)_mm_mulhi_epu16(__A, __B), 1600 (__v8hi)_mm_setzero_si128()); 1601} 1602 1603static __inline__ __m256i __DEFAULT_FN_ATTRS256 1604_mm256_mask_mulhi_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) { 1605 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1606 (__v16hi)_mm256_mulhi_epu16(__A, __B), 1607 (__v16hi)__W); 1608} 1609 1610static __inline__ __m256i __DEFAULT_FN_ATTRS256 1611_mm256_maskz_mulhi_epu16(__mmask16 __U, __m256i __A, __m256i __B) { 1612 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1613 (__v16hi)_mm256_mulhi_epu16(__A, __B), 1614 (__v16hi)_mm256_setzero_si256()); 1615} 1616 1617static __inline__ __m128i __DEFAULT_FN_ATTRS128 1618_mm_mask_mulhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 1619 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1620 (__v8hi)_mm_mulhi_epi16(__A, __B), 1621 (__v8hi)__W); 1622} 1623 1624static __inline__ __m128i __DEFAULT_FN_ATTRS128 1625_mm_maskz_mulhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) { 1626 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1627 (__v8hi)_mm_mulhi_epi16(__A, __B), 1628 (__v8hi)_mm_setzero_si128()); 1629} 1630 1631static __inline__ __m256i __DEFAULT_FN_ATTRS256 1632_mm256_mask_mulhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) { 1633 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1634 (__v16hi)_mm256_mulhi_epi16(__A, __B), 1635 (__v16hi)__W); 1636} 1637 1638static __inline__ __m256i __DEFAULT_FN_ATTRS256 1639_mm256_maskz_mulhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) { 1640 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1641 (__v16hi)_mm256_mulhi_epi16(__A, __B), 1642 (__v16hi)_mm256_setzero_si256()); 1643} 1644 1645static __inline__ __m128i __DEFAULT_FN_ATTRS128 1646_mm_mask_unpackhi_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) { 1647 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 1648 (__v16qi)_mm_unpackhi_epi8(__A, __B), 1649 (__v16qi)__W); 1650} 1651 1652static __inline__ __m128i __DEFAULT_FN_ATTRS128 1653_mm_maskz_unpackhi_epi8(__mmask16 __U, __m128i __A, __m128i __B) { 1654 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 1655 (__v16qi)_mm_unpackhi_epi8(__A, __B), 1656 (__v16qi)_mm_setzero_si128()); 1657} 1658 1659static __inline__ __m256i __DEFAULT_FN_ATTRS256 1660_mm256_mask_unpackhi_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) { 1661 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 1662 (__v32qi)_mm256_unpackhi_epi8(__A, __B), 1663 (__v32qi)__W); 1664} 1665 1666static __inline__ __m256i __DEFAULT_FN_ATTRS256 1667_mm256_maskz_unpackhi_epi8(__mmask32 __U, __m256i __A, __m256i __B) { 1668 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 1669 (__v32qi)_mm256_unpackhi_epi8(__A, __B), 1670 (__v32qi)_mm256_setzero_si256()); 1671} 1672 1673static __inline__ __m128i __DEFAULT_FN_ATTRS128 1674_mm_mask_unpackhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 1675 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1676 (__v8hi)_mm_unpackhi_epi16(__A, __B), 1677 (__v8hi)__W); 1678} 1679 1680static __inline__ __m128i __DEFAULT_FN_ATTRS128 1681_mm_maskz_unpackhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) { 1682 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1683 (__v8hi)_mm_unpackhi_epi16(__A, __B), 1684 (__v8hi) _mm_setzero_si128()); 1685} 1686 1687static __inline__ __m256i __DEFAULT_FN_ATTRS256 1688_mm256_mask_unpackhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) { 1689 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1690 (__v16hi)_mm256_unpackhi_epi16(__A, __B), 1691 (__v16hi)__W); 1692} 1693 1694static __inline__ __m256i __DEFAULT_FN_ATTRS256 1695_mm256_maskz_unpackhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) { 1696 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1697 (__v16hi)_mm256_unpackhi_epi16(__A, __B), 1698 (__v16hi)_mm256_setzero_si256()); 1699} 1700 1701static __inline__ __m128i __DEFAULT_FN_ATTRS128 1702_mm_mask_unpacklo_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) { 1703 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 1704 (__v16qi)_mm_unpacklo_epi8(__A, __B), 1705 (__v16qi)__W); 1706} 1707 1708static __inline__ __m128i __DEFAULT_FN_ATTRS128 1709_mm_maskz_unpacklo_epi8(__mmask16 __U, __m128i __A, __m128i __B) { 1710 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 1711 (__v16qi)_mm_unpacklo_epi8(__A, __B), 1712 (__v16qi)_mm_setzero_si128()); 1713} 1714 1715static __inline__ __m256i __DEFAULT_FN_ATTRS256 1716_mm256_mask_unpacklo_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) { 1717 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 1718 (__v32qi)_mm256_unpacklo_epi8(__A, __B), 1719 (__v32qi)__W); 1720} 1721 1722static __inline__ __m256i __DEFAULT_FN_ATTRS256 1723_mm256_maskz_unpacklo_epi8(__mmask32 __U, __m256i __A, __m256i __B) { 1724 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 1725 (__v32qi)_mm256_unpacklo_epi8(__A, __B), 1726 (__v32qi)_mm256_setzero_si256()); 1727} 1728 1729static __inline__ __m128i __DEFAULT_FN_ATTRS128 1730_mm_mask_unpacklo_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 1731 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1732 (__v8hi)_mm_unpacklo_epi16(__A, __B), 1733 (__v8hi)__W); 1734} 1735 1736static __inline__ __m128i __DEFAULT_FN_ATTRS128 1737_mm_maskz_unpacklo_epi16(__mmask8 __U, __m128i __A, __m128i __B) { 1738 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1739 (__v8hi)_mm_unpacklo_epi16(__A, __B), 1740 (__v8hi) _mm_setzero_si128()); 1741} 1742 1743static __inline__ __m256i __DEFAULT_FN_ATTRS256 1744_mm256_mask_unpacklo_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) { 1745 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1746 (__v16hi)_mm256_unpacklo_epi16(__A, __B), 1747 (__v16hi)__W); 1748} 1749 1750static __inline__ __m256i __DEFAULT_FN_ATTRS256 1751_mm256_maskz_unpacklo_epi16(__mmask16 __U, __m256i __A, __m256i __B) { 1752 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1753 (__v16hi)_mm256_unpacklo_epi16(__A, __B), 1754 (__v16hi)_mm256_setzero_si256()); 1755} 1756 1757static __inline__ __m128i __DEFAULT_FN_ATTRS128 1758_mm_mask_cvtepi8_epi16(__m128i __W, __mmask8 __U, __m128i __A) 1759{ 1760 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1761 (__v8hi)_mm_cvtepi8_epi16(__A), 1762 (__v8hi)__W); 1763} 1764 1765static __inline__ __m128i __DEFAULT_FN_ATTRS128 1766_mm_maskz_cvtepi8_epi16(__mmask8 __U, __m128i __A) 1767{ 1768 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1769 (__v8hi)_mm_cvtepi8_epi16(__A), 1770 (__v8hi)_mm_setzero_si128()); 1771} 1772 1773static __inline__ __m256i __DEFAULT_FN_ATTRS256 1774_mm256_mask_cvtepi8_epi16(__m256i __W, __mmask16 __U, __m128i __A) 1775{ 1776 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1777 (__v16hi)_mm256_cvtepi8_epi16(__A), 1778 (__v16hi)__W); 1779} 1780 1781static __inline__ __m256i __DEFAULT_FN_ATTRS256 1782_mm256_maskz_cvtepi8_epi16(__mmask16 __U, __m128i __A) 1783{ 1784 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1785 (__v16hi)_mm256_cvtepi8_epi16(__A), 1786 (__v16hi)_mm256_setzero_si256()); 1787} 1788 1789 1790static __inline__ __m128i __DEFAULT_FN_ATTRS128 1791_mm_mask_cvtepu8_epi16(__m128i __W, __mmask8 __U, __m128i __A) 1792{ 1793 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1794 (__v8hi)_mm_cvtepu8_epi16(__A), 1795 (__v8hi)__W); 1796} 1797 1798static __inline__ __m128i __DEFAULT_FN_ATTRS128 1799_mm_maskz_cvtepu8_epi16(__mmask8 __U, __m128i __A) 1800{ 1801 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1802 (__v8hi)_mm_cvtepu8_epi16(__A), 1803 (__v8hi)_mm_setzero_si128()); 1804} 1805 1806static __inline__ __m256i __DEFAULT_FN_ATTRS256 1807_mm256_mask_cvtepu8_epi16(__m256i __W, __mmask16 __U, __m128i __A) 1808{ 1809 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1810 (__v16hi)_mm256_cvtepu8_epi16(__A), 1811 (__v16hi)__W); 1812} 1813 1814static __inline__ __m256i __DEFAULT_FN_ATTRS256 1815_mm256_maskz_cvtepu8_epi16 (__mmask16 __U, __m128i __A) 1816{ 1817 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1818 (__v16hi)_mm256_cvtepu8_epi16(__A), 1819 (__v16hi)_mm256_setzero_si256()); 1820} 1821 1822 1823#define _mm_mask_shufflehi_epi16(W, U, A, imm) \ 1824 (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \ 1825 (__v8hi)_mm_shufflehi_epi16((A), (imm)), \ 1826 (__v8hi)(__m128i)(W)) 1827 1828#define _mm_maskz_shufflehi_epi16(U, A, imm) \ 1829 (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \ 1830 (__v8hi)_mm_shufflehi_epi16((A), (imm)), \ 1831 (__v8hi)_mm_setzero_si128()) 1832 1833#define _mm256_mask_shufflehi_epi16(W, U, A, imm) \ 1834 (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \ 1835 (__v16hi)_mm256_shufflehi_epi16((A), (imm)), \ 1836 (__v16hi)(__m256i)(W)) 1837 1838#define _mm256_maskz_shufflehi_epi16(U, A, imm) \ 1839 (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \ 1840 (__v16hi)_mm256_shufflehi_epi16((A), (imm)), \ 1841 (__v16hi)_mm256_setzero_si256()) 1842 1843#define _mm_mask_shufflelo_epi16(W, U, A, imm) \ 1844 (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \ 1845 (__v8hi)_mm_shufflelo_epi16((A), (imm)), \ 1846 (__v8hi)(__m128i)(W)) 1847 1848#define _mm_maskz_shufflelo_epi16(U, A, imm) \ 1849 (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \ 1850 (__v8hi)_mm_shufflelo_epi16((A), (imm)), \ 1851 (__v8hi)_mm_setzero_si128()) 1852 1853#define _mm256_mask_shufflelo_epi16(W, U, A, imm) \ 1854 (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \ 1855 (__v16hi)_mm256_shufflelo_epi16((A), \ 1856 (imm)), \ 1857 (__v16hi)(__m256i)(W)) 1858 1859#define _mm256_maskz_shufflelo_epi16(U, A, imm) \ 1860 (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \ 1861 (__v16hi)_mm256_shufflelo_epi16((A), \ 1862 (imm)), \ 1863 (__v16hi)_mm256_setzero_si256()) 1864 1865static __inline__ __m256i __DEFAULT_FN_ATTRS256 1866_mm256_sllv_epi16(__m256i __A, __m256i __B) 1867{ 1868 return (__m256i)__builtin_ia32_psllv16hi((__v16hi)__A, (__v16hi)__B); 1869} 1870 1871static __inline__ __m256i __DEFAULT_FN_ATTRS256 1872_mm256_mask_sllv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) 1873{ 1874 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1875 (__v16hi)_mm256_sllv_epi16(__A, __B), 1876 (__v16hi)__W); 1877} 1878 1879static __inline__ __m256i __DEFAULT_FN_ATTRS256 1880_mm256_maskz_sllv_epi16(__mmask16 __U, __m256i __A, __m256i __B) 1881{ 1882 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1883 (__v16hi)_mm256_sllv_epi16(__A, __B), 1884 (__v16hi)_mm256_setzero_si256()); 1885} 1886 1887static __inline__ __m128i __DEFAULT_FN_ATTRS128 1888_mm_sllv_epi16(__m128i __A, __m128i __B) 1889{ 1890 return (__m128i)__builtin_ia32_psllv8hi((__v8hi)__A, (__v8hi)__B); 1891} 1892 1893static __inline__ __m128i __DEFAULT_FN_ATTRS128 1894_mm_mask_sllv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) 1895{ 1896 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1897 (__v8hi)_mm_sllv_epi16(__A, __B), 1898 (__v8hi)__W); 1899} 1900 1901static __inline__ __m128i __DEFAULT_FN_ATTRS128 1902_mm_maskz_sllv_epi16(__mmask8 __U, __m128i __A, __m128i __B) 1903{ 1904 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1905 (__v8hi)_mm_sllv_epi16(__A, __B), 1906 (__v8hi)_mm_setzero_si128()); 1907} 1908 1909static __inline__ __m128i __DEFAULT_FN_ATTRS128 1910_mm_mask_sll_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) 1911{ 1912 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1913 (__v8hi)_mm_sll_epi16(__A, __B), 1914 (__v8hi)__W); 1915} 1916 1917static __inline__ __m128i __DEFAULT_FN_ATTRS128 1918_mm_maskz_sll_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 1919{ 1920 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1921 (__v8hi)_mm_sll_epi16(__A, __B), 1922 (__v8hi)_mm_setzero_si128()); 1923} 1924 1925static __inline__ __m256i __DEFAULT_FN_ATTRS256 1926_mm256_mask_sll_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) 1927{ 1928 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1929 (__v16hi)_mm256_sll_epi16(__A, __B), 1930 (__v16hi)__W); 1931} 1932 1933static __inline__ __m256i __DEFAULT_FN_ATTRS256 1934_mm256_maskz_sll_epi16(__mmask16 __U, __m256i __A, __m128i __B) 1935{ 1936 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1937 (__v16hi)_mm256_sll_epi16(__A, __B), 1938 (__v16hi)_mm256_setzero_si256()); 1939} 1940 1941static __inline__ __m128i __DEFAULT_FN_ATTRS128 1942_mm_mask_slli_epi16(__m128i __W, __mmask8 __U, __m128i __A, int __B) 1943{ 1944 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1945 (__v8hi)_mm_slli_epi16(__A, __B), 1946 (__v8hi)__W); 1947} 1948 1949static __inline__ __m128i __DEFAULT_FN_ATTRS128 1950_mm_maskz_slli_epi16 (__mmask8 __U, __m128i __A, int __B) 1951{ 1952 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 1953 (__v8hi)_mm_slli_epi16(__A, __B), 1954 (__v8hi)_mm_setzero_si128()); 1955} 1956 1957static __inline__ __m256i __DEFAULT_FN_ATTRS256 1958_mm256_mask_slli_epi16(__m256i __W, __mmask16 __U, __m256i __A, int __B) 1959{ 1960 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1961 (__v16hi)_mm256_slli_epi16(__A, __B), 1962 (__v16hi)__W); 1963} 1964 1965static __inline__ __m256i __DEFAULT_FN_ATTRS256 1966_mm256_maskz_slli_epi16(__mmask16 __U, __m256i __A, int __B) 1967{ 1968 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1969 (__v16hi)_mm256_slli_epi16(__A, __B), 1970 (__v16hi)_mm256_setzero_si256()); 1971} 1972 1973static __inline__ __m256i __DEFAULT_FN_ATTRS256 1974_mm256_srlv_epi16(__m256i __A, __m256i __B) 1975{ 1976 return (__m256i)__builtin_ia32_psrlv16hi((__v16hi)__A, (__v16hi)__B); 1977} 1978 1979static __inline__ __m256i __DEFAULT_FN_ATTRS256 1980_mm256_mask_srlv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) 1981{ 1982 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1983 (__v16hi)_mm256_srlv_epi16(__A, __B), 1984 (__v16hi)__W); 1985} 1986 1987static __inline__ __m256i __DEFAULT_FN_ATTRS256 1988_mm256_maskz_srlv_epi16(__mmask16 __U, __m256i __A, __m256i __B) 1989{ 1990 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 1991 (__v16hi)_mm256_srlv_epi16(__A, __B), 1992 (__v16hi)_mm256_setzero_si256()); 1993} 1994 1995static __inline__ __m128i __DEFAULT_FN_ATTRS128 1996_mm_srlv_epi16(__m128i __A, __m128i __B) 1997{ 1998 return (__m128i)__builtin_ia32_psrlv8hi((__v8hi)__A, (__v8hi)__B); 1999} 2000 2001static __inline__ __m128i __DEFAULT_FN_ATTRS128 2002_mm_mask_srlv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) 2003{ 2004 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 2005 (__v8hi)_mm_srlv_epi16(__A, __B), 2006 (__v8hi)__W); 2007} 2008 2009static __inline__ __m128i __DEFAULT_FN_ATTRS128 2010_mm_maskz_srlv_epi16(__mmask8 __U, __m128i __A, __m128i __B) 2011{ 2012 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 2013 (__v8hi)_mm_srlv_epi16(__A, __B), 2014 (__v8hi)_mm_setzero_si128()); 2015} 2016 2017static __inline__ __m256i __DEFAULT_FN_ATTRS256 2018_mm256_srav_epi16(__m256i __A, __m256i __B) 2019{ 2020 return (__m256i)__builtin_ia32_psrav16hi((__v16hi)__A, (__v16hi)__B); 2021} 2022 2023static __inline__ __m256i __DEFAULT_FN_ATTRS256 2024_mm256_mask_srav_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) 2025{ 2026 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 2027 (__v16hi)_mm256_srav_epi16(__A, __B), 2028 (__v16hi)__W); 2029} 2030 2031static __inline__ __m256i __DEFAULT_FN_ATTRS256 2032_mm256_maskz_srav_epi16(__mmask16 __U, __m256i __A, __m256i __B) 2033{ 2034 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 2035 (__v16hi)_mm256_srav_epi16(__A, __B), 2036 (__v16hi)_mm256_setzero_si256()); 2037} 2038 2039static __inline__ __m128i __DEFAULT_FN_ATTRS128 2040_mm_srav_epi16(__m128i __A, __m128i __B) 2041{ 2042 return (__m128i)__builtin_ia32_psrav8hi((__v8hi)__A, (__v8hi)__B); 2043} 2044 2045static __inline__ __m128i __DEFAULT_FN_ATTRS128 2046_mm_mask_srav_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) 2047{ 2048 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 2049 (__v8hi)_mm_srav_epi16(__A, __B), 2050 (__v8hi)__W); 2051} 2052 2053static __inline__ __m128i __DEFAULT_FN_ATTRS128 2054_mm_maskz_srav_epi16(__mmask8 __U, __m128i __A, __m128i __B) 2055{ 2056 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 2057 (__v8hi)_mm_srav_epi16(__A, __B), 2058 (__v8hi)_mm_setzero_si128()); 2059} 2060 2061static __inline__ __m128i __DEFAULT_FN_ATTRS128 2062_mm_mask_sra_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) 2063{ 2064 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 2065 (__v8hi)_mm_sra_epi16(__A, __B), 2066 (__v8hi)__W); 2067} 2068 2069static __inline__ __m128i __DEFAULT_FN_ATTRS128 2070_mm_maskz_sra_epi16(__mmask8 __U, __m128i __A, __m128i __B) 2071{ 2072 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 2073 (__v8hi)_mm_sra_epi16(__A, __B), 2074 (__v8hi)_mm_setzero_si128()); 2075} 2076 2077static __inline__ __m256i __DEFAULT_FN_ATTRS256 2078_mm256_mask_sra_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) 2079{ 2080 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 2081 (__v16hi)_mm256_sra_epi16(__A, __B), 2082 (__v16hi)__W); 2083} 2084 2085static __inline__ __m256i __DEFAULT_FN_ATTRS256 2086_mm256_maskz_sra_epi16(__mmask16 __U, __m256i __A, __m128i __B) 2087{ 2088 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 2089 (__v16hi)_mm256_sra_epi16(__A, __B), 2090 (__v16hi)_mm256_setzero_si256()); 2091} 2092 2093static __inline__ __m128i __DEFAULT_FN_ATTRS128 2094_mm_mask_srai_epi16(__m128i __W, __mmask8 __U, __m128i __A, int __B) 2095{ 2096 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 2097 (__v8hi)_mm_srai_epi16(__A, __B), 2098 (__v8hi)__W); 2099} 2100 2101static __inline__ __m128i __DEFAULT_FN_ATTRS128 2102_mm_maskz_srai_epi16(__mmask8 __U, __m128i __A, int __B) 2103{ 2104 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 2105 (__v8hi)_mm_srai_epi16(__A, __B), 2106 (__v8hi)_mm_setzero_si128()); 2107} 2108 2109static __inline__ __m256i __DEFAULT_FN_ATTRS256 2110_mm256_mask_srai_epi16(__m256i __W, __mmask16 __U, __m256i __A, int __B) 2111{ 2112 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 2113 (__v16hi)_mm256_srai_epi16(__A, __B), 2114 (__v16hi)__W); 2115} 2116 2117static __inline__ __m256i __DEFAULT_FN_ATTRS256 2118_mm256_maskz_srai_epi16(__mmask16 __U, __m256i __A, int __B) 2119{ 2120 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 2121 (__v16hi)_mm256_srai_epi16(__A, __B), 2122 (__v16hi)_mm256_setzero_si256()); 2123} 2124 2125static __inline__ __m128i __DEFAULT_FN_ATTRS128 2126_mm_mask_srl_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) 2127{ 2128 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 2129 (__v8hi)_mm_srl_epi16(__A, __B), 2130 (__v8hi)__W); 2131} 2132 2133static __inline__ __m128i __DEFAULT_FN_ATTRS128 2134_mm_maskz_srl_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 2135{ 2136 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 2137 (__v8hi)_mm_srl_epi16(__A, __B), 2138 (__v8hi)_mm_setzero_si128()); 2139} 2140 2141static __inline__ __m256i __DEFAULT_FN_ATTRS256 2142_mm256_mask_srl_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) 2143{ 2144 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 2145 (__v16hi)_mm256_srl_epi16(__A, __B), 2146 (__v16hi)__W); 2147} 2148 2149static __inline__ __m256i __DEFAULT_FN_ATTRS256 2150_mm256_maskz_srl_epi16(__mmask16 __U, __m256i __A, __m128i __B) 2151{ 2152 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 2153 (__v16hi)_mm256_srl_epi16(__A, __B), 2154 (__v16hi)_mm256_setzero_si256()); 2155} 2156 2157static __inline__ __m128i __DEFAULT_FN_ATTRS128 2158_mm_mask_srli_epi16(__m128i __W, __mmask8 __U, __m128i __A, int __B) 2159{ 2160 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 2161 (__v8hi)_mm_srli_epi16(__A, __B), 2162 (__v8hi)__W); 2163} 2164 2165static __inline__ __m128i __DEFAULT_FN_ATTRS128 2166_mm_maskz_srli_epi16 (__mmask8 __U, __m128i __A, int __B) 2167{ 2168 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 2169 (__v8hi)_mm_srli_epi16(__A, __B), 2170 (__v8hi)_mm_setzero_si128()); 2171} 2172 2173static __inline__ __m256i __DEFAULT_FN_ATTRS256 2174_mm256_mask_srli_epi16(__m256i __W, __mmask16 __U, __m256i __A, int __B) 2175{ 2176 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 2177 (__v16hi)_mm256_srli_epi16(__A, __B), 2178 (__v16hi)__W); 2179} 2180 2181static __inline__ __m256i __DEFAULT_FN_ATTRS256 2182_mm256_maskz_srli_epi16(__mmask16 __U, __m256i __A, int __B) 2183{ 2184 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 2185 (__v16hi)_mm256_srli_epi16(__A, __B), 2186 (__v16hi)_mm256_setzero_si256()); 2187} 2188 2189static __inline__ __m128i __DEFAULT_FN_ATTRS128 2190_mm_mask_mov_epi16 (__m128i __W, __mmask8 __U, __m128i __A) 2191{ 2192 return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U, 2193 (__v8hi) __A, 2194 (__v8hi) __W); 2195} 2196 2197static __inline__ __m128i __DEFAULT_FN_ATTRS128 2198_mm_maskz_mov_epi16 (__mmask8 __U, __m128i __A) 2199{ 2200 return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U, 2201 (__v8hi) __A, 2202 (__v8hi) _mm_setzero_si128 ()); 2203} 2204 2205static __inline__ __m256i __DEFAULT_FN_ATTRS256 2206_mm256_mask_mov_epi16 (__m256i __W, __mmask16 __U, __m256i __A) 2207{ 2208 return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U, 2209 (__v16hi) __A, 2210 (__v16hi) __W); 2211} 2212 2213static __inline__ __m256i __DEFAULT_FN_ATTRS256 2214_mm256_maskz_mov_epi16 (__mmask16 __U, __m256i __A) 2215{ 2216 return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U, 2217 (__v16hi) __A, 2218 (__v16hi) _mm256_setzero_si256 ()); 2219} 2220 2221static __inline__ __m128i __DEFAULT_FN_ATTRS128 2222_mm_mask_mov_epi8 (__m128i __W, __mmask16 __U, __m128i __A) 2223{ 2224 return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U, 2225 (__v16qi) __A, 2226 (__v16qi) __W); 2227} 2228 2229static __inline__ __m128i __DEFAULT_FN_ATTRS128 2230_mm_maskz_mov_epi8 (__mmask16 __U, __m128i __A) 2231{ 2232 return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U, 2233 (__v16qi) __A, 2234 (__v16qi) _mm_setzero_si128 ()); 2235} 2236 2237static __inline__ __m256i __DEFAULT_FN_ATTRS256 2238_mm256_mask_mov_epi8 (__m256i __W, __mmask32 __U, __m256i __A) 2239{ 2240 return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U, 2241 (__v32qi) __A, 2242 (__v32qi) __W); 2243} 2244 2245static __inline__ __m256i __DEFAULT_FN_ATTRS256 2246_mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A) 2247{ 2248 return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U, 2249 (__v32qi) __A, 2250 (__v32qi) _mm256_setzero_si256 ()); 2251} 2252 2253 2254static __inline__ __m128i __DEFAULT_FN_ATTRS128 2255_mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A) 2256{ 2257 return (__m128i) __builtin_ia32_selectb_128(__M, 2258 (__v16qi) _mm_set1_epi8(__A), 2259 (__v16qi) __O); 2260} 2261 2262static __inline__ __m128i __DEFAULT_FN_ATTRS128 2263_mm_maskz_set1_epi8 (__mmask16 __M, char __A) 2264{ 2265 return (__m128i) __builtin_ia32_selectb_128(__M, 2266 (__v16qi) _mm_set1_epi8(__A), 2267 (__v16qi) _mm_setzero_si128()); 2268} 2269 2270static __inline__ __m256i __DEFAULT_FN_ATTRS256 2271_mm256_mask_set1_epi8 (__m256i __O, __mmask32 __M, char __A) 2272{ 2273 return (__m256i) __builtin_ia32_selectb_256(__M, 2274 (__v32qi) _mm256_set1_epi8(__A), 2275 (__v32qi) __O); 2276} 2277 2278static __inline__ __m256i __DEFAULT_FN_ATTRS256 2279_mm256_maskz_set1_epi8 (__mmask32 __M, char __A) 2280{ 2281 return (__m256i) __builtin_ia32_selectb_256(__M, 2282 (__v32qi) _mm256_set1_epi8(__A), 2283 (__v32qi) _mm256_setzero_si256()); 2284} 2285 2286static __inline __m128i __DEFAULT_FN_ATTRS128 2287_mm_loadu_epi16 (void const *__P) 2288{ 2289 struct __loadu_epi16 { 2290 __m128i_u __v; 2291 } __attribute__((__packed__, __may_alias__)); 2292 return ((const struct __loadu_epi16*)__P)->__v; 2293} 2294 2295static __inline__ __m128i __DEFAULT_FN_ATTRS128 2296_mm_mask_loadu_epi16 (__m128i __W, __mmask8 __U, void const *__P) 2297{ 2298 return (__m128i) __builtin_ia32_loaddquhi128_mask ((const __v8hi *) __P, 2299 (__v8hi) __W, 2300 (__mmask8) __U); 2301} 2302 2303static __inline__ __m128i __DEFAULT_FN_ATTRS128 2304_mm_maskz_loadu_epi16 (__mmask8 __U, void const *__P) 2305{ 2306 return (__m128i) __builtin_ia32_loaddquhi128_mask ((const __v8hi *) __P, 2307 (__v8hi) 2308 _mm_setzero_si128 (), 2309 (__mmask8) __U); 2310} 2311 2312static __inline __m256i __DEFAULT_FN_ATTRS256 2313_mm256_loadu_epi16 (void const *__P) 2314{ 2315 struct __loadu_epi16 { 2316 __m256i_u __v; 2317 } __attribute__((__packed__, __may_alias__)); 2318 return ((const struct __loadu_epi16*)__P)->__v; 2319} 2320 2321static __inline__ __m256i __DEFAULT_FN_ATTRS256 2322_mm256_mask_loadu_epi16 (__m256i __W, __mmask16 __U, void const *__P) 2323{ 2324 return (__m256i) __builtin_ia32_loaddquhi256_mask ((const __v16hi *) __P, 2325 (__v16hi) __W, 2326 (__mmask16) __U); 2327} 2328 2329static __inline__ __m256i __DEFAULT_FN_ATTRS256 2330_mm256_maskz_loadu_epi16 (__mmask16 __U, void const *__P) 2331{ 2332 return (__m256i) __builtin_ia32_loaddquhi256_mask ((const __v16hi *) __P, 2333 (__v16hi) 2334 _mm256_setzero_si256 (), 2335 (__mmask16) __U); 2336} 2337 2338static __inline __m128i __DEFAULT_FN_ATTRS128 2339_mm_loadu_epi8 (void const *__P) 2340{ 2341 struct __loadu_epi8 { 2342 __m128i_u __v; 2343 } __attribute__((__packed__, __may_alias__)); 2344 return ((const struct __loadu_epi8*)__P)->__v; 2345} 2346 2347static __inline__ __m128i __DEFAULT_FN_ATTRS128 2348_mm_mask_loadu_epi8 (__m128i __W, __mmask16 __U, void const *__P) 2349{ 2350 return (__m128i) __builtin_ia32_loaddquqi128_mask ((const __v16qi *) __P, 2351 (__v16qi) __W, 2352 (__mmask16) __U); 2353} 2354 2355static __inline__ __m128i __DEFAULT_FN_ATTRS128 2356_mm_maskz_loadu_epi8 (__mmask16 __U, void const *__P) 2357{ 2358 return (__m128i) __builtin_ia32_loaddquqi128_mask ((const __v16qi *) __P, 2359 (__v16qi) 2360 _mm_setzero_si128 (), 2361 (__mmask16) __U); 2362} 2363 2364static __inline __m256i __DEFAULT_FN_ATTRS256 2365_mm256_loadu_epi8 (void const *__P) 2366{ 2367 struct __loadu_epi8 { 2368 __m256i_u __v; 2369 } __attribute__((__packed__, __may_alias__)); 2370 return ((const struct __loadu_epi8*)__P)->__v; 2371} 2372 2373static __inline__ __m256i __DEFAULT_FN_ATTRS256 2374_mm256_mask_loadu_epi8 (__m256i __W, __mmask32 __U, void const *__P) 2375{ 2376 return (__m256i) __builtin_ia32_loaddquqi256_mask ((const __v32qi *) __P, 2377 (__v32qi) __W, 2378 (__mmask32) __U); 2379} 2380 2381static __inline__ __m256i __DEFAULT_FN_ATTRS256 2382_mm256_maskz_loadu_epi8 (__mmask32 __U, void const *__P) 2383{ 2384 return (__m256i) __builtin_ia32_loaddquqi256_mask ((const __v32qi *) __P, 2385 (__v32qi) 2386 _mm256_setzero_si256 (), 2387 (__mmask32) __U); 2388} 2389 2390static __inline void __DEFAULT_FN_ATTRS128 2391_mm_storeu_epi16 (void *__P, __m128i __A) 2392{ 2393 struct __storeu_epi16 { 2394 __m128i_u __v; 2395 } __attribute__((__packed__, __may_alias__)); 2396 ((struct __storeu_epi16*)__P)->__v = __A; 2397} 2398 2399static __inline__ void __DEFAULT_FN_ATTRS128 2400_mm_mask_storeu_epi16 (void *__P, __mmask8 __U, __m128i __A) 2401{ 2402 __builtin_ia32_storedquhi128_mask ((__v8hi *) __P, 2403 (__v8hi) __A, 2404 (__mmask8) __U); 2405} 2406 2407static __inline void __DEFAULT_FN_ATTRS256 2408_mm256_storeu_epi16 (void *__P, __m256i __A) 2409{ 2410 struct __storeu_epi16 { 2411 __m256i_u __v; 2412 } __attribute__((__packed__, __may_alias__)); 2413 ((struct __storeu_epi16*)__P)->__v = __A; 2414} 2415 2416static __inline__ void __DEFAULT_FN_ATTRS256 2417_mm256_mask_storeu_epi16 (void *__P, __mmask16 __U, __m256i __A) 2418{ 2419 __builtin_ia32_storedquhi256_mask ((__v16hi *) __P, 2420 (__v16hi) __A, 2421 (__mmask16) __U); 2422} 2423 2424static __inline void __DEFAULT_FN_ATTRS128 2425_mm_storeu_epi8 (void *__P, __m128i __A) 2426{ 2427 struct __storeu_epi8 { 2428 __m128i_u __v; 2429 } __attribute__((__packed__, __may_alias__)); 2430 ((struct __storeu_epi8*)__P)->__v = __A; 2431} 2432 2433static __inline__ void __DEFAULT_FN_ATTRS128 2434_mm_mask_storeu_epi8 (void *__P, __mmask16 __U, __m128i __A) 2435{ 2436 __builtin_ia32_storedquqi128_mask ((__v16qi *) __P, 2437 (__v16qi) __A, 2438 (__mmask16) __U); 2439} 2440 2441static __inline void __DEFAULT_FN_ATTRS256 2442_mm256_storeu_epi8 (void *__P, __m256i __A) 2443{ 2444 struct __storeu_epi8 { 2445 __m256i_u __v; 2446 } __attribute__((__packed__, __may_alias__)); 2447 ((struct __storeu_epi8*)__P)->__v = __A; 2448} 2449 2450static __inline__ void __DEFAULT_FN_ATTRS256 2451_mm256_mask_storeu_epi8 (void *__P, __mmask32 __U, __m256i __A) 2452{ 2453 __builtin_ia32_storedquqi256_mask ((__v32qi *) __P, 2454 (__v32qi) __A, 2455 (__mmask32) __U); 2456} 2457 2458static __inline__ __mmask16 __DEFAULT_FN_ATTRS128 2459_mm_test_epi8_mask (__m128i __A, __m128i __B) 2460{ 2461 return _mm_cmpneq_epi8_mask (_mm_and_si128(__A, __B), _mm_setzero_si128()); 2462} 2463 2464static __inline__ __mmask16 __DEFAULT_FN_ATTRS128 2465_mm_mask_test_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B) 2466{ 2467 return _mm_mask_cmpneq_epi8_mask (__U, _mm_and_si128 (__A, __B), 2468 _mm_setzero_si128()); 2469} 2470 2471static __inline__ __mmask32 __DEFAULT_FN_ATTRS256 2472_mm256_test_epi8_mask (__m256i __A, __m256i __B) 2473{ 2474 return _mm256_cmpneq_epi8_mask (_mm256_and_si256(__A, __B), 2475 _mm256_setzero_si256()); 2476} 2477 2478static __inline__ __mmask32 __DEFAULT_FN_ATTRS256 2479_mm256_mask_test_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B) 2480{ 2481 return _mm256_mask_cmpneq_epi8_mask (__U, _mm256_and_si256(__A, __B), 2482 _mm256_setzero_si256()); 2483} 2484 2485static __inline__ __mmask8 __DEFAULT_FN_ATTRS128 2486_mm_test_epi16_mask (__m128i __A, __m128i __B) 2487{ 2488 return _mm_cmpneq_epi16_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128()); 2489} 2490 2491static __inline__ __mmask8 __DEFAULT_FN_ATTRS128 2492_mm_mask_test_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B) 2493{ 2494 return _mm_mask_cmpneq_epi16_mask (__U, _mm_and_si128 (__A, __B), 2495 _mm_setzero_si128()); 2496} 2497 2498static __inline__ __mmask16 __DEFAULT_FN_ATTRS256 2499_mm256_test_epi16_mask (__m256i __A, __m256i __B) 2500{ 2501 return _mm256_cmpneq_epi16_mask (_mm256_and_si256 (__A, __B), 2502 _mm256_setzero_si256 ()); 2503} 2504 2505static __inline__ __mmask16 __DEFAULT_FN_ATTRS256 2506_mm256_mask_test_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B) 2507{ 2508 return _mm256_mask_cmpneq_epi16_mask (__U, _mm256_and_si256(__A, __B), 2509 _mm256_setzero_si256()); 2510} 2511 2512static __inline__ __mmask16 __DEFAULT_FN_ATTRS128 2513_mm_testn_epi8_mask (__m128i __A, __m128i __B) 2514{ 2515 return _mm_cmpeq_epi8_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128()); 2516} 2517 2518static __inline__ __mmask16 __DEFAULT_FN_ATTRS128 2519_mm_mask_testn_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B) 2520{ 2521 return _mm_mask_cmpeq_epi8_mask (__U, _mm_and_si128 (__A, __B), 2522 _mm_setzero_si128()); 2523} 2524 2525static __inline__ __mmask32 __DEFAULT_FN_ATTRS256 2526_mm256_testn_epi8_mask (__m256i __A, __m256i __B) 2527{ 2528 return _mm256_cmpeq_epi8_mask (_mm256_and_si256 (__A, __B), 2529 _mm256_setzero_si256()); 2530} 2531 2532static __inline__ __mmask32 __DEFAULT_FN_ATTRS256 2533_mm256_mask_testn_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B) 2534{ 2535 return _mm256_mask_cmpeq_epi8_mask (__U, _mm256_and_si256 (__A, __B), 2536 _mm256_setzero_si256()); 2537} 2538 2539static __inline__ __mmask8 __DEFAULT_FN_ATTRS128 2540_mm_testn_epi16_mask (__m128i __A, __m128i __B) 2541{ 2542 return _mm_cmpeq_epi16_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128()); 2543} 2544 2545static __inline__ __mmask8 __DEFAULT_FN_ATTRS128 2546_mm_mask_testn_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B) 2547{ 2548 return _mm_mask_cmpeq_epi16_mask (__U, _mm_and_si128(__A, __B), _mm_setzero_si128()); 2549} 2550 2551static __inline__ __mmask16 __DEFAULT_FN_ATTRS256 2552_mm256_testn_epi16_mask (__m256i __A, __m256i __B) 2553{ 2554 return _mm256_cmpeq_epi16_mask (_mm256_and_si256(__A, __B), 2555 _mm256_setzero_si256()); 2556} 2557 2558static __inline__ __mmask16 __DEFAULT_FN_ATTRS256 2559_mm256_mask_testn_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B) 2560{ 2561 return _mm256_mask_cmpeq_epi16_mask (__U, _mm256_and_si256 (__A, __B), 2562 _mm256_setzero_si256()); 2563} 2564 2565static __inline__ __mmask16 __DEFAULT_FN_ATTRS128 2566_mm_movepi8_mask (__m128i __A) 2567{ 2568 return (__mmask16) __builtin_ia32_cvtb2mask128 ((__v16qi) __A); 2569} 2570 2571static __inline__ __mmask32 __DEFAULT_FN_ATTRS256 2572_mm256_movepi8_mask (__m256i __A) 2573{ 2574 return (__mmask32) __builtin_ia32_cvtb2mask256 ((__v32qi) __A); 2575} 2576 2577static __inline__ __mmask8 __DEFAULT_FN_ATTRS128 2578_mm_movepi16_mask (__m128i __A) 2579{ 2580 return (__mmask8) __builtin_ia32_cvtw2mask128 ((__v8hi) __A); 2581} 2582 2583static __inline__ __mmask16 __DEFAULT_FN_ATTRS256 2584_mm256_movepi16_mask (__m256i __A) 2585{ 2586 return (__mmask16) __builtin_ia32_cvtw2mask256 ((__v16hi) __A); 2587} 2588 2589static __inline__ __m128i __DEFAULT_FN_ATTRS128 2590_mm_movm_epi8 (__mmask16 __A) 2591{ 2592 return (__m128i) __builtin_ia32_cvtmask2b128 (__A); 2593} 2594 2595static __inline__ __m256i __DEFAULT_FN_ATTRS256 2596_mm256_movm_epi8 (__mmask32 __A) 2597{ 2598 return (__m256i) __builtin_ia32_cvtmask2b256 (__A); 2599} 2600 2601static __inline__ __m128i __DEFAULT_FN_ATTRS128 2602_mm_movm_epi16 (__mmask8 __A) 2603{ 2604 return (__m128i) __builtin_ia32_cvtmask2w128 (__A); 2605} 2606 2607static __inline__ __m256i __DEFAULT_FN_ATTRS256 2608_mm256_movm_epi16 (__mmask16 __A) 2609{ 2610 return (__m256i) __builtin_ia32_cvtmask2w256 (__A); 2611} 2612 2613static __inline__ __m128i __DEFAULT_FN_ATTRS128 2614_mm_mask_broadcastb_epi8 (__m128i __O, __mmask16 __M, __m128i __A) 2615{ 2616 return (__m128i)__builtin_ia32_selectb_128(__M, 2617 (__v16qi) _mm_broadcastb_epi8(__A), 2618 (__v16qi) __O); 2619} 2620 2621static __inline__ __m128i __DEFAULT_FN_ATTRS128 2622_mm_maskz_broadcastb_epi8 (__mmask16 __M, __m128i __A) 2623{ 2624 return (__m128i)__builtin_ia32_selectb_128(__M, 2625 (__v16qi) _mm_broadcastb_epi8(__A), 2626 (__v16qi) _mm_setzero_si128()); 2627} 2628 2629static __inline__ __m256i __DEFAULT_FN_ATTRS256 2630_mm256_mask_broadcastb_epi8 (__m256i __O, __mmask32 __M, __m128i __A) 2631{ 2632 return (__m256i)__builtin_ia32_selectb_256(__M, 2633 (__v32qi) _mm256_broadcastb_epi8(__A), 2634 (__v32qi) __O); 2635} 2636 2637static __inline__ __m256i __DEFAULT_FN_ATTRS256 2638_mm256_maskz_broadcastb_epi8 (__mmask32 __M, __m128i __A) 2639{ 2640 return (__m256i)__builtin_ia32_selectb_256(__M, 2641 (__v32qi) _mm256_broadcastb_epi8(__A), 2642 (__v32qi) _mm256_setzero_si256()); 2643} 2644 2645static __inline__ __m128i __DEFAULT_FN_ATTRS128 2646_mm_mask_broadcastw_epi16 (__m128i __O, __mmask8 __M, __m128i __A) 2647{ 2648 return (__m128i)__builtin_ia32_selectw_128(__M, 2649 (__v8hi) _mm_broadcastw_epi16(__A), 2650 (__v8hi) __O); 2651} 2652 2653static __inline__ __m128i __DEFAULT_FN_ATTRS128 2654_mm_maskz_broadcastw_epi16 (__mmask8 __M, __m128i __A) 2655{ 2656 return (__m128i)__builtin_ia32_selectw_128(__M, 2657 (__v8hi) _mm_broadcastw_epi16(__A), 2658 (__v8hi) _mm_setzero_si128()); 2659} 2660 2661static __inline__ __m256i __DEFAULT_FN_ATTRS256 2662_mm256_mask_broadcastw_epi16 (__m256i __O, __mmask16 __M, __m128i __A) 2663{ 2664 return (__m256i)__builtin_ia32_selectw_256(__M, 2665 (__v16hi) _mm256_broadcastw_epi16(__A), 2666 (__v16hi) __O); 2667} 2668 2669static __inline__ __m256i __DEFAULT_FN_ATTRS256 2670_mm256_maskz_broadcastw_epi16 (__mmask16 __M, __m128i __A) 2671{ 2672 return (__m256i)__builtin_ia32_selectw_256(__M, 2673 (__v16hi) _mm256_broadcastw_epi16(__A), 2674 (__v16hi) _mm256_setzero_si256()); 2675} 2676 2677static __inline__ __m256i __DEFAULT_FN_ATTRS256 2678_mm256_mask_set1_epi16 (__m256i __O, __mmask16 __M, short __A) 2679{ 2680 return (__m256i) __builtin_ia32_selectw_256 (__M, 2681 (__v16hi) _mm256_set1_epi16(__A), 2682 (__v16hi) __O); 2683} 2684 2685static __inline__ __m256i __DEFAULT_FN_ATTRS256 2686_mm256_maskz_set1_epi16 (__mmask16 __M, short __A) 2687{ 2688 return (__m256i) __builtin_ia32_selectw_256(__M, 2689 (__v16hi)_mm256_set1_epi16(__A), 2690 (__v16hi) _mm256_setzero_si256()); 2691} 2692 2693static __inline__ __m128i __DEFAULT_FN_ATTRS128 2694_mm_mask_set1_epi16 (__m128i __O, __mmask8 __M, short __A) 2695{ 2696 return (__m128i) __builtin_ia32_selectw_128(__M, 2697 (__v8hi) _mm_set1_epi16(__A), 2698 (__v8hi) __O); 2699} 2700 2701static __inline__ __m128i __DEFAULT_FN_ATTRS128 2702_mm_maskz_set1_epi16 (__mmask8 __M, short __A) 2703{ 2704 return (__m128i) __builtin_ia32_selectw_128(__M, 2705 (__v8hi) _mm_set1_epi16(__A), 2706 (__v8hi) _mm_setzero_si128()); 2707} 2708 2709static __inline__ __m128i __DEFAULT_FN_ATTRS128 2710_mm_permutexvar_epi16 (__m128i __A, __m128i __B) 2711{ 2712 return (__m128i)__builtin_ia32_permvarhi128((__v8hi) __B, (__v8hi) __A); 2713} 2714 2715static __inline__ __m128i __DEFAULT_FN_ATTRS128 2716_mm_maskz_permutexvar_epi16 (__mmask8 __M, __m128i __A, __m128i __B) 2717{ 2718 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, 2719 (__v8hi)_mm_permutexvar_epi16(__A, __B), 2720 (__v8hi) _mm_setzero_si128()); 2721} 2722 2723static __inline__ __m128i __DEFAULT_FN_ATTRS128 2724_mm_mask_permutexvar_epi16 (__m128i __W, __mmask8 __M, __m128i __A, 2725 __m128i __B) 2726{ 2727 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M, 2728 (__v8hi)_mm_permutexvar_epi16(__A, __B), 2729 (__v8hi)__W); 2730} 2731 2732static __inline__ __m256i __DEFAULT_FN_ATTRS256 2733_mm256_permutexvar_epi16 (__m256i __A, __m256i __B) 2734{ 2735 return (__m256i)__builtin_ia32_permvarhi256((__v16hi) __B, (__v16hi) __A); 2736} 2737 2738static __inline__ __m256i __DEFAULT_FN_ATTRS256 2739_mm256_maskz_permutexvar_epi16 (__mmask16 __M, __m256i __A, 2740 __m256i __B) 2741{ 2742 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M, 2743 (__v16hi)_mm256_permutexvar_epi16(__A, __B), 2744 (__v16hi)_mm256_setzero_si256()); 2745} 2746 2747static __inline__ __m256i __DEFAULT_FN_ATTRS256 2748_mm256_mask_permutexvar_epi16 (__m256i __W, __mmask16 __M, __m256i __A, 2749 __m256i __B) 2750{ 2751 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M, 2752 (__v16hi)_mm256_permutexvar_epi16(__A, __B), 2753 (__v16hi)__W); 2754} 2755 2756#define _mm_mask_alignr_epi8(W, U, A, B, N) \ 2757 (__m128i)__builtin_ia32_selectb_128((__mmask16)(U), \ 2758 (__v16qi)_mm_alignr_epi8((A), (B), (int)(N)), \ 2759 (__v16qi)(__m128i)(W)) 2760 2761#define _mm_maskz_alignr_epi8(U, A, B, N) \ 2762 (__m128i)__builtin_ia32_selectb_128((__mmask16)(U), \ 2763 (__v16qi)_mm_alignr_epi8((A), (B), (int)(N)), \ 2764 (__v16qi)_mm_setzero_si128()) 2765 2766#define _mm256_mask_alignr_epi8(W, U, A, B, N) \ 2767 (__m256i)__builtin_ia32_selectb_256((__mmask32)(U), \ 2768 (__v32qi)_mm256_alignr_epi8((A), (B), (int)(N)), \ 2769 (__v32qi)(__m256i)(W)) 2770 2771#define _mm256_maskz_alignr_epi8(U, A, B, N) \ 2772 (__m256i)__builtin_ia32_selectb_256((__mmask32)(U), \ 2773 (__v32qi)_mm256_alignr_epi8((A), (B), (int)(N)), \ 2774 (__v32qi)_mm256_setzero_si256()) 2775 2776#define _mm_dbsad_epu8(A, B, imm) \ 2777 (__m128i)__builtin_ia32_dbpsadbw128((__v16qi)(__m128i)(A), \ 2778 (__v16qi)(__m128i)(B), (int)(imm)) 2779 2780#define _mm_mask_dbsad_epu8(W, U, A, B, imm) \ 2781 (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \ 2782 (__v8hi)_mm_dbsad_epu8((A), (B), (imm)), \ 2783 (__v8hi)(__m128i)(W)) 2784 2785#define _mm_maskz_dbsad_epu8(U, A, B, imm) \ 2786 (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \ 2787 (__v8hi)_mm_dbsad_epu8((A), (B), (imm)), \ 2788 (__v8hi)_mm_setzero_si128()) 2789 2790#define _mm256_dbsad_epu8(A, B, imm) \ 2791 (__m256i)__builtin_ia32_dbpsadbw256((__v32qi)(__m256i)(A), \ 2792 (__v32qi)(__m256i)(B), (int)(imm)) 2793 2794#define _mm256_mask_dbsad_epu8(W, U, A, B, imm) \ 2795 (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \ 2796 (__v16hi)_mm256_dbsad_epu8((A), (B), (imm)), \ 2797 (__v16hi)(__m256i)(W)) 2798 2799#define _mm256_maskz_dbsad_epu8(U, A, B, imm) \ 2800 (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \ 2801 (__v16hi)_mm256_dbsad_epu8((A), (B), (imm)), \ 2802 (__v16hi)_mm256_setzero_si256()) 2803 2804#undef __DEFAULT_FN_ATTRS128 2805#undef __DEFAULT_FN_ATTRS256 2806 2807#endif /* __AVX512VLBWINTRIN_H */ 2808