brintos

brintos / llvm-project-archived public Read only

0
0
Text · 13.5 KiB · 3688f4c Raw
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