1285165Sdim/*===------------- avx512cdintrin.h - AVX512CD intrinsics ------------------=== 2285165Sdim * 3285165Sdim * 4285165Sdim * Permission is hereby granted, free of charge, to any person obtaining a copy 5285165Sdim * of this software and associated documentation files (the "Software"), to deal 6285165Sdim * in the Software without restriction, including without limitation the rights 7285165Sdim * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8285165Sdim * copies of the Software, and to permit persons to whom the Software is 9285165Sdim * furnished to do so, subject to the following conditions: 10285165Sdim * 11285165Sdim * The above copyright notice and this permission notice shall be included in 12285165Sdim * all copies or substantial portions of the Software. 13285165Sdim * 14285165Sdim * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15285165Sdim * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16285165Sdim * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17285165Sdim * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18285165Sdim * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19285165Sdim * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 20285165Sdim * THE SOFTWARE. 21285165Sdim * 22285165Sdim *===-----------------------------------------------------------------------=== 23285165Sdim */ 24285165Sdim#ifndef __IMMINTRIN_H 25285165Sdim#error "Never use <avx512cdintrin.h> directly; include <immintrin.h> instead." 26285165Sdim#endif 27285165Sdim 28285165Sdim#ifndef __AVX512CDINTRIN_H 29285165Sdim#define __AVX512CDINTRIN_H 30285165Sdim 31285165Sdim/* Define the default attributes for the functions in this file. */ 32285165Sdim#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512cd"))) 33285165Sdim 34285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 35285165Sdim_mm512_conflict_epi64 (__m512i __A) 36285165Sdim{ 37285165Sdim return (__m512i) __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A, 38285165Sdim (__v8di) _mm512_setzero_si512 (), 39285165Sdim (__mmask8) -1); 40285165Sdim} 41285165Sdim 42285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 43285165Sdim_mm512_mask_conflict_epi64 (__m512i __W, __mmask8 __U, __m512i __A) 44285165Sdim{ 45285165Sdim return (__m512i) __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A, 46285165Sdim (__v8di) __W, 47285165Sdim (__mmask8) __U); 48285165Sdim} 49285165Sdim 50285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 51285165Sdim_mm512_maskz_conflict_epi64 (__mmask8 __U, __m512i __A) 52285165Sdim{ 53285165Sdim return (__m512i) __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A, 54285165Sdim (__v8di) _mm512_setzero_si512 (), 55285165Sdim (__mmask8) __U); 56285165Sdim} 57285165Sdim 58285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 59285165Sdim_mm512_conflict_epi32 (__m512i __A) 60285165Sdim{ 61285165Sdim return (__m512i) __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A, 62285165Sdim (__v16si) _mm512_setzero_si512 (), 63285165Sdim (__mmask16) -1); 64285165Sdim} 65285165Sdim 66285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 67285165Sdim_mm512_mask_conflict_epi32 (__m512i __W, __mmask16 __U, __m512i __A) 68285165Sdim{ 69285165Sdim return (__m512i) __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A, 70285165Sdim (__v16si) __W, 71285165Sdim (__mmask16) __U); 72285165Sdim} 73285165Sdim 74285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 75285165Sdim_mm512_maskz_conflict_epi32 (__mmask16 __U, __m512i __A) 76285165Sdim{ 77285165Sdim return (__m512i) __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A, 78285165Sdim (__v16si) _mm512_setzero_si512 (), 79285165Sdim (__mmask16) __U); 80285165Sdim} 81285165Sdim 82285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 83285165Sdim_mm512_lzcnt_epi32 (__m512i __A) 84285165Sdim{ 85285165Sdim return (__m512i) __builtin_ia32_vplzcntd_512_mask ((__v16si) __A, 86285165Sdim (__v16si) _mm512_setzero_si512 (), 87285165Sdim (__mmask16) -1); 88285165Sdim} 89285165Sdim 90285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 91285165Sdim_mm512_mask_lzcnt_epi32 (__m512i __W, __mmask16 __U, __m512i __A) 92285165Sdim{ 93285165Sdim return (__m512i) __builtin_ia32_vplzcntd_512_mask ((__v16si) __A, 94285165Sdim (__v16si) __W, 95285165Sdim (__mmask16) __U); 96285165Sdim} 97285165Sdim 98285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 99285165Sdim_mm512_maskz_lzcnt_epi32 (__mmask16 __U, __m512i __A) 100285165Sdim{ 101285165Sdim return (__m512i) __builtin_ia32_vplzcntd_512_mask ((__v16si) __A, 102285165Sdim (__v16si) _mm512_setzero_si512 (), 103285165Sdim (__mmask16) __U); 104285165Sdim} 105285165Sdim 106285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 107285165Sdim_mm512_lzcnt_epi64 (__m512i __A) 108285165Sdim{ 109285165Sdim return (__m512i) __builtin_ia32_vplzcntq_512_mask ((__v8di) __A, 110285165Sdim (__v8di) _mm512_setzero_si512 (), 111285165Sdim (__mmask8) -1); 112285165Sdim} 113285165Sdim 114285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 115285165Sdim_mm512_mask_lzcnt_epi64 (__m512i __W, __mmask8 __U, __m512i __A) 116285165Sdim{ 117285165Sdim return (__m512i) __builtin_ia32_vplzcntq_512_mask ((__v8di) __A, 118285165Sdim (__v8di) __W, 119285165Sdim (__mmask8) __U); 120285165Sdim} 121285165Sdim 122285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 123285165Sdim_mm512_maskz_lzcnt_epi64 (__mmask8 __U, __m512i __A) 124285165Sdim{ 125285165Sdim return (__m512i) __builtin_ia32_vplzcntq_512_mask ((__v8di) __A, 126285165Sdim (__v8di) _mm512_setzero_si512 (), 127285165Sdim (__mmask8) __U); 128285165Sdim} 129285165Sdim#undef __DEFAULT_FN_ATTRS 130285165Sdim 131285165Sdim#endif 132