master
  1/*===------------- avx512cdintrin.h - AVX512CD intrinsics ------------------===
  2 *
  3 *
  4 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  5 * See https://llvm.org/LICENSE.txt for license information.
  6 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  7 *
  8 *===-----------------------------------------------------------------------===
  9 */
 10#ifndef __IMMINTRIN_H
 11#error "Never use <avx512cdintrin.h> directly; include <immintrin.h> instead."
 12#endif
 13
 14#ifndef __AVX512CDINTRIN_H
 15#define __AVX512CDINTRIN_H
 16
 17/* Define the default attributes for the functions in this file. */
 18#define __DEFAULT_FN_ATTRS                                                     \
 19  __attribute__((__always_inline__, __nodebug__,                               \
 20                 __target__("avx512cd,evex512"), __min_vector_width__(512)))
 21
 22static __inline__ __m512i __DEFAULT_FN_ATTRS
 23_mm512_conflict_epi64 (__m512i __A)
 24{
 25  return (__m512i) __builtin_ia32_vpconflictdi_512 ((__v8di) __A);
 26}
 27
 28static __inline__ __m512i __DEFAULT_FN_ATTRS
 29_mm512_mask_conflict_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
 30{
 31  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
 32                                             (__v8di)_mm512_conflict_epi64(__A),
 33                                             (__v8di)__W);
 34}
 35
 36static __inline__ __m512i __DEFAULT_FN_ATTRS
 37_mm512_maskz_conflict_epi64 (__mmask8 __U, __m512i __A)
 38{
 39  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
 40                                             (__v8di)_mm512_conflict_epi64(__A),
 41                                             (__v8di)_mm512_setzero_si512 ());
 42}
 43
 44static __inline__ __m512i __DEFAULT_FN_ATTRS
 45_mm512_conflict_epi32 (__m512i __A)
 46{
 47  return (__m512i) __builtin_ia32_vpconflictsi_512 ((__v16si) __A);
 48}
 49
 50static __inline__ __m512i __DEFAULT_FN_ATTRS
 51_mm512_mask_conflict_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
 52{
 53  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
 54                                            (__v16si)_mm512_conflict_epi32(__A),
 55                                            (__v16si)__W);
 56}
 57
 58static __inline__ __m512i __DEFAULT_FN_ATTRS
 59_mm512_maskz_conflict_epi32 (__mmask16 __U, __m512i __A)
 60{
 61  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
 62                                            (__v16si)_mm512_conflict_epi32(__A),
 63                                            (__v16si)_mm512_setzero_si512());
 64}
 65
 66static __inline__ __m512i __DEFAULT_FN_ATTRS
 67_mm512_lzcnt_epi32 (__m512i __A)
 68{
 69  return (__m512i) __builtin_ia32_vplzcntd_512 ((__v16si) __A);
 70}
 71
 72static __inline__ __m512i __DEFAULT_FN_ATTRS
 73_mm512_mask_lzcnt_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
 74{
 75  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
 76                                             (__v16si)_mm512_lzcnt_epi32(__A),
 77                                             (__v16si)__W);
 78}
 79
 80static __inline__ __m512i __DEFAULT_FN_ATTRS
 81_mm512_maskz_lzcnt_epi32 (__mmask16 __U, __m512i __A)
 82{
 83  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
 84                                             (__v16si)_mm512_lzcnt_epi32(__A),
 85                                             (__v16si)_mm512_setzero_si512());
 86}
 87
 88static __inline__ __m512i __DEFAULT_FN_ATTRS
 89_mm512_lzcnt_epi64 (__m512i __A)
 90{
 91  return (__m512i) __builtin_ia32_vplzcntq_512 ((__v8di) __A);
 92}
 93
 94static __inline__ __m512i __DEFAULT_FN_ATTRS
 95_mm512_mask_lzcnt_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
 96{
 97  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
 98                                             (__v8di)_mm512_lzcnt_epi64(__A),
 99                                             (__v8di)__W);
100}
101
102static __inline__ __m512i __DEFAULT_FN_ATTRS
103_mm512_maskz_lzcnt_epi64 (__mmask8 __U, __m512i __A)
104{
105  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
106                                             (__v8di)_mm512_lzcnt_epi64(__A),
107                                             (__v8di)_mm512_setzero_si512());
108}
109
110static __inline__ __m512i __DEFAULT_FN_ATTRS
111_mm512_broadcastmb_epi64 (__mmask8 __A)
112{
113  return (__m512i) _mm512_set1_epi64((long long) __A);
114}
115
116static __inline__ __m512i __DEFAULT_FN_ATTRS
117_mm512_broadcastmw_epi32 (__mmask16 __A)
118{
119  return (__m512i) _mm512_set1_epi32((int) __A);
120
121}
122
123#undef __DEFAULT_FN_ATTRS
124
125#endif