avx512vlvnniintrin.h revision 335799
1/*===------------- avx512vlvnniintrin.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 <avx512vlvnniintrin.h> directly; include <immintrin.h> instead." 26#endif 27 28#ifndef __AVX512VLVNNIINTRIN_H 29#define __AVX512VLVNNIINTRIN_H 30 31/* Define the default attributes for the functions in this file. */ 32#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512vnni"))) 33 34 35static __inline__ __m256i __DEFAULT_FN_ATTRS 36_mm256_mask_dpbusd_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) 37{ 38 return (__m256i) __builtin_ia32_vpdpbusd256_mask ((__v8si) __S, 39 (__v8si) __A, 40 (__v8si) __B, 41 (__mmask8) __U); 42} 43 44static __inline__ __m256i __DEFAULT_FN_ATTRS 45_mm256_maskz_dpbusd_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) 46{ 47 return (__m256i) __builtin_ia32_vpdpbusd256_maskz ((__v8si) __S, 48 (__v8si) __A, 49 (__v8si) __B, 50 (__mmask8) __U); 51} 52 53static __inline__ __m256i __DEFAULT_FN_ATTRS 54_mm256_dpbusd_epi32(__m256i __S, __m256i __A, __m256i __B) 55{ 56 return (__m256i) __builtin_ia32_vpdpbusd256_mask ((__v8si) __S, 57 (__v8si) __A, 58 (__v8si) __B, 59 (__mmask8) -1); 60} 61 62static __inline__ __m256i __DEFAULT_FN_ATTRS 63_mm256_mask_dpbusds_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) 64{ 65 return (__m256i) __builtin_ia32_vpdpbusds256_mask ((__v8si) __S, 66 (__v8si) __A, 67 (__v8si) __B, 68 (__mmask8) __U); 69} 70 71static __inline__ __m256i __DEFAULT_FN_ATTRS 72_mm256_maskz_dpbusds_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) 73{ 74 return (__m256i) __builtin_ia32_vpdpbusds256_maskz ((__v8si) __S, 75 (__v8si) __A, 76 (__v8si) __B, 77 (__mmask8) __U); 78} 79 80static __inline__ __m256i __DEFAULT_FN_ATTRS 81_mm256_dpbusds_epi32(__m256i __S, __m256i __A, __m256i __B) 82{ 83 return (__m256i) __builtin_ia32_vpdpbusds256_mask ((__v8si) __S, 84 (__v8si) __A, 85 (__v8si) __B, 86 (__mmask8) -1); 87} 88 89static __inline__ __m256i __DEFAULT_FN_ATTRS 90_mm256_mask_dpwssd_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) 91{ 92 return (__m256i) __builtin_ia32_vpdpwssd256_mask ((__v8si) __S, 93 (__v8si) __A, 94 (__v8si) __B, 95 (__mmask8) __U); 96} 97 98static __inline__ __m256i __DEFAULT_FN_ATTRS 99_mm256_maskz_dpwssd_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) 100{ 101 return (__m256i) __builtin_ia32_vpdpwssd256_maskz ((__v8si) __S, 102 (__v8si) __A, 103 (__v8si) __B, 104 (__mmask8) __U); 105} 106 107static __inline__ __m256i __DEFAULT_FN_ATTRS 108_mm256_dpwssd_epi32(__m256i __S, __m256i __A, __m256i __B) 109{ 110 return (__m256i) __builtin_ia32_vpdpwssd256_mask ((__v8si) __S, 111 (__v8si) __A, 112 (__v8si) __B, 113 (__mmask8) -1); 114} 115 116static __inline__ __m256i __DEFAULT_FN_ATTRS 117_mm256_mask_dpwssds_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) 118{ 119 return (__m256i) __builtin_ia32_vpdpwssds256_mask ((__v8si) __S, 120 (__v8si) __A, 121 (__v8si) __B, 122 (__mmask8) __U); 123} 124 125static __inline__ __m256i __DEFAULT_FN_ATTRS 126_mm256_maskz_dpwssds_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) 127{ 128 return (__m256i) __builtin_ia32_vpdpwssds256_maskz ((__v8si) __S, 129 (__v8si) __A, 130 (__v8si) __B, 131 (__mmask8) __U); 132} 133 134static __inline__ __m256i __DEFAULT_FN_ATTRS 135_mm256_dpwssds_epi32(__m256i __S, __m256i __A, __m256i __B) 136{ 137 return (__m256i) __builtin_ia32_vpdpwssds256_mask ((__v8si) __S, 138 (__v8si) __A, 139 (__v8si) __B, 140 (__mmask8) -1); 141} 142 143static __inline__ __m128i __DEFAULT_FN_ATTRS 144_mm_mask_dpbusd_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) 145{ 146 return (__m128i) __builtin_ia32_vpdpbusd128_mask ((__v4si) __S, 147 (__v4si) __A, 148 (__v4si) __B, 149 (__mmask8) __U); 150} 151 152static __inline__ __m128i __DEFAULT_FN_ATTRS 153_mm_maskz_dpbusd_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) 154{ 155 return (__m128i) __builtin_ia32_vpdpbusd128_maskz ((__v4si) __S, 156 (__v4si) __A, 157 (__v4si) __B, 158 (__mmask8) __U); 159} 160 161static __inline__ __m128i __DEFAULT_FN_ATTRS 162_mm_dpbusd_epi32(__m128i __S, __m128i __A, __m128i __B) 163{ 164 return (__m128i) __builtin_ia32_vpdpbusd128_mask ((__v4si) __S, 165 (__v4si) __A, 166 (__v4si) __B, 167 (__mmask8) -1); 168} 169 170static __inline__ __m128i __DEFAULT_FN_ATTRS 171_mm_mask_dpbusds_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) 172{ 173 return (__m128i) __builtin_ia32_vpdpbusds128_mask ((__v4si) __S, 174 (__v4si) __A, 175 (__v4si) __B, 176 (__mmask8) __U); 177} 178 179static __inline__ __m128i __DEFAULT_FN_ATTRS 180_mm_maskz_dpbusds_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) 181{ 182 return (__m128i) __builtin_ia32_vpdpbusds128_maskz ((__v4si) __S, 183 (__v4si) __A, 184 (__v4si) __B, 185 (__mmask8) __U); 186} 187 188static __inline__ __m128i __DEFAULT_FN_ATTRS 189_mm_dpbusds_epi32(__m128i __S, __m128i __A, __m128i __B) 190{ 191 return (__m128i) __builtin_ia32_vpdpbusds128_mask ((__v4si) __S, 192 (__v4si) __A, 193 (__v4si) __B, 194 (__mmask8) -1); 195} 196 197static __inline__ __m128i __DEFAULT_FN_ATTRS 198_mm_mask_dpwssd_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) 199{ 200 return (__m128i) __builtin_ia32_vpdpwssd128_mask ((__v4si) __S, 201 (__v4si) __A, 202 (__v4si) __B, 203 (__mmask8) __U); 204} 205 206static __inline__ __m128i __DEFAULT_FN_ATTRS 207_mm_maskz_dpwssd_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) 208{ 209 return (__m128i) __builtin_ia32_vpdpwssd128_maskz ((__v4si) __S, 210 (__v4si) __A, 211 (__v4si) __B, 212 (__mmask8) __U); 213} 214 215static __inline__ __m128i __DEFAULT_FN_ATTRS 216_mm_dpwssd_epi32(__m128i __S, __m128i __A, __m128i __B) 217{ 218 return (__m128i) __builtin_ia32_vpdpwssd128_mask ((__v4si) __S, 219 (__v4si) __A, 220 (__v4si) __B, 221 (__mmask8) -1); 222} 223 224static __inline__ __m128i __DEFAULT_FN_ATTRS 225_mm_mask_dpwssds_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) 226{ 227 return (__m128i) __builtin_ia32_vpdpwssds128_mask ((__v4si) __S, 228 (__v4si) __A, 229 (__v4si) __B, 230 (__mmask8) __U); 231} 232 233static __inline__ __m128i __DEFAULT_FN_ATTRS 234_mm_maskz_dpwssds_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) 235{ 236 return (__m128i) __builtin_ia32_vpdpwssds128_maskz ((__v4si) __S, 237 (__v4si) __A, 238 (__v4si) __B, 239 (__mmask8) __U); 240} 241 242static __inline__ __m128i __DEFAULT_FN_ATTRS 243_mm_dpwssds_epi32(__m128i __S, __m128i __A, __m128i __B) 244{ 245 return (__m128i) __builtin_ia32_vpdpwssds128_mask ((__v4si) __S, 246 (__v4si) __A, 247 (__v4si) __B, 248 (__mmask8) -1); 249} 250 251 252#undef __DEFAULT_FN_ATTRS 253 254#endif 255