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