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 303 static __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 310 static __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 317 static __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 324 static __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 331 static __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 338 static __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 345 static __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 352 static __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 359 static __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 366 static __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 373 static __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 380 static __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 387 static __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 394 static __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 401 static __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 408 static __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 415 static __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 422 static __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 429 static __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 436 static __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 443 static __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 451 static __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 459 static __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 467 static __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 475 static __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 483 static __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 491 static __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 499 static __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 507 static __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 515 static __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 523 static __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 531 static __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 539 static __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 546 static __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 554 static __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 562 static __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 570 static __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 578 static __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 586 static __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 594 static __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 602 static __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 610 static __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 618 static __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 626 static __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 634 static __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 642 static __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 650 static __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 658 static __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 666 static __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 674 static __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 682 static __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 690 static __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 698 static __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 706 static __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 714 static __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 722 static __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 730 static __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 738 static __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 746 static __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 754 static __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 762 static __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 770 static __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 778 static __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 786 static __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 794 static __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 802 static __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 810 static __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 818 static __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 826 static __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 834 static __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 842 static __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 850 static __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 858 static __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 866 static __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 874 static __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 882 static __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 890 static __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 898 static __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 906 static __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 914 static __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 922 static __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 930 static __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 938 static __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 946 static __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 954 static __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 962 static __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 970 static __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 978 static __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 986 static __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 994 static __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 1002 static __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 1010 static __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 1018 static __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 1026 static __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 1034 static __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 1042 static __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 1050 static __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 1058 static __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 1066 static __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 1074 static __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 1082 static __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 1090 static __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 1098 static __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 1106 static __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 1114 static __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 1122 static __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 1130 static __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 1138 static __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 1146 static __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 1154 static __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 1162 static __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 1170 static __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 1178 static __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 1186 static __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 1194 static __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 1202 static __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 1210 static __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 1218 static __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 1226 static __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 1234 static __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 1242 static __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 1250 static __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 1258 static __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 1266 static __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 1274 static __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 1281 static __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 1290 static __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 1299 static __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 1308 static __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 1315 static __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 1324 static __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 1333 static __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 1342 static __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 1349 static __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 1356 static __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 1364 static __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 1371 static __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 1378 static __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 1385 static __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 1392 static __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 1399 static __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 1406 static __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 1413 static __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 1420 static __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 1427 static __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 1434 static __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 1441 static __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 1448 static __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 1455 static __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 1462 static __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 1469 static __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 1476 static __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 1483 static __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 1491 static __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 1498 static __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 1505 static __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 1512 static __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 1518 static __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 1524 static __inline__ __m128i __DEFAULT_FN_ATTRS256 1525 _mm256_cvtepi16_epi8 (__m256i __A) { 1526 return (__m128i)__builtin_convertvector((__v16hi) __A, __v16qi); 1527 } 1528 1529 static __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 1536 static __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 1543 static __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 1549 static __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 1555 static __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 1561 static __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 1568 static __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 1575 static __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 1582 static __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 1589 static __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 1596 static __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 1603 static __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 1610 static __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 1617 static __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 1624 static __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 1631 static __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 1638 static __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 1645 static __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 1652 static __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 1659 static __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 1666 static __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 1673 static __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 1680 static __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 1687 static __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 1694 static __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 1701 static __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 1708 static __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 1715 static __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 1722 static __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 1729 static __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 1736 static __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 1743 static __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 1750 static __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 1757 static __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 1765 static __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 1773 static __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 1781 static __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 1790 static __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 1798 static __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 1806 static __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 1814 static __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 1865 static __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 1871 static __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 1879 static __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 1887 static __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 1893 static __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 1901 static __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 1909 static __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 1917 static __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 1925 static __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 1933 static __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 1941 static __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 1949 static __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 1957 static __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 1965 static __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 1973 static __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 1979 static __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 1987 static __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 1995 static __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 2001 static __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 2009 static __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 2017 static __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 2023 static __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 2031 static __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 2039 static __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 2045 static __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 2053 static __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 2061 static __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 2069 static __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 2077 static __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 2085 static __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 2093 static __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 2101 static __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 2109 static __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 2117 static __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 2125 static __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 2133 static __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 2141 static __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 2149 static __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 2157 static __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 2165 static __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 2173 static __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 2181 static __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 2189 static __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 2197 static __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 2205 static __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 2213 static __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 2221 static __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 2229 static __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 2237 static __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 2245 static __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 2254 static __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 2262 static __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 2270 static __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 2278 static __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 2286 static __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 ((struct __loadu_epi16*)__P)->__v; 2293 } 2294 2295 static __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 ((__v8hi *) __P, 2299 (__v8hi) __W, 2300 (__mmask8) __U); 2301 } 2302 2303 static __inline__ __m128i __DEFAULT_FN_ATTRS128 2304 _mm_maskz_loadu_epi16 (__mmask8 __U, void const *__P) 2305 { 2306 return (__m128i) __builtin_ia32_loaddquhi128_mask ((__v8hi *) __P, 2307 (__v8hi) 2308 _mm_setzero_si128 (), 2309 (__mmask8) __U); 2310 } 2311 2312 static __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 ((struct __loadu_epi16*)__P)->__v; 2319 } 2320 2321 static __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 ((__v16hi *) __P, 2325 (__v16hi) __W, 2326 (__mmask16) __U); 2327 } 2328 2329 static __inline__ __m256i __DEFAULT_FN_ATTRS256 2330 _mm256_maskz_loadu_epi16 (__mmask16 __U, void const *__P) 2331 { 2332 return (__m256i) __builtin_ia32_loaddquhi256_mask ((__v16hi *) __P, 2333 (__v16hi) 2334 _mm256_setzero_si256 (), 2335 (__mmask16) __U); 2336 } 2337 2338 static __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 ((struct __loadu_epi8*)__P)->__v; 2345 } 2346 2347 static __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 ((__v16qi *) __P, 2351 (__v16qi) __W, 2352 (__mmask16) __U); 2353 } 2354 2355 static __inline__ __m128i __DEFAULT_FN_ATTRS128 2356 _mm_maskz_loadu_epi8 (__mmask16 __U, void const *__P) 2357 { 2358 return (__m128i) __builtin_ia32_loaddquqi128_mask ((__v16qi *) __P, 2359 (__v16qi) 2360 _mm_setzero_si128 (), 2361 (__mmask16) __U); 2362 } 2363 2364 static __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 ((struct __loadu_epi8*)__P)->__v; 2371 } 2372 2373 static __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 ((__v32qi *) __P, 2377 (__v32qi) __W, 2378 (__mmask32) __U); 2379 } 2380 2381 static __inline__ __m256i __DEFAULT_FN_ATTRS256 2382 _mm256_maskz_loadu_epi8 (__mmask32 __U, void const *__P) 2383 { 2384 return (__m256i) __builtin_ia32_loaddquqi256_mask ((__v32qi *) __P, 2385 (__v32qi) 2386 _mm256_setzero_si256 (), 2387 (__mmask32) __U); 2388 } 2389 2390 static __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 2399 static __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 2407 static __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 2416 static __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 2424 static __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 2433 static __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 2441 static __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 2450 static __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 2458 static __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 2464 static __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 2471 static __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 2478 static __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 2485 static __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 2491 static __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 2498 static __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 2505 static __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 2512 static __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 2518 static __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 2525 static __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 2532 static __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 2539 static __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 2545 static __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 2551 static __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 2558 static __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 2565 static __inline__ __mmask16 __DEFAULT_FN_ATTRS128 2566 _mm_movepi8_mask (__m128i __A) 2567 { 2568 return (__mmask16) __builtin_ia32_cvtb2mask128 ((__v16qi) __A); 2569 } 2570 2571 static __inline__ __mmask32 __DEFAULT_FN_ATTRS256 2572 _mm256_movepi8_mask (__m256i __A) 2573 { 2574 return (__mmask32) __builtin_ia32_cvtb2mask256 ((__v32qi) __A); 2575 } 2576 2577 static __inline__ __mmask8 __DEFAULT_FN_ATTRS128 2578 _mm_movepi16_mask (__m128i __A) 2579 { 2580 return (__mmask8) __builtin_ia32_cvtw2mask128 ((__v8hi) __A); 2581 } 2582 2583 static __inline__ __mmask16 __DEFAULT_FN_ATTRS256 2584 _mm256_movepi16_mask (__m256i __A) 2585 { 2586 return (__mmask16) __builtin_ia32_cvtw2mask256 ((__v16hi) __A); 2587 } 2588 2589 static __inline__ __m128i __DEFAULT_FN_ATTRS128 2590 _mm_movm_epi8 (__mmask16 __A) 2591 { 2592 return (__m128i) __builtin_ia32_cvtmask2b128 (__A); 2593 } 2594 2595 static __inline__ __m256i __DEFAULT_FN_ATTRS256 2596 _mm256_movm_epi8 (__mmask32 __A) 2597 { 2598 return (__m256i) __builtin_ia32_cvtmask2b256 (__A); 2599 } 2600 2601 static __inline__ __m128i __DEFAULT_FN_ATTRS128 2602 _mm_movm_epi16 (__mmask8 __A) 2603 { 2604 return (__m128i) __builtin_ia32_cvtmask2w128 (__A); 2605 } 2606 2607 static __inline__ __m256i __DEFAULT_FN_ATTRS256 2608 _mm256_movm_epi16 (__mmask16 __A) 2609 { 2610 return (__m256i) __builtin_ia32_cvtmask2w256 (__A); 2611 } 2612 2613 static __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 2621 static __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 2629 static __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 2637 static __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 2645 static __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 2653 static __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 2661 static __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 2669 static __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 2677 static __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 2685 static __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 2693 static __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 2701 static __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 2709 static __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 2715 static __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 2723 static __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 2732 static __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 2738 static __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 2747 static __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