blob: 857006169906841b2cf83c2d0ec6759e60cf3d61 [file] [log] [blame]
Craig Topper991d4992015-11-03 06:16:31 +00001/*===---- avx512erintrin.h - AVX512ER intrinsics ---------------------------===
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002 *
Chandler Carruth4cf57432019-04-08 20:51:30 +00003 * 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-exception
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00006 *
7 *===-----------------------------------------------------------------------===
8 */
9#ifndef __IMMINTRIN_H
10#error "Never use <avx512erintrin.h> directly; include <immintrin.h> instead."
11#endif
12
13#ifndef __AVX512ERINTRIN_H
14#define __AVX512ERINTRIN_H
15
Craig Topper73d1d402018-05-30 22:33:21 +000016/* exp2a23 */
Craig Topperc6338672018-05-31 00:51:20 +000017#define _mm512_exp2a23_round_pd(A, R) \
Craig Topper2a898bf2015-02-01 21:34:11 +000018 (__m512d)__builtin_ia32_exp2pd_mask((__v8df)(__m512d)(A), \
19 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +000020 (__mmask8)-1, (int)(R))
Craig Topper2a898bf2015-02-01 21:34:11 +000021
Craig Topperc6338672018-05-31 00:51:20 +000022#define _mm512_mask_exp2a23_round_pd(S, M, A, R) \
Craig Topper2a898bf2015-02-01 21:34:11 +000023 (__m512d)__builtin_ia32_exp2pd_mask((__v8df)(__m512d)(A), \
Craig Topper0bb46642016-05-17 04:41:38 +000024 (__v8df)(__m512d)(S), (__mmask8)(M), \
Craig Topperc6338672018-05-31 00:51:20 +000025 (int)(R))
Craig Topper2a898bf2015-02-01 21:34:11 +000026
Craig Topperc6338672018-05-31 00:51:20 +000027#define _mm512_maskz_exp2a23_round_pd(M, A, R) \
Craig Topper2a898bf2015-02-01 21:34:11 +000028 (__m512d)__builtin_ia32_exp2pd_mask((__v8df)(__m512d)(A), \
29 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +000030 (__mmask8)(M), (int)(R))
Craig Topper2a898bf2015-02-01 21:34:11 +000031
32#define _mm512_exp2a23_pd(A) \
Craig Topper0bb46642016-05-17 04:41:38 +000033 _mm512_exp2a23_round_pd((A), _MM_FROUND_CUR_DIRECTION)
Craig Topper2a898bf2015-02-01 21:34:11 +000034
35#define _mm512_mask_exp2a23_pd(S, M, A) \
Craig Topper0bb46642016-05-17 04:41:38 +000036 _mm512_mask_exp2a23_round_pd((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
Craig Topper2a898bf2015-02-01 21:34:11 +000037
38#define _mm512_maskz_exp2a23_pd(M, A) \
Craig Topper0bb46642016-05-17 04:41:38 +000039 _mm512_maskz_exp2a23_round_pd((M), (A), _MM_FROUND_CUR_DIRECTION)
Craig Topper2a898bf2015-02-01 21:34:11 +000040
Craig Topperc6338672018-05-31 00:51:20 +000041#define _mm512_exp2a23_round_ps(A, R) \
Craig Topper2a898bf2015-02-01 21:34:11 +000042 (__m512)__builtin_ia32_exp2ps_mask((__v16sf)(__m512)(A), \
43 (__v16sf)_mm512_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +000044 (__mmask16)-1, (int)(R))
Craig Topper2a898bf2015-02-01 21:34:11 +000045
Craig Topperc6338672018-05-31 00:51:20 +000046#define _mm512_mask_exp2a23_round_ps(S, M, A, R) \
Craig Topper2a898bf2015-02-01 21:34:11 +000047 (__m512)__builtin_ia32_exp2ps_mask((__v16sf)(__m512)(A), \
Craig Topper0bb46642016-05-17 04:41:38 +000048 (__v16sf)(__m512)(S), (__mmask16)(M), \
Craig Topperc6338672018-05-31 00:51:20 +000049 (int)(R))
Craig Topper2a898bf2015-02-01 21:34:11 +000050
Craig Topperc6338672018-05-31 00:51:20 +000051#define _mm512_maskz_exp2a23_round_ps(M, A, R) \
Craig Topper2a898bf2015-02-01 21:34:11 +000052 (__m512)__builtin_ia32_exp2ps_mask((__v16sf)(__m512)(A), \
53 (__v16sf)_mm512_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +000054 (__mmask16)(M), (int)(R))
Craig Topper2a898bf2015-02-01 21:34:11 +000055
56#define _mm512_exp2a23_ps(A) \
Craig Topper0bb46642016-05-17 04:41:38 +000057 _mm512_exp2a23_round_ps((A), _MM_FROUND_CUR_DIRECTION)
Craig Topper2a898bf2015-02-01 21:34:11 +000058
59#define _mm512_mask_exp2a23_ps(S, M, A) \
Craig Topper0bb46642016-05-17 04:41:38 +000060 _mm512_mask_exp2a23_round_ps((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
Craig Topper2a898bf2015-02-01 21:34:11 +000061
62#define _mm512_maskz_exp2a23_ps(M, A) \
Craig Topper0bb46642016-05-17 04:41:38 +000063 _mm512_maskz_exp2a23_round_ps((M), (A), _MM_FROUND_CUR_DIRECTION)
Craig Topper2a898bf2015-02-01 21:34:11 +000064
Craig Topper73d1d402018-05-30 22:33:21 +000065/* rsqrt28 */
Craig Topperc6338672018-05-31 00:51:20 +000066#define _mm512_rsqrt28_round_pd(A, R) \
Craig Topperb01fc312015-02-01 08:05:12 +000067 (__m512d)__builtin_ia32_rsqrt28pd_mask((__v8df)(__m512d)(A), \
68 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +000069 (__mmask8)-1, (int)(R))
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +000070
Craig Topperc6338672018-05-31 00:51:20 +000071#define _mm512_mask_rsqrt28_round_pd(S, M, A, R) \
Craig Topperc4b852a2015-02-01 08:52:55 +000072 (__m512d)__builtin_ia32_rsqrt28pd_mask((__v8df)(__m512d)(A), \
Craig Topper0bb46642016-05-17 04:41:38 +000073 (__v8df)(__m512d)(S), (__mmask8)(M), \
Craig Topperc6338672018-05-31 00:51:20 +000074 (int)(R))
Craig Topperc4b852a2015-02-01 08:52:55 +000075
Craig Topperc6338672018-05-31 00:51:20 +000076#define _mm512_maskz_rsqrt28_round_pd(M, A, R) \
Craig Topperc4b852a2015-02-01 08:52:55 +000077 (__m512d)__builtin_ia32_rsqrt28pd_mask((__v8df)(__m512d)(A), \
78 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +000079 (__mmask8)(M), (int)(R))
Craig Topperc4b852a2015-02-01 08:52:55 +000080
81#define _mm512_rsqrt28_pd(A) \
Craig Topperda97c202015-02-01 10:15:11 +000082 _mm512_rsqrt28_round_pd((A), _MM_FROUND_CUR_DIRECTION)
Craig Topperc4b852a2015-02-01 08:52:55 +000083
84#define _mm512_mask_rsqrt28_pd(S, M, A) \
Craig Topperda97c202015-02-01 10:15:11 +000085 _mm512_mask_rsqrt28_round_pd((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
Craig Topperc4b852a2015-02-01 08:52:55 +000086
87#define _mm512_maskz_rsqrt28_pd(M, A) \
Craig Topperda97c202015-02-01 10:15:11 +000088 _mm512_maskz_rsqrt28_round_pd((M), (A), _MM_FROUND_CUR_DIRECTION)
Craig Topperc4b852a2015-02-01 08:52:55 +000089
Craig Topperc6338672018-05-31 00:51:20 +000090#define _mm512_rsqrt28_round_ps(A, R) \
Craig Topperb01fc312015-02-01 08:05:12 +000091 (__m512)__builtin_ia32_rsqrt28ps_mask((__v16sf)(__m512)(A), \
92 (__v16sf)_mm512_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +000093 (__mmask16)-1, (int)(R))
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +000094
Craig Topperc6338672018-05-31 00:51:20 +000095#define _mm512_mask_rsqrt28_round_ps(S, M, A, R) \
Craig Topperc4b852a2015-02-01 08:52:55 +000096 (__m512)__builtin_ia32_rsqrt28ps_mask((__v16sf)(__m512)(A), \
Craig Topper0bb46642016-05-17 04:41:38 +000097 (__v16sf)(__m512)(S), (__mmask16)(M), \
Craig Topperc6338672018-05-31 00:51:20 +000098 (int)(R))
Craig Topperc4b852a2015-02-01 08:52:55 +000099
Craig Topperc6338672018-05-31 00:51:20 +0000100#define _mm512_maskz_rsqrt28_round_ps(M, A, R) \
Craig Topperc4b852a2015-02-01 08:52:55 +0000101 (__m512)__builtin_ia32_rsqrt28ps_mask((__v16sf)(__m512)(A), \
102 (__v16sf)_mm512_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000103 (__mmask16)(M), (int)(R))
Craig Topperc4b852a2015-02-01 08:52:55 +0000104
105#define _mm512_rsqrt28_ps(A) \
Craig Topperda97c202015-02-01 10:15:11 +0000106 _mm512_rsqrt28_round_ps((A), _MM_FROUND_CUR_DIRECTION)
Craig Topperc4b852a2015-02-01 08:52:55 +0000107
108#define _mm512_mask_rsqrt28_ps(S, M, A) \
Craig Topperda97c202015-02-01 10:15:11 +0000109 _mm512_mask_rsqrt28_round_ps((S), (M), A, _MM_FROUND_CUR_DIRECTION)
Craig Topperc4b852a2015-02-01 08:52:55 +0000110
111#define _mm512_maskz_rsqrt28_ps(M, A) \
Craig Topperda97c202015-02-01 10:15:11 +0000112 _mm512_maskz_rsqrt28_round_ps((M), (A), _MM_FROUND_CUR_DIRECTION)
Craig Topperc4b852a2015-02-01 08:52:55 +0000113
Craig Topperc6338672018-05-31 00:51:20 +0000114#define _mm_rsqrt28_round_ss(A, B, R) \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000115 (__m128)__builtin_ia32_rsqrt28ss_round_mask((__v4sf)(__m128)(A), \
Craig Topper0bb46642016-05-17 04:41:38 +0000116 (__v4sf)(__m128)(B), \
117 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000118 (__mmask8)-1, (int)(R))
Craig Topperb01fc312015-02-01 08:05:12 +0000119
Craig Topperc6338672018-05-31 00:51:20 +0000120#define _mm_mask_rsqrt28_round_ss(S, M, A, B, R) \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000121 (__m128)__builtin_ia32_rsqrt28ss_round_mask((__v4sf)(__m128)(A), \
Craig Topper0bb46642016-05-17 04:41:38 +0000122 (__v4sf)(__m128)(B), \
123 (__v4sf)(__m128)(S), \
Craig Topperc6338672018-05-31 00:51:20 +0000124 (__mmask8)(M), (int)(R))
Craig Topperda97c202015-02-01 10:15:11 +0000125
Craig Topperc6338672018-05-31 00:51:20 +0000126#define _mm_maskz_rsqrt28_round_ss(M, A, B, R) \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000127 (__m128)__builtin_ia32_rsqrt28ss_round_mask((__v4sf)(__m128)(A), \
Craig Topper0bb46642016-05-17 04:41:38 +0000128 (__v4sf)(__m128)(B), \
129 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000130 (__mmask8)(M), (int)(R))
Craig Topperda97c202015-02-01 10:15:11 +0000131
132#define _mm_rsqrt28_ss(A, B) \
133 _mm_rsqrt28_round_ss((A), (B), _MM_FROUND_CUR_DIRECTION)
134
135#define _mm_mask_rsqrt28_ss(S, M, A, B) \
136 _mm_mask_rsqrt28_round_ss((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION)
137
138#define _mm_maskz_rsqrt28_ss(M, A, B) \
139 _mm_maskz_rsqrt28_round_ss((M), (A), (B), _MM_FROUND_CUR_DIRECTION)
140
Craig Topperc6338672018-05-31 00:51:20 +0000141#define _mm_rsqrt28_round_sd(A, B, R) \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000142 (__m128d)__builtin_ia32_rsqrt28sd_round_mask((__v2df)(__m128d)(A), \
Craig Topper0bb46642016-05-17 04:41:38 +0000143 (__v2df)(__m128d)(B), \
144 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000145 (__mmask8)-1, (int)(R))
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000146
Craig Topperc6338672018-05-31 00:51:20 +0000147#define _mm_mask_rsqrt28_round_sd(S, M, A, B, R) \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000148 (__m128d)__builtin_ia32_rsqrt28sd_round_mask((__v2df)(__m128d)(A), \
Craig Topper0bb46642016-05-17 04:41:38 +0000149 (__v2df)(__m128d)(B), \
150 (__v2df)(__m128d)(S), \
Craig Topperc6338672018-05-31 00:51:20 +0000151 (__mmask8)(M), (int)(R))
Craig Topperda97c202015-02-01 10:15:11 +0000152
Craig Topperc6338672018-05-31 00:51:20 +0000153#define _mm_maskz_rsqrt28_round_sd(M, A, B, R) \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000154 (__m128d)__builtin_ia32_rsqrt28sd_round_mask((__v2df)(__m128d)(A), \
Craig Topper0bb46642016-05-17 04:41:38 +0000155 (__v2df)(__m128d)(B), \
156 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000157 (__mmask8)(M), (int)(R))
Craig Topperda97c202015-02-01 10:15:11 +0000158
159#define _mm_rsqrt28_sd(A, B) \
160 _mm_rsqrt28_round_sd((A), (B), _MM_FROUND_CUR_DIRECTION)
161
162#define _mm_mask_rsqrt28_sd(S, M, A, B) \
163 _mm_mask_rsqrt28_round_sd((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION)
164
165#define _mm_maskz_rsqrt28_sd(M, A, B) \
Michael Zuckerman1a7889f2016-06-05 15:57:49 +0000166 _mm_maskz_rsqrt28_round_sd((M), (A), (B), _MM_FROUND_CUR_DIRECTION)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000167
Craig Topper73d1d402018-05-30 22:33:21 +0000168/* rcp28 */
Craig Topperc6338672018-05-31 00:51:20 +0000169#define _mm512_rcp28_round_pd(A, R) \
Craig Topperb01fc312015-02-01 08:05:12 +0000170 (__m512d)__builtin_ia32_rcp28pd_mask((__v8df)(__m512d)(A), \
171 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000172 (__mmask8)-1, (int)(R))
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000173
Craig Topperc6338672018-05-31 00:51:20 +0000174#define _mm512_mask_rcp28_round_pd(S, M, A, R) \
Craig Topperc4b852a2015-02-01 08:52:55 +0000175 (__m512d)__builtin_ia32_rcp28pd_mask((__v8df)(__m512d)(A), \
Craig Topper0bb46642016-05-17 04:41:38 +0000176 (__v8df)(__m512d)(S), (__mmask8)(M), \
Craig Topperc6338672018-05-31 00:51:20 +0000177 (int)(R))
Craig Topperc4b852a2015-02-01 08:52:55 +0000178
Craig Topperc6338672018-05-31 00:51:20 +0000179#define _mm512_maskz_rcp28_round_pd(M, A, R) \
Craig Topperc4b852a2015-02-01 08:52:55 +0000180 (__m512d)__builtin_ia32_rcp28pd_mask((__v8df)(__m512d)(A), \
181 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000182 (__mmask8)(M), (int)(R))
Craig Topperc4b852a2015-02-01 08:52:55 +0000183
184#define _mm512_rcp28_pd(A) \
Craig Topperda97c202015-02-01 10:15:11 +0000185 _mm512_rcp28_round_pd((A), _MM_FROUND_CUR_DIRECTION)
Craig Topperc4b852a2015-02-01 08:52:55 +0000186
187#define _mm512_mask_rcp28_pd(S, M, A) \
Craig Topperda97c202015-02-01 10:15:11 +0000188 _mm512_mask_rcp28_round_pd((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
Craig Topperc4b852a2015-02-01 08:52:55 +0000189
190#define _mm512_maskz_rcp28_pd(M, A) \
Craig Topperda97c202015-02-01 10:15:11 +0000191 _mm512_maskz_rcp28_round_pd((M), (A), _MM_FROUND_CUR_DIRECTION)
Craig Topperc4b852a2015-02-01 08:52:55 +0000192
Craig Topperc6338672018-05-31 00:51:20 +0000193#define _mm512_rcp28_round_ps(A, R) \
Craig Topperb01fc312015-02-01 08:05:12 +0000194 (__m512)__builtin_ia32_rcp28ps_mask((__v16sf)(__m512)(A), \
195 (__v16sf)_mm512_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000196 (__mmask16)-1, (int)(R))
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000197
Craig Topperc6338672018-05-31 00:51:20 +0000198#define _mm512_mask_rcp28_round_ps(S, M, A, R) \
Craig Topperc4b852a2015-02-01 08:52:55 +0000199 (__m512)__builtin_ia32_rcp28ps_mask((__v16sf)(__m512)(A), \
Craig Topper0bb46642016-05-17 04:41:38 +0000200 (__v16sf)(__m512)(S), (__mmask16)(M), \
Craig Topperc6338672018-05-31 00:51:20 +0000201 (int)(R))
Craig Topperc4b852a2015-02-01 08:52:55 +0000202
Craig Topperc6338672018-05-31 00:51:20 +0000203#define _mm512_maskz_rcp28_round_ps(M, A, R) \
Craig Topperc4b852a2015-02-01 08:52:55 +0000204 (__m512)__builtin_ia32_rcp28ps_mask((__v16sf)(__m512)(A), \
205 (__v16sf)_mm512_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000206 (__mmask16)(M), (int)(R))
Craig Topperc4b852a2015-02-01 08:52:55 +0000207
208#define _mm512_rcp28_ps(A) \
Craig Topperda97c202015-02-01 10:15:11 +0000209 _mm512_rcp28_round_ps((A), _MM_FROUND_CUR_DIRECTION)
Craig Topperc4b852a2015-02-01 08:52:55 +0000210
211#define _mm512_mask_rcp28_ps(S, M, A) \
Craig Topperda97c202015-02-01 10:15:11 +0000212 _mm512_mask_rcp28_round_ps((S), (M), (A), _MM_FROUND_CUR_DIRECTION)
Craig Topperc4b852a2015-02-01 08:52:55 +0000213
214#define _mm512_maskz_rcp28_ps(M, A) \
Craig Topperda97c202015-02-01 10:15:11 +0000215 _mm512_maskz_rcp28_round_ps((M), (A), _MM_FROUND_CUR_DIRECTION)
Craig Topperc4b852a2015-02-01 08:52:55 +0000216
Craig Topperc6338672018-05-31 00:51:20 +0000217#define _mm_rcp28_round_ss(A, B, R) \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000218 (__m128)__builtin_ia32_rcp28ss_round_mask((__v4sf)(__m128)(A), \
Craig Topper0bb46642016-05-17 04:41:38 +0000219 (__v4sf)(__m128)(B), \
220 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000221 (__mmask8)-1, (int)(R))
Craig Topperda97c202015-02-01 10:15:11 +0000222
Craig Topperc6338672018-05-31 00:51:20 +0000223#define _mm_mask_rcp28_round_ss(S, M, A, B, R) \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000224 (__m128)__builtin_ia32_rcp28ss_round_mask((__v4sf)(__m128)(A), \
Craig Topper0bb46642016-05-17 04:41:38 +0000225 (__v4sf)(__m128)(B), \
226 (__v4sf)(__m128)(S), \
Craig Topperc6338672018-05-31 00:51:20 +0000227 (__mmask8)(M), (int)(R))
Craig Topperda97c202015-02-01 10:15:11 +0000228
Craig Topperc6338672018-05-31 00:51:20 +0000229#define _mm_maskz_rcp28_round_ss(M, A, B, R) \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000230 (__m128)__builtin_ia32_rcp28ss_round_mask((__v4sf)(__m128)(A), \
Craig Topper0bb46642016-05-17 04:41:38 +0000231 (__v4sf)(__m128)(B), \
232 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000233 (__mmask8)(M), (int)(R))
Craig Topperda97c202015-02-01 10:15:11 +0000234
235#define _mm_rcp28_ss(A, B) \
236 _mm_rcp28_round_ss((A), (B), _MM_FROUND_CUR_DIRECTION)
237
238#define _mm_mask_rcp28_ss(S, M, A, B) \
239 _mm_mask_rcp28_round_ss((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION)
240
241#define _mm_maskz_rcp28_ss(M, A, B) \
242 _mm_maskz_rcp28_round_ss((M), (A), (B), _MM_FROUND_CUR_DIRECTION)
Craig Topperb01fc312015-02-01 08:05:12 +0000243
Craig Topperc6338672018-05-31 00:51:20 +0000244#define _mm_rcp28_round_sd(A, B, R) \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000245 (__m128d)__builtin_ia32_rcp28sd_round_mask((__v2df)(__m128d)(A), \
Craig Topper0bb46642016-05-17 04:41:38 +0000246 (__v2df)(__m128d)(B), \
247 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000248 (__mmask8)-1, (int)(R))
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000249
Craig Topperc6338672018-05-31 00:51:20 +0000250#define _mm_mask_rcp28_round_sd(S, M, A, B, R) \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000251 (__m128d)__builtin_ia32_rcp28sd_round_mask((__v2df)(__m128d)(A), \
Craig Topper0bb46642016-05-17 04:41:38 +0000252 (__v2df)(__m128d)(B), \
253 (__v2df)(__m128d)(S), \
Craig Topperc6338672018-05-31 00:51:20 +0000254 (__mmask8)(M), (int)(R))
Craig Topperda97c202015-02-01 10:15:11 +0000255
Craig Topperc6338672018-05-31 00:51:20 +0000256#define _mm_maskz_rcp28_round_sd(M, A, B, R) \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000257 (__m128d)__builtin_ia32_rcp28sd_round_mask((__v2df)(__m128d)(A), \
Craig Topper0bb46642016-05-17 04:41:38 +0000258 (__v2df)(__m128d)(B), \
259 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000260 (__mmask8)(M), (int)(R))
Craig Topperda97c202015-02-01 10:15:11 +0000261
262#define _mm_rcp28_sd(A, B) \
263 _mm_rcp28_round_sd((A), (B), _MM_FROUND_CUR_DIRECTION)
264
265#define _mm_mask_rcp28_sd(S, M, A, B) \
266 _mm_mask_rcp28_round_sd((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION)
267
268#define _mm_maskz_rcp28_sd(M, A, B) \
269 _mm_maskz_rcp28_round_sd((M), (A), (B), _MM_FROUND_CUR_DIRECTION)
270
Craig Topper73d1d402018-05-30 22:33:21 +0000271#endif /* __AVX512ERINTRIN_H */