blob: 08e5578d3ee457bab03f712cd5fa8855b783e33d [file] [log] [blame]
Craig Topper991d4992015-11-03 06:16:31 +00001/*===---- avx512fintrin.h - AVX512F intrinsics -----------------------------===
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21 *===-----------------------------------------------------------------------===
22 */
23#ifndef __IMMINTRIN_H
24#error "Never use <avx512fintrin.h> directly; include <immintrin.h> instead."
25#endif
26
27#ifndef __AVX512FINTRIN_H
28#define __AVX512FINTRIN_H
29
Michael Zuckerman6f08ceb2016-05-26 06:54:52 +000030typedef char __v64qi __attribute__((__vector_size__(64)));
31typedef short __v32hi __attribute__((__vector_size__(64)));
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +000032typedef double __v8df __attribute__((__vector_size__(64)));
33typedef float __v16sf __attribute__((__vector_size__(64)));
34typedef long long __v8di __attribute__((__vector_size__(64)));
35typedef int __v16si __attribute__((__vector_size__(64)));
36
Craig Topper6a77b622016-06-04 05:43:41 +000037/* Unsigned types */
38typedef unsigned char __v64qu __attribute__((__vector_size__(64)));
39typedef unsigned short __v32hu __attribute__((__vector_size__(64)));
40typedef unsigned long long __v8du __attribute__((__vector_size__(64)));
41typedef unsigned int __v16su __attribute__((__vector_size__(64)));
42
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +000043typedef float __m512 __attribute__((__vector_size__(64)));
44typedef double __m512d __attribute__((__vector_size__(64)));
45typedef long long __m512i __attribute__((__vector_size__(64)));
46
47typedef unsigned char __mmask8;
48typedef unsigned short __mmask16;
49
50/* Rounding mode macros. */
51#define _MM_FROUND_TO_NEAREST_INT 0x00
52#define _MM_FROUND_TO_NEG_INF 0x01
53#define _MM_FROUND_TO_POS_INF 0x02
54#define _MM_FROUND_TO_ZERO 0x03
55#define _MM_FROUND_CUR_DIRECTION 0x04
56
Asaf Badouh2f344b72016-08-07 10:43:04 +000057/* Constants for integer comparison predicates */
58typedef enum {
59 _MM_CMPINT_EQ, /* Equal */
60 _MM_CMPINT_LT, /* Less than */
61 _MM_CMPINT_LE, /* Less than or Equal */
62 _MM_CMPINT_UNUSED,
63 _MM_CMPINT_NE, /* Not Equal */
64 _MM_CMPINT_NLT, /* Not Less than */
65#define _MM_CMPINT_GE _MM_CMPINT_NLT /* Greater than or Equal */
66 _MM_CMPINT_NLE /* Not Less than or Equal */
67#define _MM_CMPINT_GT _MM_CMPINT_NLE /* Greater than */
68} _MM_CMPINT_ENUM;
69
Michael Zuckermandef78752016-03-28 12:23:09 +000070typedef enum
71{
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +000072 _MM_PERM_AAAA = 0x00, _MM_PERM_AAAB = 0x01, _MM_PERM_AAAC = 0x02,
73 _MM_PERM_AAAD = 0x03, _MM_PERM_AABA = 0x04, _MM_PERM_AABB = 0x05,
74 _MM_PERM_AABC = 0x06, _MM_PERM_AABD = 0x07, _MM_PERM_AACA = 0x08,
75 _MM_PERM_AACB = 0x09, _MM_PERM_AACC = 0x0A, _MM_PERM_AACD = 0x0B,
76 _MM_PERM_AADA = 0x0C, _MM_PERM_AADB = 0x0D, _MM_PERM_AADC = 0x0E,
77 _MM_PERM_AADD = 0x0F, _MM_PERM_ABAA = 0x10, _MM_PERM_ABAB = 0x11,
78 _MM_PERM_ABAC = 0x12, _MM_PERM_ABAD = 0x13, _MM_PERM_ABBA = 0x14,
79 _MM_PERM_ABBB = 0x15, _MM_PERM_ABBC = 0x16, _MM_PERM_ABBD = 0x17,
80 _MM_PERM_ABCA = 0x18, _MM_PERM_ABCB = 0x19, _MM_PERM_ABCC = 0x1A,
81 _MM_PERM_ABCD = 0x1B, _MM_PERM_ABDA = 0x1C, _MM_PERM_ABDB = 0x1D,
82 _MM_PERM_ABDC = 0x1E, _MM_PERM_ABDD = 0x1F, _MM_PERM_ACAA = 0x20,
83 _MM_PERM_ACAB = 0x21, _MM_PERM_ACAC = 0x22, _MM_PERM_ACAD = 0x23,
84 _MM_PERM_ACBA = 0x24, _MM_PERM_ACBB = 0x25, _MM_PERM_ACBC = 0x26,
85 _MM_PERM_ACBD = 0x27, _MM_PERM_ACCA = 0x28, _MM_PERM_ACCB = 0x29,
86 _MM_PERM_ACCC = 0x2A, _MM_PERM_ACCD = 0x2B, _MM_PERM_ACDA = 0x2C,
87 _MM_PERM_ACDB = 0x2D, _MM_PERM_ACDC = 0x2E, _MM_PERM_ACDD = 0x2F,
88 _MM_PERM_ADAA = 0x30, _MM_PERM_ADAB = 0x31, _MM_PERM_ADAC = 0x32,
89 _MM_PERM_ADAD = 0x33, _MM_PERM_ADBA = 0x34, _MM_PERM_ADBB = 0x35,
90 _MM_PERM_ADBC = 0x36, _MM_PERM_ADBD = 0x37, _MM_PERM_ADCA = 0x38,
91 _MM_PERM_ADCB = 0x39, _MM_PERM_ADCC = 0x3A, _MM_PERM_ADCD = 0x3B,
92 _MM_PERM_ADDA = 0x3C, _MM_PERM_ADDB = 0x3D, _MM_PERM_ADDC = 0x3E,
93 _MM_PERM_ADDD = 0x3F, _MM_PERM_BAAA = 0x40, _MM_PERM_BAAB = 0x41,
94 _MM_PERM_BAAC = 0x42, _MM_PERM_BAAD = 0x43, _MM_PERM_BABA = 0x44,
95 _MM_PERM_BABB = 0x45, _MM_PERM_BABC = 0x46, _MM_PERM_BABD = 0x47,
96 _MM_PERM_BACA = 0x48, _MM_PERM_BACB = 0x49, _MM_PERM_BACC = 0x4A,
97 _MM_PERM_BACD = 0x4B, _MM_PERM_BADA = 0x4C, _MM_PERM_BADB = 0x4D,
98 _MM_PERM_BADC = 0x4E, _MM_PERM_BADD = 0x4F, _MM_PERM_BBAA = 0x50,
99 _MM_PERM_BBAB = 0x51, _MM_PERM_BBAC = 0x52, _MM_PERM_BBAD = 0x53,
100 _MM_PERM_BBBA = 0x54, _MM_PERM_BBBB = 0x55, _MM_PERM_BBBC = 0x56,
101 _MM_PERM_BBBD = 0x57, _MM_PERM_BBCA = 0x58, _MM_PERM_BBCB = 0x59,
102 _MM_PERM_BBCC = 0x5A, _MM_PERM_BBCD = 0x5B, _MM_PERM_BBDA = 0x5C,
103 _MM_PERM_BBDB = 0x5D, _MM_PERM_BBDC = 0x5E, _MM_PERM_BBDD = 0x5F,
104 _MM_PERM_BCAA = 0x60, _MM_PERM_BCAB = 0x61, _MM_PERM_BCAC = 0x62,
105 _MM_PERM_BCAD = 0x63, _MM_PERM_BCBA = 0x64, _MM_PERM_BCBB = 0x65,
106 _MM_PERM_BCBC = 0x66, _MM_PERM_BCBD = 0x67, _MM_PERM_BCCA = 0x68,
107 _MM_PERM_BCCB = 0x69, _MM_PERM_BCCC = 0x6A, _MM_PERM_BCCD = 0x6B,
108 _MM_PERM_BCDA = 0x6C, _MM_PERM_BCDB = 0x6D, _MM_PERM_BCDC = 0x6E,
109 _MM_PERM_BCDD = 0x6F, _MM_PERM_BDAA = 0x70, _MM_PERM_BDAB = 0x71,
110 _MM_PERM_BDAC = 0x72, _MM_PERM_BDAD = 0x73, _MM_PERM_BDBA = 0x74,
111 _MM_PERM_BDBB = 0x75, _MM_PERM_BDBC = 0x76, _MM_PERM_BDBD = 0x77,
112 _MM_PERM_BDCA = 0x78, _MM_PERM_BDCB = 0x79, _MM_PERM_BDCC = 0x7A,
113 _MM_PERM_BDCD = 0x7B, _MM_PERM_BDDA = 0x7C, _MM_PERM_BDDB = 0x7D,
114 _MM_PERM_BDDC = 0x7E, _MM_PERM_BDDD = 0x7F, _MM_PERM_CAAA = 0x80,
115 _MM_PERM_CAAB = 0x81, _MM_PERM_CAAC = 0x82, _MM_PERM_CAAD = 0x83,
116 _MM_PERM_CABA = 0x84, _MM_PERM_CABB = 0x85, _MM_PERM_CABC = 0x86,
117 _MM_PERM_CABD = 0x87, _MM_PERM_CACA = 0x88, _MM_PERM_CACB = 0x89,
118 _MM_PERM_CACC = 0x8A, _MM_PERM_CACD = 0x8B, _MM_PERM_CADA = 0x8C,
119 _MM_PERM_CADB = 0x8D, _MM_PERM_CADC = 0x8E, _MM_PERM_CADD = 0x8F,
120 _MM_PERM_CBAA = 0x90, _MM_PERM_CBAB = 0x91, _MM_PERM_CBAC = 0x92,
121 _MM_PERM_CBAD = 0x93, _MM_PERM_CBBA = 0x94, _MM_PERM_CBBB = 0x95,
122 _MM_PERM_CBBC = 0x96, _MM_PERM_CBBD = 0x97, _MM_PERM_CBCA = 0x98,
123 _MM_PERM_CBCB = 0x99, _MM_PERM_CBCC = 0x9A, _MM_PERM_CBCD = 0x9B,
124 _MM_PERM_CBDA = 0x9C, _MM_PERM_CBDB = 0x9D, _MM_PERM_CBDC = 0x9E,
125 _MM_PERM_CBDD = 0x9F, _MM_PERM_CCAA = 0xA0, _MM_PERM_CCAB = 0xA1,
126 _MM_PERM_CCAC = 0xA2, _MM_PERM_CCAD = 0xA3, _MM_PERM_CCBA = 0xA4,
127 _MM_PERM_CCBB = 0xA5, _MM_PERM_CCBC = 0xA6, _MM_PERM_CCBD = 0xA7,
128 _MM_PERM_CCCA = 0xA8, _MM_PERM_CCCB = 0xA9, _MM_PERM_CCCC = 0xAA,
129 _MM_PERM_CCCD = 0xAB, _MM_PERM_CCDA = 0xAC, _MM_PERM_CCDB = 0xAD,
130 _MM_PERM_CCDC = 0xAE, _MM_PERM_CCDD = 0xAF, _MM_PERM_CDAA = 0xB0,
131 _MM_PERM_CDAB = 0xB1, _MM_PERM_CDAC = 0xB2, _MM_PERM_CDAD = 0xB3,
132 _MM_PERM_CDBA = 0xB4, _MM_PERM_CDBB = 0xB5, _MM_PERM_CDBC = 0xB6,
133 _MM_PERM_CDBD = 0xB7, _MM_PERM_CDCA = 0xB8, _MM_PERM_CDCB = 0xB9,
134 _MM_PERM_CDCC = 0xBA, _MM_PERM_CDCD = 0xBB, _MM_PERM_CDDA = 0xBC,
135 _MM_PERM_CDDB = 0xBD, _MM_PERM_CDDC = 0xBE, _MM_PERM_CDDD = 0xBF,
136 _MM_PERM_DAAA = 0xC0, _MM_PERM_DAAB = 0xC1, _MM_PERM_DAAC = 0xC2,
137 _MM_PERM_DAAD = 0xC3, _MM_PERM_DABA = 0xC4, _MM_PERM_DABB = 0xC5,
138 _MM_PERM_DABC = 0xC6, _MM_PERM_DABD = 0xC7, _MM_PERM_DACA = 0xC8,
139 _MM_PERM_DACB = 0xC9, _MM_PERM_DACC = 0xCA, _MM_PERM_DACD = 0xCB,
140 _MM_PERM_DADA = 0xCC, _MM_PERM_DADB = 0xCD, _MM_PERM_DADC = 0xCE,
141 _MM_PERM_DADD = 0xCF, _MM_PERM_DBAA = 0xD0, _MM_PERM_DBAB = 0xD1,
142 _MM_PERM_DBAC = 0xD2, _MM_PERM_DBAD = 0xD3, _MM_PERM_DBBA = 0xD4,
143 _MM_PERM_DBBB = 0xD5, _MM_PERM_DBBC = 0xD6, _MM_PERM_DBBD = 0xD7,
144 _MM_PERM_DBCA = 0xD8, _MM_PERM_DBCB = 0xD9, _MM_PERM_DBCC = 0xDA,
145 _MM_PERM_DBCD = 0xDB, _MM_PERM_DBDA = 0xDC, _MM_PERM_DBDB = 0xDD,
146 _MM_PERM_DBDC = 0xDE, _MM_PERM_DBDD = 0xDF, _MM_PERM_DCAA = 0xE0,
147 _MM_PERM_DCAB = 0xE1, _MM_PERM_DCAC = 0xE2, _MM_PERM_DCAD = 0xE3,
148 _MM_PERM_DCBA = 0xE4, _MM_PERM_DCBB = 0xE5, _MM_PERM_DCBC = 0xE6,
149 _MM_PERM_DCBD = 0xE7, _MM_PERM_DCCA = 0xE8, _MM_PERM_DCCB = 0xE9,
150 _MM_PERM_DCCC = 0xEA, _MM_PERM_DCCD = 0xEB, _MM_PERM_DCDA = 0xEC,
151 _MM_PERM_DCDB = 0xED, _MM_PERM_DCDC = 0xEE, _MM_PERM_DCDD = 0xEF,
152 _MM_PERM_DDAA = 0xF0, _MM_PERM_DDAB = 0xF1, _MM_PERM_DDAC = 0xF2,
153 _MM_PERM_DDAD = 0xF3, _MM_PERM_DDBA = 0xF4, _MM_PERM_DDBB = 0xF5,
154 _MM_PERM_DDBC = 0xF6, _MM_PERM_DDBD = 0xF7, _MM_PERM_DDCA = 0xF8,
155 _MM_PERM_DDCB = 0xF9, _MM_PERM_DDCC = 0xFA, _MM_PERM_DDCD = 0xFB,
156 _MM_PERM_DDDA = 0xFC, _MM_PERM_DDDB = 0xFD, _MM_PERM_DDDC = 0xFE,
157 _MM_PERM_DDDD = 0xFF
158} _MM_PERM_ENUM;
159
160typedef enum
161{
Michael Zuckermandef78752016-03-28 12:23:09 +0000162 _MM_MANT_NORM_1_2, /* interval [1, 2) */
163 _MM_MANT_NORM_p5_2, /* interval [0.5, 2) */
164 _MM_MANT_NORM_p5_1, /* interval [0.5, 1) */
165 _MM_MANT_NORM_p75_1p5 /* interval [0.75, 1.5) */
166} _MM_MANTISSA_NORM_ENUM;
167
168typedef enum
169{
170 _MM_MANT_SIGN_src, /* sign = sign(SRC) */
171 _MM_MANT_SIGN_zero, /* sign = 0 */
172 _MM_MANT_SIGN_nan /* DEST = NaN if sign(SRC) = 1 */
173} _MM_MANTISSA_SIGN_ENUM;
174
Eric Christopher4d1851682015-06-17 07:09:20 +0000175/* Define the default attributes for the functions in this file. */
Michael Kupersteine45af542015-06-30 13:36:19 +0000176#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512f")))
Eric Christopher4d1851682015-06-17 07:09:20 +0000177
Adam Nemet0d5bb552014-07-28 17:14:40 +0000178/* Create vectors with repeated elements */
179
Michael Kupersteine45af542015-06-30 13:36:19 +0000180static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000181_mm512_setzero_si512(void)
182{
183 return (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
184}
185
Michael Zuckermanf36f6eb2016-06-05 15:12:52 +0000186#define _mm512_setzero_epi32 _mm512_setzero_si512
187
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000188static __inline__ __m512d __DEFAULT_FN_ATTRS
Craig Topper3a0c7262016-06-09 05:14:28 +0000189_mm512_undefined_pd(void)
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000190{
191 return (__m512d)__builtin_ia32_undef512();
192}
193
194static __inline__ __m512 __DEFAULT_FN_ATTRS
Craig Topper3a0c7262016-06-09 05:14:28 +0000195_mm512_undefined(void)
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000196{
197 return (__m512)__builtin_ia32_undef512();
198}
199
200static __inline__ __m512 __DEFAULT_FN_ATTRS
Craig Topper3a0c7262016-06-09 05:14:28 +0000201_mm512_undefined_ps(void)
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000202{
203 return (__m512)__builtin_ia32_undef512();
204}
205
206static __inline__ __m512i __DEFAULT_FN_ATTRS
Craig Topper3a0c7262016-06-09 05:14:28 +0000207_mm512_undefined_epi32(void)
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000208{
209 return (__m512i)__builtin_ia32_undef512();
210}
Simon Pilgrimf5a88372016-07-05 12:59:33 +0000211
Michael Zuckerman8c2900f2016-04-27 11:43:14 +0000212static __inline__ __m512i __DEFAULT_FN_ATTRS
213_mm512_broadcastd_epi32 (__m128i __A)
214{
Simon Pilgrimf5a88372016-07-05 12:59:33 +0000215 return (__m512i)__builtin_shufflevector((__v4si) __A,
216 (__v4si)_mm_undefined_si128(),
217 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
Michael Zuckerman8c2900f2016-04-27 11:43:14 +0000218}
219
220static __inline__ __m512i __DEFAULT_FN_ATTRS
221_mm512_mask_broadcastd_epi32 (__m512i __O, __mmask16 __M, __m128i __A)
222{
Simon Pilgrimf5a88372016-07-05 12:59:33 +0000223 return (__m512i)__builtin_ia32_selectd_512(__M,
224 (__v16si) _mm512_broadcastd_epi32(__A),
225 (__v16si) __O);
Michael Zuckerman8c2900f2016-04-27 11:43:14 +0000226}
227
228static __inline__ __m512i __DEFAULT_FN_ATTRS
229_mm512_maskz_broadcastd_epi32 (__mmask16 __M, __m128i __A)
230{
Simon Pilgrimf5a88372016-07-05 12:59:33 +0000231 return (__m512i)__builtin_ia32_selectd_512(__M,
232 (__v16si) _mm512_broadcastd_epi32(__A),
233 (__v16si) _mm512_setzero_si512());
Michael Zuckerman8c2900f2016-04-27 11:43:14 +0000234}
235
236static __inline__ __m512i __DEFAULT_FN_ATTRS
237_mm512_broadcastq_epi64 (__m128i __A)
238{
Simon Pilgrimf5a88372016-07-05 12:59:33 +0000239 return (__m512i)__builtin_shufflevector((__v2di) __A,
240 (__v2di) _mm_undefined_si128(),
241 0, 0, 0, 0, 0, 0, 0, 0);
Michael Zuckerman8c2900f2016-04-27 11:43:14 +0000242}
243
244static __inline__ __m512i __DEFAULT_FN_ATTRS
245_mm512_mask_broadcastq_epi64 (__m512i __O, __mmask8 __M, __m128i __A)
246{
Simon Pilgrimf5a88372016-07-05 12:59:33 +0000247 return (__m512i)__builtin_ia32_selectq_512(__M,
248 (__v8di) _mm512_broadcastq_epi64(__A),
249 (__v8di) __O);
250
Michael Zuckerman8c2900f2016-04-27 11:43:14 +0000251}
252
253static __inline__ __m512i __DEFAULT_FN_ATTRS
254_mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
255{
Simon Pilgrimf5a88372016-07-05 12:59:33 +0000256 return (__m512i)__builtin_ia32_selectq_512(__M,
257 (__v8di) _mm512_broadcastq_epi64(__A),
258 (__v8di) _mm512_setzero_si512());
Michael Zuckerman8c2900f2016-04-27 11:43:14 +0000259}
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000260
Michael Kupersteine45af542015-06-30 13:36:19 +0000261static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000262_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
263{
264 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
265 (__v16si)
266 _mm512_setzero_si512 (),
267 __M);
268}
269
Michael Kupersteine45af542015-06-30 13:36:19 +0000270static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000271_mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
272{
273#ifdef __x86_64__
274 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
275 (__v8di)
276 _mm512_setzero_si512 (),
277 __M);
278#else
279 return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
280 (__v8di)
281 _mm512_setzero_si512 (),
282 __M);
283#endif
284}
285
Michael Kupersteine45af542015-06-30 13:36:19 +0000286static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000287_mm512_setzero_ps(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000288{
289 return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
290 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
291}
Michael Zuckermanf36f6eb2016-06-05 15:12:52 +0000292
293#define _mm512_setzero _mm512_setzero_ps
294
Michael Kupersteine45af542015-06-30 13:36:19 +0000295static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000296_mm512_setzero_pd(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000297{
298 return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
299}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000300
Michael Kupersteine45af542015-06-30 13:36:19 +0000301static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000302_mm512_set1_ps(float __w)
303{
304 return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
305 __w, __w, __w, __w, __w, __w, __w, __w };
306}
307
Michael Kupersteine45af542015-06-30 13:36:19 +0000308static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000309_mm512_set1_pd(double __w)
310{
311 return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
312}
313
Michael Kupersteine45af542015-06-30 13:36:19 +0000314static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckerman6f08ceb2016-05-26 06:54:52 +0000315_mm512_set1_epi8(char __w)
316{
317 return (__m512i)(__v64qi){ __w, __w, __w, __w, __w, __w, __w, __w,
318 __w, __w, __w, __w, __w, __w, __w, __w,
319 __w, __w, __w, __w, __w, __w, __w, __w,
320 __w, __w, __w, __w, __w, __w, __w, __w,
321 __w, __w, __w, __w, __w, __w, __w, __w,
322 __w, __w, __w, __w, __w, __w, __w, __w,
323 __w, __w, __w, __w, __w, __w, __w, __w,
324 __w, __w, __w, __w, __w, __w, __w, __w };
325}
326
327static __inline __m512i __DEFAULT_FN_ATTRS
328_mm512_set1_epi16(short __w)
329{
330 return (__m512i)(__v32hi){ __w, __w, __w, __w, __w, __w, __w, __w,
331 __w, __w, __w, __w, __w, __w, __w, __w,
332 __w, __w, __w, __w, __w, __w, __w, __w,
333 __w, __w, __w, __w, __w, __w, __w, __w };
334}
335
336static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000337_mm512_set1_epi32(int __s)
338{
339 return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s,
340 __s, __s, __s, __s, __s, __s, __s, __s };
341}
342
Michael Kupersteine45af542015-06-30 13:36:19 +0000343static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000344_mm512_set1_epi64(long long __d)
345{
346 return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
347}
348
Michael Kupersteine45af542015-06-30 13:36:19 +0000349static __inline__ __m512 __DEFAULT_FN_ATTRS
Simon Pilgrimf5a88372016-07-05 12:59:33 +0000350_mm512_broadcastss_ps(__m128 __A)
Adam Nemet4abc07c2014-08-13 00:29:01 +0000351{
Simon Pilgrimf5a88372016-07-05 12:59:33 +0000352 return (__m512)__builtin_shufflevector((__v4sf) __A,
353 (__v4sf)_mm_undefined_ps(),
354 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
Adam Nemet4abc07c2014-08-13 00:29:01 +0000355}
356
Michael Zuckerman95721ac2016-06-05 15:43:30 +0000357static __inline __m512i __DEFAULT_FN_ATTRS
358_mm512_set4_epi32 (int __A, int __B, int __C, int __D)
359{
360 return (__m512i)(__v16si)
361 { __D, __C, __B, __A, __D, __C, __B, __A,
362 __D, __C, __B, __A, __D, __C, __B, __A };
363}
364
365static __inline __m512i __DEFAULT_FN_ATTRS
366_mm512_set4_epi64 (long long __A, long long __B, long long __C,
367 long long __D)
368{
369 return (__m512i) (__v8di)
370 { __D, __C, __B, __A, __D, __C, __B, __A };
371}
372
373static __inline __m512d __DEFAULT_FN_ATTRS
374_mm512_set4_pd (double __A, double __B, double __C, double __D)
375{
376 return (__m512d)
377 { __D, __C, __B, __A, __D, __C, __B, __A };
378}
379
380static __inline __m512 __DEFAULT_FN_ATTRS
381_mm512_set4_ps (float __A, float __B, float __C, float __D)
382{
383 return (__m512)
384 { __D, __C, __B, __A, __D, __C, __B, __A,
385 __D, __C, __B, __A, __D, __C, __B, __A };
386}
387
388#define _mm512_setr4_epi32(e0,e1,e2,e3) \
Craig Topper60589492016-06-08 06:08:04 +0000389 _mm512_set4_epi32((e3),(e2),(e1),(e0))
Michael Zuckerman95721ac2016-06-05 15:43:30 +0000390
391#define _mm512_setr4_epi64(e0,e1,e2,e3) \
Craig Topper60589492016-06-08 06:08:04 +0000392 _mm512_set4_epi64((e3),(e2),(e1),(e0))
Michael Zuckerman95721ac2016-06-05 15:43:30 +0000393
394#define _mm512_setr4_pd(e0,e1,e2,e3) \
Craig Topper60589492016-06-08 06:08:04 +0000395 _mm512_set4_pd((e3),(e2),(e1),(e0))
Michael Zuckerman95721ac2016-06-05 15:43:30 +0000396
397#define _mm512_setr4_ps(e0,e1,e2,e3) \
Craig Topper60589492016-06-08 06:08:04 +0000398 _mm512_set4_ps((e3),(e2),(e1),(e0))
Michael Zuckerman95721ac2016-06-05 15:43:30 +0000399
Michael Kupersteine45af542015-06-30 13:36:19 +0000400static __inline__ __m512d __DEFAULT_FN_ATTRS
Simon Pilgrimf5a88372016-07-05 12:59:33 +0000401_mm512_broadcastsd_pd(__m128d __A)
Adam Nemet4abc07c2014-08-13 00:29:01 +0000402{
Simon Pilgrimf5a88372016-07-05 12:59:33 +0000403 return (__m512d)__builtin_shufflevector((__v2df) __A,
404 (__v2df) _mm_undefined_pd(),
405 0, 0, 0, 0, 0, 0, 0, 0);
Adam Nemet4abc07c2014-08-13 00:29:01 +0000406}
407
Adam Nemetc871ff92014-07-30 16:51:24 +0000408/* Cast between vector types */
409
Michael Kupersteine45af542015-06-30 13:36:19 +0000410static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000411_mm512_castpd256_pd512(__m256d __a)
412{
413 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
414}
415
Michael Kupersteine45af542015-06-30 13:36:19 +0000416static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000417_mm512_castps256_ps512(__m256 __a)
418{
419 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7,
420 -1, -1, -1, -1, -1, -1, -1, -1);
421}
422
Michael Kupersteine45af542015-06-30 13:36:19 +0000423static __inline __m128d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000424_mm512_castpd512_pd128(__m512d __a)
425{
426 return __builtin_shufflevector(__a, __a, 0, 1);
427}
428
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000429static __inline __m256d __DEFAULT_FN_ATTRS
430_mm512_castpd512_pd256 (__m512d __A)
431{
432 return __builtin_shufflevector(__A, __A, 0, 1, 2, 3);
433}
434
Michael Kupersteine45af542015-06-30 13:36:19 +0000435static __inline __m128 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000436_mm512_castps512_ps128(__m512 __a)
437{
438 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
439}
440
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000441static __inline __m256 __DEFAULT_FN_ATTRS
442_mm512_castps512_ps256 (__m512 __A)
443{
444 return __builtin_shufflevector(__A, __A, 0, 1, 2, 3, 4, 5, 6, 7);
445}
446
447static __inline __m512 __DEFAULT_FN_ATTRS
448_mm512_castpd_ps (__m512d __A)
449{
450 return (__m512) (__A);
451}
452
453static __inline __m512i __DEFAULT_FN_ATTRS
454_mm512_castpd_si512 (__m512d __A)
455{
456 return (__m512i) (__A);
457}
Michael Zuckermanc6677032016-05-03 14:26:52 +0000458
459static __inline__ __m512d __DEFAULT_FN_ATTRS
460_mm512_castpd128_pd512 (__m128d __A)
461{
462 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
463}
464
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000465static __inline __m512d __DEFAULT_FN_ATTRS
466_mm512_castps_pd (__m512 __A)
467{
468 return (__m512d) (__A);
469}
470
471static __inline __m512i __DEFAULT_FN_ATTRS
472_mm512_castps_si512 (__m512 __A)
473{
474 return (__m512i) (__A);
475}
476
Michael Zuckermanc6677032016-05-03 14:26:52 +0000477static __inline__ __m512 __DEFAULT_FN_ATTRS
478_mm512_castps128_ps512 (__m128 __A)
479{
480 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
481}
482
483static __inline__ __m512i __DEFAULT_FN_ATTRS
484_mm512_castsi128_si512 (__m128i __A)
485{
486 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
487}
488
489static __inline__ __m512i __DEFAULT_FN_ATTRS
490_mm512_castsi256_si512 (__m256i __A)
491{
492 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1);
493}
494
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000495static __inline __m512 __DEFAULT_FN_ATTRS
496_mm512_castsi512_ps (__m512i __A)
497{
498 return (__m512) (__A);
499}
500
501static __inline __m512d __DEFAULT_FN_ATTRS
502_mm512_castsi512_pd (__m512i __A)
503{
504 return (__m512d) (__A);
505}
506
507static __inline __m128i __DEFAULT_FN_ATTRS
508_mm512_castsi512_si128 (__m512i __A)
509{
510 return (__m128i)__builtin_shufflevector(__A, __A , 0, 1);
511}
512
Michael Zuckerman22c47e62016-05-26 14:32:11 +0000513static __inline __m256i __DEFAULT_FN_ATTRS
514_mm512_castsi512_si256 (__m512i __A)
515{
516 return (__m256i)__builtin_shufflevector(__A, __A , 0, 1, 2, 3);
517}
518
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000519/* Bitwise operators */
Michael Kupersteine45af542015-06-30 13:36:19 +0000520static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000521_mm512_and_epi32(__m512i __a, __m512i __b)
522{
Craig Topper6a77b622016-06-04 05:43:41 +0000523 return (__m512i)((__v16su)__a & (__v16su)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000524}
525
Michael Kupersteine45af542015-06-30 13:36:19 +0000526static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000527_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
528{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000529 return (__m512i)__builtin_ia32_selectd_512((__mmask16)__k,
Asaf Badouh13633282016-07-05 12:24:14 +0000530 (__v16si) _mm512_and_epi32(__a, __b),
531 (__v16si) __src);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000532}
Asaf Badouh13633282016-07-05 12:24:14 +0000533
Michael Kupersteine45af542015-06-30 13:36:19 +0000534static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000535_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
536{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000537 return (__m512i) _mm512_mask_and_epi32(_mm512_setzero_si512 (),
Asaf Badouh13633282016-07-05 12:24:14 +0000538 __k, __a, __b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000539}
540
Michael Kupersteine45af542015-06-30 13:36:19 +0000541static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000542_mm512_and_epi64(__m512i __a, __m512i __b)
543{
Craig Topper6a77b622016-06-04 05:43:41 +0000544 return (__m512i)((__v8du)__a & (__v8du)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000545}
546
Michael Kupersteine45af542015-06-30 13:36:19 +0000547static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000548_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
549{
Asaf Badouh13633282016-07-05 12:24:14 +0000550 return (__m512i) __builtin_ia32_selectq_512 ((__mmask8) __k,
551 (__v8di) _mm512_and_epi64(__a, __b),
552 (__v8di) __src);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000553}
Asaf Badouh13633282016-07-05 12:24:14 +0000554
Michael Kupersteine45af542015-06-30 13:36:19 +0000555static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000556_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
557{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000558 return (__m512i) _mm512_mask_and_epi64(_mm512_setzero_si512 (),
Asaf Badouh13633282016-07-05 12:24:14 +0000559 __k, __a, __b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000560}
561
Michael Kupersteine45af542015-06-30 13:36:19 +0000562static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckerman2cacc352016-05-18 15:25:53 +0000563_mm512_andnot_si512 (__m512i __A, __m512i __B)
564{
Craig Topper6a77b622016-06-04 05:43:41 +0000565 return (__m512i)(~(__v8du)(__A) & (__v8du)__B);
Michael Zuckerman2cacc352016-05-18 15:25:53 +0000566}
567
568static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000569_mm512_andnot_epi32 (__m512i __A, __m512i __B)
570{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000571 return (__m512i)(~(__v16su)(__A) & (__v16su)__B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000572}
573
Michael Kupersteine45af542015-06-30 13:36:19 +0000574static __inline__ __m512i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000575_mm512_mask_andnot_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000576{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000577 return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
578 (__v16si)_mm512_andnot_epi32(__A, __B),
579 (__v16si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000580}
581
Michael Kupersteine45af542015-06-30 13:36:19 +0000582static __inline__ __m512i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000583_mm512_maskz_andnot_epi32(__mmask16 __U, __m512i __A, __m512i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000584{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000585 return (__m512i)_mm512_mask_andnot_epi32(_mm512_setzero_si512(),
586 __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000587}
588
Michael Kupersteine45af542015-06-30 13:36:19 +0000589static __inline__ __m512i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000590_mm512_andnot_epi64(__m512i __A, __m512i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000591{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000592 return (__m512i)(~(__v8du)(__A) & (__v8du)__B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000593}
594
Michael Kupersteine45af542015-06-30 13:36:19 +0000595static __inline__ __m512i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000596_mm512_mask_andnot_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000597{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000598 return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
599 (__v8di)_mm512_andnot_epi64(__A, __B),
600 (__v8di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000601}
602
Michael Kupersteine45af542015-06-30 13:36:19 +0000603static __inline__ __m512i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000604_mm512_maskz_andnot_epi64(__mmask8 __U, __m512i __A, __m512i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000605{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000606 return (__m512i)_mm512_mask_andnot_epi64(_mm512_setzero_si512(),
607 __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000608}
Craig Topper4d61a3c2016-07-11 06:14:18 +0000609
Michael Kupersteine45af542015-06-30 13:36:19 +0000610static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000611_mm512_or_epi32(__m512i __a, __m512i __b)
612{
Craig Topper6a77b622016-06-04 05:43:41 +0000613 return (__m512i)((__v16su)__a | (__v16su)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000614}
615
Michael Kupersteine45af542015-06-30 13:36:19 +0000616static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000617_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
618{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000619 return (__m512i)__builtin_ia32_selectd_512((__mmask16)__k,
620 (__v16si)_mm512_or_epi32(__a, __b),
621 (__v16si)__src);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000622}
Craig Topper4d61a3c2016-07-11 06:14:18 +0000623
Michael Kupersteine45af542015-06-30 13:36:19 +0000624static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000625_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
626{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000627 return (__m512i)_mm512_mask_or_epi32(_mm512_setzero_si512(), __k, __a, __b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000628}
629
Michael Kupersteine45af542015-06-30 13:36:19 +0000630static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000631_mm512_or_epi64(__m512i __a, __m512i __b)
632{
Craig Topper6a77b622016-06-04 05:43:41 +0000633 return (__m512i)((__v8du)__a | (__v8du)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000634}
635
Michael Kupersteine45af542015-06-30 13:36:19 +0000636static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000637_mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
638{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000639 return (__m512i)__builtin_ia32_selectq_512((__mmask8)__k,
640 (__v8di)_mm512_or_epi64(__a, __b),
641 (__v8di)__src);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000642}
Craig Topper4d61a3c2016-07-11 06:14:18 +0000643
Michael Kupersteine45af542015-06-30 13:36:19 +0000644static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000645_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
646{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000647 return (__m512i)_mm512_mask_or_epi64(_mm512_setzero_si512(), __k, __a, __b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000648}
649
Michael Kupersteine45af542015-06-30 13:36:19 +0000650static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000651_mm512_xor_epi32(__m512i __a, __m512i __b)
652{
Craig Topper6a77b622016-06-04 05:43:41 +0000653 return (__m512i)((__v16su)__a ^ (__v16su)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000654}
655
Michael Kupersteine45af542015-06-30 13:36:19 +0000656static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000657_mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
658{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000659 return (__m512i)__builtin_ia32_selectd_512((__mmask16)__k,
660 (__v16si)_mm512_xor_epi32(__a, __b),
661 (__v16si)__src);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000662}
Craig Topper4d61a3c2016-07-11 06:14:18 +0000663
Michael Kupersteine45af542015-06-30 13:36:19 +0000664static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000665_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
666{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000667 return (__m512i)_mm512_mask_xor_epi32(_mm512_setzero_si512(), __k, __a, __b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000668}
669
Michael Kupersteine45af542015-06-30 13:36:19 +0000670static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000671_mm512_xor_epi64(__m512i __a, __m512i __b)
672{
Craig Topper6a77b622016-06-04 05:43:41 +0000673 return (__m512i)((__v8du)__a ^ (__v8du)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000674}
675
Michael Kupersteine45af542015-06-30 13:36:19 +0000676static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000677_mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
678{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000679 return (__m512i)__builtin_ia32_selectq_512((__mmask8)__k,
680 (__v8di)_mm512_xor_epi64(__a, __b),
681 (__v8di)__src);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000682}
Craig Topper4d61a3c2016-07-11 06:14:18 +0000683
Michael Kupersteine45af542015-06-30 13:36:19 +0000684static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000685_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
686{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000687 return (__m512i)_mm512_mask_xor_epi64(_mm512_setzero_si512(), __k, __a, __b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000688}
689
Michael Kupersteine45af542015-06-30 13:36:19 +0000690static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000691_mm512_and_si512(__m512i __a, __m512i __b)
692{
Craig Topper6a77b622016-06-04 05:43:41 +0000693 return (__m512i)((__v8du)__a & (__v8du)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000694}
695
Michael Kupersteine45af542015-06-30 13:36:19 +0000696static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000697_mm512_or_si512(__m512i __a, __m512i __b)
698{
Craig Topper6a77b622016-06-04 05:43:41 +0000699 return (__m512i)((__v8du)__a | (__v8du)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000700}
701
Michael Kupersteine45af542015-06-30 13:36:19 +0000702static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000703_mm512_xor_si512(__m512i __a, __m512i __b)
704{
Craig Topper6a77b622016-06-04 05:43:41 +0000705 return (__m512i)((__v8du)__a ^ (__v8du)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000706}
Craig Topper4d61a3c2016-07-11 06:14:18 +0000707
Adam Nemet0d5bb552014-07-28 17:14:40 +0000708/* Arithmetic */
709
Michael Kupersteine45af542015-06-30 13:36:19 +0000710static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000711_mm512_add_pd(__m512d __a, __m512d __b)
712{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000713 return (__m512d)((__v8df)__a + (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000714}
715
Michael Kupersteine45af542015-06-30 13:36:19 +0000716static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000717_mm512_add_ps(__m512 __a, __m512 __b)
718{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000719 return (__m512)((__v16sf)__a + (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000720}
721
Michael Kupersteine45af542015-06-30 13:36:19 +0000722static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000723_mm512_mul_pd(__m512d __a, __m512d __b)
724{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000725 return (__m512d)((__v8df)__a * (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000726}
727
Michael Kupersteine45af542015-06-30 13:36:19 +0000728static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000729_mm512_mul_ps(__m512 __a, __m512 __b)
730{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000731 return (__m512)((__v16sf)__a * (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000732}
733
Michael Kupersteine45af542015-06-30 13:36:19 +0000734static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000735_mm512_sub_pd(__m512d __a, __m512d __b)
736{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000737 return (__m512d)((__v8df)__a - (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000738}
739
Michael Kupersteine45af542015-06-30 13:36:19 +0000740static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000741_mm512_sub_ps(__m512 __a, __m512 __b)
742{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000743 return (__m512)((__v16sf)__a - (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000744}
745
Michael Kupersteine45af542015-06-30 13:36:19 +0000746static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000747_mm512_add_epi64 (__m512i __A, __m512i __B)
748{
Craig Topper6a77b622016-06-04 05:43:41 +0000749 return (__m512i) ((__v8du) __A + (__v8du) __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000750}
751
Michael Kupersteine45af542015-06-30 13:36:19 +0000752static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000753_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
754{
755 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
756 (__v8di) __B,
757 (__v8di) __W,
758 (__mmask8) __U);
759}
760
Michael Kupersteine45af542015-06-30 13:36:19 +0000761static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000762_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
763{
764 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
765 (__v8di) __B,
766 (__v8di)
767 _mm512_setzero_si512 (),
768 (__mmask8) __U);
769}
770
Michael Kupersteine45af542015-06-30 13:36:19 +0000771static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000772_mm512_sub_epi64 (__m512i __A, __m512i __B)
773{
Craig Topper6a77b622016-06-04 05:43:41 +0000774 return (__m512i) ((__v8du) __A - (__v8du) __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000775}
776
Michael Kupersteine45af542015-06-30 13:36:19 +0000777static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000778_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
779{
780 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
781 (__v8di) __B,
782 (__v8di) __W,
783 (__mmask8) __U);
784}
785
Michael Kupersteine45af542015-06-30 13:36:19 +0000786static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000787_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
788{
789 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
790 (__v8di) __B,
791 (__v8di)
792 _mm512_setzero_si512 (),
793 (__mmask8) __U);
794}
795
Michael Kupersteine45af542015-06-30 13:36:19 +0000796static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000797_mm512_add_epi32 (__m512i __A, __m512i __B)
798{
Craig Topper6a77b622016-06-04 05:43:41 +0000799 return (__m512i) ((__v16su) __A + (__v16su) __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000800}
801
Michael Kupersteine45af542015-06-30 13:36:19 +0000802static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000803_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
804{
805 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
806 (__v16si) __B,
807 (__v16si) __W,
808 (__mmask16) __U);
809}
810
Michael Kupersteine45af542015-06-30 13:36:19 +0000811static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000812_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
813{
814 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
815 (__v16si) __B,
816 (__v16si)
817 _mm512_setzero_si512 (),
818 (__mmask16) __U);
819}
820
Michael Kupersteine45af542015-06-30 13:36:19 +0000821static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000822_mm512_sub_epi32 (__m512i __A, __m512i __B)
823{
Craig Topper6a77b622016-06-04 05:43:41 +0000824 return (__m512i) ((__v16su) __A - (__v16su) __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000825}
826
Michael Kupersteine45af542015-06-30 13:36:19 +0000827static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000828_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
829{
830 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
831 (__v16si) __B,
832 (__v16si) __W,
833 (__mmask16) __U);
834}
835
Michael Kupersteine45af542015-06-30 13:36:19 +0000836static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000837_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
838{
839 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
840 (__v16si) __B,
841 (__v16si)
842 _mm512_setzero_si512 (),
843 (__mmask16) __U);
844}
845
Craig Topperf3efec62016-06-08 06:08:07 +0000846#define _mm512_mask_max_round_pd(W, U, A, B, R) __extension__ ({ \
847 (__m512d)__builtin_ia32_maxpd512_mask((__v8df)(__m512d)(A), \
848 (__v8df)(__m512d)(B), \
849 (__v8df)(__m512d)(W), (__mmask8)(U), \
850 (int)(R)); })
Michael Zuckermane6aa66a2016-06-01 08:34:03 +0000851
Craig Topperf3efec62016-06-08 06:08:07 +0000852#define _mm512_maskz_max_round_pd(U, A, B, R) __extension__ ({ \
853 (__m512d)__builtin_ia32_maxpd512_mask((__v8df)(__m512d)(A), \
854 (__v8df)(__m512d)(B), \
855 (__v8df)_mm512_setzero_pd(), \
856 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6aa66a2016-06-01 08:34:03 +0000857
Craig Topperf3efec62016-06-08 06:08:07 +0000858#define _mm512_max_round_pd(A, B, R) __extension__ ({ \
859 (__m512d)__builtin_ia32_maxpd512_mask((__v8df)(__m512d)(A), \
860 (__v8df)(__m512d)(B), \
861 (__v8df)_mm512_undefined_pd(), \
862 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6aa66a2016-06-01 08:34:03 +0000863
Michael Kupersteine45af542015-06-30 13:36:19 +0000864static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000865_mm512_max_pd(__m512d __A, __m512d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000866{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000867 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
868 (__v8df) __B,
869 (__v8df)
870 _mm512_setzero_pd (),
871 (__mmask8) -1,
872 _MM_FROUND_CUR_DIRECTION);
873}
874
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000875static __inline__ __m512d __DEFAULT_FN_ATTRS
876_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
877{
878 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
879 (__v8df) __B,
880 (__v8df) __W,
881 (__mmask8) __U,
882 _MM_FROUND_CUR_DIRECTION);
883}
884
885static __inline__ __m512d __DEFAULT_FN_ATTRS
886_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
887{
888 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
889 (__v8df) __B,
890 (__v8df)
891 _mm512_setzero_pd (),
892 (__mmask8) __U,
893 _MM_FROUND_CUR_DIRECTION);
894}
895
Craig Topperf3efec62016-06-08 06:08:07 +0000896#define _mm512_mask_max_round_ps(W, U, A, B, R) __extension__ ({ \
897 (__m512)__builtin_ia32_maxps512_mask((__v16sf)(__m512)(A), \
898 (__v16sf)(__m512)(B), \
899 (__v16sf)(__m512)(W), (__mmask16)(U), \
900 (int)(R)); })
Michael Zuckermane6aa66a2016-06-01 08:34:03 +0000901
Craig Topperf3efec62016-06-08 06:08:07 +0000902#define _mm512_maskz_max_round_ps(U, A, B, R) __extension__ ({ \
903 (__m512)__builtin_ia32_maxps512_mask((__v16sf)(__m512)(A), \
904 (__v16sf)(__m512)(B), \
905 (__v16sf)_mm512_setzero_ps(), \
906 (__mmask16)(U), (int)(R)); })
Michael Zuckermane6aa66a2016-06-01 08:34:03 +0000907
Craig Topperf3efec62016-06-08 06:08:07 +0000908#define _mm512_max_round_ps(A, B, R) __extension__ ({ \
909 (__m512)__builtin_ia32_maxps512_mask((__v16sf)(__m512)(A), \
910 (__v16sf)(__m512)(B), \
911 (__v16sf)_mm512_undefined_ps(), \
912 (__mmask16)-1, (int)(R)); })
Michael Zuckermane6aa66a2016-06-01 08:34:03 +0000913
Michael Kupersteine45af542015-06-30 13:36:19 +0000914static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000915_mm512_max_ps(__m512 __A, __m512 __B)
916{
917 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
918 (__v16sf) __B,
919 (__v16sf)
920 _mm512_setzero_ps (),
921 (__mmask16) -1,
922 _MM_FROUND_CUR_DIRECTION);
923}
924
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000925static __inline__ __m512 __DEFAULT_FN_ATTRS
926_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
927{
928 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
929 (__v16sf) __B,
930 (__v16sf) __W,
931 (__mmask16) __U,
932 _MM_FROUND_CUR_DIRECTION);
933}
934
935static __inline__ __m512 __DEFAULT_FN_ATTRS
936_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
937{
938 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
939 (__v16sf) __B,
940 (__v16sf)
941 _mm512_setzero_ps (),
942 (__mmask16) __U,
943 _MM_FROUND_CUR_DIRECTION);
944}
945
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000946static __inline__ __m128 __DEFAULT_FN_ATTRS
947_mm_mask_max_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000948 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000949 (__v4sf) __B,
950 (__v4sf) __W,
951 (__mmask8) __U,
952 _MM_FROUND_CUR_DIRECTION);
953}
954
955static __inline__ __m128 __DEFAULT_FN_ATTRS
956_mm_maskz_max_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000957 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000958 (__v4sf) __B,
959 (__v4sf) _mm_setzero_ps (),
960 (__mmask8) __U,
961 _MM_FROUND_CUR_DIRECTION);
962}
963
Craig Topper8c18e112016-05-17 04:41:50 +0000964#define _mm_max_round_ss(A, B, R) __extension__ ({ \
965 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
966 (__v4sf)(__m128)(B), \
967 (__v4sf)_mm_setzero_ps(), \
968 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000969
Craig Topper8c18e112016-05-17 04:41:50 +0000970#define _mm_mask_max_round_ss(W, U, A, B, R) __extension__ ({ \
971 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
972 (__v4sf)(__m128)(B), \
973 (__v4sf)(__m128)(W), (__mmask8)(U), \
974 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000975
Craig Topper8c18e112016-05-17 04:41:50 +0000976#define _mm_maskz_max_round_ss(U, A, B, R) __extension__ ({ \
977 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
978 (__v4sf)(__m128)(B), \
979 (__v4sf)_mm_setzero_ps(), \
980 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000981
982static __inline__ __m128d __DEFAULT_FN_ATTRS
983_mm_mask_max_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000984 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000985 (__v2df) __B,
986 (__v2df) __W,
987 (__mmask8) __U,
988 _MM_FROUND_CUR_DIRECTION);
989}
990
991static __inline__ __m128d __DEFAULT_FN_ATTRS
992_mm_maskz_max_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000993 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000994 (__v2df) __B,
995 (__v2df) _mm_setzero_pd (),
996 (__mmask8) __U,
997 _MM_FROUND_CUR_DIRECTION);
998}
999
Craig Topper8c18e112016-05-17 04:41:50 +00001000#define _mm_max_round_sd(A, B, R) __extension__ ({ \
1001 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
1002 (__v2df)(__m128d)(B), \
1003 (__v2df)_mm_setzero_pd(), \
1004 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001005
Craig Topper8c18e112016-05-17 04:41:50 +00001006#define _mm_mask_max_round_sd(W, U, A, B, R) __extension__ ({ \
1007 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
1008 (__v2df)(__m128d)(B), \
1009 (__v2df)(__m128d)(W), \
1010 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001011
Craig Topper8c18e112016-05-17 04:41:50 +00001012#define _mm_maskz_max_round_sd(U, A, B, R) __extension__ ({ \
1013 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
1014 (__v2df)(__m128d)(B), \
1015 (__v2df)_mm_setzero_pd(), \
1016 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001017
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001018static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +00001019__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001020_mm512_max_epi32(__m512i __A, __m512i __B)
1021{
1022 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
1023 (__v16si) __B,
1024 (__v16si)
1025 _mm512_setzero_si512 (),
1026 (__mmask16) -1);
1027}
1028
Michael Zuckermande860e52016-05-10 11:34:19 +00001029static __inline__ __m512i __DEFAULT_FN_ATTRS
1030_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1031{
1032 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
1033 (__v16si) __B,
1034 (__v16si) __W, __M);
1035}
1036
1037static __inline__ __m512i __DEFAULT_FN_ATTRS
1038_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1039{
1040 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
1041 (__v16si) __B,
1042 (__v16si)
1043 _mm512_setzero_si512 (),
1044 __M);
1045}
1046
Michael Kupersteine45af542015-06-30 13:36:19 +00001047static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001048_mm512_max_epu32(__m512i __A, __m512i __B)
1049{
1050 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
1051 (__v16si) __B,
1052 (__v16si)
1053 _mm512_setzero_si512 (),
1054 (__mmask16) -1);
1055}
1056
Michael Zuckermande860e52016-05-10 11:34:19 +00001057static __inline__ __m512i __DEFAULT_FN_ATTRS
1058_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1059{
1060 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
1061 (__v16si) __B,
1062 (__v16si) __W, __M);
1063}
1064
1065static __inline__ __m512i __DEFAULT_FN_ATTRS
1066_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1067{
1068 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
1069 (__v16si) __B,
1070 (__v16si)
1071 _mm512_setzero_si512 (),
1072 __M);
1073}
1074
Michael Kupersteine45af542015-06-30 13:36:19 +00001075static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001076_mm512_max_epi64(__m512i __A, __m512i __B)
1077{
1078 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1079 (__v8di) __B,
1080 (__v8di)
1081 _mm512_setzero_si512 (),
1082 (__mmask8) -1);
1083}
1084
Michael Zuckermande860e52016-05-10 11:34:19 +00001085static __inline__ __m512i __DEFAULT_FN_ATTRS
1086_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1087{
1088 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1089 (__v8di) __B,
1090 (__v8di) __W, __M);
1091}
1092
1093static __inline__ __m512i __DEFAULT_FN_ATTRS
1094_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1095{
1096 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1097 (__v8di) __B,
1098 (__v8di)
1099 _mm512_setzero_si512 (),
1100 __M);
1101}
1102
Michael Kupersteine45af542015-06-30 13:36:19 +00001103static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001104_mm512_max_epu64(__m512i __A, __m512i __B)
1105{
1106 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1107 (__v8di) __B,
1108 (__v8di)
1109 _mm512_setzero_si512 (),
1110 (__mmask8) -1);
1111}
1112
Michael Zuckermande860e52016-05-10 11:34:19 +00001113static __inline__ __m512i __DEFAULT_FN_ATTRS
1114_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1115{
1116 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1117 (__v8di) __B,
1118 (__v8di) __W, __M);
1119}
1120
1121static __inline__ __m512i __DEFAULT_FN_ATTRS
1122_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1123{
1124 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1125 (__v8di) __B,
1126 (__v8di)
1127 _mm512_setzero_si512 (),
1128 __M);
1129}
1130
Craig Topperf3efec62016-06-08 06:08:07 +00001131#define _mm512_mask_min_round_pd(W, U, A, B, R) __extension__ ({ \
1132 (__m512d)__builtin_ia32_minpd512_mask((__v8df)(__m512d)(A), \
1133 (__v8df)(__m512d)(B), \
1134 (__v8df)(__m512d)(W), (__mmask8)(U), \
1135 (int)(R)); })
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001136
Craig Topperf3efec62016-06-08 06:08:07 +00001137#define _mm512_maskz_min_round_pd(U, A, B, R) __extension__ ({ \
1138 (__m512d)__builtin_ia32_minpd512_mask((__v8df)(__m512d)(A), \
1139 (__v8df)(__m512d)(B), \
1140 (__v8df)_mm512_setzero_pd(), \
1141 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001142
Craig Topperf3efec62016-06-08 06:08:07 +00001143#define _mm512_min_round_pd(A, B, R) __extension__ ({ \
1144 (__m512d)__builtin_ia32_minpd512_mask((__v8df)(__m512d)(A), \
1145 (__v8df)(__m512d)(B), \
1146 (__v8df)_mm512_undefined_pd(), \
1147 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001148
Michael Kupersteine45af542015-06-30 13:36:19 +00001149static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001150_mm512_min_pd(__m512d __A, __m512d __B)
1151{
1152 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1153 (__v8df) __B,
1154 (__v8df)
1155 _mm512_setzero_pd (),
1156 (__mmask8) -1,
1157 _MM_FROUND_CUR_DIRECTION);
1158}
1159
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001160static __inline__ __m512d __DEFAULT_FN_ATTRS
1161_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
1162{
1163 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1164 (__v8df) __B,
1165 (__v8df) __W,
1166 (__mmask8) __U,
1167 _MM_FROUND_CUR_DIRECTION);
1168}
1169
Craig Topperf3efec62016-06-08 06:08:07 +00001170#define _mm512_mask_min_round_ps(W, U, A, B, R) __extension__ ({ \
1171 (__m512)__builtin_ia32_minps512_mask((__v16sf)(__m512)(A), \
1172 (__v16sf)(__m512)(B), \
1173 (__v16sf)(__m512)(W), (__mmask16)(U), \
1174 (int)(R)); })
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001175
Craig Topperf3efec62016-06-08 06:08:07 +00001176#define _mm512_maskz_min_round_ps(U, A, B, R) __extension__ ({ \
1177 (__m512)__builtin_ia32_minps512_mask((__v16sf)(__m512)(A), \
1178 (__v16sf)(__m512)(B), \
1179 (__v16sf)_mm512_setzero_ps(), \
1180 (__mmask16)(U), (int)(R)); })
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001181
Craig Topperf3efec62016-06-08 06:08:07 +00001182#define _mm512_min_round_ps(A, B, R) __extension__ ({ \
1183 (__m512)__builtin_ia32_minps512_mask((__v16sf)(__m512)(A), \
1184 (__v16sf)(__m512)(B), \
1185 (__v16sf)_mm512_undefined_ps(), \
1186 (__mmask16)-1, (int)(R)); })
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001187
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001188static __inline__ __m512d __DEFAULT_FN_ATTRS
1189_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
1190{
1191 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1192 (__v8df) __B,
1193 (__v8df)
1194 _mm512_setzero_pd (),
1195 (__mmask8) __U,
1196 _MM_FROUND_CUR_DIRECTION);
1197}
1198
Michael Kupersteine45af542015-06-30 13:36:19 +00001199static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001200_mm512_min_ps(__m512 __A, __m512 __B)
1201{
1202 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1203 (__v16sf) __B,
1204 (__v16sf)
1205 _mm512_setzero_ps (),
1206 (__mmask16) -1,
1207 _MM_FROUND_CUR_DIRECTION);
1208}
1209
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001210static __inline__ __m512 __DEFAULT_FN_ATTRS
1211_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
1212{
1213 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1214 (__v16sf) __B,
1215 (__v16sf) __W,
1216 (__mmask16) __U,
1217 _MM_FROUND_CUR_DIRECTION);
1218}
1219
1220static __inline__ __m512 __DEFAULT_FN_ATTRS
1221_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
1222{
1223 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1224 (__v16sf) __B,
1225 (__v16sf)
1226 _mm512_setzero_ps (),
1227 (__mmask16) __U,
1228 _MM_FROUND_CUR_DIRECTION);
1229}
1230
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001231static __inline__ __m128 __DEFAULT_FN_ATTRS
1232_mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001233 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001234 (__v4sf) __B,
1235 (__v4sf) __W,
1236 (__mmask8) __U,
1237 _MM_FROUND_CUR_DIRECTION);
1238}
1239
1240static __inline__ __m128 __DEFAULT_FN_ATTRS
1241_mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001242 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001243 (__v4sf) __B,
1244 (__v4sf) _mm_setzero_ps (),
1245 (__mmask8) __U,
1246 _MM_FROUND_CUR_DIRECTION);
1247}
1248
Craig Topper8c18e112016-05-17 04:41:50 +00001249#define _mm_min_round_ss(A, B, R) __extension__ ({ \
1250 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1251 (__v4sf)(__m128)(B), \
1252 (__v4sf)_mm_setzero_ps(), \
1253 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001254
Craig Topper8c18e112016-05-17 04:41:50 +00001255#define _mm_mask_min_round_ss(W, U, A, B, R) __extension__ ({ \
1256 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1257 (__v4sf)(__m128)(B), \
1258 (__v4sf)(__m128)(W), (__mmask8)(U), \
1259 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001260
Craig Topper8c18e112016-05-17 04:41:50 +00001261#define _mm_maskz_min_round_ss(U, A, B, R) __extension__ ({ \
1262 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1263 (__v4sf)(__m128)(B), \
1264 (__v4sf)_mm_setzero_ps(), \
1265 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001266
1267static __inline__ __m128d __DEFAULT_FN_ATTRS
1268_mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001269 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001270 (__v2df) __B,
1271 (__v2df) __W,
1272 (__mmask8) __U,
1273 _MM_FROUND_CUR_DIRECTION);
1274}
1275
1276static __inline__ __m128d __DEFAULT_FN_ATTRS
1277_mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001278 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001279 (__v2df) __B,
1280 (__v2df) _mm_setzero_pd (),
1281 (__mmask8) __U,
1282 _MM_FROUND_CUR_DIRECTION);
1283}
1284
Craig Topper8c18e112016-05-17 04:41:50 +00001285#define _mm_min_round_sd(A, B, R) __extension__ ({ \
1286 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1287 (__v2df)(__m128d)(B), \
1288 (__v2df)_mm_setzero_pd(), \
1289 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001290
Craig Topper8c18e112016-05-17 04:41:50 +00001291#define _mm_mask_min_round_sd(W, U, A, B, R) __extension__ ({ \
1292 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1293 (__v2df)(__m128d)(B), \
1294 (__v2df)(__m128d)(W), \
1295 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001296
Craig Topper8c18e112016-05-17 04:41:50 +00001297#define _mm_maskz_min_round_sd(U, A, B, R) __extension__ ({ \
1298 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1299 (__v2df)(__m128d)(B), \
1300 (__v2df)_mm_setzero_pd(), \
1301 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001302
Adam Nemet0d5bb552014-07-28 17:14:40 +00001303static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +00001304__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001305_mm512_min_epi32(__m512i __A, __m512i __B)
1306{
1307 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1308 (__v16si) __B,
1309 (__v16si)
1310 _mm512_setzero_si512 (),
1311 (__mmask16) -1);
1312}
1313
Michael Zuckermande860e52016-05-10 11:34:19 +00001314static __inline__ __m512i __DEFAULT_FN_ATTRS
1315_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1316{
1317 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1318 (__v16si) __B,
1319 (__v16si) __W, __M);
1320}
1321
1322static __inline__ __m512i __DEFAULT_FN_ATTRS
1323_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1324{
1325 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1326 (__v16si) __B,
1327 (__v16si)
1328 _mm512_setzero_si512 (),
1329 __M);
1330}
1331
Michael Kupersteine45af542015-06-30 13:36:19 +00001332static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001333_mm512_min_epu32(__m512i __A, __m512i __B)
1334{
1335 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1336 (__v16si) __B,
1337 (__v16si)
1338 _mm512_setzero_si512 (),
1339 (__mmask16) -1);
1340}
1341
Michael Zuckermande860e52016-05-10 11:34:19 +00001342static __inline__ __m512i __DEFAULT_FN_ATTRS
1343_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1344{
1345 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1346 (__v16si) __B,
1347 (__v16si) __W, __M);
1348}
1349
1350static __inline__ __m512i __DEFAULT_FN_ATTRS
1351_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1352{
1353 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1354 (__v16si) __B,
1355 (__v16si)
1356 _mm512_setzero_si512 (),
1357 __M);
1358}
1359
Michael Kupersteine45af542015-06-30 13:36:19 +00001360static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001361_mm512_min_epi64(__m512i __A, __m512i __B)
1362{
1363 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1364 (__v8di) __B,
1365 (__v8di)
1366 _mm512_setzero_si512 (),
1367 (__mmask8) -1);
1368}
1369
Michael Zuckermande860e52016-05-10 11:34:19 +00001370static __inline__ __m512i __DEFAULT_FN_ATTRS
1371_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1372{
1373 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1374 (__v8di) __B,
1375 (__v8di) __W, __M);
1376}
1377
1378static __inline__ __m512i __DEFAULT_FN_ATTRS
1379_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1380{
1381 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1382 (__v8di) __B,
1383 (__v8di)
1384 _mm512_setzero_si512 (),
1385 __M);
1386}
1387
Michael Kupersteine45af542015-06-30 13:36:19 +00001388static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001389_mm512_min_epu64(__m512i __A, __m512i __B)
1390{
1391 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1392 (__v8di) __B,
1393 (__v8di)
1394 _mm512_setzero_si512 (),
1395 (__mmask8) -1);
1396}
1397
Michael Zuckermande860e52016-05-10 11:34:19 +00001398static __inline__ __m512i __DEFAULT_FN_ATTRS
1399_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1400{
1401 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1402 (__v8di) __B,
1403 (__v8di) __W, __M);
1404}
1405
1406static __inline__ __m512i __DEFAULT_FN_ATTRS
1407_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1408{
1409 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1410 (__v8di) __B,
1411 (__v8di)
1412 _mm512_setzero_si512 (),
1413 __M);
1414}
1415
Michael Kupersteine45af542015-06-30 13:36:19 +00001416static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001417_mm512_mul_epi32(__m512i __X, __m512i __Y)
1418{
1419 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1420 (__v16si) __Y,
1421 (__v8di)
1422 _mm512_setzero_si512 (),
1423 (__mmask8) -1);
1424}
1425
Michael Kupersteine45af542015-06-30 13:36:19 +00001426static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001427_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1428{
1429 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1430 (__v16si) __Y,
1431 (__v8di) __W, __M);
1432}
1433
Michael Kupersteine45af542015-06-30 13:36:19 +00001434static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001435_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
1436{
1437 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1438 (__v16si) __Y,
1439 (__v8di)
1440 _mm512_setzero_si512 (),
1441 __M);
1442}
1443
Michael Kupersteine45af542015-06-30 13:36:19 +00001444static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001445_mm512_mul_epu32(__m512i __X, __m512i __Y)
1446{
1447 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1448 (__v16si) __Y,
1449 (__v8di)
1450 _mm512_setzero_si512 (),
1451 (__mmask8) -1);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001452}
1453
Michael Kupersteine45af542015-06-30 13:36:19 +00001454static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001455_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1456{
1457 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1458 (__v16si) __Y,
1459 (__v8di) __W, __M);
1460}
1461
Michael Kupersteine45af542015-06-30 13:36:19 +00001462static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001463_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
1464{
1465 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1466 (__v16si) __Y,
1467 (__v8di)
1468 _mm512_setzero_si512 (),
1469 __M);
1470}
1471
Michael Kupersteine45af542015-06-30 13:36:19 +00001472static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001473_mm512_mullo_epi32 (__m512i __A, __m512i __B)
1474{
Craig Topper6a77b622016-06-04 05:43:41 +00001475 return (__m512i) ((__v16su) __A * (__v16su) __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001476}
1477
Michael Kupersteine45af542015-06-30 13:36:19 +00001478static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001479_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1480{
1481 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1482 (__v16si) __B,
1483 (__v16si)
1484 _mm512_setzero_si512 (),
1485 __M);
1486}
1487
Michael Kupersteine45af542015-06-30 13:36:19 +00001488static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001489_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1490{
1491 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1492 (__v16si) __B,
1493 (__v16si) __W, __M);
1494}
1495
Craig Topperf3efec62016-06-08 06:08:07 +00001496#define _mm512_mask_sqrt_round_pd(W, U, A, R) __extension__ ({ \
1497 (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)(__m512d)(A), \
1498 (__v8df)(__m512d)(W), (__mmask8)(U), \
1499 (int)(R)); })
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001500
Craig Topperf3efec62016-06-08 06:08:07 +00001501#define _mm512_maskz_sqrt_round_pd(U, A, R) __extension__ ({ \
1502 (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)(__m512d)(A), \
1503 (__v8df)_mm512_setzero_pd(), \
1504 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001505
Craig Topperf3efec62016-06-08 06:08:07 +00001506#define _mm512_sqrt_round_pd(A, R) __extension__ ({ \
1507 (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)(__m512d)(A), \
1508 (__v8df)_mm512_undefined_pd(), \
1509 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001510
Michael Kupersteine45af542015-06-30 13:36:19 +00001511static __inline__ __m512d __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001512_mm512_sqrt_pd(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001513{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001514 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001515 (__v8df) _mm512_setzero_pd (),
1516 (__mmask8) -1,
1517 _MM_FROUND_CUR_DIRECTION);
1518}
1519
Michael Zuckermancb856772016-05-16 11:42:01 +00001520static __inline__ __m512d __DEFAULT_FN_ATTRS
1521_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
1522{
1523 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1524 (__v8df) __W,
1525 (__mmask8) __U,
1526 _MM_FROUND_CUR_DIRECTION);
1527}
1528
1529static __inline__ __m512d __DEFAULT_FN_ATTRS
1530_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
1531{
1532 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1533 (__v8df)
1534 _mm512_setzero_pd (),
1535 (__mmask8) __U,
1536 _MM_FROUND_CUR_DIRECTION);
1537}
1538
Craig Topperf3efec62016-06-08 06:08:07 +00001539#define _mm512_mask_sqrt_round_ps(W, U, A, R) __extension__ ({ \
1540 (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)(__m512)(A), \
1541 (__v16sf)(__m512)(W), (__mmask16)(U), \
1542 (int)(R)); })
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001543
Craig Topperf3efec62016-06-08 06:08:07 +00001544#define _mm512_maskz_sqrt_round_ps(U, A, R) __extension__ ({ \
1545 (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)(__m512)(A), \
1546 (__v16sf)_mm512_setzero_ps(), \
1547 (__mmask16)(U), (int)(R)); })
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001548
Craig Topperf3efec62016-06-08 06:08:07 +00001549#define _mm512_sqrt_round_ps(A, R) __extension__ ({ \
1550 (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)(__m512)(A), \
1551 (__v16sf)_mm512_undefined_ps(), \
1552 (__mmask16)-1, (int)(R)); })
Michael Zuckermane6aa66a2016-06-01 08:34:03 +00001553
Michael Kupersteine45af542015-06-30 13:36:19 +00001554static __inline__ __m512 __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001555_mm512_sqrt_ps(__m512 __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001556{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001557 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001558 (__v16sf) _mm512_setzero_ps (),
1559 (__mmask16) -1,
1560 _MM_FROUND_CUR_DIRECTION);
1561}
1562
Michael Zuckermancb856772016-05-16 11:42:01 +00001563static __inline__ __m512 __DEFAULT_FN_ATTRS
Asaf Badouh880f0c22016-06-13 15:15:57 +00001564_mm512_mask_sqrt_ps(__m512 __W, __mmask16 __U, __m512 __A)
Michael Zuckermancb856772016-05-16 11:42:01 +00001565{
1566 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1567 (__v16sf) __W,
1568 (__mmask16) __U,
1569 _MM_FROUND_CUR_DIRECTION);
1570}
1571
1572static __inline__ __m512 __DEFAULT_FN_ATTRS
Asaf Badouh880f0c22016-06-13 15:15:57 +00001573_mm512_maskz_sqrt_ps( __mmask16 __U, __m512 __A)
Michael Zuckermancb856772016-05-16 11:42:01 +00001574{
1575 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1576 (__v16sf) _mm512_setzero_ps (),
1577 (__mmask16) __U,
1578 _MM_FROUND_CUR_DIRECTION);
1579}
1580
Michael Kupersteine45af542015-06-30 13:36:19 +00001581static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001582_mm512_rsqrt14_pd(__m512d __A)
1583{
1584 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1585 (__v8df)
1586 _mm512_setzero_pd (),
1587 (__mmask8) -1);}
1588
Michael Zuckermancb856772016-05-16 11:42:01 +00001589static __inline__ __m512d __DEFAULT_FN_ATTRS
1590_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1591{
1592 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1593 (__v8df) __W,
1594 (__mmask8) __U);
1595}
1596
1597static __inline__ __m512d __DEFAULT_FN_ATTRS
1598_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A)
1599{
1600 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1601 (__v8df)
1602 _mm512_setzero_pd (),
1603 (__mmask8) __U);
1604}
1605
Michael Kupersteine45af542015-06-30 13:36:19 +00001606static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001607_mm512_rsqrt14_ps(__m512 __A)
1608{
1609 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1610 (__v16sf)
1611 _mm512_setzero_ps (),
1612 (__mmask16) -1);
1613}
1614
Michael Zuckermancb856772016-05-16 11:42:01 +00001615static __inline__ __m512 __DEFAULT_FN_ATTRS
1616_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1617{
1618 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1619 (__v16sf) __W,
1620 (__mmask16) __U);
1621}
1622
1623static __inline__ __m512 __DEFAULT_FN_ATTRS
1624_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A)
1625{
1626 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1627 (__v16sf)
1628 _mm512_setzero_ps (),
1629 (__mmask16) __U);
1630}
1631
Michael Kupersteine45af542015-06-30 13:36:19 +00001632static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001633_mm_rsqrt14_ss(__m128 __A, __m128 __B)
1634{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001635 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001636 (__v4sf) __B,
1637 (__v4sf)
1638 _mm_setzero_ps (),
1639 (__mmask8) -1);
1640}
1641
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001642static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001643_mm_mask_rsqrt14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001644{
1645 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1646 (__v4sf) __B,
1647 (__v4sf) __W,
1648 (__mmask8) __U);
1649}
1650
1651static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001652_mm_maskz_rsqrt14_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001653{
1654 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1655 (__v4sf) __B,
1656 (__v4sf) _mm_setzero_ps (),
1657 (__mmask8) __U);
1658}
1659
Michael Kupersteine45af542015-06-30 13:36:19 +00001660static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001661_mm_rsqrt14_sd(__m128d __A, __m128d __B)
1662{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001663 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001664 (__v2df) __B,
1665 (__v2df)
1666 _mm_setzero_pd (),
1667 (__mmask8) -1);
1668}
1669
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001670static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001671_mm_mask_rsqrt14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001672{
1673 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1674 (__v2df) __B,
1675 (__v2df) __W,
1676 (__mmask8) __U);
1677}
1678
1679static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001680_mm_maskz_rsqrt14_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001681{
1682 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1683 (__v2df) __B,
1684 (__v2df) _mm_setzero_pd (),
1685 (__mmask8) __U);
1686}
1687
Michael Kupersteine45af542015-06-30 13:36:19 +00001688static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001689_mm512_rcp14_pd(__m512d __A)
1690{
1691 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1692 (__v8df)
1693 _mm512_setzero_pd (),
1694 (__mmask8) -1);
1695}
1696
Michael Zuckermancb856772016-05-16 11:42:01 +00001697static __inline__ __m512d __DEFAULT_FN_ATTRS
1698_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1699{
1700 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1701 (__v8df) __W,
1702 (__mmask8) __U);
1703}
1704
1705static __inline__ __m512d __DEFAULT_FN_ATTRS
1706_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A)
1707{
1708 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1709 (__v8df)
1710 _mm512_setzero_pd (),
1711 (__mmask8) __U);
1712}
1713
Michael Kupersteine45af542015-06-30 13:36:19 +00001714static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001715_mm512_rcp14_ps(__m512 __A)
1716{
1717 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1718 (__v16sf)
1719 _mm512_setzero_ps (),
1720 (__mmask16) -1);
1721}
Michael Zuckermancb856772016-05-16 11:42:01 +00001722
1723static __inline__ __m512 __DEFAULT_FN_ATTRS
1724_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1725{
1726 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1727 (__v16sf) __W,
1728 (__mmask16) __U);
1729}
1730
1731static __inline__ __m512 __DEFAULT_FN_ATTRS
1732_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A)
1733{
1734 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1735 (__v16sf)
1736 _mm512_setzero_ps (),
1737 (__mmask16) __U);
1738}
1739
Michael Kupersteine45af542015-06-30 13:36:19 +00001740static __inline__ __m128 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001741_mm_rcp14_ss(__m128 __A, __m128 __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001742{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001743 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001744 (__v4sf) __B,
1745 (__v4sf)
1746 _mm_setzero_ps (),
1747 (__mmask8) -1);
1748}
1749
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001750static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001751_mm_mask_rcp14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001752{
1753 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1754 (__v4sf) __B,
1755 (__v4sf) __W,
1756 (__mmask8) __U);
1757}
1758
1759static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001760_mm_maskz_rcp14_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001761{
1762 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1763 (__v4sf) __B,
1764 (__v4sf) _mm_setzero_ps (),
1765 (__mmask8) __U);
1766}
1767
Michael Kupersteine45af542015-06-30 13:36:19 +00001768static __inline__ __m128d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001769_mm_rcp14_sd(__m128d __A, __m128d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001770{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001771 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001772 (__v2df) __B,
1773 (__v2df)
1774 _mm_setzero_pd (),
1775 (__mmask8) -1);
1776}
1777
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001778static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001779_mm_mask_rcp14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001780{
1781 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1782 (__v2df) __B,
1783 (__v2df) __W,
1784 (__mmask8) __U);
1785}
1786
1787static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001788_mm_maskz_rcp14_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001789{
1790 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1791 (__v2df) __B,
1792 (__v2df) _mm_setzero_pd (),
1793 (__mmask8) __U);
1794}
1795
Michael Kupersteine45af542015-06-30 13:36:19 +00001796static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001797_mm512_floor_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001798{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001799 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1800 _MM_FROUND_FLOOR,
1801 (__v16sf) __A, -1,
1802 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001803}
1804
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001805static __inline__ __m512 __DEFAULT_FN_ATTRS
1806_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
1807{
1808 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1809 _MM_FROUND_FLOOR,
1810 (__v16sf) __W, __U,
1811 _MM_FROUND_CUR_DIRECTION);
1812}
1813
Michael Kupersteine45af542015-06-30 13:36:19 +00001814static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001815_mm512_floor_pd(__m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001816{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001817 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1818 _MM_FROUND_FLOOR,
1819 (__v8df) __A, -1,
1820 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001821}
1822
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001823static __inline__ __m512d __DEFAULT_FN_ATTRS
1824_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
1825{
1826 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1827 _MM_FROUND_FLOOR,
1828 (__v8df) __W, __U,
1829 _MM_FROUND_CUR_DIRECTION);
1830}
1831
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001832static __inline__ __m512 __DEFAULT_FN_ATTRS
1833_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
1834{
1835 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1836 _MM_FROUND_CEIL,
1837 (__v16sf) __W, __U,
1838 _MM_FROUND_CUR_DIRECTION);
1839}
1840
Michael Kupersteine45af542015-06-30 13:36:19 +00001841static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001842_mm512_ceil_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001843{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001844 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1845 _MM_FROUND_CEIL,
1846 (__v16sf) __A, -1,
1847 _MM_FROUND_CUR_DIRECTION);
1848}
1849
Michael Kupersteine45af542015-06-30 13:36:19 +00001850static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001851_mm512_ceil_pd(__m512d __A)
1852{
1853 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1854 _MM_FROUND_CEIL,
1855 (__v8df) __A, -1,
1856 _MM_FROUND_CUR_DIRECTION);
1857}
1858
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001859static __inline__ __m512d __DEFAULT_FN_ATTRS
1860_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
1861{
1862 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1863 _MM_FROUND_CEIL,
1864 (__v8df) __W, __U,
1865 _MM_FROUND_CUR_DIRECTION);
1866}
1867
Michael Kupersteine45af542015-06-30 13:36:19 +00001868static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001869_mm512_abs_epi64(__m512i __A)
1870{
1871 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1872 (__v8di)
1873 _mm512_setzero_si512 (),
1874 (__mmask8) -1);
1875}
1876
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001877static __inline__ __m512i __DEFAULT_FN_ATTRS
1878_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
1879{
1880 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1881 (__v8di) __W,
1882 (__mmask8) __U);
1883}
1884
1885static __inline__ __m512i __DEFAULT_FN_ATTRS
1886_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A)
1887{
1888 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1889 (__v8di)
1890 _mm512_setzero_si512 (),
1891 (__mmask8) __U);
1892}
1893
Michael Kupersteine45af542015-06-30 13:36:19 +00001894static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001895_mm512_abs_epi32(__m512i __A)
1896{
1897 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1898 (__v16si)
1899 _mm512_setzero_si512 (),
1900 (__mmask16) -1);
1901}
1902
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001903static __inline__ __m512i __DEFAULT_FN_ATTRS
1904_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
1905{
1906 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1907 (__v16si) __W,
1908 (__mmask16) __U);
1909}
1910
1911static __inline__ __m512i __DEFAULT_FN_ATTRS
1912_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A)
1913{
1914 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1915 (__v16si)
1916 _mm512_setzero_si512 (),
1917 (__mmask16) __U);
1918}
1919
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001920static __inline__ __m128 __DEFAULT_FN_ATTRS
1921_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001922 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001923 (__v4sf) __B,
1924 (__v4sf) __W,
1925 (__mmask8) __U,
1926 _MM_FROUND_CUR_DIRECTION);
1927}
1928
1929static __inline__ __m128 __DEFAULT_FN_ATTRS
1930_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001931 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001932 (__v4sf) __B,
1933 (__v4sf) _mm_setzero_ps (),
1934 (__mmask8) __U,
1935 _MM_FROUND_CUR_DIRECTION);
1936}
1937
Craig Topper8c18e112016-05-17 04:41:50 +00001938#define _mm_add_round_ss(A, B, R) __extension__ ({ \
1939 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1940 (__v4sf)(__m128)(B), \
1941 (__v4sf)_mm_setzero_ps(), \
1942 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001943
Craig Topper8c18e112016-05-17 04:41:50 +00001944#define _mm_mask_add_round_ss(W, U, A, B, R) __extension__ ({ \
1945 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1946 (__v4sf)(__m128)(B), \
1947 (__v4sf)(__m128)(W), (__mmask8)(U), \
1948 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001949
Craig Topper8c18e112016-05-17 04:41:50 +00001950#define _mm_maskz_add_round_ss(U, A, B, R) __extension__ ({ \
1951 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1952 (__v4sf)(__m128)(B), \
1953 (__v4sf)_mm_setzero_ps(), \
1954 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001955
1956static __inline__ __m128d __DEFAULT_FN_ATTRS
1957_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001958 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001959 (__v2df) __B,
1960 (__v2df) __W,
1961 (__mmask8) __U,
1962 _MM_FROUND_CUR_DIRECTION);
1963}
1964
1965static __inline__ __m128d __DEFAULT_FN_ATTRS
1966_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001967 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001968 (__v2df) __B,
1969 (__v2df) _mm_setzero_pd (),
1970 (__mmask8) __U,
1971 _MM_FROUND_CUR_DIRECTION);
1972}
Craig Topper8c18e112016-05-17 04:41:50 +00001973#define _mm_add_round_sd(A, B, R) __extension__ ({ \
1974 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1975 (__v2df)(__m128d)(B), \
1976 (__v2df)_mm_setzero_pd(), \
1977 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001978
Craig Topper8c18e112016-05-17 04:41:50 +00001979#define _mm_mask_add_round_sd(W, U, A, B, R) __extension__ ({ \
1980 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1981 (__v2df)(__m128d)(B), \
1982 (__v2df)(__m128d)(W), \
1983 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001984
Craig Topper8c18e112016-05-17 04:41:50 +00001985#define _mm_maskz_add_round_sd(U, A, B, R) __extension__ ({ \
1986 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1987 (__v2df)(__m128d)(B), \
1988 (__v2df)_mm_setzero_pd(), \
1989 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001990
Asaf Badouhffeb6242015-07-21 15:27:28 +00001991static __inline__ __m512d __DEFAULT_FN_ATTRS
1992_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1993 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1994 (__v8df) __B,
1995 (__v8df) __W,
1996 (__mmask8) __U,
1997 _MM_FROUND_CUR_DIRECTION);
1998}
1999
2000static __inline__ __m512d __DEFAULT_FN_ATTRS
2001_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2002 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
2003 (__v8df) __B,
2004 (__v8df) _mm512_setzero_pd (),
2005 (__mmask8) __U,
2006 _MM_FROUND_CUR_DIRECTION);
2007}
2008
2009static __inline__ __m512 __DEFAULT_FN_ATTRS
2010_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2011 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
2012 (__v16sf) __B,
2013 (__v16sf) __W,
2014 (__mmask16) __U,
2015 _MM_FROUND_CUR_DIRECTION);
2016}
2017
2018static __inline__ __m512 __DEFAULT_FN_ATTRS
2019_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2020 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
2021 (__v16sf) __B,
2022 (__v16sf) _mm512_setzero_ps (),
2023 (__mmask16) __U,
2024 _MM_FROUND_CUR_DIRECTION);
2025}
2026
Craig Topper8c18e112016-05-17 04:41:50 +00002027#define _mm512_add_round_pd(A, B, R) __extension__ ({ \
2028 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
2029 (__v8df)(__m512d)(B), \
2030 (__v8df)_mm512_setzero_pd(), \
2031 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002032
Craig Topper8c18e112016-05-17 04:41:50 +00002033#define _mm512_mask_add_round_pd(W, U, A, B, R) __extension__ ({ \
2034 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
2035 (__v8df)(__m512d)(B), \
2036 (__v8df)(__m512d)(W), (__mmask8)(U), \
2037 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002038
Craig Topper8c18e112016-05-17 04:41:50 +00002039#define _mm512_maskz_add_round_pd(U, A, B, R) __extension__ ({ \
2040 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
2041 (__v8df)(__m512d)(B), \
2042 (__v8df)_mm512_setzero_pd(), \
2043 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002044
Craig Topper8c18e112016-05-17 04:41:50 +00002045#define _mm512_add_round_ps(A, B, R) __extension__ ({ \
2046 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
2047 (__v16sf)(__m512)(B), \
2048 (__v16sf)_mm512_setzero_ps(), \
2049 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002050
Craig Topper8c18e112016-05-17 04:41:50 +00002051#define _mm512_mask_add_round_ps(W, U, A, B, R) __extension__ ({ \
2052 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
2053 (__v16sf)(__m512)(B), \
2054 (__v16sf)(__m512)(W), (__mmask16)(U), \
2055 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002056
Craig Topper8c18e112016-05-17 04:41:50 +00002057#define _mm512_maskz_add_round_ps(U, A, B, R) __extension__ ({ \
2058 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
2059 (__v16sf)(__m512)(B), \
2060 (__v16sf)_mm512_setzero_ps(), \
2061 (__mmask16)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002062
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002063static __inline__ __m128 __DEFAULT_FN_ATTRS
2064_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002065 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002066 (__v4sf) __B,
2067 (__v4sf) __W,
2068 (__mmask8) __U,
2069 _MM_FROUND_CUR_DIRECTION);
2070}
2071
2072static __inline__ __m128 __DEFAULT_FN_ATTRS
2073_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002074 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002075 (__v4sf) __B,
2076 (__v4sf) _mm_setzero_ps (),
2077 (__mmask8) __U,
2078 _MM_FROUND_CUR_DIRECTION);
2079}
Craig Topper8c18e112016-05-17 04:41:50 +00002080#define _mm_sub_round_ss(A, B, R) __extension__ ({ \
2081 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
2082 (__v4sf)(__m128)(B), \
2083 (__v4sf)_mm_setzero_ps(), \
2084 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002085
Craig Topper8c18e112016-05-17 04:41:50 +00002086#define _mm_mask_sub_round_ss(W, U, A, B, R) __extension__ ({ \
2087 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
2088 (__v4sf)(__m128)(B), \
2089 (__v4sf)(__m128)(W), (__mmask8)(U), \
2090 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002091
Craig Topper8c18e112016-05-17 04:41:50 +00002092#define _mm_maskz_sub_round_ss(U, A, B, R) __extension__ ({ \
2093 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
2094 (__v4sf)(__m128)(B), \
2095 (__v4sf)_mm_setzero_ps(), \
2096 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002097
2098static __inline__ __m128d __DEFAULT_FN_ATTRS
2099_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002100 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002101 (__v2df) __B,
2102 (__v2df) __W,
2103 (__mmask8) __U,
2104 _MM_FROUND_CUR_DIRECTION);
2105}
2106
2107static __inline__ __m128d __DEFAULT_FN_ATTRS
2108_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002109 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002110 (__v2df) __B,
2111 (__v2df) _mm_setzero_pd (),
2112 (__mmask8) __U,
2113 _MM_FROUND_CUR_DIRECTION);
2114}
2115
Craig Topper8c18e112016-05-17 04:41:50 +00002116#define _mm_sub_round_sd(A, B, R) __extension__ ({ \
2117 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
2118 (__v2df)(__m128d)(B), \
2119 (__v2df)_mm_setzero_pd(), \
2120 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002121
Craig Topper8c18e112016-05-17 04:41:50 +00002122#define _mm_mask_sub_round_sd(W, U, A, B, R) __extension__ ({ \
2123 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
2124 (__v2df)(__m128d)(B), \
2125 (__v2df)(__m128d)(W), \
2126 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002127
Craig Topper8c18e112016-05-17 04:41:50 +00002128#define _mm_maskz_sub_round_sd(U, A, B, R) __extension__ ({ \
2129 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
2130 (__v2df)(__m128d)(B), \
2131 (__v2df)_mm_setzero_pd(), \
2132 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002133
Asaf Badouhffeb6242015-07-21 15:27:28 +00002134static __inline__ __m512d __DEFAULT_FN_ATTRS
2135_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2136 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2137 (__v8df) __B,
2138 (__v8df) __W,
2139 (__mmask8) __U,
2140 _MM_FROUND_CUR_DIRECTION);
2141}
2142
2143static __inline__ __m512d __DEFAULT_FN_ATTRS
2144_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2145 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2146 (__v8df) __B,
2147 (__v8df)
2148 _mm512_setzero_pd (),
2149 (__mmask8) __U,
2150 _MM_FROUND_CUR_DIRECTION);
2151}
2152
2153static __inline__ __m512 __DEFAULT_FN_ATTRS
2154_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2155 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2156 (__v16sf) __B,
2157 (__v16sf) __W,
2158 (__mmask16) __U,
2159 _MM_FROUND_CUR_DIRECTION);
2160}
2161
2162static __inline__ __m512 __DEFAULT_FN_ATTRS
2163_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2164 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2165 (__v16sf) __B,
2166 (__v16sf)
2167 _mm512_setzero_ps (),
2168 (__mmask16) __U,
2169 _MM_FROUND_CUR_DIRECTION);
2170}
2171
Craig Topper8c18e112016-05-17 04:41:50 +00002172#define _mm512_sub_round_pd(A, B, R) __extension__ ({ \
2173 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2174 (__v8df)(__m512d)(B), \
2175 (__v8df)_mm512_setzero_pd(), \
2176 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002177
Craig Topper8c18e112016-05-17 04:41:50 +00002178#define _mm512_mask_sub_round_pd(W, U, A, B, R) __extension__ ({ \
2179 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2180 (__v8df)(__m512d)(B), \
2181 (__v8df)(__m512d)(W), (__mmask8)(U), \
2182 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002183
Craig Topper8c18e112016-05-17 04:41:50 +00002184#define _mm512_maskz_sub_round_pd(U, A, B, R) __extension__ ({ \
2185 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2186 (__v8df)(__m512d)(B), \
2187 (__v8df)_mm512_setzero_pd(), \
2188 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002189
Craig Topper8c18e112016-05-17 04:41:50 +00002190#define _mm512_sub_round_ps(A, B, R) __extension__ ({ \
2191 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2192 (__v16sf)(__m512)(B), \
2193 (__v16sf)_mm512_setzero_ps(), \
2194 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002195
Craig Topper8c18e112016-05-17 04:41:50 +00002196#define _mm512_mask_sub_round_ps(W, U, A, B, R) __extension__ ({ \
2197 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2198 (__v16sf)(__m512)(B), \
2199 (__v16sf)(__m512)(W), (__mmask16)(U), \
2200 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002201
Craig Topper8c18e112016-05-17 04:41:50 +00002202#define _mm512_maskz_sub_round_ps(U, A, B, R) __extension__ ({ \
2203 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2204 (__v16sf)(__m512)(B), \
2205 (__v16sf)_mm512_setzero_ps(), \
2206 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002207
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002208static __inline__ __m128 __DEFAULT_FN_ATTRS
2209_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002210 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002211 (__v4sf) __B,
2212 (__v4sf) __W,
2213 (__mmask8) __U,
2214 _MM_FROUND_CUR_DIRECTION);
2215}
2216
2217static __inline__ __m128 __DEFAULT_FN_ATTRS
2218_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002219 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002220 (__v4sf) __B,
2221 (__v4sf) _mm_setzero_ps (),
2222 (__mmask8) __U,
2223 _MM_FROUND_CUR_DIRECTION);
2224}
Craig Topper8c18e112016-05-17 04:41:50 +00002225#define _mm_mul_round_ss(A, B, R) __extension__ ({ \
2226 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2227 (__v4sf)(__m128)(B), \
2228 (__v4sf)_mm_setzero_ps(), \
2229 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002230
Craig Topper8c18e112016-05-17 04:41:50 +00002231#define _mm_mask_mul_round_ss(W, U, A, B, R) __extension__ ({ \
2232 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2233 (__v4sf)(__m128)(B), \
2234 (__v4sf)(__m128)(W), (__mmask8)(U), \
2235 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002236
Craig Topper8c18e112016-05-17 04:41:50 +00002237#define _mm_maskz_mul_round_ss(U, A, B, R) __extension__ ({ \
2238 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2239 (__v4sf)(__m128)(B), \
2240 (__v4sf)_mm_setzero_ps(), \
2241 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002242
2243static __inline__ __m128d __DEFAULT_FN_ATTRS
2244_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002245 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002246 (__v2df) __B,
2247 (__v2df) __W,
2248 (__mmask8) __U,
2249 _MM_FROUND_CUR_DIRECTION);
2250}
2251
2252static __inline__ __m128d __DEFAULT_FN_ATTRS
2253_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002254 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002255 (__v2df) __B,
2256 (__v2df) _mm_setzero_pd (),
2257 (__mmask8) __U,
2258 _MM_FROUND_CUR_DIRECTION);
2259}
2260
Craig Topper8c18e112016-05-17 04:41:50 +00002261#define _mm_mul_round_sd(A, B, R) __extension__ ({ \
2262 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2263 (__v2df)(__m128d)(B), \
2264 (__v2df)_mm_setzero_pd(), \
2265 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002266
Craig Topper8c18e112016-05-17 04:41:50 +00002267#define _mm_mask_mul_round_sd(W, U, A, B, R) __extension__ ({ \
2268 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2269 (__v2df)(__m128d)(B), \
2270 (__v2df)(__m128d)(W), \
2271 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002272
Craig Topper8c18e112016-05-17 04:41:50 +00002273#define _mm_maskz_mul_round_sd(U, A, B, R) __extension__ ({ \
2274 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2275 (__v2df)(__m128d)(B), \
2276 (__v2df)_mm_setzero_pd(), \
2277 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002278
Asaf Badouhffeb6242015-07-21 15:27:28 +00002279static __inline__ __m512d __DEFAULT_FN_ATTRS
2280_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2281 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2282 (__v8df) __B,
2283 (__v8df) __W,
2284 (__mmask8) __U,
2285 _MM_FROUND_CUR_DIRECTION);
2286}
2287
2288static __inline__ __m512d __DEFAULT_FN_ATTRS
2289_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2290 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2291 (__v8df) __B,
2292 (__v8df)
2293 _mm512_setzero_pd (),
2294 (__mmask8) __U,
2295 _MM_FROUND_CUR_DIRECTION);
2296}
2297
2298static __inline__ __m512 __DEFAULT_FN_ATTRS
2299_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2300 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2301 (__v16sf) __B,
2302 (__v16sf) __W,
2303 (__mmask16) __U,
2304 _MM_FROUND_CUR_DIRECTION);
2305}
2306
2307static __inline__ __m512 __DEFAULT_FN_ATTRS
2308_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2309 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2310 (__v16sf) __B,
2311 (__v16sf)
2312 _mm512_setzero_ps (),
2313 (__mmask16) __U,
2314 _MM_FROUND_CUR_DIRECTION);
2315}
2316
Craig Topper8c18e112016-05-17 04:41:50 +00002317#define _mm512_mul_round_pd(A, B, R) __extension__ ({ \
2318 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2319 (__v8df)(__m512d)(B), \
2320 (__v8df)_mm512_setzero_pd(), \
2321 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002322
Craig Topper8c18e112016-05-17 04:41:50 +00002323#define _mm512_mask_mul_round_pd(W, U, A, B, R) __extension__ ({ \
2324 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2325 (__v8df)(__m512d)(B), \
2326 (__v8df)(__m512d)(W), (__mmask8)(U), \
2327 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002328
Craig Topper8c18e112016-05-17 04:41:50 +00002329#define _mm512_maskz_mul_round_pd(U, A, B, R) __extension__ ({ \
2330 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2331 (__v8df)(__m512d)(B), \
2332 (__v8df)_mm512_setzero_pd(), \
2333 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002334
Craig Topper8c18e112016-05-17 04:41:50 +00002335#define _mm512_mul_round_ps(A, B, R) __extension__ ({ \
2336 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2337 (__v16sf)(__m512)(B), \
2338 (__v16sf)_mm512_setzero_ps(), \
2339 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002340
Craig Topper8c18e112016-05-17 04:41:50 +00002341#define _mm512_mask_mul_round_ps(W, U, A, B, R) __extension__ ({ \
2342 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2343 (__v16sf)(__m512)(B), \
2344 (__v16sf)(__m512)(W), (__mmask16)(U), \
2345 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002346
Craig Topper8c18e112016-05-17 04:41:50 +00002347#define _mm512_maskz_mul_round_ps(U, A, B, R) __extension__ ({ \
2348 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2349 (__v16sf)(__m512)(B), \
2350 (__v16sf)_mm512_setzero_ps(), \
2351 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002352
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002353static __inline__ __m128 __DEFAULT_FN_ATTRS
2354_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002355 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002356 (__v4sf) __B,
2357 (__v4sf) __W,
2358 (__mmask8) __U,
2359 _MM_FROUND_CUR_DIRECTION);
2360}
2361
2362static __inline__ __m128 __DEFAULT_FN_ATTRS
2363_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002364 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002365 (__v4sf) __B,
2366 (__v4sf) _mm_setzero_ps (),
2367 (__mmask8) __U,
2368 _MM_FROUND_CUR_DIRECTION);
2369}
2370
Craig Topper8c18e112016-05-17 04:41:50 +00002371#define _mm_div_round_ss(A, B, R) __extension__ ({ \
2372 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2373 (__v4sf)(__m128)(B), \
2374 (__v4sf)_mm_setzero_ps(), \
2375 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002376
Craig Topper8c18e112016-05-17 04:41:50 +00002377#define _mm_mask_div_round_ss(W, U, A, B, R) __extension__ ({ \
2378 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2379 (__v4sf)(__m128)(B), \
2380 (__v4sf)(__m128)(W), (__mmask8)(U), \
2381 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002382
Craig Topper8c18e112016-05-17 04:41:50 +00002383#define _mm_maskz_div_round_ss(U, A, B, R) __extension__ ({ \
2384 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2385 (__v4sf)(__m128)(B), \
2386 (__v4sf)_mm_setzero_ps(), \
2387 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002388
2389static __inline__ __m128d __DEFAULT_FN_ATTRS
2390_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002391 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002392 (__v2df) __B,
2393 (__v2df) __W,
2394 (__mmask8) __U,
2395 _MM_FROUND_CUR_DIRECTION);
2396}
2397
2398static __inline__ __m128d __DEFAULT_FN_ATTRS
2399_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002400 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002401 (__v2df) __B,
2402 (__v2df) _mm_setzero_pd (),
2403 (__mmask8) __U,
2404 _MM_FROUND_CUR_DIRECTION);
2405}
2406
Craig Topper8c18e112016-05-17 04:41:50 +00002407#define _mm_div_round_sd(A, B, R) __extension__ ({ \
2408 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2409 (__v2df)(__m128d)(B), \
2410 (__v2df)_mm_setzero_pd(), \
2411 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002412
Craig Topper8c18e112016-05-17 04:41:50 +00002413#define _mm_mask_div_round_sd(W, U, A, B, R) __extension__ ({ \
2414 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2415 (__v2df)(__m128d)(B), \
2416 (__v2df)(__m128d)(W), \
2417 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002418
Craig Topper8c18e112016-05-17 04:41:50 +00002419#define _mm_maskz_div_round_sd(U, A, B, R) __extension__ ({ \
2420 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2421 (__v2df)(__m128d)(B), \
2422 (__v2df)_mm_setzero_pd(), \
2423 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002424
Michael Zuckerman223676d2016-06-14 12:38:58 +00002425static __inline __m512d __DEFAULT_FN_ATTRS
2426_mm512_div_pd(__m512d __a, __m512d __b)
2427{
2428 return (__m512d)((__v8df)__a/(__v8df)__b);
2429}
2430
Asaf Badouhffeb6242015-07-21 15:27:28 +00002431static __inline__ __m512d __DEFAULT_FN_ATTRS
2432_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2433 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2434 (__v8df) __B,
2435 (__v8df) __W,
2436 (__mmask8) __U,
2437 _MM_FROUND_CUR_DIRECTION);
2438}
2439
2440static __inline__ __m512d __DEFAULT_FN_ATTRS
2441_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2442 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2443 (__v8df) __B,
2444 (__v8df)
2445 _mm512_setzero_pd (),
2446 (__mmask8) __U,
2447 _MM_FROUND_CUR_DIRECTION);
2448}
2449
Michael Zuckerman223676d2016-06-14 12:38:58 +00002450static __inline __m512 __DEFAULT_FN_ATTRS
2451_mm512_div_ps(__m512 __a, __m512 __b)
2452{
2453 return (__m512)((__v16sf)__a/(__v16sf)__b);
2454}
2455
Asaf Badouhffeb6242015-07-21 15:27:28 +00002456static __inline__ __m512 __DEFAULT_FN_ATTRS
2457_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2458 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2459 (__v16sf) __B,
2460 (__v16sf) __W,
2461 (__mmask16) __U,
2462 _MM_FROUND_CUR_DIRECTION);
2463}
2464
2465static __inline__ __m512 __DEFAULT_FN_ATTRS
2466_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2467 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2468 (__v16sf) __B,
2469 (__v16sf)
2470 _mm512_setzero_ps (),
2471 (__mmask16) __U,
2472 _MM_FROUND_CUR_DIRECTION);
2473}
2474
Craig Topper8c18e112016-05-17 04:41:50 +00002475#define _mm512_div_round_pd(A, B, R) __extension__ ({ \
2476 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2477 (__v8df)(__m512d)(B), \
2478 (__v8df)_mm512_setzero_pd(), \
2479 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002480
Craig Topper8c18e112016-05-17 04:41:50 +00002481#define _mm512_mask_div_round_pd(W, U, A, B, R) __extension__ ({ \
2482 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2483 (__v8df)(__m512d)(B), \
2484 (__v8df)(__m512d)(W), (__mmask8)(U), \
2485 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002486
Craig Topper8c18e112016-05-17 04:41:50 +00002487#define _mm512_maskz_div_round_pd(U, A, B, R) __extension__ ({ \
2488 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2489 (__v8df)(__m512d)(B), \
2490 (__v8df)_mm512_setzero_pd(), \
2491 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002492
Craig Topper8c18e112016-05-17 04:41:50 +00002493#define _mm512_div_round_ps(A, B, R) __extension__ ({ \
2494 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2495 (__v16sf)(__m512)(B), \
2496 (__v16sf)_mm512_setzero_ps(), \
2497 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002498
Craig Topper8c18e112016-05-17 04:41:50 +00002499#define _mm512_mask_div_round_ps(W, U, A, B, R) __extension__ ({ \
2500 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2501 (__v16sf)(__m512)(B), \
2502 (__v16sf)(__m512)(W), (__mmask16)(U), \
2503 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002504
Craig Topper8c18e112016-05-17 04:41:50 +00002505#define _mm512_maskz_div_round_ps(U, A, B, R) __extension__ ({ \
2506 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2507 (__v16sf)(__m512)(B), \
2508 (__v16sf)_mm512_setzero_ps(), \
2509 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002510
Craig Topper72c7d512015-02-01 07:35:35 +00002511#define _mm512_roundscale_ps(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002512 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(A), (int)(B), \
2513 (__v16sf)(__m512)(A), (__mmask16)-1, \
2514 _MM_FROUND_CUR_DIRECTION); })
Craig Topper72c7d512015-02-01 07:35:35 +00002515
Craig Topper8c18e112016-05-17 04:41:50 +00002516#define _mm512_mask_roundscale_ps(A, B, C, imm) __extension__ ({\
2517 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(C), (int)(imm), \
2518 (__v16sf)(__m512)(A), (__mmask16)(B), \
2519 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002520
Craig Topper8c18e112016-05-17 04:41:50 +00002521#define _mm512_maskz_roundscale_ps(A, B, imm) __extension__ ({\
2522 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(B), (int)(imm), \
2523 (__v16sf)_mm512_setzero_ps(), \
2524 (__mmask16)(A), \
2525 _MM_FROUND_CUR_DIRECTION); })
2526
Craig Topperf3efec62016-06-08 06:08:07 +00002527#define _mm512_mask_roundscale_round_ps(A, B, C, imm, R) __extension__ ({ \
2528 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(C), (int)(imm), \
2529 (__v16sf)(__m512)(A), (__mmask16)(B), \
2530 (int)(R)); })
Michael Zuckermanc301c192016-06-01 07:35:44 +00002531
Craig Topperf3efec62016-06-08 06:08:07 +00002532#define _mm512_maskz_roundscale_round_ps(A, B, imm, R) __extension__ ({ \
2533 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(B), (int)(imm), \
2534 (__v16sf)_mm512_setzero_ps(), \
2535 (__mmask16)(A), (int)(R)); })
Michael Zuckermanc301c192016-06-01 07:35:44 +00002536
Craig Topperf3efec62016-06-08 06:08:07 +00002537#define _mm512_roundscale_round_ps(A, imm, R) __extension__ ({ \
2538 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(A), (int)(imm), \
2539 (__v16sf)_mm512_undefined_ps(), \
2540 (__mmask16)-1, (int)(R)); })
Michael Zuckermanc301c192016-06-01 07:35:44 +00002541
Craig Topper72c7d512015-02-01 07:35:35 +00002542#define _mm512_roundscale_pd(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002543 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(A), (int)(B), \
2544 (__v8df)(__m512d)(A), (__mmask8)-1, \
2545 _MM_FROUND_CUR_DIRECTION); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002546
Craig Topper8c18e112016-05-17 04:41:50 +00002547#define _mm512_mask_roundscale_pd(A, B, C, imm) __extension__ ({\
2548 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(C), (int)(imm), \
2549 (__v8df)(__m512d)(A), (__mmask8)(B), \
2550 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002551
Craig Topper8c18e112016-05-17 04:41:50 +00002552#define _mm512_maskz_roundscale_pd(A, B, imm) __extension__ ({\
2553 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(B), (int)(imm), \
2554 (__v8df)_mm512_setzero_pd(), \
2555 (__mmask8)(A), \
2556 _MM_FROUND_CUR_DIRECTION); })
2557
Craig Topperf3efec62016-06-08 06:08:07 +00002558#define _mm512_mask_roundscale_round_pd(A, B, C, imm, R) __extension__ ({ \
2559 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(C), (int)(imm), \
2560 (__v8df)(__m512d)(A), (__mmask8)(B), \
2561 (int)(R)); })
Michael Zuckermanc301c192016-06-01 07:35:44 +00002562
Craig Topperf3efec62016-06-08 06:08:07 +00002563#define _mm512_maskz_roundscale_round_pd(A, B, imm, R) __extension__ ({ \
2564 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(B), (int)(imm), \
2565 (__v8df)_mm512_setzero_pd(), \
2566 (__mmask8)(A), (int)(R)); })
Michael Zuckermanc301c192016-06-01 07:35:44 +00002567
Craig Topperf3efec62016-06-08 06:08:07 +00002568#define _mm512_roundscale_round_pd(A, imm, R) __extension__ ({ \
2569 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(A), (int)(imm), \
2570 (__v8df)_mm512_undefined_pd(), \
2571 (__mmask8)-1, (int)(R)); })
Michael Zuckermanc301c192016-06-01 07:35:44 +00002572
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002573#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002574 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2575 (__v8df)(__m512d)(B), \
2576 (__v8df)(__m512d)(C), (__mmask8)-1, \
2577 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002578
2579
2580#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002581 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2582 (__v8df)(__m512d)(B), \
2583 (__v8df)(__m512d)(C), \
2584 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002585
2586
2587#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002588 (__m512d)__builtin_ia32_vfmaddpd512_mask3((__v8df)(__m512d)(A), \
2589 (__v8df)(__m512d)(B), \
2590 (__v8df)(__m512d)(C), \
2591 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002592
2593
2594#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002595 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2596 (__v8df)(__m512d)(B), \
2597 (__v8df)(__m512d)(C), \
2598 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002599
2600
2601#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002602 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2603 (__v8df)(__m512d)(B), \
2604 -(__v8df)(__m512d)(C), \
2605 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002606
2607
2608#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002609 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2610 (__v8df)(__m512d)(B), \
2611 -(__v8df)(__m512d)(C), \
2612 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002613
2614
2615#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002616 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2617 (__v8df)(__m512d)(B), \
2618 -(__v8df)(__m512d)(C), \
2619 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002620
2621
2622#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002623 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2624 (__v8df)(__m512d)(B), \
2625 (__v8df)(__m512d)(C), (__mmask8)-1, \
2626 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002627
2628
2629#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002630 (__m512d)__builtin_ia32_vfmaddpd512_mask3(-(__v8df)(__m512d)(A), \
2631 (__v8df)(__m512d)(B), \
2632 (__v8df)(__m512d)(C), \
2633 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002634
2635
2636#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002637 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2638 (__v8df)(__m512d)(B), \
2639 (__v8df)(__m512d)(C), \
2640 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002641
2642
2643#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002644 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2645 (__v8df)(__m512d)(B), \
2646 -(__v8df)(__m512d)(C), \
2647 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002648
2649
2650#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002651 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2652 (__v8df)(__m512d)(B), \
2653 -(__v8df)(__m512d)(C), \
2654 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002655
2656
Michael Kupersteine45af542015-06-30 13:36:19 +00002657static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002658_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2659{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002660 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2661 (__v8df) __B,
2662 (__v8df) __C,
2663 (__mmask8) -1,
2664 _MM_FROUND_CUR_DIRECTION);
2665}
2666
Michael Kupersteine45af542015-06-30 13:36:19 +00002667static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002668_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2669{
2670 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2671 (__v8df) __B,
2672 (__v8df) __C,
2673 (__mmask8) __U,
2674 _MM_FROUND_CUR_DIRECTION);
2675}
2676
Michael Kupersteine45af542015-06-30 13:36:19 +00002677static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002678_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2679{
2680 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
2681 (__v8df) __B,
2682 (__v8df) __C,
2683 (__mmask8) __U,
2684 _MM_FROUND_CUR_DIRECTION);
2685}
2686
Michael Kupersteine45af542015-06-30 13:36:19 +00002687static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002688_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2689{
2690 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2691 (__v8df) __B,
2692 (__v8df) __C,
2693 (__mmask8) __U,
2694 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002695}
2696
Michael Kupersteine45af542015-06-30 13:36:19 +00002697static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002698_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2699{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002700 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2701 (__v8df) __B,
2702 -(__v8df) __C,
2703 (__mmask8) -1,
2704 _MM_FROUND_CUR_DIRECTION);
2705}
2706
Michael Kupersteine45af542015-06-30 13:36:19 +00002707static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002708_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2709{
2710 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2711 (__v8df) __B,
2712 -(__v8df) __C,
2713 (__mmask8) __U,
2714 _MM_FROUND_CUR_DIRECTION);
2715}
2716
Michael Kupersteine45af542015-06-30 13:36:19 +00002717static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002718_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2719{
2720 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2721 (__v8df) __B,
2722 -(__v8df) __C,
2723 (__mmask8) __U,
2724 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002725}
2726
Michael Kupersteine45af542015-06-30 13:36:19 +00002727static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002728_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2729{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002730 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2731 (__v8df) __B,
2732 (__v8df) __C,
2733 (__mmask8) -1,
2734 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002735}
2736
Michael Kupersteine45af542015-06-30 13:36:19 +00002737static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002738_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2739{
2740 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
2741 (__v8df) __B,
2742 (__v8df) __C,
2743 (__mmask8) __U,
2744 _MM_FROUND_CUR_DIRECTION);
2745}
2746
Michael Kupersteine45af542015-06-30 13:36:19 +00002747static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002748_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2749{
2750 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2751 (__v8df) __B,
2752 (__v8df) __C,
2753 (__mmask8) __U,
2754 _MM_FROUND_CUR_DIRECTION);
2755}
2756
Michael Kupersteine45af542015-06-30 13:36:19 +00002757static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002758_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2759{
2760 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2761 (__v8df) __B,
2762 -(__v8df) __C,
2763 (__mmask8) -1,
2764 _MM_FROUND_CUR_DIRECTION);
2765}
2766
Michael Kupersteine45af542015-06-30 13:36:19 +00002767static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002768_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2769{
2770 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2771 (__v8df) __B,
2772 -(__v8df) __C,
2773 (__mmask8) __U,
2774 _MM_FROUND_CUR_DIRECTION);
2775}
2776
2777#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002778 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2779 (__v16sf)(__m512)(B), \
2780 (__v16sf)(__m512)(C), (__mmask16)-1, \
2781 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002782
2783
2784#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002785 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2786 (__v16sf)(__m512)(B), \
2787 (__v16sf)(__m512)(C), \
2788 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002789
2790
2791#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002792 (__m512)__builtin_ia32_vfmaddps512_mask3((__v16sf)(__m512)(A), \
2793 (__v16sf)(__m512)(B), \
2794 (__v16sf)(__m512)(C), \
2795 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002796
2797
2798#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002799 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2800 (__v16sf)(__m512)(B), \
2801 (__v16sf)(__m512)(C), \
2802 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002803
2804
2805#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002806 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2807 (__v16sf)(__m512)(B), \
2808 -(__v16sf)(__m512)(C), \
2809 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002810
2811
2812#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002813 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2814 (__v16sf)(__m512)(B), \
2815 -(__v16sf)(__m512)(C), \
2816 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002817
2818
2819#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002820 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2821 (__v16sf)(__m512)(B), \
2822 -(__v16sf)(__m512)(C), \
2823 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002824
2825
2826#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002827 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2828 (__v16sf)(__m512)(B), \
2829 (__v16sf)(__m512)(C), (__mmask16)-1, \
2830 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002831
2832
2833#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002834 (__m512)__builtin_ia32_vfmaddps512_mask3(-(__v16sf)(__m512)(A), \
2835 (__v16sf)(__m512)(B), \
2836 (__v16sf)(__m512)(C), \
2837 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002838
2839
2840#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002841 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2842 (__v16sf)(__m512)(B), \
2843 (__v16sf)(__m512)(C), \
2844 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002845
2846
2847#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002848 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2849 (__v16sf)(__m512)(B), \
2850 -(__v16sf)(__m512)(C), \
2851 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002852
2853
2854#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002855 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2856 (__v16sf)(__m512)(B), \
2857 -(__v16sf)(__m512)(C), \
2858 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002859
2860
Michael Kupersteine45af542015-06-30 13:36:19 +00002861static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002862_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2863{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002864 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2865 (__v16sf) __B,
2866 (__v16sf) __C,
2867 (__mmask16) -1,
2868 _MM_FROUND_CUR_DIRECTION);
2869}
2870
Michael Kupersteine45af542015-06-30 13:36:19 +00002871static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002872_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2873{
2874 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2875 (__v16sf) __B,
2876 (__v16sf) __C,
2877 (__mmask16) __U,
2878 _MM_FROUND_CUR_DIRECTION);
2879}
2880
Michael Kupersteine45af542015-06-30 13:36:19 +00002881static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002882_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2883{
2884 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
2885 (__v16sf) __B,
2886 (__v16sf) __C,
2887 (__mmask16) __U,
2888 _MM_FROUND_CUR_DIRECTION);
2889}
2890
Michael Kupersteine45af542015-06-30 13:36:19 +00002891static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002892_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2893{
2894 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2895 (__v16sf) __B,
2896 (__v16sf) __C,
2897 (__mmask16) __U,
2898 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002899}
2900
Michael Kupersteine45af542015-06-30 13:36:19 +00002901static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002902_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2903{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002904 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2905 (__v16sf) __B,
2906 -(__v16sf) __C,
2907 (__mmask16) -1,
2908 _MM_FROUND_CUR_DIRECTION);
2909}
2910
Michael Kupersteine45af542015-06-30 13:36:19 +00002911static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002912_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2913{
2914 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2915 (__v16sf) __B,
2916 -(__v16sf) __C,
2917 (__mmask16) __U,
2918 _MM_FROUND_CUR_DIRECTION);
2919}
2920
Michael Kupersteine45af542015-06-30 13:36:19 +00002921static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002922_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2923{
2924 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2925 (__v16sf) __B,
2926 -(__v16sf) __C,
2927 (__mmask16) __U,
2928 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002929}
2930
Michael Kupersteine45af542015-06-30 13:36:19 +00002931static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002932_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2933{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002934 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2935 (__v16sf) __B,
2936 (__v16sf) __C,
2937 (__mmask16) -1,
2938 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002939}
2940
Michael Kupersteine45af542015-06-30 13:36:19 +00002941static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002942_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2943{
2944 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
2945 (__v16sf) __B,
2946 (__v16sf) __C,
2947 (__mmask16) __U,
2948 _MM_FROUND_CUR_DIRECTION);
2949}
2950
Michael Kupersteine45af542015-06-30 13:36:19 +00002951static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002952_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2953{
2954 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2955 (__v16sf) __B,
2956 (__v16sf) __C,
2957 (__mmask16) __U,
2958 _MM_FROUND_CUR_DIRECTION);
2959}
2960
Michael Kupersteine45af542015-06-30 13:36:19 +00002961static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002962_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2963{
2964 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2965 (__v16sf) __B,
2966 -(__v16sf) __C,
2967 (__mmask16) -1,
2968 _MM_FROUND_CUR_DIRECTION);
2969}
2970
Michael Kupersteine45af542015-06-30 13:36:19 +00002971static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002972_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2973{
2974 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2975 (__v16sf) __B,
2976 -(__v16sf) __C,
2977 (__mmask16) __U,
2978 _MM_FROUND_CUR_DIRECTION);
2979}
2980
2981#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002982 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2983 (__v8df)(__m512d)(B), \
2984 (__v8df)(__m512d)(C), \
2985 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002986
2987
2988#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002989 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2990 (__v8df)(__m512d)(B), \
2991 (__v8df)(__m512d)(C), \
2992 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002993
2994
2995#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002996 (__m512d)__builtin_ia32_vfmaddsubpd512_mask3((__v8df)(__m512d)(A), \
2997 (__v8df)(__m512d)(B), \
2998 (__v8df)(__m512d)(C), \
2999 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003000
3001
3002#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003003 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
3004 (__v8df)(__m512d)(B), \
3005 (__v8df)(__m512d)(C), \
3006 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003007
3008
3009#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003010 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
3011 (__v8df)(__m512d)(B), \
3012 -(__v8df)(__m512d)(C), \
3013 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003014
3015
3016#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003017 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
3018 (__v8df)(__m512d)(B), \
3019 -(__v8df)(__m512d)(C), \
3020 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003021
3022
3023#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003024 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
3025 (__v8df)(__m512d)(B), \
3026 -(__v8df)(__m512d)(C), \
3027 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003028
3029
Michael Kupersteine45af542015-06-30 13:36:19 +00003030static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003031_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
3032{
3033 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3034 (__v8df) __B,
3035 (__v8df) __C,
3036 (__mmask8) -1,
3037 _MM_FROUND_CUR_DIRECTION);
3038}
3039
Michael Kupersteine45af542015-06-30 13:36:19 +00003040static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003041_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3042{
3043 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3044 (__v8df) __B,
3045 (__v8df) __C,
3046 (__mmask8) __U,
3047 _MM_FROUND_CUR_DIRECTION);
3048}
3049
Michael Kupersteine45af542015-06-30 13:36:19 +00003050static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003051_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3052{
3053 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
3054 (__v8df) __B,
3055 (__v8df) __C,
3056 (__mmask8) __U,
3057 _MM_FROUND_CUR_DIRECTION);
3058}
3059
Michael Kupersteine45af542015-06-30 13:36:19 +00003060static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003061_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
3062{
3063 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
3064 (__v8df) __B,
3065 (__v8df) __C,
3066 (__mmask8) __U,
3067 _MM_FROUND_CUR_DIRECTION);
3068}
3069
Michael Kupersteine45af542015-06-30 13:36:19 +00003070static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003071_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
3072{
3073 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3074 (__v8df) __B,
3075 -(__v8df) __C,
3076 (__mmask8) -1,
3077 _MM_FROUND_CUR_DIRECTION);
3078}
3079
Michael Kupersteine45af542015-06-30 13:36:19 +00003080static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003081_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3082{
3083 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
3084 (__v8df) __B,
3085 -(__v8df) __C,
3086 (__mmask8) __U,
3087 _MM_FROUND_CUR_DIRECTION);
3088}
3089
Michael Kupersteine45af542015-06-30 13:36:19 +00003090static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003091_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
3092{
3093 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
3094 (__v8df) __B,
3095 -(__v8df) __C,
3096 (__mmask8) __U,
3097 _MM_FROUND_CUR_DIRECTION);
3098}
3099
3100#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003101 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
3102 (__v16sf)(__m512)(B), \
3103 (__v16sf)(__m512)(C), \
3104 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003105
3106
3107#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003108 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
3109 (__v16sf)(__m512)(B), \
3110 (__v16sf)(__m512)(C), \
3111 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003112
3113
3114#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003115 (__m512)__builtin_ia32_vfmaddsubps512_mask3((__v16sf)(__m512)(A), \
3116 (__v16sf)(__m512)(B), \
3117 (__v16sf)(__m512)(C), \
3118 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003119
3120
3121#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003122 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
3123 (__v16sf)(__m512)(B), \
3124 (__v16sf)(__m512)(C), \
3125 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003126
3127
3128#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003129 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
3130 (__v16sf)(__m512)(B), \
3131 -(__v16sf)(__m512)(C), \
3132 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003133
3134
3135#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003136 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
3137 (__v16sf)(__m512)(B), \
3138 -(__v16sf)(__m512)(C), \
3139 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003140
3141
3142#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003143 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
3144 (__v16sf)(__m512)(B), \
3145 -(__v16sf)(__m512)(C), \
3146 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003147
3148
Michael Kupersteine45af542015-06-30 13:36:19 +00003149static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003150_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
3151{
3152 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3153 (__v16sf) __B,
3154 (__v16sf) __C,
3155 (__mmask16) -1,
3156 _MM_FROUND_CUR_DIRECTION);
3157}
3158
Michael Kupersteine45af542015-06-30 13:36:19 +00003159static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003160_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3161{
3162 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3163 (__v16sf) __B,
3164 (__v16sf) __C,
3165 (__mmask16) __U,
3166 _MM_FROUND_CUR_DIRECTION);
3167}
3168
Michael Kupersteine45af542015-06-30 13:36:19 +00003169static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003170_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3171{
3172 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
3173 (__v16sf) __B,
3174 (__v16sf) __C,
3175 (__mmask16) __U,
3176 _MM_FROUND_CUR_DIRECTION);
3177}
3178
Michael Kupersteine45af542015-06-30 13:36:19 +00003179static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003180_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
3181{
3182 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3183 (__v16sf) __B,
3184 (__v16sf) __C,
3185 (__mmask16) __U,
3186 _MM_FROUND_CUR_DIRECTION);
3187}
3188
Michael Kupersteine45af542015-06-30 13:36:19 +00003189static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003190_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
3191{
3192 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3193 (__v16sf) __B,
3194 -(__v16sf) __C,
3195 (__mmask16) -1,
3196 _MM_FROUND_CUR_DIRECTION);
3197}
3198
Michael Kupersteine45af542015-06-30 13:36:19 +00003199static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003200_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3201{
3202 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3203 (__v16sf) __B,
3204 -(__v16sf) __C,
3205 (__mmask16) __U,
3206 _MM_FROUND_CUR_DIRECTION);
3207}
3208
Michael Kupersteine45af542015-06-30 13:36:19 +00003209static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003210_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
3211{
3212 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3213 (__v16sf) __B,
3214 -(__v16sf) __C,
3215 (__mmask16) __U,
3216 _MM_FROUND_CUR_DIRECTION);
3217}
3218
3219#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003220 (__m512d)__builtin_ia32_vfmsubpd512_mask3((__v8df)(__m512d)(A), \
3221 (__v8df)(__m512d)(B), \
3222 (__v8df)(__m512d)(C), \
3223 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003224
3225
Michael Kupersteine45af542015-06-30 13:36:19 +00003226static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003227_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3228{
3229 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
3230 (__v8df) __B,
3231 (__v8df) __C,
3232 (__mmask8) __U,
3233 _MM_FROUND_CUR_DIRECTION);
3234}
3235
3236#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003237 (__m512)__builtin_ia32_vfmsubps512_mask3((__v16sf)(__m512)(A), \
3238 (__v16sf)(__m512)(B), \
3239 (__v16sf)(__m512)(C), \
3240 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003241
3242
Michael Kupersteine45af542015-06-30 13:36:19 +00003243static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003244_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3245{
3246 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
3247 (__v16sf) __B,
3248 (__v16sf) __C,
3249 (__mmask16) __U,
3250 _MM_FROUND_CUR_DIRECTION);
3251}
3252
3253#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003254 (__m512d)__builtin_ia32_vfmsubaddpd512_mask3((__v8df)(__m512d)(A), \
3255 (__v8df)(__m512d)(B), \
3256 (__v8df)(__m512d)(C), \
3257 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003258
3259
Michael Kupersteine45af542015-06-30 13:36:19 +00003260static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003261_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3262{
3263 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
3264 (__v8df) __B,
3265 (__v8df) __C,
3266 (__mmask8) __U,
3267 _MM_FROUND_CUR_DIRECTION);
3268}
3269
3270#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003271 (__m512)__builtin_ia32_vfmsubaddps512_mask3((__v16sf)(__m512)(A), \
3272 (__v16sf)(__m512)(B), \
3273 (__v16sf)(__m512)(C), \
3274 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003275
3276
Michael Kupersteine45af542015-06-30 13:36:19 +00003277static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003278_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3279{
3280 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
3281 (__v16sf) __B,
3282 (__v16sf) __C,
3283 (__mmask16) __U,
3284 _MM_FROUND_CUR_DIRECTION);
3285}
3286
3287#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003288 (__m512d)__builtin_ia32_vfnmaddpd512_mask((__v8df)(__m512d)(A), \
3289 (__v8df)(__m512d)(B), \
3290 (__v8df)(__m512d)(C), \
3291 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003292
3293
Michael Kupersteine45af542015-06-30 13:36:19 +00003294static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003295_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3296{
3297 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
3298 (__v8df) __B,
3299 (__v8df) __C,
3300 (__mmask8) __U,
3301 _MM_FROUND_CUR_DIRECTION);
3302}
3303
3304#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003305 (__m512)__builtin_ia32_vfnmaddps512_mask((__v16sf)(__m512)(A), \
3306 (__v16sf)(__m512)(B), \
3307 (__v16sf)(__m512)(C), \
3308 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003309
3310
Michael Kupersteine45af542015-06-30 13:36:19 +00003311static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003312_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3313{
3314 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
3315 (__v16sf) __B,
3316 (__v16sf) __C,
3317 (__mmask16) __U,
3318 _MM_FROUND_CUR_DIRECTION);
3319}
3320
3321#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003322 (__m512d)__builtin_ia32_vfnmsubpd512_mask((__v8df)(__m512d)(A), \
3323 (__v8df)(__m512d)(B), \
3324 (__v8df)(__m512d)(C), \
3325 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003326
3327
3328#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003329 (__m512d)__builtin_ia32_vfnmsubpd512_mask3((__v8df)(__m512d)(A), \
3330 (__v8df)(__m512d)(B), \
3331 (__v8df)(__m512d)(C), \
3332 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003333
3334
Michael Kupersteine45af542015-06-30 13:36:19 +00003335static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003336_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3337{
3338 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
3339 (__v8df) __B,
3340 (__v8df) __C,
3341 (__mmask8) __U,
3342 _MM_FROUND_CUR_DIRECTION);
3343}
3344
Michael Kupersteine45af542015-06-30 13:36:19 +00003345static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003346_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3347{
3348 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
3349 (__v8df) __B,
3350 (__v8df) __C,
3351 (__mmask8) __U,
3352 _MM_FROUND_CUR_DIRECTION);
3353}
3354
3355#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003356 (__m512)__builtin_ia32_vfnmsubps512_mask((__v16sf)(__m512)(A), \
3357 (__v16sf)(__m512)(B), \
3358 (__v16sf)(__m512)(C), \
3359 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003360
3361
3362#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003363 (__m512)__builtin_ia32_vfnmsubps512_mask3((__v16sf)(__m512)(A), \
3364 (__v16sf)(__m512)(B), \
3365 (__v16sf)(__m512)(C), \
3366 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003367
3368
Michael Kupersteine45af542015-06-30 13:36:19 +00003369static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003370_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3371{
3372 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
3373 (__v16sf) __B,
3374 (__v16sf) __C,
3375 (__mmask16) __U,
3376 _MM_FROUND_CUR_DIRECTION);
3377}
3378
Michael Kupersteine45af542015-06-30 13:36:19 +00003379static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003380_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3381{
3382 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
3383 (__v16sf) __B,
3384 (__v16sf) __C,
3385 (__mmask16) __U,
3386 _MM_FROUND_CUR_DIRECTION);
3387}
3388
3389
3390
Adam Nemet0d5bb552014-07-28 17:14:40 +00003391/* Vector permutations */
3392
Michael Kupersteine45af542015-06-30 13:36:19 +00003393static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003394_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
3395{
3396 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3397 /* idx */ ,
3398 (__v16si) __A,
3399 (__v16si) __B,
3400 (__mmask16) -1);
3401}
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003402
3403static __inline__ __m512i __DEFAULT_FN_ATTRS
3404_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U,
3405 __m512i __I, __m512i __B)
3406{
3407 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3408 /* idx */ ,
3409 (__v16si) __A,
3410 (__v16si) __B,
3411 (__mmask16) __U);
3412}
3413
3414static __inline__ __m512i __DEFAULT_FN_ATTRS
3415_mm512_maskz_permutex2var_epi32 (__mmask16 __U, __m512i __A,
3416 __m512i __I, __m512i __B)
3417{
3418 return (__m512i) __builtin_ia32_vpermt2vard512_maskz ((__v16si) __I
3419 /* idx */ ,
3420 (__v16si) __A,
3421 (__v16si) __B,
3422 (__mmask16) __U);
3423}
3424
Michael Kupersteine45af542015-06-30 13:36:19 +00003425static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003426_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
3427{
3428 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
3429 /* idx */ ,
3430 (__v8di) __A,
3431 (__v8di) __B,
3432 (__mmask8) -1);
3433}
3434
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003435static __inline__ __m512i __DEFAULT_FN_ATTRS
3436_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I,
3437 __m512i __B)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003438{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003439 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
Adam Nemet0d5bb552014-07-28 17:14:40 +00003440 /* idx */ ,
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003441 (__v8di) __A,
3442 (__v8di) __B,
3443 (__mmask8) __U);
3444}
3445
3446
3447static __inline__ __m512i __DEFAULT_FN_ATTRS
3448_mm512_maskz_permutex2var_epi64 (__mmask8 __U, __m512i __A,
3449 __m512i __I, __m512i __B)
3450{
3451 return (__m512i) __builtin_ia32_vpermt2varq512_maskz ((__v8di) __I
3452 /* idx */ ,
3453 (__v8di) __A,
3454 (__v8di) __B,
3455 (__mmask8) __U);
Adam Nemet0d5bb552014-07-28 17:14:40 +00003456}
3457
Craig Topper67826a52015-02-01 07:35:40 +00003458#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
3459 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003460 (__v8di)(__m512i)(B), (int)(I), \
3461 (__v8di)_mm512_setzero_si512(), \
Craig Topper67826a52015-02-01 07:35:40 +00003462 (__mmask8)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003463
Craig Topper8c18e112016-05-17 04:41:50 +00003464#define _mm512_mask_alignr_epi64(W, U, A, B, imm) __extension__({\
3465 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3466 (__v8di)(__m512i)(B), (int)(imm), \
3467 (__v8di)(__m512i)(W), \
3468 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003469
Craig Topper8c18e112016-05-17 04:41:50 +00003470#define _mm512_maskz_alignr_epi64(U, A, B, imm) __extension__({\
3471 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3472 (__v8di)(__m512i)(B), (int)(imm), \
3473 (__v8di)_mm512_setzero_si512(), \
3474 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003475
Craig Topper67826a52015-02-01 07:35:40 +00003476#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003477 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3478 (__v16si)(__m512i)(B), (int)(I), \
3479 (__v16si)_mm512_setzero_si512(), \
3480 (__mmask16)-1); })
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003481
Craig Topper8c18e112016-05-17 04:41:50 +00003482#define _mm512_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({\
3483 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3484 (__v16si)(__m512i)(B), (int)(imm), \
3485 (__v16si)(__m512i)(W), \
3486 (__mmask16)(U)); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003487
Craig Topper8c18e112016-05-17 04:41:50 +00003488#define _mm512_maskz_alignr_epi32(U, A, B, imm) __extension__({\
3489 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3490 (__v16si)(__m512i)(B), (int)(imm), \
3491 (__v16si)_mm512_setzero_si512(), \
3492 (__mmask16)(U)); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003493/* Vector Extract */
3494
3495#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003496 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(I), \
3497 (__v4df)_mm256_setzero_si256(), \
3498 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003499
Craig Topper8c18e112016-05-17 04:41:50 +00003500#define _mm512_mask_extractf64x4_pd(W, U, A, imm) __extension__ ({\
3501 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3502 (__v4df)(__m256d)(W), \
3503 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003504
Craig Topper8c18e112016-05-17 04:41:50 +00003505#define _mm512_maskz_extractf64x4_pd(U, A, imm) __extension__ ({\
3506 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3507 (__v4df)_mm256_setzero_pd(), \
3508 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003509
Adam Nemetf893ede2015-01-19 20:12:05 +00003510#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003511 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(I), \
3512 (__v4sf)_mm_setzero_ps(), \
3513 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003514
Craig Topper8c18e112016-05-17 04:41:50 +00003515#define _mm512_mask_extractf32x4_ps(W, U, A, imm) __extension__ ({\
3516 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3517 (__v4sf)(__m128)(W), \
3518 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003519
Craig Topper8c18e112016-05-17 04:41:50 +00003520#define _mm512_maskz_extractf32x4_ps(U, A, imm) __extension__ ({\
3521 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3522 (__v4sf)_mm_setzero_ps(), \
3523 (__mmask8)(U)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003524/* Vector Blend */
3525
Michael Kupersteine45af542015-06-30 13:36:19 +00003526static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003527_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
3528{
Igor Bregeraadb8762016-06-08 13:59:20 +00003529 return (__m512d) __builtin_ia32_selectpd_512 ((__mmask8) __U,
Adam Nemet0d5bb552014-07-28 17:14:40 +00003530 (__v8df) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00003531 (__v8df) __A);
Adam Nemet0d5bb552014-07-28 17:14:40 +00003532}
3533
Michael Kupersteine45af542015-06-30 13:36:19 +00003534static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003535_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
3536{
Igor Bregeraadb8762016-06-08 13:59:20 +00003537 return (__m512) __builtin_ia32_selectps_512 ((__mmask16) __U,
Adam Nemet0d5bb552014-07-28 17:14:40 +00003538 (__v16sf) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00003539 (__v16sf) __A);
Adam Nemet0d5bb552014-07-28 17:14:40 +00003540}
3541
Michael Kupersteine45af542015-06-30 13:36:19 +00003542static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003543_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
3544{
Igor Bregeraadb8762016-06-08 13:59:20 +00003545 return (__m512i) __builtin_ia32_selectq_512 ((__mmask8) __U,
Adam Nemet0d5bb552014-07-28 17:14:40 +00003546 (__v8di) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00003547 (__v8di) __A);
Adam Nemet0d5bb552014-07-28 17:14:40 +00003548}
3549
Michael Kupersteine45af542015-06-30 13:36:19 +00003550static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003551_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
3552{
Igor Bregeraadb8762016-06-08 13:59:20 +00003553 return (__m512i) __builtin_ia32_selectd_512 ((__mmask16) __U,
Adam Nemet0d5bb552014-07-28 17:14:40 +00003554 (__v16si) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00003555 (__v16si) __A);
Adam Nemet0d5bb552014-07-28 17:14:40 +00003556}
3557
3558/* Compare */
3559
Craig Topper53565c62015-02-01 22:27:40 +00003560#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
3561 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003562 (__v16sf)(__m512)(B), (int)(P), \
3563 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003564
Craig Topper53565c62015-02-01 22:27:40 +00003565#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
3566 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003567 (__v16sf)(__m512)(B), (int)(P), \
3568 (__mmask16)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003569
3570#define _mm512_cmp_ps_mask(A, B, P) \
3571 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3572
3573#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
3574 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3575
3576#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
3577 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003578 (__v8df)(__m512d)(B), (int)(P), \
3579 (__mmask8)-1, (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003580
3581#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
3582 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003583 (__v8df)(__m512d)(B), (int)(P), \
3584 (__mmask8)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003585
3586#define _mm512_cmp_pd_mask(A, B, P) \
3587 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3588
3589#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
3590 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003591
3592/* Conversion */
3593
Craig Topperf3efec62016-06-08 06:08:07 +00003594#define _mm512_cvtt_roundps_epu32(A, R) __extension__ ({ \
3595 (__m512i)__builtin_ia32_cvttps2udq512_mask((__v16sf)(__m512)(A), \
3596 (__v16si)_mm512_undefined_epi32(), \
3597 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6170c152016-06-01 14:41:41 +00003598
Craig Topperf3efec62016-06-08 06:08:07 +00003599#define _mm512_mask_cvtt_roundps_epu32(W, U, A, R) __extension__ ({ \
3600 (__m512i)__builtin_ia32_cvttps2udq512_mask((__v16sf)(__m512)(A), \
3601 (__v16si)(__m512i)(W), \
3602 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6170c152016-06-01 14:41:41 +00003603
Craig Topperf3efec62016-06-08 06:08:07 +00003604#define _mm512_maskz_cvtt_roundps_epu32(U, A, R) __extension__ ({ \
3605 (__m512i)__builtin_ia32_cvttps2udq512_mask((__v16sf)(__m512)(A), \
3606 (__v16si)_mm512_setzero_si512(), \
3607 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6170c152016-06-01 14:41:41 +00003608
3609
Michael Kupersteine45af542015-06-30 13:36:19 +00003610static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003611_mm512_cvttps_epu32(__m512 __A)
3612{
3613 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3614 (__v16si)
3615 _mm512_setzero_si512 (),
3616 (__mmask16) -1,
3617 _MM_FROUND_CUR_DIRECTION);
3618}
3619
Michael Zuckermanf1544752016-05-09 10:32:51 +00003620static __inline__ __m512i __DEFAULT_FN_ATTRS
3621_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3622{
3623 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3624 (__v16si) __W,
3625 (__mmask16) __U,
3626 _MM_FROUND_CUR_DIRECTION);
3627}
3628
3629static __inline__ __m512i __DEFAULT_FN_ATTRS
3630_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
3631{
3632 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3633 (__v16si) _mm512_setzero_si512 (),
3634 (__mmask16) __U,
3635 _MM_FROUND_CUR_DIRECTION);
3636}
3637
Craig Topper72c7d512015-02-01 07:35:35 +00003638#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003639 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003640 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003641 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003642
Craig Topperf3efec62016-06-08 06:08:07 +00003643#define _mm512_mask_cvt_roundepi32_ps(W, U, A, R) __extension__ ({ \
3644 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(__m512i)(A), \
3645 (__v16sf)(__m512)(W), \
3646 (__mmask16)(U), (int)(R)); })
Michael Zuckerman186d8672016-05-31 11:27:34 +00003647
Craig Topperf3efec62016-06-08 06:08:07 +00003648#define _mm512_maskz_cvt_roundepi32_ps(U, A, R) __extension__ ({ \
3649 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(__m512i)(A), \
3650 (__v16sf)_mm512_setzero_ps(), \
3651 (__mmask16)(U), (int)(R)); })
Michael Zuckerman186d8672016-05-31 11:27:34 +00003652
Craig Topper72c7d512015-02-01 07:35:35 +00003653#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003654 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003655 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003656 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003657
Craig Topperf3efec62016-06-08 06:08:07 +00003658#define _mm512_mask_cvt_roundepu32_ps(W, U, A, R) __extension__ ({ \
3659 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(__m512i)(A), \
3660 (__v16sf)(__m512)(W), \
3661 (__mmask16)(U), (int)(R)); })
Michael Zuckerman186d8672016-05-31 11:27:34 +00003662
Craig Topperf3efec62016-06-08 06:08:07 +00003663#define _mm512_maskz_cvt_roundepu32_ps(U, A, R) __extension__ ({ \
3664 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(__m512i)(A), \
3665 (__v16sf)_mm512_setzero_ps(), \
3666 (__mmask16)(U), (int)(R)); })
Michael Zuckerman186d8672016-05-31 11:27:34 +00003667
Michael Zuckermanf1544752016-05-09 10:32:51 +00003668static __inline__ __m512 __DEFAULT_FN_ATTRS
3669_mm512_cvtepu32_ps (__m512i __A)
3670{
3671 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3672 (__v16sf) _mm512_undefined_ps (),
3673 (__mmask16) -1,
3674 _MM_FROUND_CUR_DIRECTION);
3675}
3676
3677static __inline__ __m512 __DEFAULT_FN_ATTRS
3678_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3679{
3680 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3681 (__v16sf) __W,
3682 (__mmask16) __U,
3683 _MM_FROUND_CUR_DIRECTION);
3684}
3685
3686static __inline__ __m512 __DEFAULT_FN_ATTRS
3687_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
3688{
3689 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3690 (__v16sf) _mm512_setzero_ps (),
3691 (__mmask16) __U,
3692 _MM_FROUND_CUR_DIRECTION);
3693}
3694
Michael Kupersteine45af542015-06-30 13:36:19 +00003695static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003696_mm512_cvtepi32_pd(__m256i __A)
3697{
3698 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003699 (__v8df)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003700 _mm512_setzero_pd (),
3701 (__mmask8) -1);
3702}
3703
Michael Zuckermanf1544752016-05-09 10:32:51 +00003704static __inline__ __m512d __DEFAULT_FN_ATTRS
3705_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3706{
3707 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3708 (__v8df) __W,
3709 (__mmask8) __U);
3710}
3711
3712static __inline__ __m512d __DEFAULT_FN_ATTRS
3713_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
3714{
3715 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3716 (__v8df) _mm512_setzero_pd (),
3717 (__mmask8) __U);
3718}
3719
3720static __inline__ __m512 __DEFAULT_FN_ATTRS
3721_mm512_cvtepi32_ps (__m512i __A)
3722{
3723 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3724 (__v16sf) _mm512_undefined_ps (),
3725 (__mmask16) -1,
3726 _MM_FROUND_CUR_DIRECTION);
3727}
3728
3729static __inline__ __m512 __DEFAULT_FN_ATTRS
3730_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3731{
3732 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3733 (__v16sf) __W,
3734 (__mmask16) __U,
3735 _MM_FROUND_CUR_DIRECTION);
3736}
3737
3738static __inline__ __m512 __DEFAULT_FN_ATTRS
3739_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
3740{
3741 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3742 (__v16sf) _mm512_setzero_ps (),
3743 (__mmask16) __U,
3744 _MM_FROUND_CUR_DIRECTION);
3745}
3746
Michael Kupersteine45af542015-06-30 13:36:19 +00003747static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003748_mm512_cvtepu32_pd(__m256i __A)
3749{
3750 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3751 (__v8df)
3752 _mm512_setzero_pd (),
3753 (__mmask8) -1);
3754}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003755
Michael Zuckermanf1544752016-05-09 10:32:51 +00003756static __inline__ __m512d __DEFAULT_FN_ATTRS
3757_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3758{
3759 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3760 (__v8df) __W,
3761 (__mmask8) __U);
3762}
3763
3764static __inline__ __m512d __DEFAULT_FN_ATTRS
3765_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
3766{
3767 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3768 (__v8df) _mm512_setzero_pd (),
3769 (__mmask8) __U);
3770}
3771
Craig Topper72c7d512015-02-01 07:35:35 +00003772#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003773 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003774 (__v8sf)_mm256_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003775 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003776
Michael Zuckerman186d8672016-05-31 11:27:34 +00003777#define _mm512_mask_cvt_roundpd_ps(W, U, A, R) __extension__ ({ \
3778 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
Craig Topperf3efec62016-06-08 06:08:07 +00003779 (__v8sf)(__m256)(W), (__mmask8)(U), \
3780 (int)(R)); })
Michael Zuckerman186d8672016-05-31 11:27:34 +00003781
3782#define _mm512_maskz_cvt_roundpd_ps(U, A, R) __extension__ ({ \
3783 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
3784 (__v8sf)_mm256_setzero_ps(), \
3785 (__mmask8)(U), (int)(R)); })
3786
Michael Zuckermanf1544752016-05-09 10:32:51 +00003787static __inline__ __m256 __DEFAULT_FN_ATTRS
3788_mm512_cvtpd_ps (__m512d __A)
3789{
3790 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3791 (__v8sf) _mm256_undefined_ps (),
3792 (__mmask8) -1,
3793 _MM_FROUND_CUR_DIRECTION);
3794}
3795
3796static __inline__ __m256 __DEFAULT_FN_ATTRS
3797_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
3798{
3799 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3800 (__v8sf) __W,
3801 (__mmask8) __U,
3802 _MM_FROUND_CUR_DIRECTION);
3803}
3804
3805static __inline__ __m256 __DEFAULT_FN_ATTRS
3806_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
3807{
3808 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3809 (__v8sf) _mm256_setzero_ps (),
3810 (__mmask8) __U,
3811 _MM_FROUND_CUR_DIRECTION);
3812}
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003813
Craig Topperf3efec62016-06-08 06:08:07 +00003814#define _mm512_cvt_roundps_ph(A, I) __extension__ ({ \
3815 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3816 (__v16hi)_mm256_undefined_si256(), \
3817 (__mmask16)-1); })
Michael Zuckerman6170c152016-06-01 14:41:41 +00003818
Craig Topperf3efec62016-06-08 06:08:07 +00003819#define _mm512_mask_cvt_roundps_ph(U, W, A, I) __extension__ ({ \
3820 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3821 (__v16hi)(__m256i)(U), \
3822 (__mmask16)(W)); })
Michael Zuckerman6170c152016-06-01 14:41:41 +00003823
Craig Topperf3efec62016-06-08 06:08:07 +00003824#define _mm512_maskz_cvt_roundps_ph(W, A, I) __extension__ ({ \
3825 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3826 (__v16hi)_mm256_setzero_si256(), \
3827 (__mmask16)(W)); })
Michael Zuckerman6170c152016-06-01 14:41:41 +00003828
Craig Topper72c7d512015-02-01 07:35:35 +00003829#define _mm512_cvtps_ph(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003830 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
Craig Topper72c7d512015-02-01 07:35:35 +00003831 (__v16hi)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003832 (__mmask16)-1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003833
Craig Topper8c18e112016-05-17 04:41:50 +00003834#define _mm512_mask_cvtps_ph(U, W, A, I) __extension__ ({ \
3835 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3836 (__v16hi)(__m256i)(U), \
3837 (__mmask16)(W)); })
Michael Zuckermanf1544752016-05-09 10:32:51 +00003838
Craig Topper8c18e112016-05-17 04:41:50 +00003839#define _mm512_maskz_cvtps_ph(W, A, I) __extension__ ({\
3840 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3841 (__v16hi)_mm256_setzero_si256(), \
3842 (__mmask16)(W)); })
Michael Zuckerman6170c152016-06-01 14:41:41 +00003843
Craig Topperf3efec62016-06-08 06:08:07 +00003844#define _mm512_cvt_roundph_ps(A, R) __extension__ ({ \
3845 (__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(__m256i)(A), \
3846 (__v16sf)_mm512_undefined_ps(), \
3847 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6170c152016-06-01 14:41:41 +00003848
Craig Topperf3efec62016-06-08 06:08:07 +00003849#define _mm512_mask_cvt_roundph_ps(W, U, A, R) __extension__ ({ \
3850 (__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(__m256i)(A), \
3851 (__v16sf)(__m512)(W), \
3852 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6170c152016-06-01 14:41:41 +00003853
Craig Topperf3efec62016-06-08 06:08:07 +00003854#define _mm512_maskz_cvt_roundph_ps(U, A, R) __extension__ ({ \
3855 (__m512)__builtin_ia32_vcvtph2ps512_mask((__v16hi)(__m256i)(A), \
3856 (__v16sf)_mm512_setzero_ps(), \
3857 (__mmask16)(U), (int)(R)); })
3858
3859
Michael Kupersteine45af542015-06-30 13:36:19 +00003860static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003861_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003862{
3863 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003864 (__v16sf)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003865 _mm512_setzero_ps (),
3866 (__mmask16) -1,
3867 _MM_FROUND_CUR_DIRECTION);
3868}
3869
Michael Zuckermanf1544752016-05-09 10:32:51 +00003870static __inline__ __m512 __DEFAULT_FN_ATTRS
3871_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003872{
Michael Zuckermanf1544752016-05-09 10:32:51 +00003873 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3874 (__v16sf) __W,
3875 (__mmask16) __U,
3876 _MM_FROUND_CUR_DIRECTION);
3877}
3878
3879static __inline__ __m512 __DEFAULT_FN_ATTRS
3880_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
3881{
3882 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3883 (__v16sf) _mm512_setzero_ps (),
3884 (__mmask16) __U,
3885 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003886}
3887
Michael Zuckerman186d8672016-05-31 11:27:34 +00003888#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
3889 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
3890 (__v8si)_mm256_setzero_si256(), \
3891 (__mmask8)-1, (int)(R)); })
3892
3893#define _mm512_mask_cvtt_roundpd_epi32(W, U, A, R) __extension__ ({ \
3894 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
Craig Topperf3efec62016-06-08 06:08:07 +00003895 (__v8si)(__m256i)(W), \
Michael Zuckerman186d8672016-05-31 11:27:34 +00003896 (__mmask8)(U), (int)(R)); })
3897
Craig Topperf3efec62016-06-08 06:08:07 +00003898#define _mm512_maskz_cvtt_roundpd_epi32(U, A, R) __extension__ ({ \
Michael Zuckerman186d8672016-05-31 11:27:34 +00003899 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
3900 (__v8si)_mm256_setzero_si256(), \
3901 (__mmask8)(U), (int)(R)); })
3902
Michael Kupersteine45af542015-06-30 13:36:19 +00003903static __inline __m256i __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003904_mm512_cvttpd_epi32(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003905{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003906 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) __a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003907 (__v8si)_mm256_setzero_si256(),
3908 (__mmask8) -1,
3909 _MM_FROUND_CUR_DIRECTION);
3910}
3911
Michael Zuckermanf1544752016-05-09 10:32:51 +00003912static __inline__ __m256i __DEFAULT_FN_ATTRS
3913_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3914{
3915 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3916 (__v8si) __W,
3917 (__mmask8) __U,
3918 _MM_FROUND_CUR_DIRECTION);
3919}
3920
3921static __inline__ __m256i __DEFAULT_FN_ATTRS
3922_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
3923{
3924 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3925 (__v8si) _mm256_setzero_si256 (),
3926 (__mmask8) __U,
3927 _MM_FROUND_CUR_DIRECTION);
3928}
3929
Craig Topper72c7d512015-02-01 07:35:35 +00003930#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003931 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003932 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003933 (__mmask16)-1, (int)(R)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003934
Craig Topperf3efec62016-06-08 06:08:07 +00003935#define _mm512_mask_cvtt_roundps_epi32(W, U, A, R) __extension__ ({ \
Michael Zuckerman186d8672016-05-31 11:27:34 +00003936 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topperf3efec62016-06-08 06:08:07 +00003937 (__v16si)(__m512i)(W), \
Michael Zuckerman186d8672016-05-31 11:27:34 +00003938 (__mmask16)(U), (int)(R)); })
3939
Craig Topperf3efec62016-06-08 06:08:07 +00003940#define _mm512_maskz_cvtt_roundps_epi32(U, A, R) __extension__ ({ \
Michael Zuckerman186d8672016-05-31 11:27:34 +00003941 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
3942 (__v16si)_mm512_setzero_si512(), \
3943 (__mmask16)(U), (int)(R)); })
3944
Michael Zuckermanf1544752016-05-09 10:32:51 +00003945static __inline __m512i __DEFAULT_FN_ATTRS
3946_mm512_cvttps_epi32(__m512 __a)
3947{
3948 return (__m512i)
3949 __builtin_ia32_cvttps2dq512_mask((__v16sf) __a,
3950 (__v16si) _mm512_setzero_si512 (),
3951 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
3952}
3953
3954static __inline__ __m512i __DEFAULT_FN_ATTRS
3955_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3956{
3957 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3958 (__v16si) __W,
3959 (__mmask16) __U,
3960 _MM_FROUND_CUR_DIRECTION);
3961}
3962
3963static __inline__ __m512i __DEFAULT_FN_ATTRS
3964_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
3965{
3966 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3967 (__v16si) _mm512_setzero_si512 (),
3968 (__mmask16) __U,
3969 _MM_FROUND_CUR_DIRECTION);
3970}
Craig Topper72c7d512015-02-01 07:35:35 +00003971
3972#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003973 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003974 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003975 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003976
Craig Topperf3efec62016-06-08 06:08:07 +00003977#define _mm512_mask_cvt_roundps_epi32(W, U, A, R) __extension__ ({ \
3978 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(__m512)(A), \
3979 (__v16si)(__m512i)(W), \
3980 (__mmask16)(U), (int)(R)); })
Michael Zuckerman186d8672016-05-31 11:27:34 +00003981
Craig Topperf3efec62016-06-08 06:08:07 +00003982#define _mm512_maskz_cvt_roundps_epi32(U, A, R) __extension__ ({ \
3983 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(__m512)(A), \
3984 (__v16si)_mm512_setzero_si512(), \
3985 (__mmask16)(U), (int)(R)); })
Michael Zuckerman186d8672016-05-31 11:27:34 +00003986
Michael Zuckermanf1544752016-05-09 10:32:51 +00003987static __inline__ __m512i __DEFAULT_FN_ATTRS
3988_mm512_cvtps_epi32 (__m512 __A)
3989{
3990 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3991 (__v16si) _mm512_undefined_epi32 (),
3992 (__mmask16) -1,
3993 _MM_FROUND_CUR_DIRECTION);
3994}
3995
3996static __inline__ __m512i __DEFAULT_FN_ATTRS
3997_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3998{
3999 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
4000 (__v16si) __W,
4001 (__mmask16) __U,
4002 _MM_FROUND_CUR_DIRECTION);
4003}
4004
4005static __inline__ __m512i __DEFAULT_FN_ATTRS
4006_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
4007{
4008 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
4009 (__v16si)
4010 _mm512_setzero_si512 (),
4011 (__mmask16) __U,
4012 _MM_FROUND_CUR_DIRECTION);
4013}
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00004014
Craig Topper72c7d512015-02-01 07:35:35 +00004015#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004016 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00004017 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00004018 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00004019
Craig Topperf3efec62016-06-08 06:08:07 +00004020#define _mm512_mask_cvt_roundpd_epi32(W, U, A, R) __extension__ ({ \
Michael Zuckerman186d8672016-05-31 11:27:34 +00004021 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
Craig Topperf3efec62016-06-08 06:08:07 +00004022 (__v8si)(__m256i)(W), \
Michael Zuckerman186d8672016-05-31 11:27:34 +00004023 (__mmask8)(U), (int)(R)); })
4024
4025#define _mm512_maskz_cvt_roundpd_epi32(U, A, R) __extension__ ({ \
4026 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
4027 (__v8si)_mm256_setzero_si256(), \
4028 (__mmask8)(U), (int)(R)); })
4029
Michael Zuckermanf1544752016-05-09 10:32:51 +00004030static __inline__ __m256i __DEFAULT_FN_ATTRS
4031_mm512_cvtpd_epi32 (__m512d __A)
4032{
4033 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
4034 (__v8si)
4035 _mm256_undefined_si256 (),
4036 (__mmask8) -1,
4037 _MM_FROUND_CUR_DIRECTION);
4038}
4039
4040static __inline__ __m256i __DEFAULT_FN_ATTRS
4041_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
4042{
4043 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
4044 (__v8si) __W,
4045 (__mmask8) __U,
4046 _MM_FROUND_CUR_DIRECTION);
4047}
4048
4049static __inline__ __m256i __DEFAULT_FN_ATTRS
4050_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
4051{
4052 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
4053 (__v8si)
4054 _mm256_setzero_si256 (),
4055 (__mmask8) __U,
4056 _MM_FROUND_CUR_DIRECTION);
4057}
4058
Craig Topper72c7d512015-02-01 07:35:35 +00004059#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004060 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00004061 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00004062 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00004063
Craig Topperf3efec62016-06-08 06:08:07 +00004064#define _mm512_mask_cvt_roundps_epu32(W, U, A, R) __extension__ ({ \
4065 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(__m512)(A), \
4066 (__v16si)(__m512i)(W), \
4067 (__mmask16)(U), (int)(R)); })
Michael Zuckerman186d8672016-05-31 11:27:34 +00004068
Craig Topperf3efec62016-06-08 06:08:07 +00004069#define _mm512_maskz_cvt_roundps_epu32(U, A, R) __extension__ ({ \
4070 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(__m512)(A), \
4071 (__v16si)_mm512_setzero_si512(), \
4072 (__mmask16)(U), (int)(R)); })
Michael Zuckerman186d8672016-05-31 11:27:34 +00004073
Michael Zuckermanf1544752016-05-09 10:32:51 +00004074static __inline__ __m512i __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00004075_mm512_cvtps_epu32 ( __m512 __A)
Michael Zuckermanf1544752016-05-09 10:32:51 +00004076{
4077 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,\
4078 (__v16si)\
4079 _mm512_undefined_epi32 (),\
4080 (__mmask16) -1,\
4081 _MM_FROUND_CUR_DIRECTION);\
4082}
4083
4084static __inline__ __m512i __DEFAULT_FN_ATTRS
4085_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
4086{
4087 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
4088 (__v16si) __W,
4089 (__mmask16) __U,
4090 _MM_FROUND_CUR_DIRECTION);
4091}
4092
Michael Zuckerman9fcf3552016-05-30 13:22:12 +00004093static __inline__ __m512i __DEFAULT_FN_ATTRS
4094_mm512_maskz_cvtps_epu32 ( __mmask16 __U, __m512 __A)
4095{
4096 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
4097 (__v16si)
4098 _mm512_setzero_si512 (),
4099 (__mmask16) __U ,
4100 _MM_FROUND_CUR_DIRECTION);
4101}
4102
Craig Topper72c7d512015-02-01 07:35:35 +00004103#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004104 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00004105 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00004106 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004107
Craig Topperf3efec62016-06-08 06:08:07 +00004108#define _mm512_mask_cvt_roundpd_epu32(W, U, A, R) __extension__ ({ \
Michael Zuckerman186d8672016-05-31 11:27:34 +00004109 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
4110 (__v8si)(W), \
Craig Topperf3efec62016-06-08 06:08:07 +00004111 (__mmask8)(U), (int)(R)); })
Michael Zuckerman186d8672016-05-31 11:27:34 +00004112
4113#define _mm512_maskz_cvt_roundpd_epu32(U, A, R) __extension__ ({ \
4114 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
4115 (__v8si)_mm256_setzero_si256(), \
4116 (__mmask8)(U), (int)(R)); })
4117
Michael Zuckermanf1544752016-05-09 10:32:51 +00004118static __inline__ __m256i __DEFAULT_FN_ATTRS
4119_mm512_cvtpd_epu32 (__m512d __A)
4120{
4121 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
4122 (__v8si)
4123 _mm256_undefined_si256 (),
4124 (__mmask8) -1,
4125 _MM_FROUND_CUR_DIRECTION);
4126}
4127
4128static __inline__ __m256i __DEFAULT_FN_ATTRS
4129_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
4130{
4131 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
4132 (__v8si) __W,
4133 (__mmask8) __U,
4134 _MM_FROUND_CUR_DIRECTION);
4135}
4136
4137static __inline__ __m256i __DEFAULT_FN_ATTRS
4138_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
4139{
4140 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
4141 (__v8si)
4142 _mm256_setzero_si256 (),
4143 (__mmask8) __U,
4144 _MM_FROUND_CUR_DIRECTION);
4145}
Craig Topper79f53ca2016-06-23 06:36:42 +00004146
Adam Nemet63a951e2015-01-14 01:31:17 +00004147/* Unpack and Interleave */
Craig Topper79f53ca2016-06-23 06:36:42 +00004148
Michael Kupersteine45af542015-06-30 13:36:19 +00004149static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00004150_mm512_unpackhi_pd(__m512d __a, __m512d __b)
4151{
Craig Topper79f53ca2016-06-23 06:36:42 +00004152 return (__m512d)__builtin_shufflevector((__v8df)__a, (__v8df)__b,
4153 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
4154}
4155
4156static __inline__ __m512d __DEFAULT_FN_ATTRS
4157_mm512_mask_unpackhi_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
4158{
4159 return (__m512d)__builtin_ia32_selectpd_512((__mmask8) __U,
4160 (__v8df)_mm512_unpackhi_pd(__A, __B),
4161 (__v8df)__W);
4162}
4163
4164static __inline__ __m512d __DEFAULT_FN_ATTRS
4165_mm512_maskz_unpackhi_pd(__mmask8 __U, __m512d __A, __m512d __B)
4166{
4167 return (__m512d)__builtin_ia32_selectpd_512((__mmask8) __U,
4168 (__v8df)_mm512_unpackhi_pd(__A, __B),
4169 (__v8df)_mm512_setzero_pd());
Adam Nemet63a951e2015-01-14 01:31:17 +00004170}
4171
Michael Kupersteine45af542015-06-30 13:36:19 +00004172static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00004173_mm512_unpacklo_pd(__m512d __a, __m512d __b)
4174{
Craig Topper79f53ca2016-06-23 06:36:42 +00004175 return (__m512d)__builtin_shufflevector((__v8df)__a, (__v8df)__b,
4176 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
4177}
4178
4179static __inline__ __m512d __DEFAULT_FN_ATTRS
4180_mm512_mask_unpacklo_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
4181{
4182 return (__m512d)__builtin_ia32_selectpd_512((__mmask8) __U,
4183 (__v8df)_mm512_unpacklo_pd(__A, __B),
4184 (__v8df)__W);
4185}
4186
4187static __inline__ __m512d __DEFAULT_FN_ATTRS
4188_mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B)
4189{
4190 return (__m512d)__builtin_ia32_selectpd_512((__mmask8) __U,
4191 (__v8df)_mm512_unpacklo_pd(__A, __B),
4192 (__v8df)_mm512_setzero_pd());
Adam Nemet63a951e2015-01-14 01:31:17 +00004193}
4194
Michael Kupersteine45af542015-06-30 13:36:19 +00004195static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00004196_mm512_unpackhi_ps(__m512 __a, __m512 __b)
4197{
Craig Topper79f53ca2016-06-23 06:36:42 +00004198 return (__m512)__builtin_shufflevector((__v16sf)__a, (__v16sf)__b,
4199 2, 18, 3, 19,
4200 2+4, 18+4, 3+4, 19+4,
4201 2+8, 18+8, 3+8, 19+8,
4202 2+12, 18+12, 3+12, 19+12);
4203}
4204
4205static __inline__ __m512 __DEFAULT_FN_ATTRS
4206_mm512_mask_unpackhi_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
4207{
4208 return (__m512)__builtin_ia32_selectps_512((__mmask16) __U,
4209 (__v16sf)_mm512_unpackhi_ps(__A, __B),
4210 (__v16sf)__W);
4211}
4212
4213static __inline__ __m512 __DEFAULT_FN_ATTRS
4214_mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B)
4215{
4216 return (__m512)__builtin_ia32_selectps_512((__mmask16) __U,
4217 (__v16sf)_mm512_unpackhi_ps(__A, __B),
4218 (__v16sf)_mm512_setzero_ps());
Adam Nemet63a951e2015-01-14 01:31:17 +00004219}
4220
Michael Kupersteine45af542015-06-30 13:36:19 +00004221static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00004222_mm512_unpacklo_ps(__m512 __a, __m512 __b)
4223{
Craig Topper79f53ca2016-06-23 06:36:42 +00004224 return (__m512)__builtin_shufflevector((__v16sf)__a, (__v16sf)__b,
4225 0, 16, 1, 17,
4226 0+4, 16+4, 1+4, 17+4,
4227 0+8, 16+8, 1+8, 17+8,
4228 0+12, 16+12, 1+12, 17+12);
4229}
4230
4231static __inline__ __m512 __DEFAULT_FN_ATTRS
4232_mm512_mask_unpacklo_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
4233{
4234 return (__m512)__builtin_ia32_selectps_512((__mmask16) __U,
4235 (__v16sf)_mm512_unpacklo_ps(__A, __B),
4236 (__v16sf)__W);
4237}
4238
4239static __inline__ __m512 __DEFAULT_FN_ATTRS
4240_mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B)
4241{
4242 return (__m512)__builtin_ia32_selectps_512((__mmask16) __U,
4243 (__v16sf)_mm512_unpacklo_ps(__A, __B),
4244 (__v16sf)_mm512_setzero_ps());
4245}
4246
4247static __inline__ __m512i __DEFAULT_FN_ATTRS
4248_mm512_unpackhi_epi32(__m512i __A, __m512i __B)
4249{
4250 return (__m512i)__builtin_shufflevector((__v16si)__A, (__v16si)__B,
4251 2, 18, 3, 19,
4252 2+4, 18+4, 3+4, 19+4,
4253 2+8, 18+8, 3+8, 19+8,
4254 2+12, 18+12, 3+12, 19+12);
4255}
4256
4257static __inline__ __m512i __DEFAULT_FN_ATTRS
4258_mm512_mask_unpackhi_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4259{
4260 return (__m512i)__builtin_ia32_selectd_512((__mmask16) __U,
4261 (__v16si)_mm512_unpackhi_epi32(__A, __B),
4262 (__v16si)__W);
4263}
4264
4265static __inline__ __m512i __DEFAULT_FN_ATTRS
4266_mm512_maskz_unpackhi_epi32(__mmask16 __U, __m512i __A, __m512i __B)
4267{
4268 return (__m512i)__builtin_ia32_selectd_512((__mmask16) __U,
4269 (__v16si)_mm512_unpackhi_epi32(__A, __B),
4270 (__v16si)_mm512_setzero_si512());
4271}
4272
4273static __inline__ __m512i __DEFAULT_FN_ATTRS
4274_mm512_unpacklo_epi32(__m512i __A, __m512i __B)
4275{
4276 return (__m512i)__builtin_shufflevector((__v16si)__A, (__v16si)__B,
4277 0, 16, 1, 17,
4278 0+4, 16+4, 1+4, 17+4,
4279 0+8, 16+8, 1+8, 17+8,
4280 0+12, 16+12, 1+12, 17+12);
4281}
4282
4283static __inline__ __m512i __DEFAULT_FN_ATTRS
4284_mm512_mask_unpacklo_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4285{
4286 return (__m512i)__builtin_ia32_selectd_512((__mmask16) __U,
4287 (__v16si)_mm512_unpacklo_epi32(__A, __B),
4288 (__v16si)__W);
4289}
4290
4291static __inline__ __m512i __DEFAULT_FN_ATTRS
4292_mm512_maskz_unpacklo_epi32(__mmask16 __U, __m512i __A, __m512i __B)
4293{
4294 return (__m512i)__builtin_ia32_selectd_512((__mmask16) __U,
4295 (__v16si)_mm512_unpacklo_epi32(__A, __B),
4296 (__v16si)_mm512_setzero_si512());
4297}
4298
4299static __inline__ __m512i __DEFAULT_FN_ATTRS
4300_mm512_unpackhi_epi64(__m512i __A, __m512i __B)
4301{
4302 return (__m512i)__builtin_shufflevector((__v8di)__A, (__v8di)__B,
4303 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
4304}
4305
4306static __inline__ __m512i __DEFAULT_FN_ATTRS
4307_mm512_mask_unpackhi_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4308{
4309 return (__m512i)__builtin_ia32_selectq_512((__mmask8) __U,
4310 (__v8di)_mm512_unpackhi_epi64(__A, __B),
4311 (__v8di)__W);
4312}
4313
4314static __inline__ __m512i __DEFAULT_FN_ATTRS
4315_mm512_maskz_unpackhi_epi64(__mmask8 __U, __m512i __A, __m512i __B)
4316{
4317 return (__m512i)__builtin_ia32_selectq_512((__mmask8) __U,
4318 (__v8di)_mm512_unpackhi_epi64(__A, __B),
4319 (__v8di)_mm512_setzero_si512());
4320}
4321
4322static __inline__ __m512i __DEFAULT_FN_ATTRS
4323_mm512_unpacklo_epi64 (__m512i __A, __m512i __B)
4324{
4325 return (__m512i)__builtin_shufflevector((__v8di)__A, (__v8di)__B,
4326 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
4327}
4328
4329static __inline__ __m512i __DEFAULT_FN_ATTRS
4330_mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4331{
4332 return (__m512i)__builtin_ia32_selectq_512((__mmask8) __U,
4333 (__v8di)_mm512_unpacklo_epi64(__A, __B),
4334 (__v8di)__W);
4335}
4336
4337static __inline__ __m512i __DEFAULT_FN_ATTRS
4338_mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4339{
4340 return (__m512i)__builtin_ia32_selectq_512((__mmask8) __U,
4341 (__v8di)_mm512_unpacklo_epi64(__A, __B),
4342 (__v8di)_mm512_setzero_si512());
Adam Nemet63a951e2015-01-14 01:31:17 +00004343}
4344
Adam Nemet0d5bb552014-07-28 17:14:40 +00004345/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004346
Michael Kupersteine45af542015-06-30 13:36:19 +00004347static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004348_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004349{
4350 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
4351 (__v16si) __B,
4352 (__mmask16) -1);
4353}
4354
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00004355static __inline__ __mmask16 __DEFAULT_FN_ATTRS
4356_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
4357{
4358 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
4359 (__v16si) __B, __U);
4360}
4361
Michael Kupersteine45af542015-06-30 13:36:19 +00004362static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004363_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004364{
4365 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
4366 (__v8di) __B,
4367 (__mmask8) -1);
4368}
4369
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00004370static __inline__ __mmask8 __DEFAULT_FN_ATTRS
4371_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
4372{
4373 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, (__v8di) __B, __U);
4374}
4375
4376
Adam Nemet0d5bb552014-07-28 17:14:40 +00004377/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004378
Michael Kupersteine45af542015-06-30 13:36:19 +00004379static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004380_mm512_loadu_si512 (void const *__P)
4381{
Craig Topper4537ea72016-05-14 06:03:13 +00004382 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004383 (__v16si)
4384 _mm512_setzero_si512 (),
4385 (__mmask16) -1);
4386}
4387
4388static __inline __m512i __DEFAULT_FN_ATTRS
4389_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void const *__P)
4390{
Craig Topper4537ea72016-05-14 06:03:13 +00004391 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004392 (__v16si) __W,
4393 (__mmask16) __U);
4394}
4395
4396
4397static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004398_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004399{
Craig Topper4537ea72016-05-14 06:03:13 +00004400 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004401 (__v16si)
4402 _mm512_setzero_si512 (),
4403 (__mmask16) __U);
4404}
4405
Michael Kupersteine45af542015-06-30 13:36:19 +00004406static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004407_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void const *__P)
4408{
Craig Topper4537ea72016-05-14 06:03:13 +00004409 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004410 (__v8di) __W,
4411 (__mmask8) __U);
4412}
4413
4414static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004415_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004416{
Craig Topper4537ea72016-05-14 06:03:13 +00004417 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004418 (__v8di)
4419 _mm512_setzero_si512 (),
4420 (__mmask8) __U);
4421}
4422
Michael Kupersteine45af542015-06-30 13:36:19 +00004423static __inline __m512 __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004424_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void const *__P)
4425{
Craig Topper4537ea72016-05-14 06:03:13 +00004426 return (__m512) __builtin_ia32_loadups512_mask ((const float *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004427 (__v16sf) __W,
4428 (__mmask16) __U);
4429}
4430
4431static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004432_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004433{
Craig Topper4537ea72016-05-14 06:03:13 +00004434 return (__m512) __builtin_ia32_loadups512_mask ((const float *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004435 (__v16sf)
4436 _mm512_setzero_ps (),
4437 (__mmask16) __U);
4438}
4439
Michael Kupersteine45af542015-06-30 13:36:19 +00004440static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004441_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004442{
Craig Topper4537ea72016-05-14 06:03:13 +00004443 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004444 (__v8df) __W,
4445 (__mmask8) __U);
Adam Nemetc0cff242015-01-16 18:51:50 +00004446}
4447
Michael Kupersteine45af542015-06-30 13:36:19 +00004448static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004449_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Adam Nemetc0cff242015-01-16 18:51:50 +00004450{
Craig Topper4537ea72016-05-14 06:03:13 +00004451 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *)__P,
Adam Nemetc0cff242015-01-16 18:51:50 +00004452 (__v8df)
4453 _mm512_setzero_pd (),
4454 (__mmask8) __U);
4455}
4456
Michael Kupersteine45af542015-06-30 13:36:19 +00004457static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00004458_mm512_loadu_pd(double const *__p)
4459{
4460 struct __loadu_pd {
4461 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00004462 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00004463 return ((struct __loadu_pd*)__p)->__v;
4464}
4465
Michael Kupersteine45af542015-06-30 13:36:19 +00004466static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00004467_mm512_loadu_ps(float const *__p)
4468{
4469 struct __loadu_ps {
4470 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00004471 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00004472 return ((struct __loadu_ps*)__p)->__v;
4473}
4474
Michael Kupersteine45af542015-06-30 13:36:19 +00004475static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00004476_mm512_load_ps(float const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00004477{
4478 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
4479 (__v16sf)
4480 _mm512_setzero_ps (),
4481 (__mmask16) -1);
4482}
4483
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004484static __inline __m512 __DEFAULT_FN_ATTRS
4485_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void const *__P)
4486{
4487 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P,
4488 (__v16sf) __W,
4489 (__mmask16) __U);
4490}
4491
4492static __inline __m512 __DEFAULT_FN_ATTRS
4493_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
4494{
4495 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
4496 (__v16sf)
4497 _mm512_setzero_ps (),
4498 (__mmask16) __U);
4499}
4500
Michael Kupersteine45af542015-06-30 13:36:19 +00004501static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00004502_mm512_load_pd(double const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00004503{
4504 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
4505 (__v8df)
4506 _mm512_setzero_pd (),
4507 (__mmask8) -1);
4508}
4509
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004510static __inline __m512d __DEFAULT_FN_ATTRS
4511_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void const *__P)
4512{
4513 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P,
4514 (__v8df) __W,
4515 (__mmask8) __U);
4516}
4517
4518static __inline __m512d __DEFAULT_FN_ATTRS
4519_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
4520{
4521 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
4522 (__v8df)
4523 _mm512_setzero_pd (),
4524 (__mmask8) __U);
4525}
4526
4527static __inline __m512i __DEFAULT_FN_ATTRS
4528_mm512_load_si512 (void const *__P)
4529{
4530 return *(__m512i *) __P;
4531}
4532
4533static __inline __m512i __DEFAULT_FN_ATTRS
4534_mm512_load_epi32 (void const *__P)
4535{
4536 return *(__m512i *) __P;
4537}
4538
4539static __inline __m512i __DEFAULT_FN_ATTRS
4540_mm512_load_epi64 (void const *__P)
4541{
4542 return *(__m512i *) __P;
4543}
4544
Adam Nemet0d5bb552014-07-28 17:14:40 +00004545/* SIMD store ops */
4546
Michael Kupersteine45af542015-06-30 13:36:19 +00004547static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004548_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004549{
Craig Topper4537ea72016-05-14 06:03:13 +00004550 __builtin_ia32_storedqudi512_mask ((long long *)__P, (__v8di) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004551 (__mmask8) __U);
4552}
4553
Michael Kupersteine45af542015-06-30 13:36:19 +00004554static __inline void __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004555_mm512_storeu_si512 (void *__P, __m512i __A)
4556{
Craig Topper4537ea72016-05-14 06:03:13 +00004557 __builtin_ia32_storedqusi512_mask ((int *) __P, (__v16si) __A,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004558 (__mmask16) -1);
4559}
4560
4561static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004562_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004563{
Craig Topper4537ea72016-05-14 06:03:13 +00004564 __builtin_ia32_storedqusi512_mask ((int *)__P, (__v16si) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004565 (__mmask16) __U);
4566}
4567
Michael Kupersteine45af542015-06-30 13:36:19 +00004568static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004569_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004570{
Craig Topper4537ea72016-05-14 06:03:13 +00004571 __builtin_ia32_storeupd512_mask ((double *)__P, (__v8df) __A, (__mmask8) __U);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004572}
4573
Michael Kupersteine45af542015-06-30 13:36:19 +00004574static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004575_mm512_storeu_pd(void *__P, __m512d __A)
4576{
Craig Topper4537ea72016-05-14 06:03:13 +00004577 __builtin_ia32_storeupd512_mask((double *)__P, (__v8df)__A, (__mmask8)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004578}
4579
Michael Kupersteine45af542015-06-30 13:36:19 +00004580static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004581_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004582{
Craig Topper4537ea72016-05-14 06:03:13 +00004583 __builtin_ia32_storeups512_mask ((float *)__P, (__v16sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004584 (__mmask16) __U);
4585}
4586
Michael Kupersteine45af542015-06-30 13:36:19 +00004587static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004588_mm512_storeu_ps(void *__P, __m512 __A)
4589{
Craig Topper4537ea72016-05-14 06:03:13 +00004590 __builtin_ia32_storeups512_mask((float *)__P, (__v16sf)__A, (__mmask16)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004591}
4592
Michael Kupersteine45af542015-06-30 13:36:19 +00004593static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004594_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00004595{
Adam Nemetc0cff242015-01-16 18:51:50 +00004596 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004597}
4598
Michael Kupersteine45af542015-06-30 13:36:19 +00004599static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004600_mm512_store_pd(void *__P, __m512d __A)
4601{
4602 *(__m512d*)__P = __A;
4603}
4604
Michael Kupersteine45af542015-06-30 13:36:19 +00004605static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004606_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
4607{
4608 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
4609 (__mmask16) __U);
4610}
4611
Michael Kupersteine45af542015-06-30 13:36:19 +00004612static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004613_mm512_store_ps(void *__P, __m512 __A)
4614{
4615 *(__m512*)__P = __A;
4616}
4617
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004618static __inline void __DEFAULT_FN_ATTRS
4619_mm512_store_si512 (void *__P, __m512i __A)
4620{
4621 *(__m512i *) __P = __A;
4622}
4623
4624static __inline void __DEFAULT_FN_ATTRS
4625_mm512_store_epi32 (void *__P, __m512i __A)
4626{
4627 *(__m512i *) __P = __A;
4628}
4629
4630static __inline void __DEFAULT_FN_ATTRS
4631_mm512_store_epi64 (void *__P, __m512i __A)
4632{
4633 *(__m512i *) __P = __A;
4634}
4635
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004636/* Mask ops */
4637
Michael Kupersteine45af542015-06-30 13:36:19 +00004638static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004639_mm512_knot(__mmask16 __M)
4640{
4641 return __builtin_ia32_knothi(__M);
4642}
4643
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004644/* Integer compare */
4645
Michael Kupersteine45af542015-06-30 13:36:19 +00004646static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004647_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
4648 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4649 (__mmask16)-1);
4650}
4651
Michael Kupersteine45af542015-06-30 13:36:19 +00004652static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004653_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4654 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4655 __u);
4656}
4657
Michael Kupersteine45af542015-06-30 13:36:19 +00004658static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004659_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
4660 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4661 (__mmask16)-1);
4662}
4663
Michael Kupersteine45af542015-06-30 13:36:19 +00004664static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004665_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4666 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4667 __u);
4668}
4669
Michael Kupersteine45af542015-06-30 13:36:19 +00004670static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004671_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4672 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4673 __u);
4674}
4675
Michael Kupersteine45af542015-06-30 13:36:19 +00004676static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004677_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
4678 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4679 (__mmask8)-1);
4680}
4681
Michael Kupersteine45af542015-06-30 13:36:19 +00004682static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004683_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
4684 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4685 (__mmask8)-1);
4686}
4687
Michael Kupersteine45af542015-06-30 13:36:19 +00004688static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004689_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4690 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4691 __u);
4692}
4693
Michael Kupersteine45af542015-06-30 13:36:19 +00004694static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004695_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
4696 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4697 (__mmask16)-1);
4698}
4699
Michael Kupersteine45af542015-06-30 13:36:19 +00004700static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004701_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4702 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4703 __u);
4704}
4705
Michael Kupersteine45af542015-06-30 13:36:19 +00004706static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004707_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
4708 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4709 (__mmask16)-1);
4710}
4711
Michael Kupersteine45af542015-06-30 13:36:19 +00004712static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004713_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4714 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4715 __u);
4716}
4717
Michael Kupersteine45af542015-06-30 13:36:19 +00004718static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004719_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
4720 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4721 (__mmask8)-1);
4722}
4723
Michael Kupersteine45af542015-06-30 13:36:19 +00004724static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004725_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4726 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4727 __u);
4728}
4729
Michael Kupersteine45af542015-06-30 13:36:19 +00004730static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004731_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
4732 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4733 (__mmask8)-1);
4734}
4735
Michael Kupersteine45af542015-06-30 13:36:19 +00004736static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004737_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4738 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4739 __u);
4740}
4741
Michael Kupersteine45af542015-06-30 13:36:19 +00004742static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004743_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
4744 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4745 (__mmask16)-1);
4746}
4747
Michael Kupersteine45af542015-06-30 13:36:19 +00004748static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004749_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4750 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4751 __u);
4752}
4753
Michael Kupersteine45af542015-06-30 13:36:19 +00004754static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004755_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
4756 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4757 (__mmask16)-1);
4758}
4759
Michael Kupersteine45af542015-06-30 13:36:19 +00004760static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004761_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4762 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4763 __u);
4764}
4765
Michael Kupersteine45af542015-06-30 13:36:19 +00004766static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004767_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4768 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4769 __u);
4770}
4771
Michael Kupersteine45af542015-06-30 13:36:19 +00004772static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004773_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
4774 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4775 (__mmask8)-1);
4776}
4777
Michael Kupersteine45af542015-06-30 13:36:19 +00004778static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004779_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
4780 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4781 (__mmask8)-1);
4782}
4783
Michael Kupersteine45af542015-06-30 13:36:19 +00004784static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004785_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4786 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4787 __u);
4788}
4789
Michael Kupersteine45af542015-06-30 13:36:19 +00004790static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004791_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
4792 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4793 (__mmask16)-1);
4794}
4795
Michael Kupersteine45af542015-06-30 13:36:19 +00004796static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004797_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4798 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4799 __u);
4800}
4801
Michael Kupersteine45af542015-06-30 13:36:19 +00004802static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004803_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
4804 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4805 (__mmask16)-1);
4806}
4807
Michael Kupersteine45af542015-06-30 13:36:19 +00004808static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004809_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4810 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4811 __u);
4812}
4813
Michael Kupersteine45af542015-06-30 13:36:19 +00004814static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004815_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
4816 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4817 (__mmask8)-1);
4818}
4819
Michael Kupersteine45af542015-06-30 13:36:19 +00004820static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004821_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4822 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4823 __u);
4824}
4825
Michael Kupersteine45af542015-06-30 13:36:19 +00004826static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004827_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
4828 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4829 (__mmask8)-1);
4830}
4831
Michael Kupersteine45af542015-06-30 13:36:19 +00004832static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004833_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4834 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4835 __u);
4836}
4837
Michael Kupersteine45af542015-06-30 13:36:19 +00004838static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004839_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
4840 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4841 (__mmask16)-1);
4842}
4843
Michael Kupersteine45af542015-06-30 13:36:19 +00004844static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004845_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4846 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4847 __u);
4848}
4849
Michael Kupersteine45af542015-06-30 13:36:19 +00004850static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004851_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
4852 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4853 (__mmask16)-1);
4854}
4855
Michael Kupersteine45af542015-06-30 13:36:19 +00004856static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004857_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4858 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4859 __u);
4860}
4861
Michael Kupersteine45af542015-06-30 13:36:19 +00004862static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004863_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
4864 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4865 (__mmask8)-1);
4866}
4867
Michael Kupersteine45af542015-06-30 13:36:19 +00004868static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004869_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4870 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4871 __u);
4872}
4873
Michael Kupersteine45af542015-06-30 13:36:19 +00004874static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004875_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
4876 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4877 (__mmask8)-1);
4878}
4879
Michael Kupersteine45af542015-06-30 13:36:19 +00004880static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004881_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4882 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4883 __u);
4884}
4885
Michael Kupersteine45af542015-06-30 13:36:19 +00004886static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004887_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
4888 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4889 (__mmask16)-1);
4890}
4891
Michael Kupersteine45af542015-06-30 13:36:19 +00004892static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004893_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4894 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4895 __u);
4896}
4897
Michael Kupersteine45af542015-06-30 13:36:19 +00004898static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004899_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
4900 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4901 (__mmask16)-1);
4902}
4903
Michael Kupersteine45af542015-06-30 13:36:19 +00004904static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004905_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4906 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4907 __u);
4908}
4909
Michael Kupersteine45af542015-06-30 13:36:19 +00004910static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004911_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
4912 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4913 (__mmask8)-1);
4914}
4915
Michael Kupersteine45af542015-06-30 13:36:19 +00004916static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004917_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4918 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4919 __u);
4920}
4921
Michael Kupersteine45af542015-06-30 13:36:19 +00004922static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004923_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
4924 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4925 (__mmask8)-1);
4926}
4927
Michael Kupersteine45af542015-06-30 13:36:19 +00004928static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004929_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4930 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4931 __u);
4932}
4933
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004934static __inline__ __m512i __DEFAULT_FN_ATTRS
4935_mm512_cvtepi8_epi32 (__m128i __A)
4936{
4937 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4938 (__v16si)
4939 _mm512_setzero_si512 (),
4940 (__mmask16) -1);
4941}
4942
4943static __inline__ __m512i __DEFAULT_FN_ATTRS
4944_mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4945{
4946 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4947 (__v16si) __W,
4948 (__mmask16) __U);
4949}
4950
4951static __inline__ __m512i __DEFAULT_FN_ATTRS
4952_mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A)
4953{
4954 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4955 (__v16si)
4956 _mm512_setzero_si512 (),
4957 (__mmask16) __U);
4958}
4959
4960static __inline__ __m512i __DEFAULT_FN_ATTRS
4961_mm512_cvtepi8_epi64 (__m128i __A)
4962{
4963 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4964 (__v8di)
4965 _mm512_setzero_si512 (),
4966 (__mmask8) -1);
4967}
4968
4969static __inline__ __m512i __DEFAULT_FN_ATTRS
4970_mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4971{
4972 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4973 (__v8di) __W,
4974 (__mmask8) __U);
4975}
4976
4977static __inline__ __m512i __DEFAULT_FN_ATTRS
4978_mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
4979{
4980 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4981 (__v8di)
4982 _mm512_setzero_si512 (),
4983 (__mmask8) __U);
4984}
4985
4986static __inline__ __m512i __DEFAULT_FN_ATTRS
4987_mm512_cvtepi32_epi64 (__m256i __X)
4988{
4989 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4990 (__v8di)
4991 _mm512_setzero_si512 (),
4992 (__mmask8) -1);
4993}
4994
4995static __inline__ __m512i __DEFAULT_FN_ATTRS
4996_mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4997{
4998 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4999 (__v8di) __W,
5000 (__mmask8) __U);
5001}
5002
5003static __inline__ __m512i __DEFAULT_FN_ATTRS
5004_mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X)
5005{
5006 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
5007 (__v8di)
5008 _mm512_setzero_si512 (),
5009 (__mmask8) __U);
5010}
5011
5012static __inline__ __m512i __DEFAULT_FN_ATTRS
5013_mm512_cvtepi16_epi32 (__m256i __A)
5014{
5015 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
5016 (__v16si)
5017 _mm512_setzero_si512 (),
5018 (__mmask16) -1);
5019}
5020
5021static __inline__ __m512i __DEFAULT_FN_ATTRS
5022_mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
5023{
5024 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
5025 (__v16si) __W,
5026 (__mmask16) __U);
5027}
5028
5029static __inline__ __m512i __DEFAULT_FN_ATTRS
5030_mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A)
5031{
5032 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
5033 (__v16si)
5034 _mm512_setzero_si512 (),
5035 (__mmask16) __U);
5036}
5037
5038static __inline__ __m512i __DEFAULT_FN_ATTRS
5039_mm512_cvtepi16_epi64 (__m128i __A)
5040{
5041 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
5042 (__v8di)
5043 _mm512_setzero_si512 (),
5044 (__mmask8) -1);
5045}
5046
5047static __inline__ __m512i __DEFAULT_FN_ATTRS
5048_mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
5049{
5050 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
5051 (__v8di) __W,
5052 (__mmask8) __U);
5053}
5054
5055static __inline__ __m512i __DEFAULT_FN_ATTRS
5056_mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
5057{
5058 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
5059 (__v8di)
5060 _mm512_setzero_si512 (),
5061 (__mmask8) __U);
5062}
5063
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00005064static __inline__ __m512i __DEFAULT_FN_ATTRS
5065_mm512_cvtepu8_epi32 (__m128i __A)
5066{
5067 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
5068 (__v16si)
5069 _mm512_setzero_si512 (),
5070 (__mmask16) -1);
5071}
5072
5073static __inline__ __m512i __DEFAULT_FN_ATTRS
5074_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
5075{
5076 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
5077 (__v16si) __W,
5078 (__mmask16) __U);
5079}
5080
5081static __inline__ __m512i __DEFAULT_FN_ATTRS
5082_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
5083{
5084 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
5085 (__v16si)
5086 _mm512_setzero_si512 (),
5087 (__mmask16) __U);
5088}
5089
5090static __inline__ __m512i __DEFAULT_FN_ATTRS
5091_mm512_cvtepu8_epi64 (__m128i __A)
5092{
5093 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
5094 (__v8di)
5095 _mm512_setzero_si512 (),
5096 (__mmask8) -1);
5097}
5098
5099static __inline__ __m512i __DEFAULT_FN_ATTRS
5100_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
5101{
5102 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
5103 (__v8di) __W,
5104 (__mmask8) __U);
5105}
5106
5107static __inline__ __m512i __DEFAULT_FN_ATTRS
5108_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
5109{
5110 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
5111 (__v8di)
5112 _mm512_setzero_si512 (),
5113 (__mmask8) __U);
5114}
5115
5116static __inline__ __m512i __DEFAULT_FN_ATTRS
5117_mm512_cvtepu32_epi64 (__m256i __X)
5118{
5119 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
5120 (__v8di)
5121 _mm512_setzero_si512 (),
5122 (__mmask8) -1);
5123}
5124
5125static __inline__ __m512i __DEFAULT_FN_ATTRS
5126_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
5127{
5128 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
5129 (__v8di) __W,
5130 (__mmask8) __U);
5131}
5132
5133static __inline__ __m512i __DEFAULT_FN_ATTRS
5134_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
5135{
5136 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
5137 (__v8di)
5138 _mm512_setzero_si512 (),
5139 (__mmask8) __U);
5140}
5141
5142static __inline__ __m512i __DEFAULT_FN_ATTRS
5143_mm512_cvtepu16_epi32 (__m256i __A)
5144{
5145 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
5146 (__v16si)
5147 _mm512_setzero_si512 (),
5148 (__mmask16) -1);
5149}
5150
5151static __inline__ __m512i __DEFAULT_FN_ATTRS
5152_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
5153{
5154 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
5155 (__v16si) __W,
5156 (__mmask16) __U);
5157}
5158
5159static __inline__ __m512i __DEFAULT_FN_ATTRS
5160_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
5161{
5162 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
5163 (__v16si)
5164 _mm512_setzero_si512 (),
5165 (__mmask16) __U);
5166}
5167
5168static __inline__ __m512i __DEFAULT_FN_ATTRS
5169_mm512_cvtepu16_epi64 (__m128i __A)
5170{
5171 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
5172 (__v8di)
5173 _mm512_setzero_si512 (),
5174 (__mmask8) -1);
5175}
5176
5177static __inline__ __m512i __DEFAULT_FN_ATTRS
5178_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
5179{
5180 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
5181 (__v8di) __W,
5182 (__mmask8) __U);
5183}
5184
5185static __inline__ __m512i __DEFAULT_FN_ATTRS
5186_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
5187{
5188 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
5189 (__v8di)
5190 _mm512_setzero_si512 (),
5191 (__mmask8) __U);
5192}
5193
Michael Zuckermane98cc742016-02-23 15:59:47 +00005194static __inline__ __m512i __DEFAULT_FN_ATTRS
5195_mm512_rorv_epi32 (__m512i __A, __m512i __B)
5196{
5197 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
5198 (__v16si) __B,
5199 (__v16si)
5200 _mm512_setzero_si512 (),
5201 (__mmask16) -1);
5202}
5203
5204static __inline__ __m512i __DEFAULT_FN_ATTRS
5205_mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
5206{
5207 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
5208 (__v16si) __B,
5209 (__v16si) __W,
5210 (__mmask16) __U);
5211}
5212
5213static __inline__ __m512i __DEFAULT_FN_ATTRS
5214_mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
5215{
5216 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
5217 (__v16si) __B,
5218 (__v16si)
5219 _mm512_setzero_si512 (),
5220 (__mmask16) __U);
5221}
5222
5223static __inline__ __m512i __DEFAULT_FN_ATTRS
5224_mm512_rorv_epi64 (__m512i __A, __m512i __B)
5225{
5226 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
5227 (__v8di) __B,
5228 (__v8di)
5229 _mm512_setzero_si512 (),
5230 (__mmask8) -1);
5231}
5232
5233static __inline__ __m512i __DEFAULT_FN_ATTRS
5234_mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
5235{
5236 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
5237 (__v8di) __B,
5238 (__v8di) __W,
5239 (__mmask8) __U);
5240}
5241
5242static __inline__ __m512i __DEFAULT_FN_ATTRS
5243_mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
5244{
5245 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
5246 (__v8di) __B,
5247 (__v8di)
5248 _mm512_setzero_si512 (),
5249 (__mmask8) __U);
5250}
5251
5252
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00005253
Craig Topper4cac1c22015-01-25 23:30:07 +00005254#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005255 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005256 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005257 (__mmask16)-1); })
5258
5259#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005260 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005261 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005262 (__mmask16)-1); })
5263
5264#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005265 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005266 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005267 (__mmask8)-1); })
5268
5269#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005270 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005271 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005272 (__mmask8)-1); })
5273
5274#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005275 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005276 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005277 (__mmask16)(m)); })
5278
5279#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005280 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005281 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005282 (__mmask16)(m)); })
5283
5284#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005285 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005286 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005287 (__mmask8)(m)); })
5288
5289#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00005290 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00005291 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00005292 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00005293
Michael Zuckerman38a27272016-02-22 09:05:41 +00005294#define _mm512_rol_epi32(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00005295 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
5296 (__v16si)_mm512_setzero_si512(), \
5297 (__mmask16)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005298
5299#define _mm512_mask_rol_epi32(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00005300 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
5301 (__v16si)(__m512i)(W), \
5302 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005303
5304#define _mm512_maskz_rol_epi32(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00005305 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
5306 (__v16si)_mm512_setzero_si512(), \
5307 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005308
5309#define _mm512_rol_epi64(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00005310 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
5311 (__v8di)_mm512_setzero_si512(), \
5312 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005313
5314#define _mm512_mask_rol_epi64(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00005315 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
5316 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005317
5318#define _mm512_maskz_rol_epi64(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00005319 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
5320 (__v8di)_mm512_setzero_si512(), \
5321 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005322static __inline__ __m512i __DEFAULT_FN_ATTRS
5323_mm512_rolv_epi32 (__m512i __A, __m512i __B)
5324{
5325 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
5326 (__v16si) __B,
5327 (__v16si)
5328 _mm512_setzero_si512 (),
5329 (__mmask16) -1);
5330}
5331
5332static __inline__ __m512i __DEFAULT_FN_ATTRS
5333_mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
5334{
5335 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
5336 (__v16si) __B,
5337 (__v16si) __W,
5338 (__mmask16) __U);
5339}
5340
5341static __inline__ __m512i __DEFAULT_FN_ATTRS
5342_mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
5343{
5344 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
5345 (__v16si) __B,
5346 (__v16si)
5347 _mm512_setzero_si512 (),
5348 (__mmask16) __U);
5349}
5350
5351static __inline__ __m512i __DEFAULT_FN_ATTRS
5352_mm512_rolv_epi64 (__m512i __A, __m512i __B)
5353{
5354 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
5355 (__v8di) __B,
5356 (__v8di)
5357 _mm512_setzero_si512 (),
5358 (__mmask8) -1);
5359}
5360
5361static __inline__ __m512i __DEFAULT_FN_ATTRS
5362_mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
5363{
5364 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
5365 (__v8di) __B,
5366 (__v8di) __W,
5367 (__mmask8) __U);
5368}
5369
5370static __inline__ __m512i __DEFAULT_FN_ATTRS
5371_mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
5372{
5373 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
5374 (__v8di) __B,
5375 (__v8di)
5376 _mm512_setzero_si512 (),
5377 (__mmask8) __U);
5378}
5379
Craig Topper8c18e112016-05-17 04:41:50 +00005380#define _mm512_ror_epi32(A, B) __extension__ ({ \
5381 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
5382 (__v16si)_mm512_setzero_si512(), \
5383 (__mmask16)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005384
Craig Topper8c18e112016-05-17 04:41:50 +00005385#define _mm512_mask_ror_epi32(W, U, A, B) __extension__ ({ \
5386 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
5387 (__v16si)(__m512i)(W), \
5388 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005389
Craig Topper8c18e112016-05-17 04:41:50 +00005390#define _mm512_maskz_ror_epi32(U, A, B) __extension__ ({ \
5391 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
5392 (__v16si)_mm512_setzero_si512(), \
5393 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005394
Craig Topper8c18e112016-05-17 04:41:50 +00005395#define _mm512_ror_epi64(A, B) __extension__ ({ \
5396 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
5397 (__v8di)_mm512_setzero_si512(), \
5398 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005399
Craig Topper8c18e112016-05-17 04:41:50 +00005400#define _mm512_mask_ror_epi64(W, U, A, B) __extension__ ({ \
5401 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
5402 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005403
Craig Topper8c18e112016-05-17 04:41:50 +00005404#define _mm512_maskz_ror_epi64(U, A, B) __extension__ ({ \
5405 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
5406 (__v8di)_mm512_setzero_si512(), \
5407 (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005408
Craig Topper8c18e112016-05-17 04:41:50 +00005409#define _mm512_slli_epi32(A, B) __extension__ ({ \
5410 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5411 (__v16si)_mm512_setzero_si512(), \
5412 (__mmask16)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005413
Craig Topper8c18e112016-05-17 04:41:50 +00005414#define _mm512_mask_slli_epi32(W, U, A, B) __extension__ ({ \
5415 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5416 (__v16si)(__m512i)(W), \
5417 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005418
Craig Topper8c18e112016-05-17 04:41:50 +00005419#define _mm512_maskz_slli_epi32(U, A, B) __extension__ ({ \
5420 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5421 (__v16si)_mm512_setzero_si512(), \
5422 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005423
Craig Topper8c18e112016-05-17 04:41:50 +00005424#define _mm512_slli_epi64(A, B) __extension__ ({ \
5425 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5426 (__v8di)_mm512_setzero_si512(), \
5427 (__mmask8)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005428
Craig Topper8c18e112016-05-17 04:41:50 +00005429#define _mm512_mask_slli_epi64(W, U, A, B) __extension__ ({ \
5430 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5431 (__v8di)(__m512i)(W), \
5432 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005433
Craig Topper8c18e112016-05-17 04:41:50 +00005434#define _mm512_maskz_slli_epi64(U, A, B) __extension__ ({ \
5435 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5436 (__v8di)_mm512_setzero_si512(), \
5437 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005438
Michael Zuckerman38a27272016-02-22 09:05:41 +00005439
Michael Zuckermand176d742016-03-01 17:49:03 +00005440
Craig Topper8c18e112016-05-17 04:41:50 +00005441#define _mm512_srli_epi32(A, B) __extension__ ({ \
5442 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5443 (__v16si)_mm512_setzero_si512(), \
5444 (__mmask16)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005445
Craig Topper8c18e112016-05-17 04:41:50 +00005446#define _mm512_mask_srli_epi32(W, U, A, B) __extension__ ({ \
5447 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5448 (__v16si)(__m512i)(W), \
5449 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005450
Craig Topper8c18e112016-05-17 04:41:50 +00005451#define _mm512_maskz_srli_epi32(U, A, B) __extension__ ({ \
5452 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5453 (__v16si)_mm512_setzero_si512(), \
5454 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005455
Craig Topper8c18e112016-05-17 04:41:50 +00005456#define _mm512_srli_epi64(A, B) __extension__ ({ \
5457 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5458 (__v8di)_mm512_setzero_si512(), \
5459 (__mmask8)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005460
Craig Topper8c18e112016-05-17 04:41:50 +00005461#define _mm512_mask_srli_epi64(W, U, A, B) __extension__ ({ \
5462 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5463 (__v8di)(__m512i)(W), \
5464 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005465
Craig Topper8c18e112016-05-17 04:41:50 +00005466#define _mm512_maskz_srli_epi64(U, A, B) __extension__ ({ \
5467 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5468 (__v8di)_mm512_setzero_si512(), \
5469 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005470
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005471static __inline__ __m512i __DEFAULT_FN_ATTRS
5472_mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P)
5473{
5474 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
5475 (__v16si) __W,
5476 (__mmask16) __U);
5477}
5478
5479static __inline__ __m512i __DEFAULT_FN_ATTRS
5480_mm512_maskz_load_epi32 (__mmask16 __U, void const *__P)
5481{
5482 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
5483 (__v16si)
5484 _mm512_setzero_si512 (),
5485 (__mmask16) __U);
5486}
5487
5488static __inline__ void __DEFAULT_FN_ATTRS
5489_mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A)
5490{
5491 __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A,
5492 (__mmask16) __U);
5493}
5494
5495static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane6542002016-05-23 08:01:48 +00005496_mm512_mask_mov_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
5497{
Igor Bregeraadb8762016-06-08 13:59:20 +00005498 return (__m512i) __builtin_ia32_selectd_512 ((__mmask16) __U,
5499 (__v16si) __A,
5500 (__v16si) __W);
Michael Zuckermane6542002016-05-23 08:01:48 +00005501}
5502
5503static __inline__ __m512i __DEFAULT_FN_ATTRS
5504_mm512_maskz_mov_epi32 (__mmask16 __U, __m512i __A)
5505{
Igor Bregeraadb8762016-06-08 13:59:20 +00005506 return (__m512i) __builtin_ia32_selectd_512 ((__mmask16) __U,
5507 (__v16si) __A,
5508 (__v16si) _mm512_setzero_si512 ());
Michael Zuckermane6542002016-05-23 08:01:48 +00005509}
5510
5511static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005512_mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
5513{
Igor Bregeraadb8762016-06-08 13:59:20 +00005514 return (__m512i) __builtin_ia32_selectq_512 ((__mmask8) __U,
5515 (__v8di) __A,
5516 (__v8di) __W);
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005517}
5518
5519static __inline__ __m512i __DEFAULT_FN_ATTRS
5520_mm512_maskz_mov_epi64 (__mmask8 __U, __m512i __A)
5521{
Igor Bregeraadb8762016-06-08 13:59:20 +00005522 return (__m512i) __builtin_ia32_selectq_512 ((__mmask8) __U,
5523 (__v8di) __A,
5524 (__v8di) _mm512_setzero_si512 ());
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005525}
5526
5527static __inline__ __m512i __DEFAULT_FN_ATTRS
5528_mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P)
5529{
5530 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5531 (__v8di) __W,
5532 (__mmask8) __U);
5533}
5534
5535static __inline__ __m512i __DEFAULT_FN_ATTRS
5536_mm512_maskz_load_epi64 (__mmask8 __U, void const *__P)
5537{
5538 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5539 (__v8di)
5540 _mm512_setzero_si512 (),
5541 (__mmask8) __U);
5542}
5543
5544static __inline__ void __DEFAULT_FN_ATTRS
5545_mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A)
5546{
5547 __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A,
5548 (__mmask8) __U);
5549}
5550
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005551static __inline__ __m512d __DEFAULT_FN_ATTRS
5552_mm512_movedup_pd (__m512d __A)
5553{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005554 return (__m512d)__builtin_shufflevector((__v8df)__A, (__v8df)__A,
5555 0, 0, 2, 2, 4, 4, 6, 6);
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005556}
5557
5558static __inline__ __m512d __DEFAULT_FN_ATTRS
5559_mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A)
5560{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005561 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
5562 (__v8df)_mm512_movedup_pd(__A),
5563 (__v8df)__W);
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005564}
5565
5566static __inline__ __m512d __DEFAULT_FN_ATTRS
5567_mm512_maskz_movedup_pd (__mmask8 __U, __m512d __A)
5568{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005569 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
5570 (__v8df)_mm512_movedup_pd(__A),
5571 (__v8df)_mm512_setzero_pd());
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005572}
5573
Craig Topper8c18e112016-05-17 04:41:50 +00005574#define _mm512_fixupimm_round_pd(A, B, C, imm, R) __extension__ ({ \
5575 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5576 (__v8df)(__m512d)(B), \
5577 (__v8di)(__m512i)(C), (int)(imm), \
5578 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005579
Craig Topper8c18e112016-05-17 04:41:50 +00005580#define _mm512_mask_fixupimm_round_pd(A, U, B, C, imm, R) __extension__ ({ \
5581 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5582 (__v8df)(__m512d)(B), \
5583 (__v8di)(__m512i)(C), (int)(imm), \
5584 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005585
Craig Topper8c18e112016-05-17 04:41:50 +00005586#define _mm512_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5587 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5588 (__v8df)(__m512d)(B), \
5589 (__v8di)(__m512i)(C), (int)(imm), \
5590 (__mmask8)-1, \
5591 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005592
Craig Topper8c18e112016-05-17 04:41:50 +00005593#define _mm512_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5594 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5595 (__v8df)(__m512d)(B), \
5596 (__v8di)(__m512i)(C), (int)(imm), \
5597 (__mmask8)(U), \
5598 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005599
Craig Topper8c18e112016-05-17 04:41:50 +00005600#define _mm512_maskz_fixupimm_round_pd(U, A, B, C, imm, R) __extension__ ({ \
5601 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5602 (__v8df)(__m512d)(B), \
5603 (__v8di)(__m512i)(C), \
5604 (int)(imm), (__mmask8)(U), \
5605 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005606
Craig Topper8c18e112016-05-17 04:41:50 +00005607#define _mm512_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5608 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5609 (__v8df)(__m512d)(B), \
5610 (__v8di)(__m512i)(C), \
5611 (int)(imm), (__mmask8)(U), \
5612 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005613
Craig Topper8c18e112016-05-17 04:41:50 +00005614#define _mm512_fixupimm_round_ps(A, B, C, imm, R) __extension__ ({ \
5615 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5616 (__v16sf)(__m512)(B), \
5617 (__v16si)(__m512i)(C), (int)(imm), \
5618 (__mmask16)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005619
Craig Topper8c18e112016-05-17 04:41:50 +00005620#define _mm512_mask_fixupimm_round_ps(A, U, B, C, imm, R) __extension__ ({ \
5621 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5622 (__v16sf)(__m512)(B), \
5623 (__v16si)(__m512i)(C), (int)(imm), \
5624 (__mmask16)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005625
Craig Topper8c18e112016-05-17 04:41:50 +00005626#define _mm512_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5627 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5628 (__v16sf)(__m512)(B), \
5629 (__v16si)(__m512i)(C), (int)(imm), \
5630 (__mmask16)-1, \
5631 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005632
Craig Topper8c18e112016-05-17 04:41:50 +00005633#define _mm512_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5634 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5635 (__v16sf)(__m512)(B), \
5636 (__v16si)(__m512i)(C), (int)(imm), \
5637 (__mmask16)(U), \
5638 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005639
Craig Topper8c18e112016-05-17 04:41:50 +00005640#define _mm512_maskz_fixupimm_round_ps(U, A, B, C, imm, R) __extension__ ({ \
5641 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5642 (__v16sf)(__m512)(B), \
5643 (__v16si)(__m512i)(C), \
5644 (int)(imm), (__mmask16)(U), \
5645 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005646
Craig Topper8c18e112016-05-17 04:41:50 +00005647#define _mm512_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5648 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5649 (__v16sf)(__m512)(B), \
5650 (__v16si)(__m512i)(C), \
5651 (int)(imm), (__mmask16)(U), \
5652 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005653
Craig Topper8c18e112016-05-17 04:41:50 +00005654#define _mm_fixupimm_round_sd(A, B, C, imm, R) __extension__ ({ \
5655 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5656 (__v2df)(__m128d)(B), \
5657 (__v2di)(__m128i)(C), (int)(imm), \
5658 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005659
Craig Topper8c18e112016-05-17 04:41:50 +00005660#define _mm_mask_fixupimm_round_sd(A, U, B, C, imm, R) __extension__ ({ \
5661 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5662 (__v2df)(__m128d)(B), \
5663 (__v2di)(__m128i)(C), (int)(imm), \
5664 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005665
Craig Topper8c18e112016-05-17 04:41:50 +00005666#define _mm_fixupimm_sd(A, B, C, imm) __extension__ ({ \
5667 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5668 (__v2df)(__m128d)(B), \
5669 (__v2di)(__m128i)(C), (int)(imm), \
5670 (__mmask8)-1, \
5671 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005672
Craig Topper8c18e112016-05-17 04:41:50 +00005673#define _mm_mask_fixupimm_sd(A, U, B, C, imm) __extension__ ({ \
5674 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5675 (__v2df)(__m128d)(B), \
5676 (__v2di)(__m128i)(C), (int)(imm), \
5677 (__mmask8)(U), \
5678 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005679
Craig Topper8c18e112016-05-17 04:41:50 +00005680#define _mm_maskz_fixupimm_round_sd(U, A, B, C, imm, R) __extension__ ({ \
5681 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5682 (__v2df)(__m128d)(B), \
5683 (__v2di)(__m128i)(C), (int)(imm), \
5684 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005685
Craig Topper8c18e112016-05-17 04:41:50 +00005686#define _mm_maskz_fixupimm_sd(U, A, B, C, imm) __extension__ ({ \
5687 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5688 (__v2df)(__m128d)(B), \
5689 (__v2di)(__m128i)(C), (int)(imm), \
5690 (__mmask8)(U), \
5691 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005692
Craig Topper8c18e112016-05-17 04:41:50 +00005693#define _mm_fixupimm_round_ss(A, B, C, imm, R) __extension__ ({ \
5694 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5695 (__v4sf)(__m128)(B), \
5696 (__v4si)(__m128i)(C), (int)(imm), \
5697 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005698
Craig Topper8c18e112016-05-17 04:41:50 +00005699#define _mm_mask_fixupimm_round_ss(A, U, B, C, imm, R) __extension__ ({ \
5700 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5701 (__v4sf)(__m128)(B), \
5702 (__v4si)(__m128i)(C), (int)(imm), \
5703 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005704
Craig Topper8c18e112016-05-17 04:41:50 +00005705#define _mm_fixupimm_ss(A, B, C, imm) __extension__ ({ \
5706 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5707 (__v4sf)(__m128)(B), \
5708 (__v4si)(__m128i)(C), (int)(imm), \
5709 (__mmask8)-1, \
5710 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005711
Craig Topper8c18e112016-05-17 04:41:50 +00005712#define _mm_mask_fixupimm_ss(A, U, B, C, imm) __extension__ ({ \
5713 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5714 (__v4sf)(__m128)(B), \
5715 (__v4si)(__m128i)(C), (int)(imm), \
5716 (__mmask8)(U), \
5717 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005718
Craig Topper8c18e112016-05-17 04:41:50 +00005719#define _mm_maskz_fixupimm_round_ss(U, A, B, C, imm, R) __extension__ ({ \
5720 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5721 (__v4sf)(__m128)(B), \
5722 (__v4si)(__m128i)(C), (int)(imm), \
5723 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005724
Craig Topper8c18e112016-05-17 04:41:50 +00005725#define _mm_maskz_fixupimm_ss(U, A, B, C, imm) __extension__ ({ \
5726 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5727 (__v4sf)(__m128)(B), \
5728 (__v4si)(__m128i)(C), (int)(imm), \
5729 (__mmask8)(U), \
5730 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005731
Craig Topper8c18e112016-05-17 04:41:50 +00005732#define _mm_getexp_round_sd(A, B, R) __extension__ ({ \
5733 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5734 (__v2df)(__m128d)(B), \
5735 (__v2df)_mm_setzero_pd(), \
5736 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005737
5738
5739static __inline__ __m128d __DEFAULT_FN_ATTRS
5740_mm_getexp_sd (__m128d __A, __m128d __B)
5741{
5742 return (__m128d) __builtin_ia32_getexpsd128_round_mask ((__v2df) __A,
5743 (__v2df) __B, (__v2df) _mm_setzero_pd(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5744}
5745
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005746static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005747_mm_mask_getexp_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005748{
5749 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5750 (__v2df) __B,
5751 (__v2df) __W,
5752 (__mmask8) __U,
5753 _MM_FROUND_CUR_DIRECTION);
5754}
5755
Craig Topper8c18e112016-05-17 04:41:50 +00005756#define _mm_mask_getexp_round_sd(W, U, A, B, R) __extension__ ({\
5757 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5758 (__v2df)(__m128d)(B), \
5759 (__v2df)(__m128d)(W), \
5760 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005761
5762static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005763_mm_maskz_getexp_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005764{
5765 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5766 (__v2df) __B,
5767 (__v2df) _mm_setzero_pd (),
5768 (__mmask8) __U,
5769 _MM_FROUND_CUR_DIRECTION);
5770}
5771
Craig Topper8c18e112016-05-17 04:41:50 +00005772#define _mm_maskz_getexp_round_sd(U, A, B, R) __extension__ ({\
5773 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5774 (__v2df)(__m128d)(B), \
5775 (__v2df)_mm_setzero_pd(), \
5776 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005777
Craig Topper8c18e112016-05-17 04:41:50 +00005778#define _mm_getexp_round_ss(A, B, R) __extension__ ({ \
5779 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5780 (__v4sf)(__m128)(B), \
5781 (__v4sf)_mm_setzero_ps(), \
5782 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005783
5784static __inline__ __m128 __DEFAULT_FN_ATTRS
5785_mm_getexp_ss (__m128 __A, __m128 __B)
5786{
5787 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
5788 (__v4sf) __B, (__v4sf) _mm_setzero_ps(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5789}
5790
Craig Topper58187d32016-05-17 04:41:29 +00005791static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005792_mm_mask_getexp_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005793{
Craig Topper58187d32016-05-17 04:41:29 +00005794 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005795 (__v4sf) __B,
5796 (__v4sf) __W,
5797 (__mmask8) __U,
5798 _MM_FROUND_CUR_DIRECTION);
5799}
5800
Craig Topper8c18e112016-05-17 04:41:50 +00005801#define _mm_mask_getexp_round_ss(W, U, A, B, R) __extension__ ({\
5802 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5803 (__v4sf)(__m128)(B), \
5804 (__v4sf)(__m128)(W), \
5805 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005806
Craig Topper58187d32016-05-17 04:41:29 +00005807static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005808_mm_maskz_getexp_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005809{
Craig Topper58187d32016-05-17 04:41:29 +00005810 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005811 (__v4sf) __B,
5812 (__v4sf) _mm_setzero_pd (),
5813 (__mmask8) __U,
5814 _MM_FROUND_CUR_DIRECTION);
5815}
5816
Craig Topper8c18e112016-05-17 04:41:50 +00005817#define _mm_maskz_getexp_round_ss(U, A, B, R) __extension__ ({\
5818 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5819 (__v4sf)(__m128)(B), \
5820 (__v4sf)_mm_setzero_ps(), \
5821 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005822
Craig Topper8c18e112016-05-17 04:41:50 +00005823#define _mm_getmant_round_sd(A, B, C, D, R) __extension__ ({ \
5824 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5825 (__v2df)(__m128d)(B), \
5826 (int)(((D)<<2) | (C)), \
5827 (__v2df)_mm_setzero_pd(), \
5828 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005829
Craig Topper8c18e112016-05-17 04:41:50 +00005830#define _mm_getmant_sd(A, B, C, D) __extension__ ({ \
5831 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5832 (__v2df)(__m128d)(B), \
5833 (int)(((D)<<2) | (C)), \
5834 (__v2df)_mm_setzero_pd(), \
5835 (__mmask8)-1, \
5836 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005837
Craig Topper8c18e112016-05-17 04:41:50 +00005838#define _mm_mask_getmant_sd(W, U, A, B, C, D) __extension__ ({\
5839 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5840 (__v2df)(__m128d)(B), \
5841 (int)(((D)<<2) | (C)), \
5842 (__v2df)(__m128d)(W), \
5843 (__mmask8)(U), \
5844 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005845
Craig Topper8c18e112016-05-17 04:41:50 +00005846#define _mm_mask_getmant_round_sd(W, U, A, B, C, D, R)({\
5847 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5848 (__v2df)(__m128d)(B), \
5849 (int)(((D)<<2) | (C)), \
5850 (__v2df)(__m128d)(W), \
5851 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005852
Craig Topper8c18e112016-05-17 04:41:50 +00005853#define _mm_maskz_getmant_sd(U, A, B, C, D) __extension__ ({\
5854 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5855 (__v2df)(__m128d)(B), \
5856 (int)(((D)<<2) | (C)), \
5857 (__v2df)_mm_setzero_pd(), \
5858 (__mmask8)(U), \
5859 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005860
Craig Topper8c18e112016-05-17 04:41:50 +00005861#define _mm_maskz_getmant_round_sd(U, A, B, C, D, R) __extension__ ({\
5862 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5863 (__v2df)(__m128d)(B), \
5864 (int)(((D)<<2) | (C)), \
5865 (__v2df)_mm_setzero_pd(), \
5866 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005867
Craig Topper8c18e112016-05-17 04:41:50 +00005868#define _mm_getmant_round_ss(A, B, C, D, R) __extension__ ({ \
5869 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5870 (__v4sf)(__m128)(B), \
5871 (int)(((D)<<2) | (C)), \
5872 (__v4sf)_mm_setzero_ps(), \
5873 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005874
Craig Topper8c18e112016-05-17 04:41:50 +00005875#define _mm_getmant_ss(A, B, C, D) __extension__ ({ \
5876 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5877 (__v4sf)(__m128)(B), \
5878 (int)(((D)<<2) | (C)), \
5879 (__v4sf)_mm_setzero_ps(), \
5880 (__mmask8)-1, \
5881 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005882
Craig Topper8c18e112016-05-17 04:41:50 +00005883#define _mm_mask_getmant_ss(W, U, A, B, C, D) __extension__ ({\
5884 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5885 (__v4sf)(__m128)(B), \
5886 (int)(((D)<<2) | (C)), \
5887 (__v4sf)(__m128)(W), \
5888 (__mmask8)(U), \
5889 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005890
Craig Topper8c18e112016-05-17 04:41:50 +00005891#define _mm_mask_getmant_round_ss(W, U, A, B, C, D, R)({\
5892 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5893 (__v4sf)(__m128)(B), \
5894 (int)(((D)<<2) | (C)), \
5895 (__v4sf)(__m128)(W), \
5896 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005897
Craig Topper8c18e112016-05-17 04:41:50 +00005898#define _mm_maskz_getmant_ss(U, A, B, C, D) __extension__ ({\
5899 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5900 (__v4sf)(__m128)(B), \
5901 (int)(((D)<<2) | (C)), \
5902 (__v4sf)_mm_setzero_pd(), \
5903 (__mmask8)(U), \
5904 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005905
Craig Topper8c18e112016-05-17 04:41:50 +00005906#define _mm_maskz_getmant_round_ss(U, A, B, C, D, R) __extension__ ({\
5907 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5908 (__v4sf)(__m128)(B), \
5909 (int)(((D)<<2) | (C)), \
5910 (__v4sf)_mm_setzero_ps(), \
5911 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005912
5913static __inline__ __mmask16 __DEFAULT_FN_ATTRS
5914_mm512_kmov (__mmask16 __A)
5915{
5916 return __A;
5917}
5918
Craig Topper8c18e112016-05-17 04:41:50 +00005919#define _mm_comi_round_sd(A, B, P, R) __extension__ ({\
5920 (int)__builtin_ia32_vcomisd((__v2df)(__m128d)(A), (__v2df)(__m128d)(B), \
5921 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005922
Craig Topper8c18e112016-05-17 04:41:50 +00005923#define _mm_comi_round_ss(A, B, P, R) __extension__ ({\
5924 (int)__builtin_ia32_vcomiss((__v4sf)(__m128)(A), (__v4sf)(__m128)(B), \
5925 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005926
Craig Topper45db56c2016-07-21 07:38:39 +00005927#ifdef __x86_64__
Craig Topper8c18e112016-05-17 04:41:50 +00005928#define _mm_cvt_roundsd_si64(A, R) __extension__ ({ \
5929 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Craig Topper45db56c2016-07-21 07:38:39 +00005930#endif
Simon Pilgrim427154d2016-07-04 21:30:47 +00005931
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005932static __inline__ __m512i __DEFAULT_FN_ATTRS
5933_mm512_mask2_permutex2var_epi32 (__m512i __A, __m512i __I,
5934 __mmask16 __U, __m512i __B)
5935{
5936 return (__m512i) __builtin_ia32_vpermi2vard512_mask ((__v16si) __A,
5937 (__v16si) __I
5938 /* idx */ ,
5939 (__v16si) __B,
5940 (__mmask16) __U);
5941}
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005942
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005943static __inline__ __m512i __DEFAULT_FN_ATTRS
5944_mm512_sll_epi32 (__m512i __A, __m128i __B)
5945{
5946 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5947 (__v4si) __B,
5948 (__v16si)
5949 _mm512_setzero_si512 (),
5950 (__mmask16) -1);
5951}
5952
5953static __inline__ __m512i __DEFAULT_FN_ATTRS
5954_mm512_mask_sll_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5955{
5956 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5957 (__v4si) __B,
5958 (__v16si) __W,
5959 (__mmask16) __U);
5960}
5961
5962static __inline__ __m512i __DEFAULT_FN_ATTRS
5963_mm512_maskz_sll_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5964{
5965 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5966 (__v4si) __B,
5967 (__v16si)
5968 _mm512_setzero_si512 (),
5969 (__mmask16) __U);
5970}
5971
5972static __inline__ __m512i __DEFAULT_FN_ATTRS
5973_mm512_sll_epi64 (__m512i __A, __m128i __B)
5974{
5975 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5976 (__v2di) __B,
5977 (__v8di)
5978 _mm512_setzero_si512 (),
5979 (__mmask8) -1);
5980}
5981
5982static __inline__ __m512i __DEFAULT_FN_ATTRS
5983_mm512_mask_sll_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5984{
5985 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5986 (__v2di) __B,
5987 (__v8di) __W,
5988 (__mmask8) __U);
5989}
5990
5991static __inline__ __m512i __DEFAULT_FN_ATTRS
5992_mm512_maskz_sll_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5993{
5994 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5995 (__v2di) __B,
5996 (__v8di)
5997 _mm512_setzero_si512 (),
5998 (__mmask8) __U);
5999}
6000
6001static __inline__ __m512i __DEFAULT_FN_ATTRS
6002_mm512_sllv_epi32 (__m512i __X, __m512i __Y)
6003{
6004 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
6005 (__v16si) __Y,
6006 (__v16si)
6007 _mm512_setzero_si512 (),
6008 (__mmask16) -1);
6009}
6010
6011static __inline__ __m512i __DEFAULT_FN_ATTRS
6012_mm512_mask_sllv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
6013{
6014 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
6015 (__v16si) __Y,
6016 (__v16si) __W,
6017 (__mmask16) __U);
6018}
6019
6020static __inline__ __m512i __DEFAULT_FN_ATTRS
6021_mm512_maskz_sllv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
6022{
6023 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
6024 (__v16si) __Y,
6025 (__v16si)
6026 _mm512_setzero_si512 (),
6027 (__mmask16) __U);
6028}
6029
6030static __inline__ __m512i __DEFAULT_FN_ATTRS
6031_mm512_sllv_epi64 (__m512i __X, __m512i __Y)
6032{
6033 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
6034 (__v8di) __Y,
6035 (__v8di)
6036 _mm512_undefined_pd (),
6037 (__mmask8) -1);
6038}
6039
6040static __inline__ __m512i __DEFAULT_FN_ATTRS
6041_mm512_mask_sllv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
6042{
6043 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
6044 (__v8di) __Y,
6045 (__v8di) __W,
6046 (__mmask8) __U);
6047}
6048
6049static __inline__ __m512i __DEFAULT_FN_ATTRS
6050_mm512_maskz_sllv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
6051{
6052 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
6053 (__v8di) __Y,
6054 (__v8di)
6055 _mm512_setzero_si512 (),
6056 (__mmask8) __U);
6057}
6058
6059static __inline__ __m512i __DEFAULT_FN_ATTRS
6060_mm512_sra_epi32 (__m512i __A, __m128i __B)
6061{
6062 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
6063 (__v4si) __B,
6064 (__v16si)
6065 _mm512_setzero_si512 (),
6066 (__mmask16) -1);
6067}
6068
6069static __inline__ __m512i __DEFAULT_FN_ATTRS
6070_mm512_mask_sra_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
6071{
6072 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
6073 (__v4si) __B,
6074 (__v16si) __W,
6075 (__mmask16) __U);
6076}
6077
6078static __inline__ __m512i __DEFAULT_FN_ATTRS
6079_mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
6080{
6081 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
6082 (__v4si) __B,
6083 (__v16si)
6084 _mm512_setzero_si512 (),
6085 (__mmask16) __U);
6086}
6087
6088static __inline__ __m512i __DEFAULT_FN_ATTRS
6089_mm512_sra_epi64 (__m512i __A, __m128i __B)
6090{
6091 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
6092 (__v2di) __B,
6093 (__v8di)
6094 _mm512_setzero_si512 (),
6095 (__mmask8) -1);
6096}
6097
6098static __inline__ __m512i __DEFAULT_FN_ATTRS
6099_mm512_mask_sra_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
6100{
6101 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
6102 (__v2di) __B,
6103 (__v8di) __W,
6104 (__mmask8) __U);
6105}
6106
6107static __inline__ __m512i __DEFAULT_FN_ATTRS
6108_mm512_maskz_sra_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
6109{
6110 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
6111 (__v2di) __B,
6112 (__v8di)
6113 _mm512_setzero_si512 (),
6114 (__mmask8) __U);
6115}
6116
6117static __inline__ __m512i __DEFAULT_FN_ATTRS
6118_mm512_srav_epi32 (__m512i __X, __m512i __Y)
6119{
6120 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
6121 (__v16si) __Y,
6122 (__v16si)
6123 _mm512_setzero_si512 (),
6124 (__mmask16) -1);
6125}
6126
6127static __inline__ __m512i __DEFAULT_FN_ATTRS
6128_mm512_mask_srav_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
6129{
6130 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
6131 (__v16si) __Y,
6132 (__v16si) __W,
6133 (__mmask16) __U);
6134}
6135
6136static __inline__ __m512i __DEFAULT_FN_ATTRS
6137_mm512_maskz_srav_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
6138{
6139 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
6140 (__v16si) __Y,
6141 (__v16si)
6142 _mm512_setzero_si512 (),
6143 (__mmask16) __U);
6144}
6145
6146static __inline__ __m512i __DEFAULT_FN_ATTRS
6147_mm512_srav_epi64 (__m512i __X, __m512i __Y)
6148{
6149 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
6150 (__v8di) __Y,
6151 (__v8di)
6152 _mm512_setzero_si512 (),
6153 (__mmask8) -1);
6154}
6155
6156static __inline__ __m512i __DEFAULT_FN_ATTRS
6157_mm512_mask_srav_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
6158{
6159 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
6160 (__v8di) __Y,
6161 (__v8di) __W,
6162 (__mmask8) __U);
6163}
6164
6165static __inline__ __m512i __DEFAULT_FN_ATTRS
6166_mm512_maskz_srav_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
6167{
6168 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
6169 (__v8di) __Y,
6170 (__v8di)
6171 _mm512_setzero_si512 (),
6172 (__mmask8) __U);
6173}
6174
6175static __inline__ __m512i __DEFAULT_FN_ATTRS
6176_mm512_srl_epi32 (__m512i __A, __m128i __B)
6177{
6178 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
6179 (__v4si) __B,
6180 (__v16si)
6181 _mm512_setzero_si512 (),
6182 (__mmask16) -1);
6183}
6184
6185static __inline__ __m512i __DEFAULT_FN_ATTRS
6186_mm512_mask_srl_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
6187{
6188 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
6189 (__v4si) __B,
6190 (__v16si) __W,
6191 (__mmask16) __U);
6192}
6193
6194static __inline__ __m512i __DEFAULT_FN_ATTRS
6195_mm512_maskz_srl_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
6196{
6197 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
6198 (__v4si) __B,
6199 (__v16si)
6200 _mm512_setzero_si512 (),
6201 (__mmask16) __U);
6202}
6203
6204static __inline__ __m512i __DEFAULT_FN_ATTRS
6205_mm512_srl_epi64 (__m512i __A, __m128i __B)
6206{
6207 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
6208 (__v2di) __B,
6209 (__v8di)
6210 _mm512_setzero_si512 (),
6211 (__mmask8) -1);
6212}
6213
6214static __inline__ __m512i __DEFAULT_FN_ATTRS
6215_mm512_mask_srl_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
6216{
6217 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
6218 (__v2di) __B,
6219 (__v8di) __W,
6220 (__mmask8) __U);
6221}
6222
6223static __inline__ __m512i __DEFAULT_FN_ATTRS
6224_mm512_maskz_srl_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
6225{
6226 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
6227 (__v2di) __B,
6228 (__v8di)
6229 _mm512_setzero_si512 (),
6230 (__mmask8) __U);
6231}
6232
6233static __inline__ __m512i __DEFAULT_FN_ATTRS
6234_mm512_srlv_epi32 (__m512i __X, __m512i __Y)
6235{
6236 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
6237 (__v16si) __Y,
6238 (__v16si)
6239 _mm512_setzero_si512 (),
6240 (__mmask16) -1);
6241}
6242
6243static __inline__ __m512i __DEFAULT_FN_ATTRS
6244_mm512_mask_srlv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
6245{
6246 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
6247 (__v16si) __Y,
6248 (__v16si) __W,
6249 (__mmask16) __U);
6250}
6251
6252static __inline__ __m512i __DEFAULT_FN_ATTRS
6253_mm512_maskz_srlv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
6254{
6255 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
6256 (__v16si) __Y,
6257 (__v16si)
6258 _mm512_setzero_si512 (),
6259 (__mmask16) __U);
6260}
6261
6262static __inline__ __m512i __DEFAULT_FN_ATTRS
6263_mm512_srlv_epi64 (__m512i __X, __m512i __Y)
6264{
6265 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
6266 (__v8di) __Y,
6267 (__v8di)
6268 _mm512_setzero_si512 (),
6269 (__mmask8) -1);
6270}
6271
6272static __inline__ __m512i __DEFAULT_FN_ATTRS
6273_mm512_mask_srlv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
6274{
6275 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
6276 (__v8di) __Y,
6277 (__v8di) __W,
6278 (__mmask8) __U);
6279}
6280
6281static __inline__ __m512i __DEFAULT_FN_ATTRS
6282_mm512_maskz_srlv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
6283{
6284 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
6285 (__v8di) __Y,
6286 (__v8di)
6287 _mm512_setzero_si512 (),
6288 (__mmask8) __U);
6289}
6290
Craig Topper8c18e112016-05-17 04:41:50 +00006291#define _mm512_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
6292 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
6293 (__v16si)(__m512i)(B), \
6294 (__v16si)(__m512i)(C), (int)(imm), \
6295 (__mmask16)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006296
Craig Topper8c18e112016-05-17 04:41:50 +00006297#define _mm512_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
6298 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
6299 (__v16si)(__m512i)(B), \
6300 (__v16si)(__m512i)(C), (int)(imm), \
6301 (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006302
Craig Topper8c18e112016-05-17 04:41:50 +00006303#define _mm512_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
6304 (__m512i)__builtin_ia32_pternlogd512_maskz((__v16si)(__m512i)(A), \
6305 (__v16si)(__m512i)(B), \
6306 (__v16si)(__m512i)(C), \
6307 (int)(imm), (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006308
Craig Topper8c18e112016-05-17 04:41:50 +00006309#define _mm512_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
6310 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
6311 (__v8di)(__m512i)(B), \
6312 (__v8di)(__m512i)(C), (int)(imm), \
6313 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006314
Craig Topper8c18e112016-05-17 04:41:50 +00006315#define _mm512_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
6316 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
6317 (__v8di)(__m512i)(B), \
6318 (__v8di)(__m512i)(C), (int)(imm), \
6319 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006320
Craig Topper8c18e112016-05-17 04:41:50 +00006321#define _mm512_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
6322 (__m512i)__builtin_ia32_pternlogq512_maskz((__v8di)(__m512i)(A), \
6323 (__v8di)(__m512i)(B), \
6324 (__v8di)(__m512i)(C), (int)(imm), \
6325 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006326
Craig Topper45db56c2016-07-21 07:38:39 +00006327#ifdef __x86_64__
Craig Topper8c18e112016-05-17 04:41:50 +00006328#define _mm_cvt_roundsd_i64(A, R) __extension__ ({ \
6329 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Craig Topper45db56c2016-07-21 07:38:39 +00006330#endif
Michael Zuckerman8d161992016-04-10 17:24:03 +00006331
Craig Topper8c18e112016-05-17 04:41:50 +00006332#define _mm_cvt_roundsd_si32(A, R) __extension__ ({ \
6333 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006334
Craig Topper8c18e112016-05-17 04:41:50 +00006335#define _mm_cvt_roundsd_i32(A, R) __extension__ ({ \
6336 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006337
Craig Topper8c18e112016-05-17 04:41:50 +00006338#define _mm_cvt_roundsd_u32(A, R) __extension__ ({ \
6339 (unsigned int)__builtin_ia32_vcvtsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006340
6341static __inline__ unsigned __DEFAULT_FN_ATTRS
6342_mm_cvtsd_u32 (__m128d __A)
6343{
6344 return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A,
6345 _MM_FROUND_CUR_DIRECTION);
6346}
6347
Craig Topper45db56c2016-07-21 07:38:39 +00006348#ifdef __x86_64__
Craig Topper8c18e112016-05-17 04:41:50 +00006349#define _mm_cvt_roundsd_u64(A, R) __extension__ ({ \
6350 (unsigned long long)__builtin_ia32_vcvtsd2usi64((__v2df)(__m128d)(A), \
6351 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006352
6353static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6354_mm_cvtsd_u64 (__m128d __A)
6355{
6356 return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df)
6357 __A,
6358 _MM_FROUND_CUR_DIRECTION);
6359}
Craig Topper45db56c2016-07-21 07:38:39 +00006360#endif
Michael Zuckerman8d161992016-04-10 17:24:03 +00006361
Craig Topper8c18e112016-05-17 04:41:50 +00006362#define _mm_cvt_roundss_si32(A, R) __extension__ ({ \
6363 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006364
Craig Topper8c18e112016-05-17 04:41:50 +00006365#define _mm_cvt_roundss_i32(A, R) __extension__ ({ \
6366 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006367
Craig Topper45db56c2016-07-21 07:38:39 +00006368#ifdef __x86_64__
Craig Topper8c18e112016-05-17 04:41:50 +00006369#define _mm_cvt_roundss_si64(A, R) __extension__ ({ \
6370 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006371
Craig Topper8c18e112016-05-17 04:41:50 +00006372#define _mm_cvt_roundss_i64(A, R) __extension__ ({ \
6373 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Craig Topper45db56c2016-07-21 07:38:39 +00006374#endif
Michael Zuckerman8d161992016-04-10 17:24:03 +00006375
Craig Topper8c18e112016-05-17 04:41:50 +00006376#define _mm_cvt_roundss_u32(A, R) __extension__ ({ \
6377 (unsigned int)__builtin_ia32_vcvtss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006378
6379static __inline__ unsigned __DEFAULT_FN_ATTRS
6380_mm_cvtss_u32 (__m128 __A)
6381{
6382 return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A,
6383 _MM_FROUND_CUR_DIRECTION);
6384}
6385
Craig Topper45db56c2016-07-21 07:38:39 +00006386#ifdef __x86_64__
Craig Topper8c18e112016-05-17 04:41:50 +00006387#define _mm_cvt_roundss_u64(A, R) __extension__ ({ \
6388 (unsigned long long)__builtin_ia32_vcvtss2usi64((__v4sf)(__m128)(A), \
6389 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006390
6391static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6392_mm_cvtss_u64 (__m128 __A)
6393{
6394 return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf)
6395 __A,
6396 _MM_FROUND_CUR_DIRECTION);
6397}
Craig Topper45db56c2016-07-21 07:38:39 +00006398#endif
Michael Zuckerman8d161992016-04-10 17:24:03 +00006399
Craig Topper8c18e112016-05-17 04:41:50 +00006400#define _mm_cvtt_roundsd_i32(A, R) __extension__ ({ \
6401 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006402
Craig Topper8c18e112016-05-17 04:41:50 +00006403#define _mm_cvtt_roundsd_si32(A, R) __extension__ ({ \
6404 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006405
6406static __inline__ int __DEFAULT_FN_ATTRS
6407_mm_cvttsd_i32 (__m128d __A)
6408{
6409 return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A,
6410 _MM_FROUND_CUR_DIRECTION);
6411}
6412
Craig Topper45db56c2016-07-21 07:38:39 +00006413#ifdef __x86_64__
Craig Topper8c18e112016-05-17 04:41:50 +00006414#define _mm_cvtt_roundsd_si64(A, R) __extension__ ({ \
6415 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006416
Craig Topper8c18e112016-05-17 04:41:50 +00006417#define _mm_cvtt_roundsd_i64(A, R) __extension__ ({ \
6418 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006419
6420static __inline__ long long __DEFAULT_FN_ATTRS
6421_mm_cvttsd_i64 (__m128d __A)
6422{
6423 return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A,
6424 _MM_FROUND_CUR_DIRECTION);
6425}
Craig Topper45db56c2016-07-21 07:38:39 +00006426#endif
Michael Zuckerman8d161992016-04-10 17:24:03 +00006427
Craig Topper8c18e112016-05-17 04:41:50 +00006428#define _mm_cvtt_roundsd_u32(A, R) __extension__ ({ \
6429 (unsigned int)__builtin_ia32_vcvttsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006430
6431static __inline__ unsigned __DEFAULT_FN_ATTRS
6432_mm_cvttsd_u32 (__m128d __A)
6433{
6434 return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A,
6435 _MM_FROUND_CUR_DIRECTION);
6436}
6437
Craig Topper45db56c2016-07-21 07:38:39 +00006438#ifdef __x86_64__
Craig Topper8c18e112016-05-17 04:41:50 +00006439#define _mm_cvtt_roundsd_u64(A, R) __extension__ ({ \
6440 (unsigned long long)__builtin_ia32_vcvttsd2usi64((__v2df)(__m128d)(A), \
6441 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006442
6443static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6444_mm_cvttsd_u64 (__m128d __A)
6445{
6446 return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df)
6447 __A,
6448 _MM_FROUND_CUR_DIRECTION);
6449}
Craig Topper45db56c2016-07-21 07:38:39 +00006450#endif
Michael Zuckerman8d161992016-04-10 17:24:03 +00006451
Craig Topper8c18e112016-05-17 04:41:50 +00006452#define _mm_cvtt_roundss_i32(A, R) __extension__ ({ \
6453 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006454
Craig Topper8c18e112016-05-17 04:41:50 +00006455#define _mm_cvtt_roundss_si32(A, R) __extension__ ({ \
6456 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006457
6458static __inline__ int __DEFAULT_FN_ATTRS
6459_mm_cvttss_i32 (__m128 __A)
6460{
6461 return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A,
6462 _MM_FROUND_CUR_DIRECTION);
6463}
6464
Craig Topper45db56c2016-07-21 07:38:39 +00006465#ifdef __x86_64__
Craig Topper8c18e112016-05-17 04:41:50 +00006466#define _mm_cvtt_roundss_i64(A, R) __extension__ ({ \
6467 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006468
Craig Topper8c18e112016-05-17 04:41:50 +00006469#define _mm_cvtt_roundss_si64(A, R) __extension__ ({ \
6470 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006471
6472static __inline__ long long __DEFAULT_FN_ATTRS
6473_mm_cvttss_i64 (__m128 __A)
6474{
6475 return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A,
6476 _MM_FROUND_CUR_DIRECTION);
6477}
Craig Topper45db56c2016-07-21 07:38:39 +00006478#endif
Michael Zuckerman8d161992016-04-10 17:24:03 +00006479
Craig Topper8c18e112016-05-17 04:41:50 +00006480#define _mm_cvtt_roundss_u32(A, R) __extension__ ({ \
6481 (unsigned int)__builtin_ia32_vcvttss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006482
6483static __inline__ unsigned __DEFAULT_FN_ATTRS
6484_mm_cvttss_u32 (__m128 __A)
6485{
6486 return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A,
6487 _MM_FROUND_CUR_DIRECTION);
6488}
6489
Craig Topper45db56c2016-07-21 07:38:39 +00006490#ifdef __x86_64__
Craig Topper8c18e112016-05-17 04:41:50 +00006491#define _mm_cvtt_roundss_u64(A, R) __extension__ ({ \
6492 (unsigned long long)__builtin_ia32_vcvttss2usi64((__v4sf)(__m128)(A), \
6493 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006494
6495static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6496_mm_cvttss_u64 (__m128 __A)
6497{
6498 return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf)
6499 __A,
6500 _MM_FROUND_CUR_DIRECTION);
6501}
Craig Topper45db56c2016-07-21 07:38:39 +00006502#endif
Michael Zuckerman8d161992016-04-10 17:24:03 +00006503
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006504static __inline__ __m512d __DEFAULT_FN_ATTRS
6505_mm512_mask2_permutex2var_pd (__m512d __A, __m512i __I, __mmask8 __U,
6506 __m512d __B)
6507{
6508 return (__m512d) __builtin_ia32_vpermi2varpd512_mask ((__v8df) __A,
6509 (__v8di) __I
6510 /* idx */ ,
6511 (__v8df) __B,
6512 (__mmask8) __U);
6513}
6514
6515static __inline__ __m512 __DEFAULT_FN_ATTRS
6516_mm512_mask2_permutex2var_ps (__m512 __A, __m512i __I, __mmask16 __U,
6517 __m512 __B)
6518{
6519 return (__m512) __builtin_ia32_vpermi2varps512_mask ((__v16sf) __A,
6520 (__v16si) __I
6521 /* idx */ ,
6522 (__v16sf) __B,
6523 (__mmask16) __U);
6524}
6525
6526static __inline__ __m512i __DEFAULT_FN_ATTRS
6527_mm512_mask2_permutex2var_epi64 (__m512i __A, __m512i __I,
6528 __mmask8 __U, __m512i __B)
6529{
6530 return (__m512i) __builtin_ia32_vpermi2varq512_mask ((__v8di) __A,
6531 (__v8di) __I
6532 /* idx */ ,
6533 (__v8di) __B,
6534 (__mmask8) __U);
6535}
6536
Craig Topper8c18e112016-05-17 04:41:50 +00006537#define _mm512_permute_pd(X, C) __extension__ ({ \
Simon Pilgrim17388f22016-07-04 11:06:15 +00006538 (__m512d)__builtin_shufflevector((__v8df)(__m512d)(X), \
Craig Topper2a383c92016-07-04 22:18:01 +00006539 (__v8df)_mm512_undefined_pd(), \
6540 0 + (((C) >> 0) & 0x1), \
6541 0 + (((C) >> 1) & 0x1), \
6542 2 + (((C) >> 2) & 0x1), \
6543 2 + (((C) >> 3) & 0x1), \
6544 4 + (((C) >> 4) & 0x1), \
6545 4 + (((C) >> 5) & 0x1), \
6546 6 + (((C) >> 6) & 0x1), \
6547 6 + (((C) >> 7) & 0x1)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006548
Craig Topper8c18e112016-05-17 04:41:50 +00006549#define _mm512_mask_permute_pd(W, U, X, C) __extension__ ({ \
Simon Pilgrim17388f22016-07-04 11:06:15 +00006550 (__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
6551 (__v8df)_mm512_permute_pd((X), (C)), \
6552 (__v8df)(__m512d)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006553
Craig Topper8c18e112016-05-17 04:41:50 +00006554#define _mm512_maskz_permute_pd(U, X, C) __extension__ ({ \
Simon Pilgrim17388f22016-07-04 11:06:15 +00006555 (__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
6556 (__v8df)_mm512_permute_pd((X), (C)), \
6557 (__v8df)_mm512_setzero_pd()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006558
Craig Topper8c18e112016-05-17 04:41:50 +00006559#define _mm512_permute_ps(X, C) __extension__ ({ \
Simon Pilgrim17388f22016-07-04 11:06:15 +00006560 (__m512)__builtin_shufflevector((__v16sf)(__m512)(X), \
Craig Topper2a383c92016-07-04 22:18:01 +00006561 (__v16sf)_mm512_undefined_ps(), \
6562 0 + (((C) >> 0) & 0x3), \
6563 0 + (((C) >> 2) & 0x3), \
6564 0 + (((C) >> 4) & 0x3), \
6565 0 + (((C) >> 6) & 0x3), \
6566 4 + (((C) >> 0) & 0x3), \
6567 4 + (((C) >> 2) & 0x3), \
6568 4 + (((C) >> 4) & 0x3), \
6569 4 + (((C) >> 6) & 0x3), \
6570 8 + (((C) >> 0) & 0x3), \
6571 8 + (((C) >> 2) & 0x3), \
6572 8 + (((C) >> 4) & 0x3), \
6573 8 + (((C) >> 6) & 0x3), \
6574 12 + (((C) >> 0) & 0x3), \
6575 12 + (((C) >> 2) & 0x3), \
6576 12 + (((C) >> 4) & 0x3), \
6577 12 + (((C) >> 6) & 0x3)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006578
Craig Topper8c18e112016-05-17 04:41:50 +00006579#define _mm512_mask_permute_ps(W, U, X, C) __extension__ ({ \
Simon Pilgrim17388f22016-07-04 11:06:15 +00006580 (__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
6581 (__v16sf)_mm512_permute_ps((X), (C)), \
6582 (__v16sf)(__m512)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006583
Craig Topper8c18e112016-05-17 04:41:50 +00006584#define _mm512_maskz_permute_ps(U, X, C) __extension__ ({ \
Simon Pilgrim17388f22016-07-04 11:06:15 +00006585 (__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
6586 (__v16sf)_mm512_permute_ps((X), (C)), \
6587 (__v16sf)_mm512_setzero_ps()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006588
6589static __inline__ __m512d __DEFAULT_FN_ATTRS
6590_mm512_permutevar_pd (__m512d __A, __m512i __C)
6591{
6592 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6593 (__v8di) __C,
6594 (__v8df)
6595 _mm512_undefined_pd (),
6596 (__mmask8) -1);
6597}
6598
6599static __inline__ __m512d __DEFAULT_FN_ATTRS
6600_mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
6601{
6602 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6603 (__v8di) __C,
6604 (__v8df) __W,
6605 (__mmask8) __U);
6606}
6607
6608static __inline__ __m512d __DEFAULT_FN_ATTRS
6609_mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C)
6610{
6611 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6612 (__v8di) __C,
6613 (__v8df)
6614 _mm512_setzero_pd (),
6615 (__mmask8) __U);
6616}
6617
6618static __inline__ __m512 __DEFAULT_FN_ATTRS
6619_mm512_permutevar_ps (__m512 __A, __m512i __C)
6620{
6621 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6622 (__v16si) __C,
6623 (__v16sf)
6624 _mm512_undefined_ps (),
6625 (__mmask16) -1);
6626}
6627
6628static __inline__ __m512 __DEFAULT_FN_ATTRS
6629_mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
6630{
6631 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6632 (__v16si) __C,
6633 (__v16sf) __W,
6634 (__mmask16) __U);
6635}
6636
6637static __inline__ __m512 __DEFAULT_FN_ATTRS
6638_mm512_maskz_permutevar_ps (__mmask16 __U, __m512 __A, __m512i __C)
6639{
6640 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6641 (__v16si) __C,
6642 (__v16sf)
6643 _mm512_setzero_ps (),
6644 (__mmask16) __U);
6645}
6646
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006647static __inline __m512d __DEFAULT_FN_ATTRS
6648_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006649{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006650 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6651 /* idx */ ,
6652 (__v8df) __A,
6653 (__v8df) __B,
6654 (__mmask8) -1);
6655}
6656
6657static __inline__ __m512d __DEFAULT_FN_ATTRS
6658_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I, __m512d __B)
6659{
6660 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6661 /* idx */ ,
6662 (__v8df) __A,
6663 (__v8df) __B,
6664 (__mmask8) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006665}
6666
6667static __inline__ __m512d __DEFAULT_FN_ATTRS
6668_mm512_maskz_permutex2var_pd (__mmask8 __U, __m512d __A, __m512i __I,
6669 __m512d __B)
6670{
6671 return (__m512d) __builtin_ia32_vpermt2varpd512_maskz ((__v8di) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006672 /* idx */ ,
6673 (__v8df) __A,
6674 (__v8df) __B,
6675 (__mmask8) __U);
6676}
6677
6678static __inline __m512 __DEFAULT_FN_ATTRS
6679_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
6680{
6681 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6682 /* idx */ ,
6683 (__v16sf) __A,
6684 (__v16sf) __B,
6685 (__mmask16) -1);
6686}
6687
6688static __inline__ __m512 __DEFAULT_FN_ATTRS
6689_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B)
6690{
6691 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6692 /* idx */ ,
6693 (__v16sf) __A,
6694 (__v16sf) __B,
6695 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006696}
6697
6698static __inline__ __m512 __DEFAULT_FN_ATTRS
6699_mm512_maskz_permutex2var_ps (__mmask16 __U, __m512 __A, __m512i __I,
6700 __m512 __B)
6701{
6702 return (__m512) __builtin_ia32_vpermt2varps512_maskz ((__v16si) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006703 /* idx */ ,
6704 (__v16sf) __A,
6705 (__v16sf) __B,
6706 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006707}
6708
Michael Zuckerman07525092016-04-11 10:22:07 +00006709static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6710_mm512_testn_epi32_mask (__m512i __A, __m512i __B)
6711{
6712 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6713 (__v16si) __B,
6714 (__mmask16) -1);
6715}
6716
6717static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6718_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
6719{
6720 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6721 (__v16si) __B, __U);
6722}
6723
6724static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6725_mm512_testn_epi64_mask (__m512i __A, __m512i __B)
6726{
6727 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6728 (__v8di) __B,
6729 (__mmask8) -1);
6730}
6731
6732static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6733_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
6734{
6735 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6736 (__v8di) __B, __U);
6737}
6738
Craig Topper8c18e112016-05-17 04:41:50 +00006739#define _mm512_cvtt_roundpd_epu32(A, R) __extension__ ({ \
6740 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6741 (__v8si)_mm256_undefined_si256(), \
6742 (__mmask8)-1, (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006743
Craig Topper8c18e112016-05-17 04:41:50 +00006744#define _mm512_mask_cvtt_roundpd_epu32(W, U, A, R) __extension__ ({ \
6745 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6746 (__v8si)(__m256i)(W), \
6747 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006748
Craig Topper8c18e112016-05-17 04:41:50 +00006749#define _mm512_maskz_cvtt_roundpd_epu32(U, A, R) __extension__ ({ \
6750 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6751 (__v8si)_mm256_setzero_si256(), \
6752 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006753
6754static __inline__ __m256i __DEFAULT_FN_ATTRS
6755_mm512_cvttpd_epu32 (__m512d __A)
6756{
6757 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6758 (__v8si)
6759 _mm256_undefined_si256 (),
6760 (__mmask8) -1,
6761 _MM_FROUND_CUR_DIRECTION);
6762}
6763
6764static __inline__ __m256i __DEFAULT_FN_ATTRS
6765_mm512_mask_cvttpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
6766{
6767 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6768 (__v8si) __W,
6769 (__mmask8) __U,
6770 _MM_FROUND_CUR_DIRECTION);
6771}
6772
6773static __inline__ __m256i __DEFAULT_FN_ATTRS
6774_mm512_maskz_cvttpd_epu32 (__mmask8 __U, __m512d __A)
6775{
6776 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6777 (__v8si)
6778 _mm256_setzero_si256 (),
6779 (__mmask8) __U,
6780 _MM_FROUND_CUR_DIRECTION);
6781}
Michael Zuckerman07525092016-04-11 10:22:07 +00006782
Craig Topper8c18e112016-05-17 04:41:50 +00006783#define _mm_roundscale_round_sd(A, B, imm, R) __extension__ ({ \
6784 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6785 (__v2df)(__m128d)(B), \
6786 (__v2df)_mm_setzero_pd(), \
6787 (__mmask8)-1, (int)(imm), \
6788 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006789
Craig Topper8c18e112016-05-17 04:41:50 +00006790#define _mm_roundscale_sd(A, B, imm) __extension__ ({ \
6791 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6792 (__v2df)(__m128d)(B), \
6793 (__v2df)_mm_setzero_pd(), \
6794 (__mmask8)-1, (int)(imm), \
6795 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006796
Craig Topper8c18e112016-05-17 04:41:50 +00006797#define _mm_mask_roundscale_sd(W, U, A, B, imm) __extension__ ({ \
6798 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6799 (__v2df)(__m128d)(B), \
6800 (__v2df)(__m128d)(W), \
6801 (__mmask8)(U), (int)(imm), \
6802 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006803
Craig Topper8c18e112016-05-17 04:41:50 +00006804#define _mm_mask_roundscale_round_sd(W, U, A, B, I, R) __extension__ ({ \
6805 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6806 (__v2df)(__m128d)(B), \
6807 (__v2df)(__m128d)(W), \
6808 (__mmask8)(U), (int)(I), \
6809 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006810
Craig Topper8c18e112016-05-17 04:41:50 +00006811#define _mm_maskz_roundscale_sd(U, A, B, I) __extension__ ({ \
6812 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6813 (__v2df)(__m128d)(B), \
6814 (__v2df)_mm_setzero_pd(), \
6815 (__mmask8)(U), (int)(I), \
6816 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006817
Craig Topper8c18e112016-05-17 04:41:50 +00006818#define _mm_maskz_roundscale_round_sd(U, A, B, I, R) __extension__ ({ \
6819 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6820 (__v2df)(__m128d)(B), \
6821 (__v2df)_mm_setzero_pd(), \
6822 (__mmask8)(U), (int)(I), \
6823 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006824
Craig Topper8c18e112016-05-17 04:41:50 +00006825#define _mm_roundscale_round_ss(A, B, imm, R) __extension__ ({ \
6826 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6827 (__v4sf)(__m128)(B), \
6828 (__v4sf)_mm_setzero_ps(), \
6829 (__mmask8)-1, (int)(imm), \
6830 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006831
Craig Topper8c18e112016-05-17 04:41:50 +00006832#define _mm_roundscale_ss(A, B, imm) __extension__ ({ \
6833 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6834 (__v4sf)(__m128)(B), \
6835 (__v4sf)_mm_setzero_ps(), \
6836 (__mmask8)-1, (int)(imm), \
6837 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006838
Craig Topper8c18e112016-05-17 04:41:50 +00006839#define _mm_mask_roundscale_ss(W, U, A, B, I) __extension__ ({ \
6840 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6841 (__v4sf)(__m128)(B), \
6842 (__v4sf)(__m128)(W), \
6843 (__mmask8)(U), (int)(I), \
6844 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006845
Craig Topper8c18e112016-05-17 04:41:50 +00006846#define _mm_mask_roundscale_round_ss(W, U, A, B, I, R) __extension__ ({ \
6847 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6848 (__v4sf)(__m128)(B), \
6849 (__v4sf)(__m128)(W), \
6850 (__mmask8)(U), (int)(I), \
6851 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006852
Craig Topper8c18e112016-05-17 04:41:50 +00006853#define _mm_maskz_roundscale_ss(U, A, B, I) __extension__ ({ \
6854 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6855 (__v4sf)(__m128)(B), \
6856 (__v4sf)_mm_setzero_ps(), \
6857 (__mmask8)(U), (int)(I), \
6858 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006859
Craig Topper8c18e112016-05-17 04:41:50 +00006860#define _mm_maskz_roundscale_round_ss(U, A, B, I, R) __extension__ ({ \
6861 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6862 (__v4sf)(__m128)(B), \
6863 (__v4sf)_mm_setzero_ps(), \
6864 (__mmask8)(U), (int)(I), \
6865 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006866
Craig Topper8c18e112016-05-17 04:41:50 +00006867#define _mm512_scalef_round_pd(A, B, R) __extension__ ({ \
6868 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6869 (__v8df)(__m512d)(B), \
6870 (__v8df)_mm512_undefined_pd(), \
6871 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006872
Craig Topper8c18e112016-05-17 04:41:50 +00006873#define _mm512_mask_scalef_round_pd(W, U, A, B, R) __extension__ ({ \
6874 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6875 (__v8df)(__m512d)(B), \
6876 (__v8df)(__m512d)(W), \
6877 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006878
Craig Topper8c18e112016-05-17 04:41:50 +00006879#define _mm512_maskz_scalef_round_pd(U, A, B, R) __extension__ ({ \
6880 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6881 (__v8df)(__m512d)(B), \
6882 (__v8df)_mm512_setzero_pd(), \
6883 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006884
6885static __inline__ __m512d __DEFAULT_FN_ATTRS
6886_mm512_scalef_pd (__m512d __A, __m512d __B)
6887{
6888 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6889 (__v8df) __B,
6890 (__v8df)
6891 _mm512_undefined_pd (),
6892 (__mmask8) -1,
6893 _MM_FROUND_CUR_DIRECTION);
6894}
6895
6896static __inline__ __m512d __DEFAULT_FN_ATTRS
6897_mm512_mask_scalef_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
6898{
6899 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6900 (__v8df) __B,
6901 (__v8df) __W,
6902 (__mmask8) __U,
6903 _MM_FROUND_CUR_DIRECTION);
6904}
6905
6906static __inline__ __m512d __DEFAULT_FN_ATTRS
6907_mm512_maskz_scalef_pd (__mmask8 __U, __m512d __A, __m512d __B)
6908{
6909 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6910 (__v8df) __B,
6911 (__v8df)
6912 _mm512_setzero_pd (),
6913 (__mmask8) __U,
6914 _MM_FROUND_CUR_DIRECTION);
6915}
6916
Craig Topper8c18e112016-05-17 04:41:50 +00006917#define _mm512_scalef_round_ps(A, B, R) __extension__ ({ \
6918 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6919 (__v16sf)(__m512)(B), \
6920 (__v16sf)_mm512_undefined_ps(), \
6921 (__mmask16)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006922
Craig Topper8c18e112016-05-17 04:41:50 +00006923#define _mm512_mask_scalef_round_ps(W, U, A, B, R) __extension__ ({ \
6924 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6925 (__v16sf)(__m512)(B), \
6926 (__v16sf)(__m512)(W), \
6927 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006928
Craig Topper8c18e112016-05-17 04:41:50 +00006929#define _mm512_maskz_scalef_round_ps(U, A, B, R) __extension__ ({ \
6930 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6931 (__v16sf)(__m512)(B), \
6932 (__v16sf)_mm512_setzero_ps(), \
6933 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006934
6935static __inline__ __m512 __DEFAULT_FN_ATTRS
6936_mm512_scalef_ps (__m512 __A, __m512 __B)
6937{
6938 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6939 (__v16sf) __B,
6940 (__v16sf)
6941 _mm512_undefined_ps (),
6942 (__mmask16) -1,
6943 _MM_FROUND_CUR_DIRECTION);
6944}
6945
6946static __inline__ __m512 __DEFAULT_FN_ATTRS
6947_mm512_mask_scalef_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6948{
6949 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6950 (__v16sf) __B,
6951 (__v16sf) __W,
6952 (__mmask16) __U,
6953 _MM_FROUND_CUR_DIRECTION);
6954}
6955
6956static __inline__ __m512 __DEFAULT_FN_ATTRS
6957_mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B)
6958{
6959 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6960 (__v16sf) __B,
6961 (__v16sf)
6962 _mm512_setzero_ps (),
6963 (__mmask16) __U,
6964 _MM_FROUND_CUR_DIRECTION);
6965}
6966
Craig Topper8c18e112016-05-17 04:41:50 +00006967#define _mm_scalef_round_sd(A, B, R) __extension__ ({ \
6968 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6969 (__v2df)(__m128d)(B), \
6970 (__v2df)_mm_setzero_pd(), \
6971 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006972
6973static __inline__ __m128d __DEFAULT_FN_ATTRS
6974_mm_scalef_sd (__m128d __A, __m128d __B)
6975{
6976 return (__m128d) __builtin_ia32_scalefsd_round_mask ((__v2df) __A,
6977 (__v2df)( __B), (__v2df) _mm_setzero_pd(),
6978 (__mmask8) -1,
6979 _MM_FROUND_CUR_DIRECTION);
6980}
6981
6982static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006983_mm_mask_scalef_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006984{
6985 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6986 (__v2df) __B,
6987 (__v2df) __W,
6988 (__mmask8) __U,
6989 _MM_FROUND_CUR_DIRECTION);
6990}
6991
Craig Topper8c18e112016-05-17 04:41:50 +00006992#define _mm_mask_scalef_round_sd(W, U, A, B, R) __extension__ ({ \
6993 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6994 (__v2df)(__m128d)(B), \
6995 (__v2df)(__m128d)(W), \
6996 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006997
6998static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006999_mm_maskz_scalef_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007000{
7001 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
7002 (__v2df) __B,
7003 (__v2df) _mm_setzero_pd (),
7004 (__mmask8) __U,
7005 _MM_FROUND_CUR_DIRECTION);
7006}
7007
Craig Topper8c18e112016-05-17 04:41:50 +00007008#define _mm_maskz_scalef_round_sd(U, A, B, R) __extension__ ({ \
7009 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
7010 (__v2df)(__m128d)(B), \
7011 (__v2df)_mm_setzero_pd(), \
7012 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007013
Craig Topper8c18e112016-05-17 04:41:50 +00007014#define _mm_scalef_round_ss(A, B, R) __extension__ ({ \
7015 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
7016 (__v4sf)(__m128)(B), \
7017 (__v4sf)_mm_setzero_ps(), \
7018 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007019
7020static __inline__ __m128 __DEFAULT_FN_ATTRS
7021_mm_scalef_ss (__m128 __A, __m128 __B)
7022{
7023 return (__m128) __builtin_ia32_scalefss_round_mask ((__v4sf) __A,
7024 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),
7025 (__mmask8) -1,
7026 _MM_FROUND_CUR_DIRECTION);
7027}
7028
7029static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007030_mm_mask_scalef_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007031{
7032 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
7033 (__v4sf) __B,
7034 (__v4sf) __W,
7035 (__mmask8) __U,
7036 _MM_FROUND_CUR_DIRECTION);
7037}
7038
Craig Topper8c18e112016-05-17 04:41:50 +00007039#define _mm_mask_scalef_round_ss(W, U, A, B, R) __extension__ ({ \
7040 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
7041 (__v4sf)(__m128)(B), \
7042 (__v4sf)(__m128)(W), \
7043 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007044
7045static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007046_mm_maskz_scalef_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007047{
7048 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
7049 (__v4sf) __B,
7050 (__v4sf) _mm_setzero_ps (),
7051 (__mmask8) __U,
7052 _MM_FROUND_CUR_DIRECTION);
7053}
7054
Craig Topper8c18e112016-05-17 04:41:50 +00007055#define _mm_maskz_scalef_round_ss(U, A, B, R) __extension__ ({ \
7056 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
7057 (__v4sf)(__m128)(B), \
7058 (__v4sf)_mm_setzero_ps(), \
7059 (__mmask8)(U), \
7060 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00007061
Craig Topper79d05c92016-05-15 20:10:06 +00007062#define _mm512_srai_epi32(A, B) __extension__ ({ \
7063 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
7064 (__v16si)_mm512_setzero_si512(), \
7065 (__mmask16)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007066
Craig Topper8c18e112016-05-17 04:41:50 +00007067#define _mm512_mask_srai_epi32(W, U, A, B) __extension__ ({ \
7068 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
7069 (__v16si)(__m512i)(W), \
7070 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007071
Craig Topper8c18e112016-05-17 04:41:50 +00007072#define _mm512_maskz_srai_epi32(U, A, B) __extension__ ({ \
7073 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
7074 (__v16si)_mm512_setzero_si512(), \
7075 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007076
Craig Topper8c18e112016-05-17 04:41:50 +00007077#define _mm512_srai_epi64(A, B) __extension__ ({ \
7078 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
7079 (__v8di)_mm512_setzero_si512(), \
7080 (__mmask8)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007081
Craig Topper8c18e112016-05-17 04:41:50 +00007082#define _mm512_mask_srai_epi64(W, U, A, B) __extension__ ({ \
7083 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
7084 (__v8di)(__m512i)(W), \
7085 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007086
Craig Topper8c18e112016-05-17 04:41:50 +00007087#define _mm512_maskz_srai_epi64(U, A, B) __extension__ ({ \
7088 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
7089 (__v8di)_mm512_setzero_si512(), \
7090 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007091
Craig Topper8c18e112016-05-17 04:41:50 +00007092#define _mm512_shuffle_f32x4(A, B, imm) __extension__ ({ \
7093 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
7094 (__v16sf)(__m512)(B), (int)(imm), \
7095 (__v16sf)_mm512_undefined_ps(), \
7096 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007097
Craig Topper8c18e112016-05-17 04:41:50 +00007098#define _mm512_mask_shuffle_f32x4(W, U, A, B, imm) __extension__ ({ \
7099 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
7100 (__v16sf)(__m512)(B), (int)(imm), \
7101 (__v16sf)(__m512)(W), \
7102 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007103
Craig Topper8c18e112016-05-17 04:41:50 +00007104#define _mm512_maskz_shuffle_f32x4(U, A, B, imm) __extension__ ({ \
7105 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
7106 (__v16sf)(__m512)(B), (int)(imm), \
7107 (__v16sf)_mm512_setzero_ps(), \
7108 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007109
Craig Topper8c18e112016-05-17 04:41:50 +00007110#define _mm512_shuffle_f64x2(A, B, imm) __extension__ ({ \
7111 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
7112 (__v8df)(__m512d)(B), (int)(imm), \
7113 (__v8df)_mm512_undefined_pd(), \
7114 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007115
Craig Topper8c18e112016-05-17 04:41:50 +00007116#define _mm512_mask_shuffle_f64x2(W, U, A, B, imm) __extension__ ({ \
7117 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
7118 (__v8df)(__m512d)(B), (int)(imm), \
7119 (__v8df)(__m512d)(W), \
7120 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007121
Craig Topper8c18e112016-05-17 04:41:50 +00007122#define _mm512_maskz_shuffle_f64x2(U, A, B, imm) __extension__ ({ \
7123 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
7124 (__v8df)(__m512d)(B), (int)(imm), \
7125 (__v8df)_mm512_setzero_pd(), \
7126 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007127
Craig Topper8c18e112016-05-17 04:41:50 +00007128#define _mm512_shuffle_i32x4(A, B, imm) __extension__ ({ \
7129 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
7130 (__v16si)(__m512i)(B), (int)(imm), \
7131 (__v16si)_mm512_setzero_si512(), \
7132 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007133
Craig Topper8c18e112016-05-17 04:41:50 +00007134#define _mm512_mask_shuffle_i32x4(W, U, A, B, imm) __extension__ ({ \
7135 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
7136 (__v16si)(__m512i)(B), (int)(imm), \
7137 (__v16si)(__m512i)(W), \
7138 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007139
Craig Topper8c18e112016-05-17 04:41:50 +00007140#define _mm512_maskz_shuffle_i32x4(U, A, B, imm) __extension__ ({ \
7141 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
7142 (__v16si)(__m512i)(B), (int)(imm), \
7143 (__v16si)_mm512_setzero_si512(), \
7144 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007145
Craig Topper8c18e112016-05-17 04:41:50 +00007146#define _mm512_shuffle_i64x2(A, B, imm) __extension__ ({ \
7147 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
7148 (__v8di)(__m512i)(B), (int)(imm), \
7149 (__v8di)_mm512_setzero_si512(), \
7150 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007151
Craig Topper8c18e112016-05-17 04:41:50 +00007152#define _mm512_mask_shuffle_i64x2(W, U, A, B, imm) __extension__ ({ \
7153 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
7154 (__v8di)(__m512i)(B), (int)(imm), \
7155 (__v8di)(__m512i)(W), \
7156 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007157
Craig Topper8c18e112016-05-17 04:41:50 +00007158#define _mm512_maskz_shuffle_i64x2(U, A, B, imm) __extension__ ({ \
7159 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
7160 (__v8di)(__m512i)(B), (int)(imm), \
7161 (__v8di)_mm512_setzero_si512(), \
7162 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007163
Simon Pilgrim427154d2016-07-04 21:30:47 +00007164#define _mm512_shuffle_pd(A, B, M) __extension__ ({ \
7165 (__m512d)__builtin_shufflevector((__v8df)(__m512d)(A), \
7166 (__v8df)(__m512d)(B), \
Craig Topper2a383c92016-07-04 22:18:01 +00007167 0 + (((M) >> 0) & 0x1), \
7168 8 + (((M) >> 1) & 0x1), \
7169 2 + (((M) >> 2) & 0x1), \
7170 10 + (((M) >> 3) & 0x1), \
7171 4 + (((M) >> 4) & 0x1), \
7172 12 + (((M) >> 5) & 0x1), \
7173 6 + (((M) >> 6) & 0x1), \
7174 14 + (((M) >> 7) & 0x1)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007175
Simon Pilgrim427154d2016-07-04 21:30:47 +00007176#define _mm512_mask_shuffle_pd(W, U, A, B, M) __extension__ ({ \
7177 (__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
7178 (__v8df)_mm512_shuffle_pd((A), (B), (M)), \
7179 (__v8df)(__m512d)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007180
Simon Pilgrim427154d2016-07-04 21:30:47 +00007181#define _mm512_maskz_shuffle_pd(U, A, B, M) __extension__ ({ \
7182 (__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
7183 (__v8df)_mm512_shuffle_pd((A), (B), (M)), \
7184 (__v8df)_mm512_setzero_pd()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007185
Craig Topper6e76fb62016-07-10 05:57:21 +00007186#define _mm512_shuffle_ps(A, B, M) __extension__ ({ \
7187 (__m512d)__builtin_shufflevector((__v16sf)(__m512)(A), \
7188 (__v16sf)(__m512)(B), \
7189 0 + (((M) >> 0) & 0x3), \
7190 0 + (((M) >> 2) & 0x3), \
7191 16 + (((M) >> 4) & 0x3), \
7192 16 + (((M) >> 6) & 0x3), \
7193 4 + (((M) >> 0) & 0x3), \
7194 4 + (((M) >> 2) & 0x3), \
7195 20 + (((M) >> 4) & 0x3), \
7196 20 + (((M) >> 6) & 0x3), \
7197 8 + (((M) >> 0) & 0x3), \
7198 8 + (((M) >> 2) & 0x3), \
7199 24 + (((M) >> 4) & 0x3), \
7200 24 + (((M) >> 6) & 0x3), \
7201 12 + (((M) >> 0) & 0x3), \
7202 12 + (((M) >> 2) & 0x3), \
7203 28 + (((M) >> 4) & 0x3), \
7204 28 + (((M) >> 6) & 0x3)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007205
Craig Topper6e76fb62016-07-10 05:57:21 +00007206#define _mm512_mask_shuffle_ps(W, U, A, B, M) __extension__ ({ \
7207 (__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
7208 (__v16sf)_mm512_shuffle_ps((A), (B), (M)), \
7209 (__v16sf)(__m512)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007210
Craig Topper6e76fb62016-07-10 05:57:21 +00007211#define _mm512_maskz_shuffle_ps(U, A, B, M) __extension__ ({ \
7212 (__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
7213 (__v16sf)_mm512_shuffle_ps((A), (B), (M)), \
7214 (__v16sf)_mm512_setzero_ps()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007215
Craig Topper8c18e112016-05-17 04:41:50 +00007216#define _mm_sqrt_round_sd(A, B, R) __extension__ ({ \
Asaf Badouhf9cdb8d2016-07-05 11:36:21 +00007217 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(A), \
7218 (__v2df)(__m128d)(B), \
Craig Topper8c18e112016-05-17 04:41:50 +00007219 (__v2df)_mm_setzero_pd(), \
7220 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007221
7222static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007223_mm_mask_sqrt_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007224{
Asaf Badouhf9cdb8d2016-07-05 11:36:21 +00007225 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __A,
7226 (__v2df) __B,
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007227 (__v2df) __W,
7228 (__mmask8) __U,
7229 _MM_FROUND_CUR_DIRECTION);
7230}
7231
Craig Topper8c18e112016-05-17 04:41:50 +00007232#define _mm_mask_sqrt_round_sd(W, U, A, B, R) __extension__ ({ \
Asaf Badouhf9cdb8d2016-07-05 11:36:21 +00007233 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(A), \
7234 (__v2df)(__m128d)(B), \
Craig Topper8c18e112016-05-17 04:41:50 +00007235 (__v2df)(__m128d)(W), \
7236 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007237
7238static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007239_mm_maskz_sqrt_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007240{
Asaf Badouhf9cdb8d2016-07-05 11:36:21 +00007241 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __A,
7242 (__v2df) __B,
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007243 (__v2df) _mm_setzero_pd (),
7244 (__mmask8) __U,
7245 _MM_FROUND_CUR_DIRECTION);
7246}
7247
Craig Topper8c18e112016-05-17 04:41:50 +00007248#define _mm_maskz_sqrt_round_sd(U, A, B, R) __extension__ ({ \
Asaf Badouhf9cdb8d2016-07-05 11:36:21 +00007249 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(A), \
7250 (__v2df)(__m128d)(B), \
Craig Topper8c18e112016-05-17 04:41:50 +00007251 (__v2df)_mm_setzero_pd(), \
7252 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007253
Craig Topper8c18e112016-05-17 04:41:50 +00007254#define _mm_sqrt_round_ss(A, B, R) __extension__ ({ \
Asaf Badouhf9cdb8d2016-07-05 11:36:21 +00007255 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(A), \
7256 (__v4sf)(__m128)(B), \
Craig Topper8c18e112016-05-17 04:41:50 +00007257 (__v4sf)_mm_setzero_ps(), \
7258 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007259
7260static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007261_mm_mask_sqrt_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007262{
Asaf Badouhf9cdb8d2016-07-05 11:36:21 +00007263 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __A,
7264 (__v4sf) __B,
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007265 (__v4sf) __W,
7266 (__mmask8) __U,
7267 _MM_FROUND_CUR_DIRECTION);
7268}
7269
Craig Topper8c18e112016-05-17 04:41:50 +00007270#define _mm_mask_sqrt_round_ss(W, U, A, B, R) __extension__ ({ \
Asaf Badouhf9cdb8d2016-07-05 11:36:21 +00007271 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(A), \
7272 (__v4sf)(__m128)(B), \
Craig Topper8c18e112016-05-17 04:41:50 +00007273 (__v4sf)(__m128)(W), (__mmask8)(U), \
7274 (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007275
7276static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007277_mm_maskz_sqrt_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007278{
7279 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __A,
7280 (__v4sf) __B,
7281 (__v4sf) _mm_setzero_ps (),
7282 (__mmask8) __U,
7283 _MM_FROUND_CUR_DIRECTION);
7284}
7285
Craig Topper8c18e112016-05-17 04:41:50 +00007286#define _mm_maskz_sqrt_round_ss(U, A, B, R) __extension__ ({ \
Asaf Badouhf9cdb8d2016-07-05 11:36:21 +00007287 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(A), \
7288 (__v4sf)(__m128)(B), \
Craig Topper8c18e112016-05-17 04:41:50 +00007289 (__v4sf)_mm_setzero_ps(), \
7290 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007291
Michael Zuckerman8c2900f2016-04-27 11:43:14 +00007292static __inline__ __m512 __DEFAULT_FN_ATTRS
7293_mm512_broadcast_f32x4 (__m128 __A)
7294{
7295 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
7296 (__v16sf)
7297 _mm512_undefined_ps (),
7298 (__mmask16) -1);
7299}
7300
7301static __inline__ __m512 __DEFAULT_FN_ATTRS
7302_mm512_mask_broadcast_f32x4 (__m512 __O, __mmask16 __M, __m128 __A)
7303{
7304 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
7305 (__v16sf) __O,
7306 __M);
7307}
7308
7309static __inline__ __m512 __DEFAULT_FN_ATTRS
7310_mm512_maskz_broadcast_f32x4 (__mmask16 __M, __m128 __A)
7311{
7312 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
7313 (__v16sf)
7314 _mm512_setzero_ps (),
7315 __M);
7316}
7317
7318static __inline__ __m512d __DEFAULT_FN_ATTRS
7319_mm512_broadcast_f64x4 (__m256d __A)
7320{
7321 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
7322 (__v8df)
7323 _mm512_undefined_pd (),
7324 (__mmask8) -1);
7325}
7326
7327static __inline__ __m512d __DEFAULT_FN_ATTRS
7328_mm512_mask_broadcast_f64x4 (__m512d __O, __mmask8 __M, __m256d __A)
7329{
7330 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
7331 (__v8df) __O,
7332 __M);
7333}
7334
7335static __inline__ __m512d __DEFAULT_FN_ATTRS
7336_mm512_maskz_broadcast_f64x4 (__mmask8 __M, __m256d __A)
7337{
7338 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
7339 (__v8df)
7340 _mm512_setzero_pd (),
7341 __M);
7342}
7343
7344static __inline__ __m512i __DEFAULT_FN_ATTRS
7345_mm512_broadcast_i32x4 (__m128i __A)
7346{
7347 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7348 (__v16si)
7349 _mm512_undefined_epi32 (),
7350 (__mmask16) -1);
7351}
7352
7353static __inline__ __m512i __DEFAULT_FN_ATTRS
7354_mm512_mask_broadcast_i32x4 (__m512i __O, __mmask16 __M, __m128i __A)
7355{
7356 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7357 (__v16si) __O,
7358 __M);
7359}
7360
7361static __inline__ __m512i __DEFAULT_FN_ATTRS
7362_mm512_maskz_broadcast_i32x4 (__mmask16 __M, __m128i __A)
7363{
7364 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7365 (__v16si)
7366 _mm512_setzero_si512 (),
7367 __M);
7368}
7369
7370static __inline__ __m512i __DEFAULT_FN_ATTRS
7371_mm512_broadcast_i64x4 (__m256i __A)
7372{
7373 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7374 (__v8di)
7375 _mm512_undefined_epi32 (),
7376 (__mmask8) -1);
7377}
7378
7379static __inline__ __m512i __DEFAULT_FN_ATTRS
7380_mm512_mask_broadcast_i64x4 (__m512i __O, __mmask8 __M, __m256i __A)
7381{
7382 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7383 (__v8di) __O,
7384 __M);
7385}
7386
7387static __inline__ __m512i __DEFAULT_FN_ATTRS
7388_mm512_maskz_broadcast_i64x4 (__mmask8 __M, __m256i __A)
7389{
7390 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7391 (__v8di)
7392 _mm512_setzero_si512 (),
7393 __M);
7394}
7395
7396static __inline__ __m512d __DEFAULT_FN_ATTRS
7397_mm512_mask_broadcastsd_pd (__m512d __O, __mmask8 __M, __m128d __A)
7398{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00007399 return (__m512d)__builtin_ia32_selectpd_512(__M,
7400 (__v8df) _mm512_broadcastsd_pd(__A),
7401 (__v8df) __O);
Michael Zuckerman8c2900f2016-04-27 11:43:14 +00007402}
7403
7404static __inline__ __m512d __DEFAULT_FN_ATTRS
7405_mm512_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
7406{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00007407 return (__m512d)__builtin_ia32_selectpd_512(__M,
7408 (__v8df) _mm512_broadcastsd_pd(__A),
7409 (__v8df) _mm512_setzero_pd());
Michael Zuckerman8c2900f2016-04-27 11:43:14 +00007410}
7411
7412static __inline__ __m512 __DEFAULT_FN_ATTRS
7413_mm512_mask_broadcastss_ps (__m512 __O, __mmask16 __M, __m128 __A)
7414{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00007415 return (__m512)__builtin_ia32_selectps_512(__M,
7416 (__v16sf) _mm512_broadcastss_ps(__A),
7417 (__v16sf) __O);
Michael Zuckerman8c2900f2016-04-27 11:43:14 +00007418}
7419
7420static __inline__ __m512 __DEFAULT_FN_ATTRS
7421_mm512_maskz_broadcastss_ps (__mmask16 __M, __m128 __A)
7422{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00007423 return (__m512)__builtin_ia32_selectps_512(__M,
7424 (__v16sf) _mm512_broadcastss_ps(__A),
7425 (__v16sf) _mm512_setzero_ps());
Michael Zuckerman8c2900f2016-04-27 11:43:14 +00007426}
7427
Michael Zuckermane1680612016-04-13 15:02:04 +00007428static __inline__ __m128i __DEFAULT_FN_ATTRS
7429_mm512_cvtsepi32_epi8 (__m512i __A)
7430{
7431 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7432 (__v16qi) _mm_undefined_si128 (),
7433 (__mmask16) -1);
7434}
7435
7436static __inline__ __m128i __DEFAULT_FN_ATTRS
7437_mm512_mask_cvtsepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7438{
7439 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7440 (__v16qi) __O, __M);
7441}
7442
7443static __inline__ __m128i __DEFAULT_FN_ATTRS
7444_mm512_maskz_cvtsepi32_epi8 (__mmask16 __M, __m512i __A)
7445{
7446 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7447 (__v16qi) _mm_setzero_si128 (),
7448 __M);
7449}
7450
7451static __inline__ void __DEFAULT_FN_ATTRS
7452_mm512_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7453{
7454 __builtin_ia32_pmovsdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7455}
7456
7457static __inline__ __m256i __DEFAULT_FN_ATTRS
7458_mm512_cvtsepi32_epi16 (__m512i __A)
7459{
7460 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7461 (__v16hi) _mm256_undefined_si256 (),
7462 (__mmask16) -1);
7463}
7464
7465static __inline__ __m256i __DEFAULT_FN_ATTRS
7466_mm512_mask_cvtsepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7467{
7468 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7469 (__v16hi) __O, __M);
7470}
7471
7472static __inline__ __m256i __DEFAULT_FN_ATTRS
7473_mm512_maskz_cvtsepi32_epi16 (__mmask16 __M, __m512i __A)
7474{
7475 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7476 (__v16hi) _mm256_setzero_si256 (),
7477 __M);
7478}
7479
7480static __inline__ void __DEFAULT_FN_ATTRS
7481_mm512_mask_cvtsepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7482{
7483 __builtin_ia32_pmovsdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7484}
7485
7486static __inline__ __m128i __DEFAULT_FN_ATTRS
7487_mm512_cvtsepi64_epi8 (__m512i __A)
7488{
7489 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7490 (__v16qi) _mm_undefined_si128 (),
7491 (__mmask8) -1);
7492}
7493
7494static __inline__ __m128i __DEFAULT_FN_ATTRS
7495_mm512_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7496{
7497 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7498 (__v16qi) __O, __M);
7499}
7500
7501static __inline__ __m128i __DEFAULT_FN_ATTRS
7502_mm512_maskz_cvtsepi64_epi8 (__mmask8 __M, __m512i __A)
7503{
7504 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7505 (__v16qi) _mm_setzero_si128 (),
7506 __M);
7507}
7508
7509static __inline__ void __DEFAULT_FN_ATTRS
7510_mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7511{
7512 __builtin_ia32_pmovsqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7513}
7514
7515static __inline__ __m256i __DEFAULT_FN_ATTRS
7516_mm512_cvtsepi64_epi32 (__m512i __A)
7517{
Michael Zuckermane1680612016-04-13 15:02:04 +00007518 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7519 (__v8si) _mm256_undefined_si256 (),
7520 (__mmask8) -1);
7521}
7522
7523static __inline__ __m256i __DEFAULT_FN_ATTRS
7524_mm512_mask_cvtsepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7525{
7526 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7527 (__v8si) __O, __M);
7528}
7529
7530static __inline__ __m256i __DEFAULT_FN_ATTRS
7531_mm512_maskz_cvtsepi64_epi32 (__mmask8 __M, __m512i __A)
7532{
7533 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7534 (__v8si) _mm256_setzero_si256 (),
7535 __M);
7536}
7537
7538static __inline__ void __DEFAULT_FN_ATTRS
7539_mm512_mask_cvtsepi64_storeu_epi32 (void *__P, __mmask8 __M, __m512i __A)
7540{
7541 __builtin_ia32_pmovsqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7542}
7543
7544static __inline__ __m128i __DEFAULT_FN_ATTRS
7545_mm512_cvtsepi64_epi16 (__m512i __A)
7546{
7547 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7548 (__v8hi) _mm_undefined_si128 (),
7549 (__mmask8) -1);
7550}
7551
7552static __inline__ __m128i __DEFAULT_FN_ATTRS
7553_mm512_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7554{
7555 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7556 (__v8hi) __O, __M);
7557}
7558
7559static __inline__ __m128i __DEFAULT_FN_ATTRS
7560_mm512_maskz_cvtsepi64_epi16 (__mmask8 __M, __m512i __A)
7561{
7562 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7563 (__v8hi) _mm_setzero_si128 (),
7564 __M);
7565}
7566
7567static __inline__ void __DEFAULT_FN_ATTRS
7568_mm512_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m512i __A)
7569{
7570 __builtin_ia32_pmovsqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7571}
7572
Michael Zuckermand8715312016-04-14 06:48:09 +00007573static __inline__ __m128i __DEFAULT_FN_ATTRS
7574_mm512_cvtusepi32_epi8 (__m512i __A)
7575{
7576 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7577 (__v16qi) _mm_undefined_si128 (),
7578 (__mmask16) -1);
7579}
7580
7581static __inline__ __m128i __DEFAULT_FN_ATTRS
7582_mm512_mask_cvtusepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7583{
7584 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7585 (__v16qi) __O,
7586 __M);
7587}
7588
7589static __inline__ __m128i __DEFAULT_FN_ATTRS
7590_mm512_maskz_cvtusepi32_epi8 (__mmask16 __M, __m512i __A)
7591{
7592 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7593 (__v16qi) _mm_setzero_si128 (),
7594 __M);
7595}
7596
7597static __inline__ void __DEFAULT_FN_ATTRS
7598_mm512_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7599{
7600 __builtin_ia32_pmovusdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7601}
7602
7603static __inline__ __m256i __DEFAULT_FN_ATTRS
7604_mm512_cvtusepi32_epi16 (__m512i __A)
7605{
7606 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7607 (__v16hi) _mm256_undefined_si256 (),
7608 (__mmask16) -1);
7609}
7610
7611static __inline__ __m256i __DEFAULT_FN_ATTRS
7612_mm512_mask_cvtusepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7613{
7614 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7615 (__v16hi) __O,
7616 __M);
7617}
7618
7619static __inline__ __m256i __DEFAULT_FN_ATTRS
7620_mm512_maskz_cvtusepi32_epi16 (__mmask16 __M, __m512i __A)
7621{
7622 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7623 (__v16hi) _mm256_setzero_si256 (),
7624 __M);
7625}
7626
7627static __inline__ void __DEFAULT_FN_ATTRS
7628_mm512_mask_cvtusepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7629{
7630 __builtin_ia32_pmovusdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7631}
7632
7633static __inline__ __m128i __DEFAULT_FN_ATTRS
7634_mm512_cvtusepi64_epi8 (__m512i __A)
7635{
7636 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7637 (__v16qi) _mm_undefined_si128 (),
7638 (__mmask8) -1);
7639}
7640
7641static __inline__ __m128i __DEFAULT_FN_ATTRS
7642_mm512_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7643{
7644 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7645 (__v16qi) __O,
7646 __M);
7647}
7648
7649static __inline__ __m128i __DEFAULT_FN_ATTRS
7650_mm512_maskz_cvtusepi64_epi8 (__mmask8 __M, __m512i __A)
7651{
7652 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7653 (__v16qi) _mm_setzero_si128 (),
7654 __M);
7655}
7656
7657static __inline__ void __DEFAULT_FN_ATTRS
7658_mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7659{
7660 __builtin_ia32_pmovusqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7661}
7662
7663static __inline__ __m256i __DEFAULT_FN_ATTRS
7664_mm512_cvtusepi64_epi32 (__m512i __A)
7665{
7666 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7667 (__v8si) _mm256_undefined_si256 (),
7668 (__mmask8) -1);
7669}
7670
7671static __inline__ __m256i __DEFAULT_FN_ATTRS
7672_mm512_mask_cvtusepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7673{
7674 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7675 (__v8si) __O, __M);
7676}
7677
7678static __inline__ __m256i __DEFAULT_FN_ATTRS
7679_mm512_maskz_cvtusepi64_epi32 (__mmask8 __M, __m512i __A)
7680{
7681 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7682 (__v8si) _mm256_setzero_si256 (),
7683 __M);
7684}
7685
7686static __inline__ void __DEFAULT_FN_ATTRS
7687_mm512_mask_cvtusepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7688{
7689 __builtin_ia32_pmovusqd512mem_mask ((__v8si*) __P, (__v8di) __A, __M);
7690}
7691
7692static __inline__ __m128i __DEFAULT_FN_ATTRS
7693_mm512_cvtusepi64_epi16 (__m512i __A)
7694{
7695 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7696 (__v8hi) _mm_undefined_si128 (),
7697 (__mmask8) -1);
7698}
7699
7700static __inline__ __m128i __DEFAULT_FN_ATTRS
7701_mm512_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7702{
7703 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7704 (__v8hi) __O, __M);
7705}
7706
7707static __inline__ __m128i __DEFAULT_FN_ATTRS
7708_mm512_maskz_cvtusepi64_epi16 (__mmask8 __M, __m512i __A)
7709{
7710 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7711 (__v8hi) _mm_setzero_si128 (),
7712 __M);
7713}
7714
7715static __inline__ void __DEFAULT_FN_ATTRS
7716_mm512_mask_cvtusepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7717{
7718 __builtin_ia32_pmovusqw512mem_mask ((__v8hi*) __P, (__v8di) __A, __M);
7719}
7720
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007721static __inline__ __m128i __DEFAULT_FN_ATTRS
7722_mm512_cvtepi32_epi8 (__m512i __A)
7723{
7724 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7725 (__v16qi) _mm_undefined_si128 (),
7726 (__mmask16) -1);
7727}
7728
7729static __inline__ __m128i __DEFAULT_FN_ATTRS
7730_mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7731{
7732 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7733 (__v16qi) __O, __M);
7734}
7735
7736static __inline__ __m128i __DEFAULT_FN_ATTRS
7737_mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A)
7738{
7739 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7740 (__v16qi) _mm_setzero_si128 (),
7741 __M);
7742}
7743
7744static __inline__ void __DEFAULT_FN_ATTRS
7745_mm512_mask_cvtepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7746{
7747 __builtin_ia32_pmovdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7748}
7749
7750static __inline__ __m256i __DEFAULT_FN_ATTRS
7751_mm512_cvtepi32_epi16 (__m512i __A)
7752{
7753 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7754 (__v16hi) _mm256_undefined_si256 (),
7755 (__mmask16) -1);
7756}
7757
7758static __inline__ __m256i __DEFAULT_FN_ATTRS
7759_mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7760{
7761 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7762 (__v16hi) __O, __M);
7763}
7764
7765static __inline__ __m256i __DEFAULT_FN_ATTRS
7766_mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A)
7767{
7768 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7769 (__v16hi) _mm256_setzero_si256 (),
7770 __M);
7771}
7772
7773static __inline__ void __DEFAULT_FN_ATTRS
7774_mm512_mask_cvtepi32_storeu_epi16 (void * __P, __mmask16 __M, __m512i __A)
7775{
7776 __builtin_ia32_pmovdw512mem_mask ((__v16hi *) __P, (__v16si) __A, __M);
7777}
7778
7779static __inline__ __m128i __DEFAULT_FN_ATTRS
7780_mm512_cvtepi64_epi8 (__m512i __A)
7781{
7782 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7783 (__v16qi) _mm_undefined_si128 (),
7784 (__mmask8) -1);
7785}
7786
7787static __inline__ __m128i __DEFAULT_FN_ATTRS
7788_mm512_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7789{
7790 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7791 (__v16qi) __O, __M);
7792}
7793
7794static __inline__ __m128i __DEFAULT_FN_ATTRS
7795_mm512_maskz_cvtepi64_epi8 (__mmask8 __M, __m512i __A)
7796{
7797 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7798 (__v16qi) _mm_setzero_si128 (),
7799 __M);
7800}
7801
7802static __inline__ void __DEFAULT_FN_ATTRS
7803_mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7804{
7805 __builtin_ia32_pmovqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7806}
7807
7808static __inline__ __m256i __DEFAULT_FN_ATTRS
7809_mm512_cvtepi64_epi32 (__m512i __A)
7810{
7811 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7812 (__v8si) _mm256_undefined_si256 (),
7813 (__mmask8) -1);
7814}
7815
7816static __inline__ __m256i __DEFAULT_FN_ATTRS
7817_mm512_mask_cvtepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7818{
7819 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7820 (__v8si) __O, __M);
7821}
7822
7823static __inline__ __m256i __DEFAULT_FN_ATTRS
7824_mm512_maskz_cvtepi64_epi32 (__mmask8 __M, __m512i __A)
7825{
7826 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7827 (__v8si) _mm256_setzero_si256 (),
7828 __M);
7829}
7830
7831static __inline__ void __DEFAULT_FN_ATTRS
7832_mm512_mask_cvtepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7833{
7834 __builtin_ia32_pmovqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7835}
7836
7837static __inline__ __m128i __DEFAULT_FN_ATTRS
7838_mm512_cvtepi64_epi16 (__m512i __A)
7839{
7840 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7841 (__v8hi) _mm_undefined_si128 (),
7842 (__mmask8) -1);
7843}
7844
7845static __inline__ __m128i __DEFAULT_FN_ATTRS
7846_mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7847{
7848 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7849 (__v8hi) __O, __M);
7850}
7851
7852static __inline__ __m128i __DEFAULT_FN_ATTRS
7853_mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A)
7854{
7855 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7856 (__v8hi) _mm_setzero_si128 (),
7857 __M);
7858}
7859
7860static __inline__ void __DEFAULT_FN_ATTRS
7861_mm512_mask_cvtepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7862{
7863 __builtin_ia32_pmovqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7864}
7865
Craig Topper8c18e112016-05-17 04:41:50 +00007866#define _mm512_extracti32x4_epi32(A, imm) __extension__ ({ \
7867 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7868 (__v4si)_mm_undefined_si128(), \
7869 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007870
Craig Topper8c18e112016-05-17 04:41:50 +00007871#define _mm512_mask_extracti32x4_epi32(W, U, A, imm) __extension__ ({ \
7872 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7873 (__v4si)(__m128i)(W), \
7874 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007875
Craig Topper8c18e112016-05-17 04:41:50 +00007876#define _mm512_maskz_extracti32x4_epi32(U, A, imm) __extension__ ({ \
7877 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7878 (__v4si)_mm_setzero_si128(), \
7879 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007880
Craig Topper8c18e112016-05-17 04:41:50 +00007881#define _mm512_extracti64x4_epi64(A, imm) __extension__ ({ \
7882 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7883 (__v4di)_mm256_undefined_si256(), \
7884 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007885
Craig Topper8c18e112016-05-17 04:41:50 +00007886#define _mm512_mask_extracti64x4_epi64(W, U, A, imm) __extension__ ({ \
7887 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7888 (__v4di)(__m256i)(W), \
7889 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007890
Craig Topper8c18e112016-05-17 04:41:50 +00007891#define _mm512_maskz_extracti64x4_epi64(U, A, imm) __extension__ ({ \
7892 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7893 (__v4di)_mm256_setzero_si256(), \
7894 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007895
Craig Topper8c18e112016-05-17 04:41:50 +00007896#define _mm512_insertf64x4(A, B, imm) __extension__ ({ \
7897 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7898 (__v4df)(__m256d)(B), (int)(imm), \
7899 (__v8df)_mm512_undefined_pd(), \
7900 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007901
Craig Topper8c18e112016-05-17 04:41:50 +00007902#define _mm512_mask_insertf64x4(W, U, A, B, imm) __extension__ ({ \
7903 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7904 (__v4df)(__m256d)(B), (int)(imm), \
7905 (__v8df)(__m512d)(W), \
7906 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007907
Craig Topper8c18e112016-05-17 04:41:50 +00007908#define _mm512_maskz_insertf64x4(U, A, B, imm) __extension__ ({ \
7909 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7910 (__v4df)(__m256d)(B), (int)(imm), \
7911 (__v8df)_mm512_setzero_pd(), \
7912 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007913
Craig Topper8c18e112016-05-17 04:41:50 +00007914#define _mm512_inserti64x4(A, B, imm) __extension__ ({ \
7915 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7916 (__v4di)(__m256i)(B), (int)(imm), \
7917 (__v8di)_mm512_setzero_si512(), \
7918 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007919
Craig Topper8c18e112016-05-17 04:41:50 +00007920#define _mm512_mask_inserti64x4(W, U, A, B, imm) __extension__ ({ \
7921 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7922 (__v4di)(__m256i)(B), (int)(imm), \
7923 (__v8di)(__m512i)(W), \
7924 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007925
Craig Topper8c18e112016-05-17 04:41:50 +00007926#define _mm512_maskz_inserti64x4(U, A, B, imm) __extension__ ({ \
7927 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7928 (__v4di)(__m256i)(B), (int)(imm), \
7929 (__v8di)_mm512_setzero_si512(), \
7930 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007931
Craig Topper8c18e112016-05-17 04:41:50 +00007932#define _mm512_insertf32x4(A, B, imm) __extension__ ({ \
7933 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7934 (__v4sf)(__m128)(B), (int)(imm), \
7935 (__v16sf)_mm512_undefined_ps(), \
7936 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007937
Craig Topper8c18e112016-05-17 04:41:50 +00007938#define _mm512_mask_insertf32x4(W, U, A, B, imm) __extension__ ({ \
7939 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7940 (__v4sf)(__m128)(B), (int)(imm), \
7941 (__v16sf)(__m512)(W), \
7942 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007943
Craig Topper8c18e112016-05-17 04:41:50 +00007944#define _mm512_maskz_insertf32x4(U, A, B, imm) __extension__ ({ \
7945 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7946 (__v4sf)(__m128)(B), (int)(imm), \
7947 (__v16sf)_mm512_setzero_ps(), \
7948 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007949
Craig Topper8c18e112016-05-17 04:41:50 +00007950#define _mm512_inserti32x4(A, B, imm) __extension__ ({ \
7951 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7952 (__v4si)(__m128i)(B), (int)(imm), \
7953 (__v16si)_mm512_setzero_si512(), \
7954 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007955
Craig Topper8c18e112016-05-17 04:41:50 +00007956#define _mm512_mask_inserti32x4(W, U, A, B, imm) __extension__ ({ \
7957 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7958 (__v4si)(__m128i)(B), (int)(imm), \
7959 (__v16si)(__m512i)(W), \
7960 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007961
Craig Topper8c18e112016-05-17 04:41:50 +00007962#define _mm512_maskz_inserti32x4(U, A, B, imm) __extension__ ({ \
7963 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7964 (__v4si)(__m128i)(B), (int)(imm), \
7965 (__v16si)_mm512_setzero_si512(), \
7966 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007967
Craig Topper8c18e112016-05-17 04:41:50 +00007968#define _mm512_getmant_round_pd(A, B, C, R) __extension__ ({ \
7969 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7970 (int)(((C)<<2) | (B)), \
7971 (__v8df)_mm512_undefined_pd(), \
7972 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007973
Craig Topper8c18e112016-05-17 04:41:50 +00007974#define _mm512_mask_getmant_round_pd(W, U, A, B, C, R) __extension__ ({ \
7975 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7976 (int)(((C)<<2) | (B)), \
7977 (__v8df)(__m512d)(W), \
7978 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007979
Craig Topper8c18e112016-05-17 04:41:50 +00007980#define _mm512_maskz_getmant_round_pd(U, A, B, C, R) __extension__ ({ \
7981 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7982 (int)(((C)<<2) | (B)), \
7983 (__v8df)_mm512_setzero_pd(), \
7984 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007985
Craig Topper8c18e112016-05-17 04:41:50 +00007986#define _mm512_getmant_pd(A, B, C) __extension__ ({ \
7987 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7988 (int)(((C)<<2) | (B)), \
7989 (__v8df)_mm512_setzero_pd(), \
7990 (__mmask8)-1, \
7991 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007992
Craig Topper8c18e112016-05-17 04:41:50 +00007993#define _mm512_mask_getmant_pd(W, U, A, B, C) __extension__ ({ \
7994 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7995 (int)(((C)<<2) | (B)), \
7996 (__v8df)(__m512d)(W), \
7997 (__mmask8)(U), \
7998 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007999
Craig Topper8c18e112016-05-17 04:41:50 +00008000#define _mm512_maskz_getmant_pd(U, A, B, C) __extension__ ({ \
8001 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
8002 (int)(((C)<<2) | (B)), \
8003 (__v8df)_mm512_setzero_pd(), \
8004 (__mmask8)(U), \
8005 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008006
Craig Topper8c18e112016-05-17 04:41:50 +00008007#define _mm512_getmant_round_ps(A, B, C, R) __extension__ ({ \
8008 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
8009 (int)(((C)<<2) | (B)), \
8010 (__v16sf)_mm512_undefined_ps(), \
8011 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008012
Craig Topper8c18e112016-05-17 04:41:50 +00008013#define _mm512_mask_getmant_round_ps(W, U, A, B, C, R) __extension__ ({ \
8014 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
8015 (int)(((C)<<2) | (B)), \
8016 (__v16sf)(__m512)(W), \
8017 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008018
Craig Topper8c18e112016-05-17 04:41:50 +00008019#define _mm512_maskz_getmant_round_ps(U, A, B, C, R) __extension__ ({ \
8020 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
8021 (int)(((C)<<2) | (B)), \
8022 (__v16sf)_mm512_setzero_ps(), \
8023 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008024
Craig Topper8c18e112016-05-17 04:41:50 +00008025#define _mm512_getmant_ps(A, B, C) __extension__ ({ \
8026 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
8027 (int)(((C)<<2)|(B)), \
8028 (__v16sf)_mm512_undefined_ps(), \
8029 (__mmask16)-1, \
8030 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008031
Craig Topper8c18e112016-05-17 04:41:50 +00008032#define _mm512_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
8033 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
8034 (int)(((C)<<2)|(B)), \
8035 (__v16sf)(__m512)(W), \
8036 (__mmask16)(U), \
8037 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008038
Craig Topper8c18e112016-05-17 04:41:50 +00008039#define _mm512_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
8040 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
8041 (int)(((C)<<2)|(B)), \
8042 (__v16sf)_mm512_setzero_ps(), \
8043 (__mmask16)(U), \
8044 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008045
Craig Topper8c18e112016-05-17 04:41:50 +00008046#define _mm512_getexp_round_pd(A, R) __extension__ ({ \
8047 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
8048 (__v8df)_mm512_undefined_pd(), \
8049 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008050
Craig Topper8c18e112016-05-17 04:41:50 +00008051#define _mm512_mask_getexp_round_pd(W, U, A, R) __extension__ ({ \
8052 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
8053 (__v8df)(__m512d)(W), \
8054 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008055
Craig Topper8c18e112016-05-17 04:41:50 +00008056#define _mm512_maskz_getexp_round_pd(U, A, R) __extension__ ({ \
8057 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
8058 (__v8df)_mm512_setzero_pd(), \
8059 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008060
8061static __inline__ __m512d __DEFAULT_FN_ATTRS
8062_mm512_getexp_pd (__m512d __A)
8063{
8064 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
8065 (__v8df) _mm512_undefined_pd (),
8066 (__mmask8) -1,
8067 _MM_FROUND_CUR_DIRECTION);
8068}
8069
8070static __inline__ __m512d __DEFAULT_FN_ATTRS
8071_mm512_mask_getexp_pd (__m512d __W, __mmask8 __U, __m512d __A)
8072{
8073 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
8074 (__v8df) __W,
8075 (__mmask8) __U,
8076 _MM_FROUND_CUR_DIRECTION);
8077}
8078
8079static __inline__ __m512d __DEFAULT_FN_ATTRS
8080_mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A)
8081{
8082 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
8083 (__v8df) _mm512_setzero_pd (),
8084 (__mmask8) __U,
8085 _MM_FROUND_CUR_DIRECTION);
8086}
8087
Craig Topper8c18e112016-05-17 04:41:50 +00008088#define _mm512_getexp_round_ps(A, R) __extension__ ({ \
8089 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
8090 (__v16sf)_mm512_undefined_ps(), \
8091 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008092
Craig Topper8c18e112016-05-17 04:41:50 +00008093#define _mm512_mask_getexp_round_ps(W, U, A, R) __extension__ ({ \
8094 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
8095 (__v16sf)(__m512)(W), \
8096 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008097
Craig Topper8c18e112016-05-17 04:41:50 +00008098#define _mm512_maskz_getexp_round_ps(U, A, R) __extension__ ({ \
8099 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
8100 (__v16sf)_mm512_setzero_ps(), \
8101 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008102
8103static __inline__ __m512 __DEFAULT_FN_ATTRS
8104_mm512_getexp_ps (__m512 __A)
8105{
8106 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
8107 (__v16sf) _mm512_undefined_ps (),
8108 (__mmask16) -1,
8109 _MM_FROUND_CUR_DIRECTION);
8110}
8111
8112static __inline__ __m512 __DEFAULT_FN_ATTRS
8113_mm512_mask_getexp_ps (__m512 __W, __mmask16 __U, __m512 __A)
8114{
8115 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
8116 (__v16sf) __W,
8117 (__mmask16) __U,
8118 _MM_FROUND_CUR_DIRECTION);
8119}
8120
8121static __inline__ __m512 __DEFAULT_FN_ATTRS
8122_mm512_maskz_getexp_ps (__mmask16 __U, __m512 __A)
8123{
8124 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
8125 (__v16sf) _mm512_setzero_ps (),
8126 (__mmask16) __U,
8127 _MM_FROUND_CUR_DIRECTION);
8128}
8129
Craig Topper8c18e112016-05-17 04:41:50 +00008130#define _mm512_i64gather_ps(index, addr, scale) __extension__ ({ \
8131 (__m256)__builtin_ia32_gatherdiv16sf((__v8sf)_mm256_undefined_ps(), \
8132 (float const *)(addr), \
8133 (__v8di)(__m512i)(index), (__mmask8)-1, \
8134 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008135
8136#define _mm512_mask_i64gather_ps( __v1_old, __mask, __index,\
8137 __addr, __scale) __extension__({\
8138__builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,\
8139 __addr,(__v8di) __index, __mask, __scale);\
8140})
8141
Craig Topper8c18e112016-05-17 04:41:50 +00008142#define _mm512_i64gather_epi32(index, addr, scale) __extension__ ({\
8143 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)_mm256_undefined_ps(), \
8144 (int const *)(addr), \
8145 (__v8di)(__m512i)(index), \
8146 (__mmask8)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008147
Craig Topper8c18e112016-05-17 04:41:50 +00008148#define _mm512_mask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8149 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)(__m256i)(v1_old), \
8150 (int const *)(addr), \
8151 (__v8di)(__m512i)(index), \
8152 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008153
Craig Topper8c18e112016-05-17 04:41:50 +00008154#define _mm512_i64gather_pd(index, addr, scale) __extension__ ({\
8155 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)_mm512_undefined_pd(), \
8156 (double const *)(addr), \
8157 (__v8di)(__m512i)(index), (__mmask8)-1, \
8158 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008159
Craig Topper8c18e112016-05-17 04:41:50 +00008160#define _mm512_mask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8161 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)(__m512d)(v1_old), \
8162 (double const *)(addr), \
8163 (__v8di)(__m512i)(index), \
8164 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008165
Craig Topper8c18e112016-05-17 04:41:50 +00008166#define _mm512_i64gather_epi64(index, addr, scale) __extension__ ({\
8167 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)_mm512_undefined_pd(), \
8168 (long long const *)(addr), \
8169 (__v8di)(__m512i)(index), (__mmask8)-1, \
8170 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008171
Craig Topper8c18e112016-05-17 04:41:50 +00008172#define _mm512_mask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8173 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)(__m512i)(v1_old), \
8174 (long long const *)(addr), \
8175 (__v8di)(__m512i)(index), \
8176 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008177
Craig Topper8c18e112016-05-17 04:41:50 +00008178#define _mm512_i32gather_ps(index, addr, scale) __extension__ ({\
8179 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)_mm512_undefined_ps(), \
8180 (float const *)(addr), \
8181 (__v16sf)(__m512)(index), \
8182 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008183
Craig Topper8c18e112016-05-17 04:41:50 +00008184#define _mm512_mask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8185 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)(__m512)(v1_old), \
8186 (float const *)(addr), \
8187 (__v16sf)(__m512)(index), \
8188 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008189
Craig Topper8c18e112016-05-17 04:41:50 +00008190#define _mm512_i32gather_epi32(index, addr, scale) __extension__ ({\
8191 (__m512i)__builtin_ia32_gathersiv16si((__v16si)_mm512_undefined_epi32(), \
8192 (int const *)(addr), \
8193 (__v16si)(__m512i)(index), \
8194 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008195
Craig Topper8c18e112016-05-17 04:41:50 +00008196#define _mm512_mask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8197 (__m512i)__builtin_ia32_gathersiv16si((__v16si)(__m512i)(v1_old), \
8198 (int const *)(addr), \
8199 (__v16si)(__m512i)(index), \
8200 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008201
Craig Topper8c18e112016-05-17 04:41:50 +00008202#define _mm512_i32gather_pd(index, addr, scale) __extension__ ({\
8203 (__m512d)__builtin_ia32_gathersiv8df((__v8df)_mm512_undefined_pd(), \
8204 (double const *)(addr), \
8205 (__v8si)(__m256i)(index), (__mmask8)-1, \
8206 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008207
Craig Topper8c18e112016-05-17 04:41:50 +00008208#define _mm512_mask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8209 (__m512d)__builtin_ia32_gathersiv8df((__v8df)(__m512d)(v1_old), \
8210 (double const *)(addr), \
8211 (__v8si)(__m256i)(index), \
8212 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008213
Craig Topper8c18e112016-05-17 04:41:50 +00008214#define _mm512_i32gather_epi64(index, addr, scale) __extension__ ({\
8215 (__m512i)__builtin_ia32_gathersiv8di((__v8di)_mm512_undefined_epi32(), \
8216 (long long const *)(addr), \
8217 (__v8si)(__m256i)(index), (__mmask8)-1, \
8218 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008219
Craig Topper8c18e112016-05-17 04:41:50 +00008220#define _mm512_mask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8221 (__m512i)__builtin_ia32_gathersiv8di((__v8di)(__m512i)(v1_old), \
8222 (long long const *)(addr), \
8223 (__v8si)(__m256i)(index), \
8224 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008225
Craig Topper8c18e112016-05-17 04:41:50 +00008226#define _mm512_i64scatter_ps(addr, index, v1, scale) __extension__ ({\
8227 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)-1, \
8228 (__v8di)(__m512i)(index), \
8229 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008230
Craig Topper8c18e112016-05-17 04:41:50 +00008231#define _mm512_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
8232 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)(mask), \
8233 (__v8di)(__m512i)(index), \
8234 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008235
Craig Topper8c18e112016-05-17 04:41:50 +00008236#define _mm512_i64scatter_epi32(addr, index, v1, scale) __extension__ ({\
8237 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)-1, \
8238 (__v8di)(__m512i)(index), \
8239 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008240
Craig Topper8c18e112016-05-17 04:41:50 +00008241#define _mm512_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
8242 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)(mask), \
8243 (__v8di)(__m512i)(index), \
8244 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008245
Craig Topper8c18e112016-05-17 04:41:50 +00008246#define _mm512_i64scatter_pd(addr, index, v1, scale) __extension__ ({\
8247 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)-1, \
8248 (__v8di)(__m512i)(index), \
8249 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008250
Craig Topper8c18e112016-05-17 04:41:50 +00008251#define _mm512_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
8252 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)(mask), \
8253 (__v8di)(__m512i)(index), \
8254 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008255
Craig Topper8c18e112016-05-17 04:41:50 +00008256#define _mm512_i64scatter_epi64(addr, index, v1, scale) __extension__ ({\
8257 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)-1, \
8258 (__v8di)(__m512i)(index), \
8259 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008260
Craig Topper8c18e112016-05-17 04:41:50 +00008261#define _mm512_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
8262 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)(mask), \
8263 (__v8di)(__m512i)(index), \
8264 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008265
Craig Topper8c18e112016-05-17 04:41:50 +00008266#define _mm512_i32scatter_ps(addr, index, v1, scale) __extension__ ({\
8267 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)-1, \
8268 (__v16si)(__m512i)(index), \
8269 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008270
Craig Topper8c18e112016-05-17 04:41:50 +00008271#define _mm512_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
8272 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)(mask), \
8273 (__v16si)(__m512i)(index), \
8274 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008275
Craig Topper8c18e112016-05-17 04:41:50 +00008276#define _mm512_i32scatter_epi32(addr, index, v1, scale) __extension__ ({\
8277 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)-1, \
8278 (__v16si)(__m512i)(index), \
8279 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008280
Craig Topper8c18e112016-05-17 04:41:50 +00008281#define _mm512_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
8282 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)(mask), \
8283 (__v16si)(__m512i)(index), \
8284 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008285
Craig Topper8c18e112016-05-17 04:41:50 +00008286#define _mm512_i32scatter_pd(addr, index, v1, scale) __extension__ ({\
8287 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)-1, \
8288 (__v8si)(__m256i)(index), \
8289 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008290
Craig Topper8c18e112016-05-17 04:41:50 +00008291#define _mm512_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
8292 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)(mask), \
8293 (__v8si)(__m256i)(index), \
8294 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008295
Craig Topper8c18e112016-05-17 04:41:50 +00008296#define _mm512_i32scatter_epi64(addr, index, v1, scale) __extension__ ({\
8297 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)-1, \
8298 (__v8si)(__m256i)(index), \
8299 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008300
Craig Topper8c18e112016-05-17 04:41:50 +00008301#define _mm512_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
8302 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)(mask), \
8303 (__v8si)(__m256i)(index), \
8304 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008305
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008306static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008307_mm_mask_fmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008308{
8309 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
8310 (__v4sf) __B,
8311 (__v4sf) __W,
8312 (__mmask8) __U,
8313 _MM_FROUND_CUR_DIRECTION);
8314}
8315
Craig Topper8c18e112016-05-17 04:41:50 +00008316#define _mm_mask_fmadd_round_ss(W, U, A, B, R) __extension__({\
8317 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
8318 (__v4sf)(__m128)(B), \
8319 (__v4sf)(__m128)(W), (__mmask8)(U), \
8320 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008321
8322static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008323_mm_maskz_fmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008324{
8325 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
8326 (__v4sf) __B,
8327 (__v4sf) __C,
8328 (__mmask8) __U,
8329 _MM_FROUND_CUR_DIRECTION);
8330}
8331
Craig Topper8c18e112016-05-17 04:41:50 +00008332#define _mm_maskz_fmadd_round_ss(U, A, B, C, R) __extension__ ({\
8333 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
8334 (__v4sf)(__m128)(B), \
8335 (__v4sf)(__m128)(C), (__mmask8)(U), \
8336 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008337
8338static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008339_mm_mask3_fmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008340{
8341 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
8342 (__v4sf) __X,
8343 (__v4sf) __Y,
8344 (__mmask8) __U,
8345 _MM_FROUND_CUR_DIRECTION);
8346}
8347
Craig Topper8c18e112016-05-17 04:41:50 +00008348#define _mm_mask3_fmadd_round_ss(W, X, Y, U, R) __extension__ ({\
8349 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
8350 (__v4sf)(__m128)(X), \
8351 (__v4sf)(__m128)(Y), (__mmask8)(U), \
8352 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008353
8354static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008355_mm_mask_fmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008356{
8357 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008358 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008359 (__v4sf) __W,
8360 (__mmask8) __U,
8361 _MM_FROUND_CUR_DIRECTION);
8362}
8363
Craig Topper8c18e112016-05-17 04:41:50 +00008364#define _mm_mask_fmsub_round_ss(W, U, A, B, R) __extension__ ({\
8365 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
8366 -(__v4sf)(__m128)(B), \
8367 (__v4sf)(__m128)(W), (__mmask8)(U), \
8368 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008369
8370static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008371_mm_maskz_fmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008372{
8373 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
8374 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008375 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008376 (__mmask8) __U,
8377 _MM_FROUND_CUR_DIRECTION);
8378}
8379
Craig Topper8c18e112016-05-17 04:41:50 +00008380#define _mm_maskz_fmsub_round_ss(U, A, B, C, R) __extension__ ({\
8381 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
8382 (__v4sf)(__m128)(B), \
8383 -(__v4sf)(__m128)(C), (__mmask8)(U), \
8384 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008385
8386static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008387_mm_mask3_fmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008388{
8389 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
8390 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008391 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008392 (__mmask8) __U,
8393 _MM_FROUND_CUR_DIRECTION);
8394}
8395
Craig Topper8c18e112016-05-17 04:41:50 +00008396#define _mm_mask3_fmsub_round_ss(W, X, Y, U, R) __extension__ ({\
8397 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
8398 (__v4sf)(__m128)(X), \
8399 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
8400 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008401
8402static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008403_mm_mask_fnmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008404{
Craig Topper9864c592016-05-15 20:10:03 +00008405 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008406 (__v4sf) __B,
8407 (__v4sf) __W,
8408 (__mmask8) __U,
8409 _MM_FROUND_CUR_DIRECTION);
8410}
8411
Craig Topper8c18e112016-05-17 04:41:50 +00008412#define _mm_mask_fnmadd_round_ss(W, U, A, B, R) __extension__ ({\
8413 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
8414 (__v4sf)(__m128)(B), \
8415 (__v4sf)(__m128)(W), (__mmask8)(U), \
8416 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008417
8418static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008419_mm_maskz_fnmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008420{
Craig Topper9864c592016-05-15 20:10:03 +00008421 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008422 (__v4sf) __B,
8423 (__v4sf) __C,
8424 (__mmask8) __U,
8425 _MM_FROUND_CUR_DIRECTION);
8426}
8427
Craig Topper8c18e112016-05-17 04:41:50 +00008428#define _mm_maskz_fnmadd_round_ss(U, A, B, C, R) __extension__ ({\
8429 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
8430 (__v4sf)(__m128)(B), \
8431 (__v4sf)(__m128)(C), (__mmask8)(U), \
8432 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008433
8434static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008435_mm_mask3_fnmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008436{
Craig Topper9864c592016-05-15 20:10:03 +00008437 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008438 (__v4sf) __X,
8439 (__v4sf) __Y,
8440 (__mmask8) __U,
8441 _MM_FROUND_CUR_DIRECTION);
8442}
8443
Craig Topper8c18e112016-05-17 04:41:50 +00008444#define _mm_mask3_fnmadd_round_ss(W, X, Y, U, R) __extension__({\
8445 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8446 (__v4sf)(__m128)(X), \
8447 (__v4sf)(__m128)(Y), (__mmask8)(U), \
8448 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008449
8450static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008451_mm_mask_fnmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008452{
Craig Topper9864c592016-05-15 20:10:03 +00008453 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
8454 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008455 (__v4sf) __W,
8456 (__mmask8) __U,
8457 _MM_FROUND_CUR_DIRECTION);
8458}
8459
Craig Topper8c18e112016-05-17 04:41:50 +00008460#define _mm_mask_fnmsub_round_ss(W, U, A, B, R) __extension__ ({\
8461 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
8462 -(__v4sf)(__m128)(B), \
8463 (__v4sf)(__m128)(W), (__mmask8)(U), \
8464 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008465
8466static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008467_mm_maskz_fnmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008468{
Craig Topper9864c592016-05-15 20:10:03 +00008469 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008470 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008471 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008472 (__mmask8) __U,
8473 _MM_FROUND_CUR_DIRECTION);
8474}
8475
Craig Topper8c18e112016-05-17 04:41:50 +00008476#define _mm_maskz_fnmsub_round_ss(U, A, B, C, R) __extension__ ({\
8477 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
8478 (__v4sf)(__m128)(B), \
8479 -(__v4sf)(__m128)(C), (__mmask8)(U), \
8480 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008481
8482static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008483_mm_mask3_fnmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008484{
Craig Topper9864c592016-05-15 20:10:03 +00008485 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008486 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008487 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008488 (__mmask8) __U,
8489 _MM_FROUND_CUR_DIRECTION);
8490}
8491
Craig Topper8c18e112016-05-17 04:41:50 +00008492#define _mm_mask3_fnmsub_round_ss(W, X, Y, U, R) __extension__({\
8493 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8494 (__v4sf)(__m128)(X), \
8495 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
8496 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008497
Craig Topper58187d32016-05-17 04:41:29 +00008498static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008499_mm_mask_fmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008500{
Craig Topper58187d32016-05-17 04:41:29 +00008501 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008502 (__v2df) __B,
8503 (__v2df) __W,
8504 (__mmask8) __U,
8505 _MM_FROUND_CUR_DIRECTION);
8506}
8507
Craig Topper8c18e112016-05-17 04:41:50 +00008508#define _mm_mask_fmadd_round_sd(W, U, A, B, R) __extension__({\
8509 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8510 (__v2df)(__m128d)(B), \
8511 (__v2df)(__m128d)(W), (__mmask8)(U), \
8512 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008513
Craig Topper58187d32016-05-17 04:41:29 +00008514static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008515_mm_maskz_fmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008516{
Craig Topper58187d32016-05-17 04:41:29 +00008517 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008518 (__v2df) __B,
8519 (__v2df) __C,
8520 (__mmask8) __U,
8521 _MM_FROUND_CUR_DIRECTION);
8522}
8523
Craig Topper8c18e112016-05-17 04:41:50 +00008524#define _mm_maskz_fmadd_round_sd(U, A, B, C, R) __extension__ ({\
8525 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8526 (__v2df)(__m128d)(B), \
8527 (__v2df)(__m128d)(C), (__mmask8)(U), \
8528 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008529
Craig Topper58187d32016-05-17 04:41:29 +00008530static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008531_mm_mask3_fmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008532{
Craig Topper58187d32016-05-17 04:41:29 +00008533 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008534 (__v2df) __X,
8535 (__v2df) __Y,
8536 (__mmask8) __U,
8537 _MM_FROUND_CUR_DIRECTION);
8538}
8539
Craig Topper8c18e112016-05-17 04:41:50 +00008540#define _mm_mask3_fmadd_round_sd(W, X, Y, U, R) __extension__ ({\
8541 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8542 (__v2df)(__m128d)(X), \
8543 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8544 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008545
Craig Topper58187d32016-05-17 04:41:29 +00008546static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008547_mm_mask_fmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008548{
Craig Topper58187d32016-05-17 04:41:29 +00008549 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008550 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008551 (__v2df) __W,
8552 (__mmask8) __U,
8553 _MM_FROUND_CUR_DIRECTION);
8554}
8555
Craig Topper8c18e112016-05-17 04:41:50 +00008556#define _mm_mask_fmsub_round_sd(W, U, A, B, R) __extension__ ({\
8557 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8558 -(__v2df)(__m128d)(B), \
8559 (__v2df)(__m128d)(W), (__mmask8)(U), \
8560 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008561
Craig Topper58187d32016-05-17 04:41:29 +00008562static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008563_mm_maskz_fmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008564{
Craig Topper58187d32016-05-17 04:41:29 +00008565 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008566 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008567 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008568 (__mmask8) __U,
8569 _MM_FROUND_CUR_DIRECTION);
8570}
8571
Craig Topper8c18e112016-05-17 04:41:50 +00008572#define _mm_maskz_fmsub_round_sd(U, A, B, C, R) __extension__ ({\
8573 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8574 (__v2df)(__m128d)(B), \
8575 -(__v2df)(__m128d)(C), \
8576 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008577
Craig Topper58187d32016-05-17 04:41:29 +00008578static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008579_mm_mask3_fmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008580{
Craig Topper58187d32016-05-17 04:41:29 +00008581 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008582 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008583 -(__v2df) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008584 (__mmask8) __U,
8585 _MM_FROUND_CUR_DIRECTION);
8586}
8587
Craig Topper8c18e112016-05-17 04:41:50 +00008588#define _mm_mask3_fmsub_round_sd(W, X, Y, U, R) __extension__ ({\
8589 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8590 (__v2df)(__m128d)(X), \
8591 -(__v2df)(__m128d)(Y), \
8592 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008593
Craig Topper58187d32016-05-17 04:41:29 +00008594static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008595_mm_mask_fnmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008596{
Craig Topper58187d32016-05-17 04:41:29 +00008597 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008598 (__v2df) __B,
8599 (__v2df) __W,
8600 (__mmask8) __U,
8601 _MM_FROUND_CUR_DIRECTION);
8602}
8603
Craig Topper8c18e112016-05-17 04:41:50 +00008604#define _mm_mask_fnmadd_round_sd(W, U, A, B, R) __extension__ ({\
8605 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8606 (__v2df)(__m128d)(B), \
8607 (__v2df)(__m128d)(W), (__mmask8)(U), \
8608 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008609
Craig Topper58187d32016-05-17 04:41:29 +00008610static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008611_mm_maskz_fnmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008612{
Craig Topper58187d32016-05-17 04:41:29 +00008613 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008614 (__v2df) __B,
8615 (__v2df) __C,
8616 (__mmask8) __U,
8617 _MM_FROUND_CUR_DIRECTION);
8618}
8619
Craig Topper8c18e112016-05-17 04:41:50 +00008620#define _mm_maskz_fnmadd_round_sd(U, A, B, C, R) __extension__ ({\
8621 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8622 (__v2df)(__m128d)(B), \
8623 (__v2df)(__m128d)(C), (__mmask8)(U), \
8624 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008625
Craig Topper58187d32016-05-17 04:41:29 +00008626static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008627_mm_mask3_fnmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008628{
Craig Topper58187d32016-05-17 04:41:29 +00008629 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008630 (__v2df) __X,
8631 (__v2df) __Y,
8632 (__mmask8) __U,
8633 _MM_FROUND_CUR_DIRECTION);
8634}
8635
Craig Topper8c18e112016-05-17 04:41:50 +00008636#define _mm_mask3_fnmadd_round_sd(W, X, Y, U, R) __extension__({\
8637 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8638 (__v2df)(__m128d)(X), \
8639 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8640 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008641
Craig Topper58187d32016-05-17 04:41:29 +00008642static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008643_mm_mask_fnmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008644{
Craig Topper58187d32016-05-17 04:41:29 +00008645 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008646 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008647 (__v2df) __W,
8648 (__mmask8) __U,
8649 _MM_FROUND_CUR_DIRECTION);
8650}
8651
Craig Topper8c18e112016-05-17 04:41:50 +00008652#define _mm_mask_fnmsub_round_sd(W, U, A, B, R) __extension__ ({\
8653 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8654 -(__v2df)(__m128d)(B), \
8655 (__v2df)(__m128d)(W), (__mmask8)(U), \
8656 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008657
Craig Topper58187d32016-05-17 04:41:29 +00008658static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008659_mm_maskz_fnmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008660{
Craig Topper58187d32016-05-17 04:41:29 +00008661 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008662 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008663 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008664 (__mmask8) __U,
8665 _MM_FROUND_CUR_DIRECTION);
8666}
8667
Craig Topper8c18e112016-05-17 04:41:50 +00008668#define _mm_maskz_fnmsub_round_sd(U, A, B, C, R) __extension__ ({\
8669 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8670 (__v2df)(__m128d)(B), \
8671 -(__v2df)(__m128d)(C), \
8672 (__mmask8)(U), \
8673 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008674
Craig Topper58187d32016-05-17 04:41:29 +00008675static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008676_mm_mask3_fnmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008677{
Craig Topper58187d32016-05-17 04:41:29 +00008678 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) (__W),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008679 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008680 -(__v2df) (__Y),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008681 (__mmask8) __U,
8682 _MM_FROUND_CUR_DIRECTION);
8683}
8684
Craig Topper8c18e112016-05-17 04:41:50 +00008685#define _mm_mask3_fnmsub_round_sd(W, X, Y, U, R) __extension__({\
8686 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8687 (__v2df)(__m128d)(X), \
8688 -(__v2df)(__m128d)(Y), \
8689 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008690
Simon Pilgrim30db8112016-07-04 13:34:44 +00008691#define _mm512_permutex_pd(X, C) __extension__ ({ \
8692 (__m512d)__builtin_shufflevector((__v8df)(__m512d)(X), \
8693 (__v8df)_mm512_undefined_pd(), \
Craig Topper2a383c92016-07-04 22:18:01 +00008694 0 + (((C) >> 0) & 0x3), \
8695 0 + (((C) >> 2) & 0x3), \
8696 0 + (((C) >> 4) & 0x3), \
8697 0 + (((C) >> 6) & 0x3), \
8698 4 + (((C) >> 0) & 0x3), \
8699 4 + (((C) >> 2) & 0x3), \
8700 4 + (((C) >> 4) & 0x3), \
8701 4 + (((C) >> 6) & 0x3)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008702
Simon Pilgrim30db8112016-07-04 13:34:44 +00008703#define _mm512_mask_permutex_pd(W, U, X, C) __extension__ ({ \
8704 (__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
8705 (__v8df)_mm512_permutex_pd((X), (C)), \
8706 (__v8df)(__m512d)(W)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008707
Simon Pilgrim30db8112016-07-04 13:34:44 +00008708#define _mm512_maskz_permutex_pd(U, X, C) __extension__ ({ \
8709 (__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
8710 (__v8df)_mm512_permutex_pd((X), (C)), \
8711 (__v8df)_mm512_setzero_pd()); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008712
Simon Pilgrim30db8112016-07-04 13:34:44 +00008713#define _mm512_permutex_epi64(X, C) __extension__ ({ \
8714 (__m512i)__builtin_shufflevector((__v8di)(__m512i)(X), \
8715 (__v8di)_mm512_undefined_epi32(), \
Craig Topper2a383c92016-07-04 22:18:01 +00008716 0 + (((C) >> 0) & 0x3), \
8717 0 + (((C) >> 2) & 0x3), \
8718 0 + (((C) >> 4) & 0x3), \
8719 0 + (((C) >> 6) & 0x3), \
8720 4 + (((C) >> 0) & 0x3), \
8721 4 + (((C) >> 2) & 0x3), \
8722 4 + (((C) >> 4) & 0x3), \
8723 4 + (((C) >> 6) & 0x3)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008724
Simon Pilgrim30db8112016-07-04 13:34:44 +00008725#define _mm512_mask_permutex_epi64(W, U, X, C) __extension__ ({ \
8726 (__m512i)__builtin_ia32_selectq_512((__mmask8)(U), \
8727 (__v8di)_mm512_permutex_epi64((X), (C)), \
8728 (__v8di)(__m512i)(W)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008729
Simon Pilgrim30db8112016-07-04 13:34:44 +00008730#define _mm512_maskz_permutex_epi64(U, X, C) __extension__ ({ \
8731 (__m512i)__builtin_ia32_selectq_512((__mmask8)(U), \
8732 (__v8di)_mm512_permutex_epi64((X), (C)), \
8733 (__v8di)_mm512_setzero_si512()); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008734
8735static __inline__ __m512d __DEFAULT_FN_ATTRS
8736_mm512_permutexvar_pd (__m512i __X, __m512d __Y)
8737{
8738 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8739 (__v8di) __X,
8740 (__v8df) _mm512_undefined_pd (),
8741 (__mmask8) -1);
8742}
8743
8744static __inline__ __m512d __DEFAULT_FN_ATTRS
8745_mm512_mask_permutexvar_pd (__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y)
8746{
8747 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8748 (__v8di) __X,
8749 (__v8df) __W,
8750 (__mmask8) __U);
8751}
8752
8753static __inline__ __m512d __DEFAULT_FN_ATTRS
8754_mm512_maskz_permutexvar_pd (__mmask8 __U, __m512i __X, __m512d __Y)
8755{
8756 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8757 (__v8di) __X,
8758 (__v8df) _mm512_setzero_pd (),
8759 (__mmask8) __U);
8760}
8761
8762static __inline__ __m512i __DEFAULT_FN_ATTRS
8763_mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y)
8764{
8765 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8766 (__v8di) __X,
8767 (__v8di) _mm512_setzero_si512 (),
8768 __M);
8769}
8770
8771static __inline__ __m512i __DEFAULT_FN_ATTRS
8772_mm512_permutexvar_epi64 (__m512i __X, __m512i __Y)
8773{
8774 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8775 (__v8di) __X,
8776 (__v8di) _mm512_undefined_epi32 (),
8777 (__mmask8) -1);
8778}
8779
8780static __inline__ __m512i __DEFAULT_FN_ATTRS
8781_mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X,
8782 __m512i __Y)
8783{
8784 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8785 (__v8di) __X,
8786 (__v8di) __W,
8787 __M);
8788}
8789
8790static __inline__ __m512 __DEFAULT_FN_ATTRS
8791_mm512_permutexvar_ps (__m512i __X, __m512 __Y)
8792{
8793 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8794 (__v16si) __X,
8795 (__v16sf) _mm512_undefined_ps (),
8796 (__mmask16) -1);
8797}
8798
8799static __inline__ __m512 __DEFAULT_FN_ATTRS
8800_mm512_mask_permutexvar_ps (__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y)
8801{
8802 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8803 (__v16si) __X,
8804 (__v16sf) __W,
8805 (__mmask16) __U);
8806}
8807
8808static __inline__ __m512 __DEFAULT_FN_ATTRS
8809_mm512_maskz_permutexvar_ps (__mmask16 __U, __m512i __X, __m512 __Y)
8810{
8811 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8812 (__v16si) __X,
8813 (__v16sf) _mm512_setzero_ps (),
8814 (__mmask16) __U);
8815}
8816
8817static __inline__ __m512i __DEFAULT_FN_ATTRS
8818_mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y)
8819{
8820 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8821 (__v16si) __X,
8822 (__v16si) _mm512_setzero_si512 (),
8823 __M);
8824}
8825
8826static __inline__ __m512i __DEFAULT_FN_ATTRS
8827_mm512_permutexvar_epi32 (__m512i __X, __m512i __Y)
8828{
8829 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8830 (__v16si) __X,
8831 (__v16si) _mm512_undefined_epi32 (),
8832 (__mmask16) -1);
8833}
8834
8835static __inline__ __m512i __DEFAULT_FN_ATTRS
8836_mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X,
8837 __m512i __Y)
8838{
8839 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8840 (__v16si) __X,
8841 (__v16si) __W,
8842 __M);
8843}
8844
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008845static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8846_mm512_kand (__mmask16 __A, __mmask16 __B)
8847{
8848 return (__mmask16) __builtin_ia32_kandhi ((__mmask16) __A, (__mmask16) __B);
8849}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008850
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008851static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8852_mm512_kandn (__mmask16 __A, __mmask16 __B)
8853{
8854 return (__mmask16) __builtin_ia32_kandnhi ((__mmask16) __A, (__mmask16) __B);
8855}
8856
8857static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8858_mm512_kor (__mmask16 __A, __mmask16 __B)
8859{
8860 return (__mmask16) __builtin_ia32_korhi ((__mmask16) __A, (__mmask16) __B);
8861}
8862
8863static __inline__ int __DEFAULT_FN_ATTRS
8864_mm512_kortestc (__mmask16 __A, __mmask16 __B)
8865{
Craig Topper91f23d92016-05-16 01:09:16 +00008866 return __builtin_ia32_kortestchi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008867}
8868
8869static __inline__ int __DEFAULT_FN_ATTRS
8870_mm512_kortestz (__mmask16 __A, __mmask16 __B)
8871{
Craig Topper91f23d92016-05-16 01:09:16 +00008872 return __builtin_ia32_kortestzhi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008873}
8874
8875static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8876_mm512_kunpackb (__mmask16 __A, __mmask16 __B)
8877{
8878 return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B);
8879}
8880
8881static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8882_mm512_kxnor (__mmask16 __A, __mmask16 __B)
8883{
8884 return (__mmask16) __builtin_ia32_kxnorhi ((__mmask16) __A, (__mmask16) __B);
8885}
8886
8887static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8888_mm512_kxor (__mmask16 __A, __mmask16 __B)
8889{
8890 return (__mmask16) __builtin_ia32_kxorhi ((__mmask16) __A, (__mmask16) __B);
8891}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008892
Michael Zuckerman7c85a8c2016-04-27 10:44:15 +00008893static __inline__ void __DEFAULT_FN_ATTRS
8894_mm512_stream_si512 (__m512i * __P, __m512i __A)
8895{
Simon Pilgrimbeca5f22016-06-13 09:57:52 +00008896 __builtin_nontemporal_store((__v8di)__A, (__v8di*)__P);
Michael Zuckerman7c85a8c2016-04-27 10:44:15 +00008897}
8898
8899static __inline__ __m512i __DEFAULT_FN_ATTRS
8900_mm512_stream_load_si512 (void *__P)
8901{
8902 return __builtin_ia32_movntdqa512 ((__v8di *)__P);
8903}
8904
8905static __inline__ void __DEFAULT_FN_ATTRS
8906_mm512_stream_pd (double *__P, __m512d __A)
8907{
Simon Pilgrimbeca5f22016-06-13 09:57:52 +00008908 __builtin_nontemporal_store((__v8df)__A, (__v8df*)__P);
Michael Zuckerman7c85a8c2016-04-27 10:44:15 +00008909}
8910
8911static __inline__ void __DEFAULT_FN_ATTRS
8912_mm512_stream_ps (float *__P, __m512 __A)
8913{
Simon Pilgrimbeca5f22016-06-13 09:57:52 +00008914 __builtin_nontemporal_store((__v16sf)__A, (__v16sf*)__P);
Michael Zuckerman7c85a8c2016-04-27 10:44:15 +00008915}
8916
Michael Zuckerman41f5a372016-04-29 08:52:02 +00008917static __inline__ __m512d __DEFAULT_FN_ATTRS
8918_mm512_mask_compress_pd (__m512d __W, __mmask8 __U, __m512d __A)
8919{
8920 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8921 (__v8df) __W,
8922 (__mmask8) __U);
8923}
8924
8925static __inline__ __m512d __DEFAULT_FN_ATTRS
8926_mm512_maskz_compress_pd (__mmask8 __U, __m512d __A)
8927{
8928 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8929 (__v8df)
8930 _mm512_setzero_pd (),
8931 (__mmask8) __U);
8932}
8933
8934static __inline__ __m512i __DEFAULT_FN_ATTRS
8935_mm512_mask_compress_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8936{
8937 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8938 (__v8di) __W,
8939 (__mmask8) __U);
8940}
8941
8942static __inline__ __m512i __DEFAULT_FN_ATTRS
8943_mm512_maskz_compress_epi64 (__mmask8 __U, __m512i __A)
8944{
8945 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8946 (__v8di)
8947 _mm512_setzero_si512 (),
8948 (__mmask8) __U);
8949}
8950
8951static __inline__ __m512 __DEFAULT_FN_ATTRS
8952_mm512_mask_compress_ps (__m512 __W, __mmask16 __U, __m512 __A)
8953{
8954 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8955 (__v16sf) __W,
8956 (__mmask16) __U);
8957}
8958
8959static __inline__ __m512 __DEFAULT_FN_ATTRS
8960_mm512_maskz_compress_ps (__mmask16 __U, __m512 __A)
8961{
8962 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8963 (__v16sf)
8964 _mm512_setzero_ps (),
8965 (__mmask16) __U);
8966}
8967
8968static __inline__ __m512i __DEFAULT_FN_ATTRS
8969_mm512_mask_compress_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8970{
8971 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8972 (__v16si) __W,
8973 (__mmask16) __U);
8974}
8975
8976static __inline__ __m512i __DEFAULT_FN_ATTRS
8977_mm512_maskz_compress_epi32 (__mmask16 __U, __m512i __A)
8978{
8979 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8980 (__v16si)
8981 _mm512_setzero_si512 (),
8982 (__mmask16) __U);
8983}
8984
Craig Topper8c18e112016-05-17 04:41:50 +00008985#define _mm_cmp_round_ss_mask(X, Y, P, R) __extension__ ({ \
8986 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8987 (__v4sf)(__m128)(Y), (int)(P), \
8988 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008989
Craig Topper8c18e112016-05-17 04:41:50 +00008990#define _mm_mask_cmp_round_ss_mask(M, X, Y, P, R) __extension__ ({ \
8991 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8992 (__v4sf)(__m128)(Y), (int)(P), \
8993 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008994
Craig Topper8c18e112016-05-17 04:41:50 +00008995#define _mm_cmp_ss_mask(X, Y, P) __extension__ ({ \
8996 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8997 (__v4sf)(__m128)(Y), (int)(P), \
8998 (__mmask8)-1, \
8999 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00009000
Craig Topper8c18e112016-05-17 04:41:50 +00009001#define _mm_mask_cmp_ss_mask(M, X, Y, P) __extension__ ({ \
9002 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
9003 (__v4sf)(__m128)(Y), (int)(P), \
9004 (__mmask8)(M), \
9005 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00009006
Craig Topper8c18e112016-05-17 04:41:50 +00009007#define _mm_cmp_round_sd_mask(X, Y, P, R) __extension__ ({ \
9008 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
9009 (__v2df)(__m128d)(Y), (int)(P), \
9010 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00009011
Craig Topper8c18e112016-05-17 04:41:50 +00009012#define _mm_mask_cmp_round_sd_mask(M, X, Y, P, R) __extension__ ({ \
9013 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
9014 (__v2df)(__m128d)(Y), (int)(P), \
9015 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00009016
Craig Topper8c18e112016-05-17 04:41:50 +00009017#define _mm_cmp_sd_mask(X, Y, P) __extension__ ({ \
9018 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
9019 (__v2df)(__m128d)(Y), (int)(P), \
9020 (__mmask8)-1, \
9021 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00009022
Craig Topper8c18e112016-05-17 04:41:50 +00009023#define _mm_mask_cmp_sd_mask(M, X, Y, P) __extension__ ({ \
9024 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
9025 (__v2df)(__m128d)(Y), (int)(P), \
9026 (__mmask8)(M), \
9027 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00009028
Michael Zuckermanac1e5192016-05-01 14:43:43 +00009029static __inline__ __m512 __DEFAULT_FN_ATTRS
9030_mm512_movehdup_ps (__m512 __A)
9031{
Simon Pilgrim275d7212016-07-02 17:16:25 +00009032 return (__m512)__builtin_shufflevector((__v16sf)__A, (__v16sf)__A,
9033 1, 1, 3, 3, 5, 5, 7, 7, 9, 9, 11, 11, 13, 13, 15, 15);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00009034}
9035
9036static __inline__ __m512 __DEFAULT_FN_ATTRS
9037_mm512_mask_movehdup_ps (__m512 __W, __mmask16 __U, __m512 __A)
9038{
Simon Pilgrim275d7212016-07-02 17:16:25 +00009039 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
9040 (__v16sf)_mm512_movehdup_ps(__A),
9041 (__v16sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00009042}
9043
9044static __inline__ __m512 __DEFAULT_FN_ATTRS
9045_mm512_maskz_movehdup_ps (__mmask16 __U, __m512 __A)
9046{
Simon Pilgrim275d7212016-07-02 17:16:25 +00009047 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
9048 (__v16sf)_mm512_movehdup_ps(__A),
9049 (__v16sf)_mm512_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00009050}
9051
9052static __inline__ __m512 __DEFAULT_FN_ATTRS
9053_mm512_moveldup_ps (__m512 __A)
9054{
Simon Pilgrim275d7212016-07-02 17:16:25 +00009055 return (__m512)__builtin_shufflevector((__v16sf)__A, (__v16sf)__A,
9056 0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00009057}
9058
9059static __inline__ __m512 __DEFAULT_FN_ATTRS
9060_mm512_mask_moveldup_ps (__m512 __W, __mmask16 __U, __m512 __A)
9061{
Simon Pilgrim275d7212016-07-02 17:16:25 +00009062 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
9063 (__v16sf)_mm512_moveldup_ps(__A),
9064 (__v16sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00009065}
9066
9067static __inline__ __m512 __DEFAULT_FN_ATTRS
9068_mm512_maskz_moveldup_ps (__mmask16 __U, __m512 __A)
9069{
Simon Pilgrim275d7212016-07-02 17:16:25 +00009070 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
9071 (__v16sf)_mm512_moveldup_ps(__A),
9072 (__v16sf)_mm512_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00009073}
9074
Craig Topper8c18e112016-05-17 04:41:50 +00009075#define _mm512_shuffle_epi32(A, I) __extension__ ({ \
Craig Topper7cc92632016-06-11 12:50:19 +00009076 (__m512i)__builtin_shufflevector((__v16si)(__m512i)(A), \
Craig Topper2a383c92016-07-04 22:18:01 +00009077 (__v16si)_mm512_undefined_epi32(), \
9078 0 + (((I) >> 0) & 0x3), \
9079 0 + (((I) >> 2) & 0x3), \
9080 0 + (((I) >> 4) & 0x3), \
9081 0 + (((I) >> 6) & 0x3), \
9082 4 + (((I) >> 0) & 0x3), \
9083 4 + (((I) >> 2) & 0x3), \
9084 4 + (((I) >> 4) & 0x3), \
9085 4 + (((I) >> 6) & 0x3), \
9086 8 + (((I) >> 0) & 0x3), \
9087 8 + (((I) >> 2) & 0x3), \
9088 8 + (((I) >> 4) & 0x3), \
9089 8 + (((I) >> 6) & 0x3), \
9090 12 + (((I) >> 0) & 0x3), \
9091 12 + (((I) >> 2) & 0x3), \
9092 12 + (((I) >> 4) & 0x3), \
9093 12 + (((I) >> 6) & 0x3)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00009094
Craig Topper8c18e112016-05-17 04:41:50 +00009095#define _mm512_mask_shuffle_epi32(W, U, A, I) __extension__ ({ \
Craig Topper7cc92632016-06-11 12:50:19 +00009096 (__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
9097 (__v16si)_mm512_shuffle_epi32((A), (I)), \
9098 (__v16si)(__m512i)(W)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00009099
Craig Topper8c18e112016-05-17 04:41:50 +00009100#define _mm512_maskz_shuffle_epi32(U, A, I) __extension__ ({ \
Craig Topper7cc92632016-06-11 12:50:19 +00009101 (__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
9102 (__v16si)_mm512_shuffle_epi32((A), (I)), \
9103 (__v16si)_mm512_setzero_si512()); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00009104
Michael Zuckerman6a0e0872016-05-02 08:36:41 +00009105static __inline__ __m512d __DEFAULT_FN_ATTRS
9106_mm512_mask_expand_pd (__m512d __W, __mmask8 __U, __m512d __A)
9107{
9108 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
9109 (__v8df) __W,
9110 (__mmask8) __U);
9111}
9112
9113static __inline__ __m512d __DEFAULT_FN_ATTRS
9114_mm512_maskz_expand_pd (__mmask8 __U, __m512d __A)
9115{
9116 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
9117 (__v8df) _mm512_setzero_pd (),
9118 (__mmask8) __U);
9119}
9120
9121static __inline__ __m512i __DEFAULT_FN_ATTRS
9122_mm512_mask_expand_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
9123{
9124 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
9125 (__v8di) __W,
9126 (__mmask8) __U);
9127}
9128
9129static __inline__ __m512i __DEFAULT_FN_ATTRS
9130_mm512_maskz_expand_epi64 ( __mmask8 __U, __m512i __A)
9131{
9132 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
9133 (__v8di) _mm512_setzero_pd (),
9134 (__mmask8) __U);
9135}
9136
9137static __inline__ __m512d __DEFAULT_FN_ATTRS
9138_mm512_mask_expandloadu_pd(__m512d __W, __mmask8 __U, void const *__P)
9139{
9140 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
9141 (__v8df) __W,
9142 (__mmask8) __U);
9143}
9144
9145static __inline__ __m512d __DEFAULT_FN_ATTRS
9146_mm512_maskz_expandloadu_pd(__mmask8 __U, void const *__P)
9147{
9148 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
9149 (__v8df) _mm512_setzero_pd(),
9150 (__mmask8) __U);
9151}
9152
9153static __inline__ __m512i __DEFAULT_FN_ATTRS
9154_mm512_mask_expandloadu_epi64(__m512i __W, __mmask8 __U, void const *__P)
9155{
9156 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
9157 (__v8di) __W,
9158 (__mmask8) __U);
9159}
9160
9161static __inline__ __m512i __DEFAULT_FN_ATTRS
9162_mm512_maskz_expandloadu_epi64(__mmask8 __U, void const *__P)
9163{
9164 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
9165 (__v8di) _mm512_setzero_pd(),
9166 (__mmask8) __U);
9167}
9168
9169static __inline__ __m512 __DEFAULT_FN_ATTRS
9170_mm512_mask_expandloadu_ps(__m512 __W, __mmask16 __U, void const *__P)
9171{
9172 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
9173 (__v16sf) __W,
9174 (__mmask16) __U);
9175}
9176
9177static __inline__ __m512 __DEFAULT_FN_ATTRS
9178_mm512_maskz_expandloadu_ps(__mmask16 __U, void const *__P)
9179{
9180 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
9181 (__v16sf) _mm512_setzero_ps(),
9182 (__mmask16) __U);
9183}
9184
9185static __inline__ __m512i __DEFAULT_FN_ATTRS
9186_mm512_mask_expandloadu_epi32(__m512i __W, __mmask16 __U, void const *__P)
9187{
9188 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
9189 (__v16si) __W,
9190 (__mmask16) __U);
9191}
9192
9193static __inline__ __m512i __DEFAULT_FN_ATTRS
9194_mm512_maskz_expandloadu_epi32(__mmask16 __U, void const *__P)
9195{
9196 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
9197 (__v16si) _mm512_setzero_ps(),
9198 (__mmask16) __U);
9199}
9200
9201static __inline__ __m512 __DEFAULT_FN_ATTRS
9202_mm512_mask_expand_ps (__m512 __W, __mmask16 __U, __m512 __A)
9203{
9204 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
9205 (__v16sf) __W,
9206 (__mmask16) __U);
9207}
9208
9209static __inline__ __m512 __DEFAULT_FN_ATTRS
9210_mm512_maskz_expand_ps (__mmask16 __U, __m512 __A)
9211{
9212 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
9213 (__v16sf) _mm512_setzero_ps(),
9214 (__mmask16) __U);
9215}
9216
9217static __inline__ __m512i __DEFAULT_FN_ATTRS
9218_mm512_mask_expand_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
9219{
9220 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
9221 (__v16si) __W,
9222 (__mmask16) __U);
9223}
9224
9225static __inline__ __m512i __DEFAULT_FN_ATTRS
9226_mm512_maskz_expand_epi32 (__mmask16 __U, __m512i __A)
9227{
9228 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
9229 (__v16si) _mm512_setzero_ps(),
9230 (__mmask16) __U);
9231}
9232
Craig Topper8c18e112016-05-17 04:41:50 +00009233#define _mm512_cvt_roundps_pd(A, R) __extension__ ({ \
9234 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
9235 (__v8df)_mm512_undefined_pd(), \
9236 (__mmask8)-1, (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00009237
Craig Topper8c18e112016-05-17 04:41:50 +00009238#define _mm512_mask_cvt_roundps_pd(W, U, A, R) __extension__ ({ \
9239 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
9240 (__v8df)(__m512d)(W), \
9241 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00009242
Craig Topper8c18e112016-05-17 04:41:50 +00009243#define _mm512_maskz_cvt_roundps_pd(U, A, R) __extension__ ({ \
9244 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
9245 (__v8df)_mm512_setzero_pd(), \
9246 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00009247
9248static __inline__ __m512d __DEFAULT_FN_ATTRS
9249_mm512_cvtps_pd (__m256 __A)
9250{
9251 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
9252 (__v8df)
9253 _mm512_undefined_pd (),
9254 (__mmask8) -1,
9255 _MM_FROUND_CUR_DIRECTION);
9256}
9257
9258static __inline__ __m512d __DEFAULT_FN_ATTRS
9259_mm512_mask_cvtps_pd (__m512d __W, __mmask8 __U, __m256 __A)
9260{
9261 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
9262 (__v8df) __W,
9263 (__mmask8) __U,
9264 _MM_FROUND_CUR_DIRECTION);
9265}
9266
9267static __inline__ __m512d __DEFAULT_FN_ATTRS
9268_mm512_maskz_cvtps_pd (__mmask8 __U, __m256 __A)
9269{
9270 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
9271 (__v8df)
9272 _mm512_setzero_pd (),
9273 (__mmask8) __U,
9274 _MM_FROUND_CUR_DIRECTION);
9275}
9276
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00009277static __inline__ __m512d __DEFAULT_FN_ATTRS
9278_mm512_mask_mov_pd (__m512d __W, __mmask8 __U, __m512d __A)
9279{
Igor Bregeraadb8762016-06-08 13:59:20 +00009280 return (__m512d) __builtin_ia32_selectpd_512 ((__mmask8) __U,
9281 (__v8df) __A,
9282 (__v8df) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00009283}
9284
9285static __inline__ __m512d __DEFAULT_FN_ATTRS
9286_mm512_maskz_mov_pd (__mmask8 __U, __m512d __A)
9287{
Igor Bregeraadb8762016-06-08 13:59:20 +00009288 return (__m512d) __builtin_ia32_selectpd_512 ((__mmask8) __U,
9289 (__v8df) __A,
9290 (__v8df) _mm512_setzero_pd ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00009291}
9292
9293static __inline__ __m512 __DEFAULT_FN_ATTRS
9294_mm512_mask_mov_ps (__m512 __W, __mmask16 __U, __m512 __A)
9295{
Igor Bregeraadb8762016-06-08 13:59:20 +00009296 return (__m512) __builtin_ia32_selectps_512 ((__mmask16) __U,
9297 (__v16sf) __A,
9298 (__v16sf) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00009299}
9300
9301static __inline__ __m512 __DEFAULT_FN_ATTRS
9302_mm512_maskz_mov_ps (__mmask16 __U, __m512 __A)
9303{
Igor Bregeraadb8762016-06-08 13:59:20 +00009304 return (__m512) __builtin_ia32_selectps_512 ((__mmask16) __U,
9305 (__v16sf) __A,
9306 (__v16sf) _mm512_setzero_ps ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00009307}
9308
Michael Zuckerman708e7592016-05-03 10:42:46 +00009309static __inline__ void __DEFAULT_FN_ATTRS
9310_mm512_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m512d __A)
9311{
9312 __builtin_ia32_compressstoredf512_mask ((__v8df *) __P, (__v8df) __A,
9313 (__mmask8) __U);
9314}
9315
9316static __inline__ void __DEFAULT_FN_ATTRS
9317_mm512_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m512i __A)
9318{
9319 __builtin_ia32_compressstoredi512_mask ((__v8di *) __P, (__v8di) __A,
9320 (__mmask8) __U);
9321}
9322
9323static __inline__ void __DEFAULT_FN_ATTRS
9324_mm512_mask_compressstoreu_ps (void *__P, __mmask16 __U, __m512 __A)
9325{
9326 __builtin_ia32_compressstoresf512_mask ((__v16sf *) __P, (__v16sf) __A,
9327 (__mmask16) __U);
9328}
9329
9330static __inline__ void __DEFAULT_FN_ATTRS
9331_mm512_mask_compressstoreu_epi32 (void *__P, __mmask16 __U, __m512i __A)
9332{
9333 __builtin_ia32_compressstoresi512_mask ((__v16si *) __P, (__v16si) __A,
9334 (__mmask16) __U);
9335}
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00009336
Craig Topper8c18e112016-05-17 04:41:50 +00009337#define _mm_cvt_roundsd_ss(A, B, R) __extension__ ({ \
9338 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
9339 (__v2df)(__m128d)(B), \
9340 (__v4sf)_mm_undefined_ps(), \
9341 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009342
Craig Topper8c18e112016-05-17 04:41:50 +00009343#define _mm_mask_cvt_roundsd_ss(W, U, A, B, R) __extension__ ({ \
9344 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
9345 (__v2df)(__m128d)(B), \
9346 (__v4sf)(__m128)(W), \
9347 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009348
Craig Topper8c18e112016-05-17 04:41:50 +00009349#define _mm_maskz_cvt_roundsd_ss(U, A, B, R) __extension__ ({ \
9350 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
9351 (__v2df)(__m128d)(B), \
9352 (__v4sf)_mm_setzero_ps(), \
9353 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009354
Asaf Badouh89f65762016-06-02 08:11:35 +00009355static __inline__ __m128 __DEFAULT_FN_ATTRS
Asaf Badouha0b6f8f2016-07-14 08:40:30 +00009356_mm_mask_cvtsd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128d __B)
Asaf Badouh89f65762016-06-02 08:11:35 +00009357{
Asaf Badouha0b6f8f2016-07-14 08:40:30 +00009358 return __builtin_ia32_cvtsd2ss_round_mask ((__v4sf)(__A),
9359 (__v2df)(__B),
9360 (__v4sf)(__W),
9361 (__mmask8)(__U), _MM_FROUND_CUR_DIRECTION);
Asaf Badouh89f65762016-06-02 08:11:35 +00009362}
9363
9364static __inline__ __m128 __DEFAULT_FN_ATTRS
Asaf Badouha0b6f8f2016-07-14 08:40:30 +00009365_mm_maskz_cvtsd_ss (__mmask8 __U, __m128 __A, __m128d __B)
Asaf Badouh89f65762016-06-02 08:11:35 +00009366{
Asaf Badouha0b6f8f2016-07-14 08:40:30 +00009367 return __builtin_ia32_cvtsd2ss_round_mask ((__v4sf)(__A),
9368 (__v2df)(__B),
Asaf Badouh89f65762016-06-02 08:11:35 +00009369 (__v4sf)_mm_setzero_ps(),
Asaf Badouha0b6f8f2016-07-14 08:40:30 +00009370 (__mmask8)(__U), _MM_FROUND_CUR_DIRECTION);
Asaf Badouh89f65762016-06-02 08:11:35 +00009371}
9372
9373#define _mm_cvtss_i32 _mm_cvtss_si32
Asaf Badouh89f65762016-06-02 08:11:35 +00009374#define _mm_cvtsd_i32 _mm_cvtsd_si32
Asaf Badouh89f65762016-06-02 08:11:35 +00009375#define _mm_cvti32_sd _mm_cvtsi32_sd
Asaf Badouh89f65762016-06-02 08:11:35 +00009376#define _mm_cvti32_ss _mm_cvtsi32_ss
Craig Topper45db56c2016-07-21 07:38:39 +00009377#ifdef __x86_64__
9378#define _mm_cvtss_i64 _mm_cvtss_si64
9379#define _mm_cvtsd_i64 _mm_cvtsd_si64
9380#define _mm_cvti64_sd _mm_cvtsi64_sd
Asaf Badouh89f65762016-06-02 08:11:35 +00009381#define _mm_cvti64_ss _mm_cvtsi64_ss
Craig Topper45db56c2016-07-21 07:38:39 +00009382#endif
Asaf Badouh89f65762016-06-02 08:11:35 +00009383
Craig Topper45db56c2016-07-21 07:38:39 +00009384#ifdef __x86_64__
Craig Topper8c18e112016-05-17 04:41:50 +00009385#define _mm_cvt_roundi64_sd(A, B, R) __extension__ ({ \
9386 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
9387 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009388
Craig Topper8c18e112016-05-17 04:41:50 +00009389#define _mm_cvt_roundsi64_sd(A, B, R) __extension__ ({ \
9390 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
9391 (int)(R)); })
Craig Topper45db56c2016-07-21 07:38:39 +00009392#endif
Michael Zuckermane6f73892016-05-04 08:55:11 +00009393
Craig Topper8c18e112016-05-17 04:41:50 +00009394#define _mm_cvt_roundsi32_ss(A, B, R) __extension__ ({ \
9395 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009396
Craig Topper8c18e112016-05-17 04:41:50 +00009397#define _mm_cvt_roundi32_ss(A, B, R) __extension__ ({ \
9398 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009399
Craig Topper45db56c2016-07-21 07:38:39 +00009400#ifdef __x86_64__
Craig Topper8c18e112016-05-17 04:41:50 +00009401#define _mm_cvt_roundsi64_ss(A, B, R) __extension__ ({ \
9402 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
9403 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009404
Craig Topper8c18e112016-05-17 04:41:50 +00009405#define _mm_cvt_roundi64_ss(A, B, R) __extension__ ({ \
9406 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
9407 (int)(R)); })
Craig Topper45db56c2016-07-21 07:38:39 +00009408#endif
Michael Zuckermane6f73892016-05-04 08:55:11 +00009409
Craig Topper8c18e112016-05-17 04:41:50 +00009410#define _mm_cvt_roundss_sd(A, B, R) __extension__ ({ \
9411 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9412 (__v4sf)(__m128)(B), \
9413 (__v2df)_mm_undefined_pd(), \
9414 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009415
Craig Topper8c18e112016-05-17 04:41:50 +00009416#define _mm_mask_cvt_roundss_sd(W, U, A, B, R) __extension__ ({ \
9417 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9418 (__v4sf)(__m128)(B), \
9419 (__v2df)(__m128d)(W), \
9420 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009421
Craig Topper8c18e112016-05-17 04:41:50 +00009422#define _mm_maskz_cvt_roundss_sd(U, A, B, R) __extension__ ({ \
9423 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9424 (__v4sf)(__m128)(B), \
9425 (__v2df)_mm_setzero_pd(), \
9426 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009427
9428static __inline__ __m128d __DEFAULT_FN_ATTRS
Asaf Badouha0b6f8f2016-07-14 08:40:30 +00009429_mm_mask_cvtss_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128 __B)
Asaf Badouh89f65762016-06-02 08:11:35 +00009430{
Asaf Badouha0b6f8f2016-07-14 08:40:30 +00009431 return __builtin_ia32_cvtss2sd_round_mask((__v2df)(__A),
9432 (__v4sf)(__B),
9433 (__v2df)(__W),
9434 (__mmask8)(__U), _MM_FROUND_CUR_DIRECTION);
Asaf Badouh89f65762016-06-02 08:11:35 +00009435}
9436
9437static __inline__ __m128d __DEFAULT_FN_ATTRS
Asaf Badouha0b6f8f2016-07-14 08:40:30 +00009438_mm_maskz_cvtss_sd (__mmask8 __U, __m128d __A, __m128 __B)
Asaf Badouh89f65762016-06-02 08:11:35 +00009439{
Asaf Badouha0b6f8f2016-07-14 08:40:30 +00009440 return __builtin_ia32_cvtss2sd_round_mask((__v2df)(__A),
9441 (__v4sf)(__B),
Asaf Badouh89f65762016-06-02 08:11:35 +00009442 (__v2df)_mm_setzero_pd(),
Asaf Badouha0b6f8f2016-07-14 08:40:30 +00009443 (__mmask8)(__U), _MM_FROUND_CUR_DIRECTION);
Asaf Badouh89f65762016-06-02 08:11:35 +00009444}
9445
9446static __inline__ __m128d __DEFAULT_FN_ATTRS
Michael Zuckermane6f73892016-05-04 08:55:11 +00009447_mm_cvtu32_sd (__m128d __A, unsigned __B)
9448{
9449 return (__m128d) __builtin_ia32_cvtusi2sd32 ((__v2df) __A, __B);
9450}
9451
Craig Topper45db56c2016-07-21 07:38:39 +00009452#ifdef __x86_64__
Craig Topper8c18e112016-05-17 04:41:50 +00009453#define _mm_cvt_roundu64_sd(A, B, R) __extension__ ({ \
9454 (__m128d)__builtin_ia32_cvtusi2sd64((__v2df)(__m128d)(A), \
9455 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009456
9457static __inline__ __m128d __DEFAULT_FN_ATTRS
9458_mm_cvtu64_sd (__m128d __A, unsigned long long __B)
9459{
9460 return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B,
9461 _MM_FROUND_CUR_DIRECTION);
9462}
Craig Topper45db56c2016-07-21 07:38:39 +00009463#endif
Michael Zuckermane6f73892016-05-04 08:55:11 +00009464
Craig Topper8c18e112016-05-17 04:41:50 +00009465#define _mm_cvt_roundu32_ss(A, B, R) __extension__ ({ \
9466 (__m128)__builtin_ia32_cvtusi2ss32((__v4sf)(__m128)(A), (unsigned int)(B), \
9467 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009468
9469static __inline__ __m128 __DEFAULT_FN_ATTRS
9470_mm_cvtu32_ss (__m128 __A, unsigned __B)
9471{
9472 return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B,
9473 _MM_FROUND_CUR_DIRECTION);
9474}
9475
Craig Topper45db56c2016-07-21 07:38:39 +00009476#ifdef __x86_64__
Craig Topper8c18e112016-05-17 04:41:50 +00009477#define _mm_cvt_roundu64_ss(A, B, R) __extension__ ({ \
9478 (__m128)__builtin_ia32_cvtusi2ss64((__v4sf)(__m128)(A), \
9479 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009480
9481static __inline__ __m128 __DEFAULT_FN_ATTRS
9482_mm_cvtu64_ss (__m128 __A, unsigned long long __B)
9483{
9484 return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B,
9485 _MM_FROUND_CUR_DIRECTION);
9486}
Craig Topper45db56c2016-07-21 07:38:39 +00009487#endif
Michael Zuckermane6f73892016-05-04 08:55:11 +00009488
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009489static __inline__ __m512i __DEFAULT_FN_ATTRS
9490_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
9491{
9492 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, (__v16si) __O,
9493 __M);
9494}
9495
Craig Topper45db56c2016-07-21 07:38:39 +00009496#ifdef __x86_64__
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009497static __inline__ __m512i __DEFAULT_FN_ATTRS
9498_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
9499{
9500 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, (__v8di) __O,
9501 __M);
9502}
Craig Topper45db56c2016-07-21 07:38:39 +00009503#endif
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009504
Michael Zuckerman178113e2016-05-19 12:07:49 +00009505static __inline __m512i __DEFAULT_FN_ATTRS
9506_mm512_set_epi32 (int __A, int __B, int __C, int __D,
9507 int __E, int __F, int __G, int __H,
9508 int __I, int __J, int __K, int __L,
9509 int __M, int __N, int __O, int __P)
9510{
9511 return __extension__ (__m512i)(__v16si)
9512 { __P, __O, __N, __M, __L, __K, __J, __I,
9513 __H, __G, __F, __E, __D, __C, __B, __A };
9514}
9515
9516#define _mm512_setr_epi32(e0,e1,e2,e3,e4,e5,e6,e7, \
9517 e8,e9,e10,e11,e12,e13,e14,e15) \
Craig Topper60589492016-06-08 06:08:04 +00009518 _mm512_set_epi32((e15),(e14),(e13),(e12),(e11),(e10),(e9),(e8),(e7),(e6), \
9519 (e5),(e4),(e3),(e2),(e1),(e0))
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00009520
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009521static __inline__ __m512i __DEFAULT_FN_ATTRS
9522_mm512_set_epi64 (long long __A, long long __B, long long __C,
9523 long long __D, long long __E, long long __F,
9524 long long __G, long long __H)
9525{
9526 return __extension__ (__m512i) (__v8di)
9527 { __H, __G, __F, __E, __D, __C, __B, __A };
9528}
9529
Michael Zuckerman178113e2016-05-19 12:07:49 +00009530#define _mm512_setr_epi64(e0,e1,e2,e3,e4,e5,e6,e7) \
Craig Topper60589492016-06-08 06:08:04 +00009531 _mm512_set_epi64((e7),(e6),(e5),(e4),(e3),(e2),(e1),(e0))
Michael Zuckerman178113e2016-05-19 12:07:49 +00009532
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009533static __inline__ __m512d __DEFAULT_FN_ATTRS
9534_mm512_set_pd (double __A, double __B, double __C, double __D,
9535 double __E, double __F, double __G, double __H)
9536{
9537 return __extension__ (__m512d)
9538 { __H, __G, __F, __E, __D, __C, __B, __A };
9539}
9540
Michael Zuckerman178113e2016-05-19 12:07:49 +00009541#define _mm512_setr_pd(e0,e1,e2,e3,e4,e5,e6,e7) \
Craig Topper60589492016-06-08 06:08:04 +00009542 _mm512_set_pd((e7),(e6),(e5),(e4),(e3),(e2),(e1),(e0))
Michael Zuckerman178113e2016-05-19 12:07:49 +00009543
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009544static __inline__ __m512 __DEFAULT_FN_ATTRS
9545_mm512_set_ps (float __A, float __B, float __C, float __D,
9546 float __E, float __F, float __G, float __H,
9547 float __I, float __J, float __K, float __L,
9548 float __M, float __N, float __O, float __P)
9549{
9550 return __extension__ (__m512)
9551 { __P, __O, __N, __M, __L, __K, __J, __I,
9552 __H, __G, __F, __E, __D, __C, __B, __A };
9553}
9554
Michael Zuckerman178113e2016-05-19 12:07:49 +00009555#define _mm512_setr_ps(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15) \
Craig Topper60589492016-06-08 06:08:04 +00009556 _mm512_set_ps((e15),(e14),(e13),(e12),(e11),(e10),(e9),(e8),(e7),(e6),(e5), \
9557 (e4),(e3),(e2),(e1),(e0))
Michael Zuckerman178113e2016-05-19 12:07:49 +00009558
Asaf Badouh13633282016-07-05 12:24:14 +00009559static __inline__ __m512 __DEFAULT_FN_ATTRS
Asaf Badouh356bb762016-08-21 07:56:47 +00009560_mm512_abs_ps(__m512 __A)
Asaf Badouh13633282016-07-05 12:24:14 +00009561{
Asaf Badouh356bb762016-08-21 07:56:47 +00009562 return (__m512)_mm512_and_epi32(_mm512_set1_epi32(0x7FFFFFFF),(__m512i)__A) ;
Asaf Badouh13633282016-07-05 12:24:14 +00009563}
9564
9565static __inline__ __m512 __DEFAULT_FN_ATTRS
Asaf Badouh356bb762016-08-21 07:56:47 +00009566_mm512_mask_abs_ps(__m512 __W, __mmask16 __K, __m512 __A)
Asaf Badouh13633282016-07-05 12:24:14 +00009567{
Asaf Badouh356bb762016-08-21 07:56:47 +00009568 return (__m512)_mm512_mask_and_epi32((__m512i)__W, __K, _mm512_set1_epi32(0x7FFFFFFF),(__m512i)__A) ;
Asaf Badouh13633282016-07-05 12:24:14 +00009569}
9570
9571static __inline__ __m512d __DEFAULT_FN_ATTRS
Asaf Badouh356bb762016-08-21 07:56:47 +00009572_mm512_abs_pd(__m512d __A)
Asaf Badouh13633282016-07-05 12:24:14 +00009573{
Asaf Badouh356bb762016-08-21 07:56:47 +00009574 return (__m512d)_mm512_and_epi64(_mm512_set1_epi64(0x7FFFFFFFFFFFFFFF),(__v8di)__A) ;
Asaf Badouh13633282016-07-05 12:24:14 +00009575}
9576
9577static __inline__ __m512d __DEFAULT_FN_ATTRS
Asaf Badouh356bb762016-08-21 07:56:47 +00009578_mm512_mask_abs_pd(__m512d __W, __mmask8 __K, __m512d __A)
Asaf Badouh13633282016-07-05 12:24:14 +00009579{
Asaf Badouh356bb762016-08-21 07:56:47 +00009580 return (__m512d)_mm512_mask_and_epi64((__v8di)__W, __K, _mm512_set1_epi64(0x7FFFFFFFFFFFFFFF),(__v8di)__A);
Asaf Badouh13633282016-07-05 12:24:14 +00009581}
9582
Michael Kupersteine45af542015-06-30 13:36:19 +00009583#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00009584
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00009585#endif // __AVX512FINTRIN_H