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 34static __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 41static __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 47static __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 53static __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 59static __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 65static __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 71static __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 77static __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 83static __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 89static __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 95static __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 101static __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 107static __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 113static __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 119static __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 125static __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 131static __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 137static __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 143static __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 149static __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 155static __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 161static __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 167static __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 173static __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 179static __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 185static __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 191static __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 197static __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 203static __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 209static __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 215static __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 221static __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 227static __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 233static __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 239static __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 245static __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 251static __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 257static __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 263static __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 269static __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 275static __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 281static __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 287static __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 293static __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 299static __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 305static __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 311static __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 317static __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 323static __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 329static __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 335static __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 341static __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 347static __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 353static __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 359static __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 365static __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 371static __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 377static __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 383static __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 389static __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 395static __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 401static __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 407static __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 413static __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 419static __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 425static __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 431static __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 437static __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 443static __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 449static __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 455static __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 461static __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 467static __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 473static __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 479static __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 485static __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 491static __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 497static __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 503static __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 509static __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 515static __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 521static __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 527static __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 533static __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 539static __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 545static __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 551static __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 557static __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 563static __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 569static __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 575static __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 581static __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 587static __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 593static __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 599static __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 605static __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 611static __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 617static __inline__ __m256i __DEFAULT_FN_ATTRS 618_mm256_mask_add_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B){ 619 return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A, 620 (__v32qi) __B, 621 (__v32qi) __W, 622 (__mmask32) __U); 623} 624 625static __inline__ __m256i __DEFAULT_FN_ATTRS 626_mm256_maskz_add_epi8 (__mmask32 __U, __m256i __A, __m256i __B) { 627 return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A, 628 (__v32qi) __B, 629 (__v32qi) 630 _mm256_setzero_si256 (), 631 (__mmask32) __U); 632} 633 634static __inline__ __m256i __DEFAULT_FN_ATTRS 635_mm256_mask_add_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) { 636 return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A, 637 (__v16hi) __B, 638 (__v16hi) __W, 639 (__mmask16) __U); 640} 641 642static __inline__ __m256i __DEFAULT_FN_ATTRS 643_mm256_maskz_add_epi16 (__mmask16 __U, __m256i __A, __m256i __B) { 644 return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A, 645 (__v16hi) __B, 646 (__v16hi) 647 _mm256_setzero_si256 (), 648 (__mmask16) __U); 649} 650 651static __inline__ __m256i __DEFAULT_FN_ATTRS 652_mm256_mask_sub_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) { 653 return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A, 654 (__v32qi) __B, 655 (__v32qi) __W, 656 (__mmask32) __U); 657} 658 659static __inline__ __m256i __DEFAULT_FN_ATTRS 660_mm256_maskz_sub_epi8 (__mmask32 __U, __m256i __A, __m256i __B) { 661 return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A, 662 (__v32qi) __B, 663 (__v32qi) 664 _mm256_setzero_si256 (), 665 (__mmask32) __U); 666} 667 668static __inline__ __m256i __DEFAULT_FN_ATTRS 669_mm256_mask_sub_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) { 670 return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A, 671 (__v16hi) __B, 672 (__v16hi) __W, 673 (__mmask16) __U); 674} 675 676static __inline__ __m256i __DEFAULT_FN_ATTRS 677_mm256_maskz_sub_epi16 (__mmask16 __U, __m256i __A, __m256i __B) { 678 return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A, 679 (__v16hi) __B, 680 (__v16hi) 681 _mm256_setzero_si256 (), 682 (__mmask16) __U); 683} 684static __inline__ __m128i __DEFAULT_FN_ATTRS 685_mm_mask_add_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) { 686 return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A, 687 (__v16qi) __B, 688 (__v16qi) __W, 689 (__mmask16) __U); 690} 691 692static __inline__ __m128i __DEFAULT_FN_ATTRS 693_mm_maskz_add_epi8 (__mmask16 __U, __m128i __A, __m128i __B) { 694 return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A, 695 (__v16qi) __B, 696 (__v16qi) 697 _mm_setzero_si128 (), 698 (__mmask16) __U); 699} 700 701static __inline__ __m128i __DEFAULT_FN_ATTRS 702_mm_mask_add_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 703 return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A, 704 (__v8hi) __B, 705 (__v8hi) __W, 706 (__mmask8) __U); 707} 708 709static __inline__ __m128i __DEFAULT_FN_ATTRS 710_mm_maskz_add_epi16 (__mmask8 __U, __m128i __A, __m128i __B) { 711 return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A, 712 (__v8hi) __B, 713 (__v8hi) 714 _mm_setzero_si128 (), 715 (__mmask8) __U); 716} 717 718static __inline__ __m128i __DEFAULT_FN_ATTRS 719_mm_mask_sub_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) { 720 return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A, 721 (__v16qi) __B, 722 (__v16qi) __W, 723 (__mmask16) __U); 724} 725 726static __inline__ __m128i __DEFAULT_FN_ATTRS 727_mm_maskz_sub_epi8 (__mmask16 __U, __m128i __A, __m128i __B) { 728 return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A, 729 (__v16qi) __B, 730 (__v16qi) 731 _mm_setzero_si128 (), 732 (__mmask16) __U); 733} 734 735static __inline__ __m128i __DEFAULT_FN_ATTRS 736_mm_mask_sub_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 737 return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A, 738 (__v8hi) __B, 739 (__v8hi) __W, 740 (__mmask8) __U); 741} 742 743static __inline__ __m128i __DEFAULT_FN_ATTRS 744_mm_maskz_sub_epi16 (__mmask8 __U, __m128i __A, __m128i __B) { 745 return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A, 746 (__v8hi) __B, 747 (__v8hi) 748 _mm_setzero_si128 (), 749 (__mmask8) __U); 750} 751 752static __inline__ __m256i __DEFAULT_FN_ATTRS 753_mm256_mask_mullo_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) { 754 return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A, 755 (__v16hi) __B, 756 (__v16hi) __W, 757 (__mmask16) __U); 758} 759 760static __inline__ __m256i __DEFAULT_FN_ATTRS 761_mm256_maskz_mullo_epi16 (__mmask16 __U, __m256i __A, __m256i __B) { 762 return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A, 763 (__v16hi) __B, 764 (__v16hi) 765 _mm256_setzero_si256 (), 766 (__mmask16) __U); 767} 768 769static __inline__ __m128i __DEFAULT_FN_ATTRS 770_mm_mask_mullo_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 771 return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A, 772 (__v8hi) __B, 773 (__v8hi) __W, 774 (__mmask8) __U); 775} 776 777static __inline__ __m128i __DEFAULT_FN_ATTRS 778_mm_maskz_mullo_epi16 (__mmask8 __U, __m128i __A, __m128i __B) { 779 return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A, 780 (__v8hi) __B, 781 (__v8hi) 782 _mm_setzero_si128 (), 783 (__mmask8) __U); 784} 785 786static __inline__ __m128i __DEFAULT_FN_ATTRS 787_mm_mask_blend_epi8 (__mmask16 __U, __m128i __A, __m128i __W) 788{ 789 return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U, 790 (__v16qi) __W, 791 (__v16qi) __A); 792} 793 794static __inline__ __m256i __DEFAULT_FN_ATTRS 795_mm256_mask_blend_epi8 (__mmask32 __U, __m256i __A, __m256i __W) 796{ 797 return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U, 798 (__v32qi) __W, 799 (__v32qi) __A); 800} 801 802static __inline__ __m128i __DEFAULT_FN_ATTRS 803_mm_mask_blend_epi16 (__mmask8 __U, __m128i __A, __m128i __W) 804{ 805 return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U, 806 (__v8hi) __W, 807 (__v8hi) __A); 808} 809 810static __inline__ __m256i __DEFAULT_FN_ATTRS 811_mm256_mask_blend_epi16 (__mmask16 __U, __m256i __A, __m256i __W) 812{ 813 return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U, 814 (__v16hi) __W, 815 (__v16hi) __A); 816} 817 818static __inline__ __m128i __DEFAULT_FN_ATTRS 819_mm_mask_abs_epi8 (__m128i __W, __mmask16 __U, __m128i __A) 820{ 821 return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A, 822 (__v16qi) __W, 823 (__mmask16) __U); 824} 825 826static __inline__ __m128i __DEFAULT_FN_ATTRS 827_mm_maskz_abs_epi8 (__mmask16 __U, __m128i __A) 828{ 829 return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A, 830 (__v16qi) _mm_setzero_si128 (), 831 (__mmask16) __U); 832} 833 834static __inline__ __m256i __DEFAULT_FN_ATTRS 835_mm256_mask_abs_epi8 (__m256i __W, __mmask32 __U, __m256i __A) 836{ 837 return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A, 838 (__v32qi) __W, 839 (__mmask32) __U); 840} 841 842static __inline__ __m256i __DEFAULT_FN_ATTRS 843_mm256_maskz_abs_epi8 (__mmask32 __U, __m256i __A) 844{ 845 return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A, 846 (__v32qi) _mm256_setzero_si256 (), 847 (__mmask32) __U); 848} 849 850static __inline__ __m128i __DEFAULT_FN_ATTRS 851_mm_mask_abs_epi16 (__m128i __W, __mmask8 __U, __m128i __A) 852{ 853 return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A, 854 (__v8hi) __W, 855 (__mmask8) __U); 856} 857 858static __inline__ __m128i __DEFAULT_FN_ATTRS 859_mm_maskz_abs_epi16 (__mmask8 __U, __m128i __A) 860{ 861 return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A, 862 (__v8hi) _mm_setzero_si128 (), 863 (__mmask8) __U); 864} 865 866static __inline__ __m256i __DEFAULT_FN_ATTRS 867_mm256_mask_abs_epi16 (__m256i __W, __mmask16 __U, __m256i __A) 868{ 869 return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A, 870 (__v16hi) __W, 871 (__mmask16) __U); 872} 873 874static __inline__ __m256i __DEFAULT_FN_ATTRS 875_mm256_maskz_abs_epi16 (__mmask16 __U, __m256i __A) 876{ 877 return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A, 878 (__v16hi) _mm256_setzero_si256 (), 879 (__mmask16) __U); 880} 881 882static __inline__ __m128i __DEFAULT_FN_ATTRS 883_mm_maskz_packs_epi32 (__mmask8 __M, __m128i __A, __m128i __B) 884{ 885 return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A, 886 (__v4si) __B, 887 (__v8hi) _mm_setzero_si128 (), __M); 888} 889 890static __inline__ __m128i __DEFAULT_FN_ATTRS 891_mm_mask_packs_epi32 (__m128i __W, __mmask16 __M, __m128i __A, 892 __m128i __B) 893{ 894 return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A, 895 (__v4si) __B, 896 (__v8hi) __W, __M); 897} 898 899static __inline__ __m256i __DEFAULT_FN_ATTRS 900_mm256_maskz_packs_epi32 (__mmask16 __M, __m256i __A, __m256i __B) 901{ 902 return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A, 903 (__v8si) __B, 904 (__v16hi) _mm256_setzero_si256 (), 905 __M); 906} 907 908static __inline__ __m256i __DEFAULT_FN_ATTRS 909_mm256_mask_packs_epi32 (__m256i __W, __mmask16 __M, __m256i __A, 910 __m256i __B) 911{ 912 return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A, 913 (__v8si) __B, 914 (__v16hi) __W, __M); 915} 916 917static __inline__ __m128i __DEFAULT_FN_ATTRS 918_mm_maskz_packs_epi16 (__mmask16 __M, __m128i __A, __m128i __B) 919{ 920 return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A, 921 (__v8hi) __B, 922 (__v16qi) _mm_setzero_si128 (), 923 __M); 924} 925 926static __inline__ __m128i __DEFAULT_FN_ATTRS 927_mm_mask_packs_epi16 (__m128i __W, __mmask16 __M, __m128i __A, 928 __m128i __B) 929{ 930 return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A, 931 (__v8hi) __B, 932 (__v16qi) __W, 933 __M); 934} 935 936static __inline__ __m256i __DEFAULT_FN_ATTRS 937_mm256_maskz_packs_epi16 (__mmask32 __M, __m256i __A, __m256i __B) 938{ 939 return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A, 940 (__v16hi) __B, 941 (__v32qi) _mm256_setzero_si256 (), 942 __M); 943} 944 945static __inline__ __m256i __DEFAULT_FN_ATTRS 946_mm256_mask_packs_epi16 (__m256i __W, __mmask32 __M, __m256i __A, 947 __m256i __B) 948{ 949 return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A, 950 (__v16hi) __B, 951 (__v32qi) __W, 952 __M); 953} 954 955static __inline__ __m128i __DEFAULT_FN_ATTRS 956_mm_maskz_packus_epi32 (__mmask8 __M, __m128i __A, __m128i __B) 957{ 958 return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A, 959 (__v4si) __B, 960 (__v8hi) _mm_setzero_si128 (), 961 __M); 962} 963 964static __inline__ __m128i __DEFAULT_FN_ATTRS 965_mm_mask_packus_epi32 (__m128i __W, __mmask16 __M, __m128i __A, 966 __m128i __B) 967{ 968 return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A, 969 (__v4si) __B, 970 (__v8hi) __W, __M); 971} 972 973static __inline__ __m256i __DEFAULT_FN_ATTRS 974_mm256_maskz_packus_epi32 (__mmask16 __M, __m256i __A, __m256i __B) 975{ 976 return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A, 977 (__v8si) __B, 978 (__v16hi) _mm256_setzero_si256 (), 979 __M); 980} 981 982static __inline__ __m256i __DEFAULT_FN_ATTRS 983_mm256_mask_packus_epi32 (__m256i __W, __mmask16 __M, __m256i __A, 984 __m256i __B) 985{ 986 return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A, 987 (__v8si) __B, 988 (__v16hi) __W, 989 __M); 990} 991 992static __inline__ __m128i __DEFAULT_FN_ATTRS 993_mm_maskz_packus_epi16 (__mmask16 __M, __m128i __A, __m128i __B) 994{ 995 return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A, 996 (__v8hi) __B, 997 (__v16qi) _mm_setzero_si128 (), 998 __M); 999} 1000 1001static __inline__ __m128i __DEFAULT_FN_ATTRS 1002_mm_mask_packus_epi16 (__m128i __W, __mmask16 __M, __m128i __A, 1003 __m128i __B) 1004{ 1005 return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A, 1006 (__v8hi) __B, 1007 (__v16qi) __W, 1008 __M); 1009} 1010 1011static __inline__ __m256i __DEFAULT_FN_ATTRS 1012_mm256_maskz_packus_epi16 (__mmask32 __M, __m256i __A, __m256i __B) 1013{ 1014 return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A, 1015 (__v16hi) __B, 1016 (__v32qi) _mm256_setzero_si256 (), 1017 __M); 1018} 1019 1020static __inline__ __m256i __DEFAULT_FN_ATTRS 1021_mm256_mask_packus_epi16 (__m256i __W, __mmask32 __M, __m256i __A, 1022 __m256i __B) 1023{ 1024 return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A, 1025 (__v16hi) __B, 1026 (__v32qi) __W, 1027 __M); 1028} 1029 1030static __inline__ __m128i __DEFAULT_FN_ATTRS 1031_mm_mask_adds_epi8 (__m128i __W, __mmask16 __U, __m128i __A, 1032 __m128i __B) 1033{ 1034 return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A, 1035 (__v16qi) __B, 1036 (__v16qi) __W, 1037 (__mmask16) __U); 1038} 1039 1040static __inline__ __m128i __DEFAULT_FN_ATTRS 1041_mm_maskz_adds_epi8 (__mmask16 __U, __m128i __A, __m128i __B) 1042{ 1043 return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A, 1044 (__v16qi) __B, 1045 (__v16qi) _mm_setzero_si128 (), 1046 (__mmask16) __U); 1047} 1048 1049static __inline__ __m256i __DEFAULT_FN_ATTRS 1050_mm256_mask_adds_epi8 (__m256i __W, __mmask32 __U, __m256i __A, 1051 __m256i __B) 1052{ 1053 return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A, 1054 (__v32qi) __B, 1055 (__v32qi) __W, 1056 (__mmask32) __U); 1057} 1058 1059static __inline__ __m256i __DEFAULT_FN_ATTRS 1060_mm256_maskz_adds_epi8 (__mmask32 __U, __m256i __A, __m256i __B) 1061{ 1062 return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A, 1063 (__v32qi) __B, 1064 (__v32qi) _mm256_setzero_si256 (), 1065 (__mmask32) __U); 1066} 1067 1068static __inline__ __m128i __DEFAULT_FN_ATTRS 1069_mm_mask_adds_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 1070 __m128i __B) 1071{ 1072 return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A, 1073 (__v8hi) __B, 1074 (__v8hi) __W, 1075 (__mmask8) __U); 1076} 1077 1078static __inline__ __m128i __DEFAULT_FN_ATTRS 1079_mm_maskz_adds_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 1080{ 1081 return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A, 1082 (__v8hi) __B, 1083 (__v8hi) _mm_setzero_si128 (), 1084 (__mmask8) __U); 1085} 1086 1087static __inline__ __m256i __DEFAULT_FN_ATTRS 1088_mm256_mask_adds_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 1089 __m256i __B) 1090{ 1091 return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A, 1092 (__v16hi) __B, 1093 (__v16hi) __W, 1094 (__mmask16) __U); 1095} 1096 1097static __inline__ __m256i __DEFAULT_FN_ATTRS 1098_mm256_maskz_adds_epi16 (__mmask16 __U, __m256i __A, __m256i __B) 1099{ 1100 return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A, 1101 (__v16hi) __B, 1102 (__v16hi) _mm256_setzero_si256 (), 1103 (__mmask16) __U); 1104} 1105 1106static __inline__ __m128i __DEFAULT_FN_ATTRS 1107_mm_mask_adds_epu8 (__m128i __W, __mmask16 __U, __m128i __A, 1108 __m128i __B) 1109{ 1110 return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A, 1111 (__v16qi) __B, 1112 (__v16qi) __W, 1113 (__mmask16) __U); 1114} 1115 1116static __inline__ __m128i __DEFAULT_FN_ATTRS 1117_mm_maskz_adds_epu8 (__mmask16 __U, __m128i __A, __m128i __B) 1118{ 1119 return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A, 1120 (__v16qi) __B, 1121 (__v16qi) _mm_setzero_si128 (), 1122 (__mmask16) __U); 1123} 1124 1125static __inline__ __m256i __DEFAULT_FN_ATTRS 1126_mm256_mask_adds_epu8 (__m256i __W, __mmask32 __U, __m256i __A, 1127 __m256i __B) 1128{ 1129 return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A, 1130 (__v32qi) __B, 1131 (__v32qi) __W, 1132 (__mmask32) __U); 1133} 1134 1135static __inline__ __m256i __DEFAULT_FN_ATTRS 1136_mm256_maskz_adds_epu8 (__mmask32 __U, __m256i __A, __m256i __B) 1137{ 1138 return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A, 1139 (__v32qi) __B, 1140 (__v32qi) _mm256_setzero_si256 (), 1141 (__mmask32) __U); 1142} 1143 1144static __inline__ __m128i __DEFAULT_FN_ATTRS 1145_mm_mask_adds_epu16 (__m128i __W, __mmask8 __U, __m128i __A, 1146 __m128i __B) 1147{ 1148 return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A, 1149 (__v8hi) __B, 1150 (__v8hi) __W, 1151 (__mmask8) __U); 1152} 1153 1154static __inline__ __m128i __DEFAULT_FN_ATTRS 1155_mm_maskz_adds_epu16 (__mmask8 __U, __m128i __A, __m128i __B) 1156{ 1157 return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A, 1158 (__v8hi) __B, 1159 (__v8hi) _mm_setzero_si128 (), 1160 (__mmask8) __U); 1161} 1162 1163static __inline__ __m256i __DEFAULT_FN_ATTRS 1164_mm256_mask_adds_epu16 (__m256i __W, __mmask16 __U, __m256i __A, 1165 __m256i __B) 1166{ 1167 return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A, 1168 (__v16hi) __B, 1169 (__v16hi) __W, 1170 (__mmask16) __U); 1171} 1172 1173static __inline__ __m256i __DEFAULT_FN_ATTRS 1174_mm256_maskz_adds_epu16 (__mmask16 __U, __m256i __A, __m256i __B) 1175{ 1176 return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A, 1177 (__v16hi) __B, 1178 (__v16hi) _mm256_setzero_si256 (), 1179 (__mmask16) __U); 1180} 1181 1182static __inline__ __m128i __DEFAULT_FN_ATTRS 1183_mm_mask_avg_epu8 (__m128i __W, __mmask16 __U, __m128i __A, 1184 __m128i __B) 1185{ 1186 return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A, 1187 (__v16qi) __B, 1188 (__v16qi) __W, 1189 (__mmask16) __U); 1190} 1191 1192static __inline__ __m128i __DEFAULT_FN_ATTRS 1193_mm_maskz_avg_epu8 (__mmask16 __U, __m128i __A, __m128i __B) 1194{ 1195 return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A, 1196 (__v16qi) __B, 1197 (__v16qi) _mm_setzero_si128 (), 1198 (__mmask16) __U); 1199} 1200 1201static __inline__ __m256i __DEFAULT_FN_ATTRS 1202_mm256_mask_avg_epu8 (__m256i __W, __mmask32 __U, __m256i __A, 1203 __m256i __B) 1204{ 1205 return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A, 1206 (__v32qi) __B, 1207 (__v32qi) __W, 1208 (__mmask32) __U); 1209} 1210 1211static __inline__ __m256i __DEFAULT_FN_ATTRS 1212_mm256_maskz_avg_epu8 (__mmask32 __U, __m256i __A, __m256i __B) 1213{ 1214 return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A, 1215 (__v32qi) __B, 1216 (__v32qi) _mm256_setzero_si256 (), 1217 (__mmask32) __U); 1218} 1219 1220static __inline__ __m128i __DEFAULT_FN_ATTRS 1221_mm_mask_avg_epu16 (__m128i __W, __mmask8 __U, __m128i __A, 1222 __m128i __B) 1223{ 1224 return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A, 1225 (__v8hi) __B, 1226 (__v8hi) __W, 1227 (__mmask8) __U); 1228} 1229 1230static __inline__ __m128i __DEFAULT_FN_ATTRS 1231_mm_maskz_avg_epu16 (__mmask8 __U, __m128i __A, __m128i __B) 1232{ 1233 return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A, 1234 (__v8hi) __B, 1235 (__v8hi) _mm_setzero_si128 (), 1236 (__mmask8) __U); 1237} 1238 1239static __inline__ __m256i __DEFAULT_FN_ATTRS 1240_mm256_mask_avg_epu16 (__m256i __W, __mmask16 __U, __m256i __A, 1241 __m256i __B) 1242{ 1243 return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A, 1244 (__v16hi) __B, 1245 (__v16hi) __W, 1246 (__mmask16) __U); 1247} 1248 1249static __inline__ __m256i __DEFAULT_FN_ATTRS 1250_mm256_maskz_avg_epu16 (__mmask16 __U, __m256i __A, __m256i __B) 1251{ 1252 return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A, 1253 (__v16hi) __B, 1254 (__v16hi) _mm256_setzero_si256 (), 1255 (__mmask16) __U); 1256} 1257 1258static __inline__ __m128i __DEFAULT_FN_ATTRS 1259_mm_maskz_max_epi8 (__mmask16 __M, __m128i __A, __m128i __B) 1260{ 1261 return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A, 1262 (__v16qi) __B, 1263 (__v16qi) _mm_setzero_si128 (), 1264 (__mmask16) __M); 1265} 1266 1267static __inline__ __m128i __DEFAULT_FN_ATTRS 1268_mm_mask_max_epi8 (__m128i __W, __mmask16 __M, __m128i __A, 1269 __m128i __B) 1270{ 1271 return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A, 1272 (__v16qi) __B, 1273 (__v16qi) __W, 1274 (__mmask16) __M); 1275} 1276 1277static __inline__ __m256i __DEFAULT_FN_ATTRS 1278_mm256_maskz_max_epi8 (__mmask32 __M, __m256i __A, __m256i __B) 1279{ 1280 return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A, 1281 (__v32qi) __B, 1282 (__v32qi) _mm256_setzero_si256 (), 1283 (__mmask32) __M); 1284} 1285 1286static __inline__ __m256i __DEFAULT_FN_ATTRS 1287_mm256_mask_max_epi8 (__m256i __W, __mmask32 __M, __m256i __A, 1288 __m256i __B) 1289{ 1290 return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A, 1291 (__v32qi) __B, 1292 (__v32qi) __W, 1293 (__mmask32) __M); 1294} 1295 1296static __inline__ __m128i __DEFAULT_FN_ATTRS 1297_mm_maskz_max_epi16 (__mmask8 __M, __m128i __A, __m128i __B) 1298{ 1299 return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A, 1300 (__v8hi) __B, 1301 (__v8hi) _mm_setzero_si128 (), 1302 (__mmask8) __M); 1303} 1304 1305static __inline__ __m128i __DEFAULT_FN_ATTRS 1306_mm_mask_max_epi16 (__m128i __W, __mmask8 __M, __m128i __A, 1307 __m128i __B) 1308{ 1309 return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A, 1310 (__v8hi) __B, 1311 (__v8hi) __W, 1312 (__mmask8) __M); 1313} 1314 1315static __inline__ __m256i __DEFAULT_FN_ATTRS 1316_mm256_maskz_max_epi16 (__mmask16 __M, __m256i __A, __m256i __B) 1317{ 1318 return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A, 1319 (__v16hi) __B, 1320 (__v16hi) _mm256_setzero_si256 (), 1321 (__mmask16) __M); 1322} 1323 1324static __inline__ __m256i __DEFAULT_FN_ATTRS 1325_mm256_mask_max_epi16 (__m256i __W, __mmask16 __M, __m256i __A, 1326 __m256i __B) 1327{ 1328 return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A, 1329 (__v16hi) __B, 1330 (__v16hi) __W, 1331 (__mmask16) __M); 1332} 1333 1334static __inline__ __m128i __DEFAULT_FN_ATTRS 1335_mm_maskz_max_epu8 (__mmask16 __M, __m128i __A, __m128i __B) 1336{ 1337 return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A, 1338 (__v16qi) __B, 1339 (__v16qi) _mm_setzero_si128 (), 1340 (__mmask16) __M); 1341} 1342 1343static __inline__ __m128i __DEFAULT_FN_ATTRS 1344_mm_mask_max_epu8 (__m128i __W, __mmask16 __M, __m128i __A, 1345 __m128i __B) 1346{ 1347 return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A, 1348 (__v16qi) __B, 1349 (__v16qi) __W, 1350 (__mmask16) __M); 1351} 1352 1353static __inline__ __m256i __DEFAULT_FN_ATTRS 1354_mm256_maskz_max_epu8 (__mmask32 __M, __m256i __A, __m256i __B) 1355{ 1356 return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A, 1357 (__v32qi) __B, 1358 (__v32qi) _mm256_setzero_si256 (), 1359 (__mmask32) __M); 1360} 1361 1362static __inline__ __m256i __DEFAULT_FN_ATTRS 1363_mm256_mask_max_epu8 (__m256i __W, __mmask32 __M, __m256i __A, 1364 __m256i __B) 1365{ 1366 return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A, 1367 (__v32qi) __B, 1368 (__v32qi) __W, 1369 (__mmask32) __M); 1370} 1371 1372static __inline__ __m128i __DEFAULT_FN_ATTRS 1373_mm_maskz_max_epu16 (__mmask8 __M, __m128i __A, __m128i __B) 1374{ 1375 return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A, 1376 (__v8hi) __B, 1377 (__v8hi) _mm_setzero_si128 (), 1378 (__mmask8) __M); 1379} 1380 1381static __inline__ __m128i __DEFAULT_FN_ATTRS 1382_mm_mask_max_epu16 (__m128i __W, __mmask8 __M, __m128i __A, 1383 __m128i __B) 1384{ 1385 return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A, 1386 (__v8hi) __B, 1387 (__v8hi) __W, 1388 (__mmask8) __M); 1389} 1390 1391static __inline__ __m256i __DEFAULT_FN_ATTRS 1392_mm256_maskz_max_epu16 (__mmask16 __M, __m256i __A, __m256i __B) 1393{ 1394 return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A, 1395 (__v16hi) __B, 1396 (__v16hi) _mm256_setzero_si256 (), 1397 (__mmask16) __M); 1398} 1399 1400static __inline__ __m256i __DEFAULT_FN_ATTRS 1401_mm256_mask_max_epu16 (__m256i __W, __mmask16 __M, __m256i __A, 1402 __m256i __B) 1403{ 1404 return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A, 1405 (__v16hi) __B, 1406 (__v16hi) __W, 1407 (__mmask16) __M); 1408} 1409 1410static __inline__ __m128i __DEFAULT_FN_ATTRS 1411_mm_maskz_min_epi8 (__mmask16 __M, __m128i __A, __m128i __B) 1412{ 1413 return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A, 1414 (__v16qi) __B, 1415 (__v16qi) _mm_setzero_si128 (), 1416 (__mmask16) __M); 1417} 1418 1419static __inline__ __m128i __DEFAULT_FN_ATTRS 1420_mm_mask_min_epi8 (__m128i __W, __mmask16 __M, __m128i __A, 1421 __m128i __B) 1422{ 1423 return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A, 1424 (__v16qi) __B, 1425 (__v16qi) __W, 1426 (__mmask16) __M); 1427} 1428 1429static __inline__ __m256i __DEFAULT_FN_ATTRS 1430_mm256_maskz_min_epi8 (__mmask32 __M, __m256i __A, __m256i __B) 1431{ 1432 return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A, 1433 (__v32qi) __B, 1434 (__v32qi) _mm256_setzero_si256 (), 1435 (__mmask32) __M); 1436} 1437 1438static __inline__ __m256i __DEFAULT_FN_ATTRS 1439_mm256_mask_min_epi8 (__m256i __W, __mmask32 __M, __m256i __A, 1440 __m256i __B) 1441{ 1442 return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A, 1443 (__v32qi) __B, 1444 (__v32qi) __W, 1445 (__mmask32) __M); 1446} 1447 1448static __inline__ __m128i __DEFAULT_FN_ATTRS 1449_mm_maskz_min_epi16 (__mmask8 __M, __m128i __A, __m128i __B) 1450{ 1451 return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A, 1452 (__v8hi) __B, 1453 (__v8hi) _mm_setzero_si128 (), 1454 (__mmask8) __M); 1455} 1456 1457static __inline__ __m128i __DEFAULT_FN_ATTRS 1458_mm_mask_min_epi16 (__m128i __W, __mmask8 __M, __m128i __A, 1459 __m128i __B) 1460{ 1461 return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A, 1462 (__v8hi) __B, 1463 (__v8hi) __W, 1464 (__mmask8) __M); 1465} 1466 1467static __inline__ __m256i __DEFAULT_FN_ATTRS 1468_mm256_maskz_min_epi16 (__mmask16 __M, __m256i __A, __m256i __B) 1469{ 1470 return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A, 1471 (__v16hi) __B, 1472 (__v16hi) _mm256_setzero_si256 (), 1473 (__mmask16) __M); 1474} 1475 1476static __inline__ __m256i __DEFAULT_FN_ATTRS 1477_mm256_mask_min_epi16 (__m256i __W, __mmask16 __M, __m256i __A, 1478 __m256i __B) 1479{ 1480 return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A, 1481 (__v16hi) __B, 1482 (__v16hi) __W, 1483 (__mmask16) __M); 1484} 1485 1486static __inline__ __m128i __DEFAULT_FN_ATTRS 1487_mm_maskz_min_epu8 (__mmask16 __M, __m128i __A, __m128i __B) 1488{ 1489 return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A, 1490 (__v16qi) __B, 1491 (__v16qi) _mm_setzero_si128 (), 1492 (__mmask16) __M); 1493} 1494 1495static __inline__ __m128i __DEFAULT_FN_ATTRS 1496_mm_mask_min_epu8 (__m128i __W, __mmask16 __M, __m128i __A, 1497 __m128i __B) 1498{ 1499 return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A, 1500 (__v16qi) __B, 1501 (__v16qi) __W, 1502 (__mmask16) __M); 1503} 1504 1505static __inline__ __m256i __DEFAULT_FN_ATTRS 1506_mm256_maskz_min_epu8 (__mmask32 __M, __m256i __A, __m256i __B) 1507{ 1508 return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A, 1509 (__v32qi) __B, 1510 (__v32qi) _mm256_setzero_si256 (), 1511 (__mmask32) __M); 1512} 1513 1514static __inline__ __m256i __DEFAULT_FN_ATTRS 1515_mm256_mask_min_epu8 (__m256i __W, __mmask32 __M, __m256i __A, 1516 __m256i __B) 1517{ 1518 return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A, 1519 (__v32qi) __B, 1520 (__v32qi) __W, 1521 (__mmask32) __M); 1522} 1523 1524static __inline__ __m128i __DEFAULT_FN_ATTRS 1525_mm_maskz_min_epu16 (__mmask8 __M, __m128i __A, __m128i __B) 1526{ 1527 return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A, 1528 (__v8hi) __B, 1529 (__v8hi) _mm_setzero_si128 (), 1530 (__mmask8) __M); 1531} 1532 1533static __inline__ __m128i __DEFAULT_FN_ATTRS 1534_mm_mask_min_epu16 (__m128i __W, __mmask8 __M, __m128i __A, 1535 __m128i __B) 1536{ 1537 return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A, 1538 (__v8hi) __B, 1539 (__v8hi) __W, 1540 (__mmask8) __M); 1541} 1542 1543static __inline__ __m256i __DEFAULT_FN_ATTRS 1544_mm256_maskz_min_epu16 (__mmask16 __M, __m256i __A, __m256i __B) 1545{ 1546 return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A, 1547 (__v16hi) __B, 1548 (__v16hi) _mm256_setzero_si256 (), 1549 (__mmask16) __M); 1550} 1551 1552static __inline__ __m256i __DEFAULT_FN_ATTRS 1553_mm256_mask_min_epu16 (__m256i __W, __mmask16 __M, __m256i __A, 1554 __m256i __B) 1555{ 1556 return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A, 1557 (__v16hi) __B, 1558 (__v16hi) __W, 1559 (__mmask16) __M); 1560} 1561 1562static __inline__ __m128i __DEFAULT_FN_ATTRS 1563_mm_mask_shuffle_epi8 (__m128i __W, __mmask16 __U, __m128i __A, 1564 __m128i __B) 1565{ 1566 return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A, 1567 (__v16qi) __B, 1568 (__v16qi) __W, 1569 (__mmask16) __U); 1570} 1571 1572static __inline__ __m128i __DEFAULT_FN_ATTRS 1573_mm_maskz_shuffle_epi8 (__mmask16 __U, __m128i __A, __m128i __B) 1574{ 1575 return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A, 1576 (__v16qi) __B, 1577 (__v16qi) _mm_setzero_si128 (), 1578 (__mmask16) __U); 1579} 1580 1581static __inline__ __m256i __DEFAULT_FN_ATTRS 1582_mm256_mask_shuffle_epi8 (__m256i __W, __mmask32 __U, __m256i __A, 1583 __m256i __B) 1584{ 1585 return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A, 1586 (__v32qi) __B, 1587 (__v32qi) __W, 1588 (__mmask32) __U); 1589} 1590 1591static __inline__ __m256i __DEFAULT_FN_ATTRS 1592_mm256_maskz_shuffle_epi8 (__mmask32 __U, __m256i __A, __m256i __B) 1593{ 1594 return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A, 1595 (__v32qi) __B, 1596 (__v32qi) _mm256_setzero_si256 (), 1597 (__mmask32) __U); 1598} 1599 1600static __inline__ __m128i __DEFAULT_FN_ATTRS 1601_mm_mask_subs_epi8 (__m128i __W, __mmask16 __U, __m128i __A, 1602 __m128i __B) 1603{ 1604 return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A, 1605 (__v16qi) __B, 1606 (__v16qi) __W, 1607 (__mmask16) __U); 1608} 1609 1610static __inline__ __m128i __DEFAULT_FN_ATTRS 1611_mm_maskz_subs_epi8 (__mmask16 __U, __m128i __A, __m128i __B) 1612{ 1613 return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A, 1614 (__v16qi) __B, 1615 (__v16qi) _mm_setzero_si128 (), 1616 (__mmask16) __U); 1617} 1618 1619static __inline__ __m256i __DEFAULT_FN_ATTRS 1620_mm256_mask_subs_epi8 (__m256i __W, __mmask32 __U, __m256i __A, 1621 __m256i __B) 1622{ 1623 return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A, 1624 (__v32qi) __B, 1625 (__v32qi) __W, 1626 (__mmask32) __U); 1627} 1628 1629static __inline__ __m256i __DEFAULT_FN_ATTRS 1630_mm256_maskz_subs_epi8 (__mmask32 __U, __m256i __A, __m256i __B) 1631{ 1632 return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A, 1633 (__v32qi) __B, 1634 (__v32qi) _mm256_setzero_si256 (), 1635 (__mmask32) __U); 1636} 1637 1638static __inline__ __m128i __DEFAULT_FN_ATTRS 1639_mm_mask_subs_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 1640 __m128i __B) 1641{ 1642 return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A, 1643 (__v8hi) __B, 1644 (__v8hi) __W, 1645 (__mmask8) __U); 1646} 1647 1648static __inline__ __m128i __DEFAULT_FN_ATTRS 1649_mm_maskz_subs_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 1650{ 1651 return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A, 1652 (__v8hi) __B, 1653 (__v8hi) _mm_setzero_si128 (), 1654 (__mmask8) __U); 1655} 1656 1657static __inline__ __m256i __DEFAULT_FN_ATTRS 1658_mm256_mask_subs_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 1659 __m256i __B) 1660{ 1661 return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A, 1662 (__v16hi) __B, 1663 (__v16hi) __W, 1664 (__mmask16) __U); 1665} 1666 1667static __inline__ __m256i __DEFAULT_FN_ATTRS 1668_mm256_maskz_subs_epi16 (__mmask16 __U, __m256i __A, __m256i __B) 1669{ 1670 return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A, 1671 (__v16hi) __B, 1672 (__v16hi) _mm256_setzero_si256 (), 1673 (__mmask16) __U); 1674} 1675 1676static __inline__ __m128i __DEFAULT_FN_ATTRS 1677_mm_mask_subs_epu8 (__m128i __W, __mmask16 __U, __m128i __A, 1678 __m128i __B) 1679{ 1680 return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A, 1681 (__v16qi) __B, 1682 (__v16qi) __W, 1683 (__mmask16) __U); 1684} 1685 1686static __inline__ __m128i __DEFAULT_FN_ATTRS 1687_mm_maskz_subs_epu8 (__mmask16 __U, __m128i __A, __m128i __B) 1688{ 1689 return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A, 1690 (__v16qi) __B, 1691 (__v16qi) _mm_setzero_si128 (), 1692 (__mmask16) __U); 1693} 1694 1695static __inline__ __m256i __DEFAULT_FN_ATTRS 1696_mm256_mask_subs_epu8 (__m256i __W, __mmask32 __U, __m256i __A, 1697 __m256i __B) 1698{ 1699 return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A, 1700 (__v32qi) __B, 1701 (__v32qi) __W, 1702 (__mmask32) __U); 1703} 1704 1705static __inline__ __m256i __DEFAULT_FN_ATTRS 1706_mm256_maskz_subs_epu8 (__mmask32 __U, __m256i __A, __m256i __B) 1707{ 1708 return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A, 1709 (__v32qi) __B, 1710 (__v32qi) _mm256_setzero_si256 (), 1711 (__mmask32) __U); 1712} 1713 1714static __inline__ __m128i __DEFAULT_FN_ATTRS 1715_mm_mask_subs_epu16 (__m128i __W, __mmask8 __U, __m128i __A, 1716 __m128i __B) 1717{ 1718 return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A, 1719 (__v8hi) __B, 1720 (__v8hi) __W, 1721 (__mmask8) __U); 1722} 1723 1724static __inline__ __m128i __DEFAULT_FN_ATTRS 1725_mm_maskz_subs_epu16 (__mmask8 __U, __m128i __A, __m128i __B) 1726{ 1727 return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A, 1728 (__v8hi) __B, 1729 (__v8hi) _mm_setzero_si128 (), 1730 (__mmask8) __U); 1731} 1732 1733static __inline__ __m256i __DEFAULT_FN_ATTRS 1734_mm256_mask_subs_epu16 (__m256i __W, __mmask16 __U, __m256i __A, 1735 __m256i __B) 1736{ 1737 return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A, 1738 (__v16hi) __B, 1739 (__v16hi) __W, 1740 (__mmask16) __U); 1741} 1742 1743static __inline__ __m256i __DEFAULT_FN_ATTRS 1744_mm256_maskz_subs_epu16 (__mmask16 __U, __m256i __A, __m256i __B) 1745{ 1746 return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A, 1747 (__v16hi) __B, 1748 (__v16hi) _mm256_setzero_si256 (), 1749 (__mmask16) __U); 1750} 1751 1752static __inline__ __m128i __DEFAULT_FN_ATTRS 1753_mm_mask2_permutex2var_epi16 (__m128i __A, __m128i __I, __mmask8 __U, 1754 __m128i __B) 1755{ 1756 return (__m128i) __builtin_ia32_vpermi2varhi128_mask ((__v8hi) __A, 1757 (__v8hi) __I /* idx */ , 1758 (__v8hi) __B, 1759 (__mmask8) __U); 1760} 1761 1762static __inline__ __m256i __DEFAULT_FN_ATTRS 1763_mm256_mask2_permutex2var_epi16 (__m256i __A, __m256i __I, 1764 __mmask16 __U, __m256i __B) 1765{ 1766 return (__m256i) __builtin_ia32_vpermi2varhi256_mask ((__v16hi) __A, 1767 (__v16hi) __I /* idx */ , 1768 (__v16hi) __B, 1769 (__mmask16) __U); 1770} 1771 1772static __inline__ __m128i __DEFAULT_FN_ATTRS 1773_mm_permutex2var_epi16 (__m128i __A, __m128i __I, __m128i __B) 1774{ 1775 return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I/* idx */, 1776 (__v8hi) __A, 1777 (__v8hi) __B, 1778 (__mmask8) -1); 1779} 1780 1781static __inline__ __m128i __DEFAULT_FN_ATTRS 1782_mm_mask_permutex2var_epi16 (__m128i __A, __mmask8 __U, __m128i __I, 1783 __m128i __B) 1784{ 1785 return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I/* idx */, 1786 (__v8hi) __A, 1787 (__v8hi) __B, 1788 (__mmask8) __U); 1789} 1790 1791static __inline__ __m128i __DEFAULT_FN_ATTRS 1792_mm_maskz_permutex2var_epi16 (__mmask8 __U, __m128i __A, __m128i __I, 1793 __m128i __B) 1794{ 1795 return (__m128i) __builtin_ia32_vpermt2varhi128_maskz ((__v8hi) __I/* idx */, 1796 (__v8hi) __A, 1797 (__v8hi) __B, 1798 (__mmask8) __U); 1799} 1800 1801static __inline__ __m256i __DEFAULT_FN_ATTRS 1802_mm256_permutex2var_epi16 (__m256i __A, __m256i __I, __m256i __B) 1803{ 1804 return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I/* idx */, 1805 (__v16hi) __A, 1806 (__v16hi) __B, 1807 (__mmask16) -1); 1808} 1809 1810static __inline__ __m256i __DEFAULT_FN_ATTRS 1811_mm256_mask_permutex2var_epi16 (__m256i __A, __mmask16 __U, 1812 __m256i __I, __m256i __B) 1813{ 1814 return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I/* idx */, 1815 (__v16hi) __A, 1816 (__v16hi) __B, 1817 (__mmask16) __U); 1818} 1819 1820static __inline__ __m256i __DEFAULT_FN_ATTRS 1821_mm256_maskz_permutex2var_epi16 (__mmask16 __U, __m256i __A, 1822 __m256i __I, __m256i __B) 1823{ 1824 return (__m256i) __builtin_ia32_vpermt2varhi256_maskz ((__v16hi) __I/* idx */, 1825 (__v16hi) __A, 1826 (__v16hi) __B, 1827 (__mmask16) __U); 1828} 1829 1830static __inline__ __m128i __DEFAULT_FN_ATTRS 1831_mm_mask_maddubs_epi16 (__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) { 1832 return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X, 1833 (__v16qi) __Y, 1834 (__v8hi) __W, 1835 (__mmask8) __U); 1836} 1837 1838static __inline__ __m128i __DEFAULT_FN_ATTRS 1839_mm_maskz_maddubs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y) { 1840 return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X, 1841 (__v16qi) __Y, 1842 (__v8hi) _mm_setzero_si128(), 1843 (__mmask8) __U); 1844} 1845 1846static __inline__ __m256i __DEFAULT_FN_ATTRS 1847_mm256_mask_maddubs_epi16 (__m256i __W, __mmask16 __U, __m256i __X, 1848 __m256i __Y) { 1849 return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X, 1850 (__v32qi) __Y, 1851 (__v16hi) __W, 1852 (__mmask16) __U); 1853} 1854 1855static __inline__ __m256i __DEFAULT_FN_ATTRS 1856_mm256_maskz_maddubs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y) { 1857 return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X, 1858 (__v32qi) __Y, 1859 (__v16hi) _mm256_setzero_si256(), 1860 (__mmask16) __U); 1861} 1862 1863static __inline__ __m128i __DEFAULT_FN_ATTRS 1864_mm_mask_madd_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 1865 __m128i __B) { 1866 return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A, 1867 (__v8hi) __B, 1868 (__v4si) __W, 1869 (__mmask8) __U); 1870} 1871 1872static __inline__ __m128i __DEFAULT_FN_ATTRS 1873_mm_maskz_madd_epi16 (__mmask8 __U, __m128i __A, __m128i __B) { 1874 return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A, 1875 (__v8hi) __B, 1876 (__v4si) _mm_setzero_si128(), 1877 (__mmask8) __U); 1878} 1879 1880static __inline__ __m256i __DEFAULT_FN_ATTRS 1881_mm256_mask_madd_epi16 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) { 1882 return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A, 1883 (__v16hi) __B, 1884 (__v8si) __W, 1885 (__mmask8) __U); 1886} 1887 1888static __inline__ __m256i __DEFAULT_FN_ATTRS 1889_mm256_maskz_madd_epi16 (__mmask8 __U, __m256i __A, __m256i __B) { 1890 return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A, 1891 (__v16hi) __B, 1892 (__v8si) _mm256_setzero_si256(), 1893 (__mmask8) __U); 1894} 1895 1896static __inline__ __m128i __DEFAULT_FN_ATTRS 1897_mm_cvtsepi16_epi8 (__m128i __A) { 1898 return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A, 1899 (__v16qi) _mm_setzero_si128(), 1900 (__mmask8) -1); 1901} 1902 1903static __inline__ __m128i __DEFAULT_FN_ATTRS 1904_mm_mask_cvtsepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) { 1905 return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A, 1906 (__v16qi) __O, 1907 __M); 1908} 1909 1910static __inline__ __m128i __DEFAULT_FN_ATTRS 1911_mm_maskz_cvtsepi16_epi8 (__mmask8 __M, __m128i __A) { 1912 return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A, 1913 (__v16qi) _mm_setzero_si128(), 1914 __M); 1915} 1916 1917static __inline__ __m128i __DEFAULT_FN_ATTRS 1918_mm256_cvtsepi16_epi8 (__m256i __A) { 1919 return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A, 1920 (__v16qi) _mm_setzero_si128(), 1921 (__mmask16) -1); 1922} 1923 1924static __inline__ __m128i __DEFAULT_FN_ATTRS 1925_mm256_mask_cvtsepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) { 1926 return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A, 1927 (__v16qi) __O, 1928 __M); 1929} 1930 1931static __inline__ __m128i __DEFAULT_FN_ATTRS 1932_mm256_maskz_cvtsepi16_epi8 (__mmask16 __M, __m256i __A) { 1933 return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A, 1934 (__v16qi) _mm_setzero_si128(), 1935 __M); 1936} 1937 1938static __inline__ __m128i __DEFAULT_FN_ATTRS 1939_mm_cvtusepi16_epi8 (__m128i __A) { 1940 return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A, 1941 (__v16qi) _mm_setzero_si128(), 1942 (__mmask8) -1); 1943} 1944 1945static __inline__ __m128i __DEFAULT_FN_ATTRS 1946_mm_mask_cvtusepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) { 1947 return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A, 1948 (__v16qi) __O, 1949 __M); 1950} 1951 1952static __inline__ __m128i __DEFAULT_FN_ATTRS 1953_mm_maskz_cvtusepi16_epi8 (__mmask8 __M, __m128i __A) { 1954 return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A, 1955 (__v16qi) _mm_setzero_si128(), 1956 __M); 1957} 1958 1959static __inline__ __m128i __DEFAULT_FN_ATTRS 1960_mm256_cvtusepi16_epi8 (__m256i __A) { 1961 return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A, 1962 (__v16qi) _mm_setzero_si128(), 1963 (__mmask16) -1); 1964} 1965 1966static __inline__ __m128i __DEFAULT_FN_ATTRS 1967_mm256_mask_cvtusepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) { 1968 return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A, 1969 (__v16qi) __O, 1970 __M); 1971} 1972 1973static __inline__ __m128i __DEFAULT_FN_ATTRS 1974_mm256_maskz_cvtusepi16_epi8 (__mmask16 __M, __m256i __A) { 1975 return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A, 1976 (__v16qi) _mm_setzero_si128(), 1977 __M); 1978} 1979 1980static __inline__ __m128i __DEFAULT_FN_ATTRS 1981_mm_cvtepi16_epi8 (__m128i __A) { 1982 1983 return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A, 1984 (__v16qi) _mm_setzero_si128(), 1985 (__mmask8) -1); 1986} 1987 1988static __inline__ __m128i __DEFAULT_FN_ATTRS 1989_mm_mask_cvtepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) { 1990 return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A, 1991 (__v16qi) __O, 1992 __M); 1993} 1994 1995static __inline__ __m128i __DEFAULT_FN_ATTRS 1996_mm_maskz_cvtepi16_epi8 (__mmask8 __M, __m128i __A) { 1997 return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A, 1998 (__v16qi) _mm_setzero_si128(), 1999 __M); 2000} 2001 2002static __inline__ void __DEFAULT_FN_ATTRS 2003_mm_mask_cvtepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A) 2004{ 2005 __builtin_ia32_pmovwb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M); 2006} 2007 2008 2009static __inline__ void __DEFAULT_FN_ATTRS 2010_mm_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A) 2011{ 2012 __builtin_ia32_pmovswb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M); 2013} 2014 2015static __inline__ void __DEFAULT_FN_ATTRS 2016_mm_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A) 2017{ 2018 __builtin_ia32_pmovuswb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M); 2019} 2020 2021static __inline__ __m128i __DEFAULT_FN_ATTRS 2022_mm256_cvtepi16_epi8 (__m256i __A) { 2023 return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A, 2024 (__v16qi) _mm_setzero_si128(), 2025 (__mmask16) -1); 2026} 2027 2028static __inline__ __m128i __DEFAULT_FN_ATTRS 2029_mm256_mask_cvtepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) { 2030 return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A, 2031 (__v16qi) __O, 2032 __M); 2033} 2034 2035static __inline__ __m128i __DEFAULT_FN_ATTRS 2036_mm256_maskz_cvtepi16_epi8 (__mmask16 __M, __m256i __A) { 2037 return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A, 2038 (__v16qi) _mm_setzero_si128(), 2039 __M); 2040} 2041 2042static __inline__ void __DEFAULT_FN_ATTRS 2043_mm256_mask_cvtepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A) 2044{ 2045 __builtin_ia32_pmovwb256mem_mask ((__v16qi *) __P, (__v16hi) __A, __M); 2046} 2047 2048static __inline__ void __DEFAULT_FN_ATTRS 2049_mm256_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A) 2050{ 2051 __builtin_ia32_pmovswb256mem_mask ((__v16qi *) __P, (__v16hi) __A, __M); 2052} 2053 2054static __inline__ void __DEFAULT_FN_ATTRS 2055_mm256_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A) 2056{ 2057 __builtin_ia32_pmovuswb256mem_mask ((__v16qi*) __P, (__v16hi) __A, __M); 2058} 2059static __inline__ __m128i __DEFAULT_FN_ATTRS 2060_mm_mask_mulhrs_epi16 (__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) { 2061 return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X, 2062 (__v8hi) __Y, 2063 (__v8hi) __W, 2064 (__mmask8) __U); 2065} 2066 2067static __inline__ __m128i __DEFAULT_FN_ATTRS 2068_mm_maskz_mulhrs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y) { 2069 return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X, 2070 (__v8hi) __Y, 2071 (__v8hi) _mm_setzero_si128(), 2072 (__mmask8) __U); 2073} 2074 2075static __inline__ __m256i __DEFAULT_FN_ATTRS 2076_mm256_mask_mulhrs_epi16 (__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) { 2077 return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X, 2078 (__v16hi) __Y, 2079 (__v16hi) __W, 2080 (__mmask16) __U); 2081} 2082 2083static __inline__ __m256i __DEFAULT_FN_ATTRS 2084_mm256_maskz_mulhrs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y) { 2085 return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X, 2086 (__v16hi) __Y, 2087 (__v16hi) _mm256_setzero_si256(), 2088 (__mmask16) __U); 2089} 2090 2091static __inline__ __m128i __DEFAULT_FN_ATTRS 2092_mm_mask_mulhi_epu16 (__m128i __W, __mmask8 __U, __m128i __A, 2093 __m128i __B) { 2094 return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A, 2095 (__v8hi) __B, 2096 (__v8hi) __W, 2097 (__mmask8) __U); 2098} 2099 2100static __inline__ __m128i __DEFAULT_FN_ATTRS 2101_mm_maskz_mulhi_epu16 (__mmask8 __U, __m128i __A, __m128i __B) { 2102 return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A, 2103 (__v8hi) __B, 2104 (__v8hi) _mm_setzero_si128(), 2105 (__mmask8) __U); 2106} 2107 2108static __inline__ __m256i __DEFAULT_FN_ATTRS 2109_mm256_mask_mulhi_epu16 (__m256i __W, __mmask16 __U, __m256i __A, 2110 __m256i __B) { 2111 return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A, 2112 (__v16hi) __B, 2113 (__v16hi) __W, 2114 (__mmask16) __U); 2115} 2116 2117static __inline__ __m256i __DEFAULT_FN_ATTRS 2118_mm256_maskz_mulhi_epu16 (__mmask16 __U, __m256i __A, __m256i __B) { 2119 return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A, 2120 (__v16hi) __B, 2121 (__v16hi) _mm256_setzero_si256(), 2122 (__mmask16) __U); 2123} 2124 2125static __inline__ __m128i __DEFAULT_FN_ATTRS 2126_mm_mask_mulhi_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 2127 __m128i __B) { 2128 return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A, 2129 (__v8hi) __B, 2130 (__v8hi) __W, 2131 (__mmask8) __U); 2132} 2133 2134static __inline__ __m128i __DEFAULT_FN_ATTRS 2135_mm_maskz_mulhi_epi16 (__mmask8 __U, __m128i __A, __m128i __B) { 2136 return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A, 2137 (__v8hi) __B, 2138 (__v8hi) _mm_setzero_si128(), 2139 (__mmask8) __U); 2140} 2141 2142static __inline__ __m256i __DEFAULT_FN_ATTRS 2143_mm256_mask_mulhi_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 2144 __m256i __B) { 2145 return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A, 2146 (__v16hi) __B, 2147 (__v16hi) __W, 2148 (__mmask16) __U); 2149} 2150 2151static __inline__ __m256i __DEFAULT_FN_ATTRS 2152_mm256_maskz_mulhi_epi16 (__mmask16 __U, __m256i __A, __m256i __B) { 2153 return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A, 2154 (__v16hi) __B, 2155 (__v16hi) _mm256_setzero_si256(), 2156 (__mmask16) __U); 2157} 2158 2159static __inline__ __m128i __DEFAULT_FN_ATTRS 2160_mm_mask_unpackhi_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) { 2161 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 2162 (__v16qi)_mm_unpackhi_epi8(__A, __B), 2163 (__v16qi)__W); 2164} 2165 2166static __inline__ __m128i __DEFAULT_FN_ATTRS 2167_mm_maskz_unpackhi_epi8(__mmask16 __U, __m128i __A, __m128i __B) { 2168 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 2169 (__v16qi)_mm_unpackhi_epi8(__A, __B), 2170 (__v16qi)_mm_setzero_si128()); 2171} 2172 2173static __inline__ __m256i __DEFAULT_FN_ATTRS 2174_mm256_mask_unpackhi_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) { 2175 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 2176 (__v32qi)_mm256_unpackhi_epi8(__A, __B), 2177 (__v32qi)__W); 2178} 2179 2180static __inline__ __m256i __DEFAULT_FN_ATTRS 2181_mm256_maskz_unpackhi_epi8(__mmask32 __U, __m256i __A, __m256i __B) { 2182 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 2183 (__v32qi)_mm256_unpackhi_epi8(__A, __B), 2184 (__v32qi)_mm256_setzero_si256()); 2185} 2186 2187static __inline__ __m128i __DEFAULT_FN_ATTRS 2188_mm_mask_unpackhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 2189 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 2190 (__v8hi)_mm_unpackhi_epi16(__A, __B), 2191 (__v8hi)__W); 2192} 2193 2194static __inline__ __m128i __DEFAULT_FN_ATTRS 2195_mm_maskz_unpackhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) { 2196 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 2197 (__v8hi)_mm_unpackhi_epi16(__A, __B), 2198 (__v8hi) _mm_setzero_si128()); 2199} 2200 2201static __inline__ __m256i __DEFAULT_FN_ATTRS 2202_mm256_mask_unpackhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) { 2203 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 2204 (__v16hi)_mm256_unpackhi_epi16(__A, __B), 2205 (__v16hi)__W); 2206} 2207 2208static __inline__ __m256i __DEFAULT_FN_ATTRS 2209_mm256_maskz_unpackhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) { 2210 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 2211 (__v16hi)_mm256_unpackhi_epi16(__A, __B), 2212 (__v16hi)_mm256_setzero_si256()); 2213} 2214 2215static __inline__ __m128i __DEFAULT_FN_ATTRS 2216_mm_mask_unpacklo_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) { 2217 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 2218 (__v16qi)_mm_unpacklo_epi8(__A, __B), 2219 (__v16qi)__W); 2220} 2221 2222static __inline__ __m128i __DEFAULT_FN_ATTRS 2223_mm_maskz_unpacklo_epi8(__mmask16 __U, __m128i __A, __m128i __B) { 2224 return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U, 2225 (__v16qi)_mm_unpacklo_epi8(__A, __B), 2226 (__v16qi)_mm_setzero_si128()); 2227} 2228 2229static __inline__ __m256i __DEFAULT_FN_ATTRS 2230_mm256_mask_unpacklo_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) { 2231 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 2232 (__v32qi)_mm256_unpacklo_epi8(__A, __B), 2233 (__v32qi)__W); 2234} 2235 2236static __inline__ __m256i __DEFAULT_FN_ATTRS 2237_mm256_maskz_unpacklo_epi8(__mmask32 __U, __m256i __A, __m256i __B) { 2238 return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U, 2239 (__v32qi)_mm256_unpacklo_epi8(__A, __B), 2240 (__v32qi)_mm256_setzero_si256()); 2241} 2242 2243static __inline__ __m128i __DEFAULT_FN_ATTRS 2244_mm_mask_unpacklo_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) { 2245 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 2246 (__v8hi)_mm_unpacklo_epi16(__A, __B), 2247 (__v8hi)__W); 2248} 2249 2250static __inline__ __m128i __DEFAULT_FN_ATTRS 2251_mm_maskz_unpacklo_epi16(__mmask8 __U, __m128i __A, __m128i __B) { 2252 return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U, 2253 (__v8hi)_mm_unpacklo_epi16(__A, __B), 2254 (__v8hi) _mm_setzero_si128()); 2255} 2256 2257static __inline__ __m256i __DEFAULT_FN_ATTRS 2258_mm256_mask_unpacklo_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) { 2259 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 2260 (__v16hi)_mm256_unpacklo_epi16(__A, __B), 2261 (__v16hi)__W); 2262} 2263 2264static __inline__ __m256i __DEFAULT_FN_ATTRS 2265_mm256_maskz_unpacklo_epi16(__mmask16 __U, __m256i __A, __m256i __B) { 2266 return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U, 2267 (__v16hi)_mm256_unpacklo_epi16(__A, __B), 2268 (__v16hi)_mm256_setzero_si256()); 2269} 2270 2271static __inline__ __m128i __DEFAULT_FN_ATTRS 2272_mm_mask_cvtepi8_epi16 (__m128i __W, __mmask32 __U, __m128i __A) 2273{ 2274 return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A, 2275 (__v8hi) __W, 2276 (__mmask8) __U); 2277} 2278 2279static __inline__ __m128i __DEFAULT_FN_ATTRS 2280_mm_maskz_cvtepi8_epi16 (__mmask8 __U, __m128i __A) 2281{ 2282 return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A, 2283 (__v8hi) 2284 _mm_setzero_si128 (), 2285 (__mmask8) __U); 2286} 2287 2288static __inline__ __m256i __DEFAULT_FN_ATTRS 2289_mm256_mask_cvtepi8_epi16 (__m256i __W, __mmask32 __U, __m128i __A) 2290{ 2291 return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A, 2292 (__v16hi) __W, 2293 (__mmask16) __U); 2294} 2295 2296static __inline__ __m256i __DEFAULT_FN_ATTRS 2297_mm256_maskz_cvtepi8_epi16 (__mmask16 __U, __m128i __A) 2298{ 2299 return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A, 2300 (__v16hi) 2301 _mm256_setzero_si256 (), 2302 (__mmask16) __U); 2303} 2304 2305 2306static __inline__ __m128i __DEFAULT_FN_ATTRS 2307_mm_mask_cvtepu8_epi16 (__m128i __W, __mmask32 __U, __m128i __A) 2308{ 2309 return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A, 2310 (__v8hi) __W, 2311 (__mmask8) __U); 2312} 2313 2314static __inline__ __m128i __DEFAULT_FN_ATTRS 2315_mm_maskz_cvtepu8_epi16 (__mmask8 __U, __m128i __A) 2316{ 2317 return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A, 2318 (__v8hi) 2319 _mm_setzero_si128 (), 2320 (__mmask8) __U); 2321} 2322 2323static __inline__ __m256i __DEFAULT_FN_ATTRS 2324_mm256_mask_cvtepu8_epi16 (__m256i __W, __mmask32 __U, __m128i __A) 2325{ 2326 return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A, 2327 (__v16hi) __W, 2328 (__mmask16) __U); 2329} 2330 2331static __inline__ __m256i __DEFAULT_FN_ATTRS 2332_mm256_maskz_cvtepu8_epi16 (__mmask16 __U, __m128i __A) 2333{ 2334 return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A, 2335 (__v16hi) 2336 _mm256_setzero_si256 (), 2337 (__mmask16) __U); 2338} 2339 2340 2341#define _mm_cmp_epi8_mask(a, b, p) __extension__ ({ \ 2342 (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \ 2343 (__v16qi)(__m128i)(b), (int)(p), \ 2344 (__mmask16)-1); }) 2345 2346#define _mm_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \ 2347 (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \ 2348 (__v16qi)(__m128i)(b), (int)(p), \ 2349 (__mmask16)(m)); }) 2350 2351#define _mm_cmp_epu8_mask(a, b, p) __extension__ ({ \ 2352 (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \ 2353 (__v16qi)(__m128i)(b), (int)(p), \ 2354 (__mmask16)-1); }) 2355 2356#define _mm_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \ 2357 (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \ 2358 (__v16qi)(__m128i)(b), (int)(p), \ 2359 (__mmask16)(m)); }) 2360 2361#define _mm256_cmp_epi8_mask(a, b, p) __extension__ ({ \ 2362 (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \ 2363 (__v32qi)(__m256i)(b), (int)(p), \ 2364 (__mmask32)-1); }) 2365 2366#define _mm256_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \ 2367 (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \ 2368 (__v32qi)(__m256i)(b), (int)(p), \ 2369 (__mmask32)(m)); }) 2370 2371#define _mm256_cmp_epu8_mask(a, b, p) __extension__ ({ \ 2372 (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \ 2373 (__v32qi)(__m256i)(b), (int)(p), \ 2374 (__mmask32)-1); }) 2375 2376#define _mm256_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \ 2377 (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \ 2378 (__v32qi)(__m256i)(b), (int)(p), \ 2379 (__mmask32)(m)); }) 2380 2381#define _mm_cmp_epi16_mask(a, b, p) __extension__ ({ \ 2382 (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \ 2383 (__v8hi)(__m128i)(b), (int)(p), \ 2384 (__mmask8)-1); }) 2385 2386#define _mm_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \ 2387 (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \ 2388 (__v8hi)(__m128i)(b), (int)(p), \ 2389 (__mmask8)(m)); }) 2390 2391#define _mm_cmp_epu16_mask(a, b, p) __extension__ ({ \ 2392 (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \ 2393 (__v8hi)(__m128i)(b), (int)(p), \ 2394 (__mmask8)-1); }) 2395 2396#define _mm_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \ 2397 (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \ 2398 (__v8hi)(__m128i)(b), (int)(p), \ 2399 (__mmask8)(m)); }) 2400 2401#define _mm256_cmp_epi16_mask(a, b, p) __extension__ ({ \ 2402 (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \ 2403 (__v16hi)(__m256i)(b), (int)(p), \ 2404 (__mmask16)-1); }) 2405 2406#define _mm256_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \ 2407 (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \ 2408 (__v16hi)(__m256i)(b), (int)(p), \ 2409 (__mmask16)(m)); }) 2410 2411#define _mm256_cmp_epu16_mask(a, b, p) __extension__ ({ \ 2412 (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \ 2413 (__v16hi)(__m256i)(b), (int)(p), \ 2414 (__mmask16)-1); }) 2415 2416#define _mm256_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \ 2417 (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \ 2418 (__v16hi)(__m256i)(b), (int)(p), \ 2419 (__mmask16)(m)); }) 2420 2421#define _mm_mask_shufflehi_epi16(W, U, A, imm) __extension__ ({ \ 2422 (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \ 2423 (__v8hi)_mm_shufflehi_epi16((A), (imm)), \ 2424 (__v8hi)(__m128i)(W)); }) 2425 2426#define _mm_maskz_shufflehi_epi16(U, A, imm) __extension__ ({ \ 2427 (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \ 2428 (__v8hi)_mm_shufflehi_epi16((A), (imm)), \ 2429 (__v8hi)_mm_setzero_hi()); }) 2430 2431#define _mm256_mask_shufflehi_epi16(W, U, A, imm) __extension__ ({ \ 2432 (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \ 2433 (__v16hi)_mm256_shufflehi_epi16((A), (imm)), \ 2434 (__v16hi)(__m256i)(W)); }) 2435 2436#define _mm256_maskz_shufflehi_epi16(U, A, imm) __extension__ ({ \ 2437 (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \ 2438 (__v16hi)_mm256_shufflehi_epi16((A), (imm)), \ 2439 (__v16hi)_mm256_setzero_si256()); }) 2440 2441#define _mm_mask_shufflelo_epi16(W, U, A, imm) __extension__ ({ \ 2442 (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \ 2443 (__v8hi)_mm_shufflelo_epi16((A), (imm)), \ 2444 (__v8hi)(__m128i)(W)); }) 2445 2446#define _mm_maskz_shufflelo_epi16(U, A, imm) __extension__ ({ \ 2447 (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \ 2448 (__v8hi)_mm_shufflelo_epi16((A), (imm)), \ 2449 (__v8hi)_mm_setzero_hi()); }) 2450 2451#define _mm256_mask_shufflelo_epi16(W, U, A, imm) __extension__ ({ \ 2452 (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \ 2453 (__v16hi)_mm256_shufflelo_epi16((A), \ 2454 (imm)), \ 2455 (__v16hi)(__m256i)(W)); }) 2456 2457#define _mm256_maskz_shufflelo_epi16(U, A, imm) __extension__ ({ \ 2458 (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \ 2459 (__v16hi)_mm256_shufflelo_epi16((A), \ 2460 (imm)), \ 2461 (__v16hi)_mm256_setzero_si256()); }) 2462 2463static __inline__ __m256i __DEFAULT_FN_ATTRS 2464_mm256_sllv_epi16 (__m256i __A, __m256i __B) 2465{ 2466 return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A, 2467 (__v16hi) __B, 2468 (__v16hi) 2469 _mm256_setzero_si256 (), 2470 (__mmask16) -1); 2471} 2472 2473static __inline__ __m256i __DEFAULT_FN_ATTRS 2474_mm256_mask_sllv_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 2475 __m256i __B) 2476{ 2477 return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A, 2478 (__v16hi) __B, 2479 (__v16hi) __W, 2480 (__mmask16) __U); 2481} 2482 2483static __inline__ __m256i __DEFAULT_FN_ATTRS 2484_mm256_maskz_sllv_epi16 (__mmask16 __U, __m256i __A, __m256i __B) 2485{ 2486 return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A, 2487 (__v16hi) __B, 2488 (__v16hi) 2489 _mm256_setzero_si256 (), 2490 (__mmask16) __U); 2491} 2492 2493static __inline__ __m128i __DEFAULT_FN_ATTRS 2494_mm_sllv_epi16 (__m128i __A, __m128i __B) 2495{ 2496 return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A, 2497 (__v8hi) __B, 2498 (__v8hi) 2499 _mm_setzero_hi (), 2500 (__mmask8) -1); 2501} 2502 2503static __inline__ __m128i __DEFAULT_FN_ATTRS 2504_mm_mask_sllv_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 2505 __m128i __B) 2506{ 2507 return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A, 2508 (__v8hi) __B, 2509 (__v8hi) __W, 2510 (__mmask8) __U); 2511} 2512 2513static __inline__ __m128i __DEFAULT_FN_ATTRS 2514_mm_maskz_sllv_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 2515{ 2516 return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A, 2517 (__v8hi) __B, 2518 (__v8hi) 2519 _mm_setzero_si128 (), 2520 (__mmask8) __U); 2521} 2522 2523static __inline__ __m128i __DEFAULT_FN_ATTRS 2524_mm_mask_sll_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 2525 __m128i __B) 2526{ 2527 return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A, 2528 (__v8hi) __B, 2529 (__v8hi) __W, 2530 (__mmask8) __U); 2531} 2532 2533static __inline__ __m128i __DEFAULT_FN_ATTRS 2534_mm_maskz_sll_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 2535{ 2536 return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A, 2537 (__v8hi) __B, 2538 (__v8hi) 2539 _mm_setzero_si128 (), 2540 (__mmask8) __U); 2541} 2542 2543static __inline__ __m256i __DEFAULT_FN_ATTRS 2544_mm256_mask_sll_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 2545 __m128i __B) 2546{ 2547 return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A, 2548 (__v8hi) __B, 2549 (__v16hi) __W, 2550 (__mmask16) __U); 2551} 2552 2553static __inline__ __m256i __DEFAULT_FN_ATTRS 2554_mm256_maskz_sll_epi16 (__mmask16 __U, __m256i __A, __m128i __B) 2555{ 2556 return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A, 2557 (__v8hi) __B, 2558 (__v16hi) 2559 _mm256_setzero_si256 (), 2560 (__mmask16) __U); 2561} 2562 2563#define _mm_mask_slli_epi16(W, U, A, B) __extension__ ({ \ 2564 (__m128i)__builtin_ia32_psllwi128_mask((__v8hi)(__m128i)(A), (int)(B), \ 2565 (__v8hi)(__m128i)(W), \ 2566 (__mmask8)(U)); }) 2567 2568#define _mm_maskz_slli_epi16(U, A, B) __extension__ ({ \ 2569 (__m128i)__builtin_ia32_psllwi128_mask((__v8hi)(__m128i)(A), (int)(B), \ 2570 (__v8hi)_mm_setzero_si128(), \ 2571 (__mmask8)(U)); }) 2572 2573#define _mm256_mask_slli_epi16(W, U, A, B) __extension__ ({ \ 2574 (__m256i)__builtin_ia32_psllwi256_mask((__v16hi)(__m256i)(A), (int)(B), \ 2575 (__v16hi)(__m256i)(W), \ 2576 (__mmask16)(U)); }) 2577 2578#define _mm256_maskz_slli_epi16(U, A, B) __extension__ ({ \ 2579 (__m256i)__builtin_ia32_psllwi256_mask((__v16hi)(__m256i)(A), (int)(B), \ 2580 (__v16hi)_mm256_setzero_si256(), \ 2581 (__mmask16)(U)); }) 2582 2583 2584 2585static __inline__ __m256i __DEFAULT_FN_ATTRS 2586_mm256_srlv_epi16 (__m256i __A, __m256i __B) 2587{ 2588 return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A, 2589 (__v16hi) __B, 2590 (__v16hi) 2591 _mm256_setzero_si256 (), 2592 (__mmask16) -1); 2593} 2594 2595static __inline__ __m256i __DEFAULT_FN_ATTRS 2596_mm256_mask_srlv_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 2597 __m256i __B) 2598{ 2599 return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A, 2600 (__v16hi) __B, 2601 (__v16hi) __W, 2602 (__mmask16) __U); 2603} 2604 2605static __inline__ __m256i __DEFAULT_FN_ATTRS 2606_mm256_maskz_srlv_epi16 (__mmask16 __U, __m256i __A, __m256i __B) 2607{ 2608 return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A, 2609 (__v16hi) __B, 2610 (__v16hi) 2611 _mm256_setzero_si256 (), 2612 (__mmask16) __U); 2613} 2614 2615static __inline__ __m128i __DEFAULT_FN_ATTRS 2616_mm_srlv_epi16 (__m128i __A, __m128i __B) 2617{ 2618 return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A, 2619 (__v8hi) __B, 2620 (__v8hi) 2621 _mm_setzero_hi (), 2622 (__mmask8) -1); 2623} 2624 2625static __inline__ __m128i __DEFAULT_FN_ATTRS 2626_mm_mask_srlv_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 2627 __m128i __B) 2628{ 2629 return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A, 2630 (__v8hi) __B, 2631 (__v8hi) __W, 2632 (__mmask8) __U); 2633} 2634 2635static __inline__ __m128i __DEFAULT_FN_ATTRS 2636_mm_maskz_srlv_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 2637{ 2638 return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A, 2639 (__v8hi) __B, 2640 (__v8hi) 2641 _mm_setzero_si128 (), 2642 (__mmask8) __U); 2643} 2644 2645static __inline__ __m256i __DEFAULT_FN_ATTRS 2646_mm256_srav_epi16 (__m256i __A, __m256i __B) 2647{ 2648 return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A, 2649 (__v16hi) __B, 2650 (__v16hi) 2651 _mm256_setzero_si256 (), 2652 (__mmask16) -1); 2653} 2654 2655static __inline__ __m256i __DEFAULT_FN_ATTRS 2656_mm256_mask_srav_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 2657 __m256i __B) 2658{ 2659 return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A, 2660 (__v16hi) __B, 2661 (__v16hi) __W, 2662 (__mmask16) __U); 2663} 2664 2665static __inline__ __m256i __DEFAULT_FN_ATTRS 2666_mm256_maskz_srav_epi16 (__mmask16 __U, __m256i __A, __m256i __B) 2667{ 2668 return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A, 2669 (__v16hi) __B, 2670 (__v16hi) 2671 _mm256_setzero_si256 (), 2672 (__mmask16) __U); 2673} 2674 2675static __inline__ __m128i __DEFAULT_FN_ATTRS 2676_mm_srav_epi16 (__m128i __A, __m128i __B) 2677{ 2678 return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A, 2679 (__v8hi) __B, 2680 (__v8hi) 2681 _mm_setzero_hi (), 2682 (__mmask8) -1); 2683} 2684 2685static __inline__ __m128i __DEFAULT_FN_ATTRS 2686_mm_mask_srav_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 2687 __m128i __B) 2688{ 2689 return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A, 2690 (__v8hi) __B, 2691 (__v8hi) __W, 2692 (__mmask8) __U); 2693} 2694 2695static __inline__ __m128i __DEFAULT_FN_ATTRS 2696_mm_maskz_srav_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 2697{ 2698 return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A, 2699 (__v8hi) __B, 2700 (__v8hi) 2701 _mm_setzero_si128 (), 2702 (__mmask8) __U); 2703} 2704 2705static __inline__ __m128i __DEFAULT_FN_ATTRS 2706_mm_mask_sra_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 2707 __m128i __B) 2708{ 2709 return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A, 2710 (__v8hi) __B, 2711 (__v8hi) __W, 2712 (__mmask8) __U); 2713} 2714 2715static __inline__ __m128i __DEFAULT_FN_ATTRS 2716_mm_maskz_sra_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 2717{ 2718 return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A, 2719 (__v8hi) __B, 2720 (__v8hi) 2721 _mm_setzero_si128 (), 2722 (__mmask8) __U); 2723} 2724 2725static __inline__ __m256i __DEFAULT_FN_ATTRS 2726_mm256_mask_sra_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 2727 __m128i __B) 2728{ 2729 return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A, 2730 (__v8hi) __B, 2731 (__v16hi) __W, 2732 (__mmask16) __U); 2733} 2734 2735static __inline__ __m256i __DEFAULT_FN_ATTRS 2736_mm256_maskz_sra_epi16 (__mmask16 __U, __m256i __A, __m128i __B) 2737{ 2738 return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A, 2739 (__v8hi) __B, 2740 (__v16hi) 2741 _mm256_setzero_si256 (), 2742 (__mmask16) __U); 2743} 2744 2745#define _mm_mask_srai_epi16(W, U, A, imm) __extension__ ({ \ 2746 (__m128i)__builtin_ia32_psrawi128_mask((__v8hi)(__m128i)(A), (int)(imm), \ 2747 (__v8hi)(__m128i)(W), \ 2748 (__mmask8)(U)); }) 2749 2750#define _mm_maskz_srai_epi16(U, A, imm) __extension__ ({ \ 2751 (__m128i)__builtin_ia32_psrawi128_mask((__v8hi)(__m128i)(A), (int)(imm), \ 2752 (__v8hi)_mm_setzero_si128(), \ 2753 (__mmask8)(U)); }) 2754 2755#define _mm256_mask_srai_epi16(W, U, A, imm) __extension__ ({ \ 2756 (__m256i)__builtin_ia32_psrawi256_mask((__v16hi)(__m256i)(A), (int)(imm), \ 2757 (__v16hi)(__m256i)(W), \ 2758 (__mmask16)(U)); }) 2759 2760#define _mm256_maskz_srai_epi16(U, A, imm) __extension__ ({ \ 2761 (__m256i)__builtin_ia32_psrawi256_mask((__v16hi)(__m256i)(A), (int)(imm), \ 2762 (__v16hi)_mm256_setzero_si256(), \ 2763 (__mmask16)(U)); }) 2764 2765static __inline__ __m128i __DEFAULT_FN_ATTRS 2766_mm_mask_srl_epi16 (__m128i __W, __mmask8 __U, __m128i __A, 2767 __m128i __B) 2768{ 2769 return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A, 2770 (__v8hi) __B, 2771 (__v8hi) __W, 2772 (__mmask8) __U); 2773} 2774 2775static __inline__ __m128i __DEFAULT_FN_ATTRS 2776_mm_maskz_srl_epi16 (__mmask8 __U, __m128i __A, __m128i __B) 2777{ 2778 return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A, 2779 (__v8hi) __B, 2780 (__v8hi) 2781 _mm_setzero_si128 (), 2782 (__mmask8) __U); 2783} 2784 2785static __inline__ __m256i __DEFAULT_FN_ATTRS 2786_mm256_mask_srl_epi16 (__m256i __W, __mmask16 __U, __m256i __A, 2787 __m128i __B) 2788{ 2789 return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A, 2790 (__v8hi) __B, 2791 (__v16hi) __W, 2792 (__mmask16) __U); 2793} 2794 2795static __inline__ __m256i __DEFAULT_FN_ATTRS 2796_mm256_maskz_srl_epi16 (__mmask16 __U, __m256i __A, __m128i __B) 2797{ 2798 return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A, 2799 (__v8hi) __B, 2800 (__v16hi) 2801 _mm256_setzero_si256 (), 2802 (__mmask16) __U); 2803} 2804 2805#define _mm_mask_srli_epi16(W, U, A, imm) __extension__ ({ \ 2806 (__m128i)__builtin_ia32_psrlwi128_mask((__v8hi)(__m128i)(A), (int)(imm), \ 2807 (__v8hi)(__m128i)(W), \ 2808 (__mmask8)(U)); }) 2809 2810#define _mm_maskz_srli_epi16(U, A, imm) __extension__ ({ \ 2811 (__m128i)__builtin_ia32_psrlwi128_mask((__v8hi)(__m128i)(A), (int)(imm), \ 2812 (__v8hi)_mm_setzero_si128(), \ 2813 (__mmask8)(U)); }) 2814 2815#define _mm256_mask_srli_epi16(W, U, A, imm) __extension__ ({ \ 2816 (__m256i)__builtin_ia32_psrlwi256_mask((__v16hi)(__m256i)(A), (int)(imm), \ 2817 (__v16hi)(__m256i)(W), \ 2818 (__mmask16)(U)); }) 2819 2820#define _mm256_maskz_srli_epi16(U, A, imm) __extension__ ({ \ 2821 (__m256i)__builtin_ia32_psrlwi256_mask((__v16hi)(__m256i)(A), (int)(imm), \ 2822 (__v16hi)_mm256_setzero_si256(), \ 2823 (__mmask16)(U)); }) 2824 2825static __inline__ __m128i __DEFAULT_FN_ATTRS 2826_mm_mask_mov_epi16 (__m128i __W, __mmask8 __U, __m128i __A) 2827{ 2828 return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U, 2829 (__v8hi) __A, 2830 (__v8hi) __W); 2831} 2832 2833static __inline__ __m128i __DEFAULT_FN_ATTRS 2834_mm_maskz_mov_epi16 (__mmask8 __U, __m128i __A) 2835{ 2836 return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U, 2837 (__v8hi) __A, 2838 (__v8hi) _mm_setzero_hi ()); 2839} 2840 2841static __inline__ __m256i __DEFAULT_FN_ATTRS 2842_mm256_mask_mov_epi16 (__m256i __W, __mmask16 __U, __m256i __A) 2843{ 2844 return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U, 2845 (__v16hi) __A, 2846 (__v16hi) __W); 2847} 2848 2849static __inline__ __m256i __DEFAULT_FN_ATTRS 2850_mm256_maskz_mov_epi16 (__mmask16 __U, __m256i __A) 2851{ 2852 return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U, 2853 (__v16hi) __A, 2854 (__v16hi) _mm256_setzero_si256 ()); 2855} 2856 2857static __inline__ __m128i __DEFAULT_FN_ATTRS 2858_mm_mask_mov_epi8 (__m128i __W, __mmask16 __U, __m128i __A) 2859{ 2860 return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U, 2861 (__v16qi) __A, 2862 (__v16qi) __W); 2863} 2864 2865static __inline__ __m128i __DEFAULT_FN_ATTRS 2866_mm_maskz_mov_epi8 (__mmask16 __U, __m128i __A) 2867{ 2868 return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U, 2869 (__v16qi) __A, 2870 (__v16qi) _mm_setzero_hi ()); 2871} 2872 2873static __inline__ __m256i __DEFAULT_FN_ATTRS 2874_mm256_mask_mov_epi8 (__m256i __W, __mmask32 __U, __m256i __A) 2875{ 2876 return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U, 2877 (__v32qi) __A, 2878 (__v32qi) __W); 2879} 2880 2881static __inline__ __m256i __DEFAULT_FN_ATTRS 2882_mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A) 2883{ 2884 return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U, 2885 (__v32qi) __A, 2886 (__v32qi) _mm256_setzero_si256 ()); 2887} 2888 2889 2890static __inline__ __m128i __DEFAULT_FN_ATTRS 2891_mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A) 2892{ 2893 return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A, 2894 (__v16qi) __O, 2895 __M); 2896} 2897 2898static __inline__ __m128i __DEFAULT_FN_ATTRS 2899_mm_maskz_set1_epi8 (__mmask16 __M, char __A) 2900{ 2901 return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A, 2902 (__v16qi) 2903 _mm_setzero_si128 (), 2904 __M); 2905} 2906 2907static __inline__ __m256i __DEFAULT_FN_ATTRS 2908_mm256_mask_set1_epi8 (__m256i __O, __mmask32 __M, char __A) 2909{ 2910 return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A, 2911 (__v32qi) __O, 2912 __M); 2913} 2914 2915static __inline__ __m256i __DEFAULT_FN_ATTRS 2916_mm256_maskz_set1_epi8 (__mmask32 __M, char __A) 2917{ 2918 return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A, 2919 (__v32qi) 2920 _mm256_setzero_si256 (), 2921 __M); 2922} 2923 2924static __inline__ __m128i __DEFAULT_FN_ATTRS 2925_mm_mask_loadu_epi16 (__m128i __W, __mmask8 __U, void const *__P) 2926{ 2927 return (__m128i) __builtin_ia32_loaddquhi128_mask ((__v8hi *) __P, 2928 (__v8hi) __W, 2929 (__mmask8) __U); 2930} 2931 2932static __inline__ __m128i __DEFAULT_FN_ATTRS 2933_mm_maskz_loadu_epi16 (__mmask8 __U, void const *__P) 2934{ 2935 return (__m128i) __builtin_ia32_loaddquhi128_mask ((__v8hi *) __P, 2936 (__v8hi) 2937 _mm_setzero_hi (), 2938 (__mmask8) __U); 2939} 2940 2941static __inline__ __m256i __DEFAULT_FN_ATTRS 2942_mm256_mask_loadu_epi16 (__m256i __W, __mmask16 __U, void const *__P) 2943{ 2944 return (__m256i) __builtin_ia32_loaddquhi256_mask ((__v16hi *) __P, 2945 (__v16hi) __W, 2946 (__mmask16) __U); 2947} 2948 2949static __inline__ __m256i __DEFAULT_FN_ATTRS 2950_mm256_maskz_loadu_epi16 (__mmask16 __U, void const *__P) 2951{ 2952 return (__m256i) __builtin_ia32_loaddquhi256_mask ((__v16hi *) __P, 2953 (__v16hi) 2954 _mm256_setzero_si256 (), 2955 (__mmask16) __U); 2956} 2957 2958static __inline__ __m128i __DEFAULT_FN_ATTRS 2959_mm_mask_loadu_epi8 (__m128i __W, __mmask16 __U, void const *__P) 2960{ 2961 return (__m128i) __builtin_ia32_loaddquqi128_mask ((__v16qi *) __P, 2962 (__v16qi) __W, 2963 (__mmask16) __U); 2964} 2965 2966static __inline__ __m128i __DEFAULT_FN_ATTRS 2967_mm_maskz_loadu_epi8 (__mmask16 __U, void const *__P) 2968{ 2969 return (__m128i) __builtin_ia32_loaddquqi128_mask ((__v16qi *) __P, 2970 (__v16qi) 2971 _mm_setzero_si128 (), 2972 (__mmask16) __U); 2973} 2974 2975static __inline__ __m256i __DEFAULT_FN_ATTRS 2976_mm256_mask_loadu_epi8 (__m256i __W, __mmask32 __U, void const *__P) 2977{ 2978 return (__m256i) __builtin_ia32_loaddquqi256_mask ((__v32qi *) __P, 2979 (__v32qi) __W, 2980 (__mmask32) __U); 2981} 2982 2983static __inline__ __m256i __DEFAULT_FN_ATTRS 2984_mm256_maskz_loadu_epi8 (__mmask32 __U, void const *__P) 2985{ 2986 return (__m256i) __builtin_ia32_loaddquqi256_mask ((__v32qi *) __P, 2987 (__v32qi) 2988 _mm256_setzero_si256 (), 2989 (__mmask32) __U); 2990} 2991static __inline__ void __DEFAULT_FN_ATTRS 2992_mm_mask_storeu_epi16 (void *__P, __mmask8 __U, __m128i __A) 2993{ 2994 __builtin_ia32_storedquhi128_mask ((__v8hi *) __P, 2995 (__v8hi) __A, 2996 (__mmask8) __U); 2997} 2998 2999static __inline__ void __DEFAULT_FN_ATTRS 3000_mm256_mask_storeu_epi16 (void *__P, __mmask16 __U, __m256i __A) 3001{ 3002 __builtin_ia32_storedquhi256_mask ((__v16hi *) __P, 3003 (__v16hi) __A, 3004 (__mmask16) __U); 3005} 3006 3007static __inline__ void __DEFAULT_FN_ATTRS 3008_mm_mask_storeu_epi8 (void *__P, __mmask16 __U, __m128i __A) 3009{ 3010 __builtin_ia32_storedquqi128_mask ((__v16qi *) __P, 3011 (__v16qi) __A, 3012 (__mmask16) __U); 3013} 3014 3015static __inline__ void __DEFAULT_FN_ATTRS 3016_mm256_mask_storeu_epi8 (void *__P, __mmask32 __U, __m256i __A) 3017{ 3018 __builtin_ia32_storedquqi256_mask ((__v32qi *) __P, 3019 (__v32qi) __A, 3020 (__mmask32) __U); 3021} 3022 3023static __inline__ __mmask16 __DEFAULT_FN_ATTRS 3024_mm_test_epi8_mask (__m128i __A, __m128i __B) 3025{ 3026 return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A, 3027 (__v16qi) __B, 3028 (__mmask16) -1); 3029} 3030 3031static __inline__ __mmask16 __DEFAULT_FN_ATTRS 3032_mm_mask_test_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B) 3033{ 3034 return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A, 3035 (__v16qi) __B, __U); 3036} 3037 3038static __inline__ __mmask32 __DEFAULT_FN_ATTRS 3039_mm256_test_epi8_mask (__m256i __A, __m256i __B) 3040{ 3041 return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A, 3042 (__v32qi) __B, 3043 (__mmask32) -1); 3044} 3045 3046static __inline__ __mmask32 __DEFAULT_FN_ATTRS 3047_mm256_mask_test_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B) 3048{ 3049 return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A, 3050 (__v32qi) __B, __U); 3051} 3052 3053static __inline__ __mmask8 __DEFAULT_FN_ATTRS 3054_mm_test_epi16_mask (__m128i __A, __m128i __B) 3055{ 3056 return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A, 3057 (__v8hi) __B, 3058 (__mmask8) -1); 3059} 3060 3061static __inline__ __mmask8 __DEFAULT_FN_ATTRS 3062_mm_mask_test_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B) 3063{ 3064 return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A, 3065 (__v8hi) __B, __U); 3066} 3067 3068static __inline__ __mmask16 __DEFAULT_FN_ATTRS 3069_mm256_test_epi16_mask (__m256i __A, __m256i __B) 3070{ 3071 return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A, 3072 (__v16hi) __B, 3073 (__mmask16) -1); 3074} 3075 3076static __inline__ __mmask16 __DEFAULT_FN_ATTRS 3077_mm256_mask_test_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B) 3078{ 3079 return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A, 3080 (__v16hi) __B, __U); 3081} 3082 3083static __inline__ __mmask16 __DEFAULT_FN_ATTRS 3084_mm_testn_epi8_mask (__m128i __A, __m128i __B) 3085{ 3086 return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A, 3087 (__v16qi) __B, 3088 (__mmask16) -1); 3089} 3090 3091static __inline__ __mmask16 __DEFAULT_FN_ATTRS 3092_mm_mask_testn_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B) 3093{ 3094 return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A, 3095 (__v16qi) __B, __U); 3096} 3097 3098static __inline__ __mmask32 __DEFAULT_FN_ATTRS 3099_mm256_testn_epi8_mask (__m256i __A, __m256i __B) 3100{ 3101 return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A, 3102 (__v32qi) __B, 3103 (__mmask32) -1); 3104} 3105 3106static __inline__ __mmask32 __DEFAULT_FN_ATTRS 3107_mm256_mask_testn_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B) 3108{ 3109 return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A, 3110 (__v32qi) __B, __U); 3111} 3112 3113static __inline__ __mmask8 __DEFAULT_FN_ATTRS 3114_mm_testn_epi16_mask (__m128i __A, __m128i __B) 3115{ 3116 return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A, 3117 (__v8hi) __B, 3118 (__mmask8) -1); 3119} 3120 3121static __inline__ __mmask8 __DEFAULT_FN_ATTRS 3122_mm_mask_testn_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B) 3123{ 3124 return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A, 3125 (__v8hi) __B, __U); 3126} 3127 3128static __inline__ __mmask16 __DEFAULT_FN_ATTRS 3129_mm256_testn_epi16_mask (__m256i __A, __m256i __B) 3130{ 3131 return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A, 3132 (__v16hi) __B, 3133 (__mmask16) -1); 3134} 3135 3136static __inline__ __mmask16 __DEFAULT_FN_ATTRS 3137_mm256_mask_testn_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B) 3138{ 3139 return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A, 3140 (__v16hi) __B, __U); 3141} 3142 3143static __inline__ __mmask16 __DEFAULT_FN_ATTRS 3144_mm_movepi8_mask (__m128i __A) 3145{ 3146 return (__mmask16) __builtin_ia32_cvtb2mask128 ((__v16qi) __A); 3147} 3148 3149static __inline__ __mmask32 __DEFAULT_FN_ATTRS 3150_mm256_movepi8_mask (__m256i __A) 3151{ 3152 return (__mmask32) __builtin_ia32_cvtb2mask256 ((__v32qi) __A); 3153} 3154 3155static __inline__ __mmask8 __DEFAULT_FN_ATTRS 3156_mm_movepi16_mask (__m128i __A) 3157{ 3158 return (__mmask8) __builtin_ia32_cvtw2mask128 ((__v8hi) __A); 3159} 3160 3161static __inline__ __mmask16 __DEFAULT_FN_ATTRS 3162_mm256_movepi16_mask (__m256i __A) 3163{ 3164 return (__mmask16) __builtin_ia32_cvtw2mask256 ((__v16hi) __A); 3165} 3166 3167static __inline__ __m128i __DEFAULT_FN_ATTRS 3168_mm_movm_epi8 (__mmask16 __A) 3169{ 3170 return (__m128i) __builtin_ia32_cvtmask2b128 (__A); 3171} 3172 3173static __inline__ __m256i __DEFAULT_FN_ATTRS 3174_mm256_movm_epi8 (__mmask32 __A) 3175{ 3176 return (__m256i) __builtin_ia32_cvtmask2b256 (__A); 3177} 3178 3179static __inline__ __m128i __DEFAULT_FN_ATTRS 3180_mm_movm_epi16 (__mmask8 __A) 3181{ 3182 return (__m128i) __builtin_ia32_cvtmask2w128 (__A); 3183} 3184 3185static __inline__ __m256i __DEFAULT_FN_ATTRS 3186_mm256_movm_epi16 (__mmask16 __A) 3187{ 3188 return (__m256i) __builtin_ia32_cvtmask2w256 (__A); 3189} 3190 3191static __inline__ __m128i __DEFAULT_FN_ATTRS 3192_mm_mask_broadcastb_epi8 (__m128i __O, __mmask16 __M, __m128i __A) 3193{ 3194 return (__m128i)__builtin_ia32_selectb_128(__M, 3195 (__v16qi) _mm_broadcastb_epi8(__A), 3196 (__v16qi) __O); 3197} 3198 3199static __inline__ __m128i __DEFAULT_FN_ATTRS 3200_mm_maskz_broadcastb_epi8 (__mmask16 __M, __m128i __A) 3201{ 3202 return (__m128i)__builtin_ia32_selectb_128(__M, 3203 (__v16qi) _mm_broadcastb_epi8(__A), 3204 (__v16qi) _mm_setzero_si128()); 3205} 3206 3207static __inline__ __m256i __DEFAULT_FN_ATTRS 3208_mm256_mask_broadcastb_epi8 (__m256i __O, __mmask32 __M, __m128i __A) 3209{ 3210 return (__m256i)__builtin_ia32_selectb_256(__M, 3211 (__v32qi) _mm256_broadcastb_epi8(__A), 3212 (__v32qi) __O); 3213} 3214 3215static __inline__ __m256i __DEFAULT_FN_ATTRS 3216_mm256_maskz_broadcastb_epi8 (__mmask32 __M, __m128i __A) 3217{ 3218 return (__m256i)__builtin_ia32_selectb_256(__M, 3219 (__v32qi) _mm256_broadcastb_epi8(__A), 3220 (__v32qi) _mm256_setzero_si256()); 3221} 3222 3223static __inline__ __m128i __DEFAULT_FN_ATTRS 3224_mm_mask_broadcastw_epi16 (__m128i __O, __mmask8 __M, __m128i __A) 3225{ 3226 return (__m128i)__builtin_ia32_selectw_128(__M, 3227 (__v8hi) _mm_broadcastw_epi16(__A), 3228 (__v8hi) __O); 3229} 3230 3231static __inline__ __m128i __DEFAULT_FN_ATTRS 3232_mm_maskz_broadcastw_epi16 (__mmask8 __M, __m128i __A) 3233{ 3234 return (__m128i)__builtin_ia32_selectw_128(__M, 3235 (__v8hi) _mm_broadcastw_epi16(__A), 3236 (__v8hi) _mm_setzero_si128()); 3237} 3238 3239static __inline__ __m256i __DEFAULT_FN_ATTRS 3240_mm256_mask_broadcastw_epi16 (__m256i __O, __mmask16 __M, __m128i __A) 3241{ 3242 return (__m256i)__builtin_ia32_selectw_256(__M, 3243 (__v16hi) _mm256_broadcastw_epi16(__A), 3244 (__v16hi) __O); 3245} 3246 3247static __inline__ __m256i __DEFAULT_FN_ATTRS 3248_mm256_maskz_broadcastw_epi16 (__mmask16 __M, __m128i __A) 3249{ 3250 return (__m256i)__builtin_ia32_selectw_256(__M, 3251 (__v16hi) _mm256_broadcastw_epi16(__A), 3252 (__v16hi) _mm256_setzero_si256()); 3253} 3254 3255static __inline__ __m256i __DEFAULT_FN_ATTRS 3256_mm256_mask_set1_epi16 (__m256i __O, __mmask16 __M, short __A) 3257{ 3258 return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A, 3259 (__v16hi) __O, 3260 __M); 3261} 3262 3263static __inline__ __m256i __DEFAULT_FN_ATTRS 3264_mm256_maskz_set1_epi16 (__mmask16 __M, short __A) 3265{ 3266 return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A, 3267 (__v16hi) _mm256_setzero_si256 (), 3268 __M); 3269} 3270 3271static __inline__ __m128i __DEFAULT_FN_ATTRS 3272_mm_mask_set1_epi16 (__m128i __O, __mmask8 __M, short __A) 3273{ 3274 return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A, 3275 (__v8hi) __O, 3276 __M); 3277} 3278 3279static __inline__ __m128i __DEFAULT_FN_ATTRS 3280_mm_maskz_set1_epi16 (__mmask8 __M, short __A) 3281{ 3282 return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A, 3283 (__v8hi) _mm_setzero_si128 (), 3284 __M); 3285} 3286 3287static __inline__ __m128i __DEFAULT_FN_ATTRS 3288_mm_permutexvar_epi16 (__m128i __A, __m128i __B) 3289{ 3290 return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B, 3291 (__v8hi) __A, 3292 (__v8hi) _mm_undefined_si128 (), 3293 (__mmask8) -1); 3294} 3295 3296static __inline__ __m128i __DEFAULT_FN_ATTRS 3297_mm_maskz_permutexvar_epi16 (__mmask8 __M, __m128i __A, __m128i __B) 3298{ 3299 return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B, 3300 (__v8hi) __A, 3301 (__v8hi) _mm_setzero_si128 (), 3302 (__mmask8) __M); 3303} 3304 3305static __inline__ __m128i __DEFAULT_FN_ATTRS 3306_mm_mask_permutexvar_epi16 (__m128i __W, __mmask8 __M, __m128i __A, 3307 __m128i __B) 3308{ 3309 return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B, 3310 (__v8hi) __A, 3311 (__v8hi) __W, 3312 (__mmask8) __M); 3313} 3314 3315static __inline__ __m256i __DEFAULT_FN_ATTRS 3316_mm256_permutexvar_epi16 (__m256i __A, __m256i __B) 3317{ 3318 return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B, 3319 (__v16hi) __A, 3320 (__v16hi) _mm256_undefined_si256 (), 3321 (__mmask16) -1); 3322} 3323 3324static __inline__ __m256i __DEFAULT_FN_ATTRS 3325_mm256_maskz_permutexvar_epi16 (__mmask16 __M, __m256i __A, 3326 __m256i __B) 3327{ 3328 return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B, 3329 (__v16hi) __A, 3330 (__v16hi) _mm256_setzero_si256 (), 3331 (__mmask16) __M); 3332} 3333 3334static __inline__ __m256i __DEFAULT_FN_ATTRS 3335_mm256_mask_permutexvar_epi16 (__m256i __W, __mmask16 __M, __m256i __A, 3336 __m256i __B) 3337{ 3338 return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B, 3339 (__v16hi) __A, 3340 (__v16hi) __W, 3341 (__mmask16) __M); 3342} 3343 3344#define _mm_mask_alignr_epi8(W, U, A, B, N) __extension__ ({ \ 3345 (__m128i)__builtin_ia32_palignr128_mask((__v16qi)(__m128i)(A), \ 3346 (__v16qi)(__m128i)(B), (int)(N), \ 3347 (__v16qi)(__m128i)(W), \ 3348 (__mmask16)(U)); }) 3349 3350#define _mm_maskz_alignr_epi8(U, A, B, N) __extension__ ({ \ 3351 (__m128i)__builtin_ia32_palignr128_mask((__v16qi)(__m128i)(A), \ 3352 (__v16qi)(__m128i)(B), (int)(N), \ 3353 (__v16qi)_mm_setzero_si128(), \ 3354 (__mmask16)(U)); }) 3355 3356#define _mm256_mask_alignr_epi8(W, U, A, B, N) __extension__ ({ \ 3357 (__m256i)__builtin_ia32_palignr256_mask((__v32qi)(__m256i)(A), \ 3358 (__v32qi)(__m256i)(B), (int)(N), \ 3359 (__v32qi)(__m256i)(W), \ 3360 (__mmask32)(U)); }) 3361 3362#define _mm256_maskz_alignr_epi8(U, A, B, N) __extension__ ({ \ 3363 (__m256i)__builtin_ia32_palignr256_mask((__v32qi)(__m256i)(A), \ 3364 (__v32qi)(__m256i)(B), (int)(N), \ 3365 (__v32qi)_mm256_setzero_si256(), \ 3366 (__mmask32)(U)); }) 3367 3368#define _mm_dbsad_epu8(A, B, imm) __extension__ ({ \ 3369 (__m128i)__builtin_ia32_dbpsadbw128_mask((__v16qi)(__m128i)(A), \ 3370 (__v16qi)(__m128i)(B), (int)(imm), \ 3371 (__v8hi)_mm_setzero_hi(), \ 3372 (__mmask8)-1); }) 3373 3374#define _mm_mask_dbsad_epu8(W, U, A, B, imm) __extension__ ({ \ 3375 (__m128i)__builtin_ia32_dbpsadbw128_mask((__v16qi)(__m128i)(A), \ 3376 (__v16qi)(__m128i)(B), (int)(imm), \ 3377 (__v8hi)(__m128i)(W), \ 3378 (__mmask8)(U)); }) 3379 3380#define _mm_maskz_dbsad_epu8(U, A, B, imm) __extension__ ({ \ 3381 (__m128i)__builtin_ia32_dbpsadbw128_mask((__v16qi)(__m128i)(A), \ 3382 (__v16qi)(__m128i)(B), (int)(imm), \ 3383 (__v8hi)_mm_setzero_si128(), \ 3384 (__mmask8)(U)); }) 3385 3386#define _mm256_dbsad_epu8(A, B, imm) __extension__ ({ \ 3387 (__m256i)__builtin_ia32_dbpsadbw256_mask((__v32qi)(__m256i)(A), \ 3388 (__v32qi)(__m256i)(B), (int)(imm), \ 3389 (__v16hi)_mm256_setzero_si256(), \ 3390 (__mmask16)-1); }) 3391 3392#define _mm256_mask_dbsad_epu8(W, U, A, B, imm) __extension__ ({ \ 3393 (__m256i)__builtin_ia32_dbpsadbw256_mask((__v32qi)(__m256i)(A), \ 3394 (__v32qi)(__m256i)(B), (int)(imm), \ 3395 (__v16hi)(__m256i)(W), \ 3396 (__mmask16)(U)); }) 3397 3398#define _mm256_maskz_dbsad_epu8(U, A, B, imm) __extension__ ({ \ 3399 (__m256i)__builtin_ia32_dbpsadbw256_mask((__v32qi)(__m256i)(A), \ 3400 (__v32qi)(__m256i)(B), (int)(imm), \ 3401 (__v16hi)_mm256_setzero_si256(), \ 3402 (__mmask16)(U)); }) 3403 3404#undef __DEFAULT_FN_ATTRS 3405 3406#endif /* __AVX512VLBWINTRIN_H */ 3407