avx512vnniintrin.h revision 360660
1178476Sjb/*===------------- avx512vnniintrin.h - VNNI intrinsics ------------------=== 2178476Sjb * 3178476Sjb * 4178476Sjb * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5178476Sjb * See https://llvm.org/LICENSE.txt for license information. 6178476Sjb * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7178476Sjb * 8178476Sjb *===-----------------------------------------------------------------------=== 9178476Sjb */ 10178476Sjb#ifndef __IMMINTRIN_H 11178476Sjb#error "Never use <avx512vnniintrin.h> directly; include <immintrin.h> instead." 12178476Sjb#endif 13178476Sjb 14178476Sjb#ifndef __AVX512VNNIINTRIN_H 15178476Sjb#define __AVX512VNNIINTRIN_H 16178476Sjb 17178476Sjb/* Define the default attributes for the functions in this file. */ 18178476Sjb#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vnni"), __min_vector_width__(512))) 19178476Sjb 20178476Sjb 21178476Sjbstatic __inline__ __m512i __DEFAULT_FN_ATTRS 22178476Sjb_mm512_dpbusd_epi32(__m512i __S, __m512i __A, __m512i __B) 23178476Sjb{ 24178476Sjb return (__m512i)__builtin_ia32_vpdpbusd512((__v16si)__S, (__v16si)__A, 25178476Sjb (__v16si)__B); 26178476Sjb} 27178476Sjb 28178476Sjbstatic __inline__ __m512i __DEFAULT_FN_ATTRS 29178476Sjb_mm512_mask_dpbusd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) 30178476Sjb{ 31178476Sjb return (__m512i)__builtin_ia32_selectd_512(__U, 32178476Sjb (__v16si)_mm512_dpbusd_epi32(__S, __A, __B), 33178476Sjb (__v16si)__S); 34178476Sjb} 35178476Sjb 36178476Sjbstatic __inline__ __m512i __DEFAULT_FN_ATTRS 37178476Sjb_mm512_maskz_dpbusd_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B) 38178476Sjb{ 39 return (__m512i)__builtin_ia32_selectd_512(__U, 40 (__v16si)_mm512_dpbusd_epi32(__S, __A, __B), 41 (__v16si)_mm512_setzero_si512()); 42} 43 44static __inline__ __m512i __DEFAULT_FN_ATTRS 45_mm512_dpbusds_epi32(__m512i __S, __m512i __A, __m512i __B) 46{ 47 return (__m512i)__builtin_ia32_vpdpbusds512((__v16si)__S, (__v16si)__A, 48 (__v16si)__B); 49} 50 51static __inline__ __m512i __DEFAULT_FN_ATTRS 52_mm512_mask_dpbusds_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) 53{ 54 return (__m512i)__builtin_ia32_selectd_512(__U, 55 (__v16si)_mm512_dpbusds_epi32(__S, __A, __B), 56 (__v16si)__S); 57} 58 59static __inline__ __m512i __DEFAULT_FN_ATTRS 60_mm512_maskz_dpbusds_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B) 61{ 62 return (__m512i)__builtin_ia32_selectd_512(__U, 63 (__v16si)_mm512_dpbusds_epi32(__S, __A, __B), 64 (__v16si)_mm512_setzero_si512()); 65} 66 67static __inline__ __m512i __DEFAULT_FN_ATTRS 68_mm512_dpwssd_epi32(__m512i __S, __m512i __A, __m512i __B) 69{ 70 return (__m512i)__builtin_ia32_vpdpwssd512((__v16si)__S, (__v16si)__A, 71 (__v16si)__B); 72} 73 74static __inline__ __m512i __DEFAULT_FN_ATTRS 75_mm512_mask_dpwssd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) 76{ 77 return (__m512i)__builtin_ia32_selectd_512(__U, 78 (__v16si)_mm512_dpwssd_epi32(__S, __A, __B), 79 (__v16si)__S); 80} 81 82static __inline__ __m512i __DEFAULT_FN_ATTRS 83_mm512_maskz_dpwssd_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B) 84{ 85 return (__m512i)__builtin_ia32_selectd_512(__U, 86 (__v16si)_mm512_dpwssd_epi32(__S, __A, __B), 87 (__v16si)_mm512_setzero_si512()); 88} 89 90static __inline__ __m512i __DEFAULT_FN_ATTRS 91_mm512_dpwssds_epi32(__m512i __S, __m512i __A, __m512i __B) 92{ 93 return (__m512i)__builtin_ia32_vpdpwssds512((__v16si)__S, (__v16si)__A, 94 (__v16si)__B); 95} 96 97static __inline__ __m512i __DEFAULT_FN_ATTRS 98_mm512_mask_dpwssds_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) 99{ 100 return (__m512i)__builtin_ia32_selectd_512(__U, 101 (__v16si)_mm512_dpwssds_epi32(__S, __A, __B), 102 (__v16si)__S); 103} 104 105static __inline__ __m512i __DEFAULT_FN_ATTRS 106_mm512_maskz_dpwssds_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B) 107{ 108 return (__m512i)__builtin_ia32_selectd_512(__U, 109 (__v16si)_mm512_dpwssds_epi32(__S, __A, __B), 110 (__v16si)_mm512_setzero_si512()); 111} 112 113#undef __DEFAULT_FN_ATTRS 114 115#endif 116