308 lines · c
1/*===----- avx10_2_512satcvtdsintrin.h - AVX10_2_512SATCVTDS intrinsics ----===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-exception6 *7 *===-----------------------------------------------------------------------===8 */9#ifndef __IMMINTRIN_H10#error \11 "Never use <avx10_2_512satcvtdsintrin.h> directly; include <immintrin.h> instead."12#endif13 14#ifndef __AVX10_2_512SATCVTDSINTRIN_H15#define __AVX10_2_512SATCVTDSINTRIN_H16 17/* Define the default attributes for the functions in this file. */18#define __DEFAULT_FN_ATTRS \19 __attribute__((__always_inline__, __nodebug__, __target__("avx10.2"), \20 __min_vector_width__(512)))21 22// 512 bit : Double -> Int23static __inline__ __m256i __DEFAULT_FN_ATTRS24_mm512_cvtts_pd_epi32(__m512d __A) {25 return ((__m256i)__builtin_ia32_vcvttpd2dqs512_round_mask(26 (__v8df)__A, (__v8si)_mm256_undefined_si256(), (__mmask8)-1,27 _MM_FROUND_CUR_DIRECTION));28}29 30static __inline__ __m256i __DEFAULT_FN_ATTRS31_mm512_mask_cvtts_pd_epi32(__m256i __W, __mmask8 __U, __m512d __A) {32 return ((__m256i)__builtin_ia32_vcvttpd2dqs512_round_mask(33 (__v8df)__A, (__v8si)__W, __U, _MM_FROUND_CUR_DIRECTION));34}35 36static __inline__ __m256i __DEFAULT_FN_ATTRS37_mm512_maskz_cvtts_pd_epi32(__mmask8 __U, __m512d __A) {38 return ((__m256i)__builtin_ia32_vcvttpd2dqs512_round_mask(39 (__v8df)__A, (__v8si)_mm256_setzero_si256(), __U,40 _MM_FROUND_CUR_DIRECTION));41}42 43#define _mm512_cvtts_roundpd_epi32(__A, __R) \44 ((__m256i)__builtin_ia32_vcvttpd2dqs512_round_mask( \45 (__v8df)(__m512d)(__A), (__v8si)_mm256_undefined_si256(), \46 (__mmask8) - 1, (const int)(__R)))47 48#define _mm512_mask_cvtts_roundpd_epi32(__W, __U, __A, __R) \49 ((__m256i)__builtin_ia32_vcvttpd2dqs512_round_mask( \50 (__v8df)(__m512d)(__A), (__v8si)(__m256i)(__W), (__mmask8)(__U), \51 (const int)(__R)))52 53#define _mm512_maskz_cvtts_roundpd_epi32(__U, __A, __R) \54 ((__m256i)__builtin_ia32_vcvttpd2dqs512_round_mask( \55 (__v8df)(__m512d)(__A), (__v8si)_mm256_setzero_si256(), (__mmask8)(__U), \56 (const int)(__R)))57 58// 512 bit : Double -> uInt59static __inline__ __m256i __DEFAULT_FN_ATTRS60_mm512_cvtts_pd_epu32(__m512d __A) {61 return ((__m256i)__builtin_ia32_vcvttpd2udqs512_round_mask(62 (__v8df)__A, (__v8si)_mm256_undefined_si256(), (__mmask8)-1,63 _MM_FROUND_CUR_DIRECTION));64}65 66static __inline__ __m256i __DEFAULT_FN_ATTRS67_mm512_mask_cvtts_pd_epu32(__m256i __W, __mmask8 __U, __m512d __A) {68 return ((__m256i)__builtin_ia32_vcvttpd2udqs512_round_mask(69 (__v8df)__A, (__v8si)__W, __U, _MM_FROUND_CUR_DIRECTION));70}71 72static __inline__ __m256i __DEFAULT_FN_ATTRS73_mm512_maskz_cvtts_pd_epu32(__mmask8 __U, __m512d __A) {74 return ((__m256i)__builtin_ia32_vcvttpd2udqs512_round_mask(75 (__v8df)__A, (__v8si)_mm256_setzero_si256(), __U,76 _MM_FROUND_CUR_DIRECTION));77}78 79#define _mm512_cvtts_roundpd_epu32(__A, __R) \80 ((__m256i)__builtin_ia32_vcvttpd2udqs512_round_mask( \81 (__v8df)(__m512d)(__A), (__v8si)_mm256_undefined_si256(), \82 (__mmask8) - 1, (const int)(__R)))83 84#define _mm512_mask_cvtts_roundpd_epu32(__W, __U, __A, __R) \85 ((__m256i)__builtin_ia32_vcvttpd2udqs512_round_mask( \86 (__v8df)(__m512d)(__A), (__v8si)(__m256i)(__W), (__mmask8)(__U), \87 (const int)(__R)))88 89#define _mm512_maskz_cvtts_roundpd_epu32(__U, __A, __R) \90 ((__m256i)__builtin_ia32_vcvttpd2udqs512_round_mask( \91 (__v8df)(__m512d)(__A), (__v8si)_mm256_setzero_si256(), (__mmask8)(__U), \92 (const int)(__R)))93 94// 512 bit : Double -> Long95 96static __inline__ __m512i __DEFAULT_FN_ATTRS97_mm512_cvtts_pd_epi64(__m512d __A) {98 return ((__m512i)__builtin_ia32_vcvttpd2qqs512_round_mask(99 (__v8df)__A, (__v8di)_mm512_undefined_epi32(), (__mmask8)-1,100 _MM_FROUND_CUR_DIRECTION));101}102static __inline__ __m512i __DEFAULT_FN_ATTRS103_mm512_mask_cvtts_pd_epi64(__m512i __W, __mmask8 __U, __m512d __A) {104 return ((__m512i)__builtin_ia32_vcvttpd2qqs512_round_mask(105 (__v8df)__A, (__v8di)__W, __U, _MM_FROUND_CUR_DIRECTION));106}107static __inline__ __m512i __DEFAULT_FN_ATTRS108_mm512_maskz_cvtts_pd_epi64(__mmask8 __U, __m512d __A) {109 return ((__m512i)__builtin_ia32_vcvttpd2qqs512_round_mask(110 (__v8df)__A, (__v8di)_mm512_setzero_si512(), __U,111 _MM_FROUND_CUR_DIRECTION));112}113 114#define _mm512_cvtts_roundpd_epi64(__A, __R) \115 ((__m512i)__builtin_ia32_vcvttpd2qqs512_round_mask( \116 (__v8df)(__m512d)(__A), (__v8di)_mm512_undefined_epi32(), \117 (__mmask8) - 1, (const int)(__R)))118 119#define _mm512_mask_cvtts_roundpd_epi64(__W, __U, __A, __R) \120 ((__m512i)__builtin_ia32_vcvttpd2qqs512_round_mask( \121 (__v8df)(__m512d)(__A), (__v8di)(__m512i)(__W), (__mmask8)(__U), \122 (const int)(__R)))123 124#define _mm512_maskz_cvtts_roundpd_epi64(__U, __A, __R) \125 ((__m512i)__builtin_ia32_vcvttpd2qqs512_round_mask( \126 (__v8df)(__m512d)(__A), (__v8di)_mm512_setzero_si512(), (__mmask8)(__U), \127 (const int)(__R)))128 129// 512 bit : Double -> ULong130 131static __inline__ __m512i __DEFAULT_FN_ATTRS132_mm512_cvtts_pd_epu64(__m512d __A) {133 return ((__m512i)__builtin_ia32_vcvttpd2uqqs512_round_mask(134 (__v8df)__A, (__v8di)_mm512_undefined_epi32(), (__mmask8)-1,135 _MM_FROUND_CUR_DIRECTION));136}137 138static __inline__ __m512i __DEFAULT_FN_ATTRS139_mm512_mask_cvtts_pd_epu64(__m512i __W, __mmask8 __U, __m512d __A) {140 return ((__m512i)__builtin_ia32_vcvttpd2uqqs512_round_mask(141 (__v8df)__A, (__v8di)__W, __U, _MM_FROUND_CUR_DIRECTION));142}143 144static __inline__ __m512i __DEFAULT_FN_ATTRS145_mm512_maskz_cvtts_pd_epu64(__mmask8 __U, __m512d __A) {146 return ((__m512i)__builtin_ia32_vcvttpd2uqqs512_round_mask(147 (__v8df)__A, (__v8di)_mm512_setzero_si512(), __U,148 _MM_FROUND_CUR_DIRECTION));149}150 151#define _mm512_cvtts_roundpd_epu64(__A, __R) \152 ((__m512i)__builtin_ia32_vcvttpd2uqqs512_round_mask( \153 (__v8df)(__m512d)(__A), (__v8di)_mm512_undefined_epi32(), \154 (__mmask8) - 1, (const int)(__R)))155 156#define _mm512_mask_cvtts_roundpd_epu64(__W, __U, __A, __R) \157 ((__m512i)__builtin_ia32_vcvttpd2uqqs512_round_mask( \158 (__v8df)(__m512d)(__A), (__v8di)(__m512i)(__W), (__mmask8)(__U), \159 (const int)(__R)))160 161#define _mm512_maskz_cvtts_roundpd_epu64(__U, __A, __R) \162 ((__m512i)__builtin_ia32_vcvttpd2uqqs512_round_mask( \163 (__v8df)(__m512d)(__A), (__v8di)_mm512_setzero_si512(), (__mmask8)(__U), \164 (const int)(__R)))165 166// 512 bit: Float -> int167static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_cvtts_ps_epi32(__m512 __A) {168 return ((__m512i)__builtin_ia32_vcvttps2dqs512_round_mask(169 (__v16sf)(__A), (__v16si)_mm512_undefined_epi32(), (__mmask16)-1,170 _MM_FROUND_CUR_DIRECTION));171}172 173static __inline__ __m512i __DEFAULT_FN_ATTRS174_mm512_mask_cvtts_ps_epi32(__m512i __W, __mmask16 __U, __m512 __A) {175 return ((__m512i)__builtin_ia32_vcvttps2dqs512_round_mask(176 (__v16sf)(__A), (__v16si)(__W), __U, _MM_FROUND_CUR_DIRECTION));177}178 179static __inline__ __m512i __DEFAULT_FN_ATTRS180_mm512_maskz_cvtts_ps_epi32(__mmask16 __U, __m512 __A) {181 return ((__m512i)__builtin_ia32_vcvttps2dqs512_round_mask(182 (__v16sf)(__A), (__v16si)_mm512_setzero_si512(), __U,183 _MM_FROUND_CUR_DIRECTION));184}185 186#define _mm512_cvtts_roundps_epi32(__A, __R) \187 ((__m512i)__builtin_ia32_vcvttps2dqs512_round_mask( \188 (__v16sf)(__m512)(__A), (__v16si)_mm512_undefined_epi32(), \189 (__mmask16) - 1, (const int)(__R)))190 191#define _mm512_mask_cvtts_roundps_epi32(__W, __U, __A, __R) \192 ((__m512i)__builtin_ia32_vcvttps2dqs512_round_mask( \193 (__v16sf)(__m512)(__A), (__v16si)(__m512i)(__W), (__mmask16)(__U), \194 (const int)(__R)))195 196#define _mm512_maskz_cvtts_roundps_epi32(__U, __A, __R) \197 ((__m512i)__builtin_ia32_vcvttps2dqs512_round_mask( \198 (__v16sf)(__m512)(__A), (__v16si)_mm512_setzero_si512(), \199 (__mmask16)(__U), (const int)(__R)))200 201// 512 bit: Float -> uint202static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_cvtts_ps_epu32(__m512 __A) {203 return ((__m512i)__builtin_ia32_vcvttps2udqs512_round_mask(204 (__v16sf)(__A), (__v16si)_mm512_undefined_epi32(), (__mmask16)-1,205 _MM_FROUND_CUR_DIRECTION));206}207 208static __inline__ __m512i __DEFAULT_FN_ATTRS209_mm512_mask_cvtts_ps_epu32(__m512i __W, __mmask16 __U, __m512 __A) {210 return ((__m512i)__builtin_ia32_vcvttps2udqs512_round_mask(211 (__v16sf)(__A), (__v16si)(__W), __U, _MM_FROUND_CUR_DIRECTION));212}213 214static __inline__ __m512i __DEFAULT_FN_ATTRS215_mm512_maskz_cvtts_ps_epu32(__mmask16 __U, __m512 __A) {216 return ((__m512i)__builtin_ia32_vcvttps2udqs512_round_mask(217 (__v16sf)(__A), (__v16si)_mm512_setzero_si512(), __U,218 _MM_FROUND_CUR_DIRECTION));219}220 221#define _mm512_cvtts_roundps_epu32(__A, __R) \222 ((__m512i)__builtin_ia32_vcvttps2udqs512_round_mask( \223 (__v16sf)(__m512)(__A), (__v16si)_mm512_undefined_epi32(), \224 (__mmask16) - 1, (const int)(__R)))225 226#define _mm512_mask_cvtts_roundps_epu32(__W, __U, __A, __R) \227 ((__m512i)__builtin_ia32_vcvttps2udqs512_round_mask( \228 (__v16sf)(__m512)(__A), (__v16si)(__m512i)(__W), (__mmask16)(__U), \229 (const int)(__R)))230 231#define _mm512_maskz_cvtts_roundps_epu32(__U, __A, __R) \232 ((__m512i)__builtin_ia32_vcvttps2udqs512_round_mask( \233 (__v16sf)(__m512)(__A), (__v16si)_mm512_setzero_si512(), \234 (__mmask16)(__U), (const int)(__R)))235 236// 512 bit : float -> long237static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_cvtts_ps_epi64(__m256 __A) {238 return ((__m512i)__builtin_ia32_vcvttps2qqs512_round_mask(239 (__v8sf)__A, (__v8di)_mm512_undefined_epi32(), (__mmask8)-1,240 _MM_FROUND_CUR_DIRECTION));241}242 243static __inline__ __m512i __DEFAULT_FN_ATTRS244_mm512_mask_cvtts_ps_epi64(__m512i __W, __mmask8 __U, __m256 __A) {245 return ((__m512i)__builtin_ia32_vcvttps2qqs512_round_mask(246 (__v8sf)__A, (__v8di)__W, __U, _MM_FROUND_CUR_DIRECTION));247}248 249static __inline__ __m512i __DEFAULT_FN_ATTRS250_mm512_maskz_cvtts_ps_epi64(__mmask8 __U, __m256 __A) {251 return ((__m512i)__builtin_ia32_vcvttps2qqs512_round_mask(252 (__v8sf)__A, (__v8di)_mm512_setzero_si512(), __U,253 _MM_FROUND_CUR_DIRECTION));254}255 256#define _mm512_cvtts_roundps_epi64(__A, __R) \257 ((__m512i)__builtin_ia32_vcvttps2qqs512_round_mask( \258 (__v8sf)(__m256)(__A), (__v8di)_mm512_undefined_epi32(), (__mmask8) - 1, \259 (const int)(__R)))260 261#define _mm512_mask_cvtts_roundps_epi64(__W, __U, __A, __R) \262 ((__m512i)__builtin_ia32_vcvttps2qqs512_round_mask( \263 (__v8sf)(__m256)(__A), (__v8di)(__m512i)(__W), (__mmask8)(__U), \264 (const int)(__R)))265 266#define _mm512_maskz_cvtts_roundps_epi64(__U, __A, __R) \267 ((__m512i)__builtin_ia32_vcvttps2qqs512_round_mask( \268 (__v8sf)(__m256)(__A), (__v8di)_mm512_setzero_si512(), (__mmask8)(__U), \269 (const int)(__R)))270 271// 512 bit : float -> ulong272static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_cvtts_ps_epu64(__m256 __A) {273 return ((__m512i)__builtin_ia32_vcvttps2uqqs512_round_mask(274 (__v8sf)__A, (__v8di)_mm512_undefined_epi32(), (__mmask8)-1,275 _MM_FROUND_CUR_DIRECTION));276}277 278static __inline__ __m512i __DEFAULT_FN_ATTRS279_mm512_mask_cvtts_ps_epu64(__m512i __W, __mmask8 __U, __m256 __A) {280 return ((__m512i)__builtin_ia32_vcvttps2uqqs512_round_mask(281 (__v8sf)__A, (__v8di)__W, __U, _MM_FROUND_CUR_DIRECTION));282}283 284static __inline__ __m512i __DEFAULT_FN_ATTRS285_mm512_maskz_cvtts_ps_epu64(__mmask8 __U, __m256 __A) {286 return ((__m512i)__builtin_ia32_vcvttps2uqqs512_round_mask(287 (__v8sf)__A, (__v8di)_mm512_setzero_si512(), __U,288 _MM_FROUND_CUR_DIRECTION));289}290 291#define _mm512_cvtts_roundps_epu64(__A, __R) \292 ((__m512i)__builtin_ia32_vcvttps2uqqs512_round_mask( \293 (__v8sf)(__m256)(__A), (__v8di)_mm512_undefined_epi32(), (__mmask8) - 1, \294 (const int)(__R)))295 296#define _mm512_mask_cvtts_roundps_epu64(__W, __U, __A, __R) \297 ((__m512i)__builtin_ia32_vcvttps2uqqs512_round_mask( \298 (__v8sf)(__m256)(__A), (__v8di)(__m512i)(__W), (__mmask8)(__U), \299 (const int)(__R)))300 301#define _mm512_maskz_cvtts_roundps_epu64(__U, __A, __R) \302 ((__m512i)__builtin_ia32_vcvttps2uqqs512_round_mask( \303 (__v8sf)(__m256)(__A), (__v8di)_mm512_setzero_si512(), (__mmask8)(__U), \304 (const int)(__R)))305 306#undef __DEFAULT_FN_ATTRS307#endif // __AVX10_2_512SATCVTDSINTRIN_H308