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