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