brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · c386923 Raw
117 lines · c
1/*===------------- avx512vnniintrin.h - VNNI 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-exception7 *8 *===-----------------------------------------------------------------------===9 */10#ifndef __IMMINTRIN_H11#error "Never use <avx512vnniintrin.h> directly; include <immintrin.h> instead."12#endif13 14#ifndef __AVX512VNNIINTRIN_H15#define __AVX512VNNIINTRIN_H16 17/* Define the default attributes for the functions in this file. */18#define __DEFAULT_FN_ATTRS                                                     \19  __attribute__((__always_inline__, __nodebug__, __target__("avx512vnni"),     \20                 __min_vector_width__(512)))21 22static __inline__ __m512i __DEFAULT_FN_ATTRS23_mm512_dpbusd_epi32(__m512i __S, __m512i __A, __m512i __B)24{25  return (__m512i)__builtin_ia32_vpdpbusd512((__v16si)__S, (__v64qu)__A,26                                             (__v64qi)__B);27}28 29static __inline__ __m512i __DEFAULT_FN_ATTRS30_mm512_mask_dpbusd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)31{32  return (__m512i)__builtin_ia32_selectd_512(__U,33                                    (__v16si)_mm512_dpbusd_epi32(__S, __A, __B),34                                    (__v16si)__S);35}36 37static __inline__ __m512i __DEFAULT_FN_ATTRS38_mm512_maskz_dpbusd_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)39{40  return (__m512i)__builtin_ia32_selectd_512(__U,41                                    (__v16si)_mm512_dpbusd_epi32(__S, __A, __B),42                                    (__v16si)_mm512_setzero_si512());43}44 45static __inline__ __m512i __DEFAULT_FN_ATTRS46_mm512_dpbusds_epi32(__m512i __S, __m512i __A, __m512i __B)47{48  return (__m512i)__builtin_ia32_vpdpbusds512((__v16si)__S, (__v64qu)__A,49                                              (__v64qi)__B);50}51 52static __inline__ __m512i __DEFAULT_FN_ATTRS53_mm512_mask_dpbusds_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)54{55  return (__m512i)__builtin_ia32_selectd_512(__U,56                                   (__v16si)_mm512_dpbusds_epi32(__S, __A, __B),57                                   (__v16si)__S);58}59 60static __inline__ __m512i __DEFAULT_FN_ATTRS61_mm512_maskz_dpbusds_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)62{63  return (__m512i)__builtin_ia32_selectd_512(__U,64                                   (__v16si)_mm512_dpbusds_epi32(__S, __A, __B),65                                   (__v16si)_mm512_setzero_si512());66}67 68static __inline__ __m512i __DEFAULT_FN_ATTRS69_mm512_dpwssd_epi32(__m512i __S, __m512i __A, __m512i __B)70{71  return (__m512i)__builtin_ia32_vpdpwssd512((__v16si)__S, (__v16si)__A,72                                             (__v16si)__B);73}74 75static __inline__ __m512i __DEFAULT_FN_ATTRS76_mm512_mask_dpwssd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)77{78  return (__m512i)__builtin_ia32_selectd_512(__U,79                                    (__v16si)_mm512_dpwssd_epi32(__S, __A, __B),80                                    (__v16si)__S);81}82 83static __inline__ __m512i __DEFAULT_FN_ATTRS84_mm512_maskz_dpwssd_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)85{86  return (__m512i)__builtin_ia32_selectd_512(__U,87                                    (__v16si)_mm512_dpwssd_epi32(__S, __A, __B),88                                    (__v16si)_mm512_setzero_si512());89}90 91static __inline__ __m512i __DEFAULT_FN_ATTRS92_mm512_dpwssds_epi32(__m512i __S, __m512i __A, __m512i __B)93{94  return (__m512i)__builtin_ia32_vpdpwssds512((__v16si)__S, (__v16si)__A,95                                              (__v16si)__B);96}97 98static __inline__ __m512i __DEFAULT_FN_ATTRS99_mm512_mask_dpwssds_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)100{101  return (__m512i)__builtin_ia32_selectd_512(__U,102                                   (__v16si)_mm512_dpwssds_epi32(__S, __A, __B),103                                   (__v16si)__S);104}105 106static __inline__ __m512i __DEFAULT_FN_ATTRS107_mm512_maskz_dpwssds_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)108{109  return (__m512i)__builtin_ia32_selectd_512(__U,110                                   (__v16si)_mm512_dpwssds_epi32(__S, __A, __B),111                                   (__v16si)_mm512_setzero_si512());112}113 114#undef __DEFAULT_FN_ATTRS115 116#endif117