1 /*===---- avx512vlbwintrin.h - AVX512VL and AVX512BW intrinsics ------------=== 2 * 3 * Permission is hereby granted, free of charge, to any person obtaining a copy 4 * of this software and associated documentation files (the "Software"), to deal 5 * in the Software without restriction, including without limitation the rights 6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 * copies of the Software, and to permit persons to whom the Software is 8 * furnished to do so, subject to the following conditions: 9 * 10 * The above copyright notice and this permission notice shall be included in 11 * all copies or substantial portions of the Software. 12 * 13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 * THE SOFTWARE. 20 * 21 *===-----------------------------------------------------------------------=== 22 */ 23 24 #ifndef __IMMINTRIN_H 25 #error "Never use <avx512vlbwintrin.h> directly; include <immintrin.h> instead." 26 #endif 27 28 #ifndef __AVX512VLBWINTRIN_H 29 #define __AVX512VLBWINTRIN_H 30 31 /* Define the default attributes for the functions in this file. */ 32 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512bw"))) 33 34 static __inline __m128i __DEFAULT_FN_ATTRS 35 _mm_setzero_hi(void){ 36 return (__m128i)(__v8hi){ 0, 0, 0, 0, 0, 0, 0, 0 }; 37 } 38 39 /* Integer compare */ 40 41 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 42 _mm_cmpeq_epi8_mask(__m128i __a, __m128i __b) { 43 return (__mmask16)__builtin_ia32_pcmpeqb128_mask((__v16qi)__a, (__v16qi)__b, 44 (__mmask16)-1); 45 } 46 47 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 48 _mm_mask_cmpeq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) { 49 return (__mmask16)__builtin_ia32_pcmpeqb128_mask((__v16qi)__a, (__v16qi)__b, 50 __u); 51 } 52 53 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 54 _mm_cmpeq_epu8_mask(__m128i __a, __m128i __b) { 55 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 0, 56 (__mmask16)-1); 57 } 58 59 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 60 _mm_mask_cmpeq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) { 61 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 0, 62 __u); 63 } 64 65 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 66 _mm256_cmpeq_epi8_mask(__m256i __a, __m256i __b) { 67 return (__mmask32)__builtin_ia32_pcmpeqb256_mask((__v32qi)__a, (__v32qi)__b, 68 (__mmask32)-1); 69 } 70 71 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 72 _mm256_mask_cmpeq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) { 73 return (__mmask32)__builtin_ia32_pcmpeqb256_mask((__v32qi)__a, (__v32qi)__b, 74 __u); 75 } 76 77 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 78 _mm256_cmpeq_epu8_mask(__m256i __a, __m256i __b) { 79 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 0, 80 (__mmask32)-1); 81 } 82 83 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 84 _mm256_mask_cmpeq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) { 85 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 0, 86 __u); 87 } 88 89 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 90 _mm_cmpeq_epi16_mask(__m128i __a, __m128i __b) { 91 return (__mmask8)__builtin_ia32_pcmpeqw128_mask((__v8hi)__a, (__v8hi)__b, 92 (__mmask8)-1); 93 } 94 95 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 96 _mm_mask_cmpeq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) { 97 return (__mmask8)__builtin_ia32_pcmpeqw128_mask((__v8hi)__a, (__v8hi)__b, 98 __u); 99 } 100 101 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 102 _mm_cmpeq_epu16_mask(__m128i __a, __m128i __b) { 103 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 0, 104 (__mmask8)-1); 105 } 106 107 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 108 _mm_mask_cmpeq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) { 109 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 0, 110 __u); 111 } 112 113 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 114 _mm256_cmpeq_epi16_mask(__m256i __a, __m256i __b) { 115 return (__mmask16)__builtin_ia32_pcmpeqw256_mask((__v16hi)__a, (__v16hi)__b, 116 (__mmask16)-1); 117 } 118 119 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 120 _mm256_mask_cmpeq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) { 121 return (__mmask16)__builtin_ia32_pcmpeqw256_mask((__v16hi)__a, (__v16hi)__b, 122 __u); 123 } 124 125 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 126 _mm256_cmpeq_epu16_mask(__m256i __a, __m256i __b) { 127 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 0, 128 (__mmask16)-1); 129 } 130 131 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 132 _mm256_mask_cmpeq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) { 133 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 0, 134 __u); 135 } 136 137 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 138 _mm_cmpge_epi8_mask(__m128i __a, __m128i __b) { 139 return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 5, 140 (__mmask16)-1); 141 } 142 143 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 144 _mm_mask_cmpge_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) { 145 return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 5, 146 __u); 147 } 148 149 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 150 _mm_cmpge_epu8_mask(__m128i __a, __m128i __b) { 151 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 5, 152 (__mmask16)-1); 153 } 154 155 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 156 _mm_mask_cmpge_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) { 157 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 5, 158 __u); 159 } 160 161 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 162 _mm256_cmpge_epi8_mask(__m256i __a, __m256i __b) { 163 return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 5, 164 (__mmask32)-1); 165 } 166 167 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 168 _mm256_mask_cmpge_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) { 169 return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 5, 170 __u); 171 } 172 173 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 174 _mm256_cmpge_epu8_mask(__m256i __a, __m256i __b) { 175 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 5, 176 (__mmask32)-1); 177 } 178 179 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 180 _mm256_mask_cmpge_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) { 181 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 5, 182 __u); 183 } 184 185 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 186 _mm_cmpge_epi16_mask(__m128i __a, __m128i __b) { 187 return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 5, 188 (__mmask8)-1); 189 } 190 191 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 192 _mm_mask_cmpge_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) { 193 return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 5, 194 __u); 195 } 196 197 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 198 _mm_cmpge_epu16_mask(__m128i __a, __m128i __b) { 199 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 5, 200 (__mmask8)-1); 201 } 202 203 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 204 _mm_mask_cmpge_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) { 205 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 5, 206 __u); 207 } 208 209 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 210 _mm256_cmpge_epi16_mask(__m256i __a, __m256i __b) { 211 return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 5, 212 (__mmask16)-1); 213 } 214 215 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 216 _mm256_mask_cmpge_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) { 217 return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 5, 218 __u); 219 } 220 221 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 222 _mm256_cmpge_epu16_mask(__m256i __a, __m256i __b) { 223 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 5, 224 (__mmask16)-1); 225 } 226 227 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 228 _mm256_mask_cmpge_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) { 229 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 5, 230 __u); 231 } 232 233 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 234 _mm_cmpgt_epi8_mask(__m128i __a, __m128i __b) { 235 return (__mmask16)__builtin_ia32_pcmpgtb128_mask((__v16qi)__a, (__v16qi)__b, 236 (__mmask16)-1); 237 } 238 239 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 240 _mm_mask_cmpgt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) { 241 return (__mmask16)__builtin_ia32_pcmpgtb128_mask((__v16qi)__a, (__v16qi)__b, 242 __u); 243 } 244 245 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 246 _mm_cmpgt_epu8_mask(__m128i __a, __m128i __b) { 247 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 6, 248 (__mmask16)-1); 249 } 250 251 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 252 _mm_mask_cmpgt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) { 253 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 6, 254 __u); 255 } 256 257 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 258 _mm256_cmpgt_epi8_mask(__m256i __a, __m256i __b) { 259 return (__mmask32)__builtin_ia32_pcmpgtb256_mask((__v32qi)__a, (__v32qi)__b, 260 (__mmask32)-1); 261 } 262 263 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 264 _mm256_mask_cmpgt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) { 265 return (__mmask32)__builtin_ia32_pcmpgtb256_mask((__v32qi)__a, (__v32qi)__b, 266 __u); 267 } 268 269 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 270 _mm256_cmpgt_epu8_mask(__m256i __a, __m256i __b) { 271 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 6, 272 (__mmask32)-1); 273 } 274 275 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 276 _mm256_mask_cmpgt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) { 277 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 6, 278 __u); 279 } 280 281 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 282 _mm_cmpgt_epi16_mask(__m128i __a, __m128i __b) { 283 return (__mmask8)__builtin_ia32_pcmpgtw128_mask((__v8hi)__a, (__v8hi)__b, 284 (__mmask8)-1); 285 } 286 287 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 288 _mm_mask_cmpgt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) { 289 return (__mmask8)__builtin_ia32_pcmpgtw128_mask((__v8hi)__a, (__v8hi)__b, 290 __u); 291 } 292 293 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 294 _mm_cmpgt_epu16_mask(__m128i __a, __m128i __b) { 295 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 6, 296 (__mmask8)-1); 297 } 298 299 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 300 _mm_mask_cmpgt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) { 301 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 6, 302 __u); 303 } 304 305 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 306 _mm256_cmpgt_epi16_mask(__m256i __a, __m256i __b) { 307 return (__mmask16)__builtin_ia32_pcmpgtw256_mask((__v16hi)__a, (__v16hi)__b, 308 (__mmask16)-1); 309 } 310 311 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 312 _mm256_mask_cmpgt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) { 313 return (__mmask16)__builtin_ia32_pcmpgtw256_mask((__v16hi)__a, (__v16hi)__b, 314 __u); 315 } 316 317 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 318 _mm256_cmpgt_epu16_mask(__m256i __a, __m256i __b) { 319 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 6, 320 (__mmask16)-1); 321 } 322 323 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 324 _mm256_mask_cmpgt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) { 325 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 6, 326 __u); 327 } 328 329 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 330 _mm_cmple_epi8_mask(__m128i __a, __m128i __b) { 331 return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 2, 332 (__mmask16)-1); 333 } 334 335 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 336 _mm_mask_cmple_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) { 337 return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 2, 338 __u); 339 } 340 341 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 342 _mm_cmple_epu8_mask(__m128i __a, __m128i __b) { 343 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 2, 344 (__mmask16)-1); 345 } 346 347 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 348 _mm_mask_cmple_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) { 349 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 2, 350 __u); 351 } 352 353 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 354 _mm256_cmple_epi8_mask(__m256i __a, __m256i __b) { 355 return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 2, 356 (__mmask32)-1); 357 } 358 359 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 360 _mm256_mask_cmple_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) { 361 return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 2, 362 __u); 363 } 364 365 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 366 _mm256_cmple_epu8_mask(__m256i __a, __m256i __b) { 367 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 2, 368 (__mmask32)-1); 369 } 370 371 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 372 _mm256_mask_cmple_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) { 373 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 2, 374 __u); 375 } 376 377 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 378 _mm_cmple_epi16_mask(__m128i __a, __m128i __b) { 379 return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 2, 380 (__mmask8)-1); 381 } 382 383 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 384 _mm_mask_cmple_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) { 385 return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 2, 386 __u); 387 } 388 389 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 390 _mm_cmple_epu16_mask(__m128i __a, __m128i __b) { 391 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 2, 392 (__mmask8)-1); 393 } 394 395 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 396 _mm_mask_cmple_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) { 397 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 2, 398 __u); 399 } 400 401 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 402 _mm256_cmple_epi16_mask(__m256i __a, __m256i __b) { 403 return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 2, 404 (__mmask16)-1); 405 } 406 407 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 408 _mm256_mask_cmple_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) { 409 return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 2, 410 __u); 411 } 412 413 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 414 _mm256_cmple_epu16_mask(__m256i __a, __m256i __b) { 415 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 2, 416 (__mmask16)-1); 417 } 418 419 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 420 _mm256_mask_cmple_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) { 421 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 2, 422 __u); 423 } 424 425 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 426 _mm_cmplt_epi8_mask(__m128i __a, __m128i __b) { 427 return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 1, 428 (__mmask16)-1); 429 } 430 431 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 432 _mm_mask_cmplt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) { 433 return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 1, 434 __u); 435 } 436 437 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 438 _mm_cmplt_epu8_mask(__m128i __a, __m128i __b) { 439 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 1, 440 (__mmask16)-1); 441 } 442 443 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 444 _mm_mask_cmplt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) { 445 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 1, 446 __u); 447 } 448 449 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 450 _mm256_cmplt_epi8_mask(__m256i __a, __m256i __b) { 451 return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 1, 452 (__mmask32)-1); 453 } 454 455 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 456 _mm256_mask_cmplt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) { 457 return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 1, 458 __u); 459 } 460 461 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 462 _mm256_cmplt_epu8_mask(__m256i __a, __m256i __b) { 463 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 1, 464 (__mmask32)-1); 465 } 466 467 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 468 _mm256_mask_cmplt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) { 469 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 1, 470 __u); 471 } 472 473 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 474 _mm_cmplt_epi16_mask(__m128i __a, __m128i __b) { 475 return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 1, 476 (__mmask8)-1); 477 } 478 479 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 480 _mm_mask_cmplt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) { 481 return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 1, 482 __u); 483 } 484 485 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 486 _mm_cmplt_epu16_mask(__m128i __a, __m128i __b) { 487 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 1, 488 (__mmask8)-1); 489 } 490 491 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 492 _mm_mask_cmplt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) { 493 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 1, 494 __u); 495 } 496 497 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 498 _mm256_cmplt_epi16_mask(__m256i __a, __m256i __b) { 499 return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 1, 500 (__mmask16)-1); 501 } 502 503 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 504 _mm256_mask_cmplt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) { 505 return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 1, 506 __u); 507 } 508 509 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 510 _mm256_cmplt_epu16_mask(__m256i __a, __m256i __b) { 511 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 1, 512 (__mmask16)-1); 513 } 514 515 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 516 _mm256_mask_cmplt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) { 517 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 1, 518 __u); 519 } 520 521 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 522 _mm_cmpneq_epi8_mask(__m128i __a, __m128i __b) { 523 return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 4, 524 (__mmask16)-1); 525 } 526 527 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 528 _mm_mask_cmpneq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) { 529 return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 4, 530 __u); 531 } 532 533 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 534 _mm_cmpneq_epu8_mask(__m128i __a, __m128i __b) { 535 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 4, 536 (__mmask16)-1); 537 } 538 539 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 540 _mm_mask_cmpneq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) { 541 return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 4, 542 __u); 543 } 544 545 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 546 _mm256_cmpneq_epi8_mask(__m256i __a, __m256i __b) { 547 return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 4, 548 (__mmask32)-1); 549 } 550 551 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 552 _mm256_mask_cmpneq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) { 553 return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 4, 554 __u); 555 } 556 557 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 558 _mm256_cmpneq_epu8_mask(__m256i __a, __m256i __b) { 559 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 4, 560 (__mmask32)-1); 561 } 562 563 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 564 _mm256_mask_cmpneq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) { 565 return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 4, 566 __u); 567 } 568 569 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 570 _mm_cmpneq_epi16_mask(__m128i __a, __m128i __b) { 571 return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 4, 572 (__mmask8)-1); 573 } 574 575 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 576 _mm_mask_cmpneq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) { 577 return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 4, 578 __u); 579 } 580 581 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 582 _mm_cmpneq_epu16_mask(__m128i __a, __m128i __b) { 583 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 4, 584 (__mmask8)-1); 585 } 586 587 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 588 _mm_mask_cmpneq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) { 589 return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 4, 590 __u); 591 } 592 593 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 594 _mm256_cmpneq_epi16_mask(__m256i __a, __m256i __b) { 595 return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 4, 596 (__mmask16)-1); 597 } 598 599 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 600 _mm256_mask_cmpneq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) { 601 return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 4, 602 __u); 603 } 604 605 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 606 _mm256_cmpneq_epu16_mask(__m256i __a, __m256i __b) { 607 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 4, 608 (__mmask16)-1); 609 } 610 611 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 612 _mm256_mask_cmpneq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) { 613 return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 4, 614 __u); 615 } 616 617 static __inline__ __m256i __DEFAULT_FN_ATTRS 618 _mm256_mask_add_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B){ 619 return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A, 620 (__v32qi) __B, 621 (__v32qi) __W, 622 (__mmask32) __U); 623 } 624 625 static __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 634 static __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 642 static __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 651 static __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 659 static __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 668 static __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 676 static __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 } 684 static __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 692 static __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 701 static __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 709 static __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 718 static __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 726 static __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 735 static __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 743 static __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 752 static __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 760 static __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 769 static __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 777 static __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 786 static __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 794 static __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 802 static __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 810 static __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 818 static __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 826 static __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 834 static __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 842 static __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 850 static __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 858 static __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 866 static __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 874 static __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 882 static __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 890 static __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 899 static __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 908 static __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 917 static __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 926 static __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 936 static __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 945 static __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 955 static __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 964 static __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 973 static __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 982 static __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 992 static __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 1001 static __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 1011 static __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 1020 static __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 1030 static __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 1040 static __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 1049 static __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 1059 static __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 1068 static __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 1078 static __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 1087 static __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 1097 static __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 1106 static __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 1116 static __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 1125 static __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 1135 static __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 1144 static __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 1154 static __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 1163 static __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 1173 static __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 1182 static __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 1192 static __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 1201 static __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 1211 static __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 1220 static __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 1230 static __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 1239 static __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 1249 static __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 1258 static __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 1267 static __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 1277 static __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 1286 static __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 1296 static __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 1305 static __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 1315 static __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 1324 static __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 1334 static __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 1343 static __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 1353 static __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 1362 static __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 1372 static __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 1381 static __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 1391 static __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 1400 static __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 1410 static __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 1419 static __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 1429 static __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 1438 static __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 1448 static __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 1457 static __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 1467 static __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 1476 static __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 1486 static __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 1495 static __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 1505 static __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 1514 static __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 1524 static __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 1533 static __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 1543 static __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 1552 static __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 1562 static __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 1572 static __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 1581 static __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 1591 static __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 1600 static __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 1610 static __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 1619 static __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 1629 static __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 1638 static __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 1648 static __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 1657 static __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 1667 static __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 1676 static __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 1686 static __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 1695 static __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 1705 static __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 1714 static __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 1724 static __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 1733 static __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 1743 static __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 1752 static __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 1762 static __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 1772 static __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 1781 static __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 1791 static __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 1801 static __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 1810 static __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 1820 static __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 1830 static __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 1838 static __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 1846 static __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 1855 static __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 1863 static __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 1872 static __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 1880 static __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 1888 static __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 1896 static __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 1903 static __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 1910 static __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 1917 static __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 1924 static __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 1931 static __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 1938 static __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 1945 static __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 1952 static __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 1959 static __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 1966 static __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 1973 static __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 1980 static __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 1988 static __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 1995 static __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 2002 static __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 2009 static __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 2015 static __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 2021 static __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 2028 static __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 2035 static __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 2042 static __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 2048 static __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 2054 static __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 } 2059 static __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 2067 static __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 2075 static __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 2083 static __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 2091 static __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 2100 static __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 2108 static __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 2117 static __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 2125 static __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 2134 static __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 2142 static __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 2151 static __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 2159 static __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 2166 static __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 2173 static __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 2180 static __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 2187 static __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 2194 static __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 2201 static __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 2208 static __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 2215 static __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 2222 static __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 2229 static __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 2236 static __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 2243 static __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 2250 static __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 2257 static __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 2264 static __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 2271 static __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 2279 static __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 2288 static __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 2296 static __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 2306 static __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 2314 static __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 2323 static __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 2331 static __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 2463 static __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 2473 static __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 2483 static __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 2493 static __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 2503 static __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 2513 static __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 2523 static __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 2533 static __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 2543 static __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 2553 static __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 2585 static __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 2595 static __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 2605 static __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 2615 static __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 2625 static __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 2635 static __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 2645 static __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 2655 static __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 2665 static __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 2675 static __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 2685 static __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 2695 static __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 2705 static __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 2715 static __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 2725 static __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 2735 static __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 2765 static __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 2775 static __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 2785 static __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 2795 static __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 2825 static __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 2833 static __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 2841 static __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 2849 static __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 2857 static __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 2865 static __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 2873 static __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 2881 static __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 2890 static __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 2898 static __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 2907 static __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 2915 static __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 2924 static __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 2932 static __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 2941 static __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 2949 static __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 2958 static __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 2966 static __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 2975 static __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 2983 static __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 } 2991 static __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 2999 static __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 3007 static __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 3015 static __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 3023 static __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 3031 static __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 3038 static __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 3046 static __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 3053 static __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 3061 static __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 3068 static __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 3076 static __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 3083 static __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 3091 static __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 3098 static __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 3106 static __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 3113 static __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 3121 static __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 3128 static __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 3136 static __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 3143 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 3144 _mm_movepi8_mask (__m128i __A) 3145 { 3146 return (__mmask16) __builtin_ia32_cvtb2mask128 ((__v16qi) __A); 3147 } 3148 3149 static __inline__ __mmask32 __DEFAULT_FN_ATTRS 3150 _mm256_movepi8_mask (__m256i __A) 3151 { 3152 return (__mmask32) __builtin_ia32_cvtb2mask256 ((__v32qi) __A); 3153 } 3154 3155 static __inline__ __mmask8 __DEFAULT_FN_ATTRS 3156 _mm_movepi16_mask (__m128i __A) 3157 { 3158 return (__mmask8) __builtin_ia32_cvtw2mask128 ((__v8hi) __A); 3159 } 3160 3161 static __inline__ __mmask16 __DEFAULT_FN_ATTRS 3162 _mm256_movepi16_mask (__m256i __A) 3163 { 3164 return (__mmask16) __builtin_ia32_cvtw2mask256 ((__v16hi) __A); 3165 } 3166 3167 static __inline__ __m128i __DEFAULT_FN_ATTRS 3168 _mm_movm_epi8 (__mmask16 __A) 3169 { 3170 return (__m128i) __builtin_ia32_cvtmask2b128 (__A); 3171 } 3172 3173 static __inline__ __m256i __DEFAULT_FN_ATTRS 3174 _mm256_movm_epi8 (__mmask32 __A) 3175 { 3176 return (__m256i) __builtin_ia32_cvtmask2b256 (__A); 3177 } 3178 3179 static __inline__ __m128i __DEFAULT_FN_ATTRS 3180 _mm_movm_epi16 (__mmask8 __A) 3181 { 3182 return (__m128i) __builtin_ia32_cvtmask2w128 (__A); 3183 } 3184 3185 static __inline__ __m256i __DEFAULT_FN_ATTRS 3186 _mm256_movm_epi16 (__mmask16 __A) 3187 { 3188 return (__m256i) __builtin_ia32_cvtmask2w256 (__A); 3189 } 3190 3191 static __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 3199 static __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 3207 static __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 3215 static __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 3223 static __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 3231 static __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 3239 static __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 3247 static __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 3255 static __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 3263 static __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 3271 static __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 3279 static __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 3287 static __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 3296 static __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 3305 static __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 3315 static __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 3324 static __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 3334 static __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