1285165Sdim/*===------------- avx512cdintrin.h - AVX512CD intrinsics ------------------=== 2285165Sdim * 3285165Sdim * 4353358Sdim * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5353358Sdim * See https://llvm.org/LICENSE.txt for license information. 6353358Sdim * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7285165Sdim * 8285165Sdim *===-----------------------------------------------------------------------=== 9285165Sdim */ 10285165Sdim#ifndef __IMMINTRIN_H 11285165Sdim#error "Never use <avx512cdintrin.h> directly; include <immintrin.h> instead." 12285165Sdim#endif 13285165Sdim 14285165Sdim#ifndef __AVX512CDINTRIN_H 15285165Sdim#define __AVX512CDINTRIN_H 16285165Sdim 17285165Sdim/* Define the default attributes for the functions in this file. */ 18341825Sdim#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512cd"), __min_vector_width__(512))) 19285165Sdim 20285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 21285165Sdim_mm512_conflict_epi64 (__m512i __A) 22285165Sdim{ 23353358Sdim return (__m512i) __builtin_ia32_vpconflictdi_512 ((__v8di) __A); 24285165Sdim} 25285165Sdim 26285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 27285165Sdim_mm512_mask_conflict_epi64 (__m512i __W, __mmask8 __U, __m512i __A) 28285165Sdim{ 29353358Sdim return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U, 30353358Sdim (__v8di)_mm512_conflict_epi64(__A), 31353358Sdim (__v8di)__W); 32285165Sdim} 33285165Sdim 34285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 35285165Sdim_mm512_maskz_conflict_epi64 (__mmask8 __U, __m512i __A) 36285165Sdim{ 37353358Sdim return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U, 38353358Sdim (__v8di)_mm512_conflict_epi64(__A), 39353358Sdim (__v8di)_mm512_setzero_si512 ()); 40285165Sdim} 41285165Sdim 42285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 43285165Sdim_mm512_conflict_epi32 (__m512i __A) 44285165Sdim{ 45353358Sdim return (__m512i) __builtin_ia32_vpconflictsi_512 ((__v16si) __A); 46285165Sdim} 47285165Sdim 48285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 49285165Sdim_mm512_mask_conflict_epi32 (__m512i __W, __mmask16 __U, __m512i __A) 50285165Sdim{ 51353358Sdim return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U, 52353358Sdim (__v16si)_mm512_conflict_epi32(__A), 53353358Sdim (__v16si)__W); 54285165Sdim} 55285165Sdim 56285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 57285165Sdim_mm512_maskz_conflict_epi32 (__mmask16 __U, __m512i __A) 58285165Sdim{ 59353358Sdim return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U, 60353358Sdim (__v16si)_mm512_conflict_epi32(__A), 61353358Sdim (__v16si)_mm512_setzero_si512()); 62285165Sdim} 63285165Sdim 64285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 65285165Sdim_mm512_lzcnt_epi32 (__m512i __A) 66285165Sdim{ 67341825Sdim return (__m512i) __builtin_ia32_vplzcntd_512 ((__v16si) __A); 68285165Sdim} 69285165Sdim 70285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 71285165Sdim_mm512_mask_lzcnt_epi32 (__m512i __W, __mmask16 __U, __m512i __A) 72285165Sdim{ 73341825Sdim return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U, 74341825Sdim (__v16si)_mm512_lzcnt_epi32(__A), 75341825Sdim (__v16si)__W); 76285165Sdim} 77285165Sdim 78285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 79285165Sdim_mm512_maskz_lzcnt_epi32 (__mmask16 __U, __m512i __A) 80285165Sdim{ 81341825Sdim return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U, 82341825Sdim (__v16si)_mm512_lzcnt_epi32(__A), 83341825Sdim (__v16si)_mm512_setzero_si512()); 84285165Sdim} 85285165Sdim 86285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 87285165Sdim_mm512_lzcnt_epi64 (__m512i __A) 88285165Sdim{ 89341825Sdim return (__m512i) __builtin_ia32_vplzcntq_512 ((__v8di) __A); 90285165Sdim} 91285165Sdim 92285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 93285165Sdim_mm512_mask_lzcnt_epi64 (__m512i __W, __mmask8 __U, __m512i __A) 94285165Sdim{ 95341825Sdim return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U, 96341825Sdim (__v8di)_mm512_lzcnt_epi64(__A), 97341825Sdim (__v8di)__W); 98285165Sdim} 99285165Sdim 100285165Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 101285165Sdim_mm512_maskz_lzcnt_epi64 (__mmask8 __U, __m512i __A) 102285165Sdim{ 103341825Sdim return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U, 104341825Sdim (__v8di)_mm512_lzcnt_epi64(__A), 105341825Sdim (__v8di)_mm512_setzero_si512()); 106285165Sdim} 107309124Sdim 108309124Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 109309124Sdim_mm512_broadcastmb_epi64 (__mmask8 __A) 110309124Sdim{ 111327952Sdim return (__m512i) _mm512_set1_epi64((long long) __A); 112309124Sdim} 113309124Sdim 114309124Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 115309124Sdim_mm512_broadcastmw_epi32 (__mmask16 __A) 116309124Sdim{ 117327952Sdim return (__m512i) _mm512_set1_epi32((int) __A); 118327952Sdim 119309124Sdim} 120309124Sdim 121285165Sdim#undef __DEFAULT_FN_ATTRS 122285165Sdim 123285165Sdim#endif 124