xref: /aosp_15_r20/prebuilts/sdk/renderscript/clang-include/avx512erintrin.h (revision 344a7f5ef16c479e7a7f54ee6567a9d112f9e72b)
1*344a7f5eSAndroid Build Coastguard Worker /*===---- avx512erintrin.h - AVX512ER intrinsics ---------------------------===
2*344a7f5eSAndroid Build Coastguard Worker  *
3*344a7f5eSAndroid Build Coastguard Worker  * Permission is hereby granted, free of charge, to any person obtaining a copy
4*344a7f5eSAndroid Build Coastguard Worker  * of this software and associated documentation files (the "Software"), to deal
5*344a7f5eSAndroid Build Coastguard Worker  * in the Software without restriction, including without limitation the rights
6*344a7f5eSAndroid Build Coastguard Worker  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7*344a7f5eSAndroid Build Coastguard Worker  * copies of the Software, and to permit persons to whom the Software is
8*344a7f5eSAndroid Build Coastguard Worker  * furnished to do so, subject to the following conditions:
9*344a7f5eSAndroid Build Coastguard Worker  *
10*344a7f5eSAndroid Build Coastguard Worker  * The above copyright notice and this permission notice shall be included in
11*344a7f5eSAndroid Build Coastguard Worker  * all copies or substantial portions of the Software.
12*344a7f5eSAndroid Build Coastguard Worker  *
13*344a7f5eSAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14*344a7f5eSAndroid Build Coastguard Worker  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15*344a7f5eSAndroid Build Coastguard Worker  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16*344a7f5eSAndroid Build Coastguard Worker  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17*344a7f5eSAndroid Build Coastguard Worker  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18*344a7f5eSAndroid Build Coastguard Worker  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19*344a7f5eSAndroid Build Coastguard Worker  * THE SOFTWARE.
20*344a7f5eSAndroid Build Coastguard Worker  *
21*344a7f5eSAndroid Build Coastguard Worker  *===-----------------------------------------------------------------------===
22*344a7f5eSAndroid Build Coastguard Worker  */
23*344a7f5eSAndroid Build Coastguard Worker #ifndef __IMMINTRIN_H
24*344a7f5eSAndroid Build Coastguard Worker #error "Never use <avx512erintrin.h> directly; include <immintrin.h> instead."
25*344a7f5eSAndroid Build Coastguard Worker #endif
26*344a7f5eSAndroid Build Coastguard Worker 
27*344a7f5eSAndroid Build Coastguard Worker #ifndef __AVX512ERINTRIN_H
28*344a7f5eSAndroid Build Coastguard Worker #define __AVX512ERINTRIN_H
29*344a7f5eSAndroid Build Coastguard Worker 
30*344a7f5eSAndroid Build Coastguard Worker // exp2a23
31*344a7f5eSAndroid Build Coastguard Worker #define _mm512_exp2a23_round_pd(A, R) __extension__ ({ \
32*344a7f5eSAndroid Build Coastguard Worker   (__m512d)__builtin_ia32_exp2pd_mask((__v8df)(__m512d)(A), \
33*344a7f5eSAndroid Build Coastguard Worker                                       (__v8df)_mm512_setzero_pd(), \
34*344a7f5eSAndroid Build Coastguard Worker                                       (__mmask8)-1, (int)(R)); })
35*344a7f5eSAndroid Build Coastguard Worker 
36*344a7f5eSAndroid Build Coastguard Worker #define _mm512_mask_exp2a23_round_pd(S, M, A, R) __extension__ ({ \
37*344a7f5eSAndroid Build Coastguard Worker   (__m512d)__builtin_ia32_exp2pd_mask((__v8df)(__m512d)(A), \
38*344a7f5eSAndroid Build Coastguard Worker                                       (__v8df)(__m512d)(S), (__mmask8)(M), \
39*344a7f5eSAndroid Build Coastguard Worker                                       (int)(R)); })
40*344a7f5eSAndroid Build Coastguard Worker 
41*344a7f5eSAndroid Build Coastguard Worker #define _mm512_maskz_exp2a23_round_pd(M, A, R) __extension__ ({ \
42*344a7f5eSAndroid Build Coastguard Worker   (__m512d)__builtin_ia32_exp2pd_mask((__v8df)(__m512d)(A), \
43*344a7f5eSAndroid Build Coastguard Worker                                       (__v8df)_mm512_setzero_pd(), \
44*344a7f5eSAndroid Build Coastguard Worker                                       (__mmask8)(M), (int)(R)); })
45*344a7f5eSAndroid Build Coastguard Worker 
46*344a7f5eSAndroid Build Coastguard Worker #define _mm512_exp2a23_pd(A) \
47*344a7f5eSAndroid Build Coastguard Worker   _mm512_exp2a23_round_pd((A), _MM_FROUND_CUR_DIRECTION)
48*344a7f5eSAndroid Build Coastguard Worker 
49*344a7f5eSAndroid Build Coastguard Worker #define _mm512_mask_exp2a23_pd(S, M, A) \
50*344a7f5eSAndroid Build Coastguard Worker   _mm512_mask_exp2a23_round_pd((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
51*344a7f5eSAndroid Build Coastguard Worker 
52*344a7f5eSAndroid Build Coastguard Worker #define _mm512_maskz_exp2a23_pd(M, A) \
53*344a7f5eSAndroid Build Coastguard Worker   _mm512_maskz_exp2a23_round_pd((M), (A), _MM_FROUND_CUR_DIRECTION)
54*344a7f5eSAndroid Build Coastguard Worker 
55*344a7f5eSAndroid Build Coastguard Worker #define _mm512_exp2a23_round_ps(A, R) __extension__ ({ \
56*344a7f5eSAndroid Build Coastguard Worker   (__m512)__builtin_ia32_exp2ps_mask((__v16sf)(__m512)(A), \
57*344a7f5eSAndroid Build Coastguard Worker                                      (__v16sf)_mm512_setzero_ps(), \
58*344a7f5eSAndroid Build Coastguard Worker                                      (__mmask16)-1, (int)(R)); })
59*344a7f5eSAndroid Build Coastguard Worker 
60*344a7f5eSAndroid Build Coastguard Worker #define _mm512_mask_exp2a23_round_ps(S, M, A, R) __extension__ ({ \
61*344a7f5eSAndroid Build Coastguard Worker   (__m512)__builtin_ia32_exp2ps_mask((__v16sf)(__m512)(A), \
62*344a7f5eSAndroid Build Coastguard Worker                                      (__v16sf)(__m512)(S), (__mmask16)(M), \
63*344a7f5eSAndroid Build Coastguard Worker                                      (int)(R)); })
64*344a7f5eSAndroid Build Coastguard Worker 
65*344a7f5eSAndroid Build Coastguard Worker #define _mm512_maskz_exp2a23_round_ps(M, A, R) __extension__ ({ \
66*344a7f5eSAndroid Build Coastguard Worker   (__m512)__builtin_ia32_exp2ps_mask((__v16sf)(__m512)(A), \
67*344a7f5eSAndroid Build Coastguard Worker                                      (__v16sf)_mm512_setzero_ps(), \
68*344a7f5eSAndroid Build Coastguard Worker                                      (__mmask16)(M), (int)(R)); })
69*344a7f5eSAndroid Build Coastguard Worker 
70*344a7f5eSAndroid Build Coastguard Worker #define _mm512_exp2a23_ps(A) \
71*344a7f5eSAndroid Build Coastguard Worker   _mm512_exp2a23_round_ps((A), _MM_FROUND_CUR_DIRECTION)
72*344a7f5eSAndroid Build Coastguard Worker 
73*344a7f5eSAndroid Build Coastguard Worker #define _mm512_mask_exp2a23_ps(S, M, A) \
74*344a7f5eSAndroid Build Coastguard Worker   _mm512_mask_exp2a23_round_ps((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
75*344a7f5eSAndroid Build Coastguard Worker 
76*344a7f5eSAndroid Build Coastguard Worker #define _mm512_maskz_exp2a23_ps(M, A) \
77*344a7f5eSAndroid Build Coastguard Worker   _mm512_maskz_exp2a23_round_ps((M), (A), _MM_FROUND_CUR_DIRECTION)
78*344a7f5eSAndroid Build Coastguard Worker 
79*344a7f5eSAndroid Build Coastguard Worker // rsqrt28
80*344a7f5eSAndroid Build Coastguard Worker #define _mm512_rsqrt28_round_pd(A, R) __extension__ ({ \
81*344a7f5eSAndroid Build Coastguard Worker   (__m512d)__builtin_ia32_rsqrt28pd_mask((__v8df)(__m512d)(A), \
82*344a7f5eSAndroid Build Coastguard Worker                                          (__v8df)_mm512_setzero_pd(), \
83*344a7f5eSAndroid Build Coastguard Worker                                          (__mmask8)-1, (int)(R)); })
84*344a7f5eSAndroid Build Coastguard Worker 
85*344a7f5eSAndroid Build Coastguard Worker #define _mm512_mask_rsqrt28_round_pd(S, M, A, R) __extension__ ({ \
86*344a7f5eSAndroid Build Coastguard Worker   (__m512d)__builtin_ia32_rsqrt28pd_mask((__v8df)(__m512d)(A), \
87*344a7f5eSAndroid Build Coastguard Worker                                          (__v8df)(__m512d)(S), (__mmask8)(M), \
88*344a7f5eSAndroid Build Coastguard Worker                                          (int)(R)); })
89*344a7f5eSAndroid Build Coastguard Worker 
90*344a7f5eSAndroid Build Coastguard Worker #define _mm512_maskz_rsqrt28_round_pd(M, A, R) __extension__ ({ \
91*344a7f5eSAndroid Build Coastguard Worker   (__m512d)__builtin_ia32_rsqrt28pd_mask((__v8df)(__m512d)(A), \
92*344a7f5eSAndroid Build Coastguard Worker                                          (__v8df)_mm512_setzero_pd(), \
93*344a7f5eSAndroid Build Coastguard Worker                                          (__mmask8)(M), (int)(R)); })
94*344a7f5eSAndroid Build Coastguard Worker 
95*344a7f5eSAndroid Build Coastguard Worker #define _mm512_rsqrt28_pd(A) \
96*344a7f5eSAndroid Build Coastguard Worker   _mm512_rsqrt28_round_pd((A), _MM_FROUND_CUR_DIRECTION)
97*344a7f5eSAndroid Build Coastguard Worker 
98*344a7f5eSAndroid Build Coastguard Worker #define _mm512_mask_rsqrt28_pd(S, M, A) \
99*344a7f5eSAndroid Build Coastguard Worker   _mm512_mask_rsqrt28_round_pd((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
100*344a7f5eSAndroid Build Coastguard Worker 
101*344a7f5eSAndroid Build Coastguard Worker #define _mm512_maskz_rsqrt28_pd(M, A) \
102*344a7f5eSAndroid Build Coastguard Worker   _mm512_maskz_rsqrt28_round_pd((M), (A), _MM_FROUND_CUR_DIRECTION)
103*344a7f5eSAndroid Build Coastguard Worker 
104*344a7f5eSAndroid Build Coastguard Worker #define _mm512_rsqrt28_round_ps(A, R) __extension__ ({ \
105*344a7f5eSAndroid Build Coastguard Worker   (__m512)__builtin_ia32_rsqrt28ps_mask((__v16sf)(__m512)(A), \
106*344a7f5eSAndroid Build Coastguard Worker                                         (__v16sf)_mm512_setzero_ps(), \
107*344a7f5eSAndroid Build Coastguard Worker                                         (__mmask16)-1, (int)(R)); })
108*344a7f5eSAndroid Build Coastguard Worker 
109*344a7f5eSAndroid Build Coastguard Worker #define _mm512_mask_rsqrt28_round_ps(S, M, A, R) __extension__ ({ \
110*344a7f5eSAndroid Build Coastguard Worker   (__m512)__builtin_ia32_rsqrt28ps_mask((__v16sf)(__m512)(A), \
111*344a7f5eSAndroid Build Coastguard Worker                                         (__v16sf)(__m512)(S), (__mmask16)(M), \
112*344a7f5eSAndroid Build Coastguard Worker                                         (int)(R)); })
113*344a7f5eSAndroid Build Coastguard Worker 
114*344a7f5eSAndroid Build Coastguard Worker #define _mm512_maskz_rsqrt28_round_ps(M, A, R) __extension__ ({ \
115*344a7f5eSAndroid Build Coastguard Worker   (__m512)__builtin_ia32_rsqrt28ps_mask((__v16sf)(__m512)(A), \
116*344a7f5eSAndroid Build Coastguard Worker                                         (__v16sf)_mm512_setzero_ps(), \
117*344a7f5eSAndroid Build Coastguard Worker                                         (__mmask16)(M), (int)(R)); })
118*344a7f5eSAndroid Build Coastguard Worker 
119*344a7f5eSAndroid Build Coastguard Worker #define _mm512_rsqrt28_ps(A) \
120*344a7f5eSAndroid Build Coastguard Worker   _mm512_rsqrt28_round_ps((A), _MM_FROUND_CUR_DIRECTION)
121*344a7f5eSAndroid Build Coastguard Worker 
122*344a7f5eSAndroid Build Coastguard Worker #define _mm512_mask_rsqrt28_ps(S, M, A) \
123*344a7f5eSAndroid Build Coastguard Worker   _mm512_mask_rsqrt28_round_ps((S), (M), A, _MM_FROUND_CUR_DIRECTION)
124*344a7f5eSAndroid Build Coastguard Worker 
125*344a7f5eSAndroid Build Coastguard Worker #define _mm512_maskz_rsqrt28_ps(M, A) \
126*344a7f5eSAndroid Build Coastguard Worker   _mm512_maskz_rsqrt28_round_ps((M), (A), _MM_FROUND_CUR_DIRECTION)
127*344a7f5eSAndroid Build Coastguard Worker 
128*344a7f5eSAndroid Build Coastguard Worker #define _mm_rsqrt28_round_ss(A, B, R) __extension__ ({ \
129*344a7f5eSAndroid Build Coastguard Worker   (__m128)__builtin_ia32_rsqrt28ss_round_mask((__v4sf)(__m128)(A), \
130*344a7f5eSAndroid Build Coastguard Worker                                               (__v4sf)(__m128)(B), \
131*344a7f5eSAndroid Build Coastguard Worker                                               (__v4sf)_mm_setzero_ps(), \
132*344a7f5eSAndroid Build Coastguard Worker                                               (__mmask8)-1, (int)(R)); })
133*344a7f5eSAndroid Build Coastguard Worker 
134*344a7f5eSAndroid Build Coastguard Worker #define _mm_mask_rsqrt28_round_ss(S, M, A, B, R) __extension__ ({ \
135*344a7f5eSAndroid Build Coastguard Worker   (__m128)__builtin_ia32_rsqrt28ss_round_mask((__v4sf)(__m128)(A), \
136*344a7f5eSAndroid Build Coastguard Worker                                               (__v4sf)(__m128)(B), \
137*344a7f5eSAndroid Build Coastguard Worker                                               (__v4sf)(__m128)(S), \
138*344a7f5eSAndroid Build Coastguard Worker                                               (__mmask8)(M), (int)(R)); })
139*344a7f5eSAndroid Build Coastguard Worker 
140*344a7f5eSAndroid Build Coastguard Worker #define _mm_maskz_rsqrt28_round_ss(M, A, B, R) __extension__ ({ \
141*344a7f5eSAndroid Build Coastguard Worker   (__m128)__builtin_ia32_rsqrt28ss_round_mask((__v4sf)(__m128)(A), \
142*344a7f5eSAndroid Build Coastguard Worker                                               (__v4sf)(__m128)(B), \
143*344a7f5eSAndroid Build Coastguard Worker                                               (__v4sf)_mm_setzero_ps(), \
144*344a7f5eSAndroid Build Coastguard Worker                                               (__mmask8)(M), (int)(R)); })
145*344a7f5eSAndroid Build Coastguard Worker 
146*344a7f5eSAndroid Build Coastguard Worker #define _mm_rsqrt28_ss(A, B) \
147*344a7f5eSAndroid Build Coastguard Worker   _mm_rsqrt28_round_ss((A), (B), _MM_FROUND_CUR_DIRECTION)
148*344a7f5eSAndroid Build Coastguard Worker 
149*344a7f5eSAndroid Build Coastguard Worker #define _mm_mask_rsqrt28_ss(S, M, A, B) \
150*344a7f5eSAndroid Build Coastguard Worker   _mm_mask_rsqrt28_round_ss((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION)
151*344a7f5eSAndroid Build Coastguard Worker 
152*344a7f5eSAndroid Build Coastguard Worker #define _mm_maskz_rsqrt28_ss(M, A, B) \
153*344a7f5eSAndroid Build Coastguard Worker   _mm_maskz_rsqrt28_round_ss((M), (A), (B), _MM_FROUND_CUR_DIRECTION)
154*344a7f5eSAndroid Build Coastguard Worker 
155*344a7f5eSAndroid Build Coastguard Worker #define _mm_rsqrt28_round_sd(A, B, R) __extension__ ({ \
156*344a7f5eSAndroid Build Coastguard Worker   (__m128d)__builtin_ia32_rsqrt28sd_round_mask((__v2df)(__m128d)(A), \
157*344a7f5eSAndroid Build Coastguard Worker                                                (__v2df)(__m128d)(B), \
158*344a7f5eSAndroid Build Coastguard Worker                                                (__v2df)_mm_setzero_pd(), \
159*344a7f5eSAndroid Build Coastguard Worker                                                (__mmask8)-1, (int)(R)); })
160*344a7f5eSAndroid Build Coastguard Worker 
161*344a7f5eSAndroid Build Coastguard Worker #define _mm_mask_rsqrt28_round_sd(S, M, A, B, R) __extension__ ({ \
162*344a7f5eSAndroid Build Coastguard Worker   (__m128d)__builtin_ia32_rsqrt28sd_round_mask((__v2df)(__m128d)(A), \
163*344a7f5eSAndroid Build Coastguard Worker                                                (__v2df)(__m128d)(B), \
164*344a7f5eSAndroid Build Coastguard Worker                                                (__v2df)(__m128d)(S), \
165*344a7f5eSAndroid Build Coastguard Worker                                                (__mmask8)(M), (int)(R)); })
166*344a7f5eSAndroid Build Coastguard Worker 
167*344a7f5eSAndroid Build Coastguard Worker #define _mm_maskz_rsqrt28_round_sd(M, A, B, R) __extension__ ({ \
168*344a7f5eSAndroid Build Coastguard Worker   (__m128d)__builtin_ia32_rsqrt28sd_round_mask((__v2df)(__m128d)(A), \
169*344a7f5eSAndroid Build Coastguard Worker                                                (__v2df)(__m128d)(B), \
170*344a7f5eSAndroid Build Coastguard Worker                                                (__v2df)_mm_setzero_pd(), \
171*344a7f5eSAndroid Build Coastguard Worker                                                (__mmask8)(M), (int)(R)); })
172*344a7f5eSAndroid Build Coastguard Worker 
173*344a7f5eSAndroid Build Coastguard Worker #define _mm_rsqrt28_sd(A, B) \
174*344a7f5eSAndroid Build Coastguard Worker   _mm_rsqrt28_round_sd((A), (B), _MM_FROUND_CUR_DIRECTION)
175*344a7f5eSAndroid Build Coastguard Worker 
176*344a7f5eSAndroid Build Coastguard Worker #define _mm_mask_rsqrt28_sd(S, M, A, B) \
177*344a7f5eSAndroid Build Coastguard Worker   _mm_mask_rsqrt28_round_sd((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION)
178*344a7f5eSAndroid Build Coastguard Worker 
179*344a7f5eSAndroid Build Coastguard Worker #define _mm_maskz_rsqrt28_sd(M, A, B) \
180*344a7f5eSAndroid Build Coastguard Worker   _mm_maskz_rsqrt28_round_sd((M), (A), (B), _MM_FROUND_CUR_DIRECTION)
181*344a7f5eSAndroid Build Coastguard Worker 
182*344a7f5eSAndroid Build Coastguard Worker // rcp28
183*344a7f5eSAndroid Build Coastguard Worker #define _mm512_rcp28_round_pd(A, R) __extension__ ({ \
184*344a7f5eSAndroid Build Coastguard Worker   (__m512d)__builtin_ia32_rcp28pd_mask((__v8df)(__m512d)(A), \
185*344a7f5eSAndroid Build Coastguard Worker                                        (__v8df)_mm512_setzero_pd(), \
186*344a7f5eSAndroid Build Coastguard Worker                                        (__mmask8)-1, (int)(R)); })
187*344a7f5eSAndroid Build Coastguard Worker 
188*344a7f5eSAndroid Build Coastguard Worker #define _mm512_mask_rcp28_round_pd(S, M, A, R) __extension__ ({ \
189*344a7f5eSAndroid Build Coastguard Worker   (__m512d)__builtin_ia32_rcp28pd_mask((__v8df)(__m512d)(A), \
190*344a7f5eSAndroid Build Coastguard Worker                                        (__v8df)(__m512d)(S), (__mmask8)(M), \
191*344a7f5eSAndroid Build Coastguard Worker                                        (int)(R)); })
192*344a7f5eSAndroid Build Coastguard Worker 
193*344a7f5eSAndroid Build Coastguard Worker #define _mm512_maskz_rcp28_round_pd(M, A, R) __extension__ ({ \
194*344a7f5eSAndroid Build Coastguard Worker   (__m512d)__builtin_ia32_rcp28pd_mask((__v8df)(__m512d)(A), \
195*344a7f5eSAndroid Build Coastguard Worker                                        (__v8df)_mm512_setzero_pd(), \
196*344a7f5eSAndroid Build Coastguard Worker                                        (__mmask8)(M), (int)(R)); })
197*344a7f5eSAndroid Build Coastguard Worker 
198*344a7f5eSAndroid Build Coastguard Worker #define _mm512_rcp28_pd(A) \
199*344a7f5eSAndroid Build Coastguard Worker   _mm512_rcp28_round_pd((A), _MM_FROUND_CUR_DIRECTION)
200*344a7f5eSAndroid Build Coastguard Worker 
201*344a7f5eSAndroid Build Coastguard Worker #define _mm512_mask_rcp28_pd(S, M, A) \
202*344a7f5eSAndroid Build Coastguard Worker   _mm512_mask_rcp28_round_pd((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
203*344a7f5eSAndroid Build Coastguard Worker 
204*344a7f5eSAndroid Build Coastguard Worker #define _mm512_maskz_rcp28_pd(M, A) \
205*344a7f5eSAndroid Build Coastguard Worker   _mm512_maskz_rcp28_round_pd((M), (A), _MM_FROUND_CUR_DIRECTION)
206*344a7f5eSAndroid Build Coastguard Worker 
207*344a7f5eSAndroid Build Coastguard Worker #define _mm512_rcp28_round_ps(A, R) __extension__ ({ \
208*344a7f5eSAndroid Build Coastguard Worker   (__m512)__builtin_ia32_rcp28ps_mask((__v16sf)(__m512)(A), \
209*344a7f5eSAndroid Build Coastguard Worker                                       (__v16sf)_mm512_setzero_ps(), \
210*344a7f5eSAndroid Build Coastguard Worker                                       (__mmask16)-1, (int)(R)); })
211*344a7f5eSAndroid Build Coastguard Worker 
212*344a7f5eSAndroid Build Coastguard Worker #define _mm512_mask_rcp28_round_ps(S, M, A, R) __extension__ ({ \
213*344a7f5eSAndroid Build Coastguard Worker   (__m512)__builtin_ia32_rcp28ps_mask((__v16sf)(__m512)(A), \
214*344a7f5eSAndroid Build Coastguard Worker                                       (__v16sf)(__m512)(S), (__mmask16)(M), \
215*344a7f5eSAndroid Build Coastguard Worker                                       (int)(R)); })
216*344a7f5eSAndroid Build Coastguard Worker 
217*344a7f5eSAndroid Build Coastguard Worker #define _mm512_maskz_rcp28_round_ps(M, A, R) __extension__ ({ \
218*344a7f5eSAndroid Build Coastguard Worker   (__m512)__builtin_ia32_rcp28ps_mask((__v16sf)(__m512)(A), \
219*344a7f5eSAndroid Build Coastguard Worker                                       (__v16sf)_mm512_setzero_ps(), \
220*344a7f5eSAndroid Build Coastguard Worker                                       (__mmask16)(M), (int)(R)); })
221*344a7f5eSAndroid Build Coastguard Worker 
222*344a7f5eSAndroid Build Coastguard Worker #define _mm512_rcp28_ps(A) \
223*344a7f5eSAndroid Build Coastguard Worker   _mm512_rcp28_round_ps((A), _MM_FROUND_CUR_DIRECTION)
224*344a7f5eSAndroid Build Coastguard Worker 
225*344a7f5eSAndroid Build Coastguard Worker #define _mm512_mask_rcp28_ps(S, M, A) \
226*344a7f5eSAndroid Build Coastguard Worker   _mm512_mask_rcp28_round_ps((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
227*344a7f5eSAndroid Build Coastguard Worker 
228*344a7f5eSAndroid Build Coastguard Worker #define _mm512_maskz_rcp28_ps(M, A) \
229*344a7f5eSAndroid Build Coastguard Worker   _mm512_maskz_rcp28_round_ps((M), (A), _MM_FROUND_CUR_DIRECTION)
230*344a7f5eSAndroid Build Coastguard Worker 
231*344a7f5eSAndroid Build Coastguard Worker #define _mm_rcp28_round_ss(A, B, R) __extension__ ({ \
232*344a7f5eSAndroid Build Coastguard Worker   (__m128)__builtin_ia32_rcp28ss_round_mask((__v4sf)(__m128)(A), \
233*344a7f5eSAndroid Build Coastguard Worker                                             (__v4sf)(__m128)(B), \
234*344a7f5eSAndroid Build Coastguard Worker                                             (__v4sf)_mm_setzero_ps(), \
235*344a7f5eSAndroid Build Coastguard Worker                                             (__mmask8)-1, (int)(R)); })
236*344a7f5eSAndroid Build Coastguard Worker 
237*344a7f5eSAndroid Build Coastguard Worker #define _mm_mask_rcp28_round_ss(S, M, A, B, R) __extension__ ({ \
238*344a7f5eSAndroid Build Coastguard Worker   (__m128)__builtin_ia32_rcp28ss_round_mask((__v4sf)(__m128)(A), \
239*344a7f5eSAndroid Build Coastguard Worker                                             (__v4sf)(__m128)(B), \
240*344a7f5eSAndroid Build Coastguard Worker                                             (__v4sf)(__m128)(S), \
241*344a7f5eSAndroid Build Coastguard Worker                                             (__mmask8)(M), (int)(R)); })
242*344a7f5eSAndroid Build Coastguard Worker 
243*344a7f5eSAndroid Build Coastguard Worker #define _mm_maskz_rcp28_round_ss(M, A, B, R) __extension__ ({ \
244*344a7f5eSAndroid Build Coastguard Worker   (__m128)__builtin_ia32_rcp28ss_round_mask((__v4sf)(__m128)(A), \
245*344a7f5eSAndroid Build Coastguard Worker                                             (__v4sf)(__m128)(B), \
246*344a7f5eSAndroid Build Coastguard Worker                                             (__v4sf)_mm_setzero_ps(), \
247*344a7f5eSAndroid Build Coastguard Worker                                             (__mmask8)(M), (int)(R)); })
248*344a7f5eSAndroid Build Coastguard Worker 
249*344a7f5eSAndroid Build Coastguard Worker #define _mm_rcp28_ss(A, B) \
250*344a7f5eSAndroid Build Coastguard Worker   _mm_rcp28_round_ss((A), (B), _MM_FROUND_CUR_DIRECTION)
251*344a7f5eSAndroid Build Coastguard Worker 
252*344a7f5eSAndroid Build Coastguard Worker #define _mm_mask_rcp28_ss(S, M, A, B) \
253*344a7f5eSAndroid Build Coastguard Worker   _mm_mask_rcp28_round_ss((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION)
254*344a7f5eSAndroid Build Coastguard Worker 
255*344a7f5eSAndroid Build Coastguard Worker #define _mm_maskz_rcp28_ss(M, A, B) \
256*344a7f5eSAndroid Build Coastguard Worker   _mm_maskz_rcp28_round_ss((M), (A), (B), _MM_FROUND_CUR_DIRECTION)
257*344a7f5eSAndroid Build Coastguard Worker 
258*344a7f5eSAndroid Build Coastguard Worker #define _mm_rcp28_round_sd(A, B, R) __extension__ ({ \
259*344a7f5eSAndroid Build Coastguard Worker   (__m128d)__builtin_ia32_rcp28sd_round_mask((__v2df)(__m128d)(A), \
260*344a7f5eSAndroid Build Coastguard Worker                                              (__v2df)(__m128d)(B), \
261*344a7f5eSAndroid Build Coastguard Worker                                              (__v2df)_mm_setzero_pd(), \
262*344a7f5eSAndroid Build Coastguard Worker                                              (__mmask8)-1, (int)(R)); })
263*344a7f5eSAndroid Build Coastguard Worker 
264*344a7f5eSAndroid Build Coastguard Worker #define _mm_mask_rcp28_round_sd(S, M, A, B, R) __extension__ ({ \
265*344a7f5eSAndroid Build Coastguard Worker   (__m128d)__builtin_ia32_rcp28sd_round_mask((__v2df)(__m128d)(A), \
266*344a7f5eSAndroid Build Coastguard Worker                                              (__v2df)(__m128d)(B), \
267*344a7f5eSAndroid Build Coastguard Worker                                              (__v2df)(__m128d)(S), \
268*344a7f5eSAndroid Build Coastguard Worker                                              (__mmask8)(M), (int)(R)); })
269*344a7f5eSAndroid Build Coastguard Worker 
270*344a7f5eSAndroid Build Coastguard Worker #define _mm_maskz_rcp28_round_sd(M, A, B, R) __extension__ ({ \
271*344a7f5eSAndroid Build Coastguard Worker   (__m128d)__builtin_ia32_rcp28sd_round_mask((__v2df)(__m128d)(A), \
272*344a7f5eSAndroid Build Coastguard Worker                                              (__v2df)(__m128d)(B), \
273*344a7f5eSAndroid Build Coastguard Worker                                              (__v2df)_mm_setzero_pd(), \
274*344a7f5eSAndroid Build Coastguard Worker                                              (__mmask8)(M), (int)(R)); })
275*344a7f5eSAndroid Build Coastguard Worker 
276*344a7f5eSAndroid Build Coastguard Worker #define _mm_rcp28_sd(A, B) \
277*344a7f5eSAndroid Build Coastguard Worker   _mm_rcp28_round_sd((A), (B), _MM_FROUND_CUR_DIRECTION)
278*344a7f5eSAndroid Build Coastguard Worker 
279*344a7f5eSAndroid Build Coastguard Worker #define _mm_mask_rcp28_sd(S, M, A, B) \
280*344a7f5eSAndroid Build Coastguard Worker   _mm_mask_rcp28_round_sd((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION)
281*344a7f5eSAndroid Build Coastguard Worker 
282*344a7f5eSAndroid Build Coastguard Worker #define _mm_maskz_rcp28_sd(M, A, B) \
283*344a7f5eSAndroid Build Coastguard Worker   _mm_maskz_rcp28_round_sd((M), (A), (B), _MM_FROUND_CUR_DIRECTION)
284*344a7f5eSAndroid Build Coastguard Worker 
285*344a7f5eSAndroid Build Coastguard Worker #endif // __AVX512ERINTRIN_H
286