1/*===---- avx512vlintrin.h - AVX512VL 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 <avx512vlintrin.h> directly; include <immintrin.h> instead." 26#endif 27 28#ifndef __AVX512VLINTRIN_H 29#define __AVX512VLINTRIN_H 30 31/* Integer compare */ 32 33static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 34_mm_cmpeq_epi32_mask(__m128i __a, __m128i __b) { 35 return (__mmask8)__builtin_ia32_pcmpeqd128_mask((__v4si)__a, (__v4si)__b, 36 (__mmask8)-1); 37} 38 39static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 40_mm_mask_cmpeq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { 41 return (__mmask8)__builtin_ia32_pcmpeqd128_mask((__v4si)__a, (__v4si)__b, 42 __u); 43} 44 45static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 46_mm_cmpeq_epu32_mask(__m128i __a, __m128i __b) { 47 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 0, 48 (__mmask8)-1); 49} 50 51static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 52_mm_mask_cmpeq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { 53 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 0, 54 __u); 55} 56 57static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 58_mm256_cmpeq_epi32_mask(__m256i __a, __m256i __b) { 59 return (__mmask8)__builtin_ia32_pcmpeqd256_mask((__v8si)__a, (__v8si)__b, 60 (__mmask8)-1); 61} 62 63static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 64_mm256_mask_cmpeq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { 65 return (__mmask8)__builtin_ia32_pcmpeqd256_mask((__v8si)__a, (__v8si)__b, 66 __u); 67} 68 69static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 70_mm256_cmpeq_epu32_mask(__m256i __a, __m256i __b) { 71 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 0, 72 (__mmask8)-1); 73} 74 75static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 76_mm256_mask_cmpeq_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { 77 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 0, 78 __u); 79} 80 81static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 82_mm_cmpeq_epi64_mask(__m128i __a, __m128i __b) { 83 return (__mmask8)__builtin_ia32_pcmpeqq128_mask((__v2di)__a, (__v2di)__b, 84 (__mmask8)-1); 85} 86 87static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 88_mm_mask_cmpeq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { 89 return (__mmask8)__builtin_ia32_pcmpeqq128_mask((__v2di)__a, (__v2di)__b, 90 __u); 91} 92 93static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 94_mm_cmpeq_epu64_mask(__m128i __a, __m128i __b) { 95 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 0, 96 (__mmask8)-1); 97} 98 99static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 100_mm_mask_cmpeq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { 101 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 0, 102 __u); 103} 104 105static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 106_mm256_cmpeq_epi64_mask(__m256i __a, __m256i __b) { 107 return (__mmask8)__builtin_ia32_pcmpeqq256_mask((__v4di)__a, (__v4di)__b, 108 (__mmask8)-1); 109} 110 111static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 112_mm256_mask_cmpeq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { 113 return (__mmask8)__builtin_ia32_pcmpeqq256_mask((__v4di)__a, (__v4di)__b, 114 __u); 115} 116 117static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 118_mm256_cmpeq_epu64_mask(__m256i __a, __m256i __b) { 119 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 0, 120 (__mmask8)-1); 121} 122 123static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 124_mm256_mask_cmpeq_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { 125 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 0, 126 __u); 127} 128 129 130static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 131_mm_cmpge_epi32_mask(__m128i __a, __m128i __b) { 132 return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 5, 133 (__mmask8)-1); 134} 135 136static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 137_mm_mask_cmpge_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { 138 return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 5, 139 __u); 140} 141 142static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 143_mm_cmpge_epu32_mask(__m128i __a, __m128i __b) { 144 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 5, 145 (__mmask8)-1); 146} 147 148static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 149_mm_mask_cmpge_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { 150 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 5, 151 __u); 152} 153 154static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 155_mm256_cmpge_epi32_mask(__m256i __a, __m256i __b) { 156 return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 5, 157 (__mmask8)-1); 158} 159 160static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 161_mm256_mask_cmpge_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { 162 return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 5, 163 __u); 164} 165 166static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 167_mm256_cmpge_epu32_mask(__m256i __a, __m256i __b) { 168 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 5, 169 (__mmask8)-1); 170} 171 172static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 173_mm256_mask_cmpge_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { 174 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 5, 175 __u); 176} 177 178static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 179_mm_cmpge_epi64_mask(__m128i __a, __m128i __b) { 180 return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 5, 181 (__mmask8)-1); 182} 183 184static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 185_mm_mask_cmpge_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { 186 return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 5, 187 __u); 188} 189 190static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 191_mm_cmpge_epu64_mask(__m128i __a, __m128i __b) { 192 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 5, 193 (__mmask8)-1); 194} 195 196static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 197_mm_mask_cmpge_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { 198 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 5, 199 __u); 200} 201 202static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 203_mm256_cmpge_epi64_mask(__m256i __a, __m256i __b) { 204 return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 5, 205 (__mmask8)-1); 206} 207 208static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 209_mm256_mask_cmpge_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { 210 return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 5, 211 __u); 212} 213 214static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 215_mm256_cmpge_epu64_mask(__m256i __a, __m256i __b) { 216 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 5, 217 (__mmask8)-1); 218} 219 220static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 221_mm256_mask_cmpge_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { 222 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 5, 223 __u); 224} 225 226 227 228 229static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 230_mm_cmpgt_epi32_mask(__m128i __a, __m128i __b) { 231 return (__mmask8)__builtin_ia32_pcmpgtd128_mask((__v4si)__a, (__v4si)__b, 232 (__mmask8)-1); 233} 234 235static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 236_mm_mask_cmpgt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { 237 return (__mmask8)__builtin_ia32_pcmpgtd128_mask((__v4si)__a, (__v4si)__b, 238 __u); 239} 240 241static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 242_mm_cmpgt_epu32_mask(__m128i __a, __m128i __b) { 243 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 6, 244 (__mmask8)-1); 245} 246 247static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 248_mm_mask_cmpgt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { 249 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 6, 250 __u); 251} 252 253static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 254_mm256_cmpgt_epi32_mask(__m256i __a, __m256i __b) { 255 return (__mmask8)__builtin_ia32_pcmpgtd256_mask((__v8si)__a, (__v8si)__b, 256 (__mmask8)-1); 257} 258 259static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 260_mm256_mask_cmpgt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { 261 return (__mmask8)__builtin_ia32_pcmpgtd256_mask((__v8si)__a, (__v8si)__b, 262 __u); 263} 264 265static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 266_mm256_cmpgt_epu32_mask(__m256i __a, __m256i __b) { 267 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 6, 268 (__mmask8)-1); 269} 270 271static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 272_mm256_mask_cmpgt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { 273 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 6, 274 __u); 275} 276 277static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 278_mm_cmpgt_epi64_mask(__m128i __a, __m128i __b) { 279 return (__mmask8)__builtin_ia32_pcmpgtq128_mask((__v2di)__a, (__v2di)__b, 280 (__mmask8)-1); 281} 282 283static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 284_mm_mask_cmpgt_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { 285 return (__mmask8)__builtin_ia32_pcmpgtq128_mask((__v2di)__a, (__v2di)__b, 286 __u); 287} 288 289static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 290_mm_cmpgt_epu64_mask(__m128i __a, __m128i __b) { 291 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 6, 292 (__mmask8)-1); 293} 294 295static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 296_mm_mask_cmpgt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { 297 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 6, 298 __u); 299} 300 301static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 302_mm256_cmpgt_epi64_mask(__m256i __a, __m256i __b) { 303 return (__mmask8)__builtin_ia32_pcmpgtq256_mask((__v4di)__a, (__v4di)__b, 304 (__mmask8)-1); 305} 306 307static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 308_mm256_mask_cmpgt_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { 309 return (__mmask8)__builtin_ia32_pcmpgtq256_mask((__v4di)__a, (__v4di)__b, 310 __u); 311} 312 313static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 314_mm256_cmpgt_epu64_mask(__m256i __a, __m256i __b) { 315 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 6, 316 (__mmask8)-1); 317} 318 319static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 320_mm256_mask_cmpgt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { 321 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 6, 322 __u); 323} 324 325static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 326_mm_cmple_epi32_mask(__m128i __a, __m128i __b) { 327 return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 2, 328 (__mmask8)-1); 329} 330 331static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 332_mm_mask_cmple_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { 333 return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 2, 334 __u); 335} 336 337static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 338_mm_cmple_epu32_mask(__m128i __a, __m128i __b) { 339 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 2, 340 (__mmask8)-1); 341} 342 343static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 344_mm_mask_cmple_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { 345 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 2, 346 __u); 347} 348 349static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 350_mm256_cmple_epi32_mask(__m256i __a, __m256i __b) { 351 return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 2, 352 (__mmask8)-1); 353} 354 355static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 356_mm256_mask_cmple_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { 357 return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 2, 358 __u); 359} 360 361static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 362_mm256_cmple_epu32_mask(__m256i __a, __m256i __b) { 363 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 2, 364 (__mmask8)-1); 365} 366 367static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 368_mm256_mask_cmple_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { 369 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 2, 370 __u); 371} 372 373static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 374_mm_cmple_epi64_mask(__m128i __a, __m128i __b) { 375 return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 2, 376 (__mmask8)-1); 377} 378 379static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 380_mm_mask_cmple_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { 381 return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 2, 382 __u); 383} 384 385static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 386_mm_cmple_epu64_mask(__m128i __a, __m128i __b) { 387 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 2, 388 (__mmask8)-1); 389} 390 391static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 392_mm_mask_cmple_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { 393 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 2, 394 __u); 395} 396 397static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 398_mm256_cmple_epi64_mask(__m256i __a, __m256i __b) { 399 return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 2, 400 (__mmask8)-1); 401} 402 403static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 404_mm256_mask_cmple_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { 405 return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 2, 406 __u); 407} 408 409static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 410_mm256_cmple_epu64_mask(__m256i __a, __m256i __b) { 411 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 2, 412 (__mmask8)-1); 413} 414 415static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 416_mm256_mask_cmple_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { 417 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 2, 418 __u); 419} 420 421static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 422_mm_cmplt_epi32_mask(__m128i __a, __m128i __b) { 423 return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 1, 424 (__mmask8)-1); 425} 426 427static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 428_mm_mask_cmplt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { 429 return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 1, 430 __u); 431} 432 433static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 434_mm_cmplt_epu32_mask(__m128i __a, __m128i __b) { 435 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 1, 436 (__mmask8)-1); 437} 438 439static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 440_mm_mask_cmplt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { 441 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 1, 442 __u); 443} 444 445static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 446_mm256_cmplt_epi32_mask(__m256i __a, __m256i __b) { 447 return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 1, 448 (__mmask8)-1); 449} 450 451static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 452_mm256_mask_cmplt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { 453 return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 1, 454 __u); 455} 456 457static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 458_mm256_cmplt_epu32_mask(__m256i __a, __m256i __b) { 459 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 1, 460 (__mmask8)-1); 461} 462 463static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 464_mm256_mask_cmplt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { 465 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 1, 466 __u); 467} 468 469static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 470_mm_cmplt_epi64_mask(__m128i __a, __m128i __b) { 471 return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 1, 472 (__mmask8)-1); 473} 474 475static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 476_mm_mask_cmplt_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { 477 return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 1, 478 __u); 479} 480 481static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 482_mm_cmplt_epu64_mask(__m128i __a, __m128i __b) { 483 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 1, 484 (__mmask8)-1); 485} 486 487static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 488_mm_mask_cmplt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { 489 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 1, 490 __u); 491} 492 493static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 494_mm256_cmplt_epi64_mask(__m256i __a, __m256i __b) { 495 return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 1, 496 (__mmask8)-1); 497} 498 499static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 500_mm256_mask_cmplt_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { 501 return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 1, 502 __u); 503} 504 505static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 506_mm256_cmplt_epu64_mask(__m256i __a, __m256i __b) { 507 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 1, 508 (__mmask8)-1); 509} 510 511static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 512_mm256_mask_cmplt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { 513 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 1, 514 __u); 515} 516 517static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 518_mm_cmpneq_epi32_mask(__m128i __a, __m128i __b) { 519 return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 4, 520 (__mmask8)-1); 521} 522 523static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 524_mm_mask_cmpneq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) { 525 return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 4, 526 __u); 527} 528 529static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 530_mm_cmpneq_epu32_mask(__m128i __a, __m128i __b) { 531 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 4, 532 (__mmask8)-1); 533} 534 535static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 536_mm_mask_cmpneq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) { 537 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 4, 538 __u); 539} 540 541static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 542_mm256_cmpneq_epi32_mask(__m256i __a, __m256i __b) { 543 return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 4, 544 (__mmask8)-1); 545} 546 547static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 548_mm256_mask_cmpneq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) { 549 return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 4, 550 __u); 551} 552 553static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 554_mm256_cmpneq_epu32_mask(__m256i __a, __m256i __b) { 555 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 4, 556 (__mmask8)-1); 557} 558 559static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 560_mm256_mask_cmpneq_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) { 561 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 4, 562 __u); 563} 564 565static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 566_mm_cmpneq_epi64_mask(__m128i __a, __m128i __b) { 567 return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 4, 568 (__mmask8)-1); 569} 570 571static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 572_mm_mask_cmpneq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) { 573 return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 4, 574 __u); 575} 576 577static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 578_mm_cmpneq_epu64_mask(__m128i __a, __m128i __b) { 579 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 4, 580 (__mmask8)-1); 581} 582 583static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 584_mm_mask_cmpneq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) { 585 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 4, 586 __u); 587} 588 589static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 590_mm256_cmpneq_epi64_mask(__m256i __a, __m256i __b) { 591 return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 4, 592 (__mmask8)-1); 593} 594 595static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 596_mm256_mask_cmpneq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) { 597 return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 4, 598 __u); 599} 600 601static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 602_mm256_cmpneq_epu64_mask(__m256i __a, __m256i __b) { 603 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 4, 604 (__mmask8)-1); 605} 606 607static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__)) 608_mm256_mask_cmpneq_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) { 609 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 4, 610 __u); 611} 612 613#define _mm_cmp_epi32_mask(a, b, p) __extension__ ({ \ 614 (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)(__m128i)(a), \ 615 (__v4si)(__m128i)(b), \ 616 (p), (__mmask8)-1); }) 617 618#define _mm_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \ 619 (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)(__m128i)(a), \ 620 (__v4si)(__m128i)(b), \ 621 (p), (__mmask8)(m)); }) 622 623#define _mm_cmp_epu32_mask(a, b, p) __extension__ ({ \ 624 (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)(__m128i)(a), \ 625 (__v4si)(__m128i)(b), \ 626 (p), (__mmask8)-1); }) 627 628#define _mm_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \ 629 (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)(__m128i)(a), \ 630 (__v4si)(__m128i)(b), \ 631 (p), (__mmask8)(m)); }) 632 633#define _mm256_cmp_epi32_mask(a, b, p) __extension__ ({ \ 634 (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)(__m256i)(a), \ 635 (__v8si)(__m256i)(b), \ 636 (p), (__mmask8)-1); }) 637 638#define _mm256_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \ 639 (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)(__m256i)(a), \ 640 (__v8si)(__m256i)(b), \ 641 (p), (__mmask8)(m)); }) 642 643#define _mm256_cmp_epu32_mask(a, b, p) __extension__ ({ \ 644 (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)(__m256i)(a), \ 645 (__v8si)(__m256i)(b), \ 646 (p), (__mmask8)-1); }) 647 648#define _mm256_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \ 649 (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)(__m256i)(a), \ 650 (__v8si)(__m256i)(b), \ 651 (p), (__mmask8)(m)); }) 652 653#define _mm_cmp_epi64_mask(a, b, p) __extension__ ({ \ 654 (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)(__m128i)(a), \ 655 (__v2di)(__m128i)(b), \ 656 (p), (__mmask8)-1); }) 657 658#define _mm_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \ 659 (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)(__m128i)(a), \ 660 (__v2di)(__m128i)(b), \ 661 (p), (__mmask8)(m)); }) 662 663#define _mm_cmp_epu64_mask(a, b, p) __extension__ ({ \ 664 (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)(__m128i)(a), \ 665 (__v2di)(__m128i)(b), \ 666 (p), (__mmask8)-1); }) 667 668#define _mm_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \ 669 (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)(__m128i)(a), \ 670 (__v2di)(__m128i)(b), \ 671 (p), (__mmask8)(m)); }) 672 673#define _mm256_cmp_epi64_mask(a, b, p) __extension__ ({ \ 674 (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)(__m256i)(a), \ 675 (__v4di)(__m256i)(b), \ 676 (p), (__mmask8)-1); }) 677 678#define _mm256_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \ 679 (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)(__m256i)(a), \ 680 (__v4di)(__m256i)(b), \ 681 (p), (__mmask8)(m)); }) 682 683#define _mm256_cmp_epu64_mask(a, b, p) __extension__ ({ \ 684 (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)(__m256i)(a), \ 685 (__v4di)(__m256i)(b), \ 686 (p), (__mmask8)-1); }) 687 688#define _mm256_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \ 689 (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)(__m256i)(a), \ 690 (__v4di)(__m256i)(b), \ 691 (p), (__mmask8)(m)); }) 692 693#endif /* __AVX512VLINTRIN_H */ 694