Go to the documentation of this file.
10#error "Never use <avx512erintrin.h> directly; include <immintrin.h> instead."
13#ifndef __AVX512ERINTRIN_H
14#define __AVX512ERINTRIN_H
17#define _mm512_exp2a23_round_pd(A, R) \
18 ((__m512d)__builtin_ia32_exp2pd_mask((__v8df)(__m512d)(A), \
19 (__v8df)_mm512_setzero_pd(), \
20 (__mmask8)-1, (int)(R)))
22#define _mm512_mask_exp2a23_round_pd(S, M, A, R) \
23 ((__m512d)__builtin_ia32_exp2pd_mask((__v8df)(__m512d)(A), \
24 (__v8df)(__m512d)(S), (__mmask8)(M), \
27#define _mm512_maskz_exp2a23_round_pd(M, A, R) \
28 ((__m512d)__builtin_ia32_exp2pd_mask((__v8df)(__m512d)(A), \
29 (__v8df)_mm512_setzero_pd(), \
30 (__mmask8)(M), (int)(R)))
32#define _mm512_exp2a23_pd(A) \
33 _mm512_exp2a23_round_pd((A), _MM_FROUND_CUR_DIRECTION)
35#define _mm512_mask_exp2a23_pd(S, M, A) \
36 _mm512_mask_exp2a23_round_pd((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
38#define _mm512_maskz_exp2a23_pd(M, A) \
39 _mm512_maskz_exp2a23_round_pd((M), (A), _MM_FROUND_CUR_DIRECTION)
41#define _mm512_exp2a23_round_ps(A, R) \
42 ((__m512)__builtin_ia32_exp2ps_mask((__v16sf)(__m512)(A), \
43 (__v16sf)_mm512_setzero_ps(), \
44 (__mmask16)-1, (int)(R)))
46#define _mm512_mask_exp2a23_round_ps(S, M, A, R) \
47 ((__m512)__builtin_ia32_exp2ps_mask((__v16sf)(__m512)(A), \
48 (__v16sf)(__m512)(S), (__mmask16)(M), \
51#define _mm512_maskz_exp2a23_round_ps(M, A, R) \
52 ((__m512)__builtin_ia32_exp2ps_mask((__v16sf)(__m512)(A), \
53 (__v16sf)_mm512_setzero_ps(), \
54 (__mmask16)(M), (int)(R)))
56#define _mm512_exp2a23_ps(A) \
57 _mm512_exp2a23_round_ps((A), _MM_FROUND_CUR_DIRECTION)
59#define _mm512_mask_exp2a23_ps(S, M, A) \
60 _mm512_mask_exp2a23_round_ps((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
62#define _mm512_maskz_exp2a23_ps(M, A) \
63 _mm512_maskz_exp2a23_round_ps((M), (A), _MM_FROUND_CUR_DIRECTION)
66#define _mm512_rsqrt28_round_pd(A, R) \
67 ((__m512d)__builtin_ia32_rsqrt28pd_mask((__v8df)(__m512d)(A), \
68 (__v8df)_mm512_setzero_pd(), \
69 (__mmask8)-1, (int)(R)))
71#define _mm512_mask_rsqrt28_round_pd(S, M, A, R) \
72 ((__m512d)__builtin_ia32_rsqrt28pd_mask((__v8df)(__m512d)(A), \
73 (__v8df)(__m512d)(S), (__mmask8)(M), \
76#define _mm512_maskz_rsqrt28_round_pd(M, A, R) \
77 ((__m512d)__builtin_ia32_rsqrt28pd_mask((__v8df)(__m512d)(A), \
78 (__v8df)_mm512_setzero_pd(), \
79 (__mmask8)(M), (int)(R)))
81#define _mm512_rsqrt28_pd(A) \
82 _mm512_rsqrt28_round_pd((A), _MM_FROUND_CUR_DIRECTION)
84#define _mm512_mask_rsqrt28_pd(S, M, A) \
85 _mm512_mask_rsqrt28_round_pd((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
87#define _mm512_maskz_rsqrt28_pd(M, A) \
88 _mm512_maskz_rsqrt28_round_pd((M), (A), _MM_FROUND_CUR_DIRECTION)
90#define _mm512_rsqrt28_round_ps(A, R) \
91 ((__m512)__builtin_ia32_rsqrt28ps_mask((__v16sf)(__m512)(A), \
92 (__v16sf)_mm512_setzero_ps(), \
93 (__mmask16)-1, (int)(R)))
95#define _mm512_mask_rsqrt28_round_ps(S, M, A, R) \
96 ((__m512)__builtin_ia32_rsqrt28ps_mask((__v16sf)(__m512)(A), \
97 (__v16sf)(__m512)(S), (__mmask16)(M), \
100#define _mm512_maskz_rsqrt28_round_ps(M, A, R) \
101 ((__m512)__builtin_ia32_rsqrt28ps_mask((__v16sf)(__m512)(A), \
102 (__v16sf)_mm512_setzero_ps(), \
103 (__mmask16)(M), (int)(R)))
105#define _mm512_rsqrt28_ps(A) \
106 _mm512_rsqrt28_round_ps((A), _MM_FROUND_CUR_DIRECTION)
108#define _mm512_mask_rsqrt28_ps(S, M, A) \
109 _mm512_mask_rsqrt28_round_ps((S), (M), A, _MM_FROUND_CUR_DIRECTION)
111#define _mm512_maskz_rsqrt28_ps(M, A) \
112 _mm512_maskz_rsqrt28_round_ps((M), (A), _MM_FROUND_CUR_DIRECTION)
114#define _mm_rsqrt28_round_ss(A, B, R) \
115 ((__m128)__builtin_ia32_rsqrt28ss_round_mask((__v4sf)(__m128)(A), \
116 (__v4sf)(__m128)(B), \
117 (__v4sf)_mm_setzero_ps(), \
118 (__mmask8)-1, (int)(R)))
120#define _mm_mask_rsqrt28_round_ss(S, M, A, B, R) \
121 ((__m128)__builtin_ia32_rsqrt28ss_round_mask((__v4sf)(__m128)(A), \
122 (__v4sf)(__m128)(B), \
123 (__v4sf)(__m128)(S), \
124 (__mmask8)(M), (int)(R)))
126#define _mm_maskz_rsqrt28_round_ss(M, A, B, R) \
127 ((__m128)__builtin_ia32_rsqrt28ss_round_mask((__v4sf)(__m128)(A), \
128 (__v4sf)(__m128)(B), \
129 (__v4sf)_mm_setzero_ps(), \
130 (__mmask8)(M), (int)(R)))
132#define _mm_rsqrt28_ss(A, B) \
133 _mm_rsqrt28_round_ss((A), (B), _MM_FROUND_CUR_DIRECTION)
135#define _mm_mask_rsqrt28_ss(S, M, A, B) \
136 _mm_mask_rsqrt28_round_ss((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION)
138#define _mm_maskz_rsqrt28_ss(M, A, B) \
139 _mm_maskz_rsqrt28_round_ss((M), (A), (B), _MM_FROUND_CUR_DIRECTION)
141#define _mm_rsqrt28_round_sd(A, B, R) \
142 ((__m128d)__builtin_ia32_rsqrt28sd_round_mask((__v2df)(__m128d)(A), \
143 (__v2df)(__m128d)(B), \
144 (__v2df)_mm_setzero_pd(), \
145 (__mmask8)-1, (int)(R)))
147#define _mm_mask_rsqrt28_round_sd(S, M, A, B, R) \
148 ((__m128d)__builtin_ia32_rsqrt28sd_round_mask((__v2df)(__m128d)(A), \
149 (__v2df)(__m128d)(B), \
150 (__v2df)(__m128d)(S), \
151 (__mmask8)(M), (int)(R)))
153#define _mm_maskz_rsqrt28_round_sd(M, A, B, R) \
154 ((__m128d)__builtin_ia32_rsqrt28sd_round_mask((__v2df)(__m128d)(A), \
155 (__v2df)(__m128d)(B), \
156 (__v2df)_mm_setzero_pd(), \
157 (__mmask8)(M), (int)(R)))
159#define _mm_rsqrt28_sd(A, B) \
160 _mm_rsqrt28_round_sd((A), (B), _MM_FROUND_CUR_DIRECTION)
162#define _mm_mask_rsqrt28_sd(S, M, A, B) \
163 _mm_mask_rsqrt28_round_sd((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION)
165#define _mm_maskz_rsqrt28_sd(M, A, B) \
166 _mm_maskz_rsqrt28_round_sd((M), (A), (B), _MM_FROUND_CUR_DIRECTION)
169#define _mm512_rcp28_round_pd(A, R) \
170 ((__m512d)__builtin_ia32_rcp28pd_mask((__v8df)(__m512d)(A), \
171 (__v8df)_mm512_setzero_pd(), \
172 (__mmask8)-1, (int)(R)))
174#define _mm512_mask_rcp28_round_pd(S, M, A, R) \
175 ((__m512d)__builtin_ia32_rcp28pd_mask((__v8df)(__m512d)(A), \
176 (__v8df)(__m512d)(S), (__mmask8)(M), \
179#define _mm512_maskz_rcp28_round_pd(M, A, R) \
180 ((__m512d)__builtin_ia32_rcp28pd_mask((__v8df)(__m512d)(A), \
181 (__v8df)_mm512_setzero_pd(), \
182 (__mmask8)(M), (int)(R)))
184#define _mm512_rcp28_pd(A) \
185 _mm512_rcp28_round_pd((A), _MM_FROUND_CUR_DIRECTION)
187#define _mm512_mask_rcp28_pd(S, M, A) \
188 _mm512_mask_rcp28_round_pd((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
190#define _mm512_maskz_rcp28_pd(M, A) \
191 _mm512_maskz_rcp28_round_pd((M), (A), _MM_FROUND_CUR_DIRECTION)
193#define _mm512_rcp28_round_ps(A, R) \
194 ((__m512)__builtin_ia32_rcp28ps_mask((__v16sf)(__m512)(A), \
195 (__v16sf)_mm512_setzero_ps(), \
196 (__mmask16)-1, (int)(R)))
198#define _mm512_mask_rcp28_round_ps(S, M, A, R) \
199 ((__m512)__builtin_ia32_rcp28ps_mask((__v16sf)(__m512)(A), \
200 (__v16sf)(__m512)(S), (__mmask16)(M), \
203#define _mm512_maskz_rcp28_round_ps(M, A, R) \
204 ((__m512)__builtin_ia32_rcp28ps_mask((__v16sf)(__m512)(A), \
205 (__v16sf)_mm512_setzero_ps(), \
206 (__mmask16)(M), (int)(R)))
208#define _mm512_rcp28_ps(A) \
209 _mm512_rcp28_round_ps((A), _MM_FROUND_CUR_DIRECTION)
211#define _mm512_mask_rcp28_ps(S, M, A) \
212 _mm512_mask_rcp28_round_ps((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
214#define _mm512_maskz_rcp28_ps(M, A) \
215 _mm512_maskz_rcp28_round_ps((M), (A), _MM_FROUND_CUR_DIRECTION)
217#define _mm_rcp28_round_ss(A, B, R) \
218 ((__m128)__builtin_ia32_rcp28ss_round_mask((__v4sf)(__m128)(A), \
219 (__v4sf)(__m128)(B), \
220 (__v4sf)_mm_setzero_ps(), \
221 (__mmask8)-1, (int)(R)))
223#define _mm_mask_rcp28_round_ss(S, M, A, B, R) \
224 ((__m128)__builtin_ia32_rcp28ss_round_mask((__v4sf)(__m128)(A), \
225 (__v4sf)(__m128)(B), \
226 (__v4sf)(__m128)(S), \
227 (__mmask8)(M), (int)(R)))
229#define _mm_maskz_rcp28_round_ss(M, A, B, R) \
230 ((__m128)__builtin_ia32_rcp28ss_round_mask((__v4sf)(__m128)(A), \
231 (__v4sf)(__m128)(B), \
232 (__v4sf)_mm_setzero_ps(), \
233 (__mmask8)(M), (int)(R)))
235#define _mm_rcp28_ss(A, B) \
236 _mm_rcp28_round_ss((A), (B), _MM_FROUND_CUR_DIRECTION)
238#define _mm_mask_rcp28_ss(S, M, A, B) \
239 _mm_mask_rcp28_round_ss((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION)
241#define _mm_maskz_rcp28_ss(M, A, B) \
242 _mm_maskz_rcp28_round_ss((M), (A), (B), _MM_FROUND_CUR_DIRECTION)
244#define _mm_rcp28_round_sd(A, B, R) \
245 ((__m128d)__builtin_ia32_rcp28sd_round_mask((__v2df)(__m128d)(A), \
246 (__v2df)(__m128d)(B), \
247 (__v2df)_mm_setzero_pd(), \
248 (__mmask8)-1, (int)(R)))
250#define _mm_mask_rcp28_round_sd(S, M, A, B, R) \
251 ((__m128d)__builtin_ia32_rcp28sd_round_mask((__v2df)(__m128d)(A), \
252 (__v2df)(__m128d)(B), \
253 (__v2df)(__m128d)(S), \
254 (__mmask8)(M), (int)(R)))
256#define _mm_maskz_rcp28_round_sd(M, A, B, R) \
257 ((__m128d)__builtin_ia32_rcp28sd_round_mask((__v2df)(__m128d)(A), \
258 (__v2df)(__m128d)(B), \
259 (__v2df)_mm_setzero_pd(), \
260 (__mmask8)(M), (int)(R)))
262#define _mm_rcp28_sd(A, B) \
263 _mm_rcp28_round_sd((A), (B), _MM_FROUND_CUR_DIRECTION)
265#define _mm_mask_rcp28_sd(S, M, A, B) \
266 _mm_mask_rcp28_round_sd((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION)
268#define _mm_maskz_rcp28_sd(M, A, B) \
269 _mm_maskz_rcp28_round_sd((M), (A), (B), _MM_FROUND_CUR_DIRECTION)