16bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/*===------------- avx512cdintrin.h - AVX512CD intrinsics ------------------=== 26bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * 36bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * 46bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * Permission is hereby granted, free of charge, to any person obtaining a copy 56bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * of this software and associated documentation files (the "Software"), to deal 66bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * in the Software without restriction, including without limitation the rights 76bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 86bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * copies of the Software, and to permit persons to whom the Software is 96bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * furnished to do so, subject to the following conditions: 106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * 116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * The above copyright notice and this permission notice shall be included in 126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * all copies or substantial portions of the Software. 136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * 146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * THE SOFTWARE. 216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * 226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker *===-----------------------------------------------------------------------=== 236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker */ 246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#ifndef __IMMINTRIN_H 256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#error "Never use <avx512cdintrin.h> directly; include <immintrin.h> instead." 266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#endif 276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#ifndef __AVX512CDINTRIN_H 296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define __AVX512CDINTRIN_H 306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Define the default attributes for the functions in this file. */ 326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512cd"))) 336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS 356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm512_conflict_epi64 (__m512i __A) 366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m512i) __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A, 386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v8di) _mm512_setzero_si512 (), 396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__mmask8) -1); 406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS 436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm512_mask_conflict_epi64 (__m512i __W, __mmask8 __U, __m512i __A) 446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m512i) __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A, 466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v8di) __W, 476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__mmask8) __U); 486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS 516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm512_maskz_conflict_epi64 (__mmask8 __U, __m512i __A) 526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m512i) __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A, 546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v8di) _mm512_setzero_si512 (), 556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__mmask8) __U); 566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS 596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm512_conflict_epi32 (__m512i __A) 606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m512i) __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A, 626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v16si) _mm512_setzero_si512 (), 636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__mmask16) -1); 646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS 676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm512_mask_conflict_epi32 (__m512i __W, __mmask16 __U, __m512i __A) 686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m512i) __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A, 706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v16si) __W, 716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__mmask16) __U); 726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS 756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm512_maskz_conflict_epi32 (__mmask16 __U, __m512i __A) 766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m512i) __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A, 786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v16si) _mm512_setzero_si512 (), 796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__mmask16) __U); 806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS 836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm512_lzcnt_epi32 (__m512i __A) 846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m512i) __builtin_ia32_vplzcntd_512_mask ((__v16si) __A, 866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v16si) _mm512_setzero_si512 (), 876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__mmask16) -1); 886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS 916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm512_mask_lzcnt_epi32 (__m512i __W, __mmask16 __U, __m512i __A) 926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m512i) __builtin_ia32_vplzcntd_512_mask ((__v16si) __A, 946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v16si) __W, 956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__mmask16) __U); 966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS 996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm512_maskz_lzcnt_epi32 (__mmask16 __U, __m512i __A) 1006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 1016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m512i) __builtin_ia32_vplzcntd_512_mask ((__v16si) __A, 1026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v16si) _mm512_setzero_si512 (), 1036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__mmask16) __U); 1046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 1056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS 1076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm512_lzcnt_epi64 (__m512i __A) 1086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 1096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m512i) __builtin_ia32_vplzcntq_512_mask ((__v8di) __A, 1106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v8di) _mm512_setzero_si512 (), 1116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__mmask8) -1); 1126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 1136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS 1156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm512_mask_lzcnt_epi64 (__m512i __W, __mmask8 __U, __m512i __A) 1166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 1176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m512i) __builtin_ia32_vplzcntq_512_mask ((__v8di) __A, 1186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v8di) __W, 1196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__mmask8) __U); 1206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 1216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS 1236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm512_maskz_lzcnt_epi64 (__mmask8 __U, __m512i __A) 1246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 1256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m512i) __builtin_ia32_vplzcntq_512_mask ((__v8di) __A, 1266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v8di) _mm512_setzero_si512 (), 1276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__mmask8) __U); 1286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 1296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS 1316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm512_broadcastmb_epi64 (__mmask8 __A) 1326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 1336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m512i) __builtin_ia32_broadcastmb512 (__A); 1346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 1356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS 1376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm512_broadcastmw_epi32 (__mmask16 __A) 1386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 1396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m512i) __builtin_ia32_broadcastmw512 (__A); 1406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 1416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#undef __DEFAULT_FN_ATTRS 1436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#endif 145