zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

avx512cdintrin.h (4327B) - Raw


      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 
     22 static __inline__ __m512i __DEFAULT_FN_ATTRS
     23 _mm512_conflict_epi64 (__m512i __A)
     24 {
     25   return (__m512i) __builtin_ia32_vpconflictdi_512 ((__v8di) __A);
     26 }
     27 
     28 static __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 
     36 static __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 
     44 static __inline__ __m512i __DEFAULT_FN_ATTRS
     45 _mm512_conflict_epi32 (__m512i __A)
     46 {
     47   return (__m512i) __builtin_ia32_vpconflictsi_512 ((__v16si) __A);
     48 }
     49 
     50 static __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 
     58 static __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 
     66 static __inline__ __m512i __DEFAULT_FN_ATTRS
     67 _mm512_lzcnt_epi32 (__m512i __A)
     68 {
     69   return (__m512i) __builtin_ia32_vplzcntd_512 ((__v16si) __A);
     70 }
     71 
     72 static __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 
     80 static __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 
     88 static __inline__ __m512i __DEFAULT_FN_ATTRS
     89 _mm512_lzcnt_epi64 (__m512i __A)
     90 {
     91   return (__m512i) __builtin_ia32_vplzcntq_512 ((__v8di) __A);
     92 }
     93 
     94 static __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 
    102 static __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 
    110 static __inline__ __m512i __DEFAULT_FN_ATTRS
    111 _mm512_broadcastmb_epi64 (__mmask8 __A)
    112 {
    113   return (__m512i) _mm512_set1_epi64((long long) __A);
    114 }
    115 
    116 static __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