avx10_2_512convertintrin.h (13161B) - Raw
1 /*===--------- avx10_2_512convertintrin.h - AVX10_2_512CONVERT -------------=== 2 * 3 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 * See https://llvm.org/LICENSE.txt for license information. 5 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 * 7 *===-----------------------------------------------------------------------=== 8 */ 9 #ifndef __IMMINTRIN_H 10 #error \ 11 "Never use <avx10_2_512convertintrin.h> directly; include <immintrin.h> instead." 12 #endif // __IMMINTRIN_H 13 14 #ifdef __SSE2__ 15 16 #ifndef __AVX10_2_512CONVERTINTRIN_H 17 #define __AVX10_2_512CONVERTINTRIN_H 18 19 /* Define the default attributes for the functions in this file. */ 20 #define __DEFAULT_FN_ATTRS512 \ 21 __attribute__((__always_inline__, __nodebug__, __target__("avx10.2-512"), \ 22 __min_vector_width__(512))) 23 24 static __inline__ __m512h __DEFAULT_FN_ATTRS512 _mm512_cvtx2ps_ph(__m512 __A, 25 __m512 __B) { 26 return (__m512h)__builtin_ia32_vcvt2ps2phx512_mask( 27 (__v16sf)__A, (__v16sf)__B, (__v32hf)_mm512_setzero_ph(), (__mmask32)(-1), 28 _MM_FROUND_CUR_DIRECTION); 29 } 30 31 static __inline__ __m512h __DEFAULT_FN_ATTRS512 32 _mm512_mask_cvtx2ps_ph(__m512h __W, __mmask32 __U, __m512 __A, __m512 __B) { 33 return (__m512h)__builtin_ia32_vcvt2ps2phx512_mask( 34 (__v16sf)__A, (__v16sf)__B, (__v32hf)__W, (__mmask32)__U, 35 _MM_FROUND_CUR_DIRECTION); 36 } 37 38 static __inline__ __m512h __DEFAULT_FN_ATTRS512 39 _mm512_maskz_cvtx2ps_ph(__mmask32 __U, __m512 __A, __m512 __B) { 40 return (__m512h)__builtin_ia32_vcvt2ps2phx512_mask( 41 (__v16sf)__A, (__v16sf)__B, (__v32hf)_mm512_setzero_ph(), (__mmask32)__U, 42 _MM_FROUND_CUR_DIRECTION); 43 } 44 45 #define _mm512_cvtx_round2ps_ph(A, B, R) \ 46 ((__m512h)__builtin_ia32_vcvt2ps2phx512_mask( \ 47 (__v16sf)(A), (__v16sf)(B), (__v32hf)_mm512_undefined_ph(), \ 48 (__mmask32)(-1), (const int)(R))) 49 50 #define _mm512_mask_cvtx_round2ps_ph(W, U, A, B, R) \ 51 ((__m512h)__builtin_ia32_vcvt2ps2phx512_mask((__v16sf)(A), (__v16sf)(B), \ 52 (__v32hf)(W), (__mmask32)(U), \ 53 (const int)(R))) 54 55 #define _mm512_maskz_cvtx_round2ps_ph(U, A, B, R) \ 56 ((__m512h)__builtin_ia32_vcvt2ps2phx512_mask( \ 57 (__v16sf)(A), (__v16sf)(B), (__v32hf)_mm512_setzero_ph(), \ 58 (__mmask32)(U), (const int)(R))) 59 60 static __inline__ __m256i __DEFAULT_FN_ATTRS512 61 _mm512_cvtbiasph_bf8(__m512i __A, __m512h __B) { 62 return (__m256i)__builtin_ia32_vcvtbiasph2bf8_512_mask( 63 (__v64qi)__A, (__v32hf)__B, (__v32qi)_mm256_undefined_si256(), 64 (__mmask32)-1); 65 } 66 67 static __inline__ __m256i __DEFAULT_FN_ATTRS512 _mm512_mask_cvtbiasph_bf8( 68 __m256i __W, __mmask32 __U, __m512i __A, __m512h __B) { 69 return (__m256i)__builtin_ia32_vcvtbiasph2bf8_512_mask( 70 (__v64qi)__A, (__v32hf)__B, (__v32qi)(__m256i)__W, (__mmask32)__U); 71 } 72 73 static __inline__ __m256i __DEFAULT_FN_ATTRS512 74 _mm512_maskz_cvtbiasph_bf8(__mmask32 __U, __m512i __A, __m512h __B) { 75 return (__m256i)__builtin_ia32_vcvtbiasph2bf8_512_mask( 76 (__v64qi)__A, (__v32hf)__B, (__v32qi)(__m256i)_mm256_setzero_si256(), 77 (__mmask32)__U); 78 } 79 80 static __inline__ __m256i __DEFAULT_FN_ATTRS512 81 _mm512_cvtbiassph_bf8(__m512i __A, __m512h __B) { 82 return (__m256i)__builtin_ia32_vcvtbiasph2bf8s_512_mask( 83 (__v64qi)__A, (__v32hf)__B, (__v32qi)_mm256_undefined_si256(), 84 (__mmask32)-1); 85 } 86 87 static __inline__ __m256i __DEFAULT_FN_ATTRS512 _mm512_mask_cvtbiassph_bf8( 88 __m256i __W, __mmask32 __U, __m512i __A, __m512h __B) { 89 return (__m256i)__builtin_ia32_vcvtbiasph2bf8s_512_mask( 90 (__v64qi)__A, (__v32hf)__B, (__v32qi)(__m256i)__W, (__mmask32)__U); 91 } 92 93 static __inline__ __m256i __DEFAULT_FN_ATTRS512 94 _mm512_maskz_cvtbiassph_bf8(__mmask32 __U, __m512i __A, __m512h __B) { 95 return (__m256i)__builtin_ia32_vcvtbiasph2bf8s_512_mask( 96 (__v64qi)__A, (__v32hf)__B, (__v32qi)(__m256i)_mm256_setzero_si256(), 97 (__mmask32)__U); 98 } 99 100 static __inline__ __m256i __DEFAULT_FN_ATTRS512 101 _mm512_cvtbiasph_hf8(__m512i __A, __m512h __B) { 102 return (__m256i)__builtin_ia32_vcvtbiasph2hf8_512_mask( 103 (__v64qi)__A, (__v32hf)__B, (__v32qi)_mm256_undefined_si256(), 104 (__mmask32)-1); 105 } 106 107 static __inline__ __m256i __DEFAULT_FN_ATTRS512 _mm512_mask_cvtbiasph_hf8( 108 __m256i __W, __mmask32 __U, __m512i __A, __m512h __B) { 109 return (__m256i)__builtin_ia32_vcvtbiasph2hf8_512_mask( 110 (__v64qi)__A, (__v32hf)__B, (__v32qi)(__m256i)__W, (__mmask32)__U); 111 } 112 113 static __inline__ __m256i __DEFAULT_FN_ATTRS512 114 _mm512_maskz_cvtbiasph_hf8(__mmask32 __U, __m512i __A, __m512h __B) { 115 return (__m256i)__builtin_ia32_vcvtbiasph2hf8_512_mask( 116 (__v64qi)__A, (__v32hf)__B, (__v32qi)(__m256i)_mm256_setzero_si256(), 117 (__mmask32)__U); 118 } 119 120 static __inline__ __m256i __DEFAULT_FN_ATTRS512 121 _mm512_cvtbiassph_hf8(__m512i __A, __m512h __B) { 122 return (__m256i)__builtin_ia32_vcvtbiasph2hf8s_512_mask( 123 (__v64qi)__A, (__v32hf)__B, (__v32qi)_mm256_undefined_si256(), 124 (__mmask32)-1); 125 } 126 127 static __inline__ __m256i __DEFAULT_FN_ATTRS512 _mm512_mask_cvtbiassph_hf8( 128 __m256i __W, __mmask32 __U, __m512i __A, __m512h __B) { 129 return (__m256i)__builtin_ia32_vcvtbiasph2hf8s_512_mask( 130 (__v64qi)__A, (__v32hf)__B, (__v32qi)(__m256i)__W, (__mmask32)__U); 131 } 132 133 static __inline__ __m256i __DEFAULT_FN_ATTRS512 134 _mm512_maskz_cvtbiassph_hf8(__mmask32 __U, __m512i __A, __m512h __B) { 135 return (__m256i)__builtin_ia32_vcvtbiasph2hf8s_512_mask( 136 (__v64qi)__A, (__v32hf)__B, (__v32qi)(__m256i)_mm256_setzero_si256(), 137 (__mmask32)__U); 138 } 139 140 static __inline__ __m512i __DEFAULT_FN_ATTRS512 _mm512_cvt2ph_bf8(__m512h __A, 141 __m512h __B) { 142 return (__m512i)__builtin_ia32_vcvt2ph2bf8_512((__v32hf)(__A), 143 (__v32hf)(__B)); 144 } 145 146 static __inline__ __m512i __DEFAULT_FN_ATTRS512 147 _mm512_mask_cvt2ph_bf8(__m512i __W, __mmask64 __U, __m512h __A, __m512h __B) { 148 return (__m512i)__builtin_ia32_selectb_512( 149 (__mmask64)__U, (__v64qi)_mm512_cvt2ph_bf8(__A, __B), (__v64qi)__W); 150 } 151 152 static __inline__ __m512i __DEFAULT_FN_ATTRS512 153 _mm512_maskz_cvt2ph_bf8(__mmask64 __U, __m512h __A, __m512h __B) { 154 return (__m512i)__builtin_ia32_selectb_512( 155 (__mmask64)__U, (__v64qi)_mm512_cvt2ph_bf8(__A, __B), 156 (__v64qi)(__m512i)_mm512_setzero_si512()); 157 } 158 159 static __inline__ __m512i __DEFAULT_FN_ATTRS512 160 _mm512_cvts2ph_bf8(__m512h __A, __m512h __B) { 161 return (__m512i)__builtin_ia32_vcvt2ph2bf8s_512((__v32hf)(__A), 162 (__v32hf)(__B)); 163 } 164 165 static __inline__ __m512i __DEFAULT_FN_ATTRS512 166 _mm512_mask_cvts2ph_bf8(__m512i __W, __mmask64 __U, __m512h __A, __m512h __B) { 167 return (__m512i)__builtin_ia32_selectb_512( 168 (__mmask64)__U, (__v64qi)_mm512_cvts2ph_bf8(__A, __B), (__v64qi)__W); 169 } 170 171 static __inline__ __m512i __DEFAULT_FN_ATTRS512 172 _mm512_maskz_cvts2ph_bf8(__mmask64 __U, __m512h __A, __m512h __B) { 173 return (__m512i)__builtin_ia32_selectb_512( 174 (__mmask64)__U, (__v64qi)_mm512_cvts2ph_bf8(__A, __B), 175 (__v64qi)(__m512i)_mm512_setzero_si512()); 176 } 177 178 static __inline__ __m512i __DEFAULT_FN_ATTRS512 _mm512_cvt2ph_hf8(__m512h __A, 179 __m512h __B) { 180 return (__m512i)__builtin_ia32_vcvt2ph2hf8_512((__v32hf)(__A), 181 (__v32hf)(__B)); 182 } 183 184 static __inline__ __m512i __DEFAULT_FN_ATTRS512 185 _mm512_mask_cvt2ph_hf8(__m512i __W, __mmask64 __U, __m512h __A, __m512h __B) { 186 return (__m512i)__builtin_ia32_selectb_512( 187 (__mmask64)__U, (__v64qi)_mm512_cvt2ph_hf8(__A, __B), (__v64qi)__W); 188 } 189 190 static __inline__ __m512i __DEFAULT_FN_ATTRS512 191 _mm512_maskz_cvt2ph_hf8(__mmask64 __U, __m512h __A, __m512h __B) { 192 return (__m512i)__builtin_ia32_selectb_512( 193 (__mmask64)__U, (__v64qi)_mm512_cvt2ph_hf8(__A, __B), 194 (__v64qi)(__m512i)_mm512_setzero_si512()); 195 } 196 197 static __inline__ __m512i __DEFAULT_FN_ATTRS512 198 _mm512_cvts2ph_hf8(__m512h __A, __m512h __B) { 199 return (__m512i)__builtin_ia32_vcvt2ph2hf8s_512((__v32hf)(__A), 200 (__v32hf)(__B)); 201 } 202 203 static __inline__ __m512i __DEFAULT_FN_ATTRS512 204 _mm512_mask_cvts2ph_hf8(__m512i __W, __mmask64 __U, __m512h __A, __m512h __B) { 205 return (__m512i)__builtin_ia32_selectb_512( 206 (__mmask64)__U, (__v64qi)_mm512_cvts2ph_hf8(__A, __B), (__v64qi)__W); 207 } 208 209 static __inline__ __m512i __DEFAULT_FN_ATTRS512 210 _mm512_maskz_cvts2ph_hf8(__mmask64 __U, __m512h __A, __m512h __B) { 211 return (__m512i)__builtin_ia32_selectb_512( 212 (__mmask64)__U, (__v64qi)_mm512_cvts2ph_hf8(__A, __B), 213 (__v64qi)(__m512i)_mm512_setzero_si512()); 214 } 215 216 static __inline__ __m512h __DEFAULT_FN_ATTRS512 _mm512_cvthf8(__m256i __A) { 217 return (__m512h)__builtin_ia32_vcvthf8_2ph512_mask( 218 (__v32qi)__A, (__v32hf)(__m512h)_mm512_undefined_ph(), (__mmask32)-1); 219 } 220 221 static __inline__ __m512h __DEFAULT_FN_ATTRS512 222 _mm512_mask_cvthf8(__m512h __W, __mmask32 __U, __m256i __A) { 223 return (__m512h)__builtin_ia32_vcvthf8_2ph512_mask( 224 (__v32qi)__A, (__v32hf)(__m512h)__W, (__mmask32)__U); 225 } 226 227 static __inline__ __m512h __DEFAULT_FN_ATTRS512 228 _mm512_maskz_cvthf8(__mmask32 __U, __m256i __A) { 229 return (__m512h)__builtin_ia32_vcvthf8_2ph512_mask( 230 (__v32qi)__A, (__v32hf)(__m512h)_mm512_setzero_ph(), (__mmask32)__U); 231 } 232 233 static __inline__ __m256i __DEFAULT_FN_ATTRS512 _mm512_cvtph_bf8(__m512h __A) { 234 return (__m256i)__builtin_ia32_vcvtph2bf8_512_mask( 235 (__v32hf)__A, (__v32qi)(__m256i)_mm256_undefined_si256(), (__mmask32)-1); 236 } 237 238 static __inline__ __m256i __DEFAULT_FN_ATTRS512 239 _mm512_mask_cvtph_bf8(__m256i __W, __mmask32 __U, __m512h __A) { 240 return (__m256i)__builtin_ia32_vcvtph2bf8_512_mask( 241 (__v32hf)__A, (__v32qi)(__m256i)__W, (__mmask32)__U); 242 } 243 244 static __inline__ __m256i __DEFAULT_FN_ATTRS512 245 _mm512_maskz_cvtph_bf8(__mmask32 __U, __m512h __A) { 246 return (__m256i)__builtin_ia32_vcvtph2bf8_512_mask( 247 (__v32hf)__A, (__v32qi)(__m256i)_mm256_setzero_si256(), (__mmask32)__U); 248 } 249 250 static __inline__ __m256i __DEFAULT_FN_ATTRS512 _mm512_cvtsph_bf8(__m512h __A) { 251 return (__m256i)__builtin_ia32_vcvtph2bf8s_512_mask( 252 (__v32hf)__A, (__v32qi)(__m256i)_mm256_undefined_si256(), (__mmask32)-1); 253 } 254 255 static __inline__ __m256i __DEFAULT_FN_ATTRS512 256 _mm512_mask_cvtsph_bf8(__m256i __W, __mmask32 __U, __m512h __A) { 257 return (__m256i)__builtin_ia32_vcvtph2bf8s_512_mask( 258 (__v32hf)__A, (__v32qi)(__m256i)__W, (__mmask32)__U); 259 } 260 261 static __inline__ __m256i __DEFAULT_FN_ATTRS512 262 _mm512_maskz_cvtsph_bf8(__mmask32 __U, __m512h __A) { 263 return (__m256i)__builtin_ia32_vcvtph2bf8s_512_mask( 264 (__v32hf)__A, (__v32qi)(__m256i)_mm256_setzero_si256(), (__mmask32)__U); 265 } 266 267 static __inline__ __m256i __DEFAULT_FN_ATTRS512 _mm512_cvtph_hf8(__m512h __A) { 268 return (__m256i)__builtin_ia32_vcvtph2hf8_512_mask( 269 (__v32hf)__A, (__v32qi)(__m256i)_mm256_undefined_si256(), (__mmask32)-1); 270 } 271 272 static __inline__ __m256i __DEFAULT_FN_ATTRS512 273 _mm512_mask_cvtph_hf8(__m256i __W, __mmask32 __U, __m512h __A) { 274 return (__m256i)__builtin_ia32_vcvtph2hf8_512_mask( 275 (__v32hf)__A, (__v32qi)(__m256i)__W, (__mmask32)__U); 276 } 277 278 static __inline__ __m256i __DEFAULT_FN_ATTRS512 279 _mm512_maskz_cvtph_hf8(__mmask32 __U, __m512h __A) { 280 return (__m256i)__builtin_ia32_vcvtph2hf8_512_mask( 281 (__v32hf)__A, (__v32qi)(__m256i)_mm256_setzero_si256(), (__mmask32)__U); 282 } 283 284 static __inline__ __m256i __DEFAULT_FN_ATTRS512 _mm512_cvtsph_hf8(__m512h __A) { 285 return (__m256i)__builtin_ia32_vcvtph2hf8s_512_mask( 286 (__v32hf)__A, (__v32qi)(__m256i)_mm256_undefined_si256(), (__mmask32)-1); 287 } 288 289 static __inline__ __m256i __DEFAULT_FN_ATTRS512 290 _mm512_mask_cvtsph_hf8(__m256i __W, __mmask32 __U, __m512h __A) { 291 return (__m256i)__builtin_ia32_vcvtph2hf8s_512_mask( 292 (__v32hf)__A, (__v32qi)(__m256i)__W, (__mmask32)__U); 293 } 294 295 static __inline__ __m256i __DEFAULT_FN_ATTRS512 296 _mm512_maskz_cvtsph_hf8(__mmask32 __U, __m512h __A) { 297 return (__m256i)__builtin_ia32_vcvtph2hf8s_512_mask( 298 (__v32hf)__A, (__v32qi)(__m256i)_mm256_setzero_si256(), (__mmask32)__U); 299 } 300 301 static __inline __m512h __DEFAULT_FN_ATTRS512 _mm512_cvtbf8_ph(__m256i __A) { 302 return _mm512_castsi512_ph(_mm512_slli_epi16(_mm512_cvtepi8_epi16(__A), 8)); 303 } 304 305 static __inline __m512h __DEFAULT_FN_ATTRS512 306 _mm512_mask_cvtbf8_ph(__m512h __S, __mmask32 __U, __m256i __A) { 307 return _mm512_castsi512_ph( 308 _mm512_mask_slli_epi16((__m512i)__S, __U, _mm512_cvtepi8_epi16(__A), 8)); 309 } 310 311 static __inline __m512h __DEFAULT_FN_ATTRS512 312 _mm512_maskz_cvtbf8_ph(__mmask32 __U, __m256i __A) { 313 return _mm512_castsi512_ph( 314 _mm512_slli_epi16(_mm512_maskz_cvtepi8_epi16(__U, __A), 8)); 315 } 316 317 #undef __DEFAULT_FN_ATTRS512 318 319 #endif // __AVX10_2_512CONVERTINTRIN_H 320 #endif // __SSE2__