avx512vnniintrin.h revision 327952
1/*===------------- avx512vnniintrin.h - VNNI intrinsics ------------------=== 2 * 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a copy 5 * of this software and associated documentation files (the "Software"), to deal 6 * in the Software without restriction, including without limitation the rights 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 * copies of the Software, and to permit persons to whom the Software is 9 * furnished to do so, subject to the following conditions: 10 * 11 * The above copyright notice and this permission notice shall be included in 12 * all copies or substantial portions of the Software. 13 * 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 20 * THE SOFTWARE. 21 * 22 *===-----------------------------------------------------------------------=== 23 */ 24#ifndef __IMMINTRIN_H 25#error "Never use <avx512vnniintrin.h> directly; include <immintrin.h> instead." 26#endif 27 28#ifndef __AVX512VNNIINTRIN_H 29#define __AVX512VNNIINTRIN_H 30 31/* Define the default attributes for the functions in this file. */ 32#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vnni"))) 33 34 35static __inline__ __m512i __DEFAULT_FN_ATTRS 36_mm512_mask_dpbusd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) 37{ 38 return (__m512i) __builtin_ia32_vpdpbusd512_mask ((__v16si) __S, 39 (__v16si) __A, 40 (__v16si) __B, 41 (__mmask16) __U); 42} 43 44static __inline__ __m512i __DEFAULT_FN_ATTRS 45_mm512_maskz_dpbusd_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B) 46{ 47 return (__m512i) __builtin_ia32_vpdpbusd512_maskz ((__v16si) __S, 48 (__v16si) __A, 49 (__v16si) __B, 50 (__mmask16) __U); 51} 52 53static __inline__ __m512i __DEFAULT_FN_ATTRS 54_mm512_dpbusd_epi32(__m512i __S, __m512i __A, __m512i __B) 55{ 56 return (__m512i) __builtin_ia32_vpdpbusd512_mask ((__v16si) __S, 57 (__v16si) __A, 58 (__v16si) __B, 59 (__mmask16) -1); 60} 61 62static __inline__ __m512i __DEFAULT_FN_ATTRS 63_mm512_mask_dpbusds_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) 64{ 65 return (__m512i) __builtin_ia32_vpdpbusds512_mask ((__v16si) __S, 66 (__v16si) __A, 67 (__v16si) __B, 68 (__mmask16) __U); 69} 70 71static __inline__ __m512i __DEFAULT_FN_ATTRS 72_mm512_maskz_dpbusds_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B) 73{ 74 return (__m512i) __builtin_ia32_vpdpbusds512_maskz ((__v16si) __S, 75 (__v16si) __A, 76 (__v16si) __B, 77 (__mmask16) __U); 78} 79 80static __inline__ __m512i __DEFAULT_FN_ATTRS 81_mm512_dpbusds_epi32(__m512i __S, __m512i __A, __m512i __B) 82{ 83 return (__m512i) __builtin_ia32_vpdpbusds512_mask ((__v16si) __S, 84 (__v16si) __A, 85 (__v16si) __B, 86 (__mmask16) -1); 87} 88 89static __inline__ __m512i __DEFAULT_FN_ATTRS 90_mm512_mask_dpwssd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) 91{ 92 return (__m512i) __builtin_ia32_vpdpwssd512_mask ((__v16si) __S, 93 (__v16si) __A, 94 (__v16si) __B, 95 (__mmask16) __U); 96} 97 98static __inline__ __m512i __DEFAULT_FN_ATTRS 99_mm512_maskz_dpwssd_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B) 100{ 101 return (__m512i) __builtin_ia32_vpdpwssd512_maskz ((__v16si) __S, 102 (__v16si) __A, 103 (__v16si) __B, 104 (__mmask16) __U); 105} 106 107static __inline__ __m512i __DEFAULT_FN_ATTRS 108_mm512_dpwssd_epi32(__m512i __S, __m512i __A, __m512i __B) 109{ 110 return (__m512i) __builtin_ia32_vpdpwssd512_mask ((__v16si) __S, 111 (__v16si) __A, 112 (__v16si) __B, 113 (__mmask16) -1); 114} 115 116static __inline__ __m512i __DEFAULT_FN_ATTRS 117_mm512_mask_dpwssds_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) 118{ 119 return (__m512i) __builtin_ia32_vpdpwssds512_mask ((__v16si) __S, 120 (__v16si) __A, 121 (__v16si) __B, 122 (__mmask16) __U); 123} 124 125static __inline__ __m512i __DEFAULT_FN_ATTRS 126_mm512_maskz_dpwssds_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B) 127{ 128 return (__m512i) __builtin_ia32_vpdpwssds512_maskz ((__v16si) __S, 129 (__v16si) __A, 130 (__v16si) __B, 131 (__mmask16) __U); 132} 133 134static __inline__ __m512i __DEFAULT_FN_ATTRS 135_mm512_dpwssds_epi32(__m512i __S, __m512i __A, __m512i __B) 136{ 137 return (__m512i) __builtin_ia32_vpdpwssds512_mask ((__v16si) __S, 138 (__v16si) __A, 139 (__v16si) __B, 140 (__mmask16) -1); 141} 142 143 144#undef __DEFAULT_FN_ATTRS 145 146#endif 147