1/*===------------- avx512vlvnniintrin.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-exception 7 * 8 *===-----------------------------------------------------------------------=== 9 */ 10#ifndef __IMMINTRIN_H 11#error "Never use <avx512vlvnniintrin.h> directly; include <immintrin.h> instead." 12#endif 13 14#ifndef __AVX512VLVNNIINTRIN_H 15#define __AVX512VLVNNIINTRIN_H 16 17/* Define the default attributes for the functions in this file. */ 18#define __DEFAULT_FN_ATTRS128 __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512vnni"), __min_vector_width__(128))) 19#define __DEFAULT_FN_ATTRS256 __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512vnni"), __min_vector_width__(256))) 20 21 22static __inline__ __m256i __DEFAULT_FN_ATTRS256 23_mm256_dpbusd_epi32(__m256i __S, __m256i __A, __m256i __B) 24{ 25 return (__m256i)__builtin_ia32_vpdpbusd256((__v8si)__S, (__v8si)__A, 26 (__v8si)__B); 27} 28 29static __inline__ __m256i __DEFAULT_FN_ATTRS256 30_mm256_mask_dpbusd_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) 31{ 32 return (__m256i)__builtin_ia32_selectd_256(__U, 33 (__v8si)_mm256_dpbusd_epi32(__S, __A, __B), 34 (__v8si)__S); 35} 36 37static __inline__ __m256i __DEFAULT_FN_ATTRS256 38_mm256_maskz_dpbusd_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) 39{ 40 return (__m256i)__builtin_ia32_selectd_256(__U, 41 (__v8si)_mm256_dpbusd_epi32(__S, __A, __B), 42 (__v8si)_mm256_setzero_si256()); 43} 44 45static __inline__ __m256i __DEFAULT_FN_ATTRS256 46_mm256_dpbusds_epi32(__m256i __S, __m256i __A, __m256i __B) 47{ 48 return (__m256i)__builtin_ia32_vpdpbusds256((__v8si)__S, (__v8si)__A, 49 (__v8si)__B); 50} 51 52static __inline__ __m256i __DEFAULT_FN_ATTRS256 53_mm256_mask_dpbusds_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) 54{ 55 return (__m256i)__builtin_ia32_selectd_256(__U, 56 (__v8si)_mm256_dpbusds_epi32(__S, __A, __B), 57 (__v8si)__S); 58} 59 60static __inline__ __m256i __DEFAULT_FN_ATTRS256 61_mm256_maskz_dpbusds_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) 62{ 63 return (__m256i)__builtin_ia32_selectd_256(__U, 64 (__v8si)_mm256_dpbusds_epi32(__S, __A, __B), 65 (__v8si)_mm256_setzero_si256()); 66} 67 68static __inline__ __m256i __DEFAULT_FN_ATTRS256 69_mm256_dpwssd_epi32(__m256i __S, __m256i __A, __m256i __B) 70{ 71 return (__m256i)__builtin_ia32_vpdpwssd256((__v8si)__S, (__v8si)__A, 72 (__v8si)__B); 73} 74 75static __inline__ __m256i __DEFAULT_FN_ATTRS256 76_mm256_mask_dpwssd_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) 77{ 78 return (__m256i)__builtin_ia32_selectd_256(__U, 79 (__v8si)_mm256_dpwssd_epi32(__S, __A, __B), 80 (__v8si)__S); 81} 82 83static __inline__ __m256i __DEFAULT_FN_ATTRS256 84_mm256_maskz_dpwssd_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) 85{ 86 return (__m256i)__builtin_ia32_selectd_256(__U, 87 (__v8si)_mm256_dpwssd_epi32(__S, __A, __B), 88 (__v8si)_mm256_setzero_si256()); 89} 90 91static __inline__ __m256i __DEFAULT_FN_ATTRS256 92_mm256_dpwssds_epi32(__m256i __S, __m256i __A, __m256i __B) 93{ 94 return (__m256i)__builtin_ia32_vpdpwssds256((__v8si)__S, (__v8si)__A, 95 (__v8si)__B); 96} 97 98static __inline__ __m256i __DEFAULT_FN_ATTRS256 99_mm256_mask_dpwssds_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) 100{ 101 return (__m256i)__builtin_ia32_selectd_256(__U, 102 (__v8si)_mm256_dpwssds_epi32(__S, __A, __B), 103 (__v8si)__S); 104} 105 106static __inline__ __m256i __DEFAULT_FN_ATTRS256 107_mm256_maskz_dpwssds_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) 108{ 109 return (__m256i)__builtin_ia32_selectd_256(__U, 110 (__v8si)_mm256_dpwssds_epi32(__S, __A, __B), 111 (__v8si)_mm256_setzero_si256()); 112} 113 114static __inline__ __m128i __DEFAULT_FN_ATTRS128 115_mm_dpbusd_epi32(__m128i __S, __m128i __A, __m128i __B) 116{ 117 return (__m128i)__builtin_ia32_vpdpbusd128((__v4si)__S, (__v4si)__A, 118 (__v4si)__B); 119} 120 121static __inline__ __m128i __DEFAULT_FN_ATTRS128 122_mm_mask_dpbusd_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) 123{ 124 return (__m128i)__builtin_ia32_selectd_128(__U, 125 (__v4si)_mm_dpbusd_epi32(__S, __A, __B), 126 (__v4si)__S); 127} 128 129static __inline__ __m128i __DEFAULT_FN_ATTRS128 130_mm_maskz_dpbusd_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) 131{ 132 return (__m128i)__builtin_ia32_selectd_128(__U, 133 (__v4si)_mm_dpbusd_epi32(__S, __A, __B), 134 (__v4si)_mm_setzero_si128()); 135} 136 137static __inline__ __m128i __DEFAULT_FN_ATTRS128 138_mm_dpbusds_epi32(__m128i __S, __m128i __A, __m128i __B) 139{ 140 return (__m128i)__builtin_ia32_vpdpbusds128((__v4si)__S, (__v4si)__A, 141 (__v4si)__B); 142} 143 144static __inline__ __m128i __DEFAULT_FN_ATTRS128 145_mm_mask_dpbusds_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) 146{ 147 return (__m128i)__builtin_ia32_selectd_128(__U, 148 (__v4si)_mm_dpbusds_epi32(__S, __A, __B), 149 (__v4si)__S); 150} 151 152static __inline__ __m128i __DEFAULT_FN_ATTRS128 153_mm_maskz_dpbusds_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) 154{ 155 return (__m128i)__builtin_ia32_selectd_128(__U, 156 (__v4si)_mm_dpbusds_epi32(__S, __A, __B), 157 (__v4si)_mm_setzero_si128()); 158} 159 160static __inline__ __m128i __DEFAULT_FN_ATTRS128 161_mm_dpwssd_epi32(__m128i __S, __m128i __A, __m128i __B) 162{ 163 return (__m128i)__builtin_ia32_vpdpwssd128((__v4si)__S, (__v4si)__A, 164 (__v4si)__B); 165} 166 167static __inline__ __m128i __DEFAULT_FN_ATTRS128 168_mm_mask_dpwssd_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) 169{ 170 return (__m128i)__builtin_ia32_selectd_128(__U, 171 (__v4si)_mm_dpwssd_epi32(__S, __A, __B), 172 (__v4si)__S); 173} 174 175static __inline__ __m128i __DEFAULT_FN_ATTRS128 176_mm_maskz_dpwssd_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) 177{ 178 return (__m128i)__builtin_ia32_selectd_128(__U, 179 (__v4si)_mm_dpwssd_epi32(__S, __A, __B), 180 (__v4si)_mm_setzero_si128()); 181} 182 183static __inline__ __m128i __DEFAULT_FN_ATTRS128 184_mm_dpwssds_epi32(__m128i __S, __m128i __A, __m128i __B) 185{ 186 return (__m128i)__builtin_ia32_vpdpwssds128((__v4si)__S, (__v4si)__A, 187 (__v4si)__B); 188} 189 190static __inline__ __m128i __DEFAULT_FN_ATTRS128 191_mm_mask_dpwssds_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) 192{ 193 return (__m128i)__builtin_ia32_selectd_128(__U, 194 (__v4si)_mm_dpwssds_epi32(__S, __A, __B), 195 (__v4si)__S); 196} 197 198static __inline__ __m128i __DEFAULT_FN_ATTRS128 199_mm_maskz_dpwssds_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) 200{ 201 return (__m128i)__builtin_ia32_selectd_128(__U, 202 (__v4si)_mm_dpwssds_epi32(__S, __A, __B), 203 (__v4si)_mm_setzero_si128()); 204} 205 206#undef __DEFAULT_FN_ATTRS128 207#undef __DEFAULT_FN_ATTRS256 208 209#endif 210