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