avx512cdintrin.h revision 285165
1289421Scy/*===------------- avx512cdintrin.h - AVX512CD intrinsics ------------------=== 2289421Scy * 3289421Scy * 4293037Scy * Permission is hereby granted, free of charge, to any person obtaining a copy 5293037Scy * of this software and associated documentation files (the "Software"), to deal 6293037Scy * in the Software without restriction, including without limitation the rights 7293037Scy * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8293037Scy * copies of the Software, and to permit persons to whom the Software is 9293037Scy * furnished to do so, subject to the following conditions: 10293037Scy * 11289421Scy * The above copyright notice and this permission notice shall be included in 12293037Scy * all copies or substantial portions of the Software. 13289421Scy * 14293037Scy * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15293037Scy * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16293037Scy * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17293037Scy * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18289421Scy * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19293037Scy * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 20293037Scy * THE SOFTWARE. 21293037Scy * 22293037Scy *===-----------------------------------------------------------------------=== 23293037Scy */ 24293037Scy#ifndef __IMMINTRIN_H 25293037Scy#error "Never use <avx512cdintrin.h> directly; include <immintrin.h> instead." 26293037Scy#endif 27293037Scy 28293037Scy#ifndef __AVX512CDINTRIN_H 29293037Scy#define __AVX512CDINTRIN_H 30293037Scy 31293037Scy/* Define the default attributes for the functions in this file. */ 32289421Scy#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512cd"))) 33293037Scy 34293037Scystatic __inline__ __m512i __DEFAULT_FN_ATTRS 35293037Scy_mm512_conflict_epi64 (__m512i __A) 36293037Scy{ 37289421Scy return (__m512i) __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A, 38293037Scy (__v8di) _mm512_setzero_si512 (), 39293037Scy (__mmask8) -1); 40293037Scy} 41293037Scy 42293037Scystatic __inline__ __m512i __DEFAULT_FN_ATTRS 43293037Scy_mm512_mask_conflict_epi64 (__m512i __W, __mmask8 __U, __m512i __A) 44293037Scy{ 45293037Scy return (__m512i) __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A, 46293037Scy (__v8di) __W, 47293037Scy (__mmask8) __U); 48289421Scy} 49293037Scy 50293037Scystatic __inline__ __m512i __DEFAULT_FN_ATTRS 51293037Scy_mm512_maskz_conflict_epi64 (__mmask8 __U, __m512i __A) 52293037Scy{ 53293037Scy return (__m512i) __builtin_ia32_vpconflictdi_512_mask ((__v8di) __A, 54293037Scy (__v8di) _mm512_setzero_si512 (), 55289421Scy (__mmask8) __U); 56293037Scy} 57293037Scy 58293037Scystatic __inline__ __m512i __DEFAULT_FN_ATTRS 59293037Scy_mm512_conflict_epi32 (__m512i __A) 60293037Scy{ 61293037Scy return (__m512i) __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A, 62289421Scy (__v16si) _mm512_setzero_si512 (), 63293037Scy (__mmask16) -1); 64293037Scy} 65293037Scy 66289421Scystatic __inline__ __m512i __DEFAULT_FN_ATTRS 67293037Scy_mm512_mask_conflict_epi32 (__m512i __W, __mmask16 __U, __m512i __A) 68293037Scy{ 69293037Scy return (__m512i) __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A, 70289421Scy (__v16si) __W, 71293037Scy (__mmask16) __U); 72289421Scy} 73293037Scy 74289421Scystatic __inline__ __m512i __DEFAULT_FN_ATTRS 75293037Scy_mm512_maskz_conflict_epi32 (__mmask16 __U, __m512i __A) 76293037Scy{ 77293037Scy return (__m512i) __builtin_ia32_vpconflictsi_512_mask ((__v16si) __A, 78289421Scy (__v16si) _mm512_setzero_si512 (), 79293037Scy (__mmask16) __U); 80293037Scy} 81293037Scy 82293037Scystatic __inline__ __m512i __DEFAULT_FN_ATTRS 83289421Scy_mm512_lzcnt_epi32 (__m512i __A) 84293037Scy{ 85293037Scy return (__m512i) __builtin_ia32_vplzcntd_512_mask ((__v16si) __A, 86293037Scy (__v16si) _mm512_setzero_si512 (), 87293037Scy (__mmask16) -1); 88293037Scy} 89293037Scy 90293037Scystatic __inline__ __m512i __DEFAULT_FN_ATTRS 91293037Scy_mm512_mask_lzcnt_epi32 (__m512i __W, __mmask16 __U, __m512i __A) 92293037Scy{ 93293037Scy return (__m512i) __builtin_ia32_vplzcntd_512_mask ((__v16si) __A, 94293037Scy (__v16si) __W, 95293037Scy (__mmask16) __U); 96293037Scy} 97293037Scy 98289421Scystatic __inline__ __m512i __DEFAULT_FN_ATTRS 99293037Scy_mm512_maskz_lzcnt_epi32 (__mmask16 __U, __m512i __A) 100293037Scy{ 101293037Scy return (__m512i) __builtin_ia32_vplzcntd_512_mask ((__v16si) __A, 102293037Scy (__v16si) _mm512_setzero_si512 (), 103293037Scy (__mmask16) __U); 104289421Scy} 105293037Scy 106293037Scystatic __inline__ __m512i __DEFAULT_FN_ATTRS 107293037Scy_mm512_lzcnt_epi64 (__m512i __A) 108293037Scy{ 109289421Scy return (__m512i) __builtin_ia32_vplzcntq_512_mask ((__v8di) __A, 110293037Scy (__v8di) _mm512_setzero_si512 (), 111293037Scy (__mmask8) -1); 112293037Scy} 113293037Scy 114293037Scystatic __inline__ __m512i __DEFAULT_FN_ATTRS 115289421Scy_mm512_mask_lzcnt_epi64 (__m512i __W, __mmask8 __U, __m512i __A) 116293037Scy{ 117293037Scy return (__m512i) __builtin_ia32_vplzcntq_512_mask ((__v8di) __A, 118289421Scy (__v8di) __W, 119293037Scy (__mmask8) __U); 120293037Scy} 121293037Scy 122293037Scystatic __inline__ __m512i __DEFAULT_FN_ATTRS 123293037Scy_mm512_maskz_lzcnt_epi64 (__mmask8 __U, __m512i __A) 124293037Scy{ 125289421Scy return (__m512i) __builtin_ia32_vplzcntq_512_mask ((__v8di) __A, 126293037Scy (__v8di) _mm512_setzero_si512 (), 127293037Scy (__mmask8) __U); 128293037Scy} 129293037Scy#undef __DEFAULT_FN_ATTRS 130293037Scy 131293037Scy#endif 132289421Scy