Go to the documentation of this file. 24 #error "Never use <avx512erintrin.h> directly; include <immintrin.h> instead." 27 #ifndef __AVX512ERINTRIN_H 28 #define __AVX512ERINTRIN_H 31 #define _mm512_exp2a23_round_pd(A, R) __extension__ ({ \ 32 (__m512d)__builtin_ia32_exp2pd_mask((__v8df)(__m512d)(A), \ 33 (__v8df)_mm512_setzero_pd(), \ 34 (__mmask8)-1, (int)(R)); }) 36 #define _mm512_mask_exp2a23_round_pd(S, M, A, R) __extension__ ({ \ 37 (__m512d)__builtin_ia32_exp2pd_mask((__v8df)(__m512d)(A), \ 38 (__v8df)(__m512d)(S), (__mmask8)(M), \ 41 #define _mm512_maskz_exp2a23_round_pd(M, A, R) __extension__ ({ \ 42 (__m512d)__builtin_ia32_exp2pd_mask((__v8df)(__m512d)(A), \ 43 (__v8df)_mm512_setzero_pd(), \ 44 (__mmask8)(M), (int)(R)); }) 46 #define _mm512_exp2a23_pd(A) \ 47 _mm512_exp2a23_round_pd((A), _MM_FROUND_CUR_DIRECTION) 49 #define _mm512_mask_exp2a23_pd(S, M, A) \ 50 _mm512_mask_exp2a23_round_pd((S), (M), (A), _MM_FROUND_CUR_DIRECTION) 52 #define _mm512_maskz_exp2a23_pd(M, A) \ 53 _mm512_maskz_exp2a23_round_pd((M), (A), _MM_FROUND_CUR_DIRECTION) 55 #define _mm512_exp2a23_round_ps(A, R) __extension__ ({ \ 56 (__m512)__builtin_ia32_exp2ps_mask((__v16sf)(__m512)(A), \ 57 (__v16sf)_mm512_setzero_ps(), \ 58 (__mmask16)-1, (int)(R)); }) 60 #define _mm512_mask_exp2a23_round_ps(S, M, A, R) __extension__ ({ \ 61 (__m512)__builtin_ia32_exp2ps_mask((__v16sf)(__m512)(A), \ 62 (__v16sf)(__m512)(S), (__mmask16)(M), \ 65 #define _mm512_maskz_exp2a23_round_ps(M, A, R) __extension__ ({ \ 66 (__m512)__builtin_ia32_exp2ps_mask((__v16sf)(__m512)(A), \ 67 (__v16sf)_mm512_setzero_ps(), \ 68 (__mmask16)(M), (int)(R)); }) 70 #define _mm512_exp2a23_ps(A) \ 71 _mm512_exp2a23_round_ps((A), _MM_FROUND_CUR_DIRECTION) 73 #define _mm512_mask_exp2a23_ps(S, M, A) \ 74 _mm512_mask_exp2a23_round_ps((S), (M), (A), _MM_FROUND_CUR_DIRECTION) 76 #define _mm512_maskz_exp2a23_ps(M, A) \ 77 _mm512_maskz_exp2a23_round_ps((M), (A), _MM_FROUND_CUR_DIRECTION) 80 #define _mm512_rsqrt28_round_pd(A, R) __extension__ ({ \ 81 (__m512d)__builtin_ia32_rsqrt28pd_mask((__v8df)(__m512d)(A), \ 82 (__v8df)_mm512_setzero_pd(), \ 83 (__mmask8)-1, (int)(R)); }) 85 #define _mm512_mask_rsqrt28_round_pd(S, M, A, R) __extension__ ({ \ 86 (__m512d)__builtin_ia32_rsqrt28pd_mask((__v8df)(__m512d)(A), \ 87 (__v8df)(__m512d)(S), (__mmask8)(M), \ 90 #define _mm512_maskz_rsqrt28_round_pd(M, A, R) __extension__ ({ \ 91 (__m512d)__builtin_ia32_rsqrt28pd_mask((__v8df)(__m512d)(A), \ 92 (__v8df)_mm512_setzero_pd(), \ 93 (__mmask8)(M), (int)(R)); }) 95 #define _mm512_rsqrt28_pd(A) \ 96 _mm512_rsqrt28_round_pd((A), _MM_FROUND_CUR_DIRECTION) 98 #define _mm512_mask_rsqrt28_pd(S, M, A) \ 99 _mm512_mask_rsqrt28_round_pd((S), (M), (A), _MM_FROUND_CUR_DIRECTION) 101 #define _mm512_maskz_rsqrt28_pd(M, A) \ 102 _mm512_maskz_rsqrt28_round_pd((M), (A), _MM_FROUND_CUR_DIRECTION) 104 #define _mm512_rsqrt28_round_ps(A, R) __extension__ ({ \ 105 (__m512)__builtin_ia32_rsqrt28ps_mask((__v16sf)(__m512)(A), \ 106 (__v16sf)_mm512_setzero_ps(), \ 107 (__mmask16)-1, (int)(R)); }) 109 #define _mm512_mask_rsqrt28_round_ps(S, M, A, R) __extension__ ({ \ 110 (__m512)__builtin_ia32_rsqrt28ps_mask((__v16sf)(__m512)(A), \ 111 (__v16sf)(__m512)(S), (__mmask16)(M), \ 114 #define _mm512_maskz_rsqrt28_round_ps(M, A, R) __extension__ ({ \ 115 (__m512)__builtin_ia32_rsqrt28ps_mask((__v16sf)(__m512)(A), \ 116 (__v16sf)_mm512_setzero_ps(), \ 117 (__mmask16)(M), (int)(R)); }) 119 #define _mm512_rsqrt28_ps(A) \ 120 _mm512_rsqrt28_round_ps((A), _MM_FROUND_CUR_DIRECTION) 122 #define _mm512_mask_rsqrt28_ps(S, M, A) \ 123 _mm512_mask_rsqrt28_round_ps((S), (M), A, _MM_FROUND_CUR_DIRECTION) 125 #define _mm512_maskz_rsqrt28_ps(M, A) \ 126 _mm512_maskz_rsqrt28_round_ps((M), (A), _MM_FROUND_CUR_DIRECTION) 128 #define _mm_rsqrt28_round_ss(A, B, R) __extension__ ({ \ 129 (__m128)__builtin_ia32_rsqrt28ss_round_mask((__v4sf)(__m128)(A), \ 130 (__v4sf)(__m128)(B), \ 131 (__v4sf)_mm_setzero_ps(), \ 132 (__mmask8)-1, (int)(R)); }) 134 #define _mm_mask_rsqrt28_round_ss(S, M, A, B, R) __extension__ ({ \ 135 (__m128)__builtin_ia32_rsqrt28ss_round_mask((__v4sf)(__m128)(A), \ 136 (__v4sf)(__m128)(B), \ 137 (__v4sf)(__m128)(S), \ 138 (__mmask8)(M), (int)(R)); }) 140 #define _mm_maskz_rsqrt28_round_ss(M, A, B, R) __extension__ ({ \ 141 (__m128)__builtin_ia32_rsqrt28ss_round_mask((__v4sf)(__m128)(A), \ 142 (__v4sf)(__m128)(B), \ 143 (__v4sf)_mm_setzero_ps(), \ 144 (__mmask8)(M), (int)(R)); }) 146 #define _mm_rsqrt28_ss(A, B) \ 147 _mm_rsqrt28_round_ss((A), (B), _MM_FROUND_CUR_DIRECTION) 149 #define _mm_mask_rsqrt28_ss(S, M, A, B) \ 150 _mm_mask_rsqrt28_round_ss((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION) 152 #define _mm_maskz_rsqrt28_ss(M, A, B) \ 153 _mm_maskz_rsqrt28_round_ss((M), (A), (B), _MM_FROUND_CUR_DIRECTION) 155 #define _mm_rsqrt28_round_sd(A, B, R) __extension__ ({ \ 156 (__m128d)__builtin_ia32_rsqrt28sd_round_mask((__v2df)(__m128d)(A), \ 157 (__v2df)(__m128d)(B), \ 158 (__v2df)_mm_setzero_pd(), \ 159 (__mmask8)-1, (int)(R)); }) 161 #define _mm_mask_rsqrt28_round_sd(S, M, A, B, R) __extension__ ({ \ 162 (__m128d)__builtin_ia32_rsqrt28sd_round_mask((__v2df)(__m128d)(A), \ 163 (__v2df)(__m128d)(B), \ 164 (__v2df)(__m128d)(S), \ 165 (__mmask8)(M), (int)(R)); }) 167 #define _mm_maskz_rsqrt28_round_sd(M, A, B, R) __extension__ ({ \ 168 (__m128d)__builtin_ia32_rsqrt28sd_round_mask((__v2df)(__m128d)(A), \ 169 (__v2df)(__m128d)(B), \ 170 (__v2df)_mm_setzero_pd(), \ 171 (__mmask8)(M), (int)(R)); }) 173 #define _mm_rsqrt28_sd(A, B) \ 174 _mm_rsqrt28_round_sd((A), (B), _MM_FROUND_CUR_DIRECTION) 176 #define _mm_mask_rsqrt28_sd(S, M, A, B) \ 177 _mm_mask_rsqrt28_round_sd((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION) 179 #define _mm_maskz_rsqrt28_sd(M, A, B) \ 180 _mm_maskz_rsqrt28_round_sd((M), (A), (B), _MM_FROUND_CUR_DIRECTION) 183 #define _mm512_rcp28_round_pd(A, R) __extension__ ({ \ 184 (__m512d)__builtin_ia32_rcp28pd_mask((__v8df)(__m512d)(A), \ 185 (__v8df)_mm512_setzero_pd(), \ 186 (__mmask8)-1, (int)(R)); }) 188 #define _mm512_mask_rcp28_round_pd(S, M, A, R) __extension__ ({ \ 189 (__m512d)__builtin_ia32_rcp28pd_mask((__v8df)(__m512d)(A), \ 190 (__v8df)(__m512d)(S), (__mmask8)(M), \ 193 #define _mm512_maskz_rcp28_round_pd(M, A, R) __extension__ ({ \ 194 (__m512d)__builtin_ia32_rcp28pd_mask((__v8df)(__m512d)(A), \ 195 (__v8df)_mm512_setzero_pd(), \ 196 (__mmask8)(M), (int)(R)); }) 198 #define _mm512_rcp28_pd(A) \ 199 _mm512_rcp28_round_pd((A), _MM_FROUND_CUR_DIRECTION) 201 #define _mm512_mask_rcp28_pd(S, M, A) \ 202 _mm512_mask_rcp28_round_pd((S), (M), (A), _MM_FROUND_CUR_DIRECTION) 204 #define _mm512_maskz_rcp28_pd(M, A) \ 205 _mm512_maskz_rcp28_round_pd((M), (A), _MM_FROUND_CUR_DIRECTION) 207 #define _mm512_rcp28_round_ps(A, R) __extension__ ({ \ 208 (__m512)__builtin_ia32_rcp28ps_mask((__v16sf)(__m512)(A), \ 209 (__v16sf)_mm512_setzero_ps(), \ 210 (__mmask16)-1, (int)(R)); }) 212 #define _mm512_mask_rcp28_round_ps(S, M, A, R) __extension__ ({ \ 213 (__m512)__builtin_ia32_rcp28ps_mask((__v16sf)(__m512)(A), \ 214 (__v16sf)(__m512)(S), (__mmask16)(M), \ 217 #define _mm512_maskz_rcp28_round_ps(M, A, R) __extension__ ({ \ 218 (__m512)__builtin_ia32_rcp28ps_mask((__v16sf)(__m512)(A), \ 219 (__v16sf)_mm512_setzero_ps(), \ 220 (__mmask16)(M), (int)(R)); }) 222 #define _mm512_rcp28_ps(A) \ 223 _mm512_rcp28_round_ps((A), _MM_FROUND_CUR_DIRECTION) 225 #define _mm512_mask_rcp28_ps(S, M, A) \ 226 _mm512_mask_rcp28_round_ps((S), (M), (A), _MM_FROUND_CUR_DIRECTION) 228 #define _mm512_maskz_rcp28_ps(M, A) \ 229 _mm512_maskz_rcp28_round_ps((M), (A), _MM_FROUND_CUR_DIRECTION) 231 #define _mm_rcp28_round_ss(A, B, R) __extension__ ({ \ 232 (__m128)__builtin_ia32_rcp28ss_round_mask((__v4sf)(__m128)(A), \ 233 (__v4sf)(__m128)(B), \ 234 (__v4sf)_mm_setzero_ps(), \ 235 (__mmask8)-1, (int)(R)); }) 237 #define _mm_mask_rcp28_round_ss(S, M, A, B, R) __extension__ ({ \ 238 (__m128)__builtin_ia32_rcp28ss_round_mask((__v4sf)(__m128)(A), \ 239 (__v4sf)(__m128)(B), \ 240 (__v4sf)(__m128)(S), \ 241 (__mmask8)(M), (int)(R)); }) 243 #define _mm_maskz_rcp28_round_ss(M, A, B, R) __extension__ ({ \ 244 (__m128)__builtin_ia32_rcp28ss_round_mask((__v4sf)(__m128)(A), \ 245 (__v4sf)(__m128)(B), \ 246 (__v4sf)_mm_setzero_ps(), \ 247 (__mmask8)(M), (int)(R)); }) 249 #define _mm_rcp28_ss(A, B) \ 250 _mm_rcp28_round_ss((A), (B), _MM_FROUND_CUR_DIRECTION) 252 #define _mm_mask_rcp28_ss(S, M, A, B) \ 253 _mm_mask_rcp28_round_ss((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION) 255 #define _mm_maskz_rcp28_ss(M, A, B) \ 256 _mm_maskz_rcp28_round_ss((M), (A), (B), _MM_FROUND_CUR_DIRECTION) 258 #define _mm_rcp28_round_sd(A, B, R) __extension__ ({ \ 259 (__m128d)__builtin_ia32_rcp28sd_round_mask((__v2df)(__m128d)(A), \ 260 (__v2df)(__m128d)(B), \ 261 (__v2df)_mm_setzero_pd(), \ 262 (__mmask8)-1, (int)(R)); }) 264 #define _mm_mask_rcp28_round_sd(S, M, A, B, R) __extension__ ({ \ 265 (__m128d)__builtin_ia32_rcp28sd_round_mask((__v2df)(__m128d)(A), \ 266 (__v2df)(__m128d)(B), \ 267 (__v2df)(__m128d)(S), \ 268 (__mmask8)(M), (int)(R)); }) 270 #define _mm_maskz_rcp28_round_sd(M, A, B, R) __extension__ ({ \ 271 (__m128d)__builtin_ia32_rcp28sd_round_mask((__v2df)(__m128d)(A), \ 272 (__v2df)(__m128d)(B), \ 273 (__v2df)_mm_setzero_pd(), \ 274 (__mmask8)(M), (int)(R)); }) 276 #define _mm_rcp28_sd(A, B) \ 277 _mm_rcp28_round_sd((A), (B), _MM_FROUND_CUR_DIRECTION) 279 #define _mm_mask_rcp28_sd(S, M, A, B) \ 280 _mm_mask_rcp28_round_sd((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION) 282 #define _mm_maskz_rcp28_sd(M, A, B) \ 283 _mm_maskz_rcp28_round_sd((M), (A), (B), _MM_FROUND_CUR_DIRECTION) 285 #endif // __AVX512ERINTRIN_H