11188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/*===------------- avx512cdintrin.h - AVX512CD intrinsics ------------------===
21188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker *
31188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker *
41188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * Permission is hereby granted, free of charge, to any person obtaining a copy
51188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * of this software and associated documentation files (the "Software"), to deal
61188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * in the Software without restriction, including without limitation the rights
71188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
81188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * copies of the Software, and to permit persons to whom the Software is
91188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * furnished to do so, subject to the following conditions:
101188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker *
111188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * The above copyright notice and this permission notice shall be included in
121188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * all copies or substantial portions of the Software.
131188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker *
141188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
151188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
161188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
171188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
181188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
191188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
201188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * THE SOFTWARE.
211188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker *
221188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker *===-----------------------------------------------------------------------===
231188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker */
241188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#ifndef __IMMINTRIN_H
251188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#error "Never use <avx512cdintrin.h> directly; include <immintrin.h> instead."
261188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#endif
271188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
281188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#ifndef __AVX512CDINTRIN_H
291188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define __AVX512CDINTRIN_H
301188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
311188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Define the default attributes for the functions in this file. */
321188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512cd")))
331188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
341188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS
351188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm512_conflict_epi64 (__m512i __A)
361188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{
371188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker  return (__m512i) __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A,
381188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker                 (__v8di) _mm512_setzero_si512 (),
391188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker                 (__mmask8) -1);
401188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker}
411188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
421188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS
431188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm512_mask_conflict_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
441188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{
451188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker  return (__m512i) __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A,
461188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker               (__v8di) __W,
471188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker               (__mmask8) __U);
481188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker}
491188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
501188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS
511188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm512_maskz_conflict_epi64 (__mmask8 __U, __m512i __A)
521188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{
531188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker  return (__m512i) __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A,
541188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker                 (__v8di) _mm512_setzero_si512 (),
551188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker                 (__mmask8) __U);
561188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker}
571188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
581188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS
591188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm512_conflict_epi32 (__m512i __A)
601188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{
611188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker  return (__m512i) __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A,
621188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker                 (__v16si) _mm512_setzero_si512 (),
631188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker                 (__mmask16) -1);
641188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker}
651188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
661188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS
671188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm512_mask_conflict_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
681188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{
691188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker  return (__m512i) __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A,
701188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker               (__v16si) __W,
711188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker               (__mmask16) __U);
721188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker}
731188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
741188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS
751188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm512_maskz_conflict_epi32 (__mmask16 __U, __m512i __A)
761188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{
771188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker  return (__m512i) __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A,
781188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker                 (__v16si) _mm512_setzero_si512 (),
791188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker                 (__mmask16) __U);
801188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker}
811188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
821188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS
831188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm512_lzcnt_epi32 (__m512i __A)
841188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{
851188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker  return (__m512i) __builtin_ia32_vplzcntd_512_mask ((__v16si) __A,
861188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker             (__v16si) _mm512_setzero_si512 (),
871188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker             (__mmask16) -1);
881188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker}
891188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
901188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS
911188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm512_mask_lzcnt_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
921188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{
931188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker  return (__m512i) __builtin_ia32_vplzcntd_512_mask ((__v16si) __A,
941188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker                 (__v16si) __W,
951188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker                 (__mmask16) __U);
961188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker}
971188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
981188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS
991188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm512_maskz_lzcnt_epi32 (__mmask16 __U, __m512i __A)
1001188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{
1011188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker  return (__m512i) __builtin_ia32_vplzcntd_512_mask ((__v16si) __A,
1021188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker             (__v16si) _mm512_setzero_si512 (),
1031188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker             (__mmask16) __U);
1041188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker}
1051188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
1061188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS
1071188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm512_lzcnt_epi64 (__m512i __A)
1081188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{
1091188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker  return (__m512i) __builtin_ia32_vplzcntq_512_mask ((__v8di) __A,
1101188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker             (__v8di) _mm512_setzero_si512 (),
1111188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker             (__mmask8) -1);
1121188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker}
1131188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
1141188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS
1151188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm512_mask_lzcnt_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
1161188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{
1171188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker  return (__m512i) __builtin_ia32_vplzcntq_512_mask ((__v8di) __A,
1181188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker                 (__v8di) __W,
1191188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker                 (__mmask8) __U);
1201188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker}
1211188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
1221188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS
1231188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm512_maskz_lzcnt_epi64 (__mmask8 __U, __m512i __A)
1241188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{
1251188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker  return (__m512i) __builtin_ia32_vplzcntq_512_mask ((__v8di) __A,
1261188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker             (__v8di) _mm512_setzero_si512 (),
1271188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker             (__mmask8) __U);
1281188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker}
1291188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
1301188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS
1311188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm512_broadcastmb_epi64 (__mmask8 __A)
1321188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{
1331188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker  return (__m512i) __builtin_ia32_broadcastmb512 (__A);
1341188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker}
1351188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
1361188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline__ __m512i __DEFAULT_FN_ATTRS
1371188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm512_broadcastmw_epi32 (__mmask16 __A)
1381188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{
1391188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker  return (__m512i) __builtin_ia32_broadcastmw512 (__A);
1401188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker}
1411188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
1421188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#undef __DEFAULT_FN_ATTRS
1431188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker
1441188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#endif
145