Skip to main content

core/stdarch/crates/core_arch/src/x86/
avx512f.rs

1use crate::{
2    arch::asm,
3    core_arch::{simd::*, x86::*},
4    intrinsics::simd::*,
5    intrinsics::{fmaf32, fmaf64},
6    mem, ptr,
7};
8
9use core::hint::unreachable_unchecked;
10#[cfg(test)]
11use stdarch_test::assert_instr;
12
13/// Computes the absolute values of packed 32-bit integers in `a`.
14///
15/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_abs_epi32&expand=39)
16#[inline]
17#[target_feature(enable = "avx512f")]
18#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19#[cfg_attr(test, assert_instr(vpabsd))]
20#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21pub const fn _mm512_abs_epi32(a: __m512i) -> __m512i {
22    unsafe {
23        let a = a.as_i32x16();
24        let r = simd_select::<i32x16, _>(simd_lt(a, i32x16::ZERO), simd_neg(a), a);
25        transmute(r)
26    }
27}
28
29/// Computes the absolute value of packed 32-bit integers in `a`, and store the
30/// unsigned results in `dst` using writemask `k` (elements are copied from
31/// `src` when the corresponding mask bit is not set).
32///
33/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_abs_epi32&expand=40)
34#[inline]
35#[target_feature(enable = "avx512f")]
36#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37#[cfg_attr(test, assert_instr(vpabsd))]
38#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39pub const fn _mm512_mask_abs_epi32(src: __m512i, k: __mmask16, a: __m512i) -> __m512i {
40    unsafe {
41        let abs = _mm512_abs_epi32(a).as_i32x16();
42        transmute(simd_select_bitmask(k, abs, src.as_i32x16()))
43    }
44}
45
46/// Computes the absolute value of packed 32-bit integers in `a`, and store the
47/// unsigned results in `dst` using zeromask `k` (elements are zeroed out when
48/// the corresponding mask bit is not set).
49///
50/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_abs_epi32&expand=41)
51#[inline]
52#[target_feature(enable = "avx512f")]
53#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
54#[cfg_attr(test, assert_instr(vpabsd))]
55#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
56pub const fn _mm512_maskz_abs_epi32(k: __mmask16, a: __m512i) -> __m512i {
57    unsafe {
58        let abs = _mm512_abs_epi32(a).as_i32x16();
59        transmute(simd_select_bitmask(k, abs, i32x16::ZERO))
60    }
61}
62
63/// Compute the absolute value of packed signed 32-bit integers in a, and store the unsigned results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
64///
65/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_abs_epi32&expand=37)
66#[inline]
67#[target_feature(enable = "avx512f,avx512vl")]
68#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
69#[cfg_attr(test, assert_instr(vpabsd))]
70#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
71pub const fn _mm256_mask_abs_epi32(src: __m256i, k: __mmask8, a: __m256i) -> __m256i {
72    unsafe {
73        let abs = _mm256_abs_epi32(a).as_i32x8();
74        transmute(simd_select_bitmask(k, abs, src.as_i32x8()))
75    }
76}
77
78/// Compute the absolute value of packed signed 32-bit integers in a, and store the unsigned results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
79///
80/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_abs_epi32&expand=38)
81#[inline]
82#[target_feature(enable = "avx512f,avx512vl")]
83#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
84#[cfg_attr(test, assert_instr(vpabsd))]
85#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
86pub const fn _mm256_maskz_abs_epi32(k: __mmask8, a: __m256i) -> __m256i {
87    unsafe {
88        let abs = _mm256_abs_epi32(a).as_i32x8();
89        transmute(simd_select_bitmask(k, abs, i32x8::ZERO))
90    }
91}
92
93/// Compute the absolute value of packed signed 32-bit integers in a, and store the unsigned results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
94///
95/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_abs_epi32&expand=34)
96#[inline]
97#[target_feature(enable = "avx512f,avx512vl")]
98#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
99#[cfg_attr(test, assert_instr(vpabsd))]
100#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
101pub const fn _mm_mask_abs_epi32(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
102    unsafe {
103        let abs = _mm_abs_epi32(a).as_i32x4();
104        transmute(simd_select_bitmask(k, abs, src.as_i32x4()))
105    }
106}
107
108/// Compute the absolute value of packed signed 32-bit integers in a, and store the unsigned results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
109///
110/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_abs_epi32&expand=35)
111#[inline]
112#[target_feature(enable = "avx512f,avx512vl")]
113#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
114#[cfg_attr(test, assert_instr(vpabsd))]
115#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
116pub const fn _mm_maskz_abs_epi32(k: __mmask8, a: __m128i) -> __m128i {
117    unsafe {
118        let abs = _mm_abs_epi32(a).as_i32x4();
119        transmute(simd_select_bitmask(k, abs, i32x4::ZERO))
120    }
121}
122
123/// Compute the absolute value of packed signed 64-bit integers in a, and store the unsigned results in dst.
124///
125/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_abs_epi64&expand=48)
126#[inline]
127#[target_feature(enable = "avx512f")]
128#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
129#[cfg_attr(test, assert_instr(vpabsq))]
130#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
131pub const fn _mm512_abs_epi64(a: __m512i) -> __m512i {
132    unsafe {
133        let a = a.as_i64x8();
134        let r = simd_select::<i64x8, _>(simd_lt(a, i64x8::ZERO), simd_neg(a), a);
135        transmute(r)
136    }
137}
138
139/// Compute the absolute value of packed signed 64-bit integers in a, and store the unsigned results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
140///
141/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_abs_epi64&expand=49)
142#[inline]
143#[target_feature(enable = "avx512f")]
144#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
145#[cfg_attr(test, assert_instr(vpabsq))]
146#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
147pub const fn _mm512_mask_abs_epi64(src: __m512i, k: __mmask8, a: __m512i) -> __m512i {
148    unsafe {
149        let abs = _mm512_abs_epi64(a).as_i64x8();
150        transmute(simd_select_bitmask(k, abs, src.as_i64x8()))
151    }
152}
153
154/// Compute the absolute value of packed signed 64-bit integers in a, and store the unsigned results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
155///
156/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_abs_epi64&expand=50)
157#[inline]
158#[target_feature(enable = "avx512f")]
159#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
160#[cfg_attr(test, assert_instr(vpabsq))]
161#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
162pub const fn _mm512_maskz_abs_epi64(k: __mmask8, a: __m512i) -> __m512i {
163    unsafe {
164        let abs = _mm512_abs_epi64(a).as_i64x8();
165        transmute(simd_select_bitmask(k, abs, i64x8::ZERO))
166    }
167}
168
169/// Compute the absolute value of packed signed 64-bit integers in a, and store the unsigned results in dst.
170///
171/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_abs_epi64&expand=45)
172#[inline]
173#[target_feature(enable = "avx512f,avx512vl")]
174#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
175#[cfg_attr(test, assert_instr(vpabsq))]
176#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
177pub const fn _mm256_abs_epi64(a: __m256i) -> __m256i {
178    unsafe {
179        let a = a.as_i64x4();
180        let r = simd_select::<i64x4, _>(simd_lt(a, i64x4::ZERO), simd_neg(a), a);
181        transmute(r)
182    }
183}
184
185/// Compute the absolute value of packed signed 64-bit integers in a, and store the unsigned results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
186///
187/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_abs_epi64&expand=46)
188#[inline]
189#[target_feature(enable = "avx512f,avx512vl")]
190#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
191#[cfg_attr(test, assert_instr(vpabsq))]
192#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
193pub const fn _mm256_mask_abs_epi64(src: __m256i, k: __mmask8, a: __m256i) -> __m256i {
194    unsafe {
195        let abs = _mm256_abs_epi64(a).as_i64x4();
196        transmute(simd_select_bitmask(k, abs, src.as_i64x4()))
197    }
198}
199
200/// Compute the absolute value of packed signed 64-bit integers in a, and store the unsigned results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
201///
202/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_abs_epi64)
203#[inline]
204#[target_feature(enable = "avx512f,avx512vl")]
205#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
206#[cfg_attr(test, assert_instr(vpabsq))]
207#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
208pub const fn _mm256_maskz_abs_epi64(k: __mmask8, a: __m256i) -> __m256i {
209    unsafe {
210        let abs = _mm256_abs_epi64(a).as_i64x4();
211        transmute(simd_select_bitmask(k, abs, i64x4::ZERO))
212    }
213}
214
215/// Compute the absolute value of packed signed 64-bit integers in a, and store the unsigned results in dst.
216///
217/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_abs_epi64)
218#[inline]
219#[target_feature(enable = "avx512f,avx512vl")]
220#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
221#[cfg_attr(test, assert_instr(vpabsq))]
222#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
223pub const fn _mm_abs_epi64(a: __m128i) -> __m128i {
224    unsafe {
225        let a = a.as_i64x2();
226        let r = simd_select::<i64x2, _>(simd_lt(a, i64x2::ZERO), simd_neg(a), a);
227        transmute(r)
228    }
229}
230
231/// Compute the absolute value of packed signed 64-bit integers in a, and store the unsigned results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
232///
233/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_abs_epi64)
234#[inline]
235#[target_feature(enable = "avx512f,avx512vl")]
236#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
237#[cfg_attr(test, assert_instr(vpabsq))]
238#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
239pub const fn _mm_mask_abs_epi64(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
240    unsafe {
241        let abs = _mm_abs_epi64(a).as_i64x2();
242        transmute(simd_select_bitmask(k, abs, src.as_i64x2()))
243    }
244}
245
246/// Compute the absolute value of packed signed 64-bit integers in a, and store the unsigned results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
247///
248/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_abs_epi64)
249#[inline]
250#[target_feature(enable = "avx512f,avx512vl")]
251#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
252#[cfg_attr(test, assert_instr(vpabsq))]
253#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
254pub const fn _mm_maskz_abs_epi64(k: __mmask8, a: __m128i) -> __m128i {
255    unsafe {
256        let abs = _mm_abs_epi64(a).as_i64x2();
257        transmute(simd_select_bitmask(k, abs, i64x2::ZERO))
258    }
259}
260
261/// Finds the absolute value of each packed single-precision (32-bit) floating-point element in v2, storing the results in dst.
262///
263/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_abs_ps&expand=65)
264#[inline]
265#[target_feature(enable = "avx512f")]
266#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
267#[cfg_attr(test, assert_instr(vpandd))]
268#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
269pub const fn _mm512_abs_ps(v2: __m512) -> __m512 {
270    unsafe { simd_fabs(v2) }
271}
272
273/// Finds the absolute value of each packed single-precision (32-bit) floating-point element in v2, storing the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
274///
275/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_abs_ps&expand=66)
276#[inline]
277#[target_feature(enable = "avx512f")]
278#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
279#[cfg_attr(test, assert_instr(vpandd))]
280#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
281pub const fn _mm512_mask_abs_ps(src: __m512, k: __mmask16, v2: __m512) -> __m512 {
282    unsafe { simd_select_bitmask(k, simd_fabs(v2), src) }
283}
284
285/// Finds the absolute value of each packed double-precision (64-bit) floating-point element in v2, storing the results in dst.
286///
287/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_abs_pd&expand=60)
288#[inline]
289#[target_feature(enable = "avx512f")]
290#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
291#[cfg_attr(test, assert_instr(vpandq))]
292#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
293pub const fn _mm512_abs_pd(v2: __m512d) -> __m512d {
294    unsafe { simd_fabs(v2) }
295}
296
297/// Finds the absolute value of each packed double-precision (64-bit) floating-point element in v2, storing the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
298///
299/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_abs_pd&expand=61)
300#[inline]
301#[target_feature(enable = "avx512f")]
302#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
303#[cfg_attr(test, assert_instr(vpandq))]
304#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
305pub const fn _mm512_mask_abs_pd(src: __m512d, k: __mmask8, v2: __m512d) -> __m512d {
306    unsafe { simd_select_bitmask(k, simd_fabs(v2), src) }
307}
308
309/// Move packed 32-bit integers from a to dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
310///
311/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_mov_epi32&expand=3801)
312#[inline]
313#[target_feature(enable = "avx512f")]
314#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
315#[cfg_attr(test, assert_instr(vmovdqa32))]
316#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
317pub const fn _mm512_mask_mov_epi32(src: __m512i, k: __mmask16, a: __m512i) -> __m512i {
318    unsafe {
319        let mov = a.as_i32x16();
320        transmute(simd_select_bitmask(k, mov, src.as_i32x16()))
321    }
322}
323
324/// Move packed 32-bit integers from a into dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
325///
326/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_mov_epi32&expand=3802)
327#[inline]
328#[target_feature(enable = "avx512f")]
329#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
330#[cfg_attr(test, assert_instr(vmovdqa32))]
331#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
332pub const fn _mm512_maskz_mov_epi32(k: __mmask16, a: __m512i) -> __m512i {
333    unsafe {
334        let mov = a.as_i32x16();
335        transmute(simd_select_bitmask(k, mov, i32x16::ZERO))
336    }
337}
338
339/// Move packed 32-bit integers from a to dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
340///
341/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_mov_epi32&expand=3799)
342#[inline]
343#[target_feature(enable = "avx512f,avx512vl")]
344#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
345#[cfg_attr(test, assert_instr(vmovdqa32))]
346#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
347pub const fn _mm256_mask_mov_epi32(src: __m256i, k: __mmask8, a: __m256i) -> __m256i {
348    unsafe {
349        let mov = a.as_i32x8();
350        transmute(simd_select_bitmask(k, mov, src.as_i32x8()))
351    }
352}
353
354/// Move packed 32-bit integers from a into dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
355///
356/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_mov_epi32&expand=3800)
357#[inline]
358#[target_feature(enable = "avx512f,avx512vl")]
359#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
360#[cfg_attr(test, assert_instr(vmovdqa32))]
361#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
362pub const fn _mm256_maskz_mov_epi32(k: __mmask8, a: __m256i) -> __m256i {
363    unsafe {
364        let mov = a.as_i32x8();
365        transmute(simd_select_bitmask(k, mov, i32x8::ZERO))
366    }
367}
368
369/// Move packed 32-bit integers from a to dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
370///
371/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_mov_epi32&expand=3797)
372#[inline]
373#[target_feature(enable = "avx512f,avx512vl")]
374#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
375#[cfg_attr(test, assert_instr(vmovdqa32))]
376#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
377pub const fn _mm_mask_mov_epi32(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
378    unsafe {
379        let mov = a.as_i32x4();
380        transmute(simd_select_bitmask(k, mov, src.as_i32x4()))
381    }
382}
383
384/// Move packed 32-bit integers from a into dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
385///
386/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_mov_epi32&expand=3798)
387#[inline]
388#[target_feature(enable = "avx512f,avx512vl")]
389#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
390#[cfg_attr(test, assert_instr(vmovdqa32))]
391#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
392pub const fn _mm_maskz_mov_epi32(k: __mmask8, a: __m128i) -> __m128i {
393    unsafe {
394        let mov = a.as_i32x4();
395        transmute(simd_select_bitmask(k, mov, i32x4::ZERO))
396    }
397}
398
399/// Move packed 64-bit integers from a to dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
400///
401/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_mov_epi64&expand=3807)
402#[inline]
403#[target_feature(enable = "avx512f")]
404#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
405#[cfg_attr(test, assert_instr(vmovdqa64))]
406#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
407pub const fn _mm512_mask_mov_epi64(src: __m512i, k: __mmask8, a: __m512i) -> __m512i {
408    unsafe {
409        let mov = a.as_i64x8();
410        transmute(simd_select_bitmask(k, mov, src.as_i64x8()))
411    }
412}
413
414/// Move packed 64-bit integers from a into dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
415///
416/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_mov_epi64&expand=3808)
417#[inline]
418#[target_feature(enable = "avx512f")]
419#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
420#[cfg_attr(test, assert_instr(vmovdqa64))]
421#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
422pub const fn _mm512_maskz_mov_epi64(k: __mmask8, a: __m512i) -> __m512i {
423    unsafe {
424        let mov = a.as_i64x8();
425        transmute(simd_select_bitmask(k, mov, i64x8::ZERO))
426    }
427}
428
429/// Move packed 64-bit integers from a to dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
430///
431/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_mov_epi64&expand=3805)
432#[inline]
433#[target_feature(enable = "avx512f,avx512vl")]
434#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
435#[cfg_attr(test, assert_instr(vmovdqa64))]
436#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
437pub const fn _mm256_mask_mov_epi64(src: __m256i, k: __mmask8, a: __m256i) -> __m256i {
438    unsafe {
439        let mov = a.as_i64x4();
440        transmute(simd_select_bitmask(k, mov, src.as_i64x4()))
441    }
442}
443
444/// Move packed 64-bit integers from a into dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
445///
446/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_mov_epi64&expand=3806)
447#[inline]
448#[target_feature(enable = "avx512f,avx512vl")]
449#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
450#[cfg_attr(test, assert_instr(vmovdqa64))]
451#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
452pub const fn _mm256_maskz_mov_epi64(k: __mmask8, a: __m256i) -> __m256i {
453    unsafe {
454        let mov = a.as_i64x4();
455        transmute(simd_select_bitmask(k, mov, i64x4::ZERO))
456    }
457}
458
459/// Move packed 64-bit integers from a to dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
460///
461/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_mov_epi64&expand=3803)
462#[inline]
463#[target_feature(enable = "avx512f,avx512vl")]
464#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
465#[cfg_attr(test, assert_instr(vmovdqa64))]
466#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
467pub const fn _mm_mask_mov_epi64(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
468    unsafe {
469        let mov = a.as_i64x2();
470        transmute(simd_select_bitmask(k, mov, src.as_i64x2()))
471    }
472}
473
474/// Move packed 64-bit integers from a into dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
475///
476/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_mov_epi64&expand=3804)
477#[inline]
478#[target_feature(enable = "avx512f,avx512vl")]
479#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
480#[cfg_attr(test, assert_instr(vmovdqa64))]
481#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
482pub const fn _mm_maskz_mov_epi64(k: __mmask8, a: __m128i) -> __m128i {
483    unsafe {
484        let mov = a.as_i64x2();
485        transmute(simd_select_bitmask(k, mov, i64x2::ZERO))
486    }
487}
488
489/// Move packed single-precision (32-bit) floating-point elements from a to dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
490///
491/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_mov_ps&expand=3825)
492#[inline]
493#[target_feature(enable = "avx512f")]
494#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
495#[cfg_attr(test, assert_instr(vmovaps))]
496#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
497pub const fn _mm512_mask_mov_ps(src: __m512, k: __mmask16, a: __m512) -> __m512 {
498    unsafe {
499        let mov = a.as_f32x16();
500        transmute(simd_select_bitmask(k, mov, src.as_f32x16()))
501    }
502}
503
504/// Move packed single-precision (32-bit) floating-point elements from a into dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
505///
506/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_mov_ps&expand=3826)
507#[inline]
508#[target_feature(enable = "avx512f")]
509#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
510#[cfg_attr(test, assert_instr(vmovaps))]
511#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
512pub const fn _mm512_maskz_mov_ps(k: __mmask16, a: __m512) -> __m512 {
513    unsafe {
514        let mov = a.as_f32x16();
515        transmute(simd_select_bitmask(k, mov, f32x16::ZERO))
516    }
517}
518
519/// Move packed single-precision (32-bit) floating-point elements from a to dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
520///
521/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_mov_ps&expand=3823)
522#[inline]
523#[target_feature(enable = "avx512f,avx512vl")]
524#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
525#[cfg_attr(test, assert_instr(vmovaps))]
526#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
527pub const fn _mm256_mask_mov_ps(src: __m256, k: __mmask8, a: __m256) -> __m256 {
528    unsafe {
529        let mov = a.as_f32x8();
530        transmute(simd_select_bitmask(k, mov, src.as_f32x8()))
531    }
532}
533
534/// Move packed single-precision (32-bit) floating-point elements from a into dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
535///
536/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_mov_ps&expand=3824)
537#[inline]
538#[target_feature(enable = "avx512f,avx512vl")]
539#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
540#[cfg_attr(test, assert_instr(vmovaps))]
541#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
542pub const fn _mm256_maskz_mov_ps(k: __mmask8, a: __m256) -> __m256 {
543    unsafe {
544        let mov = a.as_f32x8();
545        transmute(simd_select_bitmask(k, mov, f32x8::ZERO))
546    }
547}
548
549/// Move packed single-precision (32-bit) floating-point elements from a to dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
550///
551/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_mov_ps&expand=3821)
552#[inline]
553#[target_feature(enable = "avx512f,avx512vl")]
554#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
555#[cfg_attr(test, assert_instr(vmovaps))]
556#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
557pub const fn _mm_mask_mov_ps(src: __m128, k: __mmask8, a: __m128) -> __m128 {
558    unsafe {
559        let mov = a.as_f32x4();
560        transmute(simd_select_bitmask(k, mov, src.as_f32x4()))
561    }
562}
563
564/// Move packed single-precision (32-bit) floating-point elements from a into dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
565///
566/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_mov_ps&expand=3822)
567#[inline]
568#[target_feature(enable = "avx512f,avx512vl")]
569#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
570#[cfg_attr(test, assert_instr(vmovaps))]
571#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
572pub const fn _mm_maskz_mov_ps(k: __mmask8, a: __m128) -> __m128 {
573    unsafe {
574        let mov = a.as_f32x4();
575        transmute(simd_select_bitmask(k, mov, f32x4::ZERO))
576    }
577}
578
579/// Move packed double-precision (64-bit) floating-point elements from a to dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
580///
581/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_mov_pd&expand=3819)
582#[inline]
583#[target_feature(enable = "avx512f")]
584#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
585#[cfg_attr(test, assert_instr(vmovapd))]
586#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
587pub const fn _mm512_mask_mov_pd(src: __m512d, k: __mmask8, a: __m512d) -> __m512d {
588    unsafe {
589        let mov = a.as_f64x8();
590        transmute(simd_select_bitmask(k, mov, src.as_f64x8()))
591    }
592}
593
594/// Move packed double-precision (64-bit) floating-point elements from a into dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
595///
596/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_mov_pd&expand=3820)
597#[inline]
598#[target_feature(enable = "avx512f")]
599#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
600#[cfg_attr(test, assert_instr(vmovapd))]
601#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
602pub const fn _mm512_maskz_mov_pd(k: __mmask8, a: __m512d) -> __m512d {
603    unsafe {
604        let mov = a.as_f64x8();
605        transmute(simd_select_bitmask(k, mov, f64x8::ZERO))
606    }
607}
608
609/// Move packed double-precision (64-bit) floating-point elements from a to dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
610///
611/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_mov_pd&expand=3817)
612#[inline]
613#[target_feature(enable = "avx512f,avx512vl")]
614#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
615#[cfg_attr(test, assert_instr(vmovapd))]
616#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
617pub const fn _mm256_mask_mov_pd(src: __m256d, k: __mmask8, a: __m256d) -> __m256d {
618    unsafe {
619        let mov = a.as_f64x4();
620        transmute(simd_select_bitmask(k, mov, src.as_f64x4()))
621    }
622}
623
624/// Move packed double-precision (64-bit) floating-point elements from a into dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
625///
626/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_mov_pd&expand=3818)
627#[inline]
628#[target_feature(enable = "avx512f,avx512vl")]
629#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
630#[cfg_attr(test, assert_instr(vmovapd))]
631#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
632pub const fn _mm256_maskz_mov_pd(k: __mmask8, a: __m256d) -> __m256d {
633    unsafe {
634        let mov = a.as_f64x4();
635        transmute(simd_select_bitmask(k, mov, f64x4::ZERO))
636    }
637}
638
639/// Move packed double-precision (64-bit) floating-point elements from a to dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
640///
641/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_mov_pd&expand=3815)
642#[inline]
643#[target_feature(enable = "avx512f,avx512vl")]
644#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
645#[cfg_attr(test, assert_instr(vmovapd))]
646#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
647pub const fn _mm_mask_mov_pd(src: __m128d, k: __mmask8, a: __m128d) -> __m128d {
648    unsafe {
649        let mov = a.as_f64x2();
650        transmute(simd_select_bitmask(k, mov, src.as_f64x2()))
651    }
652}
653
654/// Move packed double-precision (64-bit) floating-point elements from a into dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
655///
656/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_mov_pd&expand=3816)
657#[inline]
658#[target_feature(enable = "avx512f,avx512vl")]
659#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
660#[cfg_attr(test, assert_instr(vmovapd))]
661#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
662pub const fn _mm_maskz_mov_pd(k: __mmask8, a: __m128d) -> __m128d {
663    unsafe {
664        let mov = a.as_f64x2();
665        transmute(simd_select_bitmask(k, mov, f64x2::ZERO))
666    }
667}
668
669/// Add packed 32-bit integers in a and b, and store the results in dst.
670///
671/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_add_epi32&expand=100)
672#[inline]
673#[target_feature(enable = "avx512f")]
674#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
675#[cfg_attr(test, assert_instr(vpaddd))]
676#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
677pub const fn _mm512_add_epi32(a: __m512i, b: __m512i) -> __m512i {
678    unsafe { transmute(simd_add(a.as_i32x16(), b.as_i32x16())) }
679}
680
681/// Add packed 32-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
682///
683/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_add_epi32&expand=101)
684#[inline]
685#[target_feature(enable = "avx512f")]
686#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
687#[cfg_attr(test, assert_instr(vpaddd))]
688#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
689pub const fn _mm512_mask_add_epi32(src: __m512i, k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
690    unsafe {
691        let add = _mm512_add_epi32(a, b).as_i32x16();
692        transmute(simd_select_bitmask(k, add, src.as_i32x16()))
693    }
694}
695
696/// Add packed 32-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
697///
698/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_add_epi32&expand=102)
699#[inline]
700#[target_feature(enable = "avx512f")]
701#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
702#[cfg_attr(test, assert_instr(vpaddd))]
703#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
704pub const fn _mm512_maskz_add_epi32(k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
705    unsafe {
706        let add = _mm512_add_epi32(a, b).as_i32x16();
707        transmute(simd_select_bitmask(k, add, i32x16::ZERO))
708    }
709}
710
711/// Add packed 32-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
712///
713/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_add_epi32&expand=98)
714#[inline]
715#[target_feature(enable = "avx512f,avx512vl")]
716#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
717#[cfg_attr(test, assert_instr(vpaddd))]
718#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
719pub const fn _mm256_mask_add_epi32(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
720    unsafe {
721        let add = _mm256_add_epi32(a, b).as_i32x8();
722        transmute(simd_select_bitmask(k, add, src.as_i32x8()))
723    }
724}
725
726/// Add packed 32-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
727///
728/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_add_epi32&expand=99)
729#[inline]
730#[target_feature(enable = "avx512f,avx512vl")]
731#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
732#[cfg_attr(test, assert_instr(vpaddd))]
733#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
734pub const fn _mm256_maskz_add_epi32(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
735    unsafe {
736        let add = _mm256_add_epi32(a, b).as_i32x8();
737        transmute(simd_select_bitmask(k, add, i32x8::ZERO))
738    }
739}
740
741/// Add packed 32-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
742///
743/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_add_epi32&expand=95)
744#[inline]
745#[target_feature(enable = "avx512f,avx512vl")]
746#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
747#[cfg_attr(test, assert_instr(vpaddd))]
748#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
749pub const fn _mm_mask_add_epi32(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
750    unsafe {
751        let add = _mm_add_epi32(a, b).as_i32x4();
752        transmute(simd_select_bitmask(k, add, src.as_i32x4()))
753    }
754}
755
756/// Add packed 32-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
757///
758/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_add_epi32&expand=96)
759#[inline]
760#[target_feature(enable = "avx512f,avx512vl")]
761#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
762#[cfg_attr(test, assert_instr(vpaddd))]
763#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
764pub const fn _mm_maskz_add_epi32(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
765    unsafe {
766        let add = _mm_add_epi32(a, b).as_i32x4();
767        transmute(simd_select_bitmask(k, add, i32x4::ZERO))
768    }
769}
770
771/// Add packed 64-bit integers in a and b, and store the results in dst.
772///
773/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_add_epi64&expand=109)
774#[inline]
775#[target_feature(enable = "avx512f")]
776#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
777#[cfg_attr(test, assert_instr(vpaddq))]
778#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
779pub const fn _mm512_add_epi64(a: __m512i, b: __m512i) -> __m512i {
780    unsafe { transmute(simd_add(a.as_i64x8(), b.as_i64x8())) }
781}
782
783/// Add packed 64-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
784///
785/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_add_epi64&expand=110)
786#[inline]
787#[target_feature(enable = "avx512f")]
788#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
789#[cfg_attr(test, assert_instr(vpaddq))]
790#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
791pub const fn _mm512_mask_add_epi64(src: __m512i, k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
792    unsafe {
793        let add = _mm512_add_epi64(a, b).as_i64x8();
794        transmute(simd_select_bitmask(k, add, src.as_i64x8()))
795    }
796}
797
798/// Add packed 64-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
799///
800/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_add_epi64&expand=111)
801#[inline]
802#[target_feature(enable = "avx512f")]
803#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
804#[cfg_attr(test, assert_instr(vpaddq))]
805#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
806pub const fn _mm512_maskz_add_epi64(k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
807    unsafe {
808        let add = _mm512_add_epi64(a, b).as_i64x8();
809        transmute(simd_select_bitmask(k, add, i64x8::ZERO))
810    }
811}
812
813/// Add packed 64-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
814///
815/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_add_epi64&expand=107)
816#[inline]
817#[target_feature(enable = "avx512f,avx512vl")]
818#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
819#[cfg_attr(test, assert_instr(vpaddq))]
820#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
821pub const fn _mm256_mask_add_epi64(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
822    unsafe {
823        let add = _mm256_add_epi64(a, b).as_i64x4();
824        transmute(simd_select_bitmask(k, add, src.as_i64x4()))
825    }
826}
827
828/// Add packed 64-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
829///
830/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_add_epi64&expand=108)
831#[inline]
832#[target_feature(enable = "avx512f,avx512vl")]
833#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
834#[cfg_attr(test, assert_instr(vpaddq))]
835#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
836pub const fn _mm256_maskz_add_epi64(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
837    unsafe {
838        let add = _mm256_add_epi64(a, b).as_i64x4();
839        transmute(simd_select_bitmask(k, add, i64x4::ZERO))
840    }
841}
842
843/// Add packed 64-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
844///
845/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_add_epi64&expand=104)
846#[inline]
847#[target_feature(enable = "avx512f,avx512vl")]
848#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
849#[cfg_attr(test, assert_instr(vpaddq))]
850#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
851pub const fn _mm_mask_add_epi64(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
852    unsafe {
853        let add = _mm_add_epi64(a, b).as_i64x2();
854        transmute(simd_select_bitmask(k, add, src.as_i64x2()))
855    }
856}
857
858/// Add packed 64-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
859///
860/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_add_epi64&expand=105)
861#[inline]
862#[target_feature(enable = "avx512f,avx512vl")]
863#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
864#[cfg_attr(test, assert_instr(vpaddq))]
865#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
866pub const fn _mm_maskz_add_epi64(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
867    unsafe {
868        let add = _mm_add_epi64(a, b).as_i64x2();
869        transmute(simd_select_bitmask(k, add, i64x2::ZERO))
870    }
871}
872
873/// Add packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst.
874///
875/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_add_ps&expand=139)
876#[inline]
877#[target_feature(enable = "avx512f")]
878#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
879#[cfg_attr(test, assert_instr(vaddps))]
880#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
881pub const fn _mm512_add_ps(a: __m512, b: __m512) -> __m512 {
882    unsafe { transmute(simd_add(a.as_f32x16(), b.as_f32x16())) }
883}
884
885/// Add packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
886///
887/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_add_ps&expand=140)
888#[inline]
889#[target_feature(enable = "avx512f")]
890#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
891#[cfg_attr(test, assert_instr(vaddps))]
892#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
893pub const fn _mm512_mask_add_ps(src: __m512, k: __mmask16, a: __m512, b: __m512) -> __m512 {
894    unsafe {
895        let add = _mm512_add_ps(a, b).as_f32x16();
896        transmute(simd_select_bitmask(k, add, src.as_f32x16()))
897    }
898}
899
900/// Add packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
901///
902/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_add_ps&expand=141)
903#[inline]
904#[target_feature(enable = "avx512f")]
905#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
906#[cfg_attr(test, assert_instr(vaddps))]
907#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
908pub const fn _mm512_maskz_add_ps(k: __mmask16, a: __m512, b: __m512) -> __m512 {
909    unsafe {
910        let add = _mm512_add_ps(a, b).as_f32x16();
911        transmute(simd_select_bitmask(k, add, f32x16::ZERO))
912    }
913}
914
915/// Add packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
916///
917/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_add_ps&expand=137)
918#[inline]
919#[target_feature(enable = "avx512f,avx512vl")]
920#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
921#[cfg_attr(test, assert_instr(vaddps))]
922#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
923pub const fn _mm256_mask_add_ps(src: __m256, k: __mmask8, a: __m256, b: __m256) -> __m256 {
924    unsafe {
925        let add = _mm256_add_ps(a, b).as_f32x8();
926        transmute(simd_select_bitmask(k, add, src.as_f32x8()))
927    }
928}
929
930/// Add packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
931///
932/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_add_ps&expand=138)
933#[inline]
934#[target_feature(enable = "avx512f,avx512vl")]
935#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
936#[cfg_attr(test, assert_instr(vaddps))]
937#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
938pub const fn _mm256_maskz_add_ps(k: __mmask8, a: __m256, b: __m256) -> __m256 {
939    unsafe {
940        let add = _mm256_add_ps(a, b).as_f32x8();
941        transmute(simd_select_bitmask(k, add, f32x8::ZERO))
942    }
943}
944
945/// Add packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
946///
947/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_add_ps&expand=134)
948#[inline]
949#[target_feature(enable = "avx512f,avx512vl")]
950#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
951#[cfg_attr(test, assert_instr(vaddps))]
952#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
953pub const fn _mm_mask_add_ps(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
954    unsafe {
955        let add = _mm_add_ps(a, b).as_f32x4();
956        transmute(simd_select_bitmask(k, add, src.as_f32x4()))
957    }
958}
959
960/// Add packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
961///
962/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_add_ps&expand=135)
963#[inline]
964#[target_feature(enable = "avx512f,avx512vl")]
965#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
966#[cfg_attr(test, assert_instr(vaddps))]
967#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
968pub const fn _mm_maskz_add_ps(k: __mmask8, a: __m128, b: __m128) -> __m128 {
969    unsafe {
970        let add = _mm_add_ps(a, b).as_f32x4();
971        transmute(simd_select_bitmask(k, add, f32x4::ZERO))
972    }
973}
974
975/// Add packed double-precision (64-bit) floating-point elements in a and b, and store the results in dst.
976///
977/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_add_pd&expand=127)
978#[inline]
979#[target_feature(enable = "avx512f")]
980#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
981#[cfg_attr(test, assert_instr(vaddpd))]
982#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
983pub const fn _mm512_add_pd(a: __m512d, b: __m512d) -> __m512d {
984    unsafe { transmute(simd_add(a.as_f64x8(), b.as_f64x8())) }
985}
986
987/// Add packed double-precision (64-bit) floating-point elements in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
988///
989/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_add_pd&expand=128)
990#[inline]
991#[target_feature(enable = "avx512f")]
992#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
993#[cfg_attr(test, assert_instr(vaddpd))]
994#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
995pub const fn _mm512_mask_add_pd(src: __m512d, k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
996    unsafe {
997        let add = _mm512_add_pd(a, b).as_f64x8();
998        transmute(simd_select_bitmask(k, add, src.as_f64x8()))
999    }
1000}
1001
1002/// Add packed double-precision (64-bit) floating-point elements in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1003///
1004/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_add_pd&expand=129)
1005#[inline]
1006#[target_feature(enable = "avx512f")]
1007#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1008#[cfg_attr(test, assert_instr(vaddpd))]
1009#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1010pub const fn _mm512_maskz_add_pd(k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
1011    unsafe {
1012        let add = _mm512_add_pd(a, b).as_f64x8();
1013        transmute(simd_select_bitmask(k, add, f64x8::ZERO))
1014    }
1015}
1016
1017/// Add packed double-precision (64-bit) floating-point elements in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1018///
1019/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_add_pd&expand=125)
1020#[inline]
1021#[target_feature(enable = "avx512f,avx512vl")]
1022#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1023#[cfg_attr(test, assert_instr(vaddpd))]
1024#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1025pub const fn _mm256_mask_add_pd(src: __m256d, k: __mmask8, a: __m256d, b: __m256d) -> __m256d {
1026    unsafe {
1027        let add = _mm256_add_pd(a, b).as_f64x4();
1028        transmute(simd_select_bitmask(k, add, src.as_f64x4()))
1029    }
1030}
1031
1032/// Add packed double-precision (64-bit) floating-point elements in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1033///
1034/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_add_pd&expand=126)
1035#[inline]
1036#[target_feature(enable = "avx512f,avx512vl")]
1037#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1038#[cfg_attr(test, assert_instr(vaddpd))]
1039#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1040pub const fn _mm256_maskz_add_pd(k: __mmask8, a: __m256d, b: __m256d) -> __m256d {
1041    unsafe {
1042        let add = _mm256_add_pd(a, b).as_f64x4();
1043        transmute(simd_select_bitmask(k, add, f64x4::ZERO))
1044    }
1045}
1046
1047/// Add packed double-precision (64-bit) floating-point elements in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1048///
1049/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_add_pd&expand=122)
1050#[inline]
1051#[target_feature(enable = "avx512f,avx512vl")]
1052#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1053#[cfg_attr(test, assert_instr(vaddpd))]
1054#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1055pub const fn _mm_mask_add_pd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
1056    unsafe {
1057        let add = _mm_add_pd(a, b).as_f64x2();
1058        transmute(simd_select_bitmask(k, add, src.as_f64x2()))
1059    }
1060}
1061
1062/// Add packed double-precision (64-bit) floating-point elements in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1063///
1064/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_add_pd&expand=123)
1065#[inline]
1066#[target_feature(enable = "avx512f,avx512vl")]
1067#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1068#[cfg_attr(test, assert_instr(vaddpd))]
1069#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1070pub const fn _mm_maskz_add_pd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
1071    unsafe {
1072        let add = _mm_add_pd(a, b).as_f64x2();
1073        transmute(simd_select_bitmask(k, add, f64x2::ZERO))
1074    }
1075}
1076
1077/// Subtract packed 32-bit integers in b from packed 32-bit integers in a, and store the results in dst.
1078///
1079/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_sub_epi32&expand=5694)
1080#[inline]
1081#[target_feature(enable = "avx512f")]
1082#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1083#[cfg_attr(test, assert_instr(vpsubd))]
1084#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1085pub const fn _mm512_sub_epi32(a: __m512i, b: __m512i) -> __m512i {
1086    unsafe { transmute(simd_sub(a.as_i32x16(), b.as_i32x16())) }
1087}
1088
1089/// Subtract packed 32-bit integers in b from packed 32-bit integers in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1090///
1091/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_sub_epi32&expand=5692)
1092#[inline]
1093#[target_feature(enable = "avx512f")]
1094#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1095#[cfg_attr(test, assert_instr(vpsubd))]
1096#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1097pub const fn _mm512_mask_sub_epi32(src: __m512i, k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
1098    unsafe {
1099        let sub = _mm512_sub_epi32(a, b).as_i32x16();
1100        transmute(simd_select_bitmask(k, sub, src.as_i32x16()))
1101    }
1102}
1103
1104/// Subtract packed 32-bit integers in b from packed 32-bit integers in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1105///
1106/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_sub_epi32&expand=5693)
1107#[inline]
1108#[target_feature(enable = "avx512f")]
1109#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1110#[cfg_attr(test, assert_instr(vpsubd))]
1111#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1112pub const fn _mm512_maskz_sub_epi32(k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
1113    unsafe {
1114        let sub = _mm512_sub_epi32(a, b).as_i32x16();
1115        transmute(simd_select_bitmask(k, sub, i32x16::ZERO))
1116    }
1117}
1118
1119/// Subtract packed 32-bit integers in b from packed 32-bit integers in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1120///
1121/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_sub_epi32&expand=5689)
1122#[inline]
1123#[target_feature(enable = "avx512f,avx512vl")]
1124#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1125#[cfg_attr(test, assert_instr(vpsubd))]
1126#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1127pub const fn _mm256_mask_sub_epi32(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
1128    unsafe {
1129        let sub = _mm256_sub_epi32(a, b).as_i32x8();
1130        transmute(simd_select_bitmask(k, sub, src.as_i32x8()))
1131    }
1132}
1133
1134/// Subtract packed 32-bit integers in b from packed 32-bit integers in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1135///
1136/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_sub_epi32&expand=5690)
1137#[inline]
1138#[target_feature(enable = "avx512f,avx512vl")]
1139#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1140#[cfg_attr(test, assert_instr(vpsubd))]
1141#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1142pub const fn _mm256_maskz_sub_epi32(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
1143    unsafe {
1144        let sub = _mm256_sub_epi32(a, b).as_i32x8();
1145        transmute(simd_select_bitmask(k, sub, i32x8::ZERO))
1146    }
1147}
1148
1149/// Subtract packed 32-bit integers in b from packed 32-bit integers in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1150///
1151/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_sub_epi32&expand=5686)
1152#[inline]
1153#[target_feature(enable = "avx512f,avx512vl")]
1154#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1155#[cfg_attr(test, assert_instr(vpsubd))]
1156#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1157pub const fn _mm_mask_sub_epi32(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
1158    unsafe {
1159        let sub = _mm_sub_epi32(a, b).as_i32x4();
1160        transmute(simd_select_bitmask(k, sub, src.as_i32x4()))
1161    }
1162}
1163
1164/// Subtract packed 32-bit integers in b from packed 32-bit integers in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1165///
1166/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_sub_epi32&expand=5687)
1167#[inline]
1168#[target_feature(enable = "avx512f,avx512vl")]
1169#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1170#[cfg_attr(test, assert_instr(vpsubd))]
1171#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1172pub const fn _mm_maskz_sub_epi32(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
1173    unsafe {
1174        let sub = _mm_sub_epi32(a, b).as_i32x4();
1175        transmute(simd_select_bitmask(k, sub, i32x4::ZERO))
1176    }
1177}
1178
1179/// Subtract packed 64-bit integers in b from packed 64-bit integers in a, and store the results in dst.
1180///
1181/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_sub_epi64&expand=5703)
1182#[inline]
1183#[target_feature(enable = "avx512f")]
1184#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1185#[cfg_attr(test, assert_instr(vpsubq))]
1186#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1187pub const fn _mm512_sub_epi64(a: __m512i, b: __m512i) -> __m512i {
1188    unsafe { transmute(simd_sub(a.as_i64x8(), b.as_i64x8())) }
1189}
1190
1191/// Subtract packed 64-bit integers in b from packed 64-bit integers in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1192///
1193/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_sub_epi64&expand=5701)
1194#[inline]
1195#[target_feature(enable = "avx512f")]
1196#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1197#[cfg_attr(test, assert_instr(vpsubq))]
1198#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1199pub const fn _mm512_mask_sub_epi64(src: __m512i, k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
1200    unsafe {
1201        let sub = _mm512_sub_epi64(a, b).as_i64x8();
1202        transmute(simd_select_bitmask(k, sub, src.as_i64x8()))
1203    }
1204}
1205
1206/// Subtract packed 64-bit integers in b from packed 64-bit integers in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1207///
1208/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_sub_epi64&expand=5702)
1209#[inline]
1210#[target_feature(enable = "avx512f")]
1211#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1212#[cfg_attr(test, assert_instr(vpsubq))]
1213#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1214pub const fn _mm512_maskz_sub_epi64(k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
1215    unsafe {
1216        let sub = _mm512_sub_epi64(a, b).as_i64x8();
1217        transmute(simd_select_bitmask(k, sub, i64x8::ZERO))
1218    }
1219}
1220
1221/// Subtract packed 64-bit integers in b from packed 64-bit integers in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1222///
1223/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_sub_epi64&expand=5698)
1224#[inline]
1225#[target_feature(enable = "avx512f,avx512vl")]
1226#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1227#[cfg_attr(test, assert_instr(vpsubq))]
1228#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1229pub const fn _mm256_mask_sub_epi64(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
1230    unsafe {
1231        let sub = _mm256_sub_epi64(a, b).as_i64x4();
1232        transmute(simd_select_bitmask(k, sub, src.as_i64x4()))
1233    }
1234}
1235
1236/// Subtract packed 64-bit integers in b from packed 64-bit integers in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1237///
1238/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_sub_epi64&expand=5699)
1239#[inline]
1240#[target_feature(enable = "avx512f,avx512vl")]
1241#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1242#[cfg_attr(test, assert_instr(vpsubq))]
1243#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1244pub const fn _mm256_maskz_sub_epi64(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
1245    unsafe {
1246        let sub = _mm256_sub_epi64(a, b).as_i64x4();
1247        transmute(simd_select_bitmask(k, sub, i64x4::ZERO))
1248    }
1249}
1250
1251/// Subtract packed 64-bit integers in b from packed 64-bit integers in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1252///
1253/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_sub_epi64&expand=5695)
1254#[inline]
1255#[target_feature(enable = "avx512f,avx512vl")]
1256#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1257#[cfg_attr(test, assert_instr(vpsubq))]
1258#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1259pub const fn _mm_mask_sub_epi64(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
1260    unsafe {
1261        let sub = _mm_sub_epi64(a, b).as_i64x2();
1262        transmute(simd_select_bitmask(k, sub, src.as_i64x2()))
1263    }
1264}
1265
1266/// Subtract packed 64-bit integers in b from packed 64-bit integers in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1267///
1268/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_sub_epi64&expand=5696)
1269#[inline]
1270#[target_feature(enable = "avx512f,avx512vl")]
1271#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1272#[cfg_attr(test, assert_instr(vpsubq))]
1273#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1274pub const fn _mm_maskz_sub_epi64(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
1275    unsafe {
1276        let sub = _mm_sub_epi64(a, b).as_i64x2();
1277        transmute(simd_select_bitmask(k, sub, i64x2::ZERO))
1278    }
1279}
1280
1281/// Subtract packed single-precision (32-bit) floating-point elements in b from packed single-precision (32-bit) floating-point elements in a, and store the results in dst.
1282///
1283/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_sub_ps&expand=5733)
1284#[inline]
1285#[target_feature(enable = "avx512f")]
1286#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1287#[cfg_attr(test, assert_instr(vsubps))]
1288#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1289pub const fn _mm512_sub_ps(a: __m512, b: __m512) -> __m512 {
1290    unsafe { transmute(simd_sub(a.as_f32x16(), b.as_f32x16())) }
1291}
1292
1293/// Subtract packed single-precision (32-bit) floating-point elements in b from packed single-precision (32-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1294///
1295/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_sub_ps&expand=5731)
1296#[inline]
1297#[target_feature(enable = "avx512f")]
1298#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1299#[cfg_attr(test, assert_instr(vsubps))]
1300#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1301pub const fn _mm512_mask_sub_ps(src: __m512, k: __mmask16, a: __m512, b: __m512) -> __m512 {
1302    unsafe {
1303        let sub = _mm512_sub_ps(a, b).as_f32x16();
1304        transmute(simd_select_bitmask(k, sub, src.as_f32x16()))
1305    }
1306}
1307
1308/// Subtract packed single-precision (32-bit) floating-point elements in b from packed single-precision (32-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1309///
1310/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_sub_ps&expand=5732)
1311#[inline]
1312#[target_feature(enable = "avx512f")]
1313#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1314#[cfg_attr(test, assert_instr(vsubps))]
1315#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1316pub const fn _mm512_maskz_sub_ps(k: __mmask16, a: __m512, b: __m512) -> __m512 {
1317    unsafe {
1318        let sub = _mm512_sub_ps(a, b).as_f32x16();
1319        transmute(simd_select_bitmask(k, sub, f32x16::ZERO))
1320    }
1321}
1322
1323/// Subtract packed single-precision (32-bit) floating-point elements in b from packed single-precision (32-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1324///
1325/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_sub_ps&expand=5728)
1326#[inline]
1327#[target_feature(enable = "avx512f,avx512vl")]
1328#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1329#[cfg_attr(test, assert_instr(vsubps))]
1330#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1331pub const fn _mm256_mask_sub_ps(src: __m256, k: __mmask8, a: __m256, b: __m256) -> __m256 {
1332    unsafe {
1333        let sub = _mm256_sub_ps(a, b).as_f32x8();
1334        transmute(simd_select_bitmask(k, sub, src.as_f32x8()))
1335    }
1336}
1337
1338/// Subtract packed single-precision (32-bit) floating-point elements in b from packed single-precision (32-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1339///
1340/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_sub_ps&expand=5729)
1341#[inline]
1342#[target_feature(enable = "avx512f,avx512vl")]
1343#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1344#[cfg_attr(test, assert_instr(vsubps))]
1345#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1346pub const fn _mm256_maskz_sub_ps(k: __mmask8, a: __m256, b: __m256) -> __m256 {
1347    unsafe {
1348        let sub = _mm256_sub_ps(a, b).as_f32x8();
1349        transmute(simd_select_bitmask(k, sub, f32x8::ZERO))
1350    }
1351}
1352
1353/// Subtract packed single-precision (32-bit) floating-point elements in b from packed single-precision (32-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1354///
1355/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_sub_ps&expand=5725)
1356#[inline]
1357#[target_feature(enable = "avx512f,avx512vl")]
1358#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1359#[cfg_attr(test, assert_instr(vsubps))]
1360#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1361pub const fn _mm_mask_sub_ps(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
1362    unsafe {
1363        let sub = _mm_sub_ps(a, b).as_f32x4();
1364        transmute(simd_select_bitmask(k, sub, src.as_f32x4()))
1365    }
1366}
1367
1368/// Subtract packed single-precision (32-bit) floating-point elements in b from packed single-precision (32-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1369///
1370/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_sub_ps&expand=5726)
1371#[inline]
1372#[target_feature(enable = "avx512f,avx512vl")]
1373#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1374#[cfg_attr(test, assert_instr(vsubps))]
1375#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1376pub const fn _mm_maskz_sub_ps(k: __mmask8, a: __m128, b: __m128) -> __m128 {
1377    unsafe {
1378        let sub = _mm_sub_ps(a, b).as_f32x4();
1379        transmute(simd_select_bitmask(k, sub, f32x4::ZERO))
1380    }
1381}
1382
1383/// Subtract packed double-precision (64-bit) floating-point elements in b from packed double-precision (64-bit) floating-point elements in a, and store the results in dst.
1384///
1385/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_sub_pd&expand=5721)
1386#[inline]
1387#[target_feature(enable = "avx512f")]
1388#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1389#[cfg_attr(test, assert_instr(vsubpd))]
1390#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1391pub const fn _mm512_sub_pd(a: __m512d, b: __m512d) -> __m512d {
1392    unsafe { transmute(simd_sub(a.as_f64x8(), b.as_f64x8())) }
1393}
1394
1395/// Subtract packed double-precision (64-bit) floating-point elements in b from packed double-precision (64-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1396///
1397/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_sub_pd&expand=5719)
1398#[inline]
1399#[target_feature(enable = "avx512f")]
1400#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1401#[cfg_attr(test, assert_instr(vsubpd))]
1402#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1403pub const fn _mm512_mask_sub_pd(src: __m512d, k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
1404    unsafe {
1405        let sub = _mm512_sub_pd(a, b).as_f64x8();
1406        transmute(simd_select_bitmask(k, sub, src.as_f64x8()))
1407    }
1408}
1409
1410/// Subtract packed double-precision (64-bit) floating-point elements in b from packed double-precision (64-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1411///
1412/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_sub_pd&expand=5720)
1413#[inline]
1414#[target_feature(enable = "avx512f")]
1415#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1416#[cfg_attr(test, assert_instr(vsubpd))]
1417#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1418pub const fn _mm512_maskz_sub_pd(k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
1419    unsafe {
1420        let sub = _mm512_sub_pd(a, b).as_f64x8();
1421        transmute(simd_select_bitmask(k, sub, f64x8::ZERO))
1422    }
1423}
1424
1425/// Subtract packed double-precision (64-bit) floating-point elements in b from packed double-precision (64-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1426///
1427/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_sub_pd&expand=5716)
1428#[inline]
1429#[target_feature(enable = "avx512f,avx512vl")]
1430#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1431#[cfg_attr(test, assert_instr(vsubpd))]
1432#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1433pub const fn _mm256_mask_sub_pd(src: __m256d, k: __mmask8, a: __m256d, b: __m256d) -> __m256d {
1434    unsafe {
1435        let sub = _mm256_sub_pd(a, b).as_f64x4();
1436        transmute(simd_select_bitmask(k, sub, src.as_f64x4()))
1437    }
1438}
1439
1440/// Subtract packed double-precision (64-bit) floating-point elements in b from packed double-precision (64-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1441///
1442/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_sub_pd&expand=5717)
1443#[inline]
1444#[target_feature(enable = "avx512f,avx512vl")]
1445#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1446#[cfg_attr(test, assert_instr(vsubpd))]
1447#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1448pub const fn _mm256_maskz_sub_pd(k: __mmask8, a: __m256d, b: __m256d) -> __m256d {
1449    unsafe {
1450        let sub = _mm256_sub_pd(a, b).as_f64x4();
1451        transmute(simd_select_bitmask(k, sub, f64x4::ZERO))
1452    }
1453}
1454
1455/// Subtract packed double-precision (64-bit) floating-point elements in b from packed double-precision (64-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1456///
1457/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_sub_pd&expand=5713)
1458#[inline]
1459#[target_feature(enable = "avx512f,avx512vl")]
1460#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1461#[cfg_attr(test, assert_instr(vsubpd))]
1462#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1463pub const fn _mm_mask_sub_pd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
1464    unsafe {
1465        let sub = _mm_sub_pd(a, b).as_f64x2();
1466        transmute(simd_select_bitmask(k, sub, src.as_f64x2()))
1467    }
1468}
1469
1470/// Subtract packed double-precision (64-bit) floating-point elements in b from packed double-precision (64-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1471///
1472/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_sub_pd&expand=5714)
1473#[inline]
1474#[target_feature(enable = "avx512f,avx512vl")]
1475#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1476#[cfg_attr(test, assert_instr(vsubpd))]
1477#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1478pub const fn _mm_maskz_sub_pd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
1479    unsafe {
1480        let sub = _mm_sub_pd(a, b).as_f64x2();
1481        transmute(simd_select_bitmask(k, sub, f64x2::ZERO))
1482    }
1483}
1484
1485/// Multiply the low signed 32-bit integers from each packed 64-bit element in a and b, and store the signed 64-bit results in dst.
1486///
1487/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mul_epi32&expand=3907)
1488#[inline]
1489#[target_feature(enable = "avx512f")]
1490#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1491#[cfg_attr(test, assert_instr(vpmuldq))]
1492#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1493pub const fn _mm512_mul_epi32(a: __m512i, b: __m512i) -> __m512i {
1494    unsafe {
1495        let a = simd_cast::<_, i64x8>(simd_cast::<_, i32x8>(a.as_i64x8()));
1496        let b = simd_cast::<_, i64x8>(simd_cast::<_, i32x8>(b.as_i64x8()));
1497        transmute(simd_mul(a, b))
1498    }
1499}
1500
1501/// Multiply the low signed 32-bit integers from each packed 64-bit element in a and b, and store the signed 64-bit results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1502///
1503/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_mul_epi32&expand=3905)
1504#[inline]
1505#[target_feature(enable = "avx512f")]
1506#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1507#[cfg_attr(test, assert_instr(vpmuldq))]
1508#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1509pub const fn _mm512_mask_mul_epi32(src: __m512i, k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
1510    unsafe {
1511        let mul = _mm512_mul_epi32(a, b).as_i64x8();
1512        transmute(simd_select_bitmask(k, mul, src.as_i64x8()))
1513    }
1514}
1515
1516/// Multiply the low signed 32-bit integers from each packed 64-bit element in a and b, and store the signed 64-bit results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1517///
1518/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_mul_epi32&expand=3906)
1519#[inline]
1520#[target_feature(enable = "avx512f")]
1521#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1522#[cfg_attr(test, assert_instr(vpmuldq))]
1523#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1524pub const fn _mm512_maskz_mul_epi32(k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
1525    unsafe {
1526        let mul = _mm512_mul_epi32(a, b).as_i64x8();
1527        transmute(simd_select_bitmask(k, mul, i64x8::ZERO))
1528    }
1529}
1530
1531/// Multiply the low signed 32-bit integers from each packed 64-bit element in a and b, and store the signed 64-bit results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1532///
1533/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_mul_epi32&expand=3902)
1534#[inline]
1535#[target_feature(enable = "avx512f,avx512vl")]
1536#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1537#[cfg_attr(test, assert_instr(vpmuldq))]
1538#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1539pub const fn _mm256_mask_mul_epi32(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
1540    unsafe {
1541        let mul = _mm256_mul_epi32(a, b).as_i64x4();
1542        transmute(simd_select_bitmask(k, mul, src.as_i64x4()))
1543    }
1544}
1545
1546/// Multiply the low signed 32-bit integers from each packed 64-bit element in a and b, and store the signed 64-bit results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1547///
1548/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_mul_epi32&expand=3903)
1549#[inline]
1550#[target_feature(enable = "avx512f,avx512vl")]
1551#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1552#[cfg_attr(test, assert_instr(vpmuldq))]
1553#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1554pub const fn _mm256_maskz_mul_epi32(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
1555    unsafe {
1556        let mul = _mm256_mul_epi32(a, b).as_i64x4();
1557        transmute(simd_select_bitmask(k, mul, i64x4::ZERO))
1558    }
1559}
1560
1561/// Multiply the low signed 32-bit integers from each packed 64-bit element in a and b, and store the signed 64-bit results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1562///
1563/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_mul_epi32&expand=3899)
1564#[inline]
1565#[target_feature(enable = "avx512f,avx512vl")]
1566#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1567#[cfg_attr(test, assert_instr(vpmuldq))]
1568#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1569pub const fn _mm_mask_mul_epi32(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
1570    unsafe {
1571        let mul = _mm_mul_epi32(a, b).as_i64x2();
1572        transmute(simd_select_bitmask(k, mul, src.as_i64x2()))
1573    }
1574}
1575
1576/// Multiply the low signed 32-bit integers from each packed 64-bit element in a and b, and store the signed 64-bit results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1577///
1578/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_mul_epi32&expand=3900)
1579#[inline]
1580#[target_feature(enable = "avx512f,avx512vl")]
1581#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1582#[cfg_attr(test, assert_instr(vpmuldq))]
1583#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1584pub const fn _mm_maskz_mul_epi32(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
1585    unsafe {
1586        let mul = _mm_mul_epi32(a, b).as_i64x2();
1587        transmute(simd_select_bitmask(k, mul, i64x2::ZERO))
1588    }
1589}
1590
1591/// Multiply the packed 32-bit integers in a and b, producing intermediate 64-bit integers, and store the low 32 bits of the intermediate integers in dst.
1592///
1593/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mullo_epi32&expand=4005)
1594#[inline]
1595#[target_feature(enable = "avx512f")]
1596#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1597#[cfg_attr(test, assert_instr(vpmulld))]
1598#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1599pub const fn _mm512_mullo_epi32(a: __m512i, b: __m512i) -> __m512i {
1600    unsafe { transmute(simd_mul(a.as_i32x16(), b.as_i32x16())) }
1601}
1602
1603/// Multiply the packed 32-bit integers in a and b, producing intermediate 64-bit integers, and store the low 32 bits of the intermediate integers in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1604///
1605/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_mullo_epi32&expand=4003)
1606#[inline]
1607#[target_feature(enable = "avx512f")]
1608#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1609#[cfg_attr(test, assert_instr(vpmulld))]
1610#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1611pub const fn _mm512_mask_mullo_epi32(
1612    src: __m512i,
1613    k: __mmask16,
1614    a: __m512i,
1615    b: __m512i,
1616) -> __m512i {
1617    unsafe {
1618        let mul = _mm512_mullo_epi32(a, b).as_i32x16();
1619        transmute(simd_select_bitmask(k, mul, src.as_i32x16()))
1620    }
1621}
1622
1623/// Multiply the packed 32-bit integers in a and b, producing intermediate 64-bit integers, and store the low 32 bits of the intermediate integers in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1624///
1625/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_mullo_epi32&expand=4004)
1626#[inline]
1627#[target_feature(enable = "avx512f")]
1628#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1629#[cfg_attr(test, assert_instr(vpmulld))]
1630#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1631pub const fn _mm512_maskz_mullo_epi32(k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
1632    unsafe {
1633        let mul = _mm512_mullo_epi32(a, b).as_i32x16();
1634        transmute(simd_select_bitmask(k, mul, i32x16::ZERO))
1635    }
1636}
1637
1638/// Multiply the packed 32-bit integers in a and b, producing intermediate 64-bit integers, and store the low 32 bits of the intermediate integers in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1639///
1640/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_mullo_epi32&expand=4000)
1641#[inline]
1642#[target_feature(enable = "avx512f,avx512vl")]
1643#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1644#[cfg_attr(test, assert_instr(vpmulld))]
1645#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1646pub const fn _mm256_mask_mullo_epi32(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
1647    unsafe {
1648        let mul = _mm256_mullo_epi32(a, b).as_i32x8();
1649        transmute(simd_select_bitmask(k, mul, src.as_i32x8()))
1650    }
1651}
1652
1653/// Multiply the packed 32-bit integers in a and b, producing intermediate 64-bit integers, and store the low 32 bits of the intermediate integers in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1654///
1655/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_mullo_epi32&expand=4001)
1656#[inline]
1657#[target_feature(enable = "avx512f,avx512vl")]
1658#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1659#[cfg_attr(test, assert_instr(vpmulld))]
1660#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1661pub const fn _mm256_maskz_mullo_epi32(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
1662    unsafe {
1663        let mul = _mm256_mullo_epi32(a, b).as_i32x8();
1664        transmute(simd_select_bitmask(k, mul, i32x8::ZERO))
1665    }
1666}
1667
1668/// Multiply the packed 32-bit integers in a and b, producing intermediate 64-bit integers, and store the low 32 bits of the intermediate integers in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1669///
1670/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_mullo_epi32&expand=3997)
1671#[inline]
1672#[target_feature(enable = "avx512f,avx512vl")]
1673#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1674#[cfg_attr(test, assert_instr(vpmulld))]
1675#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1676pub const fn _mm_mask_mullo_epi32(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
1677    unsafe {
1678        let mul = _mm_mullo_epi32(a, b).as_i32x4();
1679        transmute(simd_select_bitmask(k, mul, src.as_i32x4()))
1680    }
1681}
1682
1683/// Multiply the packed 32-bit integers in a and b, producing intermediate 64-bit integers, and store the low 32 bits of the intermediate integers in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1684///
1685/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_mullo_epi32&expand=3998)
1686#[inline]
1687#[target_feature(enable = "avx512f,avx512vl")]
1688#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1689#[cfg_attr(test, assert_instr(vpmulld))]
1690#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1691pub const fn _mm_maskz_mullo_epi32(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
1692    unsafe {
1693        let mul = _mm_mullo_epi32(a, b).as_i32x4();
1694        transmute(simd_select_bitmask(k, mul, i32x4::ZERO))
1695    }
1696}
1697
1698/// Multiplies elements in packed 64-bit integer vectors a and b together, storing the lower 64 bits of the result in dst.
1699///
1700/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mullox_epi64&expand=4017)
1701///
1702/// This intrinsic generates a sequence of instructions, which may perform worse than a native instruction. Consider the performance impact of this intrinsic.
1703#[inline]
1704#[target_feature(enable = "avx512f")]
1705#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1706#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1707pub const fn _mm512_mullox_epi64(a: __m512i, b: __m512i) -> __m512i {
1708    unsafe { transmute(simd_mul(a.as_i64x8(), b.as_i64x8())) }
1709}
1710
1711/// Multiplies elements in packed 64-bit integer vectors a and b together, storing the lower 64 bits of the result in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1712///
1713/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_mullox_epi64&expand=4016)
1714///
1715/// This intrinsic generates a sequence of instructions, which may perform worse than a native instruction. Consider the performance impact of this intrinsic.
1716#[inline]
1717#[target_feature(enable = "avx512f")]
1718#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1719#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1720pub const fn _mm512_mask_mullox_epi64(
1721    src: __m512i,
1722    k: __mmask8,
1723    a: __m512i,
1724    b: __m512i,
1725) -> __m512i {
1726    unsafe {
1727        let mul = _mm512_mullox_epi64(a, b).as_i64x8();
1728        transmute(simd_select_bitmask(k, mul, src.as_i64x8()))
1729    }
1730}
1731
1732/// Multiply the low unsigned 32-bit integers from each packed 64-bit element in a and b, and store the unsigned 64-bit results in dst.
1733///
1734/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mul_epu32&expand=3916)
1735#[inline]
1736#[target_feature(enable = "avx512f")]
1737#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1738#[cfg_attr(test, assert_instr(vpmuludq))]
1739#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1740pub const fn _mm512_mul_epu32(a: __m512i, b: __m512i) -> __m512i {
1741    unsafe {
1742        let a = a.as_u64x8();
1743        let b = b.as_u64x8();
1744        let mask = u64x8::splat(u32::MAX as u64);
1745        transmute(simd_mul(simd_and(a, mask), simd_and(b, mask)))
1746    }
1747}
1748
1749/// Multiply the low unsigned 32-bit integers from each packed 64-bit element in a and b, and store the unsigned 64-bit results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1750///
1751/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_mul_epu32&expand=3914)
1752#[inline]
1753#[target_feature(enable = "avx512f")]
1754#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1755#[cfg_attr(test, assert_instr(vpmuludq))]
1756#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1757pub const fn _mm512_mask_mul_epu32(src: __m512i, k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
1758    unsafe {
1759        let mul = _mm512_mul_epu32(a, b).as_u64x8();
1760        transmute(simd_select_bitmask(k, mul, src.as_u64x8()))
1761    }
1762}
1763
1764/// Multiply the low unsigned 32-bit integers from each packed 64-bit element in a and b, and store the unsigned 64-bit results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1765///
1766/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_mul_epu32&expand=3915)
1767#[inline]
1768#[target_feature(enable = "avx512f")]
1769#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1770#[cfg_attr(test, assert_instr(vpmuludq))]
1771#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1772pub const fn _mm512_maskz_mul_epu32(k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
1773    unsafe {
1774        let mul = _mm512_mul_epu32(a, b).as_u64x8();
1775        transmute(simd_select_bitmask(k, mul, u64x8::ZERO))
1776    }
1777}
1778
1779/// Multiply the low unsigned 32-bit integers from each packed 64-bit element in a and b, and store the unsigned 64-bit results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1780///
1781/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_mul_epu32&expand=3911)
1782#[inline]
1783#[target_feature(enable = "avx512f,avx512vl")]
1784#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1785#[cfg_attr(test, assert_instr(vpmuludq))]
1786#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1787pub const fn _mm256_mask_mul_epu32(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
1788    unsafe {
1789        let mul = _mm256_mul_epu32(a, b).as_u64x4();
1790        transmute(simd_select_bitmask(k, mul, src.as_u64x4()))
1791    }
1792}
1793
1794/// Multiply the low unsigned 32-bit integers from each packed 64-bit element in a and b, and store the unsigned 64-bit results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1795///
1796/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_mul_epu32&expand=3912)
1797#[inline]
1798#[target_feature(enable = "avx512f,avx512vl")]
1799#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1800#[cfg_attr(test, assert_instr(vpmuludq))]
1801#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1802pub const fn _mm256_maskz_mul_epu32(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
1803    unsafe {
1804        let mul = _mm256_mul_epu32(a, b).as_u64x4();
1805        transmute(simd_select_bitmask(k, mul, u64x4::ZERO))
1806    }
1807}
1808
1809/// Multiply the low unsigned 32-bit integers from each packed 64-bit element in a and b, and store the unsigned 64-bit results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1810///
1811/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_mul_epu32&expand=3908)
1812#[inline]
1813#[target_feature(enable = "avx512f,avx512vl")]
1814#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1815#[cfg_attr(test, assert_instr(vpmuludq))]
1816#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1817pub const fn _mm_mask_mul_epu32(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
1818    unsafe {
1819        let mul = _mm_mul_epu32(a, b).as_u64x2();
1820        transmute(simd_select_bitmask(k, mul, src.as_u64x2()))
1821    }
1822}
1823
1824/// Multiply the low unsigned 32-bit integers from each packed 64-bit element in a and b, and store the unsigned 64-bit results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1825///
1826/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_mul_epu32&expand=3909)
1827#[inline]
1828#[target_feature(enable = "avx512f,avx512vl")]
1829#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1830#[cfg_attr(test, assert_instr(vpmuludq))]
1831#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1832pub const fn _mm_maskz_mul_epu32(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
1833    unsafe {
1834        let mul = _mm_mul_epu32(a, b).as_u64x2();
1835        transmute(simd_select_bitmask(k, mul, u64x2::ZERO))
1836    }
1837}
1838
1839/// Multiply packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst.
1840///
1841/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mul_ps&expand=3934)
1842#[inline]
1843#[target_feature(enable = "avx512f")]
1844#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1845#[cfg_attr(test, assert_instr(vmulps))]
1846#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1847pub const fn _mm512_mul_ps(a: __m512, b: __m512) -> __m512 {
1848    unsafe { transmute(simd_mul(a.as_f32x16(), b.as_f32x16())) }
1849}
1850
1851/// Multiply packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1852///
1853/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_mul_ps&expand=3932)
1854#[inline]
1855#[target_feature(enable = "avx512f")]
1856#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1857#[cfg_attr(test, assert_instr(vmulps))]
1858#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1859pub const fn _mm512_mask_mul_ps(src: __m512, k: __mmask16, a: __m512, b: __m512) -> __m512 {
1860    unsafe {
1861        let mul = _mm512_mul_ps(a, b).as_f32x16();
1862        transmute(simd_select_bitmask(k, mul, src.as_f32x16()))
1863    }
1864}
1865
1866/// Multiply packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1867///
1868/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_mul_ps&expand=3933)
1869#[inline]
1870#[target_feature(enable = "avx512f")]
1871#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1872#[cfg_attr(test, assert_instr(vmulps))]
1873#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1874pub const fn _mm512_maskz_mul_ps(k: __mmask16, a: __m512, b: __m512) -> __m512 {
1875    unsafe {
1876        let mul = _mm512_mul_ps(a, b).as_f32x16();
1877        transmute(simd_select_bitmask(k, mul, f32x16::ZERO))
1878    }
1879}
1880
1881/// Multiply packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1882///
1883/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_mul_ps&expand=3929)
1884#[inline]
1885#[target_feature(enable = "avx512f,avx512vl")]
1886#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1887#[cfg_attr(test, assert_instr(vmulps))]
1888#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1889pub const fn _mm256_mask_mul_ps(src: __m256, k: __mmask8, a: __m256, b: __m256) -> __m256 {
1890    unsafe {
1891        let mul = _mm256_mul_ps(a, b).as_f32x8();
1892        transmute(simd_select_bitmask(k, mul, src.as_f32x8()))
1893    }
1894}
1895
1896/// Multiply packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1897///
1898/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_mul_ps&expand=3930)
1899#[inline]
1900#[target_feature(enable = "avx512f,avx512vl")]
1901#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1902#[cfg_attr(test, assert_instr(vmulps))]
1903#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1904pub const fn _mm256_maskz_mul_ps(k: __mmask8, a: __m256, b: __m256) -> __m256 {
1905    unsafe {
1906        let mul = _mm256_mul_ps(a, b).as_f32x8();
1907        transmute(simd_select_bitmask(k, mul, f32x8::ZERO))
1908    }
1909}
1910
1911/// Multiply packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1912///
1913/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_mul_ps&expand=3926)
1914#[inline]
1915#[target_feature(enable = "avx512f,avx512vl")]
1916#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1917#[cfg_attr(test, assert_instr(vmulps))]
1918#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1919pub const fn _mm_mask_mul_ps(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
1920    unsafe {
1921        let mul = _mm_mul_ps(a, b).as_f32x4();
1922        transmute(simd_select_bitmask(k, mul, src.as_f32x4()))
1923    }
1924}
1925
1926/// Multiply packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1927///
1928/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_mul_ps&expand=3927)
1929#[inline]
1930#[target_feature(enable = "avx512f,avx512vl")]
1931#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1932#[cfg_attr(test, assert_instr(vmulps))]
1933#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1934pub const fn _mm_maskz_mul_ps(k: __mmask8, a: __m128, b: __m128) -> __m128 {
1935    unsafe {
1936        let mul = _mm_mul_ps(a, b).as_f32x4();
1937        transmute(simd_select_bitmask(k, mul, f32x4::ZERO))
1938    }
1939}
1940
1941/// Multiply packed double-precision (64-bit) floating-point elements in a and b, and store the results in dst.
1942///
1943/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mul_pd&expand=3925)
1944#[inline]
1945#[target_feature(enable = "avx512f")]
1946#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1947#[cfg_attr(test, assert_instr(vmulpd))]
1948#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1949pub const fn _mm512_mul_pd(a: __m512d, b: __m512d) -> __m512d {
1950    unsafe { transmute(simd_mul(a.as_f64x8(), b.as_f64x8())) }
1951}
1952
1953/// Multiply packed double-precision (64-bit) floating-point elements in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1954///
1955/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_mul_pd&expand=3923)
1956#[inline]
1957#[target_feature(enable = "avx512f")]
1958#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1959#[cfg_attr(test, assert_instr(vmulpd))]
1960#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1961pub const fn _mm512_mask_mul_pd(src: __m512d, k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
1962    unsafe {
1963        let mul = _mm512_mul_pd(a, b).as_f64x8();
1964        transmute(simd_select_bitmask(k, mul, src.as_f64x8()))
1965    }
1966}
1967
1968/// Multiply packed double-precision (64-bit) floating-point elements in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1969///
1970/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_mul_pd&expand=3924)
1971#[inline]
1972#[target_feature(enable = "avx512f")]
1973#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1974#[cfg_attr(test, assert_instr(vmulpd))]
1975#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1976pub const fn _mm512_maskz_mul_pd(k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
1977    unsafe {
1978        let mul = _mm512_mul_pd(a, b).as_f64x8();
1979        transmute(simd_select_bitmask(k, mul, f64x8::ZERO))
1980    }
1981}
1982
1983/// Multiply packed double-precision (64-bit) floating-point elements in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
1984///
1985/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_mul_pd&expand=3920)
1986#[inline]
1987#[target_feature(enable = "avx512f,avx512vl")]
1988#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
1989#[cfg_attr(test, assert_instr(vmulpd))]
1990#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
1991pub const fn _mm256_mask_mul_pd(src: __m256d, k: __mmask8, a: __m256d, b: __m256d) -> __m256d {
1992    unsafe {
1993        let mul = _mm256_mul_pd(a, b).as_f64x4();
1994        transmute(simd_select_bitmask(k, mul, src.as_f64x4()))
1995    }
1996}
1997
1998/// Multiply packed double-precision (64-bit) floating-point elements in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
1999///
2000/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_mul_pd&expand=3921)
2001#[inline]
2002#[target_feature(enable = "avx512f,avx512vl")]
2003#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2004#[cfg_attr(test, assert_instr(vmulpd))]
2005#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2006pub const fn _mm256_maskz_mul_pd(k: __mmask8, a: __m256d, b: __m256d) -> __m256d {
2007    unsafe {
2008        let mul = _mm256_mul_pd(a, b).as_f64x4();
2009        transmute(simd_select_bitmask(k, mul, f64x4::ZERO))
2010    }
2011}
2012
2013/// Multiply packed double-precision (64-bit) floating-point elements in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2014///
2015/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_mul_pd&expand=3917)
2016#[inline]
2017#[target_feature(enable = "avx512f,avx512vl")]
2018#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2019#[cfg_attr(test, assert_instr(vmulpd))]
2020#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2021pub const fn _mm_mask_mul_pd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
2022    unsafe {
2023        let mul = _mm_mul_pd(a, b).as_f64x2();
2024        transmute(simd_select_bitmask(k, mul, src.as_f64x2()))
2025    }
2026}
2027
2028/// Multiply packed double-precision (64-bit) floating-point elements in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2029///
2030/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_mul_pd&expand=3918)
2031#[inline]
2032#[target_feature(enable = "avx512f,avx512vl")]
2033#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2034#[cfg_attr(test, assert_instr(vmulpd))]
2035#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2036pub const fn _mm_maskz_mul_pd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
2037    unsafe {
2038        let mul = _mm_mul_pd(a, b).as_f64x2();
2039        transmute(simd_select_bitmask(k, mul, f64x2::ZERO))
2040    }
2041}
2042
2043/// Divide packed single-precision (32-bit) floating-point elements in a by packed elements in b, and store the results in dst.
2044///
2045/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_div_ps&expand=2162)
2046#[inline]
2047#[target_feature(enable = "avx512f")]
2048#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2049#[cfg_attr(test, assert_instr(vdivps))]
2050#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2051pub const fn _mm512_div_ps(a: __m512, b: __m512) -> __m512 {
2052    unsafe { transmute(simd_div(a.as_f32x16(), b.as_f32x16())) }
2053}
2054
2055/// Divide packed single-precision (32-bit) floating-point elements in a by packed elements in b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2056///
2057/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_div_ps&expand=2163)
2058#[inline]
2059#[target_feature(enable = "avx512f")]
2060#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2061#[cfg_attr(test, assert_instr(vdivps))]
2062#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2063pub const fn _mm512_mask_div_ps(src: __m512, k: __mmask16, a: __m512, b: __m512) -> __m512 {
2064    unsafe {
2065        let div = _mm512_div_ps(a, b).as_f32x16();
2066        transmute(simd_select_bitmask(k, div, src.as_f32x16()))
2067    }
2068}
2069
2070/// Divide packed single-precision (32-bit) floating-point elements in a by packed elements in b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2071///
2072/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_div_ps&expand=2164)
2073#[inline]
2074#[target_feature(enable = "avx512f")]
2075#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2076#[cfg_attr(test, assert_instr(vdivps))]
2077#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2078pub const fn _mm512_maskz_div_ps(k: __mmask16, a: __m512, b: __m512) -> __m512 {
2079    unsafe {
2080        let div = _mm512_div_ps(a, b).as_f32x16();
2081        transmute(simd_select_bitmask(k, div, f32x16::ZERO))
2082    }
2083}
2084
2085/// Divide packed single-precision (32-bit) floating-point elements in a by packed elements in b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2086///
2087/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_div_ps&expand=2160)
2088#[inline]
2089#[target_feature(enable = "avx512f,avx512vl")]
2090#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2091#[cfg_attr(test, assert_instr(vdivps))]
2092#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2093pub const fn _mm256_mask_div_ps(src: __m256, k: __mmask8, a: __m256, b: __m256) -> __m256 {
2094    unsafe {
2095        let div = _mm256_div_ps(a, b).as_f32x8();
2096        transmute(simd_select_bitmask(k, div, src.as_f32x8()))
2097    }
2098}
2099
2100/// Divide packed single-precision (32-bit) floating-point elements in a by packed elements in b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2101///
2102/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_div_ps&expand=2161)
2103#[inline]
2104#[target_feature(enable = "avx512f,avx512vl")]
2105#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2106#[cfg_attr(test, assert_instr(vdivps))]
2107#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2108pub const fn _mm256_maskz_div_ps(k: __mmask8, a: __m256, b: __m256) -> __m256 {
2109    unsafe {
2110        let div = _mm256_div_ps(a, b).as_f32x8();
2111        transmute(simd_select_bitmask(k, div, f32x8::ZERO))
2112    }
2113}
2114
2115/// Divide packed single-precision (32-bit) floating-point elements in a by packed elements in b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2116///
2117/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_div_ps&expand=2157)
2118#[inline]
2119#[target_feature(enable = "avx512f,avx512vl")]
2120#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2121#[cfg_attr(test, assert_instr(vdivps))]
2122#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2123pub const fn _mm_mask_div_ps(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
2124    unsafe {
2125        let div = _mm_div_ps(a, b).as_f32x4();
2126        transmute(simd_select_bitmask(k, div, src.as_f32x4()))
2127    }
2128}
2129
2130/// Divide packed single-precision (32-bit) floating-point elements in a by packed elements in b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2131///
2132/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_div_ps&expand=2158)
2133#[inline]
2134#[target_feature(enable = "avx512f,avx512vl")]
2135#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2136#[cfg_attr(test, assert_instr(vdivps))]
2137#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2138pub const fn _mm_maskz_div_ps(k: __mmask8, a: __m128, b: __m128) -> __m128 {
2139    unsafe {
2140        let div = _mm_div_ps(a, b).as_f32x4();
2141        transmute(simd_select_bitmask(k, div, f32x4::ZERO))
2142    }
2143}
2144
2145/// Divide packed double-precision (64-bit) floating-point elements in a by packed elements in b, and store the results in dst.
2146///
2147/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_div_pd&expand=2153)
2148#[inline]
2149#[target_feature(enable = "avx512f")]
2150#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2151#[cfg_attr(test, assert_instr(vdivpd))]
2152#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2153pub const fn _mm512_div_pd(a: __m512d, b: __m512d) -> __m512d {
2154    unsafe { transmute(simd_div(a.as_f64x8(), b.as_f64x8())) }
2155}
2156
2157/// Divide packed double-precision (64-bit) floating-point elements in a by packed elements in b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2158///
2159/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_div_pd&expand=2154)
2160#[inline]
2161#[target_feature(enable = "avx512f")]
2162#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2163#[cfg_attr(test, assert_instr(vdivpd))]
2164#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2165pub const fn _mm512_mask_div_pd(src: __m512d, k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
2166    unsafe {
2167        let div = _mm512_div_pd(a, b).as_f64x8();
2168        transmute(simd_select_bitmask(k, div, src.as_f64x8()))
2169    }
2170}
2171
2172/// Divide packed double-precision (64-bit) floating-point elements in a by packed elements in b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2173///
2174/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_div_pd&expand=2155)
2175#[inline]
2176#[target_feature(enable = "avx512f")]
2177#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2178#[cfg_attr(test, assert_instr(vdivpd))]
2179#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2180pub const fn _mm512_maskz_div_pd(k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
2181    unsafe {
2182        let div = _mm512_div_pd(a, b).as_f64x8();
2183        transmute(simd_select_bitmask(k, div, f64x8::ZERO))
2184    }
2185}
2186
2187/// Divide packed double-precision (64-bit) floating-point elements in a by packed elements in b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2188///
2189/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_div_pd&expand=2151)
2190#[inline]
2191#[target_feature(enable = "avx512f,avx512vl")]
2192#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2193#[cfg_attr(test, assert_instr(vdivpd))]
2194#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2195pub const fn _mm256_mask_div_pd(src: __m256d, k: __mmask8, a: __m256d, b: __m256d) -> __m256d {
2196    unsafe {
2197        let div = _mm256_div_pd(a, b).as_f64x4();
2198        transmute(simd_select_bitmask(k, div, src.as_f64x4()))
2199    }
2200}
2201
2202/// Divide packed double-precision (64-bit) floating-point elements in a by packed elements in b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2203///
2204/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_div_pd&expand=2152)
2205#[inline]
2206#[target_feature(enable = "avx512f,avx512vl")]
2207#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2208#[cfg_attr(test, assert_instr(vdivpd))]
2209#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2210pub const fn _mm256_maskz_div_pd(k: __mmask8, a: __m256d, b: __m256d) -> __m256d {
2211    unsafe {
2212        let div = _mm256_div_pd(a, b).as_f64x4();
2213        transmute(simd_select_bitmask(k, div, f64x4::ZERO))
2214    }
2215}
2216
2217/// Divide packed double-precision (64-bit) floating-point elements in a by packed elements in b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2218///
2219/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_div_pd&expand=2148)
2220#[inline]
2221#[target_feature(enable = "avx512f,avx512vl")]
2222#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2223#[cfg_attr(test, assert_instr(vdivpd))]
2224#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2225pub const fn _mm_mask_div_pd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
2226    unsafe {
2227        let div = _mm_div_pd(a, b).as_f64x2();
2228        transmute(simd_select_bitmask(k, div, src.as_f64x2()))
2229    }
2230}
2231
2232/// Divide packed double-precision (64-bit) floating-point elements in a by packed elements in b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2233///
2234/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_div_pd&expand=2149)
2235#[inline]
2236#[target_feature(enable = "avx512f,avx512vl")]
2237#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2238#[cfg_attr(test, assert_instr(vdivpd))]
2239#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2240pub const fn _mm_maskz_div_pd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
2241    unsafe {
2242        let div = _mm_div_pd(a, b).as_f64x2();
2243        transmute(simd_select_bitmask(k, div, f64x2::ZERO))
2244    }
2245}
2246
2247/// Compare packed signed 32-bit integers in a and b, and store packed maximum values in dst.
2248///
2249/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_max_epi32&expand=3582)
2250#[inline]
2251#[target_feature(enable = "avx512f")]
2252#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2253#[cfg_attr(test, assert_instr(vpmaxsd))]
2254#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2255pub const fn _mm512_max_epi32(a: __m512i, b: __m512i) -> __m512i {
2256    unsafe { simd_imax(a.as_i32x16(), b.as_i32x16()).as_m512i() }
2257}
2258
2259/// Compare packed signed 32-bit integers in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2260///
2261/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_max_epi32&expand=3580)
2262#[inline]
2263#[target_feature(enable = "avx512f")]
2264#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2265#[cfg_attr(test, assert_instr(vpmaxsd))]
2266#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2267pub const fn _mm512_mask_max_epi32(src: __m512i, k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
2268    unsafe {
2269        let max = _mm512_max_epi32(a, b).as_i32x16();
2270        transmute(simd_select_bitmask(k, max, src.as_i32x16()))
2271    }
2272}
2273
2274/// Compare packed signed 32-bit integers in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2275///
2276/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_max_epi32&expand=3581)
2277#[inline]
2278#[target_feature(enable = "avx512f")]
2279#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2280#[cfg_attr(test, assert_instr(vpmaxsd))]
2281#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2282pub const fn _mm512_maskz_max_epi32(k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
2283    unsafe {
2284        let max = _mm512_max_epi32(a, b).as_i32x16();
2285        transmute(simd_select_bitmask(k, max, i32x16::ZERO))
2286    }
2287}
2288
2289/// Compare packed signed 32-bit integers in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2290///
2291/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_max_epi32&expand=3577)
2292#[inline]
2293#[target_feature(enable = "avx512f,avx512vl")]
2294#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2295#[cfg_attr(test, assert_instr(vpmaxsd))]
2296#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2297pub const fn _mm256_mask_max_epi32(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
2298    unsafe {
2299        let max = _mm256_max_epi32(a, b).as_i32x8();
2300        transmute(simd_select_bitmask(k, max, src.as_i32x8()))
2301    }
2302}
2303
2304/// Compare packed signed 32-bit integers in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2305///
2306/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_max_epi32&expand=3578)
2307#[inline]
2308#[target_feature(enable = "avx512f,avx512vl")]
2309#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2310#[cfg_attr(test, assert_instr(vpmaxsd))]
2311#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2312pub const fn _mm256_maskz_max_epi32(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
2313    unsafe {
2314        let max = _mm256_max_epi32(a, b).as_i32x8();
2315        transmute(simd_select_bitmask(k, max, i32x8::ZERO))
2316    }
2317}
2318
2319/// Compare packed signed 32-bit integers in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2320///
2321/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_max_epi32&expand=3574)
2322#[inline]
2323#[target_feature(enable = "avx512f,avx512vl")]
2324#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2325#[cfg_attr(test, assert_instr(vpmaxsd))]
2326#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2327pub const fn _mm_mask_max_epi32(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
2328    unsafe {
2329        let max = _mm_max_epi32(a, b).as_i32x4();
2330        transmute(simd_select_bitmask(k, max, src.as_i32x4()))
2331    }
2332}
2333
2334/// Compare packed signed 32-bit integers in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2335///
2336/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_max_epi32&expand=3575)
2337#[inline]
2338#[target_feature(enable = "avx512f,avx512vl")]
2339#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2340#[cfg_attr(test, assert_instr(vpmaxsd))]
2341#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2342pub const fn _mm_maskz_max_epi32(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
2343    unsafe {
2344        let max = _mm_max_epi32(a, b).as_i32x4();
2345        transmute(simd_select_bitmask(k, max, i32x4::ZERO))
2346    }
2347}
2348
2349/// Compare packed signed 64-bit integers in a and b, and store packed maximum values in dst.
2350///
2351/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_max_epi64&expand=3591)
2352#[inline]
2353#[target_feature(enable = "avx512f")]
2354#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2355#[cfg_attr(test, assert_instr(vpmaxsq))]
2356#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2357pub const fn _mm512_max_epi64(a: __m512i, b: __m512i) -> __m512i {
2358    unsafe { simd_imax(a.as_i64x8(), b.as_i64x8()).as_m512i() }
2359}
2360
2361/// Compare packed signed 64-bit integers in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2362///
2363/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_max_epi64&expand=3589)
2364#[inline]
2365#[target_feature(enable = "avx512f")]
2366#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2367#[cfg_attr(test, assert_instr(vpmaxsq))]
2368#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2369pub const fn _mm512_mask_max_epi64(src: __m512i, k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
2370    unsafe {
2371        let max = _mm512_max_epi64(a, b).as_i64x8();
2372        transmute(simd_select_bitmask(k, max, src.as_i64x8()))
2373    }
2374}
2375
2376/// Compare packed signed 64-bit integers in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2377///
2378/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_max_epi64&expand=3590)
2379#[inline]
2380#[target_feature(enable = "avx512f")]
2381#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2382#[cfg_attr(test, assert_instr(vpmaxsq))]
2383#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2384pub const fn _mm512_maskz_max_epi64(k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
2385    unsafe {
2386        let max = _mm512_max_epi64(a, b).as_i64x8();
2387        transmute(simd_select_bitmask(k, max, i64x8::ZERO))
2388    }
2389}
2390
2391/// Compare packed signed 64-bit integers in a and b, and store packed maximum values in dst.
2392///
2393/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_max_epi64&expand=3588)
2394#[inline]
2395#[target_feature(enable = "avx512f,avx512vl")]
2396#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2397#[cfg_attr(test, assert_instr(vpmaxsq))]
2398#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2399pub const fn _mm256_max_epi64(a: __m256i, b: __m256i) -> __m256i {
2400    unsafe { simd_imax(a.as_i64x4(), b.as_i64x4()).as_m256i() }
2401}
2402
2403/// Compare packed signed 64-bit integers in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2404///
2405/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_max_epi64&expand=3586)
2406#[inline]
2407#[target_feature(enable = "avx512f,avx512vl")]
2408#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2409#[cfg_attr(test, assert_instr(vpmaxsq))]
2410#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2411pub const fn _mm256_mask_max_epi64(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
2412    unsafe {
2413        let max = _mm256_max_epi64(a, b).as_i64x4();
2414        transmute(simd_select_bitmask(k, max, src.as_i64x4()))
2415    }
2416}
2417
2418/// Compare packed signed 64-bit integers in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2419///
2420/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_max_epi64&expand=3587)
2421#[inline]
2422#[target_feature(enable = "avx512f,avx512vl")]
2423#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2424#[cfg_attr(test, assert_instr(vpmaxsq))]
2425#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2426pub const fn _mm256_maskz_max_epi64(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
2427    unsafe {
2428        let max = _mm256_max_epi64(a, b).as_i64x4();
2429        transmute(simd_select_bitmask(k, max, i64x4::ZERO))
2430    }
2431}
2432
2433/// Compare packed signed 64-bit integers in a and b, and store packed maximum values in dst.
2434///
2435/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epi64&expand=3585)
2436#[inline]
2437#[target_feature(enable = "avx512f,avx512vl")]
2438#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2439#[cfg_attr(test, assert_instr(vpmaxsq))]
2440#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2441pub const fn _mm_max_epi64(a: __m128i, b: __m128i) -> __m128i {
2442    unsafe { simd_imax(a.as_i64x2(), b.as_i64x2()).as_m128i() }
2443}
2444
2445/// Compare packed signed 64-bit integers in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2446///
2447/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_max_epi64&expand=3583)
2448#[inline]
2449#[target_feature(enable = "avx512f,avx512vl")]
2450#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2451#[cfg_attr(test, assert_instr(vpmaxsq))]
2452#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2453pub const fn _mm_mask_max_epi64(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
2454    unsafe {
2455        let max = _mm_max_epi64(a, b).as_i64x2();
2456        transmute(simd_select_bitmask(k, max, src.as_i64x2()))
2457    }
2458}
2459
2460/// Compare packed signed 64-bit integers in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2461///
2462/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_max_epi64&expand=3584)
2463#[inline]
2464#[target_feature(enable = "avx512f,avx512vl")]
2465#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2466#[cfg_attr(test, assert_instr(vpmaxsq))]
2467#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2468pub const fn _mm_maskz_max_epi64(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
2469    unsafe {
2470        let max = _mm_max_epi64(a, b).as_i64x2();
2471        transmute(simd_select_bitmask(k, max, i64x2::ZERO))
2472    }
2473}
2474
2475/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed maximum values in dst.
2476///
2477/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_max_ps&expand=3655)
2478#[inline]
2479#[target_feature(enable = "avx512f")]
2480#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2481#[cfg_attr(test, assert_instr(vmaxps))]
2482pub fn _mm512_max_ps(a: __m512, b: __m512) -> __m512 {
2483    unsafe {
2484        transmute(vmaxps(
2485            a.as_f32x16(),
2486            b.as_f32x16(),
2487            _MM_FROUND_CUR_DIRECTION,
2488        ))
2489    }
2490}
2491
2492/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2493///
2494/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_max_ps&expand=3653)
2495#[inline]
2496#[target_feature(enable = "avx512f")]
2497#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2498#[cfg_attr(test, assert_instr(vmaxps))]
2499pub fn _mm512_mask_max_ps(src: __m512, k: __mmask16, a: __m512, b: __m512) -> __m512 {
2500    unsafe {
2501        let max = _mm512_max_ps(a, b).as_f32x16();
2502        transmute(simd_select_bitmask(k, max, src.as_f32x16()))
2503    }
2504}
2505
2506/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2507///
2508/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_max_ps&expand=3654)
2509#[inline]
2510#[target_feature(enable = "avx512f")]
2511#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2512#[cfg_attr(test, assert_instr(vmaxps))]
2513pub fn _mm512_maskz_max_ps(k: __mmask16, a: __m512, b: __m512) -> __m512 {
2514    unsafe {
2515        let max = _mm512_max_ps(a, b).as_f32x16();
2516        transmute(simd_select_bitmask(k, max, f32x16::ZERO))
2517    }
2518}
2519
2520/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2521///
2522/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_max_ps&expand=3650)
2523#[inline]
2524#[target_feature(enable = "avx512f,avx512vl")]
2525#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2526#[cfg_attr(test, assert_instr(vmaxps))]
2527pub fn _mm256_mask_max_ps(src: __m256, k: __mmask8, a: __m256, b: __m256) -> __m256 {
2528    unsafe {
2529        let max = _mm256_max_ps(a, b).as_f32x8();
2530        transmute(simd_select_bitmask(k, max, src.as_f32x8()))
2531    }
2532}
2533
2534/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2535///
2536/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_max_ps&expand=3651)
2537#[inline]
2538#[target_feature(enable = "avx512f,avx512vl")]
2539#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2540#[cfg_attr(test, assert_instr(vmaxps))]
2541pub fn _mm256_maskz_max_ps(k: __mmask8, a: __m256, b: __m256) -> __m256 {
2542    unsafe {
2543        let max = _mm256_max_ps(a, b).as_f32x8();
2544        transmute(simd_select_bitmask(k, max, f32x8::ZERO))
2545    }
2546}
2547
2548/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2549///
2550/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_max_ps&expand=3647)
2551#[inline]
2552#[target_feature(enable = "avx512f,avx512vl")]
2553#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2554#[cfg_attr(test, assert_instr(vmaxps))]
2555pub fn _mm_mask_max_ps(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
2556    unsafe {
2557        let max = _mm_max_ps(a, b).as_f32x4();
2558        transmute(simd_select_bitmask(k, max, src.as_f32x4()))
2559    }
2560}
2561
2562/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2563///
2564/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_max_ps&expand=3648)
2565#[inline]
2566#[target_feature(enable = "avx512f,avx512vl")]
2567#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2568#[cfg_attr(test, assert_instr(vmaxps))]
2569pub fn _mm_maskz_max_ps(k: __mmask8, a: __m128, b: __m128) -> __m128 {
2570    unsafe {
2571        let max = _mm_max_ps(a, b).as_f32x4();
2572        transmute(simd_select_bitmask(k, max, f32x4::ZERO))
2573    }
2574}
2575
2576/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed maximum values in dst.
2577///
2578/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_max_pd&expand=3645)
2579#[inline]
2580#[target_feature(enable = "avx512f")]
2581#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2582#[cfg_attr(test, assert_instr(vmaxpd))]
2583pub fn _mm512_max_pd(a: __m512d, b: __m512d) -> __m512d {
2584    unsafe { transmute(vmaxpd(a.as_f64x8(), b.as_f64x8(), _MM_FROUND_CUR_DIRECTION)) }
2585}
2586
2587/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2588///
2589/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_max_pd&expand=3643)
2590#[inline]
2591#[target_feature(enable = "avx512f")]
2592#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2593#[cfg_attr(test, assert_instr(vmaxpd))]
2594pub fn _mm512_mask_max_pd(src: __m512d, k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
2595    unsafe {
2596        let max = _mm512_max_pd(a, b).as_f64x8();
2597        transmute(simd_select_bitmask(k, max, src.as_f64x8()))
2598    }
2599}
2600
2601/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2602///
2603/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_max_pd&expand=3644)
2604#[inline]
2605#[target_feature(enable = "avx512f")]
2606#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2607#[cfg_attr(test, assert_instr(vmaxpd))]
2608pub fn _mm512_maskz_max_pd(k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
2609    unsafe {
2610        let max = _mm512_max_pd(a, b).as_f64x8();
2611        transmute(simd_select_bitmask(k, max, f64x8::ZERO))
2612    }
2613}
2614
2615/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2616///
2617/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_max_pd&expand=3640)
2618#[inline]
2619#[target_feature(enable = "avx512f,avx512vl")]
2620#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2621#[cfg_attr(test, assert_instr(vmaxpd))]
2622pub fn _mm256_mask_max_pd(src: __m256d, k: __mmask8, a: __m256d, b: __m256d) -> __m256d {
2623    unsafe {
2624        let max = _mm256_max_pd(a, b).as_f64x4();
2625        transmute(simd_select_bitmask(k, max, src.as_f64x4()))
2626    }
2627}
2628
2629/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2630///
2631/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_max_pd&expand=3641)
2632#[inline]
2633#[target_feature(enable = "avx512f,avx512vl")]
2634#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2635#[cfg_attr(test, assert_instr(vmaxpd))]
2636pub fn _mm256_maskz_max_pd(k: __mmask8, a: __m256d, b: __m256d) -> __m256d {
2637    unsafe {
2638        let max = _mm256_max_pd(a, b).as_f64x4();
2639        transmute(simd_select_bitmask(k, max, f64x4::ZERO))
2640    }
2641}
2642
2643/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2644///
2645/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_max_pd&expand=3637)
2646#[inline]
2647#[target_feature(enable = "avx512f,avx512vl")]
2648#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2649#[cfg_attr(test, assert_instr(vmaxpd))]
2650pub fn _mm_mask_max_pd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
2651    unsafe {
2652        let max = _mm_max_pd(a, b).as_f64x2();
2653        transmute(simd_select_bitmask(k, max, src.as_f64x2()))
2654    }
2655}
2656
2657/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2658///
2659/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_max_pd&expand=3638)
2660#[inline]
2661#[target_feature(enable = "avx512f,avx512vl")]
2662#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2663#[cfg_attr(test, assert_instr(vmaxpd))]
2664pub fn _mm_maskz_max_pd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
2665    unsafe {
2666        let max = _mm_max_pd(a, b).as_f64x2();
2667        transmute(simd_select_bitmask(k, max, f64x2::ZERO))
2668    }
2669}
2670
2671/// Compare packed unsigned 32-bit integers in a and b, and store packed maximum values in dst.
2672///
2673/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_max_epu32&expand=3618)
2674#[inline]
2675#[target_feature(enable = "avx512f")]
2676#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2677#[cfg_attr(test, assert_instr(vpmaxud))]
2678#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2679pub const fn _mm512_max_epu32(a: __m512i, b: __m512i) -> __m512i {
2680    unsafe { simd_imax(a.as_u32x16(), b.as_u32x16()).as_m512i() }
2681}
2682
2683/// Compare packed unsigned 32-bit integers in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2684///
2685/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_max_epu32&expand=3616)
2686#[inline]
2687#[target_feature(enable = "avx512f")]
2688#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2689#[cfg_attr(test, assert_instr(vpmaxud))]
2690#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2691pub const fn _mm512_mask_max_epu32(src: __m512i, k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
2692    unsafe {
2693        let max = _mm512_max_epu32(a, b).as_u32x16();
2694        transmute(simd_select_bitmask(k, max, src.as_u32x16()))
2695    }
2696}
2697
2698/// Compare packed unsigned 32-bit integers in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2699///
2700/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_max_epu32&expand=3617)
2701#[inline]
2702#[target_feature(enable = "avx512f")]
2703#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2704#[cfg_attr(test, assert_instr(vpmaxud))]
2705#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2706pub const fn _mm512_maskz_max_epu32(k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
2707    unsafe {
2708        let max = _mm512_max_epu32(a, b).as_u32x16();
2709        transmute(simd_select_bitmask(k, max, u32x16::ZERO))
2710    }
2711}
2712
2713/// Compare packed unsigned 32-bit integers in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2714///
2715/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_max_epu32&expand=3613)
2716#[inline]
2717#[target_feature(enable = "avx512f,avx512vl")]
2718#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2719#[cfg_attr(test, assert_instr(vpmaxud))]
2720#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2721pub const fn _mm256_mask_max_epu32(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
2722    unsafe {
2723        let max = _mm256_max_epu32(a, b).as_u32x8();
2724        transmute(simd_select_bitmask(k, max, src.as_u32x8()))
2725    }
2726}
2727
2728/// Compare packed unsigned 32-bit integers in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2729///
2730/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_max_epu32&expand=3614)
2731#[inline]
2732#[target_feature(enable = "avx512f,avx512vl")]
2733#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2734#[cfg_attr(test, assert_instr(vpmaxud))]
2735#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2736pub const fn _mm256_maskz_max_epu32(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
2737    unsafe {
2738        let max = _mm256_max_epu32(a, b).as_u32x8();
2739        transmute(simd_select_bitmask(k, max, u32x8::ZERO))
2740    }
2741}
2742
2743/// Compare packed unsigned 32-bit integers in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2744///
2745/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_max_epu32&expand=3610)
2746#[inline]
2747#[target_feature(enable = "avx512f,avx512vl")]
2748#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2749#[cfg_attr(test, assert_instr(vpmaxud))]
2750#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2751pub const fn _mm_mask_max_epu32(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
2752    unsafe {
2753        let max = _mm_max_epu32(a, b).as_u32x4();
2754        transmute(simd_select_bitmask(k, max, src.as_u32x4()))
2755    }
2756}
2757
2758/// Compare packed unsigned 32-bit integers in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2759///
2760/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_max_epu32&expand=3611)
2761#[inline]
2762#[target_feature(enable = "avx512f,avx512vl")]
2763#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2764#[cfg_attr(test, assert_instr(vpmaxud))]
2765#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2766pub const fn _mm_maskz_max_epu32(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
2767    unsafe {
2768        let max = _mm_max_epu32(a, b).as_u32x4();
2769        transmute(simd_select_bitmask(k, max, u32x4::ZERO))
2770    }
2771}
2772
2773/// Compare packed unsigned 64-bit integers in a and b, and store packed maximum values in dst.
2774///
2775/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_max_epu64&expand=3627)
2776#[inline]
2777#[target_feature(enable = "avx512f")]
2778#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2779#[cfg_attr(test, assert_instr(vpmaxuq))]
2780#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2781pub const fn _mm512_max_epu64(a: __m512i, b: __m512i) -> __m512i {
2782    unsafe { simd_imax(a.as_u64x8(), b.as_u64x8()).as_m512i() }
2783}
2784
2785/// Compare packed unsigned 64-bit integers in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2786///
2787/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_max_epu64&expand=3625)
2788#[inline]
2789#[target_feature(enable = "avx512f")]
2790#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2791#[cfg_attr(test, assert_instr(vpmaxuq))]
2792#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2793pub const fn _mm512_mask_max_epu64(src: __m512i, k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
2794    unsafe {
2795        let max = _mm512_max_epu64(a, b).as_u64x8();
2796        transmute(simd_select_bitmask(k, max, src.as_u64x8()))
2797    }
2798}
2799
2800/// Compare packed unsigned 64-bit integers in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2801///
2802/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_max_epu64&expand=3626)
2803#[inline]
2804#[target_feature(enable = "avx512f")]
2805#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2806#[cfg_attr(test, assert_instr(vpmaxuq))]
2807#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2808pub const fn _mm512_maskz_max_epu64(k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
2809    unsafe {
2810        let max = _mm512_max_epu64(a, b).as_u64x8();
2811        transmute(simd_select_bitmask(k, max, u64x8::ZERO))
2812    }
2813}
2814
2815/// Compare packed unsigned 64-bit integers in a and b, and store packed maximum values in dst.
2816///
2817/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_max_epu64&expand=3624)
2818#[inline]
2819#[target_feature(enable = "avx512f,avx512vl")]
2820#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2821#[cfg_attr(test, assert_instr(vpmaxuq))]
2822#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2823pub const fn _mm256_max_epu64(a: __m256i, b: __m256i) -> __m256i {
2824    unsafe { simd_imax(a.as_u64x4(), b.as_u64x4()).as_m256i() }
2825}
2826
2827/// Compare packed unsigned 64-bit integers in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2828///
2829/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_max_epu64&expand=3622)
2830#[inline]
2831#[target_feature(enable = "avx512f,avx512vl")]
2832#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2833#[cfg_attr(test, assert_instr(vpmaxuq))]
2834#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2835pub const fn _mm256_mask_max_epu64(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
2836    unsafe {
2837        let max = _mm256_max_epu64(a, b).as_u64x4();
2838        transmute(simd_select_bitmask(k, max, src.as_u64x4()))
2839    }
2840}
2841
2842/// Compare packed unsigned 64-bit integers in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2843///
2844/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_max_epu64&expand=3623)
2845#[inline]
2846#[target_feature(enable = "avx512f,avx512vl")]
2847#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2848#[cfg_attr(test, assert_instr(vpmaxuq))]
2849#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2850pub const fn _mm256_maskz_max_epu64(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
2851    unsafe {
2852        let max = _mm256_max_epu64(a, b).as_u64x4();
2853        transmute(simd_select_bitmask(k, max, u64x4::ZERO))
2854    }
2855}
2856
2857/// Compare packed unsigned 64-bit integers in a and b, and store packed maximum values in dst.
2858///
2859/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epu64&expand=3621)
2860#[inline]
2861#[target_feature(enable = "avx512f,avx512vl")]
2862#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2863#[cfg_attr(test, assert_instr(vpmaxuq))]
2864#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2865pub const fn _mm_max_epu64(a: __m128i, b: __m128i) -> __m128i {
2866    unsafe { simd_imax(a.as_u64x2(), b.as_u64x2()).as_m128i() }
2867}
2868
2869/// Compare packed unsigned 64-bit integers in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2870///
2871/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_max_epu64&expand=3619)
2872#[inline]
2873#[target_feature(enable = "avx512f,avx512vl")]
2874#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2875#[cfg_attr(test, assert_instr(vpmaxuq))]
2876#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2877pub const fn _mm_mask_max_epu64(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
2878    unsafe {
2879        let max = _mm_max_epu64(a, b).as_u64x2();
2880        transmute(simd_select_bitmask(k, max, src.as_u64x2()))
2881    }
2882}
2883
2884/// Compare packed unsigned 64-bit integers in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2885///
2886/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_max_epu64&expand=3620)
2887#[inline]
2888#[target_feature(enable = "avx512f,avx512vl")]
2889#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2890#[cfg_attr(test, assert_instr(vpmaxuq))]
2891#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2892pub const fn _mm_maskz_max_epu64(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
2893    unsafe {
2894        let max = _mm_max_epu64(a, b).as_u64x2();
2895        transmute(simd_select_bitmask(k, max, u64x2::ZERO))
2896    }
2897}
2898
2899/// Compare packed signed 32-bit integers in a and b, and store packed minimum values in dst.
2900///
2901/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_min_epi32&expand=3696)
2902#[inline]
2903#[target_feature(enable = "avx512f")]
2904#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2905#[cfg_attr(test, assert_instr(vpminsd))]
2906#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2907pub const fn _mm512_min_epi32(a: __m512i, b: __m512i) -> __m512i {
2908    unsafe { simd_imin(a.as_i32x16(), b.as_i32x16()).as_m512i() }
2909}
2910
2911/// Compare packed signed 32-bit integers in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2912///
2913/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_min_epi32&expand=3694)
2914#[inline]
2915#[target_feature(enable = "avx512f")]
2916#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2917#[cfg_attr(test, assert_instr(vpminsd))]
2918#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2919pub const fn _mm512_mask_min_epi32(src: __m512i, k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
2920    unsafe {
2921        let min = _mm512_min_epi32(a, b).as_i32x16();
2922        transmute(simd_select_bitmask(k, min, src.as_i32x16()))
2923    }
2924}
2925
2926/// Compare packed signed 32-bit integers in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2927///
2928/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_min_epi32&expand=3695)
2929#[inline]
2930#[target_feature(enable = "avx512f")]
2931#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2932#[cfg_attr(test, assert_instr(vpminsd))]
2933#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2934pub const fn _mm512_maskz_min_epi32(k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
2935    unsafe {
2936        let min = _mm512_min_epi32(a, b).as_i32x16();
2937        transmute(simd_select_bitmask(k, min, i32x16::ZERO))
2938    }
2939}
2940
2941/// Compare packed signed 32-bit integers in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2942///
2943/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_min_epi32&expand=3691)
2944#[inline]
2945#[target_feature(enable = "avx512f,avx512vl")]
2946#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2947#[cfg_attr(test, assert_instr(vpminsd))]
2948#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2949pub const fn _mm256_mask_min_epi32(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
2950    unsafe {
2951        let min = _mm256_min_epi32(a, b).as_i32x8();
2952        transmute(simd_select_bitmask(k, min, src.as_i32x8()))
2953    }
2954}
2955
2956/// Compare packed signed 32-bit integers in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2957///
2958/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_min_epi32&expand=3692)
2959#[inline]
2960#[target_feature(enable = "avx512f,avx512vl")]
2961#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2962#[cfg_attr(test, assert_instr(vpminsd))]
2963#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2964pub const fn _mm256_maskz_min_epi32(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
2965    unsafe {
2966        let min = _mm256_min_epi32(a, b).as_i32x8();
2967        transmute(simd_select_bitmask(k, min, i32x8::ZERO))
2968    }
2969}
2970
2971/// Compare packed signed 32-bit integers in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
2972///
2973/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_min_epi32&expand=3688)
2974#[inline]
2975#[target_feature(enable = "avx512f,avx512vl")]
2976#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2977#[cfg_attr(test, assert_instr(vpminsd))]
2978#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2979pub const fn _mm_mask_min_epi32(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
2980    unsafe {
2981        let min = _mm_min_epi32(a, b).as_i32x4();
2982        transmute(simd_select_bitmask(k, min, src.as_i32x4()))
2983    }
2984}
2985
2986/// Compare packed signed 32-bit integers in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
2987///
2988/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_min_epi32&expand=3689)
2989#[inline]
2990#[target_feature(enable = "avx512f,avx512vl")]
2991#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
2992#[cfg_attr(test, assert_instr(vpminsd))]
2993#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
2994pub const fn _mm_maskz_min_epi32(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
2995    unsafe {
2996        let min = _mm_min_epi32(a, b).as_i32x4();
2997        transmute(simd_select_bitmask(k, min, i32x4::ZERO))
2998    }
2999}
3000
3001/// Compare packed signed 64-bit integers in a and b, and store packed minimum values in dst.
3002///
3003/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_min_epi64&expand=3705)
3004#[inline]
3005#[target_feature(enable = "avx512f")]
3006#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3007#[cfg_attr(test, assert_instr(vpminsq))]
3008#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3009pub const fn _mm512_min_epi64(a: __m512i, b: __m512i) -> __m512i {
3010    unsafe { simd_imin(a.as_i64x8(), b.as_i64x8()).as_m512i() }
3011}
3012
3013/// Compare packed signed 64-bit integers in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3014///
3015/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_min_epi64&expand=3703)
3016#[inline]
3017#[target_feature(enable = "avx512f")]
3018#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3019#[cfg_attr(test, assert_instr(vpminsq))]
3020#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3021pub const fn _mm512_mask_min_epi64(src: __m512i, k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
3022    unsafe {
3023        let min = _mm512_min_epi64(a, b).as_i64x8();
3024        transmute(simd_select_bitmask(k, min, src.as_i64x8()))
3025    }
3026}
3027
3028/// Compare packed signed 64-bit integers in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3029///
3030/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_min_epi64&expand=3704)
3031#[inline]
3032#[target_feature(enable = "avx512f")]
3033#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3034#[cfg_attr(test, assert_instr(vpminsq))]
3035#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3036pub const fn _mm512_maskz_min_epi64(k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
3037    unsafe {
3038        let min = _mm512_min_epi64(a, b).as_i64x8();
3039        transmute(simd_select_bitmask(k, min, i64x8::ZERO))
3040    }
3041}
3042
3043/// Compare packed signed 64-bit integers in a and b, and store packed minimum values in dst.
3044///
3045/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_min_epi64&expand=3702)
3046#[inline]
3047#[target_feature(enable = "avx512f,avx512vl")]
3048#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3049#[cfg_attr(test, assert_instr(vpminsq))]
3050#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3051pub const fn _mm256_min_epi64(a: __m256i, b: __m256i) -> __m256i {
3052    unsafe { simd_imin(a.as_i64x4(), b.as_i64x4()).as_m256i() }
3053}
3054
3055/// Compare packed signed 64-bit integers in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3056///
3057/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_min_epi64&expand=3700)
3058#[inline]
3059#[target_feature(enable = "avx512f,avx512vl")]
3060#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3061#[cfg_attr(test, assert_instr(vpminsq))]
3062#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3063pub const fn _mm256_mask_min_epi64(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
3064    unsafe {
3065        let min = _mm256_min_epi64(a, b).as_i64x4();
3066        transmute(simd_select_bitmask(k, min, src.as_i64x4()))
3067    }
3068}
3069
3070/// Compare packed signed 64-bit integers in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3071///
3072/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_min_epi64&expand=3701)
3073#[inline]
3074#[target_feature(enable = "avx512f,avx512vl")]
3075#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3076#[cfg_attr(test, assert_instr(vpminsq))]
3077#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3078pub const fn _mm256_maskz_min_epi64(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
3079    unsafe {
3080        let min = _mm256_min_epi64(a, b).as_i64x4();
3081        transmute(simd_select_bitmask(k, min, i64x4::ZERO))
3082    }
3083}
3084
3085/// Compare packed signed 64-bit integers in a and b, and store packed minimum values in dst.
3086///
3087/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_epi64)
3088#[inline]
3089#[target_feature(enable = "avx512f,avx512vl")]
3090#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3091#[cfg_attr(test, assert_instr(vpminsq))]
3092#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3093pub const fn _mm_min_epi64(a: __m128i, b: __m128i) -> __m128i {
3094    unsafe { simd_imin(a.as_i64x2(), b.as_i64x2()).as_m128i() }
3095}
3096
3097/// Compare packed signed 64-bit integers in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3098///
3099/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_min_epi64)
3100#[inline]
3101#[target_feature(enable = "avx512f,avx512vl")]
3102#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3103#[cfg_attr(test, assert_instr(vpminsq))]
3104#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3105pub const fn _mm_mask_min_epi64(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
3106    unsafe {
3107        let min = _mm_min_epi64(a, b).as_i64x2();
3108        transmute(simd_select_bitmask(k, min, src.as_i64x2()))
3109    }
3110}
3111
3112/// Compare packed signed 64-bit integers in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3113///
3114/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_min_epi64)
3115#[inline]
3116#[target_feature(enable = "avx512f,avx512vl")]
3117#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3118#[cfg_attr(test, assert_instr(vpminsq))]
3119#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3120pub const fn _mm_maskz_min_epi64(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
3121    unsafe {
3122        let min = _mm_min_epi64(a, b).as_i64x2();
3123        transmute(simd_select_bitmask(k, min, i64x2::ZERO))
3124    }
3125}
3126
3127/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed minimum values in dst.
3128///
3129/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_min_ps&expand=3769)
3130#[inline]
3131#[target_feature(enable = "avx512f")]
3132#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3133#[cfg_attr(test, assert_instr(vminps))]
3134pub fn _mm512_min_ps(a: __m512, b: __m512) -> __m512 {
3135    unsafe {
3136        transmute(vminps(
3137            a.as_f32x16(),
3138            b.as_f32x16(),
3139            _MM_FROUND_CUR_DIRECTION,
3140        ))
3141    }
3142}
3143
3144/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3145///
3146/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_min_ps&expand=3767)
3147#[inline]
3148#[target_feature(enable = "avx512f")]
3149#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3150#[cfg_attr(test, assert_instr(vminps))]
3151pub fn _mm512_mask_min_ps(src: __m512, k: __mmask16, a: __m512, b: __m512) -> __m512 {
3152    unsafe {
3153        let min = _mm512_min_ps(a, b).as_f32x16();
3154        transmute(simd_select_bitmask(k, min, src.as_f32x16()))
3155    }
3156}
3157
3158/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3159///
3160/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_min_ps&expand=3768)
3161#[inline]
3162#[target_feature(enable = "avx512f")]
3163#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3164#[cfg_attr(test, assert_instr(vminps))]
3165pub fn _mm512_maskz_min_ps(k: __mmask16, a: __m512, b: __m512) -> __m512 {
3166    unsafe {
3167        let min = _mm512_min_ps(a, b).as_f32x16();
3168        transmute(simd_select_bitmask(k, min, f32x16::ZERO))
3169    }
3170}
3171
3172/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3173///
3174/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_min_ps&expand=3764)
3175#[inline]
3176#[target_feature(enable = "avx512f,avx512vl")]
3177#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3178#[cfg_attr(test, assert_instr(vminps))]
3179pub fn _mm256_mask_min_ps(src: __m256, k: __mmask8, a: __m256, b: __m256) -> __m256 {
3180    unsafe {
3181        let min = _mm256_min_ps(a, b).as_f32x8();
3182        transmute(simd_select_bitmask(k, min, src.as_f32x8()))
3183    }
3184}
3185
3186/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3187///
3188/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_min_ps&expand=3765)
3189#[inline]
3190#[target_feature(enable = "avx512f,avx512vl")]
3191#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3192#[cfg_attr(test, assert_instr(vminps))]
3193pub fn _mm256_maskz_min_ps(k: __mmask8, a: __m256, b: __m256) -> __m256 {
3194    unsafe {
3195        let min = _mm256_min_ps(a, b).as_f32x8();
3196        transmute(simd_select_bitmask(k, min, f32x8::ZERO))
3197    }
3198}
3199
3200/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3201///
3202/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_min_ps&expand=3761)
3203#[inline]
3204#[target_feature(enable = "avx512f,avx512vl")]
3205#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3206#[cfg_attr(test, assert_instr(vminps))]
3207pub fn _mm_mask_min_ps(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
3208    unsafe {
3209        let min = _mm_min_ps(a, b).as_f32x4();
3210        transmute(simd_select_bitmask(k, min, src.as_f32x4()))
3211    }
3212}
3213
3214/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3215///
3216/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_min_ps&expand=3762)
3217#[inline]
3218#[target_feature(enable = "avx512f,avx512vl")]
3219#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3220#[cfg_attr(test, assert_instr(vminps))]
3221pub fn _mm_maskz_min_ps(k: __mmask8, a: __m128, b: __m128) -> __m128 {
3222    unsafe {
3223        let min = _mm_min_ps(a, b).as_f32x4();
3224        transmute(simd_select_bitmask(k, min, f32x4::ZERO))
3225    }
3226}
3227
3228/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed minimum values in dst.
3229///
3230/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_min_pd&expand=3759)
3231#[inline]
3232#[target_feature(enable = "avx512f")]
3233#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3234#[cfg_attr(test, assert_instr(vminpd))]
3235pub fn _mm512_min_pd(a: __m512d, b: __m512d) -> __m512d {
3236    unsafe { transmute(vminpd(a.as_f64x8(), b.as_f64x8(), _MM_FROUND_CUR_DIRECTION)) }
3237}
3238
3239/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3240///
3241/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_min_pd&expand=3757)
3242#[inline]
3243#[target_feature(enable = "avx512f")]
3244#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3245#[cfg_attr(test, assert_instr(vminpd))]
3246pub fn _mm512_mask_min_pd(src: __m512d, k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
3247    unsafe {
3248        let min = _mm512_min_pd(a, b).as_f64x8();
3249        transmute(simd_select_bitmask(k, min, src.as_f64x8()))
3250    }
3251}
3252
3253/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3254///
3255/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_min_pd&expand=3758)
3256#[inline]
3257#[target_feature(enable = "avx512f")]
3258#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3259#[cfg_attr(test, assert_instr(vminpd))]
3260pub fn _mm512_maskz_min_pd(k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
3261    unsafe {
3262        let min = _mm512_min_pd(a, b).as_f64x8();
3263        transmute(simd_select_bitmask(k, min, f64x8::ZERO))
3264    }
3265}
3266
3267/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3268///
3269/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_min_pd&expand=3754)
3270#[inline]
3271#[target_feature(enable = "avx512f,avx512vl")]
3272#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3273#[cfg_attr(test, assert_instr(vminpd))]
3274pub fn _mm256_mask_min_pd(src: __m256d, k: __mmask8, a: __m256d, b: __m256d) -> __m256d {
3275    unsafe {
3276        let min = _mm256_min_pd(a, b).as_f64x4();
3277        transmute(simd_select_bitmask(k, min, src.as_f64x4()))
3278    }
3279}
3280
3281/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3282///
3283/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_min_pd&expand=3755)
3284#[inline]
3285#[target_feature(enable = "avx512f,avx512vl")]
3286#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3287#[cfg_attr(test, assert_instr(vminpd))]
3288pub fn _mm256_maskz_min_pd(k: __mmask8, a: __m256d, b: __m256d) -> __m256d {
3289    unsafe {
3290        let min = _mm256_min_pd(a, b).as_f64x4();
3291        transmute(simd_select_bitmask(k, min, f64x4::ZERO))
3292    }
3293}
3294
3295/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3296///
3297/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_min_pd&expand=3751)
3298#[inline]
3299#[target_feature(enable = "avx512f,avx512vl")]
3300#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3301#[cfg_attr(test, assert_instr(vminpd))]
3302pub fn _mm_mask_min_pd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
3303    unsafe {
3304        let min = _mm_min_pd(a, b).as_f64x2();
3305        transmute(simd_select_bitmask(k, min, src.as_f64x2()))
3306    }
3307}
3308
3309/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3310///
3311/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_min_pd&expand=3752)
3312#[inline]
3313#[target_feature(enable = "avx512f,avx512vl")]
3314#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3315#[cfg_attr(test, assert_instr(vminpd))]
3316pub fn _mm_maskz_min_pd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
3317    unsafe {
3318        let min = _mm_min_pd(a, b).as_f64x2();
3319        transmute(simd_select_bitmask(k, min, f64x2::ZERO))
3320    }
3321}
3322
3323/// Compare packed unsigned 32-bit integers in a and b, and store packed minimum values in dst.
3324///
3325/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_min_epu32&expand=3732)
3326#[inline]
3327#[target_feature(enable = "avx512f")]
3328#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3329#[cfg_attr(test, assert_instr(vpminud))]
3330#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3331pub const fn _mm512_min_epu32(a: __m512i, b: __m512i) -> __m512i {
3332    unsafe { simd_imin(a.as_u32x16(), b.as_u32x16()).as_m512i() }
3333}
3334
3335/// Compare packed unsigned 32-bit integers in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3336///
3337/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_min_epu32&expand=3730)
3338#[inline]
3339#[target_feature(enable = "avx512f")]
3340#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3341#[cfg_attr(test, assert_instr(vpminud))]
3342#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3343pub const fn _mm512_mask_min_epu32(src: __m512i, k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
3344    unsafe {
3345        let min = _mm512_min_epu32(a, b).as_u32x16();
3346        transmute(simd_select_bitmask(k, min, src.as_u32x16()))
3347    }
3348}
3349
3350/// Compare packed unsigned 32-bit integers in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3351///
3352/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_min_epu32&expand=3731)
3353#[inline]
3354#[target_feature(enable = "avx512f")]
3355#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3356#[cfg_attr(test, assert_instr(vpminud))]
3357#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3358pub const fn _mm512_maskz_min_epu32(k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
3359    unsafe {
3360        let min = _mm512_min_epu32(a, b).as_u32x16();
3361        transmute(simd_select_bitmask(k, min, u32x16::ZERO))
3362    }
3363}
3364
3365/// Compare packed unsigned 32-bit integers in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3366///
3367/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_min_epu32&expand=3727)
3368#[inline]
3369#[target_feature(enable = "avx512f,avx512vl")]
3370#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3371#[cfg_attr(test, assert_instr(vpminud))]
3372#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3373pub const fn _mm256_mask_min_epu32(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
3374    unsafe {
3375        let min = _mm256_min_epu32(a, b).as_u32x8();
3376        transmute(simd_select_bitmask(k, min, src.as_u32x8()))
3377    }
3378}
3379
3380/// Compare packed unsigned 32-bit integers in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3381///
3382/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_min_epu32&expand=3728)
3383#[inline]
3384#[target_feature(enable = "avx512f,avx512vl")]
3385#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3386#[cfg_attr(test, assert_instr(vpminud))]
3387#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3388pub const fn _mm256_maskz_min_epu32(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
3389    unsafe {
3390        let min = _mm256_min_epu32(a, b).as_u32x8();
3391        transmute(simd_select_bitmask(k, min, u32x8::ZERO))
3392    }
3393}
3394
3395/// Compare packed unsigned 32-bit integers in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3396///
3397/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_min_epu32&expand=3724)
3398#[inline]
3399#[target_feature(enable = "avx512f,avx512vl")]
3400#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3401#[cfg_attr(test, assert_instr(vpminud))]
3402#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3403pub const fn _mm_mask_min_epu32(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
3404    unsafe {
3405        let min = _mm_min_epu32(a, b).as_u32x4();
3406        transmute(simd_select_bitmask(k, min, src.as_u32x4()))
3407    }
3408}
3409
3410/// Compare packed unsigned 32-bit integers in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3411///
3412/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_min_epu32&expand=3725)
3413#[inline]
3414#[target_feature(enable = "avx512f,avx512vl")]
3415#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3416#[cfg_attr(test, assert_instr(vpminud))]
3417#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3418pub const fn _mm_maskz_min_epu32(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
3419    unsafe {
3420        let min = _mm_min_epu32(a, b).as_u32x4();
3421        transmute(simd_select_bitmask(k, min, u32x4::ZERO))
3422    }
3423}
3424
3425/// Compare packed unsigned 64-bit integers in a and b, and store packed minimum values in dst.
3426///
3427/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_min_epu64&expand=3741)
3428#[inline]
3429#[target_feature(enable = "avx512f")]
3430#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3431#[cfg_attr(test, assert_instr(vpminuq))]
3432#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3433pub const fn _mm512_min_epu64(a: __m512i, b: __m512i) -> __m512i {
3434    unsafe { simd_imin(a.as_u64x8(), b.as_u64x8()).as_m512i() }
3435}
3436
3437/// Compare packed unsigned 64-bit integers in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3438///
3439/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_min_epu64&expand=3739)
3440#[inline]
3441#[target_feature(enable = "avx512f")]
3442#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3443#[cfg_attr(test, assert_instr(vpminuq))]
3444#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3445pub const fn _mm512_mask_min_epu64(src: __m512i, k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
3446    unsafe {
3447        let min = _mm512_min_epu64(a, b).as_u64x8();
3448        transmute(simd_select_bitmask(k, min, src.as_u64x8()))
3449    }
3450}
3451
3452/// Compare packed unsigned 64-bit integers in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3453///
3454/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_min_epu64&expand=3740)
3455#[inline]
3456#[target_feature(enable = "avx512f")]
3457#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3458#[cfg_attr(test, assert_instr(vpminuq))]
3459#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3460pub const fn _mm512_maskz_min_epu64(k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
3461    unsafe {
3462        let min = _mm512_min_epu64(a, b).as_u64x8();
3463        transmute(simd_select_bitmask(k, min, u64x8::ZERO))
3464    }
3465}
3466
3467/// Compare packed unsigned 64-bit integers in a and b, and store packed minimum values in dst.
3468///
3469/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_min_epu64&expand=3738)
3470#[inline]
3471#[target_feature(enable = "avx512f,avx512vl")]
3472#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3473#[cfg_attr(test, assert_instr(vpminuq))]
3474#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3475pub const fn _mm256_min_epu64(a: __m256i, b: __m256i) -> __m256i {
3476    unsafe { simd_imin(a.as_u64x4(), b.as_u64x4()).as_m256i() }
3477}
3478
3479/// Compare packed unsigned 64-bit integers in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3480///
3481/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_min_epu64&expand=3736)
3482#[inline]
3483#[target_feature(enable = "avx512f,avx512vl")]
3484#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3485#[cfg_attr(test, assert_instr(vpminuq))]
3486#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3487pub const fn _mm256_mask_min_epu64(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
3488    unsafe {
3489        let min = _mm256_min_epu64(a, b).as_u64x4();
3490        transmute(simd_select_bitmask(k, min, src.as_u64x4()))
3491    }
3492}
3493
3494/// Compare packed unsigned 64-bit integers in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3495///
3496/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_min_epu64&expand=3737)
3497#[inline]
3498#[target_feature(enable = "avx512f,avx512vl")]
3499#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3500#[cfg_attr(test, assert_instr(vpminuq))]
3501#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3502pub const fn _mm256_maskz_min_epu64(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
3503    unsafe {
3504        let min = _mm256_min_epu64(a, b).as_u64x4();
3505        transmute(simd_select_bitmask(k, min, u64x4::ZERO))
3506    }
3507}
3508
3509/// Compare packed unsigned 64-bit integers in a and b, and store packed minimum values in dst.
3510///
3511/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_epu64&expand=3735)
3512#[inline]
3513#[target_feature(enable = "avx512f,avx512vl")]
3514#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3515#[cfg_attr(test, assert_instr(vpminuq))]
3516#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3517pub const fn _mm_min_epu64(a: __m128i, b: __m128i) -> __m128i {
3518    unsafe { simd_imin(a.as_u64x2(), b.as_u64x2()).as_m128i() }
3519}
3520
3521/// Compare packed unsigned 64-bit integers in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3522///
3523/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_min_epu64&expand=3733)
3524#[inline]
3525#[target_feature(enable = "avx512f,avx512vl")]
3526#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3527#[cfg_attr(test, assert_instr(vpminuq))]
3528#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3529pub const fn _mm_mask_min_epu64(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
3530    unsafe {
3531        let min = _mm_min_epu64(a, b).as_u64x2();
3532        transmute(simd_select_bitmask(k, min, src.as_u64x2()))
3533    }
3534}
3535
3536/// Compare packed unsigned 64-bit integers in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3537///
3538/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_min_epu64&expand=3734)
3539#[inline]
3540#[target_feature(enable = "avx512f,avx512vl")]
3541#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3542#[cfg_attr(test, assert_instr(vpminuq))]
3543#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3544pub const fn _mm_maskz_min_epu64(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
3545    unsafe {
3546        let min = _mm_min_epu64(a, b).as_u64x2();
3547        transmute(simd_select_bitmask(k, min, u64x2::ZERO))
3548    }
3549}
3550
3551/// Compute the square root of packed single-precision (32-bit) floating-point elements in a, and store the results in dst.
3552///
3553/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_sqrt_ps&expand=5371)
3554#[inline]
3555#[target_feature(enable = "avx512f")]
3556#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3557#[cfg_attr(test, assert_instr(vsqrtps))]
3558pub fn _mm512_sqrt_ps(a: __m512) -> __m512 {
3559    unsafe { simd_fsqrt(a) }
3560}
3561
3562/// Compute the square root of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3563///
3564/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_sqrt_ps&expand=5369)
3565#[inline]
3566#[target_feature(enable = "avx512f")]
3567#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3568#[cfg_attr(test, assert_instr(vsqrtps))]
3569pub fn _mm512_mask_sqrt_ps(src: __m512, k: __mmask16, a: __m512) -> __m512 {
3570    unsafe { simd_select_bitmask(k, simd_fsqrt(a), src) }
3571}
3572
3573/// Compute the square root of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3574///
3575/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_sqrt_ps&expand=5370)
3576#[inline]
3577#[target_feature(enable = "avx512f")]
3578#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3579#[cfg_attr(test, assert_instr(vsqrtps))]
3580pub fn _mm512_maskz_sqrt_ps(k: __mmask16, a: __m512) -> __m512 {
3581    unsafe { simd_select_bitmask(k, simd_fsqrt(a), _mm512_setzero_ps()) }
3582}
3583
3584/// Compute the square root of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3585///
3586/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_sqrt_ps&expand=5366)
3587#[inline]
3588#[target_feature(enable = "avx512f,avx512vl")]
3589#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3590#[cfg_attr(test, assert_instr(vsqrtps))]
3591pub fn _mm256_mask_sqrt_ps(src: __m256, k: __mmask8, a: __m256) -> __m256 {
3592    unsafe { simd_select_bitmask(k, simd_fsqrt(a), src) }
3593}
3594
3595/// Compute the square root of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3596///
3597/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_sqrt_ps&expand=5367)
3598#[inline]
3599#[target_feature(enable = "avx512f,avx512vl")]
3600#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3601#[cfg_attr(test, assert_instr(vsqrtps))]
3602pub fn _mm256_maskz_sqrt_ps(k: __mmask8, a: __m256) -> __m256 {
3603    unsafe { simd_select_bitmask(k, simd_fsqrt(a), _mm256_setzero_ps()) }
3604}
3605
3606/// Compute the square root of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3607///
3608/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_sqrt_ps&expand=5363)
3609#[inline]
3610#[target_feature(enable = "avx512f,avx512vl")]
3611#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3612#[cfg_attr(test, assert_instr(vsqrtps))]
3613pub fn _mm_mask_sqrt_ps(src: __m128, k: __mmask8, a: __m128) -> __m128 {
3614    unsafe { simd_select_bitmask(k, simd_fsqrt(a), src) }
3615}
3616
3617/// Compute the square root of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3618///
3619/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_sqrt_ps&expand=5364)
3620#[inline]
3621#[target_feature(enable = "avx512f,avx512vl")]
3622#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3623#[cfg_attr(test, assert_instr(vsqrtps))]
3624pub fn _mm_maskz_sqrt_ps(k: __mmask8, a: __m128) -> __m128 {
3625    unsafe { simd_select_bitmask(k, simd_fsqrt(a), _mm_setzero_ps()) }
3626}
3627
3628/// Compute the square root of packed double-precision (64-bit) floating-point elements in a, and store the results in dst.
3629///
3630/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_sqrt_pd&expand=5362)
3631#[inline]
3632#[target_feature(enable = "avx512f")]
3633#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3634#[cfg_attr(test, assert_instr(vsqrtpd))]
3635pub fn _mm512_sqrt_pd(a: __m512d) -> __m512d {
3636    unsafe { simd_fsqrt(a) }
3637}
3638
3639/// Compute the square root of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3640///
3641/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_sqrt_pd&expand=5360)
3642#[inline]
3643#[target_feature(enable = "avx512f")]
3644#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3645#[cfg_attr(test, assert_instr(vsqrtpd))]
3646pub fn _mm512_mask_sqrt_pd(src: __m512d, k: __mmask8, a: __m512d) -> __m512d {
3647    unsafe { simd_select_bitmask(k, simd_fsqrt(a), src) }
3648}
3649
3650/// Compute the square root of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3651///
3652/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_sqrt_pd&expand=5361)
3653#[inline]
3654#[target_feature(enable = "avx512f")]
3655#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3656#[cfg_attr(test, assert_instr(vsqrtpd))]
3657pub fn _mm512_maskz_sqrt_pd(k: __mmask8, a: __m512d) -> __m512d {
3658    unsafe { simd_select_bitmask(k, simd_fsqrt(a), _mm512_setzero_pd()) }
3659}
3660
3661/// Compute the square root of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3662///
3663/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_sqrt_pd&expand=5357)
3664#[inline]
3665#[target_feature(enable = "avx512f,avx512vl")]
3666#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3667#[cfg_attr(test, assert_instr(vsqrtpd))]
3668pub fn _mm256_mask_sqrt_pd(src: __m256d, k: __mmask8, a: __m256d) -> __m256d {
3669    unsafe { simd_select_bitmask(k, simd_fsqrt(a), src) }
3670}
3671
3672/// Compute the square root of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3673///
3674/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_sqrt_pd&expand=5358)
3675#[inline]
3676#[target_feature(enable = "avx512f,avx512vl")]
3677#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3678#[cfg_attr(test, assert_instr(vsqrtpd))]
3679pub fn _mm256_maskz_sqrt_pd(k: __mmask8, a: __m256d) -> __m256d {
3680    unsafe { simd_select_bitmask(k, simd_fsqrt(a), _mm256_setzero_pd()) }
3681}
3682
3683/// Compute the square root of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
3684///
3685/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_sqrt_pd&expand=5354)
3686#[inline]
3687#[target_feature(enable = "avx512f,avx512vl")]
3688#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3689#[cfg_attr(test, assert_instr(vsqrtpd))]
3690pub fn _mm_mask_sqrt_pd(src: __m128d, k: __mmask8, a: __m128d) -> __m128d {
3691    unsafe { simd_select_bitmask(k, simd_fsqrt(a), src) }
3692}
3693
3694/// Compute the square root of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3695///
3696/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_sqrt_pd&expand=5355)
3697#[inline]
3698#[target_feature(enable = "avx512f,avx512vl")]
3699#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3700#[cfg_attr(test, assert_instr(vsqrtpd))]
3701pub fn _mm_maskz_sqrt_pd(k: __mmask8, a: __m128d) -> __m128d {
3702    unsafe { simd_select_bitmask(k, simd_fsqrt(a), _mm_setzero_pd()) }
3703}
3704
3705/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst.
3706///
3707/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fmadd_ps&expand=2557)
3708#[inline]
3709#[target_feature(enable = "avx512f")]
3710#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3711#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132ps or vfmadd213ps or vfmadd231ps
3712#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3713pub const fn _mm512_fmadd_ps(a: __m512, b: __m512, c: __m512) -> __m512 {
3714    unsafe { simd_fma(a, b, c) }
3715}
3716
3717/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
3718///
3719/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fmadd_ps&expand=2558)
3720#[inline]
3721#[target_feature(enable = "avx512f")]
3722#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3723#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132ps or vfmadd213ps or vfmadd231ps
3724#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3725pub const fn _mm512_mask_fmadd_ps(a: __m512, k: __mmask16, b: __m512, c: __m512) -> __m512 {
3726    unsafe { simd_select_bitmask(k, _mm512_fmadd_ps(a, b, c), a) }
3727}
3728
3729/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3730///
3731/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fmadd_ps&expand=2560)
3732#[inline]
3733#[target_feature(enable = "avx512f")]
3734#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3735#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132ps or vfmadd213ps or vfmadd231ps
3736#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3737pub const fn _mm512_maskz_fmadd_ps(k: __mmask16, a: __m512, b: __m512, c: __m512) -> __m512 {
3738    unsafe { simd_select_bitmask(k, _mm512_fmadd_ps(a, b, c), _mm512_setzero_ps()) }
3739}
3740
3741/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
3742///
3743/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fmadd_ps&expand=2559)
3744#[inline]
3745#[target_feature(enable = "avx512f")]
3746#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3747#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132ps or vfmadd213ps or vfmadd231ps
3748#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3749pub const fn _mm512_mask3_fmadd_ps(a: __m512, b: __m512, c: __m512, k: __mmask16) -> __m512 {
3750    unsafe { simd_select_bitmask(k, _mm512_fmadd_ps(a, b, c), c) }
3751}
3752
3753/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
3754///
3755/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_fmadd_ps&expand=2554)
3756#[inline]
3757#[target_feature(enable = "avx512f,avx512vl")]
3758#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3759#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132ps or vfmadd213ps or vfmadd231ps
3760#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3761pub const fn _mm256_mask_fmadd_ps(a: __m256, k: __mmask8, b: __m256, c: __m256) -> __m256 {
3762    unsafe { simd_select_bitmask(k, _mm256_fmadd_ps(a, b, c), a) }
3763}
3764
3765/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3766///
3767/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_fmadd_ps&expand=2556)
3768#[inline]
3769#[target_feature(enable = "avx512f,avx512vl")]
3770#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3771#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132ps or vfmadd213ps or vfmadd231ps
3772#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3773pub const fn _mm256_maskz_fmadd_ps(k: __mmask8, a: __m256, b: __m256, c: __m256) -> __m256 {
3774    unsafe { simd_select_bitmask(k, _mm256_fmadd_ps(a, b, c), _mm256_setzero_ps()) }
3775}
3776
3777/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
3778///
3779/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask3_fmadd_ps&expand=2555)
3780#[inline]
3781#[target_feature(enable = "avx512f,avx512vl")]
3782#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3783#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132ps or vfmadd213ps or vfmadd231ps
3784#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3785pub const fn _mm256_mask3_fmadd_ps(a: __m256, b: __m256, c: __m256, k: __mmask8) -> __m256 {
3786    unsafe { simd_select_bitmask(k, _mm256_fmadd_ps(a, b, c), c) }
3787}
3788
3789/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
3790///
3791/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_fmadd_ps&expand=2550)
3792#[inline]
3793#[target_feature(enable = "avx512f,avx512vl")]
3794#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3795#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132ps or vfmadd213ps or vfmadd231ps
3796#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3797pub const fn _mm_mask_fmadd_ps(a: __m128, k: __mmask8, b: __m128, c: __m128) -> __m128 {
3798    unsafe { simd_select_bitmask(k, _mm_fmadd_ps(a, b, c), a) }
3799}
3800
3801/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3802///
3803/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_fmadd_ps&expand=2552)
3804#[inline]
3805#[target_feature(enable = "avx512f,avx512vl")]
3806#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3807#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132ps or vfmadd213ps or vfmadd231ps
3808#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3809pub const fn _mm_maskz_fmadd_ps(k: __mmask8, a: __m128, b: __m128, c: __m128) -> __m128 {
3810    unsafe { simd_select_bitmask(k, _mm_fmadd_ps(a, b, c), _mm_setzero_ps()) }
3811}
3812
3813/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
3814///
3815/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask3_fmadd_ps&expand=2551)
3816#[inline]
3817#[target_feature(enable = "avx512f,avx512vl")]
3818#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3819#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132ps or vfmadd213ps or vfmadd231ps
3820#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3821pub const fn _mm_mask3_fmadd_ps(a: __m128, b: __m128, c: __m128, k: __mmask8) -> __m128 {
3822    unsafe { simd_select_bitmask(k, _mm_fmadd_ps(a, b, c), c) }
3823}
3824
3825/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst.
3826///
3827/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fmadd_pd&expand=2545)
3828#[inline]
3829#[target_feature(enable = "avx512f")]
3830#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3831#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132pd or vfmadd213pd or vfmadd231pd
3832#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3833pub const fn _mm512_fmadd_pd(a: __m512d, b: __m512d, c: __m512d) -> __m512d {
3834    unsafe { simd_fma(a, b, c) }
3835}
3836
3837/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
3838///
3839/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fmadd_pd&expand=2546)
3840#[inline]
3841#[target_feature(enable = "avx512f")]
3842#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3843#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132pd or vfmadd213pd or vfmadd231pd
3844#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3845pub const fn _mm512_mask_fmadd_pd(a: __m512d, k: __mmask8, b: __m512d, c: __m512d) -> __m512d {
3846    unsafe { simd_select_bitmask(k, _mm512_fmadd_pd(a, b, c), a) }
3847}
3848
3849/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3850///
3851/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fmadd_pd&expand=2548)
3852#[inline]
3853#[target_feature(enable = "avx512f")]
3854#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3855#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132pd or vfmadd213pd or vfmadd231pd
3856#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3857pub const fn _mm512_maskz_fmadd_pd(k: __mmask8, a: __m512d, b: __m512d, c: __m512d) -> __m512d {
3858    unsafe { simd_select_bitmask(k, _mm512_fmadd_pd(a, b, c), _mm512_setzero_pd()) }
3859}
3860
3861/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
3862///
3863/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fmadd_pd&expand=2547)
3864#[inline]
3865#[target_feature(enable = "avx512f")]
3866#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3867#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132pd or vfmadd213pd or vfmadd231pd
3868#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3869pub const fn _mm512_mask3_fmadd_pd(a: __m512d, b: __m512d, c: __m512d, k: __mmask8) -> __m512d {
3870    unsafe { simd_select_bitmask(k, _mm512_fmadd_pd(a, b, c), c) }
3871}
3872
3873/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
3874///
3875/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_fmadd_pd&expand=2542)
3876#[inline]
3877#[target_feature(enable = "avx512f,avx512vl")]
3878#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3879#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132pd or vfmadd213pd or vfmadd231pd
3880#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3881pub const fn _mm256_mask_fmadd_pd(a: __m256d, k: __mmask8, b: __m256d, c: __m256d) -> __m256d {
3882    unsafe { simd_select_bitmask(k, _mm256_fmadd_pd(a, b, c), a) }
3883}
3884
3885/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3886///
3887/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_fmadd_pd&expand=2544)
3888#[inline]
3889#[target_feature(enable = "avx512f,avx512vl")]
3890#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3891#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132pd or vfmadd213pd or vfmadd231pd
3892#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3893pub const fn _mm256_maskz_fmadd_pd(k: __mmask8, a: __m256d, b: __m256d, c: __m256d) -> __m256d {
3894    unsafe { simd_select_bitmask(k, _mm256_fmadd_pd(a, b, c), _mm256_setzero_pd()) }
3895}
3896
3897/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
3898///
3899/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask3_fmadd_pd&expand=2543)
3900#[inline]
3901#[target_feature(enable = "avx512f,avx512vl")]
3902#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3903#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132pd or vfmadd213pd or vfmadd231pd
3904#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3905pub const fn _mm256_mask3_fmadd_pd(a: __m256d, b: __m256d, c: __m256d, k: __mmask8) -> __m256d {
3906    unsafe { simd_select_bitmask(k, _mm256_fmadd_pd(a, b, c), c) }
3907}
3908
3909/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
3910///
3911/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_fmadd_pd&expand=2538)
3912#[inline]
3913#[target_feature(enable = "avx512f,avx512vl")]
3914#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3915#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132pd or vfmadd213pd or vfmadd231pd
3916#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3917pub const fn _mm_mask_fmadd_pd(a: __m128d, k: __mmask8, b: __m128d, c: __m128d) -> __m128d {
3918    unsafe { simd_select_bitmask(k, _mm_fmadd_pd(a, b, c), a) }
3919}
3920
3921/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3922///
3923/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_fmadd_pd&expand=2540)
3924#[inline]
3925#[target_feature(enable = "avx512f,avx512vl")]
3926#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3927#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132pd or vfmadd213pd or vfmadd231pd
3928#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3929pub const fn _mm_maskz_fmadd_pd(k: __mmask8, a: __m128d, b: __m128d, c: __m128d) -> __m128d {
3930    unsafe { simd_select_bitmask(k, _mm_fmadd_pd(a, b, c), _mm_setzero_pd()) }
3931}
3932
3933/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
3934///
3935/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask3_fmadd_pd&expand=2539)
3936#[inline]
3937#[target_feature(enable = "avx512f,avx512vl")]
3938#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3939#[cfg_attr(test, assert_instr(vfmadd))] //vfmadd132pd or vfmadd213pd or vfmadd231pd
3940#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3941pub const fn _mm_mask3_fmadd_pd(a: __m128d, b: __m128d, c: __m128d, k: __mmask8) -> __m128d {
3942    unsafe { simd_select_bitmask(k, _mm_fmadd_pd(a, b, c), c) }
3943}
3944
3945/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst.
3946///
3947/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fmsub_ps&expand=2643)
3948#[inline]
3949#[target_feature(enable = "avx512f")]
3950#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3951#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132ps or vfmsub213ps or vfmsub231ps, clang generate vfmadd, gcc generate vfmsub
3952#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3953pub const fn _mm512_fmsub_ps(a: __m512, b: __m512, c: __m512) -> __m512 {
3954    unsafe { simd_fma(a, b, simd_neg(c)) }
3955}
3956
3957/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
3958///
3959/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fmsub_ps&expand=2644)
3960#[inline]
3961#[target_feature(enable = "avx512f")]
3962#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3963#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132ps or vfmsub213ps or vfmsub231ps, clang generate vfmadd, gcc generate vfmsub
3964#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3965pub const fn _mm512_mask_fmsub_ps(a: __m512, k: __mmask16, b: __m512, c: __m512) -> __m512 {
3966    unsafe { simd_select_bitmask(k, _mm512_fmsub_ps(a, b, c), a) }
3967}
3968
3969/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
3970///
3971/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fmsub_ps&expand=2646)
3972#[inline]
3973#[target_feature(enable = "avx512f")]
3974#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3975#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132ps or vfmsub213ps or vfmsub231ps, clang generate vfmadd, gcc generate vfmsub
3976#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3977pub const fn _mm512_maskz_fmsub_ps(k: __mmask16, a: __m512, b: __m512, c: __m512) -> __m512 {
3978    unsafe { simd_select_bitmask(k, _mm512_fmsub_ps(a, b, c), _mm512_setzero_ps()) }
3979}
3980
3981/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
3982///
3983/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fmsub_ps&expand=2645)
3984#[inline]
3985#[target_feature(enable = "avx512f")]
3986#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3987#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132ps or vfmsub213ps or vfmsub231ps, clang generate vfmadd, gcc generate vfmsub
3988#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
3989pub const fn _mm512_mask3_fmsub_ps(a: __m512, b: __m512, c: __m512, k: __mmask16) -> __m512 {
3990    unsafe { simd_select_bitmask(k, _mm512_fmsub_ps(a, b, c), c) }
3991}
3992
3993/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
3994///
3995/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_fmsub_ps&expand=2640)
3996#[inline]
3997#[target_feature(enable = "avx512f,avx512vl")]
3998#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
3999#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132ps or vfmsub213ps or vfmsub231ps, clang generate vfmadd, gcc generate vfmsub
4000#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4001pub const fn _mm256_mask_fmsub_ps(a: __m256, k: __mmask8, b: __m256, c: __m256) -> __m256 {
4002    unsafe { simd_select_bitmask(k, _mm256_fmsub_ps(a, b, c), a) }
4003}
4004
4005/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4006///
4007/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_fmsub_ps&expand=2642)
4008#[inline]
4009#[target_feature(enable = "avx512f,avx512vl")]
4010#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4011#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132ps or vfmsub213ps or vfmsub231ps, clang generate vfmadd, gcc generate vfmsub
4012#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4013pub const fn _mm256_maskz_fmsub_ps(k: __mmask8, a: __m256, b: __m256, c: __m256) -> __m256 {
4014    unsafe { simd_select_bitmask(k, _mm256_fmsub_ps(a, b, c), _mm256_setzero_ps()) }
4015}
4016
4017/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4018///
4019/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask3_fmsub_ps&expand=2641)
4020#[inline]
4021#[target_feature(enable = "avx512f,avx512vl")]
4022#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4023#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132ps or vfmsub213ps or vfmsub231ps, clang generate vfmadd, gcc generate vfmsub
4024#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4025pub const fn _mm256_mask3_fmsub_ps(a: __m256, b: __m256, c: __m256, k: __mmask8) -> __m256 {
4026    unsafe { simd_select_bitmask(k, _mm256_fmsub_ps(a, b, c), c) }
4027}
4028
4029/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4030///
4031/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_fmsub_ps&expand=2636)
4032#[inline]
4033#[target_feature(enable = "avx512f,avx512vl")]
4034#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4035#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132ps or vfmsub213ps or vfmsub231ps, clang generate vfmadd, gcc generate vfmsub
4036#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4037pub const fn _mm_mask_fmsub_ps(a: __m128, k: __mmask8, b: __m128, c: __m128) -> __m128 {
4038    unsafe { simd_select_bitmask(k, _mm_fmsub_ps(a, b, c), a) }
4039}
4040
4041/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4042///
4043/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_fmsub_ps&expand=2638)
4044#[inline]
4045#[target_feature(enable = "avx512f,avx512vl")]
4046#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4047#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132ps or vfmsub213ps or vfmsub231ps, clang generate vfmadd, gcc generate vfmsub
4048#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4049pub const fn _mm_maskz_fmsub_ps(k: __mmask8, a: __m128, b: __m128, c: __m128) -> __m128 {
4050    unsafe { simd_select_bitmask(k, _mm_fmsub_ps(a, b, c), _mm_setzero_ps()) }
4051}
4052
4053/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4054///
4055/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask3_fmsub_ps&expand=2637)
4056#[inline]
4057#[target_feature(enable = "avx512f,avx512vl")]
4058#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4059#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132ps or vfmsub213ps or vfmsub231ps, clang generate vfmadd, gcc generate vfmsub
4060#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4061pub const fn _mm_mask3_fmsub_ps(a: __m128, b: __m128, c: __m128, k: __mmask8) -> __m128 {
4062    unsafe { simd_select_bitmask(k, _mm_fmsub_ps(a, b, c), c) }
4063}
4064
4065/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst.
4066///
4067/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fmsub_pd&expand=2631)
4068#[inline]
4069#[target_feature(enable = "avx512f")]
4070#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4071#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132pd or vfmsub213pd or vfmsub231pd. clang fmadd, gcc fmsub
4072#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4073pub const fn _mm512_fmsub_pd(a: __m512d, b: __m512d, c: __m512d) -> __m512d {
4074    unsafe { simd_fma(a, b, simd_neg(c)) }
4075}
4076
4077/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4078///
4079/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fmsub_pd&expand=2632)
4080#[inline]
4081#[target_feature(enable = "avx512f")]
4082#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4083#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132pd or vfmsub213pd or vfmsub231pd. clang fmadd, gcc fmsub
4084#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4085pub const fn _mm512_mask_fmsub_pd(a: __m512d, k: __mmask8, b: __m512d, c: __m512d) -> __m512d {
4086    unsafe { simd_select_bitmask(k, _mm512_fmsub_pd(a, b, c), a) }
4087}
4088
4089/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4090///
4091/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fmsub_pd&expand=2634)
4092#[inline]
4093#[target_feature(enable = "avx512f")]
4094#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4095#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132pd or vfmsub213pd or vfmsub231pd. clang fmadd, gcc fmsub
4096#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4097pub const fn _mm512_maskz_fmsub_pd(k: __mmask8, a: __m512d, b: __m512d, c: __m512d) -> __m512d {
4098    unsafe { simd_select_bitmask(k, _mm512_fmsub_pd(a, b, c), _mm512_setzero_pd()) }
4099}
4100
4101/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4102///
4103/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fmsub_pd&expand=2633)
4104#[inline]
4105#[target_feature(enable = "avx512f")]
4106#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4107#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132pd or vfmsub213pd or vfmsub231pd. clang fmadd, gcc fmsub
4108#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4109pub const fn _mm512_mask3_fmsub_pd(a: __m512d, b: __m512d, c: __m512d, k: __mmask8) -> __m512d {
4110    unsafe { simd_select_bitmask(k, _mm512_fmsub_pd(a, b, c), c) }
4111}
4112
4113/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4114///
4115/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_fmsub_pd&expand=2628)
4116#[inline]
4117#[target_feature(enable = "avx512f,avx512vl")]
4118#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4119#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132pd or vfmsub213pd or vfmsub231pd. clang fmadd, gcc fmsub
4120#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4121pub const fn _mm256_mask_fmsub_pd(a: __m256d, k: __mmask8, b: __m256d, c: __m256d) -> __m256d {
4122    unsafe { simd_select_bitmask(k, _mm256_fmsub_pd(a, b, c), a) }
4123}
4124
4125/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4126///
4127/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_fmsub_pd&expand=2630)
4128#[inline]
4129#[target_feature(enable = "avx512f,avx512vl")]
4130#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4131#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132pd or vfmsub213pd or vfmsub231pd. clang fmadd, gcc fmsub
4132#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4133pub const fn _mm256_maskz_fmsub_pd(k: __mmask8, a: __m256d, b: __m256d, c: __m256d) -> __m256d {
4134    unsafe { simd_select_bitmask(k, _mm256_fmsub_pd(a, b, c), _mm256_setzero_pd()) }
4135}
4136
4137/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4138///
4139/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask3_fmsub_pd&expand=2629)
4140#[inline]
4141#[target_feature(enable = "avx512f,avx512vl")]
4142#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4143#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132pd or vfmsub213pd or vfmsub231pd. clang fmadd, gcc fmsub
4144#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4145pub const fn _mm256_mask3_fmsub_pd(a: __m256d, b: __m256d, c: __m256d, k: __mmask8) -> __m256d {
4146    unsafe { simd_select_bitmask(k, _mm256_fmsub_pd(a, b, c), c) }
4147}
4148
4149/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4150///
4151/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_fmsub_pd&expand=2624)
4152#[inline]
4153#[target_feature(enable = "avx512f,avx512vl")]
4154#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4155#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132pd or vfmsub213pd or vfmsub231pd. clang fmadd, gcc fmsub
4156#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4157pub const fn _mm_mask_fmsub_pd(a: __m128d, k: __mmask8, b: __m128d, c: __m128d) -> __m128d {
4158    unsafe { simd_select_bitmask(k, _mm_fmsub_pd(a, b, c), a) }
4159}
4160
4161/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4162///
4163/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_fmsub_pd&expand=2626)
4164#[inline]
4165#[target_feature(enable = "avx512f,avx512vl")]
4166#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4167#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132pd or vfmsub213pd or vfmsub231pd. clang fmadd, gcc fmsub
4168#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4169pub const fn _mm_maskz_fmsub_pd(k: __mmask8, a: __m128d, b: __m128d, c: __m128d) -> __m128d {
4170    unsafe { simd_select_bitmask(k, _mm_fmsub_pd(a, b, c), _mm_setzero_pd()) }
4171}
4172
4173/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4174///
4175/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask3_fmsub_pd&expand=2625)
4176#[inline]
4177#[target_feature(enable = "avx512f,avx512vl")]
4178#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4179#[cfg_attr(test, assert_instr(vfmsub))] //vfmsub132pd or vfmsub213pd or vfmsub231pd. clang fmadd, gcc fmsub
4180#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4181pub const fn _mm_mask3_fmsub_pd(a: __m128d, b: __m128d, c: __m128d, k: __mmask8) -> __m128d {
4182    unsafe { simd_select_bitmask(k, _mm_fmsub_pd(a, b, c), c) }
4183}
4184
4185/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst.
4186///
4187/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fmaddsub_ps&expand=2611)
4188#[inline]
4189#[target_feature(enable = "avx512f")]
4190#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4191#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132ps or vfmaddsub213ps or vfmaddsub231ps
4192#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4193pub const fn _mm512_fmaddsub_ps(a: __m512, b: __m512, c: __m512) -> __m512 {
4194    unsafe {
4195        let add = simd_fma(a, b, c);
4196        let sub = simd_fma(a, b, simd_neg(c));
4197        simd_shuffle!(
4198            add,
4199            sub,
4200            [16, 1, 18, 3, 20, 5, 22, 7, 24, 9, 26, 11, 28, 13, 30, 15]
4201        )
4202    }
4203}
4204
4205/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4206///
4207/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fmaddsub_ps&expand=2612)
4208#[inline]
4209#[target_feature(enable = "avx512f")]
4210#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4211#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132ps or vfmaddsub213ps or vfmaddsub231ps
4212#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4213pub const fn _mm512_mask_fmaddsub_ps(a: __m512, k: __mmask16, b: __m512, c: __m512) -> __m512 {
4214    unsafe { simd_select_bitmask(k, _mm512_fmaddsub_ps(a, b, c), a) }
4215}
4216
4217/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4218///
4219/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fmaddsub_ps&expand=2614)
4220#[inline]
4221#[target_feature(enable = "avx512f")]
4222#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4223#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132ps or vfmaddsub213ps or vfmaddsub231ps
4224#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4225pub const fn _mm512_maskz_fmaddsub_ps(k: __mmask16, a: __m512, b: __m512, c: __m512) -> __m512 {
4226    unsafe { simd_select_bitmask(k, _mm512_fmaddsub_ps(a, b, c), _mm512_setzero_ps()) }
4227}
4228
4229/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4230///
4231/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fmaddsub_ps&expand=2613)
4232#[inline]
4233#[target_feature(enable = "avx512f")]
4234#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4235#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132ps or vfmaddsub213ps or vfmaddsub231ps
4236#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4237pub const fn _mm512_mask3_fmaddsub_ps(a: __m512, b: __m512, c: __m512, k: __mmask16) -> __m512 {
4238    unsafe { simd_select_bitmask(k, _mm512_fmaddsub_ps(a, b, c), c) }
4239}
4240
4241/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4242///
4243/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_fmaddsub_ps&expand=2608)
4244#[inline]
4245#[target_feature(enable = "avx512f,avx512vl")]
4246#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4247#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132ps or vfmaddsub213ps or vfmaddsub231ps
4248#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4249pub const fn _mm256_mask_fmaddsub_ps(a: __m256, k: __mmask8, b: __m256, c: __m256) -> __m256 {
4250    unsafe { simd_select_bitmask(k, _mm256_fmaddsub_ps(a, b, c), a) }
4251}
4252
4253/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4254///
4255/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_fmaddsub_ps&expand=2610)
4256#[inline]
4257#[target_feature(enable = "avx512f,avx512vl")]
4258#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4259#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132ps or vfmaddsub213ps or vfmaddsub231ps
4260#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4261pub const fn _mm256_maskz_fmaddsub_ps(k: __mmask8, a: __m256, b: __m256, c: __m256) -> __m256 {
4262    unsafe { simd_select_bitmask(k, _mm256_fmaddsub_ps(a, b, c), _mm256_setzero_ps()) }
4263}
4264
4265/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4266///
4267/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask3_fmaddsub_ps&expand=2609)
4268#[inline]
4269#[target_feature(enable = "avx512f,avx512vl")]
4270#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4271#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132ps or vfmaddsub213ps or vfmaddsub231ps
4272#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4273pub const fn _mm256_mask3_fmaddsub_ps(a: __m256, b: __m256, c: __m256, k: __mmask8) -> __m256 {
4274    unsafe { simd_select_bitmask(k, _mm256_fmaddsub_ps(a, b, c), c) }
4275}
4276
4277/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4278///
4279/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_fmaddsub_ps&expand=2604)
4280#[inline]
4281#[target_feature(enable = "avx512f,avx512vl")]
4282#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4283#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132ps or vfmaddsub213ps or vfmaddsub231ps
4284#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4285pub const fn _mm_mask_fmaddsub_ps(a: __m128, k: __mmask8, b: __m128, c: __m128) -> __m128 {
4286    unsafe { simd_select_bitmask(k, _mm_fmaddsub_ps(a, b, c), a) }
4287}
4288
4289/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4290///
4291/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/IntrinsicsGuide/#text=_mm_maskz_fmaddsub_ps&expand=2606)
4292#[inline]
4293#[target_feature(enable = "avx512f,avx512vl")]
4294#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4295#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132ps or vfmaddsub213ps or vfmaddsub231ps
4296#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4297pub const fn _mm_maskz_fmaddsub_ps(k: __mmask8, a: __m128, b: __m128, c: __m128) -> __m128 {
4298    unsafe { simd_select_bitmask(k, _mm_fmaddsub_ps(a, b, c), _mm_setzero_ps()) }
4299}
4300
4301/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4302///
4303/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask3_fmaddsub_ps&expand=2605)
4304#[inline]
4305#[target_feature(enable = "avx512f,avx512vl")]
4306#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4307#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132ps or vfmaddsub213ps or vfmaddsub231ps
4308#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4309pub const fn _mm_mask3_fmaddsub_ps(a: __m128, b: __m128, c: __m128, k: __mmask8) -> __m128 {
4310    unsafe { simd_select_bitmask(k, _mm_fmaddsub_ps(a, b, c), c) }
4311}
4312
4313/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst.
4314///
4315/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fmaddsub_pd&expand=2599)
4316#[inline]
4317#[target_feature(enable = "avx512f")]
4318#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4319#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132pd or vfmaddsub213pd or vfmaddsub231pd
4320#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4321pub const fn _mm512_fmaddsub_pd(a: __m512d, b: __m512d, c: __m512d) -> __m512d {
4322    unsafe {
4323        let add = simd_fma(a, b, c);
4324        let sub = simd_fma(a, b, simd_neg(c));
4325        simd_shuffle!(add, sub, [8, 1, 10, 3, 12, 5, 14, 7])
4326    }
4327}
4328
4329/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4330///
4331/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fmaddsub_pd&expand=2600)
4332#[inline]
4333#[target_feature(enable = "avx512f")]
4334#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4335#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132pd or vfmaddsub213pd or vfmaddsub231pd
4336#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4337pub const fn _mm512_mask_fmaddsub_pd(a: __m512d, k: __mmask8, b: __m512d, c: __m512d) -> __m512d {
4338    unsafe { simd_select_bitmask(k, _mm512_fmaddsub_pd(a, b, c), a) }
4339}
4340
4341/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4342///
4343/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fmaddsub_pd&expand=2602)
4344#[inline]
4345#[target_feature(enable = "avx512f")]
4346#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4347#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132pd or vfmaddsub213pd or vfmaddsub231pd
4348#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4349pub const fn _mm512_maskz_fmaddsub_pd(k: __mmask8, a: __m512d, b: __m512d, c: __m512d) -> __m512d {
4350    unsafe { simd_select_bitmask(k, _mm512_fmaddsub_pd(a, b, c), _mm512_setzero_pd()) }
4351}
4352
4353/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4354///
4355/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fmaddsub_pd&expand=2613)
4356#[inline]
4357#[target_feature(enable = "avx512f")]
4358#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4359#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132pd or vfmaddsub213pd or vfmaddsub231pd
4360#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4361pub const fn _mm512_mask3_fmaddsub_pd(a: __m512d, b: __m512d, c: __m512d, k: __mmask8) -> __m512d {
4362    unsafe { simd_select_bitmask(k, _mm512_fmaddsub_pd(a, b, c), c) }
4363}
4364
4365/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4366///
4367/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_fmaddsub_pd&expand=2596)
4368#[inline]
4369#[target_feature(enable = "avx512f,avx512vl")]
4370#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4371#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132pd or vfmaddsub213pd or vfmaddsub231pd
4372#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4373pub const fn _mm256_mask_fmaddsub_pd(a: __m256d, k: __mmask8, b: __m256d, c: __m256d) -> __m256d {
4374    unsafe { simd_select_bitmask(k, _mm256_fmaddsub_pd(a, b, c), a) }
4375}
4376
4377/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4378///
4379/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_fmaddsub_pd&expand=2598)
4380#[inline]
4381#[target_feature(enable = "avx512f,avx512vl")]
4382#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4383#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132pd or vfmaddsub213pd or vfmaddsub231pd
4384#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4385pub const fn _mm256_maskz_fmaddsub_pd(k: __mmask8, a: __m256d, b: __m256d, c: __m256d) -> __m256d {
4386    unsafe { simd_select_bitmask(k, _mm256_fmaddsub_pd(a, b, c), _mm256_setzero_pd()) }
4387}
4388
4389/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4390///
4391/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask3_fmaddsub_pd&expand=2597)
4392#[inline]
4393#[target_feature(enable = "avx512f,avx512vl")]
4394#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4395#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132pd or vfmaddsub213pd or vfmaddsub231pd
4396#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4397pub const fn _mm256_mask3_fmaddsub_pd(a: __m256d, b: __m256d, c: __m256d, k: __mmask8) -> __m256d {
4398    unsafe { simd_select_bitmask(k, _mm256_fmaddsub_pd(a, b, c), c) }
4399}
4400
4401/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4402///
4403/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_fmaddsub_pd&expand=2592)
4404#[inline]
4405#[target_feature(enable = "avx512f,avx512vl")]
4406#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4407#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132pd or vfmaddsub213pd or vfmaddsub231pd
4408#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4409pub const fn _mm_mask_fmaddsub_pd(a: __m128d, k: __mmask8, b: __m128d, c: __m128d) -> __m128d {
4410    unsafe { simd_select_bitmask(k, _mm_fmaddsub_pd(a, b, c), a) }
4411}
4412
4413/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4414///
4415/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_fmaddsub_pd&expand=2594)
4416#[inline]
4417#[target_feature(enable = "avx512f,avx512vl")]
4418#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4419#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132pd or vfmaddsub213pd or vfmaddsub231pd
4420#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4421pub const fn _mm_maskz_fmaddsub_pd(k: __mmask8, a: __m128d, b: __m128d, c: __m128d) -> __m128d {
4422    unsafe { simd_select_bitmask(k, _mm_fmaddsub_pd(a, b, c), _mm_setzero_pd()) }
4423}
4424
4425/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4426///
4427/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask3_fmaddsub_pd&expand=2593)
4428#[inline]
4429#[target_feature(enable = "avx512f,avx512vl")]
4430#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4431#[cfg_attr(test, assert_instr(vfmaddsub))] //vfmaddsub132pd or vfmaddsub213pd or vfmaddsub231pd
4432#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4433pub const fn _mm_mask3_fmaddsub_pd(a: __m128d, b: __m128d, c: __m128d, k: __mmask8) -> __m128d {
4434    unsafe { simd_select_bitmask(k, _mm_fmaddsub_pd(a, b, c), c) }
4435}
4436
4437/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst.
4438///
4439/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fmsubadd_ps&expand=2691)
4440#[inline]
4441#[target_feature(enable = "avx512f")]
4442#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4443#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132ps or vfmsubadd213ps or vfmsubadd231ps
4444#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4445pub const fn _mm512_fmsubadd_ps(a: __m512, b: __m512, c: __m512) -> __m512 {
4446    unsafe {
4447        let add = simd_fma(a, b, c);
4448        let sub = simd_fma(a, b, simd_neg(c));
4449        simd_shuffle!(
4450            add,
4451            sub,
4452            [0, 17, 2, 19, 4, 21, 6, 23, 8, 25, 10, 27, 12, 29, 14, 31]
4453        )
4454    }
4455}
4456
4457/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4458///
4459/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fmsubadd_ps&expand=2692)
4460#[inline]
4461#[target_feature(enable = "avx512f")]
4462#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4463#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132ps or vfmsubadd213ps or vfmsubadd231ps
4464#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4465pub const fn _mm512_mask_fmsubadd_ps(a: __m512, k: __mmask16, b: __m512, c: __m512) -> __m512 {
4466    unsafe { simd_select_bitmask(k, _mm512_fmsubadd_ps(a, b, c), a) }
4467}
4468
4469/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4470///
4471/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fmsubadd_ps&expand=2694)
4472#[inline]
4473#[target_feature(enable = "avx512f")]
4474#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4475#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132ps or vfmsubadd213ps or vfmsubadd231ps
4476#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4477pub const fn _mm512_maskz_fmsubadd_ps(k: __mmask16, a: __m512, b: __m512, c: __m512) -> __m512 {
4478    unsafe { simd_select_bitmask(k, _mm512_fmsubadd_ps(a, b, c), _mm512_setzero_ps()) }
4479}
4480
4481/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4482///
4483/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fmsubadd_ps&expand=2693)
4484#[inline]
4485#[target_feature(enable = "avx512f")]
4486#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4487#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132ps or vfmsubadd213ps or vfmsubadd231ps
4488#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4489pub const fn _mm512_mask3_fmsubadd_ps(a: __m512, b: __m512, c: __m512, k: __mmask16) -> __m512 {
4490    unsafe { simd_select_bitmask(k, _mm512_fmsubadd_ps(a, b, c), c) }
4491}
4492
4493/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4494///
4495/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_fmsubadd_ps&expand=2688)
4496#[inline]
4497#[target_feature(enable = "avx512f,avx512vl")]
4498#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4499#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132ps or vfmsubadd213ps or vfmsubadd231ps
4500#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4501pub const fn _mm256_mask_fmsubadd_ps(a: __m256, k: __mmask8, b: __m256, c: __m256) -> __m256 {
4502    unsafe { simd_select_bitmask(k, _mm256_fmsubadd_ps(a, b, c), a) }
4503}
4504
4505/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4506///
4507/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_fmsubadd_ps&expand=2690)
4508#[inline]
4509#[target_feature(enable = "avx512f,avx512vl")]
4510#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4511#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132ps or vfmsubadd213ps or vfmsubadd231ps
4512#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4513pub const fn _mm256_maskz_fmsubadd_ps(k: __mmask8, a: __m256, b: __m256, c: __m256) -> __m256 {
4514    unsafe { simd_select_bitmask(k, _mm256_fmsubadd_ps(a, b, c), _mm256_setzero_ps()) }
4515}
4516
4517/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4518///
4519/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask3_fmsubadd_ps&expand=2689)
4520#[inline]
4521#[target_feature(enable = "avx512f,avx512vl")]
4522#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4523#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132ps or vfmsubadd213ps or vfmsubadd231ps
4524#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4525pub const fn _mm256_mask3_fmsubadd_ps(a: __m256, b: __m256, c: __m256, k: __mmask8) -> __m256 {
4526    unsafe { simd_select_bitmask(k, _mm256_fmsubadd_ps(a, b, c), c) }
4527}
4528
4529/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4530///
4531/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_fmsubadd_ps&expand=2684)
4532#[inline]
4533#[target_feature(enable = "avx512f,avx512vl")]
4534#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4535#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132ps or vfmsubadd213ps or vfmsubadd231ps
4536#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4537pub const fn _mm_mask_fmsubadd_ps(a: __m128, k: __mmask8, b: __m128, c: __m128) -> __m128 {
4538    unsafe { simd_select_bitmask(k, _mm_fmsubadd_ps(a, b, c), a) }
4539}
4540
4541/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4542///
4543/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_fmsubadd_ps&expand=2686)
4544#[inline]
4545#[target_feature(enable = "avx512f,avx512vl")]
4546#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4547#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132ps or vfmsubadd213ps or vfmsubadd231ps
4548#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4549pub const fn _mm_maskz_fmsubadd_ps(k: __mmask8, a: __m128, b: __m128, c: __m128) -> __m128 {
4550    unsafe { simd_select_bitmask(k, _mm_fmsubadd_ps(a, b, c), _mm_setzero_ps()) }
4551}
4552
4553/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4554///
4555/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask3_fmsubadd_ps&expand=2685)
4556#[inline]
4557#[target_feature(enable = "avx512f,avx512vl")]
4558#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4559#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132ps or vfmsubadd213ps or vfmsubadd231ps
4560#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4561pub const fn _mm_mask3_fmsubadd_ps(a: __m128, b: __m128, c: __m128, k: __mmask8) -> __m128 {
4562    unsafe { simd_select_bitmask(k, _mm_fmsubadd_ps(a, b, c), c) }
4563}
4564
4565/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst.
4566///
4567/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fmsubadd_pd&expand=2679)
4568#[inline]
4569#[target_feature(enable = "avx512f")]
4570#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4571#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132pd or vfmsubadd213pd or vfmsubadd231pd
4572#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4573pub const fn _mm512_fmsubadd_pd(a: __m512d, b: __m512d, c: __m512d) -> __m512d {
4574    unsafe {
4575        let add = simd_fma(a, b, c);
4576        let sub = simd_fma(a, b, simd_neg(c));
4577        simd_shuffle!(add, sub, [0, 9, 2, 11, 4, 13, 6, 15])
4578    }
4579}
4580
4581/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4582///
4583/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fmsubadd_pd&expand=2680)
4584#[inline]
4585#[target_feature(enable = "avx512f")]
4586#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4587#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132pd or vfmsubadd213pd or vfmsubadd231pd
4588#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4589pub const fn _mm512_mask_fmsubadd_pd(a: __m512d, k: __mmask8, b: __m512d, c: __m512d) -> __m512d {
4590    unsafe { simd_select_bitmask(k, _mm512_fmsubadd_pd(a, b, c), a) }
4591}
4592
4593/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4594///
4595/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fmsubadd_pd&expand=2682)
4596#[inline]
4597#[target_feature(enable = "avx512f")]
4598#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4599#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132pd or vfmsubadd213pd or vfmsubadd231pd
4600#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4601pub const fn _mm512_maskz_fmsubadd_pd(k: __mmask8, a: __m512d, b: __m512d, c: __m512d) -> __m512d {
4602    unsafe { simd_select_bitmask(k, _mm512_fmsubadd_pd(a, b, c), _mm512_setzero_pd()) }
4603}
4604
4605/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4606///
4607/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fmsubadd_pd&expand=2681)
4608#[inline]
4609#[target_feature(enable = "avx512f")]
4610#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4611#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132pd or vfmsubadd213pd or vfmsubadd231pd
4612#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4613pub const fn _mm512_mask3_fmsubadd_pd(a: __m512d, b: __m512d, c: __m512d, k: __mmask8) -> __m512d {
4614    unsafe { simd_select_bitmask(k, _mm512_fmsubadd_pd(a, b, c), c) }
4615}
4616
4617/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4618///
4619/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_fmsubadd_pd&expand=2676)
4620#[inline]
4621#[target_feature(enable = "avx512f,avx512vl")]
4622#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4623#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132pd or vfmsubadd213pd or vfmsubadd231pd
4624#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4625pub const fn _mm256_mask_fmsubadd_pd(a: __m256d, k: __mmask8, b: __m256d, c: __m256d) -> __m256d {
4626    unsafe { simd_select_bitmask(k, _mm256_fmsubadd_pd(a, b, c), a) }
4627}
4628
4629/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4630///
4631/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_fmsubadd_pd&expand=2678)
4632#[inline]
4633#[target_feature(enable = "avx512f,avx512vl")]
4634#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4635#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132pd or vfmsubadd213pd or vfmsubadd231pd
4636#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4637pub const fn _mm256_maskz_fmsubadd_pd(k: __mmask8, a: __m256d, b: __m256d, c: __m256d) -> __m256d {
4638    unsafe { simd_select_bitmask(k, _mm256_fmsubadd_pd(a, b, c), _mm256_setzero_pd()) }
4639}
4640
4641/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4642///
4643/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask3_fmsubadd_pd&expand=2677)
4644#[inline]
4645#[target_feature(enable = "avx512f,avx512vl")]
4646#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4647#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132pd or vfmsubadd213pd or vfmsubadd231pd
4648#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4649pub const fn _mm256_mask3_fmsubadd_pd(a: __m256d, b: __m256d, c: __m256d, k: __mmask8) -> __m256d {
4650    unsafe { simd_select_bitmask(k, _mm256_fmsubadd_pd(a, b, c), c) }
4651}
4652
4653/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4654///
4655/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_fmsubadd_pd&expand=2672)
4656#[inline]
4657#[target_feature(enable = "avx512f,avx512vl")]
4658#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4659#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132pd or vfmsubadd213pd or vfmsubadd231pd
4660#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4661pub const fn _mm_mask_fmsubadd_pd(a: __m128d, k: __mmask8, b: __m128d, c: __m128d) -> __m128d {
4662    unsafe { simd_select_bitmask(k, _mm_fmsubadd_pd(a, b, c), a) }
4663}
4664
4665/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4666///
4667/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_fmsubadd_pd&expand=2674)
4668#[inline]
4669#[target_feature(enable = "avx512f,avx512vl")]
4670#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4671#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132pd or vfmsubadd213pd or vfmsubadd231pd
4672#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4673pub const fn _mm_maskz_fmsubadd_pd(k: __mmask8, a: __m128d, b: __m128d, c: __m128d) -> __m128d {
4674    unsafe { simd_select_bitmask(k, _mm_fmsubadd_pd(a, b, c), _mm_setzero_pd()) }
4675}
4676
4677/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4678///
4679/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask3_fmsubadd_pd&expand=2673)
4680#[inline]
4681#[target_feature(enable = "avx512f,avx512vl")]
4682#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4683#[cfg_attr(test, assert_instr(vfmsubadd))] //vfmsubadd132pd or vfmsubadd213pd or vfmsubadd231pd
4684#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4685pub const fn _mm_mask3_fmsubadd_pd(a: __m128d, b: __m128d, c: __m128d, k: __mmask8) -> __m128d {
4686    unsafe { simd_select_bitmask(k, _mm_fmsubadd_pd(a, b, c), c) }
4687}
4688
4689/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst.
4690///
4691/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fnmadd_ps&expand=2723)
4692#[inline]
4693#[target_feature(enable = "avx512f")]
4694#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4695#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132ps or vfnmadd213ps or vfnmadd231ps
4696#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4697pub const fn _mm512_fnmadd_ps(a: __m512, b: __m512, c: __m512) -> __m512 {
4698    unsafe { simd_fma(simd_neg(a), b, c) }
4699}
4700
4701/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4702///
4703/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fnmadd_ps&expand=2724)
4704#[inline]
4705#[target_feature(enable = "avx512f")]
4706#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4707#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132ps or vfnmadd213ps or vfnmadd231ps
4708#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4709pub const fn _mm512_mask_fnmadd_ps(a: __m512, k: __mmask16, b: __m512, c: __m512) -> __m512 {
4710    unsafe { simd_select_bitmask(k, _mm512_fnmadd_ps(a, b, c), a) }
4711}
4712
4713/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4714///
4715/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fnmadd_ps&expand=2726)
4716#[inline]
4717#[target_feature(enable = "avx512f")]
4718#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4719#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132ps or vfnmadd213ps or vfnmadd231ps
4720#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4721pub const fn _mm512_maskz_fnmadd_ps(k: __mmask16, a: __m512, b: __m512, c: __m512) -> __m512 {
4722    unsafe { simd_select_bitmask(k, _mm512_fnmadd_ps(a, b, c), _mm512_setzero_ps()) }
4723}
4724
4725/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4726///
4727/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fnmadd_ps&expand=2725)
4728#[inline]
4729#[target_feature(enable = "avx512f")]
4730#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4731#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132ps or vfnmadd213ps or vfnmadd231ps
4732#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4733pub const fn _mm512_mask3_fnmadd_ps(a: __m512, b: __m512, c: __m512, k: __mmask16) -> __m512 {
4734    unsafe { simd_select_bitmask(k, _mm512_fnmadd_ps(a, b, c), c) }
4735}
4736
4737/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4738///
4739/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_fnmadd_ps&expand=2720)
4740#[inline]
4741#[target_feature(enable = "avx512f,avx512vl")]
4742#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4743#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132ps or vfnmadd213ps or vfnmadd231ps
4744#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4745pub const fn _mm256_mask_fnmadd_ps(a: __m256, k: __mmask8, b: __m256, c: __m256) -> __m256 {
4746    unsafe { simd_select_bitmask(k, _mm256_fnmadd_ps(a, b, c), a) }
4747}
4748
4749/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4750///
4751/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_fnmadd_ps&expand=2722)
4752#[inline]
4753#[target_feature(enable = "avx512f,avx512vl")]
4754#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4755#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132ps or vfnmadd213ps or vfnmadd231ps
4756#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4757pub const fn _mm256_maskz_fnmadd_ps(k: __mmask8, a: __m256, b: __m256, c: __m256) -> __m256 {
4758    unsafe { simd_select_bitmask(k, _mm256_fnmadd_ps(a, b, c), _mm256_setzero_ps()) }
4759}
4760
4761/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4762///
4763/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask3_fnmadd_ps&expand=2721)
4764#[inline]
4765#[target_feature(enable = "avx512f,avx512vl")]
4766#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4767#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132ps or vfnmadd213ps or vfnmadd231ps
4768#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4769pub const fn _mm256_mask3_fnmadd_ps(a: __m256, b: __m256, c: __m256, k: __mmask8) -> __m256 {
4770    unsafe { simd_select_bitmask(k, _mm256_fnmadd_ps(a, b, c), c) }
4771}
4772
4773/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4774///
4775/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_fnmadd_ps&expand=2716)
4776#[inline]
4777#[target_feature(enable = "avx512f,avx512vl")]
4778#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4779#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132ps or vfnmadd213ps or vfnmadd231ps
4780#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4781pub const fn _mm_mask_fnmadd_ps(a: __m128, k: __mmask8, b: __m128, c: __m128) -> __m128 {
4782    unsafe { simd_select_bitmask(k, _mm_fnmadd_ps(a, b, c), a) }
4783}
4784
4785/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4786///
4787/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_fnmadd_ps&expand=2718)
4788#[inline]
4789#[target_feature(enable = "avx512f,avx512vl")]
4790#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4791#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132ps or vfnmadd213ps or vfnmadd231ps
4792#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4793pub const fn _mm_maskz_fnmadd_ps(k: __mmask8, a: __m128, b: __m128, c: __m128) -> __m128 {
4794    unsafe { simd_select_bitmask(k, _mm_fnmadd_ps(a, b, c), _mm_setzero_ps()) }
4795}
4796
4797/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4798///
4799/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask3_fnmadd_ps&expand=2717)
4800#[inline]
4801#[target_feature(enable = "avx512f,avx512vl")]
4802#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4803#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132ps or vfnmadd213ps or vfnmadd231ps
4804#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4805pub const fn _mm_mask3_fnmadd_ps(a: __m128, b: __m128, c: __m128, k: __mmask8) -> __m128 {
4806    unsafe { simd_select_bitmask(k, _mm_fnmadd_ps(a, b, c), c) }
4807}
4808
4809/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst.
4810///
4811/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fnmadd_pd&expand=2711)
4812#[inline]
4813#[target_feature(enable = "avx512f")]
4814#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4815#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132pd or vfnmadd213pd or vfnmadd231pd
4816#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4817pub const fn _mm512_fnmadd_pd(a: __m512d, b: __m512d, c: __m512d) -> __m512d {
4818    unsafe { simd_fma(simd_neg(a), b, c) }
4819}
4820
4821/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4822///
4823/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fnmadd_pd&expand=2712)
4824#[inline]
4825#[target_feature(enable = "avx512f")]
4826#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4827#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132pd or vfnmadd213pd or vfnmadd231pd
4828#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4829pub const fn _mm512_mask_fnmadd_pd(a: __m512d, k: __mmask8, b: __m512d, c: __m512d) -> __m512d {
4830    unsafe { simd_select_bitmask(k, _mm512_fnmadd_pd(a, b, c), a) }
4831}
4832
4833/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4834///
4835/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fnmadd_pd&expand=2714)
4836#[inline]
4837#[target_feature(enable = "avx512f")]
4838#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4839#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132pd or vfnmadd213pd or vfnmadd231pd
4840#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4841pub const fn _mm512_maskz_fnmadd_pd(k: __mmask8, a: __m512d, b: __m512d, c: __m512d) -> __m512d {
4842    unsafe { simd_select_bitmask(k, _mm512_fnmadd_pd(a, b, c), _mm512_setzero_pd()) }
4843}
4844
4845/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4846///
4847/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fnmadd_pd&expand=2713)
4848#[inline]
4849#[target_feature(enable = "avx512f")]
4850#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4851#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132pd or vfnmadd213pd or vfnmadd231pd
4852#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4853pub const fn _mm512_mask3_fnmadd_pd(a: __m512d, b: __m512d, c: __m512d, k: __mmask8) -> __m512d {
4854    unsafe { simd_select_bitmask(k, _mm512_fnmadd_pd(a, b, c), c) }
4855}
4856
4857/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4858///
4859/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_fnmadd_pd&expand=2708)
4860#[inline]
4861#[target_feature(enable = "avx512f,avx512vl")]
4862#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4863#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132pd or vfnmadd213pd or vfnmadd231pd
4864#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4865pub const fn _mm256_mask_fnmadd_pd(a: __m256d, k: __mmask8, b: __m256d, c: __m256d) -> __m256d {
4866    unsafe { simd_select_bitmask(k, _mm256_fnmadd_pd(a, b, c), a) }
4867}
4868
4869/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4870///
4871/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_fnmadd_pd&expand=2710)
4872#[inline]
4873#[target_feature(enable = "avx512f,avx512vl")]
4874#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4875#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132pd or vfnmadd213pd or vfnmadd231pd
4876#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4877pub const fn _mm256_maskz_fnmadd_pd(k: __mmask8, a: __m256d, b: __m256d, c: __m256d) -> __m256d {
4878    unsafe { simd_select_bitmask(k, _mm256_fnmadd_pd(a, b, c), _mm256_setzero_pd()) }
4879}
4880
4881/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4882///
4883/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask3_fnmadd_pd&expand=2709)
4884#[inline]
4885#[target_feature(enable = "avx512f,avx512vl")]
4886#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4887#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132pd or vfnmadd213pd or vfnmadd231pd
4888#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4889pub const fn _mm256_mask3_fnmadd_pd(a: __m256d, b: __m256d, c: __m256d, k: __mmask8) -> __m256d {
4890    unsafe { simd_select_bitmask(k, _mm256_fnmadd_pd(a, b, c), c) }
4891}
4892
4893/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4894///
4895/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_fnmadd_pd&expand=2704)
4896#[inline]
4897#[target_feature(enable = "avx512f,avx512vl")]
4898#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4899#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132pd or vfnmadd213pd or vfnmadd231pd
4900#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4901pub const fn _mm_mask_fnmadd_pd(a: __m128d, k: __mmask8, b: __m128d, c: __m128d) -> __m128d {
4902    unsafe { simd_select_bitmask(k, _mm_fnmadd_pd(a, b, c), a) }
4903}
4904
4905/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4906///
4907/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_fnmadd_pd&expand=2706)
4908#[inline]
4909#[target_feature(enable = "avx512f,avx512vl")]
4910#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4911#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132pd or vfnmadd213pd or vfnmadd231pd
4912#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4913pub const fn _mm_maskz_fnmadd_pd(k: __mmask8, a: __m128d, b: __m128d, c: __m128d) -> __m128d {
4914    unsafe { simd_select_bitmask(k, _mm_fnmadd_pd(a, b, c), _mm_setzero_pd()) }
4915}
4916
4917/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4918///
4919/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask3_fnmadd_pd&expand=2705)
4920#[inline]
4921#[target_feature(enable = "avx512f,avx512vl")]
4922#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4923#[cfg_attr(test, assert_instr(vfnmadd))] //vfnmadd132pd or vfnmadd213pd or vfnmadd231pd
4924#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4925pub const fn _mm_mask3_fnmadd_pd(a: __m128d, b: __m128d, c: __m128d, k: __mmask8) -> __m128d {
4926    unsafe { simd_select_bitmask(k, _mm_fnmadd_pd(a, b, c), c) }
4927}
4928
4929/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst.
4930///
4931/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fnmsub_ps&expand=2771)
4932#[inline]
4933#[target_feature(enable = "avx512f")]
4934#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4935#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132ps or vfnmsub213ps or vfnmsub231ps
4936#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4937pub const fn _mm512_fnmsub_ps(a: __m512, b: __m512, c: __m512) -> __m512 {
4938    unsafe { simd_fma(simd_neg(a), b, simd_neg(c)) }
4939}
4940
4941/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4942///
4943/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fnmsub_ps&expand=2772)
4944#[inline]
4945#[target_feature(enable = "avx512f")]
4946#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4947#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132ps or vfnmsub213ps or vfnmsub231ps
4948#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4949pub const fn _mm512_mask_fnmsub_ps(a: __m512, k: __mmask16, b: __m512, c: __m512) -> __m512 {
4950    unsafe { simd_select_bitmask(k, _mm512_fnmsub_ps(a, b, c), a) }
4951}
4952
4953/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4954///
4955/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fnmsub_ps&expand=2774)
4956#[inline]
4957#[target_feature(enable = "avx512f")]
4958#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4959#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132ps or vfnmsub213ps or vfnmsub231ps
4960#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4961pub const fn _mm512_maskz_fnmsub_ps(k: __mmask16, a: __m512, b: __m512, c: __m512) -> __m512 {
4962    unsafe { simd_select_bitmask(k, _mm512_fnmsub_ps(a, b, c), _mm512_setzero_ps()) }
4963}
4964
4965/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
4966///
4967/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fnmsub_ps&expand=2773)
4968#[inline]
4969#[target_feature(enable = "avx512f")]
4970#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4971#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132ps or vfnmsub213ps or vfnmsub231ps
4972#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4973pub const fn _mm512_mask3_fnmsub_ps(a: __m512, b: __m512, c: __m512, k: __mmask16) -> __m512 {
4974    unsafe { simd_select_bitmask(k, _mm512_fnmsub_ps(a, b, c), c) }
4975}
4976
4977/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
4978///
4979/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_fnmsub_ps&expand=2768)
4980#[inline]
4981#[target_feature(enable = "avx512f,avx512vl")]
4982#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4983#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132ps or vfnmsub213ps or vfnmsub231ps
4984#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4985pub const fn _mm256_mask_fnmsub_ps(a: __m256, k: __mmask8, b: __m256, c: __m256) -> __m256 {
4986    unsafe { simd_select_bitmask(k, _mm256_fnmsub_ps(a, b, c), a) }
4987}
4988
4989/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
4990///
4991/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_fnmsub_ps&expand=2770)
4992#[inline]
4993#[target_feature(enable = "avx512f,avx512vl")]
4994#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
4995#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132ps or vfnmsub213ps or vfnmsub231ps
4996#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
4997pub const fn _mm256_maskz_fnmsub_ps(k: __mmask8, a: __m256, b: __m256, c: __m256) -> __m256 {
4998    unsafe { simd_select_bitmask(k, _mm256_fnmsub_ps(a, b, c), _mm256_setzero_ps()) }
4999}
5000
5001/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
5002///
5003/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask3_fnmsub_ps&expand=2769)
5004#[inline]
5005#[target_feature(enable = "avx512f,avx512vl")]
5006#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5007#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132ps or vfnmsub213ps or vfnmsub231ps
5008#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
5009pub const fn _mm256_mask3_fnmsub_ps(a: __m256, b: __m256, c: __m256, k: __mmask8) -> __m256 {
5010    unsafe { simd_select_bitmask(k, _mm256_fnmsub_ps(a, b, c), c) }
5011}
5012
5013/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
5014///
5015/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_fnmsub_ps&expand=2764)
5016#[inline]
5017#[target_feature(enable = "avx512f,avx512vl")]
5018#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5019#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132ps or vfnmsub213ps or vfnmsub231ps
5020#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
5021pub const fn _mm_mask_fnmsub_ps(a: __m128, k: __mmask8, b: __m128, c: __m128) -> __m128 {
5022    unsafe { simd_select_bitmask(k, _mm_fnmsub_ps(a, b, c), a) }
5023}
5024
5025/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
5026///
5027/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_fnmsub_ps&expand=2766)
5028#[inline]
5029#[target_feature(enable = "avx512f,avx512vl")]
5030#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5031#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132ps or vfnmsub213ps or vfnmsub231ps
5032#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
5033pub const fn _mm_maskz_fnmsub_ps(k: __mmask8, a: __m128, b: __m128, c: __m128) -> __m128 {
5034    unsafe { simd_select_bitmask(k, _mm_fnmsub_ps(a, b, c), _mm_setzero_ps()) }
5035}
5036
5037/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
5038///
5039/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask3_fnmsub_ps&expand=2765)
5040#[inline]
5041#[target_feature(enable = "avx512f,avx512vl")]
5042#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5043#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132ps or vfnmsub213ps or vfnmsub231ps
5044#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
5045pub const fn _mm_mask3_fnmsub_ps(a: __m128, b: __m128, c: __m128, k: __mmask8) -> __m128 {
5046    unsafe { simd_select_bitmask(k, _mm_fnmsub_ps(a, b, c), c) }
5047}
5048
5049/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst.
5050///
5051/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fnmsub_pd&expand=2759)
5052#[inline]
5053#[target_feature(enable = "avx512f")]
5054#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5055#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132pd or vfnmsub213pd or vfnmsub231pd
5056#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
5057pub const fn _mm512_fnmsub_pd(a: __m512d, b: __m512d, c: __m512d) -> __m512d {
5058    unsafe { simd_fma(simd_neg(a), b, simd_neg(c)) }
5059}
5060
5061/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
5062///
5063/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fnmsub_pd&expand=2760)
5064#[inline]
5065#[target_feature(enable = "avx512f")]
5066#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5067#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132pd or vfnmsub213pd or vfnmsub231pd
5068#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
5069pub const fn _mm512_mask_fnmsub_pd(a: __m512d, k: __mmask8, b: __m512d, c: __m512d) -> __m512d {
5070    unsafe { simd_select_bitmask(k, _mm512_fnmsub_pd(a, b, c), a) }
5071}
5072
5073/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
5074///
5075/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fnmsub_pd&expand=2762)
5076#[inline]
5077#[target_feature(enable = "avx512f")]
5078#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5079#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132pd or vfnmsub213pd or vfnmsub231pd
5080#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
5081pub const fn _mm512_maskz_fnmsub_pd(k: __mmask8, a: __m512d, b: __m512d, c: __m512d) -> __m512d {
5082    unsafe { simd_select_bitmask(k, _mm512_fnmsub_pd(a, b, c), _mm512_setzero_pd()) }
5083}
5084
5085/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
5086///
5087/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fnmsub_pd&expand=2761)
5088#[inline]
5089#[target_feature(enable = "avx512f")]
5090#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5091#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132pd or vfnmsub213pd or vfnmsub231pd
5092#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
5093pub const fn _mm512_mask3_fnmsub_pd(a: __m512d, b: __m512d, c: __m512d, k: __mmask8) -> __m512d {
5094    unsafe { simd_select_bitmask(k, _mm512_fnmsub_pd(a, b, c), c) }
5095}
5096
5097/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
5098///
5099/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_fnmsub_pd&expand=2756)
5100#[inline]
5101#[target_feature(enable = "avx512f,avx512vl")]
5102#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5103#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132pd or vfnmsub213pd or vfnmsub231pd
5104#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
5105pub const fn _mm256_mask_fnmsub_pd(a: __m256d, k: __mmask8, b: __m256d, c: __m256d) -> __m256d {
5106    unsafe { simd_select_bitmask(k, _mm256_fnmsub_pd(a, b, c), a) }
5107}
5108
5109/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
5110///
5111/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_fnmsub_pd&expand=2758)
5112#[inline]
5113#[target_feature(enable = "avx512f,avx512vl")]
5114#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5115#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132pd or vfnmsub213pd or vfnmsub231pd
5116#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
5117pub const fn _mm256_maskz_fnmsub_pd(k: __mmask8, a: __m256d, b: __m256d, c: __m256d) -> __m256d {
5118    unsafe { simd_select_bitmask(k, _mm256_fnmsub_pd(a, b, c), _mm256_setzero_pd()) }
5119}
5120
5121/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
5122///
5123/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask3_fnmsub_pd&expand=2757)
5124#[inline]
5125#[target_feature(enable = "avx512f,avx512vl")]
5126#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5127#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132pd or vfnmsub213pd or vfnmsub231pd
5128#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
5129pub const fn _mm256_mask3_fnmsub_pd(a: __m256d, b: __m256d, c: __m256d, k: __mmask8) -> __m256d {
5130    unsafe { simd_select_bitmask(k, _mm256_fnmsub_pd(a, b, c), c) }
5131}
5132
5133/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
5134///
5135/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_fnmsub_pd&expand=2752)
5136#[inline]
5137#[target_feature(enable = "avx512f,avx512vl")]
5138#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5139#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132pd or vfnmsub213pd or vfnmsub231pd
5140#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
5141pub const fn _mm_mask_fnmsub_pd(a: __m128d, k: __mmask8, b: __m128d, c: __m128d) -> __m128d {
5142    unsafe { simd_select_bitmask(k, _mm_fnmsub_pd(a, b, c), a) }
5143}
5144
5145/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
5146///
5147/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_fnmsub_pd&expand=2754)
5148#[inline]
5149#[target_feature(enable = "avx512f,avx512vl")]
5150#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5151#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132pd or vfnmsub213pd or vfnmsub231pd
5152#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
5153pub const fn _mm_maskz_fnmsub_pd(k: __mmask8, a: __m128d, b: __m128d, c: __m128d) -> __m128d {
5154    unsafe { simd_select_bitmask(k, _mm_fnmsub_pd(a, b, c), _mm_setzero_pd()) }
5155}
5156
5157/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).
5158///
5159/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask3_fnmsub_pd&expand=2753)
5160#[inline]
5161#[target_feature(enable = "avx512f,avx512vl")]
5162#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5163#[cfg_attr(test, assert_instr(vfnmsub))] //vfnmsub132pd or vfnmsub213pd or vfnmsub231pd
5164#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
5165pub const fn _mm_mask3_fnmsub_pd(a: __m128d, b: __m128d, c: __m128d, k: __mmask8) -> __m128d {
5166    unsafe { simd_select_bitmask(k, _mm_fnmsub_pd(a, b, c), c) }
5167}
5168
5169/// Compute the approximate reciprocal of packed single-precision (32-bit) floating-point elements in a, and store the results in dst. The maximum relative error for this approximation is less than 2^-14.
5170///
5171/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_rcp14_ps&expand=4502)
5172#[inline]
5173#[target_feature(enable = "avx512f")]
5174#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5175#[cfg_attr(test, assert_instr(vrcp14ps))]
5176pub fn _mm512_rcp14_ps(a: __m512) -> __m512 {
5177    unsafe { transmute(vrcp14ps(a.as_f32x16(), f32x16::ZERO, 0b11111111_11111111)) }
5178}
5179
5180/// Compute the approximate reciprocal of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5181///
5182/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_rcp14_ps&expand=4500)
5183#[inline]
5184#[target_feature(enable = "avx512f")]
5185#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5186#[cfg_attr(test, assert_instr(vrcp14ps))]
5187pub fn _mm512_mask_rcp14_ps(src: __m512, k: __mmask16, a: __m512) -> __m512 {
5188    unsafe { transmute(vrcp14ps(a.as_f32x16(), src.as_f32x16(), k)) }
5189}
5190
5191/// Compute the approximate reciprocal of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5192///
5193/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_rcp14_ps&expand=4501)
5194#[inline]
5195#[target_feature(enable = "avx512f")]
5196#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5197#[cfg_attr(test, assert_instr(vrcp14ps))]
5198pub fn _mm512_maskz_rcp14_ps(k: __mmask16, a: __m512) -> __m512 {
5199    unsafe { transmute(vrcp14ps(a.as_f32x16(), f32x16::ZERO, k)) }
5200}
5201
5202/// Compute the approximate reciprocal of packed single-precision (32-bit) floating-point elements in a, and store the results in dst. The maximum relative error for this approximation is less than 2^-14.
5203///
5204/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_rcp14_ps&expand=4499)
5205#[inline]
5206#[target_feature(enable = "avx512f,avx512vl")]
5207#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5208#[cfg_attr(test, assert_instr(vrcp14ps))]
5209pub fn _mm256_rcp14_ps(a: __m256) -> __m256 {
5210    unsafe { transmute(vrcp14ps256(a.as_f32x8(), f32x8::ZERO, 0b11111111)) }
5211}
5212
5213/// Compute the approximate reciprocal of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5214///
5215/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_rcp14_ps&expand=4497)
5216#[inline]
5217#[target_feature(enable = "avx512f,avx512vl")]
5218#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5219#[cfg_attr(test, assert_instr(vrcp14ps))]
5220pub fn _mm256_mask_rcp14_ps(src: __m256, k: __mmask8, a: __m256) -> __m256 {
5221    unsafe { transmute(vrcp14ps256(a.as_f32x8(), src.as_f32x8(), k)) }
5222}
5223
5224/// Compute the approximate reciprocal of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5225///
5226/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_rcp14_ps&expand=4498)
5227#[inline]
5228#[target_feature(enable = "avx512f,avx512vl")]
5229#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5230#[cfg_attr(test, assert_instr(vrcp14ps))]
5231pub fn _mm256_maskz_rcp14_ps(k: __mmask8, a: __m256) -> __m256 {
5232    unsafe { transmute(vrcp14ps256(a.as_f32x8(), f32x8::ZERO, k)) }
5233}
5234
5235/// Compute the approximate reciprocal of packed single-precision (32-bit) floating-point elements in a, and store the results in dst. The maximum relative error for this approximation is less than 2^-14.
5236///
5237/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rcp14_ps&expand=4496)
5238#[inline]
5239#[target_feature(enable = "avx512f,avx512vl")]
5240#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5241#[cfg_attr(test, assert_instr(vrcp14ps))]
5242pub fn _mm_rcp14_ps(a: __m128) -> __m128 {
5243    unsafe { transmute(vrcp14ps128(a.as_f32x4(), f32x4::ZERO, 0b00001111)) }
5244}
5245
5246/// Compute the approximate reciprocal of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5247///
5248/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_rcp14_ps&expand=4494)
5249#[inline]
5250#[target_feature(enable = "avx512f,avx512vl")]
5251#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5252#[cfg_attr(test, assert_instr(vrcp14ps))]
5253pub fn _mm_mask_rcp14_ps(src: __m128, k: __mmask8, a: __m128) -> __m128 {
5254    unsafe { transmute(vrcp14ps128(a.as_f32x4(), src.as_f32x4(), k)) }
5255}
5256
5257/// Compute the approximate reciprocal of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5258///
5259/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_rcp14_ps&expand=4495)
5260#[inline]
5261#[target_feature(enable = "avx512f,avx512vl")]
5262#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5263#[cfg_attr(test, assert_instr(vrcp14ps))]
5264pub fn _mm_maskz_rcp14_ps(k: __mmask8, a: __m128) -> __m128 {
5265    unsafe { transmute(vrcp14ps128(a.as_f32x4(), f32x4::ZERO, k)) }
5266}
5267
5268/// Compute the approximate reciprocal of packed double-precision (64-bit) floating-point elements in a, and store the results in dst. The maximum relative error for this approximation is less than 2^-14.
5269///
5270/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_rcp14_pd&expand=4493)
5271#[inline]
5272#[target_feature(enable = "avx512f")]
5273#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5274#[cfg_attr(test, assert_instr(vrcp14pd))]
5275pub fn _mm512_rcp14_pd(a: __m512d) -> __m512d {
5276    unsafe { transmute(vrcp14pd(a.as_f64x8(), f64x8::ZERO, 0b11111111)) }
5277}
5278
5279/// Compute the approximate reciprocal of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5280///
5281/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_rcp14_pd&expand=4491)
5282#[inline]
5283#[target_feature(enable = "avx512f")]
5284#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5285#[cfg_attr(test, assert_instr(vrcp14pd))]
5286pub fn _mm512_mask_rcp14_pd(src: __m512d, k: __mmask8, a: __m512d) -> __m512d {
5287    unsafe { transmute(vrcp14pd(a.as_f64x8(), src.as_f64x8(), k)) }
5288}
5289
5290/// Compute the approximate reciprocal of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5291///
5292/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_rcp14_pd&expand=4492)
5293#[inline]
5294#[target_feature(enable = "avx512f")]
5295#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5296#[cfg_attr(test, assert_instr(vrcp14pd))]
5297pub fn _mm512_maskz_rcp14_pd(k: __mmask8, a: __m512d) -> __m512d {
5298    unsafe { transmute(vrcp14pd(a.as_f64x8(), f64x8::ZERO, k)) }
5299}
5300
5301/// Compute the approximate reciprocal of packed double-precision (64-bit) floating-point elements in a, and store the results in dst. The maximum relative error for this approximation is less than 2^-14.
5302///
5303/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_rcp14_pd&expand=4490)
5304#[inline]
5305#[target_feature(enable = "avx512f,avx512vl")]
5306#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5307#[cfg_attr(test, assert_instr(vrcp14pd))]
5308pub fn _mm256_rcp14_pd(a: __m256d) -> __m256d {
5309    unsafe { transmute(vrcp14pd256(a.as_f64x4(), f64x4::ZERO, 0b00001111)) }
5310}
5311
5312/// Compute the approximate reciprocal of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5313///
5314/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_rcp14_pd&expand=4488)
5315#[inline]
5316#[target_feature(enable = "avx512f,avx512vl")]
5317#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5318#[cfg_attr(test, assert_instr(vrcp14pd))]
5319pub fn _mm256_mask_rcp14_pd(src: __m256d, k: __mmask8, a: __m256d) -> __m256d {
5320    unsafe { transmute(vrcp14pd256(a.as_f64x4(), src.as_f64x4(), k)) }
5321}
5322
5323/// Compute the approximate reciprocal of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5324///
5325/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_rcp14_pd&expand=4489)
5326#[inline]
5327#[target_feature(enable = "avx512f,avx512vl")]
5328#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5329#[cfg_attr(test, assert_instr(vrcp14pd))]
5330pub fn _mm256_maskz_rcp14_pd(k: __mmask8, a: __m256d) -> __m256d {
5331    unsafe { transmute(vrcp14pd256(a.as_f64x4(), f64x4::ZERO, k)) }
5332}
5333
5334/// Compute the approximate reciprocal of packed double-precision (64-bit) floating-point elements in a, and store the results in dst. The maximum relative error for this approximation is less than 2^-14.
5335///
5336/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rcp14_pd&expand=4487)
5337#[inline]
5338#[target_feature(enable = "avx512f,avx512vl")]
5339#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5340#[cfg_attr(test, assert_instr(vrcp14pd))]
5341pub fn _mm_rcp14_pd(a: __m128d) -> __m128d {
5342    unsafe { transmute(vrcp14pd128(a.as_f64x2(), f64x2::ZERO, 0b00000011)) }
5343}
5344
5345/// Compute the approximate reciprocal of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5346///
5347/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_rcp14_pd&expand=4485)
5348#[inline]
5349#[target_feature(enable = "avx512f,avx512vl")]
5350#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5351#[cfg_attr(test, assert_instr(vrcp14pd))]
5352pub fn _mm_mask_rcp14_pd(src: __m128d, k: __mmask8, a: __m128d) -> __m128d {
5353    unsafe { transmute(vrcp14pd128(a.as_f64x2(), src.as_f64x2(), k)) }
5354}
5355
5356/// Compute the approximate reciprocal of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5357///
5358/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_rcp14_pd&expand=4486)
5359#[inline]
5360#[target_feature(enable = "avx512f,avx512vl")]
5361#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5362#[cfg_attr(test, assert_instr(vrcp14pd))]
5363pub fn _mm_maskz_rcp14_pd(k: __mmask8, a: __m128d) -> __m128d {
5364    unsafe { transmute(vrcp14pd128(a.as_f64x2(), f64x2::ZERO, k)) }
5365}
5366
5367/// Compute the approximate reciprocal square root of packed single-precision (32-bit) floating-point elements in a, and store the results in dst. The maximum relative error for this approximation is less than 2^-14.
5368///
5369/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_rsqrt14_ps&expand=4819)
5370#[inline]
5371#[target_feature(enable = "avx512f")]
5372#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5373#[cfg_attr(test, assert_instr(vrsqrt14ps))]
5374pub fn _mm512_rsqrt14_ps(a: __m512) -> __m512 {
5375    unsafe { transmute(vrsqrt14ps(a.as_f32x16(), f32x16::ZERO, 0b11111111_11111111)) }
5376}
5377
5378/// Compute the approximate reciprocal square root of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5379///
5380/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_rsqrt14_ps&expand=4817)
5381#[inline]
5382#[target_feature(enable = "avx512f")]
5383#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5384#[cfg_attr(test, assert_instr(vrsqrt14ps))]
5385pub fn _mm512_mask_rsqrt14_ps(src: __m512, k: __mmask16, a: __m512) -> __m512 {
5386    unsafe { transmute(vrsqrt14ps(a.as_f32x16(), src.as_f32x16(), k)) }
5387}
5388
5389/// Compute the approximate reciprocal square root of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5390///
5391/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_rsqrt14_ps&expand=4818)
5392#[inline]
5393#[target_feature(enable = "avx512f")]
5394#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5395#[cfg_attr(test, assert_instr(vrsqrt14ps))]
5396pub fn _mm512_maskz_rsqrt14_ps(k: __mmask16, a: __m512) -> __m512 {
5397    unsafe { transmute(vrsqrt14ps(a.as_f32x16(), f32x16::ZERO, k)) }
5398}
5399
5400/// Compute the approximate reciprocal square root of packed single-precision (32-bit) floating-point elements in a, and store the results in dst. The maximum relative error for this approximation is less than 2^-14.
5401///
5402/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_rsqrt14_ps)
5403#[inline]
5404#[target_feature(enable = "avx512f,avx512vl")]
5405#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5406#[cfg_attr(test, assert_instr(vrsqrt14ps))]
5407pub fn _mm256_rsqrt14_ps(a: __m256) -> __m256 {
5408    unsafe { transmute(vrsqrt14ps256(a.as_f32x8(), f32x8::ZERO, 0b11111111)) }
5409}
5410
5411/// Compute the approximate reciprocal square root of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5412///
5413/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_rsqrt14_ps&expand=4815)
5414#[inline]
5415#[target_feature(enable = "avx512f,avx512vl")]
5416#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5417#[cfg_attr(test, assert_instr(vrsqrt14ps))]
5418pub fn _mm256_mask_rsqrt14_ps(src: __m256, k: __mmask8, a: __m256) -> __m256 {
5419    unsafe { transmute(vrsqrt14ps256(a.as_f32x8(), src.as_f32x8(), k)) }
5420}
5421
5422/// Compute the approximate reciprocal square root of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5423///
5424/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_rsqrt14_ps&expand=4816)
5425#[inline]
5426#[target_feature(enable = "avx512f,avx512vl")]
5427#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5428#[cfg_attr(test, assert_instr(vrsqrt14ps))]
5429pub fn _mm256_maskz_rsqrt14_ps(k: __mmask8, a: __m256) -> __m256 {
5430    unsafe { transmute(vrsqrt14ps256(a.as_f32x8(), f32x8::ZERO, k)) }
5431}
5432
5433/// Compute the approximate reciprocal square root of packed single-precision (32-bit) floating-point elements in a, and store the results in dst. The maximum relative error for this approximation is less than 2^-14.
5434///
5435/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rsqrt14_ps)
5436#[inline]
5437#[target_feature(enable = "avx512f,avx512vl")]
5438#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5439#[cfg_attr(test, assert_instr(vrsqrt14ps))]
5440pub fn _mm_rsqrt14_ps(a: __m128) -> __m128 {
5441    unsafe { transmute(vrsqrt14ps128(a.as_f32x4(), f32x4::ZERO, 0b00001111)) }
5442}
5443
5444/// Compute the approximate reciprocal square root of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5445///
5446/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_rsqrt14_ps&expand=4813)
5447#[inline]
5448#[target_feature(enable = "avx512f,avx512vl")]
5449#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5450#[cfg_attr(test, assert_instr(vrsqrt14ps))]
5451pub fn _mm_mask_rsqrt14_ps(src: __m128, k: __mmask8, a: __m128) -> __m128 {
5452    unsafe { transmute(vrsqrt14ps128(a.as_f32x4(), src.as_f32x4(), k)) }
5453}
5454
5455/// Compute the approximate reciprocal square root of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5456///
5457/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_rsqrt14_ps&expand=4814)
5458#[inline]
5459#[target_feature(enable = "avx512f,avx512vl")]
5460#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5461#[cfg_attr(test, assert_instr(vrsqrt14ps))]
5462pub fn _mm_maskz_rsqrt14_ps(k: __mmask8, a: __m128) -> __m128 {
5463    unsafe { transmute(vrsqrt14ps128(a.as_f32x4(), f32x4::ZERO, k)) }
5464}
5465
5466/// Compute the approximate reciprocal square root of packed double-precision (64-bit) floating-point elements in a, and store the results in dst. The maximum relative error for this approximation is less than 2^-14.
5467///
5468/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_rsqrt14_pd&expand=4812)
5469#[inline]
5470#[target_feature(enable = "avx512f")]
5471#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5472#[cfg_attr(test, assert_instr(vrsqrt14pd))]
5473pub fn _mm512_rsqrt14_pd(a: __m512d) -> __m512d {
5474    unsafe { transmute(vrsqrt14pd(a.as_f64x8(), f64x8::ZERO, 0b11111111)) }
5475}
5476
5477/// Compute the approximate reciprocal square root of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5478///
5479/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_rsqrt14_pd&expand=4810)
5480#[inline]
5481#[target_feature(enable = "avx512f")]
5482#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5483#[cfg_attr(test, assert_instr(vrsqrt14pd))]
5484pub fn _mm512_mask_rsqrt14_pd(src: __m512d, k: __mmask8, a: __m512d) -> __m512d {
5485    unsafe { transmute(vrsqrt14pd(a.as_f64x8(), src.as_f64x8(), k)) }
5486}
5487
5488/// Compute the approximate reciprocal square root of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5489///
5490/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_rsqrt14_pd&expand=4811)
5491#[inline]
5492#[target_feature(enable = "avx512f")]
5493#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5494#[cfg_attr(test, assert_instr(vrsqrt14pd))]
5495pub fn _mm512_maskz_rsqrt14_pd(k: __mmask8, a: __m512d) -> __m512d {
5496    unsafe { transmute(vrsqrt14pd(a.as_f64x8(), f64x8::ZERO, k)) }
5497}
5498
5499/// Compute the approximate reciprocal square root of packed double-precision (64-bit) floating-point elements in a, and store the results in dst. The maximum relative error for this approximation is less than 2^-14.
5500///
5501/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_rsqrt14_pd)
5502#[inline]
5503#[target_feature(enable = "avx512f,avx512vl")]
5504#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5505#[cfg_attr(test, assert_instr(vrsqrt14pd))]
5506pub fn _mm256_rsqrt14_pd(a: __m256d) -> __m256d {
5507    unsafe { transmute(vrsqrt14pd256(a.as_f64x4(), f64x4::ZERO, 0b00001111)) }
5508}
5509
5510/// Compute the approximate reciprocal square root of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5511///
5512/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_rsqrt14_pd&expand=4808)
5513#[inline]
5514#[target_feature(enable = "avx512f,avx512vl")]
5515#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5516#[cfg_attr(test, assert_instr(vrsqrt14pd))]
5517pub fn _mm256_mask_rsqrt14_pd(src: __m256d, k: __mmask8, a: __m256d) -> __m256d {
5518    unsafe { transmute(vrsqrt14pd256(a.as_f64x4(), src.as_f64x4(), k)) }
5519}
5520
5521/// Compute the approximate reciprocal square root of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5522///
5523/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_rsqrt14_pd&expand=4809)
5524#[inline]
5525#[target_feature(enable = "avx512f,avx512vl")]
5526#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5527#[cfg_attr(test, assert_instr(vrsqrt14pd))]
5528pub fn _mm256_maskz_rsqrt14_pd(k: __mmask8, a: __m256d) -> __m256d {
5529    unsafe { transmute(vrsqrt14pd256(a.as_f64x4(), f64x4::ZERO, k)) }
5530}
5531
5532/// Compute the approximate reciprocal square root of packed double-precision (64-bit) floating-point elements in a, and store the results in dst. The maximum relative error for this approximation is less than 2^-14.
5533///
5534/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rsqrt14_pd)
5535#[inline]
5536#[target_feature(enable = "avx512f,avx512vl")]
5537#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5538#[cfg_attr(test, assert_instr(vrsqrt14pd))]
5539pub fn _mm_rsqrt14_pd(a: __m128d) -> __m128d {
5540    unsafe { transmute(vrsqrt14pd128(a.as_f64x2(), f64x2::ZERO, 0b00000011)) }
5541}
5542
5543/// Compute the approximate reciprocal square root of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5544///
5545/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_rsqrt14_pd&expand=4806)
5546#[inline]
5547#[target_feature(enable = "avx512f,avx512vl")]
5548#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5549#[cfg_attr(test, assert_instr(vrsqrt14pd))]
5550pub fn _mm_mask_rsqrt14_pd(src: __m128d, k: __mmask8, a: __m128d) -> __m128d {
5551    unsafe { transmute(vrsqrt14pd128(a.as_f64x2(), src.as_f64x2(), k)) }
5552}
5553
5554/// Compute the approximate reciprocal square root of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). The maximum relative error for this approximation is less than 2^-14.
5555///
5556/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_rsqrt14_pd&expand=4807)
5557#[inline]
5558#[target_feature(enable = "avx512f,avx512vl")]
5559#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5560#[cfg_attr(test, assert_instr(vrsqrt14pd))]
5561pub fn _mm_maskz_rsqrt14_pd(k: __mmask8, a: __m128d) -> __m128d {
5562    unsafe { transmute(vrsqrt14pd128(a.as_f64x2(), f64x2::ZERO, k)) }
5563}
5564
5565/// Convert the exponent of each packed single-precision (32-bit) floating-point element in a to a single-precision (32-bit) floating-point number representing the integer exponent, and store the results in dst. This intrinsic essentially calculates floor(log2(x)) for each element.
5566///
5567/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_getexp_ps&expand=2844)
5568#[inline]
5569#[target_feature(enable = "avx512f")]
5570#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5571#[cfg_attr(test, assert_instr(vgetexpps))]
5572pub fn _mm512_getexp_ps(a: __m512) -> __m512 {
5573    unsafe {
5574        transmute(vgetexpps(
5575            a.as_f32x16(),
5576            f32x16::ZERO,
5577            0b11111111_11111111,
5578            _MM_FROUND_CUR_DIRECTION,
5579        ))
5580    }
5581}
5582
5583/// Convert the exponent of each packed single-precision (32-bit) floating-point element in a to a single-precision (32-bit) floating-point number representing the integer exponent, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). This intrinsic essentially calculates floor(log2(x)) for each element.
5584///
5585/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_getexp_ps&expand=2845)
5586#[inline]
5587#[target_feature(enable = "avx512f")]
5588#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5589#[cfg_attr(test, assert_instr(vgetexpps))]
5590pub fn _mm512_mask_getexp_ps(src: __m512, k: __mmask16, a: __m512) -> __m512 {
5591    unsafe {
5592        transmute(vgetexpps(
5593            a.as_f32x16(),
5594            src.as_f32x16(),
5595            k,
5596            _MM_FROUND_CUR_DIRECTION,
5597        ))
5598    }
5599}
5600
5601/// Convert the exponent of each packed single-precision (32-bit) floating-point element in a to a single-precision (32-bit) floating-point number representing the integer exponent, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). This intrinsic essentially calculates floor(log2(x)) for each element.
5602///
5603/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_getexp_ps&expand=2846)
5604#[inline]
5605#[target_feature(enable = "avx512f")]
5606#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5607#[cfg_attr(test, assert_instr(vgetexpps))]
5608pub fn _mm512_maskz_getexp_ps(k: __mmask16, a: __m512) -> __m512 {
5609    unsafe {
5610        transmute(vgetexpps(
5611            a.as_f32x16(),
5612            f32x16::ZERO,
5613            k,
5614            _MM_FROUND_CUR_DIRECTION,
5615        ))
5616    }
5617}
5618
5619/// Convert the exponent of each packed single-precision (32-bit) floating-point element in a to a single-precision (32-bit) floating-point number representing the integer exponent, and store the results in dst. This intrinsic essentially calculates floor(log2(x)) for each element.
5620///
5621/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_getexp_ps&expand=2841)
5622#[inline]
5623#[target_feature(enable = "avx512f,avx512vl")]
5624#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5625#[cfg_attr(test, assert_instr(vgetexpps))]
5626pub fn _mm256_getexp_ps(a: __m256) -> __m256 {
5627    unsafe { transmute(vgetexpps256(a.as_f32x8(), f32x8::ZERO, 0b11111111)) }
5628}
5629
5630/// Convert the exponent of each packed single-precision (32-bit) floating-point element in a to a single-precision (32-bit) floating-point number representing the integer exponent, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). This intrinsic essentially calculates floor(log2(x)) for each element.
5631///
5632/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_getexp_ps&expand=2842)
5633#[inline]
5634#[target_feature(enable = "avx512f,avx512vl")]
5635#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5636#[cfg_attr(test, assert_instr(vgetexpps))]
5637pub fn _mm256_mask_getexp_ps(src: __m256, k: __mmask8, a: __m256) -> __m256 {
5638    unsafe { transmute(vgetexpps256(a.as_f32x8(), src.as_f32x8(), k)) }
5639}
5640
5641/// Convert the exponent of each packed single-precision (32-bit) floating-point element in a to a single-precision (32-bit) floating-point number representing the integer exponent, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). This intrinsic essentially calculates floor(log2(x)) for each element.
5642///
5643/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_getexp_ps&expand=2843)
5644#[inline]
5645#[target_feature(enable = "avx512f,avx512vl")]
5646#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5647#[cfg_attr(test, assert_instr(vgetexpps))]
5648pub fn _mm256_maskz_getexp_ps(k: __mmask8, a: __m256) -> __m256 {
5649    unsafe { transmute(vgetexpps256(a.as_f32x8(), f32x8::ZERO, k)) }
5650}
5651
5652/// Convert the exponent of each packed single-precision (32-bit) floating-point element in a to a single-precision (32-bit) floating-point number representing the integer exponent, and store the results in dst. This intrinsic essentially calculates floor(log2(x)) for each element.
5653///
5654/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_getexp_ps&expand=2838)
5655#[inline]
5656#[target_feature(enable = "avx512f,avx512vl")]
5657#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5658#[cfg_attr(test, assert_instr(vgetexpps))]
5659pub fn _mm_getexp_ps(a: __m128) -> __m128 {
5660    unsafe { transmute(vgetexpps128(a.as_f32x4(), f32x4::ZERO, 0b00001111)) }
5661}
5662
5663/// Convert the exponent of each packed single-precision (32-bit) floating-point element in a to a single-precision (32-bit) floating-point number representing the integer exponent, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). This intrinsic essentially calculates floor(log2(x)) for each element.
5664///
5665/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_getexp_ps&expand=2839)
5666#[inline]
5667#[target_feature(enable = "avx512f,avx512vl")]
5668#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5669#[cfg_attr(test, assert_instr(vgetexpps))]
5670pub fn _mm_mask_getexp_ps(src: __m128, k: __mmask8, a: __m128) -> __m128 {
5671    unsafe { transmute(vgetexpps128(a.as_f32x4(), src.as_f32x4(), k)) }
5672}
5673
5674/// Convert the exponent of each packed single-precision (32-bit) floating-point element in a to a single-precision (32-bit) floating-point number representing the integer exponent, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). This intrinsic essentially calculates floor(log2(x)) for each element.
5675///
5676/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_getexp_ps&expand=2840)
5677#[inline]
5678#[target_feature(enable = "avx512f,avx512vl")]
5679#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5680#[cfg_attr(test, assert_instr(vgetexpps))]
5681pub fn _mm_maskz_getexp_ps(k: __mmask8, a: __m128) -> __m128 {
5682    unsafe { transmute(vgetexpps128(a.as_f32x4(), f32x4::ZERO, k)) }
5683}
5684
5685/// Convert the exponent of each packed double-precision (64-bit) floating-point element in a to a double-precision (64-bit) floating-point number representing the integer exponent, and store the results in dst. This intrinsic essentially calculates floor(log2(x)) for each element.
5686///
5687/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_getexp_pd&expand=2835)
5688#[inline]
5689#[target_feature(enable = "avx512f")]
5690#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5691#[cfg_attr(test, assert_instr(vgetexppd))]
5692pub fn _mm512_getexp_pd(a: __m512d) -> __m512d {
5693    unsafe {
5694        transmute(vgetexppd(
5695            a.as_f64x8(),
5696            f64x8::ZERO,
5697            0b11111111,
5698            _MM_FROUND_CUR_DIRECTION,
5699        ))
5700    }
5701}
5702
5703/// Convert the exponent of each packed double-precision (64-bit) floating-point element in a to a double-precision (64-bit) floating-point number representing the integer exponent, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). This intrinsic essentially calculates floor(log2(x)) for each element.
5704///
5705/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_getexp_pd&expand=2836)
5706#[inline]
5707#[target_feature(enable = "avx512f")]
5708#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5709#[cfg_attr(test, assert_instr(vgetexppd))]
5710pub fn _mm512_mask_getexp_pd(src: __m512d, k: __mmask8, a: __m512d) -> __m512d {
5711    unsafe {
5712        transmute(vgetexppd(
5713            a.as_f64x8(),
5714            src.as_f64x8(),
5715            k,
5716            _MM_FROUND_CUR_DIRECTION,
5717        ))
5718    }
5719}
5720
5721/// Convert the exponent of each packed double-precision (64-bit) floating-point element in a to a double-precision (64-bit) floating-point number representing the integer exponent, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). This intrinsic essentially calculates floor(log2(x)) for each element.
5722///
5723/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_getexp_pd&expand=2837)
5724#[inline]
5725#[target_feature(enable = "avx512f")]
5726#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5727#[cfg_attr(test, assert_instr(vgetexppd))]
5728pub fn _mm512_maskz_getexp_pd(k: __mmask8, a: __m512d) -> __m512d {
5729    unsafe {
5730        transmute(vgetexppd(
5731            a.as_f64x8(),
5732            f64x8::ZERO,
5733            k,
5734            _MM_FROUND_CUR_DIRECTION,
5735        ))
5736    }
5737}
5738
5739/// Convert the exponent of each packed double-precision (64-bit) floating-point element in a to a double-precision (64-bit) floating-point number representing the integer exponent, and store the results in dst. This intrinsic essentially calculates floor(log2(x)) for each element.
5740///
5741/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_getexp_pd&expand=2832)
5742#[inline]
5743#[target_feature(enable = "avx512f,avx512vl")]
5744#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5745#[cfg_attr(test, assert_instr(vgetexppd))]
5746pub fn _mm256_getexp_pd(a: __m256d) -> __m256d {
5747    unsafe { transmute(vgetexppd256(a.as_f64x4(), f64x4::ZERO, 0b00001111)) }
5748}
5749
5750/// Convert the exponent of each packed double-precision (64-bit) floating-point element in a to a double-precision (64-bit) floating-point number representing the integer exponent, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). This intrinsic essentially calculates floor(log2(x)) for each element.
5751///
5752/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_getexp_pd&expand=2833)
5753#[inline]
5754#[target_feature(enable = "avx512f,avx512vl")]
5755#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5756#[cfg_attr(test, assert_instr(vgetexppd))]
5757pub fn _mm256_mask_getexp_pd(src: __m256d, k: __mmask8, a: __m256d) -> __m256d {
5758    unsafe { transmute(vgetexppd256(a.as_f64x4(), src.as_f64x4(), k)) }
5759}
5760
5761/// Convert the exponent of each packed double-precision (64-bit) floating-point element in a to a double-precision (64-bit) floating-point number representing the integer exponent, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). This intrinsic essentially calculates floor(log2(x)) for each element.
5762///
5763/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_getexp_pd&expand=2834)
5764#[inline]
5765#[target_feature(enable = "avx512f,avx512vl")]
5766#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5767#[cfg_attr(test, assert_instr(vgetexppd))]
5768pub fn _mm256_maskz_getexp_pd(k: __mmask8, a: __m256d) -> __m256d {
5769    unsafe { transmute(vgetexppd256(a.as_f64x4(), f64x4::ZERO, k)) }
5770}
5771
5772/// Convert the exponent of each packed double-precision (64-bit) floating-point element in a to a double-precision (64-bit) floating-point number representing the integer exponent, and store the results in dst. This intrinsic essentially calculates floor(log2(x)) for each element.
5773///
5774/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_getexp_pd&expand=2829)
5775#[inline]
5776#[target_feature(enable = "avx512f,avx512vl")]
5777#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5778#[cfg_attr(test, assert_instr(vgetexppd))]
5779pub fn _mm_getexp_pd(a: __m128d) -> __m128d {
5780    unsafe { transmute(vgetexppd128(a.as_f64x2(), f64x2::ZERO, 0b00000011)) }
5781}
5782
5783/// Convert the exponent of each packed double-precision (64-bit) floating-point element in a to a double-precision (64-bit) floating-point number representing the integer exponent, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). This intrinsic essentially calculates floor(log2(x)) for each element.
5784///
5785/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_getexp_pd&expand=2830)
5786#[inline]
5787#[target_feature(enable = "avx512f,avx512vl")]
5788#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5789#[cfg_attr(test, assert_instr(vgetexppd))]
5790pub fn _mm_mask_getexp_pd(src: __m128d, k: __mmask8, a: __m128d) -> __m128d {
5791    unsafe { transmute(vgetexppd128(a.as_f64x2(), src.as_f64x2(), k)) }
5792}
5793
5794/// Convert the exponent of each packed double-precision (64-bit) floating-point element in a to a double-precision (64-bit) floating-point number representing the integer exponent, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). This intrinsic essentially calculates floor(log2(x)) for each element.
5795///
5796/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_getexp_pd&expand=2831)
5797#[inline]
5798#[target_feature(enable = "avx512f,avx512vl")]
5799#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5800#[cfg_attr(test, assert_instr(vgetexppd))]
5801pub fn _mm_maskz_getexp_pd(k: __mmask8, a: __m128d) -> __m128d {
5802    unsafe { transmute(vgetexppd128(a.as_f64x2(), f64x2::ZERO, k)) }
5803}
5804
5805/// Round packed single-precision (32-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst.\
5806/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
5807/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
5808/// * [`_MM_FROUND_TO_NEG_INF`] : round down
5809/// * [`_MM_FROUND_TO_POS_INF`] : round up
5810/// * [`_MM_FROUND_TO_ZERO`] : truncate
5811/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
5812///
5813/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_roundscale_ps&expand=4784)
5814#[inline]
5815#[target_feature(enable = "avx512f")]
5816#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5817#[cfg_attr(test, assert_instr(vrndscaleps, IMM8 = 0))]
5818#[rustc_legacy_const_generics(1)]
5819pub fn _mm512_roundscale_ps<const IMM8: i32>(a: __m512) -> __m512 {
5820    unsafe {
5821        static_assert_uimm_bits!(IMM8, 8);
5822        let a = a.as_f32x16();
5823        let r = vrndscaleps(
5824            a,
5825            IMM8,
5826            f32x16::ZERO,
5827            0b11111111_11111111,
5828            _MM_FROUND_CUR_DIRECTION,
5829        );
5830        transmute(r)
5831    }
5832}
5833
5834/// Round packed single-precision (32-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
5835/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
5836/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
5837/// * [`_MM_FROUND_TO_NEG_INF`] : round down
5838/// * [`_MM_FROUND_TO_POS_INF`] : round up
5839/// * [`_MM_FROUND_TO_ZERO`] : truncate
5840/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
5841///
5842/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_roundscale_ps&expand=4782)
5843#[inline]
5844#[target_feature(enable = "avx512f")]
5845#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5846#[cfg_attr(test, assert_instr(vrndscaleps, IMM8 = 0))]
5847#[rustc_legacy_const_generics(3)]
5848pub fn _mm512_mask_roundscale_ps<const IMM8: i32>(src: __m512, k: __mmask16, a: __m512) -> __m512 {
5849    unsafe {
5850        static_assert_uimm_bits!(IMM8, 8);
5851        let a = a.as_f32x16();
5852        let src = src.as_f32x16();
5853        let r = vrndscaleps(a, IMM8, src, k, _MM_FROUND_CUR_DIRECTION);
5854        transmute(r)
5855    }
5856}
5857
5858/// Round packed single-precision (32-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
5859/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
5860/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
5861/// * [`_MM_FROUND_TO_NEG_INF`] : round down
5862/// * [`_MM_FROUND_TO_POS_INF`] : round up
5863/// * [`_MM_FROUND_TO_ZERO`] : truncate
5864/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
5865///
5866/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_roundscale_ps&expand=4783)
5867#[inline]
5868#[target_feature(enable = "avx512f")]
5869#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5870#[cfg_attr(test, assert_instr(vrndscaleps, IMM8 = 0))]
5871#[rustc_legacy_const_generics(2)]
5872pub fn _mm512_maskz_roundscale_ps<const IMM8: i32>(k: __mmask16, a: __m512) -> __m512 {
5873    unsafe {
5874        static_assert_uimm_bits!(IMM8, 8);
5875        let a = a.as_f32x16();
5876        let r = vrndscaleps(a, IMM8, f32x16::ZERO, k, _MM_FROUND_CUR_DIRECTION);
5877        transmute(r)
5878    }
5879}
5880
5881/// Round packed single-precision (32-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst.\
5882/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
5883/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
5884/// * [`_MM_FROUND_TO_NEG_INF`] : round down
5885/// * [`_MM_FROUND_TO_POS_INF`] : round up
5886/// * [`_MM_FROUND_TO_ZERO`] : truncate
5887/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
5888///
5889/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_roundscale_ps&expand=4781)
5890#[inline]
5891#[target_feature(enable = "avx512f,avx512vl")]
5892#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5893#[cfg_attr(test, assert_instr(vrndscaleps, IMM8 = 250))]
5894#[rustc_legacy_const_generics(1)]
5895pub fn _mm256_roundscale_ps<const IMM8: i32>(a: __m256) -> __m256 {
5896    unsafe {
5897        static_assert_uimm_bits!(IMM8, 8);
5898        let a = a.as_f32x8();
5899        let r = vrndscaleps256(a, IMM8, f32x8::ZERO, 0b11111111);
5900        transmute(r)
5901    }
5902}
5903
5904/// Round packed single-precision (32-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
5905/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
5906/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
5907/// * [`_MM_FROUND_TO_NEG_INF`] : round down
5908/// * [`_MM_FROUND_TO_POS_INF`] : round up
5909/// * [`_MM_FROUND_TO_ZERO`] : truncate
5910/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
5911///
5912/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_roundscale_ps&expand=4779)
5913#[inline]
5914#[target_feature(enable = "avx512f,avx512vl")]
5915#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5916#[cfg_attr(test, assert_instr(vrndscaleps, IMM8 = 0))]
5917#[rustc_legacy_const_generics(3)]
5918pub fn _mm256_mask_roundscale_ps<const IMM8: i32>(src: __m256, k: __mmask8, a: __m256) -> __m256 {
5919    unsafe {
5920        static_assert_uimm_bits!(IMM8, 8);
5921        let a = a.as_f32x8();
5922        let src = src.as_f32x8();
5923        let r = vrndscaleps256(a, IMM8, src, k);
5924        transmute(r)
5925    }
5926}
5927
5928/// Round packed single-precision (32-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
5929/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
5930/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
5931/// * [`_MM_FROUND_TO_NEG_INF`] : round down
5932/// * [`_MM_FROUND_TO_POS_INF`] : round up
5933/// * [`_MM_FROUND_TO_ZERO`] : truncate
5934/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
5935///
5936/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_roundscale_ps&expand=4780)
5937#[inline]
5938#[target_feature(enable = "avx512f,avx512vl")]
5939#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5940#[cfg_attr(test, assert_instr(vrndscaleps, IMM8 = 0))]
5941#[rustc_legacy_const_generics(2)]
5942pub fn _mm256_maskz_roundscale_ps<const IMM8: i32>(k: __mmask8, a: __m256) -> __m256 {
5943    unsafe {
5944        static_assert_uimm_bits!(IMM8, 8);
5945        let a = a.as_f32x8();
5946        let r = vrndscaleps256(a, IMM8, f32x8::ZERO, k);
5947        transmute(r)
5948    }
5949}
5950
5951/// Round packed single-precision (32-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst.\
5952/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
5953/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
5954/// * [`_MM_FROUND_TO_NEG_INF`] : round down
5955/// * [`_MM_FROUND_TO_POS_INF`] : round up
5956/// * [`_MM_FROUND_TO_ZERO`] : truncate
5957/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
5958///
5959/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_roundscale_ps&expand=4778)
5960#[inline]
5961#[target_feature(enable = "avx512f,avx512vl")]
5962#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5963#[cfg_attr(test, assert_instr(vrndscaleps, IMM8 = 250))]
5964#[rustc_legacy_const_generics(1)]
5965pub fn _mm_roundscale_ps<const IMM8: i32>(a: __m128) -> __m128 {
5966    unsafe {
5967        static_assert_uimm_bits!(IMM8, 8);
5968        let a = a.as_f32x4();
5969        let r = vrndscaleps128(a, IMM8, f32x4::ZERO, 0b00001111);
5970        transmute(r)
5971    }
5972}
5973
5974/// Round packed single-precision (32-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
5975/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
5976/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
5977/// * [`_MM_FROUND_TO_NEG_INF`] : round down
5978/// * [`_MM_FROUND_TO_POS_INF`] : round up
5979/// * [`_MM_FROUND_TO_ZERO`] : truncate
5980/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
5981///
5982/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_roundscale_ps&expand=4776)
5983#[inline]
5984#[target_feature(enable = "avx512f,avx512vl")]
5985#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
5986#[cfg_attr(test, assert_instr(vrndscaleps, IMM8 = 0))]
5987#[rustc_legacy_const_generics(3)]
5988pub fn _mm_mask_roundscale_ps<const IMM8: i32>(src: __m128, k: __mmask8, a: __m128) -> __m128 {
5989    unsafe {
5990        static_assert_uimm_bits!(IMM8, 8);
5991        let a = a.as_f32x4();
5992        let src = src.as_f32x4();
5993        let r = vrndscaleps128(a, IMM8, src, k);
5994        transmute(r)
5995    }
5996}
5997
5998/// Round packed single-precision (32-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
5999/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
6000/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
6001/// * [`_MM_FROUND_TO_NEG_INF`] : round down
6002/// * [`_MM_FROUND_TO_POS_INF`] : round up
6003/// * [`_MM_FROUND_TO_ZERO`] : truncate
6004/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
6005///
6006/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_roundscale_ps&expand=4777)
6007#[inline]
6008#[target_feature(enable = "avx512f,avx512vl")]
6009#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6010#[cfg_attr(test, assert_instr(vrndscaleps, IMM8 = 0))]
6011#[rustc_legacy_const_generics(2)]
6012pub fn _mm_maskz_roundscale_ps<const IMM8: i32>(k: __mmask8, a: __m128) -> __m128 {
6013    unsafe {
6014        static_assert_uimm_bits!(IMM8, 8);
6015        let a = a.as_f32x4();
6016        let r = vrndscaleps128(a, IMM8, f32x4::ZERO, k);
6017        transmute(r)
6018    }
6019}
6020
6021/// Round packed double-precision (64-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst.\
6022/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
6023/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
6024/// * [`_MM_FROUND_TO_NEG_INF`] : round down
6025/// * [`_MM_FROUND_TO_POS_INF`] : round up
6026/// * [`_MM_FROUND_TO_ZERO`] : truncate
6027/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
6028///
6029/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_roundscale_pd&expand=4775)
6030#[inline]
6031#[target_feature(enable = "avx512f")]
6032#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6033#[cfg_attr(test, assert_instr(vrndscalepd, IMM8 = 0))]
6034#[rustc_legacy_const_generics(1)]
6035pub fn _mm512_roundscale_pd<const IMM8: i32>(a: __m512d) -> __m512d {
6036    unsafe {
6037        static_assert_uimm_bits!(IMM8, 8);
6038        let a = a.as_f64x8();
6039        let r = vrndscalepd(a, IMM8, f64x8::ZERO, 0b11111111, _MM_FROUND_CUR_DIRECTION);
6040        transmute(r)
6041    }
6042}
6043
6044/// Round packed double-precision (64-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
6045/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
6046/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
6047/// * [`_MM_FROUND_TO_NEG_INF`] : round down
6048/// * [`_MM_FROUND_TO_POS_INF`] : round up
6049/// * [`_MM_FROUND_TO_ZERO`] : truncate
6050/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
6051///
6052/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_roundscale_pd&expand=4773)
6053#[inline]
6054#[target_feature(enable = "avx512f")]
6055#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6056#[cfg_attr(test, assert_instr(vrndscalepd, IMM8 = 0))]
6057#[rustc_legacy_const_generics(3)]
6058pub fn _mm512_mask_roundscale_pd<const IMM8: i32>(
6059    src: __m512d,
6060    k: __mmask8,
6061    a: __m512d,
6062) -> __m512d {
6063    unsafe {
6064        static_assert_uimm_bits!(IMM8, 8);
6065        let a = a.as_f64x8();
6066        let src = src.as_f64x8();
6067        let r = vrndscalepd(a, IMM8, src, k, _MM_FROUND_CUR_DIRECTION);
6068        transmute(r)
6069    }
6070}
6071
6072/// Round packed double-precision (64-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
6073/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
6074/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
6075/// * [`_MM_FROUND_TO_NEG_INF`] : round down
6076/// * [`_MM_FROUND_TO_POS_INF`] : round up
6077/// * [`_MM_FROUND_TO_ZERO`] : truncate
6078/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
6079///
6080/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_roundscale_pd&expand=4774)
6081#[inline]
6082#[target_feature(enable = "avx512f")]
6083#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6084#[cfg_attr(test, assert_instr(vrndscalepd, IMM8 = 0))]
6085#[rustc_legacy_const_generics(2)]
6086pub fn _mm512_maskz_roundscale_pd<const IMM8: i32>(k: __mmask8, a: __m512d) -> __m512d {
6087    unsafe {
6088        static_assert_uimm_bits!(IMM8, 8);
6089        let a = a.as_f64x8();
6090        let r = vrndscalepd(a, IMM8, f64x8::ZERO, k, _MM_FROUND_CUR_DIRECTION);
6091        transmute(r)
6092    }
6093}
6094
6095/// Round packed double-precision (64-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst.\
6096/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
6097/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
6098/// * [`_MM_FROUND_TO_NEG_INF`] : round down
6099/// * [`_MM_FROUND_TO_POS_INF`] : round up
6100/// * [`_MM_FROUND_TO_ZERO`] : truncate
6101/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
6102///
6103/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_roundscale_pd&expand=4772)
6104#[inline]
6105#[target_feature(enable = "avx512f,avx512vl")]
6106#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6107#[cfg_attr(test, assert_instr(vrndscalepd, IMM8 = 16))]
6108#[rustc_legacy_const_generics(1)]
6109pub fn _mm256_roundscale_pd<const IMM8: i32>(a: __m256d) -> __m256d {
6110    unsafe {
6111        static_assert_uimm_bits!(IMM8, 8);
6112        let a = a.as_f64x4();
6113        let r = vrndscalepd256(a, IMM8, f64x4::ZERO, 0b00001111);
6114        transmute(r)
6115    }
6116}
6117
6118/// Round packed double-precision (64-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
6119/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
6120/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
6121/// * [`_MM_FROUND_TO_NEG_INF`] : round down
6122/// * [`_MM_FROUND_TO_POS_INF`] : round up
6123/// * [`_MM_FROUND_TO_ZERO`] : truncate
6124/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
6125///
6126/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_roundscale_pd&expand=4770)
6127#[inline]
6128#[target_feature(enable = "avx512f,avx512vl")]
6129#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6130#[cfg_attr(test, assert_instr(vrndscalepd, IMM8 = 0))]
6131#[rustc_legacy_const_generics(3)]
6132pub fn _mm256_mask_roundscale_pd<const IMM8: i32>(
6133    src: __m256d,
6134    k: __mmask8,
6135    a: __m256d,
6136) -> __m256d {
6137    unsafe {
6138        static_assert_uimm_bits!(IMM8, 8);
6139        let a = a.as_f64x4();
6140        let src = src.as_f64x4();
6141        let r = vrndscalepd256(a, IMM8, src, k);
6142        transmute(r)
6143    }
6144}
6145
6146/// Round packed double-precision (64-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
6147/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
6148/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
6149/// * [`_MM_FROUND_TO_NEG_INF`] : round down
6150/// * [`_MM_FROUND_TO_POS_INF`] : round up
6151/// * [`_MM_FROUND_TO_ZERO`] : truncate
6152/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
6153///
6154/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_roundscale_pd&expand=4771)
6155#[inline]
6156#[target_feature(enable = "avx512f,avx512vl")]
6157#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6158#[cfg_attr(test, assert_instr(vrndscalepd, IMM8 = 0))]
6159#[rustc_legacy_const_generics(2)]
6160pub fn _mm256_maskz_roundscale_pd<const IMM8: i32>(k: __mmask8, a: __m256d) -> __m256d {
6161    unsafe {
6162        static_assert_uimm_bits!(IMM8, 8);
6163        let a = a.as_f64x4();
6164        let r = vrndscalepd256(a, IMM8, f64x4::ZERO, k);
6165        transmute(r)
6166    }
6167}
6168
6169/// Round packed double-precision (64-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst.\
6170/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
6171/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
6172/// * [`_MM_FROUND_TO_NEG_INF`] : round down
6173/// * [`_MM_FROUND_TO_POS_INF`] : round up
6174/// * [`_MM_FROUND_TO_ZERO`] : truncate
6175/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
6176///
6177/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_roundscale_pd&expand=4769)
6178#[inline]
6179#[target_feature(enable = "avx512f,avx512vl")]
6180#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6181#[cfg_attr(test, assert_instr(vrndscalepd, IMM8 = 16))]
6182#[rustc_legacy_const_generics(1)]
6183pub fn _mm_roundscale_pd<const IMM8: i32>(a: __m128d) -> __m128d {
6184    unsafe {
6185        static_assert_uimm_bits!(IMM8, 8);
6186        let a = a.as_f64x2();
6187        let r = vrndscalepd128(a, IMM8, f64x2::ZERO, 0b00000011);
6188        transmute(r)
6189    }
6190}
6191
6192/// Round packed double-precision (64-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
6193/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
6194/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
6195/// * [`_MM_FROUND_TO_NEG_INF`] : round down
6196/// * [`_MM_FROUND_TO_POS_INF`] : round up
6197/// * [`_MM_FROUND_TO_ZERO`] : truncate
6198/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
6199///
6200/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_roundscale_pd&expand=4767)
6201#[inline]
6202#[target_feature(enable = "avx512f,avx512vl")]
6203#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6204#[cfg_attr(test, assert_instr(vrndscalepd, IMM8 = 0))]
6205#[rustc_legacy_const_generics(3)]
6206pub fn _mm_mask_roundscale_pd<const IMM8: i32>(src: __m128d, k: __mmask8, a: __m128d) -> __m128d {
6207    unsafe {
6208        static_assert_uimm_bits!(IMM8, 8);
6209        let a = a.as_f64x2();
6210        let src = src.as_f64x2();
6211        let r = vrndscalepd128(a, IMM8, src, k);
6212        transmute(r)
6213    }
6214}
6215
6216/// Round packed double-precision (64-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
6217/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
6218/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
6219/// * [`_MM_FROUND_TO_NEG_INF`] : round down
6220/// * [`_MM_FROUND_TO_POS_INF`] : round up
6221/// * [`_MM_FROUND_TO_ZERO`] : truncate
6222/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
6223///
6224/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_roundscale_pd&expand=4768)
6225#[inline]
6226#[target_feature(enable = "avx512f,avx512vl")]
6227#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6228#[cfg_attr(test, assert_instr(vrndscalepd, IMM8 = 0))]
6229#[rustc_legacy_const_generics(2)]
6230pub fn _mm_maskz_roundscale_pd<const IMM8: i32>(k: __mmask8, a: __m128d) -> __m128d {
6231    unsafe {
6232        static_assert_uimm_bits!(IMM8, 8);
6233        let a = a.as_f64x2();
6234        let r = vrndscalepd128(a, IMM8, f64x2::ZERO, k);
6235        transmute(r)
6236    }
6237}
6238
6239/// Scale the packed single-precision (32-bit) floating-point elements in a using values from b, and store the results in dst.
6240///
6241/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_scalef_ps&expand=4883)
6242#[inline]
6243#[target_feature(enable = "avx512f")]
6244#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6245#[cfg_attr(test, assert_instr(vscalefps))]
6246pub fn _mm512_scalef_ps(a: __m512, b: __m512) -> __m512 {
6247    unsafe {
6248        transmute(vscalefps(
6249            a.as_f32x16(),
6250            b.as_f32x16(),
6251            f32x16::ZERO,
6252            0b11111111_11111111,
6253            _MM_FROUND_CUR_DIRECTION,
6254        ))
6255    }
6256}
6257
6258/// Scale the packed single-precision (32-bit) floating-point elements in a using values from b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
6259///
6260/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_scalef_ps&expand=4881)
6261#[inline]
6262#[target_feature(enable = "avx512f")]
6263#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6264#[cfg_attr(test, assert_instr(vscalefps))]
6265pub fn _mm512_mask_scalef_ps(src: __m512, k: __mmask16, a: __m512, b: __m512) -> __m512 {
6266    unsafe {
6267        transmute(vscalefps(
6268            a.as_f32x16(),
6269            b.as_f32x16(),
6270            src.as_f32x16(),
6271            k,
6272            _MM_FROUND_CUR_DIRECTION,
6273        ))
6274    }
6275}
6276
6277/// Scale the packed single-precision (32-bit) floating-point elements in a using values from b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
6278///
6279/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_scalef_ps&expand=4882)
6280#[inline]
6281#[target_feature(enable = "avx512f")]
6282#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6283#[cfg_attr(test, assert_instr(vscalefps))]
6284pub fn _mm512_maskz_scalef_ps(k: __mmask16, a: __m512, b: __m512) -> __m512 {
6285    unsafe {
6286        transmute(vscalefps(
6287            a.as_f32x16(),
6288            b.as_f32x16(),
6289            f32x16::ZERO,
6290            k,
6291            _MM_FROUND_CUR_DIRECTION,
6292        ))
6293    }
6294}
6295
6296/// Scale the packed single-precision (32-bit) floating-point elements in a using values from b, and store the results in dst.
6297///
6298/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_scalef_ps&expand=4880)
6299#[inline]
6300#[target_feature(enable = "avx512f,avx512vl")]
6301#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6302#[cfg_attr(test, assert_instr(vscalefps))]
6303pub fn _mm256_scalef_ps(a: __m256, b: __m256) -> __m256 {
6304    unsafe {
6305        transmute(vscalefps256(
6306            a.as_f32x8(),
6307            b.as_f32x8(),
6308            f32x8::ZERO,
6309            0b11111111,
6310        ))
6311    }
6312}
6313
6314/// Scale the packed single-precision (32-bit) floating-point elements in a using values from b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
6315///
6316/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_scalef_ps&expand=4878)
6317#[inline]
6318#[target_feature(enable = "avx512f,avx512vl")]
6319#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6320#[cfg_attr(test, assert_instr(vscalefps))]
6321pub fn _mm256_mask_scalef_ps(src: __m256, k: __mmask8, a: __m256, b: __m256) -> __m256 {
6322    unsafe { transmute(vscalefps256(a.as_f32x8(), b.as_f32x8(), src.as_f32x8(), k)) }
6323}
6324
6325/// Scale the packed single-precision (32-bit) floating-point elements in a using values from b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
6326///
6327/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_scalef_ps&expand=4879)
6328#[inline]
6329#[target_feature(enable = "avx512f,avx512vl")]
6330#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6331#[cfg_attr(test, assert_instr(vscalefps))]
6332pub fn _mm256_maskz_scalef_ps(k: __mmask8, a: __m256, b: __m256) -> __m256 {
6333    unsafe { transmute(vscalefps256(a.as_f32x8(), b.as_f32x8(), f32x8::ZERO, k)) }
6334}
6335
6336/// Scale the packed single-precision (32-bit) floating-point elements in a using values from b, and store the results in dst.
6337///
6338/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_scalef_ps&expand=4877)
6339#[inline]
6340#[target_feature(enable = "avx512f,avx512vl")]
6341#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6342#[cfg_attr(test, assert_instr(vscalefps))]
6343pub fn _mm_scalef_ps(a: __m128, b: __m128) -> __m128 {
6344    unsafe {
6345        transmute(vscalefps128(
6346            a.as_f32x4(),
6347            b.as_f32x4(),
6348            f32x4::ZERO,
6349            0b00001111,
6350        ))
6351    }
6352}
6353
6354/// Scale the packed single-precision (32-bit) floating-point elements in a using values from b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
6355///
6356/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_scalef_ps&expand=4875)
6357#[inline]
6358#[target_feature(enable = "avx512f,avx512vl")]
6359#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6360#[cfg_attr(test, assert_instr(vscalefps))]
6361pub fn _mm_mask_scalef_ps(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
6362    unsafe { transmute(vscalefps128(a.as_f32x4(), b.as_f32x4(), src.as_f32x4(), k)) }
6363}
6364
6365/// Scale the packed single-precision (32-bit) floating-point elements in a using values from b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
6366///
6367/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_scalef_ps&expand=4876)
6368#[inline]
6369#[target_feature(enable = "avx512f,avx512vl")]
6370#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6371#[cfg_attr(test, assert_instr(vscalefps))]
6372pub fn _mm_maskz_scalef_ps(k: __mmask8, a: __m128, b: __m128) -> __m128 {
6373    unsafe { transmute(vscalefps128(a.as_f32x4(), b.as_f32x4(), f32x4::ZERO, k)) }
6374}
6375
6376/// Scale the packed double-precision (64-bit) floating-point elements in a using values from b, and store the results in dst.
6377///
6378/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_scalef_pd&expand=4874)
6379#[inline]
6380#[target_feature(enable = "avx512f")]
6381#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6382#[cfg_attr(test, assert_instr(vscalefpd))]
6383pub fn _mm512_scalef_pd(a: __m512d, b: __m512d) -> __m512d {
6384    unsafe {
6385        transmute(vscalefpd(
6386            a.as_f64x8(),
6387            b.as_f64x8(),
6388            f64x8::ZERO,
6389            0b11111111,
6390            _MM_FROUND_CUR_DIRECTION,
6391        ))
6392    }
6393}
6394
6395/// Scale the packed double-precision (64-bit) floating-point elements in a using values from b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
6396///
6397/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_scalef_pd&expand=4872)
6398#[inline]
6399#[target_feature(enable = "avx512f")]
6400#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6401#[cfg_attr(test, assert_instr(vscalefpd))]
6402pub fn _mm512_mask_scalef_pd(src: __m512d, k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
6403    unsafe {
6404        transmute(vscalefpd(
6405            a.as_f64x8(),
6406            b.as_f64x8(),
6407            src.as_f64x8(),
6408            k,
6409            _MM_FROUND_CUR_DIRECTION,
6410        ))
6411    }
6412}
6413
6414/// Scale the packed double-precision (64-bit) floating-point elements in a using values from b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
6415///
6416/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_scalef_pd&expand=4873)
6417#[inline]
6418#[target_feature(enable = "avx512f")]
6419#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6420#[cfg_attr(test, assert_instr(vscalefpd))]
6421pub fn _mm512_maskz_scalef_pd(k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
6422    unsafe {
6423        transmute(vscalefpd(
6424            a.as_f64x8(),
6425            b.as_f64x8(),
6426            f64x8::ZERO,
6427            k,
6428            _MM_FROUND_CUR_DIRECTION,
6429        ))
6430    }
6431}
6432
6433/// Scale the packed double-precision (64-bit) floating-point elements in a using values from b, and store the results in dst.
6434///
6435/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_scalef_pd&expand=4871)
6436#[inline]
6437#[target_feature(enable = "avx512f,avx512vl")]
6438#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6439#[cfg_attr(test, assert_instr(vscalefpd))]
6440pub fn _mm256_scalef_pd(a: __m256d, b: __m256d) -> __m256d {
6441    unsafe {
6442        transmute(vscalefpd256(
6443            a.as_f64x4(),
6444            b.as_f64x4(),
6445            f64x4::ZERO,
6446            0b00001111,
6447        ))
6448    }
6449}
6450
6451/// Scale the packed double-precision (64-bit) floating-point elements in a using values from b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
6452///
6453/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_scalef_pd&expand=4869)
6454#[inline]
6455#[target_feature(enable = "avx512f,avx512vl")]
6456#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6457#[cfg_attr(test, assert_instr(vscalefpd))]
6458pub fn _mm256_mask_scalef_pd(src: __m256d, k: __mmask8, a: __m256d, b: __m256d) -> __m256d {
6459    unsafe { transmute(vscalefpd256(a.as_f64x4(), b.as_f64x4(), src.as_f64x4(), k)) }
6460}
6461
6462/// Scale the packed double-precision (64-bit) floating-point elements in a using values from b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
6463///
6464/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_scalef_pd&expand=4870)
6465#[inline]
6466#[target_feature(enable = "avx512f,avx512vl")]
6467#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6468#[cfg_attr(test, assert_instr(vscalefpd))]
6469pub fn _mm256_maskz_scalef_pd(k: __mmask8, a: __m256d, b: __m256d) -> __m256d {
6470    unsafe { transmute(vscalefpd256(a.as_f64x4(), b.as_f64x4(), f64x4::ZERO, k)) }
6471}
6472
6473/// Scale the packed double-precision (64-bit) floating-point elements in a using values from b, and store the results in dst.
6474///
6475/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_scalef_pd&expand=4868)
6476#[inline]
6477#[target_feature(enable = "avx512f,avx512vl")]
6478#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6479#[cfg_attr(test, assert_instr(vscalefpd))]
6480pub fn _mm_scalef_pd(a: __m128d, b: __m128d) -> __m128d {
6481    unsafe {
6482        transmute(vscalefpd128(
6483            a.as_f64x2(),
6484            b.as_f64x2(),
6485            f64x2::ZERO,
6486            0b00000011,
6487        ))
6488    }
6489}
6490
6491/// Scale the packed double-precision (64-bit) floating-point elements in a using values from b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
6492///
6493/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_scalef_pd&expand=4866)
6494#[inline]
6495#[target_feature(enable = "avx512f,avx512vl")]
6496#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6497#[cfg_attr(test, assert_instr(vscalefpd))]
6498pub fn _mm_mask_scalef_pd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
6499    unsafe { transmute(vscalefpd128(a.as_f64x2(), b.as_f64x2(), src.as_f64x2(), k)) }
6500}
6501
6502/// Scale the packed double-precision (64-bit) floating-point elements in a using values from b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
6503///
6504/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_scalef_pd&expand=4867)
6505#[inline]
6506#[target_feature(enable = "avx512f,avx512vl")]
6507#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6508#[cfg_attr(test, assert_instr(vscalefpd))]
6509pub fn _mm_maskz_scalef_pd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
6510    unsafe { transmute(vscalefpd128(a.as_f64x2(), b.as_f64x2(), f64x2::ZERO, k)) }
6511}
6512
6513/// Fix up packed single-precision (32-bit) floating-point elements in a and b using packed 32-bit integers in c, and store the results in dst. imm8 is used to set the required flags reporting.
6514///
6515/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fixupimm_ps&expand=2499)
6516#[inline]
6517#[target_feature(enable = "avx512f")]
6518#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6519#[cfg_attr(test, assert_instr(vfixupimmps, IMM8 = 0))]
6520#[rustc_legacy_const_generics(3)]
6521pub fn _mm512_fixupimm_ps<const IMM8: i32>(a: __m512, b: __m512, c: __m512i) -> __m512 {
6522    unsafe {
6523        static_assert_uimm_bits!(IMM8, 8);
6524        let a = a.as_f32x16();
6525        let b = b.as_f32x16();
6526        let c = c.as_i32x16();
6527        let r = vfixupimmps(a, b, c, IMM8, 0b11111111_11111111, _MM_FROUND_CUR_DIRECTION);
6528        transmute(r)
6529    }
6530}
6531
6532/// Fix up packed single-precision (32-bit) floating-point elements in a and b using packed 32-bit integers in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set). imm8 is used to set the required flags reporting.
6533///
6534/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fixupimm_ps&expand=2500)
6535#[inline]
6536#[target_feature(enable = "avx512f")]
6537#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6538#[cfg_attr(test, assert_instr(vfixupimmps, IMM8 = 0))]
6539#[rustc_legacy_const_generics(4)]
6540pub fn _mm512_mask_fixupimm_ps<const IMM8: i32>(
6541    a: __m512,
6542    k: __mmask16,
6543    b: __m512,
6544    c: __m512i,
6545) -> __m512 {
6546    unsafe {
6547        static_assert_uimm_bits!(IMM8, 8);
6548        let a = a.as_f32x16();
6549        let b = b.as_f32x16();
6550        let c = c.as_i32x16();
6551        let r = vfixupimmps(a, b, c, IMM8, k, _MM_FROUND_CUR_DIRECTION);
6552        transmute(r)
6553    }
6554}
6555
6556/// Fix up packed single-precision (32-bit) floating-point elements in a and b using packed 32-bit integers in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). imm8 is used to set the required flags reporting.
6557///
6558/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fixupimm_ps&expand=2501)
6559#[inline]
6560#[target_feature(enable = "avx512f")]
6561#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6562#[cfg_attr(test, assert_instr(vfixupimmps, IMM8 = 0))]
6563#[rustc_legacy_const_generics(4)]
6564pub fn _mm512_maskz_fixupimm_ps<const IMM8: i32>(
6565    k: __mmask16,
6566    a: __m512,
6567    b: __m512,
6568    c: __m512i,
6569) -> __m512 {
6570    unsafe {
6571        static_assert_uimm_bits!(IMM8, 8);
6572        let a = a.as_f32x16();
6573        let b = b.as_f32x16();
6574        let c = c.as_i32x16();
6575        let r = vfixupimmpsz(a, b, c, IMM8, k, _MM_FROUND_CUR_DIRECTION);
6576        transmute(r)
6577    }
6578}
6579
6580/// Fix up packed single-precision (32-bit) floating-point elements in a and b using packed 32-bit integers in c, and store the results in dst. imm8 is used to set the required flags reporting.
6581///
6582/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_fixupimm_ps&expand=2496)
6583#[inline]
6584#[target_feature(enable = "avx512f,avx512vl")]
6585#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6586#[cfg_attr(test, assert_instr(vfixupimmps, IMM8 = 0))]
6587#[rustc_legacy_const_generics(3)]
6588pub fn _mm256_fixupimm_ps<const IMM8: i32>(a: __m256, b: __m256, c: __m256i) -> __m256 {
6589    unsafe {
6590        static_assert_uimm_bits!(IMM8, 8);
6591        let a = a.as_f32x8();
6592        let b = b.as_f32x8();
6593        let c = c.as_i32x8();
6594        let r = vfixupimmps256(a, b, c, IMM8, 0b11111111);
6595        transmute(r)
6596    }
6597}
6598
6599/// Fix up packed single-precision (32-bit) floating-point elements in a and b using packed 32-bit integers in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set). imm8 is used to set the required flags reporting.
6600///
6601/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_fixupimm_ps&expand=2497)
6602#[inline]
6603#[target_feature(enable = "avx512f,avx512vl")]
6604#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6605#[cfg_attr(test, assert_instr(vfixupimmps, IMM8 = 0))]
6606#[rustc_legacy_const_generics(4)]
6607pub fn _mm256_mask_fixupimm_ps<const IMM8: i32>(
6608    a: __m256,
6609    k: __mmask8,
6610    b: __m256,
6611    c: __m256i,
6612) -> __m256 {
6613    unsafe {
6614        static_assert_uimm_bits!(IMM8, 8);
6615        let a = a.as_f32x8();
6616        let b = b.as_f32x8();
6617        let c = c.as_i32x8();
6618        let r = vfixupimmps256(a, b, c, IMM8, k);
6619        transmute(r)
6620    }
6621}
6622
6623/// Fix up packed single-precision (32-bit) floating-point elements in a and b using packed 32-bit integers in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). imm8 is used to set the required flags reporting.
6624///
6625/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_fixupimm_ps&expand=2498)
6626#[inline]
6627#[target_feature(enable = "avx512f,avx512vl")]
6628#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6629#[cfg_attr(test, assert_instr(vfixupimmps, IMM8 = 0))]
6630#[rustc_legacy_const_generics(4)]
6631pub fn _mm256_maskz_fixupimm_ps<const IMM8: i32>(
6632    k: __mmask8,
6633    a: __m256,
6634    b: __m256,
6635    c: __m256i,
6636) -> __m256 {
6637    unsafe {
6638        static_assert_uimm_bits!(IMM8, 8);
6639        let a = a.as_f32x8();
6640        let b = b.as_f32x8();
6641        let c = c.as_i32x8();
6642        let r = vfixupimmpsz256(a, b, c, IMM8, k);
6643        transmute(r)
6644    }
6645}
6646
6647/// Fix up packed single-precision (32-bit) floating-point elements in a and b using packed 32-bit integers in c, and store the results in dst. imm8 is used to set the required flags reporting.
6648///
6649/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_fixupimm_ps&expand=2493)
6650#[inline]
6651#[target_feature(enable = "avx512f,avx512vl")]
6652#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6653#[cfg_attr(test, assert_instr(vfixupimmps, IMM8 = 0))]
6654#[rustc_legacy_const_generics(3)]
6655pub fn _mm_fixupimm_ps<const IMM8: i32>(a: __m128, b: __m128, c: __m128i) -> __m128 {
6656    unsafe {
6657        static_assert_uimm_bits!(IMM8, 8);
6658        let a = a.as_f32x4();
6659        let b = b.as_f32x4();
6660        let c = c.as_i32x4();
6661        let r = vfixupimmps128(a, b, c, IMM8, 0b00001111);
6662        transmute(r)
6663    }
6664}
6665
6666/// Fix up packed single-precision (32-bit) floating-point elements in a and b using packed 32-bit integers in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set). imm8 is used to set the required flags reporting.
6667///
6668/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_fixupimm_ps&expand=2494)
6669#[inline]
6670#[target_feature(enable = "avx512f,avx512vl")]
6671#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6672#[cfg_attr(test, assert_instr(vfixupimmps, IMM8 = 0))]
6673#[rustc_legacy_const_generics(4)]
6674pub fn _mm_mask_fixupimm_ps<const IMM8: i32>(
6675    a: __m128,
6676    k: __mmask8,
6677    b: __m128,
6678    c: __m128i,
6679) -> __m128 {
6680    unsafe {
6681        static_assert_uimm_bits!(IMM8, 8);
6682        let a = a.as_f32x4();
6683        let b = b.as_f32x4();
6684        let c = c.as_i32x4();
6685        let r = vfixupimmps128(a, b, c, IMM8, k);
6686        transmute(r)
6687    }
6688}
6689
6690/// Fix up packed single-precision (32-bit) floating-point elements in a and b using packed 32-bit integers in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). imm8 is used to set the required flags reporting.
6691///
6692/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_fixupimm_ps&expand=2495)
6693#[inline]
6694#[target_feature(enable = "avx512f,avx512vl")]
6695#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6696#[cfg_attr(test, assert_instr(vfixupimmps, IMM8 = 0))]
6697#[rustc_legacy_const_generics(4)]
6698pub fn _mm_maskz_fixupimm_ps<const IMM8: i32>(
6699    k: __mmask8,
6700    a: __m128,
6701    b: __m128,
6702    c: __m128i,
6703) -> __m128 {
6704    unsafe {
6705        static_assert_uimm_bits!(IMM8, 8);
6706        let a = a.as_f32x4();
6707        let b = b.as_f32x4();
6708        let c = c.as_i32x4();
6709        let r = vfixupimmpsz128(a, b, c, IMM8, k);
6710        transmute(r)
6711    }
6712}
6713
6714/// Fix up packed double-precision (64-bit) floating-point elements in a and b using packed 64-bit integers in c, and store the results in dst. imm8 is used to set the required flags reporting.
6715///
6716/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fixupimm_pd&expand=2490)
6717#[inline]
6718#[target_feature(enable = "avx512f")]
6719#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6720#[cfg_attr(test, assert_instr(vfixupimmpd, IMM8 = 0))]
6721#[rustc_legacy_const_generics(3)]
6722pub fn _mm512_fixupimm_pd<const IMM8: i32>(a: __m512d, b: __m512d, c: __m512i) -> __m512d {
6723    unsafe {
6724        static_assert_uimm_bits!(IMM8, 8);
6725        let a = a.as_f64x8();
6726        let b = b.as_f64x8();
6727        let c = c.as_i64x8();
6728        let r = vfixupimmpd(a, b, c, IMM8, 0b11111111, _MM_FROUND_CUR_DIRECTION);
6729        transmute(r)
6730    }
6731}
6732
6733/// Fix up packed double-precision (64-bit) floating-point elements in a and b using packed 64-bit integers in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set). imm8 is used to set the required flags reporting.
6734///
6735/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fixupimm_pd&expand=2491)
6736#[inline]
6737#[target_feature(enable = "avx512f")]
6738#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6739#[cfg_attr(test, assert_instr(vfixupimmpd, IMM8 = 0))]
6740#[rustc_legacy_const_generics(4)]
6741pub fn _mm512_mask_fixupimm_pd<const IMM8: i32>(
6742    a: __m512d,
6743    k: __mmask8,
6744    b: __m512d,
6745    c: __m512i,
6746) -> __m512d {
6747    unsafe {
6748        static_assert_uimm_bits!(IMM8, 8);
6749        let a = a.as_f64x8();
6750        let b = b.as_f64x8();
6751        let c = c.as_i64x8();
6752        let r = vfixupimmpd(a, b, c, IMM8, k, _MM_FROUND_CUR_DIRECTION);
6753        transmute(r)
6754    }
6755}
6756
6757/// Fix up packed double-precision (64-bit) floating-point elements in a and b using packed 64-bit integers in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). imm8 is used to set the required flags reporting.
6758///
6759/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fixupimm_pd&expand=2492)
6760#[inline]
6761#[target_feature(enable = "avx512f")]
6762#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6763#[cfg_attr(test, assert_instr(vfixupimmpd, IMM8 = 0))]
6764#[rustc_legacy_const_generics(4)]
6765pub fn _mm512_maskz_fixupimm_pd<const IMM8: i32>(
6766    k: __mmask8,
6767    a: __m512d,
6768    b: __m512d,
6769    c: __m512i,
6770) -> __m512d {
6771    unsafe {
6772        static_assert_uimm_bits!(IMM8, 8);
6773        let a = a.as_f64x8();
6774        let b = b.as_f64x8();
6775        let c = c.as_i64x8();
6776        let r = vfixupimmpdz(a, b, c, IMM8, k, _MM_FROUND_CUR_DIRECTION);
6777        transmute(r)
6778    }
6779}
6780
6781/// Fix up packed double-precision (64-bit) floating-point elements in a and b using packed 64-bit integers in c, and store the results in dst. imm8 is used to set the required flags reporting.
6782///
6783/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_fixupimm_pd&expand=2487)
6784#[inline]
6785#[target_feature(enable = "avx512f,avx512vl")]
6786#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6787#[cfg_attr(test, assert_instr(vfixupimmpd, IMM8 = 0))]
6788#[rustc_legacy_const_generics(3)]
6789pub fn _mm256_fixupimm_pd<const IMM8: i32>(a: __m256d, b: __m256d, c: __m256i) -> __m256d {
6790    unsafe {
6791        static_assert_uimm_bits!(IMM8, 8);
6792        let a = a.as_f64x4();
6793        let b = b.as_f64x4();
6794        let c = c.as_i64x4();
6795        let r = vfixupimmpd256(a, b, c, IMM8, 0b00001111);
6796        transmute(r)
6797    }
6798}
6799
6800/// Fix up packed double-precision (64-bit) floating-point elements in a and b using packed 64-bit integers in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set). imm8 is used to set the required flags reporting.
6801///
6802/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_fixupimm_pd&expand=2488)
6803#[inline]
6804#[target_feature(enable = "avx512f,avx512vl")]
6805#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6806#[cfg_attr(test, assert_instr(vfixupimmpd, IMM8 = 0))]
6807#[rustc_legacy_const_generics(4)]
6808pub fn _mm256_mask_fixupimm_pd<const IMM8: i32>(
6809    a: __m256d,
6810    k: __mmask8,
6811    b: __m256d,
6812    c: __m256i,
6813) -> __m256d {
6814    unsafe {
6815        static_assert_uimm_bits!(IMM8, 8);
6816        let a = a.as_f64x4();
6817        let b = b.as_f64x4();
6818        let c = c.as_i64x4();
6819        let r = vfixupimmpd256(a, b, c, IMM8, k);
6820        transmute(r)
6821    }
6822}
6823
6824/// Fix up packed double-precision (64-bit) floating-point elements in a and b using packed 64-bit integers in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). imm8 is used to set the required flags reporting.
6825///
6826/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_fixupimm_pd&expand=2489)
6827#[inline]
6828#[target_feature(enable = "avx512f,avx512vl")]
6829#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6830#[cfg_attr(test, assert_instr(vfixupimmpd, IMM8 = 0))]
6831#[rustc_legacy_const_generics(4)]
6832pub fn _mm256_maskz_fixupimm_pd<const IMM8: i32>(
6833    k: __mmask8,
6834    a: __m256d,
6835    b: __m256d,
6836    c: __m256i,
6837) -> __m256d {
6838    unsafe {
6839        static_assert_uimm_bits!(IMM8, 8);
6840        let a = a.as_f64x4();
6841        let b = b.as_f64x4();
6842        let c = c.as_i64x4();
6843        let r = vfixupimmpdz256(a, b, c, IMM8, k);
6844        transmute(r)
6845    }
6846}
6847
6848/// Fix up packed double-precision (64-bit) floating-point elements in a and b using packed 64-bit integers in c, and store the results in dst. imm8 is used to set the required flags reporting.
6849///
6850/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_fixupimm_pd&expand=2484)
6851#[inline]
6852#[target_feature(enable = "avx512f,avx512vl")]
6853#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6854#[cfg_attr(test, assert_instr(vfixupimmpd, IMM8 = 0))]
6855#[rustc_legacy_const_generics(3)]
6856pub fn _mm_fixupimm_pd<const IMM8: i32>(a: __m128d, b: __m128d, c: __m128i) -> __m128d {
6857    unsafe {
6858        static_assert_uimm_bits!(IMM8, 8);
6859        let a = a.as_f64x2();
6860        let b = b.as_f64x2();
6861        let c = c.as_i64x2();
6862        let r = vfixupimmpd128(a, b, c, IMM8, 0b00000011);
6863        transmute(r)
6864    }
6865}
6866
6867/// Fix up packed double-precision (64-bit) floating-point elements in a and b using packed 64-bit integers in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set). imm8 is used to set the required flags reporting.
6868///
6869/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_fixupimm_pd&expand=2485)
6870#[inline]
6871#[target_feature(enable = "avx512f,avx512vl")]
6872#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6873#[cfg_attr(test, assert_instr(vfixupimmpd, IMM8 = 0))]
6874#[rustc_legacy_const_generics(4)]
6875pub fn _mm_mask_fixupimm_pd<const IMM8: i32>(
6876    a: __m128d,
6877    k: __mmask8,
6878    b: __m128d,
6879    c: __m128i,
6880) -> __m128d {
6881    unsafe {
6882        static_assert_uimm_bits!(IMM8, 8);
6883        let a = a.as_f64x2();
6884        let b = b.as_f64x2();
6885        let c = c.as_i64x2();
6886        let r = vfixupimmpd128(a, b, c, IMM8, k);
6887        transmute(r)
6888    }
6889}
6890
6891/// Fix up packed double-precision (64-bit) floating-point elements in a and b using packed 64-bit integers in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). imm8 is used to set the required flags reporting.
6892///
6893/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_fixupimm_pd&expand=2486)
6894#[inline]
6895#[target_feature(enable = "avx512f,avx512vl")]
6896#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6897#[cfg_attr(test, assert_instr(vfixupimmpd, IMM8 = 0))]
6898#[rustc_legacy_const_generics(4)]
6899pub fn _mm_maskz_fixupimm_pd<const IMM8: i32>(
6900    k: __mmask8,
6901    a: __m128d,
6902    b: __m128d,
6903    c: __m128i,
6904) -> __m128d {
6905    unsafe {
6906        static_assert_uimm_bits!(IMM8, 8);
6907        let a = a.as_f64x2();
6908        let b = b.as_f64x2();
6909        let c = c.as_i64x2();
6910        let r = vfixupimmpdz128(a, b, c, IMM8, k);
6911        transmute(r)
6912    }
6913}
6914
6915/// Bitwise ternary logic that provides the capability to implement any three-operand binary function; the specific binary function is specified by value in imm8. For each bit in each packed 32-bit integer, the corresponding bit from a, b, and c are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding bit in dst.
6916///
6917/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_ternarylogic_epi32&expand=5867)
6918#[inline]
6919#[target_feature(enable = "avx512f")]
6920#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6921#[cfg_attr(test, assert_instr(vpternlogd, IMM8 = 114))]
6922#[rustc_legacy_const_generics(3)]
6923pub fn _mm512_ternarylogic_epi32<const IMM8: i32>(a: __m512i, b: __m512i, c: __m512i) -> __m512i {
6924    unsafe {
6925        static_assert_uimm_bits!(IMM8, 8);
6926        let a = a.as_i32x16();
6927        let b = b.as_i32x16();
6928        let c = c.as_i32x16();
6929        let r = vpternlogd(a, b, c, IMM8);
6930        transmute(r)
6931    }
6932}
6933
6934/// Bitwise ternary logic that provides the capability to implement any three-operand binary function; the specific binary function is specified by value in imm8. For each bit in each packed 32-bit integer, the corresponding bit from src, a, and b are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding bit in dst using writemask k at 32-bit granularity (32-bit elements are copied from src when the corresponding mask bit is not set).
6935///
6936/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_ternarylogic_epi32&expand=5865)
6937#[inline]
6938#[target_feature(enable = "avx512f")]
6939#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6940#[cfg_attr(test, assert_instr(vpternlogd, IMM8 = 114))]
6941#[rustc_legacy_const_generics(4)]
6942pub fn _mm512_mask_ternarylogic_epi32<const IMM8: i32>(
6943    src: __m512i,
6944    k: __mmask16,
6945    a: __m512i,
6946    b: __m512i,
6947) -> __m512i {
6948    unsafe {
6949        static_assert_uimm_bits!(IMM8, 8);
6950        let src = src.as_i32x16();
6951        let a = a.as_i32x16();
6952        let b = b.as_i32x16();
6953        let r = vpternlogd(src, a, b, IMM8);
6954        transmute(simd_select_bitmask(k, r, src))
6955    }
6956}
6957
6958/// Bitwise ternary logic that provides the capability to implement any three-operand binary function; the specific binary function is specified by value in imm8. For each bit in each packed 32-bit integer, the corresponding bit from a, b, and c are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding bit in dst using zeromask k at 32-bit granularity (32-bit elements are zeroed out when the corresponding mask bit is not set).
6959///
6960/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_ternarylogic_epi32&expand=5866)
6961#[inline]
6962#[target_feature(enable = "avx512f")]
6963#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6964#[cfg_attr(test, assert_instr(vpternlogd, IMM8 = 114))]
6965#[rustc_legacy_const_generics(4)]
6966pub fn _mm512_maskz_ternarylogic_epi32<const IMM8: i32>(
6967    k: __mmask16,
6968    a: __m512i,
6969    b: __m512i,
6970    c: __m512i,
6971) -> __m512i {
6972    unsafe {
6973        static_assert_uimm_bits!(IMM8, 8);
6974        let a = a.as_i32x16();
6975        let b = b.as_i32x16();
6976        let c = c.as_i32x16();
6977        let r = vpternlogd(a, b, c, IMM8);
6978        transmute(simd_select_bitmask(k, r, i32x16::ZERO))
6979    }
6980}
6981
6982/// Bitwise ternary logic that provides the capability to implement any three-operand binary function; the specific binary function is specified by value in imm8. For each bit in each packed 32-bit integer, the corresponding bit from a, b, and c are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding bit in dst.
6983///
6984/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_ternarylogic_epi32&expand=5864)
6985#[inline]
6986#[target_feature(enable = "avx512f,avx512vl")]
6987#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
6988#[cfg_attr(test, assert_instr(vpternlogd, IMM8 = 114))]
6989#[rustc_legacy_const_generics(3)]
6990pub fn _mm256_ternarylogic_epi32<const IMM8: i32>(a: __m256i, b: __m256i, c: __m256i) -> __m256i {
6991    unsafe {
6992        static_assert_uimm_bits!(IMM8, 8);
6993        let a = a.as_i32x8();
6994        let b = b.as_i32x8();
6995        let c = c.as_i32x8();
6996        let r = vpternlogd256(a, b, c, IMM8);
6997        transmute(r)
6998    }
6999}
7000
7001/// Bitwise ternary logic that provides the capability to implement any three-operand binary function; the specific binary function is specified by value in imm8. For each bit in each packed 32-bit integer, the corresponding bit from src, a, and b are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding bit in dst using writemask k at 32-bit granularity (32-bit elements are copied from src when the corresponding mask bit is not set).
7002///
7003/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_ternarylogic_epi32&expand=5862)
7004#[inline]
7005#[target_feature(enable = "avx512f,avx512vl")]
7006#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7007#[cfg_attr(test, assert_instr(vpternlogd, IMM8 = 114))]
7008#[rustc_legacy_const_generics(4)]
7009pub fn _mm256_mask_ternarylogic_epi32<const IMM8: i32>(
7010    src: __m256i,
7011    k: __mmask8,
7012    a: __m256i,
7013    b: __m256i,
7014) -> __m256i {
7015    unsafe {
7016        static_assert_uimm_bits!(IMM8, 8);
7017        let src = src.as_i32x8();
7018        let a = a.as_i32x8();
7019        let b = b.as_i32x8();
7020        let r = vpternlogd256(src, a, b, IMM8);
7021        transmute(simd_select_bitmask(k, r, src))
7022    }
7023}
7024
7025/// Bitwise ternary logic that provides the capability to implement any three-operand binary function; the specific binary function is specified by value in imm8. For each bit in each packed 32-bit integer, the corresponding bit from a, b, and c are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding bit in dst using zeromask k at 32-bit granularity (32-bit elements are zeroed out when the corresponding mask bit is not set).
7026///
7027/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_ternarylogic_epi32&expand=5863)
7028#[inline]
7029#[target_feature(enable = "avx512f,avx512vl")]
7030#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7031#[cfg_attr(test, assert_instr(vpternlogd, IMM8 = 114))]
7032#[rustc_legacy_const_generics(4)]
7033pub fn _mm256_maskz_ternarylogic_epi32<const IMM8: i32>(
7034    k: __mmask8,
7035    a: __m256i,
7036    b: __m256i,
7037    c: __m256i,
7038) -> __m256i {
7039    unsafe {
7040        static_assert_uimm_bits!(IMM8, 8);
7041        let a = a.as_i32x8();
7042        let b = b.as_i32x8();
7043        let c = c.as_i32x8();
7044        let r = vpternlogd256(a, b, c, IMM8);
7045        transmute(simd_select_bitmask(k, r, i32x8::ZERO))
7046    }
7047}
7048
7049/// Bitwise ternary logic that provides the capability to implement any three-operand binary function; the specific binary function is specified by value in imm8. For each bit in each packed 32-bit integer, the corresponding bit from a, b, and c are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding bit in dst.
7050///
7051/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_ternarylogic_epi32&expand=5861)
7052#[inline]
7053#[target_feature(enable = "avx512f,avx512vl")]
7054#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7055#[cfg_attr(test, assert_instr(vpternlogd, IMM8 = 114))]
7056#[rustc_legacy_const_generics(3)]
7057pub fn _mm_ternarylogic_epi32<const IMM8: i32>(a: __m128i, b: __m128i, c: __m128i) -> __m128i {
7058    unsafe {
7059        static_assert_uimm_bits!(IMM8, 8);
7060        let a = a.as_i32x4();
7061        let b = b.as_i32x4();
7062        let c = c.as_i32x4();
7063        let r = vpternlogd128(a, b, c, IMM8);
7064        transmute(r)
7065    }
7066}
7067
7068/// Bitwise ternary logic that provides the capability to implement any three-operand binary function; the specific binary function is specified by value in imm8. For each bit in each packed 32-bit integer, the corresponding bit from src, a, and b are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding bit in dst using writemask k at 32-bit granularity (32-bit elements are copied from src when the corresponding mask bit is not set).
7069///
7070/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_ternarylogic_epi32&expand=5859)
7071#[inline]
7072#[target_feature(enable = "avx512f,avx512vl")]
7073#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7074#[cfg_attr(test, assert_instr(vpternlogd, IMM8 = 114))]
7075#[rustc_legacy_const_generics(4)]
7076pub fn _mm_mask_ternarylogic_epi32<const IMM8: i32>(
7077    src: __m128i,
7078    k: __mmask8,
7079    a: __m128i,
7080    b: __m128i,
7081) -> __m128i {
7082    unsafe {
7083        static_assert_uimm_bits!(IMM8, 8);
7084        let src = src.as_i32x4();
7085        let a = a.as_i32x4();
7086        let b = b.as_i32x4();
7087        let r = vpternlogd128(src, a, b, IMM8);
7088        transmute(simd_select_bitmask(k, r, src))
7089    }
7090}
7091
7092/// Bitwise ternary logic that provides the capability to implement any three-operand binary function; the specific binary function is specified by value in imm8. For each bit in each packed 32-bit integer, the corresponding bit from a, b, and c are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding bit in dst using zeromask k at 32-bit granularity (32-bit elements are zeroed out when the corresponding mask bit is not set).
7093///
7094/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_ternarylogic_epi32&expand=5860)
7095#[inline]
7096#[target_feature(enable = "avx512f,avx512vl")]
7097#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7098#[cfg_attr(test, assert_instr(vpternlogd, IMM8 = 114))]
7099#[rustc_legacy_const_generics(4)]
7100pub fn _mm_maskz_ternarylogic_epi32<const IMM8: i32>(
7101    k: __mmask8,
7102    a: __m128i,
7103    b: __m128i,
7104    c: __m128i,
7105) -> __m128i {
7106    unsafe {
7107        static_assert_uimm_bits!(IMM8, 8);
7108        let a = a.as_i32x4();
7109        let b = b.as_i32x4();
7110        let c = c.as_i32x4();
7111        let r = vpternlogd128(a, b, c, IMM8);
7112        transmute(simd_select_bitmask(k, r, i32x4::ZERO))
7113    }
7114}
7115
7116/// Bitwise ternary logic that provides the capability to implement any three-operand binary function; the specific binary function is specified by value in imm8. For each bit in each packed 64-bit integer, the corresponding bit from a, b, and c are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding bit in dst.
7117///
7118/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_ternarylogic_epi64&expand=5876)
7119#[inline]
7120#[target_feature(enable = "avx512f")]
7121#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7122#[cfg_attr(test, assert_instr(vpternlogq, IMM8 = 114))]
7123#[rustc_legacy_const_generics(3)]
7124pub fn _mm512_ternarylogic_epi64<const IMM8: i32>(a: __m512i, b: __m512i, c: __m512i) -> __m512i {
7125    unsafe {
7126        static_assert_uimm_bits!(IMM8, 8);
7127        let a = a.as_i64x8();
7128        let b = b.as_i64x8();
7129        let c = c.as_i64x8();
7130        let r = vpternlogq(a, b, c, IMM8);
7131        transmute(r)
7132    }
7133}
7134
7135/// Bitwise ternary logic that provides the capability to implement any three-operand binary function; the specific binary function is specified by value in imm8. For each bit in each packed 64-bit integer, the corresponding bit from src, a, and b are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding bit in dst using writemask k at 64-bit granularity (64-bit elements are copied from src when the corresponding mask bit is not set).
7136///
7137/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_ternarylogic_epi64&expand=5874)
7138#[inline]
7139#[target_feature(enable = "avx512f")]
7140#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7141#[cfg_attr(test, assert_instr(vpternlogq, IMM8 = 114))]
7142#[rustc_legacy_const_generics(4)]
7143pub fn _mm512_mask_ternarylogic_epi64<const IMM8: i32>(
7144    src: __m512i,
7145    k: __mmask8,
7146    a: __m512i,
7147    b: __m512i,
7148) -> __m512i {
7149    unsafe {
7150        static_assert_uimm_bits!(IMM8, 8);
7151        let src = src.as_i64x8();
7152        let a = a.as_i64x8();
7153        let b = b.as_i64x8();
7154        let r = vpternlogq(src, a, b, IMM8);
7155        transmute(simd_select_bitmask(k, r, src))
7156    }
7157}
7158
7159/// Bitwise ternary logic that provides the capability to implement any three-operand binary function; the specific binary function is specified by value in imm8. For each bit in each packed 64-bit integer, the corresponding bit from a, b, and c are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding bit in dst using zeromask k at 64-bit granularity (64-bit elements are zeroed out when the corresponding mask bit is not set).
7160///
7161/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_ternarylogic_epi64&expand=5875)
7162#[inline]
7163#[target_feature(enable = "avx512f")]
7164#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7165#[cfg_attr(test, assert_instr(vpternlogq, IMM8 = 114))]
7166#[rustc_legacy_const_generics(4)]
7167pub fn _mm512_maskz_ternarylogic_epi64<const IMM8: i32>(
7168    k: __mmask8,
7169    a: __m512i,
7170    b: __m512i,
7171    c: __m512i,
7172) -> __m512i {
7173    unsafe {
7174        static_assert_uimm_bits!(IMM8, 8);
7175        let a = a.as_i64x8();
7176        let b = b.as_i64x8();
7177        let c = c.as_i64x8();
7178        let r = vpternlogq(a, b, c, IMM8);
7179        transmute(simd_select_bitmask(k, r, i64x8::ZERO))
7180    }
7181}
7182
7183/// Bitwise ternary logic that provides the capability to implement any three-operand binary function; the specific binary function is specified by value in imm8. For each bit in each packed 64-bit integer, the corresponding bit from a, b, and c are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding bit in dst.
7184///
7185/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_ternarylogic_epi64&expand=5873)
7186#[inline]
7187#[target_feature(enable = "avx512f,avx512vl")]
7188#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7189#[cfg_attr(test, assert_instr(vpternlogq, IMM8 = 114))]
7190#[rustc_legacy_const_generics(3)]
7191pub fn _mm256_ternarylogic_epi64<const IMM8: i32>(a: __m256i, b: __m256i, c: __m256i) -> __m256i {
7192    unsafe {
7193        static_assert_uimm_bits!(IMM8, 8);
7194        let a = a.as_i64x4();
7195        let b = b.as_i64x4();
7196        let c = c.as_i64x4();
7197        let r = vpternlogq256(a, b, c, IMM8);
7198        transmute(r)
7199    }
7200}
7201
7202/// Bitwise ternary logic that provides the capability to implement any three-operand binary function; the specific binary function is specified by value in imm8. For each bit in each packed 64-bit integer, the corresponding bit from src, a, and b are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding bit in dst using writemask k at 64-bit granularity (64-bit elements are copied from src when the corresponding mask bit is not set).
7203///
7204/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_ternarylogic_epi64&expand=5871)
7205#[inline]
7206#[target_feature(enable = "avx512f,avx512vl")]
7207#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7208#[cfg_attr(test, assert_instr(vpternlogq, IMM8 = 114))]
7209#[rustc_legacy_const_generics(4)]
7210pub fn _mm256_mask_ternarylogic_epi64<const IMM8: i32>(
7211    src: __m256i,
7212    k: __mmask8,
7213    a: __m256i,
7214    b: __m256i,
7215) -> __m256i {
7216    unsafe {
7217        static_assert_uimm_bits!(IMM8, 8);
7218        let src = src.as_i64x4();
7219        let a = a.as_i64x4();
7220        let b = b.as_i64x4();
7221        let r = vpternlogq256(src, a, b, IMM8);
7222        transmute(simd_select_bitmask(k, r, src))
7223    }
7224}
7225
7226/// Bitwise ternary logic that provides the capability to implement any three-operand binary function; the specific binary function is specified by value in imm8. For each bit in each packed 64-bit integer, the corresponding bit from a, b, and c are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding bit in dst using zeromask k at 64-bit granularity (64-bit elements are zeroed out when the corresponding mask bit is not set).
7227///
7228/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_ternarylogic_epi64&expand=5872)
7229#[inline]
7230#[target_feature(enable = "avx512f,avx512vl")]
7231#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7232#[cfg_attr(test, assert_instr(vpternlogq, IMM8 = 114))]
7233#[rustc_legacy_const_generics(4)]
7234pub fn _mm256_maskz_ternarylogic_epi64<const IMM8: i32>(
7235    k: __mmask8,
7236    a: __m256i,
7237    b: __m256i,
7238    c: __m256i,
7239) -> __m256i {
7240    unsafe {
7241        static_assert_uimm_bits!(IMM8, 8);
7242        let a = a.as_i64x4();
7243        let b = b.as_i64x4();
7244        let c = c.as_i64x4();
7245        let r = vpternlogq256(a, b, c, IMM8);
7246        transmute(simd_select_bitmask(k, r, i64x4::ZERO))
7247    }
7248}
7249
7250/// Bitwise ternary logic that provides the capability to implement any three-operand binary function; the specific binary function is specified by value in imm8. For each bit in each packed 64-bit integer, the corresponding bit from a, b, and c are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding bit in dst.
7251///
7252/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_ternarylogic_epi64&expand=5870)
7253#[inline]
7254#[target_feature(enable = "avx512f,avx512vl")]
7255#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7256#[cfg_attr(test, assert_instr(vpternlogq, IMM8 = 114))]
7257#[rustc_legacy_const_generics(3)]
7258pub fn _mm_ternarylogic_epi64<const IMM8: i32>(a: __m128i, b: __m128i, c: __m128i) -> __m128i {
7259    unsafe {
7260        static_assert_uimm_bits!(IMM8, 8);
7261        let a = a.as_i64x2();
7262        let b = b.as_i64x2();
7263        let c = c.as_i64x2();
7264        let r = vpternlogq128(a, b, c, IMM8);
7265        transmute(r)
7266    }
7267}
7268
7269/// Bitwise ternary logic that provides the capability to implement any three-operand binary function; the specific binary function is specified by value in imm8. For each bit in each packed 64-bit integer, the corresponding bit from src, a, and b are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding bit in dst using writemask k at 64-bit granularity (64-bit elements are copied from src when the corresponding mask bit is not set).
7270///
7271/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_ternarylogic_epi64&expand=5868)
7272#[inline]
7273#[target_feature(enable = "avx512f,avx512vl")]
7274#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7275#[cfg_attr(test, assert_instr(vpternlogq, IMM8 = 114))]
7276#[rustc_legacy_const_generics(4)]
7277pub fn _mm_mask_ternarylogic_epi64<const IMM8: i32>(
7278    src: __m128i,
7279    k: __mmask8,
7280    a: __m128i,
7281    b: __m128i,
7282) -> __m128i {
7283    unsafe {
7284        static_assert_uimm_bits!(IMM8, 8);
7285        let src = src.as_i64x2();
7286        let a = a.as_i64x2();
7287        let b = b.as_i64x2();
7288        let r = vpternlogq128(src, a, b, IMM8);
7289        transmute(simd_select_bitmask(k, r, src))
7290    }
7291}
7292
7293/// Bitwise ternary logic that provides the capability to implement any three-operand binary function; the specific binary function is specified by value in imm8. For each bit in each packed 64-bit integer, the corresponding bit from a, b, and c are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding bit in dst using zeromask k at 64-bit granularity (64-bit elements are zeroed out when the corresponding mask bit is not set).
7294///
7295/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_ternarylogic_epi64&expand=5869)
7296#[inline]
7297#[target_feature(enable = "avx512f,avx512vl")]
7298#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7299#[cfg_attr(test, assert_instr(vpternlogq, IMM8 = 114))]
7300#[rustc_legacy_const_generics(4)]
7301pub fn _mm_maskz_ternarylogic_epi64<const IMM8: i32>(
7302    k: __mmask8,
7303    a: __m128i,
7304    b: __m128i,
7305    c: __m128i,
7306) -> __m128i {
7307    unsafe {
7308        static_assert_uimm_bits!(IMM8, 8);
7309        let a = a.as_i64x2();
7310        let b = b.as_i64x2();
7311        let c = c.as_i64x2();
7312        let r = vpternlogq128(a, b, c, IMM8);
7313        transmute(simd_select_bitmask(k, r, i64x2::ZERO))
7314    }
7315}
7316
7317/// Normalize the mantissas of packed single-precision (32-bit) floating-point elements in a, and store the results in dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.
7318/// The mantissa is normalized to the interval specified by interv, which can take the following values:
7319///    _MM_MANT_NORM_1_2     // interval [1, 2)
7320///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)
7321///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)
7322///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)
7323/// The sign is determined by sc which can take the following values:
7324///    _MM_MANT_SIGN_src     // sign = sign(src)
7325///    _MM_MANT_SIGN_zero    // sign = 0
7326///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1
7327///
7328/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_getmant_ps&expand=2880)
7329#[inline]
7330#[target_feature(enable = "avx512f")]
7331#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7332#[cfg_attr(test, assert_instr(vgetmantps, NORM = 0, SIGN = 0))]
7333#[rustc_legacy_const_generics(1, 2)]
7334pub fn _mm512_getmant_ps<const NORM: _MM_MANTISSA_NORM_ENUM, const SIGN: _MM_MANTISSA_SIGN_ENUM>(
7335    a: __m512,
7336) -> __m512 {
7337    unsafe {
7338        static_assert_uimm_bits!(NORM, 4);
7339        static_assert_uimm_bits!(SIGN, 2);
7340        let a = a.as_f32x16();
7341        let zero = f32x16::ZERO;
7342        let r = vgetmantps(
7343            a,
7344            SIGN << 2 | NORM,
7345            zero,
7346            0b11111111_11111111,
7347            _MM_FROUND_CUR_DIRECTION,
7348        );
7349        transmute(r)
7350    }
7351}
7352
7353/// Normalize the mantissas of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
7354/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
7355///    _MM_MANT_NORM_1_2     // interval [1, 2)\
7356///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
7357///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
7358///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
7359/// The sign is determined by sc which can take the following values:\
7360///    _MM_MANT_SIGN_src     // sign = sign(src)\
7361///    _MM_MANT_SIGN_zero    // sign = 0\
7362///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1
7363///
7364/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_getmant_ps&expand=2881)
7365#[inline]
7366#[target_feature(enable = "avx512f")]
7367#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7368#[cfg_attr(test, assert_instr(vgetmantps, NORM = 0, SIGN = 0))]
7369#[rustc_legacy_const_generics(3, 4)]
7370pub fn _mm512_mask_getmant_ps<
7371    const NORM: _MM_MANTISSA_NORM_ENUM,
7372    const SIGN: _MM_MANTISSA_SIGN_ENUM,
7373>(
7374    src: __m512,
7375    k: __mmask16,
7376    a: __m512,
7377) -> __m512 {
7378    unsafe {
7379        static_assert_uimm_bits!(NORM, 4);
7380        static_assert_uimm_bits!(SIGN, 2);
7381        let a = a.as_f32x16();
7382        let src = src.as_f32x16();
7383        let r = vgetmantps(a, SIGN << 2 | NORM, src, k, _MM_FROUND_CUR_DIRECTION);
7384        transmute(r)
7385    }
7386}
7387
7388/// Normalize the mantissas of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
7389/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
7390///    _MM_MANT_NORM_1_2     // interval [1, 2)\
7391///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
7392///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
7393///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
7394/// The sign is determined by sc which can take the following values:\
7395///    _MM_MANT_SIGN_src     // sign = sign(src)\
7396///    _MM_MANT_SIGN_zero    // sign = 0\
7397///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1
7398///
7399/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_getmant_ps&expand=2882)
7400#[inline]
7401#[target_feature(enable = "avx512f")]
7402#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7403#[cfg_attr(test, assert_instr(vgetmantps, NORM = 0, SIGN = 0))]
7404#[rustc_legacy_const_generics(2, 3)]
7405pub fn _mm512_maskz_getmant_ps<
7406    const NORM: _MM_MANTISSA_NORM_ENUM,
7407    const SIGN: _MM_MANTISSA_SIGN_ENUM,
7408>(
7409    k: __mmask16,
7410    a: __m512,
7411) -> __m512 {
7412    unsafe {
7413        static_assert_uimm_bits!(NORM, 4);
7414        static_assert_uimm_bits!(SIGN, 2);
7415        let a = a.as_f32x16();
7416        let r = vgetmantps(
7417            a,
7418            SIGN << 2 | NORM,
7419            f32x16::ZERO,
7420            k,
7421            _MM_FROUND_CUR_DIRECTION,
7422        );
7423        transmute(r)
7424    }
7425}
7426
7427/// Normalize the mantissas of packed single-precision (32-bit) floating-point elements in a, and store the results in dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.
7428/// The mantissa is normalized to the interval specified by interv, which can take the following values:
7429///    _MM_MANT_NORM_1_2     // interval [1, 2)
7430///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)
7431///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)
7432///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)
7433/// The sign is determined by sc which can take the following values:
7434///    _MM_MANT_SIGN_src     // sign = sign(src)
7435///    _MM_MANT_SIGN_zero    // sign = 0
7436///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1
7437///
7438/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_getmant_ps&expand=2877)
7439#[inline]
7440#[target_feature(enable = "avx512f,avx512vl")]
7441#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7442#[cfg_attr(test, assert_instr(vgetmantps, NORM = 0, SIGN = 0))]
7443#[rustc_legacy_const_generics(1, 2)]
7444pub fn _mm256_getmant_ps<const NORM: _MM_MANTISSA_NORM_ENUM, const SIGN: _MM_MANTISSA_SIGN_ENUM>(
7445    a: __m256,
7446) -> __m256 {
7447    unsafe {
7448        static_assert_uimm_bits!(NORM, 4);
7449        static_assert_uimm_bits!(SIGN, 2);
7450        let a = a.as_f32x8();
7451        let r = vgetmantps256(a, SIGN << 2 | NORM, f32x8::ZERO, 0b11111111);
7452        transmute(r)
7453    }
7454}
7455
7456/// Normalize the mantissas of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
7457/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
7458///    _MM_MANT_NORM_1_2     // interval [1, 2)\
7459///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
7460///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
7461///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
7462/// The sign is determined by sc which can take the following values:\
7463///    _MM_MANT_SIGN_src     // sign = sign(src)\
7464///    _MM_MANT_SIGN_zero    // sign = 0\
7465///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1
7466///
7467/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_getmant_ps&expand=2878)
7468#[inline]
7469#[target_feature(enable = "avx512f,avx512vl")]
7470#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7471#[cfg_attr(test, assert_instr(vgetmantps, NORM = 0, SIGN = 0))]
7472#[rustc_legacy_const_generics(3, 4)]
7473pub fn _mm256_mask_getmant_ps<
7474    const NORM: _MM_MANTISSA_NORM_ENUM,
7475    const SIGN: _MM_MANTISSA_SIGN_ENUM,
7476>(
7477    src: __m256,
7478    k: __mmask8,
7479    a: __m256,
7480) -> __m256 {
7481    unsafe {
7482        static_assert_uimm_bits!(NORM, 4);
7483        static_assert_uimm_bits!(SIGN, 2);
7484        let a = a.as_f32x8();
7485        let src = src.as_f32x8();
7486        let r = vgetmantps256(a, SIGN << 2 | NORM, src, k);
7487        transmute(r)
7488    }
7489}
7490
7491/// Normalize the mantissas of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
7492/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
7493///    _MM_MANT_NORM_1_2     // interval [1, 2)\
7494///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
7495///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
7496///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
7497/// The sign is determined by sc which can take the following values:\
7498///    _MM_MANT_SIGN_src     // sign = sign(src)\
7499///    _MM_MANT_SIGN_zero    // sign = 0\
7500///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1
7501///
7502/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_getmant_ps&expand=2879)
7503#[inline]
7504#[target_feature(enable = "avx512f,avx512vl")]
7505#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7506#[cfg_attr(test, assert_instr(vgetmantps, NORM = 0, SIGN = 0))]
7507#[rustc_legacy_const_generics(2, 3)]
7508pub fn _mm256_maskz_getmant_ps<
7509    const NORM: _MM_MANTISSA_NORM_ENUM,
7510    const SIGN: _MM_MANTISSA_SIGN_ENUM,
7511>(
7512    k: __mmask8,
7513    a: __m256,
7514) -> __m256 {
7515    unsafe {
7516        static_assert_uimm_bits!(NORM, 4);
7517        static_assert_uimm_bits!(SIGN, 2);
7518        let a = a.as_f32x8();
7519        let r = vgetmantps256(a, SIGN << 2 | NORM, f32x8::ZERO, k);
7520        transmute(r)
7521    }
7522}
7523
7524/// Normalize the mantissas of packed single-precision (32-bit) floating-point elements in a, and store the results in dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.
7525/// The mantissa is normalized to the interval specified by interv, which can take the following values:
7526///    _MM_MANT_NORM_1_2     // interval [1, 2)
7527///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)
7528///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)
7529///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)
7530/// The sign is determined by sc which can take the following values:
7531///    _MM_MANT_SIGN_src     // sign = sign(src)
7532///    _MM_MANT_SIGN_zero    // sign = 0
7533///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1
7534///
7535/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_getmant_ps&expand=2874)
7536#[inline]
7537#[target_feature(enable = "avx512f,avx512vl")]
7538#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7539#[cfg_attr(test, assert_instr(vgetmantps, NORM = 0, SIGN = 0))]
7540#[rustc_legacy_const_generics(1, 2)]
7541pub fn _mm_getmant_ps<const NORM: _MM_MANTISSA_NORM_ENUM, const SIGN: _MM_MANTISSA_SIGN_ENUM>(
7542    a: __m128,
7543) -> __m128 {
7544    unsafe {
7545        static_assert_uimm_bits!(NORM, 4);
7546        static_assert_uimm_bits!(SIGN, 2);
7547        let a = a.as_f32x4();
7548        let r = vgetmantps128(a, SIGN << 2 | NORM, f32x4::ZERO, 0b00001111);
7549        transmute(r)
7550    }
7551}
7552
7553/// Normalize the mantissas of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
7554/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
7555///    _MM_MANT_NORM_1_2     // interval [1, 2)\
7556///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
7557///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
7558///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
7559/// The sign is determined by sc which can take the following values:\
7560///    _MM_MANT_SIGN_src     // sign = sign(src)\
7561///    _MM_MANT_SIGN_zero    // sign = 0\
7562///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1
7563///
7564/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_getmant_ps&expand=2875)
7565#[inline]
7566#[target_feature(enable = "avx512f,avx512vl")]
7567#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7568#[cfg_attr(test, assert_instr(vgetmantps, NORM = 0, SIGN = 0))]
7569#[rustc_legacy_const_generics(3, 4)]
7570pub fn _mm_mask_getmant_ps<
7571    const NORM: _MM_MANTISSA_NORM_ENUM,
7572    const SIGN: _MM_MANTISSA_SIGN_ENUM,
7573>(
7574    src: __m128,
7575    k: __mmask8,
7576    a: __m128,
7577) -> __m128 {
7578    unsafe {
7579        static_assert_uimm_bits!(NORM, 4);
7580        static_assert_uimm_bits!(SIGN, 2);
7581        let a = a.as_f32x4();
7582        let src = src.as_f32x4();
7583        let r = vgetmantps128(a, SIGN << 2 | NORM, src, k);
7584        transmute(r)
7585    }
7586}
7587
7588/// Normalize the mantissas of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
7589/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
7590///    _MM_MANT_NORM_1_2     // interval [1, 2)\
7591///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
7592///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
7593///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
7594/// The sign is determined by sc which can take the following values:\
7595///    _MM_MANT_SIGN_src     // sign = sign(src)\
7596///    _MM_MANT_SIGN_zero    // sign = 0\
7597///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1
7598///
7599/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_getmant_ps&expand=2876)
7600#[inline]
7601#[target_feature(enable = "avx512f,avx512vl")]
7602#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7603#[cfg_attr(test, assert_instr(vgetmantps, NORM = 0, SIGN = 0))]
7604#[rustc_legacy_const_generics(2, 3)]
7605pub fn _mm_maskz_getmant_ps<
7606    const NORM: _MM_MANTISSA_NORM_ENUM,
7607    const SIGN: _MM_MANTISSA_SIGN_ENUM,
7608>(
7609    k: __mmask8,
7610    a: __m128,
7611) -> __m128 {
7612    unsafe {
7613        static_assert_uimm_bits!(NORM, 4);
7614        static_assert_uimm_bits!(SIGN, 2);
7615        let a = a.as_f32x4();
7616        let r = vgetmantps128(a, SIGN << 2 | NORM, f32x4::ZERO, k);
7617        transmute(r)
7618    }
7619}
7620
7621/// Normalize the mantissas of packed double-precision (64-bit) floating-point elements in a, and store the results in dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
7622/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
7623///    _MM_MANT_NORM_1_2     // interval [1, 2)\
7624///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
7625///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
7626///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
7627/// The sign is determined by sc which can take the following values:\
7628///    _MM_MANT_SIGN_src     // sign = sign(src)\
7629///    _MM_MANT_SIGN_zero    // sign = 0\
7630///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1
7631///
7632/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_getmant_pd&expand=2871)
7633#[inline]
7634#[target_feature(enable = "avx512f")]
7635#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7636#[cfg_attr(test, assert_instr(vgetmantpd, NORM = 0, SIGN = 0))]
7637#[rustc_legacy_const_generics(1, 2)]
7638pub fn _mm512_getmant_pd<const NORM: _MM_MANTISSA_NORM_ENUM, const SIGN: _MM_MANTISSA_SIGN_ENUM>(
7639    a: __m512d,
7640) -> __m512d {
7641    unsafe {
7642        static_assert_uimm_bits!(NORM, 4);
7643        static_assert_uimm_bits!(SIGN, 2);
7644        let a = a.as_f64x8();
7645        let zero = f64x8::ZERO;
7646        let r = vgetmantpd(
7647            a,
7648            SIGN << 2 | NORM,
7649            zero,
7650            0b11111111,
7651            _MM_FROUND_CUR_DIRECTION,
7652        );
7653        transmute(r)
7654    }
7655}
7656
7657/// Normalize the mantissas of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
7658/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
7659///    _MM_MANT_NORM_1_2     // interval [1, 2)\
7660///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
7661///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
7662///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
7663/// The sign is determined by sc which can take the following values:\
7664///    _MM_MANT_SIGN_src     // sign = sign(src)\
7665///    _MM_MANT_SIGN_zero    // sign = 0\
7666///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1
7667///
7668/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_getmant_pd&expand=2872)
7669#[inline]
7670#[target_feature(enable = "avx512f")]
7671#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7672#[cfg_attr(test, assert_instr(vgetmantpd, NORM = 0, SIGN = 0))]
7673#[rustc_legacy_const_generics(3, 4)]
7674pub fn _mm512_mask_getmant_pd<
7675    const NORM: _MM_MANTISSA_NORM_ENUM,
7676    const SIGN: _MM_MANTISSA_SIGN_ENUM,
7677>(
7678    src: __m512d,
7679    k: __mmask8,
7680    a: __m512d,
7681) -> __m512d {
7682    unsafe {
7683        static_assert_uimm_bits!(NORM, 4);
7684        static_assert_uimm_bits!(SIGN, 2);
7685        let a = a.as_f64x8();
7686        let src = src.as_f64x8();
7687        let r = vgetmantpd(a, SIGN << 2 | NORM, src, k, _MM_FROUND_CUR_DIRECTION);
7688        transmute(r)
7689    }
7690}
7691
7692/// Normalize the mantissas of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
7693/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
7694///    _MM_MANT_NORM_1_2     // interval [1, 2)\
7695///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
7696///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
7697///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
7698/// The sign is determined by sc which can take the following values:\
7699///    _MM_MANT_SIGN_src     // sign = sign(src)\
7700///    _MM_MANT_SIGN_zero    // sign = 0\
7701///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1
7702///
7703/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_getmant_pd&expand=2873)
7704#[inline]
7705#[target_feature(enable = "avx512f")]
7706#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7707#[cfg_attr(test, assert_instr(vgetmantpd, NORM = 0, SIGN = 0))]
7708#[rustc_legacy_const_generics(2, 3)]
7709pub fn _mm512_maskz_getmant_pd<
7710    const NORM: _MM_MANTISSA_NORM_ENUM,
7711    const SIGN: _MM_MANTISSA_SIGN_ENUM,
7712>(
7713    k: __mmask8,
7714    a: __m512d,
7715) -> __m512d {
7716    unsafe {
7717        static_assert_uimm_bits!(NORM, 4);
7718        static_assert_uimm_bits!(SIGN, 2);
7719        let a = a.as_f64x8();
7720        let r = vgetmantpd(
7721            a,
7722            SIGN << 2 | NORM,
7723            f64x8::ZERO,
7724            k,
7725            _MM_FROUND_CUR_DIRECTION,
7726        );
7727        transmute(r)
7728    }
7729}
7730
7731/// Normalize the mantissas of packed double-precision (64-bit) floating-point elements in a, and store the results in dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
7732/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
7733///    _MM_MANT_NORM_1_2     // interval [1, 2)\
7734///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
7735///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
7736///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
7737/// The sign is determined by sc which can take the following values:\
7738///    _MM_MANT_SIGN_src     // sign = sign(src)\
7739///    _MM_MANT_SIGN_zero    // sign = 0\
7740///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1
7741///
7742/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_getmant_pd&expand=2868)
7743#[inline]
7744#[target_feature(enable = "avx512f,avx512vl")]
7745#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7746#[cfg_attr(test, assert_instr(vgetmantpd, NORM = 0, SIGN = 0))]
7747#[rustc_legacy_const_generics(1, 2)]
7748pub fn _mm256_getmant_pd<const NORM: _MM_MANTISSA_NORM_ENUM, const SIGN: _MM_MANTISSA_SIGN_ENUM>(
7749    a: __m256d,
7750) -> __m256d {
7751    unsafe {
7752        static_assert_uimm_bits!(NORM, 4);
7753        static_assert_uimm_bits!(SIGN, 2);
7754        let a = a.as_f64x4();
7755        let r = vgetmantpd256(a, SIGN << 2 | NORM, f64x4::ZERO, 0b00001111);
7756        transmute(r)
7757    }
7758}
7759
7760/// Normalize the mantissas of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
7761/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
7762///    _MM_MANT_NORM_1_2     // interval [1, 2)\
7763///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
7764///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
7765///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
7766/// The sign is determined by sc which can take the following values:\
7767///    _MM_MANT_SIGN_src     // sign = sign(src)\
7768///    _MM_MANT_SIGN_zero    // sign = 0\
7769///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1
7770///
7771/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_getmant_pd&expand=2869)
7772#[inline]
7773#[target_feature(enable = "avx512f,avx512vl")]
7774#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7775#[cfg_attr(test, assert_instr(vgetmantpd, NORM = 0, SIGN = 0))]
7776#[rustc_legacy_const_generics(3, 4)]
7777pub fn _mm256_mask_getmant_pd<
7778    const NORM: _MM_MANTISSA_NORM_ENUM,
7779    const SIGN: _MM_MANTISSA_SIGN_ENUM,
7780>(
7781    src: __m256d,
7782    k: __mmask8,
7783    a: __m256d,
7784) -> __m256d {
7785    unsafe {
7786        static_assert_uimm_bits!(NORM, 4);
7787        static_assert_uimm_bits!(SIGN, 2);
7788        let a = a.as_f64x4();
7789        let src = src.as_f64x4();
7790        let r = vgetmantpd256(a, SIGN << 2 | NORM, src, k);
7791        transmute(r)
7792    }
7793}
7794
7795/// Normalize the mantissas of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
7796/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
7797///    _MM_MANT_NORM_1_2     // interval [1, 2)\
7798///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
7799///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
7800///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
7801/// The sign is determined by sc which can take the following values:\
7802///    _MM_MANT_SIGN_src     // sign = sign(src)\
7803///    _MM_MANT_SIGN_zero    // sign = 0\
7804///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1
7805///
7806/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_getmant_pd&expand=2870)
7807#[inline]
7808#[target_feature(enable = "avx512f,avx512vl")]
7809#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7810#[cfg_attr(test, assert_instr(vgetmantpd, NORM = 0, SIGN = 0))]
7811#[rustc_legacy_const_generics(2, 3)]
7812pub fn _mm256_maskz_getmant_pd<
7813    const NORM: _MM_MANTISSA_NORM_ENUM,
7814    const SIGN: _MM_MANTISSA_SIGN_ENUM,
7815>(
7816    k: __mmask8,
7817    a: __m256d,
7818) -> __m256d {
7819    unsafe {
7820        static_assert_uimm_bits!(NORM, 4);
7821        static_assert_uimm_bits!(SIGN, 2);
7822        let a = a.as_f64x4();
7823        let r = vgetmantpd256(a, SIGN << 2 | NORM, f64x4::ZERO, k);
7824        transmute(r)
7825    }
7826}
7827
7828/// Normalize the mantissas of packed double-precision (64-bit) floating-point elements in a, and store the results in dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
7829/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
7830///    _MM_MANT_NORM_1_2     // interval [1, 2)\
7831///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
7832///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
7833///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
7834/// The sign is determined by sc which can take the following values:\
7835///    _MM_MANT_SIGN_src     // sign = sign(src)\
7836///    _MM_MANT_SIGN_zero    // sign = 0\
7837///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1
7838///
7839/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_getmant_pd&expand=2865)
7840#[inline]
7841#[target_feature(enable = "avx512f,avx512vl")]
7842#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7843#[cfg_attr(test, assert_instr(vgetmantpd, NORM = 0, SIGN = 0))]
7844#[rustc_legacy_const_generics(1, 2)]
7845pub fn _mm_getmant_pd<const NORM: _MM_MANTISSA_NORM_ENUM, const SIGN: _MM_MANTISSA_SIGN_ENUM>(
7846    a: __m128d,
7847) -> __m128d {
7848    unsafe {
7849        static_assert_uimm_bits!(NORM, 4);
7850        static_assert_uimm_bits!(SIGN, 2);
7851        let a = a.as_f64x2();
7852        let r = vgetmantpd128(a, SIGN << 2 | NORM, f64x2::ZERO, 0b00000011);
7853        transmute(r)
7854    }
7855}
7856
7857/// Normalize the mantissas of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
7858/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
7859///    _MM_MANT_NORM_1_2     // interval [1, 2)\
7860///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
7861///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
7862///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
7863/// The sign is determined by sc which can take the following values:\
7864///    _MM_MANT_SIGN_src     // sign = sign(src)\
7865///    _MM_MANT_SIGN_zero    // sign = 0\
7866///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1
7867///
7868/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_getmant_pd&expand=2866)
7869#[inline]
7870#[target_feature(enable = "avx512f,avx512vl")]
7871#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7872#[cfg_attr(test, assert_instr(vgetmantpd, NORM = 0, SIGN = 0))]
7873#[rustc_legacy_const_generics(3, 4)]
7874pub fn _mm_mask_getmant_pd<
7875    const NORM: _MM_MANTISSA_NORM_ENUM,
7876    const SIGN: _MM_MANTISSA_SIGN_ENUM,
7877>(
7878    src: __m128d,
7879    k: __mmask8,
7880    a: __m128d,
7881) -> __m128d {
7882    unsafe {
7883        static_assert_uimm_bits!(NORM, 4);
7884        static_assert_uimm_bits!(SIGN, 2);
7885        let a = a.as_f64x2();
7886        let src = src.as_f64x2();
7887        let r = vgetmantpd128(a, SIGN << 2 | NORM, src, k);
7888        transmute(r)
7889    }
7890}
7891
7892/// Normalize the mantissas of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
7893/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
7894///    _MM_MANT_NORM_1_2     // interval [1, 2)\
7895///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
7896///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
7897///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
7898/// The sign is determined by sc which can take the following values:\
7899///    _MM_MANT_SIGN_src     // sign = sign(src)\
7900///    _MM_MANT_SIGN_zero    // sign = 0\
7901///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1
7902///
7903/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_getmant_pd&expand=2867)
7904#[inline]
7905#[target_feature(enable = "avx512f,avx512vl")]
7906#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7907#[cfg_attr(test, assert_instr(vgetmantpd, NORM = 0, SIGN = 0))]
7908#[rustc_legacy_const_generics(2, 3)]
7909pub fn _mm_maskz_getmant_pd<
7910    const NORM: _MM_MANTISSA_NORM_ENUM,
7911    const SIGN: _MM_MANTISSA_SIGN_ENUM,
7912>(
7913    k: __mmask8,
7914    a: __m128d,
7915) -> __m128d {
7916    unsafe {
7917        static_assert_uimm_bits!(NORM, 4);
7918        static_assert_uimm_bits!(SIGN, 2);
7919        let a = a.as_f64x2();
7920        let r = vgetmantpd128(a, SIGN << 2 | NORM, f64x2::ZERO, k);
7921        transmute(r)
7922    }
7923}
7924
7925/// Add packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst.\
7926///
7927/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
7928/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
7929/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
7930/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
7931/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
7932/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
7933///
7934/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_add_round_ps&expand=145)
7935#[inline]
7936#[target_feature(enable = "avx512f")]
7937#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7938#[cfg_attr(test, assert_instr(vaddps, ROUNDING = 8))]
7939#[rustc_legacy_const_generics(2)]
7940pub fn _mm512_add_round_ps<const ROUNDING: i32>(a: __m512, b: __m512) -> __m512 {
7941    unsafe {
7942        static_assert_rounding!(ROUNDING);
7943        let a = a.as_f32x16();
7944        let b = b.as_f32x16();
7945        let r = vaddps(a, b, ROUNDING);
7946        transmute(r)
7947    }
7948}
7949
7950/// Add packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
7951///
7952/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
7953/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
7954/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
7955/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
7956/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
7957/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
7958///
7959/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_add_round_ps&expand=146)
7960#[inline]
7961#[target_feature(enable = "avx512f")]
7962#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7963#[cfg_attr(test, assert_instr(vaddps, ROUNDING = 8))]
7964#[rustc_legacy_const_generics(4)]
7965pub fn _mm512_mask_add_round_ps<const ROUNDING: i32>(
7966    src: __m512,
7967    k: __mmask16,
7968    a: __m512,
7969    b: __m512,
7970) -> __m512 {
7971    unsafe {
7972        static_assert_rounding!(ROUNDING);
7973        let a = a.as_f32x16();
7974        let b = b.as_f32x16();
7975        let r = vaddps(a, b, ROUNDING);
7976        transmute(simd_select_bitmask(k, r, src.as_f32x16()))
7977    }
7978}
7979
7980/// Add packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
7981///
7982/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
7983/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
7984/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
7985/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
7986/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
7987/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
7988///
7989/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_add_round_ps&expand=147)
7990#[inline]
7991#[target_feature(enable = "avx512f")]
7992#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
7993#[cfg_attr(test, assert_instr(vaddps, ROUNDING = 8))]
7994#[rustc_legacy_const_generics(3)]
7995pub fn _mm512_maskz_add_round_ps<const ROUNDING: i32>(
7996    k: __mmask16,
7997    a: __m512,
7998    b: __m512,
7999) -> __m512 {
8000    unsafe {
8001        static_assert_rounding!(ROUNDING);
8002        let a = a.as_f32x16();
8003        let b = b.as_f32x16();
8004        let r = vaddps(a, b, ROUNDING);
8005        transmute(simd_select_bitmask(k, r, f32x16::ZERO))
8006    }
8007}
8008
8009/// Add packed double-precision (64-bit) floating-point elements in a and b, and store the results in dst.\
8010///
8011/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8012/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8013/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8014/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8015/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8016/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8017///
8018/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_add_round_pd&expand=142)
8019#[inline]
8020#[target_feature(enable = "avx512f")]
8021#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8022#[cfg_attr(test, assert_instr(vaddpd, ROUNDING = 8))]
8023#[rustc_legacy_const_generics(2)]
8024pub fn _mm512_add_round_pd<const ROUNDING: i32>(a: __m512d, b: __m512d) -> __m512d {
8025    unsafe {
8026        static_assert_rounding!(ROUNDING);
8027        let a = a.as_f64x8();
8028        let b = b.as_f64x8();
8029        let r = vaddpd(a, b, ROUNDING);
8030        transmute(r)
8031    }
8032}
8033
8034/// Add packed double-precision (64-bit) floating-point elements in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
8035///
8036/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8037/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8038/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8039/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8040/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8041/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8042///
8043/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_add_round_pd&expand=143)
8044#[inline]
8045#[target_feature(enable = "avx512f")]
8046#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8047#[cfg_attr(test, assert_instr(vaddpd, ROUNDING = 8))]
8048#[rustc_legacy_const_generics(4)]
8049pub fn _mm512_mask_add_round_pd<const ROUNDING: i32>(
8050    src: __m512d,
8051    k: __mmask8,
8052    a: __m512d,
8053    b: __m512d,
8054) -> __m512d {
8055    unsafe {
8056        static_assert_rounding!(ROUNDING);
8057        let a = a.as_f64x8();
8058        let b = b.as_f64x8();
8059        let r = vaddpd(a, b, ROUNDING);
8060        transmute(simd_select_bitmask(k, r, src.as_f64x8()))
8061    }
8062}
8063
8064/// Add packed double-precision (64-bit) floating-point elements in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
8065///
8066/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8067/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8068/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8069/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8070/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8071/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8072///
8073/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_add_round_pd&expand=144)
8074#[inline]
8075#[target_feature(enable = "avx512f")]
8076#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8077#[cfg_attr(test, assert_instr(vaddpd, ROUNDING = 8))]
8078#[rustc_legacy_const_generics(3)]
8079pub fn _mm512_maskz_add_round_pd<const ROUNDING: i32>(
8080    k: __mmask8,
8081    a: __m512d,
8082    b: __m512d,
8083) -> __m512d {
8084    unsafe {
8085        static_assert_rounding!(ROUNDING);
8086        let a = a.as_f64x8();
8087        let b = b.as_f64x8();
8088        let r = vaddpd(a, b, ROUNDING);
8089        transmute(simd_select_bitmask(k, r, f64x8::ZERO))
8090    }
8091}
8092
8093/// Subtract packed single-precision (32-bit) floating-point elements in b from packed single-precision (32-bit) floating-point elements in a, and store the results in dst.\
8094///
8095/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8096/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8097/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8098/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8099/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8100/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8101///
8102/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_sub_round_ps&expand=5739)
8103#[inline]
8104#[target_feature(enable = "avx512f")]
8105#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8106#[cfg_attr(test, assert_instr(vsubps, ROUNDING = 8))]
8107#[rustc_legacy_const_generics(2)]
8108pub fn _mm512_sub_round_ps<const ROUNDING: i32>(a: __m512, b: __m512) -> __m512 {
8109    unsafe {
8110        static_assert_rounding!(ROUNDING);
8111        let a = a.as_f32x16();
8112        let b = b.as_f32x16();
8113        let r = vsubps(a, b, ROUNDING);
8114        transmute(r)
8115    }
8116}
8117
8118/// Subtract packed single-precision (32-bit) floating-point elements in b from packed single-precision (32-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
8119///
8120/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8121/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8122/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8123/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8124/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8125/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8126///
8127/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_sub_round_ps&expand=5737)
8128#[inline]
8129#[target_feature(enable = "avx512f")]
8130#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8131#[cfg_attr(test, assert_instr(vsubps, ROUNDING = 8))]
8132#[rustc_legacy_const_generics(4)]
8133pub fn _mm512_mask_sub_round_ps<const ROUNDING: i32>(
8134    src: __m512,
8135    k: __mmask16,
8136    a: __m512,
8137    b: __m512,
8138) -> __m512 {
8139    unsafe {
8140        static_assert_rounding!(ROUNDING);
8141        let a = a.as_f32x16();
8142        let b = b.as_f32x16();
8143        let r = vsubps(a, b, ROUNDING);
8144        transmute(simd_select_bitmask(k, r, src.as_f32x16()))
8145    }
8146}
8147
8148/// Subtract packed single-precision (32-bit) floating-point elements in b from packed single-precision (32-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
8149///
8150/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8151/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8152/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8153/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8154/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8155/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8156///
8157/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_sub_round_ps&expand=5738)
8158#[inline]
8159#[target_feature(enable = "avx512f")]
8160#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8161#[cfg_attr(test, assert_instr(vsubps, ROUNDING = 8))]
8162#[rustc_legacy_const_generics(3)]
8163pub fn _mm512_maskz_sub_round_ps<const ROUNDING: i32>(
8164    k: __mmask16,
8165    a: __m512,
8166    b: __m512,
8167) -> __m512 {
8168    unsafe {
8169        static_assert_rounding!(ROUNDING);
8170        let a = a.as_f32x16();
8171        let b = b.as_f32x16();
8172        let r = vsubps(a, b, ROUNDING);
8173        transmute(simd_select_bitmask(k, r, f32x16::ZERO))
8174    }
8175}
8176
8177/// Subtract packed double-precision (64-bit) floating-point elements in b from packed double-precision (64-bit) floating-point elements in a, and store the results in dst.\
8178///
8179/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8180/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8181/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8182/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8183/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8184/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8185///
8186/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_sub_round_pd&expand=5736)
8187#[inline]
8188#[target_feature(enable = "avx512f")]
8189#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8190#[cfg_attr(test, assert_instr(vsubpd, ROUNDING = 8))]
8191#[rustc_legacy_const_generics(2)]
8192pub fn _mm512_sub_round_pd<const ROUNDING: i32>(a: __m512d, b: __m512d) -> __m512d {
8193    unsafe {
8194        static_assert_rounding!(ROUNDING);
8195        let a = a.as_f64x8();
8196        let b = b.as_f64x8();
8197        let r = vsubpd(a, b, ROUNDING);
8198        transmute(r)
8199    }
8200}
8201
8202/// Subtract packed double-precision (64-bit) floating-point elements in b from packed double-precision (64-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
8203///
8204/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8205/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8206/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8207/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8208/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8209/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8210///
8211/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_sub_round_pd&expand=5734)
8212#[inline]
8213#[target_feature(enable = "avx512f")]
8214#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8215#[cfg_attr(test, assert_instr(vsubpd, ROUNDING = 8))]
8216#[rustc_legacy_const_generics(4)]
8217pub fn _mm512_mask_sub_round_pd<const ROUNDING: i32>(
8218    src: __m512d,
8219    k: __mmask8,
8220    a: __m512d,
8221    b: __m512d,
8222) -> __m512d {
8223    unsafe {
8224        static_assert_rounding!(ROUNDING);
8225        let a = a.as_f64x8();
8226        let b = b.as_f64x8();
8227        let r = vsubpd(a, b, ROUNDING);
8228        transmute(simd_select_bitmask(k, r, src.as_f64x8()))
8229    }
8230}
8231
8232/// Subtract packed double-precision (64-bit) floating-point elements in b from packed double-precision (64-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
8233///
8234/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8235/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8236/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8237/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8238/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8239/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8240///
8241/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_sub_round_pd&expand=5735)
8242#[inline]
8243#[target_feature(enable = "avx512f")]
8244#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8245#[cfg_attr(test, assert_instr(vsubpd, ROUNDING = 8))]
8246#[rustc_legacy_const_generics(3)]
8247pub fn _mm512_maskz_sub_round_pd<const ROUNDING: i32>(
8248    k: __mmask8,
8249    a: __m512d,
8250    b: __m512d,
8251) -> __m512d {
8252    unsafe {
8253        static_assert_rounding!(ROUNDING);
8254        let a = a.as_f64x8();
8255        let b = b.as_f64x8();
8256        let r = vsubpd(a, b, ROUNDING);
8257        transmute(simd_select_bitmask(k, r, f64x8::ZERO))
8258    }
8259}
8260
8261/// Multiply packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst.\
8262///
8263/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8264/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8265/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8266/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8267/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8268/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8269///
8270/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mul_round_ps&expand=3940)
8271#[inline]
8272#[target_feature(enable = "avx512f")]
8273#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8274#[cfg_attr(test, assert_instr(vmulps, ROUNDING = 8))]
8275#[rustc_legacy_const_generics(2)]
8276pub fn _mm512_mul_round_ps<const ROUNDING: i32>(a: __m512, b: __m512) -> __m512 {
8277    unsafe {
8278        static_assert_rounding!(ROUNDING);
8279        let a = a.as_f32x16();
8280        let b = b.as_f32x16();
8281        let r = vmulps(a, b, ROUNDING);
8282        transmute(r)
8283    }
8284}
8285
8286/// Multiply packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
8287///
8288/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8289/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8290/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8291/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8292/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8293/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8294///
8295/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_mul_round_ps&expand=3938)
8296#[inline]
8297#[target_feature(enable = "avx512f")]
8298#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8299#[cfg_attr(test, assert_instr(vmulps, ROUNDING = 8))]
8300#[rustc_legacy_const_generics(4)]
8301pub fn _mm512_mask_mul_round_ps<const ROUNDING: i32>(
8302    src: __m512,
8303    k: __mmask16,
8304    a: __m512,
8305    b: __m512,
8306) -> __m512 {
8307    unsafe {
8308        static_assert_rounding!(ROUNDING);
8309        let a = a.as_f32x16();
8310        let b = b.as_f32x16();
8311        let r = vmulps(a, b, ROUNDING);
8312        transmute(simd_select_bitmask(k, r, src.as_f32x16()))
8313    }
8314}
8315
8316/// Multiply packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
8317///
8318/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8319/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8320/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8321/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8322/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8323/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8324///
8325/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_mul_round_ps&expand=3939)
8326#[inline]
8327#[target_feature(enable = "avx512f")]
8328#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8329#[cfg_attr(test, assert_instr(vmulps, ROUNDING = 8))]
8330#[rustc_legacy_const_generics(3)]
8331pub fn _mm512_maskz_mul_round_ps<const ROUNDING: i32>(
8332    k: __mmask16,
8333    a: __m512,
8334    b: __m512,
8335) -> __m512 {
8336    unsafe {
8337        static_assert_rounding!(ROUNDING);
8338        let a = a.as_f32x16();
8339        let b = b.as_f32x16();
8340        let r = vmulps(a, b, ROUNDING);
8341        transmute(simd_select_bitmask(k, r, f32x16::ZERO))
8342    }
8343}
8344
8345/// Multiply packed double-precision (64-bit) floating-point elements in a and b, and store the results in dst.\
8346///
8347/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8348/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8349/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8350/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8351/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8352/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8353///
8354/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mul_round_pd&expand=3937)
8355#[inline]
8356#[target_feature(enable = "avx512f")]
8357#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8358#[cfg_attr(test, assert_instr(vmulpd, ROUNDING = 8))]
8359#[rustc_legacy_const_generics(2)]
8360pub fn _mm512_mul_round_pd<const ROUNDING: i32>(a: __m512d, b: __m512d) -> __m512d {
8361    unsafe {
8362        static_assert_rounding!(ROUNDING);
8363        let a = a.as_f64x8();
8364        let b = b.as_f64x8();
8365        let r = vmulpd(a, b, ROUNDING);
8366        transmute(r)
8367    }
8368}
8369
8370/// Multiply packed double-precision (64-bit) floating-point elements in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
8371///
8372/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8373/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8374/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8375/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8376/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8377/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8378///
8379/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_mul_round_pd&expand=3935)
8380#[inline]
8381#[target_feature(enable = "avx512f")]
8382#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8383#[cfg_attr(test, assert_instr(vmulpd, ROUNDING = 8))]
8384#[rustc_legacy_const_generics(4)]
8385pub fn _mm512_mask_mul_round_pd<const ROUNDING: i32>(
8386    src: __m512d,
8387    k: __mmask8,
8388    a: __m512d,
8389    b: __m512d,
8390) -> __m512d {
8391    unsafe {
8392        static_assert_rounding!(ROUNDING);
8393        let a = a.as_f64x8();
8394        let b = b.as_f64x8();
8395        let r = vmulpd(a, b, ROUNDING);
8396        transmute(simd_select_bitmask(k, r, src.as_f64x8()))
8397    }
8398}
8399
8400/// Multiply packed single-precision (32-bit) floating-point elements in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
8401///
8402/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8403/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8404/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8405/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8406/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8407/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8408///
8409/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_mul_round_pd&expand=3939)
8410#[inline]
8411#[target_feature(enable = "avx512f")]
8412#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8413#[cfg_attr(test, assert_instr(vmulpd, ROUNDING = 8))]
8414#[rustc_legacy_const_generics(3)]
8415pub fn _mm512_maskz_mul_round_pd<const ROUNDING: i32>(
8416    k: __mmask8,
8417    a: __m512d,
8418    b: __m512d,
8419) -> __m512d {
8420    unsafe {
8421        static_assert_rounding!(ROUNDING);
8422        let a = a.as_f64x8();
8423        let b = b.as_f64x8();
8424        let r = vmulpd(a, b, ROUNDING);
8425        transmute(simd_select_bitmask(k, r, f64x8::ZERO))
8426    }
8427}
8428
8429/// Divide packed single-precision (32-bit) floating-point elements in a by packed elements in b, and store the results in dst.\
8430///
8431/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8432/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8433/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8434/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8435/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8436/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8437///
8438/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_div_round_ps&expand=2168)
8439#[inline]
8440#[target_feature(enable = "avx512f")]
8441#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8442#[cfg_attr(test, assert_instr(vdivps, ROUNDING = 8))]
8443#[rustc_legacy_const_generics(2)]
8444pub fn _mm512_div_round_ps<const ROUNDING: i32>(a: __m512, b: __m512) -> __m512 {
8445    unsafe {
8446        static_assert_rounding!(ROUNDING);
8447        let a = a.as_f32x16();
8448        let b = b.as_f32x16();
8449        let r = vdivps(a, b, ROUNDING);
8450        transmute(r)
8451    }
8452}
8453
8454/// Divide packed single-precision (32-bit) floating-point elements in a by packed elements in b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
8455///
8456/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8457/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8458/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8459/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8460/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8461/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8462///
8463/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_div_round_ps&expand=2169)
8464#[inline]
8465#[target_feature(enable = "avx512f")]
8466#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8467#[cfg_attr(test, assert_instr(vdivps, ROUNDING = 8))]
8468#[rustc_legacy_const_generics(4)]
8469pub fn _mm512_mask_div_round_ps<const ROUNDING: i32>(
8470    src: __m512,
8471    k: __mmask16,
8472    a: __m512,
8473    b: __m512,
8474) -> __m512 {
8475    unsafe {
8476        static_assert_rounding!(ROUNDING);
8477        let a = a.as_f32x16();
8478        let b = b.as_f32x16();
8479        let r = vdivps(a, b, ROUNDING);
8480        transmute(simd_select_bitmask(k, r, src.as_f32x16()))
8481    }
8482}
8483
8484/// Divide packed single-precision (32-bit) floating-point elements in a by packed elements in b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
8485///
8486/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8487/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8488/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8489/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8490/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8491/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8492///
8493/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_div_round_ps&expand=2170)
8494#[inline]
8495#[target_feature(enable = "avx512f")]
8496#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8497#[cfg_attr(test, assert_instr(vdivps, ROUNDING = 8))]
8498#[rustc_legacy_const_generics(3)]
8499pub fn _mm512_maskz_div_round_ps<const ROUNDING: i32>(
8500    k: __mmask16,
8501    a: __m512,
8502    b: __m512,
8503) -> __m512 {
8504    unsafe {
8505        static_assert_rounding!(ROUNDING);
8506        let a = a.as_f32x16();
8507        let b = b.as_f32x16();
8508        let r = vdivps(a, b, ROUNDING);
8509        transmute(simd_select_bitmask(k, r, f32x16::ZERO))
8510    }
8511}
8512
8513/// Divide packed double-precision (64-bit) floating-point elements in a by packed elements in b, =and store the results in dst.\
8514///
8515/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8516/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8517/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8518/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8519/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8520/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8521///
8522/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_div_round_pd&expand=2165)
8523#[inline]
8524#[target_feature(enable = "avx512f")]
8525#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8526#[cfg_attr(test, assert_instr(vdivpd, ROUNDING = 8))]
8527#[rustc_legacy_const_generics(2)]
8528pub fn _mm512_div_round_pd<const ROUNDING: i32>(a: __m512d, b: __m512d) -> __m512d {
8529    unsafe {
8530        static_assert_rounding!(ROUNDING);
8531        let a = a.as_f64x8();
8532        let b = b.as_f64x8();
8533        let r = vdivpd(a, b, ROUNDING);
8534        transmute(r)
8535    }
8536}
8537
8538/// Divide packed double-precision (64-bit) floating-point elements in a by packed elements in b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
8539///
8540/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8541/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8542/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8543/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8544/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8545/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8546///
8547/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_div_round_pd&expand=2166)
8548#[inline]
8549#[target_feature(enable = "avx512f")]
8550#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8551#[cfg_attr(test, assert_instr(vdivpd, ROUNDING = 8))]
8552#[rustc_legacy_const_generics(4)]
8553pub fn _mm512_mask_div_round_pd<const ROUNDING: i32>(
8554    src: __m512d,
8555    k: __mmask8,
8556    a: __m512d,
8557    b: __m512d,
8558) -> __m512d {
8559    unsafe {
8560        static_assert_rounding!(ROUNDING);
8561        let a = a.as_f64x8();
8562        let b = b.as_f64x8();
8563        let r = vdivpd(a, b, ROUNDING);
8564        transmute(simd_select_bitmask(k, r, src.as_f64x8()))
8565    }
8566}
8567
8568/// Divide packed double-precision (64-bit) floating-point elements in a by packed elements in b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
8569///
8570/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8571/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8572/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8573/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8574/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8575/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8576///
8577/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_div_round_pd&expand=2167)
8578#[inline]
8579#[target_feature(enable = "avx512f")]
8580#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8581#[cfg_attr(test, assert_instr(vdivpd, ROUNDING = 8))]
8582#[rustc_legacy_const_generics(3)]
8583pub fn _mm512_maskz_div_round_pd<const ROUNDING: i32>(
8584    k: __mmask8,
8585    a: __m512d,
8586    b: __m512d,
8587) -> __m512d {
8588    unsafe {
8589        static_assert_rounding!(ROUNDING);
8590        let a = a.as_f64x8();
8591        let b = b.as_f64x8();
8592        let r = vdivpd(a, b, ROUNDING);
8593        transmute(simd_select_bitmask(k, r, f64x8::ZERO))
8594    }
8595}
8596
8597/// Compute the square root of packed single-precision (32-bit) floating-point elements in a, and store the results in dst.\
8598///
8599/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8600/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8601/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8602/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8603/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8604/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8605///
8606/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_sqrt_round_ps&expand=5377)
8607#[inline]
8608#[target_feature(enable = "avx512f")]
8609#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8610#[cfg_attr(test, assert_instr(vsqrtps, ROUNDING = 8))]
8611#[rustc_legacy_const_generics(1)]
8612pub fn _mm512_sqrt_round_ps<const ROUNDING: i32>(a: __m512) -> __m512 {
8613    unsafe {
8614        static_assert_rounding!(ROUNDING);
8615        let a = a.as_f32x16();
8616        let r = vsqrtps(a, ROUNDING);
8617        transmute(r)
8618    }
8619}
8620
8621/// Compute the square root of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
8622///
8623/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8624/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8625/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8626/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8627/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8628/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8629///
8630/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_sqrt_round_ps&expand=5375)
8631#[inline]
8632#[target_feature(enable = "avx512f")]
8633#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8634#[cfg_attr(test, assert_instr(vsqrtps, ROUNDING = 8))]
8635#[rustc_legacy_const_generics(3)]
8636pub fn _mm512_mask_sqrt_round_ps<const ROUNDING: i32>(
8637    src: __m512,
8638    k: __mmask16,
8639    a: __m512,
8640) -> __m512 {
8641    unsafe {
8642        static_assert_rounding!(ROUNDING);
8643        let a = a.as_f32x16();
8644        let r = vsqrtps(a, ROUNDING);
8645        transmute(simd_select_bitmask(k, r, src.as_f32x16()))
8646    }
8647}
8648
8649/// Compute the square root of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
8650///
8651/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8652/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8653/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8654/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8655/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8656/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8657///
8658/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_sqrt_round_ps&expand=5376)
8659#[inline]
8660#[target_feature(enable = "avx512f")]
8661#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8662#[cfg_attr(test, assert_instr(vsqrtps, ROUNDING = 8))]
8663#[rustc_legacy_const_generics(2)]
8664pub fn _mm512_maskz_sqrt_round_ps<const ROUNDING: i32>(k: __mmask16, a: __m512) -> __m512 {
8665    unsafe {
8666        static_assert_rounding!(ROUNDING);
8667        let a = a.as_f32x16();
8668        let r = vsqrtps(a, ROUNDING);
8669        transmute(simd_select_bitmask(k, r, f32x16::ZERO))
8670    }
8671}
8672
8673/// Compute the square root of packed double-precision (64-bit) floating-point elements in a, and store the results in dst.\
8674///
8675/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8676/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8677/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8678/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8679/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8680/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8681///
8682/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_sqrt_round_pd&expand=5374)
8683#[inline]
8684#[target_feature(enable = "avx512f")]
8685#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8686#[cfg_attr(test, assert_instr(vsqrtpd, ROUNDING = 8))]
8687#[rustc_legacy_const_generics(1)]
8688pub fn _mm512_sqrt_round_pd<const ROUNDING: i32>(a: __m512d) -> __m512d {
8689    unsafe {
8690        static_assert_rounding!(ROUNDING);
8691        let a = a.as_f64x8();
8692        let r = vsqrtpd(a, ROUNDING);
8693        transmute(r)
8694    }
8695}
8696
8697/// Compute the square root of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
8698///
8699/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8700/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8701/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8702/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8703/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8704/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8705///
8706/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_sqrt_round_pd&expand=5372)
8707#[inline]
8708#[target_feature(enable = "avx512f")]
8709#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8710#[cfg_attr(test, assert_instr(vsqrtpd, ROUNDING = 8))]
8711#[rustc_legacy_const_generics(3)]
8712pub fn _mm512_mask_sqrt_round_pd<const ROUNDING: i32>(
8713    src: __m512d,
8714    k: __mmask8,
8715    a: __m512d,
8716) -> __m512d {
8717    unsafe {
8718        static_assert_rounding!(ROUNDING);
8719        let a = a.as_f64x8();
8720        let r = vsqrtpd(a, ROUNDING);
8721        transmute(simd_select_bitmask(k, r, src.as_f64x8()))
8722    }
8723}
8724
8725/// Compute the square root of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
8726///
8727/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8728/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8729/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8730/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8731/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8732/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8733///
8734/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_sqrt_round_pd&expand=5373)
8735#[inline]
8736#[target_feature(enable = "avx512f")]
8737#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8738#[cfg_attr(test, assert_instr(vsqrtpd, ROUNDING = 8))]
8739#[rustc_legacy_const_generics(2)]
8740pub fn _mm512_maskz_sqrt_round_pd<const ROUNDING: i32>(k: __mmask8, a: __m512d) -> __m512d {
8741    unsafe {
8742        static_assert_rounding!(ROUNDING);
8743        let a = a.as_f64x8();
8744        let r = vsqrtpd(a, ROUNDING);
8745        transmute(simd_select_bitmask(k, r, f64x8::ZERO))
8746    }
8747}
8748
8749/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst.\
8750///
8751/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8752/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8753/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8754/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8755/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8756/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8757///
8758/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fmadd_round_ps&expand=2565)
8759#[inline]
8760#[target_feature(enable = "avx512f")]
8761#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8762#[cfg_attr(test, assert_instr(vfmadd, ROUNDING = 8))] //vfmadd132ps or vfmadd213ps or vfmadd231ps
8763#[rustc_legacy_const_generics(3)]
8764pub fn _mm512_fmadd_round_ps<const ROUNDING: i32>(a: __m512, b: __m512, c: __m512) -> __m512 {
8765    unsafe {
8766        static_assert_rounding!(ROUNDING);
8767        vfmadd132psround(a, b, c, ROUNDING)
8768    }
8769}
8770
8771/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).\
8772///
8773/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8774/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8775/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8776/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8777/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8778/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8779///
8780/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fmadd_round_ps&expand=2566)
8781#[inline]
8782#[target_feature(enable = "avx512f")]
8783#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8784#[cfg_attr(test, assert_instr(vfmadd, ROUNDING = 8))] //vfmadd132ps or vfmadd213ps or vfmadd231ps
8785#[rustc_legacy_const_generics(4)]
8786pub fn _mm512_mask_fmadd_round_ps<const ROUNDING: i32>(
8787    a: __m512,
8788    k: __mmask16,
8789    b: __m512,
8790    c: __m512,
8791) -> __m512 {
8792    unsafe {
8793        static_assert_rounding!(ROUNDING);
8794        simd_select_bitmask(k, vfmadd132psround(a, b, c, ROUNDING), a)
8795    }
8796}
8797
8798/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in a using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
8799///
8800/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8801/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8802/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8803/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8804/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8805/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8806///
8807/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fmadd_round_ps&expand=2568)
8808#[inline]
8809#[target_feature(enable = "avx512f")]
8810#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8811#[cfg_attr(test, assert_instr(vfmadd, ROUNDING = 8))] //vfmadd132ps or vfmadd213ps or vfmadd231ps
8812#[rustc_legacy_const_generics(4)]
8813pub fn _mm512_maskz_fmadd_round_ps<const ROUNDING: i32>(
8814    k: __mmask16,
8815    a: __m512,
8816    b: __m512,
8817    c: __m512,
8818) -> __m512 {
8819    unsafe {
8820        static_assert_rounding!(ROUNDING);
8821        simd_select_bitmask(k, vfmadd132psround(a, b, c, ROUNDING), _mm512_setzero_ps())
8822    }
8823}
8824
8825/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).\
8826///
8827/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8828/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8829/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8830/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8831/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8832/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8833///
8834/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fmadd_round_ps&expand=2567)
8835#[inline]
8836#[target_feature(enable = "avx512f")]
8837#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8838#[cfg_attr(test, assert_instr(vfmadd, ROUNDING = 8))] //vfmadd132ps or vfmadd213ps or vfmadd231ps
8839#[rustc_legacy_const_generics(4)]
8840pub fn _mm512_mask3_fmadd_round_ps<const ROUNDING: i32>(
8841    a: __m512,
8842    b: __m512,
8843    c: __m512,
8844    k: __mmask16,
8845) -> __m512 {
8846    unsafe {
8847        static_assert_rounding!(ROUNDING);
8848        simd_select_bitmask(k, vfmadd132psround(a, b, c, ROUNDING), c)
8849    }
8850}
8851
8852/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst.\
8853///
8854/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8855/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8856/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8857/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8858/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8859/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8860///
8861/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fmadd_round_pd&expand=2561)
8862#[inline]
8863#[target_feature(enable = "avx512f")]
8864#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8865#[cfg_attr(test, assert_instr(vfmadd, ROUNDING = 8))] //vfmadd132pd or vfmadd213pd or vfmadd231pd
8866#[rustc_legacy_const_generics(3)]
8867pub fn _mm512_fmadd_round_pd<const ROUNDING: i32>(a: __m512d, b: __m512d, c: __m512d) -> __m512d {
8868    unsafe {
8869        static_assert_rounding!(ROUNDING);
8870        vfmadd132pdround(a, b, c, ROUNDING)
8871    }
8872}
8873
8874/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).\
8875///
8876/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8877/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8878/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8879/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8880/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8881/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8882///
8883/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fmadd_round_pd&expand=2562)
8884#[inline]
8885#[target_feature(enable = "avx512f")]
8886#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8887#[cfg_attr(test, assert_instr(vfmadd, ROUNDING = 8))] //vfmadd132pd or vfmadd213pd or vfmadd231pd
8888#[rustc_legacy_const_generics(4)]
8889pub fn _mm512_mask_fmadd_round_pd<const ROUNDING: i32>(
8890    a: __m512d,
8891    k: __mmask8,
8892    b: __m512d,
8893    c: __m512d,
8894) -> __m512d {
8895    unsafe {
8896        static_assert_rounding!(ROUNDING);
8897        simd_select_bitmask(k, vfmadd132pdround(a, b, c, ROUNDING), a)
8898    }
8899}
8900
8901/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
8902///
8903/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8904/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8905/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8906/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8907/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8908/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8909///
8910/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fmadd_round_pd&expand=2564)
8911#[inline]
8912#[target_feature(enable = "avx512f")]
8913#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8914#[cfg_attr(test, assert_instr(vfmadd, ROUNDING = 8))] //vfmadd132pd or vfmadd213pd or vfmadd231pd
8915#[rustc_legacy_const_generics(4)]
8916pub fn _mm512_maskz_fmadd_round_pd<const ROUNDING: i32>(
8917    k: __mmask8,
8918    a: __m512d,
8919    b: __m512d,
8920    c: __m512d,
8921) -> __m512d {
8922    unsafe {
8923        static_assert_rounding!(ROUNDING);
8924        simd_select_bitmask(k, vfmadd132pdround(a, b, c, ROUNDING), _mm512_setzero_pd())
8925    }
8926}
8927
8928/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).\
8929///
8930/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8931/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8932/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8933/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8934/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8935/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8936///
8937/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fmadd_round_pd&expand=2563)
8938#[inline]
8939#[target_feature(enable = "avx512f")]
8940#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8941#[cfg_attr(test, assert_instr(vfmadd, ROUNDING = 8))] //vfmadd132pd or vfmadd213pd or vfmadd231pd
8942#[rustc_legacy_const_generics(4)]
8943pub fn _mm512_mask3_fmadd_round_pd<const ROUNDING: i32>(
8944    a: __m512d,
8945    b: __m512d,
8946    c: __m512d,
8947    k: __mmask8,
8948) -> __m512d {
8949    unsafe {
8950        static_assert_rounding!(ROUNDING);
8951        simd_select_bitmask(k, vfmadd132pdround(a, b, c, ROUNDING), c)
8952    }
8953}
8954
8955/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst.\
8956///
8957/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8958/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8959/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8960/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8961/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8962/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8963///
8964/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fmsub_round_ps&expand=2651)
8965#[inline]
8966#[target_feature(enable = "avx512f")]
8967#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8968#[cfg_attr(test, assert_instr(vfmsub, ROUNDING = 8))] //vfmsub132ps or vfmsub213ps or vfmsub231ps, clang generates vfmadd, gcc generates vfmsub
8969#[rustc_legacy_const_generics(3)]
8970pub fn _mm512_fmsub_round_ps<const ROUNDING: i32>(a: __m512, b: __m512, c: __m512) -> __m512 {
8971    unsafe {
8972        static_assert_rounding!(ROUNDING);
8973        vfmadd132psround(a, b, simd_neg(c), ROUNDING)
8974    }
8975}
8976
8977/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).\
8978///
8979/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
8980/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
8981/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
8982/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
8983/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
8984/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
8985///
8986/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fmsub_round_ps&expand=2652)
8987#[inline]
8988#[target_feature(enable = "avx512f")]
8989#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
8990#[cfg_attr(test, assert_instr(vfmsub, ROUNDING = 8))] //vfmsub132ps or vfmsub213ps or vfmsub231ps, clang generates vfmadd, gcc generates vfmsub
8991#[rustc_legacy_const_generics(4)]
8992pub fn _mm512_mask_fmsub_round_ps<const ROUNDING: i32>(
8993    a: __m512,
8994    k: __mmask16,
8995    b: __m512,
8996    c: __m512,
8997) -> __m512 {
8998    unsafe {
8999        static_assert_rounding!(ROUNDING);
9000        let r = vfmadd132psround(a, b, simd_neg(c), ROUNDING);
9001        simd_select_bitmask(k, r, a)
9002    }
9003}
9004
9005/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
9006///
9007/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9008/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9009/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9010/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9011/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9012/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9013///
9014/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fmsub_round_ps&expand=2654)
9015#[inline]
9016#[target_feature(enable = "avx512f")]
9017#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9018#[cfg_attr(test, assert_instr(vfmsub, ROUNDING = 8))] //vfmsub132ps or vfmsub213ps or vfmsub231ps, clang generates vfmadd, gcc generates vfmsub
9019#[rustc_legacy_const_generics(4)]
9020pub fn _mm512_maskz_fmsub_round_ps<const ROUNDING: i32>(
9021    k: __mmask16,
9022    a: __m512,
9023    b: __m512,
9024    c: __m512,
9025) -> __m512 {
9026    unsafe {
9027        static_assert_rounding!(ROUNDING);
9028        let r = vfmadd132psround(a, b, simd_neg(c), ROUNDING);
9029        simd_select_bitmask(k, r, _mm512_setzero_ps())
9030    }
9031}
9032
9033/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).\
9034///
9035/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9036/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9037/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9038/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9039/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9040/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9041///
9042/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fmsub_round_ps&expand=2653)
9043#[inline]
9044#[target_feature(enable = "avx512f")]
9045#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9046#[cfg_attr(test, assert_instr(vfmsub, ROUNDING = 8))] //vfmsub132ps or vfmsub213ps or vfmsub231ps, clang generates vfmadd, gcc generates vfmsub
9047#[rustc_legacy_const_generics(4)]
9048pub fn _mm512_mask3_fmsub_round_ps<const ROUNDING: i32>(
9049    a: __m512,
9050    b: __m512,
9051    c: __m512,
9052    k: __mmask16,
9053) -> __m512 {
9054    unsafe {
9055        static_assert_rounding!(ROUNDING);
9056        let r = vfmadd132psround(a, b, simd_neg(c), ROUNDING);
9057        simd_select_bitmask(k, r, c)
9058    }
9059}
9060
9061/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst.\
9062///
9063/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9064/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9065/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9066/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9067/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9068/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9069///
9070/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fmsub_round_pd&expand=2647)
9071#[inline]
9072#[target_feature(enable = "avx512f")]
9073#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9074#[cfg_attr(test, assert_instr(vfmsub, ROUNDING = 8))] //vfmsub132pd or vfmsub213pd or vfmsub231pd. clang generates fmadd, gcc generates fmsub
9075#[rustc_legacy_const_generics(3)]
9076pub fn _mm512_fmsub_round_pd<const ROUNDING: i32>(a: __m512d, b: __m512d, c: __m512d) -> __m512d {
9077    unsafe {
9078        static_assert_rounding!(ROUNDING);
9079        vfmadd132pdround(a, b, simd_neg(c), ROUNDING)
9080    }
9081}
9082
9083/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).\
9084///
9085/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9086/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9087/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9088/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9089/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9090/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9091///
9092/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fmsub_round_pd&expand=2648)
9093#[inline]
9094#[target_feature(enable = "avx512f")]
9095#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9096#[cfg_attr(test, assert_instr(vfmsub, ROUNDING = 8))] //vfmsub132pd or vfmsub213pd or vfmsub231pd. clang generates fmadd, gcc generates fmsub
9097#[rustc_legacy_const_generics(4)]
9098pub fn _mm512_mask_fmsub_round_pd<const ROUNDING: i32>(
9099    a: __m512d,
9100    k: __mmask8,
9101    b: __m512d,
9102    c: __m512d,
9103) -> __m512d {
9104    unsafe {
9105        static_assert_rounding!(ROUNDING);
9106        let r = vfmadd132pdround(a, b, simd_neg(c), ROUNDING);
9107        simd_select_bitmask(k, r, a)
9108    }
9109}
9110
9111/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
9112///
9113/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9114/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9115/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9116/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9117/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9118/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9119///
9120/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fmsub_round_pd&expand=2650)
9121#[inline]
9122#[target_feature(enable = "avx512f")]
9123#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9124#[cfg_attr(test, assert_instr(vfmsub, ROUNDING = 8))] //vfmsub132pd or vfmsub213pd or vfmsub231pd. clang generates fmadd, gcc generates fmsub
9125#[rustc_legacy_const_generics(4)]
9126pub fn _mm512_maskz_fmsub_round_pd<const ROUNDING: i32>(
9127    k: __mmask8,
9128    a: __m512d,
9129    b: __m512d,
9130    c: __m512d,
9131) -> __m512d {
9132    unsafe {
9133        static_assert_rounding!(ROUNDING);
9134        let r = vfmadd132pdround(a, b, simd_neg(c), ROUNDING);
9135        simd_select_bitmask(k, r, _mm512_setzero_pd())
9136    }
9137}
9138
9139/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).\
9140///
9141/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9142/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9143/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9144/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9145/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9146/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9147///
9148/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fmsub_round_pd&expand=2649)
9149#[inline]
9150#[target_feature(enable = "avx512f")]
9151#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9152#[cfg_attr(test, assert_instr(vfmsub, ROUNDING = 8))] //vfmsub132pd or vfmsub213pd or vfmsub231pd. clang generates fmadd, gcc generates fmsub
9153#[rustc_legacy_const_generics(4)]
9154pub fn _mm512_mask3_fmsub_round_pd<const ROUNDING: i32>(
9155    a: __m512d,
9156    b: __m512d,
9157    c: __m512d,
9158    k: __mmask8,
9159) -> __m512d {
9160    unsafe {
9161        static_assert_rounding!(ROUNDING);
9162        let r = vfmadd132pdround(a, b, simd_neg(c), ROUNDING);
9163        simd_select_bitmask(k, r, c)
9164    }
9165}
9166
9167/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst.\
9168///
9169/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9170/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9171/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9172/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9173/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9174/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9175///
9176/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fmaddsub_round_ps&expand=2619)
9177#[inline]
9178#[target_feature(enable = "avx512f")]
9179#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9180#[cfg_attr(test, assert_instr(vfmaddsub, ROUNDING = 8))] //vfmaddsub132ps or vfmaddsub213ps or vfmaddsub231ps
9181#[rustc_legacy_const_generics(3)]
9182pub fn _mm512_fmaddsub_round_ps<const ROUNDING: i32>(a: __m512, b: __m512, c: __m512) -> __m512 {
9183    unsafe {
9184        static_assert_rounding!(ROUNDING);
9185        vfmaddsubpsround(a, b, c, ROUNDING)
9186    }
9187}
9188
9189/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).\
9190///
9191/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9192/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9193/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9194/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9195/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9196/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9197///
9198/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fmaddsub_round_ps&expand=2620)
9199#[inline]
9200#[target_feature(enable = "avx512f")]
9201#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9202#[cfg_attr(test, assert_instr(vfmaddsub, ROUNDING = 8))] //vfmaddsub132ps or vfmaddsub213ps or vfmaddsub231ps
9203#[rustc_legacy_const_generics(4)]
9204pub fn _mm512_mask_fmaddsub_round_ps<const ROUNDING: i32>(
9205    a: __m512,
9206    k: __mmask16,
9207    b: __m512,
9208    c: __m512,
9209) -> __m512 {
9210    unsafe {
9211        static_assert_rounding!(ROUNDING);
9212        simd_select_bitmask(k, vfmaddsubpsround(a, b, c, ROUNDING), a)
9213    }
9214}
9215
9216/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
9217///
9218/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9219/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9220/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9221/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9222/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9223/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9224///
9225/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fmaddsub_round_ps&expand=2622)
9226#[inline]
9227#[target_feature(enable = "avx512f")]
9228#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9229#[cfg_attr(test, assert_instr(vfmaddsub, ROUNDING = 8))] //vfmaddsub132ps or vfmaddsub213ps or vfmaddsub231ps
9230#[rustc_legacy_const_generics(4)]
9231pub fn _mm512_maskz_fmaddsub_round_ps<const ROUNDING: i32>(
9232    k: __mmask16,
9233    a: __m512,
9234    b: __m512,
9235    c: __m512,
9236) -> __m512 {
9237    unsafe {
9238        static_assert_rounding!(ROUNDING);
9239        simd_select_bitmask(k, vfmaddsubpsround(a, b, c, ROUNDING), _mm512_setzero_ps())
9240    }
9241}
9242
9243/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).\
9244///
9245/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9246/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9247/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9248/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9249/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9250/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9251///
9252/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fmaddsub_round_ps&expand=2621)
9253#[inline]
9254#[target_feature(enable = "avx512f")]
9255#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9256#[cfg_attr(test, assert_instr(vfmaddsub, ROUNDING = 8))] //vfmaddsub132ps or vfmaddsub213ps or vfmaddsub231ps
9257#[rustc_legacy_const_generics(4)]
9258pub fn _mm512_mask3_fmaddsub_round_ps<const ROUNDING: i32>(
9259    a: __m512,
9260    b: __m512,
9261    c: __m512,
9262    k: __mmask16,
9263) -> __m512 {
9264    unsafe {
9265        static_assert_rounding!(ROUNDING);
9266        simd_select_bitmask(k, vfmaddsubpsround(a, b, c, ROUNDING), c)
9267    }
9268}
9269
9270/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst.\
9271///
9272/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9273/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9274/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9275/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9276/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9277/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9278///
9279/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fmaddsub_round_pd&expand=2615)
9280#[inline]
9281#[target_feature(enable = "avx512f")]
9282#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9283#[cfg_attr(test, assert_instr(vfmaddsub, ROUNDING = 8))] //vfmaddsub132pd or vfmaddsub213pd or vfmaddsub231pd
9284#[rustc_legacy_const_generics(3)]
9285pub fn _mm512_fmaddsub_round_pd<const ROUNDING: i32>(
9286    a: __m512d,
9287    b: __m512d,
9288    c: __m512d,
9289) -> __m512d {
9290    unsafe {
9291        static_assert_rounding!(ROUNDING);
9292        vfmaddsubpdround(a, b, c, ROUNDING)
9293    }
9294}
9295
9296/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).\
9297///
9298/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9299/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9300/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9301/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9302/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9303/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9304///
9305/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fmaddsub_round_pd&expand=2616)
9306#[inline]
9307#[target_feature(enable = "avx512f")]
9308#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9309#[cfg_attr(test, assert_instr(vfmaddsub, ROUNDING = 8))] //vfmaddsub132pd or vfmaddsub213pd or vfmaddsub231pd
9310#[rustc_legacy_const_generics(4)]
9311pub fn _mm512_mask_fmaddsub_round_pd<const ROUNDING: i32>(
9312    a: __m512d,
9313    k: __mmask8,
9314    b: __m512d,
9315    c: __m512d,
9316) -> __m512d {
9317    unsafe {
9318        static_assert_rounding!(ROUNDING);
9319        simd_select_bitmask(k, vfmaddsubpdround(a, b, c, ROUNDING), a)
9320    }
9321}
9322
9323/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
9324///
9325/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9326/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9327/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9328/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9329/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9330/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9331///
9332/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fmaddsub_round_pd&expand=2618)
9333#[inline]
9334#[target_feature(enable = "avx512f")]
9335#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9336#[cfg_attr(test, assert_instr(vfmaddsub, ROUNDING = 8))] //vfmaddsub132pd or vfmaddsub213pd or vfmaddsub231pd
9337#[rustc_legacy_const_generics(4)]
9338pub fn _mm512_maskz_fmaddsub_round_pd<const ROUNDING: i32>(
9339    k: __mmask8,
9340    a: __m512d,
9341    b: __m512d,
9342    c: __m512d,
9343) -> __m512d {
9344    unsafe {
9345        static_assert_rounding!(ROUNDING);
9346        simd_select_bitmask(k, vfmaddsubpdround(a, b, c, ROUNDING), _mm512_setzero_pd())
9347    }
9348}
9349
9350/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).\
9351///
9352/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9353/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9354/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9355/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9356/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9357/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9358///
9359/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fmaddsub_round_pd&expand=2617)
9360#[inline]
9361#[target_feature(enable = "avx512f")]
9362#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9363#[cfg_attr(test, assert_instr(vfmaddsub, ROUNDING = 8))] //vfmaddsub132pd or vfmaddsub213pd or vfmaddsub231pd
9364#[rustc_legacy_const_generics(4)]
9365pub fn _mm512_mask3_fmaddsub_round_pd<const ROUNDING: i32>(
9366    a: __m512d,
9367    b: __m512d,
9368    c: __m512d,
9369    k: __mmask8,
9370) -> __m512d {
9371    unsafe {
9372        static_assert_rounding!(ROUNDING);
9373        simd_select_bitmask(k, vfmaddsubpdround(a, b, c, ROUNDING), c)
9374    }
9375}
9376
9377/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst.\
9378///
9379/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9380/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9381/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9382/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9383/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9384/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9385///
9386/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fmsubadd_round_ps&expand=2699)
9387#[inline]
9388#[target_feature(enable = "avx512f")]
9389#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9390#[cfg_attr(test, assert_instr(vfmsubadd, ROUNDING = 8))] //vfmsubadd132ps or vfmsubadd213ps or vfmsubadd231ps
9391#[rustc_legacy_const_generics(3)]
9392pub fn _mm512_fmsubadd_round_ps<const ROUNDING: i32>(a: __m512, b: __m512, c: __m512) -> __m512 {
9393    unsafe {
9394        static_assert_rounding!(ROUNDING);
9395        vfmaddsubpsround(a, b, simd_neg(c), ROUNDING)
9396    }
9397}
9398
9399/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).\
9400///
9401/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9402/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9403/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9404/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9405/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9406/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9407///
9408/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fmsubadd_round_ps&expand=2700)
9409#[inline]
9410#[target_feature(enable = "avx512f")]
9411#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9412#[cfg_attr(test, assert_instr(vfmsubadd, ROUNDING = 8))] //vfmsubadd132ps or vfmsubadd213ps or vfmsubadd231ps
9413#[rustc_legacy_const_generics(4)]
9414pub fn _mm512_mask_fmsubadd_round_ps<const ROUNDING: i32>(
9415    a: __m512,
9416    k: __mmask16,
9417    b: __m512,
9418    c: __m512,
9419) -> __m512 {
9420    unsafe {
9421        static_assert_rounding!(ROUNDING);
9422        let r = vfmaddsubpsround(a, b, simd_neg(c), ROUNDING);
9423        simd_select_bitmask(k, r, a)
9424    }
9425}
9426
9427/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
9428///
9429/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9430/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9431/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9432/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9433/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9434/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9435///
9436/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fmsubadd_round_ps&expand=2702)
9437#[inline]
9438#[target_feature(enable = "avx512f")]
9439#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9440#[cfg_attr(test, assert_instr(vfmsubadd, ROUNDING = 8))] //vfmsubadd132ps or vfmsubadd213ps or vfmsubadd231ps
9441#[rustc_legacy_const_generics(4)]
9442pub fn _mm512_maskz_fmsubadd_round_ps<const ROUNDING: i32>(
9443    k: __mmask16,
9444    a: __m512,
9445    b: __m512,
9446    c: __m512,
9447) -> __m512 {
9448    unsafe {
9449        static_assert_rounding!(ROUNDING);
9450        let r = vfmaddsubpsround(a, b, simd_neg(c), ROUNDING);
9451        simd_select_bitmask(k, r, _mm512_setzero_ps())
9452    }
9453}
9454
9455/// Multiply packed single-precision (32-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).\
9456///
9457/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9458/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9459/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9460/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9461/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9462/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9463///
9464/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fmsubadd_round_ps&expand=2701)
9465#[inline]
9466#[target_feature(enable = "avx512f")]
9467#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9468#[cfg_attr(test, assert_instr(vfmsubadd, ROUNDING = 8))] //vfmsubadd132ps or vfmsubadd213ps or vfmsubadd231ps
9469#[rustc_legacy_const_generics(4)]
9470pub fn _mm512_mask3_fmsubadd_round_ps<const ROUNDING: i32>(
9471    a: __m512,
9472    b: __m512,
9473    c: __m512,
9474    k: __mmask16,
9475) -> __m512 {
9476    unsafe {
9477        static_assert_rounding!(ROUNDING);
9478        let r = vfmaddsubpsround(a, b, simd_neg(c), ROUNDING);
9479        simd_select_bitmask(k, r, c)
9480    }
9481}
9482
9483/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst.\
9484///
9485/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9486/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9487/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9488/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9489/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9490/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9491///
9492/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fmsubadd_round_pd&expand=2695)
9493#[inline]
9494#[target_feature(enable = "avx512f")]
9495#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9496#[cfg_attr(test, assert_instr(vfmsubadd, ROUNDING = 8))] //vfmsubadd132pd or vfmsubadd213pd or vfmsubadd231pd
9497#[rustc_legacy_const_generics(3)]
9498pub fn _mm512_fmsubadd_round_pd<const ROUNDING: i32>(
9499    a: __m512d,
9500    b: __m512d,
9501    c: __m512d,
9502) -> __m512d {
9503    unsafe {
9504        static_assert_rounding!(ROUNDING);
9505        vfmaddsubpdround(a, b, simd_neg(c), ROUNDING)
9506    }
9507}
9508
9509/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).\
9510///
9511/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9512/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9513/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9514/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9515/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9516/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9517///
9518/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fmsubadd_round_pd&expand=2696)
9519#[inline]
9520#[target_feature(enable = "avx512f")]
9521#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9522#[cfg_attr(test, assert_instr(vfmsubadd, ROUNDING = 8))] //vfmsubadd132pd or vfmsubadd213pd or vfmsubadd231pd
9523#[rustc_legacy_const_generics(4)]
9524pub fn _mm512_mask_fmsubadd_round_pd<const ROUNDING: i32>(
9525    a: __m512d,
9526    k: __mmask8,
9527    b: __m512d,
9528    c: __m512d,
9529) -> __m512d {
9530    unsafe {
9531        static_assert_rounding!(ROUNDING);
9532        let r = vfmaddsubpdround(a, b, simd_neg(c), ROUNDING);
9533        simd_select_bitmask(k, r, a)
9534    }
9535}
9536
9537/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively add and subtract packed elements in c to/from the intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
9538///
9539/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9540/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9541/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9542/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9543/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9544/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9545///
9546/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fmsubadd_round_pd&expand=2698)
9547#[inline]
9548#[target_feature(enable = "avx512f")]
9549#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9550#[cfg_attr(test, assert_instr(vfmsubadd, ROUNDING = 8))] //vfmsubadd132pd or vfmsubadd213pd or vfmsubadd231pd
9551#[rustc_legacy_const_generics(4)]
9552pub fn _mm512_maskz_fmsubadd_round_pd<const ROUNDING: i32>(
9553    k: __mmask8,
9554    a: __m512d,
9555    b: __m512d,
9556    c: __m512d,
9557) -> __m512d {
9558    unsafe {
9559        static_assert_rounding!(ROUNDING);
9560        let r = vfmaddsubpdround(a, b, simd_neg(c), ROUNDING);
9561        simd_select_bitmask(k, r, _mm512_setzero_pd())
9562    }
9563}
9564
9565/// Multiply packed double-precision (64-bit) floating-point elements in a and b, alternatively subtract and add packed elements in c from/to the intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).\
9566///
9567/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9568/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9569/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9570/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9571/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9572/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9573///
9574/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fmsubadd_round_pd&expand=2697)
9575#[inline]
9576#[target_feature(enable = "avx512f")]
9577#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9578#[cfg_attr(test, assert_instr(vfmsubadd, ROUNDING = 8))] //vfmsubadd132pd or vfmsubadd213pd or vfmsubadd231pd
9579#[rustc_legacy_const_generics(4)]
9580pub fn _mm512_mask3_fmsubadd_round_pd<const ROUNDING: i32>(
9581    a: __m512d,
9582    b: __m512d,
9583    c: __m512d,
9584    k: __mmask8,
9585) -> __m512d {
9586    unsafe {
9587        static_assert_rounding!(ROUNDING);
9588        let r = vfmaddsubpdround(a, b, simd_neg(c), ROUNDING);
9589        simd_select_bitmask(k, r, c)
9590    }
9591}
9592
9593/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst.\
9594///
9595/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9596/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9597/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9598/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9599/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9600/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9601///
9602/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fnmadd_round_ps&expand=2731)
9603#[inline]
9604#[target_feature(enable = "avx512f")]
9605#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9606#[cfg_attr(test, assert_instr(vfnmadd, ROUNDING = 8))] //vfnmadd132ps or vfnmadd213ps or vfnmadd231ps
9607#[rustc_legacy_const_generics(3)]
9608pub fn _mm512_fnmadd_round_ps<const ROUNDING: i32>(a: __m512, b: __m512, c: __m512) -> __m512 {
9609    unsafe {
9610        static_assert_rounding!(ROUNDING);
9611        vfmadd132psround(simd_neg(a), b, c, ROUNDING)
9612    }
9613}
9614
9615/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).\
9616///
9617/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9618/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9619/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9620/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9621/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9622/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9623///
9624/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fnmadd_round_ps&expand=2732)
9625#[inline]
9626#[target_feature(enable = "avx512f")]
9627#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9628#[cfg_attr(test, assert_instr(vfnmadd, ROUNDING = 8))] //vfnmadd132ps or vfnmadd213ps or vfnmadd231ps
9629#[rustc_legacy_const_generics(4)]
9630pub fn _mm512_mask_fnmadd_round_ps<const ROUNDING: i32>(
9631    a: __m512,
9632    k: __mmask16,
9633    b: __m512,
9634    c: __m512,
9635) -> __m512 {
9636    unsafe {
9637        static_assert_rounding!(ROUNDING);
9638        let r = vfmadd132psround(simd_neg(a), b, c, ROUNDING);
9639        simd_select_bitmask(k, r, a)
9640    }
9641}
9642
9643/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
9644///
9645/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9646/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9647/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9648/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9649/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9650/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9651///
9652/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fnmadd_round_ps&expand=2734)
9653#[inline]
9654#[target_feature(enable = "avx512f")]
9655#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9656#[cfg_attr(test, assert_instr(vfnmadd, ROUNDING = 8))] //vfnmadd132ps or vfnmadd213ps or vfnmadd231ps
9657#[rustc_legacy_const_generics(4)]
9658pub fn _mm512_maskz_fnmadd_round_ps<const ROUNDING: i32>(
9659    k: __mmask16,
9660    a: __m512,
9661    b: __m512,
9662    c: __m512,
9663) -> __m512 {
9664    unsafe {
9665        static_assert_rounding!(ROUNDING);
9666        let r = vfmadd132psround(simd_neg(a), b, c, ROUNDING);
9667        simd_select_bitmask(k, r, _mm512_setzero_ps())
9668    }
9669}
9670
9671/// Multiply packed single-precision (32-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).\
9672///
9673/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9674/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9675/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9676/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9677/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9678/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9679///
9680/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fnmadd_round_ps&expand=2733)
9681#[inline]
9682#[target_feature(enable = "avx512f")]
9683#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9684#[cfg_attr(test, assert_instr(vfnmadd, ROUNDING = 8))] //vfnmadd132ps or vfnmadd213ps or vfnmadd231ps
9685#[rustc_legacy_const_generics(4)]
9686pub fn _mm512_mask3_fnmadd_round_ps<const ROUNDING: i32>(
9687    a: __m512,
9688    b: __m512,
9689    c: __m512,
9690    k: __mmask16,
9691) -> __m512 {
9692    unsafe {
9693        static_assert_rounding!(ROUNDING);
9694        let r = vfmadd132psround(simd_neg(a), b, c, ROUNDING);
9695        simd_select_bitmask(k, r, c)
9696    }
9697}
9698
9699/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst.\
9700///
9701/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9702/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9703/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9704/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9705/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9706/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9707///
9708/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fnmadd_round_pd&expand=2711)
9709#[inline]
9710#[target_feature(enable = "avx512f")]
9711#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9712#[cfg_attr(test, assert_instr(vfnmadd, ROUNDING = 8))] //vfnmadd132pd or vfnmadd213pd or vfnmadd231pd
9713#[rustc_legacy_const_generics(3)]
9714pub fn _mm512_fnmadd_round_pd<const ROUNDING: i32>(a: __m512d, b: __m512d, c: __m512d) -> __m512d {
9715    unsafe {
9716        static_assert_rounding!(ROUNDING);
9717        vfmadd132pdround(simd_neg(a), b, c, ROUNDING)
9718    }
9719}
9720
9721/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).\
9722///
9723/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9724/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9725/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9726/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9727/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9728/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9729///
9730/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fnmadd_round_pd&expand=2728)
9731#[inline]
9732#[target_feature(enable = "avx512f")]
9733#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9734#[cfg_attr(test, assert_instr(vfnmadd, ROUNDING = 8))] //vfnmadd132pd or vfnmadd213pd or vfnmadd231pd
9735#[rustc_legacy_const_generics(4)]
9736pub fn _mm512_mask_fnmadd_round_pd<const ROUNDING: i32>(
9737    a: __m512d,
9738    k: __mmask8,
9739    b: __m512d,
9740    c: __m512d,
9741) -> __m512d {
9742    unsafe {
9743        static_assert_rounding!(ROUNDING);
9744        let r = vfmadd132pdround(simd_neg(a), b, c, ROUNDING);
9745        simd_select_bitmask(k, r, a)
9746    }
9747}
9748
9749/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
9750///
9751/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9752/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9753/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9754/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9755/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9756/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9757///
9758/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fnmadd_round_pd&expand=2730)
9759#[inline]
9760#[target_feature(enable = "avx512f")]
9761#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9762#[cfg_attr(test, assert_instr(vfnmadd, ROUNDING = 8))] //vfnmadd132pd or vfnmadd213pd or vfnmadd231pd
9763#[rustc_legacy_const_generics(4)]
9764pub fn _mm512_maskz_fnmadd_round_pd<const ROUNDING: i32>(
9765    k: __mmask8,
9766    a: __m512d,
9767    b: __m512d,
9768    c: __m512d,
9769) -> __m512d {
9770    unsafe {
9771        static_assert_rounding!(ROUNDING);
9772        let r = vfmadd132pdround(simd_neg(a), b, c, ROUNDING);
9773        simd_select_bitmask(k, r, _mm512_setzero_pd())
9774    }
9775}
9776
9777/// Multiply packed double-precision (64-bit) floating-point elements in a and b, add the negated intermediate result to packed elements in c, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).\
9778///
9779/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9780/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9781/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9782/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9783/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9784/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9785///
9786/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fnmadd_round_pd&expand=2729)
9787#[inline]
9788#[target_feature(enable = "avx512f")]
9789#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9790#[cfg_attr(test, assert_instr(vfnmadd, ROUNDING = 8))] //vfnmadd132pd or vfnmadd213pd or vfnmadd231pd
9791#[rustc_legacy_const_generics(4)]
9792pub fn _mm512_mask3_fnmadd_round_pd<const ROUNDING: i32>(
9793    a: __m512d,
9794    b: __m512d,
9795    c: __m512d,
9796    k: __mmask8,
9797) -> __m512d {
9798    unsafe {
9799        static_assert_rounding!(ROUNDING);
9800        let r = vfmadd132pdround(simd_neg(a), b, c, ROUNDING);
9801        simd_select_bitmask(k, r, c)
9802    }
9803}
9804
9805/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst.\
9806///
9807/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9808/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9809/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9810/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9811/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9812/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9813///
9814/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fnmsub_round_ps&expand=2779)
9815#[inline]
9816#[target_feature(enable = "avx512f")]
9817#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9818#[cfg_attr(test, assert_instr(vfnmsub, ROUNDING = 8))] //vfnmsub132ps or vfnmsub213ps or vfnmsub231ps
9819#[rustc_legacy_const_generics(3)]
9820pub fn _mm512_fnmsub_round_ps<const ROUNDING: i32>(a: __m512, b: __m512, c: __m512) -> __m512 {
9821    unsafe {
9822        static_assert_rounding!(ROUNDING);
9823        vfmadd132psround(simd_neg(a), b, simd_neg(c), ROUNDING)
9824    }
9825}
9826
9827/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).\
9828///
9829/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9830/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9831/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9832/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9833/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9834/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9835///
9836/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fnmsub_round_ps&expand=2780)
9837#[inline]
9838#[target_feature(enable = "avx512f")]
9839#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9840#[cfg_attr(test, assert_instr(vfnmsub, ROUNDING = 8))] //vfnmsub132ps or vfnmsub213ps or vfnmsub231ps
9841#[rustc_legacy_const_generics(4)]
9842pub fn _mm512_mask_fnmsub_round_ps<const ROUNDING: i32>(
9843    a: __m512,
9844    k: __mmask16,
9845    b: __m512,
9846    c: __m512,
9847) -> __m512 {
9848    unsafe {
9849        static_assert_rounding!(ROUNDING);
9850        let r = vfmadd132psround(simd_neg(a), b, simd_neg(c), ROUNDING);
9851        simd_select_bitmask(k, r, a)
9852    }
9853}
9854
9855/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
9856///
9857/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9858/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9859/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9860/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9861/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9862/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9863///
9864/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fnmsub_round_ps&expand=2782)
9865#[inline]
9866#[target_feature(enable = "avx512f")]
9867#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9868#[cfg_attr(test, assert_instr(vfnmsub, ROUNDING = 8))] //vfnmsub132ps or vfnmsub213ps or vfnmsub231ps
9869#[rustc_legacy_const_generics(4)]
9870pub fn _mm512_maskz_fnmsub_round_ps<const ROUNDING: i32>(
9871    k: __mmask16,
9872    a: __m512,
9873    b: __m512,
9874    c: __m512,
9875) -> __m512 {
9876    unsafe {
9877        static_assert_rounding!(ROUNDING);
9878        let r = vfmadd132psround(simd_neg(a), b, simd_neg(c), ROUNDING);
9879        simd_select_bitmask(k, r, _mm512_setzero_ps())
9880    }
9881}
9882
9883/// Multiply packed single-precision (32-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).\
9884///
9885/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9886/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9887/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9888/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9889/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9890/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9891///
9892/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fnmsub_round_ps&expand=2781)
9893#[inline]
9894#[target_feature(enable = "avx512f")]
9895#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9896#[cfg_attr(test, assert_instr(vfnmsub, ROUNDING = 8))] //vfnmsub132ps or vfnmsub213ps or vfnmsub231ps
9897#[rustc_legacy_const_generics(4)]
9898pub fn _mm512_mask3_fnmsub_round_ps<const ROUNDING: i32>(
9899    a: __m512,
9900    b: __m512,
9901    c: __m512,
9902    k: __mmask16,
9903) -> __m512 {
9904    unsafe {
9905        static_assert_rounding!(ROUNDING);
9906        let r = vfmadd132psround(simd_neg(a), b, simd_neg(c), ROUNDING);
9907        simd_select_bitmask(k, r, c)
9908    }
9909}
9910
9911/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst.\
9912///
9913/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9914/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9915/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9916/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9917/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9918/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9919///
9920/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fnmsub_round_pd&expand=2775)
9921#[inline]
9922#[target_feature(enable = "avx512f")]
9923#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9924#[cfg_attr(test, assert_instr(vfnmsub, ROUNDING = 8))] //vfnmsub132pd or vfnmsub213pd or vfnmsub231pd
9925#[rustc_legacy_const_generics(3)]
9926pub fn _mm512_fnmsub_round_pd<const ROUNDING: i32>(a: __m512d, b: __m512d, c: __m512d) -> __m512d {
9927    unsafe {
9928        static_assert_rounding!(ROUNDING);
9929        vfmadd132pdround(simd_neg(a), b, simd_neg(c), ROUNDING)
9930    }
9931}
9932
9933/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).\
9934///
9935/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9936/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9937/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9938/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9939/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9940/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9941///
9942/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fnmsub_round_pd&expand=2776)
9943#[inline]
9944#[target_feature(enable = "avx512f")]
9945#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9946#[cfg_attr(test, assert_instr(vfnmsub, ROUNDING = 8))] //vfnmsub132pd or vfnmsub213pd or vfnmsub231pd
9947#[rustc_legacy_const_generics(4)]
9948pub fn _mm512_mask_fnmsub_round_pd<const ROUNDING: i32>(
9949    a: __m512d,
9950    k: __mmask8,
9951    b: __m512d,
9952    c: __m512d,
9953) -> __m512d {
9954    unsafe {
9955        static_assert_rounding!(ROUNDING);
9956        let r = vfmadd132pdround(simd_neg(a), b, simd_neg(c), ROUNDING);
9957        simd_select_bitmask(k, r, a)
9958    }
9959}
9960
9961/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
9962///
9963/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9964/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9965/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9966/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9967/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9968/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9969///
9970/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fnmsub_round_pd&expand=2778)
9971#[inline]
9972#[target_feature(enable = "avx512f")]
9973#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
9974#[cfg_attr(test, assert_instr(vfnmsub, ROUNDING = 8))] //vfnmsub132pd or vfnmsub213pd or vfnmsub231pd
9975#[rustc_legacy_const_generics(4)]
9976pub fn _mm512_maskz_fnmsub_round_pd<const ROUNDING: i32>(
9977    k: __mmask8,
9978    a: __m512d,
9979    b: __m512d,
9980    c: __m512d,
9981) -> __m512d {
9982    unsafe {
9983        static_assert_rounding!(ROUNDING);
9984        let r = vfmadd132pdround(simd_neg(a), b, simd_neg(c), ROUNDING);
9985        simd_select_bitmask(k, r, _mm512_setzero_pd())
9986    }
9987}
9988
9989/// Multiply packed double-precision (64-bit) floating-point elements in a and b, subtract packed elements in c from the negated intermediate result, and store the results in dst using writemask k (elements are copied from c when the corresponding mask bit is not set).\
9990///
9991/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
9992/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
9993/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
9994/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
9995/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
9996/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
9997///
9998/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask3_fnmsub_round_pd&expand=2777)
9999#[inline]
10000#[target_feature(enable = "avx512f")]
10001#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10002#[cfg_attr(test, assert_instr(vfnmsub, ROUNDING = 8))] //vfnmsub132pd or vfnmsub213pd or vfnmsub231pd
10003#[rustc_legacy_const_generics(4)]
10004pub fn _mm512_mask3_fnmsub_round_pd<const ROUNDING: i32>(
10005    a: __m512d,
10006    b: __m512d,
10007    c: __m512d,
10008    k: __mmask8,
10009) -> __m512d {
10010    unsafe {
10011        static_assert_rounding!(ROUNDING);
10012        let r = vfmadd132pdround(simd_neg(a), b, simd_neg(c), ROUNDING);
10013        simd_select_bitmask(k, r, c)
10014    }
10015}
10016
10017/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed maximum values in dst.\
10018/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10019///
10020/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_max_round_ps&expand=3662)
10021#[inline]
10022#[target_feature(enable = "avx512f")]
10023#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10024#[cfg_attr(test, assert_instr(vmaxps, SAE = 8))]
10025#[rustc_legacy_const_generics(2)]
10026pub fn _mm512_max_round_ps<const SAE: i32>(a: __m512, b: __m512) -> __m512 {
10027    unsafe {
10028        static_assert_sae!(SAE);
10029        let a = a.as_f32x16();
10030        let b = b.as_f32x16();
10031        let r = vmaxps(a, b, SAE);
10032        transmute(r)
10033    }
10034}
10035
10036/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
10037/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10038///
10039/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_max_round_ps&expand=3660)
10040#[inline]
10041#[target_feature(enable = "avx512f")]
10042#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10043#[cfg_attr(test, assert_instr(vmaxps, SAE = 8))]
10044#[rustc_legacy_const_generics(4)]
10045pub fn _mm512_mask_max_round_ps<const SAE: i32>(
10046    src: __m512,
10047    k: __mmask16,
10048    a: __m512,
10049    b: __m512,
10050) -> __m512 {
10051    unsafe {
10052        static_assert_sae!(SAE);
10053        let a = a.as_f32x16();
10054        let b = b.as_f32x16();
10055        let r = vmaxps(a, b, SAE);
10056        transmute(simd_select_bitmask(k, r, src.as_f32x16()))
10057    }
10058}
10059
10060/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
10061/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10062///
10063/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_max_round_ps&expand=3661)
10064#[inline]
10065#[target_feature(enable = "avx512f")]
10066#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10067#[cfg_attr(test, assert_instr(vmaxps, SAE = 8))]
10068#[rustc_legacy_const_generics(3)]
10069pub fn _mm512_maskz_max_round_ps<const SAE: i32>(k: __mmask16, a: __m512, b: __m512) -> __m512 {
10070    unsafe {
10071        static_assert_sae!(SAE);
10072        let a = a.as_f32x16();
10073        let b = b.as_f32x16();
10074        let r = vmaxps(a, b, SAE);
10075        transmute(simd_select_bitmask(k, r, f32x16::ZERO))
10076    }
10077}
10078
10079/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed maximum values in dst.\
10080/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10081///
10082/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_max_round_pd&expand=3659)
10083#[inline]
10084#[target_feature(enable = "avx512f")]
10085#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10086#[cfg_attr(test, assert_instr(vmaxpd, SAE = 8))]
10087#[rustc_legacy_const_generics(2)]
10088pub fn _mm512_max_round_pd<const SAE: i32>(a: __m512d, b: __m512d) -> __m512d {
10089    unsafe {
10090        static_assert_sae!(SAE);
10091        let a = a.as_f64x8();
10092        let b = b.as_f64x8();
10093        let r = vmaxpd(a, b, SAE);
10094        transmute(r)
10095    }
10096}
10097
10098/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed maximum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
10099/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10100///
10101/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_max_round_pd&expand=3657)
10102#[inline]
10103#[target_feature(enable = "avx512f")]
10104#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10105#[cfg_attr(test, assert_instr(vmaxpd, SAE = 8))]
10106#[rustc_legacy_const_generics(4)]
10107pub fn _mm512_mask_max_round_pd<const SAE: i32>(
10108    src: __m512d,
10109    k: __mmask8,
10110    a: __m512d,
10111    b: __m512d,
10112) -> __m512d {
10113    unsafe {
10114        static_assert_sae!(SAE);
10115        let a = a.as_f64x8();
10116        let b = b.as_f64x8();
10117        let r = vmaxpd(a, b, SAE);
10118        transmute(simd_select_bitmask(k, r, src.as_f64x8()))
10119    }
10120}
10121
10122/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed maximum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
10123/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10124///
10125/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_max_round_pd&expand=3658)
10126#[inline]
10127#[target_feature(enable = "avx512f")]
10128#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10129#[cfg_attr(test, assert_instr(vmaxpd, SAE = 8))]
10130#[rustc_legacy_const_generics(3)]
10131pub fn _mm512_maskz_max_round_pd<const SAE: i32>(k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
10132    unsafe {
10133        static_assert_sae!(SAE);
10134        let a = a.as_f64x8();
10135        let b = b.as_f64x8();
10136        let r = vmaxpd(a, b, SAE);
10137        transmute(simd_select_bitmask(k, r, f64x8::ZERO))
10138    }
10139}
10140
10141/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed minimum values in dst.\
10142/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10143///
10144/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_min_round_ps&expand=3776)
10145#[inline]
10146#[target_feature(enable = "avx512f")]
10147#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10148#[cfg_attr(test, assert_instr(vminps, SAE = 8))]
10149#[rustc_legacy_const_generics(2)]
10150pub fn _mm512_min_round_ps<const SAE: i32>(a: __m512, b: __m512) -> __m512 {
10151    unsafe {
10152        static_assert_sae!(SAE);
10153        let a = a.as_f32x16();
10154        let b = b.as_f32x16();
10155        let r = vminps(a, b, SAE);
10156        transmute(r)
10157    }
10158}
10159
10160/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
10161/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10162///
10163/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_min_round_ps&expand=3774)
10164#[inline]
10165#[target_feature(enable = "avx512f")]
10166#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10167#[cfg_attr(test, assert_instr(vminps, SAE = 8))]
10168#[rustc_legacy_const_generics(4)]
10169pub fn _mm512_mask_min_round_ps<const SAE: i32>(
10170    src: __m512,
10171    k: __mmask16,
10172    a: __m512,
10173    b: __m512,
10174) -> __m512 {
10175    unsafe {
10176        static_assert_sae!(SAE);
10177        let a = a.as_f32x16();
10178        let b = b.as_f32x16();
10179        let r = vminps(a, b, SAE);
10180        transmute(simd_select_bitmask(k, r, src.as_f32x16()))
10181    }
10182}
10183
10184/// Compare packed single-precision (32-bit) floating-point elements in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
10185/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10186///
10187/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_min_round_ps&expand=3775)
10188#[inline]
10189#[target_feature(enable = "avx512f")]
10190#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10191#[cfg_attr(test, assert_instr(vminps, SAE = 8))]
10192#[rustc_legacy_const_generics(3)]
10193pub fn _mm512_maskz_min_round_ps<const SAE: i32>(k: __mmask16, a: __m512, b: __m512) -> __m512 {
10194    unsafe {
10195        static_assert_sae!(SAE);
10196        let a = a.as_f32x16();
10197        let b = b.as_f32x16();
10198        let r = vminps(a, b, SAE);
10199        transmute(simd_select_bitmask(k, r, f32x16::ZERO))
10200    }
10201}
10202
10203/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed minimum values in dst.\
10204/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10205///
10206/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_min_round_pd&expand=3773)
10207#[inline]
10208#[target_feature(enable = "avx512f")]
10209#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10210#[cfg_attr(test, assert_instr(vminpd, SAE = 8))]
10211#[rustc_legacy_const_generics(2)]
10212pub fn _mm512_min_round_pd<const SAE: i32>(a: __m512d, b: __m512d) -> __m512d {
10213    unsafe {
10214        static_assert_sae!(SAE);
10215        let a = a.as_f64x8();
10216        let b = b.as_f64x8();
10217        let r = vminpd(a, b, SAE);
10218        transmute(r)
10219    }
10220}
10221
10222/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed minimum values in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
10223/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10224///
10225/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_min_round_pd&expand=3771)
10226#[inline]
10227#[target_feature(enable = "avx512f")]
10228#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10229#[cfg_attr(test, assert_instr(vminpd, SAE = 8))]
10230#[rustc_legacy_const_generics(4)]
10231pub fn _mm512_mask_min_round_pd<const SAE: i32>(
10232    src: __m512d,
10233    k: __mmask8,
10234    a: __m512d,
10235    b: __m512d,
10236) -> __m512d {
10237    unsafe {
10238        static_assert_sae!(SAE);
10239        let a = a.as_f64x8();
10240        let b = b.as_f64x8();
10241        let r = vminpd(a, b, SAE);
10242        transmute(simd_select_bitmask(k, r, src.as_f64x8()))
10243    }
10244}
10245
10246/// Compare packed double-precision (64-bit) floating-point elements in a and b, and store packed minimum values in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
10247/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10248///
10249/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_min_round_pd&expand=3772)
10250#[inline]
10251#[target_feature(enable = "avx512f")]
10252#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10253#[cfg_attr(test, assert_instr(vminpd, SAE = 8))]
10254#[rustc_legacy_const_generics(3)]
10255pub fn _mm512_maskz_min_round_pd<const SAE: i32>(k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
10256    unsafe {
10257        static_assert_sae!(SAE);
10258        let a = a.as_f64x8();
10259        let b = b.as_f64x8();
10260        let r = vminpd(a, b, SAE);
10261        transmute(simd_select_bitmask(k, r, f64x8::ZERO))
10262    }
10263}
10264
10265/// Convert the exponent of each packed single-precision (32-bit) floating-point element in a to a single-precision (32-bit) floating-point number representing the integer exponent, and store the results in dst. This intrinsic essentially calculates floor(log2(x)) for each element.\
10266/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10267///
10268/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_getexp_round_ps&expand=2850)
10269#[inline]
10270#[target_feature(enable = "avx512f")]
10271#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10272#[cfg_attr(test, assert_instr(vgetexpps, SAE = 8))]
10273#[rustc_legacy_const_generics(1)]
10274pub fn _mm512_getexp_round_ps<const SAE: i32>(a: __m512) -> __m512 {
10275    unsafe {
10276        static_assert_sae!(SAE);
10277        let a = a.as_f32x16();
10278        let r = vgetexpps(a, f32x16::ZERO, 0b11111111_11111111, SAE);
10279        transmute(r)
10280    }
10281}
10282
10283/// Convert the exponent of each packed single-precision (32-bit) floating-point element in a to a single-precision (32-bit) floating-point number representing the integer exponent, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). This intrinsic essentially calculates floor(log2(x)) for each element.\
10284/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10285///
10286/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_getexp_round_ps&expand=2851)
10287#[inline]
10288#[target_feature(enable = "avx512f")]
10289#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10290#[cfg_attr(test, assert_instr(vgetexpps, SAE = 8))]
10291#[rustc_legacy_const_generics(3)]
10292pub fn _mm512_mask_getexp_round_ps<const SAE: i32>(src: __m512, k: __mmask16, a: __m512) -> __m512 {
10293    unsafe {
10294        static_assert_sae!(SAE);
10295        let a = a.as_f32x16();
10296        let src = src.as_f32x16();
10297        let r = vgetexpps(a, src, k, SAE);
10298        transmute(r)
10299    }
10300}
10301
10302/// Convert the exponent of each packed single-precision (32-bit) floating-point element in a to a single-precision (32-bit) floating-point number representing the integer exponent, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). This intrinsic essentially calculates floor(log2(x)) for each element.\
10303/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10304///
10305/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_getexp_round_ps&expand=2852)
10306#[inline]
10307#[target_feature(enable = "avx512f")]
10308#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10309#[cfg_attr(test, assert_instr(vgetexpps, SAE = 8))]
10310#[rustc_legacy_const_generics(2)]
10311pub fn _mm512_maskz_getexp_round_ps<const SAE: i32>(k: __mmask16, a: __m512) -> __m512 {
10312    unsafe {
10313        static_assert_sae!(SAE);
10314        let a = a.as_f32x16();
10315        let r = vgetexpps(a, f32x16::ZERO, k, SAE);
10316        transmute(r)
10317    }
10318}
10319
10320/// Convert the exponent of each packed double-precision (64-bit) floating-point element in a to a double-precision (64-bit) floating-point number representing the integer exponent, and store the results in dst. This intrinsic essentially calculates floor(log2(x)) for each element.\
10321/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10322///
10323/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_getexp_round_pd&expand=2847)
10324#[inline]
10325#[target_feature(enable = "avx512f")]
10326#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10327#[cfg_attr(test, assert_instr(vgetexppd, SAE = 8))]
10328#[rustc_legacy_const_generics(1)]
10329pub fn _mm512_getexp_round_pd<const SAE: i32>(a: __m512d) -> __m512d {
10330    unsafe {
10331        static_assert_sae!(SAE);
10332        let a = a.as_f64x8();
10333        let r = vgetexppd(a, f64x8::ZERO, 0b11111111, SAE);
10334        transmute(r)
10335    }
10336}
10337
10338/// Convert the exponent of each packed double-precision (64-bit) floating-point element in a to a double-precision (64-bit) floating-point number representing the integer exponent, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). This intrinsic essentially calculates floor(log2(x)) for each element.\
10339/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10340///
10341/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_getexp_round_pd&expand=2848)
10342#[inline]
10343#[target_feature(enable = "avx512f")]
10344#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10345#[cfg_attr(test, assert_instr(vgetexppd, SAE = 8))]
10346#[rustc_legacy_const_generics(3)]
10347pub fn _mm512_mask_getexp_round_pd<const SAE: i32>(
10348    src: __m512d,
10349    k: __mmask8,
10350    a: __m512d,
10351) -> __m512d {
10352    unsafe {
10353        static_assert_sae!(SAE);
10354        let a = a.as_f64x8();
10355        let src = src.as_f64x8();
10356        let r = vgetexppd(a, src, k, SAE);
10357        transmute(r)
10358    }
10359}
10360
10361/// Convert the exponent of each packed double-precision (64-bit) floating-point element in a to a double-precision (64-bit) floating-point number representing the integer exponent, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). This intrinsic essentially calculates floor(log2(x)) for each element.\
10362/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10363///
10364/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_getexp_round_pd&expand=2849)
10365#[inline]
10366#[target_feature(enable = "avx512f")]
10367#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10368#[cfg_attr(test, assert_instr(vgetexppd, SAE = 8))]
10369#[rustc_legacy_const_generics(2)]
10370pub fn _mm512_maskz_getexp_round_pd<const SAE: i32>(k: __mmask8, a: __m512d) -> __m512d {
10371    unsafe {
10372        static_assert_sae!(SAE);
10373        let a = a.as_f64x8();
10374        let r = vgetexppd(a, f64x8::ZERO, k, SAE);
10375        transmute(r)
10376    }
10377}
10378
10379/// Round packed single-precision (32-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst.\
10380/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
10381/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
10382/// * [`_MM_FROUND_TO_NEG_INF`] : round down
10383/// * [`_MM_FROUND_TO_POS_INF`] : round up
10384/// * [`_MM_FROUND_TO_ZERO`] : truncate
10385/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
10386///
10387/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10388/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_roundscale_round_ps&expand=4790)
10389#[inline]
10390#[target_feature(enable = "avx512f")]
10391#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10392#[cfg_attr(test, assert_instr(vrndscaleps, IMM8 = 0, SAE = 8))]
10393#[rustc_legacy_const_generics(1, 2)]
10394pub fn _mm512_roundscale_round_ps<const IMM8: i32, const SAE: i32>(a: __m512) -> __m512 {
10395    unsafe {
10396        static_assert_uimm_bits!(IMM8, 8);
10397        static_assert_mantissas_sae!(SAE);
10398        let a = a.as_f32x16();
10399        let r = vrndscaleps(a, IMM8, f32x16::ZERO, 0b11111111_11111111, SAE);
10400        transmute(r)
10401    }
10402}
10403
10404/// Round packed single-precision (32-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
10405/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
10406/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
10407/// * [`_MM_FROUND_TO_NEG_INF`] : round down
10408/// * [`_MM_FROUND_TO_POS_INF`] : round up
10409/// * [`_MM_FROUND_TO_ZERO`] : truncate
10410/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
10411///
10412/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10413/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_roundscale_round_ps&expand=4788)
10414#[inline]
10415#[target_feature(enable = "avx512f")]
10416#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10417#[cfg_attr(test, assert_instr(vrndscaleps, IMM8 = 0, SAE = 8))]
10418#[rustc_legacy_const_generics(3, 4)]
10419pub fn _mm512_mask_roundscale_round_ps<const IMM8: i32, const SAE: i32>(
10420    src: __m512,
10421    k: __mmask16,
10422    a: __m512,
10423) -> __m512 {
10424    unsafe {
10425        static_assert_uimm_bits!(IMM8, 8);
10426        static_assert_mantissas_sae!(SAE);
10427        let a = a.as_f32x16();
10428        let src = src.as_f32x16();
10429        let r = vrndscaleps(a, IMM8, src, k, SAE);
10430        transmute(r)
10431    }
10432}
10433
10434/// Round packed single-precision (32-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
10435/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
10436/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
10437/// * [`_MM_FROUND_TO_NEG_INF`] : round down
10438/// * [`_MM_FROUND_TO_POS_INF`] : round up
10439/// * [`_MM_FROUND_TO_ZERO`] : truncate
10440/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
10441///
10442/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10443/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_roundscale_round_ps&expand=4789)
10444#[inline]
10445#[target_feature(enable = "avx512f")]
10446#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10447#[cfg_attr(test, assert_instr(vrndscaleps, IMM8 = 0, SAE = 8))]
10448#[rustc_legacy_const_generics(2, 3)]
10449pub fn _mm512_maskz_roundscale_round_ps<const IMM8: i32, const SAE: i32>(
10450    k: __mmask16,
10451    a: __m512,
10452) -> __m512 {
10453    unsafe {
10454        static_assert_uimm_bits!(IMM8, 8);
10455        static_assert_mantissas_sae!(SAE);
10456        let a = a.as_f32x16();
10457        let r = vrndscaleps(a, IMM8, f32x16::ZERO, k, SAE);
10458        transmute(r)
10459    }
10460}
10461
10462/// Round packed double-precision (64-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst.\
10463/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
10464/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
10465/// * [`_MM_FROUND_TO_NEG_INF`] : round down
10466/// * [`_MM_FROUND_TO_POS_INF`] : round up
10467/// * [`_MM_FROUND_TO_ZERO`] : truncate
10468/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
10469///
10470/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10471/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_roundscale_round_pd&expand=4787)
10472#[inline]
10473#[target_feature(enable = "avx512f")]
10474#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10475#[cfg_attr(test, assert_instr(vrndscalepd, IMM8 = 0, SAE = 8))]
10476#[rustc_legacy_const_generics(1, 2)]
10477pub fn _mm512_roundscale_round_pd<const IMM8: i32, const SAE: i32>(a: __m512d) -> __m512d {
10478    unsafe {
10479        static_assert_uimm_bits!(IMM8, 8);
10480        static_assert_mantissas_sae!(SAE);
10481        let a = a.as_f64x8();
10482        let r = vrndscalepd(a, IMM8, f64x8::ZERO, 0b11111111, SAE);
10483        transmute(r)
10484    }
10485}
10486
10487/// Round packed double-precision (64-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
10488/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
10489/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
10490/// * [`_MM_FROUND_TO_NEG_INF`] : round down
10491/// * [`_MM_FROUND_TO_POS_INF`] : round up
10492/// * [`_MM_FROUND_TO_ZERO`] : truncate
10493/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
10494///
10495/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10496/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_roundscale_round_pd&expand=4785)
10497#[inline]
10498#[target_feature(enable = "avx512f")]
10499#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10500#[cfg_attr(test, assert_instr(vrndscalepd, IMM8 = 0, SAE = 8))]
10501#[rustc_legacy_const_generics(3, 4)]
10502pub fn _mm512_mask_roundscale_round_pd<const IMM8: i32, const SAE: i32>(
10503    src: __m512d,
10504    k: __mmask8,
10505    a: __m512d,
10506) -> __m512d {
10507    unsafe {
10508        static_assert_uimm_bits!(IMM8, 8);
10509        static_assert_mantissas_sae!(SAE);
10510        let a = a.as_f64x8();
10511        let src = src.as_f64x8();
10512        let r = vrndscalepd(a, IMM8, src, k, SAE);
10513        transmute(r)
10514    }
10515}
10516
10517/// Round packed double-precision (64-bit) floating-point elements in a to the number of fraction bits specified by imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
10518/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
10519/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
10520/// * [`_MM_FROUND_TO_NEG_INF`] : round down
10521/// * [`_MM_FROUND_TO_POS_INF`] : round up
10522/// * [`_MM_FROUND_TO_ZERO`] : truncate
10523/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
10524///
10525/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10526/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_roundscale_round_pd&expand=4786)
10527#[inline]
10528#[target_feature(enable = "avx512f")]
10529#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10530#[cfg_attr(test, assert_instr(vrndscalepd, IMM8 = 0, SAE = 8))]
10531#[rustc_legacy_const_generics(2, 3)]
10532pub fn _mm512_maskz_roundscale_round_pd<const IMM8: i32, const SAE: i32>(
10533    k: __mmask8,
10534    a: __m512d,
10535) -> __m512d {
10536    unsafe {
10537        static_assert_uimm_bits!(IMM8, 8);
10538        static_assert_mantissas_sae!(SAE);
10539        let a = a.as_f64x8();
10540        let r = vrndscalepd(a, IMM8, f64x8::ZERO, k, SAE);
10541        transmute(r)
10542    }
10543}
10544
10545/// Scale the packed single-precision (32-bit) floating-point elements in a using values from b, and store the results in dst.\
10546///
10547/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
10548/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
10549/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
10550/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
10551/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
10552/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
10553///
10554/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_scalef_round_ps&expand=4889)
10555#[inline]
10556#[target_feature(enable = "avx512f")]
10557#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10558#[cfg_attr(test, assert_instr(vscalefps, ROUNDING = 8))]
10559#[rustc_legacy_const_generics(2)]
10560pub fn _mm512_scalef_round_ps<const ROUNDING: i32>(a: __m512, b: __m512) -> __m512 {
10561    unsafe {
10562        static_assert_rounding!(ROUNDING);
10563        let a = a.as_f32x16();
10564        let b = b.as_f32x16();
10565        let r = vscalefps(a, b, f32x16::ZERO, 0b11111111_11111111, ROUNDING);
10566        transmute(r)
10567    }
10568}
10569
10570/// Scale the packed single-precision (32-bit) floating-point elements in a using values from b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
10571///
10572/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
10573/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
10574/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
10575/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
10576/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
10577/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
10578///
10579/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_scalef_round_ps&expand=4887)
10580#[inline]
10581#[target_feature(enable = "avx512f")]
10582#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10583#[cfg_attr(test, assert_instr(vscalefps, ROUNDING = 8))]
10584#[rustc_legacy_const_generics(4)]
10585pub fn _mm512_mask_scalef_round_ps<const ROUNDING: i32>(
10586    src: __m512,
10587    k: __mmask16,
10588    a: __m512,
10589    b: __m512,
10590) -> __m512 {
10591    unsafe {
10592        static_assert_rounding!(ROUNDING);
10593        let a = a.as_f32x16();
10594        let b = b.as_f32x16();
10595        let src = src.as_f32x16();
10596        let r = vscalefps(a, b, src, k, ROUNDING);
10597        transmute(r)
10598    }
10599}
10600
10601/// Scale the packed single-precision (32-bit) floating-point elements in a using values from b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
10602///
10603/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
10604/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
10605/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
10606/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
10607/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
10608/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
10609///
10610/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_scalef_round_ps&expand=4888)
10611#[inline]
10612#[target_feature(enable = "avx512f")]
10613#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10614#[cfg_attr(test, assert_instr(vscalefps, ROUNDING = 8))]
10615#[rustc_legacy_const_generics(3)]
10616pub fn _mm512_maskz_scalef_round_ps<const ROUNDING: i32>(
10617    k: __mmask16,
10618    a: __m512,
10619    b: __m512,
10620) -> __m512 {
10621    unsafe {
10622        static_assert_rounding!(ROUNDING);
10623        let a = a.as_f32x16();
10624        let b = b.as_f32x16();
10625        let r = vscalefps(a, b, f32x16::ZERO, k, ROUNDING);
10626        transmute(r)
10627    }
10628}
10629
10630/// Scale the packed double-precision (64-bit) floating-point elements in a using values from b, and store the results in dst.\
10631///
10632/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
10633/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
10634/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
10635/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
10636/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
10637/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
10638///
10639/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_scalef_round_pd&expand=4886)
10640#[inline]
10641#[target_feature(enable = "avx512f")]
10642#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10643#[cfg_attr(test, assert_instr(vscalefpd, ROUNDING = 8))]
10644#[rustc_legacy_const_generics(2)]
10645pub fn _mm512_scalef_round_pd<const ROUNDING: i32>(a: __m512d, b: __m512d) -> __m512d {
10646    unsafe {
10647        static_assert_rounding!(ROUNDING);
10648        let a = a.as_f64x8();
10649        let b = b.as_f64x8();
10650        let r = vscalefpd(a, b, f64x8::ZERO, 0b11111111, ROUNDING);
10651        transmute(r)
10652    }
10653}
10654
10655/// Scale the packed double-precision (64-bit) floating-point elements in a using values from b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
10656///
10657/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
10658/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
10659/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
10660/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
10661/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
10662/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
10663///
10664/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_scalef_round_pd&expand=4884)
10665#[inline]
10666#[target_feature(enable = "avx512f")]
10667#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10668#[cfg_attr(test, assert_instr(vscalefpd, ROUNDING = 8))]
10669#[rustc_legacy_const_generics(4)]
10670pub fn _mm512_mask_scalef_round_pd<const ROUNDING: i32>(
10671    src: __m512d,
10672    k: __mmask8,
10673    a: __m512d,
10674    b: __m512d,
10675) -> __m512d {
10676    unsafe {
10677        static_assert_rounding!(ROUNDING);
10678        let a = a.as_f64x8();
10679        let b = b.as_f64x8();
10680        let src = src.as_f64x8();
10681        let r = vscalefpd(a, b, src, k, ROUNDING);
10682        transmute(r)
10683    }
10684}
10685
10686/// Scale the packed double-precision (64-bit) floating-point elements in a using values from b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
10687///
10688/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
10689/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
10690/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
10691/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
10692/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
10693/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
10694///
10695/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_scalef_round_pd&expand=4885)
10696#[inline]
10697#[target_feature(enable = "avx512f")]
10698#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10699#[cfg_attr(test, assert_instr(vscalefpd, ROUNDING = 8))]
10700#[rustc_legacy_const_generics(3)]
10701pub fn _mm512_maskz_scalef_round_pd<const ROUNDING: i32>(
10702    k: __mmask8,
10703    a: __m512d,
10704    b: __m512d,
10705) -> __m512d {
10706    unsafe {
10707        static_assert_rounding!(ROUNDING);
10708        let a = a.as_f64x8();
10709        let b = b.as_f64x8();
10710        let r = vscalefpd(a, b, f64x8::ZERO, k, ROUNDING);
10711        transmute(r)
10712    }
10713}
10714
10715/// Fix up packed single-precision (32-bit) floating-point elements in a and b using packed 32-bit integers in c, and store the results in dst. imm8 is used to set the required flags reporting.\
10716///
10717/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10718/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fixupimm_round_ps&expand=2505)
10719#[inline]
10720#[target_feature(enable = "avx512f")]
10721#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10722#[cfg_attr(test, assert_instr(vfixupimmps, IMM8 = 0, SAE = 8))]
10723#[rustc_legacy_const_generics(3, 4)]
10724pub fn _mm512_fixupimm_round_ps<const IMM8: i32, const SAE: i32>(
10725    a: __m512,
10726    b: __m512,
10727    c: __m512i,
10728) -> __m512 {
10729    unsafe {
10730        static_assert_uimm_bits!(IMM8, 8);
10731        static_assert_mantissas_sae!(SAE);
10732        let a = a.as_f32x16();
10733        let b = b.as_f32x16();
10734        let c = c.as_i32x16();
10735        let r = vfixupimmps(a, b, c, IMM8, 0b11111111_11111111, SAE);
10736        transmute(r)
10737    }
10738}
10739
10740/// Fix up packed single-precision (32-bit) floating-point elements in a and b using packed 32-bit integers in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set). imm8 is used to set the required flags reporting.\
10741///
10742/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10743/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fixupimm_round_ps&expand=2506)
10744#[inline]
10745#[target_feature(enable = "avx512f")]
10746#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10747#[cfg_attr(test, assert_instr(vfixupimmps, IMM8 = 0, SAE = 8))]
10748#[rustc_legacy_const_generics(4, 5)]
10749pub fn _mm512_mask_fixupimm_round_ps<const IMM8: i32, const SAE: i32>(
10750    a: __m512,
10751    k: __mmask16,
10752    b: __m512,
10753    c: __m512i,
10754) -> __m512 {
10755    unsafe {
10756        static_assert_uimm_bits!(IMM8, 8);
10757        static_assert_mantissas_sae!(SAE);
10758        let a = a.as_f32x16();
10759        let b = b.as_f32x16();
10760        let c = c.as_i32x16();
10761        let r = vfixupimmps(a, b, c, IMM8, k, SAE);
10762        transmute(r)
10763    }
10764}
10765
10766/// Fix up packed single-precision (32-bit) floating-point elements in a and b using packed 32-bit integers in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). imm8 is used to set the required flags reporting.\
10767///
10768/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10769/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fixupimm_round_ps&expand=2507)
10770#[inline]
10771#[target_feature(enable = "avx512f")]
10772#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10773#[cfg_attr(test, assert_instr(vfixupimmps, IMM8 = 0, SAE = 8))]
10774#[rustc_legacy_const_generics(4, 5)]
10775pub fn _mm512_maskz_fixupimm_round_ps<const IMM8: i32, const SAE: i32>(
10776    k: __mmask16,
10777    a: __m512,
10778    b: __m512,
10779    c: __m512i,
10780) -> __m512 {
10781    unsafe {
10782        static_assert_uimm_bits!(IMM8, 8);
10783        static_assert_mantissas_sae!(SAE);
10784        let a = a.as_f32x16();
10785        let b = b.as_f32x16();
10786        let c = c.as_i32x16();
10787        let r = vfixupimmpsz(a, b, c, IMM8, k, SAE);
10788        transmute(r)
10789    }
10790}
10791
10792/// Fix up packed double-precision (64-bit) floating-point elements in a and b using packed 64-bit integers in c, and store the results in dst. imm8 is used to set the required flags reporting.\
10793///
10794/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10795/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_fixupimm_round_pd&expand=2502)
10796#[inline]
10797#[target_feature(enable = "avx512f")]
10798#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10799#[cfg_attr(test, assert_instr(vfixupimmpd, IMM8 = 0, SAE = 8))]
10800#[rustc_legacy_const_generics(3, 4)]
10801pub fn _mm512_fixupimm_round_pd<const IMM8: i32, const SAE: i32>(
10802    a: __m512d,
10803    b: __m512d,
10804    c: __m512i,
10805) -> __m512d {
10806    unsafe {
10807        static_assert_uimm_bits!(IMM8, 8);
10808        static_assert_mantissas_sae!(SAE);
10809        let a = a.as_f64x8();
10810        let b = b.as_f64x8();
10811        let c = c.as_i64x8();
10812        let r = vfixupimmpd(a, b, c, IMM8, 0b11111111, SAE);
10813        transmute(r)
10814    }
10815}
10816
10817/// Fix up packed double-precision (64-bit) floating-point elements in a and b using packed 64-bit integers in c, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set). imm8 is used to set the required flags reporting.\
10818///
10819/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10820/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_fixupimm_round_pd&expand=2503)
10821#[inline]
10822#[target_feature(enable = "avx512f")]
10823#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10824#[cfg_attr(test, assert_instr(vfixupimmpd, IMM8 = 0, SAE = 8))]
10825#[rustc_legacy_const_generics(4, 5)]
10826pub fn _mm512_mask_fixupimm_round_pd<const IMM8: i32, const SAE: i32>(
10827    a: __m512d,
10828    k: __mmask8,
10829    b: __m512d,
10830    c: __m512i,
10831) -> __m512d {
10832    unsafe {
10833        static_assert_uimm_bits!(IMM8, 8);
10834        static_assert_mantissas_sae!(SAE);
10835        let a = a.as_f64x8();
10836        let b = b.as_f64x8();
10837        let c = c.as_i64x8();
10838        let r = vfixupimmpd(a, b, c, IMM8, k, SAE);
10839        transmute(r)
10840    }
10841}
10842
10843/// Fix up packed double-precision (64-bit) floating-point elements in a and b using packed 64-bit integers in c, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). imm8 is used to set the required flags reporting.\
10844///
10845/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10846/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_fixupimm_round_pd&expand=2504)
10847#[inline]
10848#[target_feature(enable = "avx512f")]
10849#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10850#[cfg_attr(test, assert_instr(vfixupimmpd, IMM8 = 0, SAE = 8))]
10851#[rustc_legacy_const_generics(4, 5)]
10852pub fn _mm512_maskz_fixupimm_round_pd<const IMM8: i32, const SAE: i32>(
10853    k: __mmask8,
10854    a: __m512d,
10855    b: __m512d,
10856    c: __m512i,
10857) -> __m512d {
10858    unsafe {
10859        static_assert_uimm_bits!(IMM8, 8);
10860        static_assert_mantissas_sae!(SAE);
10861        let a = a.as_f64x8();
10862        let b = b.as_f64x8();
10863        let c = c.as_i64x8();
10864        let r = vfixupimmpdz(a, b, c, IMM8, k, SAE);
10865        transmute(r)
10866    }
10867}
10868
10869/// Normalize the mantissas of packed single-precision (32-bit) floating-point elements in a, and store the results in dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
10870/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
10871///    _MM_MANT_NORM_1_2     // interval [1, 2)\
10872///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
10873///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
10874///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
10875/// The sign is determined by sc which can take the following values:\
10876///    _MM_MANT_SIGN_src     // sign = sign(src)\
10877///    _MM_MANT_SIGN_zero    // sign = 0\
10878///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1\
10879/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10880///
10881/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_getmant_round_ps&expand=2886)
10882#[inline]
10883#[target_feature(enable = "avx512f")]
10884#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10885#[cfg_attr(test, assert_instr(vgetmantps, NORM = 0, SIGN = 0, SAE = 4))]
10886#[rustc_legacy_const_generics(1, 2, 3)]
10887pub fn _mm512_getmant_round_ps<
10888    const NORM: _MM_MANTISSA_NORM_ENUM,
10889    const SIGN: _MM_MANTISSA_SIGN_ENUM,
10890    const SAE: i32,
10891>(
10892    a: __m512,
10893) -> __m512 {
10894    unsafe {
10895        static_assert_uimm_bits!(NORM, 4);
10896        static_assert_uimm_bits!(SIGN, 2);
10897        static_assert_mantissas_sae!(SAE);
10898        let a = a.as_f32x16();
10899        let r = vgetmantps(a, SIGN << 2 | NORM, f32x16::ZERO, 0b11111111_11111111, SAE);
10900        transmute(r)
10901    }
10902}
10903
10904/// Normalize the mantissas of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
10905/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
10906///    _MM_MANT_NORM_1_2     // interval [1, 2)\
10907///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
10908///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
10909///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
10910/// The sign is determined by sc which can take the following values:\
10911///    _MM_MANT_SIGN_src     // sign = sign(src)\
10912///    _MM_MANT_SIGN_zero    // sign = 0\
10913///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1\
10914/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10915///
10916/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_getmant_round_ps&expand=2887)
10917#[inline]
10918#[target_feature(enable = "avx512f")]
10919#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10920#[cfg_attr(test, assert_instr(vgetmantps, NORM = 0, SIGN = 0, SAE = 4))]
10921#[rustc_legacy_const_generics(3, 4, 5)]
10922pub fn _mm512_mask_getmant_round_ps<
10923    const NORM: _MM_MANTISSA_NORM_ENUM,
10924    const SIGN: _MM_MANTISSA_SIGN_ENUM,
10925    const SAE: i32,
10926>(
10927    src: __m512,
10928    k: __mmask16,
10929    a: __m512,
10930) -> __m512 {
10931    unsafe {
10932        static_assert_uimm_bits!(NORM, 4);
10933        static_assert_uimm_bits!(SIGN, 2);
10934        static_assert_mantissas_sae!(SAE);
10935        let a = a.as_f32x16();
10936        let src = src.as_f32x16();
10937        let r = vgetmantps(a, SIGN << 2 | NORM, src, k, SAE);
10938        transmute(r)
10939    }
10940}
10941
10942/// Normalize the mantissas of packed single-precision (32-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
10943/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
10944///    _MM_MANT_NORM_1_2     // interval [1, 2)\
10945///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
10946///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
10947///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
10948/// The sign is determined by sc which can take the following values:\
10949///    _MM_MANT_SIGN_src     // sign = sign(src)\
10950///    _MM_MANT_SIGN_zero    // sign = 0\
10951///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1\
10952/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10953///
10954/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_getmant_round_ps&expand=2888)
10955#[inline]
10956#[target_feature(enable = "avx512f")]
10957#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10958#[cfg_attr(test, assert_instr(vgetmantps, NORM = 0, SIGN = 0, SAE = 4))]
10959#[rustc_legacy_const_generics(2, 3, 4)]
10960pub fn _mm512_maskz_getmant_round_ps<
10961    const NORM: _MM_MANTISSA_NORM_ENUM,
10962    const SIGN: _MM_MANTISSA_SIGN_ENUM,
10963    const SAE: i32,
10964>(
10965    k: __mmask16,
10966    a: __m512,
10967) -> __m512 {
10968    unsafe {
10969        static_assert_uimm_bits!(NORM, 4);
10970        static_assert_uimm_bits!(SIGN, 2);
10971        static_assert_mantissas_sae!(SAE);
10972        let a = a.as_f32x16();
10973        let r = vgetmantps(a, SIGN << 2 | NORM, f32x16::ZERO, k, SAE);
10974        transmute(r)
10975    }
10976}
10977
10978/// Normalize the mantissas of packed double-precision (64-bit) floating-point elements in a, and store the results in dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
10979/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
10980///    _MM_MANT_NORM_1_2     // interval [1, 2)\
10981///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
10982///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
10983///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
10984/// The sign is determined by sc which can take the following values:\
10985///    _MM_MANT_SIGN_src     // sign = sign(src)\
10986///    _MM_MANT_SIGN_zero    // sign = 0\
10987///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1\
10988/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
10989///
10990/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_getmant_round_pd&expand=2883)
10991#[inline]
10992#[target_feature(enable = "avx512f")]
10993#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
10994#[cfg_attr(test, assert_instr(vgetmantpd, NORM = 0, SIGN = 0, SAE = 4))]
10995#[rustc_legacy_const_generics(1, 2, 3)]
10996pub fn _mm512_getmant_round_pd<
10997    const NORM: _MM_MANTISSA_NORM_ENUM,
10998    const SIGN: _MM_MANTISSA_SIGN_ENUM,
10999    const SAE: i32,
11000>(
11001    a: __m512d,
11002) -> __m512d {
11003    unsafe {
11004        static_assert_uimm_bits!(NORM, 4);
11005        static_assert_uimm_bits!(SIGN, 2);
11006        static_assert_mantissas_sae!(SAE);
11007        let a = a.as_f64x8();
11008        let r = vgetmantpd(a, SIGN << 2 | NORM, f64x8::ZERO, 0b11111111, SAE);
11009        transmute(r)
11010    }
11011}
11012
11013/// Normalize the mantissas of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
11014/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
11015///    _MM_MANT_NORM_1_2     // interval [1, 2)\
11016///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
11017///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
11018///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
11019/// The sign is determined by sc which can take the following values:\
11020///    _MM_MANT_SIGN_src     // sign = sign(src)\
11021///    _MM_MANT_SIGN_zero    // sign = 0\
11022///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1\
11023/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
11024///
11025/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_getmant_round_pd&expand=2884)
11026#[inline]
11027#[target_feature(enable = "avx512f")]
11028#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11029#[cfg_attr(test, assert_instr(vgetmantpd, NORM = 0, SIGN = 0, SAE = 4))]
11030#[rustc_legacy_const_generics(3, 4, 5)]
11031pub fn _mm512_mask_getmant_round_pd<
11032    const NORM: _MM_MANTISSA_NORM_ENUM,
11033    const SIGN: _MM_MANTISSA_SIGN_ENUM,
11034    const SAE: i32,
11035>(
11036    src: __m512d,
11037    k: __mmask8,
11038    a: __m512d,
11039) -> __m512d {
11040    unsafe {
11041        static_assert_uimm_bits!(NORM, 4);
11042        static_assert_uimm_bits!(SIGN, 2);
11043        static_assert_mantissas_sae!(SAE);
11044        let a = a.as_f64x8();
11045        let src = src.as_f64x8();
11046        let r = vgetmantpd(a, SIGN << 2 | NORM, src, k, SAE);
11047        transmute(r)
11048    }
11049}
11050
11051/// Normalize the mantissas of packed double-precision (64-bit) floating-point elements in a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set). This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
11052/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
11053///    _MM_MANT_NORM_1_2     // interval [1, 2)\
11054///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
11055///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
11056///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
11057/// The sign is determined by sc which can take the following values:\
11058///    _MM_MANT_SIGN_src     // sign = sign(src)\
11059///    _MM_MANT_SIGN_zero    // sign = 0\
11060///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1\
11061/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
11062///
11063/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_getmant_round_pd&expand=2885)
11064#[inline]
11065#[target_feature(enable = "avx512f")]
11066#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11067#[cfg_attr(test, assert_instr(vgetmantpd, NORM = 0, SIGN = 0, SAE = 4))]
11068#[rustc_legacy_const_generics(2, 3, 4)]
11069pub fn _mm512_maskz_getmant_round_pd<
11070    const NORM: _MM_MANTISSA_NORM_ENUM,
11071    const SIGN: _MM_MANTISSA_SIGN_ENUM,
11072    const SAE: i32,
11073>(
11074    k: __mmask8,
11075    a: __m512d,
11076) -> __m512d {
11077    unsafe {
11078        static_assert_uimm_bits!(NORM, 4);
11079        static_assert_uimm_bits!(SIGN, 2);
11080        static_assert_mantissas_sae!(SAE);
11081        let a = a.as_f64x8();
11082        let r = vgetmantpd(a, SIGN << 2 | NORM, f64x8::ZERO, k, SAE);
11083        transmute(r)
11084    }
11085}
11086
11087/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst.
11088///
11089/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtps_epi32&expand=1737)
11090#[inline]
11091#[target_feature(enable = "avx512f")]
11092#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11093#[cfg_attr(test, assert_instr(vcvtps2dq))]
11094pub fn _mm512_cvtps_epi32(a: __m512) -> __m512i {
11095    unsafe {
11096        transmute(vcvtps2dq(
11097            a.as_f32x16(),
11098            i32x16::ZERO,
11099            0b11111111_11111111,
11100            _MM_FROUND_CUR_DIRECTION,
11101        ))
11102    }
11103}
11104
11105/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11106///
11107/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtps_epi32&expand=1738)
11108#[inline]
11109#[target_feature(enable = "avx512f")]
11110#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11111#[cfg_attr(test, assert_instr(vcvtps2dq))]
11112pub fn _mm512_mask_cvtps_epi32(src: __m512i, k: __mmask16, a: __m512) -> __m512i {
11113    unsafe {
11114        transmute(vcvtps2dq(
11115            a.as_f32x16(),
11116            src.as_i32x16(),
11117            k,
11118            _MM_FROUND_CUR_DIRECTION,
11119        ))
11120    }
11121}
11122
11123/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11124///
11125/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtps_epi32&expand=1739)
11126#[inline]
11127#[target_feature(enable = "avx512f")]
11128#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11129#[cfg_attr(test, assert_instr(vcvtps2dq))]
11130pub fn _mm512_maskz_cvtps_epi32(k: __mmask16, a: __m512) -> __m512i {
11131    unsafe {
11132        transmute(vcvtps2dq(
11133            a.as_f32x16(),
11134            i32x16::ZERO,
11135            k,
11136            _MM_FROUND_CUR_DIRECTION,
11137        ))
11138    }
11139}
11140
11141/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11142///
11143/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtps_epi32&expand=1735)
11144#[inline]
11145#[target_feature(enable = "avx512f,avx512vl")]
11146#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11147#[cfg_attr(test, assert_instr(vcvtps2dq))]
11148pub fn _mm256_mask_cvtps_epi32(src: __m256i, k: __mmask8, a: __m256) -> __m256i {
11149    unsafe {
11150        let convert = _mm256_cvtps_epi32(a);
11151        transmute(simd_select_bitmask(k, convert.as_i32x8(), src.as_i32x8()))
11152    }
11153}
11154
11155/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11156///
11157/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtps_epi32&expand=1736)
11158#[inline]
11159#[target_feature(enable = "avx512f,avx512vl")]
11160#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11161#[cfg_attr(test, assert_instr(vcvtps2dq))]
11162pub fn _mm256_maskz_cvtps_epi32(k: __mmask8, a: __m256) -> __m256i {
11163    unsafe {
11164        let convert = _mm256_cvtps_epi32(a);
11165        transmute(simd_select_bitmask(k, convert.as_i32x8(), i32x8::ZERO))
11166    }
11167}
11168
11169/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11170///
11171/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtps_epi32&expand=1732)
11172#[inline]
11173#[target_feature(enable = "avx512f,avx512vl")]
11174#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11175#[cfg_attr(test, assert_instr(vcvtps2dq))]
11176pub fn _mm_mask_cvtps_epi32(src: __m128i, k: __mmask8, a: __m128) -> __m128i {
11177    unsafe {
11178        let convert = _mm_cvtps_epi32(a);
11179        transmute(simd_select_bitmask(k, convert.as_i32x4(), src.as_i32x4()))
11180    }
11181}
11182
11183/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11184///
11185/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtps_epi32&expand=1733)
11186#[inline]
11187#[target_feature(enable = "avx512f,avx512vl")]
11188#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11189#[cfg_attr(test, assert_instr(vcvtps2dq))]
11190pub fn _mm_maskz_cvtps_epi32(k: __mmask8, a: __m128) -> __m128i {
11191    unsafe {
11192        let convert = _mm_cvtps_epi32(a);
11193        transmute(simd_select_bitmask(k, convert.as_i32x4(), i32x4::ZERO))
11194    }
11195}
11196
11197/// Convert packed single-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst.
11198///
11199/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtps_epu32&expand=1755)
11200#[inline]
11201#[target_feature(enable = "avx512f")]
11202#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11203#[cfg_attr(test, assert_instr(vcvtps2udq))]
11204pub fn _mm512_cvtps_epu32(a: __m512) -> __m512i {
11205    unsafe {
11206        transmute(vcvtps2udq(
11207            a.as_f32x16(),
11208            u32x16::ZERO,
11209            0b11111111_11111111,
11210            _MM_FROUND_CUR_DIRECTION,
11211        ))
11212    }
11213}
11214
11215/// Convert packed single-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11216///
11217/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtps_epu32&expand=1756)
11218#[inline]
11219#[target_feature(enable = "avx512f")]
11220#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11221#[cfg_attr(test, assert_instr(vcvtps2udq))]
11222pub fn _mm512_mask_cvtps_epu32(src: __m512i, k: __mmask16, a: __m512) -> __m512i {
11223    unsafe {
11224        transmute(vcvtps2udq(
11225            a.as_f32x16(),
11226            src.as_u32x16(),
11227            k,
11228            _MM_FROUND_CUR_DIRECTION,
11229        ))
11230    }
11231}
11232
11233/// Convert packed single-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11234///
11235/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtps_epu32&expand=1343)
11236#[inline]
11237#[target_feature(enable = "avx512f")]
11238#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11239#[cfg_attr(test, assert_instr(vcvtps2udq))]
11240pub fn _mm512_maskz_cvtps_epu32(k: __mmask16, a: __m512) -> __m512i {
11241    unsafe {
11242        transmute(vcvtps2udq(
11243            a.as_f32x16(),
11244            u32x16::ZERO,
11245            k,
11246            _MM_FROUND_CUR_DIRECTION,
11247        ))
11248    }
11249}
11250
11251/// Convert packed single-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst.
11252///
11253/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtps_epu32&expand=1752)
11254#[inline]
11255#[target_feature(enable = "avx512f,avx512vl")]
11256#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11257#[cfg_attr(test, assert_instr(vcvtps2udq))]
11258pub fn _mm256_cvtps_epu32(a: __m256) -> __m256i {
11259    unsafe { transmute(vcvtps2udq256(a.as_f32x8(), u32x8::ZERO, 0b11111111)) }
11260}
11261
11262/// Convert packed single-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11263///
11264/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtps_epu32&expand=1753)
11265#[inline]
11266#[target_feature(enable = "avx512f,avx512vl")]
11267#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11268#[cfg_attr(test, assert_instr(vcvtps2udq))]
11269pub fn _mm256_mask_cvtps_epu32(src: __m256i, k: __mmask8, a: __m256) -> __m256i {
11270    unsafe { transmute(vcvtps2udq256(a.as_f32x8(), src.as_u32x8(), k)) }
11271}
11272
11273/// Convert packed single-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11274///
11275/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtps_epu32&expand=1754)
11276#[inline]
11277#[target_feature(enable = "avx512f,avx512vl")]
11278#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11279#[cfg_attr(test, assert_instr(vcvtps2udq))]
11280pub fn _mm256_maskz_cvtps_epu32(k: __mmask8, a: __m256) -> __m256i {
11281    unsafe { transmute(vcvtps2udq256(a.as_f32x8(), u32x8::ZERO, k)) }
11282}
11283
11284/// Convert packed single-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst.
11285///
11286/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtps_epu32&expand=1749)
11287#[inline]
11288#[target_feature(enable = "avx512f,avx512vl")]
11289#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11290#[cfg_attr(test, assert_instr(vcvtps2udq))]
11291pub fn _mm_cvtps_epu32(a: __m128) -> __m128i {
11292    unsafe { transmute(vcvtps2udq128(a.as_f32x4(), u32x4::ZERO, 0b11111111)) }
11293}
11294
11295/// Convert packed single-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11296///
11297/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtps_epu32&expand=1750)
11298#[inline]
11299#[target_feature(enable = "avx512f,avx512vl")]
11300#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11301#[cfg_attr(test, assert_instr(vcvtps2udq))]
11302pub fn _mm_mask_cvtps_epu32(src: __m128i, k: __mmask8, a: __m128) -> __m128i {
11303    unsafe { transmute(vcvtps2udq128(a.as_f32x4(), src.as_u32x4(), k)) }
11304}
11305
11306/// Convert packed single-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11307///
11308/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtps_epu32&expand=1751)
11309#[inline]
11310#[target_feature(enable = "avx512f,avx512vl")]
11311#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11312#[cfg_attr(test, assert_instr(vcvtps2udq))]
11313pub fn _mm_maskz_cvtps_epu32(k: __mmask8, a: __m128) -> __m128i {
11314    unsafe { transmute(vcvtps2udq128(a.as_f32x4(), u32x4::ZERO, k)) }
11315}
11316
11317/// Convert packed single-precision (32-bit) floating-point elements in a to packed double-precision (64-bit) floating-point elements, and store the results in dst.
11318///
11319/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtps_pd&expand=1769)
11320#[inline]
11321#[target_feature(enable = "avx512f")]
11322#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11323#[cfg_attr(test, assert_instr(vcvtps2pd))]
11324pub fn _mm512_cvtps_pd(a: __m256) -> __m512d {
11325    unsafe {
11326        transmute(vcvtps2pd(
11327            a.as_f32x8(),
11328            f64x8::ZERO,
11329            0b11111111,
11330            _MM_FROUND_CUR_DIRECTION,
11331        ))
11332    }
11333}
11334
11335/// Convert packed single-precision (32-bit) floating-point elements in a to packed double-precision (64-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11336///
11337/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtps_pd&expand=1770)
11338#[inline]
11339#[target_feature(enable = "avx512f")]
11340#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11341#[cfg_attr(test, assert_instr(vcvtps2pd))]
11342pub fn _mm512_mask_cvtps_pd(src: __m512d, k: __mmask8, a: __m256) -> __m512d {
11343    unsafe {
11344        transmute(vcvtps2pd(
11345            a.as_f32x8(),
11346            src.as_f64x8(),
11347            k,
11348            _MM_FROUND_CUR_DIRECTION,
11349        ))
11350    }
11351}
11352
11353/// Convert packed single-precision (32-bit) floating-point elements in a to packed double-precision (64-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11354///
11355/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtps_pd&expand=1771)
11356#[inline]
11357#[target_feature(enable = "avx512f")]
11358#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11359#[cfg_attr(test, assert_instr(vcvtps2pd))]
11360pub fn _mm512_maskz_cvtps_pd(k: __mmask8, a: __m256) -> __m512d {
11361    unsafe {
11362        transmute(vcvtps2pd(
11363            a.as_f32x8(),
11364            f64x8::ZERO,
11365            k,
11366            _MM_FROUND_CUR_DIRECTION,
11367        ))
11368    }
11369}
11370
11371/// Performs element-by-element conversion of the lower half of packed single-precision (32-bit) floating-point elements in v2 to packed double-precision (64-bit) floating-point elements, storing the results in dst.
11372///
11373/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtpslo_pd&expand=1784)
11374#[inline]
11375#[target_feature(enable = "avx512f")]
11376#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11377#[cfg_attr(test, assert_instr(vcvtps2pd))]
11378pub fn _mm512_cvtpslo_pd(v2: __m512) -> __m512d {
11379    unsafe {
11380        transmute(vcvtps2pd(
11381            _mm512_castps512_ps256(v2).as_f32x8(),
11382            f64x8::ZERO,
11383            0b11111111,
11384            _MM_FROUND_CUR_DIRECTION,
11385        ))
11386    }
11387}
11388
11389/// Performs element-by-element conversion of the lower half of packed single-precision (32-bit) floating-point elements in v2 to packed double-precision (64-bit) floating-point elements, storing the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11390///
11391/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtpslo_pd&expand=1785)
11392#[inline]
11393#[target_feature(enable = "avx512f")]
11394#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11395#[cfg_attr(test, assert_instr(vcvtps2pd))]
11396pub fn _mm512_mask_cvtpslo_pd(src: __m512d, k: __mmask8, v2: __m512) -> __m512d {
11397    unsafe {
11398        transmute(vcvtps2pd(
11399            _mm512_castps512_ps256(v2).as_f32x8(),
11400            src.as_f64x8(),
11401            k,
11402            _MM_FROUND_CUR_DIRECTION,
11403        ))
11404    }
11405}
11406
11407/// Convert packed double-precision (64-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst.
11408///
11409/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtpd_ps&expand=1712)
11410#[inline]
11411#[target_feature(enable = "avx512f")]
11412#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11413#[cfg_attr(test, assert_instr(vcvtpd2ps))]
11414pub fn _mm512_cvtpd_ps(a: __m512d) -> __m256 {
11415    unsafe {
11416        transmute(vcvtpd2ps(
11417            a.as_f64x8(),
11418            f32x8::ZERO,
11419            0b11111111,
11420            _MM_FROUND_CUR_DIRECTION,
11421        ))
11422    }
11423}
11424
11425/// Convert packed double-precision (64-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11426///
11427/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtpd_ps&expand=1713)
11428#[inline]
11429#[target_feature(enable = "avx512f")]
11430#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11431#[cfg_attr(test, assert_instr(vcvtpd2ps))]
11432pub fn _mm512_mask_cvtpd_ps(src: __m256, k: __mmask8, a: __m512d) -> __m256 {
11433    unsafe {
11434        transmute(vcvtpd2ps(
11435            a.as_f64x8(),
11436            src.as_f32x8(),
11437            k,
11438            _MM_FROUND_CUR_DIRECTION,
11439        ))
11440    }
11441}
11442
11443/// Convert packed double-precision (64-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11444///
11445/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtpd_ps&expand=1714)
11446#[inline]
11447#[target_feature(enable = "avx512f")]
11448#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11449#[cfg_attr(test, assert_instr(vcvtpd2ps))]
11450pub fn _mm512_maskz_cvtpd_ps(k: __mmask8, a: __m512d) -> __m256 {
11451    unsafe {
11452        transmute(vcvtpd2ps(
11453            a.as_f64x8(),
11454            f32x8::ZERO,
11455            k,
11456            _MM_FROUND_CUR_DIRECTION,
11457        ))
11458    }
11459}
11460
11461/// Convert packed double-precision (64-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11462///
11463/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtpd_ps&expand=1710)
11464#[inline]
11465#[target_feature(enable = "avx512f,avx512vl")]
11466#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11467#[cfg_attr(test, assert_instr(vcvtpd2ps))]
11468pub fn _mm256_mask_cvtpd_ps(src: __m128, k: __mmask8, a: __m256d) -> __m128 {
11469    unsafe {
11470        let convert = _mm256_cvtpd_ps(a);
11471        transmute(simd_select_bitmask(k, convert.as_f32x4(), src.as_f32x4()))
11472    }
11473}
11474
11475/// Convert packed double-precision (64-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11476///
11477/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtpd_ps&expand=1711)
11478#[inline]
11479#[target_feature(enable = "avx512f,avx512vl")]
11480#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11481#[cfg_attr(test, assert_instr(vcvtpd2ps))]
11482pub fn _mm256_maskz_cvtpd_ps(k: __mmask8, a: __m256d) -> __m128 {
11483    unsafe {
11484        let convert = _mm256_cvtpd_ps(a);
11485        transmute(simd_select_bitmask(k, convert.as_f32x4(), f32x4::ZERO))
11486    }
11487}
11488
11489/// Convert packed double-precision (64-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11490///
11491/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtpd_ps&expand=1707)
11492#[inline]
11493#[target_feature(enable = "avx512f,avx512vl")]
11494#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11495#[cfg_attr(test, assert_instr(vcvtpd2ps))]
11496pub fn _mm_mask_cvtpd_ps(src: __m128, k: __mmask8, a: __m128d) -> __m128 {
11497    unsafe { vcvtpd2ps128(a.as_f64x2(), src.as_f32x4(), k).as_m128() }
11498}
11499
11500/// Convert packed double-precision (64-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11501///
11502/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtpd_ps&expand=1708)
11503#[inline]
11504#[target_feature(enable = "avx512f,avx512vl")]
11505#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11506#[cfg_attr(test, assert_instr(vcvtpd2ps))]
11507pub fn _mm_maskz_cvtpd_ps(k: __mmask8, a: __m128d) -> __m128 {
11508    unsafe {
11509        let convert = _mm_cvtpd_ps(a);
11510        transmute(simd_select_bitmask(k, convert.as_f32x4(), f32x4::ZERO))
11511    }
11512}
11513
11514/// Convert packed double-precision (64-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst.
11515///
11516/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtpd_epi32&expand=1675)
11517#[inline]
11518#[target_feature(enable = "avx512f")]
11519#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11520#[cfg_attr(test, assert_instr(vcvtpd2dq))]
11521pub fn _mm512_cvtpd_epi32(a: __m512d) -> __m256i {
11522    unsafe {
11523        transmute(vcvtpd2dq(
11524            a.as_f64x8(),
11525            i32x8::ZERO,
11526            0b11111111,
11527            _MM_FROUND_CUR_DIRECTION,
11528        ))
11529    }
11530}
11531
11532/// Convert packed double-precision (64-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11533///
11534/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtpd_epi32&expand=1676)
11535#[inline]
11536#[target_feature(enable = "avx512f")]
11537#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11538#[cfg_attr(test, assert_instr(vcvtpd2dq))]
11539pub fn _mm512_mask_cvtpd_epi32(src: __m256i, k: __mmask8, a: __m512d) -> __m256i {
11540    unsafe {
11541        transmute(vcvtpd2dq(
11542            a.as_f64x8(),
11543            src.as_i32x8(),
11544            k,
11545            _MM_FROUND_CUR_DIRECTION,
11546        ))
11547    }
11548}
11549
11550/// Convert packed double-precision (64-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11551///
11552/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtpd_epi32&expand=1677)
11553#[inline]
11554#[target_feature(enable = "avx512f")]
11555#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11556#[cfg_attr(test, assert_instr(vcvtpd2dq))]
11557pub fn _mm512_maskz_cvtpd_epi32(k: __mmask8, a: __m512d) -> __m256i {
11558    unsafe {
11559        transmute(vcvtpd2dq(
11560            a.as_f64x8(),
11561            i32x8::ZERO,
11562            k,
11563            _MM_FROUND_CUR_DIRECTION,
11564        ))
11565    }
11566}
11567
11568/// Convert packed double-precision (64-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11569///
11570/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtpd_epi32&expand=1673)
11571#[inline]
11572#[target_feature(enable = "avx512f,avx512vl")]
11573#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11574#[cfg_attr(test, assert_instr(vcvtpd2dq))]
11575pub fn _mm256_mask_cvtpd_epi32(src: __m128i, k: __mmask8, a: __m256d) -> __m128i {
11576    unsafe {
11577        let convert = _mm256_cvtpd_epi32(a);
11578        transmute(simd_select_bitmask(k, convert.as_i32x4(), src.as_i32x4()))
11579    }
11580}
11581
11582/// Convert packed double-precision (64-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11583///
11584/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtpd_epi32&expand=1674)
11585#[inline]
11586#[target_feature(enable = "avx512f,avx512vl")]
11587#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11588#[cfg_attr(test, assert_instr(vcvtpd2dq))]
11589pub fn _mm256_maskz_cvtpd_epi32(k: __mmask8, a: __m256d) -> __m128i {
11590    unsafe {
11591        let convert = _mm256_cvtpd_epi32(a);
11592        transmute(simd_select_bitmask(k, convert.as_i32x4(), i32x4::ZERO))
11593    }
11594}
11595
11596/// Convert packed double-precision (64-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11597///
11598/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtpd_epi32&expand=1670)
11599#[inline]
11600#[target_feature(enable = "avx512f,avx512vl")]
11601#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11602#[cfg_attr(test, assert_instr(vcvtpd2dq))]
11603pub fn _mm_mask_cvtpd_epi32(src: __m128i, k: __mmask8, a: __m128d) -> __m128i {
11604    unsafe { vcvtpd2dq128(a.as_f64x2(), src.as_i32x4(), k).as_m128i() }
11605}
11606
11607/// Convert packed double-precision (64-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11608///
11609/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtpd_epi32&expand=1671)
11610#[inline]
11611#[target_feature(enable = "avx512f,avx512vl")]
11612#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11613#[cfg_attr(test, assert_instr(vcvtpd2dq))]
11614pub fn _mm_maskz_cvtpd_epi32(k: __mmask8, a: __m128d) -> __m128i {
11615    unsafe {
11616        let convert = _mm_cvtpd_epi32(a);
11617        transmute(simd_select_bitmask(k, convert.as_i32x4(), i32x4::ZERO))
11618    }
11619}
11620
11621/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst.
11622///
11623/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtpd_epu32&expand=1693)
11624#[inline]
11625#[target_feature(enable = "avx512f")]
11626#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11627#[cfg_attr(test, assert_instr(vcvtpd2udq))]
11628pub fn _mm512_cvtpd_epu32(a: __m512d) -> __m256i {
11629    unsafe {
11630        transmute(vcvtpd2udq(
11631            a.as_f64x8(),
11632            u32x8::ZERO,
11633            0b11111111,
11634            _MM_FROUND_CUR_DIRECTION,
11635        ))
11636    }
11637}
11638
11639/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11640///
11641/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtpd_epu32&expand=1694)
11642#[inline]
11643#[target_feature(enable = "avx512f")]
11644#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11645#[cfg_attr(test, assert_instr(vcvtpd2udq))]
11646pub fn _mm512_mask_cvtpd_epu32(src: __m256i, k: __mmask8, a: __m512d) -> __m256i {
11647    unsafe {
11648        transmute(vcvtpd2udq(
11649            a.as_f64x8(),
11650            src.as_u32x8(),
11651            k,
11652            _MM_FROUND_CUR_DIRECTION,
11653        ))
11654    }
11655}
11656
11657/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11658///
11659/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtpd_epu32&expand=1695)
11660#[inline]
11661#[target_feature(enable = "avx512f")]
11662#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11663#[cfg_attr(test, assert_instr(vcvtpd2udq))]
11664pub fn _mm512_maskz_cvtpd_epu32(k: __mmask8, a: __m512d) -> __m256i {
11665    unsafe {
11666        transmute(vcvtpd2udq(
11667            a.as_f64x8(),
11668            u32x8::ZERO,
11669            k,
11670            _MM_FROUND_CUR_DIRECTION,
11671        ))
11672    }
11673}
11674
11675/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst.
11676///
11677/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtpd_epu32&expand=1690)
11678#[inline]
11679#[target_feature(enable = "avx512f,avx512vl")]
11680#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11681#[cfg_attr(test, assert_instr(vcvtpd2udq))]
11682pub fn _mm256_cvtpd_epu32(a: __m256d) -> __m128i {
11683    unsafe { transmute(vcvtpd2udq256(a.as_f64x4(), u32x4::ZERO, 0b11111111)) }
11684}
11685
11686/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11687///
11688/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtpd_epu32&expand=1691)
11689#[inline]
11690#[target_feature(enable = "avx512f,avx512vl")]
11691#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11692#[cfg_attr(test, assert_instr(vcvtpd2udq))]
11693pub fn _mm256_mask_cvtpd_epu32(src: __m128i, k: __mmask8, a: __m256d) -> __m128i {
11694    unsafe { transmute(vcvtpd2udq256(a.as_f64x4(), src.as_u32x4(), k)) }
11695}
11696
11697/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11698///
11699/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtpd_epu32&expand=1692)
11700#[inline]
11701#[target_feature(enable = "avx512f,avx512vl")]
11702#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11703#[cfg_attr(test, assert_instr(vcvtpd2udq))]
11704pub fn _mm256_maskz_cvtpd_epu32(k: __mmask8, a: __m256d) -> __m128i {
11705    unsafe { transmute(vcvtpd2udq256(a.as_f64x4(), u32x4::ZERO, k)) }
11706}
11707
11708/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst.
11709///
11710/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpd_epu32&expand=1687)
11711#[inline]
11712#[target_feature(enable = "avx512f,avx512vl")]
11713#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11714#[cfg_attr(test, assert_instr(vcvtpd2udq))]
11715pub fn _mm_cvtpd_epu32(a: __m128d) -> __m128i {
11716    unsafe { transmute(vcvtpd2udq128(a.as_f64x2(), u32x4::ZERO, 0b11111111)) }
11717}
11718
11719/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11720///
11721/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtpd_epu32&expand=1688)
11722#[inline]
11723#[target_feature(enable = "avx512f,avx512vl")]
11724#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11725#[cfg_attr(test, assert_instr(vcvtpd2udq))]
11726pub fn _mm_mask_cvtpd_epu32(src: __m128i, k: __mmask8, a: __m128d) -> __m128i {
11727    unsafe { transmute(vcvtpd2udq128(a.as_f64x2(), src.as_u32x4(), k)) }
11728}
11729
11730/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11731///
11732/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtpd_epu32&expand=1689)
11733#[inline]
11734#[target_feature(enable = "avx512f,avx512vl")]
11735#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11736#[cfg_attr(test, assert_instr(vcvtpd2udq))]
11737pub fn _mm_maskz_cvtpd_epu32(k: __mmask8, a: __m128d) -> __m128i {
11738    unsafe { transmute(vcvtpd2udq128(a.as_f64x2(), u32x4::ZERO, k)) }
11739}
11740
11741/// Performs an element-by-element conversion of packed double-precision (64-bit) floating-point elements in v2 to single-precision (32-bit) floating-point elements and stores them in dst. The elements are stored in the lower half of the results vector, while the remaining upper half locations are set to 0.
11742///
11743/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtpd_pslo&expand=1715)
11744#[inline]
11745#[target_feature(enable = "avx512f")]
11746#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11747#[cfg_attr(test, assert_instr(vcvtpd2ps))]
11748pub fn _mm512_cvtpd_pslo(v2: __m512d) -> __m512 {
11749    unsafe {
11750        let r: f32x8 = vcvtpd2ps(
11751            v2.as_f64x8(),
11752            f32x8::ZERO,
11753            0b11111111,
11754            _MM_FROUND_CUR_DIRECTION,
11755        );
11756        simd_shuffle!(
11757            r,
11758            f32x8::ZERO,
11759            [0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 8, 8, 8, 8, 8, 8],
11760        )
11761    }
11762}
11763
11764/// Performs an element-by-element conversion of packed double-precision (64-bit) floating-point elements in v2 to single-precision (32-bit) floating-point elements and stores them in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). The elements are stored in the lower half of the results vector, while the remaining upper half locations are set to 0.
11765///
11766/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtpd_pslo&expand=1716)
11767#[inline]
11768#[target_feature(enable = "avx512f")]
11769#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11770#[cfg_attr(test, assert_instr(vcvtpd2ps))]
11771pub fn _mm512_mask_cvtpd_pslo(src: __m512, k: __mmask8, v2: __m512d) -> __m512 {
11772    unsafe {
11773        let r: f32x8 = vcvtpd2ps(
11774            v2.as_f64x8(),
11775            _mm512_castps512_ps256(src).as_f32x8(),
11776            k,
11777            _MM_FROUND_CUR_DIRECTION,
11778        );
11779        simd_shuffle!(
11780            r,
11781            f32x8::ZERO,
11782            [0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 8, 8, 8, 8, 8, 8],
11783        )
11784    }
11785}
11786
11787/// Sign extend packed 8-bit integers in a to packed 32-bit integers, and store the results in dst.
11788///
11789/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepi8_epi32&expand=1535)
11790#[inline]
11791#[target_feature(enable = "avx512f")]
11792#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11793#[cfg_attr(test, assert_instr(vpmovsxbd))]
11794#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
11795pub const fn _mm512_cvtepi8_epi32(a: __m128i) -> __m512i {
11796    unsafe {
11797        let a = a.as_i8x16();
11798        transmute::<i32x16, _>(simd_cast(a))
11799    }
11800}
11801
11802/// Sign extend packed 8-bit integers in a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11803///
11804/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepi8_epi32&expand=1536)
11805#[inline]
11806#[target_feature(enable = "avx512f")]
11807#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11808#[cfg_attr(test, assert_instr(vpmovsxbd))]
11809#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
11810pub const fn _mm512_mask_cvtepi8_epi32(src: __m512i, k: __mmask16, a: __m128i) -> __m512i {
11811    unsafe {
11812        let convert = _mm512_cvtepi8_epi32(a).as_i32x16();
11813        transmute(simd_select_bitmask(k, convert, src.as_i32x16()))
11814    }
11815}
11816
11817/// Sign extend packed 8-bit integers in a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11818///
11819/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtepi8_epi32&expand=1537)
11820#[inline]
11821#[target_feature(enable = "avx512f")]
11822#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11823#[cfg_attr(test, assert_instr(vpmovsxbd))]
11824#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
11825pub const fn _mm512_maskz_cvtepi8_epi32(k: __mmask16, a: __m128i) -> __m512i {
11826    unsafe {
11827        let convert = _mm512_cvtepi8_epi32(a).as_i32x16();
11828        transmute(simd_select_bitmask(k, convert, i32x16::ZERO))
11829    }
11830}
11831
11832/// Sign extend packed 8-bit integers in a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11833///
11834/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepi8_epi32&expand=1533)
11835#[inline]
11836#[target_feature(enable = "avx512f,avx512vl")]
11837#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11838#[cfg_attr(test, assert_instr(vpmovsxbd))]
11839#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
11840pub const fn _mm256_mask_cvtepi8_epi32(src: __m256i, k: __mmask8, a: __m128i) -> __m256i {
11841    unsafe {
11842        let convert = _mm256_cvtepi8_epi32(a).as_i32x8();
11843        transmute(simd_select_bitmask(k, convert, src.as_i32x8()))
11844    }
11845}
11846
11847/// Sign extend packed 8-bit integers in a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11848///
11849/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtepi8_epi32&expand=1534)
11850#[inline]
11851#[target_feature(enable = "avx512f,avx512vl")]
11852#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11853#[cfg_attr(test, assert_instr(vpmovsxbd))]
11854#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
11855pub const fn _mm256_maskz_cvtepi8_epi32(k: __mmask8, a: __m128i) -> __m256i {
11856    unsafe {
11857        let convert = _mm256_cvtepi8_epi32(a).as_i32x8();
11858        transmute(simd_select_bitmask(k, convert, i32x8::ZERO))
11859    }
11860}
11861
11862/// Sign extend packed 8-bit integers in a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11863///
11864/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepi8_epi32&expand=1530)
11865#[inline]
11866#[target_feature(enable = "avx512f,avx512vl")]
11867#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11868#[cfg_attr(test, assert_instr(vpmovsxbd))]
11869#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
11870pub const fn _mm_mask_cvtepi8_epi32(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
11871    unsafe {
11872        let convert = _mm_cvtepi8_epi32(a).as_i32x4();
11873        transmute(simd_select_bitmask(k, convert, src.as_i32x4()))
11874    }
11875}
11876
11877/// Sign extend packed 8-bit integers in a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11878///
11879/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtepi8_epi32&expand=1531)
11880#[inline]
11881#[target_feature(enable = "avx512f,avx512vl")]
11882#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11883#[cfg_attr(test, assert_instr(vpmovsxbd))]
11884#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
11885pub const fn _mm_maskz_cvtepi8_epi32(k: __mmask8, a: __m128i) -> __m128i {
11886    unsafe {
11887        let convert = _mm_cvtepi8_epi32(a).as_i32x4();
11888        transmute(simd_select_bitmask(k, convert, i32x4::ZERO))
11889    }
11890}
11891
11892/// Sign extend packed 8-bit integers in the low 8 bytes of a to packed 64-bit integers, and store the results in dst.
11893///
11894/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepi8_epi64&expand=1544)
11895#[inline]
11896#[target_feature(enable = "avx512f")]
11897#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11898#[cfg_attr(test, assert_instr(vpmovsxbq))]
11899#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
11900pub const fn _mm512_cvtepi8_epi64(a: __m128i) -> __m512i {
11901    unsafe {
11902        let a = a.as_i8x16();
11903        let v64: i8x8 = simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]);
11904        transmute::<i64x8, _>(simd_cast(v64))
11905    }
11906}
11907
11908/// Sign extend packed 8-bit integers in the low 8 bytes of a to packed 64-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11909///
11910/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepi8_epi64&expand=1545)
11911#[inline]
11912#[target_feature(enable = "avx512f")]
11913#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11914#[cfg_attr(test, assert_instr(vpmovsxbq))]
11915#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
11916pub const fn _mm512_mask_cvtepi8_epi64(src: __m512i, k: __mmask8, a: __m128i) -> __m512i {
11917    unsafe {
11918        let convert = _mm512_cvtepi8_epi64(a).as_i64x8();
11919        transmute(simd_select_bitmask(k, convert, src.as_i64x8()))
11920    }
11921}
11922
11923/// Sign extend packed 8-bit integers in the low 8 bytes of a to packed 64-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11924///
11925/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtepi8_epi64&expand=1546)
11926#[inline]
11927#[target_feature(enable = "avx512f")]
11928#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11929#[cfg_attr(test, assert_instr(vpmovsxbq))]
11930#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
11931pub const fn _mm512_maskz_cvtepi8_epi64(k: __mmask8, a: __m128i) -> __m512i {
11932    unsafe {
11933        let convert = _mm512_cvtepi8_epi64(a).as_i64x8();
11934        transmute(simd_select_bitmask(k, convert, i64x8::ZERO))
11935    }
11936}
11937
11938/// Sign extend packed 8-bit integers in the low 4 bytes of a to packed 64-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11939///
11940/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepi8_epi64&expand=1542)
11941#[inline]
11942#[target_feature(enable = "avx512f,avx512vl")]
11943#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11944#[cfg_attr(test, assert_instr(vpmovsxbq))]
11945#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
11946pub const fn _mm256_mask_cvtepi8_epi64(src: __m256i, k: __mmask8, a: __m128i) -> __m256i {
11947    unsafe {
11948        let convert = _mm256_cvtepi8_epi64(a).as_i64x4();
11949        transmute(simd_select_bitmask(k, convert, src.as_i64x4()))
11950    }
11951}
11952
11953/// Sign extend packed 8-bit integers in the low 4 bytes of a to packed 64-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11954///
11955/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtepi8_epi64&expand=1543)
11956#[inline]
11957#[target_feature(enable = "avx512f,avx512vl")]
11958#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11959#[cfg_attr(test, assert_instr(vpmovsxbq))]
11960#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
11961pub const fn _mm256_maskz_cvtepi8_epi64(k: __mmask8, a: __m128i) -> __m256i {
11962    unsafe {
11963        let convert = _mm256_cvtepi8_epi64(a).as_i64x4();
11964        transmute(simd_select_bitmask(k, convert, i64x4::ZERO))
11965    }
11966}
11967
11968/// Sign extend packed 8-bit integers in the low 2 bytes of a to packed 64-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
11969///
11970/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepi8_epi64&expand=1539)
11971#[inline]
11972#[target_feature(enable = "avx512f,avx512vl")]
11973#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11974#[cfg_attr(test, assert_instr(vpmovsxbq))]
11975#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
11976pub const fn _mm_mask_cvtepi8_epi64(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
11977    unsafe {
11978        let convert = _mm_cvtepi8_epi64(a).as_i64x2();
11979        transmute(simd_select_bitmask(k, convert, src.as_i64x2()))
11980    }
11981}
11982
11983/// Sign extend packed 8-bit integers in the low 2 bytes of a to packed 64-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
11984///
11985/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtepi8_epi64&expand=1540)
11986#[inline]
11987#[target_feature(enable = "avx512f,avx512vl")]
11988#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
11989#[cfg_attr(test, assert_instr(vpmovsxbq))]
11990#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
11991pub const fn _mm_maskz_cvtepi8_epi64(k: __mmask8, a: __m128i) -> __m128i {
11992    unsafe {
11993        let convert = _mm_cvtepi8_epi64(a).as_i64x2();
11994        transmute(simd_select_bitmask(k, convert, i64x2::ZERO))
11995    }
11996}
11997
11998/// Zero extend packed unsigned 8-bit integers in a to packed 32-bit integers, and store the results in dst.
11999///
12000/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepu8_epi32&expand=1621)
12001#[inline]
12002#[target_feature(enable = "avx512f")]
12003#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12004#[cfg_attr(test, assert_instr(vpmovzxbd))]
12005#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12006pub const fn _mm512_cvtepu8_epi32(a: __m128i) -> __m512i {
12007    unsafe {
12008        let a = a.as_u8x16();
12009        transmute::<i32x16, _>(simd_cast(a))
12010    }
12011}
12012
12013/// Zero extend packed unsigned 8-bit integers in a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12014///
12015/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepu8_epi32&expand=1622)
12016#[inline]
12017#[target_feature(enable = "avx512f")]
12018#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12019#[cfg_attr(test, assert_instr(vpmovzxbd))]
12020#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12021pub const fn _mm512_mask_cvtepu8_epi32(src: __m512i, k: __mmask16, a: __m128i) -> __m512i {
12022    unsafe {
12023        let convert = _mm512_cvtepu8_epi32(a).as_i32x16();
12024        transmute(simd_select_bitmask(k, convert, src.as_i32x16()))
12025    }
12026}
12027
12028/// Zero extend packed unsigned 8-bit integers in a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12029///
12030/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtepu8_epi32&expand=1623)
12031#[inline]
12032#[target_feature(enable = "avx512f")]
12033#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12034#[cfg_attr(test, assert_instr(vpmovzxbd))]
12035#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12036pub const fn _mm512_maskz_cvtepu8_epi32(k: __mmask16, a: __m128i) -> __m512i {
12037    unsafe {
12038        let convert = _mm512_cvtepu8_epi32(a).as_i32x16();
12039        transmute(simd_select_bitmask(k, convert, i32x16::ZERO))
12040    }
12041}
12042
12043/// Zero extend packed unsigned 8-bit integers in the low 8 bytes of a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12044///
12045/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepu8_epi32&expand=1619)
12046#[inline]
12047#[target_feature(enable = "avx512f,avx512vl")]
12048#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12049#[cfg_attr(test, assert_instr(vpmovzxbd))]
12050#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12051pub const fn _mm256_mask_cvtepu8_epi32(src: __m256i, k: __mmask8, a: __m128i) -> __m256i {
12052    unsafe {
12053        let convert = _mm256_cvtepu8_epi32(a).as_i32x8();
12054        transmute(simd_select_bitmask(k, convert, src.as_i32x8()))
12055    }
12056}
12057
12058/// Zero extend packed unsigned 8-bit integers in the low 8 bytes of a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12059///
12060/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/IntrinsicsGuide/#text=_mm256_maskz_cvtepu8_epi32&expand=1620)
12061#[inline]
12062#[target_feature(enable = "avx512f,avx512vl")]
12063#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12064#[cfg_attr(test, assert_instr(vpmovzxbd))]
12065#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12066pub const fn _mm256_maskz_cvtepu8_epi32(k: __mmask8, a: __m128i) -> __m256i {
12067    unsafe {
12068        let convert = _mm256_cvtepu8_epi32(a).as_i32x8();
12069        transmute(simd_select_bitmask(k, convert, i32x8::ZERO))
12070    }
12071}
12072
12073/// Zero extend packed unsigned 8-bit integers in the low 4 bytes of a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12074///
12075/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepu8_epi32&expand=1616)
12076#[inline]
12077#[target_feature(enable = "avx512f,avx512vl")]
12078#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12079#[cfg_attr(test, assert_instr(vpmovzxbd))]
12080#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12081pub const fn _mm_mask_cvtepu8_epi32(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
12082    unsafe {
12083        let convert = _mm_cvtepu8_epi32(a).as_i32x4();
12084        transmute(simd_select_bitmask(k, convert, src.as_i32x4()))
12085    }
12086}
12087
12088/// Zero extend packed unsigned 8-bit integers in th elow 4 bytes of a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12089///
12090/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/IntrinsicsGuide/#text=_mm_maskz_cvtepu8_epi32&expand=1617)
12091#[inline]
12092#[target_feature(enable = "avx512f,avx512vl")]
12093#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12094#[cfg_attr(test, assert_instr(vpmovzxbd))]
12095#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12096pub const fn _mm_maskz_cvtepu8_epi32(k: __mmask8, a: __m128i) -> __m128i {
12097    unsafe {
12098        let convert = _mm_cvtepu8_epi32(a).as_i32x4();
12099        transmute(simd_select_bitmask(k, convert, i32x4::ZERO))
12100    }
12101}
12102
12103/// Zero extend packed unsigned 8-bit integers in the low 8 byte sof a to packed 64-bit integers, and store the results in dst.
12104///
12105/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepu8_epi64&expand=1630)
12106#[inline]
12107#[target_feature(enable = "avx512f")]
12108#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12109#[cfg_attr(test, assert_instr(vpmovzxbq))]
12110#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12111pub const fn _mm512_cvtepu8_epi64(a: __m128i) -> __m512i {
12112    unsafe {
12113        let a = a.as_u8x16();
12114        let v64: u8x8 = simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]);
12115        transmute::<i64x8, _>(simd_cast(v64))
12116    }
12117}
12118
12119/// Zero extend packed unsigned 8-bit integers in the low 8 bytes of a to packed 64-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12120///
12121/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepu8_epi64&expand=1631)
12122#[inline]
12123#[target_feature(enable = "avx512f")]
12124#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12125#[cfg_attr(test, assert_instr(vpmovzxbq))]
12126#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12127pub const fn _mm512_mask_cvtepu8_epi64(src: __m512i, k: __mmask8, a: __m128i) -> __m512i {
12128    unsafe {
12129        let convert = _mm512_cvtepu8_epi64(a).as_i64x8();
12130        transmute(simd_select_bitmask(k, convert, src.as_i64x8()))
12131    }
12132}
12133
12134/// Zero extend packed unsigned 8-bit integers in the low 8 bytes of a to packed 64-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12135///
12136/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtepu8_epi64&expand=1632)
12137#[inline]
12138#[target_feature(enable = "avx512f")]
12139#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12140#[cfg_attr(test, assert_instr(vpmovzxbq))]
12141#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12142pub const fn _mm512_maskz_cvtepu8_epi64(k: __mmask8, a: __m128i) -> __m512i {
12143    unsafe {
12144        let convert = _mm512_cvtepu8_epi64(a).as_i64x8();
12145        transmute(simd_select_bitmask(k, convert, i64x8::ZERO))
12146    }
12147}
12148
12149/// Zero extend packed unsigned 8-bit integers in the low 4 bytes of a to packed 64-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12150///
12151/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepu8_epi64&expand=1628)
12152#[inline]
12153#[target_feature(enable = "avx512f,avx512vl")]
12154#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12155#[cfg_attr(test, assert_instr(vpmovzxbq))]
12156#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12157pub const fn _mm256_mask_cvtepu8_epi64(src: __m256i, k: __mmask8, a: __m128i) -> __m256i {
12158    unsafe {
12159        let convert = _mm256_cvtepu8_epi64(a).as_i64x4();
12160        transmute(simd_select_bitmask(k, convert, src.as_i64x4()))
12161    }
12162}
12163
12164/// Zero extend packed unsigned 8-bit integers in the low 4 bytes of a to packed 64-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12165///
12166/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtepu8_epi64&expand=1629)
12167#[inline]
12168#[target_feature(enable = "avx512f,avx512vl")]
12169#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12170#[cfg_attr(test, assert_instr(vpmovzxbq))]
12171#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12172pub const fn _mm256_maskz_cvtepu8_epi64(k: __mmask8, a: __m128i) -> __m256i {
12173    unsafe {
12174        let convert = _mm256_cvtepu8_epi64(a).as_i64x4();
12175        transmute(simd_select_bitmask(k, convert, i64x4::ZERO))
12176    }
12177}
12178
12179/// Zero extend packed unsigned 8-bit integers in the low 2 bytes of a to packed 64-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12180///
12181/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepu8_epi64&expand=1625)
12182#[inline]
12183#[target_feature(enable = "avx512f,avx512vl")]
12184#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12185#[cfg_attr(test, assert_instr(vpmovzxbq))]
12186#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12187pub const fn _mm_mask_cvtepu8_epi64(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
12188    unsafe {
12189        let convert = _mm_cvtepu8_epi64(a).as_i64x2();
12190        transmute(simd_select_bitmask(k, convert, src.as_i64x2()))
12191    }
12192}
12193
12194/// Zero extend packed unsigned 8-bit integers in the low 2 bytes of a to packed 64-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12195///
12196/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtepu8_epi64&expand=1626)
12197#[inline]
12198#[target_feature(enable = "avx512f,avx512vl")]
12199#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12200#[cfg_attr(test, assert_instr(vpmovzxbq))]
12201#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12202pub const fn _mm_maskz_cvtepu8_epi64(k: __mmask8, a: __m128i) -> __m128i {
12203    unsafe {
12204        let convert = _mm_cvtepu8_epi64(a).as_i64x2();
12205        transmute(simd_select_bitmask(k, convert, i64x2::ZERO))
12206    }
12207}
12208
12209/// Sign extend packed 16-bit integers in a to packed 32-bit integers, and store the results in dst.
12210///
12211/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepi16_epi32&expand=1389)
12212#[inline]
12213#[target_feature(enable = "avx512f")]
12214#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12215#[cfg_attr(test, assert_instr(vpmovsxwd))]
12216#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12217pub const fn _mm512_cvtepi16_epi32(a: __m256i) -> __m512i {
12218    unsafe {
12219        let a = a.as_i16x16();
12220        transmute::<i32x16, _>(simd_cast(a))
12221    }
12222}
12223
12224/// Sign extend packed 16-bit integers in a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12225///
12226/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepi16_epi32&expand=1390)
12227#[inline]
12228#[target_feature(enable = "avx512f")]
12229#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12230#[cfg_attr(test, assert_instr(vpmovsxwd))]
12231#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12232pub const fn _mm512_mask_cvtepi16_epi32(src: __m512i, k: __mmask16, a: __m256i) -> __m512i {
12233    unsafe {
12234        let convert = _mm512_cvtepi16_epi32(a).as_i32x16();
12235        transmute(simd_select_bitmask(k, convert, src.as_i32x16()))
12236    }
12237}
12238
12239/// Sign extend packed 16-bit integers in a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12240///
12241/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtepi16_epi32&expand=1391)
12242#[inline]
12243#[target_feature(enable = "avx512f")]
12244#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12245#[cfg_attr(test, assert_instr(vpmovsxwd))]
12246#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12247pub const fn _mm512_maskz_cvtepi16_epi32(k: __mmask16, a: __m256i) -> __m512i {
12248    unsafe {
12249        let convert = _mm512_cvtepi16_epi32(a).as_i32x16();
12250        transmute(simd_select_bitmask(k, convert, i32x16::ZERO))
12251    }
12252}
12253
12254/// Sign extend packed 16-bit integers in a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12255///
12256/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepi16_epi32&expand=1387)
12257#[inline]
12258#[target_feature(enable = "avx512f,avx512vl")]
12259#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12260#[cfg_attr(test, assert_instr(vpmovsxwd))]
12261#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12262pub const fn _mm256_mask_cvtepi16_epi32(src: __m256i, k: __mmask8, a: __m128i) -> __m256i {
12263    unsafe {
12264        let convert = _mm256_cvtepi16_epi32(a).as_i32x8();
12265        transmute(simd_select_bitmask(k, convert, src.as_i32x8()))
12266    }
12267}
12268
12269/// Sign extend packed 16-bit integers in a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12270///
12271/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtepi16_epi32&expand=1388)
12272#[inline]
12273#[target_feature(enable = "avx512f,avx512vl")]
12274#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12275#[cfg_attr(test, assert_instr(vpmovsxwd))]
12276#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12277pub const fn _mm256_maskz_cvtepi16_epi32(k: __mmask8, a: __m128i) -> __m256i {
12278    unsafe {
12279        let convert = _mm256_cvtepi16_epi32(a).as_i32x8();
12280        transmute(simd_select_bitmask(k, convert, i32x8::ZERO))
12281    }
12282}
12283
12284/// Sign extend packed 16-bit integers in a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12285///
12286/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepi16_epi32&expand=1384)
12287#[inline]
12288#[target_feature(enable = "avx512f,avx512vl")]
12289#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12290#[cfg_attr(test, assert_instr(vpmovsxwd))]
12291#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12292pub const fn _mm_mask_cvtepi16_epi32(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
12293    unsafe {
12294        let convert = _mm_cvtepi16_epi32(a).as_i32x4();
12295        transmute(simd_select_bitmask(k, convert, src.as_i32x4()))
12296    }
12297}
12298
12299/// Sign extend packed 16-bit integers in a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12300///
12301/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtepi16_epi32&expand=1385)
12302#[inline]
12303#[target_feature(enable = "avx512f,avx512vl")]
12304#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12305#[cfg_attr(test, assert_instr(vpmovsxwd))]
12306#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12307pub const fn _mm_maskz_cvtepi16_epi32(k: __mmask8, a: __m128i) -> __m128i {
12308    unsafe {
12309        let convert = _mm_cvtepi16_epi32(a).as_i32x4();
12310        transmute(simd_select_bitmask(k, convert, i32x4::ZERO))
12311    }
12312}
12313
12314/// Sign extend packed 16-bit integers in a to packed 64-bit integers, and store the results in dst.
12315///
12316/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepi16_epi64&expand=1398)
12317#[inline]
12318#[target_feature(enable = "avx512f")]
12319#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12320#[cfg_attr(test, assert_instr(vpmovsxwq))]
12321#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12322pub const fn _mm512_cvtepi16_epi64(a: __m128i) -> __m512i {
12323    unsafe {
12324        let a = a.as_i16x8();
12325        transmute::<i64x8, _>(simd_cast(a))
12326    }
12327}
12328
12329/// Sign extend packed 16-bit integers in a to packed 64-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12330///
12331/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepi16_epi64&expand=1399)
12332#[inline]
12333#[target_feature(enable = "avx512f")]
12334#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12335#[cfg_attr(test, assert_instr(vpmovsxwq))]
12336#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12337pub const fn _mm512_mask_cvtepi16_epi64(src: __m512i, k: __mmask8, a: __m128i) -> __m512i {
12338    unsafe {
12339        let convert = _mm512_cvtepi16_epi64(a).as_i64x8();
12340        transmute(simd_select_bitmask(k, convert, src.as_i64x8()))
12341    }
12342}
12343
12344/// Sign extend packed 16-bit integers in a to packed 64-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12345///
12346/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtepi16_epi64&expand=1400)
12347#[inline]
12348#[target_feature(enable = "avx512f")]
12349#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12350#[cfg_attr(test, assert_instr(vpmovsxwq))]
12351#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12352pub const fn _mm512_maskz_cvtepi16_epi64(k: __mmask8, a: __m128i) -> __m512i {
12353    unsafe {
12354        let convert = _mm512_cvtepi16_epi64(a).as_i64x8();
12355        transmute(simd_select_bitmask(k, convert, i64x8::ZERO))
12356    }
12357}
12358
12359/// Sign extend packed 16-bit integers in a to packed 64-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12360///
12361/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepi16_epi64&expand=1396)
12362#[inline]
12363#[target_feature(enable = "avx512f,avx512vl")]
12364#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12365#[cfg_attr(test, assert_instr(vpmovsxwq))]
12366#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12367pub const fn _mm256_mask_cvtepi16_epi64(src: __m256i, k: __mmask8, a: __m128i) -> __m256i {
12368    unsafe {
12369        let convert = _mm256_cvtepi16_epi64(a).as_i64x4();
12370        transmute(simd_select_bitmask(k, convert, src.as_i64x4()))
12371    }
12372}
12373
12374/// Sign extend packed 16-bit integers in a to packed 64-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12375///
12376/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtepi16_epi64&expand=1397)
12377#[inline]
12378#[target_feature(enable = "avx512f,avx512vl")]
12379#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12380#[cfg_attr(test, assert_instr(vpmovsxwq))]
12381#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12382pub const fn _mm256_maskz_cvtepi16_epi64(k: __mmask8, a: __m128i) -> __m256i {
12383    unsafe {
12384        let convert = _mm256_cvtepi16_epi64(a).as_i64x4();
12385        transmute(simd_select_bitmask(k, convert, i64x4::ZERO))
12386    }
12387}
12388
12389/// Sign extend packed 16-bit integers in a to packed 64-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12390///
12391/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepi16_epi64&expand=1393)
12392#[inline]
12393#[target_feature(enable = "avx512f,avx512vl")]
12394#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12395#[cfg_attr(test, assert_instr(vpmovsxwq))]
12396#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12397pub const fn _mm_mask_cvtepi16_epi64(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
12398    unsafe {
12399        let convert = _mm_cvtepi16_epi64(a).as_i64x2();
12400        transmute(simd_select_bitmask(k, convert, src.as_i64x2()))
12401    }
12402}
12403
12404/// Sign extend packed 16-bit integers in a to packed 64-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12405///
12406/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtepi16_epi64&expand=1394)
12407#[inline]
12408#[target_feature(enable = "avx512f,avx512vl")]
12409#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12410#[cfg_attr(test, assert_instr(vpmovsxwq))]
12411#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12412pub const fn _mm_maskz_cvtepi16_epi64(k: __mmask8, a: __m128i) -> __m128i {
12413    unsafe {
12414        let convert = _mm_cvtepi16_epi64(a).as_i64x2();
12415        transmute(simd_select_bitmask(k, convert, i64x2::ZERO))
12416    }
12417}
12418
12419/// Zero extend packed unsigned 16-bit integers in a to packed 32-bit integers, and store the results in dst.
12420///
12421/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepu16_epi32&expand=1553)
12422#[inline]
12423#[target_feature(enable = "avx512f")]
12424#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12425#[cfg_attr(test, assert_instr(vpmovzxwd))]
12426#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12427pub const fn _mm512_cvtepu16_epi32(a: __m256i) -> __m512i {
12428    unsafe {
12429        let a = a.as_u16x16();
12430        transmute::<i32x16, _>(simd_cast(a))
12431    }
12432}
12433
12434/// Zero extend packed unsigned 16-bit integers in a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12435///
12436/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepu16_epi32&expand=1554)
12437#[inline]
12438#[target_feature(enable = "avx512f")]
12439#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12440#[cfg_attr(test, assert_instr(vpmovzxwd))]
12441#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12442pub const fn _mm512_mask_cvtepu16_epi32(src: __m512i, k: __mmask16, a: __m256i) -> __m512i {
12443    unsafe {
12444        let convert = _mm512_cvtepu16_epi32(a).as_i32x16();
12445        transmute(simd_select_bitmask(k, convert, src.as_i32x16()))
12446    }
12447}
12448
12449/// Zero extend packed unsigned 16-bit integers in a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12450///
12451/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtepu16_epi32&expand=1555)
12452#[inline]
12453#[target_feature(enable = "avx512f")]
12454#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12455#[cfg_attr(test, assert_instr(vpmovzxwd))]
12456#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12457pub const fn _mm512_maskz_cvtepu16_epi32(k: __mmask16, a: __m256i) -> __m512i {
12458    unsafe {
12459        let convert = _mm512_cvtepu16_epi32(a).as_i32x16();
12460        transmute(simd_select_bitmask(k, convert, i32x16::ZERO))
12461    }
12462}
12463
12464/// Zero extend packed unsigned 16-bit integers in a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12465///
12466/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepu16_epi32&expand=1551)
12467#[inline]
12468#[target_feature(enable = "avx512f,avx512vl")]
12469#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12470#[cfg_attr(test, assert_instr(vpmovzxwd))]
12471#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12472pub const fn _mm256_mask_cvtepu16_epi32(src: __m256i, k: __mmask8, a: __m128i) -> __m256i {
12473    unsafe {
12474        let convert = _mm256_cvtepu16_epi32(a).as_i32x8();
12475        transmute(simd_select_bitmask(k, convert, src.as_i32x8()))
12476    }
12477}
12478
12479/// Zero extend packed unsigned 16-bit integers in a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12480///
12481/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtepu16_epi32&expand=1552)
12482#[inline]
12483#[target_feature(enable = "avx512f,avx512vl")]
12484#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12485#[cfg_attr(test, assert_instr(vpmovzxwd))]
12486#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12487pub const fn _mm256_maskz_cvtepu16_epi32(k: __mmask8, a: __m128i) -> __m256i {
12488    unsafe {
12489        let convert = _mm256_cvtepu16_epi32(a).as_i32x8();
12490        transmute(simd_select_bitmask(k, convert, i32x8::ZERO))
12491    }
12492}
12493
12494/// Zero extend packed unsigned 16-bit integers in a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12495///
12496/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepu16_epi32&expand=1548)
12497#[inline]
12498#[target_feature(enable = "avx512f,avx512vl")]
12499#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12500#[cfg_attr(test, assert_instr(vpmovzxwd))]
12501#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12502pub const fn _mm_mask_cvtepu16_epi32(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
12503    unsafe {
12504        let convert = _mm_cvtepu16_epi32(a).as_i32x4();
12505        transmute(simd_select_bitmask(k, convert, src.as_i32x4()))
12506    }
12507}
12508
12509/// Zero extend packed unsigned 16-bit integers in a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12510///
12511/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtepu16_epi32&expand=1549)
12512#[inline]
12513#[target_feature(enable = "avx512f,avx512vl")]
12514#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12515#[cfg_attr(test, assert_instr(vpmovzxwd))]
12516#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12517pub const fn _mm_maskz_cvtepu16_epi32(k: __mmask8, a: __m128i) -> __m128i {
12518    unsafe {
12519        let convert = _mm_cvtepu16_epi32(a).as_i32x4();
12520        transmute(simd_select_bitmask(k, convert, i32x4::ZERO))
12521    }
12522}
12523
12524/// Zero extend packed unsigned 16-bit integers in a to packed 64-bit integers, and store the results in dst.
12525///
12526/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepu16_epi64&expand=1562)
12527#[inline]
12528#[target_feature(enable = "avx512f")]
12529#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12530#[cfg_attr(test, assert_instr(vpmovzxwq))]
12531#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12532pub const fn _mm512_cvtepu16_epi64(a: __m128i) -> __m512i {
12533    unsafe {
12534        let a = a.as_u16x8();
12535        transmute::<i64x8, _>(simd_cast(a))
12536    }
12537}
12538
12539/// Zero extend packed unsigned 16-bit integers in a to packed 64-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12540///
12541/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepu16_epi64&expand=1563)
12542#[inline]
12543#[target_feature(enable = "avx512f")]
12544#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12545#[cfg_attr(test, assert_instr(vpmovzxwq))]
12546#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12547pub const fn _mm512_mask_cvtepu16_epi64(src: __m512i, k: __mmask8, a: __m128i) -> __m512i {
12548    unsafe {
12549        let convert = _mm512_cvtepu16_epi64(a).as_i64x8();
12550        transmute(simd_select_bitmask(k, convert, src.as_i64x8()))
12551    }
12552}
12553
12554/// Zero extend packed unsigned 16-bit integers in a to packed 64-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12555///
12556/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtepu16_epi64&expand=1564)
12557#[inline]
12558#[target_feature(enable = "avx512f")]
12559#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12560#[cfg_attr(test, assert_instr(vpmovzxwq))]
12561#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12562pub const fn _mm512_maskz_cvtepu16_epi64(k: __mmask8, a: __m128i) -> __m512i {
12563    unsafe {
12564        let convert = _mm512_cvtepu16_epi64(a).as_i64x8();
12565        transmute(simd_select_bitmask(k, convert, i64x8::ZERO))
12566    }
12567}
12568
12569/// Zero extend packed unsigned 16-bit integers in the low 8 bytes of a to packed 64-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12570///
12571/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepu16_epi64&expand=1560)
12572#[inline]
12573#[target_feature(enable = "avx512f,avx512vl")]
12574#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12575#[cfg_attr(test, assert_instr(vpmovzxwq))]
12576#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12577pub const fn _mm256_mask_cvtepu16_epi64(src: __m256i, k: __mmask8, a: __m128i) -> __m256i {
12578    unsafe {
12579        let convert = _mm256_cvtepu16_epi64(a).as_i64x4();
12580        transmute(simd_select_bitmask(k, convert, src.as_i64x4()))
12581    }
12582}
12583
12584/// Zero extend packed unsigned 16-bit integers in the low 8 bytes of a to packed 64-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12585///
12586/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtepu16_epi64&expand=1561)
12587#[inline]
12588#[target_feature(enable = "avx512f,avx512vl")]
12589#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12590#[cfg_attr(test, assert_instr(vpmovzxwq))]
12591#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12592pub const fn _mm256_maskz_cvtepu16_epi64(k: __mmask8, a: __m128i) -> __m256i {
12593    unsafe {
12594        let convert = _mm256_cvtepu16_epi64(a).as_i64x4();
12595        transmute(simd_select_bitmask(k, convert, i64x4::ZERO))
12596    }
12597}
12598
12599/// Zero extend packed unsigned 16-bit integers in the low 4 bytes of a to packed 64-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12600///
12601/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepu16_epi64&expand=1557)
12602#[inline]
12603#[target_feature(enable = "avx512f,avx512vl")]
12604#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12605#[cfg_attr(test, assert_instr(vpmovzxwq))]
12606#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12607pub const fn _mm_mask_cvtepu16_epi64(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
12608    unsafe {
12609        let convert = _mm_cvtepu16_epi64(a).as_i64x2();
12610        transmute(simd_select_bitmask(k, convert, src.as_i64x2()))
12611    }
12612}
12613
12614/// Zero extend packed unsigned 16-bit integers in the low 4 bytes of a to packed 64-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12615///
12616/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtepu16_epi64&expand=1558)
12617#[inline]
12618#[target_feature(enable = "avx512f,avx512vl")]
12619#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12620#[cfg_attr(test, assert_instr(vpmovzxwq))]
12621#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12622pub const fn _mm_maskz_cvtepu16_epi64(k: __mmask8, a: __m128i) -> __m128i {
12623    unsafe {
12624        let convert = _mm_cvtepu16_epi64(a).as_i64x2();
12625        transmute(simd_select_bitmask(k, convert, i64x2::ZERO))
12626    }
12627}
12628
12629/// Sign extend packed 32-bit integers in a to packed 64-bit integers, and store the results in dst.
12630///
12631/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepi32_epi64&expand=1428)
12632#[inline]
12633#[target_feature(enable = "avx512f")]
12634#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12635#[cfg_attr(test, assert_instr(vpmovsxdq))]
12636#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12637pub const fn _mm512_cvtepi32_epi64(a: __m256i) -> __m512i {
12638    unsafe {
12639        let a = a.as_i32x8();
12640        transmute::<i64x8, _>(simd_cast(a))
12641    }
12642}
12643
12644/// Sign extend packed 32-bit integers in a to packed 64-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12645///
12646/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepi32_epi64&expand=1429)
12647#[inline]
12648#[target_feature(enable = "avx512f")]
12649#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12650#[cfg_attr(test, assert_instr(vpmovsxdq))]
12651#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12652pub const fn _mm512_mask_cvtepi32_epi64(src: __m512i, k: __mmask8, a: __m256i) -> __m512i {
12653    unsafe {
12654        let convert = _mm512_cvtepi32_epi64(a).as_i64x8();
12655        transmute(simd_select_bitmask(k, convert, src.as_i64x8()))
12656    }
12657}
12658
12659/// Sign extend packed 32-bit integers in a to packed 64-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12660///
12661/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtepi32_epi64&expand=1430)
12662#[inline]
12663#[target_feature(enable = "avx512f")]
12664#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12665#[cfg_attr(test, assert_instr(vpmovsxdq))]
12666#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12667pub const fn _mm512_maskz_cvtepi32_epi64(k: __mmask8, a: __m256i) -> __m512i {
12668    unsafe {
12669        let convert = _mm512_cvtepi32_epi64(a).as_i64x8();
12670        transmute(simd_select_bitmask(k, convert, i64x8::ZERO))
12671    }
12672}
12673
12674/// Sign extend packed 32-bit integers in a to packed 64-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12675///
12676/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepi32_epi64&expand=1426)
12677#[inline]
12678#[target_feature(enable = "avx512f,avx512vl")]
12679#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12680#[cfg_attr(test, assert_instr(vpmovsxdq))]
12681#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12682pub const fn _mm256_mask_cvtepi32_epi64(src: __m256i, k: __mmask8, a: __m128i) -> __m256i {
12683    unsafe {
12684        let convert = _mm256_cvtepi32_epi64(a).as_i64x4();
12685        transmute(simd_select_bitmask(k, convert, src.as_i64x4()))
12686    }
12687}
12688
12689/// Sign extend packed 32-bit integers in a to packed 64-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12690///
12691/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtepi32_epi64&expand=1427)
12692#[inline]
12693#[target_feature(enable = "avx512f,avx512vl")]
12694#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12695#[cfg_attr(test, assert_instr(vpmovsxdq))]
12696#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12697pub const fn _mm256_maskz_cvtepi32_epi64(k: __mmask8, a: __m128i) -> __m256i {
12698    unsafe {
12699        let convert = _mm256_cvtepi32_epi64(a).as_i64x4();
12700        transmute(simd_select_bitmask(k, convert, i64x4::ZERO))
12701    }
12702}
12703
12704/// Sign extend packed 32-bit integers in a to packed 64-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12705///
12706/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepi32_epi64&expand=1423)
12707#[inline]
12708#[target_feature(enable = "avx512f,avx512vl")]
12709#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12710#[cfg_attr(test, assert_instr(vpmovsxdq))]
12711#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12712pub const fn _mm_mask_cvtepi32_epi64(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
12713    unsafe {
12714        let convert = _mm_cvtepi32_epi64(a).as_i64x2();
12715        transmute(simd_select_bitmask(k, convert, src.as_i64x2()))
12716    }
12717}
12718
12719/// Sign extend packed 32-bit integers in a to packed 64-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12720///
12721/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtepi32_epi64&expand=1424)
12722#[inline]
12723#[target_feature(enable = "avx512f,avx512vl")]
12724#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12725#[cfg_attr(test, assert_instr(vpmovsxdq))]
12726#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12727pub const fn _mm_maskz_cvtepi32_epi64(k: __mmask8, a: __m128i) -> __m128i {
12728    unsafe {
12729        let convert = _mm_cvtepi32_epi64(a).as_i64x2();
12730        transmute(simd_select_bitmask(k, convert, i64x2::ZERO))
12731    }
12732}
12733
12734/// Zero extend packed unsigned 32-bit integers in a to packed 64-bit integers, and store the results in dst.
12735///
12736/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepu32_epi64&expand=1571)
12737#[inline]
12738#[target_feature(enable = "avx512f")]
12739#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12740#[cfg_attr(test, assert_instr(vpmovzxdq))]
12741#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12742pub const fn _mm512_cvtepu32_epi64(a: __m256i) -> __m512i {
12743    unsafe {
12744        let a = a.as_u32x8();
12745        transmute::<i64x8, _>(simd_cast(a))
12746    }
12747}
12748
12749/// Zero extend packed unsigned 32-bit integers in a to packed 64-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12750///
12751/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepu32_epi64&expand=1572)
12752#[inline]
12753#[target_feature(enable = "avx512f")]
12754#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12755#[cfg_attr(test, assert_instr(vpmovzxdq))]
12756#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12757pub const fn _mm512_mask_cvtepu32_epi64(src: __m512i, k: __mmask8, a: __m256i) -> __m512i {
12758    unsafe {
12759        let convert = _mm512_cvtepu32_epi64(a).as_i64x8();
12760        transmute(simd_select_bitmask(k, convert, src.as_i64x8()))
12761    }
12762}
12763
12764/// Zero extend packed unsigned 32-bit integers in a to packed 64-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12765///
12766/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtepu32_epi64&expand=1573)
12767#[inline]
12768#[target_feature(enable = "avx512f")]
12769#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12770#[cfg_attr(test, assert_instr(vpmovzxdq))]
12771#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12772pub const fn _mm512_maskz_cvtepu32_epi64(k: __mmask8, a: __m256i) -> __m512i {
12773    unsafe {
12774        let convert = _mm512_cvtepu32_epi64(a).as_i64x8();
12775        transmute(simd_select_bitmask(k, convert, i64x8::ZERO))
12776    }
12777}
12778
12779/// Zero extend packed unsigned 32-bit integers in a to packed 64-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12780///
12781/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepu32_epi64&expand=1569)
12782#[inline]
12783#[target_feature(enable = "avx512f,avx512vl")]
12784#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12785#[cfg_attr(test, assert_instr(vpmovzxdq))]
12786#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12787pub const fn _mm256_mask_cvtepu32_epi64(src: __m256i, k: __mmask8, a: __m128i) -> __m256i {
12788    unsafe {
12789        let convert = _mm256_cvtepu32_epi64(a).as_i64x4();
12790        transmute(simd_select_bitmask(k, convert, src.as_i64x4()))
12791    }
12792}
12793
12794/// Zero extend packed unsigned 32-bit integers in a to packed 64-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12795///
12796/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtepu32_epi64&expand=1570)
12797#[inline]
12798#[target_feature(enable = "avx512f,avx512vl")]
12799#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12800#[cfg_attr(test, assert_instr(vpmovzxdq))]
12801#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12802pub const fn _mm256_maskz_cvtepu32_epi64(k: __mmask8, a: __m128i) -> __m256i {
12803    unsafe {
12804        let convert = _mm256_cvtepu32_epi64(a).as_i64x4();
12805        transmute(simd_select_bitmask(k, convert, i64x4::ZERO))
12806    }
12807}
12808
12809/// Zero extend packed unsigned 32-bit integers in a to packed 64-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12810///
12811/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepu32_epi64&expand=1566)
12812#[inline]
12813#[target_feature(enable = "avx512f,avx512vl")]
12814#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12815#[cfg_attr(test, assert_instr(vpmovzxdq))]
12816#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12817pub const fn _mm_mask_cvtepu32_epi64(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
12818    unsafe {
12819        let convert = _mm_cvtepu32_epi64(a).as_i64x2();
12820        transmute(simd_select_bitmask(k, convert, src.as_i64x2()))
12821    }
12822}
12823
12824/// Zero extend packed unsigned 32-bit integers in a to packed 64-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12825///
12826/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtepu32_epi64&expand=1567)
12827#[inline]
12828#[target_feature(enable = "avx512f,avx512vl")]
12829#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12830#[cfg_attr(test, assert_instr(vpmovzxdq))]
12831#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12832pub const fn _mm_maskz_cvtepu32_epi64(k: __mmask8, a: __m128i) -> __m128i {
12833    unsafe {
12834        let convert = _mm_cvtepu32_epi64(a).as_i64x2();
12835        transmute(simd_select_bitmask(k, convert, i64x2::ZERO))
12836    }
12837}
12838
12839/// Convert packed signed 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst.
12840///
12841/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepi32_ps&expand=1455)
12842#[inline]
12843#[target_feature(enable = "avx512f")]
12844#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12845#[cfg_attr(test, assert_instr(vcvtdq2ps))]
12846#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12847pub const fn _mm512_cvtepi32_ps(a: __m512i) -> __m512 {
12848    unsafe {
12849        let a = a.as_i32x16();
12850        transmute::<f32x16, _>(simd_cast(a))
12851    }
12852}
12853
12854/// Convert packed signed 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12855///
12856/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepi32_ps&expand=1456)
12857#[inline]
12858#[target_feature(enable = "avx512f")]
12859#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12860#[cfg_attr(test, assert_instr(vcvtdq2ps))]
12861#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12862pub const fn _mm512_mask_cvtepi32_ps(src: __m512, k: __mmask16, a: __m512i) -> __m512 {
12863    unsafe {
12864        let convert = _mm512_cvtepi32_ps(a).as_f32x16();
12865        transmute(simd_select_bitmask(k, convert, src.as_f32x16()))
12866    }
12867}
12868
12869/// Convert packed signed 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12870///
12871/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtepi32_ps&expand=1457)
12872#[inline]
12873#[target_feature(enable = "avx512f")]
12874#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12875#[cfg_attr(test, assert_instr(vcvtdq2ps))]
12876#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12877pub const fn _mm512_maskz_cvtepi32_ps(k: __mmask16, a: __m512i) -> __m512 {
12878    unsafe {
12879        let convert = _mm512_cvtepi32_ps(a).as_f32x16();
12880        transmute(simd_select_bitmask(k, convert, f32x16::ZERO))
12881    }
12882}
12883
12884/// Convert packed signed 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12885///
12886/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepi32_ps&expand=1453)
12887#[inline]
12888#[target_feature(enable = "avx512f,avx512vl")]
12889#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12890#[cfg_attr(test, assert_instr(vcvtdq2ps))]
12891#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12892pub const fn _mm256_mask_cvtepi32_ps(src: __m256, k: __mmask8, a: __m256i) -> __m256 {
12893    unsafe {
12894        let convert = _mm256_cvtepi32_ps(a).as_f32x8();
12895        transmute(simd_select_bitmask(k, convert, src.as_f32x8()))
12896    }
12897}
12898
12899/// Convert packed signed 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12900///
12901/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtepi32_ps&expand=1454)
12902#[inline]
12903#[target_feature(enable = "avx512f,avx512vl")]
12904#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12905#[cfg_attr(test, assert_instr(vcvtdq2ps))]
12906#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12907pub const fn _mm256_maskz_cvtepi32_ps(k: __mmask8, a: __m256i) -> __m256 {
12908    unsafe {
12909        let convert = _mm256_cvtepi32_ps(a).as_f32x8();
12910        transmute(simd_select_bitmask(k, convert, f32x8::ZERO))
12911    }
12912}
12913
12914/// Convert packed signed 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12915///
12916/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepi32_ps&expand=1450)
12917#[inline]
12918#[target_feature(enable = "avx512f,avx512vl")]
12919#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12920#[cfg_attr(test, assert_instr(vcvtdq2ps))]
12921#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12922pub const fn _mm_mask_cvtepi32_ps(src: __m128, k: __mmask8, a: __m128i) -> __m128 {
12923    unsafe {
12924        let convert = _mm_cvtepi32_ps(a).as_f32x4();
12925        transmute(simd_select_bitmask(k, convert, src.as_f32x4()))
12926    }
12927}
12928
12929/// Convert packed signed 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12930///
12931/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtepi32_ps&expand=1451)
12932#[inline]
12933#[target_feature(enable = "avx512f,avx512vl")]
12934#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12935#[cfg_attr(test, assert_instr(vcvtdq2ps))]
12936#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12937pub const fn _mm_maskz_cvtepi32_ps(k: __mmask8, a: __m128i) -> __m128 {
12938    unsafe {
12939        let convert = _mm_cvtepi32_ps(a).as_f32x4();
12940        transmute(simd_select_bitmask(k, convert, f32x4::ZERO))
12941    }
12942}
12943
12944/// Convert packed signed 32-bit integers in a to packed double-precision (64-bit) floating-point elements, and store the results in dst.
12945///
12946/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepi32_pd&expand=1446)
12947#[inline]
12948#[target_feature(enable = "avx512f")]
12949#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12950#[cfg_attr(test, assert_instr(vcvtdq2pd))]
12951#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12952pub const fn _mm512_cvtepi32_pd(a: __m256i) -> __m512d {
12953    unsafe {
12954        let a = a.as_i32x8();
12955        transmute::<f64x8, _>(simd_cast(a))
12956    }
12957}
12958
12959/// Convert packed signed 32-bit integers in a to packed double-precision (64-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12960///
12961/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepi32_pd&expand=1447)
12962#[inline]
12963#[target_feature(enable = "avx512f")]
12964#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12965#[cfg_attr(test, assert_instr(vcvtdq2pd))]
12966#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12967pub const fn _mm512_mask_cvtepi32_pd(src: __m512d, k: __mmask8, a: __m256i) -> __m512d {
12968    unsafe {
12969        let convert = _mm512_cvtepi32_pd(a).as_f64x8();
12970        transmute(simd_select_bitmask(k, convert, src.as_f64x8()))
12971    }
12972}
12973
12974/// Convert packed signed 32-bit integers in a to packed double-precision (64-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
12975///
12976/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtepi32_pd&expand=1448)
12977#[inline]
12978#[target_feature(enable = "avx512f")]
12979#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12980#[cfg_attr(test, assert_instr(vcvtdq2pd))]
12981#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12982pub const fn _mm512_maskz_cvtepi32_pd(k: __mmask8, a: __m256i) -> __m512d {
12983    unsafe {
12984        let convert = _mm512_cvtepi32_pd(a).as_f64x8();
12985        transmute(simd_select_bitmask(k, convert, f64x8::ZERO))
12986    }
12987}
12988
12989/// Convert packed signed 32-bit integers in a to packed double-precision (64-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
12990///
12991/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepi32_pd&expand=1444)
12992#[inline]
12993#[target_feature(enable = "avx512f,avx512vl")]
12994#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
12995#[cfg_attr(test, assert_instr(vcvtdq2pd))]
12996#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
12997pub const fn _mm256_mask_cvtepi32_pd(src: __m256d, k: __mmask8, a: __m128i) -> __m256d {
12998    unsafe {
12999        let convert = _mm256_cvtepi32_pd(a).as_f64x4();
13000        transmute(simd_select_bitmask(k, convert, src.as_f64x4()))
13001    }
13002}
13003
13004/// Convert packed signed 32-bit integers in a to packed double-precision (64-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13005///
13006/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtepi32_pd&expand=1445)
13007#[inline]
13008#[target_feature(enable = "avx512f,avx512vl")]
13009#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13010#[cfg_attr(test, assert_instr(vcvtdq2pd))]
13011#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13012pub const fn _mm256_maskz_cvtepi32_pd(k: __mmask8, a: __m128i) -> __m256d {
13013    unsafe {
13014        let convert = _mm256_cvtepi32_pd(a).as_f64x4();
13015        transmute(simd_select_bitmask(k, convert, f64x4::ZERO))
13016    }
13017}
13018
13019/// Convert packed signed 32-bit integers in a to packed double-precision (64-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13020///
13021/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepi32_pd&expand=1441)
13022#[inline]
13023#[target_feature(enable = "avx512f,avx512vl")]
13024#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13025#[cfg_attr(test, assert_instr(vcvtdq2pd))]
13026#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13027pub const fn _mm_mask_cvtepi32_pd(src: __m128d, k: __mmask8, a: __m128i) -> __m128d {
13028    unsafe {
13029        let convert = _mm_cvtepi32_pd(a).as_f64x2();
13030        transmute(simd_select_bitmask(k, convert, src.as_f64x2()))
13031    }
13032}
13033
13034/// Convert packed signed 32-bit integers in a to packed double-precision (64-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13035///
13036/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtepi32_pd&expand=1442)
13037#[inline]
13038#[target_feature(enable = "avx512f,avx512vl")]
13039#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13040#[cfg_attr(test, assert_instr(vcvtdq2pd))]
13041#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13042pub const fn _mm_maskz_cvtepi32_pd(k: __mmask8, a: __m128i) -> __m128d {
13043    unsafe {
13044        let convert = _mm_cvtepi32_pd(a).as_f64x2();
13045        transmute(simd_select_bitmask(k, convert, f64x2::ZERO))
13046    }
13047}
13048
13049/// Convert packed unsigned 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst.
13050///
13051/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepu32_ps&expand=1583)
13052#[inline]
13053#[target_feature(enable = "avx512f")]
13054#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13055#[cfg_attr(test, assert_instr(vcvtudq2ps))]
13056#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13057pub const fn _mm512_cvtepu32_ps(a: __m512i) -> __m512 {
13058    unsafe {
13059        let a = a.as_u32x16();
13060        transmute::<f32x16, _>(simd_cast(a))
13061    }
13062}
13063
13064/// Convert packed unsigned 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13065///
13066/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepu32_ps&expand=1584)
13067#[inline]
13068#[target_feature(enable = "avx512f")]
13069#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13070#[cfg_attr(test, assert_instr(vcvtudq2ps))]
13071#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13072pub const fn _mm512_mask_cvtepu32_ps(src: __m512, k: __mmask16, a: __m512i) -> __m512 {
13073    unsafe {
13074        let convert = _mm512_cvtepu32_ps(a).as_f32x16();
13075        transmute(simd_select_bitmask(k, convert, src.as_f32x16()))
13076    }
13077}
13078
13079/// Convert packed unsigned 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13080///
13081/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtepu32_ps&expand=1585)
13082#[inline]
13083#[target_feature(enable = "avx512f")]
13084#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13085#[cfg_attr(test, assert_instr(vcvtudq2ps))]
13086#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13087pub const fn _mm512_maskz_cvtepu32_ps(k: __mmask16, a: __m512i) -> __m512 {
13088    unsafe {
13089        let convert = _mm512_cvtepu32_ps(a).as_f32x16();
13090        transmute(simd_select_bitmask(k, convert, f32x16::ZERO))
13091    }
13092}
13093
13094/// Convert packed unsigned 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst.
13095///
13096/// Due to an omission by Intel, these intrinsics are not documented in the Intrinsics Guide.
13097/// Documentation on them can be found in the [Intel Software Development Manual](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html).
13098#[inline]
13099#[target_feature(enable = "avx512f,avx512vl")]
13100#[unstable(
13101    feature = "stdarch_x86_avx512_vl_u32_to_f32_conversions",
13102    issue = "161585"
13103)]
13104#[cfg_attr(test, assert_instr(vcvtudq2ps))]
13105#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13106pub const fn _mm256_cvtepu32_ps(a: __m256i) -> __m256 {
13107    unsafe {
13108        let a = a.as_u32x8();
13109        transmute::<f32x8, _>(simd_cast(a))
13110    }
13111}
13112
13113/// Convert packed unsigned 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13114///
13115/// Due to an omission by Intel, these intrinsics are not documented in the Intrinsics Guide.
13116/// Documentation on them can be found in the [Intel Software Development Manual](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html).
13117#[inline]
13118#[target_feature(enable = "avx512f,avx512vl")]
13119#[unstable(
13120    feature = "stdarch_x86_avx512_vl_u32_to_f32_conversions",
13121    issue = "161585"
13122)]
13123#[cfg_attr(test, assert_instr(vcvtudq2ps))]
13124#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13125pub const fn _mm256_mask_cvtepu32_ps(src: __m256, k: __mmask8, a: __m256i) -> __m256 {
13126    unsafe {
13127        let convert = _mm256_cvtepu32_ps(a).as_f32x8();
13128        transmute(simd_select_bitmask(k, convert, src.as_f32x8()))
13129    }
13130}
13131
13132/// Convert packed unsigned 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13133///
13134/// Due to an omission by Intel, these intrinsics are not documented in the Intrinsics Guide.
13135/// Documentation on them can be found in the [Intel Software Development Manual](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html).
13136#[inline]
13137#[target_feature(enable = "avx512f,avx512vl")]
13138#[unstable(
13139    feature = "stdarch_x86_avx512_vl_u32_to_f32_conversions",
13140    issue = "161585"
13141)]
13142#[cfg_attr(test, assert_instr(vcvtudq2ps))]
13143#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13144pub const fn _mm256_maskz_cvtepu32_ps(k: __mmask8, a: __m256i) -> __m256 {
13145    unsafe {
13146        let convert = _mm256_cvtepu32_ps(a).as_f32x8();
13147        transmute(simd_select_bitmask(k, convert, f32x8::ZERO))
13148    }
13149}
13150
13151/// Convert packed unsigned 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst.
13152///
13153/// Due to an omission by Intel, these intrinsics are not documented in the Intrinsics Guide.
13154/// Documentation on them can be found in the [Intel Software Development Manual](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html).
13155#[inline]
13156#[target_feature(enable = "avx512f,avx512vl")]
13157#[unstable(
13158    feature = "stdarch_x86_avx512_vl_u32_to_f32_conversions",
13159    issue = "161585"
13160)]
13161#[cfg_attr(test, assert_instr(vcvtudq2ps))]
13162#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13163pub const fn _mm_cvtepu32_ps(a: __m128i) -> __m128 {
13164    unsafe {
13165        let a = a.as_u32x4();
13166        transmute::<f32x4, _>(simd_cast(a))
13167    }
13168}
13169
13170/// Convert packed unsigned 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13171/// Bits 4 through 7 of k are ignored.
13172///
13173/// Due to an omission by Intel, these intrinsics are not documented in the Intrinsics Guide.
13174/// Documentation on them can be found in the [Intel Software Development Manual](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html).
13175#[inline]
13176#[target_feature(enable = "avx512f,avx512vl")]
13177#[unstable(
13178    feature = "stdarch_x86_avx512_vl_u32_to_f32_conversions",
13179    issue = "161585"
13180)]
13181#[cfg_attr(test, assert_instr(vcvtudq2ps))]
13182#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13183pub const fn _mm_mask_cvtepu32_ps(src: __m128, k: __mmask8, a: __m128i) -> __m128 {
13184    unsafe {
13185        let convert = _mm_cvtepu32_ps(a).as_f32x4();
13186        transmute(simd_select_bitmask(k, convert, src.as_f32x4()))
13187    }
13188}
13189
13190/// Convert packed unsigned 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13191/// Bits 4 through 7 of k are ignored.
13192///
13193/// Due to an omission by Intel, these intrinsics are not documented in the Intrinsics Guide.
13194/// Documentation on them can be found in the [Intel Software Development Manual](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html).
13195#[inline]
13196#[target_feature(enable = "avx512f,avx512vl")]
13197#[unstable(
13198    feature = "stdarch_x86_avx512_vl_u32_to_f32_conversions",
13199    issue = "161585"
13200)]
13201#[cfg_attr(test, assert_instr(vcvtudq2ps))]
13202#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13203pub const fn _mm_maskz_cvtepu32_ps(k: __mmask8, a: __m128i) -> __m128 {
13204    unsafe {
13205        let convert = _mm_cvtepu32_ps(a).as_f32x4();
13206        transmute(simd_select_bitmask(k, convert, f32x4::ZERO))
13207    }
13208}
13209
13210/// Convert packed unsigned 32-bit integers in a to packed double-precision (64-bit) floating-point elements, and store the results in dst.
13211///
13212/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepu32_pd&expand=1580)
13213#[inline]
13214#[target_feature(enable = "avx512f")]
13215#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13216#[cfg_attr(test, assert_instr(vcvtudq2pd))]
13217#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13218pub const fn _mm512_cvtepu32_pd(a: __m256i) -> __m512d {
13219    unsafe {
13220        let a = a.as_u32x8();
13221        transmute::<f64x8, _>(simd_cast(a))
13222    }
13223}
13224
13225/// Convert packed unsigned 32-bit integers in a to packed double-precision (64-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13226///
13227/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepu32_pd&expand=1581)
13228#[inline]
13229#[target_feature(enable = "avx512f")]
13230#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13231#[cfg_attr(test, assert_instr(vcvtudq2pd))]
13232#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13233pub const fn _mm512_mask_cvtepu32_pd(src: __m512d, k: __mmask8, a: __m256i) -> __m512d {
13234    unsafe {
13235        let convert = _mm512_cvtepu32_pd(a).as_f64x8();
13236        transmute(simd_select_bitmask(k, convert, src.as_f64x8()))
13237    }
13238}
13239
13240/// Convert packed unsigned 32-bit integers in a to packed double-precision (64-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13241///
13242/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtepu32_pd&expand=1582)
13243#[inline]
13244#[target_feature(enable = "avx512f")]
13245#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13246#[cfg_attr(test, assert_instr(vcvtudq2pd))]
13247#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13248pub const fn _mm512_maskz_cvtepu32_pd(k: __mmask8, a: __m256i) -> __m512d {
13249    unsafe {
13250        let convert = _mm512_cvtepu32_pd(a).as_f64x8();
13251        transmute(simd_select_bitmask(k, convert, f64x8::ZERO))
13252    }
13253}
13254
13255/// Convert packed unsigned 32-bit integers in a to packed double-precision (64-bit) floating-point elements, and store the results in dst.
13256///
13257/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtepu32_pd&expand=1577)
13258#[inline]
13259#[target_feature(enable = "avx512f,avx512vl")]
13260#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13261#[cfg_attr(test, assert_instr(vcvtudq2pd))]
13262#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13263pub const fn _mm256_cvtepu32_pd(a: __m128i) -> __m256d {
13264    unsafe {
13265        let a = a.as_u32x4();
13266        transmute::<f64x4, _>(simd_cast(a))
13267    }
13268}
13269
13270/// Convert packed unsigned 32-bit integers in a to packed double-precision (64-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13271///
13272/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepu32_pd&expand=1578)
13273#[inline]
13274#[target_feature(enable = "avx512f,avx512vl")]
13275#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13276#[cfg_attr(test, assert_instr(vcvtudq2pd))]
13277#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13278pub const fn _mm256_mask_cvtepu32_pd(src: __m256d, k: __mmask8, a: __m128i) -> __m256d {
13279    unsafe {
13280        let convert = _mm256_cvtepu32_pd(a).as_f64x4();
13281        transmute(simd_select_bitmask(k, convert, src.as_f64x4()))
13282    }
13283}
13284
13285/// Convert packed unsigned 32-bit integers in a to packed double-precision (64-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13286///
13287/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtepu32_pd&expand=1579)
13288#[inline]
13289#[target_feature(enable = "avx512f,avx512vl")]
13290#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13291#[cfg_attr(test, assert_instr(vcvtudq2pd))]
13292#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13293pub const fn _mm256_maskz_cvtepu32_pd(k: __mmask8, a: __m128i) -> __m256d {
13294    unsafe {
13295        let convert = _mm256_cvtepu32_pd(a).as_f64x4();
13296        transmute(simd_select_bitmask(k, convert, f64x4::ZERO))
13297    }
13298}
13299
13300/// Convert packed unsigned 32-bit integers in a to packed double-precision (64-bit) floating-point elements, and store the results in dst.
13301///
13302/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepu32_pd&expand=1574)
13303#[inline]
13304#[target_feature(enable = "avx512f,avx512vl")]
13305#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13306#[cfg_attr(test, assert_instr(vcvtudq2pd))]
13307#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13308pub const fn _mm_cvtepu32_pd(a: __m128i) -> __m128d {
13309    unsafe {
13310        let a = a.as_u32x4();
13311        let u64: u32x2 = simd_shuffle!(a, a, [0, 1]);
13312        transmute::<f64x2, _>(simd_cast(u64))
13313    }
13314}
13315
13316/// Convert packed unsigned 32-bit integers in a to packed double-precision (64-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13317///
13318/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepu32_pd&expand=1575)
13319#[inline]
13320#[target_feature(enable = "avx512f,avx512vl")]
13321#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13322#[cfg_attr(test, assert_instr(vcvtudq2pd))]
13323#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13324pub const fn _mm_mask_cvtepu32_pd(src: __m128d, k: __mmask8, a: __m128i) -> __m128d {
13325    unsafe {
13326        let convert = _mm_cvtepu32_pd(a).as_f64x2();
13327        transmute(simd_select_bitmask(k, convert, src.as_f64x2()))
13328    }
13329}
13330
13331/// Convert packed unsigned 32-bit integers in a to packed double-precision (64-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13332///
13333/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtepu32_pd&expand=1576)
13334#[inline]
13335#[target_feature(enable = "avx512f,avx512vl")]
13336#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13337#[cfg_attr(test, assert_instr(vcvtudq2pd))]
13338#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13339pub const fn _mm_maskz_cvtepu32_pd(k: __mmask8, a: __m128i) -> __m128d {
13340    unsafe {
13341        let convert = _mm_cvtepu32_pd(a).as_f64x2();
13342        transmute(simd_select_bitmask(k, convert, f64x2::ZERO))
13343    }
13344}
13345
13346/// Performs element-by-element conversion of the lower half of packed 32-bit integer elements in v2 to packed double-precision (64-bit) floating-point elements, storing the results in dst.
13347///
13348/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepi32lo_pd&expand=1464)
13349#[inline]
13350#[target_feature(enable = "avx512f")]
13351#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13352#[cfg_attr(test, assert_instr(vcvtdq2pd))]
13353#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13354pub const fn _mm512_cvtepi32lo_pd(v2: __m512i) -> __m512d {
13355    unsafe {
13356        let v2 = v2.as_i32x16();
13357        let v256: i32x8 = simd_shuffle!(v2, v2, [0, 1, 2, 3, 4, 5, 6, 7]);
13358        transmute::<f64x8, _>(simd_cast(v256))
13359    }
13360}
13361
13362/// Performs element-by-element conversion of the lower half of packed 32-bit integer elements in v2 to packed double-precision (64-bit) floating-point elements, storing the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13363///
13364/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepi32lo_pd&expand=1465)
13365#[inline]
13366#[target_feature(enable = "avx512f")]
13367#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13368#[cfg_attr(test, assert_instr(vcvtdq2pd))]
13369#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13370pub const fn _mm512_mask_cvtepi32lo_pd(src: __m512d, k: __mmask8, v2: __m512i) -> __m512d {
13371    unsafe {
13372        let convert = _mm512_cvtepi32lo_pd(v2).as_f64x8();
13373        transmute(simd_select_bitmask(k, convert, src.as_f64x8()))
13374    }
13375}
13376
13377/// Performs element-by-element conversion of the lower half of packed 32-bit unsigned integer elements in v2 to packed double-precision (64-bit) floating-point elements, storing the results in dst.
13378///
13379/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepu32lo_pd&expand=1586)
13380#[inline]
13381#[target_feature(enable = "avx512f")]
13382#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13383#[cfg_attr(test, assert_instr(vcvtudq2pd))]
13384#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13385pub const fn _mm512_cvtepu32lo_pd(v2: __m512i) -> __m512d {
13386    unsafe {
13387        let v2 = v2.as_u32x16();
13388        let v256: u32x8 = simd_shuffle!(v2, v2, [0, 1, 2, 3, 4, 5, 6, 7]);
13389        transmute::<f64x8, _>(simd_cast(v256))
13390    }
13391}
13392
13393/// Performs element-by-element conversion of the lower half of 32-bit unsigned integer elements in v2 to packed double-precision (64-bit) floating-point elements, storing the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13394///
13395/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepu32lo_pd&expand=1587)
13396#[inline]
13397#[target_feature(enable = "avx512f")]
13398#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13399#[cfg_attr(test, assert_instr(vcvtudq2pd))]
13400#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13401pub const fn _mm512_mask_cvtepu32lo_pd(src: __m512d, k: __mmask8, v2: __m512i) -> __m512d {
13402    unsafe {
13403        let convert = _mm512_cvtepu32lo_pd(v2).as_f64x8();
13404        transmute(simd_select_bitmask(k, convert, src.as_f64x8()))
13405    }
13406}
13407
13408/// Convert packed 32-bit integers in a to packed 16-bit integers with truncation, and store the results in dst.
13409///
13410/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepi32_epi16&expand=1419)
13411#[inline]
13412#[target_feature(enable = "avx512f")]
13413#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13414#[cfg_attr(test, assert_instr(vpmovdw))]
13415#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13416pub const fn _mm512_cvtepi32_epi16(a: __m512i) -> __m256i {
13417    unsafe {
13418        let a = a.as_i32x16();
13419        transmute::<i16x16, _>(simd_cast(a))
13420    }
13421}
13422
13423/// Convert packed 32-bit integers in a to packed 16-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13424///
13425/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepi32_epi16&expand=1420)
13426#[inline]
13427#[target_feature(enable = "avx512f")]
13428#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13429#[cfg_attr(test, assert_instr(vpmovdw))]
13430#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13431pub const fn _mm512_mask_cvtepi32_epi16(src: __m256i, k: __mmask16, a: __m512i) -> __m256i {
13432    unsafe {
13433        let convert = _mm512_cvtepi32_epi16(a).as_i16x16();
13434        transmute(simd_select_bitmask(k, convert, src.as_i16x16()))
13435    }
13436}
13437
13438/// Convert packed 32-bit integers in a to packed 16-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13439///
13440/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtepi32_epi16&expand=1421)
13441#[inline]
13442#[target_feature(enable = "avx512f")]
13443#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13444#[cfg_attr(test, assert_instr(vpmovdw))]
13445#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13446pub const fn _mm512_maskz_cvtepi32_epi16(k: __mmask16, a: __m512i) -> __m256i {
13447    unsafe {
13448        let convert = _mm512_cvtepi32_epi16(a).as_i16x16();
13449        transmute(simd_select_bitmask(k, convert, i16x16::ZERO))
13450    }
13451}
13452
13453/// Convert packed 32-bit integers in a to packed 16-bit integers with truncation, and store the results in dst.
13454///
13455/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtepi32_epi16&expand=1416)
13456#[inline]
13457#[target_feature(enable = "avx512f,avx512vl")]
13458#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13459#[cfg_attr(test, assert_instr(vpmovdw))]
13460#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13461pub const fn _mm256_cvtepi32_epi16(a: __m256i) -> __m128i {
13462    unsafe {
13463        let a = a.as_i32x8();
13464        transmute::<i16x8, _>(simd_cast(a))
13465    }
13466}
13467
13468/// Convert packed 32-bit integers in a to packed 16-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13469///
13470/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepi32_epi16&expand=1417)
13471#[inline]
13472#[target_feature(enable = "avx512f,avx512vl")]
13473#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13474#[cfg_attr(test, assert_instr(vpmovdw))]
13475#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13476pub const fn _mm256_mask_cvtepi32_epi16(src: __m128i, k: __mmask8, a: __m256i) -> __m128i {
13477    unsafe {
13478        let convert = _mm256_cvtepi32_epi16(a).as_i16x8();
13479        transmute(simd_select_bitmask(k, convert, src.as_i16x8()))
13480    }
13481}
13482
13483/// Convert packed 32-bit integers in a to packed 16-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13484///
13485/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtepi32_epi16&expand=1418)
13486#[inline]
13487#[target_feature(enable = "avx512f,avx512vl")]
13488#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13489#[cfg_attr(test, assert_instr(vpmovdw))]
13490#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13491pub const fn _mm256_maskz_cvtepi32_epi16(k: __mmask8, a: __m256i) -> __m128i {
13492    unsafe {
13493        let convert = _mm256_cvtepi32_epi16(a).as_i16x8();
13494        transmute(simd_select_bitmask(k, convert, i16x8::ZERO))
13495    }
13496}
13497
13498/// Convert packed 32-bit integers in a to packed 16-bit integers with truncation, and store the results in dst.
13499///
13500/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi32_epi16&expand=1413)
13501#[inline]
13502#[target_feature(enable = "avx512f,avx512vl")]
13503#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13504#[cfg_attr(test, assert_instr(vpmovdw))]
13505pub fn _mm_cvtepi32_epi16(a: __m128i) -> __m128i {
13506    unsafe { transmute(vpmovdw128(a.as_i32x4(), i16x8::ZERO, 0b11111111)) }
13507}
13508
13509/// Convert packed 32-bit integers in a to packed 16-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13510///
13511/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepi32_epi16&expand=1414)
13512#[inline]
13513#[target_feature(enable = "avx512f,avx512vl")]
13514#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13515#[cfg_attr(test, assert_instr(vpmovdw))]
13516pub fn _mm_mask_cvtepi32_epi16(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
13517    unsafe { transmute(vpmovdw128(a.as_i32x4(), src.as_i16x8(), k)) }
13518}
13519
13520/// Convert packed 32-bit integers in a to packed 16-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13521///
13522/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtepi32_epi16&expand=1415)
13523#[inline]
13524#[target_feature(enable = "avx512f,avx512vl")]
13525#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13526#[cfg_attr(test, assert_instr(vpmovdw))]
13527pub fn _mm_maskz_cvtepi32_epi16(k: __mmask8, a: __m128i) -> __m128i {
13528    unsafe { transmute(vpmovdw128(a.as_i32x4(), i16x8::ZERO, k)) }
13529}
13530
13531/// Convert packed 32-bit integers in a to packed 8-bit integers with truncation, and store the results in dst.
13532///
13533/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepi32_epi8&expand=1437)
13534#[inline]
13535#[target_feature(enable = "avx512f")]
13536#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13537#[cfg_attr(test, assert_instr(vpmovdb))]
13538#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13539pub const fn _mm512_cvtepi32_epi8(a: __m512i) -> __m128i {
13540    unsafe {
13541        let a = a.as_i32x16();
13542        transmute::<i8x16, _>(simd_cast(a))
13543    }
13544}
13545
13546/// Convert packed 32-bit integers in a to packed 8-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13547///
13548/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepi32_epi8&expand=1438)
13549#[inline]
13550#[target_feature(enable = "avx512f")]
13551#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13552#[cfg_attr(test, assert_instr(vpmovdb))]
13553#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13554pub const fn _mm512_mask_cvtepi32_epi8(src: __m128i, k: __mmask16, a: __m512i) -> __m128i {
13555    unsafe {
13556        let convert = _mm512_cvtepi32_epi8(a).as_i8x16();
13557        transmute(simd_select_bitmask(k, convert, src.as_i8x16()))
13558    }
13559}
13560
13561/// Convert packed 32-bit integers in a to packed 8-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13562///
13563/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtepi32_epi8&expand=1439)
13564#[inline]
13565#[target_feature(enable = "avx512f")]
13566#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13567#[cfg_attr(test, assert_instr(vpmovdb))]
13568#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13569pub const fn _mm512_maskz_cvtepi32_epi8(k: __mmask16, a: __m512i) -> __m128i {
13570    unsafe {
13571        let convert = _mm512_cvtepi32_epi8(a).as_i8x16();
13572        transmute(simd_select_bitmask(k, convert, i8x16::ZERO))
13573    }
13574}
13575
13576/// Convert packed 32-bit integers in a to packed 8-bit integers with truncation, and store the results in dst.
13577///
13578/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtepi32_epi8&expand=1434)
13579#[inline]
13580#[target_feature(enable = "avx512f,avx512vl")]
13581#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13582#[cfg_attr(test, assert_instr(vpmovdb))]
13583pub fn _mm256_cvtepi32_epi8(a: __m256i) -> __m128i {
13584    unsafe { transmute(vpmovdb256(a.as_i32x8(), i8x16::ZERO, 0b11111111)) }
13585}
13586
13587/// Convert packed 32-bit integers in a to packed 8-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13588///
13589/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepi32_epi8&expand=1435)
13590#[inline]
13591#[target_feature(enable = "avx512f,avx512vl")]
13592#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13593#[cfg_attr(test, assert_instr(vpmovdb))]
13594pub fn _mm256_mask_cvtepi32_epi8(src: __m128i, k: __mmask8, a: __m256i) -> __m128i {
13595    unsafe { transmute(vpmovdb256(a.as_i32x8(), src.as_i8x16(), k)) }
13596}
13597
13598/// Convert packed 32-bit integers in a to packed 8-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13599///
13600/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtepi32_epi8&expand=1436)
13601#[inline]
13602#[target_feature(enable = "avx512f,avx512vl")]
13603#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13604#[cfg_attr(test, assert_instr(vpmovdb))]
13605pub fn _mm256_maskz_cvtepi32_epi8(k: __mmask8, a: __m256i) -> __m128i {
13606    unsafe { transmute(vpmovdb256(a.as_i32x8(), i8x16::ZERO, k)) }
13607}
13608
13609/// Convert packed 32-bit integers in a to packed 8-bit integers with truncation, and store the results in dst.
13610///
13611/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi32_epi8&expand=1431)
13612#[inline]
13613#[target_feature(enable = "avx512f,avx512vl")]
13614#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13615#[cfg_attr(test, assert_instr(vpmovdb))]
13616pub fn _mm_cvtepi32_epi8(a: __m128i) -> __m128i {
13617    unsafe { transmute(vpmovdb128(a.as_i32x4(), i8x16::ZERO, 0b11111111)) }
13618}
13619
13620/// Convert packed 32-bit integers in a to packed 8-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13621///
13622/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepi32_epi8&expand=1432)
13623#[inline]
13624#[target_feature(enable = "avx512f,avx512vl")]
13625#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13626#[cfg_attr(test, assert_instr(vpmovdb))]
13627pub fn _mm_mask_cvtepi32_epi8(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
13628    unsafe { transmute(vpmovdb128(a.as_i32x4(), src.as_i8x16(), k)) }
13629}
13630
13631/// Convert packed 32-bit integers in a to packed 8-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13632///
13633/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtepi32_epi8&expand=1433)
13634#[inline]
13635#[target_feature(enable = "avx512f,avx512vl")]
13636#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13637#[cfg_attr(test, assert_instr(vpmovdb))]
13638pub fn _mm_maskz_cvtepi32_epi8(k: __mmask8, a: __m128i) -> __m128i {
13639    unsafe { transmute(vpmovdb128(a.as_i32x4(), i8x16::ZERO, k)) }
13640}
13641
13642/// Convert packed 64-bit integers in a to packed 32-bit integers with truncation, and store the results in dst.
13643///
13644/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepi64_epi32&expand=1481)
13645#[inline]
13646#[target_feature(enable = "avx512f")]
13647#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13648#[cfg_attr(test, assert_instr(vpmovqd))]
13649#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13650pub const fn _mm512_cvtepi64_epi32(a: __m512i) -> __m256i {
13651    unsafe {
13652        let a = a.as_i64x8();
13653        transmute::<i32x8, _>(simd_cast(a))
13654    }
13655}
13656
13657/// Convert packed 64-bit integers in a to packed 32-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13658///
13659/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepi64_epi32&expand=1482)
13660#[inline]
13661#[target_feature(enable = "avx512f")]
13662#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13663#[cfg_attr(test, assert_instr(vpmovqd))]
13664#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13665pub const fn _mm512_mask_cvtepi64_epi32(src: __m256i, k: __mmask8, a: __m512i) -> __m256i {
13666    unsafe {
13667        let convert = _mm512_cvtepi64_epi32(a).as_i32x8();
13668        transmute(simd_select_bitmask(k, convert, src.as_i32x8()))
13669    }
13670}
13671
13672/// Convert packed 64-bit integers in a to packed 32-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13673///
13674/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtepi64_epi32&expand=1483)
13675#[inline]
13676#[target_feature(enable = "avx512f")]
13677#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13678#[cfg_attr(test, assert_instr(vpmovqd))]
13679#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13680pub const fn _mm512_maskz_cvtepi64_epi32(k: __mmask8, a: __m512i) -> __m256i {
13681    unsafe {
13682        let convert = _mm512_cvtepi64_epi32(a).as_i32x8();
13683        transmute(simd_select_bitmask(k, convert, i32x8::ZERO))
13684    }
13685}
13686
13687/// Convert packed 64-bit integers in a to packed 32-bit integers with truncation, and store the results in dst.
13688///
13689/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtepi64_epi32&expand=1478)
13690#[inline]
13691#[target_feature(enable = "avx512f,avx512vl")]
13692#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13693#[cfg_attr(test, assert_instr(vpmovqd))]
13694#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13695pub const fn _mm256_cvtepi64_epi32(a: __m256i) -> __m128i {
13696    unsafe {
13697        let a = a.as_i64x4();
13698        transmute::<i32x4, _>(simd_cast(a))
13699    }
13700}
13701
13702/// Convert packed 64-bit integers in a to packed 32-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13703///
13704/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepi64_epi32&expand=1479)
13705#[inline]
13706#[target_feature(enable = "avx512f,avx512vl")]
13707#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13708#[cfg_attr(test, assert_instr(vpmovqd))]
13709#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13710pub const fn _mm256_mask_cvtepi64_epi32(src: __m128i, k: __mmask8, a: __m256i) -> __m128i {
13711    unsafe {
13712        let convert = _mm256_cvtepi64_epi32(a).as_i32x4();
13713        transmute(simd_select_bitmask(k, convert, src.as_i32x4()))
13714    }
13715}
13716
13717/// Convert packed 64-bit integers in a to packed 32-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13718///
13719/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtepi64_epi32&expand=1480)
13720#[inline]
13721#[target_feature(enable = "avx512f,avx512vl")]
13722#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13723#[cfg_attr(test, assert_instr(vpmovqd))]
13724#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13725pub const fn _mm256_maskz_cvtepi64_epi32(k: __mmask8, a: __m256i) -> __m128i {
13726    unsafe {
13727        let convert = _mm256_cvtepi64_epi32(a).as_i32x4();
13728        transmute(simd_select_bitmask(k, convert, i32x4::ZERO))
13729    }
13730}
13731
13732/// Convert packed 64-bit integers in a to packed 32-bit integers with truncation, and store the results in dst.
13733///
13734/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi64_epi32&expand=1475)
13735#[inline]
13736#[target_feature(enable = "avx512f,avx512vl")]
13737#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13738#[cfg_attr(test, assert_instr(vpmovqd))]
13739pub fn _mm_cvtepi64_epi32(a: __m128i) -> __m128i {
13740    unsafe { transmute(vpmovqd128(a.as_i64x2(), i32x4::ZERO, 0b11111111)) }
13741}
13742
13743/// Convert packed 64-bit integers in a to packed 32-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13744///
13745/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepi64_epi32&expand=1476)
13746#[inline]
13747#[target_feature(enable = "avx512f,avx512vl")]
13748#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13749#[cfg_attr(test, assert_instr(vpmovqd))]
13750pub fn _mm_mask_cvtepi64_epi32(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
13751    unsafe { transmute(vpmovqd128(a.as_i64x2(), src.as_i32x4(), k)) }
13752}
13753
13754/// Convert packed 64-bit integers in a to packed 32-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13755///
13756/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtepi64_epi32&expand=1477)
13757#[inline]
13758#[target_feature(enable = "avx512f,avx512vl")]
13759#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13760#[cfg_attr(test, assert_instr(vpmovqd))]
13761pub fn _mm_maskz_cvtepi64_epi32(k: __mmask8, a: __m128i) -> __m128i {
13762    unsafe { transmute(vpmovqd128(a.as_i64x2(), i32x4::ZERO, k)) }
13763}
13764
13765/// Convert packed 64-bit integers in a to packed 16-bit integers with truncation, and store the results in dst.
13766///
13767/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepi64_epi16&expand=1472)
13768#[inline]
13769#[target_feature(enable = "avx512f")]
13770#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13771#[cfg_attr(test, assert_instr(vpmovqw))]
13772#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13773pub const fn _mm512_cvtepi64_epi16(a: __m512i) -> __m128i {
13774    unsafe {
13775        let a = a.as_i64x8();
13776        transmute::<i16x8, _>(simd_cast(a))
13777    }
13778}
13779
13780/// Convert packed 64-bit integers in a to packed 16-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13781///
13782/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepi64_epi16&expand=1473)
13783#[inline]
13784#[target_feature(enable = "avx512f")]
13785#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13786#[cfg_attr(test, assert_instr(vpmovqw))]
13787#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13788pub const fn _mm512_mask_cvtepi64_epi16(src: __m128i, k: __mmask8, a: __m512i) -> __m128i {
13789    unsafe {
13790        let convert = _mm512_cvtepi64_epi16(a).as_i16x8();
13791        transmute(simd_select_bitmask(k, convert, src.as_i16x8()))
13792    }
13793}
13794
13795/// Convert packed 64-bit integers in a to packed 16-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13796///
13797/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtepi64_epi16&expand=1474)
13798#[inline]
13799#[target_feature(enable = "avx512f")]
13800#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13801#[cfg_attr(test, assert_instr(vpmovqw))]
13802#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
13803pub const fn _mm512_maskz_cvtepi64_epi16(k: __mmask8, a: __m512i) -> __m128i {
13804    unsafe {
13805        let convert = _mm512_cvtepi64_epi16(a).as_i16x8();
13806        transmute(simd_select_bitmask(k, convert, i16x8::ZERO))
13807    }
13808}
13809
13810/// Convert packed 64-bit integers in a to packed 16-bit integers with truncation, and store the results in dst.
13811///
13812/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtepi64_epi16&expand=1469)
13813#[inline]
13814#[target_feature(enable = "avx512f,avx512vl")]
13815#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13816#[cfg_attr(test, assert_instr(vpmovqw))]
13817pub fn _mm256_cvtepi64_epi16(a: __m256i) -> __m128i {
13818    unsafe { transmute(vpmovqw256(a.as_i64x4(), i16x8::ZERO, 0b11111111)) }
13819}
13820
13821/// Convert packed 64-bit integers in a to packed 16-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13822///
13823/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepi64_epi16&expand=1470)
13824#[inline]
13825#[target_feature(enable = "avx512f,avx512vl")]
13826#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13827#[cfg_attr(test, assert_instr(vpmovqw))]
13828pub fn _mm256_mask_cvtepi64_epi16(src: __m128i, k: __mmask8, a: __m256i) -> __m128i {
13829    unsafe { transmute(vpmovqw256(a.as_i64x4(), src.as_i16x8(), k)) }
13830}
13831
13832/// Convert packed 64-bit integers in a to packed 16-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13833///
13834/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtepi64_epi16&expand=1471)
13835#[inline]
13836#[target_feature(enable = "avx512f,avx512vl")]
13837#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13838#[cfg_attr(test, assert_instr(vpmovqw))]
13839pub fn _mm256_maskz_cvtepi64_epi16(k: __mmask8, a: __m256i) -> __m128i {
13840    unsafe { transmute(vpmovqw256(a.as_i64x4(), i16x8::ZERO, k)) }
13841}
13842
13843/// Convert packed 64-bit integers in a to packed 16-bit integers with truncation, and store the results in dst.
13844///
13845/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi64_epi16&expand=1466)
13846#[inline]
13847#[target_feature(enable = "avx512f,avx512vl")]
13848#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13849#[cfg_attr(test, assert_instr(vpmovqw))]
13850pub fn _mm_cvtepi64_epi16(a: __m128i) -> __m128i {
13851    unsafe { transmute(vpmovqw128(a.as_i64x2(), i16x8::ZERO, 0b11111111)) }
13852}
13853
13854/// Convert packed 64-bit integers in a to packed 16-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13855///
13856/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepi64_epi16&expand=1467)
13857#[inline]
13858#[target_feature(enable = "avx512f,avx512vl")]
13859#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13860#[cfg_attr(test, assert_instr(vpmovqw))]
13861pub fn _mm_mask_cvtepi64_epi16(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
13862    unsafe { transmute(vpmovqw128(a.as_i64x2(), src.as_i16x8(), k)) }
13863}
13864
13865/// Convert packed 64-bit integers in a to packed 16-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13866///
13867/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtepi64_epi16&expand=1468)
13868#[inline]
13869#[target_feature(enable = "avx512f,avx512vl")]
13870#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13871#[cfg_attr(test, assert_instr(vpmovqw))]
13872pub fn _mm_maskz_cvtepi64_epi16(k: __mmask8, a: __m128i) -> __m128i {
13873    unsafe { transmute(vpmovqw128(a.as_i64x2(), i16x8::ZERO, k)) }
13874}
13875
13876/// Convert packed 64-bit integers in a to packed 8-bit integers with truncation, and store the results in dst.
13877///
13878/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepi64_epi8&expand=1490)
13879#[inline]
13880#[target_feature(enable = "avx512f")]
13881#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13882#[cfg_attr(test, assert_instr(vpmovqb))]
13883pub fn _mm512_cvtepi64_epi8(a: __m512i) -> __m128i {
13884    unsafe { transmute(vpmovqb(a.as_i64x8(), i8x16::ZERO, 0b11111111)) }
13885}
13886
13887/// Convert packed 64-bit integers in a to packed 8-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13888///
13889/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepi64_epi8&expand=1491)
13890#[inline]
13891#[target_feature(enable = "avx512f")]
13892#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13893#[cfg_attr(test, assert_instr(vpmovqb))]
13894pub fn _mm512_mask_cvtepi64_epi8(src: __m128i, k: __mmask8, a: __m512i) -> __m128i {
13895    unsafe { transmute(vpmovqb(a.as_i64x8(), src.as_i8x16(), k)) }
13896}
13897
13898/// Convert packed 64-bit integers in a to packed 8-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13899///
13900/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtepi64_epi8&expand=1492)
13901#[inline]
13902#[target_feature(enable = "avx512f")]
13903#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13904#[cfg_attr(test, assert_instr(vpmovqb))]
13905pub fn _mm512_maskz_cvtepi64_epi8(k: __mmask8, a: __m512i) -> __m128i {
13906    unsafe { transmute(vpmovqb(a.as_i64x8(), i8x16::ZERO, k)) }
13907}
13908
13909/// Convert packed 64-bit integers in a to packed 8-bit integers with truncation, and store the results in dst.
13910///
13911/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtepi64_epi8&expand=1487)
13912#[inline]
13913#[target_feature(enable = "avx512f,avx512vl")]
13914#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13915#[cfg_attr(test, assert_instr(vpmovqb))]
13916pub fn _mm256_cvtepi64_epi8(a: __m256i) -> __m128i {
13917    unsafe { transmute(vpmovqb256(a.as_i64x4(), i8x16::ZERO, 0b11111111)) }
13918}
13919
13920/// Convert packed 64-bit integers in a to packed 8-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13921///
13922/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepi64_epi8&expand=1488)
13923#[inline]
13924#[target_feature(enable = "avx512f,avx512vl")]
13925#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13926#[cfg_attr(test, assert_instr(vpmovqb))]
13927pub fn _mm256_mask_cvtepi64_epi8(src: __m128i, k: __mmask8, a: __m256i) -> __m128i {
13928    unsafe { transmute(vpmovqb256(a.as_i64x4(), src.as_i8x16(), k)) }
13929}
13930
13931/// Convert packed 64-bit integers in a to packed 8-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13932///
13933/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtepi64_epi8&expand=1489)
13934#[inline]
13935#[target_feature(enable = "avx512f,avx512vl")]
13936#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13937#[cfg_attr(test, assert_instr(vpmovqb))]
13938pub fn _mm256_maskz_cvtepi64_epi8(k: __mmask8, a: __m256i) -> __m128i {
13939    unsafe { transmute(vpmovqb256(a.as_i64x4(), i8x16::ZERO, k)) }
13940}
13941
13942/// Convert packed 64-bit integers in a to packed 8-bit integers with truncation, and store the results in dst.
13943///
13944/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi64_epi8&expand=1484)
13945#[inline]
13946#[target_feature(enable = "avx512f,avx512vl")]
13947#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13948#[cfg_attr(test, assert_instr(vpmovqb))]
13949pub fn _mm_cvtepi64_epi8(a: __m128i) -> __m128i {
13950    unsafe { transmute(vpmovqb128(a.as_i64x2(), i8x16::ZERO, 0b11111111)) }
13951}
13952
13953/// Convert packed 64-bit integers in a to packed 8-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13954///
13955/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepi64_epi8&expand=1485)
13956#[inline]
13957#[target_feature(enable = "avx512f,avx512vl")]
13958#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13959#[cfg_attr(test, assert_instr(vpmovqb))]
13960pub fn _mm_mask_cvtepi64_epi8(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
13961    unsafe { transmute(vpmovqb128(a.as_i64x2(), src.as_i8x16(), k)) }
13962}
13963
13964/// Convert packed 64-bit integers in a to packed 8-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
13965///
13966/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtepi64_epi8&expand=1486)
13967#[inline]
13968#[target_feature(enable = "avx512f,avx512vl")]
13969#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13970#[cfg_attr(test, assert_instr(vpmovqb))]
13971pub fn _mm_maskz_cvtepi64_epi8(k: __mmask8, a: __m128i) -> __m128i {
13972    unsafe { transmute(vpmovqb128(a.as_i64x2(), i8x16::ZERO, k)) }
13973}
13974
13975/// Convert packed signed 32-bit integers in a to packed 16-bit integers with signed saturation, and store the results in dst.
13976///
13977/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtsepi32_epi16&expand=1819)
13978#[inline]
13979#[target_feature(enable = "avx512f")]
13980#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13981#[cfg_attr(test, assert_instr(vpmovsdw))]
13982pub fn _mm512_cvtsepi32_epi16(a: __m512i) -> __m256i {
13983    unsafe { transmute(vpmovsdw(a.as_i32x16(), i16x16::ZERO, 0b11111111_11111111)) }
13984}
13985
13986/// Convert packed signed 32-bit integers in a to packed 16-bit integers with signed saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
13987///
13988/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtsepi32_epi16&expand=1820)
13989#[inline]
13990#[target_feature(enable = "avx512f")]
13991#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
13992#[cfg_attr(test, assert_instr(vpmovsdw))]
13993pub fn _mm512_mask_cvtsepi32_epi16(src: __m256i, k: __mmask16, a: __m512i) -> __m256i {
13994    unsafe { transmute(vpmovsdw(a.as_i32x16(), src.as_i16x16(), k)) }
13995}
13996
13997/// Convert packed signed 32-bit integers in a to packed 16-bit integers with signed saturation, and store the results in dst.
13998///
13999/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtsepi32_epi16&expand=1819)
14000#[inline]
14001#[target_feature(enable = "avx512f")]
14002#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14003#[cfg_attr(test, assert_instr(vpmovsdw))]
14004pub fn _mm512_maskz_cvtsepi32_epi16(k: __mmask16, a: __m512i) -> __m256i {
14005    unsafe { transmute(vpmovsdw(a.as_i32x16(), i16x16::ZERO, k)) }
14006}
14007
14008/// Convert packed signed 32-bit integers in a to packed 16-bit integers with signed saturation, and store the results in dst.
14009///
14010/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtsepi32_epi16&expand=1816)
14011#[inline]
14012#[target_feature(enable = "avx512f,avx512vl")]
14013#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14014#[cfg_attr(test, assert_instr(vpmovsdw))]
14015pub fn _mm256_cvtsepi32_epi16(a: __m256i) -> __m128i {
14016    unsafe { transmute(vpmovsdw256(a.as_i32x8(), i16x8::ZERO, 0b11111111)) }
14017}
14018
14019/// Convert packed signed 32-bit integers in a to packed 16-bit integers with signed saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14020///
14021/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtsepi32_epi16&expand=1817)
14022#[inline]
14023#[target_feature(enable = "avx512f,avx512vl")]
14024#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14025#[cfg_attr(test, assert_instr(vpmovsdw))]
14026pub fn _mm256_mask_cvtsepi32_epi16(src: __m128i, k: __mmask8, a: __m256i) -> __m128i {
14027    unsafe { transmute(vpmovsdw256(a.as_i32x8(), src.as_i16x8(), k)) }
14028}
14029
14030/// Convert packed signed 32-bit integers in a to packed 16-bit integers with signed saturation, and store the results in dst.
14031///
14032/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtsepi32_epi16&expand=1818)
14033#[inline]
14034#[target_feature(enable = "avx512f,avx512vl")]
14035#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14036#[cfg_attr(test, assert_instr(vpmovsdw))]
14037pub fn _mm256_maskz_cvtsepi32_epi16(k: __mmask8, a: __m256i) -> __m128i {
14038    unsafe { transmute(vpmovsdw256(a.as_i32x8(), i16x8::ZERO, k)) }
14039}
14040
14041/// Convert packed signed 32-bit integers in a to packed 16-bit integers with signed saturation, and store the results in dst.
14042///
14043/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsepi32_epi16&expand=1813)
14044#[inline]
14045#[target_feature(enable = "avx512f,avx512vl")]
14046#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14047#[cfg_attr(test, assert_instr(vpmovsdw))]
14048pub fn _mm_cvtsepi32_epi16(a: __m128i) -> __m128i {
14049    unsafe { transmute(vpmovsdw128(a.as_i32x4(), i16x8::ZERO, 0b11111111)) }
14050}
14051
14052/// Convert packed signed 32-bit integers in a to packed 16-bit integers with signed saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14053///
14054/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtsepi32_epi16&expand=1814)
14055#[inline]
14056#[target_feature(enable = "avx512f,avx512vl")]
14057#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14058#[cfg_attr(test, assert_instr(vpmovsdw))]
14059pub fn _mm_mask_cvtsepi32_epi16(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
14060    unsafe { transmute(vpmovsdw128(a.as_i32x4(), src.as_i16x8(), k)) }
14061}
14062
14063/// Convert packed signed 32-bit integers in a to packed 16-bit integers with signed saturation, and store the results in dst.
14064///
14065/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtsepi32_epi16&expand=1815)
14066#[inline]
14067#[target_feature(enable = "avx512f,avx512vl")]
14068#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14069#[cfg_attr(test, assert_instr(vpmovsdw))]
14070pub fn _mm_maskz_cvtsepi32_epi16(k: __mmask8, a: __m128i) -> __m128i {
14071    unsafe { transmute(vpmovsdw128(a.as_i32x4(), i16x8::ZERO, k)) }
14072}
14073
14074/// Convert packed signed 32-bit integers in a to packed 8-bit integers with signed saturation, and store the results in dst.
14075///
14076/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtsepi32_epi8&expand=1828)
14077#[inline]
14078#[target_feature(enable = "avx512f")]
14079#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14080#[cfg_attr(test, assert_instr(vpmovsdb))]
14081pub fn _mm512_cvtsepi32_epi8(a: __m512i) -> __m128i {
14082    unsafe { transmute(vpmovsdb(a.as_i32x16(), i8x16::ZERO, 0b11111111_11111111)) }
14083}
14084
14085/// Convert packed signed 32-bit integers in a to packed 8-bit integers with signed saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14086///
14087/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtsepi32_epi8&expand=1829)
14088#[inline]
14089#[target_feature(enable = "avx512f")]
14090#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14091#[cfg_attr(test, assert_instr(vpmovsdb))]
14092pub fn _mm512_mask_cvtsepi32_epi8(src: __m128i, k: __mmask16, a: __m512i) -> __m128i {
14093    unsafe { transmute(vpmovsdb(a.as_i32x16(), src.as_i8x16(), k)) }
14094}
14095
14096/// Convert packed signed 32-bit integers in a to packed 8-bit integers with signed saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14097///
14098/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtsepi32_epi8&expand=1830)
14099#[inline]
14100#[target_feature(enable = "avx512f")]
14101#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14102#[cfg_attr(test, assert_instr(vpmovsdb))]
14103pub fn _mm512_maskz_cvtsepi32_epi8(k: __mmask16, a: __m512i) -> __m128i {
14104    unsafe { transmute(vpmovsdb(a.as_i32x16(), i8x16::ZERO, k)) }
14105}
14106
14107/// Convert packed signed 32-bit integers in a to packed 8-bit integers with signed saturation, and store the results in dst.
14108///
14109/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtsepi32_epi8&expand=1825)
14110#[inline]
14111#[target_feature(enable = "avx512f,avx512vl")]
14112#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14113#[cfg_attr(test, assert_instr(vpmovsdb))]
14114pub fn _mm256_cvtsepi32_epi8(a: __m256i) -> __m128i {
14115    unsafe { transmute(vpmovsdb256(a.as_i32x8(), i8x16::ZERO, 0b11111111)) }
14116}
14117
14118/// Convert packed signed 32-bit integers in a to packed 8-bit integers with signed saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14119///
14120/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtsepi32_epi8&expand=1826)
14121#[inline]
14122#[target_feature(enable = "avx512f,avx512vl")]
14123#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14124#[cfg_attr(test, assert_instr(vpmovsdb))]
14125pub fn _mm256_mask_cvtsepi32_epi8(src: __m128i, k: __mmask8, a: __m256i) -> __m128i {
14126    unsafe { transmute(vpmovsdb256(a.as_i32x8(), src.as_i8x16(), k)) }
14127}
14128
14129/// Convert packed signed 32-bit integers in a to packed 8-bit integers with signed saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14130///
14131/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtsepi32_epi8&expand=1827)
14132#[inline]
14133#[target_feature(enable = "avx512f,avx512vl")]
14134#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14135#[cfg_attr(test, assert_instr(vpmovsdb))]
14136pub fn _mm256_maskz_cvtsepi32_epi8(k: __mmask8, a: __m256i) -> __m128i {
14137    unsafe { transmute(vpmovsdb256(a.as_i32x8(), i8x16::ZERO, k)) }
14138}
14139
14140/// Convert packed signed 32-bit integers in a to packed 8-bit integers with signed saturation, and store the results in dst.
14141///
14142/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsepi32_epi8&expand=1822)
14143#[inline]
14144#[target_feature(enable = "avx512f,avx512vl")]
14145#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14146#[cfg_attr(test, assert_instr(vpmovsdb))]
14147pub fn _mm_cvtsepi32_epi8(a: __m128i) -> __m128i {
14148    unsafe { transmute(vpmovsdb128(a.as_i32x4(), i8x16::ZERO, 0b11111111)) }
14149}
14150
14151/// Convert packed signed 32-bit integers in a to packed 8-bit integers with signed saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14152///
14153/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtsepi32_epi8&expand=1823)
14154#[inline]
14155#[target_feature(enable = "avx512f,avx512vl")]
14156#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14157#[cfg_attr(test, assert_instr(vpmovsdb))]
14158pub fn _mm_mask_cvtsepi32_epi8(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
14159    unsafe { transmute(vpmovsdb128(a.as_i32x4(), src.as_i8x16(), k)) }
14160}
14161
14162/// Convert packed signed 32-bit integers in a to packed 8-bit integers with signed saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14163///
14164/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtsepi32_epi8&expand=1824)
14165#[inline]
14166#[target_feature(enable = "avx512f,avx512vl")]
14167#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14168#[cfg_attr(test, assert_instr(vpmovsdb))]
14169pub fn _mm_maskz_cvtsepi32_epi8(k: __mmask8, a: __m128i) -> __m128i {
14170    unsafe { transmute(vpmovsdb128(a.as_i32x4(), i8x16::ZERO, k)) }
14171}
14172
14173/// Convert packed signed 64-bit integers in a to packed 32-bit integers with signed saturation, and store the results in dst.
14174///
14175/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtsepi64_epi32&expand=1852)
14176#[inline]
14177#[target_feature(enable = "avx512f")]
14178#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14179#[cfg_attr(test, assert_instr(vpmovsqd))]
14180pub fn _mm512_cvtsepi64_epi32(a: __m512i) -> __m256i {
14181    unsafe { transmute(vpmovsqd(a.as_i64x8(), i32x8::ZERO, 0b11111111)) }
14182}
14183
14184/// Convert packed signed 64-bit integers in a to packed 32-bit integers with signed saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14185///
14186/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtsepi64_epi32&expand=1853)
14187#[inline]
14188#[target_feature(enable = "avx512f")]
14189#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14190#[cfg_attr(test, assert_instr(vpmovsqd))]
14191pub fn _mm512_mask_cvtsepi64_epi32(src: __m256i, k: __mmask8, a: __m512i) -> __m256i {
14192    unsafe { transmute(vpmovsqd(a.as_i64x8(), src.as_i32x8(), k)) }
14193}
14194
14195/// Convert packed signed 64-bit integers in a to packed 32-bit integers with signed saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14196///
14197/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtsepi64_epi32&expand=1854)
14198#[inline]
14199#[target_feature(enable = "avx512f")]
14200#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14201#[cfg_attr(test, assert_instr(vpmovsqd))]
14202pub fn _mm512_maskz_cvtsepi64_epi32(k: __mmask8, a: __m512i) -> __m256i {
14203    unsafe { transmute(vpmovsqd(a.as_i64x8(), i32x8::ZERO, k)) }
14204}
14205
14206/// Convert packed signed 64-bit integers in a to packed 32-bit integers with signed saturation, and store the results in dst.
14207///
14208/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtsepi64_epi32&expand=1849)
14209#[inline]
14210#[target_feature(enable = "avx512f,avx512vl")]
14211#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14212#[cfg_attr(test, assert_instr(vpmovsqd))]
14213pub fn _mm256_cvtsepi64_epi32(a: __m256i) -> __m128i {
14214    unsafe { transmute(vpmovsqd256(a.as_i64x4(), i32x4::ZERO, 0b11111111)) }
14215}
14216
14217/// Convert packed signed 64-bit integers in a to packed 32-bit integers with signed saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14218///
14219/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtsepi64_epi32&expand=1850)
14220#[inline]
14221#[target_feature(enable = "avx512f,avx512vl")]
14222#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14223#[cfg_attr(test, assert_instr(vpmovsqd))]
14224pub fn _mm256_mask_cvtsepi64_epi32(src: __m128i, k: __mmask8, a: __m256i) -> __m128i {
14225    unsafe { transmute(vpmovsqd256(a.as_i64x4(), src.as_i32x4(), k)) }
14226}
14227
14228/// Convert packed signed 64-bit integers in a to packed 32-bit integers with signed saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14229///
14230/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtsepi64_epi32&expand=1851)
14231#[inline]
14232#[target_feature(enable = "avx512f,avx512vl")]
14233#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14234#[cfg_attr(test, assert_instr(vpmovsqd))]
14235pub fn _mm256_maskz_cvtsepi64_epi32(k: __mmask8, a: __m256i) -> __m128i {
14236    unsafe { transmute(vpmovsqd256(a.as_i64x4(), i32x4::ZERO, k)) }
14237}
14238
14239/// Convert packed signed 64-bit integers in a to packed 32-bit integers with signed saturation, and store the results in dst.
14240///
14241/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsepi64_epi32&expand=1846)
14242#[inline]
14243#[target_feature(enable = "avx512f,avx512vl")]
14244#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14245#[cfg_attr(test, assert_instr(vpmovsqd))]
14246pub fn _mm_cvtsepi64_epi32(a: __m128i) -> __m128i {
14247    unsafe { transmute(vpmovsqd128(a.as_i64x2(), i32x4::ZERO, 0b11111111)) }
14248}
14249
14250/// Convert packed signed 64-bit integers in a to packed 32-bit integers with signed saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14251///
14252/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtsepi64_epi32&expand=1847)
14253#[inline]
14254#[target_feature(enable = "avx512f,avx512vl")]
14255#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14256#[cfg_attr(test, assert_instr(vpmovsqd))]
14257pub fn _mm_mask_cvtsepi64_epi32(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
14258    unsafe { transmute(vpmovsqd128(a.as_i64x2(), src.as_i32x4(), k)) }
14259}
14260
14261/// Convert packed signed 64-bit integers in a to packed 32-bit integers with signed saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14262///
14263/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtsepi64_epi32&expand=1848)
14264#[inline]
14265#[target_feature(enable = "avx512f,avx512vl")]
14266#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14267#[cfg_attr(test, assert_instr(vpmovsqd))]
14268pub fn _mm_maskz_cvtsepi64_epi32(k: __mmask8, a: __m128i) -> __m128i {
14269    unsafe { transmute(vpmovsqd128(a.as_i64x2(), i32x4::ZERO, k)) }
14270}
14271
14272/// Convert packed signed 64-bit integers in a to packed 16-bit integers with signed saturation, and store the results in dst.
14273///
14274/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtsepi64_epi16&expand=1843)
14275#[inline]
14276#[target_feature(enable = "avx512f")]
14277#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14278#[cfg_attr(test, assert_instr(vpmovsqw))]
14279pub fn _mm512_cvtsepi64_epi16(a: __m512i) -> __m128i {
14280    unsafe { transmute(vpmovsqw(a.as_i64x8(), i16x8::ZERO, 0b11111111)) }
14281}
14282
14283/// Convert packed signed 64-bit integers in a to packed 16-bit integers with signed saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14284///
14285/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtsepi64_epi16&expand=1844)
14286#[inline]
14287#[target_feature(enable = "avx512f")]
14288#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14289#[cfg_attr(test, assert_instr(vpmovsqw))]
14290pub fn _mm512_mask_cvtsepi64_epi16(src: __m128i, k: __mmask8, a: __m512i) -> __m128i {
14291    unsafe { transmute(vpmovsqw(a.as_i64x8(), src.as_i16x8(), k)) }
14292}
14293
14294/// Convert packed signed 64-bit integers in a to packed 16-bit integers with signed saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14295///
14296/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtsepi64_epi16&expand=1845)
14297#[inline]
14298#[target_feature(enable = "avx512f")]
14299#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14300#[cfg_attr(test, assert_instr(vpmovsqw))]
14301pub fn _mm512_maskz_cvtsepi64_epi16(k: __mmask8, a: __m512i) -> __m128i {
14302    unsafe { transmute(vpmovsqw(a.as_i64x8(), i16x8::ZERO, k)) }
14303}
14304
14305/// Convert packed signed 64-bit integers in a to packed 16-bit integers with signed saturation, and store the results in dst.
14306///
14307/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtsepi64_epi16&expand=1840)
14308#[inline]
14309#[target_feature(enable = "avx512f,avx512vl")]
14310#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14311#[cfg_attr(test, assert_instr(vpmovsqw))]
14312pub fn _mm256_cvtsepi64_epi16(a: __m256i) -> __m128i {
14313    unsafe { transmute(vpmovsqw256(a.as_i64x4(), i16x8::ZERO, 0b11111111)) }
14314}
14315
14316/// Convert packed signed 64-bit integers in a to packed 16-bit integers with signed saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14317///
14318/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtsepi64_epi16&expand=1841)
14319#[inline]
14320#[target_feature(enable = "avx512f,avx512vl")]
14321#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14322#[cfg_attr(test, assert_instr(vpmovsqw))]
14323pub fn _mm256_mask_cvtsepi64_epi16(src: __m128i, k: __mmask8, a: __m256i) -> __m128i {
14324    unsafe { transmute(vpmovsqw256(a.as_i64x4(), src.as_i16x8(), k)) }
14325}
14326
14327/// Convert packed signed 64-bit integers in a to packed 16-bit integers with signed saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14328///
14329/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtsepi64_epi16&expand=1842)
14330#[inline]
14331#[target_feature(enable = "avx512f,avx512vl")]
14332#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14333#[cfg_attr(test, assert_instr(vpmovsqw))]
14334pub fn _mm256_maskz_cvtsepi64_epi16(k: __mmask8, a: __m256i) -> __m128i {
14335    unsafe { transmute(vpmovsqw256(a.as_i64x4(), i16x8::ZERO, k)) }
14336}
14337
14338/// Convert packed signed 64-bit integers in a to packed 16-bit integers with signed saturation, and store the results in dst.
14339///
14340/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsepi64_epi16&expand=1837)
14341#[inline]
14342#[target_feature(enable = "avx512f,avx512vl")]
14343#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14344#[cfg_attr(test, assert_instr(vpmovsqw))]
14345pub fn _mm_cvtsepi64_epi16(a: __m128i) -> __m128i {
14346    unsafe { transmute(vpmovsqw128(a.as_i64x2(), i16x8::ZERO, 0b11111111)) }
14347}
14348
14349/// Convert packed signed 64-bit integers in a to packed 16-bit integers with signed saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14350///
14351/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtsepi64_epi16&expand=1838)
14352#[inline]
14353#[target_feature(enable = "avx512f,avx512vl")]
14354#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14355#[cfg_attr(test, assert_instr(vpmovsqw))]
14356pub fn _mm_mask_cvtsepi64_epi16(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
14357    unsafe { transmute(vpmovsqw128(a.as_i64x2(), src.as_i16x8(), k)) }
14358}
14359
14360/// Convert packed signed 64-bit integers in a to packed 16-bit integers with signed saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14361///
14362/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtsepi64_epi16&expand=1839)
14363#[inline]
14364#[target_feature(enable = "avx512f,avx512vl")]
14365#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14366#[cfg_attr(test, assert_instr(vpmovsqw))]
14367pub fn _mm_maskz_cvtsepi64_epi16(k: __mmask8, a: __m128i) -> __m128i {
14368    unsafe { transmute(vpmovsqw128(a.as_i64x2(), i16x8::ZERO, k)) }
14369}
14370
14371/// Convert packed signed 64-bit integers in a to packed 8-bit integers with signed saturation, and store the results in dst.
14372///
14373/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtsepi64_epi8&expand=1861)
14374#[inline]
14375#[target_feature(enable = "avx512f")]
14376#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14377#[cfg_attr(test, assert_instr(vpmovsqb))]
14378pub fn _mm512_cvtsepi64_epi8(a: __m512i) -> __m128i {
14379    unsafe { transmute(vpmovsqb(a.as_i64x8(), i8x16::ZERO, 0b11111111)) }
14380}
14381
14382/// Convert packed signed 64-bit integers in a to packed 8-bit integers with signed saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14383///
14384/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtsepi64_epi8&expand=1862)
14385#[inline]
14386#[target_feature(enable = "avx512f")]
14387#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14388#[cfg_attr(test, assert_instr(vpmovsqb))]
14389pub fn _mm512_mask_cvtsepi64_epi8(src: __m128i, k: __mmask8, a: __m512i) -> __m128i {
14390    unsafe { transmute(vpmovsqb(a.as_i64x8(), src.as_i8x16(), k)) }
14391}
14392
14393/// Convert packed signed 64-bit integers in a to packed 8-bit integers with signed saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14394///
14395/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtsepi64_epi8&expand=1863)
14396#[inline]
14397#[target_feature(enable = "avx512f")]
14398#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14399#[cfg_attr(test, assert_instr(vpmovsqb))]
14400pub fn _mm512_maskz_cvtsepi64_epi8(k: __mmask8, a: __m512i) -> __m128i {
14401    unsafe { transmute(vpmovsqb(a.as_i64x8(), i8x16::ZERO, k)) }
14402}
14403
14404/// Convert packed signed 64-bit integers in a to packed 8-bit integers with signed saturation, and store the results in dst.
14405///
14406/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtsepi64_epi8&expand=1858)
14407#[inline]
14408#[target_feature(enable = "avx512f,avx512vl")]
14409#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14410#[cfg_attr(test, assert_instr(vpmovsqb))]
14411pub fn _mm256_cvtsepi64_epi8(a: __m256i) -> __m128i {
14412    unsafe { transmute(vpmovsqb256(a.as_i64x4(), i8x16::ZERO, 0b11111111)) }
14413}
14414
14415/// Convert packed signed 64-bit integers in a to packed 8-bit integers with signed saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14416///
14417/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtsepi64_epi8&expand=1859)
14418#[inline]
14419#[target_feature(enable = "avx512f,avx512vl")]
14420#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14421#[cfg_attr(test, assert_instr(vpmovsqb))]
14422pub fn _mm256_mask_cvtsepi64_epi8(src: __m128i, k: __mmask8, a: __m256i) -> __m128i {
14423    unsafe { transmute(vpmovsqb256(a.as_i64x4(), src.as_i8x16(), k)) }
14424}
14425
14426/// Convert packed signed 64-bit integers in a to packed 8-bit integers with signed saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14427///
14428/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtsepi64_epi8&expand=1860)
14429#[inline]
14430#[target_feature(enable = "avx512f,avx512vl")]
14431#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14432#[cfg_attr(test, assert_instr(vpmovsqb))]
14433pub fn _mm256_maskz_cvtsepi64_epi8(k: __mmask8, a: __m256i) -> __m128i {
14434    unsafe { transmute(vpmovsqb256(a.as_i64x4(), i8x16::ZERO, k)) }
14435}
14436
14437/// Convert packed signed 64-bit integers in a to packed 8-bit integers with signed saturation, and store the results in dst.
14438///
14439/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsepi64_epi8&expand=1855)
14440#[inline]
14441#[target_feature(enable = "avx512f,avx512vl")]
14442#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14443#[cfg_attr(test, assert_instr(vpmovsqb))]
14444pub fn _mm_cvtsepi64_epi8(a: __m128i) -> __m128i {
14445    unsafe { transmute(vpmovsqb128(a.as_i64x2(), i8x16::ZERO, 0b11111111)) }
14446}
14447
14448/// Convert packed signed 64-bit integers in a to packed 8-bit integers with signed saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14449///
14450/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtsepi64_epi8&expand=1856)
14451#[inline]
14452#[target_feature(enable = "avx512f,avx512vl")]
14453#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14454#[cfg_attr(test, assert_instr(vpmovsqb))]
14455pub fn _mm_mask_cvtsepi64_epi8(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
14456    unsafe { transmute(vpmovsqb128(a.as_i64x2(), src.as_i8x16(), k)) }
14457}
14458
14459/// Convert packed signed 64-bit integers in a to packed 8-bit integers with signed saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14460///
14461/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtsepi64_epi8&expand=1857)
14462#[inline]
14463#[target_feature(enable = "avx512f,avx512vl")]
14464#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14465#[cfg_attr(test, assert_instr(vpmovsqb))]
14466pub fn _mm_maskz_cvtsepi64_epi8(k: __mmask8, a: __m128i) -> __m128i {
14467    unsafe { transmute(vpmovsqb128(a.as_i64x2(), i8x16::ZERO, k)) }
14468}
14469
14470/// Convert packed unsigned 32-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the results in dst.
14471///
14472/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtusepi32_epi16&expand=2054)
14473#[inline]
14474#[target_feature(enable = "avx512f")]
14475#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14476#[cfg_attr(test, assert_instr(vpmovusdw))]
14477pub fn _mm512_cvtusepi32_epi16(a: __m512i) -> __m256i {
14478    unsafe { transmute(vpmovusdw(a.as_u32x16(), u16x16::ZERO, 0b11111111_11111111)) }
14479}
14480
14481/// Convert packed unsigned 32-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14482///
14483/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtusepi32_epi16&expand=2055)
14484#[inline]
14485#[target_feature(enable = "avx512f")]
14486#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14487#[cfg_attr(test, assert_instr(vpmovusdw))]
14488pub fn _mm512_mask_cvtusepi32_epi16(src: __m256i, k: __mmask16, a: __m512i) -> __m256i {
14489    unsafe { transmute(vpmovusdw(a.as_u32x16(), src.as_u16x16(), k)) }
14490}
14491
14492/// Convert packed unsigned 32-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14493///
14494/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtusepi32_epi16&expand=2056)
14495#[inline]
14496#[target_feature(enable = "avx512f")]
14497#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14498#[cfg_attr(test, assert_instr(vpmovusdw))]
14499pub fn _mm512_maskz_cvtusepi32_epi16(k: __mmask16, a: __m512i) -> __m256i {
14500    unsafe { transmute(vpmovusdw(a.as_u32x16(), u16x16::ZERO, k)) }
14501}
14502
14503/// Convert packed unsigned 32-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the results in dst.
14504///
14505/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtusepi32_epi16&expand=2051)
14506#[inline]
14507#[target_feature(enable = "avx512f,avx512vl")]
14508#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14509#[cfg_attr(test, assert_instr(vpmovusdw))]
14510pub fn _mm256_cvtusepi32_epi16(a: __m256i) -> __m128i {
14511    unsafe { transmute(vpmovusdw256(a.as_u32x8(), u16x8::ZERO, 0b11111111)) }
14512}
14513
14514/// Convert packed unsigned 32-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14515///
14516/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtusepi32_epi16&expand=2052)
14517#[inline]
14518#[target_feature(enable = "avx512f,avx512vl")]
14519#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14520#[cfg_attr(test, assert_instr(vpmovusdw))]
14521pub fn _mm256_mask_cvtusepi32_epi16(src: __m128i, k: __mmask8, a: __m256i) -> __m128i {
14522    unsafe { transmute(vpmovusdw256(a.as_u32x8(), src.as_u16x8(), k)) }
14523}
14524
14525/// Convert packed unsigned 32-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14526///
14527/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtusepi32_epi16&expand=2053)
14528#[inline]
14529#[target_feature(enable = "avx512f,avx512vl")]
14530#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14531#[cfg_attr(test, assert_instr(vpmovusdw))]
14532pub fn _mm256_maskz_cvtusepi32_epi16(k: __mmask8, a: __m256i) -> __m128i {
14533    unsafe { transmute(vpmovusdw256(a.as_u32x8(), u16x8::ZERO, k)) }
14534}
14535
14536/// Convert packed unsigned 32-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the results in dst.
14537///
14538/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtusepi32_epi16&expand=2048)
14539#[inline]
14540#[target_feature(enable = "avx512f,avx512vl")]
14541#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14542#[cfg_attr(test, assert_instr(vpmovusdw))]
14543pub fn _mm_cvtusepi32_epi16(a: __m128i) -> __m128i {
14544    unsafe { transmute(vpmovusdw128(a.as_u32x4(), u16x8::ZERO, 0b11111111)) }
14545}
14546
14547/// Convert packed unsigned 32-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14548///
14549/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtusepi32_epi16&expand=2049)
14550#[inline]
14551#[target_feature(enable = "avx512f,avx512vl")]
14552#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14553#[cfg_attr(test, assert_instr(vpmovusdw))]
14554pub fn _mm_mask_cvtusepi32_epi16(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
14555    unsafe { transmute(vpmovusdw128(a.as_u32x4(), src.as_u16x8(), k)) }
14556}
14557
14558/// Convert packed unsigned 32-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14559///
14560/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtusepi32_epi16&expand=2050)
14561#[inline]
14562#[target_feature(enable = "avx512f,avx512vl")]
14563#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14564#[cfg_attr(test, assert_instr(vpmovusdw))]
14565pub fn _mm_maskz_cvtusepi32_epi16(k: __mmask8, a: __m128i) -> __m128i {
14566    unsafe { transmute(vpmovusdw128(a.as_u32x4(), u16x8::ZERO, k)) }
14567}
14568
14569/// Convert packed unsigned 32-bit integers in a to packed unsigned 8-bit integers with unsigned saturation, and store the results in dst.
14570///
14571/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtusepi32_epi8&expand=2063)
14572#[inline]
14573#[target_feature(enable = "avx512f")]
14574#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14575#[cfg_attr(test, assert_instr(vpmovusdb))]
14576pub fn _mm512_cvtusepi32_epi8(a: __m512i) -> __m128i {
14577    unsafe { transmute(vpmovusdb(a.as_u32x16(), u8x16::ZERO, 0b11111111_11111111)) }
14578}
14579
14580/// Convert packed unsigned 32-bit integers in a to packed unsigned 8-bit integers with unsigned saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14581///
14582/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtusepi32_epi8&expand=2064)
14583#[inline]
14584#[target_feature(enable = "avx512f")]
14585#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14586#[cfg_attr(test, assert_instr(vpmovusdb))]
14587pub fn _mm512_mask_cvtusepi32_epi8(src: __m128i, k: __mmask16, a: __m512i) -> __m128i {
14588    unsafe { transmute(vpmovusdb(a.as_u32x16(), src.as_u8x16(), k)) }
14589}
14590
14591/// Convert packed unsigned 32-bit integers in a to packed unsigned 8-bit integers with unsigned saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14592///
14593/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtusepi32_epi8&expand=2065)
14594#[inline]
14595#[target_feature(enable = "avx512f")]
14596#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14597#[cfg_attr(test, assert_instr(vpmovusdb))]
14598pub fn _mm512_maskz_cvtusepi32_epi8(k: __mmask16, a: __m512i) -> __m128i {
14599    unsafe { transmute(vpmovusdb(a.as_u32x16(), u8x16::ZERO, k)) }
14600}
14601
14602/// Convert packed unsigned 32-bit integers in a to packed unsigned 8-bit integers with unsigned saturation, and store the results in dst.
14603///
14604/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtusepi32_epi8&expand=2060)
14605#[inline]
14606#[target_feature(enable = "avx512f,avx512vl")]
14607#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14608#[cfg_attr(test, assert_instr(vpmovusdb))]
14609pub fn _mm256_cvtusepi32_epi8(a: __m256i) -> __m128i {
14610    unsafe { transmute(vpmovusdb256(a.as_u32x8(), u8x16::ZERO, 0b11111111)) }
14611}
14612
14613/// Convert packed unsigned 32-bit integers in a to packed unsigned 8-bit integers with unsigned saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14614///
14615/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtusepi32_epi8&expand=2061)
14616#[inline]
14617#[target_feature(enable = "avx512f,avx512vl")]
14618#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14619#[cfg_attr(test, assert_instr(vpmovusdb))]
14620pub fn _mm256_mask_cvtusepi32_epi8(src: __m128i, k: __mmask8, a: __m256i) -> __m128i {
14621    unsafe { transmute(vpmovusdb256(a.as_u32x8(), src.as_u8x16(), k)) }
14622}
14623
14624/// Convert packed unsigned 32-bit integers in a to packed unsigned 8-bit integers with unsigned saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14625///
14626/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtusepi32_epi8&expand=2062)
14627#[inline]
14628#[target_feature(enable = "avx512f,avx512vl")]
14629#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14630#[cfg_attr(test, assert_instr(vpmovusdb))]
14631pub fn _mm256_maskz_cvtusepi32_epi8(k: __mmask8, a: __m256i) -> __m128i {
14632    unsafe { transmute(vpmovusdb256(a.as_u32x8(), u8x16::ZERO, k)) }
14633}
14634
14635/// Convert packed unsigned 32-bit integers in a to packed unsigned 8-bit integers with unsigned saturation, and store the results in dst.
14636///
14637/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtusepi32_epi8&expand=2057)
14638#[inline]
14639#[target_feature(enable = "avx512f,avx512vl")]
14640#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14641#[cfg_attr(test, assert_instr(vpmovusdb))]
14642pub fn _mm_cvtusepi32_epi8(a: __m128i) -> __m128i {
14643    unsafe { transmute(vpmovusdb128(a.as_u32x4(), u8x16::ZERO, 0b11111111)) }
14644}
14645
14646/// Convert packed unsigned 32-bit integers in a to packed unsigned 8-bit integers with unsigned saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14647///
14648/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtusepi32_epi8&expand=2058)
14649#[inline]
14650#[target_feature(enable = "avx512f,avx512vl")]
14651#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14652#[cfg_attr(test, assert_instr(vpmovusdb))]
14653pub fn _mm_mask_cvtusepi32_epi8(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
14654    unsafe { transmute(vpmovusdb128(a.as_u32x4(), src.as_u8x16(), k)) }
14655}
14656
14657/// Convert packed unsigned 32-bit integers in a to packed unsigned 8-bit integers with unsigned saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14658///
14659/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtusepi32_epi8&expand=2059)
14660#[inline]
14661#[target_feature(enable = "avx512f,avx512vl")]
14662#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14663#[cfg_attr(test, assert_instr(vpmovusdb))]
14664pub fn _mm_maskz_cvtusepi32_epi8(k: __mmask8, a: __m128i) -> __m128i {
14665    unsafe { transmute(vpmovusdb128(a.as_u32x4(), u8x16::ZERO, k)) }
14666}
14667
14668/// Convert packed unsigned 64-bit integers in a to packed unsigned 32-bit integers with unsigned saturation, and store the results in dst.
14669///
14670/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtusepi64_epi32&expand=2087)
14671#[inline]
14672#[target_feature(enable = "avx512f")]
14673#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14674#[cfg_attr(test, assert_instr(vpmovusqd))]
14675pub fn _mm512_cvtusepi64_epi32(a: __m512i) -> __m256i {
14676    unsafe { transmute(vpmovusqd(a.as_u64x8(), u32x8::ZERO, 0b11111111)) }
14677}
14678
14679/// Convert packed unsigned 64-bit integers in a to packed unsigned 32-bit integers with unsigned saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14680///
14681/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtusepi64_epi32&expand=2088)
14682#[inline]
14683#[target_feature(enable = "avx512f")]
14684#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14685#[cfg_attr(test, assert_instr(vpmovusqd))]
14686pub fn _mm512_mask_cvtusepi64_epi32(src: __m256i, k: __mmask8, a: __m512i) -> __m256i {
14687    unsafe { transmute(vpmovusqd(a.as_u64x8(), src.as_u32x8(), k)) }
14688}
14689
14690/// Convert packed unsigned 64-bit integers in a to packed unsigned 32-bit integers with unsigned saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14691///
14692/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtusepi64_epi32&expand=2089)
14693#[inline]
14694#[target_feature(enable = "avx512f")]
14695#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14696#[cfg_attr(test, assert_instr(vpmovusqd))]
14697pub fn _mm512_maskz_cvtusepi64_epi32(k: __mmask8, a: __m512i) -> __m256i {
14698    unsafe { transmute(vpmovusqd(a.as_u64x8(), u32x8::ZERO, k)) }
14699}
14700
14701/// Convert packed unsigned 64-bit integers in a to packed unsigned 32-bit integers with unsigned saturation, and store the results in dst.
14702///
14703/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtusepi64_epi32&expand=2084)
14704#[inline]
14705#[target_feature(enable = "avx512f,avx512vl")]
14706#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14707#[cfg_attr(test, assert_instr(vpmovusqd))]
14708pub fn _mm256_cvtusepi64_epi32(a: __m256i) -> __m128i {
14709    unsafe { transmute(vpmovusqd256(a.as_u64x4(), u32x4::ZERO, 0b11111111)) }
14710}
14711
14712/// Convert packed unsigned 64-bit integers in a to packed unsigned 32-bit integers with unsigned saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14713///
14714/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtusepi64_epi32&expand=2085)
14715#[inline]
14716#[target_feature(enable = "avx512f,avx512vl")]
14717#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14718#[cfg_attr(test, assert_instr(vpmovusqd))]
14719pub fn _mm256_mask_cvtusepi64_epi32(src: __m128i, k: __mmask8, a: __m256i) -> __m128i {
14720    unsafe { transmute(vpmovusqd256(a.as_u64x4(), src.as_u32x4(), k)) }
14721}
14722
14723/// Convert packed unsigned 64-bit integers in a to packed unsigned 32-bit integers with unsigned saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14724///
14725/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtusepi64_epi32&expand=2086)
14726#[inline]
14727#[target_feature(enable = "avx512f,avx512vl")]
14728#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14729#[cfg_attr(test, assert_instr(vpmovusqd))]
14730pub fn _mm256_maskz_cvtusepi64_epi32(k: __mmask8, a: __m256i) -> __m128i {
14731    unsafe { transmute(vpmovusqd256(a.as_u64x4(), u32x4::ZERO, k)) }
14732}
14733
14734/// Convert packed unsigned 64-bit integers in a to packed unsigned 32-bit integers with unsigned saturation, and store the results in dst.
14735///
14736/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtusepi64_epi32&expand=2081)
14737#[inline]
14738#[target_feature(enable = "avx512f,avx512vl")]
14739#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14740#[cfg_attr(test, assert_instr(vpmovusqd))]
14741pub fn _mm_cvtusepi64_epi32(a: __m128i) -> __m128i {
14742    unsafe { transmute(vpmovusqd128(a.as_u64x2(), u32x4::ZERO, 0b11111111)) }
14743}
14744
14745/// Convert packed unsigned 64-bit integers in a to packed unsigned 32-bit integers with unsigned saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14746///
14747/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtusepi64_epi32&expand=2082)
14748#[inline]
14749#[target_feature(enable = "avx512f,avx512vl")]
14750#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14751#[cfg_attr(test, assert_instr(vpmovusqd))]
14752pub fn _mm_mask_cvtusepi64_epi32(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
14753    unsafe { transmute(vpmovusqd128(a.as_u64x2(), src.as_u32x4(), k)) }
14754}
14755
14756/// Convert packed unsigned 64-bit integers in a to packed unsigned 32-bit integers with unsigned saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14757///
14758/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtusepi64_epi32&expand=2083)
14759#[inline]
14760#[target_feature(enable = "avx512f,avx512vl")]
14761#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14762#[cfg_attr(test, assert_instr(vpmovusqd))]
14763pub fn _mm_maskz_cvtusepi64_epi32(k: __mmask8, a: __m128i) -> __m128i {
14764    unsafe { transmute(vpmovusqd128(a.as_u64x2(), u32x4::ZERO, k)) }
14765}
14766
14767/// Convert packed unsigned 64-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the results in dst.
14768///
14769/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtusepi64_epi16&expand=2078)
14770#[inline]
14771#[target_feature(enable = "avx512f")]
14772#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14773#[cfg_attr(test, assert_instr(vpmovusqw))]
14774pub fn _mm512_cvtusepi64_epi16(a: __m512i) -> __m128i {
14775    unsafe { transmute(vpmovusqw(a.as_u64x8(), u16x8::ZERO, 0b11111111)) }
14776}
14777
14778/// Convert packed unsigned 64-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14779///
14780/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtusepi64_epi16&expand=2079)
14781#[inline]
14782#[target_feature(enable = "avx512f")]
14783#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14784#[cfg_attr(test, assert_instr(vpmovusqw))]
14785pub fn _mm512_mask_cvtusepi64_epi16(src: __m128i, k: __mmask8, a: __m512i) -> __m128i {
14786    unsafe { transmute(vpmovusqw(a.as_u64x8(), src.as_u16x8(), k)) }
14787}
14788
14789/// Convert packed unsigned 64-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14790///
14791/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtusepi64_epi16&expand=2080)
14792#[inline]
14793#[target_feature(enable = "avx512f")]
14794#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14795#[cfg_attr(test, assert_instr(vpmovusqw))]
14796pub fn _mm512_maskz_cvtusepi64_epi16(k: __mmask8, a: __m512i) -> __m128i {
14797    unsafe { transmute(vpmovusqw(a.as_u64x8(), u16x8::ZERO, k)) }
14798}
14799
14800/// Convert packed unsigned 64-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the results in dst.
14801///
14802/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtusepi64_epi16&expand=2075)
14803#[inline]
14804#[target_feature(enable = "avx512f,avx512vl")]
14805#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14806#[cfg_attr(test, assert_instr(vpmovusqw))]
14807pub fn _mm256_cvtusepi64_epi16(a: __m256i) -> __m128i {
14808    unsafe { transmute(vpmovusqw256(a.as_u64x4(), u16x8::ZERO, 0b11111111)) }
14809}
14810
14811/// Convert packed unsigned 64-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14812///
14813/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtusepi64_epi16&expand=2076)
14814#[inline]
14815#[target_feature(enable = "avx512f,avx512vl")]
14816#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14817#[cfg_attr(test, assert_instr(vpmovusqw))]
14818pub fn _mm256_mask_cvtusepi64_epi16(src: __m128i, k: __mmask8, a: __m256i) -> __m128i {
14819    unsafe { transmute(vpmovusqw256(a.as_u64x4(), src.as_u16x8(), k)) }
14820}
14821
14822/// Convert packed unsigned 64-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14823///
14824/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtusepi64_epi16&expand=2077)
14825#[inline]
14826#[target_feature(enable = "avx512f,avx512vl")]
14827#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14828#[cfg_attr(test, assert_instr(vpmovusqw))]
14829pub fn _mm256_maskz_cvtusepi64_epi16(k: __mmask8, a: __m256i) -> __m128i {
14830    unsafe { transmute(vpmovusqw256(a.as_u64x4(), u16x8::ZERO, k)) }
14831}
14832
14833/// Convert packed unsigned 64-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the results in dst.
14834///
14835/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtusepi64_epi16&expand=2072)
14836#[inline]
14837#[target_feature(enable = "avx512f,avx512vl")]
14838#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14839#[cfg_attr(test, assert_instr(vpmovusqw))]
14840pub fn _mm_cvtusepi64_epi16(a: __m128i) -> __m128i {
14841    unsafe { transmute(vpmovusqw128(a.as_u64x2(), u16x8::ZERO, 0b11111111)) }
14842}
14843
14844/// Convert packed unsigned 64-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14845///
14846/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtusepi64_epi16&expand=2073)
14847#[inline]
14848#[target_feature(enable = "avx512f,avx512vl")]
14849#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14850#[cfg_attr(test, assert_instr(vpmovusqw))]
14851pub fn _mm_mask_cvtusepi64_epi16(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
14852    unsafe { transmute(vpmovusqw128(a.as_u64x2(), src.as_u16x8(), k)) }
14853}
14854
14855/// Convert packed unsigned 64-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14856///
14857/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtusepi64_epi16&expand=2074)
14858#[inline]
14859#[target_feature(enable = "avx512f,avx512vl")]
14860#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14861#[cfg_attr(test, assert_instr(vpmovusqw))]
14862pub fn _mm_maskz_cvtusepi64_epi16(k: __mmask8, a: __m128i) -> __m128i {
14863    unsafe { transmute(vpmovusqw128(a.as_u64x2(), u16x8::ZERO, k)) }
14864}
14865
14866/// Convert packed unsigned 64-bit integers in a to packed unsigned 8-bit integers with unsigned saturation, and store the results in dst.
14867///
14868/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtusepi64_epi8&expand=2096)
14869#[inline]
14870#[target_feature(enable = "avx512f")]
14871#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14872#[cfg_attr(test, assert_instr(vpmovusqb))]
14873pub fn _mm512_cvtusepi64_epi8(a: __m512i) -> __m128i {
14874    unsafe { transmute(vpmovusqb(a.as_u64x8(), u8x16::ZERO, 0b11111111)) }
14875}
14876
14877/// Convert packed unsigned 64-bit integers in a to packed unsigned 8-bit integers with unsigned saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14878///
14879/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtusepi64_epi8&expand=2097)
14880#[inline]
14881#[target_feature(enable = "avx512f")]
14882#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14883#[cfg_attr(test, assert_instr(vpmovusqb))]
14884pub fn _mm512_mask_cvtusepi64_epi8(src: __m128i, k: __mmask8, a: __m512i) -> __m128i {
14885    unsafe { transmute(vpmovusqb(a.as_u64x8(), src.as_u8x16(), k)) }
14886}
14887
14888/// Convert packed unsigned 64-bit integers in a to packed unsigned 8-bit integers with unsigned saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14889///
14890/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtusepi64_epi8&expand=2098)
14891#[inline]
14892#[target_feature(enable = "avx512f")]
14893#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14894#[cfg_attr(test, assert_instr(vpmovusqb))]
14895pub fn _mm512_maskz_cvtusepi64_epi8(k: __mmask8, a: __m512i) -> __m128i {
14896    unsafe { transmute(vpmovusqb(a.as_u64x8(), u8x16::ZERO, k)) }
14897}
14898
14899/// Convert packed unsigned 64-bit integers in a to packed unsigned 8-bit integers with unsigned saturation, and store the results in dst.
14900///
14901/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvtusepi64_epi8&expand=2093)
14902#[inline]
14903#[target_feature(enable = "avx512f,avx512vl")]
14904#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14905#[cfg_attr(test, assert_instr(vpmovusqb))]
14906pub fn _mm256_cvtusepi64_epi8(a: __m256i) -> __m128i {
14907    unsafe { transmute(vpmovusqb256(a.as_u64x4(), u8x16::ZERO, 0b11111111)) }
14908}
14909
14910/// Convert packed unsigned 64-bit integers in a to packed unsigned 8-bit integers with unsigned saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14911///
14912/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtusepi64_epi8&expand=2094)
14913#[inline]
14914#[target_feature(enable = "avx512f,avx512vl")]
14915#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14916#[cfg_attr(test, assert_instr(vpmovusqb))]
14917pub fn _mm256_mask_cvtusepi64_epi8(src: __m128i, k: __mmask8, a: __m256i) -> __m128i {
14918    unsafe { transmute(vpmovusqb256(a.as_u64x4(), src.as_u8x16(), k)) }
14919}
14920
14921/// Convert packed unsigned 64-bit integers in a to packed unsigned 8-bit integers with unsigned saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14922///
14923/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtusepi64_epi8&expand=2095)
14924#[inline]
14925#[target_feature(enable = "avx512f,avx512vl")]
14926#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14927#[cfg_attr(test, assert_instr(vpmovusqb))]
14928pub fn _mm256_maskz_cvtusepi64_epi8(k: __mmask8, a: __m256i) -> __m128i {
14929    unsafe { transmute(vpmovusqb256(a.as_u64x4(), u8x16::ZERO, k)) }
14930}
14931
14932/// Convert packed unsigned 64-bit integers in a to packed unsigned 8-bit integers with unsigned saturation, and store the results in dst.
14933///
14934/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtusepi64_epi8&expand=2090)
14935#[inline]
14936#[target_feature(enable = "avx512f,avx512vl")]
14937#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14938#[cfg_attr(test, assert_instr(vpmovusqb))]
14939pub fn _mm_cvtusepi64_epi8(a: __m128i) -> __m128i {
14940    unsafe { transmute(vpmovusqb128(a.as_u64x2(), u8x16::ZERO, 0b11111111)) }
14941}
14942
14943/// Convert packed unsigned 64-bit integers in a to packed unsigned 8-bit integers with unsigned saturation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
14944///
14945/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtusepi64_epi8&expand=2091)
14946#[inline]
14947#[target_feature(enable = "avx512f,avx512vl")]
14948#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14949#[cfg_attr(test, assert_instr(vpmovusqb))]
14950pub fn _mm_mask_cvtusepi64_epi8(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
14951    unsafe { transmute(vpmovusqb128(a.as_u64x2(), src.as_u8x16(), k)) }
14952}
14953
14954/// Convert packed unsigned 64-bit integers in a to packed unsigned 8-bit integers with unsigned saturation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
14955///
14956/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtusepi64_epi8&expand=2092)
14957#[inline]
14958#[target_feature(enable = "avx512f,avx512vl")]
14959#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14960#[cfg_attr(test, assert_instr(vpmovusqb))]
14961pub fn _mm_maskz_cvtusepi64_epi8(k: __mmask8, a: __m128i) -> __m128i {
14962    unsafe { transmute(vpmovusqb128(a.as_u64x2(), u8x16::ZERO, k)) }
14963}
14964
14965/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst.
14966///
14967/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:
14968/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
14969/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
14970/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
14971/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
14972/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
14973///
14974/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvt_roundps_epi32&expand=1335)
14975#[inline]
14976#[target_feature(enable = "avx512f")]
14977#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
14978#[cfg_attr(test, assert_instr(vcvtps2dq, ROUNDING = 8))]
14979#[rustc_legacy_const_generics(1)]
14980pub fn _mm512_cvt_roundps_epi32<const ROUNDING: i32>(a: __m512) -> __m512i {
14981    unsafe {
14982        static_assert_rounding!(ROUNDING);
14983        let a = a.as_f32x16();
14984        let r = vcvtps2dq(a, i32x16::ZERO, 0b11111111_11111111, ROUNDING);
14985        transmute(r)
14986    }
14987}
14988
14989/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
14990///
14991/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
14992/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
14993/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
14994/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
14995/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
14996/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
14997///
14998/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvt_roundps_epi32&expand=1336)
14999#[inline]
15000#[target_feature(enable = "avx512f")]
15001#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15002#[cfg_attr(test, assert_instr(vcvtps2dq, ROUNDING = 8))]
15003#[rustc_legacy_const_generics(3)]
15004pub fn _mm512_mask_cvt_roundps_epi32<const ROUNDING: i32>(
15005    src: __m512i,
15006    k: __mmask16,
15007    a: __m512,
15008) -> __m512i {
15009    unsafe {
15010        static_assert_rounding!(ROUNDING);
15011        let a = a.as_f32x16();
15012        let src = src.as_i32x16();
15013        let r = vcvtps2dq(a, src, k, ROUNDING);
15014        transmute(r)
15015    }
15016}
15017
15018/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
15019///
15020/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
15021/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
15022/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
15023/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
15024/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
15025/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15026///
15027/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvt_roundps_epi32&expand=1337)
15028#[inline]
15029#[target_feature(enable = "avx512f")]
15030#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15031#[cfg_attr(test, assert_instr(vcvtps2dq, ROUNDING = 8))]
15032#[rustc_legacy_const_generics(2)]
15033pub fn _mm512_maskz_cvt_roundps_epi32<const ROUNDING: i32>(k: __mmask16, a: __m512) -> __m512i {
15034    unsafe {
15035        static_assert_rounding!(ROUNDING);
15036        let a = a.as_f32x16();
15037        let r = vcvtps2dq(a, i32x16::ZERO, k, ROUNDING);
15038        transmute(r)
15039    }
15040}
15041
15042/// Convert packed single-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst.\
15043///
15044/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
15045/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
15046/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
15047/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
15048/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
15049/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15050///
15051/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvt_roundps_epu32&expand=1341)
15052#[inline]
15053#[target_feature(enable = "avx512f")]
15054#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15055#[cfg_attr(test, assert_instr(vcvtps2udq, ROUNDING = 8))]
15056#[rustc_legacy_const_generics(1)]
15057pub fn _mm512_cvt_roundps_epu32<const ROUNDING: i32>(a: __m512) -> __m512i {
15058    unsafe {
15059        static_assert_rounding!(ROUNDING);
15060        let a = a.as_f32x16();
15061        let r = vcvtps2udq(a, u32x16::ZERO, 0b11111111_11111111, ROUNDING);
15062        transmute(r)
15063    }
15064}
15065
15066/// Convert packed single-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
15067///
15068/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
15069/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
15070/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
15071/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
15072/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
15073/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15074///
15075/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvt_roundps_epu32&expand=1342)
15076#[inline]
15077#[target_feature(enable = "avx512f")]
15078#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15079#[cfg_attr(test, assert_instr(vcvtps2udq, ROUNDING = 8))]
15080#[rustc_legacy_const_generics(3)]
15081pub fn _mm512_mask_cvt_roundps_epu32<const ROUNDING: i32>(
15082    src: __m512i,
15083    k: __mmask16,
15084    a: __m512,
15085) -> __m512i {
15086    unsafe {
15087        static_assert_rounding!(ROUNDING);
15088        let a = a.as_f32x16();
15089        let src = src.as_u32x16();
15090        let r = vcvtps2udq(a, src, k, ROUNDING);
15091        transmute(r)
15092    }
15093}
15094
15095/// Convert packed single-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
15096///
15097/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
15098/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
15099/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
15100/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
15101/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
15102/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15103///
15104/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvt_roundps_epu32&expand=1343)
15105#[inline]
15106#[target_feature(enable = "avx512f")]
15107#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15108#[cfg_attr(test, assert_instr(vcvtps2udq, ROUNDING = 8))]
15109#[rustc_legacy_const_generics(2)]
15110pub fn _mm512_maskz_cvt_roundps_epu32<const ROUNDING: i32>(k: __mmask16, a: __m512) -> __m512i {
15111    unsafe {
15112        static_assert_rounding!(ROUNDING);
15113        let a = a.as_f32x16();
15114        let r = vcvtps2udq(a, u32x16::ZERO, k, ROUNDING);
15115        transmute(r)
15116    }
15117}
15118
15119/// Convert packed single-precision (32-bit) floating-point elements in a to packed double-precision (64-bit) floating-point elements, and store the results in dst.\
15120/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
15121///
15122/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvt_roundps_pd&expand=1347)
15123#[inline]
15124#[target_feature(enable = "avx512f")]
15125#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15126#[cfg_attr(test, assert_instr(vcvtps2pd, SAE = 8))]
15127#[rustc_legacy_const_generics(1)]
15128pub fn _mm512_cvt_roundps_pd<const SAE: i32>(a: __m256) -> __m512d {
15129    unsafe {
15130        static_assert_sae!(SAE);
15131        let a = a.as_f32x8();
15132        let r = vcvtps2pd(a, f64x8::ZERO, 0b11111111, SAE);
15133        transmute(r)
15134    }
15135}
15136
15137/// Convert packed single-precision (32-bit) floating-point elements in a to packed double-precision (64-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
15138/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
15139///
15140/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvt_roundps_pd&expand=1336)
15141#[inline]
15142#[target_feature(enable = "avx512f")]
15143#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15144#[cfg_attr(test, assert_instr(vcvtps2pd, SAE = 8))]
15145#[rustc_legacy_const_generics(3)]
15146pub fn _mm512_mask_cvt_roundps_pd<const SAE: i32>(src: __m512d, k: __mmask8, a: __m256) -> __m512d {
15147    unsafe {
15148        static_assert_sae!(SAE);
15149        let a = a.as_f32x8();
15150        let src = src.as_f64x8();
15151        let r = vcvtps2pd(a, src, k, SAE);
15152        transmute(r)
15153    }
15154}
15155
15156/// Convert packed single-precision (32-bit) floating-point elements in a to packed double-precision (64-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
15157/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
15158///
15159/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvt_roundps_pd&expand=1337)
15160#[inline]
15161#[target_feature(enable = "avx512f")]
15162#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15163#[cfg_attr(test, assert_instr(vcvtps2pd, SAE = 8))]
15164#[rustc_legacy_const_generics(2)]
15165pub fn _mm512_maskz_cvt_roundps_pd<const SAE: i32>(k: __mmask8, a: __m256) -> __m512d {
15166    unsafe {
15167        static_assert_sae!(SAE);
15168        let a = a.as_f32x8();
15169        let r = vcvtps2pd(a, f64x8::ZERO, k, SAE);
15170        transmute(r)
15171    }
15172}
15173
15174/// Convert packed double-precision (64-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst.\
15175///
15176/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
15177/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
15178/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
15179/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
15180/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
15181/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15182///
15183/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvt_roundpd_epi32&expand=1315)
15184#[inline]
15185#[target_feature(enable = "avx512f")]
15186#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15187#[cfg_attr(test, assert_instr(vcvtpd2dq, ROUNDING = 8))]
15188#[rustc_legacy_const_generics(1)]
15189pub fn _mm512_cvt_roundpd_epi32<const ROUNDING: i32>(a: __m512d) -> __m256i {
15190    unsafe {
15191        static_assert_rounding!(ROUNDING);
15192        let a = a.as_f64x8();
15193        let r = vcvtpd2dq(a, i32x8::ZERO, 0b11111111, ROUNDING);
15194        transmute(r)
15195    }
15196}
15197
15198/// Convert packed double-precision (64-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
15199///
15200/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
15201/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
15202/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
15203/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
15204/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
15205/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15206///
15207/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvt_roundpd_epi32&expand=1316)
15208#[inline]
15209#[target_feature(enable = "avx512f")]
15210#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15211#[cfg_attr(test, assert_instr(vcvtpd2dq, ROUNDING = 8))]
15212#[rustc_legacy_const_generics(3)]
15213pub fn _mm512_mask_cvt_roundpd_epi32<const ROUNDING: i32>(
15214    src: __m256i,
15215    k: __mmask8,
15216    a: __m512d,
15217) -> __m256i {
15218    unsafe {
15219        static_assert_rounding!(ROUNDING);
15220        let a = a.as_f64x8();
15221        let src = src.as_i32x8();
15222        let r = vcvtpd2dq(a, src, k, ROUNDING);
15223        transmute(r)
15224    }
15225}
15226
15227/// Convert packed double-precision (64-bit) floating-point elements in a to packed 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
15228///
15229/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
15230/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
15231/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
15232/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
15233/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
15234/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15235///
15236/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/IntrinsicsGuide/#text=_mm512_maskz_cvt_roundpd_epi32&expand=1317)
15237#[inline]
15238#[target_feature(enable = "avx512f")]
15239#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15240#[cfg_attr(test, assert_instr(vcvtpd2dq, ROUNDING = 8))]
15241#[rustc_legacy_const_generics(2)]
15242pub fn _mm512_maskz_cvt_roundpd_epi32<const ROUNDING: i32>(k: __mmask8, a: __m512d) -> __m256i {
15243    unsafe {
15244        static_assert_rounding!(ROUNDING);
15245        let a = a.as_f64x8();
15246        let r = vcvtpd2dq(a, i32x8::ZERO, k, ROUNDING);
15247        transmute(r)
15248    }
15249}
15250
15251/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst.\
15252///
15253/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
15254/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
15255/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
15256/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
15257/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
15258/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15259///
15260/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvt_roundpd_epu32&expand=1321)
15261#[inline]
15262#[target_feature(enable = "avx512f")]
15263#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15264#[cfg_attr(test, assert_instr(vcvtpd2udq, ROUNDING = 8))]
15265#[rustc_legacy_const_generics(1)]
15266pub fn _mm512_cvt_roundpd_epu32<const ROUNDING: i32>(a: __m512d) -> __m256i {
15267    unsafe {
15268        static_assert_rounding!(ROUNDING);
15269        let a = a.as_f64x8();
15270        let r = vcvtpd2udq(a, u32x8::ZERO, 0b11111111, ROUNDING);
15271        transmute(r)
15272    }
15273}
15274
15275/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
15276///
15277/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
15278/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
15279/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
15280/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
15281/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
15282/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15283///
15284/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvt_roundpd_epu32&expand=1322)
15285#[inline]
15286#[target_feature(enable = "avx512f")]
15287#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15288#[cfg_attr(test, assert_instr(vcvtpd2udq, ROUNDING = 8))]
15289#[rustc_legacy_const_generics(3)]
15290pub fn _mm512_mask_cvt_roundpd_epu32<const ROUNDING: i32>(
15291    src: __m256i,
15292    k: __mmask8,
15293    a: __m512d,
15294) -> __m256i {
15295    unsafe {
15296        static_assert_rounding!(ROUNDING);
15297        let a = a.as_f64x8();
15298        let src = src.as_u32x8();
15299        let r = vcvtpd2udq(a, src, k, ROUNDING);
15300        transmute(r)
15301    }
15302}
15303
15304/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
15305///
15306/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
15307/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
15308/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
15309/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
15310/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
15311/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15312///
15313/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/IntrinsicsGuide/#text=_mm512_maskz_cvt_roundpd_epu32&expand=1323)
15314#[inline]
15315#[target_feature(enable = "avx512f")]
15316#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15317#[cfg_attr(test, assert_instr(vcvtpd2udq, ROUNDING = 8))]
15318#[rustc_legacy_const_generics(2)]
15319pub fn _mm512_maskz_cvt_roundpd_epu32<const ROUNDING: i32>(k: __mmask8, a: __m512d) -> __m256i {
15320    unsafe {
15321        static_assert_rounding!(ROUNDING);
15322        let a = a.as_f64x8();
15323        let r = vcvtpd2udq(a, u32x8::ZERO, k, ROUNDING);
15324        transmute(r)
15325    }
15326}
15327
15328/// Convert packed double-precision (64-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst.\
15329///
15330/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
15331/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
15332/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
15333/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
15334/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
15335/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15336///
15337/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvt_roundpd_ps&expand=1327)
15338#[inline]
15339#[target_feature(enable = "avx512f")]
15340#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15341#[cfg_attr(test, assert_instr(vcvtpd2ps, ROUNDING = 8))]
15342#[rustc_legacy_const_generics(1)]
15343pub fn _mm512_cvt_roundpd_ps<const ROUNDING: i32>(a: __m512d) -> __m256 {
15344    unsafe {
15345        static_assert_rounding!(ROUNDING);
15346        let a = a.as_f64x8();
15347        let r = vcvtpd2ps(a, f32x8::ZERO, 0b11111111, ROUNDING);
15348        transmute(r)
15349    }
15350}
15351
15352/// Convert packed double-precision (64-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
15353///
15354/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
15355/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
15356/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
15357/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
15358/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
15359/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15360///
15361/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvt_roundpd_ps&expand=1328)
15362#[inline]
15363#[target_feature(enable = "avx512f")]
15364#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15365#[cfg_attr(test, assert_instr(vcvtpd2ps, ROUNDING = 8))]
15366#[rustc_legacy_const_generics(3)]
15367pub fn _mm512_mask_cvt_roundpd_ps<const ROUNDING: i32>(
15368    src: __m256,
15369    k: __mmask8,
15370    a: __m512d,
15371) -> __m256 {
15372    unsafe {
15373        static_assert_rounding!(ROUNDING);
15374        let a = a.as_f64x8();
15375        let src = src.as_f32x8();
15376        let r = vcvtpd2ps(a, src, k, ROUNDING);
15377        transmute(r)
15378    }
15379}
15380
15381/// Convert packed double-precision (64-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
15382///
15383/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
15384/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
15385/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
15386/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
15387/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
15388/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15389///
15390/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvt_roundpd_ps&expand=1329)
15391#[inline]
15392#[target_feature(enable = "avx512f")]
15393#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15394#[cfg_attr(test, assert_instr(vcvtpd2ps, ROUNDING = 8))]
15395#[rustc_legacy_const_generics(2)]
15396pub fn _mm512_maskz_cvt_roundpd_ps<const ROUNDING: i32>(k: __mmask8, a: __m512d) -> __m256 {
15397    unsafe {
15398        static_assert_rounding!(ROUNDING);
15399        let a = a.as_f64x8();
15400        let r = vcvtpd2ps(a, f32x8::ZERO, k, ROUNDING);
15401        transmute(r)
15402    }
15403}
15404
15405/// Convert packed signed 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst.\
15406///
15407/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
15408/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
15409/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
15410/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
15411/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
15412/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15413///
15414/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvt_roundepi32_ps&expand=1294)
15415#[inline]
15416#[target_feature(enable = "avx512f")]
15417#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15418#[cfg_attr(test, assert_instr(vcvtdq2ps, ROUNDING = 8))]
15419#[rustc_legacy_const_generics(1)]
15420pub fn _mm512_cvt_roundepi32_ps<const ROUNDING: i32>(a: __m512i) -> __m512 {
15421    unsafe {
15422        static_assert_rounding!(ROUNDING);
15423        let a = a.as_i32x16();
15424        let r = vcvtdq2ps(a, ROUNDING);
15425        transmute(r)
15426    }
15427}
15428
15429/// Convert packed signed 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
15430///
15431/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
15432/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
15433/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
15434/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
15435/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
15436/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15437///
15438/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvt_roundepi32_ps&expand=1295)
15439#[inline]
15440#[target_feature(enable = "avx512f")]
15441#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15442#[cfg_attr(test, assert_instr(vcvtdq2ps, ROUNDING = 8))]
15443#[rustc_legacy_const_generics(3)]
15444pub fn _mm512_mask_cvt_roundepi32_ps<const ROUNDING: i32>(
15445    src: __m512,
15446    k: __mmask16,
15447    a: __m512i,
15448) -> __m512 {
15449    unsafe {
15450        static_assert_rounding!(ROUNDING);
15451        let a = a.as_i32x16();
15452        let r = vcvtdq2ps(a, ROUNDING);
15453        transmute(simd_select_bitmask(k, r, src.as_f32x16()))
15454    }
15455}
15456
15457/// Convert packed signed 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
15458///
15459/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
15460/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
15461/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
15462/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
15463/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
15464/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15465///
15466/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvt_roundepi32_ps&expand=1296)
15467#[inline]
15468#[target_feature(enable = "avx512f")]
15469#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15470#[cfg_attr(test, assert_instr(vcvtdq2ps, ROUNDING = 8))]
15471#[rustc_legacy_const_generics(2)]
15472pub fn _mm512_maskz_cvt_roundepi32_ps<const ROUNDING: i32>(k: __mmask16, a: __m512i) -> __m512 {
15473    unsafe {
15474        static_assert_rounding!(ROUNDING);
15475        let a = a.as_i32x16();
15476        let r = vcvtdq2ps(a, ROUNDING);
15477        transmute(simd_select_bitmask(k, r, f32x16::ZERO))
15478    }
15479}
15480
15481/// Convert packed unsigned 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst.\
15482///
15483/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
15484/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
15485/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
15486/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
15487/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
15488/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15489///
15490/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvt_roundepu32_ps&expand=1303)
15491#[inline]
15492#[target_feature(enable = "avx512f")]
15493#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15494#[cfg_attr(test, assert_instr(vcvtudq2ps, ROUNDING = 8))]
15495#[rustc_legacy_const_generics(1)]
15496pub fn _mm512_cvt_roundepu32_ps<const ROUNDING: i32>(a: __m512i) -> __m512 {
15497    unsafe {
15498        static_assert_rounding!(ROUNDING);
15499        let a = a.as_u32x16();
15500        let r = vcvtudq2ps(a, ROUNDING);
15501        transmute(r)
15502    }
15503}
15504
15505/// Convert packed unsigned 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
15506///
15507/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
15508/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
15509/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
15510/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
15511/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
15512/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15513///
15514/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvt_roundepu32_ps&expand=1304)
15515#[inline]
15516#[target_feature(enable = "avx512f")]
15517#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15518#[cfg_attr(test, assert_instr(vcvtudq2ps, ROUNDING = 8))]
15519#[rustc_legacy_const_generics(3)]
15520pub fn _mm512_mask_cvt_roundepu32_ps<const ROUNDING: i32>(
15521    src: __m512,
15522    k: __mmask16,
15523    a: __m512i,
15524) -> __m512 {
15525    unsafe {
15526        static_assert_rounding!(ROUNDING);
15527        let a = a.as_u32x16();
15528        let r = vcvtudq2ps(a, ROUNDING);
15529        transmute(simd_select_bitmask(k, r, src.as_f32x16()))
15530    }
15531}
15532
15533/// Convert packed unsigned 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
15534///
15535/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
15536/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
15537/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
15538/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
15539/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
15540/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15541///
15542/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvt_roundepu32_ps&expand=1305)
15543#[inline]
15544#[target_feature(enable = "avx512f")]
15545#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15546#[cfg_attr(test, assert_instr(vcvtudq2ps, ROUNDING = 8))]
15547#[rustc_legacy_const_generics(2)]
15548pub fn _mm512_maskz_cvt_roundepu32_ps<const ROUNDING: i32>(k: __mmask16, a: __m512i) -> __m512 {
15549    unsafe {
15550        static_assert_rounding!(ROUNDING);
15551        let a = a.as_u32x16();
15552        let r = vcvtudq2ps(a, ROUNDING);
15553        transmute(simd_select_bitmask(k, r, f32x16::ZERO))
15554    }
15555}
15556
15557/// Convert packed single-precision (32-bit) floating-point elements in a to packed half-precision (16-bit) floating-point elements, and store the results in dst.\
15558/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:
15559///  * [`_MM_FROUND_TO_NEAREST_INT`] // round to nearest
15560///  * [`_MM_FROUND_TO_NEG_INF`]     // round down
15561///  * [`_MM_FROUND_TO_POS_INF`]    // round up
15562///  * [`_MM_FROUND_TO_ZERO`]        // truncate
15563///  * [`_MM_FROUND_CUR_DIRECTION`]    // use MXCSR.RC; see [`_MM_SET_ROUNDING_MODE`]
15564///  * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] // round to nearest, and suppress exceptions
15565///  * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`]     // round down, and suppress exceptions
15566///  * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`]     // round up, and suppress exceptions
15567///  * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`]        // truncate, and suppress exceptions
15568///  * [`_MM_FROUND_CUR_DIRECTION`] | [`_MM_FROUND_NO_EXC`]  // use MXCSR.RC and suppress exceptions; see [`_MM_SET_ROUNDING_MODE`]
15569///
15570/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvt_roundps_ph&expand=1354)
15571#[inline]
15572#[target_feature(enable = "avx512f")]
15573#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15574#[cfg_attr(test, assert_instr(vcvtps2ph, ROUNDING = 8))]
15575#[rustc_legacy_const_generics(1)]
15576pub fn _mm512_cvt_roundps_ph<const ROUNDING: i32>(a: __m512) -> __m256i {
15577    unsafe {
15578        static_assert_extended_rounding!(ROUNDING);
15579        let a = a.as_f32x16();
15580        let r = vcvtps2ph(a, ROUNDING, i16x16::ZERO, 0b11111111_11111111);
15581        transmute(r)
15582    }
15583}
15584
15585/// Convert packed single-precision (32-bit) floating-point elements in a to packed half-precision (16-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
15586/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:
15587///  * [`_MM_FROUND_TO_NEAREST_INT`] // round to nearest
15588///  * [`_MM_FROUND_TO_NEG_INF`]     // round down
15589///  * [`_MM_FROUND_TO_POS_INF`]    // round up
15590///  * [`_MM_FROUND_TO_ZERO`]        // truncate
15591///  * [`_MM_FROUND_CUR_DIRECTION`]    // use MXCSR.RC; see [`_MM_SET_ROUNDING_MODE`]
15592///  * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] // round to nearest, and suppress exceptions
15593///  * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`]     // round down, and suppress exceptions
15594///  * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`]     // round up, and suppress exceptions
15595///  * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`]        // truncate, and suppress exceptions
15596///  * [`_MM_FROUND_CUR_DIRECTION`] | [`_MM_FROUND_NO_EXC`]  // use MXCSR.RC and suppress exceptions; see [`_MM_SET_ROUNDING_MODE`]
15597///
15598/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvt_roundps_ph&expand=1355)
15599#[inline]
15600#[target_feature(enable = "avx512f")]
15601#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15602#[cfg_attr(test, assert_instr(vcvtps2ph, ROUNDING = 8))]
15603#[rustc_legacy_const_generics(3)]
15604pub fn _mm512_mask_cvt_roundps_ph<const ROUNDING: i32>(
15605    src: __m256i,
15606    k: __mmask16,
15607    a: __m512,
15608) -> __m256i {
15609    unsafe {
15610        static_assert_extended_rounding!(ROUNDING);
15611        let a = a.as_f32x16();
15612        let src = src.as_i16x16();
15613        let r = vcvtps2ph(a, ROUNDING, src, k);
15614        transmute(r)
15615    }
15616}
15617
15618/// Convert packed single-precision (32-bit) floating-point elements in a to packed half-precision (16-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
15619/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:
15620///  * [`_MM_FROUND_TO_NEAREST_INT`] // round to nearest
15621///  * [`_MM_FROUND_TO_NEG_INF`]     // round down
15622///  * [`_MM_FROUND_TO_POS_INF`]    // round up
15623///  * [`_MM_FROUND_TO_ZERO`]        // truncate
15624///  * [`_MM_FROUND_CUR_DIRECTION`]    // use MXCSR.RC; see [`_MM_SET_ROUNDING_MODE`]
15625///  * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] // round to nearest, and suppress exceptions
15626///  * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`]     // round down, and suppress exceptions
15627///  * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`]     // round up, and suppress exceptions
15628///  * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`]        // truncate, and suppress exceptions
15629///  * [`_MM_FROUND_CUR_DIRECTION`] | [`_MM_FROUND_NO_EXC`]  // use MXCSR.RC and suppress exceptions; see [`_MM_SET_ROUNDING_MODE`]
15630///
15631/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvt_roundps_ph&expand=1356)
15632#[inline]
15633#[target_feature(enable = "avx512f")]
15634#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15635#[cfg_attr(test, assert_instr(vcvtps2ph, ROUNDING = 8))]
15636#[rustc_legacy_const_generics(2)]
15637pub fn _mm512_maskz_cvt_roundps_ph<const ROUNDING: i32>(k: __mmask16, a: __m512) -> __m256i {
15638    unsafe {
15639        static_assert_extended_rounding!(ROUNDING);
15640        let a = a.as_f32x16();
15641        let r = vcvtps2ph(a, ROUNDING, i16x16::ZERO, k);
15642        transmute(r)
15643    }
15644}
15645
15646/// Convert packed single-precision (32-bit) floating-point elements in a to packed half-precision (16-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
15647/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:
15648/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
15649/// * [`_MM_FROUND_TO_NEG_INF`] : round down
15650/// * [`_MM_FROUND_TO_POS_INF`] : round up
15651/// * [`_MM_FROUND_TO_ZERO`] : truncate
15652/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15653///
15654/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvt_roundps_ph&expand=1352)
15655#[inline]
15656#[target_feature(enable = "avx512f,avx512vl")]
15657#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15658#[cfg_attr(test, assert_instr(vcvtps2ph, IMM8 = 0))]
15659#[rustc_legacy_const_generics(3)]
15660pub fn _mm256_mask_cvt_roundps_ph<const IMM8: i32>(
15661    src: __m128i,
15662    k: __mmask8,
15663    a: __m256,
15664) -> __m128i {
15665    unsafe {
15666        static_assert_round_mode!(IMM8);
15667        let a = a.as_f32x8();
15668        let src = src.as_i16x8();
15669        let r = vcvtps2ph256(a, IMM8, src, k);
15670        transmute(r)
15671    }
15672}
15673
15674/// Convert packed single-precision (32-bit) floating-point elements in a to packed half-precision (16-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
15675/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
15676/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
15677/// * [`_MM_FROUND_TO_NEG_INF`] : round down
15678/// * [`_MM_FROUND_TO_POS_INF`] : round up
15679/// * [`_MM_FROUND_TO_ZERO`] : truncate
15680/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15681///
15682/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvt_roundps_ph&expand=1353)
15683#[inline]
15684#[target_feature(enable = "avx512f,avx512vl")]
15685#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15686#[cfg_attr(test, assert_instr(vcvtps2ph, IMM8 = 0))]
15687#[rustc_legacy_const_generics(2)]
15688pub fn _mm256_maskz_cvt_roundps_ph<const IMM8: i32>(k: __mmask8, a: __m256) -> __m128i {
15689    unsafe {
15690        static_assert_round_mode!(IMM8);
15691        let a = a.as_f32x8();
15692        let r = vcvtps2ph256(a, IMM8, i16x8::ZERO, k);
15693        transmute(r)
15694    }
15695}
15696
15697/// Convert packed single-precision (32-bit) floating-point elements in a to packed half-precision (16-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
15698/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
15699/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
15700/// * [`_MM_FROUND_TO_NEG_INF`] : round down
15701/// * [`_MM_FROUND_TO_POS_INF`] : round up
15702/// * [`_MM_FROUND_TO_ZERO`] : truncate
15703/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15704///
15705/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvt_roundps_ph&expand=1350)
15706#[inline]
15707#[target_feature(enable = "avx512f,avx512vl")]
15708#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15709#[cfg_attr(test, assert_instr(vcvtps2ph, IMM8 = 0))]
15710#[rustc_legacy_const_generics(3)]
15711pub fn _mm_mask_cvt_roundps_ph<const IMM8: i32>(src: __m128i, k: __mmask8, a: __m128) -> __m128i {
15712    unsafe {
15713        static_assert_round_mode!(IMM8);
15714        let a = a.as_f32x4();
15715        let src = src.as_i16x8();
15716        let r = vcvtps2ph128(a, IMM8, src, k);
15717        transmute(r)
15718    }
15719}
15720
15721/// Convert packed single-precision (32-bit) floating-point elements in a to packed half-precision (16-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
15722/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
15723/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
15724/// * [`_MM_FROUND_TO_NEG_INF`] : round down
15725/// * [`_MM_FROUND_TO_POS_INF`] : round up
15726/// * [`_MM_FROUND_TO_ZERO`] : truncate
15727/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15728///
15729/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvt_roundps_ph&expand=1351)
15730#[inline]
15731#[target_feature(enable = "avx512f,avx512vl")]
15732#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15733#[cfg_attr(test, assert_instr(vcvtps2ph, IMM8 = 0))]
15734#[rustc_legacy_const_generics(2)]
15735pub fn _mm_maskz_cvt_roundps_ph<const IMM8: i32>(k: __mmask8, a: __m128) -> __m128i {
15736    unsafe {
15737        static_assert_round_mode!(IMM8);
15738        let a = a.as_f32x4();
15739        let r = vcvtps2ph128(a, IMM8, i16x8::ZERO, k);
15740        transmute(r)
15741    }
15742}
15743
15744/// Convert packed single-precision (32-bit) floating-point elements in a to packed half-precision (16-bit) floating-point elements, and store the results in dst.\
15745/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:
15746///  * [`_MM_FROUND_TO_NEAREST_INT`] // round to nearest
15747///  * [`_MM_FROUND_TO_NEG_INF`]     // round down
15748///  * [`_MM_FROUND_TO_POS_INF`]    // round up
15749///  * [`_MM_FROUND_TO_ZERO`]        // truncate
15750///  * [`_MM_FROUND_CUR_DIRECTION`]    // use MXCSR.RC; see [`_MM_SET_ROUNDING_MODE`]
15751///  * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] // round to nearest, and suppress exceptions
15752///  * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`]     // round down, and suppress exceptions
15753///  * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`]     // round up, and suppress exceptions
15754///  * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`]        // truncate, and suppress exceptions
15755///  * [`_MM_FROUND_CUR_DIRECTION`] | [`_MM_FROUND_NO_EXC`]  // use MXCSR.RC and suppress exceptions; see [`_MM_SET_ROUNDING_MODE`]
15756///
15757/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtps_ph&expand=1778)
15758#[inline]
15759#[target_feature(enable = "avx512f")]
15760#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15761#[cfg_attr(test, assert_instr(vcvtps2ph, ROUNDING = 8))]
15762#[rustc_legacy_const_generics(1)]
15763pub fn _mm512_cvtps_ph<const ROUNDING: i32>(a: __m512) -> __m256i {
15764    unsafe {
15765        static_assert_extended_rounding!(ROUNDING);
15766        let a = a.as_f32x16();
15767        let r = vcvtps2ph(a, ROUNDING, i16x16::ZERO, 0b11111111_11111111);
15768        transmute(r)
15769    }
15770}
15771
15772/// Convert packed single-precision (32-bit) floating-point elements in a to packed half-precision (16-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
15773/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:
15774///  * [`_MM_FROUND_TO_NEAREST_INT`] // round to nearest
15775///  * [`_MM_FROUND_TO_NEG_INF`]     // round down
15776///  * [`_MM_FROUND_TO_POS_INF`]    // round up
15777///  * [`_MM_FROUND_TO_ZERO`]        // truncate
15778///  * [`_MM_FROUND_CUR_DIRECTION`]    // use MXCSR.RC; see [`_MM_SET_ROUNDING_MODE`]
15779///  * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] // round to nearest, and suppress exceptions
15780///  * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`]     // round down, and suppress exceptions
15781///  * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`]     // round up, and suppress exceptions
15782///  * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`]        // truncate, and suppress exceptions
15783///  * [`_MM_FROUND_CUR_DIRECTION`] | [`_MM_FROUND_NO_EXC`]  // use MXCSR.RC and suppress exceptions; see [`_MM_SET_ROUNDING_MODE`]
15784///
15785/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtps_ph&expand=1779)
15786#[inline]
15787#[target_feature(enable = "avx512f")]
15788#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15789#[cfg_attr(test, assert_instr(vcvtps2ph, ROUNDING = 8))]
15790#[rustc_legacy_const_generics(3)]
15791pub fn _mm512_mask_cvtps_ph<const ROUNDING: i32>(src: __m256i, k: __mmask16, a: __m512) -> __m256i {
15792    unsafe {
15793        static_assert_extended_rounding!(ROUNDING);
15794        let a = a.as_f32x16();
15795        let src = src.as_i16x16();
15796        let r = vcvtps2ph(a, ROUNDING, src, k);
15797        transmute(r)
15798    }
15799}
15800
15801/// Convert packed single-precision (32-bit) floating-point elements in a to packed half-precision (16-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
15802/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:
15803///  * [`_MM_FROUND_TO_NEAREST_INT`] // round to nearest
15804///  * [`_MM_FROUND_TO_NEG_INF`]     // round down
15805///  * [`_MM_FROUND_TO_POS_INF`]    // round up
15806///  * [`_MM_FROUND_TO_ZERO`]        // truncate
15807///  * [`_MM_FROUND_CUR_DIRECTION`]    // use MXCSR.RC; see [`_MM_SET_ROUNDING_MODE`]
15808///  * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] // round to nearest, and suppress exceptions
15809///  * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`]     // round down, and suppress exceptions
15810///  * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`]     // round up, and suppress exceptions
15811///  * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`]        // truncate, and suppress exceptions
15812///  * [`_MM_FROUND_CUR_DIRECTION`] | [`_MM_FROUND_NO_EXC`]  // use MXCSR.RC and suppress exceptions; see [`_MM_SET_ROUNDING_MODE`]
15813///
15814/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtps_ph&expand=1780)
15815#[inline]
15816#[target_feature(enable = "avx512f")]
15817#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15818#[cfg_attr(test, assert_instr(vcvtps2ph, ROUNDING = 8))]
15819#[rustc_legacy_const_generics(2)]
15820pub fn _mm512_maskz_cvtps_ph<const ROUNDING: i32>(k: __mmask16, a: __m512) -> __m256i {
15821    unsafe {
15822        static_assert_extended_rounding!(ROUNDING);
15823        let a = a.as_f32x16();
15824        let r = vcvtps2ph(a, ROUNDING, i16x16::ZERO, k);
15825        transmute(r)
15826    }
15827}
15828
15829/// Convert packed single-precision (32-bit) floating-point elements in a to packed half-precision (16-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
15830/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
15831/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
15832/// * [`_MM_FROUND_TO_NEG_INF`] : round down
15833/// * [`_MM_FROUND_TO_POS_INF`] : round up
15834/// * [`_MM_FROUND_TO_ZERO`] : truncate
15835/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15836///
15837/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtps_ph&expand=1776)
15838#[inline]
15839#[target_feature(enable = "avx512f,avx512vl")]
15840#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15841#[cfg_attr(test, assert_instr(vcvtps2ph, IMM8 = 0))]
15842#[rustc_legacy_const_generics(3)]
15843pub fn _mm256_mask_cvtps_ph<const IMM8: i32>(src: __m128i, k: __mmask8, a: __m256) -> __m128i {
15844    unsafe {
15845        static_assert_round_mode!(IMM8);
15846        let a = a.as_f32x8();
15847        let src = src.as_i16x8();
15848        let r = vcvtps2ph256(a, IMM8, src, k);
15849        transmute(r)
15850    }
15851}
15852
15853/// Convert packed single-precision (32-bit) floating-point elements in a to packed half-precision (16-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
15854/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
15855/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
15856/// * [`_MM_FROUND_TO_NEG_INF`] : round down
15857/// * [`_MM_FROUND_TO_POS_INF`] : round up
15858/// * [`_MM_FROUND_TO_ZERO`] : truncate
15859/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15860///
15861/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtps_ph&expand=1777)
15862#[inline]
15863#[target_feature(enable = "avx512f,avx512vl")]
15864#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15865#[cfg_attr(test, assert_instr(vcvtps2ph, IMM8 = 0))]
15866#[rustc_legacy_const_generics(2)]
15867pub fn _mm256_maskz_cvtps_ph<const IMM8: i32>(k: __mmask8, a: __m256) -> __m128i {
15868    unsafe {
15869        static_assert_round_mode!(IMM8);
15870        let a = a.as_f32x8();
15871        let r = vcvtps2ph256(a, IMM8, i16x8::ZERO, k);
15872        transmute(r)
15873    }
15874}
15875
15876/// Convert packed single-precision (32-bit) floating-point elements in a to packed half-precision (16-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
15877/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
15878/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
15879/// * [`_MM_FROUND_TO_NEG_INF`] : round down
15880/// * [`_MM_FROUND_TO_POS_INF`] : round up
15881/// * [`_MM_FROUND_TO_ZERO`] : truncate
15882/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15883///
15884/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtps_ph&expand=1773)
15885#[inline]
15886#[target_feature(enable = "avx512f,avx512vl")]
15887#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15888#[cfg_attr(test, assert_instr(vcvtps2ph, IMM8 = 0))]
15889#[rustc_legacy_const_generics(3)]
15890pub fn _mm_mask_cvtps_ph<const IMM8: i32>(src: __m128i, k: __mmask8, a: __m128) -> __m128i {
15891    unsafe {
15892        static_assert_round_mode!(IMM8);
15893        let a = a.as_f32x4();
15894        let src = src.as_i16x8();
15895        let r = vcvtps2ph128(a, IMM8, src, k);
15896        transmute(r)
15897    }
15898}
15899
15900/// Convert packed single-precision (32-bit) floating-point elements in a to packed half-precision (16-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
15901/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
15902/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
15903/// * [`_MM_FROUND_TO_NEG_INF`] : round down
15904/// * [`_MM_FROUND_TO_POS_INF`] : round up
15905/// * [`_MM_FROUND_TO_ZERO`] : truncate
15906/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
15907///
15908/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtps_ph&expand=1774)
15909#[inline]
15910#[target_feature(enable = "avx512f,avx512vl")]
15911#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15912#[cfg_attr(test, assert_instr(vcvtps2ph, IMM8 = 0))]
15913#[rustc_legacy_const_generics(2)]
15914pub fn _mm_maskz_cvtps_ph<const IMM8: i32>(k: __mmask8, a: __m128) -> __m128i {
15915    unsafe {
15916        static_assert_round_mode!(IMM8);
15917        let a = a.as_f32x4();
15918        let r = vcvtps2ph128(a, IMM8, i16x8::ZERO, k);
15919        transmute(r)
15920    }
15921}
15922
15923/// Convert packed half-precision (16-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst.\
15924/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
15925///
15926/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvt_roundph_ps&expand=1332)
15927#[inline]
15928#[target_feature(enable = "avx512f")]
15929#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15930#[cfg_attr(test, assert_instr(vcvtph2ps, SAE = 8))]
15931#[rustc_legacy_const_generics(1)]
15932pub fn _mm512_cvt_roundph_ps<const SAE: i32>(a: __m256i) -> __m512 {
15933    unsafe {
15934        static_assert_sae!(SAE);
15935        let a = a.as_i16x16();
15936        let r = vcvtph2ps(a, f32x16::ZERO, 0b11111111_11111111, SAE);
15937        transmute(r)
15938    }
15939}
15940
15941/// Convert packed half-precision (16-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
15942/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
15943///
15944/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvt_roundph_ps&expand=1333)
15945#[inline]
15946#[target_feature(enable = "avx512f")]
15947#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15948#[cfg_attr(test, assert_instr(vcvtph2ps, SAE = 8))]
15949#[rustc_legacy_const_generics(3)]
15950pub fn _mm512_mask_cvt_roundph_ps<const SAE: i32>(src: __m512, k: __mmask16, a: __m256i) -> __m512 {
15951    unsafe {
15952        static_assert_sae!(SAE);
15953        let a = a.as_i16x16();
15954        let src = src.as_f32x16();
15955        let r = vcvtph2ps(a, src, k, SAE);
15956        transmute(r)
15957    }
15958}
15959
15960/// Convert packed half-precision (16-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
15961/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
15962///
15963/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvt_roundph_ps&expand=1334)
15964#[inline]
15965#[target_feature(enable = "avx512f")]
15966#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15967#[cfg_attr(test, assert_instr(vcvtph2ps, SAE = 8))]
15968#[rustc_legacy_const_generics(2)]
15969pub fn _mm512_maskz_cvt_roundph_ps<const SAE: i32>(k: __mmask16, a: __m256i) -> __m512 {
15970    unsafe {
15971        static_assert_sae!(SAE);
15972        let a = a.as_i16x16();
15973        let r = vcvtph2ps(a, f32x16::ZERO, k, SAE);
15974        transmute(r)
15975    }
15976}
15977
15978/// Convert packed half-precision (16-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst.
15979///
15980/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtph_ps&expand=1723)
15981#[inline]
15982#[target_feature(enable = "avx512f")]
15983#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
15984#[cfg_attr(test, assert_instr(vcvtph2ps))]
15985pub fn _mm512_cvtph_ps(a: __m256i) -> __m512 {
15986    unsafe {
15987        transmute(vcvtph2ps(
15988            a.as_i16x16(),
15989            f32x16::ZERO,
15990            0b11111111_11111111,
15991            _MM_FROUND_NO_EXC,
15992        ))
15993    }
15994}
15995
15996/// Convert packed half-precision (16-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
15997///
15998/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtph_ps&expand=1724)
15999#[inline]
16000#[target_feature(enable = "avx512f")]
16001#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16002#[cfg_attr(test, assert_instr(vcvtph2ps))]
16003pub fn _mm512_mask_cvtph_ps(src: __m512, k: __mmask16, a: __m256i) -> __m512 {
16004    unsafe {
16005        transmute(vcvtph2ps(
16006            a.as_i16x16(),
16007            src.as_f32x16(),
16008            k,
16009            _MM_FROUND_NO_EXC,
16010        ))
16011    }
16012}
16013
16014/// Convert packed half-precision (16-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
16015///
16016/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtph_ps&expand=1725)
16017#[inline]
16018#[target_feature(enable = "avx512f")]
16019#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16020#[cfg_attr(test, assert_instr(vcvtph2ps))]
16021pub fn _mm512_maskz_cvtph_ps(k: __mmask16, a: __m256i) -> __m512 {
16022    unsafe { transmute(vcvtph2ps(a.as_i16x16(), f32x16::ZERO, k, _MM_FROUND_NO_EXC)) }
16023}
16024
16025/// Convert packed half-precision (16-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
16026///
16027/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtph_ps&expand=1721)
16028#[inline]
16029#[target_feature(enable = "avx512f,avx512vl")]
16030#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16031#[cfg_attr(test, assert_instr(vcvtph2ps))]
16032pub fn _mm256_mask_cvtph_ps(src: __m256, k: __mmask8, a: __m128i) -> __m256 {
16033    unsafe {
16034        let convert = _mm256_cvtph_ps(a);
16035        transmute(simd_select_bitmask(k, convert.as_f32x8(), src.as_f32x8()))
16036    }
16037}
16038
16039/// Convert packed half-precision (16-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
16040///
16041/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvtph_ps&expand=1722)
16042#[inline]
16043#[target_feature(enable = "avx512f,avx512vl")]
16044#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16045#[cfg_attr(test, assert_instr(vcvtph2ps))]
16046pub fn _mm256_maskz_cvtph_ps(k: __mmask8, a: __m128i) -> __m256 {
16047    unsafe {
16048        let convert = _mm256_cvtph_ps(a);
16049        transmute(simd_select_bitmask(k, convert.as_f32x8(), f32x8::ZERO))
16050    }
16051}
16052
16053/// Convert packed half-precision (16-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
16054///
16055/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtph_ps&expand=1718)
16056#[inline]
16057#[target_feature(enable = "avx512f,avx512vl")]
16058#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16059#[cfg_attr(test, assert_instr(vcvtph2ps))]
16060pub fn _mm_mask_cvtph_ps(src: __m128, k: __mmask8, a: __m128i) -> __m128 {
16061    unsafe {
16062        let convert = _mm_cvtph_ps(a);
16063        transmute(simd_select_bitmask(k, convert.as_f32x4(), src.as_f32x4()))
16064    }
16065}
16066
16067/// Convert packed half-precision (16-bit) floating-point elements in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
16068///
16069/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvtph_ps&expand=1719)
16070#[inline]
16071#[target_feature(enable = "avx512f,avx512vl")]
16072#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16073#[cfg_attr(test, assert_instr(vcvtph2ps))]
16074pub fn _mm_maskz_cvtph_ps(k: __mmask8, a: __m128i) -> __m128 {
16075    unsafe {
16076        let convert = _mm_cvtph_ps(a);
16077        transmute(simd_select_bitmask(k, convert.as_f32x4(), f32x4::ZERO))
16078    }
16079}
16080
16081/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst.\
16082/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
16083///
16084/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtt_roundps_epi32&expand=1916)
16085#[inline]
16086#[target_feature(enable = "avx512f")]
16087#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16088#[cfg_attr(test, assert_instr(vcvttps2dq, SAE = 8))]
16089#[rustc_legacy_const_generics(1)]
16090pub fn _mm512_cvtt_roundps_epi32<const SAE: i32>(a: __m512) -> __m512i {
16091    unsafe {
16092        static_assert_sae!(SAE);
16093        let a = a.as_f32x16();
16094        let r = vcvttps2dq(a, i32x16::ZERO, 0b11111111_11111111, SAE);
16095        transmute(r)
16096    }
16097}
16098
16099/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
16100/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
16101///
16102/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtt_roundps_epi32&expand=1917)
16103#[inline]
16104#[target_feature(enable = "avx512f")]
16105#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16106#[cfg_attr(test, assert_instr(vcvttps2dq, SAE = 8))]
16107#[rustc_legacy_const_generics(3)]
16108pub fn _mm512_mask_cvtt_roundps_epi32<const SAE: i32>(
16109    src: __m512i,
16110    k: __mmask16,
16111    a: __m512,
16112) -> __m512i {
16113    unsafe {
16114        static_assert_sae!(SAE);
16115        let a = a.as_f32x16();
16116        let src = src.as_i32x16();
16117        let r = vcvttps2dq(a, src, k, SAE);
16118        transmute(r)
16119    }
16120}
16121
16122/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
16123/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
16124///
16125/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtt_roundps_epi32&expand=1918)
16126#[inline]
16127#[target_feature(enable = "avx512f")]
16128#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16129#[cfg_attr(test, assert_instr(vcvttps2dq, SAE = 8))]
16130#[rustc_legacy_const_generics(2)]
16131pub fn _mm512_maskz_cvtt_roundps_epi32<const SAE: i32>(k: __mmask16, a: __m512) -> __m512i {
16132    unsafe {
16133        static_assert_sae!(SAE);
16134        let a = a.as_f32x16();
16135        let r = vcvttps2dq(a, i32x16::ZERO, k, SAE);
16136        transmute(r)
16137    }
16138}
16139
16140/// Convert packed single-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst.\
16141/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
16142///
16143/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtt_roundps_epu32&expand=1922)
16144#[inline]
16145#[target_feature(enable = "avx512f")]
16146#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16147#[cfg_attr(test, assert_instr(vcvttps2udq, SAE = 8))]
16148#[rustc_legacy_const_generics(1)]
16149pub fn _mm512_cvtt_roundps_epu32<const SAE: i32>(a: __m512) -> __m512i {
16150    unsafe {
16151        static_assert_sae!(SAE);
16152        let a = a.as_f32x16();
16153        let r = vcvttps2udq(a, u32x16::ZERO, 0b11111111_11111111, SAE);
16154        transmute(r)
16155    }
16156}
16157
16158/// Convert packed single-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
16159/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
16160///
16161/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtt_roundps_epu32&expand=1923)
16162#[inline]
16163#[target_feature(enable = "avx512f")]
16164#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16165#[cfg_attr(test, assert_instr(vcvttps2udq, SAE = 8))]
16166#[rustc_legacy_const_generics(3)]
16167pub fn _mm512_mask_cvtt_roundps_epu32<const SAE: i32>(
16168    src: __m512i,
16169    k: __mmask16,
16170    a: __m512,
16171) -> __m512i {
16172    unsafe {
16173        static_assert_sae!(SAE);
16174        let a = a.as_f32x16();
16175        let src = src.as_u32x16();
16176        let r = vcvttps2udq(a, src, k, SAE);
16177        transmute(r)
16178    }
16179}
16180
16181/// Convert packed single-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
16182/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
16183///
16184/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtt_roundps_epu32&expand=1924)
16185#[inline]
16186#[target_feature(enable = "avx512f")]
16187#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16188#[cfg_attr(test, assert_instr(vcvttps2udq, SAE = 8))]
16189#[rustc_legacy_const_generics(2)]
16190pub fn _mm512_maskz_cvtt_roundps_epu32<const SAE: i32>(k: __mmask16, a: __m512) -> __m512i {
16191    unsafe {
16192        static_assert_sae!(SAE);
16193        let a = a.as_f32x16();
16194        let r = vcvttps2udq(a, u32x16::ZERO, k, SAE);
16195        transmute(r)
16196    }
16197}
16198
16199/// Convert packed double-precision (64-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst.\
16200/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
16201///
16202/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtt_roundpd_epi32&expand=1904)
16203#[inline]
16204#[target_feature(enable = "avx512f")]
16205#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16206#[cfg_attr(test, assert_instr(vcvttpd2dq, SAE = 8))]
16207#[rustc_legacy_const_generics(1)]
16208pub fn _mm512_cvtt_roundpd_epi32<const SAE: i32>(a: __m512d) -> __m256i {
16209    unsafe {
16210        static_assert_sae!(SAE);
16211        let a = a.as_f64x8();
16212        let r = vcvttpd2dq(a, i32x8::ZERO, 0b11111111, SAE);
16213        transmute(r)
16214    }
16215}
16216
16217/// Convert packed double-precision (64-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
16218/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
16219///
16220/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtt_roundpd_epi32&expand=1905)
16221#[inline]
16222#[target_feature(enable = "avx512f")]
16223#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16224#[cfg_attr(test, assert_instr(vcvttpd2dq, SAE = 8))]
16225#[rustc_legacy_const_generics(3)]
16226pub fn _mm512_mask_cvtt_roundpd_epi32<const SAE: i32>(
16227    src: __m256i,
16228    k: __mmask8,
16229    a: __m512d,
16230) -> __m256i {
16231    unsafe {
16232        static_assert_sae!(SAE);
16233        let a = a.as_f64x8();
16234        let src = src.as_i32x8();
16235        let r = vcvttpd2dq(a, src, k, SAE);
16236        transmute(r)
16237    }
16238}
16239
16240/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
16241/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
16242///
16243/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtt_roundpd_epi32&expand=1918)
16244#[inline]
16245#[target_feature(enable = "avx512f")]
16246#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16247#[cfg_attr(test, assert_instr(vcvttpd2dq, SAE = 8))]
16248#[rustc_legacy_const_generics(2)]
16249pub fn _mm512_maskz_cvtt_roundpd_epi32<const SAE: i32>(k: __mmask8, a: __m512d) -> __m256i {
16250    unsafe {
16251        static_assert_sae!(SAE);
16252        let a = a.as_f64x8();
16253        let r = vcvttpd2dq(a, i32x8::ZERO, k, SAE);
16254        transmute(r)
16255    }
16256}
16257
16258/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst.\
16259/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
16260///
16261/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtt_roundpd_epu32&expand=1910)
16262#[inline]
16263#[target_feature(enable = "avx512f")]
16264#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16265#[cfg_attr(test, assert_instr(vcvttpd2udq, SAE = 8))]
16266#[rustc_legacy_const_generics(1)]
16267pub fn _mm512_cvtt_roundpd_epu32<const SAE: i32>(a: __m512d) -> __m256i {
16268    unsafe {
16269        static_assert_sae!(SAE);
16270        let a = a.as_f64x8();
16271        let r = vcvttpd2udq(a, i32x8::ZERO, 0b11111111, SAE);
16272        transmute(r)
16273    }
16274}
16275
16276/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).\
16277/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
16278///
16279/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtt_roundpd_epu32&expand=1911)
16280#[inline]
16281#[target_feature(enable = "avx512f")]
16282#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16283#[cfg_attr(test, assert_instr(vcvttpd2udq, SAE = 8))]
16284#[rustc_legacy_const_generics(3)]
16285pub fn _mm512_mask_cvtt_roundpd_epu32<const SAE: i32>(
16286    src: __m256i,
16287    k: __mmask8,
16288    a: __m512d,
16289) -> __m256i {
16290    unsafe {
16291        static_assert_sae!(SAE);
16292        let a = a.as_f64x8();
16293        let src = src.as_i32x8();
16294        let r = vcvttpd2udq(a, src, k, SAE);
16295        transmute(r)
16296    }
16297}
16298
16299/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst.
16300///
16301/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvttps_epi32&expand=1984)
16302#[inline]
16303#[target_feature(enable = "avx512f")]
16304#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16305#[cfg_attr(test, assert_instr(vcvttps2dq))]
16306pub fn _mm512_cvttps_epi32(a: __m512) -> __m512i {
16307    unsafe {
16308        transmute(vcvttps2dq(
16309            a.as_f32x16(),
16310            i32x16::ZERO,
16311            0b11111111_11111111,
16312            _MM_FROUND_CUR_DIRECTION,
16313        ))
16314    }
16315}
16316
16317/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
16318///
16319/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvttps_epi32&expand=1985)
16320#[inline]
16321#[target_feature(enable = "avx512f")]
16322#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16323#[cfg_attr(test, assert_instr(vcvttps2dq))]
16324pub fn _mm512_mask_cvttps_epi32(src: __m512i, k: __mmask16, a: __m512) -> __m512i {
16325    unsafe {
16326        transmute(vcvttps2dq(
16327            a.as_f32x16(),
16328            src.as_i32x16(),
16329            k,
16330            _MM_FROUND_CUR_DIRECTION,
16331        ))
16332    }
16333}
16334
16335/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
16336///
16337/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvttps_epi32&expand=1986)
16338#[inline]
16339#[target_feature(enable = "avx512f")]
16340#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16341#[cfg_attr(test, assert_instr(vcvttps2dq))]
16342pub fn _mm512_maskz_cvttps_epi32(k: __mmask16, a: __m512) -> __m512i {
16343    unsafe {
16344        transmute(vcvttps2dq(
16345            a.as_f32x16(),
16346            i32x16::ZERO,
16347            k,
16348            _MM_FROUND_CUR_DIRECTION,
16349        ))
16350    }
16351}
16352
16353/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
16354///
16355/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvttps_epi32&expand=1982)
16356#[inline]
16357#[target_feature(enable = "avx512f,avx512vl")]
16358#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16359#[cfg_attr(test, assert_instr(vcvttps2dq))]
16360pub fn _mm256_mask_cvttps_epi32(src: __m256i, k: __mmask8, a: __m256) -> __m256i {
16361    unsafe { simd_select_bitmask(k, _mm256_cvttps_epi32(a).as_i32x8(), src.as_i32x8()).as_m256i() }
16362}
16363
16364/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
16365///
16366/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvttps_epi32&expand=1983)
16367#[inline]
16368#[target_feature(enable = "avx512f,avx512vl")]
16369#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16370#[cfg_attr(test, assert_instr(vcvttps2dq))]
16371pub fn _mm256_maskz_cvttps_epi32(k: __mmask8, a: __m256) -> __m256i {
16372    _mm256_mask_cvttps_epi32(_mm256_setzero_si256(), k, a)
16373}
16374
16375/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
16376///
16377/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvttps_epi32&expand=1979)
16378#[inline]
16379#[target_feature(enable = "avx512f,avx512vl")]
16380#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16381#[cfg_attr(test, assert_instr(vcvttps2dq))]
16382pub fn _mm_mask_cvttps_epi32(src: __m128i, k: __mmask8, a: __m128) -> __m128i {
16383    unsafe { simd_select_bitmask(k, _mm_cvttps_epi32(a).as_i32x4(), src.as_i32x4()).as_m128i() }
16384}
16385
16386/// Convert packed single-precision (32-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
16387///
16388/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvttps_epi32&expand=1980)
16389#[inline]
16390#[target_feature(enable = "avx512f,avx512vl")]
16391#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16392#[cfg_attr(test, assert_instr(vcvttps2dq))]
16393pub fn _mm_maskz_cvttps_epi32(k: __mmask8, a: __m128) -> __m128i {
16394    _mm_mask_cvttps_epi32(_mm_setzero_si128(), k, a)
16395}
16396
16397/// Convert packed single-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst.
16398///
16399/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvttps_epu32&expand=2002)
16400#[inline]
16401#[target_feature(enable = "avx512f")]
16402#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16403#[cfg_attr(test, assert_instr(vcvttps2udq))]
16404pub fn _mm512_cvttps_epu32(a: __m512) -> __m512i {
16405    unsafe {
16406        transmute(vcvttps2udq(
16407            a.as_f32x16(),
16408            u32x16::ZERO,
16409            0b11111111_11111111,
16410            _MM_FROUND_CUR_DIRECTION,
16411        ))
16412    }
16413}
16414
16415/// Convert packed double-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
16416///
16417/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvttps_epu32&expand=2003)
16418#[inline]
16419#[target_feature(enable = "avx512f")]
16420#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16421#[cfg_attr(test, assert_instr(vcvttps2udq))]
16422pub fn _mm512_mask_cvttps_epu32(src: __m512i, k: __mmask16, a: __m512) -> __m512i {
16423    unsafe {
16424        transmute(vcvttps2udq(
16425            a.as_f32x16(),
16426            src.as_u32x16(),
16427            k,
16428            _MM_FROUND_CUR_DIRECTION,
16429        ))
16430    }
16431}
16432
16433/// Convert packed double-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
16434///
16435/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvttps_epu32&expand=2004)
16436#[inline]
16437#[target_feature(enable = "avx512f")]
16438#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16439#[cfg_attr(test, assert_instr(vcvttps2udq))]
16440pub fn _mm512_maskz_cvttps_epu32(k: __mmask16, a: __m512) -> __m512i {
16441    unsafe {
16442        transmute(vcvttps2udq(
16443            a.as_f32x16(),
16444            u32x16::ZERO,
16445            k,
16446            _MM_FROUND_CUR_DIRECTION,
16447        ))
16448    }
16449}
16450
16451/// Convert packed single-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst.
16452///
16453/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvttps_epu32&expand=1999)
16454#[inline]
16455#[target_feature(enable = "avx512f,avx512vl")]
16456#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16457#[cfg_attr(test, assert_instr(vcvttps2udq))]
16458pub fn _mm256_cvttps_epu32(a: __m256) -> __m256i {
16459    unsafe { transmute(vcvttps2udq256(a.as_f32x8(), u32x8::ZERO, 0b11111111)) }
16460}
16461
16462/// Convert packed double-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
16463///
16464/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvttps_epu32&expand=2000)
16465#[inline]
16466#[target_feature(enable = "avx512f,avx512vl")]
16467#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16468#[cfg_attr(test, assert_instr(vcvttps2udq))]
16469pub fn _mm256_mask_cvttps_epu32(src: __m256i, k: __mmask8, a: __m256) -> __m256i {
16470    unsafe { transmute(vcvttps2udq256(a.as_f32x8(), src.as_u32x8(), k)) }
16471}
16472
16473/// Convert packed double-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
16474///
16475/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvttps_epu32&expand=2001)
16476#[inline]
16477#[target_feature(enable = "avx512f,avx512vl")]
16478#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16479#[cfg_attr(test, assert_instr(vcvttps2udq))]
16480pub fn _mm256_maskz_cvttps_epu32(k: __mmask8, a: __m256) -> __m256i {
16481    unsafe { transmute(vcvttps2udq256(a.as_f32x8(), u32x8::ZERO, k)) }
16482}
16483
16484/// Convert packed single-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst.
16485///
16486/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttps_epu32&expand=1996)
16487#[inline]
16488#[target_feature(enable = "avx512f,avx512vl")]
16489#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16490#[cfg_attr(test, assert_instr(vcvttps2udq))]
16491pub fn _mm_cvttps_epu32(a: __m128) -> __m128i {
16492    unsafe { transmute(vcvttps2udq128(a.as_f32x4(), u32x4::ZERO, 0b11111111)) }
16493}
16494
16495/// Convert packed double-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
16496///
16497/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvttps_epu32&expand=1997)
16498#[inline]
16499#[target_feature(enable = "avx512f,avx512vl")]
16500#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16501#[cfg_attr(test, assert_instr(vcvttps2udq))]
16502pub fn _mm_mask_cvttps_epu32(src: __m128i, k: __mmask8, a: __m128) -> __m128i {
16503    unsafe { transmute(vcvttps2udq128(a.as_f32x4(), src.as_u32x4(), k)) }
16504}
16505
16506/// Convert packed double-precision (32-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
16507///
16508/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvttps_epu32&expand=1998)
16509#[inline]
16510#[target_feature(enable = "avx512f,avx512vl")]
16511#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16512#[cfg_attr(test, assert_instr(vcvttps2udq))]
16513pub fn _mm_maskz_cvttps_epu32(k: __mmask8, a: __m128) -> __m128i {
16514    unsafe { transmute(vcvttps2udq128(a.as_f32x4(), u32x4::ZERO, k)) }
16515}
16516
16517/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).\
16518/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
16519///
16520/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvtt_roundpd_epu32&expand=1912)
16521#[inline]
16522#[target_feature(enable = "avx512f")]
16523#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16524#[cfg_attr(test, assert_instr(vcvttpd2udq, SAE = 8))]
16525#[rustc_legacy_const_generics(2)]
16526pub fn _mm512_maskz_cvtt_roundpd_epu32<const SAE: i32>(k: __mmask8, a: __m512d) -> __m256i {
16527    unsafe {
16528        static_assert_sae!(SAE);
16529        let a = a.as_f64x8();
16530        let r = vcvttpd2udq(a, i32x8::ZERO, k, SAE);
16531        transmute(r)
16532    }
16533}
16534
16535/// Convert packed double-precision (64-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst.
16536///
16537/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvttpd_epi32&expand=1947)
16538#[inline]
16539#[target_feature(enable = "avx512f")]
16540#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16541#[cfg_attr(test, assert_instr(vcvttpd2dq))]
16542pub fn _mm512_cvttpd_epi32(a: __m512d) -> __m256i {
16543    unsafe {
16544        transmute(vcvttpd2dq(
16545            a.as_f64x8(),
16546            i32x8::ZERO,
16547            0b11111111,
16548            _MM_FROUND_CUR_DIRECTION,
16549        ))
16550    }
16551}
16552
16553/// Convert packed double-precision (64-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
16554///
16555/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvttpd_epi32&expand=1948)
16556#[inline]
16557#[target_feature(enable = "avx512f")]
16558#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16559#[cfg_attr(test, assert_instr(vcvttpd2dq))]
16560pub fn _mm512_mask_cvttpd_epi32(src: __m256i, k: __mmask8, a: __m512d) -> __m256i {
16561    unsafe {
16562        transmute(vcvttpd2dq(
16563            a.as_f64x8(),
16564            src.as_i32x8(),
16565            k,
16566            _MM_FROUND_CUR_DIRECTION,
16567        ))
16568    }
16569}
16570
16571/// Convert packed double-precision (64-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
16572///
16573/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvttpd_epi32&expand=1949)
16574#[inline]
16575#[target_feature(enable = "avx512f")]
16576#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16577#[cfg_attr(test, assert_instr(vcvttpd2dq))]
16578pub fn _mm512_maskz_cvttpd_epi32(k: __mmask8, a: __m512d) -> __m256i {
16579    unsafe {
16580        transmute(vcvttpd2dq(
16581            a.as_f64x8(),
16582            i32x8::ZERO,
16583            k,
16584            _MM_FROUND_CUR_DIRECTION,
16585        ))
16586    }
16587}
16588
16589/// Convert packed double-precision (64-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
16590///
16591/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvttpd_epi32&expand=1945)
16592#[inline]
16593#[target_feature(enable = "avx512f,avx512vl")]
16594#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16595#[cfg_attr(test, assert_instr(vcvttpd2dq))]
16596pub fn _mm256_mask_cvttpd_epi32(src: __m128i, k: __mmask8, a: __m256d) -> __m128i {
16597    unsafe { simd_select_bitmask(k, _mm256_cvttpd_epi32(a).as_i32x4(), src.as_i32x4()).as_m128i() }
16598}
16599
16600/// Convert packed double-precision (64-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
16601///
16602/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvttpd_epi32&expand=1946)
16603#[inline]
16604#[target_feature(enable = "avx512f,avx512vl")]
16605#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16606#[cfg_attr(test, assert_instr(vcvttpd2dq))]
16607pub fn _mm256_maskz_cvttpd_epi32(k: __mmask8, a: __m256d) -> __m128i {
16608    _mm256_mask_cvttpd_epi32(_mm_setzero_si128(), k, a)
16609}
16610
16611/// Convert packed double-precision (64-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
16612///
16613/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvttpd_epi32&expand=1942)
16614#[inline]
16615#[target_feature(enable = "avx512f,avx512vl")]
16616#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16617#[cfg_attr(test, assert_instr(vcvttpd2dq))]
16618pub fn _mm_mask_cvttpd_epi32(src: __m128i, k: __mmask8, a: __m128d) -> __m128i {
16619    unsafe { transmute(vcvttpd2dq128(a.as_f64x2(), src.as_i32x4(), k)) }
16620}
16621
16622/// Convert packed double-precision (64-bit) floating-point elements in a to packed 32-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
16623///
16624/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvttpd_epi32&expand=1943)
16625#[inline]
16626#[target_feature(enable = "avx512f,avx512vl")]
16627#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16628#[cfg_attr(test, assert_instr(vcvttpd2dq))]
16629pub fn _mm_maskz_cvttpd_epi32(k: __mmask8, a: __m128d) -> __m128i {
16630    unsafe { transmute(vcvttpd2dq128(a.as_f64x2(), i32x4::ZERO, k)) }
16631}
16632
16633/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst.
16634///
16635/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvttpd_epu32&expand=1965)
16636#[inline]
16637#[target_feature(enable = "avx512f")]
16638#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16639#[cfg_attr(test, assert_instr(vcvttpd2udq))]
16640pub fn _mm512_cvttpd_epu32(a: __m512d) -> __m256i {
16641    unsafe {
16642        transmute(vcvttpd2udq(
16643            a.as_f64x8(),
16644            i32x8::ZERO,
16645            0b11111111,
16646            _MM_FROUND_CUR_DIRECTION,
16647        ))
16648    }
16649}
16650
16651/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
16652///
16653/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvttpd_epu32&expand=1966)
16654#[inline]
16655#[target_feature(enable = "avx512f")]
16656#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16657#[cfg_attr(test, assert_instr(vcvttpd2udq))]
16658pub fn _mm512_mask_cvttpd_epu32(src: __m256i, k: __mmask8, a: __m512d) -> __m256i {
16659    unsafe {
16660        transmute(vcvttpd2udq(
16661            a.as_f64x8(),
16662            src.as_i32x8(),
16663            k,
16664            _MM_FROUND_CUR_DIRECTION,
16665        ))
16666    }
16667}
16668
16669/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
16670///
16671/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_cvttpd_epu32&expand=1967)
16672#[inline]
16673#[target_feature(enable = "avx512f")]
16674#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16675#[cfg_attr(test, assert_instr(vcvttpd2udq))]
16676pub fn _mm512_maskz_cvttpd_epu32(k: __mmask8, a: __m512d) -> __m256i {
16677    unsafe {
16678        transmute(vcvttpd2udq(
16679            a.as_f64x8(),
16680            i32x8::ZERO,
16681            k,
16682            _MM_FROUND_CUR_DIRECTION,
16683        ))
16684    }
16685}
16686
16687/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst.
16688///
16689/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cvttpd_epu32&expand=1962)
16690#[inline]
16691#[target_feature(enable = "avx512f,avx512vl")]
16692#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16693#[cfg_attr(test, assert_instr(vcvttpd2udq))]
16694pub fn _mm256_cvttpd_epu32(a: __m256d) -> __m128i {
16695    unsafe { transmute(vcvttpd2udq256(a.as_f64x4(), i32x4::ZERO, 0b11111111)) }
16696}
16697
16698/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
16699///
16700/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvttpd_epu32&expand=1963)
16701#[inline]
16702#[target_feature(enable = "avx512f,avx512vl")]
16703#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16704#[cfg_attr(test, assert_instr(vcvttpd2udq))]
16705pub fn _mm256_mask_cvttpd_epu32(src: __m128i, k: __mmask8, a: __m256d) -> __m128i {
16706    unsafe { transmute(vcvttpd2udq256(a.as_f64x4(), src.as_i32x4(), k)) }
16707}
16708
16709/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
16710///
16711/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_cvttpd_epu32&expand=1964)
16712#[inline]
16713#[target_feature(enable = "avx512f,avx512vl")]
16714#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16715#[cfg_attr(test, assert_instr(vcvttpd2udq))]
16716pub fn _mm256_maskz_cvttpd_epu32(k: __mmask8, a: __m256d) -> __m128i {
16717    unsafe { transmute(vcvttpd2udq256(a.as_f64x4(), i32x4::ZERO, k)) }
16718}
16719
16720/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst.
16721///
16722/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttpd_epu32&expand=1959)
16723#[inline]
16724#[target_feature(enable = "avx512f,avx512vl")]
16725#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16726#[cfg_attr(test, assert_instr(vcvttpd2udq))]
16727pub fn _mm_cvttpd_epu32(a: __m128d) -> __m128i {
16728    unsafe { transmute(vcvttpd2udq128(a.as_f64x2(), i32x4::ZERO, 0b11111111)) }
16729}
16730
16731/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
16732///
16733/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvttpd_epu32&expand=1960)
16734#[inline]
16735#[target_feature(enable = "avx512f,avx512vl")]
16736#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16737#[cfg_attr(test, assert_instr(vcvttpd2udq))]
16738pub fn _mm_mask_cvttpd_epu32(src: __m128i, k: __mmask8, a: __m128d) -> __m128i {
16739    unsafe { transmute(vcvttpd2udq128(a.as_f64x2(), src.as_i32x4(), k)) }
16740}
16741
16742/// Convert packed double-precision (64-bit) floating-point elements in a to packed unsigned 32-bit integers with truncation, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
16743///
16744/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_cvttpd_epu32&expand=1961)
16745#[inline]
16746#[target_feature(enable = "avx512f,avx512vl")]
16747#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16748#[cfg_attr(test, assert_instr(vcvttpd2udq))]
16749pub fn _mm_maskz_cvttpd_epu32(k: __mmask8, a: __m128d) -> __m128i {
16750    unsafe { transmute(vcvttpd2udq128(a.as_f64x2(), i32x4::ZERO, k)) }
16751}
16752
16753/// Returns vector of type `__m512d` with all elements set to zero.
16754///
16755/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_setzero_pd&expand=5018)
16756#[inline]
16757#[target_feature(enable = "avx512f")]
16758#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16759#[cfg_attr(test, assert_instr(vxorps))]
16760#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
16761pub const fn _mm512_setzero_pd() -> __m512d {
16762    // All-0 is a properly initialized __m512d
16763    unsafe { const { mem::zeroed() } }
16764}
16765
16766/// Returns vector of type `__m512` with all elements set to zero.
16767///
16768/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_setzero_ps&expand=5021)
16769#[inline]
16770#[target_feature(enable = "avx512f")]
16771#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16772#[cfg_attr(test, assert_instr(vxorps))]
16773#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
16774pub const fn _mm512_setzero_ps() -> __m512 {
16775    // All-0 is a properly initialized __m512
16776    unsafe { const { mem::zeroed() } }
16777}
16778
16779/// Return vector of type `__m512` with all elements set to zero.
16780///
16781/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_setzero&expand=5014)
16782#[inline]
16783#[target_feature(enable = "avx512f")]
16784#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16785#[cfg_attr(test, assert_instr(vxorps))]
16786#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
16787pub const fn _mm512_setzero() -> __m512 {
16788    // All-0 is a properly initialized __m512
16789    unsafe { const { mem::zeroed() } }
16790}
16791
16792/// Returns vector of type `__m512i` with all elements set to zero.
16793///
16794/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_setzero_si512&expand=5024)
16795#[inline]
16796#[target_feature(enable = "avx512f")]
16797#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16798#[cfg_attr(test, assert_instr(vxorps))]
16799#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
16800pub const fn _mm512_setzero_si512() -> __m512i {
16801    // All-0 is a properly initialized __m512i
16802    unsafe { const { mem::zeroed() } }
16803}
16804
16805/// Return vector of type `__m512i` with all elements set to zero.
16806///
16807/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_setzero_epi32&expand=5015)
16808#[inline]
16809#[target_feature(enable = "avx512f")]
16810#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16811#[cfg_attr(test, assert_instr(vxorps))]
16812#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
16813pub const fn _mm512_setzero_epi32() -> __m512i {
16814    // All-0 is a properly initialized __m512i
16815    unsafe { const { mem::zeroed() } }
16816}
16817
16818/// Sets packed 32-bit integers in `dst` with the supplied values in reverse
16819/// order.
16820///
16821/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_setr_epi32&expand=4991)
16822#[inline]
16823#[target_feature(enable = "avx512f")]
16824#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16825#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
16826pub const fn _mm512_setr_epi32(
16827    e15: i32,
16828    e14: i32,
16829    e13: i32,
16830    e12: i32,
16831    e11: i32,
16832    e10: i32,
16833    e9: i32,
16834    e8: i32,
16835    e7: i32,
16836    e6: i32,
16837    e5: i32,
16838    e4: i32,
16839    e3: i32,
16840    e2: i32,
16841    e1: i32,
16842    e0: i32,
16843) -> __m512i {
16844    unsafe {
16845        let r = i32x16::new(
16846            e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0,
16847        );
16848        transmute(r)
16849    }
16850}
16851
16852/// Set packed 8-bit integers in dst with the supplied values.
16853///
16854/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_set_epi8&expand=4915)
16855#[inline]
16856#[target_feature(enable = "avx512f")]
16857#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16858#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
16859pub const fn _mm512_set_epi8(
16860    e63: i8,
16861    e62: i8,
16862    e61: i8,
16863    e60: i8,
16864    e59: i8,
16865    e58: i8,
16866    e57: i8,
16867    e56: i8,
16868    e55: i8,
16869    e54: i8,
16870    e53: i8,
16871    e52: i8,
16872    e51: i8,
16873    e50: i8,
16874    e49: i8,
16875    e48: i8,
16876    e47: i8,
16877    e46: i8,
16878    e45: i8,
16879    e44: i8,
16880    e43: i8,
16881    e42: i8,
16882    e41: i8,
16883    e40: i8,
16884    e39: i8,
16885    e38: i8,
16886    e37: i8,
16887    e36: i8,
16888    e35: i8,
16889    e34: i8,
16890    e33: i8,
16891    e32: i8,
16892    e31: i8,
16893    e30: i8,
16894    e29: i8,
16895    e28: i8,
16896    e27: i8,
16897    e26: i8,
16898    e25: i8,
16899    e24: i8,
16900    e23: i8,
16901    e22: i8,
16902    e21: i8,
16903    e20: i8,
16904    e19: i8,
16905    e18: i8,
16906    e17: i8,
16907    e16: i8,
16908    e15: i8,
16909    e14: i8,
16910    e13: i8,
16911    e12: i8,
16912    e11: i8,
16913    e10: i8,
16914    e9: i8,
16915    e8: i8,
16916    e7: i8,
16917    e6: i8,
16918    e5: i8,
16919    e4: i8,
16920    e3: i8,
16921    e2: i8,
16922    e1: i8,
16923    e0: i8,
16924) -> __m512i {
16925    unsafe {
16926        let r = i8x64::from_array([
16927            e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18,
16928            e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31, e32, e33, e34, e35,
16929            e36, e37, e38, e39, e40, e41, e42, e43, e44, e45, e46, e47, e48, e49, e50, e51, e52,
16930            e53, e54, e55, e56, e57, e58, e59, e60, e61, e62, e63,
16931        ]);
16932        transmute(r)
16933    }
16934}
16935
16936/// Set packed 16-bit integers in dst with the supplied values.
16937///
16938/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_set_epi16&expand=4905)
16939#[inline]
16940#[target_feature(enable = "avx512f")]
16941#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16942#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
16943pub const fn _mm512_set_epi16(
16944    e31: i16,
16945    e30: i16,
16946    e29: i16,
16947    e28: i16,
16948    e27: i16,
16949    e26: i16,
16950    e25: i16,
16951    e24: i16,
16952    e23: i16,
16953    e22: i16,
16954    e21: i16,
16955    e20: i16,
16956    e19: i16,
16957    e18: i16,
16958    e17: i16,
16959    e16: i16,
16960    e15: i16,
16961    e14: i16,
16962    e13: i16,
16963    e12: i16,
16964    e11: i16,
16965    e10: i16,
16966    e9: i16,
16967    e8: i16,
16968    e7: i16,
16969    e6: i16,
16970    e5: i16,
16971    e4: i16,
16972    e3: i16,
16973    e2: i16,
16974    e1: i16,
16975    e0: i16,
16976) -> __m512i {
16977    unsafe {
16978        let r = i16x32::new(
16979            e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15, e16, e17, e18,
16980            e19, e20, e21, e22, e23, e24, e25, e26, e27, e28, e29, e30, e31,
16981        );
16982        transmute(r)
16983    }
16984}
16985
16986/// Set packed 32-bit integers in dst with the repeated 4 element sequence.
16987///
16988/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_set4_epi32&expand=4982)
16989#[inline]
16990#[target_feature(enable = "avx512f")]
16991#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
16992#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
16993pub const fn _mm512_set4_epi32(d: i32, c: i32, b: i32, a: i32) -> __m512i {
16994    _mm512_set_epi32(d, c, b, a, d, c, b, a, d, c, b, a, d, c, b, a)
16995}
16996
16997/// Set packed single-precision (32-bit) floating-point elements in dst with the repeated 4 element sequence.
16998///
16999/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_set4_ps&expand=4985)
17000#[inline]
17001#[target_feature(enable = "avx512f")]
17002#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17003#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
17004pub const fn _mm512_set4_ps(d: f32, c: f32, b: f32, a: f32) -> __m512 {
17005    _mm512_set_ps(d, c, b, a, d, c, b, a, d, c, b, a, d, c, b, a)
17006}
17007
17008/// Set packed double-precision (64-bit) floating-point elements in dst with the repeated 4 element sequence.
17009///
17010/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_set4_pd&expand=4984)
17011#[inline]
17012#[target_feature(enable = "avx512f")]
17013#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17014#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
17015pub const fn _mm512_set4_pd(d: f64, c: f64, b: f64, a: f64) -> __m512d {
17016    _mm512_set_pd(d, c, b, a, d, c, b, a)
17017}
17018
17019/// Set packed 32-bit integers in dst with the repeated 4 element sequence in reverse order.
17020///
17021/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_setr4_epi32&expand=5009)
17022#[inline]
17023#[target_feature(enable = "avx512f")]
17024#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17025#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
17026pub const fn _mm512_setr4_epi32(d: i32, c: i32, b: i32, a: i32) -> __m512i {
17027    _mm512_set_epi32(a, b, c, d, a, b, c, d, a, b, c, d, a, b, c, d)
17028}
17029
17030/// Set packed single-precision (32-bit) floating-point elements in dst with the repeated 4 element sequence in reverse order.
17031///
17032/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_setr4_ps&expand=5012)
17033#[inline]
17034#[target_feature(enable = "avx512f")]
17035#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17036#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
17037pub const fn _mm512_setr4_ps(d: f32, c: f32, b: f32, a: f32) -> __m512 {
17038    _mm512_set_ps(a, b, c, d, a, b, c, d, a, b, c, d, a, b, c, d)
17039}
17040
17041/// Set packed double-precision (64-bit) floating-point elements in dst with the repeated 4 element sequence in reverse order.
17042///
17043/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_setr4_pd&expand=5011)
17044#[inline]
17045#[target_feature(enable = "avx512f")]
17046#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17047#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
17048pub const fn _mm512_setr4_pd(d: f64, c: f64, b: f64, a: f64) -> __m512d {
17049    _mm512_set_pd(a, b, c, d, a, b, c, d)
17050}
17051
17052/// Set packed 64-bit integers in dst with the supplied values.
17053///
17054/// [Intel's documentation]( https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_set_epi64&expand=4910)
17055#[inline]
17056#[target_feature(enable = "avx512f")]
17057#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17058#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
17059pub const fn _mm512_set_epi64(
17060    e0: i64,
17061    e1: i64,
17062    e2: i64,
17063    e3: i64,
17064    e4: i64,
17065    e5: i64,
17066    e6: i64,
17067    e7: i64,
17068) -> __m512i {
17069    _mm512_setr_epi64(e7, e6, e5, e4, e3, e2, e1, e0)
17070}
17071
17072/// Set packed 64-bit integers in dst with the supplied values in reverse order.
17073///
17074/// [Intel's documentation]( https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_setr_epi64&expand=4993)
17075#[inline]
17076#[target_feature(enable = "avx512f")]
17077#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17078#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
17079pub const fn _mm512_setr_epi64(
17080    e0: i64,
17081    e1: i64,
17082    e2: i64,
17083    e3: i64,
17084    e4: i64,
17085    e5: i64,
17086    e6: i64,
17087    e7: i64,
17088) -> __m512i {
17089    unsafe {
17090        let r = i64x8::new(e0, e1, e2, e3, e4, e5, e6, e7);
17091        transmute(r)
17092    }
17093}
17094
17095/// Gather double-precision (64-bit) floating-point elements from memory using 32-bit indices. 64-bit elements are loaded from addresses starting at base_addr and offset by each 32-bit element in vindex (each index is scaled by the factor in scale). Gathered elements are merged into dst. scale should be 1, 2, 4 or 8.
17096///
17097/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_i32gather_pd&expand=3002)
17098#[inline]
17099#[target_feature(enable = "avx512f")]
17100#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17101#[cfg_attr(test, assert_instr(vgatherdpd, SCALE = 1))]
17102#[rustc_legacy_const_generics(2)]
17103pub unsafe fn _mm512_i32gather_pd<const SCALE: i32>(
17104    offsets: __m256i,
17105    slice: *const f64,
17106) -> __m512d {
17107    static_assert_imm8_scale!(SCALE);
17108    let zero = f64x8::ZERO;
17109    let neg_one = -1;
17110    let slice = slice as *const i8;
17111    let offsets = offsets.as_i32x8();
17112    let r = vgatherdpd(zero, slice, offsets, neg_one, SCALE);
17113    transmute(r)
17114}
17115
17116/// Gather double-precision (64-bit) floating-point elements from memory using 32-bit indices. 64-bit elements are loaded from addresses starting at base_addr and offset by each 32-bit element in vindex (each index is scaled by the factor in scale). Gathered elements are merged into dst using writemask k (elements are copied from src when the corresponding mask bit is not set). scale should be 1, 2, 4 or 8.
17117///
17118/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_i32gather_pd&expand=3003)
17119#[inline]
17120#[target_feature(enable = "avx512f")]
17121#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17122#[cfg_attr(test, assert_instr(vgatherdpd, SCALE = 1))]
17123#[rustc_legacy_const_generics(4)]
17124pub unsafe fn _mm512_mask_i32gather_pd<const SCALE: i32>(
17125    src: __m512d,
17126    mask: __mmask8,
17127    offsets: __m256i,
17128    slice: *const f64,
17129) -> __m512d {
17130    static_assert_imm8_scale!(SCALE);
17131    let src = src.as_f64x8();
17132    let slice = slice as *const i8;
17133    let offsets = offsets.as_i32x8();
17134    let r = vgatherdpd(src, slice, offsets, mask as i8, SCALE);
17135    transmute(r)
17136}
17137
17138/// Gather double-precision (64-bit) floating-point elements from memory using 64-bit indices. 64-bit elements are loaded from addresses starting at base_addr and offset by each 64-bit element in vindex (each index is scaled by the factor in scale). Gathered elements are merged into dst. scale should be 1, 2, 4 or 8.
17139///
17140/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_i64gather_pd&expand=3092)
17141#[inline]
17142#[target_feature(enable = "avx512f")]
17143#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17144#[cfg_attr(test, assert_instr(vgatherqpd, SCALE = 1))]
17145#[rustc_legacy_const_generics(2)]
17146pub unsafe fn _mm512_i64gather_pd<const SCALE: i32>(
17147    offsets: __m512i,
17148    slice: *const f64,
17149) -> __m512d {
17150    static_assert_imm8_scale!(SCALE);
17151    let zero = f64x8::ZERO;
17152    let neg_one = -1;
17153    let slice = slice as *const i8;
17154    let offsets = offsets.as_i64x8();
17155    let r = vgatherqpd(zero, slice, offsets, neg_one, SCALE);
17156    transmute(r)
17157}
17158
17159/// Gather double-precision (64-bit) floating-point elements from memory using 64-bit indices. 64-bit elements are loaded from addresses starting at base_addr and offset by each 64-bit element in vindex (each index is scaled by the factor in scale). Gathered elements are merged into dst using writemask k (elements are copied from src when the corresponding mask bit is not set). scale should be 1, 2, 4 or 8.
17160///
17161/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_i64gather_pd&expand=3093)
17162#[inline]
17163#[target_feature(enable = "avx512f")]
17164#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17165#[cfg_attr(test, assert_instr(vgatherqpd, SCALE = 1))]
17166#[rustc_legacy_const_generics(4)]
17167pub unsafe fn _mm512_mask_i64gather_pd<const SCALE: i32>(
17168    src: __m512d,
17169    mask: __mmask8,
17170    offsets: __m512i,
17171    slice: *const f64,
17172) -> __m512d {
17173    static_assert_imm8_scale!(SCALE);
17174    let src = src.as_f64x8();
17175    let slice = slice as *const i8;
17176    let offsets = offsets.as_i64x8();
17177    let r = vgatherqpd(src, slice, offsets, mask as i8, SCALE);
17178    transmute(r)
17179}
17180
17181/// Gather single-precision (32-bit) floating-point elements from memory using 64-bit indices. 32-bit elements are loaded from addresses starting at base_addr and offset by each 64-bit element in vindex (each index is scaled by the factor in scale). Gathered elements are merged into dst. scale should be 1, 2, 4 or 8.
17182///
17183/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_i64gather_ps&expand=3100)
17184#[inline]
17185#[target_feature(enable = "avx512f")]
17186#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17187#[cfg_attr(test, assert_instr(vgatherqps, SCALE = 1))]
17188#[rustc_legacy_const_generics(2)]
17189pub unsafe fn _mm512_i64gather_ps<const SCALE: i32>(offsets: __m512i, slice: *const f32) -> __m256 {
17190    static_assert_imm8_scale!(SCALE);
17191    let zero = f32x8::ZERO;
17192    let neg_one = -1;
17193    let slice = slice as *const i8;
17194    let offsets = offsets.as_i64x8();
17195    let r = vgatherqps(zero, slice, offsets, neg_one, SCALE);
17196    transmute(r)
17197}
17198
17199/// Gather single-precision (32-bit) floating-point elements from memory using 64-bit indices. 32-bit elements are loaded from addresses starting at base_addr and offset by each 64-bit element in vindex (each index is scaled by the factor in scale). Gathered elements are merged into dst using writemask k (elements are copied from src when the corresponding mask bit is not set). scale should be 1, 2, 4 or 8.
17200///
17201/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_i64gather_ps&expand=3101)
17202#[inline]
17203#[target_feature(enable = "avx512f")]
17204#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17205#[cfg_attr(test, assert_instr(vgatherqps, SCALE = 1))]
17206#[rustc_legacy_const_generics(4)]
17207pub unsafe fn _mm512_mask_i64gather_ps<const SCALE: i32>(
17208    src: __m256,
17209    mask: __mmask8,
17210    offsets: __m512i,
17211    slice: *const f32,
17212) -> __m256 {
17213    static_assert_imm8_scale!(SCALE);
17214    let src = src.as_f32x8();
17215    let slice = slice as *const i8;
17216    let offsets = offsets.as_i64x8();
17217    let r = vgatherqps(src, slice, offsets, mask as i8, SCALE);
17218    transmute(r)
17219}
17220
17221/// Gather single-precision (32-bit) floating-point elements from memory using 32-bit indices. 32-bit elements are loaded from addresses starting at base_addr and offset by each 32-bit element in vindex (each index is scaled by the factor in scale). Gathered elements are merged into dst. scale should be 1, 2, 4 or 8.
17222///
17223/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_i32gather_ps&expand=3010)
17224#[inline]
17225#[target_feature(enable = "avx512f")]
17226#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17227#[cfg_attr(test, assert_instr(vgatherdps, SCALE = 1))]
17228#[rustc_legacy_const_generics(2)]
17229pub unsafe fn _mm512_i32gather_ps<const SCALE: i32>(offsets: __m512i, slice: *const f32) -> __m512 {
17230    static_assert_imm8_scale!(SCALE);
17231    let zero = f32x16::ZERO;
17232    let neg_one = -1;
17233    let slice = slice as *const i8;
17234    let offsets = offsets.as_i32x16();
17235    let r = vgatherdps(zero, slice, offsets, neg_one, SCALE);
17236    transmute(r)
17237}
17238
17239/// Gather single-precision (32-bit) floating-point elements from memory using 32-bit indices. 32-bit elements are loaded from addresses starting at base_addr and offset by each 32-bit element in vindex (each index is scaled by the factor in scale). Gathered elements are merged into dst using writemask k (elements are copied from src when the corresponding mask bit is not set). scale should be 1, 2, 4 or 8.
17240///
17241/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_i32gather_ps&expand=3011)
17242#[inline]
17243#[target_feature(enable = "avx512f")]
17244#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17245#[cfg_attr(test, assert_instr(vgatherdps, SCALE = 1))]
17246#[rustc_legacy_const_generics(4)]
17247pub unsafe fn _mm512_mask_i32gather_ps<const SCALE: i32>(
17248    src: __m512,
17249    mask: __mmask16,
17250    offsets: __m512i,
17251    slice: *const f32,
17252) -> __m512 {
17253    static_assert_imm8_scale!(SCALE);
17254    let src = src.as_f32x16();
17255    let slice = slice as *const i8;
17256    let offsets = offsets.as_i32x16();
17257    let r = vgatherdps(src, slice, offsets, mask as i16, SCALE);
17258    transmute(r)
17259}
17260
17261/// Gather 32-bit integers from memory using 32-bit indices. 32-bit elements are loaded from addresses starting at base_addr and offset by each 32-bit element in vindex (each index is scaled by the factor in scale). Gathered elements are merged into dst. scale should be 1, 2, 4 or 8.
17262///
17263/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_i32gather_epi32&expand=2986)
17264#[inline]
17265#[target_feature(enable = "avx512f")]
17266#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17267#[cfg_attr(test, assert_instr(vpgatherdd, SCALE = 1))]
17268#[rustc_legacy_const_generics(2)]
17269pub unsafe fn _mm512_i32gather_epi32<const SCALE: i32>(
17270    offsets: __m512i,
17271    slice: *const i32,
17272) -> __m512i {
17273    static_assert_imm8_scale!(SCALE);
17274    let zero = i32x16::ZERO;
17275    let neg_one = -1;
17276    let slice = slice as *const i8;
17277    let offsets = offsets.as_i32x16();
17278    let r = vpgatherdd(zero, slice, offsets, neg_one, SCALE);
17279    transmute(r)
17280}
17281
17282/// Gather 32-bit integers from memory using 32-bit indices. 32-bit elements are loaded from addresses starting at base_addr and offset by each 32-bit element in vindex (each index is scaled by the factor in scale). Gathered elements are merged into dst using writemask k (elements are copied from src when the corresponding mask bit is not set). scale should be 1, 2, 4 or 8.
17283///
17284/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_i32gather_epi32&expand=2987)
17285#[inline]
17286#[target_feature(enable = "avx512f")]
17287#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17288#[cfg_attr(test, assert_instr(vpgatherdd, SCALE = 1))]
17289#[rustc_legacy_const_generics(4)]
17290pub unsafe fn _mm512_mask_i32gather_epi32<const SCALE: i32>(
17291    src: __m512i,
17292    mask: __mmask16,
17293    offsets: __m512i,
17294    slice: *const i32,
17295) -> __m512i {
17296    static_assert_imm8_scale!(SCALE);
17297    let src = src.as_i32x16();
17298    let mask = mask as i16;
17299    let slice = slice as *const i8;
17300    let offsets = offsets.as_i32x16();
17301    let r = vpgatherdd(src, slice, offsets, mask, SCALE);
17302    transmute(r)
17303}
17304
17305/// Gather 64-bit integers from memory using 32-bit indices. 64-bit elements are loaded from addresses starting at base_addr and offset by each 32-bit element in vindex (each index is scaled by the factor in scale). Gathered elements are merged into dst. scale should be 1, 2, 4 or 8.
17306///
17307/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_i32gather_epi64&expand=2994)
17308#[inline]
17309#[target_feature(enable = "avx512f")]
17310#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17311#[cfg_attr(test, assert_instr(vpgatherdq, SCALE = 1))]
17312#[rustc_legacy_const_generics(2)]
17313pub unsafe fn _mm512_i32gather_epi64<const SCALE: i32>(
17314    offsets: __m256i,
17315    slice: *const i64,
17316) -> __m512i {
17317    static_assert_imm8_scale!(SCALE);
17318    let zero = i64x8::ZERO;
17319    let neg_one = -1;
17320    let slice = slice as *const i8;
17321    let offsets = offsets.as_i32x8();
17322    let r = vpgatherdq(zero, slice, offsets, neg_one, SCALE);
17323    transmute(r)
17324}
17325
17326/// Gather 64-bit integers from memory using 32-bit indices. 64-bit elements are loaded from addresses starting at base_addr and offset by each 32-bit element in vindex (each index is scaled by the factor in scale). Gathered elements are merged into dst using writemask k (elements are copied from src when the corresponding mask bit is not set). scale should be 1, 2, 4 or 8.
17327///
17328/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_i32gather_epi64&expand=2995)
17329#[inline]
17330#[target_feature(enable = "avx512f")]
17331#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17332#[cfg_attr(test, assert_instr(vpgatherdq, SCALE = 1))]
17333#[rustc_legacy_const_generics(4)]
17334pub unsafe fn _mm512_mask_i32gather_epi64<const SCALE: i32>(
17335    src: __m512i,
17336    mask: __mmask8,
17337    offsets: __m256i,
17338    slice: *const i64,
17339) -> __m512i {
17340    static_assert_imm8_scale!(SCALE);
17341    let src = src.as_i64x8();
17342    let mask = mask as i8;
17343    let slice = slice as *const i8;
17344    let offsets = offsets.as_i32x8();
17345    let r = vpgatherdq(src, slice, offsets, mask, SCALE);
17346    transmute(r)
17347}
17348
17349/// Gather 64-bit integers from memory using 64-bit indices. 64-bit elements are loaded from addresses starting at base_addr and offset by each 64-bit element in vindex (each index is scaled by the factor in scale). Gathered elements are merged into dst. scale should be 1, 2, 4 or 8.
17350///
17351/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_i64gather_epi64&expand=3084)
17352#[inline]
17353#[target_feature(enable = "avx512f")]
17354#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17355#[cfg_attr(test, assert_instr(vpgatherqq, SCALE = 1))]
17356#[rustc_legacy_const_generics(2)]
17357pub unsafe fn _mm512_i64gather_epi64<const SCALE: i32>(
17358    offsets: __m512i,
17359    slice: *const i64,
17360) -> __m512i {
17361    static_assert_imm8_scale!(SCALE);
17362    let zero = i64x8::ZERO;
17363    let neg_one = -1;
17364    let slice = slice as *const i8;
17365    let offsets = offsets.as_i64x8();
17366    let r = vpgatherqq(zero, slice, offsets, neg_one, SCALE);
17367    transmute(r)
17368}
17369
17370/// Gather 64-bit integers from memory using 64-bit indices. 64-bit elements are loaded from addresses starting at base_addr and offset by each 64-bit element in vindex (each index is scaled by the factor in scale). Gathered elements are merged into dst using writemask k (elements are copied from src when the corresponding mask bit is not set). scale should be 1, 2, 4 or 8.
17371///
17372/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_i64gather_epi64&expand=3085)
17373#[inline]
17374#[target_feature(enable = "avx512f")]
17375#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17376#[cfg_attr(test, assert_instr(vpgatherqq, SCALE = 1))]
17377#[rustc_legacy_const_generics(4)]
17378pub unsafe fn _mm512_mask_i64gather_epi64<const SCALE: i32>(
17379    src: __m512i,
17380    mask: __mmask8,
17381    offsets: __m512i,
17382    slice: *const i64,
17383) -> __m512i {
17384    static_assert_imm8_scale!(SCALE);
17385    let src = src.as_i64x8();
17386    let mask = mask as i8;
17387    let slice = slice as *const i8;
17388    let offsets = offsets.as_i64x8();
17389    let r = vpgatherqq(src, slice, offsets, mask, SCALE);
17390    transmute(r)
17391}
17392
17393/// Gather 32-bit integers from memory using 64-bit indices. 32-bit elements are loaded from addresses starting at base_addr and offset by each 64-bit element in vindex (each index is scaled by the factor in scale). Gathered elements are merged into dst. scale should be 1, 2, 4 or 8.
17394///
17395/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_i64gather_epi32&expand=3074)
17396#[inline]
17397#[target_feature(enable = "avx512f")]
17398#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17399#[cfg_attr(test, assert_instr(vpgatherqd, SCALE = 1))]
17400#[rustc_legacy_const_generics(2)]
17401pub unsafe fn _mm512_i64gather_epi32<const SCALE: i32>(
17402    offsets: __m512i,
17403    slice: *const i32,
17404) -> __m256i {
17405    static_assert_imm8_scale!(SCALE);
17406    let zeros = i32x8::ZERO;
17407    let neg_one = -1;
17408    let slice = slice as *const i8;
17409    let offsets = offsets.as_i64x8();
17410    let r = vpgatherqd(zeros, slice, offsets, neg_one, SCALE);
17411    transmute(r)
17412}
17413
17414/// Gather 32-bit integers from memory using 64-bit indices. 32-bit elements are loaded from addresses starting at base_addr and offset by each 64-bit element in vindex (each index is scaled by the factor in scale). Gathered elements are merged into dst using writemask k (elements are copied from src when the corresponding mask bit is not set). scale should be 1, 2, 4 or 8.
17415///
17416/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_i64gather_epi32&expand=3075)
17417#[inline]
17418#[target_feature(enable = "avx512f")]
17419#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17420#[cfg_attr(test, assert_instr(vpgatherqd, SCALE = 1))]
17421#[rustc_legacy_const_generics(4)]
17422pub unsafe fn _mm512_mask_i64gather_epi32<const SCALE: i32>(
17423    src: __m256i,
17424    mask: __mmask8,
17425    offsets: __m512i,
17426    slice: *const i32,
17427) -> __m256i {
17428    static_assert_imm8_scale!(SCALE);
17429    let src = src.as_i32x8();
17430    let mask = mask as i8;
17431    let slice = slice as *const i8;
17432    let offsets = offsets.as_i64x8();
17433    let r = vpgatherqd(src, slice, offsets, mask, SCALE);
17434    transmute(r)
17435}
17436
17437/// Scatter double-precision (64-bit) floating-point elements from a into memory using 32-bit indices. 64-bit elements are stored at addresses starting at base_addr and offset by each 32-bit element in vindex (each index is scaled by the factor in scale). scale should be 1, 2, 4 or 8.
17438///
17439/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_i32scatter_pd&expand=3044)
17440#[inline]
17441#[target_feature(enable = "avx512f")]
17442#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17443#[cfg_attr(test, assert_instr(vscatterdpd, SCALE = 1))]
17444#[rustc_legacy_const_generics(3)]
17445pub unsafe fn _mm512_i32scatter_pd<const SCALE: i32>(
17446    slice: *mut f64,
17447    offsets: __m256i,
17448    src: __m512d,
17449) {
17450    static_assert_imm8_scale!(SCALE);
17451    let src = src.as_f64x8();
17452    let neg_one = -1;
17453    let slice = slice as *mut i8;
17454    let offsets = offsets.as_i32x8();
17455    vscatterdpd(slice, neg_one, offsets, src, SCALE);
17456}
17457
17458/// Scatter double-precision (64-bit) floating-point elements from a into memory using 32-bit indices. 64-bit elements are stored at addresses starting at base_addr and offset by each 32-bit element in vindex (each index is scaled by the factor in scale) subject to mask k (elements are not stored when the corresponding mask bit is not set). scale should be 1, 2, 4 or 8.
17459///
17460/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_i32scatter_pd&expand=3045)
17461#[inline]
17462#[target_feature(enable = "avx512f")]
17463#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17464#[cfg_attr(test, assert_instr(vscatterdpd, SCALE = 1))]
17465#[rustc_legacy_const_generics(4)]
17466pub unsafe fn _mm512_mask_i32scatter_pd<const SCALE: i32>(
17467    slice: *mut f64,
17468    mask: __mmask8,
17469    offsets: __m256i,
17470    src: __m512d,
17471) {
17472    static_assert_imm8_scale!(SCALE);
17473    let src = src.as_f64x8();
17474    let slice = slice as *mut i8;
17475    let offsets = offsets.as_i32x8();
17476    vscatterdpd(slice, mask as i8, offsets, src, SCALE);
17477}
17478
17479/// Scatter double-precision (64-bit) floating-point elements from a into memory using 64-bit indices. 64-bit elements are stored at addresses starting at base_addr and offset by each 64-bit element in vindex (each index is scaled by the factor in scale). scale should be 1, 2, 4 or 8.
17480///
17481/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_i64scatter_pd&expand=3122)
17482#[inline]
17483#[target_feature(enable = "avx512f")]
17484#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17485#[cfg_attr(test, assert_instr(vscatterqpd, SCALE = 1))]
17486#[rustc_legacy_const_generics(3)]
17487pub unsafe fn _mm512_i64scatter_pd<const SCALE: i32>(
17488    slice: *mut f64,
17489    offsets: __m512i,
17490    src: __m512d,
17491) {
17492    static_assert_imm8_scale!(SCALE);
17493    let src = src.as_f64x8();
17494    let neg_one = -1;
17495    let slice = slice as *mut i8;
17496    let offsets = offsets.as_i64x8();
17497    vscatterqpd(slice, neg_one, offsets, src, SCALE);
17498}
17499
17500/// Scatter double-precision (64-bit) floating-point elements from a into memory using 64-bit indices. 64-bit elements are stored at addresses starting at base_addr and offset by each 64-bit element in vindex (each index is scaled by the factor in scale) subject to mask k (elements are not stored when the corresponding mask bit is not set). scale should be 1, 2, 4 or 8.
17501///
17502/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_i64scatter_pd&expand=3123)
17503#[inline]
17504#[target_feature(enable = "avx512f")]
17505#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17506#[cfg_attr(test, assert_instr(vscatterqpd, SCALE = 1))]
17507#[rustc_legacy_const_generics(4)]
17508pub unsafe fn _mm512_mask_i64scatter_pd<const SCALE: i32>(
17509    slice: *mut f64,
17510    mask: __mmask8,
17511    offsets: __m512i,
17512    src: __m512d,
17513) {
17514    static_assert_imm8_scale!(SCALE);
17515    let src = src.as_f64x8();
17516    let slice = slice as *mut i8;
17517    let offsets = offsets.as_i64x8();
17518    vscatterqpd(slice, mask as i8, offsets, src, SCALE);
17519}
17520
17521/// Scatter single-precision (32-bit) floating-point elements from a into memory using 32-bit indices. 32-bit elements are stored at addresses starting at base_addr and offset by each 32-bit element in vindex (each index is scaled by the factor in scale). scale should be 1, 2, 4 or 8.
17522///
17523/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_i32scatter_ps&expand=3050)
17524#[inline]
17525#[target_feature(enable = "avx512f")]
17526#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17527#[cfg_attr(test, assert_instr(vscatterdps, SCALE = 1))]
17528#[rustc_legacy_const_generics(3)]
17529pub unsafe fn _mm512_i32scatter_ps<const SCALE: i32>(
17530    slice: *mut f32,
17531    offsets: __m512i,
17532    src: __m512,
17533) {
17534    static_assert_imm8_scale!(SCALE);
17535    let src = src.as_f32x16();
17536    let neg_one = -1;
17537    let slice = slice as *mut i8;
17538    let offsets = offsets.as_i32x16();
17539    vscatterdps(slice, neg_one, offsets, src, SCALE);
17540}
17541
17542/// Scatter single-precision (32-bit) floating-point elements from a into memory using 32-bit indices. 32-bit elements are stored at addresses starting at base_addr and offset by each 32-bit element in vindex (each index is scaled by the factor in scale) subject to mask k (elements are not stored when the corresponding mask bit is not set). scale should be 1, 2, 4 or 8.
17543///
17544/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_i32scatter_ps&expand=3051)
17545#[inline]
17546#[target_feature(enable = "avx512f")]
17547#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17548#[cfg_attr(test, assert_instr(vscatterdps, SCALE = 1))]
17549#[rustc_legacy_const_generics(4)]
17550pub unsafe fn _mm512_mask_i32scatter_ps<const SCALE: i32>(
17551    slice: *mut f32,
17552    mask: __mmask16,
17553    offsets: __m512i,
17554    src: __m512,
17555) {
17556    static_assert_imm8_scale!(SCALE);
17557    let src = src.as_f32x16();
17558    let slice = slice as *mut i8;
17559    let offsets = offsets.as_i32x16();
17560    vscatterdps(slice, mask as i16, offsets, src, SCALE);
17561}
17562
17563/// Scatter single-precision (32-bit) floating-point elements from a into memory using 64-bit indices. 32-bit elements are stored at addresses starting at base_addr and offset by each 64-bit element in vindex (each index is scaled by the factor in scale) subject to mask k (elements are not stored when the corresponding mask bit is not set). scale should be 1, 2, 4 or 8.
17564///
17565/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_i64scatter_ps&expand=3128)
17566#[inline]
17567#[target_feature(enable = "avx512f")]
17568#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17569#[cfg_attr(test, assert_instr(vscatterqps, SCALE = 1))]
17570#[rustc_legacy_const_generics(3)]
17571pub unsafe fn _mm512_i64scatter_ps<const SCALE: i32>(
17572    slice: *mut f32,
17573    offsets: __m512i,
17574    src: __m256,
17575) {
17576    static_assert_imm8_scale!(SCALE);
17577    let src = src.as_f32x8();
17578    let neg_one = -1;
17579    let slice = slice as *mut i8;
17580    let offsets = offsets.as_i64x8();
17581    vscatterqps(slice, neg_one, offsets, src, SCALE);
17582}
17583
17584/// Scatter single-precision (32-bit) floating-point elements from a into memory using 64-bit indices. 32-bit elements are stored at addresses starting at base_addr and offset by each 64-bit element in vindex (each index is scaled by the factor in scale) subject to mask k (elements are not stored when the corresponding mask bit is not set). scale should be 1, 2, 4 or 8.
17585///
17586/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_i64scatter_ps&expand=3129)
17587#[inline]
17588#[target_feature(enable = "avx512f")]
17589#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17590#[cfg_attr(test, assert_instr(vscatterqps, SCALE = 1))]
17591#[rustc_legacy_const_generics(4)]
17592pub unsafe fn _mm512_mask_i64scatter_ps<const SCALE: i32>(
17593    slice: *mut f32,
17594    mask: __mmask8,
17595    offsets: __m512i,
17596    src: __m256,
17597) {
17598    static_assert_imm8_scale!(SCALE);
17599    let src = src.as_f32x8();
17600    let slice = slice as *mut i8;
17601    let offsets = offsets.as_i64x8();
17602    vscatterqps(slice, mask as i8, offsets, src, SCALE);
17603}
17604
17605/// Scatter 64-bit integers from a into memory using 32-bit indices. 64-bit elements are stored at addresses starting at base_addr and offset by each 32-bit element in vindex (each index is scaled by the factor in scale). scale should be 1, 2, 4 or 8.
17606///
17607/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_i32scatter_epi64&expand=3038)
17608#[inline]
17609#[target_feature(enable = "avx512f")]
17610#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17611#[cfg_attr(test, assert_instr(vpscatterdq, SCALE = 1))]
17612#[rustc_legacy_const_generics(3)]
17613pub unsafe fn _mm512_i32scatter_epi64<const SCALE: i32>(
17614    slice: *mut i64,
17615    offsets: __m256i,
17616    src: __m512i,
17617) {
17618    static_assert_imm8_scale!(SCALE);
17619    let src = src.as_i64x8();
17620    let neg_one = -1;
17621    let slice = slice as *mut i8;
17622    let offsets = offsets.as_i32x8();
17623    vpscatterdq(slice, neg_one, offsets, src, SCALE);
17624}
17625
17626/// Scatter 64-bit integers from a into memory using 32-bit indices. 64-bit elements are stored at addresses starting at base_addr and offset by each 32-bit element in vindex (each index is scaled by the factor in scale) subject to mask k (elements are not stored when the corresponding mask bit is not set). scale should be 1, 2, 4 or 8.
17627///
17628/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_i32scatter_epi64&expand=3039)
17629#[inline]
17630#[target_feature(enable = "avx512f")]
17631#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17632#[cfg_attr(test, assert_instr(vpscatterdq, SCALE = 1))]
17633#[rustc_legacy_const_generics(4)]
17634pub unsafe fn _mm512_mask_i32scatter_epi64<const SCALE: i32>(
17635    slice: *mut i64,
17636    mask: __mmask8,
17637    offsets: __m256i,
17638    src: __m512i,
17639) {
17640    static_assert_imm8_scale!(SCALE);
17641    let src = src.as_i64x8();
17642    let mask = mask as i8;
17643    let slice = slice as *mut i8;
17644    let offsets = offsets.as_i32x8();
17645    vpscatterdq(slice, mask, offsets, src, SCALE);
17646}
17647
17648/// Scatter 64-bit integers from a into memory using 64-bit indices. 64-bit elements are stored at addresses starting at base_addr and offset by each 64-bit element in vindex (each index is scaled by the factor in scale). scale should be 1, 2, 4 or 8.
17649///
17650/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_i64scatter_epi64&expand=3116)
17651#[inline]
17652#[target_feature(enable = "avx512f")]
17653#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17654#[cfg_attr(test, assert_instr(vpscatterqq, SCALE = 1))]
17655#[rustc_legacy_const_generics(3)]
17656pub unsafe fn _mm512_i64scatter_epi64<const SCALE: i32>(
17657    slice: *mut i64,
17658    offsets: __m512i,
17659    src: __m512i,
17660) {
17661    static_assert_imm8_scale!(SCALE);
17662    let src = src.as_i64x8();
17663    let neg_one = -1;
17664    let slice = slice as *mut i8;
17665    let offsets = offsets.as_i64x8();
17666    vpscatterqq(slice, neg_one, offsets, src, SCALE);
17667}
17668
17669/// Scatter 64-bit integers from a into memory using 64-bit indices. 64-bit elements are stored at addresses starting at base_addr and offset by each 64-bit element in vindex (each index is scaled by the factor in scale) subject to mask k (elements are not stored when the corresponding mask bit is not set). scale should be 1, 2, 4 or 8.
17670///
17671/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_i64scatter_epi64&expand=3117)
17672#[inline]
17673#[target_feature(enable = "avx512f")]
17674#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17675#[cfg_attr(test, assert_instr(vpscatterqq, SCALE = 1))]
17676#[rustc_legacy_const_generics(4)]
17677pub unsafe fn _mm512_mask_i64scatter_epi64<const SCALE: i32>(
17678    slice: *mut i64,
17679    mask: __mmask8,
17680    offsets: __m512i,
17681    src: __m512i,
17682) {
17683    static_assert_imm8_scale!(SCALE);
17684    let src = src.as_i64x8();
17685    let mask = mask as i8;
17686    let slice = slice as *mut i8;
17687    let offsets = offsets.as_i64x8();
17688    vpscatterqq(slice, mask, offsets, src, SCALE);
17689}
17690
17691/// Scatter 32-bit integers from a into memory using 32-bit indices. 32-bit elements are stored at addresses starting at base_addr and offset by each 32-bit element in vindex (each index is scaled by the factor in scale). scale should be 1, 2, 4 or 8.
17692///
17693/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_i32scatter_epi32&expand=3032)
17694#[inline]
17695#[target_feature(enable = "avx512f")]
17696#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17697#[cfg_attr(test, assert_instr(vpscatterdd, SCALE = 1))]
17698#[rustc_legacy_const_generics(3)]
17699pub unsafe fn _mm512_i32scatter_epi32<const SCALE: i32>(
17700    slice: *mut i32,
17701    offsets: __m512i,
17702    src: __m512i,
17703) {
17704    static_assert_imm8_scale!(SCALE);
17705    let src = src.as_i32x16();
17706    let neg_one = -1;
17707    let slice = slice as *mut i8;
17708    let offsets = offsets.as_i32x16();
17709    vpscatterdd(slice, neg_one, offsets, src, SCALE);
17710}
17711
17712/// Scatter 32-bit integers from a into memory using 32-bit indices. 32-bit elements are stored at addresses starting at base_addr and offset by each 32-bit element in vindex (each index is scaled by the factor in scale) subject to mask k (elements are not stored when the corresponding mask bit is not set). scale should be 1, 2, 4 or 8.
17713///
17714/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_i32scatter_epi32&expand=3033)
17715#[inline]
17716#[target_feature(enable = "avx512f")]
17717#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17718#[cfg_attr(test, assert_instr(vpscatterdd, SCALE = 1))]
17719#[rustc_legacy_const_generics(4)]
17720pub unsafe fn _mm512_mask_i32scatter_epi32<const SCALE: i32>(
17721    slice: *mut i32,
17722    mask: __mmask16,
17723    offsets: __m512i,
17724    src: __m512i,
17725) {
17726    static_assert_imm8_scale!(SCALE);
17727    let src = src.as_i32x16();
17728    let mask = mask as i16;
17729    let slice = slice as *mut i8;
17730    let offsets = offsets.as_i32x16();
17731    vpscatterdd(slice, mask, offsets, src, SCALE);
17732}
17733
17734/// Scatter 32-bit integers from a into memory using 64-bit indices. 32-bit elements are stored at addresses starting at base_addr and offset by each 64-bit element in vindex (each index is scaled by the factor in scale). scale should be 1, 2, 4 or 8.
17735///
17736/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_i64scatter_epi32&expand=3108)
17737#[inline]
17738#[target_feature(enable = "avx512f")]
17739#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17740#[cfg_attr(test, assert_instr(vpscatterqd, SCALE = 1))]
17741#[rustc_legacy_const_generics(3)]
17742pub unsafe fn _mm512_i64scatter_epi32<const SCALE: i32>(
17743    slice: *mut i32,
17744    offsets: __m512i,
17745    src: __m256i,
17746) {
17747    static_assert_imm8_scale!(SCALE);
17748    let src = src.as_i32x8();
17749    let neg_one = -1;
17750    let slice = slice as *mut i8;
17751    let offsets = offsets.as_i64x8();
17752    vpscatterqd(slice, neg_one, offsets, src, SCALE);
17753}
17754
17755/// Scatter 32-bit integers from a into memory using 64-bit indices. 32-bit elements are stored at addresses starting at base_addr and offset by each 64-bit element in vindex (each index is scaled by the factor in scale) subject to mask k (elements are not stored when the corresponding mask bit is not set). scale should be 1, 2, 4 or 8.
17756///
17757/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_i64scatter_epi32&expand=3109)
17758#[inline]
17759#[target_feature(enable = "avx512f")]
17760#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17761#[cfg_attr(test, assert_instr(vpscatterqd, SCALE = 1))]
17762#[rustc_legacy_const_generics(4)]
17763pub unsafe fn _mm512_mask_i64scatter_epi32<const SCALE: i32>(
17764    slice: *mut i32,
17765    mask: __mmask8,
17766    offsets: __m512i,
17767    src: __m256i,
17768) {
17769    static_assert_imm8_scale!(SCALE);
17770    let src = src.as_i32x8();
17771    let mask = mask as i8;
17772    let slice = slice as *mut i8;
17773    let offsets = offsets.as_i64x8();
17774    vpscatterqd(slice, mask, offsets, src, SCALE);
17775}
17776
17777/// Loads 8 64-bit integer elements from memory starting at location base_addr at packed 32-bit integer
17778/// indices stored in the lower half of vindex scaled by scale and stores them in dst.
17779///
17780/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm512_i32logather_epi64)
17781#[inline]
17782#[target_feature(enable = "avx512f")]
17783#[cfg_attr(test, assert_instr(vpgatherdq, SCALE = 1))]
17784#[rustc_legacy_const_generics(2)]
17785#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17786pub unsafe fn _mm512_i32logather_epi64<const SCALE: i32>(
17787    vindex: __m512i,
17788    base_addr: *const i64,
17789) -> __m512i {
17790    _mm512_i32gather_epi64::<SCALE>(_mm512_castsi512_si256(vindex), base_addr)
17791}
17792
17793/// Loads 8 64-bit integer elements from memory starting at location base_addr at packed 32-bit integer
17794/// indices stored in the lower half of vindex scaled by scale and stores them in dst using writemask k
17795/// (elements are copied from src when the corresponding mask bit is not set).
17796///
17797/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm512_mask_i32logather_epi64)
17798#[inline]
17799#[target_feature(enable = "avx512f")]
17800#[cfg_attr(test, assert_instr(vpgatherdq, SCALE = 1))]
17801#[rustc_legacy_const_generics(4)]
17802#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17803pub unsafe fn _mm512_mask_i32logather_epi64<const SCALE: i32>(
17804    src: __m512i,
17805    k: __mmask8,
17806    vindex: __m512i,
17807    base_addr: *const i64,
17808) -> __m512i {
17809    _mm512_mask_i32gather_epi64::<SCALE>(src, k, _mm512_castsi512_si256(vindex), base_addr)
17810}
17811
17812/// Loads 8 double-precision (64-bit) floating-point elements from memory starting at location base_addr
17813/// at packed 32-bit integer indices stored in the lower half of vindex scaled by scale and stores them in dst.
17814///
17815/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm512_i32logather_pd)
17816#[inline]
17817#[target_feature(enable = "avx512f")]
17818#[cfg_attr(test, assert_instr(vgatherdpd, SCALE = 1))]
17819#[rustc_legacy_const_generics(2)]
17820#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17821pub unsafe fn _mm512_i32logather_pd<const SCALE: i32>(
17822    vindex: __m512i,
17823    base_addr: *const f64,
17824) -> __m512d {
17825    _mm512_i32gather_pd::<SCALE>(_mm512_castsi512_si256(vindex), base_addr)
17826}
17827
17828/// Loads 8 double-precision (64-bit) floating-point elements from memory starting at location base_addr
17829/// at packed 32-bit integer indices stored in the lower half of vindex scaled by scale and stores them in dst
17830/// using writemask k (elements are copied from src when the corresponding mask bit is not set).
17831///
17832/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm512_mask_i32logather_pd)
17833#[inline]
17834#[target_feature(enable = "avx512f")]
17835#[cfg_attr(test, assert_instr(vgatherdpd, SCALE = 1))]
17836#[rustc_legacy_const_generics(4)]
17837#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17838pub unsafe fn _mm512_mask_i32logather_pd<const SCALE: i32>(
17839    src: __m512d,
17840    k: __mmask8,
17841    vindex: __m512i,
17842    base_addr: *const f64,
17843) -> __m512d {
17844    _mm512_mask_i32gather_pd::<SCALE>(src, k, _mm512_castsi512_si256(vindex), base_addr)
17845}
17846
17847/// Stores 8 64-bit integer elements from a to memory starting at location base_addr at packed 32-bit integer
17848/// indices stored in the lower half of vindex scaled by scale.
17849///
17850/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm512_i32loscatter_epi64)
17851#[inline]
17852#[target_feature(enable = "avx512f")]
17853#[cfg_attr(test, assert_instr(vpscatterdq, SCALE = 1))]
17854#[rustc_legacy_const_generics(3)]
17855#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17856pub unsafe fn _mm512_i32loscatter_epi64<const SCALE: i32>(
17857    base_addr: *mut i64,
17858    vindex: __m512i,
17859    a: __m512i,
17860) {
17861    _mm512_i32scatter_epi64::<SCALE>(base_addr, _mm512_castsi512_si256(vindex), a)
17862}
17863
17864/// Stores 8 64-bit integer elements from a to memory starting at location base_addr at packed 32-bit integer
17865/// indices stored in the lower half of vindex scaled by scale using writemask k (elements whose corresponding
17866/// mask bit is not set are not written to memory).
17867///
17868/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm512_mask_i32loscatter_epi64)
17869#[inline]
17870#[target_feature(enable = "avx512f")]
17871#[cfg_attr(test, assert_instr(vpscatterdq, SCALE = 1))]
17872#[rustc_legacy_const_generics(4)]
17873#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17874pub unsafe fn _mm512_mask_i32loscatter_epi64<const SCALE: i32>(
17875    base_addr: *mut i64,
17876    k: __mmask8,
17877    vindex: __m512i,
17878    a: __m512i,
17879) {
17880    _mm512_mask_i32scatter_epi64::<SCALE>(base_addr, k, _mm512_castsi512_si256(vindex), a)
17881}
17882
17883/// Stores 8 double-precision (64-bit) floating-point elements from a to memory starting at location base_addr
17884/// at packed 32-bit integer indices stored in the lower half of vindex scaled by scale.
17885///
17886/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm512_i32loscatter_pd)
17887#[inline]
17888#[target_feature(enable = "avx512f")]
17889#[cfg_attr(test, assert_instr(vscatterdpd, SCALE = 1))]
17890#[rustc_legacy_const_generics(3)]
17891#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17892pub unsafe fn _mm512_i32loscatter_pd<const SCALE: i32>(
17893    base_addr: *mut f64,
17894    vindex: __m512i,
17895    a: __m512d,
17896) {
17897    _mm512_i32scatter_pd::<SCALE>(base_addr, _mm512_castsi512_si256(vindex), a)
17898}
17899
17900/// Stores 8 double-precision (64-bit) floating-point elements from a to memory starting at location base_addr
17901/// at packed 32-bit integer indices stored in the lower half of vindex scaled by scale using writemask k
17902/// (elements whose corresponding mask bit is not set are not written to memory).
17903///
17904/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm512_mask_i32loscatter_pd)
17905#[inline]
17906#[target_feature(enable = "avx512f")]
17907#[cfg_attr(test, assert_instr(vscatterdpd, SCALE = 1))]
17908#[rustc_legacy_const_generics(4)]
17909#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17910pub unsafe fn _mm512_mask_i32loscatter_pd<const SCALE: i32>(
17911    base_addr: *mut f64,
17912    k: __mmask8,
17913    vindex: __m512i,
17914    a: __m512d,
17915) {
17916    _mm512_mask_i32scatter_pd::<SCALE>(base_addr, k, _mm512_castsi512_si256(vindex), a)
17917}
17918
17919/// Stores 8 32-bit integer elements from a to memory starting at location base_addr at packed 32-bit integer
17920/// indices stored in vindex scaled by scale
17921///
17922/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_i32scatter_epi32)
17923#[inline]
17924#[target_feature(enable = "avx512f,avx512vl")]
17925#[cfg_attr(test, assert_instr(vpscatterdd, SCALE = 1))]
17926#[rustc_legacy_const_generics(3)]
17927#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17928pub unsafe fn _mm256_i32scatter_epi32<const SCALE: i32>(
17929    base_addr: *mut i32,
17930    vindex: __m256i,
17931    a: __m256i,
17932) {
17933    static_assert_imm8_scale!(SCALE);
17934    vpscatterdd_256(base_addr as _, 0xff, vindex.as_i32x8(), a.as_i32x8(), SCALE)
17935}
17936
17937/// Stores 8 32-bit integer elements from a to memory starting at location base_addr at packed 32-bit integer
17938/// indices stored in vindex scaled by scale using writemask k (elements whose corresponding mask bit is not set
17939/// are not written to memory).
17940///
17941/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_mask_i32scatter_epi32)
17942#[inline]
17943#[target_feature(enable = "avx512f,avx512vl")]
17944#[cfg_attr(test, assert_instr(vpscatterdd, SCALE = 1))]
17945#[rustc_legacy_const_generics(4)]
17946#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17947pub unsafe fn _mm256_mask_i32scatter_epi32<const SCALE: i32>(
17948    base_addr: *mut i32,
17949    k: __mmask8,
17950    vindex: __m256i,
17951    a: __m256i,
17952) {
17953    static_assert_imm8_scale!(SCALE);
17954    vpscatterdd_256(base_addr as _, k, vindex.as_i32x8(), a.as_i32x8(), SCALE)
17955}
17956
17957/// Scatter 64-bit integers from a into memory using 32-bit indices. 64-bit elements are stored at addresses starting at base_addr and offset by each 32-bit element in vindex (each index is scaled by the factor in scale). scale should be 1, 2, 4 or 8.
17958///
17959/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_i32scatter_epi64&expand=4099)
17960#[inline]
17961#[target_feature(enable = "avx512f,avx512vl")]
17962#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17963#[cfg_attr(test, assert_instr(vpscatterdq, SCALE = 1))]
17964#[rustc_legacy_const_generics(3)]
17965pub unsafe fn _mm256_i32scatter_epi64<const SCALE: i32>(
17966    slice: *mut i64,
17967    offsets: __m128i,
17968    src: __m256i,
17969) {
17970    static_assert_imm8_scale!(SCALE);
17971    let src = src.as_i64x4();
17972    let slice = slice as *mut i8;
17973    let offsets = offsets.as_i32x4();
17974    vpscatterdq_256(slice, 0xff, offsets, src, SCALE);
17975}
17976
17977/// Stores 4 64-bit integer elements from a to memory starting at location base_addr at packed 32-bit integer
17978/// indices stored in vindex scaled by scale using writemask k (elements whose corresponding mask bit is not set
17979/// are not written to memory).
17980///
17981/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_mask_i32scatter_epi64)
17982#[inline]
17983#[target_feature(enable = "avx512f,avx512vl")]
17984#[cfg_attr(test, assert_instr(vpscatterdq, SCALE = 1))]
17985#[rustc_legacy_const_generics(4)]
17986#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
17987pub unsafe fn _mm256_mask_i32scatter_epi64<const SCALE: i32>(
17988    base_addr: *mut i64,
17989    k: __mmask8,
17990    vindex: __m128i,
17991    a: __m256i,
17992) {
17993    static_assert_imm8_scale!(SCALE);
17994    vpscatterdq_256(base_addr as _, k, vindex.as_i32x4(), a.as_i64x4(), SCALE)
17995}
17996
17997/// Stores 4 double-precision (64-bit) floating-point elements from a to memory starting at location base_addr
17998/// at packed 32-bit integer indices stored in vindex scaled by scale
17999///
18000/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_i32scatter_pd)
18001#[inline]
18002#[target_feature(enable = "avx512f,avx512vl")]
18003#[cfg_attr(test, assert_instr(vscatterdpd, SCALE = 1))]
18004#[rustc_legacy_const_generics(3)]
18005#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18006pub unsafe fn _mm256_i32scatter_pd<const SCALE: i32>(
18007    base_addr: *mut f64,
18008    vindex: __m128i,
18009    a: __m256d,
18010) {
18011    static_assert_imm8_scale!(SCALE);
18012    vscatterdpd_256(base_addr as _, 0xff, vindex.as_i32x4(), a.as_f64x4(), SCALE)
18013}
18014
18015/// Stores 4 double-precision (64-bit) floating-point elements from a to memory starting at location base_addr
18016/// at packed 32-bit integer indices stored in vindex scaled by scale using writemask k (elements whose corresponding
18017/// mask bit is not set are not written to memory).
18018///
18019/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_mask_i32scatter_pd)
18020#[inline]
18021#[target_feature(enable = "avx512f,avx512vl")]
18022#[cfg_attr(test, assert_instr(vscatterdpd, SCALE = 1))]
18023#[rustc_legacy_const_generics(4)]
18024#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18025pub unsafe fn _mm256_mask_i32scatter_pd<const SCALE: i32>(
18026    base_addr: *mut f64,
18027    k: __mmask8,
18028    vindex: __m128i,
18029    a: __m256d,
18030) {
18031    static_assert_imm8_scale!(SCALE);
18032    vscatterdpd_256(base_addr as _, k, vindex.as_i32x4(), a.as_f64x4(), SCALE)
18033}
18034
18035/// Stores 8 single-precision (32-bit) floating-point elements from a to memory starting at location base_addr
18036/// at packed 32-bit integer indices stored in vindex scaled by scale
18037///
18038/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_i32scatter_ps)
18039#[inline]
18040#[target_feature(enable = "avx512f,avx512vl")]
18041#[cfg_attr(test, assert_instr(vscatterdps, SCALE = 1))]
18042#[rustc_legacy_const_generics(3)]
18043#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18044pub unsafe fn _mm256_i32scatter_ps<const SCALE: i32>(
18045    base_addr: *mut f32,
18046    vindex: __m256i,
18047    a: __m256,
18048) {
18049    static_assert_imm8_scale!(SCALE);
18050    vscatterdps_256(base_addr as _, 0xff, vindex.as_i32x8(), a.as_f32x8(), SCALE)
18051}
18052
18053/// Stores 8 single-precision (32-bit) floating-point elements from a to memory starting at location base_addr
18054/// at packed 32-bit integer indices stored in vindex scaled by scale using writemask k (elements whose corresponding
18055/// mask bit is not set are not written to memory).
18056///
18057/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_mask_i32scatter_ps)
18058#[inline]
18059#[target_feature(enable = "avx512f,avx512vl")]
18060#[cfg_attr(test, assert_instr(vscatterdps, SCALE = 1))]
18061#[rustc_legacy_const_generics(4)]
18062#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18063pub unsafe fn _mm256_mask_i32scatter_ps<const SCALE: i32>(
18064    base_addr: *mut f32,
18065    k: __mmask8,
18066    vindex: __m256i,
18067    a: __m256,
18068) {
18069    static_assert_imm8_scale!(SCALE);
18070    vscatterdps_256(base_addr as _, k, vindex.as_i32x8(), a.as_f32x8(), SCALE)
18071}
18072
18073/// Stores 4 32-bit integer elements from a to memory starting at location base_addr at packed 64-bit integer
18074/// indices stored in vindex scaled by scale
18075///
18076/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_i64scatter_epi32)
18077#[inline]
18078#[target_feature(enable = "avx512f,avx512vl")]
18079#[cfg_attr(test, assert_instr(vpscatterqd, SCALE = 1))]
18080#[rustc_legacy_const_generics(3)]
18081#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18082pub unsafe fn _mm256_i64scatter_epi32<const SCALE: i32>(
18083    base_addr: *mut i32,
18084    vindex: __m256i,
18085    a: __m128i,
18086) {
18087    static_assert_imm8_scale!(SCALE);
18088    vpscatterqd_256(base_addr as _, 0xff, vindex.as_i64x4(), a.as_i32x4(), SCALE)
18089}
18090
18091/// Stores 4 32-bit integer elements from a to memory starting at location base_addr at packed 64-bit integer
18092/// indices stored in vindex scaled by scale using writemask k (elements whose corresponding mask bit is not set
18093/// are not written to memory).
18094///
18095/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_mask_i64scatter_epi32)
18096#[inline]
18097#[target_feature(enable = "avx512f,avx512vl")]
18098#[cfg_attr(test, assert_instr(vpscatterqd, SCALE = 1))]
18099#[rustc_legacy_const_generics(4)]
18100#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18101pub unsafe fn _mm256_mask_i64scatter_epi32<const SCALE: i32>(
18102    base_addr: *mut i32,
18103    k: __mmask8,
18104    vindex: __m256i,
18105    a: __m128i,
18106) {
18107    static_assert_imm8_scale!(SCALE);
18108    vpscatterqd_256(base_addr as _, k, vindex.as_i64x4(), a.as_i32x4(), SCALE)
18109}
18110
18111/// Stores 4 64-bit integer elements from a to memory starting at location base_addr at packed 64-bit integer
18112/// indices stored in vindex scaled by scale
18113///
18114/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_i64scatter_epi64)
18115#[inline]
18116#[target_feature(enable = "avx512f,avx512vl")]
18117#[cfg_attr(test, assert_instr(vpscatterqq, SCALE = 1))]
18118#[rustc_legacy_const_generics(3)]
18119#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18120pub unsafe fn _mm256_i64scatter_epi64<const SCALE: i32>(
18121    base_addr: *mut i64,
18122    vindex: __m256i,
18123    a: __m256i,
18124) {
18125    static_assert_imm8_scale!(SCALE);
18126    vpscatterqq_256(base_addr as _, 0xff, vindex.as_i64x4(), a.as_i64x4(), SCALE)
18127}
18128
18129/// Stores 4 64-bit integer elements from a to memory starting at location base_addr at packed 64-bit integer
18130/// indices stored in vindex scaled by scale using writemask k (elements whose corresponding mask bit is not set
18131/// are not written to memory).
18132///
18133/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_mask_i64scatter_epi64)
18134#[inline]
18135#[target_feature(enable = "avx512f,avx512vl")]
18136#[cfg_attr(test, assert_instr(vpscatterqq, SCALE = 1))]
18137#[rustc_legacy_const_generics(4)]
18138#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18139pub unsafe fn _mm256_mask_i64scatter_epi64<const SCALE: i32>(
18140    base_addr: *mut i64,
18141    k: __mmask8,
18142    vindex: __m256i,
18143    a: __m256i,
18144) {
18145    static_assert_imm8_scale!(SCALE);
18146    vpscatterqq_256(base_addr as _, k, vindex.as_i64x4(), a.as_i64x4(), SCALE)
18147}
18148
18149/// Stores 4 double-precision (64-bit) floating-point elements from a to memory starting at location base_addr
18150/// at packed 64-bit integer indices stored in vindex scaled by scale
18151///
18152/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_i64scatter_pd)
18153#[inline]
18154#[target_feature(enable = "avx512f,avx512vl")]
18155#[cfg_attr(test, assert_instr(vscatterqpd, SCALE = 1))]
18156#[rustc_legacy_const_generics(3)]
18157#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18158pub unsafe fn _mm256_i64scatter_pd<const SCALE: i32>(
18159    base_addr: *mut f64,
18160    vindex: __m256i,
18161    a: __m256d,
18162) {
18163    static_assert_imm8_scale!(SCALE);
18164    vscatterqpd_256(base_addr as _, 0xff, vindex.as_i64x4(), a.as_f64x4(), SCALE)
18165}
18166
18167/// Stores 4 double-precision (64-bit) floating-point elements from a to memory starting at location base_addr
18168/// at packed 64-bit integer indices stored in vindex scaled by scale using writemask k (elements whose corresponding
18169/// mask bit is not set are not written to memory).
18170///
18171/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_mask_i64scatter_pd)
18172#[inline]
18173#[target_feature(enable = "avx512f,avx512vl")]
18174#[cfg_attr(test, assert_instr(vscatterqpd, SCALE = 1))]
18175#[rustc_legacy_const_generics(4)]
18176#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18177pub unsafe fn _mm256_mask_i64scatter_pd<const SCALE: i32>(
18178    base_addr: *mut f64,
18179    k: __mmask8,
18180    vindex: __m256i,
18181    a: __m256d,
18182) {
18183    static_assert_imm8_scale!(SCALE);
18184    vscatterqpd_256(base_addr as _, k, vindex.as_i64x4(), a.as_f64x4(), SCALE)
18185}
18186
18187/// Stores 4 single-precision (32-bit) floating-point elements from a to memory starting at location base_addr
18188/// at packed 64-bit integer indices stored in vindex scaled by scale
18189///
18190/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_i64scatter_ps)
18191#[inline]
18192#[target_feature(enable = "avx512f,avx512vl")]
18193#[cfg_attr(test, assert_instr(vscatterqps, SCALE = 1))]
18194#[rustc_legacy_const_generics(3)]
18195#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18196pub unsafe fn _mm256_i64scatter_ps<const SCALE: i32>(
18197    base_addr: *mut f32,
18198    vindex: __m256i,
18199    a: __m128,
18200) {
18201    static_assert_imm8_scale!(SCALE);
18202    vscatterqps_256(base_addr as _, 0xff, vindex.as_i64x4(), a.as_f32x4(), SCALE)
18203}
18204
18205/// Stores 4 single-precision (32-bit) floating-point elements from a to memory starting at location base_addr
18206/// at packed 64-bit integer indices stored in vindex scaled by scale using writemask k (elements whose corresponding
18207/// mask bit is not set are not written to memory).
18208///
18209/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_mask_i64scatter_ps)
18210#[inline]
18211#[target_feature(enable = "avx512f,avx512vl")]
18212#[cfg_attr(test, assert_instr(vscatterqps, SCALE = 1))]
18213#[rustc_legacy_const_generics(4)]
18214#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18215pub unsafe fn _mm256_mask_i64scatter_ps<const SCALE: i32>(
18216    base_addr: *mut f32,
18217    k: __mmask8,
18218    vindex: __m256i,
18219    a: __m128,
18220) {
18221    static_assert_imm8_scale!(SCALE);
18222    vscatterqps_256(base_addr as _, k, vindex.as_i64x4(), a.as_f32x4(), SCALE)
18223}
18224
18225/// Loads 8 32-bit integer elements from memory starting at location base_addr at packed 32-bit integer
18226/// indices stored in vindex scaled by scale using writemask k (elements are copied from src when the corresponding
18227/// mask bit is not set).
18228///
18229/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_mmask_i32gather_epi32)
18230#[inline]
18231#[target_feature(enable = "avx512f,avx512vl")]
18232#[cfg_attr(test, assert_instr(vpgatherdd, SCALE = 1))]
18233#[rustc_legacy_const_generics(4)]
18234#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18235pub unsafe fn _mm256_mmask_i32gather_epi32<const SCALE: i32>(
18236    src: __m256i,
18237    k: __mmask8,
18238    vindex: __m256i,
18239    base_addr: *const i32,
18240) -> __m256i {
18241    static_assert_imm8_scale!(SCALE);
18242    transmute(vpgatherdd_256(
18243        src.as_i32x8(),
18244        base_addr as _,
18245        vindex.as_i32x8(),
18246        k,
18247        SCALE,
18248    ))
18249}
18250
18251/// Loads 4 64-bit integer elements from memory starting at location base_addr at packed 32-bit integer
18252/// indices stored in vindex scaled by scale using writemask k (elements are copied from src when the corresponding
18253/// mask bit is not set).
18254///
18255/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_mmask_i32gather_epi64)
18256#[inline]
18257#[target_feature(enable = "avx512f,avx512vl")]
18258#[cfg_attr(test, assert_instr(vpgatherdq, SCALE = 1))]
18259#[rustc_legacy_const_generics(4)]
18260#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18261pub unsafe fn _mm256_mmask_i32gather_epi64<const SCALE: i32>(
18262    src: __m256i,
18263    k: __mmask8,
18264    vindex: __m128i,
18265    base_addr: *const i64,
18266) -> __m256i {
18267    static_assert_imm8_scale!(SCALE);
18268    transmute(vpgatherdq_256(
18269        src.as_i64x4(),
18270        base_addr as _,
18271        vindex.as_i32x4(),
18272        k,
18273        SCALE,
18274    ))
18275}
18276
18277/// Loads 4 double-precision (64-bit) floating-point elements from memory starting at location base_addr
18278/// at packed 32-bit integer indices stored in vindex scaled by scale using writemask k (elements are copied
18279/// from src when the corresponding mask bit is not set).
18280///
18281/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_mmask_i32gather_pd)
18282#[inline]
18283#[target_feature(enable = "avx512f,avx512vl")]
18284#[cfg_attr(test, assert_instr(vgatherdpd, SCALE = 1))]
18285#[rustc_legacy_const_generics(4)]
18286#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18287pub unsafe fn _mm256_mmask_i32gather_pd<const SCALE: i32>(
18288    src: __m256d,
18289    k: __mmask8,
18290    vindex: __m128i,
18291    base_addr: *const f64,
18292) -> __m256d {
18293    static_assert_imm8_scale!(SCALE);
18294    transmute(vgatherdpd_256(
18295        src.as_f64x4(),
18296        base_addr as _,
18297        vindex.as_i32x4(),
18298        k,
18299        SCALE,
18300    ))
18301}
18302
18303/// Loads 8 single-precision (32-bit) floating-point elements from memory starting at location base_addr
18304/// at packed 32-bit integer indices stored in vindex scaled by scale using writemask k (elements are copied
18305/// from src when the corresponding mask bit is not set).
18306///
18307/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_mmask_i32gather_ps)
18308#[inline]
18309#[target_feature(enable = "avx512f,avx512vl")]
18310#[cfg_attr(test, assert_instr(vgatherdps, SCALE = 1))]
18311#[rustc_legacy_const_generics(4)]
18312#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18313pub unsafe fn _mm256_mmask_i32gather_ps<const SCALE: i32>(
18314    src: __m256,
18315    k: __mmask8,
18316    vindex: __m256i,
18317    base_addr: *const f32,
18318) -> __m256 {
18319    static_assert_imm8_scale!(SCALE);
18320    transmute(vgatherdps_256(
18321        src.as_f32x8(),
18322        base_addr as _,
18323        vindex.as_i32x8(),
18324        k,
18325        SCALE,
18326    ))
18327}
18328
18329/// Loads 4 32-bit integer elements from memory starting at location base_addr at packed 64-bit integer
18330/// indices stored in vindex scaled by scale using writemask k (elements are copied from src when the corresponding
18331/// mask bit is not set).
18332///
18333/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_mmask_i64gather_epi32)
18334#[inline]
18335#[target_feature(enable = "avx512f,avx512vl")]
18336#[cfg_attr(test, assert_instr(vpgatherqd, SCALE = 1))]
18337#[rustc_legacy_const_generics(4)]
18338#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18339pub unsafe fn _mm256_mmask_i64gather_epi32<const SCALE: i32>(
18340    src: __m128i,
18341    k: __mmask8,
18342    vindex: __m256i,
18343    base_addr: *const i32,
18344) -> __m128i {
18345    static_assert_imm8_scale!(SCALE);
18346    transmute(vpgatherqd_256(
18347        src.as_i32x4(),
18348        base_addr as _,
18349        vindex.as_i64x4(),
18350        k,
18351        SCALE,
18352    ))
18353}
18354
18355/// Loads 4 64-bit integer elements from memory starting at location base_addr at packed 32-bit integer
18356/// indices stored in vindex scaled by scale using writemask k (elements are copied from src when the corresponding
18357/// mask bit is not set).
18358///
18359/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_mmask_i64gather_epi64)
18360#[inline]
18361#[target_feature(enable = "avx512f,avx512vl")]
18362#[cfg_attr(test, assert_instr(vpgatherqq, SCALE = 1))]
18363#[rustc_legacy_const_generics(4)]
18364#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18365pub unsafe fn _mm256_mmask_i64gather_epi64<const SCALE: i32>(
18366    src: __m256i,
18367    k: __mmask8,
18368    vindex: __m256i,
18369    base_addr: *const i64,
18370) -> __m256i {
18371    static_assert_imm8_scale!(SCALE);
18372    transmute(vpgatherqq_256(
18373        src.as_i64x4(),
18374        base_addr as _,
18375        vindex.as_i64x4(),
18376        k,
18377        SCALE,
18378    ))
18379}
18380
18381/// Loads 4 double-precision (64-bit) floating-point elements from memory starting at location base_addr
18382/// at packed 32-bit integer indices stored in vindex scaled by scale using writemask k (elements are copied
18383/// from src when the corresponding mask bit is not set).
18384///
18385/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_mmask_i64gather_pd)
18386#[inline]
18387#[target_feature(enable = "avx512f,avx512vl")]
18388#[cfg_attr(test, assert_instr(vgatherqpd, SCALE = 1))]
18389#[rustc_legacy_const_generics(4)]
18390#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18391pub unsafe fn _mm256_mmask_i64gather_pd<const SCALE: i32>(
18392    src: __m256d,
18393    k: __mmask8,
18394    vindex: __m256i,
18395    base_addr: *const f64,
18396) -> __m256d {
18397    static_assert_imm8_scale!(SCALE);
18398    transmute(vgatherqpd_256(
18399        src.as_f64x4(),
18400        base_addr as _,
18401        vindex.as_i64x4(),
18402        k,
18403        SCALE,
18404    ))
18405}
18406
18407/// Loads 4 single-precision (32-bit) floating-point elements from memory starting at location base_addr
18408/// at packed 32-bit integer indices stored in vindex scaled by scale using writemask k (elements are copied
18409/// from src when the corresponding mask bit is not set).
18410///
18411/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm256_mmask_i64gather_ps)
18412#[inline]
18413#[target_feature(enable = "avx512f,avx512vl")]
18414#[cfg_attr(test, assert_instr(vgatherqps, SCALE = 1))]
18415#[rustc_legacy_const_generics(4)]
18416#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18417pub unsafe fn _mm256_mmask_i64gather_ps<const SCALE: i32>(
18418    src: __m128,
18419    k: __mmask8,
18420    vindex: __m256i,
18421    base_addr: *const f32,
18422) -> __m128 {
18423    static_assert_imm8_scale!(SCALE);
18424    transmute(vgatherqps_256(
18425        src.as_f32x4(),
18426        base_addr as _,
18427        vindex.as_i64x4(),
18428        k,
18429        SCALE,
18430    ))
18431}
18432
18433/// Stores 4 32-bit integer elements from a to memory starting at location base_addr at packed 32-bit integer
18434/// indices stored in vindex scaled by scale
18435///
18436/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_i32scatter_epi32)
18437#[inline]
18438#[target_feature(enable = "avx512f,avx512vl")]
18439#[cfg_attr(test, assert_instr(vpscatterdd, SCALE = 1))]
18440#[rustc_legacy_const_generics(3)]
18441#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18442pub unsafe fn _mm_i32scatter_epi32<const SCALE: i32>(
18443    base_addr: *mut i32,
18444    vindex: __m128i,
18445    a: __m128i,
18446) {
18447    static_assert_imm8_scale!(SCALE);
18448    vpscatterdd_128(base_addr as _, 0xff, vindex.as_i32x4(), a.as_i32x4(), SCALE)
18449}
18450
18451/// Stores 4 32-bit integer elements from a to memory starting at location base_addr at packed 32-bit integer
18452/// indices stored in vindex scaled by scale using writemask k (elements whose corresponding mask bit is not set
18453/// are not written to memory).
18454///
18455/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mask_i32scatter_epi32)
18456#[inline]
18457#[target_feature(enable = "avx512f,avx512vl")]
18458#[cfg_attr(test, assert_instr(vpscatterdd, SCALE = 1))]
18459#[rustc_legacy_const_generics(4)]
18460#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18461pub unsafe fn _mm_mask_i32scatter_epi32<const SCALE: i32>(
18462    base_addr: *mut i32,
18463    k: __mmask8,
18464    vindex: __m128i,
18465    a: __m128i,
18466) {
18467    static_assert_imm8_scale!(SCALE);
18468    vpscatterdd_128(base_addr as _, k, vindex.as_i32x4(), a.as_i32x4(), SCALE)
18469}
18470
18471/// Stores 2 64-bit integer elements from a to memory starting at location base_addr at packed 32-bit integer
18472/// indices stored in vindex scaled by scale
18473///
18474/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_i32scatter_epi64)
18475#[inline]
18476#[target_feature(enable = "avx512f,avx512vl")]
18477#[cfg_attr(test, assert_instr(vpscatterdq, SCALE = 1))]
18478#[rustc_legacy_const_generics(3)]
18479#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18480pub unsafe fn _mm_i32scatter_epi64<const SCALE: i32>(
18481    base_addr: *mut i64,
18482    vindex: __m128i,
18483    a: __m128i,
18484) {
18485    static_assert_imm8_scale!(SCALE);
18486    vpscatterdq_128(base_addr as _, 0xff, vindex.as_i32x4(), a.as_i64x2(), SCALE)
18487}
18488
18489/// Stores 2 64-bit integer elements from a to memory starting at location base_addr at packed 32-bit integer
18490/// indices stored in vindex scaled by scale using writemask k (elements whose corresponding mask bit is not set
18491/// are not written to memory).
18492///
18493/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mask_i32scatter_epi64)
18494#[inline]
18495#[target_feature(enable = "avx512f,avx512vl")]
18496#[cfg_attr(test, assert_instr(vpscatterdq, SCALE = 1))]
18497#[rustc_legacy_const_generics(4)]
18498#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18499pub unsafe fn _mm_mask_i32scatter_epi64<const SCALE: i32>(
18500    base_addr: *mut i64,
18501    k: __mmask8,
18502    vindex: __m128i,
18503    a: __m128i,
18504) {
18505    static_assert_imm8_scale!(SCALE);
18506    vpscatterdq_128(base_addr as _, k, vindex.as_i32x4(), a.as_i64x2(), SCALE)
18507}
18508
18509/// Stores 2 double-precision (64-bit) floating-point elements from a to memory starting at location base_addr
18510/// at packed 32-bit integer indices stored in vindex scaled by scale
18511///
18512/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_i32scatter_pd)
18513#[inline]
18514#[target_feature(enable = "avx512f,avx512vl")]
18515#[cfg_attr(test, assert_instr(vscatterdpd, SCALE = 1))]
18516#[rustc_legacy_const_generics(3)]
18517#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18518pub unsafe fn _mm_i32scatter_pd<const SCALE: i32>(
18519    base_addr: *mut f64,
18520    vindex: __m128i,
18521    a: __m128d,
18522) {
18523    static_assert_imm8_scale!(SCALE);
18524    vscatterdpd_128(base_addr as _, 0xff, vindex.as_i32x4(), a.as_f64x2(), SCALE)
18525}
18526
18527/// Stores 2 double-precision (64-bit) floating-point elements from a to memory starting at location base_addr
18528/// at packed 32-bit integer indices stored in vindex scaled by scale using writemask k (elements whose corresponding
18529/// mask bit is not set are not written to memory).
18530///
18531/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mask_i32scatter_pd)
18532#[inline]
18533#[target_feature(enable = "avx512f,avx512vl")]
18534#[cfg_attr(test, assert_instr(vscatterdpd, SCALE = 1))]
18535#[rustc_legacy_const_generics(4)]
18536#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18537pub unsafe fn _mm_mask_i32scatter_pd<const SCALE: i32>(
18538    base_addr: *mut f64,
18539    k: __mmask8,
18540    vindex: __m128i,
18541    a: __m128d,
18542) {
18543    static_assert_imm8_scale!(SCALE);
18544    vscatterdpd_128(base_addr as _, k, vindex.as_i32x4(), a.as_f64x2(), SCALE)
18545}
18546
18547/// Stores 4 single-precision (32-bit) floating-point elements from a to memory starting at location base_addr
18548/// at packed 32-bit integer indices stored in vindex scaled by scale
18549///
18550/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_i32scatter_ps)
18551#[inline]
18552#[target_feature(enable = "avx512f,avx512vl")]
18553#[cfg_attr(test, assert_instr(vscatterdps, SCALE = 1))]
18554#[rustc_legacy_const_generics(3)]
18555#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18556pub unsafe fn _mm_i32scatter_ps<const SCALE: i32>(base_addr: *mut f32, vindex: __m128i, a: __m128) {
18557    static_assert_imm8_scale!(SCALE);
18558    vscatterdps_128(base_addr as _, 0xff, vindex.as_i32x4(), a.as_f32x4(), SCALE)
18559}
18560
18561/// Stores 4 single-precision (32-bit) floating-point elements from a to memory starting at location base_addr
18562/// at packed 32-bit integer indices stored in vindex scaled by scale using writemask k (elements whose corresponding
18563/// mask bit is not set are not written to memory).
18564///
18565/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mask_i32scatter_ps)
18566#[inline]
18567#[target_feature(enable = "avx512f,avx512vl")]
18568#[cfg_attr(test, assert_instr(vscatterdps, SCALE = 1))]
18569#[rustc_legacy_const_generics(4)]
18570#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18571pub unsafe fn _mm_mask_i32scatter_ps<const SCALE: i32>(
18572    base_addr: *mut f32,
18573    k: __mmask8,
18574    vindex: __m128i,
18575    a: __m128,
18576) {
18577    static_assert_imm8_scale!(SCALE);
18578    vscatterdps_128(base_addr as _, k, vindex.as_i32x4(), a.as_f32x4(), SCALE)
18579}
18580
18581/// Stores 2 32-bit integer elements from a to memory starting at location base_addr at packed 64-bit integer
18582/// indices stored in vindex scaled by scale
18583///
18584/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_i64scatter_epi32)
18585#[inline]
18586#[target_feature(enable = "avx512f,avx512vl")]
18587#[cfg_attr(test, assert_instr(vpscatterqd, SCALE = 1))]
18588#[rustc_legacy_const_generics(3)]
18589#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18590pub unsafe fn _mm_i64scatter_epi32<const SCALE: i32>(
18591    base_addr: *mut i32,
18592    vindex: __m128i,
18593    a: __m128i,
18594) {
18595    static_assert_imm8_scale!(SCALE);
18596    vpscatterqd_128(base_addr as _, 0xff, vindex.as_i64x2(), a.as_i32x4(), SCALE)
18597}
18598
18599/// Stores 2 32-bit integer elements from a to memory starting at location base_addr at packed 64-bit integer
18600/// indices stored in vindex scaled by scale using writemask k (elements whose corresponding mask bit is not set
18601/// are not written to memory).
18602///
18603/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mask_i64scatter_epi32)
18604#[inline]
18605#[target_feature(enable = "avx512f,avx512vl")]
18606#[cfg_attr(test, assert_instr(vpscatterqd, SCALE = 1))]
18607#[rustc_legacy_const_generics(4)]
18608#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18609pub unsafe fn _mm_mask_i64scatter_epi32<const SCALE: i32>(
18610    base_addr: *mut i32,
18611    k: __mmask8,
18612    vindex: __m128i,
18613    a: __m128i,
18614) {
18615    static_assert_imm8_scale!(SCALE);
18616    vpscatterqd_128(base_addr as _, k, vindex.as_i64x2(), a.as_i32x4(), SCALE)
18617}
18618
18619/// Stores 2 64-bit integer elements from a to memory starting at location base_addr at packed 64-bit integer
18620/// indices stored in vindex scaled by scale
18621///
18622/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_i64scatter_epi64)
18623#[inline]
18624#[target_feature(enable = "avx512f,avx512vl")]
18625#[cfg_attr(test, assert_instr(vpscatterqq, SCALE = 1))]
18626#[rustc_legacy_const_generics(3)]
18627#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18628pub unsafe fn _mm_i64scatter_epi64<const SCALE: i32>(
18629    base_addr: *mut i64,
18630    vindex: __m128i,
18631    a: __m128i,
18632) {
18633    static_assert_imm8_scale!(SCALE);
18634    vpscatterqq_128(base_addr as _, 0xff, vindex.as_i64x2(), a.as_i64x2(), SCALE)
18635}
18636
18637/// Stores 2 64-bit integer elements from a to memory starting at location base_addr at packed 64-bit integer
18638/// indices stored in vindex scaled by scale using writemask k (elements whose corresponding mask bit is not set
18639/// are not written to memory).
18640///
18641/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mask_i64scatter_epi64)
18642#[inline]
18643#[target_feature(enable = "avx512f,avx512vl")]
18644#[cfg_attr(test, assert_instr(vpscatterqq, SCALE = 1))]
18645#[rustc_legacy_const_generics(4)]
18646#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18647pub unsafe fn _mm_mask_i64scatter_epi64<const SCALE: i32>(
18648    base_addr: *mut i64,
18649    k: __mmask8,
18650    vindex: __m128i,
18651    a: __m128i,
18652) {
18653    static_assert_imm8_scale!(SCALE);
18654    vpscatterqq_128(base_addr as _, k, vindex.as_i64x2(), a.as_i64x2(), SCALE)
18655}
18656
18657/// Stores 2 double-precision (64-bit) floating-point elements from a to memory starting at location base_addr
18658/// at packed 64-bit integer indices stored in vindex scaled by scale
18659///
18660/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_i64scatter_pd)
18661#[inline]
18662#[target_feature(enable = "avx512f,avx512vl")]
18663#[cfg_attr(test, assert_instr(vscatterqpd, SCALE = 1))]
18664#[rustc_legacy_const_generics(3)]
18665#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18666pub unsafe fn _mm_i64scatter_pd<const SCALE: i32>(
18667    base_addr: *mut f64,
18668    vindex: __m128i,
18669    a: __m128d,
18670) {
18671    static_assert_imm8_scale!(SCALE);
18672    vscatterqpd_128(base_addr as _, 0xff, vindex.as_i64x2(), a.as_f64x2(), SCALE)
18673}
18674
18675/// Stores 2 double-precision (64-bit) floating-point elements from a to memory starting at location base_addr
18676/// at packed 64-bit integer indices stored in vindex scaled by scale using writemask k (elements whose corresponding
18677/// mask bit is not set are not written to memory).
18678///
18679/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mask_i64scatter_pd)
18680#[inline]
18681#[target_feature(enable = "avx512f,avx512vl")]
18682#[cfg_attr(test, assert_instr(vscatterqpd, SCALE = 1))]
18683#[rustc_legacy_const_generics(4)]
18684#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18685pub unsafe fn _mm_mask_i64scatter_pd<const SCALE: i32>(
18686    base_addr: *mut f64,
18687    k: __mmask8,
18688    vindex: __m128i,
18689    a: __m128d,
18690) {
18691    static_assert_imm8_scale!(SCALE);
18692    vscatterqpd_128(base_addr as _, k, vindex.as_i64x2(), a.as_f64x2(), SCALE)
18693}
18694
18695/// Stores 2 single-precision (32-bit) floating-point elements from a to memory starting at location base_addr
18696/// at packed 64-bit integer indices stored in vindex scaled by scale
18697///
18698/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_i64scatter_ps)
18699#[inline]
18700#[target_feature(enable = "avx512f,avx512vl")]
18701#[cfg_attr(test, assert_instr(vscatterqps, SCALE = 1))]
18702#[rustc_legacy_const_generics(3)]
18703#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18704pub unsafe fn _mm_i64scatter_ps<const SCALE: i32>(base_addr: *mut f32, vindex: __m128i, a: __m128) {
18705    static_assert_imm8_scale!(SCALE);
18706    vscatterqps_128(base_addr as _, 0xff, vindex.as_i64x2(), a.as_f32x4(), SCALE)
18707}
18708
18709/// Stores 2 single-precision (32-bit) floating-point elements from a to memory starting at location base_addr
18710/// at packed 64-bit integer indices stored in vindex scaled by scale using writemask k (elements whose corresponding
18711///
18712/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mask_i64scatter_ps)
18713#[inline]
18714#[target_feature(enable = "avx512f,avx512vl")]
18715#[cfg_attr(test, assert_instr(vscatterqps, SCALE = 1))]
18716#[rustc_legacy_const_generics(4)]
18717#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18718pub unsafe fn _mm_mask_i64scatter_ps<const SCALE: i32>(
18719    base_addr: *mut f32,
18720    k: __mmask8,
18721    vindex: __m128i,
18722    a: __m128,
18723) {
18724    static_assert_imm8_scale!(SCALE);
18725    vscatterqps_128(base_addr as _, k, vindex.as_i64x2(), a.as_f32x4(), SCALE)
18726}
18727
18728/// Loads 4 32-bit integer elements from memory starting at location base_addr at packed 32-bit integer
18729/// indices stored in vindex scaled by scale using writemask k (elements are copied from src when the corresponding
18730/// mask bit is not set).
18731///
18732/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mmask_i32gather_epi32)
18733#[inline]
18734#[target_feature(enable = "avx512f,avx512vl")]
18735#[cfg_attr(test, assert_instr(vpgatherdd, SCALE = 1))]
18736#[rustc_legacy_const_generics(4)]
18737#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18738pub unsafe fn _mm_mmask_i32gather_epi32<const SCALE: i32>(
18739    src: __m128i,
18740    k: __mmask8,
18741    vindex: __m128i,
18742    base_addr: *const i32,
18743) -> __m128i {
18744    static_assert_imm8_scale!(SCALE);
18745    transmute(vpgatherdd_128(
18746        src.as_i32x4(),
18747        base_addr as _,
18748        vindex.as_i32x4(),
18749        k,
18750        SCALE,
18751    ))
18752}
18753
18754/// Loads 2 64-bit integer elements from memory starting at location base_addr at packed 32-bit integer
18755/// indices stored in vindex scaled by scale using writemask k (elements are copied from src when the corresponding
18756/// mask bit is not set).
18757///
18758/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mmask_i32gather_epi64)
18759#[inline]
18760#[target_feature(enable = "avx512f,avx512vl")]
18761#[cfg_attr(test, assert_instr(vpgatherdq, SCALE = 1))]
18762#[rustc_legacy_const_generics(4)]
18763#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18764pub unsafe fn _mm_mmask_i32gather_epi64<const SCALE: i32>(
18765    src: __m128i,
18766    k: __mmask8,
18767    vindex: __m128i,
18768    base_addr: *const i64,
18769) -> __m128i {
18770    static_assert_imm8_scale!(SCALE);
18771    transmute(vpgatherdq_128(
18772        src.as_i64x2(),
18773        base_addr as _,
18774        vindex.as_i32x4(),
18775        k,
18776        SCALE,
18777    ))
18778}
18779
18780/// Loads 2 double-precision (64-bit) floating-point elements from memory starting at location base_addr
18781/// at packed 32-bit integer indices stored in vindex scaled by scale using writemask k (elements are copied
18782/// from src when the corresponding mask bit is not set).
18783///
18784/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mmask_i32gather_pd)
18785#[inline]
18786#[target_feature(enable = "avx512f,avx512vl")]
18787#[cfg_attr(test, assert_instr(vgatherdpd, SCALE = 1))]
18788#[rustc_legacy_const_generics(4)]
18789#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18790pub unsafe fn _mm_mmask_i32gather_pd<const SCALE: i32>(
18791    src: __m128d,
18792    k: __mmask8,
18793    vindex: __m128i,
18794    base_addr: *const f64,
18795) -> __m128d {
18796    static_assert_imm8_scale!(SCALE);
18797    transmute(vgatherdpd_128(
18798        src.as_f64x2(),
18799        base_addr as _,
18800        vindex.as_i32x4(),
18801        k,
18802        SCALE,
18803    ))
18804}
18805
18806/// Loads 4 single-precision (32-bit) floating-point elements from memory starting at location base_addr
18807/// at packed 32-bit integer indices stored in vindex scaled by scale using writemask k (elements are copied
18808/// from src when the corresponding mask bit is not set).
18809///
18810/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mmask_i32gather_ps)
18811#[inline]
18812#[target_feature(enable = "avx512f,avx512vl")]
18813#[cfg_attr(test, assert_instr(vgatherdps, SCALE = 1))]
18814#[rustc_legacy_const_generics(4)]
18815#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18816pub unsafe fn _mm_mmask_i32gather_ps<const SCALE: i32>(
18817    src: __m128,
18818    k: __mmask8,
18819    vindex: __m128i,
18820    base_addr: *const f32,
18821) -> __m128 {
18822    static_assert_imm8_scale!(SCALE);
18823    transmute(vgatherdps_128(
18824        src.as_f32x4(),
18825        base_addr as _,
18826        vindex.as_i32x4(),
18827        k,
18828        SCALE,
18829    ))
18830}
18831
18832/// Loads 2 32-bit integer elements from memory starting at location base_addr at packed 64-bit integer
18833/// indices stored in vindex scaled by scale using writemask k (elements are copied from src when the corresponding
18834/// mask bit is not set).
18835///
18836/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mmask_i64gather_epi32)
18837#[inline]
18838#[target_feature(enable = "avx512f,avx512vl")]
18839#[cfg_attr(test, assert_instr(vpgatherqd, SCALE = 1))]
18840#[rustc_legacy_const_generics(4)]
18841#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18842pub unsafe fn _mm_mmask_i64gather_epi32<const SCALE: i32>(
18843    src: __m128i,
18844    k: __mmask8,
18845    vindex: __m128i,
18846    base_addr: *const i32,
18847) -> __m128i {
18848    static_assert_imm8_scale!(SCALE);
18849    transmute(vpgatherqd_128(
18850        src.as_i32x4(),
18851        base_addr as _,
18852        vindex.as_i64x2(),
18853        k,
18854        SCALE,
18855    ))
18856}
18857
18858/// Loads 2 64-bit integer elements from memory starting at location base_addr at packed 64-bit integer
18859/// indices stored in vindex scaled by scale using writemask k (elements are copied from src when the corresponding
18860/// mask bit is not set).
18861///
18862/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mmask_i64gather_epi64)
18863#[inline]
18864#[target_feature(enable = "avx512f,avx512vl")]
18865#[cfg_attr(test, assert_instr(vpgatherqq, SCALE = 1))]
18866#[rustc_legacy_const_generics(4)]
18867#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18868pub unsafe fn _mm_mmask_i64gather_epi64<const SCALE: i32>(
18869    src: __m128i,
18870    k: __mmask8,
18871    vindex: __m128i,
18872    base_addr: *const i64,
18873) -> __m128i {
18874    static_assert_imm8_scale!(SCALE);
18875    transmute(vpgatherqq_128(
18876        src.as_i64x2(),
18877        base_addr as _,
18878        vindex.as_i64x2(),
18879        k,
18880        SCALE,
18881    ))
18882}
18883
18884/// Loads 2 double-precision (64-bit) floating-point elements from memory starting at location base_addr
18885/// at packed 64-bit integer indices stored in vindex scaled by scale using writemask k (elements are copied
18886/// from src when the corresponding mask bit is not set).
18887///
18888/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mmask_i64gather_pd)
18889#[inline]
18890#[target_feature(enable = "avx512f,avx512vl")]
18891#[cfg_attr(test, assert_instr(vgatherqpd, SCALE = 1))]
18892#[rustc_legacy_const_generics(4)]
18893#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18894pub unsafe fn _mm_mmask_i64gather_pd<const SCALE: i32>(
18895    src: __m128d,
18896    k: __mmask8,
18897    vindex: __m128i,
18898    base_addr: *const f64,
18899) -> __m128d {
18900    static_assert_imm8_scale!(SCALE);
18901    transmute(vgatherqpd_128(
18902        src.as_f64x2(),
18903        base_addr as _,
18904        vindex.as_i64x2(),
18905        k,
18906        SCALE,
18907    ))
18908}
18909
18910/// Loads 2 single-precision (32-bit) floating-point elements from memory starting at location base_addr
18911/// at packed 64-bit integer indices stored in vindex scaled by scale using writemask k (elements are copied
18912/// from src when the corresponding mask bit is not set).
18913///
18914/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mmask_i64gather_ps)
18915#[inline]
18916#[target_feature(enable = "avx512f,avx512vl")]
18917#[cfg_attr(test, assert_instr(vgatherqps, SCALE = 1))]
18918#[rustc_legacy_const_generics(4)]
18919#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18920pub unsafe fn _mm_mmask_i64gather_ps<const SCALE: i32>(
18921    src: __m128,
18922    k: __mmask8,
18923    vindex: __m128i,
18924    base_addr: *const f32,
18925) -> __m128 {
18926    static_assert_imm8_scale!(SCALE);
18927    transmute(vgatherqps_128(
18928        src.as_f32x4(),
18929        base_addr as _,
18930        vindex.as_i64x2(),
18931        k,
18932        SCALE,
18933    ))
18934}
18935
18936/// Contiguously store the active 32-bit integers in a (those with their respective bit set in writemask k) to dst, and pass through the remaining elements from src.
18937///
18938/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_compress_epi32&expand=1198)
18939#[inline]
18940#[target_feature(enable = "avx512f")]
18941#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18942#[cfg_attr(test, assert_instr(vpcompressd))]
18943pub fn _mm512_mask_compress_epi32(src: __m512i, k: __mmask16, a: __m512i) -> __m512i {
18944    unsafe { transmute(vpcompressd(a.as_i32x16(), src.as_i32x16(), k)) }
18945}
18946
18947/// Contiguously store the active 32-bit integers in a (those with their respective bit set in zeromask k) to dst, and set the remaining elements to zero.
18948///
18949/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_compress_epi32&expand=1199)
18950#[inline]
18951#[target_feature(enable = "avx512f")]
18952#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18953#[cfg_attr(test, assert_instr(vpcompressd))]
18954pub fn _mm512_maskz_compress_epi32(k: __mmask16, a: __m512i) -> __m512i {
18955    unsafe { transmute(vpcompressd(a.as_i32x16(), i32x16::ZERO, k)) }
18956}
18957
18958/// Contiguously store the active 32-bit integers in a (those with their respective bit set in writemask k) to dst, and pass through the remaining elements from src.
18959///
18960/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_compress_epi32&expand=1196)
18961#[inline]
18962#[target_feature(enable = "avx512f,avx512vl")]
18963#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18964#[cfg_attr(test, assert_instr(vpcompressd))]
18965pub fn _mm256_mask_compress_epi32(src: __m256i, k: __mmask8, a: __m256i) -> __m256i {
18966    unsafe { transmute(vpcompressd256(a.as_i32x8(), src.as_i32x8(), k)) }
18967}
18968
18969/// Contiguously store the active 32-bit integers in a (those with their respective bit set in zeromask k) to dst, and set the remaining elements to zero.
18970///
18971/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_compress_epi32&expand=1197)
18972#[inline]
18973#[target_feature(enable = "avx512f,avx512vl")]
18974#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18975#[cfg_attr(test, assert_instr(vpcompressd))]
18976pub fn _mm256_maskz_compress_epi32(k: __mmask8, a: __m256i) -> __m256i {
18977    unsafe { transmute(vpcompressd256(a.as_i32x8(), i32x8::ZERO, k)) }
18978}
18979
18980/// Contiguously store the active 32-bit integers in a (those with their respective bit set in writemask k) to dst, and pass through the remaining elements from src.
18981///
18982/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_compress_epi32&expand=1194)
18983#[inline]
18984#[target_feature(enable = "avx512f,avx512vl")]
18985#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18986#[cfg_attr(test, assert_instr(vpcompressd))]
18987pub fn _mm_mask_compress_epi32(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
18988    unsafe { transmute(vpcompressd128(a.as_i32x4(), src.as_i32x4(), k)) }
18989}
18990
18991/// Contiguously store the active 32-bit integers in a (those with their respective bit set in zeromask k) to dst, and set the remaining elements to zero.
18992///
18993/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_compress_epi32&expand=1195)
18994#[inline]
18995#[target_feature(enable = "avx512f,avx512vl")]
18996#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
18997#[cfg_attr(test, assert_instr(vpcompressd))]
18998pub fn _mm_maskz_compress_epi32(k: __mmask8, a: __m128i) -> __m128i {
18999    unsafe { transmute(vpcompressd128(a.as_i32x4(), i32x4::ZERO, k)) }
19000}
19001
19002/// Contiguously store the active 64-bit integers in a (those with their respective bit set in writemask k) to dst, and pass through the remaining elements from src.
19003///
19004/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_compress_epi64&expand=1204)
19005#[inline]
19006#[target_feature(enable = "avx512f")]
19007#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19008#[cfg_attr(test, assert_instr(vpcompressq))]
19009pub fn _mm512_mask_compress_epi64(src: __m512i, k: __mmask8, a: __m512i) -> __m512i {
19010    unsafe { transmute(vpcompressq(a.as_i64x8(), src.as_i64x8(), k)) }
19011}
19012
19013/// Contiguously store the active 64-bit integers in a (those with their respective bit set in zeromask k) to dst, and set the remaining elements to zero.
19014///
19015/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_compress_epi64&expand=1205)
19016#[inline]
19017#[target_feature(enable = "avx512f")]
19018#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19019#[cfg_attr(test, assert_instr(vpcompressq))]
19020pub fn _mm512_maskz_compress_epi64(k: __mmask8, a: __m512i) -> __m512i {
19021    unsafe { transmute(vpcompressq(a.as_i64x8(), i64x8::ZERO, k)) }
19022}
19023
19024/// Contiguously store the active 64-bit integers in a (those with their respective bit set in writemask k) to dst, and pass through the remaining elements from src.
19025///
19026/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_compress_epi64&expand=1202)
19027#[inline]
19028#[target_feature(enable = "avx512f,avx512vl")]
19029#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19030#[cfg_attr(test, assert_instr(vpcompressq))]
19031pub fn _mm256_mask_compress_epi64(src: __m256i, k: __mmask8, a: __m256i) -> __m256i {
19032    unsafe { transmute(vpcompressq256(a.as_i64x4(), src.as_i64x4(), k)) }
19033}
19034
19035/// Contiguously store the active 64-bit integers in a (those with their respective bit set in zeromask k) to dst, and set the remaining elements to zero.
19036///
19037/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_compress_epi64&expand=1203)
19038#[inline]
19039#[target_feature(enable = "avx512f,avx512vl")]
19040#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19041#[cfg_attr(test, assert_instr(vpcompressq))]
19042pub fn _mm256_maskz_compress_epi64(k: __mmask8, a: __m256i) -> __m256i {
19043    unsafe { transmute(vpcompressq256(a.as_i64x4(), i64x4::ZERO, k)) }
19044}
19045
19046/// Contiguously store the active 64-bit integers in a (those with their respective bit set in writemask k) to dst, and pass through the remaining elements from src.
19047///
19048/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_compress_epi64&expand=1200)
19049#[inline]
19050#[target_feature(enable = "avx512f,avx512vl")]
19051#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19052#[cfg_attr(test, assert_instr(vpcompressq))]
19053pub fn _mm_mask_compress_epi64(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
19054    unsafe { transmute(vpcompressq128(a.as_i64x2(), src.as_i64x2(), k)) }
19055}
19056
19057/// Contiguously store the active 64-bit integers in a (those with their respective bit set in zeromask k) to dst, and set the remaining elements to zero.
19058///
19059/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_compress_epi64&expand=1201)
19060#[inline]
19061#[target_feature(enable = "avx512f,avx512vl")]
19062#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19063#[cfg_attr(test, assert_instr(vpcompressq))]
19064pub fn _mm_maskz_compress_epi64(k: __mmask8, a: __m128i) -> __m128i {
19065    unsafe { transmute(vpcompressq128(a.as_i64x2(), i64x2::ZERO, k)) }
19066}
19067
19068/// Contiguously store the active single-precision (32-bit) floating-point elements in a (those with their respective bit set in writemask k) to dst, and pass through the remaining elements from src.
19069///
19070/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_compress_ps&expand=1222)
19071#[inline]
19072#[target_feature(enable = "avx512f")]
19073#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19074#[cfg_attr(test, assert_instr(vcompressps))]
19075pub fn _mm512_mask_compress_ps(src: __m512, k: __mmask16, a: __m512) -> __m512 {
19076    unsafe { transmute(vcompressps(a.as_f32x16(), src.as_f32x16(), k)) }
19077}
19078
19079/// Contiguously store the active single-precision (32-bit) floating-point elements in a (those with their respective bit set in zeromask k) to dst, and set the remaining elements to zero.
19080///
19081/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_compress_ps&expand=1223)
19082#[inline]
19083#[target_feature(enable = "avx512f")]
19084#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19085#[cfg_attr(test, assert_instr(vcompressps))]
19086pub fn _mm512_maskz_compress_ps(k: __mmask16, a: __m512) -> __m512 {
19087    unsafe { transmute(vcompressps(a.as_f32x16(), f32x16::ZERO, k)) }
19088}
19089
19090/// Contiguously store the active single-precision (32-bit) floating-point elements in a (those with their respective bit set in writemask k) to dst, and pass through the remaining elements from src.
19091///
19092/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_compress_ps&expand=1220)
19093#[inline]
19094#[target_feature(enable = "avx512f,avx512vl")]
19095#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19096#[cfg_attr(test, assert_instr(vcompressps))]
19097pub fn _mm256_mask_compress_ps(src: __m256, k: __mmask8, a: __m256) -> __m256 {
19098    unsafe { transmute(vcompressps256(a.as_f32x8(), src.as_f32x8(), k)) }
19099}
19100
19101/// Contiguously store the active single-precision (32-bit) floating-point elements in a (those with their respective bit set in zeromask k) to dst, and set the remaining elements to zero.
19102///
19103/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_compress_ps&expand=1221)
19104#[inline]
19105#[target_feature(enable = "avx512f,avx512vl")]
19106#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19107#[cfg_attr(test, assert_instr(vcompressps))]
19108pub fn _mm256_maskz_compress_ps(k: __mmask8, a: __m256) -> __m256 {
19109    unsafe { transmute(vcompressps256(a.as_f32x8(), f32x8::ZERO, k)) }
19110}
19111
19112/// Contiguously store the active single-precision (32-bit) floating-point elements in a (those with their respective bit set in writemask k) to dst, and pass through the remaining elements from src.
19113///
19114/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_compress_ps&expand=1218)
19115#[inline]
19116#[target_feature(enable = "avx512f,avx512vl")]
19117#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19118#[cfg_attr(test, assert_instr(vcompressps))]
19119pub fn _mm_mask_compress_ps(src: __m128, k: __mmask8, a: __m128) -> __m128 {
19120    unsafe { transmute(vcompressps128(a.as_f32x4(), src.as_f32x4(), k)) }
19121}
19122
19123/// Contiguously store the active single-precision (32-bit) floating-point elements in a (those with their respective bit set in zeromask k) to dst, and set the remaining elements to zero.
19124///
19125/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_compress_ps&expand=1219)
19126#[inline]
19127#[target_feature(enable = "avx512f,avx512vl")]
19128#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19129#[cfg_attr(test, assert_instr(vcompressps))]
19130pub fn _mm_maskz_compress_ps(k: __mmask8, a: __m128) -> __m128 {
19131    unsafe { transmute(vcompressps128(a.as_f32x4(), f32x4::ZERO, k)) }
19132}
19133
19134/// Contiguously store the active double-precision (64-bit) floating-point elements in a (those with their respective bit set in writemask k) to dst, and pass through the remaining elements from src.
19135///
19136/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_compress_pd&expand=1216)
19137#[inline]
19138#[target_feature(enable = "avx512f")]
19139#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19140#[cfg_attr(test, assert_instr(vcompresspd))]
19141pub fn _mm512_mask_compress_pd(src: __m512d, k: __mmask8, a: __m512d) -> __m512d {
19142    unsafe { transmute(vcompresspd(a.as_f64x8(), src.as_f64x8(), k)) }
19143}
19144
19145/// Contiguously store the active double-precision (64-bit) floating-point elements in a (those with their respective bit set in zeromask k) to dst, and set the remaining elements to zero.
19146///
19147/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_compress_pd&expand=1217)
19148#[inline]
19149#[target_feature(enable = "avx512f")]
19150#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19151#[cfg_attr(test, assert_instr(vcompresspd))]
19152pub fn _mm512_maskz_compress_pd(k: __mmask8, a: __m512d) -> __m512d {
19153    unsafe { transmute(vcompresspd(a.as_f64x8(), f64x8::ZERO, k)) }
19154}
19155
19156/// Contiguously store the active double-precision (64-bit) floating-point elements in a (those with their respective bit set in writemask k) to dst, and pass through the remaining elements from src.
19157///
19158/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_compress_pd&expand=1214)
19159#[inline]
19160#[target_feature(enable = "avx512f,avx512vl")]
19161#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19162#[cfg_attr(test, assert_instr(vcompresspd))]
19163pub fn _mm256_mask_compress_pd(src: __m256d, k: __mmask8, a: __m256d) -> __m256d {
19164    unsafe { transmute(vcompresspd256(a.as_f64x4(), src.as_f64x4(), k)) }
19165}
19166
19167/// Contiguously store the active double-precision (64-bit) floating-point elements in a (those with their respective bit set in zeromask k) to dst, and set the remaining elements to zero.
19168///
19169/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_compress_pd&expand=1215)
19170#[inline]
19171#[target_feature(enable = "avx512f,avx512vl")]
19172#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19173#[cfg_attr(test, assert_instr(vcompresspd))]
19174pub fn _mm256_maskz_compress_pd(k: __mmask8, a: __m256d) -> __m256d {
19175    unsafe { transmute(vcompresspd256(a.as_f64x4(), f64x4::ZERO, k)) }
19176}
19177
19178/// Contiguously store the active double-precision (64-bit) floating-point elements in a (those with their respective bit set in writemask k) to dst, and pass through the remaining elements from src.
19179///
19180/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_compress_pd&expand=1212)
19181#[inline]
19182#[target_feature(enable = "avx512f,avx512vl")]
19183#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19184#[cfg_attr(test, assert_instr(vcompresspd))]
19185pub fn _mm_mask_compress_pd(src: __m128d, k: __mmask8, a: __m128d) -> __m128d {
19186    unsafe { transmute(vcompresspd128(a.as_f64x2(), src.as_f64x2(), k)) }
19187}
19188
19189/// Contiguously store the active double-precision (64-bit) floating-point elements in a (those with their respective bit set in zeromask k) to dst, and set the remaining elements to zero.
19190///
19191/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_compress_pd&expand=1213)
19192#[inline]
19193#[target_feature(enable = "avx512f,avx512vl")]
19194#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19195#[cfg_attr(test, assert_instr(vcompresspd))]
19196pub fn _mm_maskz_compress_pd(k: __mmask8, a: __m128d) -> __m128d {
19197    unsafe { transmute(vcompresspd128(a.as_f64x2(), f64x2::ZERO, k)) }
19198}
19199
19200/// Contiguously store the active 32-bit integers in a (those with their respective bit set in writemask k) to unaligned memory at base_addr.
19201///
19202/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_compressstoreu_epi32)
19203#[inline]
19204#[target_feature(enable = "avx512f")]
19205#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19206#[cfg_attr(test, assert_instr(vpcompressd))]
19207pub unsafe fn _mm512_mask_compressstoreu_epi32(base_addr: *mut i32, k: __mmask16, a: __m512i) {
19208    vcompressstored(base_addr as *mut _, a.as_i32x16(), k)
19209}
19210
19211/// Contiguously store the active 32-bit integers in a (those with their respective bit set in writemask k) to unaligned memory at base_addr.
19212///
19213/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_compressstoreu_epi32)
19214#[inline]
19215#[target_feature(enable = "avx512f,avx512vl")]
19216#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19217#[cfg_attr(test, assert_instr(vpcompressd))]
19218pub unsafe fn _mm256_mask_compressstoreu_epi32(base_addr: *mut i32, k: __mmask8, a: __m256i) {
19219    vcompressstored256(base_addr as *mut _, a.as_i32x8(), k)
19220}
19221
19222/// Contiguously store the active 32-bit integers in a (those with their respective bit set in writemask k) to unaligned memory at base_addr.
19223///
19224/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_compressstoreu_epi32)
19225#[inline]
19226#[target_feature(enable = "avx512f,avx512vl")]
19227#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19228#[cfg_attr(test, assert_instr(vpcompressd))]
19229pub unsafe fn _mm_mask_compressstoreu_epi32(base_addr: *mut i32, k: __mmask8, a: __m128i) {
19230    vcompressstored128(base_addr as *mut _, a.as_i32x4(), k)
19231}
19232
19233/// Contiguously store the active 64-bit integers in a (those with their respective bit set in writemask k) to unaligned memory at base_addr.
19234///
19235/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_compressstoreu_epi64)
19236#[inline]
19237#[target_feature(enable = "avx512f")]
19238#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19239#[cfg_attr(test, assert_instr(vpcompressq))]
19240pub unsafe fn _mm512_mask_compressstoreu_epi64(base_addr: *mut i64, k: __mmask8, a: __m512i) {
19241    vcompressstoreq(base_addr as *mut _, a.as_i64x8(), k)
19242}
19243
19244/// Contiguously store the active 64-bit integers in a (those with their respective bit set in writemask k) to unaligned memory at base_addr.
19245///
19246/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_compressstoreu_epi64)
19247#[inline]
19248#[target_feature(enable = "avx512f,avx512vl")]
19249#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19250#[cfg_attr(test, assert_instr(vpcompressq))]
19251pub unsafe fn _mm256_mask_compressstoreu_epi64(base_addr: *mut i64, k: __mmask8, a: __m256i) {
19252    vcompressstoreq256(base_addr as *mut _, a.as_i64x4(), k)
19253}
19254
19255/// Contiguously store the active 64-bit integers in a (those with their respective bit set in writemask k) to unaligned memory at base_addr.
19256///
19257/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_compressstoreu_epi64)
19258#[inline]
19259#[target_feature(enable = "avx512f,avx512vl")]
19260#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19261#[cfg_attr(test, assert_instr(vpcompressq))]
19262pub unsafe fn _mm_mask_compressstoreu_epi64(base_addr: *mut i64, k: __mmask8, a: __m128i) {
19263    vcompressstoreq128(base_addr as *mut _, a.as_i64x2(), k)
19264}
19265
19266/// Contiguously store the active single-precision (32-bit) floating-point elements in a (those with their respective bit set in writemask k) to unaligned memory at base_addr.
19267///
19268/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_compressstoreu_ps)
19269#[inline]
19270#[target_feature(enable = "avx512f")]
19271#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19272#[cfg_attr(test, assert_instr(vcompressps))]
19273pub unsafe fn _mm512_mask_compressstoreu_ps(base_addr: *mut f32, k: __mmask16, a: __m512) {
19274    vcompressstoreps(base_addr as *mut _, a.as_f32x16(), k)
19275}
19276
19277/// Contiguously store the active single-precision (32-bit) floating-point elements in a (those with their respective bit set in writemask k) to unaligned memory at base_addr.
19278///
19279/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_compressstoreu_ps)
19280#[inline]
19281#[target_feature(enable = "avx512f,avx512vl")]
19282#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19283#[cfg_attr(test, assert_instr(vcompressps))]
19284pub unsafe fn _mm256_mask_compressstoreu_ps(base_addr: *mut f32, k: __mmask8, a: __m256) {
19285    vcompressstoreps256(base_addr as *mut _, a.as_f32x8(), k)
19286}
19287
19288/// Contiguously store the active single-precision (32-bit) floating-point elements in a (those with their respective bit set in writemask k) to unaligned memory at base_addr.
19289///
19290/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_compressstoreu_ps)
19291#[inline]
19292#[target_feature(enable = "avx512f,avx512vl")]
19293#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19294#[cfg_attr(test, assert_instr(vcompressps))]
19295pub unsafe fn _mm_mask_compressstoreu_ps(base_addr: *mut f32, k: __mmask8, a: __m128) {
19296    vcompressstoreps128(base_addr as *mut _, a.as_f32x4(), k)
19297}
19298
19299/// Contiguously store the active double-precision (64-bit) floating-point elements in a (those with their respective bit set in writemask k) to unaligned memory at base_addr.
19300///
19301/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_compressstoreu_pd)
19302#[inline]
19303#[target_feature(enable = "avx512f")]
19304#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19305#[cfg_attr(test, assert_instr(vcompresspd))]
19306pub unsafe fn _mm512_mask_compressstoreu_pd(base_addr: *mut f64, k: __mmask8, a: __m512d) {
19307    vcompressstorepd(base_addr as *mut _, a.as_f64x8(), k)
19308}
19309
19310/// Contiguously store the active double-precision (64-bit) floating-point elements in a (those with their respective bit set in writemask k) to unaligned memory at base_addr.
19311///
19312/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_compressstoreu_pd)
19313#[inline]
19314#[target_feature(enable = "avx512f,avx512vl")]
19315#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19316#[cfg_attr(test, assert_instr(vcompresspd))]
19317pub unsafe fn _mm256_mask_compressstoreu_pd(base_addr: *mut f64, k: __mmask8, a: __m256d) {
19318    vcompressstorepd256(base_addr as *mut _, a.as_f64x4(), k)
19319}
19320
19321/// Contiguously store the active double-precision (64-bit) floating-point elements in a (those with their respective bit set in writemask k) to unaligned memory at base_addr.
19322///
19323/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_compressstoreu_pd)
19324#[inline]
19325#[target_feature(enable = "avx512f,avx512vl")]
19326#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19327#[cfg_attr(test, assert_instr(vcompresspd))]
19328pub unsafe fn _mm_mask_compressstoreu_pd(base_addr: *mut f64, k: __mmask8, a: __m128d) {
19329    vcompressstorepd128(base_addr as *mut _, a.as_f64x2(), k)
19330}
19331
19332/// Load contiguous active 32-bit integers from a (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19333///
19334/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_expand_epi32&expand=2316)
19335#[inline]
19336#[target_feature(enable = "avx512f")]
19337#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19338#[cfg_attr(test, assert_instr(vpexpandd))]
19339pub fn _mm512_mask_expand_epi32(src: __m512i, k: __mmask16, a: __m512i) -> __m512i {
19340    unsafe { transmute(vpexpandd(a.as_i32x16(), src.as_i32x16(), k)) }
19341}
19342
19343/// Load contiguous active 32-bit integers from a (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19344///
19345/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_expand_epi32&expand=2317)
19346#[inline]
19347#[target_feature(enable = "avx512f")]
19348#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19349#[cfg_attr(test, assert_instr(vpexpandd))]
19350pub fn _mm512_maskz_expand_epi32(k: __mmask16, a: __m512i) -> __m512i {
19351    unsafe { transmute(vpexpandd(a.as_i32x16(), i32x16::ZERO, k)) }
19352}
19353
19354/// Load contiguous active 32-bit integers from a (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19355///
19356/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_expand_epi32&expand=2314)
19357#[inline]
19358#[target_feature(enable = "avx512f,avx512vl")]
19359#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19360#[cfg_attr(test, assert_instr(vpexpandd))]
19361pub fn _mm256_mask_expand_epi32(src: __m256i, k: __mmask8, a: __m256i) -> __m256i {
19362    unsafe { transmute(vpexpandd256(a.as_i32x8(), src.as_i32x8(), k)) }
19363}
19364
19365/// Load contiguous active 32-bit integers from a (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19366///
19367/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_expand_epi32&expand=2315)
19368#[inline]
19369#[target_feature(enable = "avx512f,avx512vl")]
19370#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19371#[cfg_attr(test, assert_instr(vpexpandd))]
19372pub fn _mm256_maskz_expand_epi32(k: __mmask8, a: __m256i) -> __m256i {
19373    unsafe { transmute(vpexpandd256(a.as_i32x8(), i32x8::ZERO, k)) }
19374}
19375
19376/// Load contiguous active 32-bit integers from a (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19377///
19378/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_expand_epi32&expand=2312)
19379#[inline]
19380#[target_feature(enable = "avx512f,avx512vl")]
19381#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19382#[cfg_attr(test, assert_instr(vpexpandd))]
19383pub fn _mm_mask_expand_epi32(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
19384    unsafe { transmute(vpexpandd128(a.as_i32x4(), src.as_i32x4(), k)) }
19385}
19386
19387/// Load contiguous active 32-bit integers from a (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19388///
19389/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_expand_epi32&expand=2313)
19390#[inline]
19391#[target_feature(enable = "avx512f,avx512vl")]
19392#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19393#[cfg_attr(test, assert_instr(vpexpandd))]
19394pub fn _mm_maskz_expand_epi32(k: __mmask8, a: __m128i) -> __m128i {
19395    unsafe { transmute(vpexpandd128(a.as_i32x4(), i32x4::ZERO, k)) }
19396}
19397
19398/// Load contiguous active 64-bit integers from a (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19399///
19400/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_expand_epi64&expand=2322)
19401#[inline]
19402#[target_feature(enable = "avx512f")]
19403#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19404#[cfg_attr(test, assert_instr(vpexpandq))]
19405pub fn _mm512_mask_expand_epi64(src: __m512i, k: __mmask8, a: __m512i) -> __m512i {
19406    unsafe { transmute(vpexpandq(a.as_i64x8(), src.as_i64x8(), k)) }
19407}
19408
19409/// Load contiguous active 64-bit integers from a (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19410///
19411/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_expand_epi64&expand=2323)
19412#[inline]
19413#[target_feature(enable = "avx512f")]
19414#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19415#[cfg_attr(test, assert_instr(vpexpandq))]
19416pub fn _mm512_maskz_expand_epi64(k: __mmask8, a: __m512i) -> __m512i {
19417    unsafe { transmute(vpexpandq(a.as_i64x8(), i64x8::ZERO, k)) }
19418}
19419
19420/// Load contiguous active 64-bit integers from a (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19421///
19422/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_expand_epi64&expand=2320)
19423#[inline]
19424#[target_feature(enable = "avx512f,avx512vl")]
19425#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19426#[cfg_attr(test, assert_instr(vpexpandq))]
19427pub fn _mm256_mask_expand_epi64(src: __m256i, k: __mmask8, a: __m256i) -> __m256i {
19428    unsafe { transmute(vpexpandq256(a.as_i64x4(), src.as_i64x4(), k)) }
19429}
19430
19431/// Load contiguous active 64-bit integers from a (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19432///
19433/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_expand_epi64&expand=2321)
19434#[inline]
19435#[target_feature(enable = "avx512f,avx512vl")]
19436#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19437#[cfg_attr(test, assert_instr(vpexpandq))]
19438pub fn _mm256_maskz_expand_epi64(k: __mmask8, a: __m256i) -> __m256i {
19439    unsafe { transmute(vpexpandq256(a.as_i64x4(), i64x4::ZERO, k)) }
19440}
19441
19442/// Load contiguous active 64-bit integers from a (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19443///
19444/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_expand_epi64&expand=2318)
19445#[inline]
19446#[target_feature(enable = "avx512f,avx512vl")]
19447#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19448#[cfg_attr(test, assert_instr(vpexpandq))]
19449pub fn _mm_mask_expand_epi64(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
19450    unsafe { transmute(vpexpandq128(a.as_i64x2(), src.as_i64x2(), k)) }
19451}
19452
19453/// Load contiguous active 64-bit integers from a (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19454///
19455/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_expand_epi64&expand=2319)
19456#[inline]
19457#[target_feature(enable = "avx512f,avx512vl")]
19458#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19459#[cfg_attr(test, assert_instr(vpexpandq))]
19460pub fn _mm_maskz_expand_epi64(k: __mmask8, a: __m128i) -> __m128i {
19461    unsafe { transmute(vpexpandq128(a.as_i64x2(), i64x2::ZERO, k)) }
19462}
19463
19464/// Load contiguous active single-precision (32-bit) floating-point elements from a (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19465///
19466/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_expand_ps&expand=2340)
19467#[inline]
19468#[target_feature(enable = "avx512f")]
19469#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19470#[cfg_attr(test, assert_instr(vexpandps))]
19471pub fn _mm512_mask_expand_ps(src: __m512, k: __mmask16, a: __m512) -> __m512 {
19472    unsafe { transmute(vexpandps(a.as_f32x16(), src.as_f32x16(), k)) }
19473}
19474
19475/// Load contiguous active single-precision (32-bit) floating-point elements from a (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19476///
19477/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_expand_ps&expand=2341)
19478#[inline]
19479#[target_feature(enable = "avx512f")]
19480#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19481#[cfg_attr(test, assert_instr(vexpandps))]
19482pub fn _mm512_maskz_expand_ps(k: __mmask16, a: __m512) -> __m512 {
19483    unsafe { transmute(vexpandps(a.as_f32x16(), f32x16::ZERO, k)) }
19484}
19485
19486/// Load contiguous active single-precision (32-bit) floating-point elements from a (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19487///
19488/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_expand_ps&expand=2338)
19489#[inline]
19490#[target_feature(enable = "avx512f,avx512vl")]
19491#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19492#[cfg_attr(test, assert_instr(vexpandps))]
19493pub fn _mm256_mask_expand_ps(src: __m256, k: __mmask8, a: __m256) -> __m256 {
19494    unsafe { transmute(vexpandps256(a.as_f32x8(), src.as_f32x8(), k)) }
19495}
19496
19497/// Load contiguous active single-precision (32-bit) floating-point elements from a (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19498///
19499/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_expand_ps&expand=2339)
19500#[inline]
19501#[target_feature(enable = "avx512f,avx512vl")]
19502#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19503#[cfg_attr(test, assert_instr(vexpandps))]
19504pub fn _mm256_maskz_expand_ps(k: __mmask8, a: __m256) -> __m256 {
19505    unsafe { transmute(vexpandps256(a.as_f32x8(), f32x8::ZERO, k)) }
19506}
19507
19508/// Load contiguous active single-precision (32-bit) floating-point elements from a (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19509///
19510/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_expand_ps&expand=2336)
19511#[inline]
19512#[target_feature(enable = "avx512f,avx512vl")]
19513#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19514#[cfg_attr(test, assert_instr(vexpandps))]
19515pub fn _mm_mask_expand_ps(src: __m128, k: __mmask8, a: __m128) -> __m128 {
19516    unsafe { transmute(vexpandps128(a.as_f32x4(), src.as_f32x4(), k)) }
19517}
19518
19519/// Load contiguous active single-precision (32-bit) floating-point elements from a (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19520///
19521/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_expand_ps&expand=2337)
19522#[inline]
19523#[target_feature(enable = "avx512f,avx512vl")]
19524#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19525#[cfg_attr(test, assert_instr(vexpandps))]
19526pub fn _mm_maskz_expand_ps(k: __mmask8, a: __m128) -> __m128 {
19527    unsafe { transmute(vexpandps128(a.as_f32x4(), f32x4::ZERO, k)) }
19528}
19529
19530/// Load contiguous active double-precision (64-bit) floating-point elements from a (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19531///
19532/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_expand_pd&expand=2334)
19533#[inline]
19534#[target_feature(enable = "avx512f")]
19535#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19536#[cfg_attr(test, assert_instr(vexpandpd))]
19537pub fn _mm512_mask_expand_pd(src: __m512d, k: __mmask8, a: __m512d) -> __m512d {
19538    unsafe { transmute(vexpandpd(a.as_f64x8(), src.as_f64x8(), k)) }
19539}
19540
19541/// Load contiguous active double-precision (64-bit) floating-point elements from a (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19542///
19543/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_expand_pd&expand=2335)
19544#[inline]
19545#[target_feature(enable = "avx512f")]
19546#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19547#[cfg_attr(test, assert_instr(vexpandpd))]
19548pub fn _mm512_maskz_expand_pd(k: __mmask8, a: __m512d) -> __m512d {
19549    unsafe { transmute(vexpandpd(a.as_f64x8(), f64x8::ZERO, k)) }
19550}
19551
19552/// Load contiguous active double-precision (64-bit) floating-point elements from a (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19553///
19554/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_expand_pd&expand=2332)
19555#[inline]
19556#[target_feature(enable = "avx512f,avx512vl")]
19557#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19558#[cfg_attr(test, assert_instr(vexpandpd))]
19559pub fn _mm256_mask_expand_pd(src: __m256d, k: __mmask8, a: __m256d) -> __m256d {
19560    unsafe { transmute(vexpandpd256(a.as_f64x4(), src.as_f64x4(), k)) }
19561}
19562
19563/// Load contiguous active double-precision (64-bit) floating-point elements from a (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19564///
19565/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_expand_pd&expand=2333)
19566#[inline]
19567#[target_feature(enable = "avx512f,avx512vl")]
19568#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19569#[cfg_attr(test, assert_instr(vexpandpd))]
19570pub fn _mm256_maskz_expand_pd(k: __mmask8, a: __m256d) -> __m256d {
19571    unsafe { transmute(vexpandpd256(a.as_f64x4(), f64x4::ZERO, k)) }
19572}
19573
19574/// Load contiguous active double-precision (64-bit) floating-point elements from a (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19575///
19576/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_expand_pd&expand=2330)
19577#[inline]
19578#[target_feature(enable = "avx512f,avx512vl")]
19579#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19580#[cfg_attr(test, assert_instr(vexpandpd))]
19581pub fn _mm_mask_expand_pd(src: __m128d, k: __mmask8, a: __m128d) -> __m128d {
19582    unsafe { transmute(vexpandpd128(a.as_f64x2(), src.as_f64x2(), k)) }
19583}
19584
19585/// Load contiguous active double-precision (64-bit) floating-point elements from a (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19586///
19587/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_expand_pd&expand=2331)
19588#[inline]
19589#[target_feature(enable = "avx512f,avx512vl")]
19590#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19591#[cfg_attr(test, assert_instr(vexpandpd))]
19592pub fn _mm_maskz_expand_pd(k: __mmask8, a: __m128d) -> __m128d {
19593    unsafe { transmute(vexpandpd128(a.as_f64x2(), f64x2::ZERO, k)) }
19594}
19595
19596/// Rotate the bits in each packed 32-bit integer in a to the left by the number of bits specified in imm8, and store the results in dst.
19597///
19598/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_rol_epi32&expand=4685)
19599#[inline]
19600#[target_feature(enable = "avx512f")]
19601#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19602#[cfg_attr(test, assert_instr(vprold, IMM8 = 1))]
19603#[rustc_legacy_const_generics(1)]
19604#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19605pub const fn _mm512_rol_epi32<const IMM8: i32>(a: __m512i) -> __m512i {
19606    static_assert_uimm_bits!(IMM8, 8);
19607    _mm512_rolv_epi32(a, _mm512_set1_epi32(IMM8))
19608}
19609
19610/// Rotate the bits in each packed 32-bit integer in a to the left by the number of bits specified in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19611///
19612/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_rol_epi32&expand=4683)
19613#[inline]
19614#[target_feature(enable = "avx512f")]
19615#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19616#[cfg_attr(test, assert_instr(vprold, IMM8 = 1))]
19617#[rustc_legacy_const_generics(3)]
19618#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19619pub const fn _mm512_mask_rol_epi32<const IMM8: i32>(
19620    src: __m512i,
19621    k: __mmask16,
19622    a: __m512i,
19623) -> __m512i {
19624    static_assert_uimm_bits!(IMM8, 8);
19625    _mm512_mask_rolv_epi32(src, k, a, _mm512_set1_epi32(IMM8))
19626}
19627
19628/// Rotate the bits in each packed 32-bit integer in a to the left by the number of bits specified in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19629///
19630/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_rol_epi32&expand=4684)
19631#[inline]
19632#[target_feature(enable = "avx512f")]
19633#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19634#[cfg_attr(test, assert_instr(vprold, IMM8 = 1))]
19635#[rustc_legacy_const_generics(2)]
19636#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19637pub const fn _mm512_maskz_rol_epi32<const IMM8: i32>(k: __mmask16, a: __m512i) -> __m512i {
19638    static_assert_uimm_bits!(IMM8, 8);
19639    _mm512_maskz_rolv_epi32(k, a, _mm512_set1_epi32(IMM8))
19640}
19641
19642/// Rotate the bits in each packed 32-bit integer in a to the left by the number of bits specified in imm8, and store the results in dst.
19643///
19644/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_rol_epi32&expand=4682)
19645#[inline]
19646#[target_feature(enable = "avx512f,avx512vl")]
19647#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19648#[cfg_attr(test, assert_instr(vprold, IMM8 = 1))]
19649#[rustc_legacy_const_generics(1)]
19650#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19651pub const fn _mm256_rol_epi32<const IMM8: i32>(a: __m256i) -> __m256i {
19652    static_assert_uimm_bits!(IMM8, 8);
19653    _mm256_rolv_epi32(a, _mm256_set1_epi32(IMM8))
19654}
19655
19656/// Rotate the bits in each packed 32-bit integer in a to the left by the number of bits specified in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19657///
19658/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_rol_epi32&expand=4680)
19659#[inline]
19660#[target_feature(enable = "avx512f,avx512vl")]
19661#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19662#[cfg_attr(test, assert_instr(vprold, IMM8 = 1))]
19663#[rustc_legacy_const_generics(3)]
19664#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19665pub const fn _mm256_mask_rol_epi32<const IMM8: i32>(
19666    src: __m256i,
19667    k: __mmask8,
19668    a: __m256i,
19669) -> __m256i {
19670    static_assert_uimm_bits!(IMM8, 8);
19671    _mm256_mask_rolv_epi32(src, k, a, _mm256_set1_epi32(IMM8))
19672}
19673
19674/// Rotate the bits in each packed 32-bit integer in a to the left by the number of bits specified in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19675///
19676/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_rol_epi32&expand=4681)
19677#[inline]
19678#[target_feature(enable = "avx512f,avx512vl")]
19679#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19680#[cfg_attr(test, assert_instr(vprold, IMM8 = 1))]
19681#[rustc_legacy_const_generics(2)]
19682#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19683pub const fn _mm256_maskz_rol_epi32<const IMM8: i32>(k: __mmask8, a: __m256i) -> __m256i {
19684    static_assert_uimm_bits!(IMM8, 8);
19685    _mm256_maskz_rolv_epi32(k, a, _mm256_set1_epi32(IMM8))
19686}
19687
19688/// Rotate the bits in each packed 32-bit integer in a to the left by the number of bits specified in imm8, and store the results in dst.
19689///
19690/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rol_epi32&expand=4679)
19691#[inline]
19692#[target_feature(enable = "avx512f,avx512vl")]
19693#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19694#[cfg_attr(test, assert_instr(vprold, IMM8 = 1))]
19695#[rustc_legacy_const_generics(1)]
19696#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19697pub const fn _mm_rol_epi32<const IMM8: i32>(a: __m128i) -> __m128i {
19698    static_assert_uimm_bits!(IMM8, 8);
19699    _mm_rolv_epi32(a, _mm_set1_epi32(IMM8))
19700}
19701
19702/// Rotate the bits in each packed 32-bit integer in a to the left by the number of bits specified in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19703///
19704/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_rol_epi32&expand=4677)
19705#[inline]
19706#[target_feature(enable = "avx512f,avx512vl")]
19707#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19708#[cfg_attr(test, assert_instr(vprold, IMM8 = 1))]
19709#[rustc_legacy_const_generics(3)]
19710#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19711pub const fn _mm_mask_rol_epi32<const IMM8: i32>(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
19712    static_assert_uimm_bits!(IMM8, 8);
19713    _mm_mask_rolv_epi32(src, k, a, _mm_set1_epi32(IMM8))
19714}
19715
19716/// Rotate the bits in each packed 32-bit integer in a to the left by the number of bits specified in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19717///
19718/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_rol_epi32&expand=4678)
19719#[inline]
19720#[target_feature(enable = "avx512f,avx512vl")]
19721#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19722#[cfg_attr(test, assert_instr(vprold, IMM8 = 1))]
19723#[rustc_legacy_const_generics(2)]
19724#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19725pub const fn _mm_maskz_rol_epi32<const IMM8: i32>(k: __mmask8, a: __m128i) -> __m128i {
19726    static_assert_uimm_bits!(IMM8, 8);
19727    _mm_maskz_rolv_epi32(k, a, _mm_set1_epi32(IMM8))
19728}
19729
19730/// Rotate the bits in each packed 32-bit integer in a to the right by the number of bits specified in imm8, and store the results in dst.
19731///
19732/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_ror_epi32&expand=4721)
19733#[inline]
19734#[target_feature(enable = "avx512f")]
19735#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19736#[cfg_attr(test, assert_instr(vprold, IMM8 = 1))]
19737#[rustc_legacy_const_generics(1)]
19738#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19739pub const fn _mm512_ror_epi32<const IMM8: i32>(a: __m512i) -> __m512i {
19740    static_assert_uimm_bits!(IMM8, 8);
19741    _mm512_rorv_epi32(a, _mm512_set1_epi32(IMM8))
19742}
19743
19744/// Rotate the bits in each packed 32-bit integer in a to the right by the number of bits specified in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19745///
19746/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_ror_epi32&expand=4719)
19747#[inline]
19748#[target_feature(enable = "avx512f")]
19749#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19750#[cfg_attr(test, assert_instr(vprold, IMM8 = 123))]
19751#[rustc_legacy_const_generics(3)]
19752#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19753pub const fn _mm512_mask_ror_epi32<const IMM8: i32>(
19754    src: __m512i,
19755    k: __mmask16,
19756    a: __m512i,
19757) -> __m512i {
19758    static_assert_uimm_bits!(IMM8, 8);
19759    _mm512_mask_rorv_epi32(src, k, a, _mm512_set1_epi32(IMM8))
19760}
19761
19762/// Rotate the bits in each packed 32-bit integer in a to the right by the number of bits specified in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19763///
19764/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_ror_epi32&expand=4720)
19765#[inline]
19766#[target_feature(enable = "avx512f")]
19767#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19768#[cfg_attr(test, assert_instr(vprold, IMM8 = 123))]
19769#[rustc_legacy_const_generics(2)]
19770#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19771pub const fn _mm512_maskz_ror_epi32<const IMM8: i32>(k: __mmask16, a: __m512i) -> __m512i {
19772    static_assert_uimm_bits!(IMM8, 8);
19773    _mm512_maskz_rorv_epi32(k, a, _mm512_set1_epi32(IMM8))
19774}
19775
19776/// Rotate the bits in each packed 32-bit integer in a to the right by the number of bits specified in imm8, and store the results in dst.
19777///
19778/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_ror_epi32&expand=4718)
19779#[inline]
19780#[target_feature(enable = "avx512f,avx512vl")]
19781#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19782#[cfg_attr(test, assert_instr(vprold, IMM8 = 1))]
19783#[rustc_legacy_const_generics(1)]
19784#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19785pub const fn _mm256_ror_epi32<const IMM8: i32>(a: __m256i) -> __m256i {
19786    static_assert_uimm_bits!(IMM8, 8);
19787    _mm256_rorv_epi32(a, _mm256_set1_epi32(IMM8))
19788}
19789
19790/// Rotate the bits in each packed 32-bit integer in a to the right by the number of bits specified in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19791///
19792/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_ror_epi32&expand=4716)
19793#[inline]
19794#[target_feature(enable = "avx512f,avx512vl")]
19795#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19796#[cfg_attr(test, assert_instr(vprold, IMM8 = 123))]
19797#[rustc_legacy_const_generics(3)]
19798#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19799pub const fn _mm256_mask_ror_epi32<const IMM8: i32>(
19800    src: __m256i,
19801    k: __mmask8,
19802    a: __m256i,
19803) -> __m256i {
19804    static_assert_uimm_bits!(IMM8, 8);
19805    _mm256_mask_rorv_epi32(src, k, a, _mm256_set1_epi32(IMM8))
19806}
19807
19808/// Rotate the bits in each packed 32-bit integer in a to the right by the number of bits specified in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19809///
19810/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_ror_epi32&expand=4717)
19811#[inline]
19812#[target_feature(enable = "avx512f,avx512vl")]
19813#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19814#[cfg_attr(test, assert_instr(vprold, IMM8 = 123))]
19815#[rustc_legacy_const_generics(2)]
19816#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19817pub const fn _mm256_maskz_ror_epi32<const IMM8: i32>(k: __mmask8, a: __m256i) -> __m256i {
19818    static_assert_uimm_bits!(IMM8, 8);
19819    _mm256_maskz_rorv_epi32(k, a, _mm256_set1_epi32(IMM8))
19820}
19821
19822/// Rotate the bits in each packed 32-bit integer in a to the right by the number of bits specified in imm8, and store the results in dst.
19823///
19824/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_ror_epi32&expand=4715)
19825#[inline]
19826#[target_feature(enable = "avx512f,avx512vl")]
19827#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19828#[cfg_attr(test, assert_instr(vprold, IMM8 = 1))]
19829#[rustc_legacy_const_generics(1)]
19830#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19831pub const fn _mm_ror_epi32<const IMM8: i32>(a: __m128i) -> __m128i {
19832    static_assert_uimm_bits!(IMM8, 8);
19833    _mm_rorv_epi32(a, _mm_set1_epi32(IMM8))
19834}
19835
19836/// Rotate the bits in each packed 32-bit integer in a to the right by the number of bits specified in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19837///
19838/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_ror_epi32&expand=4713)
19839#[inline]
19840#[target_feature(enable = "avx512f,avx512vl")]
19841#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19842#[cfg_attr(test, assert_instr(vprold, IMM8 = 123))]
19843#[rustc_legacy_const_generics(3)]
19844#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19845pub const fn _mm_mask_ror_epi32<const IMM8: i32>(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
19846    static_assert_uimm_bits!(IMM8, 8);
19847    _mm_mask_rorv_epi32(src, k, a, _mm_set1_epi32(IMM8))
19848}
19849
19850/// Rotate the bits in each packed 32-bit integer in a to the right by the number of bits specified in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19851///
19852/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_ror_epi32&expand=4714)
19853#[inline]
19854#[target_feature(enable = "avx512f,avx512vl")]
19855#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19856#[cfg_attr(test, assert_instr(vprold, IMM8 = 123))]
19857#[rustc_legacy_const_generics(2)]
19858#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19859pub const fn _mm_maskz_ror_epi32<const IMM8: i32>(k: __mmask8, a: __m128i) -> __m128i {
19860    static_assert_uimm_bits!(IMM8, 8);
19861    _mm_maskz_rorv_epi32(k, a, _mm_set1_epi32(IMM8))
19862}
19863
19864/// Rotate the bits in each packed 64-bit integer in a to the left by the number of bits specified in imm8, and store the results in dst.
19865///
19866/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_rol_epi64&expand=4694)
19867#[inline]
19868#[target_feature(enable = "avx512f")]
19869#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19870#[cfg_attr(test, assert_instr(vprolq, IMM8 = 1))]
19871#[rustc_legacy_const_generics(1)]
19872#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19873pub const fn _mm512_rol_epi64<const IMM8: i32>(a: __m512i) -> __m512i {
19874    static_assert_uimm_bits!(IMM8, 8);
19875    _mm512_rolv_epi64(a, _mm512_set1_epi64(IMM8 as i64))
19876}
19877
19878/// Rotate the bits in each packed 64-bit integer in a to the left by the number of bits specified in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19879///
19880/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_rol_epi64&expand=4692)
19881#[inline]
19882#[target_feature(enable = "avx512f")]
19883#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19884#[cfg_attr(test, assert_instr(vprolq, IMM8 = 1))]
19885#[rustc_legacy_const_generics(3)]
19886#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19887pub const fn _mm512_mask_rol_epi64<const IMM8: i32>(
19888    src: __m512i,
19889    k: __mmask8,
19890    a: __m512i,
19891) -> __m512i {
19892    static_assert_uimm_bits!(IMM8, 8);
19893    _mm512_mask_rolv_epi64(src, k, a, _mm512_set1_epi64(IMM8 as i64))
19894}
19895
19896/// Rotate the bits in each packed 64-bit integer in a to the left by the number of bits specified in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19897///
19898/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_rol_epi64&expand=4693)
19899#[inline]
19900#[target_feature(enable = "avx512f")]
19901#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19902#[cfg_attr(test, assert_instr(vprolq, IMM8 = 1))]
19903#[rustc_legacy_const_generics(2)]
19904#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19905pub const fn _mm512_maskz_rol_epi64<const IMM8: i32>(k: __mmask8, a: __m512i) -> __m512i {
19906    static_assert_uimm_bits!(IMM8, 8);
19907    _mm512_maskz_rolv_epi64(k, a, _mm512_set1_epi64(IMM8 as i64))
19908}
19909
19910/// Rotate the bits in each packed 64-bit integer in a to the left by the number of bits specified in imm8, and store the results in dst.
19911///
19912/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_rol_epi64&expand=4691)
19913#[inline]
19914#[target_feature(enable = "avx512f,avx512vl")]
19915#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19916#[cfg_attr(test, assert_instr(vprolq, IMM8 = 1))]
19917#[rustc_legacy_const_generics(1)]
19918#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19919pub const fn _mm256_rol_epi64<const IMM8: i32>(a: __m256i) -> __m256i {
19920    static_assert_uimm_bits!(IMM8, 8);
19921    _mm256_rolv_epi64(a, _mm256_set1_epi64x(IMM8 as i64))
19922}
19923
19924/// Rotate the bits in each packed 64-bit integer in a to the left by the number of bits specified in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19925///
19926/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_rol_epi64&expand=4689)
19927#[inline]
19928#[target_feature(enable = "avx512f,avx512vl")]
19929#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19930#[cfg_attr(test, assert_instr(vprolq, IMM8 = 1))]
19931#[rustc_legacy_const_generics(3)]
19932#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19933pub const fn _mm256_mask_rol_epi64<const IMM8: i32>(
19934    src: __m256i,
19935    k: __mmask8,
19936    a: __m256i,
19937) -> __m256i {
19938    static_assert_uimm_bits!(IMM8, 8);
19939    _mm256_mask_rolv_epi64(src, k, a, _mm256_set1_epi64x(IMM8 as i64))
19940}
19941
19942/// Rotate the bits in each packed 64-bit integer in a to the left by the number of bits specified in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19943///
19944/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_rol_epi64&expand=4690)
19945#[inline]
19946#[target_feature(enable = "avx512f,avx512vl")]
19947#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19948#[cfg_attr(test, assert_instr(vprolq, IMM8 = 1))]
19949#[rustc_legacy_const_generics(2)]
19950#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19951pub const fn _mm256_maskz_rol_epi64<const IMM8: i32>(k: __mmask8, a: __m256i) -> __m256i {
19952    static_assert_uimm_bits!(IMM8, 8);
19953    _mm256_maskz_rolv_epi64(k, a, _mm256_set1_epi64x(IMM8 as i64))
19954}
19955
19956/// Rotate the bits in each packed 64-bit integer in a to the left by the number of bits specified in imm8, and store the results in dst.
19957///
19958/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rol_epi64&expand=4688)
19959#[inline]
19960#[target_feature(enable = "avx512f,avx512vl")]
19961#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19962#[cfg_attr(test, assert_instr(vprolq, IMM8 = 1))]
19963#[rustc_legacy_const_generics(1)]
19964#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19965pub const fn _mm_rol_epi64<const IMM8: i32>(a: __m128i) -> __m128i {
19966    static_assert_uimm_bits!(IMM8, 8);
19967    _mm_rolv_epi64(a, _mm_set1_epi64x(IMM8 as i64))
19968}
19969
19970/// Rotate the bits in each packed 64-bit integer in a to the left by the number of bits specified in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
19971///
19972/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_rol_epi64&expand=4686)
19973#[inline]
19974#[target_feature(enable = "avx512f,avx512vl")]
19975#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19976#[cfg_attr(test, assert_instr(vprolq, IMM8 = 1))]
19977#[rustc_legacy_const_generics(3)]
19978#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19979pub const fn _mm_mask_rol_epi64<const IMM8: i32>(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
19980    static_assert_uimm_bits!(IMM8, 8);
19981    _mm_mask_rolv_epi64(src, k, a, _mm_set1_epi64x(IMM8 as i64))
19982}
19983
19984/// Rotate the bits in each packed 64-bit integer in a to the left by the number of bits specified in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
19985///
19986/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_rol_epi64&expand=4687)
19987#[inline]
19988#[target_feature(enable = "avx512f,avx512vl")]
19989#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
19990#[cfg_attr(test, assert_instr(vprolq, IMM8 = 1))]
19991#[rustc_legacy_const_generics(2)]
19992#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
19993pub const fn _mm_maskz_rol_epi64<const IMM8: i32>(k: __mmask8, a: __m128i) -> __m128i {
19994    static_assert_uimm_bits!(IMM8, 8);
19995    _mm_maskz_rolv_epi64(k, a, _mm_set1_epi64x(IMM8 as i64))
19996}
19997
19998/// Rotate the bits in each packed 64-bit integer in a to the right by the number of bits specified in imm8, and store the results in dst.
19999///
20000/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_ror_epi64&expand=4730)
20001#[inline]
20002#[target_feature(enable = "avx512f")]
20003#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20004#[cfg_attr(test, assert_instr(vprolq, IMM8 = 15))]
20005#[rustc_legacy_const_generics(1)]
20006#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20007pub const fn _mm512_ror_epi64<const IMM8: i32>(a: __m512i) -> __m512i {
20008    static_assert_uimm_bits!(IMM8, 8);
20009    _mm512_rorv_epi64(a, _mm512_set1_epi64(IMM8 as i64))
20010}
20011
20012/// Rotate the bits in each packed 64-bit integer in a to the right by the number of bits specified in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20013///
20014/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_ror_epi64&expand=4728)
20015#[inline]
20016#[target_feature(enable = "avx512f")]
20017#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20018#[cfg_attr(test, assert_instr(vprolq, IMM8 = 15))]
20019#[rustc_legacy_const_generics(3)]
20020#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20021pub const fn _mm512_mask_ror_epi64<const IMM8: i32>(
20022    src: __m512i,
20023    k: __mmask8,
20024    a: __m512i,
20025) -> __m512i {
20026    static_assert_uimm_bits!(IMM8, 8);
20027    _mm512_mask_rorv_epi64(src, k, a, _mm512_set1_epi64(IMM8 as i64))
20028}
20029
20030/// Rotate the bits in each packed 64-bit integer in a to the right by the number of bits specified in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20031///
20032/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_ror_epi64&expand=4729)
20033#[inline]
20034#[target_feature(enable = "avx512f")]
20035#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20036#[cfg_attr(test, assert_instr(vprolq, IMM8 = 15))]
20037#[rustc_legacy_const_generics(2)]
20038#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20039pub const fn _mm512_maskz_ror_epi64<const IMM8: i32>(k: __mmask8, a: __m512i) -> __m512i {
20040    static_assert_uimm_bits!(IMM8, 8);
20041    _mm512_maskz_rorv_epi64(k, a, _mm512_set1_epi64(IMM8 as i64))
20042}
20043
20044/// Rotate the bits in each packed 64-bit integer in a to the right by the number of bits specified in imm8, and store the results in dst.
20045///
20046/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_ror_epi64&expand=4727)
20047#[inline]
20048#[target_feature(enable = "avx512f,avx512vl")]
20049#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20050#[cfg_attr(test, assert_instr(vprolq, IMM8 = 15))]
20051#[rustc_legacy_const_generics(1)]
20052#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20053pub const fn _mm256_ror_epi64<const IMM8: i32>(a: __m256i) -> __m256i {
20054    static_assert_uimm_bits!(IMM8, 8);
20055    _mm256_rorv_epi64(a, _mm256_set1_epi64x(IMM8 as i64))
20056}
20057
20058/// Rotate the bits in each packed 64-bit integer in a to the right by the number of bits specified in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20059///
20060/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_ror_epi64&expand=4725)
20061#[inline]
20062#[target_feature(enable = "avx512f,avx512vl")]
20063#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20064#[cfg_attr(test, assert_instr(vprolq, IMM8 = 15))]
20065#[rustc_legacy_const_generics(3)]
20066#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20067pub const fn _mm256_mask_ror_epi64<const IMM8: i32>(
20068    src: __m256i,
20069    k: __mmask8,
20070    a: __m256i,
20071) -> __m256i {
20072    static_assert_uimm_bits!(IMM8, 8);
20073    _mm256_mask_rorv_epi64(src, k, a, _mm256_set1_epi64x(IMM8 as i64))
20074}
20075
20076/// Rotate the bits in each packed 64-bit integer in a to the right by the number of bits specified in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20077///
20078/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_ror_epi64&expand=4726)
20079#[inline]
20080#[target_feature(enable = "avx512f,avx512vl")]
20081#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20082#[cfg_attr(test, assert_instr(vprolq, IMM8 = 15))]
20083#[rustc_legacy_const_generics(2)]
20084#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20085pub const fn _mm256_maskz_ror_epi64<const IMM8: i32>(k: __mmask8, a: __m256i) -> __m256i {
20086    static_assert_uimm_bits!(IMM8, 8);
20087    _mm256_maskz_rorv_epi64(k, a, _mm256_set1_epi64x(IMM8 as i64))
20088}
20089
20090/// Rotate the bits in each packed 64-bit integer in a to the right by the number of bits specified in imm8, and store the results in dst.
20091///
20092/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_ror_epi64&expand=4724)
20093#[inline]
20094#[target_feature(enable = "avx512f,avx512vl")]
20095#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20096#[cfg_attr(test, assert_instr(vprolq, IMM8 = 15))]
20097#[rustc_legacy_const_generics(1)]
20098#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20099pub const fn _mm_ror_epi64<const IMM8: i32>(a: __m128i) -> __m128i {
20100    static_assert_uimm_bits!(IMM8, 8);
20101    _mm_rorv_epi64(a, _mm_set1_epi64x(IMM8 as i64))
20102}
20103
20104/// Rotate the bits in each packed 64-bit integer in a to the right by the number of bits specified in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20105///
20106/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_ror_epi64&expand=4722)
20107#[inline]
20108#[target_feature(enable = "avx512f,avx512vl")]
20109#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20110#[cfg_attr(test, assert_instr(vprolq, IMM8 = 15))]
20111#[rustc_legacy_const_generics(3)]
20112#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20113pub const fn _mm_mask_ror_epi64<const IMM8: i32>(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
20114    static_assert_uimm_bits!(IMM8, 8);
20115    _mm_mask_rorv_epi64(src, k, a, _mm_set1_epi64x(IMM8 as i64))
20116}
20117
20118/// Rotate the bits in each packed 64-bit integer in a to the right by the number of bits specified in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20119///
20120/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_ror_epi64&expand=4723)
20121#[inline]
20122#[target_feature(enable = "avx512f,avx512vl")]
20123#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20124#[cfg_attr(test, assert_instr(vprolq, IMM8 = 15))]
20125#[rustc_legacy_const_generics(2)]
20126#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20127pub const fn _mm_maskz_ror_epi64<const IMM8: i32>(k: __mmask8, a: __m128i) -> __m128i {
20128    static_assert_uimm_bits!(IMM8, 8);
20129    _mm_maskz_rorv_epi64(k, a, _mm_set1_epi64x(IMM8 as i64))
20130}
20131
20132/// Shift packed 32-bit integers in a left by imm8 while shifting in zeros, and store the results in dst.
20133///
20134/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_slli_epi32&expand=5310)
20135#[inline]
20136#[target_feature(enable = "avx512f")]
20137#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20138#[cfg_attr(test, assert_instr(vpslld, IMM8 = 5))]
20139#[rustc_legacy_const_generics(1)]
20140#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20141pub const fn _mm512_slli_epi32<const IMM8: u32>(a: __m512i) -> __m512i {
20142    unsafe {
20143        static_assert_uimm_bits!(IMM8, 8);
20144        if IMM8 >= 32 {
20145            _mm512_setzero_si512()
20146        } else {
20147            transmute(simd_shl(a.as_u32x16(), u32x16::splat(IMM8)))
20148        }
20149    }
20150}
20151
20152/// Shift packed 32-bit integers in a left by imm8 while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20153///
20154/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_slli_epi32&expand=5308)
20155#[inline]
20156#[target_feature(enable = "avx512f")]
20157#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20158#[cfg_attr(test, assert_instr(vpslld, IMM8 = 5))]
20159#[rustc_legacy_const_generics(3)]
20160#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20161pub const fn _mm512_mask_slli_epi32<const IMM8: u32>(
20162    src: __m512i,
20163    k: __mmask16,
20164    a: __m512i,
20165) -> __m512i {
20166    unsafe {
20167        static_assert_uimm_bits!(IMM8, 8);
20168        let shf = if IMM8 >= 32 {
20169            u32x16::ZERO
20170        } else {
20171            simd_shl(a.as_u32x16(), u32x16::splat(IMM8))
20172        };
20173        transmute(simd_select_bitmask(k, shf, src.as_u32x16()))
20174    }
20175}
20176
20177/// Shift packed 32-bit integers in a left by imm8 while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20178///
20179/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_slli_epi32&expand=5309)
20180#[inline]
20181#[target_feature(enable = "avx512f")]
20182#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20183#[cfg_attr(test, assert_instr(vpslld, IMM8 = 5))]
20184#[rustc_legacy_const_generics(2)]
20185#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20186pub const fn _mm512_maskz_slli_epi32<const IMM8: u32>(k: __mmask16, a: __m512i) -> __m512i {
20187    unsafe {
20188        static_assert_uimm_bits!(IMM8, 8);
20189        if IMM8 >= 32 {
20190            _mm512_setzero_si512()
20191        } else {
20192            let shf = simd_shl(a.as_u32x16(), u32x16::splat(IMM8));
20193            transmute(simd_select_bitmask(k, shf, u32x16::ZERO))
20194        }
20195    }
20196}
20197
20198/// Shift packed 32-bit integers in a left by imm8 while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20199///
20200/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_slli_epi32&expand=5305)
20201#[inline]
20202#[target_feature(enable = "avx512f,avx512vl")]
20203#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20204#[cfg_attr(test, assert_instr(vpslld, IMM8 = 5))]
20205#[rustc_legacy_const_generics(3)]
20206#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20207pub const fn _mm256_mask_slli_epi32<const IMM8: u32>(
20208    src: __m256i,
20209    k: __mmask8,
20210    a: __m256i,
20211) -> __m256i {
20212    unsafe {
20213        static_assert_uimm_bits!(IMM8, 8);
20214        let r = if IMM8 >= 32 {
20215            u32x8::ZERO
20216        } else {
20217            simd_shl(a.as_u32x8(), u32x8::splat(IMM8))
20218        };
20219        transmute(simd_select_bitmask(k, r, src.as_u32x8()))
20220    }
20221}
20222
20223/// Shift packed 32-bit integers in a left by imm8 while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20224///
20225/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_slli_epi32&expand=5306)
20226#[inline]
20227#[target_feature(enable = "avx512f,avx512vl")]
20228#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20229#[cfg_attr(test, assert_instr(vpslld, IMM8 = 5))]
20230#[rustc_legacy_const_generics(2)]
20231#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20232pub const fn _mm256_maskz_slli_epi32<const IMM8: u32>(k: __mmask8, a: __m256i) -> __m256i {
20233    unsafe {
20234        static_assert_uimm_bits!(IMM8, 8);
20235        if IMM8 >= 32 {
20236            _mm256_setzero_si256()
20237        } else {
20238            let r = simd_shl(a.as_u32x8(), u32x8::splat(IMM8));
20239            transmute(simd_select_bitmask(k, r, u32x8::ZERO))
20240        }
20241    }
20242}
20243
20244/// Shift packed 32-bit integers in a left by imm8 while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20245///
20246/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_slli_epi32&expand=5302)
20247#[inline]
20248#[target_feature(enable = "avx512f,avx512vl")]
20249#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20250#[cfg_attr(test, assert_instr(vpslld, IMM8 = 5))]
20251#[rustc_legacy_const_generics(3)]
20252#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20253pub const fn _mm_mask_slli_epi32<const IMM8: u32>(
20254    src: __m128i,
20255    k: __mmask8,
20256    a: __m128i,
20257) -> __m128i {
20258    unsafe {
20259        static_assert_uimm_bits!(IMM8, 8);
20260        let r = if IMM8 >= 32 {
20261            u32x4::ZERO
20262        } else {
20263            simd_shl(a.as_u32x4(), u32x4::splat(IMM8))
20264        };
20265        transmute(simd_select_bitmask(k, r, src.as_u32x4()))
20266    }
20267}
20268
20269/// Shift packed 32-bit integers in a left by imm8 while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20270///
20271/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_slli_epi32&expand=5303)
20272#[inline]
20273#[target_feature(enable = "avx512f,avx512vl")]
20274#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20275#[cfg_attr(test, assert_instr(vpslld, IMM8 = 5))]
20276#[rustc_legacy_const_generics(2)]
20277#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20278pub const fn _mm_maskz_slli_epi32<const IMM8: u32>(k: __mmask8, a: __m128i) -> __m128i {
20279    unsafe {
20280        static_assert_uimm_bits!(IMM8, 8);
20281        if IMM8 >= 32 {
20282            _mm_setzero_si128()
20283        } else {
20284            let r = simd_shl(a.as_u32x4(), u32x4::splat(IMM8));
20285            transmute(simd_select_bitmask(k, r, u32x4::ZERO))
20286        }
20287    }
20288}
20289
20290/// Shift packed 32-bit integers in a right by imm8 while shifting in zeros, and store the results in dst.
20291///
20292/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_srli_epi32&expand=5522)
20293#[inline]
20294#[target_feature(enable = "avx512f")]
20295#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20296#[cfg_attr(test, assert_instr(vpsrld, IMM8 = 1))]
20297#[rustc_legacy_const_generics(1)]
20298#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20299pub const fn _mm512_srli_epi32<const IMM8: u32>(a: __m512i) -> __m512i {
20300    unsafe {
20301        static_assert_uimm_bits!(IMM8, 8);
20302        if IMM8 >= 32 {
20303            _mm512_setzero_si512()
20304        } else {
20305            transmute(simd_shr(a.as_u32x16(), u32x16::splat(IMM8)))
20306        }
20307    }
20308}
20309
20310/// Shift packed 32-bit integers in a right by imm8 while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20311///
20312/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_srli_epi32&expand=5520)
20313#[inline]
20314#[target_feature(enable = "avx512f")]
20315#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20316#[cfg_attr(test, assert_instr(vpsrld, IMM8 = 1))]
20317#[rustc_legacy_const_generics(3)]
20318#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20319pub const fn _mm512_mask_srli_epi32<const IMM8: u32>(
20320    src: __m512i,
20321    k: __mmask16,
20322    a: __m512i,
20323) -> __m512i {
20324    unsafe {
20325        static_assert_uimm_bits!(IMM8, 8);
20326        let shf = if IMM8 >= 32 {
20327            u32x16::ZERO
20328        } else {
20329            simd_shr(a.as_u32x16(), u32x16::splat(IMM8))
20330        };
20331        transmute(simd_select_bitmask(k, shf, src.as_u32x16()))
20332    }
20333}
20334
20335/// Shift packed 32-bit integers in a right by imm8 while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20336///
20337/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_srli_epi32&expand=5521)
20338#[inline]
20339#[target_feature(enable = "avx512f")]
20340#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20341#[cfg_attr(test, assert_instr(vpsrld, IMM8 = 1))]
20342#[rustc_legacy_const_generics(2)]
20343#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20344pub const fn _mm512_maskz_srli_epi32<const IMM8: u32>(k: __mmask16, a: __m512i) -> __m512i {
20345    unsafe {
20346        static_assert_uimm_bits!(IMM8, 8);
20347        if IMM8 >= 32 {
20348            _mm512_setzero_si512()
20349        } else {
20350            let shf = simd_shr(a.as_u32x16(), u32x16::splat(IMM8));
20351            transmute(simd_select_bitmask(k, shf, u32x16::ZERO))
20352        }
20353    }
20354}
20355
20356/// Shift packed 32-bit integers in a right by imm8 while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20357///
20358/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_srli_epi32&expand=5517)
20359#[inline]
20360#[target_feature(enable = "avx512f,avx512vl")]
20361#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20362#[cfg_attr(test, assert_instr(vpsrld, IMM8 = 1))]
20363#[rustc_legacy_const_generics(3)]
20364#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20365pub const fn _mm256_mask_srli_epi32<const IMM8: u32>(
20366    src: __m256i,
20367    k: __mmask8,
20368    a: __m256i,
20369) -> __m256i {
20370    unsafe {
20371        static_assert_uimm_bits!(IMM8, 8);
20372        let r = if IMM8 >= 32 {
20373            u32x8::ZERO
20374        } else {
20375            simd_shr(a.as_u32x8(), u32x8::splat(IMM8))
20376        };
20377        transmute(simd_select_bitmask(k, r, src.as_u32x8()))
20378    }
20379}
20380
20381/// Shift packed 32-bit integers in a right by imm8 while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20382///
20383/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_srli_epi32&expand=5518)
20384#[inline]
20385#[target_feature(enable = "avx512f,avx512vl")]
20386#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20387#[cfg_attr(test, assert_instr(vpsrld, IMM8 = 1))]
20388#[rustc_legacy_const_generics(2)]
20389#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20390pub const fn _mm256_maskz_srli_epi32<const IMM8: u32>(k: __mmask8, a: __m256i) -> __m256i {
20391    unsafe {
20392        static_assert_uimm_bits!(IMM8, 8);
20393        if IMM8 >= 32 {
20394            _mm256_setzero_si256()
20395        } else {
20396            let r = simd_shr(a.as_u32x8(), u32x8::splat(IMM8));
20397            transmute(simd_select_bitmask(k, r, u32x8::ZERO))
20398        }
20399    }
20400}
20401
20402/// Shift packed 32-bit integers in a right by imm8 while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20403///
20404/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_srli_epi32&expand=5514)
20405#[inline]
20406#[target_feature(enable = "avx512f,avx512vl")]
20407#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20408#[cfg_attr(test, assert_instr(vpsrld, IMM8 = 1))]
20409#[rustc_legacy_const_generics(3)]
20410#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20411pub const fn _mm_mask_srli_epi32<const IMM8: u32>(
20412    src: __m128i,
20413    k: __mmask8,
20414    a: __m128i,
20415) -> __m128i {
20416    unsafe {
20417        static_assert_uimm_bits!(IMM8, 8);
20418        let r = if IMM8 >= 32 {
20419            u32x4::ZERO
20420        } else {
20421            simd_shr(a.as_u32x4(), u32x4::splat(IMM8))
20422        };
20423        transmute(simd_select_bitmask(k, r, src.as_u32x4()))
20424    }
20425}
20426
20427/// Shift packed 32-bit integers in a right by imm8 while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20428///
20429/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_srli_epi32&expand=5515)
20430#[inline]
20431#[target_feature(enable = "avx512f,avx512vl")]
20432#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20433#[cfg_attr(test, assert_instr(vpsrld, IMM8 = 1))]
20434#[rustc_legacy_const_generics(2)]
20435#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20436pub const fn _mm_maskz_srli_epi32<const IMM8: u32>(k: __mmask8, a: __m128i) -> __m128i {
20437    unsafe {
20438        static_assert_uimm_bits!(IMM8, 8);
20439        if IMM8 >= 32 {
20440            _mm_setzero_si128()
20441        } else {
20442            let r = simd_shr(a.as_u32x4(), u32x4::splat(IMM8));
20443            transmute(simd_select_bitmask(k, r, u32x4::ZERO))
20444        }
20445    }
20446}
20447
20448/// Shift packed 64-bit integers in a left by imm8 while shifting in zeros, and store the results in dst.
20449///
20450/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_slli_epi64&expand=5319)
20451#[inline]
20452#[target_feature(enable = "avx512f")]
20453#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20454#[cfg_attr(test, assert_instr(vpsllq, IMM8 = 5))]
20455#[rustc_legacy_const_generics(1)]
20456#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20457pub const fn _mm512_slli_epi64<const IMM8: u32>(a: __m512i) -> __m512i {
20458    unsafe {
20459        static_assert_uimm_bits!(IMM8, 8);
20460        if IMM8 >= 64 {
20461            _mm512_setzero_si512()
20462        } else {
20463            transmute(simd_shl(a.as_u64x8(), u64x8::splat(IMM8 as u64)))
20464        }
20465    }
20466}
20467
20468/// Shift packed 64-bit integers in a left by imm8 while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20469///
20470/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_slli_epi64&expand=5317)
20471#[inline]
20472#[target_feature(enable = "avx512f")]
20473#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20474#[cfg_attr(test, assert_instr(vpsllq, IMM8 = 5))]
20475#[rustc_legacy_const_generics(3)]
20476#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20477pub const fn _mm512_mask_slli_epi64<const IMM8: u32>(
20478    src: __m512i,
20479    k: __mmask8,
20480    a: __m512i,
20481) -> __m512i {
20482    unsafe {
20483        static_assert_uimm_bits!(IMM8, 8);
20484        let shf = if IMM8 >= 64 {
20485            u64x8::ZERO
20486        } else {
20487            simd_shl(a.as_u64x8(), u64x8::splat(IMM8 as u64))
20488        };
20489        transmute(simd_select_bitmask(k, shf, src.as_u64x8()))
20490    }
20491}
20492
20493/// Shift packed 64-bit integers in a left by imm8 while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20494///
20495/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_slli_epi64&expand=5318)
20496#[inline]
20497#[target_feature(enable = "avx512f")]
20498#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20499#[cfg_attr(test, assert_instr(vpsllq, IMM8 = 5))]
20500#[rustc_legacy_const_generics(2)]
20501#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20502pub const fn _mm512_maskz_slli_epi64<const IMM8: u32>(k: __mmask8, a: __m512i) -> __m512i {
20503    unsafe {
20504        static_assert_uimm_bits!(IMM8, 8);
20505        if IMM8 >= 64 {
20506            _mm512_setzero_si512()
20507        } else {
20508            let shf = simd_shl(a.as_u64x8(), u64x8::splat(IMM8 as u64));
20509            transmute(simd_select_bitmask(k, shf, u64x8::ZERO))
20510        }
20511    }
20512}
20513
20514/// Shift packed 64-bit integers in a left by imm8 while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20515///
20516/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_slli_epi64&expand=5314)
20517#[inline]
20518#[target_feature(enable = "avx512f,avx512vl")]
20519#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20520#[cfg_attr(test, assert_instr(vpsllq, IMM8 = 5))]
20521#[rustc_legacy_const_generics(3)]
20522#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20523pub const fn _mm256_mask_slli_epi64<const IMM8: u32>(
20524    src: __m256i,
20525    k: __mmask8,
20526    a: __m256i,
20527) -> __m256i {
20528    unsafe {
20529        static_assert_uimm_bits!(IMM8, 8);
20530        let r = if IMM8 >= 64 {
20531            u64x4::ZERO
20532        } else {
20533            simd_shl(a.as_u64x4(), u64x4::splat(IMM8 as u64))
20534        };
20535        transmute(simd_select_bitmask(k, r, src.as_u64x4()))
20536    }
20537}
20538
20539/// Shift packed 64-bit integers in a left by imm8 while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20540///
20541/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_slli_epi64&expand=5315)
20542#[inline]
20543#[target_feature(enable = "avx512f,avx512vl")]
20544#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20545#[cfg_attr(test, assert_instr(vpsllq, IMM8 = 5))]
20546#[rustc_legacy_const_generics(2)]
20547#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20548pub const fn _mm256_maskz_slli_epi64<const IMM8: u32>(k: __mmask8, a: __m256i) -> __m256i {
20549    unsafe {
20550        static_assert_uimm_bits!(IMM8, 8);
20551        if IMM8 >= 64 {
20552            _mm256_setzero_si256()
20553        } else {
20554            let r = simd_shl(a.as_u64x4(), u64x4::splat(IMM8 as u64));
20555            transmute(simd_select_bitmask(k, r, u64x4::ZERO))
20556        }
20557    }
20558}
20559
20560/// Shift packed 64-bit integers in a left by imm8 while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20561///
20562/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_slli_epi64&expand=5311)
20563#[inline]
20564#[target_feature(enable = "avx512f,avx512vl")]
20565#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20566#[cfg_attr(test, assert_instr(vpsllq, IMM8 = 5))]
20567#[rustc_legacy_const_generics(3)]
20568#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20569pub const fn _mm_mask_slli_epi64<const IMM8: u32>(
20570    src: __m128i,
20571    k: __mmask8,
20572    a: __m128i,
20573) -> __m128i {
20574    unsafe {
20575        static_assert_uimm_bits!(IMM8, 8);
20576        let r = if IMM8 >= 64 {
20577            u64x2::ZERO
20578        } else {
20579            simd_shl(a.as_u64x2(), u64x2::splat(IMM8 as u64))
20580        };
20581        transmute(simd_select_bitmask(k, r, src.as_u64x2()))
20582    }
20583}
20584
20585/// Shift packed 64-bit integers in a left by imm8 while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20586///
20587/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_slli_epi64&expand=5312)
20588#[inline]
20589#[target_feature(enable = "avx512f,avx512vl")]
20590#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20591#[cfg_attr(test, assert_instr(vpsllq, IMM8 = 5))]
20592#[rustc_legacy_const_generics(2)]
20593#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20594pub const fn _mm_maskz_slli_epi64<const IMM8: u32>(k: __mmask8, a: __m128i) -> __m128i {
20595    unsafe {
20596        static_assert_uimm_bits!(IMM8, 8);
20597        if IMM8 >= 64 {
20598            _mm_setzero_si128()
20599        } else {
20600            let r = simd_shl(a.as_u64x2(), u64x2::splat(IMM8 as u64));
20601            transmute(simd_select_bitmask(k, r, u64x2::ZERO))
20602        }
20603    }
20604}
20605
20606/// Shift packed 64-bit integers in a right by imm8 while shifting in zeros, and store the results in dst.
20607///
20608/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_srli_epi64&expand=5531)
20609#[inline]
20610#[target_feature(enable = "avx512f")]
20611#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20612#[cfg_attr(test, assert_instr(vpsrlq, IMM8 = 1))]
20613#[rustc_legacy_const_generics(1)]
20614#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20615pub const fn _mm512_srli_epi64<const IMM8: u32>(a: __m512i) -> __m512i {
20616    unsafe {
20617        static_assert_uimm_bits!(IMM8, 8);
20618        if IMM8 >= 64 {
20619            _mm512_setzero_si512()
20620        } else {
20621            transmute(simd_shr(a.as_u64x8(), u64x8::splat(IMM8 as u64)))
20622        }
20623    }
20624}
20625
20626/// Shift packed 64-bit integers in a right by imm8 while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20627///
20628/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_srli_epi64&expand=5529)
20629#[inline]
20630#[target_feature(enable = "avx512f")]
20631#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20632#[cfg_attr(test, assert_instr(vpsrlq, IMM8 = 1))]
20633#[rustc_legacy_const_generics(3)]
20634#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20635pub const fn _mm512_mask_srli_epi64<const IMM8: u32>(
20636    src: __m512i,
20637    k: __mmask8,
20638    a: __m512i,
20639) -> __m512i {
20640    unsafe {
20641        static_assert_uimm_bits!(IMM8, 8);
20642        let shf = if IMM8 >= 64 {
20643            u64x8::ZERO
20644        } else {
20645            simd_shr(a.as_u64x8(), u64x8::splat(IMM8 as u64))
20646        };
20647        transmute(simd_select_bitmask(k, shf, src.as_u64x8()))
20648    }
20649}
20650
20651/// Shift packed 64-bit integers in a right by imm8 while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20652///
20653/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_srli_epi64&expand=5530)
20654#[inline]
20655#[target_feature(enable = "avx512f")]
20656#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20657#[cfg_attr(test, assert_instr(vpsrlq, IMM8 = 1))]
20658#[rustc_legacy_const_generics(2)]
20659#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20660pub const fn _mm512_maskz_srli_epi64<const IMM8: u32>(k: __mmask8, a: __m512i) -> __m512i {
20661    unsafe {
20662        static_assert_uimm_bits!(IMM8, 8);
20663        if IMM8 >= 64 {
20664            _mm512_setzero_si512()
20665        } else {
20666            let shf = simd_shr(a.as_u64x8(), u64x8::splat(IMM8 as u64));
20667            transmute(simd_select_bitmask(k, shf, u64x8::ZERO))
20668        }
20669    }
20670}
20671
20672/// Shift packed 64-bit integers in a right by imm8 while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20673///
20674/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_srli_epi64&expand=5526)
20675#[inline]
20676#[target_feature(enable = "avx512f,avx512vl")]
20677#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20678#[cfg_attr(test, assert_instr(vpsrlq, IMM8 = 1))]
20679#[rustc_legacy_const_generics(3)]
20680#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20681pub const fn _mm256_mask_srli_epi64<const IMM8: u32>(
20682    src: __m256i,
20683    k: __mmask8,
20684    a: __m256i,
20685) -> __m256i {
20686    unsafe {
20687        static_assert_uimm_bits!(IMM8, 8);
20688        let r = if IMM8 >= 64 {
20689            u64x4::ZERO
20690        } else {
20691            simd_shr(a.as_u64x4(), u64x4::splat(IMM8 as u64))
20692        };
20693        transmute(simd_select_bitmask(k, r, src.as_u64x4()))
20694    }
20695}
20696
20697/// Shift packed 64-bit integers in a right by imm8 while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20698///
20699/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_srli_epi64&expand=5527)
20700#[inline]
20701#[target_feature(enable = "avx512f,avx512vl")]
20702#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20703#[cfg_attr(test, assert_instr(vpsrlq, IMM8 = 1))]
20704#[rustc_legacy_const_generics(2)]
20705#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20706pub const fn _mm256_maskz_srli_epi64<const IMM8: u32>(k: __mmask8, a: __m256i) -> __m256i {
20707    unsafe {
20708        static_assert_uimm_bits!(IMM8, 8);
20709        if IMM8 >= 64 {
20710            _mm256_setzero_si256()
20711        } else {
20712            let r = simd_shr(a.as_u64x4(), u64x4::splat(IMM8 as u64));
20713            transmute(simd_select_bitmask(k, r, u64x4::ZERO))
20714        }
20715    }
20716}
20717
20718/// Shift packed 64-bit integers in a right by imm8 while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20719///
20720/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_srli_epi64&expand=5523)
20721#[inline]
20722#[target_feature(enable = "avx512f,avx512vl")]
20723#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20724#[cfg_attr(test, assert_instr(vpsrlq, IMM8 = 1))]
20725#[rustc_legacy_const_generics(3)]
20726#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20727pub const fn _mm_mask_srli_epi64<const IMM8: u32>(
20728    src: __m128i,
20729    k: __mmask8,
20730    a: __m128i,
20731) -> __m128i {
20732    unsafe {
20733        static_assert_uimm_bits!(IMM8, 8);
20734        let r = if IMM8 >= 64 {
20735            u64x2::ZERO
20736        } else {
20737            simd_shr(a.as_u64x2(), u64x2::splat(IMM8 as u64))
20738        };
20739        transmute(simd_select_bitmask(k, r, src.as_u64x2()))
20740    }
20741}
20742
20743/// Shift packed 64-bit integers in a right by imm8 while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20744///
20745/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_srli_epi64&expand=5524)
20746#[inline]
20747#[target_feature(enable = "avx512f,avx512vl")]
20748#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20749#[cfg_attr(test, assert_instr(vpsrlq, IMM8 = 1))]
20750#[rustc_legacy_const_generics(2)]
20751#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
20752pub const fn _mm_maskz_srli_epi64<const IMM8: u32>(k: __mmask8, a: __m128i) -> __m128i {
20753    unsafe {
20754        static_assert_uimm_bits!(IMM8, 8);
20755        if IMM8 >= 64 {
20756            _mm_setzero_si128()
20757        } else {
20758            let r = simd_shr(a.as_u64x2(), u64x2::splat(IMM8 as u64));
20759            transmute(simd_select_bitmask(k, r, u64x2::ZERO))
20760        }
20761    }
20762}
20763
20764/// Shift packed 32-bit integers in a left by count while shifting in zeros, and store the results in dst.
20765///
20766/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_sll_epi32&expand=5280)
20767#[inline]
20768#[target_feature(enable = "avx512f")]
20769#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20770#[cfg_attr(test, assert_instr(vpslld))]
20771pub fn _mm512_sll_epi32(a: __m512i, count: __m128i) -> __m512i {
20772    unsafe { transmute(vpslld(a.as_i32x16(), count.as_i32x4())) }
20773}
20774
20775/// Shift packed 32-bit integers in a left by count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20776///
20777/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_sll_epi32&expand=5278)
20778#[inline]
20779#[target_feature(enable = "avx512f")]
20780#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20781#[cfg_attr(test, assert_instr(vpslld))]
20782pub fn _mm512_mask_sll_epi32(src: __m512i, k: __mmask16, a: __m512i, count: __m128i) -> __m512i {
20783    unsafe {
20784        let shf = _mm512_sll_epi32(a, count).as_i32x16();
20785        transmute(simd_select_bitmask(k, shf, src.as_i32x16()))
20786    }
20787}
20788
20789/// Shift packed 32-bit integers in a left by count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20790///
20791/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_sll_epi32&expand=5279)
20792#[inline]
20793#[target_feature(enable = "avx512f")]
20794#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20795#[cfg_attr(test, assert_instr(vpslld))]
20796pub fn _mm512_maskz_sll_epi32(k: __mmask16, a: __m512i, count: __m128i) -> __m512i {
20797    unsafe {
20798        let shf = _mm512_sll_epi32(a, count).as_i32x16();
20799        transmute(simd_select_bitmask(k, shf, i32x16::ZERO))
20800    }
20801}
20802
20803/// Shift packed 32-bit integers in a left by count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20804///
20805/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_sll_epi32&expand=5275)
20806#[inline]
20807#[target_feature(enable = "avx512f,avx512vl")]
20808#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20809#[cfg_attr(test, assert_instr(vpslld))]
20810pub fn _mm256_mask_sll_epi32(src: __m256i, k: __mmask8, a: __m256i, count: __m128i) -> __m256i {
20811    unsafe {
20812        let shf = _mm256_sll_epi32(a, count).as_i32x8();
20813        transmute(simd_select_bitmask(k, shf, src.as_i32x8()))
20814    }
20815}
20816
20817/// Shift packed 32-bit integers in a left by count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20818///
20819/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_sll_epi32&expand=5276)
20820#[inline]
20821#[target_feature(enable = "avx512f,avx512vl")]
20822#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20823#[cfg_attr(test, assert_instr(vpslld))]
20824pub fn _mm256_maskz_sll_epi32(k: __mmask8, a: __m256i, count: __m128i) -> __m256i {
20825    unsafe {
20826        let shf = _mm256_sll_epi32(a, count).as_i32x8();
20827        transmute(simd_select_bitmask(k, shf, i32x8::ZERO))
20828    }
20829}
20830
20831/// Shift packed 32-bit integers in a left by count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20832///
20833/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_sll_epi32&expand=5272)
20834#[inline]
20835#[target_feature(enable = "avx512f,avx512vl")]
20836#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20837#[cfg_attr(test, assert_instr(vpslld))]
20838pub fn _mm_mask_sll_epi32(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
20839    unsafe {
20840        let shf = _mm_sll_epi32(a, count).as_i32x4();
20841        transmute(simd_select_bitmask(k, shf, src.as_i32x4()))
20842    }
20843}
20844
20845/// Shift packed 32-bit integers in a left by count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20846///
20847/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_sll_epi32&expand=5273)
20848#[inline]
20849#[target_feature(enable = "avx512f,avx512vl")]
20850#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20851#[cfg_attr(test, assert_instr(vpslld))]
20852pub fn _mm_maskz_sll_epi32(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
20853    unsafe {
20854        let shf = _mm_sll_epi32(a, count).as_i32x4();
20855        transmute(simd_select_bitmask(k, shf, i32x4::ZERO))
20856    }
20857}
20858
20859/// Shift packed 32-bit integers in a right by count while shifting in zeros, and store the results in dst.
20860///
20861/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_srl_epi32&expand=5492)
20862#[inline]
20863#[target_feature(enable = "avx512f")]
20864#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20865#[cfg_attr(test, assert_instr(vpsrld))]
20866pub fn _mm512_srl_epi32(a: __m512i, count: __m128i) -> __m512i {
20867    unsafe { transmute(vpsrld(a.as_i32x16(), count.as_i32x4())) }
20868}
20869
20870/// Shift packed 32-bit integers in a right by count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20871///
20872/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_srl_epi32&expand=5490)
20873#[inline]
20874#[target_feature(enable = "avx512f")]
20875#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20876#[cfg_attr(test, assert_instr(vpsrld))]
20877pub fn _mm512_mask_srl_epi32(src: __m512i, k: __mmask16, a: __m512i, count: __m128i) -> __m512i {
20878    unsafe {
20879        let shf = _mm512_srl_epi32(a, count).as_i32x16();
20880        transmute(simd_select_bitmask(k, shf, src.as_i32x16()))
20881    }
20882}
20883
20884/// Shift packed 32-bit integers in a right by count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20885///
20886/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_srl_epi32&expand=5491)
20887#[inline]
20888#[target_feature(enable = "avx512f")]
20889#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20890#[cfg_attr(test, assert_instr(vpsrld))]
20891pub fn _mm512_maskz_srl_epi32(k: __mmask16, a: __m512i, count: __m128i) -> __m512i {
20892    unsafe {
20893        let shf = _mm512_srl_epi32(a, count).as_i32x16();
20894        transmute(simd_select_bitmask(k, shf, i32x16::ZERO))
20895    }
20896}
20897
20898/// Shift packed 32-bit integers in a right by count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20899///
20900/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_srl_epi32&expand=5487)
20901#[inline]
20902#[target_feature(enable = "avx512f,avx512vl")]
20903#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20904#[cfg_attr(test, assert_instr(vpsrld))]
20905pub fn _mm256_mask_srl_epi32(src: __m256i, k: __mmask8, a: __m256i, count: __m128i) -> __m256i {
20906    unsafe {
20907        let shf = _mm256_srl_epi32(a, count).as_i32x8();
20908        transmute(simd_select_bitmask(k, shf, src.as_i32x8()))
20909    }
20910}
20911
20912/// Shift packed 32-bit integers in a right by count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20913///
20914/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_srl_epi32&expand=5488)
20915#[inline]
20916#[target_feature(enable = "avx512f,avx512vl")]
20917#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20918#[cfg_attr(test, assert_instr(vpsrld))]
20919pub fn _mm256_maskz_srl_epi32(k: __mmask8, a: __m256i, count: __m128i) -> __m256i {
20920    unsafe {
20921        let shf = _mm256_srl_epi32(a, count).as_i32x8();
20922        transmute(simd_select_bitmask(k, shf, i32x8::ZERO))
20923    }
20924}
20925
20926/// Shift packed 32-bit integers in a right by count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20927///
20928/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_srl_epi32&expand=5484)
20929#[inline]
20930#[target_feature(enable = "avx512f,avx512vl")]
20931#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20932#[cfg_attr(test, assert_instr(vpsrld))]
20933pub fn _mm_mask_srl_epi32(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
20934    unsafe {
20935        let shf = _mm_srl_epi32(a, count).as_i32x4();
20936        transmute(simd_select_bitmask(k, shf, src.as_i32x4()))
20937    }
20938}
20939
20940/// Shift packed 32-bit integers in a right by count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20941///
20942/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_srl_epi32&expand=5485)
20943#[inline]
20944#[target_feature(enable = "avx512f,avx512vl")]
20945#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20946#[cfg_attr(test, assert_instr(vpsrld))]
20947pub fn _mm_maskz_srl_epi32(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
20948    unsafe {
20949        let shf = _mm_srl_epi32(a, count).as_i32x4();
20950        transmute(simd_select_bitmask(k, shf, i32x4::ZERO))
20951    }
20952}
20953
20954/// Shift packed 64-bit integers in a left by count while shifting in zeros, and store the results in dst.
20955///
20956/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_sll_epi64&expand=5289)
20957#[inline]
20958#[target_feature(enable = "avx512f")]
20959#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20960#[cfg_attr(test, assert_instr(vpsllq))]
20961pub fn _mm512_sll_epi64(a: __m512i, count: __m128i) -> __m512i {
20962    unsafe { transmute(vpsllq(a.as_i64x8(), count.as_i64x2())) }
20963}
20964
20965/// Shift packed 64-bit integers in a left by count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20966///
20967/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_sll_epi64&expand=5287)
20968#[inline]
20969#[target_feature(enable = "avx512f")]
20970#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20971#[cfg_attr(test, assert_instr(vpsllq))]
20972pub fn _mm512_mask_sll_epi64(src: __m512i, k: __mmask8, a: __m512i, count: __m128i) -> __m512i {
20973    unsafe {
20974        let shf = _mm512_sll_epi64(a, count).as_i64x8();
20975        transmute(simd_select_bitmask(k, shf, src.as_i64x8()))
20976    }
20977}
20978
20979/// Shift packed 64-bit integers in a left by count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
20980///
20981/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_sll_epi64&expand=5288)
20982#[inline]
20983#[target_feature(enable = "avx512f")]
20984#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20985#[cfg_attr(test, assert_instr(vpsllq))]
20986pub fn _mm512_maskz_sll_epi64(k: __mmask8, a: __m512i, count: __m128i) -> __m512i {
20987    unsafe {
20988        let shf = _mm512_sll_epi64(a, count).as_i64x8();
20989        transmute(simd_select_bitmask(k, shf, i64x8::ZERO))
20990    }
20991}
20992
20993/// Shift packed 64-bit integers in a left by count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
20994///
20995/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_sll_epi64&expand=5284)
20996#[inline]
20997#[target_feature(enable = "avx512f,avx512vl")]
20998#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
20999#[cfg_attr(test, assert_instr(vpsllq))]
21000pub fn _mm256_mask_sll_epi64(src: __m256i, k: __mmask8, a: __m256i, count: __m128i) -> __m256i {
21001    unsafe {
21002        let shf = _mm256_sll_epi64(a, count).as_i64x4();
21003        transmute(simd_select_bitmask(k, shf, src.as_i64x4()))
21004    }
21005}
21006
21007/// Shift packed 64-bit integers in a left by count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21008///
21009/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_sll_epi64&expand=5285)
21010#[inline]
21011#[target_feature(enable = "avx512f,avx512vl")]
21012#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21013#[cfg_attr(test, assert_instr(vpsllq))]
21014pub fn _mm256_maskz_sll_epi64(k: __mmask8, a: __m256i, count: __m128i) -> __m256i {
21015    unsafe {
21016        let shf = _mm256_sll_epi64(a, count).as_i64x4();
21017        transmute(simd_select_bitmask(k, shf, i64x4::ZERO))
21018    }
21019}
21020
21021/// Shift packed 64-bit integers in a left by count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21022///
21023/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_sll_epi64&expand=5281)
21024#[inline]
21025#[target_feature(enable = "avx512f,avx512vl")]
21026#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21027#[cfg_attr(test, assert_instr(vpsllq))]
21028pub fn _mm_mask_sll_epi64(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
21029    unsafe {
21030        let shf = _mm_sll_epi64(a, count).as_i64x2();
21031        transmute(simd_select_bitmask(k, shf, src.as_i64x2()))
21032    }
21033}
21034
21035/// Shift packed 64-bit integers in a left by count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21036///
21037/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_sll_epi64&expand=5282)
21038#[inline]
21039#[target_feature(enable = "avx512f,avx512vl")]
21040#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21041#[cfg_attr(test, assert_instr(vpsllq))]
21042pub fn _mm_maskz_sll_epi64(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
21043    unsafe {
21044        let shf = _mm_sll_epi64(a, count).as_i64x2();
21045        transmute(simd_select_bitmask(k, shf, i64x2::ZERO))
21046    }
21047}
21048
21049/// Shift packed 64-bit integers in a right by count while shifting in zeros, and store the results in dst.
21050///
21051/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_srl_epi64&expand=5501)
21052#[inline]
21053#[target_feature(enable = "avx512f")]
21054#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21055#[cfg_attr(test, assert_instr(vpsrlq))]
21056pub fn _mm512_srl_epi64(a: __m512i, count: __m128i) -> __m512i {
21057    unsafe { transmute(vpsrlq(a.as_i64x8(), count.as_i64x2())) }
21058}
21059
21060/// Shift packed 64-bit integers in a right by count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21061///
21062/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_srl_epi64&expand=5499)
21063#[inline]
21064#[target_feature(enable = "avx512f")]
21065#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21066#[cfg_attr(test, assert_instr(vpsrlq))]
21067pub fn _mm512_mask_srl_epi64(src: __m512i, k: __mmask8, a: __m512i, count: __m128i) -> __m512i {
21068    unsafe {
21069        let shf = _mm512_srl_epi64(a, count).as_i64x8();
21070        transmute(simd_select_bitmask(k, shf, src.as_i64x8()))
21071    }
21072}
21073
21074/// Shift packed 64-bit integers in a right by count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21075///
21076/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_srl_epi64&expand=5500)
21077#[inline]
21078#[target_feature(enable = "avx512f")]
21079#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21080#[cfg_attr(test, assert_instr(vpsrlq))]
21081pub fn _mm512_maskz_srl_epi64(k: __mmask8, a: __m512i, count: __m128i) -> __m512i {
21082    unsafe {
21083        let shf = _mm512_srl_epi64(a, count).as_i64x8();
21084        transmute(simd_select_bitmask(k, shf, i64x8::ZERO))
21085    }
21086}
21087
21088/// Shift packed 64-bit integers in a right by count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21089///
21090/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_srl_epi64&expand=5496)
21091#[inline]
21092#[target_feature(enable = "avx512f,avx512vl")]
21093#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21094#[cfg_attr(test, assert_instr(vpsrlq))]
21095pub fn _mm256_mask_srl_epi64(src: __m256i, k: __mmask8, a: __m256i, count: __m128i) -> __m256i {
21096    unsafe {
21097        let shf = _mm256_srl_epi64(a, count).as_i64x4();
21098        transmute(simd_select_bitmask(k, shf, src.as_i64x4()))
21099    }
21100}
21101
21102/// Shift packed 64-bit integers in a right by count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21103///
21104/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_srl_epi64&expand=5497)
21105#[inline]
21106#[target_feature(enable = "avx512f,avx512vl")]
21107#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21108#[cfg_attr(test, assert_instr(vpsrlq))]
21109pub fn _mm256_maskz_srl_epi64(k: __mmask8, a: __m256i, count: __m128i) -> __m256i {
21110    unsafe {
21111        let shf = _mm256_srl_epi64(a, count).as_i64x4();
21112        transmute(simd_select_bitmask(k, shf, i64x4::ZERO))
21113    }
21114}
21115
21116/// Shift packed 64-bit integers in a right by count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21117///
21118/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_srl_epi64&expand=5493)
21119#[inline]
21120#[target_feature(enable = "avx512f,avx512vl")]
21121#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21122#[cfg_attr(test, assert_instr(vpsrlq))]
21123pub fn _mm_mask_srl_epi64(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
21124    unsafe {
21125        let shf = _mm_srl_epi64(a, count).as_i64x2();
21126        transmute(simd_select_bitmask(k, shf, src.as_i64x2()))
21127    }
21128}
21129
21130/// Shift packed 64-bit integers in a right by count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21131///
21132/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_srl_epi64&expand=5494)
21133#[inline]
21134#[target_feature(enable = "avx512f,avx512vl")]
21135#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21136#[cfg_attr(test, assert_instr(vpsrlq))]
21137pub fn _mm_maskz_srl_epi64(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
21138    unsafe {
21139        let shf = _mm_srl_epi64(a, count).as_i64x2();
21140        transmute(simd_select_bitmask(k, shf, i64x2::ZERO))
21141    }
21142}
21143
21144/// Shift packed 32-bit integers in a right by count while shifting in sign bits, and store the results in dst.
21145///
21146/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_sra_epi32&expand=5407)
21147#[inline]
21148#[target_feature(enable = "avx512f")]
21149#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21150#[cfg_attr(test, assert_instr(vpsrad))]
21151pub fn _mm512_sra_epi32(a: __m512i, count: __m128i) -> __m512i {
21152    unsafe { transmute(vpsrad(a.as_i32x16(), count.as_i32x4())) }
21153}
21154
21155/// Shift packed 32-bit integers in a right by count while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21156///
21157/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_sra_epi32&expand=5405)
21158#[inline]
21159#[target_feature(enable = "avx512f")]
21160#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21161#[cfg_attr(test, assert_instr(vpsrad))]
21162pub fn _mm512_mask_sra_epi32(src: __m512i, k: __mmask16, a: __m512i, count: __m128i) -> __m512i {
21163    unsafe {
21164        let shf = _mm512_sra_epi32(a, count).as_i32x16();
21165        transmute(simd_select_bitmask(k, shf, src.as_i32x16()))
21166    }
21167}
21168
21169/// Shift packed 32-bit integers in a right by count while shifting in sign bits, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21170///
21171/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_sra_epi32&expand=5406)
21172#[inline]
21173#[target_feature(enable = "avx512f")]
21174#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21175#[cfg_attr(test, assert_instr(vpsrad))]
21176pub fn _mm512_maskz_sra_epi32(k: __mmask16, a: __m512i, count: __m128i) -> __m512i {
21177    unsafe {
21178        let shf = _mm512_sra_epi32(a, count).as_i32x16();
21179        transmute(simd_select_bitmask(k, shf, i32x16::ZERO))
21180    }
21181}
21182
21183/// Shift packed 32-bit integers in a right by count while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21184///
21185/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_sra_epi32&expand=5402)
21186#[inline]
21187#[target_feature(enable = "avx512f,avx512vl")]
21188#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21189#[cfg_attr(test, assert_instr(vpsrad))]
21190pub fn _mm256_mask_sra_epi32(src: __m256i, k: __mmask8, a: __m256i, count: __m128i) -> __m256i {
21191    unsafe {
21192        let shf = _mm256_sra_epi32(a, count).as_i32x8();
21193        transmute(simd_select_bitmask(k, shf, src.as_i32x8()))
21194    }
21195}
21196
21197/// Shift packed 32-bit integers in a right by count while shifting in sign bits, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21198///
21199/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_sra_epi32&expand=5403)
21200#[inline]
21201#[target_feature(enable = "avx512f,avx512vl")]
21202#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21203#[cfg_attr(test, assert_instr(vpsrad))]
21204pub fn _mm256_maskz_sra_epi32(k: __mmask8, a: __m256i, count: __m128i) -> __m256i {
21205    unsafe {
21206        let shf = _mm256_sra_epi32(a, count).as_i32x8();
21207        transmute(simd_select_bitmask(k, shf, i32x8::ZERO))
21208    }
21209}
21210
21211/// Shift packed 32-bit integers in a right by count while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21212///
21213/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_sra_epi32&expand=5399)
21214#[inline]
21215#[target_feature(enable = "avx512f,avx512vl")]
21216#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21217#[cfg_attr(test, assert_instr(vpsrad))]
21218pub fn _mm_mask_sra_epi32(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
21219    unsafe {
21220        let shf = _mm_sra_epi32(a, count).as_i32x4();
21221        transmute(simd_select_bitmask(k, shf, src.as_i32x4()))
21222    }
21223}
21224
21225/// Shift packed 32-bit integers in a right by count while shifting in sign bits, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21226///
21227/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_sra_epi32&expand=5400)
21228#[inline]
21229#[target_feature(enable = "avx512f,avx512vl")]
21230#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21231#[cfg_attr(test, assert_instr(vpsrad))]
21232pub fn _mm_maskz_sra_epi32(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
21233    unsafe {
21234        let shf = _mm_sra_epi32(a, count).as_i32x4();
21235        transmute(simd_select_bitmask(k, shf, i32x4::ZERO))
21236    }
21237}
21238
21239/// Shift packed 64-bit integers in a right by count while shifting in sign bits, and store the results in dst.
21240///
21241/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_sra_epi64&expand=5416)
21242#[inline]
21243#[target_feature(enable = "avx512f")]
21244#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21245#[cfg_attr(test, assert_instr(vpsraq))]
21246pub fn _mm512_sra_epi64(a: __m512i, count: __m128i) -> __m512i {
21247    unsafe { transmute(vpsraq(a.as_i64x8(), count.as_i64x2())) }
21248}
21249
21250/// Shift packed 64-bit integers in a right by count while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21251///
21252/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_sra_epi64&expand=5414)
21253#[inline]
21254#[target_feature(enable = "avx512f")]
21255#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21256#[cfg_attr(test, assert_instr(vpsraq))]
21257pub fn _mm512_mask_sra_epi64(src: __m512i, k: __mmask8, a: __m512i, count: __m128i) -> __m512i {
21258    unsafe {
21259        let shf = _mm512_sra_epi64(a, count).as_i64x8();
21260        transmute(simd_select_bitmask(k, shf, src.as_i64x8()))
21261    }
21262}
21263
21264/// Shift packed 64-bit integers in a right by count while shifting in sign bits, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21265///
21266/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_sra_epi64&expand=5415)
21267#[inline]
21268#[target_feature(enable = "avx512f")]
21269#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21270#[cfg_attr(test, assert_instr(vpsraq))]
21271pub fn _mm512_maskz_sra_epi64(k: __mmask8, a: __m512i, count: __m128i) -> __m512i {
21272    unsafe {
21273        let shf = _mm512_sra_epi64(a, count).as_i64x8();
21274        transmute(simd_select_bitmask(k, shf, i64x8::ZERO))
21275    }
21276}
21277
21278/// Shift packed 64-bit integers in a right by count while shifting in sign bits, and store the results in dst.
21279///
21280/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_sra_epi64&expand=5413)
21281#[inline]
21282#[target_feature(enable = "avx512f,avx512vl")]
21283#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21284#[cfg_attr(test, assert_instr(vpsraq))]
21285pub fn _mm256_sra_epi64(a: __m256i, count: __m128i) -> __m256i {
21286    unsafe { transmute(vpsraq256(a.as_i64x4(), count.as_i64x2())) }
21287}
21288
21289/// Shift packed 64-bit integers in a right by count while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21290///
21291/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_sra_epi64&expand=5411)
21292#[inline]
21293#[target_feature(enable = "avx512f,avx512vl")]
21294#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21295#[cfg_attr(test, assert_instr(vpsraq))]
21296pub fn _mm256_mask_sra_epi64(src: __m256i, k: __mmask8, a: __m256i, count: __m128i) -> __m256i {
21297    unsafe {
21298        let shf = _mm256_sra_epi64(a, count).as_i64x4();
21299        transmute(simd_select_bitmask(k, shf, src.as_i64x4()))
21300    }
21301}
21302
21303/// Shift packed 64-bit integers in a right by count while shifting in sign bits, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21304///
21305/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_sra_epi64&expand=5412)
21306#[inline]
21307#[target_feature(enable = "avx512f,avx512vl")]
21308#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21309#[cfg_attr(test, assert_instr(vpsraq))]
21310pub fn _mm256_maskz_sra_epi64(k: __mmask8, a: __m256i, count: __m128i) -> __m256i {
21311    unsafe {
21312        let shf = _mm256_sra_epi64(a, count).as_i64x4();
21313        transmute(simd_select_bitmask(k, shf, i64x4::ZERO))
21314    }
21315}
21316
21317/// Shift packed 64-bit integers in a right by count while shifting in sign bits, and store the results in dst.
21318///
21319/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sra_epi64&expand=5410)
21320#[inline]
21321#[target_feature(enable = "avx512f,avx512vl")]
21322#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21323#[cfg_attr(test, assert_instr(vpsraq))]
21324pub fn _mm_sra_epi64(a: __m128i, count: __m128i) -> __m128i {
21325    unsafe { transmute(vpsraq128(a.as_i64x2(), count.as_i64x2())) }
21326}
21327
21328/// Shift packed 64-bit integers in a right by count while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21329///
21330/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_sra_epi64&expand=5408)
21331#[inline]
21332#[target_feature(enable = "avx512f,avx512vl")]
21333#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21334#[cfg_attr(test, assert_instr(vpsraq))]
21335pub fn _mm_mask_sra_epi64(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
21336    unsafe {
21337        let shf = _mm_sra_epi64(a, count).as_i64x2();
21338        transmute(simd_select_bitmask(k, shf, src.as_i64x2()))
21339    }
21340}
21341
21342/// Shift packed 64-bit integers in a right by count while shifting in sign bits, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21343///
21344/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_sra_epi64&expand=5409)
21345#[inline]
21346#[target_feature(enable = "avx512f,avx512vl")]
21347#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21348#[cfg_attr(test, assert_instr(vpsraq))]
21349pub fn _mm_maskz_sra_epi64(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
21350    unsafe {
21351        let shf = _mm_sra_epi64(a, count).as_i64x2();
21352        transmute(simd_select_bitmask(k, shf, i64x2::ZERO))
21353    }
21354}
21355
21356/// Shift packed 32-bit integers in a right by imm8 while shifting in sign bits, and store the results in dst.
21357///
21358/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_srai_epi32&expand=5436)
21359#[inline]
21360#[target_feature(enable = "avx512f")]
21361#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21362#[cfg_attr(test, assert_instr(vpsrad, IMM8 = 1))]
21363#[rustc_legacy_const_generics(1)]
21364#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21365pub const fn _mm512_srai_epi32<const IMM8: u32>(a: __m512i) -> __m512i {
21366    unsafe {
21367        static_assert_uimm_bits!(IMM8, 8);
21368        transmute(simd_shr(a.as_i32x16(), i32x16::splat(IMM8.min(31) as i32)))
21369    }
21370}
21371
21372/// Shift packed 32-bit integers in a right by imm8 while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21373///
21374/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_srai_epi32&expand=5434)
21375#[inline]
21376#[target_feature(enable = "avx512f")]
21377#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21378#[cfg_attr(test, assert_instr(vpsrad, IMM8 = 1))]
21379#[rustc_legacy_const_generics(3)]
21380#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21381pub const fn _mm512_mask_srai_epi32<const IMM8: u32>(
21382    src: __m512i,
21383    k: __mmask16,
21384    a: __m512i,
21385) -> __m512i {
21386    unsafe {
21387        static_assert_uimm_bits!(IMM8, 8);
21388        let r = simd_shr(a.as_i32x16(), i32x16::splat(IMM8.min(31) as i32));
21389        transmute(simd_select_bitmask(k, r, src.as_i32x16()))
21390    }
21391}
21392
21393/// Shift packed 32-bit integers in a right by imm8 while shifting in sign bits, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21394///
21395/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_srai_epi32&expand=5435)
21396#[inline]
21397#[target_feature(enable = "avx512f")]
21398#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21399#[cfg_attr(test, assert_instr(vpsrad, IMM8 = 1))]
21400#[rustc_legacy_const_generics(2)]
21401#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21402pub const fn _mm512_maskz_srai_epi32<const IMM8: u32>(k: __mmask16, a: __m512i) -> __m512i {
21403    unsafe {
21404        static_assert_uimm_bits!(IMM8, 8);
21405        let r = simd_shr(a.as_i32x16(), i32x16::splat(IMM8.min(31) as i32));
21406        transmute(simd_select_bitmask(k, r, i32x16::ZERO))
21407    }
21408}
21409
21410/// Shift packed 32-bit integers in a right by imm8 while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21411///
21412/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_srai_epi32&expand=5431)
21413#[inline]
21414#[target_feature(enable = "avx512f,avx512vl")]
21415#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21416#[cfg_attr(test, assert_instr(vpsrad, IMM8 = 1))]
21417#[rustc_legacy_const_generics(3)]
21418#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21419pub const fn _mm256_mask_srai_epi32<const IMM8: u32>(
21420    src: __m256i,
21421    k: __mmask8,
21422    a: __m256i,
21423) -> __m256i {
21424    unsafe {
21425        let r = simd_shr(a.as_i32x8(), i32x8::splat(IMM8.min(31) as i32));
21426        transmute(simd_select_bitmask(k, r, src.as_i32x8()))
21427    }
21428}
21429
21430/// Shift packed 32-bit integers in a right by imm8 while shifting in sign bits, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21431///
21432/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_srai_epi32&expand=5432)
21433#[inline]
21434#[target_feature(enable = "avx512f,avx512vl")]
21435#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21436#[cfg_attr(test, assert_instr(vpsrad, IMM8 = 1))]
21437#[rustc_legacy_const_generics(2)]
21438#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21439pub const fn _mm256_maskz_srai_epi32<const IMM8: u32>(k: __mmask8, a: __m256i) -> __m256i {
21440    unsafe {
21441        let r = simd_shr(a.as_i32x8(), i32x8::splat(IMM8.min(31) as i32));
21442        transmute(simd_select_bitmask(k, r, i32x8::ZERO))
21443    }
21444}
21445
21446/// Shift packed 32-bit integers in a right by imm8 while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21447///
21448/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_srai_epi32&expand=5428)
21449#[inline]
21450#[target_feature(enable = "avx512f,avx512vl")]
21451#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21452#[cfg_attr(test, assert_instr(vpsrad, IMM8 = 1))]
21453#[rustc_legacy_const_generics(3)]
21454#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21455pub const fn _mm_mask_srai_epi32<const IMM8: u32>(
21456    src: __m128i,
21457    k: __mmask8,
21458    a: __m128i,
21459) -> __m128i {
21460    unsafe {
21461        let r = simd_shr(a.as_i32x4(), i32x4::splat(IMM8.min(31) as i32));
21462        transmute(simd_select_bitmask(k, r, src.as_i32x4()))
21463    }
21464}
21465
21466/// Shift packed 32-bit integers in a right by imm8 while shifting in sign bits, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21467///
21468/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_srai_epi32&expand=5429)
21469#[inline]
21470#[target_feature(enable = "avx512f,avx512vl")]
21471#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21472#[cfg_attr(test, assert_instr(vpsrad, IMM8 = 1))]
21473#[rustc_legacy_const_generics(2)]
21474#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21475pub const fn _mm_maskz_srai_epi32<const IMM8: u32>(k: __mmask8, a: __m128i) -> __m128i {
21476    unsafe {
21477        let r = simd_shr(a.as_i32x4(), i32x4::splat(IMM8.min(31) as i32));
21478        transmute(simd_select_bitmask(k, r, i32x4::ZERO))
21479    }
21480}
21481
21482/// Shift packed 64-bit integers in a right by imm8 while shifting in sign bits, and store the results in dst.
21483///
21484/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_srai_epi64&expand=5445)
21485#[inline]
21486#[target_feature(enable = "avx512f")]
21487#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21488#[cfg_attr(test, assert_instr(vpsraq, IMM8 = 1))]
21489#[rustc_legacy_const_generics(1)]
21490#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21491pub const fn _mm512_srai_epi64<const IMM8: u32>(a: __m512i) -> __m512i {
21492    unsafe {
21493        static_assert_uimm_bits!(IMM8, 8);
21494        transmute(simd_shr(a.as_i64x8(), i64x8::splat(IMM8.min(63) as i64)))
21495    }
21496}
21497
21498/// Shift packed 64-bit integers in a right by imm8 while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21499///
21500/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_srai_epi64&expand=5443)
21501#[inline]
21502#[target_feature(enable = "avx512f")]
21503#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21504#[cfg_attr(test, assert_instr(vpsraq, IMM8 = 1))]
21505#[rustc_legacy_const_generics(3)]
21506#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21507pub const fn _mm512_mask_srai_epi64<const IMM8: u32>(
21508    src: __m512i,
21509    k: __mmask8,
21510    a: __m512i,
21511) -> __m512i {
21512    unsafe {
21513        static_assert_uimm_bits!(IMM8, 8);
21514        let shf = simd_shr(a.as_i64x8(), i64x8::splat(IMM8.min(63) as i64));
21515        transmute(simd_select_bitmask(k, shf, src.as_i64x8()))
21516    }
21517}
21518
21519/// Shift packed 64-bit integers in a right by imm8 while shifting in sign bits, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21520///
21521/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_srai_epi64&expand=5444)
21522#[inline]
21523#[target_feature(enable = "avx512f")]
21524#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21525#[cfg_attr(test, assert_instr(vpsraq, IMM8 = 1))]
21526#[rustc_legacy_const_generics(2)]
21527#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21528pub const fn _mm512_maskz_srai_epi64<const IMM8: u32>(k: __mmask8, a: __m512i) -> __m512i {
21529    unsafe {
21530        static_assert_uimm_bits!(IMM8, 8);
21531        let shf = simd_shr(a.as_i64x8(), i64x8::splat(IMM8.min(63) as i64));
21532        transmute(simd_select_bitmask(k, shf, i64x8::ZERO))
21533    }
21534}
21535
21536/// Shift packed 64-bit integers in a right by imm8 while shifting in sign bits, and store the results in dst.
21537///
21538/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_srai_epi64&expand=5442)
21539#[inline]
21540#[target_feature(enable = "avx512f,avx512vl")]
21541#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21542#[cfg_attr(test, assert_instr(vpsraq, IMM8 = 1))]
21543#[rustc_legacy_const_generics(1)]
21544#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21545pub const fn _mm256_srai_epi64<const IMM8: u32>(a: __m256i) -> __m256i {
21546    unsafe {
21547        static_assert_uimm_bits!(IMM8, 8);
21548        transmute(simd_shr(a.as_i64x4(), i64x4::splat(IMM8.min(63) as i64)))
21549    }
21550}
21551
21552/// Shift packed 64-bit integers in a right by imm8 while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21553///
21554/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_srai_epi64&expand=5440)
21555#[inline]
21556#[target_feature(enable = "avx512f,avx512vl")]
21557#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21558#[cfg_attr(test, assert_instr(vpsraq, IMM8 = 1))]
21559#[rustc_legacy_const_generics(3)]
21560#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21561pub const fn _mm256_mask_srai_epi64<const IMM8: u32>(
21562    src: __m256i,
21563    k: __mmask8,
21564    a: __m256i,
21565) -> __m256i {
21566    unsafe {
21567        static_assert_uimm_bits!(IMM8, 8);
21568        let shf = simd_shr(a.as_i64x4(), i64x4::splat(IMM8.min(63) as i64));
21569        transmute(simd_select_bitmask(k, shf, src.as_i64x4()))
21570    }
21571}
21572
21573/// Shift packed 64-bit integers in a right by imm8 while shifting in sign bits, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21574///
21575/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_srai_epi64&expand=5441)
21576#[inline]
21577#[target_feature(enable = "avx512f,avx512vl")]
21578#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21579#[cfg_attr(test, assert_instr(vpsraq, IMM8 = 1))]
21580#[rustc_legacy_const_generics(2)]
21581#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21582pub const fn _mm256_maskz_srai_epi64<const IMM8: u32>(k: __mmask8, a: __m256i) -> __m256i {
21583    unsafe {
21584        static_assert_uimm_bits!(IMM8, 8);
21585        let shf = simd_shr(a.as_i64x4(), i64x4::splat(IMM8.min(63) as i64));
21586        transmute(simd_select_bitmask(k, shf, i64x4::ZERO))
21587    }
21588}
21589
21590/// Shift packed 64-bit integers in a right by imm8 while shifting in sign bits, and store the results in dst.
21591///
21592/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srai_epi64&expand=5439)
21593#[inline]
21594#[target_feature(enable = "avx512f,avx512vl")]
21595#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21596#[cfg_attr(test, assert_instr(vpsraq, IMM8 = 1))]
21597#[rustc_legacy_const_generics(1)]
21598#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21599pub const fn _mm_srai_epi64<const IMM8: u32>(a: __m128i) -> __m128i {
21600    unsafe {
21601        static_assert_uimm_bits!(IMM8, 8);
21602        transmute(simd_shr(a.as_i64x2(), i64x2::splat(IMM8.min(63) as i64)))
21603    }
21604}
21605
21606/// Shift packed 64-bit integers in a right by imm8 while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21607///
21608/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_srai_epi64&expand=5437)
21609#[inline]
21610#[target_feature(enable = "avx512f,avx512vl")]
21611#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21612#[cfg_attr(test, assert_instr(vpsraq, IMM8 = 1))]
21613#[rustc_legacy_const_generics(3)]
21614#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21615pub const fn _mm_mask_srai_epi64<const IMM8: u32>(
21616    src: __m128i,
21617    k: __mmask8,
21618    a: __m128i,
21619) -> __m128i {
21620    unsafe {
21621        static_assert_uimm_bits!(IMM8, 8);
21622        let shf = simd_shr(a.as_i64x2(), i64x2::splat(IMM8.min(63) as i64));
21623        transmute(simd_select_bitmask(k, shf, src.as_i64x2()))
21624    }
21625}
21626
21627/// Shift packed 64-bit integers in a right by imm8 while shifting in sign bits, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21628///
21629/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_srai_epi64&expand=5438)
21630#[inline]
21631#[target_feature(enable = "avx512f,avx512vl")]
21632#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21633#[cfg_attr(test, assert_instr(vpsraq, IMM8 = 1))]
21634#[rustc_legacy_const_generics(2)]
21635#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21636pub const fn _mm_maskz_srai_epi64<const IMM8: u32>(k: __mmask8, a: __m128i) -> __m128i {
21637    unsafe {
21638        static_assert_uimm_bits!(IMM8, 8);
21639        let shf = simd_shr(a.as_i64x2(), i64x2::splat(IMM8.min(63) as i64));
21640        transmute(simd_select_bitmask(k, shf, i64x2::ZERO))
21641    }
21642}
21643
21644/// Shift packed 32-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst.
21645///
21646/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_srav_epi32&expand=5465)
21647#[inline]
21648#[target_feature(enable = "avx512f")]
21649#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21650#[cfg_attr(test, assert_instr(vpsravd))]
21651pub fn _mm512_srav_epi32(a: __m512i, count: __m512i) -> __m512i {
21652    unsafe { transmute(vpsravd(a.as_i32x16(), count.as_i32x16())) }
21653}
21654
21655/// Shift packed 32-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21656///
21657/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_srav_epi32&expand=5463)
21658#[inline]
21659#[target_feature(enable = "avx512f")]
21660#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21661#[cfg_attr(test, assert_instr(vpsravd))]
21662pub fn _mm512_mask_srav_epi32(src: __m512i, k: __mmask16, a: __m512i, count: __m512i) -> __m512i {
21663    unsafe {
21664        let shf = _mm512_srav_epi32(a, count).as_i32x16();
21665        transmute(simd_select_bitmask(k, shf, src.as_i32x16()))
21666    }
21667}
21668
21669/// Shift packed 32-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21670///
21671/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_srav_epi32&expand=5464)
21672#[inline]
21673#[target_feature(enable = "avx512f")]
21674#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21675#[cfg_attr(test, assert_instr(vpsravd))]
21676pub fn _mm512_maskz_srav_epi32(k: __mmask16, a: __m512i, count: __m512i) -> __m512i {
21677    unsafe {
21678        let shf = _mm512_srav_epi32(a, count).as_i32x16();
21679        transmute(simd_select_bitmask(k, shf, i32x16::ZERO))
21680    }
21681}
21682
21683/// Shift packed 32-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21684///
21685/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_srav_epi32&expand=5460)
21686#[inline]
21687#[target_feature(enable = "avx512f,avx512vl")]
21688#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21689#[cfg_attr(test, assert_instr(vpsravd))]
21690pub fn _mm256_mask_srav_epi32(src: __m256i, k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
21691    unsafe {
21692        let shf = _mm256_srav_epi32(a, count).as_i32x8();
21693        transmute(simd_select_bitmask(k, shf, src.as_i32x8()))
21694    }
21695}
21696
21697/// Shift packed 32-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21698///
21699/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_srav_epi32&expand=5461)
21700#[inline]
21701#[target_feature(enable = "avx512f,avx512vl")]
21702#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21703#[cfg_attr(test, assert_instr(vpsravd))]
21704pub fn _mm256_maskz_srav_epi32(k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
21705    unsafe {
21706        let shf = _mm256_srav_epi32(a, count).as_i32x8();
21707        transmute(simd_select_bitmask(k, shf, i32x8::ZERO))
21708    }
21709}
21710
21711/// Shift packed 32-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21712///
21713/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_srav_epi32&expand=5457)
21714#[inline]
21715#[target_feature(enable = "avx512f,avx512vl")]
21716#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21717#[cfg_attr(test, assert_instr(vpsravd))]
21718pub fn _mm_mask_srav_epi32(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
21719    unsafe {
21720        let shf = _mm_srav_epi32(a, count).as_i32x4();
21721        transmute(simd_select_bitmask(k, shf, src.as_i32x4()))
21722    }
21723}
21724
21725/// Shift packed 32-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21726///
21727/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_srav_epi32&expand=5458)
21728#[inline]
21729#[target_feature(enable = "avx512f,avx512vl")]
21730#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21731#[cfg_attr(test, assert_instr(vpsravd))]
21732pub fn _mm_maskz_srav_epi32(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
21733    unsafe {
21734        let shf = _mm_srav_epi32(a, count).as_i32x4();
21735        transmute(simd_select_bitmask(k, shf, i32x4::ZERO))
21736    }
21737}
21738
21739/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst.
21740///
21741/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_srav_epi64&expand=5474)
21742#[inline]
21743#[target_feature(enable = "avx512f")]
21744#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21745#[cfg_attr(test, assert_instr(vpsravq))]
21746pub fn _mm512_srav_epi64(a: __m512i, count: __m512i) -> __m512i {
21747    unsafe { transmute(vpsravq(a.as_i64x8(), count.as_i64x8())) }
21748}
21749
21750/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21751///
21752/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_srav_epi64&expand=5472)
21753#[inline]
21754#[target_feature(enable = "avx512f")]
21755#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21756#[cfg_attr(test, assert_instr(vpsravq))]
21757pub fn _mm512_mask_srav_epi64(src: __m512i, k: __mmask8, a: __m512i, count: __m512i) -> __m512i {
21758    unsafe {
21759        let shf = _mm512_srav_epi64(a, count).as_i64x8();
21760        transmute(simd_select_bitmask(k, shf, src.as_i64x8()))
21761    }
21762}
21763
21764/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21765///
21766/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_srav_epi64&expand=5473)
21767#[inline]
21768#[target_feature(enable = "avx512f")]
21769#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21770#[cfg_attr(test, assert_instr(vpsravq))]
21771pub fn _mm512_maskz_srav_epi64(k: __mmask8, a: __m512i, count: __m512i) -> __m512i {
21772    unsafe {
21773        let shf = _mm512_srav_epi64(a, count).as_i64x8();
21774        transmute(simd_select_bitmask(k, shf, i64x8::ZERO))
21775    }
21776}
21777
21778/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst.
21779///
21780/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_srav_epi64&expand=5471)
21781#[inline]
21782#[target_feature(enable = "avx512f,avx512vl")]
21783#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21784#[cfg_attr(test, assert_instr(vpsravq))]
21785pub fn _mm256_srav_epi64(a: __m256i, count: __m256i) -> __m256i {
21786    unsafe { transmute(vpsravq256(a.as_i64x4(), count.as_i64x4())) }
21787}
21788
21789/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21790///
21791/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_srav_epi64&expand=5469)
21792#[inline]
21793#[target_feature(enable = "avx512f,avx512vl")]
21794#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21795#[cfg_attr(test, assert_instr(vpsravq))]
21796pub fn _mm256_mask_srav_epi64(src: __m256i, k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
21797    unsafe {
21798        let shf = _mm256_srav_epi64(a, count).as_i64x4();
21799        transmute(simd_select_bitmask(k, shf, src.as_i64x4()))
21800    }
21801}
21802
21803/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21804///
21805/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_srav_epi64&expand=5470)
21806#[inline]
21807#[target_feature(enable = "avx512f,avx512vl")]
21808#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21809#[cfg_attr(test, assert_instr(vpsravq))]
21810pub fn _mm256_maskz_srav_epi64(k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
21811    unsafe {
21812        let shf = _mm256_srav_epi64(a, count).as_i64x4();
21813        transmute(simd_select_bitmask(k, shf, i64x4::ZERO))
21814    }
21815}
21816
21817/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst.
21818///
21819/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srav_epi64&expand=5468)
21820#[inline]
21821#[target_feature(enable = "avx512f,avx512vl")]
21822#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21823#[cfg_attr(test, assert_instr(vpsravq))]
21824pub fn _mm_srav_epi64(a: __m128i, count: __m128i) -> __m128i {
21825    unsafe { transmute(vpsravq128(a.as_i64x2(), count.as_i64x2())) }
21826}
21827
21828/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21829///
21830/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_srav_epi64&expand=5466)
21831#[inline]
21832#[target_feature(enable = "avx512f,avx512vl")]
21833#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21834#[cfg_attr(test, assert_instr(vpsravq))]
21835pub fn _mm_mask_srav_epi64(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
21836    unsafe {
21837        let shf = _mm_srav_epi64(a, count).as_i64x2();
21838        transmute(simd_select_bitmask(k, shf, src.as_i64x2()))
21839    }
21840}
21841
21842/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21843///
21844/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_srav_epi64&expand=5467)
21845#[inline]
21846#[target_feature(enable = "avx512f,avx512vl")]
21847#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21848#[cfg_attr(test, assert_instr(vpsravq))]
21849pub fn _mm_maskz_srav_epi64(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
21850    unsafe {
21851        let shf = _mm_srav_epi64(a, count).as_i64x2();
21852        transmute(simd_select_bitmask(k, shf, i64x2::ZERO))
21853    }
21854}
21855
21856/// Rotate the bits in each packed 32-bit integer in a to the left by the number of bits specified in the corresponding element of b, and store the results in dst.
21857///
21858/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_rolv_epi32&expand=4703)
21859#[inline]
21860#[target_feature(enable = "avx512f")]
21861#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21862#[cfg_attr(test, assert_instr(vprolvd))]
21863#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21864pub const fn _mm512_rolv_epi32(a: __m512i, b: __m512i) -> __m512i {
21865    unsafe {
21866        transmute(simd_funnel_shl(
21867            a.as_u32x16(),
21868            a.as_u32x16(),
21869            simd_and(b.as_u32x16(), u32x16::splat(31)),
21870        ))
21871    }
21872}
21873
21874/// Rotate the bits in each packed 32-bit integer in a to the left by the number of bits specified in the corresponding element of b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21875///
21876/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_rolv_epi32&expand=4701)
21877#[inline]
21878#[target_feature(enable = "avx512f")]
21879#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21880#[cfg_attr(test, assert_instr(vprolvd))]
21881#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21882pub const fn _mm512_mask_rolv_epi32(src: __m512i, k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
21883    unsafe {
21884        let rol = _mm512_rolv_epi32(a, b).as_i32x16();
21885        transmute(simd_select_bitmask(k, rol, src.as_i32x16()))
21886    }
21887}
21888
21889/// Rotate the bits in each packed 32-bit integer in a to the left by the number of bits specified in the corresponding element of b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21890///
21891/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_rolv_epi32&expand=4702)
21892#[inline]
21893#[target_feature(enable = "avx512f")]
21894#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21895#[cfg_attr(test, assert_instr(vprolvd))]
21896#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21897pub const fn _mm512_maskz_rolv_epi32(k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
21898    unsafe {
21899        let rol = _mm512_rolv_epi32(a, b).as_i32x16();
21900        transmute(simd_select_bitmask(k, rol, i32x16::ZERO))
21901    }
21902}
21903
21904/// Rotate the bits in each packed 32-bit integer in a to the left by the number of bits specified in the corresponding element of b, and store the results in dst.
21905///
21906/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_rolv_epi32&expand=4700)
21907#[inline]
21908#[target_feature(enable = "avx512f,avx512vl")]
21909#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21910#[cfg_attr(test, assert_instr(vprolvd))]
21911#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21912pub const fn _mm256_rolv_epi32(a: __m256i, b: __m256i) -> __m256i {
21913    unsafe {
21914        transmute(simd_funnel_shl(
21915            a.as_u32x8(),
21916            a.as_u32x8(),
21917            simd_and(b.as_u32x8(), u32x8::splat(31)),
21918        ))
21919    }
21920}
21921
21922/// Rotate the bits in each packed 32-bit integer in a to the left by the number of bits specified in the corresponding element of b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21923///
21924/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_rolv_epi32&expand=4698)
21925#[inline]
21926#[target_feature(enable = "avx512f,avx512vl")]
21927#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21928#[cfg_attr(test, assert_instr(vprolvd))]
21929#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21930pub const fn _mm256_mask_rolv_epi32(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
21931    unsafe {
21932        let rol = _mm256_rolv_epi32(a, b).as_i32x8();
21933        transmute(simd_select_bitmask(k, rol, src.as_i32x8()))
21934    }
21935}
21936
21937/// Rotate the bits in each packed 32-bit integer in a to the left by the number of bits specified in the corresponding element of b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21938///
21939/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_rolv_epi32&expand=4699)
21940#[inline]
21941#[target_feature(enable = "avx512f,avx512vl")]
21942#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21943#[cfg_attr(test, assert_instr(vprolvd))]
21944#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21945pub const fn _mm256_maskz_rolv_epi32(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
21946    unsafe {
21947        let rol = _mm256_rolv_epi32(a, b).as_i32x8();
21948        transmute(simd_select_bitmask(k, rol, i32x8::ZERO))
21949    }
21950}
21951
21952/// Rotate the bits in each packed 32-bit integer in a to the left by the number of bits specified in the corresponding element of b, and store the results in dst.
21953///
21954/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rolv_epi32&expand=4697)
21955#[inline]
21956#[target_feature(enable = "avx512f,avx512vl")]
21957#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21958#[cfg_attr(test, assert_instr(vprolvd))]
21959#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21960pub const fn _mm_rolv_epi32(a: __m128i, b: __m128i) -> __m128i {
21961    unsafe {
21962        transmute(simd_funnel_shl(
21963            a.as_u32x4(),
21964            a.as_u32x4(),
21965            simd_and(b.as_u32x4(), u32x4::splat(31)),
21966        ))
21967    }
21968}
21969
21970/// Rotate the bits in each packed 32-bit integer in a to the left by the number of bits specified in the corresponding element of b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
21971///
21972/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_rolv_epi32&expand=4695)
21973#[inline]
21974#[target_feature(enable = "avx512f,avx512vl")]
21975#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21976#[cfg_attr(test, assert_instr(vprolvd))]
21977#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21978pub const fn _mm_mask_rolv_epi32(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
21979    unsafe {
21980        let rol = _mm_rolv_epi32(a, b).as_i32x4();
21981        transmute(simd_select_bitmask(k, rol, src.as_i32x4()))
21982    }
21983}
21984
21985/// Rotate the bits in each packed 32-bit integer in a to the left by the number of bits specified in the corresponding element of b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
21986///
21987/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_rolv_epi32&expand=4696)
21988#[inline]
21989#[target_feature(enable = "avx512f,avx512vl")]
21990#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
21991#[cfg_attr(test, assert_instr(vprolvd))]
21992#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
21993pub const fn _mm_maskz_rolv_epi32(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
21994    unsafe {
21995        let rol = _mm_rolv_epi32(a, b).as_i32x4();
21996        transmute(simd_select_bitmask(k, rol, i32x4::ZERO))
21997    }
21998}
21999
22000/// Rotate the bits in each packed 32-bit integer in a to the right by the number of bits specified in the corresponding element of b, and store the results in dst.
22001///
22002/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_rorv_epi32&expand=4739)
22003#[inline]
22004#[target_feature(enable = "avx512f")]
22005#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22006#[cfg_attr(test, assert_instr(vprorvd))]
22007#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22008pub const fn _mm512_rorv_epi32(a: __m512i, b: __m512i) -> __m512i {
22009    unsafe {
22010        transmute(simd_funnel_shr(
22011            a.as_u32x16(),
22012            a.as_u32x16(),
22013            simd_and(b.as_u32x16(), u32x16::splat(31)),
22014        ))
22015    }
22016}
22017
22018/// Rotate the bits in each packed 32-bit integer in a to the right by the number of bits specified in the corresponding element of b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22019///
22020/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_rorv_epi32&expand=4737)
22021#[inline]
22022#[target_feature(enable = "avx512f")]
22023#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22024#[cfg_attr(test, assert_instr(vprorvd))]
22025#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22026pub const fn _mm512_mask_rorv_epi32(src: __m512i, k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
22027    unsafe {
22028        let ror = _mm512_rorv_epi32(a, b).as_i32x16();
22029        transmute(simd_select_bitmask(k, ror, src.as_i32x16()))
22030    }
22031}
22032
22033/// Rotate the bits in each packed 32-bit integer in a to the right by the number of bits specified in the corresponding element of b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22034///
22035/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_rorv_epi32&expand=4738)
22036#[inline]
22037#[target_feature(enable = "avx512f")]
22038#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22039#[cfg_attr(test, assert_instr(vprorvd))]
22040#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22041pub const fn _mm512_maskz_rorv_epi32(k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
22042    unsafe {
22043        let ror = _mm512_rorv_epi32(a, b).as_i32x16();
22044        transmute(simd_select_bitmask(k, ror, i32x16::ZERO))
22045    }
22046}
22047
22048/// Rotate the bits in each packed 32-bit integer in a to the right by the number of bits specified in the corresponding element of b, and store the results in dst.
22049///
22050/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_rorv_epi32&expand=4736)
22051#[inline]
22052#[target_feature(enable = "avx512f,avx512vl")]
22053#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22054#[cfg_attr(test, assert_instr(vprorvd))]
22055#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22056pub const fn _mm256_rorv_epi32(a: __m256i, b: __m256i) -> __m256i {
22057    unsafe {
22058        transmute(simd_funnel_shr(
22059            a.as_u32x8(),
22060            a.as_u32x8(),
22061            simd_and(b.as_u32x8(), u32x8::splat(31)),
22062        ))
22063    }
22064}
22065
22066/// Rotate the bits in each packed 32-bit integer in a to the right by the number of bits specified in the corresponding element of b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22067///
22068/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_rorv_epi32&expand=4734)
22069#[inline]
22070#[target_feature(enable = "avx512f,avx512vl")]
22071#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22072#[cfg_attr(test, assert_instr(vprorvd))]
22073#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22074pub const fn _mm256_mask_rorv_epi32(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
22075    unsafe {
22076        let ror = _mm256_rorv_epi32(a, b).as_i32x8();
22077        transmute(simd_select_bitmask(k, ror, src.as_i32x8()))
22078    }
22079}
22080
22081/// Rotate the bits in each packed 32-bit integer in a to the right by the number of bits specified in the corresponding element of b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22082///
22083/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_rorv_epi32&expand=4735)
22084#[inline]
22085#[target_feature(enable = "avx512f,avx512vl")]
22086#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22087#[cfg_attr(test, assert_instr(vprorvd))]
22088#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22089pub const fn _mm256_maskz_rorv_epi32(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
22090    unsafe {
22091        let ror = _mm256_rorv_epi32(a, b).as_i32x8();
22092        transmute(simd_select_bitmask(k, ror, i32x8::ZERO))
22093    }
22094}
22095
22096/// Rotate the bits in each packed 32-bit integer in a to the right by the number of bits specified in the corresponding element of b, and store the results in dst.
22097///
22098/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rorv_epi32&expand=4733)
22099#[inline]
22100#[target_feature(enable = "avx512f,avx512vl")]
22101#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22102#[cfg_attr(test, assert_instr(vprorvd))]
22103#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22104pub const fn _mm_rorv_epi32(a: __m128i, b: __m128i) -> __m128i {
22105    unsafe {
22106        transmute(simd_funnel_shr(
22107            a.as_u32x4(),
22108            a.as_u32x4(),
22109            simd_and(b.as_u32x4(), u32x4::splat(31)),
22110        ))
22111    }
22112}
22113
22114/// Rotate the bits in each packed 32-bit integer in a to the right by the number of bits specified in the corresponding element of b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22115///
22116/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_rorv_epi32&expand=4731)
22117#[inline]
22118#[target_feature(enable = "avx512f,avx512vl")]
22119#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22120#[cfg_attr(test, assert_instr(vprorvd))]
22121#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22122pub const fn _mm_mask_rorv_epi32(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
22123    unsafe {
22124        let ror = _mm_rorv_epi32(a, b).as_i32x4();
22125        transmute(simd_select_bitmask(k, ror, src.as_i32x4()))
22126    }
22127}
22128
22129/// Rotate the bits in each packed 32-bit integer in a to the right by the number of bits specified in the corresponding element of b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22130///
22131/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_rorv_epi32&expand=4732)
22132#[inline]
22133#[target_feature(enable = "avx512f,avx512vl")]
22134#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22135#[cfg_attr(test, assert_instr(vprorvd))]
22136#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22137pub const fn _mm_maskz_rorv_epi32(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
22138    unsafe {
22139        let ror = _mm_rorv_epi32(a, b).as_i32x4();
22140        transmute(simd_select_bitmask(k, ror, i32x4::ZERO))
22141    }
22142}
22143
22144/// Rotate the bits in each packed 64-bit integer in a to the left by the number of bits specified in the corresponding element of b, and store the results in dst.
22145///
22146/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_rolv_epi64&expand=4712)
22147#[inline]
22148#[target_feature(enable = "avx512f")]
22149#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22150#[cfg_attr(test, assert_instr(vprolvq))]
22151#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22152pub const fn _mm512_rolv_epi64(a: __m512i, b: __m512i) -> __m512i {
22153    unsafe {
22154        transmute(simd_funnel_shl(
22155            a.as_u64x8(),
22156            a.as_u64x8(),
22157            simd_and(b.as_u64x8(), u64x8::splat(63)),
22158        ))
22159    }
22160}
22161
22162/// Rotate the bits in each packed 64-bit integer in a to the left by the number of bits specified in the corresponding element of b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22163///
22164/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_rolv_epi64&expand=4710)
22165#[inline]
22166#[target_feature(enable = "avx512f")]
22167#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22168#[cfg_attr(test, assert_instr(vprolvq))]
22169#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22170pub const fn _mm512_mask_rolv_epi64(src: __m512i, k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
22171    unsafe {
22172        let rol = _mm512_rolv_epi64(a, b).as_i64x8();
22173        transmute(simd_select_bitmask(k, rol, src.as_i64x8()))
22174    }
22175}
22176
22177/// Rotate the bits in each packed 64-bit integer in a to the left by the number of bits specified in the corresponding element of b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22178///
22179/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_rolv_epi64&expand=4711)
22180#[inline]
22181#[target_feature(enable = "avx512f")]
22182#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22183#[cfg_attr(test, assert_instr(vprolvq))]
22184#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22185pub const fn _mm512_maskz_rolv_epi64(k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
22186    unsafe {
22187        let rol = _mm512_rolv_epi64(a, b).as_i64x8();
22188        transmute(simd_select_bitmask(k, rol, i64x8::ZERO))
22189    }
22190}
22191
22192/// Rotate the bits in each packed 64-bit integer in a to the left by the number of bits specified in the corresponding element of b, and store the results in dst.
22193///
22194/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_rolv_epi64&expand=4709)
22195#[inline]
22196#[target_feature(enable = "avx512f,avx512vl")]
22197#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22198#[cfg_attr(test, assert_instr(vprolvq))]
22199#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22200pub const fn _mm256_rolv_epi64(a: __m256i, b: __m256i) -> __m256i {
22201    unsafe {
22202        transmute(simd_funnel_shl(
22203            a.as_u64x4(),
22204            a.as_u64x4(),
22205            simd_and(b.as_u64x4(), u64x4::splat(63)),
22206        ))
22207    }
22208}
22209
22210/// Rotate the bits in each packed 64-bit integer in a to the left by the number of bits specified in the corresponding element of b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22211///
22212/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_rolv_epi64&expand=4707)
22213#[inline]
22214#[target_feature(enable = "avx512f,avx512vl")]
22215#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22216#[cfg_attr(test, assert_instr(vprolvq))]
22217#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22218pub const fn _mm256_mask_rolv_epi64(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
22219    unsafe {
22220        let rol = _mm256_rolv_epi64(a, b).as_i64x4();
22221        transmute(simd_select_bitmask(k, rol, src.as_i64x4()))
22222    }
22223}
22224
22225/// Rotate the bits in each packed 64-bit integer in a to the left by the number of bits specified in the corresponding element of b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22226///
22227/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_rolv_epi64&expand=4708)
22228#[inline]
22229#[target_feature(enable = "avx512f,avx512vl")]
22230#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22231#[cfg_attr(test, assert_instr(vprolvq))]
22232#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22233pub const fn _mm256_maskz_rolv_epi64(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
22234    unsafe {
22235        let rol = _mm256_rolv_epi64(a, b).as_i64x4();
22236        transmute(simd_select_bitmask(k, rol, i64x4::ZERO))
22237    }
22238}
22239
22240/// Rotate the bits in each packed 64-bit integer in a to the left by the number of bits specified in the corresponding element of b, and store the results in dst.
22241///
22242/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rolv_epi64&expand=4706)
22243#[inline]
22244#[target_feature(enable = "avx512f,avx512vl")]
22245#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22246#[cfg_attr(test, assert_instr(vprolvq))]
22247#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22248pub const fn _mm_rolv_epi64(a: __m128i, b: __m128i) -> __m128i {
22249    unsafe {
22250        transmute(simd_funnel_shl(
22251            a.as_u64x2(),
22252            a.as_u64x2(),
22253            simd_and(b.as_u64x2(), u64x2::splat(63)),
22254        ))
22255    }
22256}
22257
22258/// Rotate the bits in each packed 64-bit integer in a to the left by the number of bits specified in the corresponding element of b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22259///
22260/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_rolv_epi64&expand=4704)
22261#[inline]
22262#[target_feature(enable = "avx512f,avx512vl")]
22263#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22264#[cfg_attr(test, assert_instr(vprolvq))]
22265#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22266pub const fn _mm_mask_rolv_epi64(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
22267    unsafe {
22268        let rol = _mm_rolv_epi64(a, b).as_i64x2();
22269        transmute(simd_select_bitmask(k, rol, src.as_i64x2()))
22270    }
22271}
22272
22273/// Rotate the bits in each packed 64-bit integer in a to the left by the number of bits specified in the corresponding element of b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22274///
22275/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_rolv_epi64&expand=4705)
22276#[inline]
22277#[target_feature(enable = "avx512f,avx512vl")]
22278#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22279#[cfg_attr(test, assert_instr(vprolvq))]
22280#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22281pub const fn _mm_maskz_rolv_epi64(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
22282    unsafe {
22283        let rol = _mm_rolv_epi64(a, b).as_i64x2();
22284        transmute(simd_select_bitmask(k, rol, i64x2::ZERO))
22285    }
22286}
22287
22288/// Rotate the bits in each packed 64-bit integer in a to the right by the number of bits specified in the corresponding element of b, and store the results in dst.
22289///
22290/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_rorv_epi64&expand=4748)
22291#[inline]
22292#[target_feature(enable = "avx512f")]
22293#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22294#[cfg_attr(test, assert_instr(vprorvq))]
22295#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22296pub const fn _mm512_rorv_epi64(a: __m512i, b: __m512i) -> __m512i {
22297    unsafe {
22298        transmute(simd_funnel_shr(
22299            a.as_u64x8(),
22300            a.as_u64x8(),
22301            simd_and(b.as_u64x8(), u64x8::splat(63)),
22302        ))
22303    }
22304}
22305
22306/// Rotate the bits in each packed 64-bit integer in a to the right by the number of bits specified in the corresponding element of b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22307///
22308/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_rorv_epi64&expand=4746)
22309#[inline]
22310#[target_feature(enable = "avx512f")]
22311#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22312#[cfg_attr(test, assert_instr(vprorvq))]
22313#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22314pub const fn _mm512_mask_rorv_epi64(src: __m512i, k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
22315    unsafe {
22316        let ror = _mm512_rorv_epi64(a, b).as_i64x8();
22317        transmute(simd_select_bitmask(k, ror, src.as_i64x8()))
22318    }
22319}
22320
22321/// Rotate the bits in each packed 64-bit integer in a to the right by the number of bits specified in the corresponding element of b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22322///
22323/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_rorv_epi64&expand=4747)
22324#[inline]
22325#[target_feature(enable = "avx512f")]
22326#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22327#[cfg_attr(test, assert_instr(vprorvq))]
22328#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22329pub const fn _mm512_maskz_rorv_epi64(k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
22330    unsafe {
22331        let ror = _mm512_rorv_epi64(a, b).as_i64x8();
22332        transmute(simd_select_bitmask(k, ror, i64x8::ZERO))
22333    }
22334}
22335
22336/// Rotate the bits in each packed 64-bit integer in a to the right by the number of bits specified in the corresponding element of b, and store the results in dst.
22337///
22338/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_rorv_epi64&expand=4745)
22339#[inline]
22340#[target_feature(enable = "avx512f,avx512vl")]
22341#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22342#[cfg_attr(test, assert_instr(vprorvq))]
22343#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22344pub const fn _mm256_rorv_epi64(a: __m256i, b: __m256i) -> __m256i {
22345    unsafe {
22346        transmute(simd_funnel_shr(
22347            a.as_u64x4(),
22348            a.as_u64x4(),
22349            simd_and(b.as_u64x4(), u64x4::splat(63)),
22350        ))
22351    }
22352}
22353
22354/// Rotate the bits in each packed 64-bit integer in a to the right by the number of bits specified in the corresponding element of b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22355///
22356/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_rorv_epi64&expand=4743)
22357#[inline]
22358#[target_feature(enable = "avx512f,avx512vl")]
22359#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22360#[cfg_attr(test, assert_instr(vprorvq))]
22361#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22362pub const fn _mm256_mask_rorv_epi64(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
22363    unsafe {
22364        let ror = _mm256_rorv_epi64(a, b).as_i64x4();
22365        transmute(simd_select_bitmask(k, ror, src.as_i64x4()))
22366    }
22367}
22368
22369/// Rotate the bits in each packed 64-bit integer in a to the right by the number of bits specified in the corresponding element of b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22370///
22371/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_rorv_epi64&expand=4744)
22372#[inline]
22373#[target_feature(enable = "avx512f,avx512vl")]
22374#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22375#[cfg_attr(test, assert_instr(vprorvq))]
22376#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22377pub const fn _mm256_maskz_rorv_epi64(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
22378    unsafe {
22379        let ror = _mm256_rorv_epi64(a, b).as_i64x4();
22380        transmute(simd_select_bitmask(k, ror, i64x4::ZERO))
22381    }
22382}
22383
22384/// Rotate the bits in each packed 64-bit integer in a to the right by the number of bits specified in the corresponding element of b, and store the results in dst.
22385///
22386/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rorv_epi64&expand=4742)
22387#[inline]
22388#[target_feature(enable = "avx512f,avx512vl")]
22389#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22390#[cfg_attr(test, assert_instr(vprorvq))]
22391#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22392pub const fn _mm_rorv_epi64(a: __m128i, b: __m128i) -> __m128i {
22393    unsafe {
22394        transmute(simd_funnel_shr(
22395            a.as_u64x2(),
22396            a.as_u64x2(),
22397            simd_and(b.as_u64x2(), u64x2::splat(63)),
22398        ))
22399    }
22400}
22401
22402/// Rotate the bits in each packed 64-bit integer in a to the right by the number of bits specified in the corresponding element of b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22403///
22404/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_rorv_epi64&expand=4740)
22405#[inline]
22406#[target_feature(enable = "avx512f,avx512vl")]
22407#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22408#[cfg_attr(test, assert_instr(vprorvq))]
22409#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22410pub const fn _mm_mask_rorv_epi64(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
22411    unsafe {
22412        let ror = _mm_rorv_epi64(a, b).as_i64x2();
22413        transmute(simd_select_bitmask(k, ror, src.as_i64x2()))
22414    }
22415}
22416
22417/// Rotate the bits in each packed 64-bit integer in a to the right by the number of bits specified in the corresponding element of b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22418///
22419/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_rorv_epi64&expand=4741)
22420#[inline]
22421#[target_feature(enable = "avx512f,avx512vl")]
22422#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22423#[cfg_attr(test, assert_instr(vprorvq))]
22424#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22425pub const fn _mm_maskz_rorv_epi64(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
22426    unsafe {
22427        let ror = _mm_rorv_epi64(a, b).as_i64x2();
22428        transmute(simd_select_bitmask(k, ror, i64x2::ZERO))
22429    }
22430}
22431
22432/// Shift packed 32-bit integers in a left by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst.
22433///
22434/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_sllv_epi32&expand=5342)
22435#[inline]
22436#[target_feature(enable = "avx512f")]
22437#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22438#[cfg_attr(test, assert_instr(vpsllvd))]
22439pub fn _mm512_sllv_epi32(a: __m512i, count: __m512i) -> __m512i {
22440    unsafe { transmute(vpsllvd(a.as_i32x16(), count.as_i32x16())) }
22441}
22442
22443/// Shift packed 32-bit integers in a left by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22444///
22445/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_sllv_epi32&expand=5340)
22446#[inline]
22447#[target_feature(enable = "avx512f")]
22448#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22449#[cfg_attr(test, assert_instr(vpsllvd))]
22450pub fn _mm512_mask_sllv_epi32(src: __m512i, k: __mmask16, a: __m512i, count: __m512i) -> __m512i {
22451    unsafe {
22452        let shf = _mm512_sllv_epi32(a, count).as_i32x16();
22453        transmute(simd_select_bitmask(k, shf, src.as_i32x16()))
22454    }
22455}
22456
22457/// Shift packed 32-bit integers in a left by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22458///
22459/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_sllv_epi32&expand=5341)
22460#[inline]
22461#[target_feature(enable = "avx512f")]
22462#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22463#[cfg_attr(test, assert_instr(vpsllvd))]
22464pub fn _mm512_maskz_sllv_epi32(k: __mmask16, a: __m512i, count: __m512i) -> __m512i {
22465    unsafe {
22466        let shf = _mm512_sllv_epi32(a, count).as_i32x16();
22467        transmute(simd_select_bitmask(k, shf, i32x16::ZERO))
22468    }
22469}
22470
22471/// Shift packed 32-bit integers in a left by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22472///
22473/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_sllv_epi32&expand=5337)
22474#[inline]
22475#[target_feature(enable = "avx512f,avx512vl")]
22476#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22477#[cfg_attr(test, assert_instr(vpsllvd))]
22478pub fn _mm256_mask_sllv_epi32(src: __m256i, k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
22479    unsafe {
22480        let shf = _mm256_sllv_epi32(a, count).as_i32x8();
22481        transmute(simd_select_bitmask(k, shf, src.as_i32x8()))
22482    }
22483}
22484
22485/// Shift packed 32-bit integers in a left by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22486///
22487/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_sllv_epi32&expand=5338)
22488#[inline]
22489#[target_feature(enable = "avx512f,avx512vl")]
22490#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22491#[cfg_attr(test, assert_instr(vpsllvd))]
22492pub fn _mm256_maskz_sllv_epi32(k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
22493    unsafe {
22494        let shf = _mm256_sllv_epi32(a, count).as_i32x8();
22495        transmute(simd_select_bitmask(k, shf, i32x8::ZERO))
22496    }
22497}
22498
22499/// Shift packed 32-bit integers in a left by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22500///
22501/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_sllv_epi32&expand=5334)
22502#[inline]
22503#[target_feature(enable = "avx512f,avx512vl")]
22504#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22505#[cfg_attr(test, assert_instr(vpsllvd))]
22506pub fn _mm_mask_sllv_epi32(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
22507    unsafe {
22508        let shf = _mm_sllv_epi32(a, count).as_i32x4();
22509        transmute(simd_select_bitmask(k, shf, src.as_i32x4()))
22510    }
22511}
22512
22513/// Shift packed 32-bit integers in a left by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22514///
22515/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_sllv_epi32&expand=5335)
22516#[inline]
22517#[target_feature(enable = "avx512f,avx512vl")]
22518#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22519#[cfg_attr(test, assert_instr(vpsllvd))]
22520pub fn _mm_maskz_sllv_epi32(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
22521    unsafe {
22522        let shf = _mm_sllv_epi32(a, count).as_i32x4();
22523        transmute(simd_select_bitmask(k, shf, i32x4::ZERO))
22524    }
22525}
22526
22527/// Shift packed 32-bit integers in a right by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst.
22528///
22529/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_srlv_epi32&expand=5554)
22530#[inline]
22531#[target_feature(enable = "avx512f")]
22532#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22533#[cfg_attr(test, assert_instr(vpsrlvd))]
22534pub fn _mm512_srlv_epi32(a: __m512i, count: __m512i) -> __m512i {
22535    unsafe { transmute(vpsrlvd(a.as_i32x16(), count.as_i32x16())) }
22536}
22537
22538/// Shift packed 32-bit integers in a right by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22539///
22540/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_srlv_epi32&expand=5552)
22541#[inline]
22542#[target_feature(enable = "avx512f")]
22543#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22544#[cfg_attr(test, assert_instr(vpsrlvd))]
22545pub fn _mm512_mask_srlv_epi32(src: __m512i, k: __mmask16, a: __m512i, count: __m512i) -> __m512i {
22546    unsafe {
22547        let shf = _mm512_srlv_epi32(a, count).as_i32x16();
22548        transmute(simd_select_bitmask(k, shf, src.as_i32x16()))
22549    }
22550}
22551
22552/// Shift packed 32-bit integers in a right by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22553///
22554/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_srlv_epi32&expand=5553)
22555#[inline]
22556#[target_feature(enable = "avx512f")]
22557#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22558#[cfg_attr(test, assert_instr(vpsrlvd))]
22559pub fn _mm512_maskz_srlv_epi32(k: __mmask16, a: __m512i, count: __m512i) -> __m512i {
22560    unsafe {
22561        let shf = _mm512_srlv_epi32(a, count).as_i32x16();
22562        transmute(simd_select_bitmask(k, shf, i32x16::ZERO))
22563    }
22564}
22565
22566/// Shift packed 32-bit integers in a right by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22567///
22568/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_srlv_epi32&expand=5549)
22569#[inline]
22570#[target_feature(enable = "avx512f,avx512vl")]
22571#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22572#[cfg_attr(test, assert_instr(vpsrlvd))]
22573pub fn _mm256_mask_srlv_epi32(src: __m256i, k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
22574    unsafe {
22575        let shf = _mm256_srlv_epi32(a, count).as_i32x8();
22576        transmute(simd_select_bitmask(k, shf, src.as_i32x8()))
22577    }
22578}
22579
22580/// Shift packed 32-bit integers in a right by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22581///
22582/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_srlv_epi32&expand=5550)
22583#[inline]
22584#[target_feature(enable = "avx512f,avx512vl")]
22585#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22586#[cfg_attr(test, assert_instr(vpsrlvd))]
22587pub fn _mm256_maskz_srlv_epi32(k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
22588    unsafe {
22589        let shf = _mm256_srlv_epi32(a, count).as_i32x8();
22590        transmute(simd_select_bitmask(k, shf, i32x8::ZERO))
22591    }
22592}
22593
22594/// Shift packed 32-bit integers in a right by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22595///
22596/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_srlv_epi32&expand=5546)
22597#[inline]
22598#[target_feature(enable = "avx512f,avx512vl")]
22599#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22600#[cfg_attr(test, assert_instr(vpsrlvd))]
22601pub fn _mm_mask_srlv_epi32(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
22602    unsafe {
22603        let shf = _mm_srlv_epi32(a, count).as_i32x4();
22604        transmute(simd_select_bitmask(k, shf, src.as_i32x4()))
22605    }
22606}
22607
22608/// Shift packed 32-bit integers in a right by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22609///
22610/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_srlv_epi32&expand=5547)
22611#[inline]
22612#[target_feature(enable = "avx512f,avx512vl")]
22613#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22614#[cfg_attr(test, assert_instr(vpsrlvd))]
22615pub fn _mm_maskz_srlv_epi32(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
22616    unsafe {
22617        let shf = _mm_srlv_epi32(a, count).as_i32x4();
22618        transmute(simd_select_bitmask(k, shf, i32x4::ZERO))
22619    }
22620}
22621
22622/// Shift packed 64-bit integers in a left by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst.
22623///
22624/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_sllv_epi64&expand=5351)
22625#[inline]
22626#[target_feature(enable = "avx512f")]
22627#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22628#[cfg_attr(test, assert_instr(vpsllvq))]
22629pub fn _mm512_sllv_epi64(a: __m512i, count: __m512i) -> __m512i {
22630    unsafe { transmute(vpsllvq(a.as_i64x8(), count.as_i64x8())) }
22631}
22632
22633/// Shift packed 64-bit integers in a left by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22634///
22635/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_sllv_epi64&expand=5349)
22636#[inline]
22637#[target_feature(enable = "avx512f")]
22638#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22639#[cfg_attr(test, assert_instr(vpsllvq))]
22640pub fn _mm512_mask_sllv_epi64(src: __m512i, k: __mmask8, a: __m512i, count: __m512i) -> __m512i {
22641    unsafe {
22642        let shf = _mm512_sllv_epi64(a, count).as_i64x8();
22643        transmute(simd_select_bitmask(k, shf, src.as_i64x8()))
22644    }
22645}
22646
22647/// Shift packed 64-bit integers in a left by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22648///
22649/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_sllv_epi64&expand=5350)
22650#[inline]
22651#[target_feature(enable = "avx512f")]
22652#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22653#[cfg_attr(test, assert_instr(vpsllvq))]
22654pub fn _mm512_maskz_sllv_epi64(k: __mmask8, a: __m512i, count: __m512i) -> __m512i {
22655    unsafe {
22656        let shf = _mm512_sllv_epi64(a, count).as_i64x8();
22657        transmute(simd_select_bitmask(k, shf, i64x8::ZERO))
22658    }
22659}
22660
22661/// Shift packed 64-bit integers in a left by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22662///
22663/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_sllv_epi64&expand=5346)
22664#[inline]
22665#[target_feature(enable = "avx512f,avx512vl")]
22666#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22667#[cfg_attr(test, assert_instr(vpsllvq))]
22668pub fn _mm256_mask_sllv_epi64(src: __m256i, k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
22669    unsafe {
22670        let shf = _mm256_sllv_epi64(a, count).as_i64x4();
22671        transmute(simd_select_bitmask(k, shf, src.as_i64x4()))
22672    }
22673}
22674
22675/// Shift packed 64-bit integers in a left by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22676///
22677/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_sllv_epi64&expand=5347)
22678#[inline]
22679#[target_feature(enable = "avx512f,avx512vl")]
22680#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22681#[cfg_attr(test, assert_instr(vpsllvq))]
22682pub fn _mm256_maskz_sllv_epi64(k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
22683    unsafe {
22684        let shf = _mm256_sllv_epi64(a, count).as_i64x4();
22685        transmute(simd_select_bitmask(k, shf, i64x4::ZERO))
22686    }
22687}
22688
22689/// Shift packed 64-bit integers in a left by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22690///
22691/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_sllv_epi64&expand=5343)
22692#[inline]
22693#[target_feature(enable = "avx512f,avx512vl")]
22694#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22695#[cfg_attr(test, assert_instr(vpsllvq))]
22696pub fn _mm_mask_sllv_epi64(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
22697    unsafe {
22698        let shf = _mm_sllv_epi64(a, count).as_i64x2();
22699        transmute(simd_select_bitmask(k, shf, src.as_i64x2()))
22700    }
22701}
22702
22703/// Shift packed 64-bit integers in a left by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22704///
22705/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_sllv_epi64&expand=5344)
22706#[inline]
22707#[target_feature(enable = "avx512f,avx512vl")]
22708#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22709#[cfg_attr(test, assert_instr(vpsllvq))]
22710pub fn _mm_maskz_sllv_epi64(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
22711    unsafe {
22712        let shf = _mm_sllv_epi64(a, count).as_i64x2();
22713        transmute(simd_select_bitmask(k, shf, i64x2::ZERO))
22714    }
22715}
22716
22717/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst.
22718///
22719/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_srlv_epi64&expand=5563)
22720#[inline]
22721#[target_feature(enable = "avx512f")]
22722#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22723#[cfg_attr(test, assert_instr(vpsrlvq))]
22724pub fn _mm512_srlv_epi64(a: __m512i, count: __m512i) -> __m512i {
22725    unsafe { transmute(vpsrlvq(a.as_i64x8(), count.as_i64x8())) }
22726}
22727
22728/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22729///
22730/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_srlv_epi64&expand=5561)
22731#[inline]
22732#[target_feature(enable = "avx512f")]
22733#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22734#[cfg_attr(test, assert_instr(vpsrlvq))]
22735pub fn _mm512_mask_srlv_epi64(src: __m512i, k: __mmask8, a: __m512i, count: __m512i) -> __m512i {
22736    unsafe {
22737        let shf = _mm512_srlv_epi64(a, count).as_i64x8();
22738        transmute(simd_select_bitmask(k, shf, src.as_i64x8()))
22739    }
22740}
22741
22742/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22743///
22744/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_srlv_epi64&expand=5562)
22745#[inline]
22746#[target_feature(enable = "avx512f")]
22747#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22748#[cfg_attr(test, assert_instr(vpsrlvq))]
22749pub fn _mm512_maskz_srlv_epi64(k: __mmask8, a: __m512i, count: __m512i) -> __m512i {
22750    unsafe {
22751        let shf = _mm512_srlv_epi64(a, count).as_i64x8();
22752        transmute(simd_select_bitmask(k, shf, i64x8::ZERO))
22753    }
22754}
22755
22756/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22757///
22758/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_srlv_epi64&expand=5558)
22759#[inline]
22760#[target_feature(enable = "avx512f,avx512vl")]
22761#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22762#[cfg_attr(test, assert_instr(vpsrlvq))]
22763pub fn _mm256_mask_srlv_epi64(src: __m256i, k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
22764    unsafe {
22765        let shf = _mm256_srlv_epi64(a, count).as_i64x4();
22766        transmute(simd_select_bitmask(k, shf, src.as_i64x4()))
22767    }
22768}
22769
22770/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22771///
22772/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_srlv_epi64&expand=5559)
22773#[inline]
22774#[target_feature(enable = "avx512f,avx512vl")]
22775#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22776#[cfg_attr(test, assert_instr(vpsrlvq))]
22777pub fn _mm256_maskz_srlv_epi64(k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
22778    unsafe {
22779        let shf = _mm256_srlv_epi64(a, count).as_i64x4();
22780        transmute(simd_select_bitmask(k, shf, i64x4::ZERO))
22781    }
22782}
22783
22784/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22785///
22786/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_srlv_epi64&expand=5555)
22787#[inline]
22788#[target_feature(enable = "avx512f,avx512vl")]
22789#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22790#[cfg_attr(test, assert_instr(vpsrlvq))]
22791pub fn _mm_mask_srlv_epi64(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
22792    unsafe {
22793        let shf = _mm_srlv_epi64(a, count).as_i64x2();
22794        transmute(simd_select_bitmask(k, shf, src.as_i64x2()))
22795    }
22796}
22797
22798/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22799///
22800/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_srlv_epi64&expand=5556)
22801#[inline]
22802#[target_feature(enable = "avx512f,avx512vl")]
22803#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22804#[cfg_attr(test, assert_instr(vpsrlvq))]
22805pub fn _mm_maskz_srlv_epi64(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
22806    unsafe {
22807        let shf = _mm_srlv_epi64(a, count).as_i64x2();
22808        transmute(simd_select_bitmask(k, shf, i64x2::ZERO))
22809    }
22810}
22811
22812/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst.
22813///
22814/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_permute_ps&expand=4170)
22815#[inline]
22816#[target_feature(enable = "avx512f")]
22817#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22818#[cfg_attr(test, assert_instr(vshufps, MASK = 0b11_00_01_11))]
22819#[rustc_legacy_const_generics(1)]
22820#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22821pub const fn _mm512_permute_ps<const MASK: i32>(a: __m512) -> __m512 {
22822    unsafe {
22823        static_assert_uimm_bits!(MASK, 8);
22824        simd_shuffle!(
22825            a,
22826            a,
22827            [
22828                MASK as u32 & 0b11,
22829                (MASK as u32 >> 2) & 0b11,
22830                ((MASK as u32 >> 4) & 0b11),
22831                ((MASK as u32 >> 6) & 0b11),
22832                (MASK as u32 & 0b11) + 4,
22833                ((MASK as u32 >> 2) & 0b11) + 4,
22834                ((MASK as u32 >> 4) & 0b11) + 4,
22835                ((MASK as u32 >> 6) & 0b11) + 4,
22836                (MASK as u32 & 0b11) + 8,
22837                ((MASK as u32 >> 2) & 0b11) + 8,
22838                ((MASK as u32 >> 4) & 0b11) + 8,
22839                ((MASK as u32 >> 6) & 0b11) + 8,
22840                (MASK as u32 & 0b11) + 12,
22841                ((MASK as u32 >> 2) & 0b11) + 12,
22842                ((MASK as u32 >> 4) & 0b11) + 12,
22843                ((MASK as u32 >> 6) & 0b11) + 12,
22844            ],
22845        )
22846    }
22847}
22848
22849/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22850///
22851/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_permute_ps&expand=4168)
22852#[inline]
22853#[target_feature(enable = "avx512f")]
22854#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22855#[cfg_attr(test, assert_instr(vshufps, MASK = 0b11_00_01_11))]
22856#[rustc_legacy_const_generics(3)]
22857#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22858pub const fn _mm512_mask_permute_ps<const MASK: i32>(
22859    src: __m512,
22860    k: __mmask16,
22861    a: __m512,
22862) -> __m512 {
22863    unsafe {
22864        static_assert_uimm_bits!(MASK, 8);
22865        let r = _mm512_permute_ps::<MASK>(a);
22866        transmute(simd_select_bitmask(k, r.as_f32x16(), src.as_f32x16()))
22867    }
22868}
22869
22870/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22871///
22872/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_permute_ps&expand=4169)
22873#[inline]
22874#[target_feature(enable = "avx512f")]
22875#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22876#[cfg_attr(test, assert_instr(vshufps, MASK = 0b11_00_01_11))]
22877#[rustc_legacy_const_generics(2)]
22878#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22879pub const fn _mm512_maskz_permute_ps<const MASK: i32>(k: __mmask16, a: __m512) -> __m512 {
22880    unsafe {
22881        static_assert_uimm_bits!(MASK, 8);
22882        let r = _mm512_permute_ps::<MASK>(a);
22883        transmute(simd_select_bitmask(k, r.as_f32x16(), f32x16::ZERO))
22884    }
22885}
22886
22887/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22888///
22889/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_permute_ps&expand=4165)
22890#[inline]
22891#[target_feature(enable = "avx512f,avx512vl")]
22892#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22893#[cfg_attr(test, assert_instr(vshufps, MASK = 0b11_00_01_11))]
22894#[rustc_legacy_const_generics(3)]
22895#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22896pub const fn _mm256_mask_permute_ps<const MASK: i32>(
22897    src: __m256,
22898    k: __mmask8,
22899    a: __m256,
22900) -> __m256 {
22901    unsafe {
22902        let r = _mm256_permute_ps::<MASK>(a);
22903        transmute(simd_select_bitmask(k, r.as_f32x8(), src.as_f32x8()))
22904    }
22905}
22906
22907/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22908///
22909/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_permute_ps&expand=4166)
22910#[inline]
22911#[target_feature(enable = "avx512f,avx512vl")]
22912#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22913#[cfg_attr(test, assert_instr(vshufps, MASK = 0b11_00_01_11))]
22914#[rustc_legacy_const_generics(2)]
22915#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22916pub const fn _mm256_maskz_permute_ps<const MASK: i32>(k: __mmask8, a: __m256) -> __m256 {
22917    unsafe {
22918        let r = _mm256_permute_ps::<MASK>(a);
22919        transmute(simd_select_bitmask(k, r.as_f32x8(), f32x8::ZERO))
22920    }
22921}
22922
22923/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22924///
22925/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_permute_ps&expand=4162)
22926#[inline]
22927#[target_feature(enable = "avx512f,avx512vl")]
22928#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22929#[cfg_attr(test, assert_instr(vshufps, MASK = 0b11_00_01_11))]
22930#[rustc_legacy_const_generics(3)]
22931#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22932pub const fn _mm_mask_permute_ps<const MASK: i32>(src: __m128, k: __mmask8, a: __m128) -> __m128 {
22933    unsafe {
22934        let r = _mm_permute_ps::<MASK>(a);
22935        transmute(simd_select_bitmask(k, r.as_f32x4(), src.as_f32x4()))
22936    }
22937}
22938
22939/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
22940///
22941/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_permute_ps&expand=4163)
22942#[inline]
22943#[target_feature(enable = "avx512f,avx512vl")]
22944#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22945#[cfg_attr(test, assert_instr(vshufps, MASK = 0b11_00_01_11))]
22946#[rustc_legacy_const_generics(2)]
22947#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22948pub const fn _mm_maskz_permute_ps<const MASK: i32>(k: __mmask8, a: __m128) -> __m128 {
22949    unsafe {
22950        let r = _mm_permute_ps::<MASK>(a);
22951        transmute(simd_select_bitmask(k, r.as_f32x4(), f32x4::ZERO))
22952    }
22953}
22954
22955/// Shuffle double-precision (64-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst.
22956///
22957/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_permute_pd&expand=4161)
22958#[inline]
22959#[target_feature(enable = "avx512f")]
22960#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22961#[cfg_attr(test, assert_instr(vshufpd, MASK = 0b11_01_10_01))]
22962#[rustc_legacy_const_generics(1)]
22963#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22964pub const fn _mm512_permute_pd<const MASK: i32>(a: __m512d) -> __m512d {
22965    unsafe {
22966        static_assert_uimm_bits!(MASK, 8);
22967        simd_shuffle!(
22968            a,
22969            a,
22970            [
22971                MASK as u32 & 0b1,
22972                ((MASK as u32 >> 1) & 0b1),
22973                ((MASK as u32 >> 2) & 0b1) + 2,
22974                ((MASK as u32 >> 3) & 0b1) + 2,
22975                ((MASK as u32 >> 4) & 0b1) + 4,
22976                ((MASK as u32 >> 5) & 0b1) + 4,
22977                ((MASK as u32 >> 6) & 0b1) + 6,
22978                ((MASK as u32 >> 7) & 0b1) + 6,
22979            ],
22980        )
22981    }
22982}
22983
22984/// Shuffle double-precision (64-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
22985///
22986/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_permute_pd&expand=4159)
22987#[inline]
22988#[target_feature(enable = "avx512f")]
22989#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
22990#[cfg_attr(test, assert_instr(vshufpd, MASK = 0b11_01_10_01))]
22991#[rustc_legacy_const_generics(3)]
22992#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
22993pub const fn _mm512_mask_permute_pd<const MASK: i32>(
22994    src: __m512d,
22995    k: __mmask8,
22996    a: __m512d,
22997) -> __m512d {
22998    unsafe {
22999        static_assert_uimm_bits!(MASK, 8);
23000        let r = _mm512_permute_pd::<MASK>(a);
23001        transmute(simd_select_bitmask(k, r.as_f64x8(), src.as_f64x8()))
23002    }
23003}
23004
23005/// Shuffle double-precision (64-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23006///
23007/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_permute_pd&expand=4160)
23008#[inline]
23009#[target_feature(enable = "avx512f")]
23010#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23011#[cfg_attr(test, assert_instr(vshufpd, MASK = 0b11_01_10_01))]
23012#[rustc_legacy_const_generics(2)]
23013#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
23014pub const fn _mm512_maskz_permute_pd<const MASK: i32>(k: __mmask8, a: __m512d) -> __m512d {
23015    unsafe {
23016        static_assert_uimm_bits!(MASK, 8);
23017        let r = _mm512_permute_pd::<MASK>(a);
23018        transmute(simd_select_bitmask(k, r.as_f64x8(), f64x8::ZERO))
23019    }
23020}
23021
23022/// Shuffle double-precision (64-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23023///
23024/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_permute_pd&expand=4156)
23025#[inline]
23026#[target_feature(enable = "avx512f,avx512vl")]
23027#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23028#[cfg_attr(test, assert_instr(vshufpd, MASK = 0b11_01))]
23029#[rustc_legacy_const_generics(3)]
23030#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
23031pub const fn _mm256_mask_permute_pd<const MASK: i32>(
23032    src: __m256d,
23033    k: __mmask8,
23034    a: __m256d,
23035) -> __m256d {
23036    unsafe {
23037        static_assert_uimm_bits!(MASK, 4);
23038        let r = _mm256_permute_pd::<MASK>(a);
23039        transmute(simd_select_bitmask(k, r.as_f64x4(), src.as_f64x4()))
23040    }
23041}
23042
23043/// Shuffle double-precision (64-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23044///
23045/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_permute_pd&expand=4157)
23046#[inline]
23047#[target_feature(enable = "avx512f,avx512vl")]
23048#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23049#[cfg_attr(test, assert_instr(vshufpd, MASK = 0b11_01))]
23050#[rustc_legacy_const_generics(2)]
23051#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
23052pub const fn _mm256_maskz_permute_pd<const MASK: i32>(k: __mmask8, a: __m256d) -> __m256d {
23053    unsafe {
23054        static_assert_uimm_bits!(MASK, 4);
23055        let r = _mm256_permute_pd::<MASK>(a);
23056        transmute(simd_select_bitmask(k, r.as_f64x4(), f64x4::ZERO))
23057    }
23058}
23059
23060/// Shuffle double-precision (64-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23061///
23062/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_permute_pd&expand=4153)
23063#[inline]
23064#[target_feature(enable = "avx512f,avx512vl")]
23065#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23066#[cfg_attr(test, assert_instr(vshufpd, IMM2 = 0b01))]
23067#[rustc_legacy_const_generics(3)]
23068#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
23069pub const fn _mm_mask_permute_pd<const IMM2: i32>(
23070    src: __m128d,
23071    k: __mmask8,
23072    a: __m128d,
23073) -> __m128d {
23074    unsafe {
23075        static_assert_uimm_bits!(IMM2, 2);
23076        let r = _mm_permute_pd::<IMM2>(a);
23077        transmute(simd_select_bitmask(k, r.as_f64x2(), src.as_f64x2()))
23078    }
23079}
23080
23081/// Shuffle double-precision (64-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23082///
23083/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_permute_pd&expand=4154)
23084#[inline]
23085#[target_feature(enable = "avx512f,avx512vl")]
23086#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23087#[cfg_attr(test, assert_instr(vshufpd, IMM2 = 0b01))]
23088#[rustc_legacy_const_generics(2)]
23089#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
23090pub const fn _mm_maskz_permute_pd<const IMM2: i32>(k: __mmask8, a: __m128d) -> __m128d {
23091    unsafe {
23092        static_assert_uimm_bits!(IMM2, 2);
23093        let r = _mm_permute_pd::<IMM2>(a);
23094        transmute(simd_select_bitmask(k, r.as_f64x2(), f64x2::ZERO))
23095    }
23096}
23097
23098/// Shuffle 64-bit integers in a within 256-bit lanes using the control in imm8, and store the results in dst.
23099///
23100/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_permutex_epi64&expand=4208)
23101#[inline]
23102#[target_feature(enable = "avx512f")]
23103#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23104#[cfg_attr(test, assert_instr(vperm, MASK = 0b10_01_10_11))] //should be vpermq
23105#[rustc_legacy_const_generics(1)]
23106#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
23107pub const fn _mm512_permutex_epi64<const MASK: i32>(a: __m512i) -> __m512i {
23108    unsafe {
23109        static_assert_uimm_bits!(MASK, 8);
23110        simd_shuffle!(
23111            a,
23112            a,
23113            [
23114                MASK as u32 & 0b11,
23115                (MASK as u32 >> 2) & 0b11,
23116                ((MASK as u32 >> 4) & 0b11),
23117                ((MASK as u32 >> 6) & 0b11),
23118                (MASK as u32 & 0b11) + 4,
23119                ((MASK as u32 >> 2) & 0b11) + 4,
23120                ((MASK as u32 >> 4) & 0b11) + 4,
23121                ((MASK as u32 >> 6) & 0b11) + 4,
23122            ],
23123        )
23124    }
23125}
23126
23127/// Shuffle 64-bit integers in a within 256-bit lanes using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23128///
23129/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_permutex_epi64&expand=4206)
23130#[inline]
23131#[target_feature(enable = "avx512f")]
23132#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23133#[cfg_attr(test, assert_instr(vperm, MASK = 0b10_01_10_11))] //should be vpermq
23134#[rustc_legacy_const_generics(3)]
23135#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
23136pub const fn _mm512_mask_permutex_epi64<const MASK: i32>(
23137    src: __m512i,
23138    k: __mmask8,
23139    a: __m512i,
23140) -> __m512i {
23141    unsafe {
23142        static_assert_uimm_bits!(MASK, 8);
23143        let r = _mm512_permutex_epi64::<MASK>(a);
23144        transmute(simd_select_bitmask(k, r.as_i64x8(), src.as_i64x8()))
23145    }
23146}
23147
23148/// Shuffle 64-bit integers in a within 256-bit lanes using the control in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23149///
23150/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_permutex_epi64&expand=4207)
23151#[inline]
23152#[target_feature(enable = "avx512f")]
23153#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23154#[cfg_attr(test, assert_instr(vperm, MASK = 0b10_01_10_11))] //should be vpermq
23155#[rustc_legacy_const_generics(2)]
23156#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
23157pub const fn _mm512_maskz_permutex_epi64<const MASK: i32>(k: __mmask8, a: __m512i) -> __m512i {
23158    unsafe {
23159        static_assert_uimm_bits!(MASK, 8);
23160        let r = _mm512_permutex_epi64::<MASK>(a);
23161        transmute(simd_select_bitmask(k, r.as_i64x8(), i64x8::ZERO))
23162    }
23163}
23164
23165/// Shuffle 64-bit integers in a within 256-bit lanes using the control in imm8, and store the results in dst.
23166///
23167/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_permutex_epi64&expand=4205)
23168#[inline]
23169#[target_feature(enable = "avx512f,avx512vl")]
23170#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23171#[cfg_attr(test, assert_instr(vperm, MASK = 0b10_01_10_11))] //should be vpermq
23172#[rustc_legacy_const_generics(1)]
23173#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
23174pub const fn _mm256_permutex_epi64<const MASK: i32>(a: __m256i) -> __m256i {
23175    unsafe {
23176        static_assert_uimm_bits!(MASK, 8);
23177        simd_shuffle!(
23178            a,
23179            a,
23180            [
23181                MASK as u32 & 0b11,
23182                (MASK as u32 >> 2) & 0b11,
23183                ((MASK as u32 >> 4) & 0b11),
23184                ((MASK as u32 >> 6) & 0b11),
23185            ],
23186        )
23187    }
23188}
23189
23190/// Shuffle 64-bit integers in a within 256-bit lanes using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23191///
23192/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_permutex_epi64&expand=4203)
23193#[inline]
23194#[target_feature(enable = "avx512f,avx512vl")]
23195#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23196#[cfg_attr(test, assert_instr(vperm, MASK = 0b10_01_10_11))] //should be vpermq
23197#[rustc_legacy_const_generics(3)]
23198#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
23199pub const fn _mm256_mask_permutex_epi64<const MASK: i32>(
23200    src: __m256i,
23201    k: __mmask8,
23202    a: __m256i,
23203) -> __m256i {
23204    unsafe {
23205        static_assert_uimm_bits!(MASK, 8);
23206        let r = _mm256_permutex_epi64::<MASK>(a);
23207        transmute(simd_select_bitmask(k, r.as_i64x4(), src.as_i64x4()))
23208    }
23209}
23210
23211/// Shuffle 64-bit integers in a within 256-bit lanes using the control in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23212///
23213/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_permutex_epi64&expand=4204)
23214#[inline]
23215#[target_feature(enable = "avx512f,avx512vl")]
23216#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23217#[cfg_attr(test, assert_instr(vperm, MASK = 0b10_01_10_11))] //should be vpermq
23218#[rustc_legacy_const_generics(2)]
23219#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
23220pub const fn _mm256_maskz_permutex_epi64<const MASK: i32>(k: __mmask8, a: __m256i) -> __m256i {
23221    unsafe {
23222        static_assert_uimm_bits!(MASK, 8);
23223        let r = _mm256_permutex_epi64::<MASK>(a);
23224        transmute(simd_select_bitmask(k, r.as_i64x4(), i64x4::ZERO))
23225    }
23226}
23227
23228/// Shuffle double-precision (64-bit) floating-point elements in a within 256-bit lanes using the control in imm8, and store the results in dst.
23229///
23230/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_permutex_pd&expand=4214)
23231#[inline]
23232#[target_feature(enable = "avx512f")]
23233#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23234#[cfg_attr(test, assert_instr(vperm, MASK = 0b10_01_10_11))] //should be vpermpd
23235#[rustc_legacy_const_generics(1)]
23236#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
23237pub const fn _mm512_permutex_pd<const MASK: i32>(a: __m512d) -> __m512d {
23238    unsafe {
23239        static_assert_uimm_bits!(MASK, 8);
23240        simd_shuffle!(
23241            a,
23242            a,
23243            [
23244                MASK as u32 & 0b11,
23245                (MASK as u32 >> 2) & 0b11,
23246                ((MASK as u32 >> 4) & 0b11),
23247                ((MASK as u32 >> 6) & 0b11),
23248                (MASK as u32 & 0b11) + 4,
23249                ((MASK as u32 >> 2) & 0b11) + 4,
23250                ((MASK as u32 >> 4) & 0b11) + 4,
23251                ((MASK as u32 >> 6) & 0b11) + 4,
23252            ],
23253        )
23254    }
23255}
23256
23257/// Shuffle double-precision (64-bit) floating-point elements in a within 256-bit lanes using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23258///
23259/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_permutex_pd&expand=4212)
23260#[inline]
23261#[target_feature(enable = "avx512f")]
23262#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23263#[cfg_attr(test, assert_instr(vperm, MASK = 0b10_01_10_11))] //should be vpermpd
23264#[rustc_legacy_const_generics(3)]
23265#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
23266pub const fn _mm512_mask_permutex_pd<const MASK: i32>(
23267    src: __m512d,
23268    k: __mmask8,
23269    a: __m512d,
23270) -> __m512d {
23271    unsafe {
23272        let r = _mm512_permutex_pd::<MASK>(a);
23273        transmute(simd_select_bitmask(k, r.as_f64x8(), src.as_f64x8()))
23274    }
23275}
23276
23277/// Shuffle double-precision (64-bit) floating-point elements in a within 256-bit lanes using the control in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23278///
23279/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_permutex_pd&expand=4213)
23280#[inline]
23281#[target_feature(enable = "avx512f")]
23282#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23283#[cfg_attr(test, assert_instr(vperm, MASK = 0b10_01_10_11))] //should be vpermpd
23284#[rustc_legacy_const_generics(2)]
23285#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
23286pub const fn _mm512_maskz_permutex_pd<const MASK: i32>(k: __mmask8, a: __m512d) -> __m512d {
23287    unsafe {
23288        let r = _mm512_permutex_pd::<MASK>(a);
23289        transmute(simd_select_bitmask(k, r.as_f64x8(), f64x8::ZERO))
23290    }
23291}
23292
23293/// Shuffle double-precision (64-bit) floating-point elements in a within 256-bit lanes using the control in imm8, and store the results in dst.
23294///
23295/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_permutex_pd&expand=4211)
23296#[inline]
23297#[target_feature(enable = "avx512f,avx512vl")]
23298#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23299#[cfg_attr(test, assert_instr(vperm, MASK = 0b10_01_10_11))] //should be vpermpd
23300#[rustc_legacy_const_generics(1)]
23301#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
23302pub const fn _mm256_permutex_pd<const MASK: i32>(a: __m256d) -> __m256d {
23303    unsafe {
23304        static_assert_uimm_bits!(MASK, 8);
23305        simd_shuffle!(
23306            a,
23307            a,
23308            [
23309                MASK as u32 & 0b11,
23310                (MASK as u32 >> 2) & 0b11,
23311                ((MASK as u32 >> 4) & 0b11),
23312                ((MASK as u32 >> 6) & 0b11),
23313            ],
23314        )
23315    }
23316}
23317
23318/// Shuffle double-precision (64-bit) floating-point elements in a within 256-bit lanes using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23319///
23320/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_permutex_pd&expand=4209)
23321#[inline]
23322#[target_feature(enable = "avx512f,avx512vl")]
23323#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23324#[cfg_attr(test, assert_instr(vperm, MASK = 0b10_01_10_11))] //should be vpermpd
23325#[rustc_legacy_const_generics(3)]
23326#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
23327pub const fn _mm256_mask_permutex_pd<const MASK: i32>(
23328    src: __m256d,
23329    k: __mmask8,
23330    a: __m256d,
23331) -> __m256d {
23332    unsafe {
23333        static_assert_uimm_bits!(MASK, 8);
23334        let r = _mm256_permutex_pd::<MASK>(a);
23335        transmute(simd_select_bitmask(k, r.as_f64x4(), src.as_f64x4()))
23336    }
23337}
23338
23339/// Shuffle double-precision (64-bit) floating-point elements in a within 256-bit lanes using the control in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23340///
23341/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_permutex_pd&expand=4210)
23342#[inline]
23343#[target_feature(enable = "avx512f,avx512vl")]
23344#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23345#[cfg_attr(test, assert_instr(vperm, MASK = 0b10_01_10_11))] //should be vpermpd
23346#[rustc_legacy_const_generics(2)]
23347#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
23348pub const fn _mm256_maskz_permutex_pd<const MASK: i32>(k: __mmask8, a: __m256d) -> __m256d {
23349    unsafe {
23350        static_assert_uimm_bits!(MASK, 8);
23351        let r = _mm256_permutex_pd::<MASK>(a);
23352        transmute(simd_select_bitmask(k, r.as_f64x4(), f64x4::ZERO))
23353    }
23354}
23355
23356/// Shuffle 32-bit integers in a across lanes using the corresponding index in idx, and store the results in dst. Note that this intrinsic shuffles across 128-bit lanes, unlike past intrinsics that use the permutevar name. This intrinsic is identical to _mm512_permutexvar_epi32, and it is recommended that you use that intrinsic name.
23357///
23358/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_permutevar_epi32&expand=4182)
23359#[inline]
23360#[target_feature(enable = "avx512f")]
23361#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23362#[cfg_attr(test, assert_instr(vperm))] //should be vpermd
23363pub fn _mm512_permutevar_epi32(idx: __m512i, a: __m512i) -> __m512i {
23364    unsafe { transmute(vpermd(a.as_i32x16(), idx.as_i32x16())) }
23365}
23366
23367/// Shuffle 32-bit integers in a across lanes using the corresponding index in idx, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set). Note that this intrinsic shuffles across 128-bit lanes, unlike past intrinsics that use the permutevar name. This intrinsic is identical to _mm512_mask_permutexvar_epi32, and it is recommended that you use that intrinsic name.
23368///
23369/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_permutevar_epi32&expand=4181)
23370#[inline]
23371#[target_feature(enable = "avx512f")]
23372#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23373#[cfg_attr(test, assert_instr(vpermd))]
23374pub fn _mm512_mask_permutevar_epi32(
23375    src: __m512i,
23376    k: __mmask16,
23377    idx: __m512i,
23378    a: __m512i,
23379) -> __m512i {
23380    unsafe {
23381        let permute = _mm512_permutevar_epi32(idx, a).as_i32x16();
23382        transmute(simd_select_bitmask(k, permute, src.as_i32x16()))
23383    }
23384}
23385
23386/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in b, and store the results in dst.
23387///
23388/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_permutevar_ps&expand=4200)
23389#[inline]
23390#[target_feature(enable = "avx512f")]
23391#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23392#[cfg_attr(test, assert_instr(vpermilps))]
23393pub fn _mm512_permutevar_ps(a: __m512, b: __m512i) -> __m512 {
23394    unsafe { transmute(vpermilps(a.as_f32x16(), b.as_i32x16())) }
23395}
23396
23397/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23398///
23399/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_permutevar_ps&expand=4198)
23400#[inline]
23401#[target_feature(enable = "avx512f")]
23402#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23403#[cfg_attr(test, assert_instr(vpermilps))]
23404pub fn _mm512_mask_permutevar_ps(src: __m512, k: __mmask16, a: __m512, b: __m512i) -> __m512 {
23405    unsafe {
23406        let permute = _mm512_permutevar_ps(a, b).as_f32x16();
23407        transmute(simd_select_bitmask(k, permute, src.as_f32x16()))
23408    }
23409}
23410
23411/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23412///
23413/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_permutevar_ps&expand=4199)
23414#[inline]
23415#[target_feature(enable = "avx512f")]
23416#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23417#[cfg_attr(test, assert_instr(vpermilps))]
23418pub fn _mm512_maskz_permutevar_ps(k: __mmask16, a: __m512, b: __m512i) -> __m512 {
23419    unsafe {
23420        let permute = _mm512_permutevar_ps(a, b).as_f32x16();
23421        transmute(simd_select_bitmask(k, permute, f32x16::ZERO))
23422    }
23423}
23424
23425/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23426///
23427/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm256_mask_permutevar_ps&expand=4195)
23428#[inline]
23429#[target_feature(enable = "avx512f,avx512vl")]
23430#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23431#[cfg_attr(test, assert_instr(vpermilps))]
23432pub fn _mm256_mask_permutevar_ps(src: __m256, k: __mmask8, a: __m256, b: __m256i) -> __m256 {
23433    unsafe {
23434        let permute = _mm256_permutevar_ps(a, b).as_f32x8();
23435        transmute(simd_select_bitmask(k, permute, src.as_f32x8()))
23436    }
23437}
23438
23439/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23440///
23441/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_permutevar_ps&expand=4196)
23442#[inline]
23443#[target_feature(enable = "avx512f,avx512vl")]
23444#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23445#[cfg_attr(test, assert_instr(vpermilps))]
23446pub fn _mm256_maskz_permutevar_ps(k: __mmask8, a: __m256, b: __m256i) -> __m256 {
23447    unsafe {
23448        let permute = _mm256_permutevar_ps(a, b).as_f32x8();
23449        transmute(simd_select_bitmask(k, permute, f32x8::ZERO))
23450    }
23451}
23452
23453/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23454///
23455/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_permutevar_ps&expand=4192)
23456#[inline]
23457#[target_feature(enable = "avx512f,avx512vl")]
23458#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23459#[cfg_attr(test, assert_instr(vpermilps))]
23460pub fn _mm_mask_permutevar_ps(src: __m128, k: __mmask8, a: __m128, b: __m128i) -> __m128 {
23461    unsafe {
23462        let permute = _mm_permutevar_ps(a, b).as_f32x4();
23463        transmute(simd_select_bitmask(k, permute, src.as_f32x4()))
23464    }
23465}
23466
23467/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23468///
23469/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_permutevar_ps&expand=4193)
23470#[inline]
23471#[target_feature(enable = "avx512f,avx512vl")]
23472#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23473#[cfg_attr(test, assert_instr(vpermilps))]
23474pub fn _mm_maskz_permutevar_ps(k: __mmask8, a: __m128, b: __m128i) -> __m128 {
23475    unsafe {
23476        let permute = _mm_permutevar_ps(a, b).as_f32x4();
23477        transmute(simd_select_bitmask(k, permute, f32x4::ZERO))
23478    }
23479}
23480
23481/// Shuffle double-precision (64-bit) floating-point elements in a within 128-bit lanes using the control in b, and store the results in dst.
23482///
23483/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_permutevar_pd&expand=4191)
23484#[inline]
23485#[target_feature(enable = "avx512f")]
23486#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23487#[cfg_attr(test, assert_instr(vpermilpd))]
23488pub fn _mm512_permutevar_pd(a: __m512d, b: __m512i) -> __m512d {
23489    unsafe { transmute(vpermilpd(a.as_f64x8(), b.as_i64x8())) }
23490}
23491
23492/// Shuffle double-precision (64-bit) floating-point elements in a within 128-bit lanes using the control in b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23493///
23494/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_permutevar_pd&expand=4189)
23495#[inline]
23496#[target_feature(enable = "avx512f")]
23497#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23498#[cfg_attr(test, assert_instr(vpermilpd))]
23499pub fn _mm512_mask_permutevar_pd(src: __m512d, k: __mmask8, a: __m512d, b: __m512i) -> __m512d {
23500    unsafe {
23501        let permute = _mm512_permutevar_pd(a, b).as_f64x8();
23502        transmute(simd_select_bitmask(k, permute, src.as_f64x8()))
23503    }
23504}
23505
23506/// Shuffle double-precision (64-bit) floating-point elements in a within 128-bit lanes using the control in b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23507///
23508/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_permutevar_pd&expand=4190)
23509#[inline]
23510#[target_feature(enable = "avx512f")]
23511#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23512#[cfg_attr(test, assert_instr(vpermilpd))]
23513pub fn _mm512_maskz_permutevar_pd(k: __mmask8, a: __m512d, b: __m512i) -> __m512d {
23514    unsafe {
23515        let permute = _mm512_permutevar_pd(a, b).as_f64x8();
23516        transmute(simd_select_bitmask(k, permute, f64x8::ZERO))
23517    }
23518}
23519
23520/// Shuffle double-precision (64-bit) floating-point elements in a within 128-bit lanes using the control in b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23521///
23522/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_permutevar_pd&expand=4186)
23523#[inline]
23524#[target_feature(enable = "avx512f,avx512vl")]
23525#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23526#[cfg_attr(test, assert_instr(vpermilpd))]
23527pub fn _mm256_mask_permutevar_pd(src: __m256d, k: __mmask8, a: __m256d, b: __m256i) -> __m256d {
23528    unsafe {
23529        let permute = _mm256_permutevar_pd(a, b).as_f64x4();
23530        transmute(simd_select_bitmask(k, permute, src.as_f64x4()))
23531    }
23532}
23533
23534/// Shuffle double-precision (64-bit) floating-point elements in a within 128-bit lanes using the control in b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23535///
23536/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_permutevar_pd&expand=4187)
23537#[inline]
23538#[target_feature(enable = "avx512f,avx512vl")]
23539#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23540#[cfg_attr(test, assert_instr(vpermilpd))]
23541pub fn _mm256_maskz_permutevar_pd(k: __mmask8, a: __m256d, b: __m256i) -> __m256d {
23542    unsafe {
23543        let permute = _mm256_permutevar_pd(a, b).as_f64x4();
23544        transmute(simd_select_bitmask(k, permute, f64x4::ZERO))
23545    }
23546}
23547
23548/// Shuffle double-precision (64-bit) floating-point elements in a within 128-bit lanes using the control in b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23549///
23550/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_permutevar_pd&expand=4183)
23551#[inline]
23552#[target_feature(enable = "avx512f,avx512vl")]
23553#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23554#[cfg_attr(test, assert_instr(vpermilpd))]
23555pub fn _mm_mask_permutevar_pd(src: __m128d, k: __mmask8, a: __m128d, b: __m128i) -> __m128d {
23556    unsafe {
23557        let permute = _mm_permutevar_pd(a, b).as_f64x2();
23558        transmute(simd_select_bitmask(k, permute, src.as_f64x2()))
23559    }
23560}
23561
23562/// Shuffle double-precision (64-bit) floating-point elements in a within 128-bit lanes using the control in b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23563///
23564/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_permutevar_pd&expand=4184)
23565#[inline]
23566#[target_feature(enable = "avx512f,avx512vl")]
23567#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23568#[cfg_attr(test, assert_instr(vpermilpd))]
23569pub fn _mm_maskz_permutevar_pd(k: __mmask8, a: __m128d, b: __m128i) -> __m128d {
23570    unsafe {
23571        let permute = _mm_permutevar_pd(a, b).as_f64x2();
23572        transmute(simd_select_bitmask(k, permute, f64x2::ZERO))
23573    }
23574}
23575
23576/// Shuffle 32-bit integers in a across lanes using the corresponding index in idx, and store the results in dst.
23577///
23578/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_permutexvar_epi32&expand=4301)
23579#[inline]
23580#[target_feature(enable = "avx512f")]
23581#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23582#[cfg_attr(test, assert_instr(vperm))] //should be vpermd
23583pub fn _mm512_permutexvar_epi32(idx: __m512i, a: __m512i) -> __m512i {
23584    unsafe { transmute(vpermd(a.as_i32x16(), idx.as_i32x16())) }
23585}
23586
23587/// Shuffle 32-bit integers in a across lanes using the corresponding index in idx, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23588///
23589/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_permutexvar_epi32&expand=4299)
23590#[inline]
23591#[target_feature(enable = "avx512f")]
23592#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23593#[cfg_attr(test, assert_instr(vpermd))]
23594pub fn _mm512_mask_permutexvar_epi32(
23595    src: __m512i,
23596    k: __mmask16,
23597    idx: __m512i,
23598    a: __m512i,
23599) -> __m512i {
23600    unsafe {
23601        let permute = _mm512_permutexvar_epi32(idx, a).as_i32x16();
23602        transmute(simd_select_bitmask(k, permute, src.as_i32x16()))
23603    }
23604}
23605
23606/// Shuffle 32-bit integers in a across lanes using the corresponding index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23607///
23608/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_permutexvar_epi32&expand=4300)
23609#[inline]
23610#[target_feature(enable = "avx512f")]
23611#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23612#[cfg_attr(test, assert_instr(vpermd))]
23613pub fn _mm512_maskz_permutexvar_epi32(k: __mmask16, idx: __m512i, a: __m512i) -> __m512i {
23614    unsafe {
23615        let permute = _mm512_permutexvar_epi32(idx, a).as_i32x16();
23616        transmute(simd_select_bitmask(k, permute, i32x16::ZERO))
23617    }
23618}
23619
23620/// Shuffle 32-bit integers in a across lanes using the corresponding index in idx, and store the results in dst.
23621///
23622/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_permutexvar_epi32&expand=4298)
23623#[inline]
23624#[target_feature(enable = "avx512f,avx512vl")]
23625#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23626#[cfg_attr(test, assert_instr(vperm))] //should be vpermd
23627pub fn _mm256_permutexvar_epi32(idx: __m256i, a: __m256i) -> __m256i {
23628    _mm256_permutevar8x32_epi32(a, idx) // llvm use llvm.x86.avx2.permd
23629}
23630
23631/// Shuffle 32-bit integers in a across lanes using the corresponding index in idx, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23632///
23633/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_permutexvar_epi32&expand=4296)
23634#[inline]
23635#[target_feature(enable = "avx512f,avx512vl")]
23636#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23637#[cfg_attr(test, assert_instr(vpermd))]
23638pub fn _mm256_mask_permutexvar_epi32(
23639    src: __m256i,
23640    k: __mmask8,
23641    idx: __m256i,
23642    a: __m256i,
23643) -> __m256i {
23644    unsafe {
23645        let permute = _mm256_permutexvar_epi32(idx, a).as_i32x8();
23646        transmute(simd_select_bitmask(k, permute, src.as_i32x8()))
23647    }
23648}
23649
23650/// Shuffle 32-bit integers in a across lanes using the corresponding index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23651///
23652/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_permutexvar_epi32&expand=4297)
23653#[inline]
23654#[target_feature(enable = "avx512f,avx512vl")]
23655#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23656#[cfg_attr(test, assert_instr(vpermd))]
23657pub fn _mm256_maskz_permutexvar_epi32(k: __mmask8, idx: __m256i, a: __m256i) -> __m256i {
23658    unsafe {
23659        let permute = _mm256_permutexvar_epi32(idx, a).as_i32x8();
23660        transmute(simd_select_bitmask(k, permute, i32x8::ZERO))
23661    }
23662}
23663
23664/// Shuffle 64-bit integers in a across lanes using the corresponding index in idx, and store the results in dst.
23665///
23666/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_permutexvar_epi64&expand=4307)
23667#[inline]
23668#[target_feature(enable = "avx512f")]
23669#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23670#[cfg_attr(test, assert_instr(vperm))] //should be vpermq
23671pub fn _mm512_permutexvar_epi64(idx: __m512i, a: __m512i) -> __m512i {
23672    unsafe { transmute(vpermq(a.as_i64x8(), idx.as_i64x8())) }
23673}
23674
23675/// Shuffle 64-bit integers in a across lanes using the corresponding index in idx, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23676///
23677/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_permutexvar_epi64&expand=4305)
23678#[inline]
23679#[target_feature(enable = "avx512f")]
23680#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23681#[cfg_attr(test, assert_instr(vpermq))]
23682pub fn _mm512_mask_permutexvar_epi64(
23683    src: __m512i,
23684    k: __mmask8,
23685    idx: __m512i,
23686    a: __m512i,
23687) -> __m512i {
23688    unsafe {
23689        let permute = _mm512_permutexvar_epi64(idx, a).as_i64x8();
23690        transmute(simd_select_bitmask(k, permute, src.as_i64x8()))
23691    }
23692}
23693
23694/// Shuffle 64-bit integers in a across lanes using the corresponding index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23695///
23696/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_permutexvar_epi64&expand=4306)
23697#[inline]
23698#[target_feature(enable = "avx512f")]
23699#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23700#[cfg_attr(test, assert_instr(vpermq))]
23701pub fn _mm512_maskz_permutexvar_epi64(k: __mmask8, idx: __m512i, a: __m512i) -> __m512i {
23702    unsafe {
23703        let permute = _mm512_permutexvar_epi64(idx, a).as_i64x8();
23704        transmute(simd_select_bitmask(k, permute, i64x8::ZERO))
23705    }
23706}
23707
23708/// Shuffle 64-bit integers in a across lanes using the corresponding index in idx, and store the results in dst.
23709///
23710/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_permutexvar_epi64&expand=4304)
23711#[inline]
23712#[target_feature(enable = "avx512f,avx512vl")]
23713#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23714#[cfg_attr(test, assert_instr(vperm))] //should be vpermq
23715pub fn _mm256_permutexvar_epi64(idx: __m256i, a: __m256i) -> __m256i {
23716    unsafe { transmute(vpermq256(a.as_i64x4(), idx.as_i64x4())) }
23717}
23718
23719/// Shuffle 64-bit integers in a across lanes using the corresponding index in idx, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23720///
23721/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_permutexvar_epi64&expand=4302)
23722#[inline]
23723#[target_feature(enable = "avx512f,avx512vl")]
23724#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23725#[cfg_attr(test, assert_instr(vpermq))]
23726pub fn _mm256_mask_permutexvar_epi64(
23727    src: __m256i,
23728    k: __mmask8,
23729    idx: __m256i,
23730    a: __m256i,
23731) -> __m256i {
23732    unsafe {
23733        let permute = _mm256_permutexvar_epi64(idx, a).as_i64x4();
23734        transmute(simd_select_bitmask(k, permute, src.as_i64x4()))
23735    }
23736}
23737
23738/// Shuffle 64-bit integers in a across lanes using the corresponding index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23739///
23740/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_permutexvar_epi64&expand=4303)
23741#[inline]
23742#[target_feature(enable = "avx512f,avx512vl")]
23743#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23744#[cfg_attr(test, assert_instr(vpermq))]
23745pub fn _mm256_maskz_permutexvar_epi64(k: __mmask8, idx: __m256i, a: __m256i) -> __m256i {
23746    unsafe {
23747        let permute = _mm256_permutexvar_epi64(idx, a).as_i64x4();
23748        transmute(simd_select_bitmask(k, permute, i64x4::ZERO))
23749    }
23750}
23751
23752/// Shuffle single-precision (32-bit) floating-point elements in a across lanes using the corresponding index in idx.
23753///
23754/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_permutexvar_ps&expand=4200)
23755#[inline]
23756#[target_feature(enable = "avx512f")]
23757#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23758#[cfg_attr(test, assert_instr(vpermps))]
23759pub fn _mm512_permutexvar_ps(idx: __m512i, a: __m512) -> __m512 {
23760    unsafe { transmute(vpermps(a.as_f32x16(), idx.as_i32x16())) }
23761}
23762
23763/// Shuffle single-precision (32-bit) floating-point elements in a across lanes using the corresponding index in idx, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23764///
23765/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_permutexvar_ps&expand=4326)
23766#[inline]
23767#[target_feature(enable = "avx512f")]
23768#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23769#[cfg_attr(test, assert_instr(vpermps))]
23770pub fn _mm512_mask_permutexvar_ps(src: __m512, k: __mmask16, idx: __m512i, a: __m512) -> __m512 {
23771    unsafe {
23772        let permute = _mm512_permutexvar_ps(idx, a).as_f32x16();
23773        transmute(simd_select_bitmask(k, permute, src.as_f32x16()))
23774    }
23775}
23776
23777/// Shuffle single-precision (32-bit) floating-point elements in a across lanes using the corresponding index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23778///
23779/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_permutexvar_ps&expand=4327)
23780#[inline]
23781#[target_feature(enable = "avx512f")]
23782#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23783#[cfg_attr(test, assert_instr(vpermps))]
23784pub fn _mm512_maskz_permutexvar_ps(k: __mmask16, idx: __m512i, a: __m512) -> __m512 {
23785    unsafe {
23786        let permute = _mm512_permutexvar_ps(idx, a).as_f32x16();
23787        transmute(simd_select_bitmask(k, permute, f32x16::ZERO))
23788    }
23789}
23790
23791/// Shuffle single-precision (32-bit) floating-point elements in a across lanes using the corresponding index in idx.
23792///
23793/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_permutexvar_ps&expand=4325)
23794#[inline]
23795#[target_feature(enable = "avx512f,avx512vl")]
23796#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23797#[cfg_attr(test, assert_instr(vpermps))]
23798pub fn _mm256_permutexvar_ps(idx: __m256i, a: __m256) -> __m256 {
23799    _mm256_permutevar8x32_ps(a, idx) //llvm.x86.avx2.permps
23800}
23801
23802/// Shuffle single-precision (32-bit) floating-point elements in a across lanes using the corresponding index in idx, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23803///
23804/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_permutexvar_ps&expand=4323)
23805#[inline]
23806#[target_feature(enable = "avx512f,avx512vl")]
23807#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23808#[cfg_attr(test, assert_instr(vpermps))]
23809pub fn _mm256_mask_permutexvar_ps(src: __m256, k: __mmask8, idx: __m256i, a: __m256) -> __m256 {
23810    unsafe {
23811        let permute = _mm256_permutexvar_ps(idx, a).as_f32x8();
23812        transmute(simd_select_bitmask(k, permute, src.as_f32x8()))
23813    }
23814}
23815
23816/// Shuffle single-precision (32-bit) floating-point elements in a across lanes using the corresponding index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23817///
23818/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_permutexvar_ps&expand=4324)
23819#[inline]
23820#[target_feature(enable = "avx512f,avx512vl")]
23821#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23822#[cfg_attr(test, assert_instr(vpermps))]
23823pub fn _mm256_maskz_permutexvar_ps(k: __mmask8, idx: __m256i, a: __m256) -> __m256 {
23824    unsafe {
23825        let permute = _mm256_permutexvar_ps(idx, a).as_f32x8();
23826        transmute(simd_select_bitmask(k, permute, f32x8::ZERO))
23827    }
23828}
23829
23830/// Shuffle double-precision (64-bit) floating-point elements in a across lanes using the corresponding index in idx, and store the results in dst.
23831///
23832/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_permutexvar_pd&expand=4322)
23833#[inline]
23834#[target_feature(enable = "avx512f")]
23835#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23836#[cfg_attr(test, assert_instr(vpermpd))]
23837pub fn _mm512_permutexvar_pd(idx: __m512i, a: __m512d) -> __m512d {
23838    unsafe { transmute(vpermpd(a.as_f64x8(), idx.as_i64x8())) }
23839}
23840
23841/// Shuffle double-precision (64-bit) floating-point elements in a across lanes using the corresponding index in idx, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23842///
23843/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_permutexvar_pd&expand=4320)
23844#[inline]
23845#[target_feature(enable = "avx512f")]
23846#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23847#[cfg_attr(test, assert_instr(vpermpd))]
23848pub fn _mm512_mask_permutexvar_pd(src: __m512d, k: __mmask8, idx: __m512i, a: __m512d) -> __m512d {
23849    unsafe {
23850        let permute = _mm512_permutexvar_pd(idx, a).as_f64x8();
23851        transmute(simd_select_bitmask(k, permute, src.as_f64x8()))
23852    }
23853}
23854
23855/// Shuffle double-precision (64-bit) floating-point elements in a across lanes using the corresponding index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23856///
23857/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_permutexvar_pd&expand=4321)
23858#[inline]
23859#[target_feature(enable = "avx512f")]
23860#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23861#[cfg_attr(test, assert_instr(vpermpd))]
23862pub fn _mm512_maskz_permutexvar_pd(k: __mmask8, idx: __m512i, a: __m512d) -> __m512d {
23863    unsafe {
23864        let permute = _mm512_permutexvar_pd(idx, a).as_f64x8();
23865        transmute(simd_select_bitmask(k, permute, f64x8::ZERO))
23866    }
23867}
23868
23869/// Shuffle double-precision (64-bit) floating-point elements in a across lanes using the corresponding index in idx, and store the results in dst.
23870///
23871/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_permutexvar_pd&expand=4319)
23872#[inline]
23873#[target_feature(enable = "avx512f,avx512vl")]
23874#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23875#[cfg_attr(test, assert_instr(vpermpd))]
23876pub fn _mm256_permutexvar_pd(idx: __m256i, a: __m256d) -> __m256d {
23877    unsafe { transmute(vpermpd256(a.as_f64x4(), idx.as_i64x4())) }
23878}
23879
23880/// Shuffle double-precision (64-bit) floating-point elements in a across lanes using the corresponding index in idx, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
23881///
23882/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_permutexvar_pd&expand=4317)
23883#[inline]
23884#[target_feature(enable = "avx512f,avx512vl")]
23885#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23886#[cfg_attr(test, assert_instr(vpermpd))]
23887pub fn _mm256_mask_permutexvar_pd(src: __m256d, k: __mmask8, idx: __m256i, a: __m256d) -> __m256d {
23888    unsafe {
23889        let permute = _mm256_permutexvar_pd(idx, a).as_f64x4();
23890        transmute(simd_select_bitmask(k, permute, src.as_f64x4()))
23891    }
23892}
23893
23894/// Shuffle double-precision (64-bit) floating-point elements in a across lanes using the corresponding index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23895///
23896/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_permutexvar_pd&expand=4318)
23897#[inline]
23898#[target_feature(enable = "avx512f,avx512vl")]
23899#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23900#[cfg_attr(test, assert_instr(vpermpd))]
23901pub fn _mm256_maskz_permutexvar_pd(k: __mmask8, idx: __m256i, a: __m256d) -> __m256d {
23902    unsafe {
23903        let permute = _mm256_permutexvar_pd(idx, a).as_f64x4();
23904        transmute(simd_select_bitmask(k, permute, f64x4::ZERO))
23905    }
23906}
23907
23908/// Shuffle 32-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst.
23909///
23910/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_permutex2var_epi32&expand=4238)
23911#[inline]
23912#[target_feature(enable = "avx512f")]
23913#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23914#[cfg_attr(test, assert_instr(vperm))] //vpermi2d or vpermt2d
23915pub fn _mm512_permutex2var_epi32(a: __m512i, idx: __m512i, b: __m512i) -> __m512i {
23916    unsafe { transmute(vpermi2d(a.as_i32x16(), idx.as_i32x16(), b.as_i32x16())) }
23917}
23918
23919/// Shuffle 32-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
23920///
23921/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_permutex2var_epi32&expand=4235)
23922#[inline]
23923#[target_feature(enable = "avx512f")]
23924#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23925#[cfg_attr(test, assert_instr(vpermt2d))]
23926pub fn _mm512_mask_permutex2var_epi32(
23927    a: __m512i,
23928    k: __mmask16,
23929    idx: __m512i,
23930    b: __m512i,
23931) -> __m512i {
23932    unsafe {
23933        let permute = _mm512_permutex2var_epi32(a, idx, b).as_i32x16();
23934        transmute(simd_select_bitmask(k, permute, a.as_i32x16()))
23935    }
23936}
23937
23938/// Shuffle 32-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
23939///
23940/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_permutex2var_epi32&expand=4237)
23941#[inline]
23942#[target_feature(enable = "avx512f")]
23943#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23944#[cfg_attr(test, assert_instr(vperm))] //vpermi2d or vpermt2d
23945pub fn _mm512_maskz_permutex2var_epi32(
23946    k: __mmask16,
23947    a: __m512i,
23948    idx: __m512i,
23949    b: __m512i,
23950) -> __m512i {
23951    unsafe {
23952        let permute = _mm512_permutex2var_epi32(a, idx, b).as_i32x16();
23953        transmute(simd_select_bitmask(k, permute, i32x16::ZERO))
23954    }
23955}
23956
23957/// Shuffle 32-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from idx when the corresponding mask bit is not set).
23958///
23959/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask2_permutex2var_epi32&expand=4236)
23960#[inline]
23961#[target_feature(enable = "avx512f")]
23962#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23963#[cfg_attr(test, assert_instr(vpermi2d))]
23964pub fn _mm512_mask2_permutex2var_epi32(
23965    a: __m512i,
23966    idx: __m512i,
23967    k: __mmask16,
23968    b: __m512i,
23969) -> __m512i {
23970    unsafe {
23971        let permute = _mm512_permutex2var_epi32(a, idx, b).as_i32x16();
23972        transmute(simd_select_bitmask(k, permute, idx.as_i32x16()))
23973    }
23974}
23975
23976/// Shuffle 32-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst.
23977///
23978/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_permutex2var_epi32&expand=4234)
23979#[inline]
23980#[target_feature(enable = "avx512f,avx512vl")]
23981#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23982#[cfg_attr(test, assert_instr(vperm))] //vpermi2d or vpermt2d
23983pub fn _mm256_permutex2var_epi32(a: __m256i, idx: __m256i, b: __m256i) -> __m256i {
23984    unsafe { transmute(vpermi2d256(a.as_i32x8(), idx.as_i32x8(), b.as_i32x8())) }
23985}
23986
23987/// Shuffle 32-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
23988///
23989/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_permutex2var_epi32&expand=4231)
23990#[inline]
23991#[target_feature(enable = "avx512f,avx512vl")]
23992#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
23993#[cfg_attr(test, assert_instr(vpermt2d))]
23994pub fn _mm256_mask_permutex2var_epi32(
23995    a: __m256i,
23996    k: __mmask8,
23997    idx: __m256i,
23998    b: __m256i,
23999) -> __m256i {
24000    unsafe {
24001        let permute = _mm256_permutex2var_epi32(a, idx, b).as_i32x8();
24002        transmute(simd_select_bitmask(k, permute, a.as_i32x8()))
24003    }
24004}
24005
24006/// Shuffle 32-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
24007///
24008/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_permutex2var_epi32&expand=4233)
24009#[inline]
24010#[target_feature(enable = "avx512f,avx512vl")]
24011#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24012#[cfg_attr(test, assert_instr(vperm))] //vpermi2d or vpermt2d
24013pub fn _mm256_maskz_permutex2var_epi32(
24014    k: __mmask8,
24015    a: __m256i,
24016    idx: __m256i,
24017    b: __m256i,
24018) -> __m256i {
24019    unsafe {
24020        let permute = _mm256_permutex2var_epi32(a, idx, b).as_i32x8();
24021        transmute(simd_select_bitmask(k, permute, i32x8::ZERO))
24022    }
24023}
24024
24025/// Shuffle 32-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from idx when the corresponding mask bit is not set).
24026///
24027/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask2_permutex2var_epi32&expand=4232)
24028#[inline]
24029#[target_feature(enable = "avx512f,avx512vl")]
24030#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24031#[cfg_attr(test, assert_instr(vpermi2d))]
24032pub fn _mm256_mask2_permutex2var_epi32(
24033    a: __m256i,
24034    idx: __m256i,
24035    k: __mmask8,
24036    b: __m256i,
24037) -> __m256i {
24038    unsafe {
24039        let permute = _mm256_permutex2var_epi32(a, idx, b).as_i32x8();
24040        transmute(simd_select_bitmask(k, permute, idx.as_i32x8()))
24041    }
24042}
24043
24044/// Shuffle 32-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst.
24045///
24046/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_permutex2var_epi32&expand=4230)
24047#[inline]
24048#[target_feature(enable = "avx512f,avx512vl")]
24049#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24050#[cfg_attr(test, assert_instr(vperm))] //vpermi2d or vpermt2d
24051pub fn _mm_permutex2var_epi32(a: __m128i, idx: __m128i, b: __m128i) -> __m128i {
24052    unsafe { transmute(vpermi2d128(a.as_i32x4(), idx.as_i32x4(), b.as_i32x4())) }
24053}
24054
24055/// Shuffle 32-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
24056///
24057/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_permutex2var_epi32&expand=4227)
24058#[inline]
24059#[target_feature(enable = "avx512f,avx512vl")]
24060#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24061#[cfg_attr(test, assert_instr(vpermt2d))]
24062pub fn _mm_mask_permutex2var_epi32(a: __m128i, k: __mmask8, idx: __m128i, b: __m128i) -> __m128i {
24063    unsafe {
24064        let permute = _mm_permutex2var_epi32(a, idx, b).as_i32x4();
24065        transmute(simd_select_bitmask(k, permute, a.as_i32x4()))
24066    }
24067}
24068
24069/// Shuffle 32-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
24070///
24071/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_permutex2var_epi32&expand=4229)
24072#[inline]
24073#[target_feature(enable = "avx512f,avx512vl")]
24074#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24075#[cfg_attr(test, assert_instr(vperm))] //vpermi2d or vpermt2d
24076pub fn _mm_maskz_permutex2var_epi32(k: __mmask8, a: __m128i, idx: __m128i, b: __m128i) -> __m128i {
24077    unsafe {
24078        let permute = _mm_permutex2var_epi32(a, idx, b).as_i32x4();
24079        transmute(simd_select_bitmask(k, permute, i32x4::ZERO))
24080    }
24081}
24082
24083/// Shuffle 32-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from idx when the corresponding mask bit is not set).
24084///
24085/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask2_permutex2var_epi32&expand=4228)
24086#[inline]
24087#[target_feature(enable = "avx512f,avx512vl")]
24088#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24089#[cfg_attr(test, assert_instr(vpermi2d))]
24090pub fn _mm_mask2_permutex2var_epi32(a: __m128i, idx: __m128i, k: __mmask8, b: __m128i) -> __m128i {
24091    unsafe {
24092        let permute = _mm_permutex2var_epi32(a, idx, b).as_i32x4();
24093        transmute(simd_select_bitmask(k, permute, idx.as_i32x4()))
24094    }
24095}
24096
24097/// Shuffle 64-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst.
24098///
24099/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_permutex2var_epi64&expand=4250)
24100#[inline]
24101#[target_feature(enable = "avx512f")]
24102#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24103#[cfg_attr(test, assert_instr(vperm))] //vpermi2q or vpermt2q
24104pub fn _mm512_permutex2var_epi64(a: __m512i, idx: __m512i, b: __m512i) -> __m512i {
24105    unsafe { transmute(vpermi2q(a.as_i64x8(), idx.as_i64x8(), b.as_i64x8())) }
24106}
24107
24108/// Shuffle 64-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
24109///
24110/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_permutex2var_epi64&expand=4247)
24111#[inline]
24112#[target_feature(enable = "avx512f")]
24113#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24114#[cfg_attr(test, assert_instr(vpermt2q))]
24115pub fn _mm512_mask_permutex2var_epi64(
24116    a: __m512i,
24117    k: __mmask8,
24118    idx: __m512i,
24119    b: __m512i,
24120) -> __m512i {
24121    unsafe {
24122        let permute = _mm512_permutex2var_epi64(a, idx, b).as_i64x8();
24123        transmute(simd_select_bitmask(k, permute, a.as_i64x8()))
24124    }
24125}
24126
24127/// Shuffle 64-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
24128///
24129/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_permutex2var_epi64&expand=4249)
24130#[inline]
24131#[target_feature(enable = "avx512f")]
24132#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24133#[cfg_attr(test, assert_instr(vperm))] //vpermi2q or vpermt2q
24134pub fn _mm512_maskz_permutex2var_epi64(
24135    k: __mmask8,
24136    a: __m512i,
24137    idx: __m512i,
24138    b: __m512i,
24139) -> __m512i {
24140    unsafe {
24141        let permute = _mm512_permutex2var_epi64(a, idx, b).as_i64x8();
24142        transmute(simd_select_bitmask(k, permute, i64x8::ZERO))
24143    }
24144}
24145
24146/// Shuffle 64-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from idx when the corresponding mask bit is not set).
24147///
24148/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask2_permutex2var_epi64&expand=4248)
24149#[inline]
24150#[target_feature(enable = "avx512f")]
24151#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24152#[cfg_attr(test, assert_instr(vpermi2q))]
24153pub fn _mm512_mask2_permutex2var_epi64(
24154    a: __m512i,
24155    idx: __m512i,
24156    k: __mmask8,
24157    b: __m512i,
24158) -> __m512i {
24159    unsafe {
24160        let permute = _mm512_permutex2var_epi64(a, idx, b).as_i64x8();
24161        transmute(simd_select_bitmask(k, permute, idx.as_i64x8()))
24162    }
24163}
24164
24165/// Shuffle 64-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst.
24166///
24167/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_permutex2var_epi64&expand=4246)
24168#[inline]
24169#[target_feature(enable = "avx512f,avx512vl")]
24170#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24171#[cfg_attr(test, assert_instr(vperm))] //vpermi2q or vpermt2q
24172pub fn _mm256_permutex2var_epi64(a: __m256i, idx: __m256i, b: __m256i) -> __m256i {
24173    unsafe { transmute(vpermi2q256(a.as_i64x4(), idx.as_i64x4(), b.as_i64x4())) }
24174}
24175
24176/// Shuffle 64-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
24177///
24178/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_permutex2var_epi64&expand=4243)
24179#[inline]
24180#[target_feature(enable = "avx512f,avx512vl")]
24181#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24182#[cfg_attr(test, assert_instr(vpermt2q))]
24183pub fn _mm256_mask_permutex2var_epi64(
24184    a: __m256i,
24185    k: __mmask8,
24186    idx: __m256i,
24187    b: __m256i,
24188) -> __m256i {
24189    unsafe {
24190        let permute = _mm256_permutex2var_epi64(a, idx, b).as_i64x4();
24191        transmute(simd_select_bitmask(k, permute, a.as_i64x4()))
24192    }
24193}
24194
24195/// Shuffle 64-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
24196///
24197/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_permutex2var_epi64&expand=4245)
24198#[inline]
24199#[target_feature(enable = "avx512f,avx512vl")]
24200#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24201#[cfg_attr(test, assert_instr(vperm))] //vpermi2q or vpermt2q
24202pub fn _mm256_maskz_permutex2var_epi64(
24203    k: __mmask8,
24204    a: __m256i,
24205    idx: __m256i,
24206    b: __m256i,
24207) -> __m256i {
24208    unsafe {
24209        let permute = _mm256_permutex2var_epi64(a, idx, b).as_i64x4();
24210        transmute(simd_select_bitmask(k, permute, i64x4::ZERO))
24211    }
24212}
24213
24214/// Shuffle 64-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from idx when the corresponding mask bit is not set).
24215///
24216/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask2_permutex2var_epi64&expand=4244)
24217#[inline]
24218#[target_feature(enable = "avx512f,avx512vl")]
24219#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24220#[cfg_attr(test, assert_instr(vpermi2q))]
24221pub fn _mm256_mask2_permutex2var_epi64(
24222    a: __m256i,
24223    idx: __m256i,
24224    k: __mmask8,
24225    b: __m256i,
24226) -> __m256i {
24227    unsafe {
24228        let permute = _mm256_permutex2var_epi64(a, idx, b).as_i64x4();
24229        transmute(simd_select_bitmask(k, permute, idx.as_i64x4()))
24230    }
24231}
24232
24233/// Shuffle 64-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst.
24234///
24235/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_permutex2var_epi64&expand=4242)
24236#[inline]
24237#[target_feature(enable = "avx512f,avx512vl")]
24238#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24239#[cfg_attr(test, assert_instr(vperm))] //vpermi2q or vpermt2q
24240pub fn _mm_permutex2var_epi64(a: __m128i, idx: __m128i, b: __m128i) -> __m128i {
24241    unsafe { transmute(vpermi2q128(a.as_i64x2(), idx.as_i64x2(), b.as_i64x2())) }
24242}
24243
24244/// Shuffle 64-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
24245///
24246/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_permutex2var_epi64&expand=4239)
24247#[inline]
24248#[target_feature(enable = "avx512f,avx512vl")]
24249#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24250#[cfg_attr(test, assert_instr(vpermt2q))]
24251pub fn _mm_mask_permutex2var_epi64(a: __m128i, k: __mmask8, idx: __m128i, b: __m128i) -> __m128i {
24252    unsafe {
24253        let permute = _mm_permutex2var_epi64(a, idx, b).as_i64x2();
24254        transmute(simd_select_bitmask(k, permute, a.as_i64x2()))
24255    }
24256}
24257
24258/// Shuffle 64-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
24259///
24260/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_permutex2var_epi64&expand=4241)
24261#[inline]
24262#[target_feature(enable = "avx512f,avx512vl")]
24263#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24264#[cfg_attr(test, assert_instr(vperm))] //vpermi2q or vpermt2q
24265pub fn _mm_maskz_permutex2var_epi64(k: __mmask8, a: __m128i, idx: __m128i, b: __m128i) -> __m128i {
24266    unsafe {
24267        let permute = _mm_permutex2var_epi64(a, idx, b).as_i64x2();
24268        transmute(simd_select_bitmask(k, permute, i64x2::ZERO))
24269    }
24270}
24271
24272/// Shuffle 64-bit integers in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from idx when the corresponding mask bit is not set).
24273///
24274/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask2_permutex2var_epi64&expand=4240)
24275#[inline]
24276#[target_feature(enable = "avx512f,avx512vl")]
24277#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24278#[cfg_attr(test, assert_instr(vpermi2q))]
24279pub fn _mm_mask2_permutex2var_epi64(a: __m128i, idx: __m128i, k: __mmask8, b: __m128i) -> __m128i {
24280    unsafe {
24281        let permute = _mm_permutex2var_epi64(a, idx, b).as_i64x2();
24282        transmute(simd_select_bitmask(k, permute, idx.as_i64x2()))
24283    }
24284}
24285
24286/// Shuffle single-precision (32-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst.
24287///
24288/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_permutex2var_ps&expand=4286)
24289#[inline]
24290#[target_feature(enable = "avx512f")]
24291#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24292#[cfg_attr(test, assert_instr(vperm))] //vpermi2ps or vpermt2ps
24293pub fn _mm512_permutex2var_ps(a: __m512, idx: __m512i, b: __m512) -> __m512 {
24294    unsafe { transmute(vpermi2ps(a.as_f32x16(), idx.as_i32x16(), b.as_f32x16())) }
24295}
24296
24297/// Shuffle single-precision (32-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
24298///
24299/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_permutex2var_ps&expand=4283)
24300#[inline]
24301#[target_feature(enable = "avx512f")]
24302#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24303#[cfg_attr(test, assert_instr(vpermt2ps))]
24304pub fn _mm512_mask_permutex2var_ps(a: __m512, k: __mmask16, idx: __m512i, b: __m512) -> __m512 {
24305    unsafe {
24306        let permute = _mm512_permutex2var_ps(a, idx, b).as_f32x16();
24307        transmute(simd_select_bitmask(k, permute, a.as_f32x16()))
24308    }
24309}
24310
24311/// Shuffle single-precision (32-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
24312///
24313/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_permutex2var_ps&expand=4285)
24314#[inline]
24315#[target_feature(enable = "avx512f")]
24316#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24317#[cfg_attr(test, assert_instr(vperm))] //vpermi2ps or vpermt2ps
24318pub fn _mm512_maskz_permutex2var_ps(k: __mmask16, a: __m512, idx: __m512i, b: __m512) -> __m512 {
24319    unsafe {
24320        let permute = _mm512_permutex2var_ps(a, idx, b).as_f32x16();
24321        transmute(simd_select_bitmask(k, permute, f32x16::ZERO))
24322    }
24323}
24324
24325/// Shuffle single-precision (32-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from idx when the corresponding mask bit is not set).
24326///
24327/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask2_permutex2var_ps&expand=4284)
24328#[inline]
24329#[target_feature(enable = "avx512f")]
24330#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24331#[cfg_attr(test, assert_instr(vperm))] //should be vpermi2ps, but it shows vpermt2ps
24332pub fn _mm512_mask2_permutex2var_ps(a: __m512, idx: __m512i, k: __mmask16, b: __m512) -> __m512 {
24333    unsafe {
24334        let permute = _mm512_permutex2var_ps(a, idx, b).as_f32x16();
24335        let idx = _mm512_castsi512_ps(idx).as_f32x16();
24336        transmute(simd_select_bitmask(k, permute, idx))
24337    }
24338}
24339
24340/// Shuffle single-precision (32-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst.
24341///
24342/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_permutex2var_ps&expand=4282)
24343#[inline]
24344#[target_feature(enable = "avx512f,avx512vl")]
24345#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24346#[cfg_attr(test, assert_instr(vperm))] //vpermi2ps or vpermt2ps
24347pub fn _mm256_permutex2var_ps(a: __m256, idx: __m256i, b: __m256) -> __m256 {
24348    unsafe { transmute(vpermi2ps256(a.as_f32x8(), idx.as_i32x8(), b.as_f32x8())) }
24349}
24350
24351/// Shuffle single-precision (32-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
24352///
24353/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_permutex2var_ps&expand=4279)
24354#[inline]
24355#[target_feature(enable = "avx512f,avx512vl")]
24356#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24357#[cfg_attr(test, assert_instr(vpermt2ps))]
24358pub fn _mm256_mask_permutex2var_ps(a: __m256, k: __mmask8, idx: __m256i, b: __m256) -> __m256 {
24359    unsafe {
24360        let permute = _mm256_permutex2var_ps(a, idx, b).as_f32x8();
24361        transmute(simd_select_bitmask(k, permute, a.as_f32x8()))
24362    }
24363}
24364
24365/// Shuffle single-precision (32-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
24366///
24367/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_permutex2var_ps&expand=4281)
24368#[inline]
24369#[target_feature(enable = "avx512f,avx512vl")]
24370#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24371#[cfg_attr(test, assert_instr(vperm))] //vpermi2ps or vpermt2ps
24372pub fn _mm256_maskz_permutex2var_ps(k: __mmask8, a: __m256, idx: __m256i, b: __m256) -> __m256 {
24373    unsafe {
24374        let permute = _mm256_permutex2var_ps(a, idx, b).as_f32x8();
24375        transmute(simd_select_bitmask(k, permute, f32x8::ZERO))
24376    }
24377}
24378
24379/// Shuffle single-precision (32-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from idx when the corresponding mask bit is not set).
24380///
24381/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask2_permutex2var_ps&expand=4280)
24382#[inline]
24383#[target_feature(enable = "avx512f,avx512vl")]
24384#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24385#[cfg_attr(test, assert_instr(vperm))] //should be vpermi2ps, but it shows vpermt2ps
24386pub fn _mm256_mask2_permutex2var_ps(a: __m256, idx: __m256i, k: __mmask8, b: __m256) -> __m256 {
24387    unsafe {
24388        let permute = _mm256_permutex2var_ps(a, idx, b).as_f32x8();
24389        let idx = _mm256_castsi256_ps(idx).as_f32x8();
24390        transmute(simd_select_bitmask(k, permute, idx))
24391    }
24392}
24393
24394/// Shuffle single-precision (32-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst.
24395///
24396/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_permutex2var_ps&expand=4278)
24397#[inline]
24398#[target_feature(enable = "avx512f,avx512vl")]
24399#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24400#[cfg_attr(test, assert_instr(vperm))] //vpermi2ps or vpermt2ps
24401pub fn _mm_permutex2var_ps(a: __m128, idx: __m128i, b: __m128) -> __m128 {
24402    unsafe { transmute(vpermi2ps128(a.as_f32x4(), idx.as_i32x4(), b.as_f32x4())) }
24403}
24404
24405/// Shuffle single-precision (32-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
24406///
24407/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_permutex2var_ps&expand=4275)
24408#[inline]
24409#[target_feature(enable = "avx512f,avx512vl")]
24410#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24411#[cfg_attr(test, assert_instr(vpermt2ps))]
24412pub fn _mm_mask_permutex2var_ps(a: __m128, k: __mmask8, idx: __m128i, b: __m128) -> __m128 {
24413    unsafe {
24414        let permute = _mm_permutex2var_ps(a, idx, b).as_f32x4();
24415        transmute(simd_select_bitmask(k, permute, a.as_f32x4()))
24416    }
24417}
24418
24419/// Shuffle single-precision (32-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
24420///
24421/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_permutex2var_ps&expand=4277)
24422#[inline]
24423#[target_feature(enable = "avx512f,avx512vl")]
24424#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24425#[cfg_attr(test, assert_instr(vperm))] //vpermi2ps or vpermt2ps
24426pub fn _mm_maskz_permutex2var_ps(k: __mmask8, a: __m128, idx: __m128i, b: __m128) -> __m128 {
24427    unsafe {
24428        let permute = _mm_permutex2var_ps(a, idx, b).as_f32x4();
24429        transmute(simd_select_bitmask(k, permute, f32x4::ZERO))
24430    }
24431}
24432
24433/// Shuffle single-precision (32-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from idx when the corresponding mask bit is not set).
24434///
24435/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask2_permutex2var_ps&expand=4276)
24436#[inline]
24437#[target_feature(enable = "avx512f,avx512vl")]
24438#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24439#[cfg_attr(test, assert_instr(vperm))] //should be vpermi2ps, but it shows vpermt2ps
24440pub fn _mm_mask2_permutex2var_ps(a: __m128, idx: __m128i, k: __mmask8, b: __m128) -> __m128 {
24441    unsafe {
24442        let permute = _mm_permutex2var_ps(a, idx, b).as_f32x4();
24443        let idx = _mm_castsi128_ps(idx).as_f32x4();
24444        transmute(simd_select_bitmask(k, permute, idx))
24445    }
24446}
24447
24448/// Shuffle double-precision (64-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst.
24449///
24450/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_permutex2var_pd&expand=4274)
24451#[inline]
24452#[target_feature(enable = "avx512f")]
24453#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24454#[cfg_attr(test, assert_instr(vperm))] //vpermi2pd or vpermt2pd
24455pub fn _mm512_permutex2var_pd(a: __m512d, idx: __m512i, b: __m512d) -> __m512d {
24456    unsafe { transmute(vpermi2pd(a.as_f64x8(), idx.as_i64x8(), b.as_f64x8())) }
24457}
24458
24459/// Shuffle double-precision (64-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
24460///
24461/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_permutex2var_pd&expand=4271)
24462#[inline]
24463#[target_feature(enable = "avx512f")]
24464#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24465#[cfg_attr(test, assert_instr(vpermt2pd))]
24466pub fn _mm512_mask_permutex2var_pd(a: __m512d, k: __mmask8, idx: __m512i, b: __m512d) -> __m512d {
24467    unsafe {
24468        let permute = _mm512_permutex2var_pd(a, idx, b).as_f64x8();
24469        transmute(simd_select_bitmask(k, permute, a.as_f64x8()))
24470    }
24471}
24472
24473/// Shuffle double-precision (64-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
24474///
24475/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_permutex2var_pd&expand=4273)
24476#[inline]
24477#[target_feature(enable = "avx512f")]
24478#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24479#[cfg_attr(test, assert_instr(vperm))] //vpermi2pd or vpermt2pd
24480pub fn _mm512_maskz_permutex2var_pd(k: __mmask8, a: __m512d, idx: __m512i, b: __m512d) -> __m512d {
24481    unsafe {
24482        let permute = _mm512_permutex2var_pd(a, idx, b).as_f64x8();
24483        transmute(simd_select_bitmask(k, permute, f64x8::ZERO))
24484    }
24485}
24486
24487/// Shuffle double-precision (64-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from idx when the corresponding mask bit is not set)
24488///
24489/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask2_permutex2var_pd&expand=4272)
24490#[inline]
24491#[target_feature(enable = "avx512f")]
24492#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24493#[cfg_attr(test, assert_instr(vperm))] //should be vpermi2pd, but it shows vpermt2pd
24494pub fn _mm512_mask2_permutex2var_pd(a: __m512d, idx: __m512i, k: __mmask8, b: __m512d) -> __m512d {
24495    unsafe {
24496        let permute = _mm512_permutex2var_pd(a, idx, b).as_f64x8();
24497        let idx = _mm512_castsi512_pd(idx).as_f64x8();
24498        transmute(simd_select_bitmask(k, permute, idx))
24499    }
24500}
24501
24502/// Shuffle double-precision (64-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst.
24503///
24504/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_permutex2var_pd&expand=4270)
24505#[inline]
24506#[target_feature(enable = "avx512f,avx512vl")]
24507#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24508#[cfg_attr(test, assert_instr(vperm))] //vpermi2pd or vpermt2pd
24509pub fn _mm256_permutex2var_pd(a: __m256d, idx: __m256i, b: __m256d) -> __m256d {
24510    unsafe { transmute(vpermi2pd256(a.as_f64x4(), idx.as_i64x4(), b.as_f64x4())) }
24511}
24512
24513/// Shuffle double-precision (64-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
24514///
24515/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_permutex2var_pd&expand=4267)
24516#[inline]
24517#[target_feature(enable = "avx512f,avx512vl")]
24518#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24519#[cfg_attr(test, assert_instr(vpermt2pd))]
24520pub fn _mm256_mask_permutex2var_pd(a: __m256d, k: __mmask8, idx: __m256i, b: __m256d) -> __m256d {
24521    unsafe {
24522        let permute = _mm256_permutex2var_pd(a, idx, b).as_f64x4();
24523        transmute(simd_select_bitmask(k, permute, a.as_f64x4()))
24524    }
24525}
24526
24527/// Shuffle double-precision (64-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
24528///
24529/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_permutex2var_pd&expand=4269)
24530#[inline]
24531#[target_feature(enable = "avx512f,avx512vl")]
24532#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24533#[cfg_attr(test, assert_instr(vperm))] //vpermi2pd or vpermt2pd
24534pub fn _mm256_maskz_permutex2var_pd(k: __mmask8, a: __m256d, idx: __m256i, b: __m256d) -> __m256d {
24535    unsafe {
24536        let permute = _mm256_permutex2var_pd(a, idx, b).as_f64x4();
24537        transmute(simd_select_bitmask(k, permute, f64x4::ZERO))
24538    }
24539}
24540
24541/// Shuffle double-precision (64-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from idx when the corresponding mask bit is not set)
24542///
24543/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask2_permutex2var_pd&expand=4268)
24544#[inline]
24545#[target_feature(enable = "avx512f,avx512vl")]
24546#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24547#[cfg_attr(test, assert_instr(vperm))] //should be vpermi2pd, but it shows vpermt2pd
24548pub fn _mm256_mask2_permutex2var_pd(a: __m256d, idx: __m256i, k: __mmask8, b: __m256d) -> __m256d {
24549    unsafe {
24550        let permute = _mm256_permutex2var_pd(a, idx, b).as_f64x4();
24551        let idx = _mm256_castsi256_pd(idx).as_f64x4();
24552        transmute(simd_select_bitmask(k, permute, idx))
24553    }
24554}
24555
24556/// Shuffle double-precision (64-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst.
24557///
24558/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_permutex2var_pd&expand=4266)
24559#[inline]
24560#[target_feature(enable = "avx512f,avx512vl")]
24561#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24562#[cfg_attr(test, assert_instr(vperm))] //vpermi2pd or vpermt2pd
24563pub fn _mm_permutex2var_pd(a: __m128d, idx: __m128i, b: __m128d) -> __m128d {
24564    unsafe { transmute(vpermi2pd128(a.as_f64x2(), idx.as_i64x2(), b.as_f64x2())) }
24565}
24566
24567/// Shuffle double-precision (64-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from a when the corresponding mask bit is not set).
24568///
24569/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_permutex2var_pd&expand=4263)
24570#[inline]
24571#[target_feature(enable = "avx512f,avx512vl")]
24572#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24573#[cfg_attr(test, assert_instr(vpermt2pd))]
24574pub fn _mm_mask_permutex2var_pd(a: __m128d, k: __mmask8, idx: __m128i, b: __m128d) -> __m128d {
24575    unsafe {
24576        let permute = _mm_permutex2var_pd(a, idx, b).as_f64x2();
24577        transmute(simd_select_bitmask(k, permute, a.as_f64x2()))
24578    }
24579}
24580
24581/// Shuffle double-precision (64-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
24582///
24583/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_permutex2var_pd&expand=4265)
24584#[inline]
24585#[target_feature(enable = "avx512f,avx512vl")]
24586#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24587#[cfg_attr(test, assert_instr(vperm))] //vpermi2pd or vpermt2pd
24588pub fn _mm_maskz_permutex2var_pd(k: __mmask8, a: __m128d, idx: __m128i, b: __m128d) -> __m128d {
24589    unsafe {
24590        let permute = _mm_permutex2var_pd(a, idx, b).as_f64x2();
24591        transmute(simd_select_bitmask(k, permute, f64x2::ZERO))
24592    }
24593}
24594
24595/// Shuffle double-precision (64-bit) floating-point elements in a and b across lanes using the corresponding selector and index in idx, and store the results in dst using writemask k (elements are copied from idx when the corresponding mask bit is not set)
24596///
24597/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask2_permutex2var_pd&expand=4264)
24598#[inline]
24599#[target_feature(enable = "avx512f,avx512vl")]
24600#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24601#[cfg_attr(test, assert_instr(vperm))] //should be vpermi2pd, but it shows vpermt2pd
24602pub fn _mm_mask2_permutex2var_pd(a: __m128d, idx: __m128i, k: __mmask8, b: __m128d) -> __m128d {
24603    unsafe {
24604        let permute = _mm_permutex2var_pd(a, idx, b).as_f64x2();
24605        let idx = _mm_castsi128_pd(idx).as_f64x2();
24606        transmute(simd_select_bitmask(k, permute, idx))
24607    }
24608}
24609
24610/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst.
24611///
24612/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_shuffle_epi32&expand=5150)
24613#[inline]
24614#[target_feature(enable = "avx512f")]
24615#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24616#[cfg_attr(test, assert_instr(vshufps, MASK = 9))] //should be vpshufd
24617#[rustc_legacy_const_generics(1)]
24618#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
24619pub const fn _mm512_shuffle_epi32<const MASK: _MM_PERM_ENUM>(a: __m512i) -> __m512i {
24620    unsafe {
24621        static_assert_uimm_bits!(MASK, 8);
24622        let r: i32x16 = simd_shuffle!(
24623            a.as_i32x16(),
24624            a.as_i32x16(),
24625            [
24626                MASK as u32 & 0b11,
24627                (MASK as u32 >> 2) & 0b11,
24628                (MASK as u32 >> 4) & 0b11,
24629                (MASK as u32 >> 6) & 0b11,
24630                (MASK as u32 & 0b11) + 4,
24631                ((MASK as u32 >> 2) & 0b11) + 4,
24632                ((MASK as u32 >> 4) & 0b11) + 4,
24633                ((MASK as u32 >> 6) & 0b11) + 4,
24634                (MASK as u32 & 0b11) + 8,
24635                ((MASK as u32 >> 2) & 0b11) + 8,
24636                ((MASK as u32 >> 4) & 0b11) + 8,
24637                ((MASK as u32 >> 6) & 0b11) + 8,
24638                (MASK as u32 & 0b11) + 12,
24639                ((MASK as u32 >> 2) & 0b11) + 12,
24640                ((MASK as u32 >> 4) & 0b11) + 12,
24641                ((MASK as u32 >> 6) & 0b11) + 12,
24642            ],
24643        );
24644        transmute(r)
24645    }
24646}
24647
24648/// Shuffle 32-bit integers in a within 128-bit lanes using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
24649///
24650/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_shuffle_epi32&expand=5148)
24651#[inline]
24652#[target_feature(enable = "avx512f")]
24653#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24654#[cfg_attr(test, assert_instr(vpshufd, MASK = 9))]
24655#[rustc_legacy_const_generics(3)]
24656#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
24657pub const fn _mm512_mask_shuffle_epi32<const MASK: _MM_PERM_ENUM>(
24658    src: __m512i,
24659    k: __mmask16,
24660    a: __m512i,
24661) -> __m512i {
24662    unsafe {
24663        static_assert_uimm_bits!(MASK, 8);
24664        let r = _mm512_shuffle_epi32::<MASK>(a);
24665        transmute(simd_select_bitmask(k, r.as_i32x16(), src.as_i32x16()))
24666    }
24667}
24668
24669/// Shuffle 32-bit integers in a within 128-bit lanes using the control in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
24670///
24671/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_shuffle_epi32&expand=5149)
24672#[inline]
24673#[target_feature(enable = "avx512f")]
24674#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24675#[cfg_attr(test, assert_instr(vpshufd, MASK = 9))]
24676#[rustc_legacy_const_generics(2)]
24677#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
24678pub const fn _mm512_maskz_shuffle_epi32<const MASK: _MM_PERM_ENUM>(
24679    k: __mmask16,
24680    a: __m512i,
24681) -> __m512i {
24682    unsafe {
24683        static_assert_uimm_bits!(MASK, 8);
24684        let r = _mm512_shuffle_epi32::<MASK>(a);
24685        transmute(simd_select_bitmask(k, r.as_i32x16(), i32x16::ZERO))
24686    }
24687}
24688
24689/// Shuffle 32-bit integers in a within 128-bit lanes using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
24690///
24691/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_shuffle_epi32&expand=5145)
24692#[inline]
24693#[target_feature(enable = "avx512f,avx512vl")]
24694#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24695#[cfg_attr(test, assert_instr(vpshufd, MASK = 9))]
24696#[rustc_legacy_const_generics(3)]
24697#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
24698pub const fn _mm256_mask_shuffle_epi32<const MASK: _MM_PERM_ENUM>(
24699    src: __m256i,
24700    k: __mmask8,
24701    a: __m256i,
24702) -> __m256i {
24703    unsafe {
24704        static_assert_uimm_bits!(MASK, 8);
24705        let r = _mm256_shuffle_epi32::<MASK>(a);
24706        transmute(simd_select_bitmask(k, r.as_i32x8(), src.as_i32x8()))
24707    }
24708}
24709
24710/// Shuffle 32-bit integers in a within 128-bit lanes using the control in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
24711///
24712/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_shuffle_epi32&expand=5146)
24713#[inline]
24714#[target_feature(enable = "avx512f,avx512vl")]
24715#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24716#[cfg_attr(test, assert_instr(vpshufd, MASK = 9))]
24717#[rustc_legacy_const_generics(2)]
24718#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
24719pub const fn _mm256_maskz_shuffle_epi32<const MASK: _MM_PERM_ENUM>(
24720    k: __mmask8,
24721    a: __m256i,
24722) -> __m256i {
24723    unsafe {
24724        static_assert_uimm_bits!(MASK, 8);
24725        let r = _mm256_shuffle_epi32::<MASK>(a);
24726        transmute(simd_select_bitmask(k, r.as_i32x8(), i32x8::ZERO))
24727    }
24728}
24729
24730/// Shuffle 32-bit integers in a within 128-bit lanes using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
24731///
24732/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_shuffle_epi32&expand=5142)
24733#[inline]
24734#[target_feature(enable = "avx512f,avx512vl")]
24735#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24736#[cfg_attr(test, assert_instr(vpshufd, MASK = 9))]
24737#[rustc_legacy_const_generics(3)]
24738#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
24739pub const fn _mm_mask_shuffle_epi32<const MASK: _MM_PERM_ENUM>(
24740    src: __m128i,
24741    k: __mmask8,
24742    a: __m128i,
24743) -> __m128i {
24744    unsafe {
24745        static_assert_uimm_bits!(MASK, 8);
24746        let r = _mm_shuffle_epi32::<MASK>(a);
24747        transmute(simd_select_bitmask(k, r.as_i32x4(), src.as_i32x4()))
24748    }
24749}
24750
24751/// Shuffle 32-bit integers in a within 128-bit lanes using the control in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
24752///
24753/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_shuffle_epi32&expand=5143)
24754#[inline]
24755#[target_feature(enable = "avx512f,avx512vl")]
24756#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24757#[cfg_attr(test, assert_instr(vpshufd, MASK = 9))]
24758#[rustc_legacy_const_generics(2)]
24759#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
24760pub const fn _mm_maskz_shuffle_epi32<const MASK: _MM_PERM_ENUM>(
24761    k: __mmask8,
24762    a: __m128i,
24763) -> __m128i {
24764    unsafe {
24765        static_assert_uimm_bits!(MASK, 8);
24766        let r = _mm_shuffle_epi32::<MASK>(a);
24767        transmute(simd_select_bitmask(k, r.as_i32x4(), i32x4::ZERO))
24768    }
24769}
24770
24771/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst.
24772///
24773/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_shuffle_ps&expand=5203)
24774#[inline]
24775#[target_feature(enable = "avx512f")]
24776#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24777#[cfg_attr(test, assert_instr(vshufps, MASK = 3))]
24778#[rustc_legacy_const_generics(2)]
24779#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
24780pub const fn _mm512_shuffle_ps<const MASK: i32>(a: __m512, b: __m512) -> __m512 {
24781    unsafe {
24782        static_assert_uimm_bits!(MASK, 8);
24783        simd_shuffle!(
24784            a,
24785            b,
24786            [
24787                MASK as u32 & 0b11,
24788                (MASK as u32 >> 2) & 0b11,
24789                ((MASK as u32 >> 4) & 0b11) + 16,
24790                ((MASK as u32 >> 6) & 0b11) + 16,
24791                (MASK as u32 & 0b11) + 4,
24792                ((MASK as u32 >> 2) & 0b11) + 4,
24793                ((MASK as u32 >> 4) & 0b11) + 20,
24794                ((MASK as u32 >> 6) & 0b11) + 20,
24795                (MASK as u32 & 0b11) + 8,
24796                ((MASK as u32 >> 2) & 0b11) + 8,
24797                ((MASK as u32 >> 4) & 0b11) + 24,
24798                ((MASK as u32 >> 6) & 0b11) + 24,
24799                (MASK as u32 & 0b11) + 12,
24800                ((MASK as u32 >> 2) & 0b11) + 12,
24801                ((MASK as u32 >> 4) & 0b11) + 28,
24802                ((MASK as u32 >> 6) & 0b11) + 28,
24803            ],
24804        )
24805    }
24806}
24807
24808/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
24809///
24810/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_shuffle_ps&expand=5201)
24811#[inline]
24812#[target_feature(enable = "avx512f")]
24813#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24814#[cfg_attr(test, assert_instr(vshufps, MASK = 3))]
24815#[rustc_legacy_const_generics(4)]
24816#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
24817pub const fn _mm512_mask_shuffle_ps<const MASK: i32>(
24818    src: __m512,
24819    k: __mmask16,
24820    a: __m512,
24821    b: __m512,
24822) -> __m512 {
24823    unsafe {
24824        static_assert_uimm_bits!(MASK, 8);
24825        let r = _mm512_shuffle_ps::<MASK>(a, b);
24826        transmute(simd_select_bitmask(k, r.as_f32x16(), src.as_f32x16()))
24827    }
24828}
24829
24830/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
24831///
24832/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_shuffle_ps&expand=5202)
24833#[inline]
24834#[target_feature(enable = "avx512f")]
24835#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24836#[cfg_attr(test, assert_instr(vshufps, MASK = 3))]
24837#[rustc_legacy_const_generics(3)]
24838#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
24839pub const fn _mm512_maskz_shuffle_ps<const MASK: i32>(
24840    k: __mmask16,
24841    a: __m512,
24842    b: __m512,
24843) -> __m512 {
24844    unsafe {
24845        static_assert_uimm_bits!(MASK, 8);
24846        let r = _mm512_shuffle_ps::<MASK>(a, b);
24847        transmute(simd_select_bitmask(k, r.as_f32x16(), f32x16::ZERO))
24848    }
24849}
24850
24851/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
24852///
24853/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_shuffle_ps&expand=5198)
24854#[inline]
24855#[target_feature(enable = "avx512f,avx512vl")]
24856#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24857#[cfg_attr(test, assert_instr(vshufps, MASK = 3))]
24858#[rustc_legacy_const_generics(4)]
24859#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
24860pub const fn _mm256_mask_shuffle_ps<const MASK: i32>(
24861    src: __m256,
24862    k: __mmask8,
24863    a: __m256,
24864    b: __m256,
24865) -> __m256 {
24866    unsafe {
24867        static_assert_uimm_bits!(MASK, 8);
24868        let r = _mm256_shuffle_ps::<MASK>(a, b);
24869        transmute(simd_select_bitmask(k, r.as_f32x8(), src.as_f32x8()))
24870    }
24871}
24872
24873/// Shuffle single-precision (32-bit) floating-point elements in a within 128-bit lanes using the control in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
24874///
24875/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_shuffle_ps&expand=5199)
24876#[inline]
24877#[target_feature(enable = "avx512f,avx512vl")]
24878#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24879#[cfg_attr(test, assert_instr(vshufps, MASK = 3))]
24880#[rustc_legacy_const_generics(3)]
24881#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
24882pub const fn _mm256_maskz_shuffle_ps<const MASK: i32>(k: __mmask8, a: __m256, b: __m256) -> __m256 {
24883    unsafe {
24884        static_assert_uimm_bits!(MASK, 8);
24885        let r = _mm256_shuffle_ps::<MASK>(a, b);
24886        transmute(simd_select_bitmask(k, r.as_f32x8(), f32x8::ZERO))
24887    }
24888}
24889
24890/// Shuffle single-precision (32-bit) floating-point elements in a using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
24891///
24892/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_shuffle_ps&expand=5195)
24893#[inline]
24894#[target_feature(enable = "avx512f,avx512vl")]
24895#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24896#[cfg_attr(test, assert_instr(vshufps, MASK = 3))]
24897#[rustc_legacy_const_generics(4)]
24898#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
24899pub const fn _mm_mask_shuffle_ps<const MASK: i32>(
24900    src: __m128,
24901    k: __mmask8,
24902    a: __m128,
24903    b: __m128,
24904) -> __m128 {
24905    unsafe {
24906        static_assert_uimm_bits!(MASK, 8);
24907        let r = _mm_shuffle_ps::<MASK>(a, b);
24908        transmute(simd_select_bitmask(k, r.as_f32x4(), src.as_f32x4()))
24909    }
24910}
24911
24912/// Shuffle single-precision (32-bit) floating-point elements in a using the control in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
24913///
24914/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_shuffle_ps&expand=5196)
24915#[inline]
24916#[target_feature(enable = "avx512f,avx512vl")]
24917#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24918#[cfg_attr(test, assert_instr(vshufps, MASK = 3))]
24919#[rustc_legacy_const_generics(3)]
24920#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
24921pub const fn _mm_maskz_shuffle_ps<const MASK: i32>(k: __mmask8, a: __m128, b: __m128) -> __m128 {
24922    unsafe {
24923        static_assert_uimm_bits!(MASK, 8);
24924        let r = _mm_shuffle_ps::<MASK>(a, b);
24925        transmute(simd_select_bitmask(k, r.as_f32x4(), f32x4::ZERO))
24926    }
24927}
24928
24929/// Shuffle double-precision (64-bit) floating-point elements within 128-bit lanes using the control in imm8, and store the results in dst.
24930///
24931/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_shuffle_pd&expand=5192)
24932#[inline]
24933#[target_feature(enable = "avx512f")]
24934#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24935#[cfg_attr(test, assert_instr(vshufpd, MASK = 3))]
24936#[rustc_legacy_const_generics(2)]
24937#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
24938pub const fn _mm512_shuffle_pd<const MASK: i32>(a: __m512d, b: __m512d) -> __m512d {
24939    unsafe {
24940        static_assert_uimm_bits!(MASK, 8);
24941        simd_shuffle!(
24942            a,
24943            b,
24944            [
24945                MASK as u32 & 0b1,
24946                ((MASK as u32 >> 1) & 0b1) + 8,
24947                ((MASK as u32 >> 2) & 0b1) + 2,
24948                ((MASK as u32 >> 3) & 0b1) + 10,
24949                ((MASK as u32 >> 4) & 0b1) + 4,
24950                ((MASK as u32 >> 5) & 0b1) + 12,
24951                ((MASK as u32 >> 6) & 0b1) + 6,
24952                ((MASK as u32 >> 7) & 0b1) + 14,
24953            ],
24954        )
24955    }
24956}
24957
24958/// Shuffle double-precision (64-bit) floating-point elements within 128-bit lanes using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
24959///
24960/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_shuffle_pd&expand=5190)
24961#[inline]
24962#[target_feature(enable = "avx512f")]
24963#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24964#[cfg_attr(test, assert_instr(vshufpd, MASK = 3))]
24965#[rustc_legacy_const_generics(4)]
24966#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
24967pub const fn _mm512_mask_shuffle_pd<const MASK: i32>(
24968    src: __m512d,
24969    k: __mmask8,
24970    a: __m512d,
24971    b: __m512d,
24972) -> __m512d {
24973    unsafe {
24974        static_assert_uimm_bits!(MASK, 8);
24975        let r = _mm512_shuffle_pd::<MASK>(a, b);
24976        transmute(simd_select_bitmask(k, r.as_f64x8(), src.as_f64x8()))
24977    }
24978}
24979
24980/// Shuffle double-precision (64-bit) floating-point elements within 128-bit lanes using the control in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
24981///
24982/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_shuffle_pd&expand=5191)
24983#[inline]
24984#[target_feature(enable = "avx512f")]
24985#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
24986#[cfg_attr(test, assert_instr(vshufpd, MASK = 3))]
24987#[rustc_legacy_const_generics(3)]
24988#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
24989pub const fn _mm512_maskz_shuffle_pd<const MASK: i32>(
24990    k: __mmask8,
24991    a: __m512d,
24992    b: __m512d,
24993) -> __m512d {
24994    unsafe {
24995        static_assert_uimm_bits!(MASK, 8);
24996        let r = _mm512_shuffle_pd::<MASK>(a, b);
24997        transmute(simd_select_bitmask(k, r.as_f64x8(), f64x8::ZERO))
24998    }
24999}
25000
25001/// Shuffle double-precision (64-bit) floating-point elements within 128-bit lanes using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
25002///
25003/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_shuffle_pd&expand=5187)
25004#[inline]
25005#[target_feature(enable = "avx512f,avx512vl")]
25006#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25007#[cfg_attr(test, assert_instr(vshufpd, MASK = 3))]
25008#[rustc_legacy_const_generics(4)]
25009#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25010pub const fn _mm256_mask_shuffle_pd<const MASK: i32>(
25011    src: __m256d,
25012    k: __mmask8,
25013    a: __m256d,
25014    b: __m256d,
25015) -> __m256d {
25016    unsafe {
25017        static_assert_uimm_bits!(MASK, 8);
25018        let r = _mm256_shuffle_pd::<MASK>(a, b);
25019        transmute(simd_select_bitmask(k, r.as_f64x4(), src.as_f64x4()))
25020    }
25021}
25022
25023/// Shuffle double-precision (64-bit) floating-point elements within 128-bit lanes using the control in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
25024///
25025/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_shuffle_pd&expand=5188)
25026#[inline]
25027#[target_feature(enable = "avx512f,avx512vl")]
25028#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25029#[cfg_attr(test, assert_instr(vshufpd, MASK = 3))]
25030#[rustc_legacy_const_generics(3)]
25031#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25032pub const fn _mm256_maskz_shuffle_pd<const MASK: i32>(
25033    k: __mmask8,
25034    a: __m256d,
25035    b: __m256d,
25036) -> __m256d {
25037    unsafe {
25038        static_assert_uimm_bits!(MASK, 8);
25039        let r = _mm256_shuffle_pd::<MASK>(a, b);
25040        transmute(simd_select_bitmask(k, r.as_f64x4(), f64x4::ZERO))
25041    }
25042}
25043
25044/// Shuffle double-precision (64-bit) floating-point elements within 128-bit lanes using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
25045///
25046/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_shuffle_pd&expand=5184)
25047#[inline]
25048#[target_feature(enable = "avx512f,avx512vl")]
25049#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25050#[cfg_attr(test, assert_instr(vshufpd, MASK = 1))]
25051#[rustc_legacy_const_generics(4)]
25052#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25053pub const fn _mm_mask_shuffle_pd<const MASK: i32>(
25054    src: __m128d,
25055    k: __mmask8,
25056    a: __m128d,
25057    b: __m128d,
25058) -> __m128d {
25059    unsafe {
25060        static_assert_uimm_bits!(MASK, 8);
25061        let r = _mm_shuffle_pd::<MASK>(a, b);
25062        transmute(simd_select_bitmask(k, r.as_f64x2(), src.as_f64x2()))
25063    }
25064}
25065
25066/// Shuffle double-precision (64-bit) floating-point elements within 128-bit lanes using the control in imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
25067///
25068/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_shuffle_pd&expand=5185)
25069#[inline]
25070#[target_feature(enable = "avx512f,avx512vl")]
25071#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25072#[cfg_attr(test, assert_instr(vshufpd, MASK = 1))]
25073#[rustc_legacy_const_generics(3)]
25074#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25075pub const fn _mm_maskz_shuffle_pd<const MASK: i32>(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
25076    unsafe {
25077        static_assert_uimm_bits!(MASK, 8);
25078        let r = _mm_shuffle_pd::<MASK>(a, b);
25079        transmute(simd_select_bitmask(k, r.as_f64x2(), f64x2::ZERO))
25080    }
25081}
25082
25083/// Shuffle 128-bits (composed of 4 32-bit integers) selected by imm8 from a and b, and store the results in dst.
25084///
25085/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_shuffle_i32x4&expand=5177)
25086#[inline]
25087#[target_feature(enable = "avx512f")]
25088#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25089#[cfg_attr(test, assert_instr(vshufi64x2, MASK = 0b10_01_01_01))] //should be vshufi32x4
25090#[rustc_legacy_const_generics(2)]
25091#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25092pub const fn _mm512_shuffle_i32x4<const MASK: i32>(a: __m512i, b: __m512i) -> __m512i {
25093    unsafe {
25094        static_assert_uimm_bits!(MASK, 8);
25095        let a = a.as_i32x16();
25096        let b = b.as_i32x16();
25097        let r: i32x16 = simd_shuffle!(
25098            a,
25099            b,
25100            [
25101                (MASK as u32 & 0b11) * 4 + 0,
25102                (MASK as u32 & 0b11) * 4 + 1,
25103                (MASK as u32 & 0b11) * 4 + 2,
25104                (MASK as u32 & 0b11) * 4 + 3,
25105                ((MASK as u32 >> 2) & 0b11) * 4 + 0,
25106                ((MASK as u32 >> 2) & 0b11) * 4 + 1,
25107                ((MASK as u32 >> 2) & 0b11) * 4 + 2,
25108                ((MASK as u32 >> 2) & 0b11) * 4 + 3,
25109                ((MASK as u32 >> 4) & 0b11) * 4 + 0 + 16,
25110                ((MASK as u32 >> 4) & 0b11) * 4 + 1 + 16,
25111                ((MASK as u32 >> 4) & 0b11) * 4 + 2 + 16,
25112                ((MASK as u32 >> 4) & 0b11) * 4 + 3 + 16,
25113                ((MASK as u32 >> 6) & 0b11) * 4 + 0 + 16,
25114                ((MASK as u32 >> 6) & 0b11) * 4 + 1 + 16,
25115                ((MASK as u32 >> 6) & 0b11) * 4 + 2 + 16,
25116                ((MASK as u32 >> 6) & 0b11) * 4 + 3 + 16,
25117            ],
25118        );
25119        transmute(r)
25120    }
25121}
25122
25123/// Shuffle 128-bits (composed of 4 32-bit integers) selected by imm8 from a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
25124///
25125/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_shuffle_i32x4&expand=5175)
25126#[inline]
25127#[target_feature(enable = "avx512f")]
25128#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25129#[cfg_attr(test, assert_instr(vshufi32x4, MASK = 0b10_11_01_01))]
25130#[rustc_legacy_const_generics(4)]
25131#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25132pub const fn _mm512_mask_shuffle_i32x4<const MASK: i32>(
25133    src: __m512i,
25134    k: __mmask16,
25135    a: __m512i,
25136    b: __m512i,
25137) -> __m512i {
25138    unsafe {
25139        static_assert_uimm_bits!(MASK, 8);
25140        let r = _mm512_shuffle_i32x4::<MASK>(a, b);
25141        transmute(simd_select_bitmask(k, r.as_i32x16(), src.as_i32x16()))
25142    }
25143}
25144
25145/// Shuffle 128-bits (composed of 4 32-bit integers) selected by imm8 from a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
25146///
25147/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_shuffle_i32x4&expand=5176)
25148#[inline]
25149#[target_feature(enable = "avx512f")]
25150#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25151#[cfg_attr(test, assert_instr(vshufi32x4, MASK = 0b10_11_01_01))]
25152#[rustc_legacy_const_generics(3)]
25153#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25154pub const fn _mm512_maskz_shuffle_i32x4<const MASK: i32>(
25155    k: __mmask16,
25156    a: __m512i,
25157    b: __m512i,
25158) -> __m512i {
25159    unsafe {
25160        static_assert_uimm_bits!(MASK, 8);
25161        let r = _mm512_shuffle_i32x4::<MASK>(a, b);
25162        transmute(simd_select_bitmask(k, r.as_i32x16(), i32x16::ZERO))
25163    }
25164}
25165
25166/// Shuffle 128-bits (composed of 4 32-bit integers) selected by imm8 from a and b, and store the results in dst.
25167///
25168/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_shuffle_i32x4&expand=5174)
25169#[inline]
25170#[target_feature(enable = "avx512f,avx512vl")]
25171#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25172#[cfg_attr(test, assert_instr(vperm, MASK = 0b11))] //should be vshufi32x4
25173#[rustc_legacy_const_generics(2)]
25174#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25175pub const fn _mm256_shuffle_i32x4<const MASK: i32>(a: __m256i, b: __m256i) -> __m256i {
25176    unsafe {
25177        static_assert_uimm_bits!(MASK, 8);
25178        let a = a.as_i32x8();
25179        let b = b.as_i32x8();
25180        let r: i32x8 = simd_shuffle!(
25181            a,
25182            b,
25183            [
25184                (MASK as u32 & 0b1) * 4 + 0,
25185                (MASK as u32 & 0b1) * 4 + 1,
25186                (MASK as u32 & 0b1) * 4 + 2,
25187                (MASK as u32 & 0b1) * 4 + 3,
25188                ((MASK as u32 >> 1) & 0b1) * 4 + 0 + 8,
25189                ((MASK as u32 >> 1) & 0b1) * 4 + 1 + 8,
25190                ((MASK as u32 >> 1) & 0b1) * 4 + 2 + 8,
25191                ((MASK as u32 >> 1) & 0b1) * 4 + 3 + 8,
25192            ],
25193        );
25194        transmute(r)
25195    }
25196}
25197
25198/// Shuffle 128-bits (composed of 4 32-bit integers) selected by imm8 from a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
25199///
25200/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_shuffle_i32x4&expand=5172)
25201#[inline]
25202#[target_feature(enable = "avx512f,avx512vl")]
25203#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25204#[cfg_attr(test, assert_instr(vshufi32x4, MASK = 0b11))]
25205#[rustc_legacy_const_generics(4)]
25206#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25207pub const fn _mm256_mask_shuffle_i32x4<const MASK: i32>(
25208    src: __m256i,
25209    k: __mmask8,
25210    a: __m256i,
25211    b: __m256i,
25212) -> __m256i {
25213    unsafe {
25214        static_assert_uimm_bits!(MASK, 8);
25215        let r = _mm256_shuffle_i32x4::<MASK>(a, b);
25216        transmute(simd_select_bitmask(k, r.as_i32x8(), src.as_i32x8()))
25217    }
25218}
25219
25220/// Shuffle 128-bits (composed of 4 32-bit integers) selected by imm8 from a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
25221///
25222/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_shuffle_i32x4&expand=5173)
25223#[inline]
25224#[target_feature(enable = "avx512f,avx512vl")]
25225#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25226#[cfg_attr(test, assert_instr(vshufi32x4, MASK = 0b11))]
25227#[rustc_legacy_const_generics(3)]
25228#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25229pub const fn _mm256_maskz_shuffle_i32x4<const MASK: i32>(
25230    k: __mmask8,
25231    a: __m256i,
25232    b: __m256i,
25233) -> __m256i {
25234    unsafe {
25235        static_assert_uimm_bits!(MASK, 8);
25236        let r = _mm256_shuffle_i32x4::<MASK>(a, b);
25237        transmute(simd_select_bitmask(k, r.as_i32x8(), i32x8::ZERO))
25238    }
25239}
25240
25241/// Shuffle 128-bits (composed of 2 64-bit integers) selected by imm8 from a and b, and store the results in dst.
25242///
25243/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_shuffle_i64x2&expand=5183)
25244#[inline]
25245#[target_feature(enable = "avx512f")]
25246#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25247#[cfg_attr(test, assert_instr(vshufi64x2, MASK = 0b10_11_11_11))]
25248#[rustc_legacy_const_generics(2)]
25249#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25250pub const fn _mm512_shuffle_i64x2<const MASK: i32>(a: __m512i, b: __m512i) -> __m512i {
25251    unsafe {
25252        static_assert_uimm_bits!(MASK, 8);
25253        let a = a.as_i64x8();
25254        let b = b.as_i64x8();
25255        let r: i64x8 = simd_shuffle!(
25256            a,
25257            b,
25258            [
25259                (MASK as u32 & 0b11) * 2 + 0,
25260                (MASK as u32 & 0b11) * 2 + 1,
25261                ((MASK as u32 >> 2) & 0b11) * 2 + 0,
25262                ((MASK as u32 >> 2) & 0b11) * 2 + 1,
25263                ((MASK as u32 >> 4) & 0b11) * 2 + 0 + 8,
25264                ((MASK as u32 >> 4) & 0b11) * 2 + 1 + 8,
25265                ((MASK as u32 >> 6) & 0b11) * 2 + 0 + 8,
25266                ((MASK as u32 >> 6) & 0b11) * 2 + 1 + 8,
25267            ],
25268        );
25269        transmute(r)
25270    }
25271}
25272
25273/// Shuffle 128-bits (composed of 2 64-bit integers) selected by imm8 from a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
25274///
25275/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_shuffle_i64x2&expand=5181)
25276#[inline]
25277#[target_feature(enable = "avx512f")]
25278#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25279#[cfg_attr(test, assert_instr(vshufi64x2, MASK = 0b10_11_11_11))]
25280#[rustc_legacy_const_generics(4)]
25281#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25282pub const fn _mm512_mask_shuffle_i64x2<const MASK: i32>(
25283    src: __m512i,
25284    k: __mmask8,
25285    a: __m512i,
25286    b: __m512i,
25287) -> __m512i {
25288    unsafe {
25289        static_assert_uimm_bits!(MASK, 8);
25290        let r = _mm512_shuffle_i64x2::<MASK>(a, b);
25291        transmute(simd_select_bitmask(k, r.as_i64x8(), src.as_i64x8()))
25292    }
25293}
25294
25295/// Shuffle 128-bits (composed of 2 64-bit integers) selected by imm8 from a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
25296///
25297/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_shuffle_i64x2&expand=5182)
25298#[inline]
25299#[target_feature(enable = "avx512f")]
25300#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25301#[cfg_attr(test, assert_instr(vshufi64x2, MASK = 0b10_11_11_11))]
25302#[rustc_legacy_const_generics(3)]
25303#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25304pub const fn _mm512_maskz_shuffle_i64x2<const MASK: i32>(
25305    k: __mmask8,
25306    a: __m512i,
25307    b: __m512i,
25308) -> __m512i {
25309    unsafe {
25310        static_assert_uimm_bits!(MASK, 8);
25311        let r = _mm512_shuffle_i64x2::<MASK>(a, b);
25312        transmute(simd_select_bitmask(k, r.as_i64x8(), i64x8::ZERO))
25313    }
25314}
25315
25316/// Shuffle 128-bits (composed of 2 64-bit integers) selected by imm8 from a and b, and store the results in dst.
25317///
25318/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_shuffle_i64x2&expand=5180)
25319#[inline]
25320#[target_feature(enable = "avx512f,avx512vl")]
25321#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25322#[cfg_attr(test, assert_instr(vperm, MASK = 0b01))] //should be vshufi64x2
25323#[rustc_legacy_const_generics(2)]
25324#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25325pub const fn _mm256_shuffle_i64x2<const MASK: i32>(a: __m256i, b: __m256i) -> __m256i {
25326    unsafe {
25327        static_assert_uimm_bits!(MASK, 8);
25328        let a = a.as_i64x4();
25329        let b = b.as_i64x4();
25330        let r: i64x4 = simd_shuffle!(
25331            a,
25332            b,
25333            [
25334                (MASK as u32 & 0b1) * 2 + 0,
25335                (MASK as u32 & 0b1) * 2 + 1,
25336                ((MASK as u32 >> 1) & 0b1) * 2 + 0 + 4,
25337                ((MASK as u32 >> 1) & 0b1) * 2 + 1 + 4,
25338            ],
25339        );
25340        transmute(r)
25341    }
25342}
25343
25344/// Shuffle 128-bits (composed of 2 64-bit integers) selected by imm8 from a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
25345///
25346/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_shuffle_i64x2&expand=5178)
25347#[inline]
25348#[target_feature(enable = "avx512f,avx512vl")]
25349#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25350#[cfg_attr(test, assert_instr(vshufi64x2, MASK = 0b11))]
25351#[rustc_legacy_const_generics(4)]
25352#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25353pub const fn _mm256_mask_shuffle_i64x2<const MASK: i32>(
25354    src: __m256i,
25355    k: __mmask8,
25356    a: __m256i,
25357    b: __m256i,
25358) -> __m256i {
25359    unsafe {
25360        static_assert_uimm_bits!(MASK, 8);
25361        let r = _mm256_shuffle_i64x2::<MASK>(a, b);
25362        transmute(simd_select_bitmask(k, r.as_i64x4(), src.as_i64x4()))
25363    }
25364}
25365
25366/// Shuffle 128-bits (composed of 2 64-bit integers) selected by imm8 from a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
25367///
25368/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_shuffle_i64x2&expand=5179)
25369#[inline]
25370#[target_feature(enable = "avx512f,avx512vl")]
25371#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25372#[cfg_attr(test, assert_instr(vshufi64x2, MASK = 0b11))]
25373#[rustc_legacy_const_generics(3)]
25374#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25375pub const fn _mm256_maskz_shuffle_i64x2<const MASK: i32>(
25376    k: __mmask8,
25377    a: __m256i,
25378    b: __m256i,
25379) -> __m256i {
25380    unsafe {
25381        static_assert_uimm_bits!(MASK, 8);
25382        let r = _mm256_shuffle_i64x2::<MASK>(a, b);
25383        transmute(simd_select_bitmask(k, r.as_i64x4(), i64x4::ZERO))
25384    }
25385}
25386
25387/// Shuffle 128-bits (composed of 4 single-precision (32-bit) floating-point elements) selected by imm8 from a and b, and store the results in dst.
25388///
25389/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_shuffle_f32x4&expand=5165)
25390#[inline]
25391#[target_feature(enable = "avx512f")]
25392#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25393#[cfg_attr(test, assert_instr(vshuff64x2, MASK = 0b1011))] //should be vshuff32x4, but generate vshuff64x2
25394#[rustc_legacy_const_generics(2)]
25395#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25396pub const fn _mm512_shuffle_f32x4<const MASK: i32>(a: __m512, b: __m512) -> __m512 {
25397    unsafe {
25398        static_assert_uimm_bits!(MASK, 8);
25399        let a = a.as_f32x16();
25400        let b = b.as_f32x16();
25401        let r: f32x16 = simd_shuffle!(
25402            a,
25403            b,
25404            [
25405                (MASK as u32 & 0b11) * 4 + 0,
25406                (MASK as u32 & 0b11) * 4 + 1,
25407                (MASK as u32 & 0b11) * 4 + 2,
25408                (MASK as u32 & 0b11) * 4 + 3,
25409                ((MASK as u32 >> 2) & 0b11) * 4 + 0,
25410                ((MASK as u32 >> 2) & 0b11) * 4 + 1,
25411                ((MASK as u32 >> 2) & 0b11) * 4 + 2,
25412                ((MASK as u32 >> 2) & 0b11) * 4 + 3,
25413                ((MASK as u32 >> 4) & 0b11) * 4 + 0 + 16,
25414                ((MASK as u32 >> 4) & 0b11) * 4 + 1 + 16,
25415                ((MASK as u32 >> 4) & 0b11) * 4 + 2 + 16,
25416                ((MASK as u32 >> 4) & 0b11) * 4 + 3 + 16,
25417                ((MASK as u32 >> 6) & 0b11) * 4 + 0 + 16,
25418                ((MASK as u32 >> 6) & 0b11) * 4 + 1 + 16,
25419                ((MASK as u32 >> 6) & 0b11) * 4 + 2 + 16,
25420                ((MASK as u32 >> 6) & 0b11) * 4 + 3 + 16,
25421            ],
25422        );
25423        transmute(r)
25424    }
25425}
25426
25427/// Shuffle 128-bits (composed of 4 single-precision (32-bit) floating-point elements) selected by imm8 from a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
25428///
25429/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_shuffle_f32x4&expand=5163)
25430#[inline]
25431#[target_feature(enable = "avx512f")]
25432#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25433#[cfg_attr(test, assert_instr(vshuff32x4, MASK = 0b1011))]
25434#[rustc_legacy_const_generics(4)]
25435#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25436pub const fn _mm512_mask_shuffle_f32x4<const MASK: i32>(
25437    src: __m512,
25438    k: __mmask16,
25439    a: __m512,
25440    b: __m512,
25441) -> __m512 {
25442    unsafe {
25443        static_assert_uimm_bits!(MASK, 8);
25444        let r = _mm512_shuffle_f32x4::<MASK>(a, b);
25445        transmute(simd_select_bitmask(k, r.as_f32x16(), src.as_f32x16()))
25446    }
25447}
25448
25449/// Shuffle 128-bits (composed of 4 single-precision (32-bit) floating-point elements) selected by imm8 from a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
25450///
25451/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_shuffle_f32x4&expand=5164)
25452#[inline]
25453#[target_feature(enable = "avx512f")]
25454#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25455#[cfg_attr(test, assert_instr(vshuff32x4, MASK = 0b1011))]
25456#[rustc_legacy_const_generics(3)]
25457#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25458pub const fn _mm512_maskz_shuffle_f32x4<const MASK: i32>(
25459    k: __mmask16,
25460    a: __m512,
25461    b: __m512,
25462) -> __m512 {
25463    unsafe {
25464        static_assert_uimm_bits!(MASK, 8);
25465        let r = _mm512_shuffle_f32x4::<MASK>(a, b);
25466        transmute(simd_select_bitmask(k, r.as_f32x16(), f32x16::ZERO))
25467    }
25468}
25469
25470/// Shuffle 128-bits (composed of 4 single-precision (32-bit) floating-point elements) selected by imm8 from a and b, and store the results in dst.
25471///
25472/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_shuffle_f32x4&expand=5162)
25473#[inline]
25474#[target_feature(enable = "avx512f,avx512vl")]
25475#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25476#[cfg_attr(test, assert_instr(vperm, MASK = 0b01))] //should be vshuff32x4
25477#[rustc_legacy_const_generics(2)]
25478#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25479pub const fn _mm256_shuffle_f32x4<const MASK: i32>(a: __m256, b: __m256) -> __m256 {
25480    unsafe {
25481        static_assert_uimm_bits!(MASK, 8);
25482        let a = a.as_f32x8();
25483        let b = b.as_f32x8();
25484        let r: f32x8 = simd_shuffle!(
25485            a,
25486            b,
25487            [
25488                (MASK as u32 & 0b1) * 4 + 0,
25489                (MASK as u32 & 0b1) * 4 + 1,
25490                (MASK as u32 & 0b1) * 4 + 2,
25491                (MASK as u32 & 0b1) * 4 + 3,
25492                ((MASK as u32 >> 1) & 0b1) * 4 + 0 + 8,
25493                ((MASK as u32 >> 1) & 0b1) * 4 + 1 + 8,
25494                ((MASK as u32 >> 1) & 0b1) * 4 + 2 + 8,
25495                ((MASK as u32 >> 1) & 0b1) * 4 + 3 + 8,
25496            ],
25497        );
25498        transmute(r)
25499    }
25500}
25501
25502/// Shuffle 128-bits (composed of 4 single-precision (32-bit) floating-point elements) selected by imm8 from a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
25503///
25504/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_shuffle_f32x4&expand=5160)
25505#[inline]
25506#[target_feature(enable = "avx512f,avx512vl")]
25507#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25508#[cfg_attr(test, assert_instr(vshuff32x4, MASK = 0b11))]
25509#[rustc_legacy_const_generics(4)]
25510#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25511pub const fn _mm256_mask_shuffle_f32x4<const MASK: i32>(
25512    src: __m256,
25513    k: __mmask8,
25514    a: __m256,
25515    b: __m256,
25516) -> __m256 {
25517    unsafe {
25518        static_assert_uimm_bits!(MASK, 8);
25519        let r = _mm256_shuffle_f32x4::<MASK>(a, b);
25520        transmute(simd_select_bitmask(k, r.as_f32x8(), src.as_f32x8()))
25521    }
25522}
25523
25524/// Shuffle 128-bits (composed of 4 single-precision (32-bit) floating-point elements) selected by imm8 from a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
25525///
25526/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_shuffle_f32x4&expand=5161)
25527#[inline]
25528#[target_feature(enable = "avx512f,avx512vl")]
25529#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25530#[cfg_attr(test, assert_instr(vshuff32x4, MASK = 0b11))]
25531#[rustc_legacy_const_generics(3)]
25532#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25533pub const fn _mm256_maskz_shuffle_f32x4<const MASK: i32>(
25534    k: __mmask8,
25535    a: __m256,
25536    b: __m256,
25537) -> __m256 {
25538    unsafe {
25539        static_assert_uimm_bits!(MASK, 8);
25540        let r = _mm256_shuffle_f32x4::<MASK>(a, b);
25541        transmute(simd_select_bitmask(k, r.as_f32x8(), f32x8::ZERO))
25542    }
25543}
25544
25545/// Shuffle 128-bits (composed of 2 double-precision (64-bit) floating-point elements) selected by imm8 from a and b, and store the results in dst.
25546///
25547/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_shuffle_f64x2&expand=5171)
25548#[inline]
25549#[target_feature(enable = "avx512f")]
25550#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25551#[cfg_attr(test, assert_instr(vshuff64x2, MASK = 0b10_11_11_11))]
25552#[rustc_legacy_const_generics(2)]
25553#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25554pub const fn _mm512_shuffle_f64x2<const MASK: i32>(a: __m512d, b: __m512d) -> __m512d {
25555    unsafe {
25556        static_assert_uimm_bits!(MASK, 8);
25557        let a = a.as_f64x8();
25558        let b = b.as_f64x8();
25559        let r: f64x8 = simd_shuffle!(
25560            a,
25561            b,
25562            [
25563                (MASK as u32 & 0b11) * 2 + 0,
25564                (MASK as u32 & 0b11) * 2 + 1,
25565                ((MASK as u32 >> 2) & 0b11) * 2 + 0,
25566                ((MASK as u32 >> 2) & 0b11) * 2 + 1,
25567                ((MASK as u32 >> 4) & 0b11) * 2 + 0 + 8,
25568                ((MASK as u32 >> 4) & 0b11) * 2 + 1 + 8,
25569                ((MASK as u32 >> 6) & 0b11) * 2 + 0 + 8,
25570                ((MASK as u32 >> 6) & 0b11) * 2 + 1 + 8,
25571            ],
25572        );
25573        transmute(r)
25574    }
25575}
25576
25577/// Shuffle 128-bits (composed of 2 double-precision (64-bit) floating-point elements) selected by imm8 from a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
25578///
25579/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_shuffle_f64x2&expand=5169)
25580#[inline]
25581#[target_feature(enable = "avx512f")]
25582#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25583#[cfg_attr(test, assert_instr(vshuff64x2, MASK = 0b10_11_11_11))]
25584#[rustc_legacy_const_generics(4)]
25585#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25586pub const fn _mm512_mask_shuffle_f64x2<const MASK: i32>(
25587    src: __m512d,
25588    k: __mmask8,
25589    a: __m512d,
25590    b: __m512d,
25591) -> __m512d {
25592    unsafe {
25593        static_assert_uimm_bits!(MASK, 8);
25594        let r = _mm512_shuffle_f64x2::<MASK>(a, b);
25595        transmute(simd_select_bitmask(k, r.as_f64x8(), src.as_f64x8()))
25596    }
25597}
25598
25599/// Shuffle 128-bits (composed of 2 double-precision (64-bit) floating-point elements) selected by imm8 from a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
25600///
25601/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_shuffle_f64x2&expand=5170)
25602#[inline]
25603#[target_feature(enable = "avx512f")]
25604#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25605#[cfg_attr(test, assert_instr(vshuff64x2, MASK = 0b10_11_11_11))]
25606#[rustc_legacy_const_generics(3)]
25607#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25608pub const fn _mm512_maskz_shuffle_f64x2<const MASK: i32>(
25609    k: __mmask8,
25610    a: __m512d,
25611    b: __m512d,
25612) -> __m512d {
25613    unsafe {
25614        static_assert_uimm_bits!(MASK, 8);
25615        let r = _mm512_shuffle_f64x2::<MASK>(a, b);
25616        transmute(simd_select_bitmask(k, r.as_f64x8(), f64x8::ZERO))
25617    }
25618}
25619
25620/// Shuffle 128-bits (composed of 2 double-precision (64-bit) floating-point elements) selected by imm8 from a and b, and store the results in dst.
25621///
25622/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_shuffle_f64x2&expand=5168)
25623#[inline]
25624#[target_feature(enable = "avx512f,avx512vl")]
25625#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25626#[cfg_attr(test, assert_instr(vperm, MASK = 0b01))] //should be vshuff64x2
25627#[rustc_legacy_const_generics(2)]
25628#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25629pub const fn _mm256_shuffle_f64x2<const MASK: i32>(a: __m256d, b: __m256d) -> __m256d {
25630    unsafe {
25631        static_assert_uimm_bits!(MASK, 8);
25632        let a = a.as_f64x4();
25633        let b = b.as_f64x4();
25634        let r: f64x4 = simd_shuffle!(
25635            a,
25636            b,
25637            [
25638                (MASK as u32 & 0b1) * 2 + 0,
25639                (MASK as u32 & 0b1) * 2 + 1,
25640                ((MASK as u32 >> 1) & 0b1) * 2 + 0 + 4,
25641                ((MASK as u32 >> 1) & 0b1) * 2 + 1 + 4,
25642            ],
25643        );
25644        transmute(r)
25645    }
25646}
25647
25648/// Shuffle 128-bits (composed of 2 double-precision (64-bit) floating-point elements) selected by imm8 from a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
25649///
25650/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_shuffle_f64x2&expand=5166)
25651#[inline]
25652#[target_feature(enable = "avx512f,avx512vl")]
25653#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25654#[cfg_attr(test, assert_instr(vshuff64x2, MASK = 0b11))]
25655#[rustc_legacy_const_generics(4)]
25656#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25657pub const fn _mm256_mask_shuffle_f64x2<const MASK: i32>(
25658    src: __m256d,
25659    k: __mmask8,
25660    a: __m256d,
25661    b: __m256d,
25662) -> __m256d {
25663    unsafe {
25664        static_assert_uimm_bits!(MASK, 8);
25665        let r = _mm256_shuffle_f64x2::<MASK>(a, b);
25666        transmute(simd_select_bitmask(k, r.as_f64x4(), src.as_f64x4()))
25667    }
25668}
25669
25670/// Shuffle 128-bits (composed of 2 double-precision (64-bit) floating-point elements) selected by imm8 from a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
25671///
25672/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_shuffle_f64x2&expand=5167)
25673#[inline]
25674#[target_feature(enable = "avx512f,avx512vl")]
25675#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25676#[cfg_attr(test, assert_instr(vshuff64x2, MASK = 0b11))]
25677#[rustc_legacy_const_generics(3)]
25678#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25679pub const fn _mm256_maskz_shuffle_f64x2<const MASK: i32>(
25680    k: __mmask8,
25681    a: __m256d,
25682    b: __m256d,
25683) -> __m256d {
25684    unsafe {
25685        static_assert_uimm_bits!(MASK, 8);
25686        let r = _mm256_shuffle_f64x2::<MASK>(a, b);
25687        transmute(simd_select_bitmask(k, r.as_f64x4(), f64x4::ZERO))
25688    }
25689}
25690
25691/// Extract 128 bits (composed of 4 packed single-precision (32-bit) floating-point elements) from a, selected with imm8, and store the result in dst.
25692///
25693/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_extractf32x4_ps&expand=2442)
25694#[inline]
25695#[target_feature(enable = "avx512f")]
25696#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25697#[cfg_attr(test, assert_instr(vextractf32x4, IMM8 = 3))]
25698#[rustc_legacy_const_generics(1)]
25699#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25700pub const fn _mm512_extractf32x4_ps<const IMM8: i32>(a: __m512) -> __m128 {
25701    unsafe {
25702        static_assert_uimm_bits!(IMM8, 2);
25703        match IMM8 & 0x3 {
25704            0 => simd_shuffle!(a, _mm512_undefined_ps(), [0, 1, 2, 3]),
25705            1 => simd_shuffle!(a, _mm512_undefined_ps(), [4, 5, 6, 7]),
25706            2 => simd_shuffle!(a, _mm512_undefined_ps(), [8, 9, 10, 11]),
25707            _ => simd_shuffle!(a, _mm512_undefined_ps(), [12, 13, 14, 15]),
25708        }
25709    }
25710}
25711
25712/// Extract 128 bits (composed of 4 packed single-precision (32-bit) floating-point elements) from a, selected with imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
25713///
25714/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_extractf32x4_ps&expand=2443)
25715#[inline]
25716#[target_feature(enable = "avx512f")]
25717#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25718#[cfg_attr(test, assert_instr(vextractf32x4, IMM8 = 3))]
25719#[rustc_legacy_const_generics(3)]
25720#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25721pub const fn _mm512_mask_extractf32x4_ps<const IMM8: i32>(
25722    src: __m128,
25723    k: __mmask8,
25724    a: __m512,
25725) -> __m128 {
25726    unsafe {
25727        static_assert_uimm_bits!(IMM8, 2);
25728        let r = _mm512_extractf32x4_ps::<IMM8>(a);
25729        transmute(simd_select_bitmask(k, r.as_f32x4(), src.as_f32x4()))
25730    }
25731}
25732
25733/// Extract 128 bits (composed of 4 packed single-precision (32-bit) floating-point elements) from a, selected with imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
25734///
25735/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_extractf32x4_ps&expand=2444)
25736#[inline]
25737#[target_feature(enable = "avx512f")]
25738#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25739#[cfg_attr(test, assert_instr(vextractf32x4, IMM8 = 3))]
25740#[rustc_legacy_const_generics(2)]
25741#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25742pub const fn _mm512_maskz_extractf32x4_ps<const IMM8: i32>(k: __mmask8, a: __m512) -> __m128 {
25743    unsafe {
25744        static_assert_uimm_bits!(IMM8, 2);
25745        let r = _mm512_extractf32x4_ps::<IMM8>(a);
25746        transmute(simd_select_bitmask(k, r.as_f32x4(), f32x4::ZERO))
25747    }
25748}
25749
25750/// Extract 128 bits (composed of 4 packed single-precision (32-bit) floating-point elements) from a, selected with imm8, and store the result in dst.
25751///
25752/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_extractf32x4_ps&expand=2439)
25753#[inline]
25754#[target_feature(enable = "avx512f,avx512vl")]
25755#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25756#[cfg_attr(
25757    test,
25758    assert_instr(vextract, IMM8 = 1) //should be vextractf32x4
25759)]
25760#[rustc_legacy_const_generics(1)]
25761#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25762pub const fn _mm256_extractf32x4_ps<const IMM8: i32>(a: __m256) -> __m128 {
25763    unsafe {
25764        static_assert_uimm_bits!(IMM8, 1);
25765        match IMM8 & 0x1 {
25766            0 => simd_shuffle!(a, _mm256_undefined_ps(), [0, 1, 2, 3]),
25767            _ => simd_shuffle!(a, _mm256_undefined_ps(), [4, 5, 6, 7]),
25768        }
25769    }
25770}
25771
25772/// Extract 128 bits (composed of 4 packed single-precision (32-bit) floating-point elements) from a, selected with imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
25773///
25774/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_extractf32x4_ps&expand=2440)
25775#[inline]
25776#[target_feature(enable = "avx512f,avx512vl")]
25777#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25778#[cfg_attr(test, assert_instr(vextractf32x4, IMM8 = 1))]
25779#[rustc_legacy_const_generics(3)]
25780#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25781pub const fn _mm256_mask_extractf32x4_ps<const IMM8: i32>(
25782    src: __m128,
25783    k: __mmask8,
25784    a: __m256,
25785) -> __m128 {
25786    unsafe {
25787        static_assert_uimm_bits!(IMM8, 1);
25788        let r = _mm256_extractf32x4_ps::<IMM8>(a);
25789        transmute(simd_select_bitmask(k, r.as_f32x4(), src.as_f32x4()))
25790    }
25791}
25792
25793/// Extract 128 bits (composed of 4 packed single-precision (32-bit) floating-point elements) from a, selected with imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
25794///
25795/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_extractf32x4_ps&expand=2441)
25796#[inline]
25797#[target_feature(enable = "avx512f,avx512vl")]
25798#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25799#[cfg_attr(test, assert_instr(vextractf32x4, IMM8 = 1))]
25800#[rustc_legacy_const_generics(2)]
25801#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25802pub const fn _mm256_maskz_extractf32x4_ps<const IMM8: i32>(k: __mmask8, a: __m256) -> __m128 {
25803    unsafe {
25804        static_assert_uimm_bits!(IMM8, 1);
25805        let r = _mm256_extractf32x4_ps::<IMM8>(a);
25806        transmute(simd_select_bitmask(k, r.as_f32x4(), f32x4::ZERO))
25807    }
25808}
25809
25810/// Extract 256 bits (composed of 4 packed 64-bit integers) from a, selected with IMM1, and store the result in dst.
25811///
25812/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_extracti64x4_epi64&expand=2473)
25813#[inline]
25814#[target_feature(enable = "avx512f")]
25815#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25816#[cfg_attr(
25817    test,
25818    assert_instr(vextractf64x4, IMM1 = 1) //should be vextracti64x4
25819)]
25820#[rustc_legacy_const_generics(1)]
25821#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25822pub const fn _mm512_extracti64x4_epi64<const IMM1: i32>(a: __m512i) -> __m256i {
25823    unsafe {
25824        static_assert_uimm_bits!(IMM1, 1);
25825        match IMM1 {
25826            0 => simd_shuffle!(a, _mm512_setzero_si512(), [0, 1, 2, 3]),
25827            _ => simd_shuffle!(a, _mm512_setzero_si512(), [4, 5, 6, 7]),
25828        }
25829    }
25830}
25831
25832/// Extract 256 bits (composed of 4 packed 64-bit integers) from a, selected with IMM1, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
25833///
25834/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_extracti64x4_epi64&expand=2474)
25835#[inline]
25836#[target_feature(enable = "avx512f")]
25837#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25838#[cfg_attr(test, assert_instr(vextracti64x4, IMM1 = 1))]
25839#[rustc_legacy_const_generics(3)]
25840#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25841pub const fn _mm512_mask_extracti64x4_epi64<const IMM1: i32>(
25842    src: __m256i,
25843    k: __mmask8,
25844    a: __m512i,
25845) -> __m256i {
25846    unsafe {
25847        static_assert_uimm_bits!(IMM1, 1);
25848        let r = _mm512_extracti64x4_epi64::<IMM1>(a);
25849        transmute(simd_select_bitmask(k, r.as_i64x4(), src.as_i64x4()))
25850    }
25851}
25852
25853/// Extract 256 bits (composed of 4 packed 64-bit integers) from a, selected with IMM1, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
25854///
25855/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_extracti64x4_epi64&expand=2475)
25856#[inline]
25857#[target_feature(enable = "avx512f")]
25858#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25859#[cfg_attr(test, assert_instr(vextracti64x4, IMM1 = 1))]
25860#[rustc_legacy_const_generics(2)]
25861#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25862pub const fn _mm512_maskz_extracti64x4_epi64<const IMM1: i32>(k: __mmask8, a: __m512i) -> __m256i {
25863    unsafe {
25864        static_assert_uimm_bits!(IMM1, 1);
25865        let r = _mm512_extracti64x4_epi64::<IMM1>(a);
25866        transmute(simd_select_bitmask(k, r.as_i64x4(), i64x4::ZERO))
25867    }
25868}
25869
25870/// Extract 256 bits (composed of 4 packed double-precision (64-bit) floating-point elements) from a, selected with imm8, and store the result in dst.
25871///
25872/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_extractf64x4_pd&expand=2454)
25873#[inline]
25874#[target_feature(enable = "avx512f")]
25875#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25876#[cfg_attr(test, assert_instr(vextractf64x4, IMM8 = 1))]
25877#[rustc_legacy_const_generics(1)]
25878#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25879pub const fn _mm512_extractf64x4_pd<const IMM8: i32>(a: __m512d) -> __m256d {
25880    unsafe {
25881        static_assert_uimm_bits!(IMM8, 1);
25882        match IMM8 & 0x1 {
25883            0 => simd_shuffle!(a, _mm512_undefined_pd(), [0, 1, 2, 3]),
25884            _ => simd_shuffle!(a, _mm512_undefined_pd(), [4, 5, 6, 7]),
25885        }
25886    }
25887}
25888
25889/// Extract 256 bits (composed of 4 packed double-precision (64-bit) floating-point elements) from a, selected with imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
25890///
25891/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_extractf64x4_pd&expand=2455)
25892#[inline]
25893#[target_feature(enable = "avx512f")]
25894#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25895#[cfg_attr(test, assert_instr(vextractf64x4, IMM8 = 1))]
25896#[rustc_legacy_const_generics(3)]
25897#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25898pub const fn _mm512_mask_extractf64x4_pd<const IMM8: i32>(
25899    src: __m256d,
25900    k: __mmask8,
25901    a: __m512d,
25902) -> __m256d {
25903    unsafe {
25904        static_assert_uimm_bits!(IMM8, 1);
25905        let r = _mm512_extractf64x4_pd::<IMM8>(a);
25906        transmute(simd_select_bitmask(k, r.as_f64x4(), src.as_f64x4()))
25907    }
25908}
25909
25910/// Extract 256 bits (composed of 4 packed double-precision (64-bit) floating-point elements) from a, selected with imm8, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
25911///
25912/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_extractf64x4_pd&expand=2456)
25913#[inline]
25914#[target_feature(enable = "avx512f")]
25915#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25916#[cfg_attr(test, assert_instr(vextractf64x4, IMM8 = 1))]
25917#[rustc_legacy_const_generics(2)]
25918#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25919pub const fn _mm512_maskz_extractf64x4_pd<const IMM8: i32>(k: __mmask8, a: __m512d) -> __m256d {
25920    unsafe {
25921        static_assert_uimm_bits!(IMM8, 1);
25922        let r = _mm512_extractf64x4_pd::<IMM8>(a);
25923        transmute(simd_select_bitmask(k, r.as_f64x4(), f64x4::ZERO))
25924    }
25925}
25926
25927/// Extract 128 bits (composed of 4 packed 32-bit integers) from a, selected with IMM2, and store the result in dst.
25928///
25929/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_extracti32x4_epi32&expand=2461)
25930#[inline]
25931#[target_feature(enable = "avx512f")]
25932#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25933#[cfg_attr(
25934    test,
25935    assert_instr(vextractf32x4, IMM2 = 3) //should be vextracti32x4
25936)]
25937#[rustc_legacy_const_generics(1)]
25938#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25939pub const fn _mm512_extracti32x4_epi32<const IMM2: i32>(a: __m512i) -> __m128i {
25940    unsafe {
25941        static_assert_uimm_bits!(IMM2, 2);
25942        let a = a.as_i32x16();
25943        let zero = i32x16::ZERO;
25944        let extract: i32x4 = match IMM2 {
25945            0 => simd_shuffle!(a, zero, [0, 1, 2, 3]),
25946            1 => simd_shuffle!(a, zero, [4, 5, 6, 7]),
25947            2 => simd_shuffle!(a, zero, [8, 9, 10, 11]),
25948            _ => simd_shuffle!(a, zero, [12, 13, 14, 15]),
25949        };
25950        transmute(extract)
25951    }
25952}
25953
25954/// Extract 128 bits (composed of 4 packed 32-bit integers) from a, selected with IMM2, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
25955///
25956/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_extracti32x4_epi32&expand=2462)
25957#[inline]
25958#[target_feature(enable = "avx512f")]
25959#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25960#[cfg_attr(test, assert_instr(vextracti32x4, IMM2 = 3))]
25961#[rustc_legacy_const_generics(3)]
25962#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25963pub const fn _mm512_mask_extracti32x4_epi32<const IMM2: i32>(
25964    src: __m128i,
25965    k: __mmask8,
25966    a: __m512i,
25967) -> __m128i {
25968    unsafe {
25969        static_assert_uimm_bits!(IMM2, 2);
25970        let r = _mm512_extracti32x4_epi32::<IMM2>(a);
25971        transmute(simd_select_bitmask(k, r.as_i32x4(), src.as_i32x4()))
25972    }
25973}
25974
25975/// Extract 128 bits (composed of 4 packed 32-bit integers) from a, selected with IMM2, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
25976///
25977/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_extracti32x4_epi32&expand=2463)
25978#[inline]
25979#[target_feature(enable = "avx512f")]
25980#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25981#[cfg_attr(test, assert_instr(vextracti32x4, IMM2 = 3))]
25982#[rustc_legacy_const_generics(2)]
25983#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
25984pub const fn _mm512_maskz_extracti32x4_epi32<const IMM2: i32>(k: __mmask8, a: __m512i) -> __m128i {
25985    unsafe {
25986        static_assert_uimm_bits!(IMM2, 2);
25987        let r = _mm512_extracti32x4_epi32::<IMM2>(a);
25988        transmute(simd_select_bitmask(k, r.as_i32x4(), i32x4::ZERO))
25989    }
25990}
25991
25992/// Extract 128 bits (composed of 4 packed 32-bit integers) from a, selected with IMM1, and store the result in dst.
25993///
25994/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_extracti32x4_epi32&expand=2458)
25995#[inline]
25996#[target_feature(enable = "avx512f,avx512vl")]
25997#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
25998#[cfg_attr(
25999    test,
26000    assert_instr(vextract, IMM1 = 1) //should be vextracti32x4
26001)]
26002#[rustc_legacy_const_generics(1)]
26003#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26004pub const fn _mm256_extracti32x4_epi32<const IMM1: i32>(a: __m256i) -> __m128i {
26005    unsafe {
26006        static_assert_uimm_bits!(IMM1, 1);
26007        let a = a.as_i32x8();
26008        let zero = i32x8::ZERO;
26009        let extract: i32x4 = match IMM1 {
26010            0 => simd_shuffle!(a, zero, [0, 1, 2, 3]),
26011            _ => simd_shuffle!(a, zero, [4, 5, 6, 7]),
26012        };
26013        transmute(extract)
26014    }
26015}
26016
26017/// Extract 128 bits (composed of 4 packed 32-bit integers) from a, selected with IMM1, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26018///
26019/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_extracti32x4_epi32&expand=2459)
26020#[inline]
26021#[target_feature(enable = "avx512f,avx512vl")]
26022#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26023#[cfg_attr(test, assert_instr(vextracti32x4, IMM1 = 1))]
26024#[rustc_legacy_const_generics(3)]
26025#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26026pub const fn _mm256_mask_extracti32x4_epi32<const IMM1: i32>(
26027    src: __m128i,
26028    k: __mmask8,
26029    a: __m256i,
26030) -> __m128i {
26031    unsafe {
26032        static_assert_uimm_bits!(IMM1, 1);
26033        let r = _mm256_extracti32x4_epi32::<IMM1>(a);
26034        transmute(simd_select_bitmask(k, r.as_i32x4(), src.as_i32x4()))
26035    }
26036}
26037
26038/// Extract 128 bits (composed of 4 packed 32-bit integers) from a, selected with IMM1, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26039///
26040/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_extracti32x4_epi32&expand=2460)
26041#[inline]
26042#[target_feature(enable = "avx512f,avx512vl")]
26043#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26044#[cfg_attr(test, assert_instr(vextracti32x4, IMM1 = 1))]
26045#[rustc_legacy_const_generics(2)]
26046#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26047pub const fn _mm256_maskz_extracti32x4_epi32<const IMM1: i32>(k: __mmask8, a: __m256i) -> __m128i {
26048    unsafe {
26049        static_assert_uimm_bits!(IMM1, 1);
26050        let r = _mm256_extracti32x4_epi32::<IMM1>(a);
26051        transmute(simd_select_bitmask(k, r.as_i32x4(), i32x4::ZERO))
26052    }
26053}
26054
26055/// Duplicate even-indexed single-precision (32-bit) floating-point elements from a, and store the results in dst.
26056///
26057/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_moveldup_ps&expand=3862)
26058#[inline]
26059#[target_feature(enable = "avx512f")]
26060#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26061#[cfg_attr(test, assert_instr(vmovsldup))]
26062#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26063pub const fn _mm512_moveldup_ps(a: __m512) -> __m512 {
26064    unsafe {
26065        let r: f32x16 = simd_shuffle!(a, a, [0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14]);
26066        transmute(r)
26067    }
26068}
26069
26070/// Duplicate even-indexed single-precision (32-bit) floating-point elements from a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26071///
26072/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_moveldup_ps&expand=3860)
26073#[inline]
26074#[target_feature(enable = "avx512f")]
26075#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26076#[cfg_attr(test, assert_instr(vmovsldup))]
26077#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26078pub const fn _mm512_mask_moveldup_ps(src: __m512, k: __mmask16, a: __m512) -> __m512 {
26079    unsafe {
26080        let mov: f32x16 =
26081            simd_shuffle!(a, a, [0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14]);
26082        transmute(simd_select_bitmask(k, mov, src.as_f32x16()))
26083    }
26084}
26085
26086/// Duplicate even-indexed single-precision (32-bit) floating-point elements from a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26087///
26088/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_moveldup_ps&expand=3861)
26089#[inline]
26090#[target_feature(enable = "avx512f")]
26091#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26092#[cfg_attr(test, assert_instr(vmovsldup))]
26093#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26094pub const fn _mm512_maskz_moveldup_ps(k: __mmask16, a: __m512) -> __m512 {
26095    unsafe {
26096        let mov: f32x16 =
26097            simd_shuffle!(a, a, [0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 14, 14]);
26098        transmute(simd_select_bitmask(k, mov, f32x16::ZERO))
26099    }
26100}
26101
26102/// Duplicate even-indexed single-precision (32-bit) floating-point elements from a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26103///
26104/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_moveldup_ps&expand=3857)
26105#[inline]
26106#[target_feature(enable = "avx512f,avx512vl")]
26107#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26108#[cfg_attr(test, assert_instr(vmovsldup))]
26109#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26110pub const fn _mm256_mask_moveldup_ps(src: __m256, k: __mmask8, a: __m256) -> __m256 {
26111    unsafe {
26112        let mov = _mm256_moveldup_ps(a);
26113        transmute(simd_select_bitmask(k, mov.as_f32x8(), src.as_f32x8()))
26114    }
26115}
26116
26117/// Duplicate even-indexed single-precision (32-bit) floating-point elements from a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26118///
26119/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_moveldup_ps&expand=3858)
26120#[inline]
26121#[target_feature(enable = "avx512f,avx512vl")]
26122#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26123#[cfg_attr(test, assert_instr(vmovsldup))]
26124#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26125pub const fn _mm256_maskz_moveldup_ps(k: __mmask8, a: __m256) -> __m256 {
26126    unsafe {
26127        let mov = _mm256_moveldup_ps(a);
26128        transmute(simd_select_bitmask(k, mov.as_f32x8(), f32x8::ZERO))
26129    }
26130}
26131
26132/// Duplicate even-indexed single-precision (32-bit) floating-point elements from a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26133///
26134/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_moveldup_ps&expand=3854)
26135#[inline]
26136#[target_feature(enable = "avx512f,avx512vl")]
26137#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26138#[cfg_attr(test, assert_instr(vmovsldup))]
26139#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26140pub const fn _mm_mask_moveldup_ps(src: __m128, k: __mmask8, a: __m128) -> __m128 {
26141    unsafe {
26142        let mov = _mm_moveldup_ps(a);
26143        transmute(simd_select_bitmask(k, mov.as_f32x4(), src.as_f32x4()))
26144    }
26145}
26146
26147/// Duplicate even-indexed single-precision (32-bit) floating-point elements from a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26148///
26149/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_moveldup_ps&expand=3855)
26150#[inline]
26151#[target_feature(enable = "avx512f,avx512vl")]
26152#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26153#[cfg_attr(test, assert_instr(vmovsldup))]
26154#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26155pub const fn _mm_maskz_moveldup_ps(k: __mmask8, a: __m128) -> __m128 {
26156    unsafe {
26157        let mov = _mm_moveldup_ps(a);
26158        transmute(simd_select_bitmask(k, mov.as_f32x4(), f32x4::ZERO))
26159    }
26160}
26161
26162/// Duplicate odd-indexed single-precision (32-bit) floating-point elements from a, and store the results in dst.
26163///
26164/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_movehdup_ps&expand=3852)
26165#[inline]
26166#[target_feature(enable = "avx512f")]
26167#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26168#[cfg_attr(test, assert_instr(vmovshdup))]
26169#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26170pub const fn _mm512_movehdup_ps(a: __m512) -> __m512 {
26171    unsafe {
26172        let r: f32x16 = simd_shuffle!(a, a, [1, 1, 3, 3, 5, 5, 7, 7, 9, 9, 11, 11, 13, 13, 15, 15]);
26173        transmute(r)
26174    }
26175}
26176
26177/// Duplicate odd-indexed single-precision (32-bit) floating-point elements from a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26178///
26179/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_movehdup_ps&expand=3850)
26180#[inline]
26181#[target_feature(enable = "avx512f")]
26182#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26183#[cfg_attr(test, assert_instr(vmovshdup))]
26184#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26185pub const fn _mm512_mask_movehdup_ps(src: __m512, k: __mmask16, a: __m512) -> __m512 {
26186    unsafe {
26187        let mov: f32x16 =
26188            simd_shuffle!(a, a, [1, 1, 3, 3, 5, 5, 7, 7, 9, 9, 11, 11, 13, 13, 15, 15]);
26189        transmute(simd_select_bitmask(k, mov, src.as_f32x16()))
26190    }
26191}
26192
26193/// Duplicate odd-indexed single-precision (32-bit) floating-point elements from a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26194///
26195/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_movehdup_ps&expand=3851)
26196#[inline]
26197#[target_feature(enable = "avx512f")]
26198#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26199#[cfg_attr(test, assert_instr(vmovshdup))]
26200#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26201pub const fn _mm512_maskz_movehdup_ps(k: __mmask16, a: __m512) -> __m512 {
26202    unsafe {
26203        let mov: f32x16 =
26204            simd_shuffle!(a, a, [1, 1, 3, 3, 5, 5, 7, 7, 9, 9, 11, 11, 13, 13, 15, 15]);
26205        transmute(simd_select_bitmask(k, mov, f32x16::ZERO))
26206    }
26207}
26208
26209/// Duplicate odd-indexed single-precision (32-bit) floating-point elements from a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26210///
26211/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_movehdup_ps&expand=3847)
26212#[inline]
26213#[target_feature(enable = "avx512f,avx512vl")]
26214#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26215#[cfg_attr(test, assert_instr(vmovshdup))]
26216#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26217pub const fn _mm256_mask_movehdup_ps(src: __m256, k: __mmask8, a: __m256) -> __m256 {
26218    unsafe {
26219        let mov = _mm256_movehdup_ps(a);
26220        transmute(simd_select_bitmask(k, mov.as_f32x8(), src.as_f32x8()))
26221    }
26222}
26223
26224/// Duplicate odd-indexed single-precision (32-bit) floating-point elements from a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26225///
26226/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_movehdup_ps&expand=3848)
26227#[inline]
26228#[target_feature(enable = "avx512f,avx512vl")]
26229#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26230#[cfg_attr(test, assert_instr(vmovshdup))]
26231#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26232pub const fn _mm256_maskz_movehdup_ps(k: __mmask8, a: __m256) -> __m256 {
26233    unsafe {
26234        let mov = _mm256_movehdup_ps(a);
26235        transmute(simd_select_bitmask(k, mov.as_f32x8(), f32x8::ZERO))
26236    }
26237}
26238
26239/// Duplicate odd-indexed single-precision (32-bit) floating-point elements from a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26240///
26241/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_movehdup_ps&expand=3844)
26242#[inline]
26243#[target_feature(enable = "avx512f,avx512vl")]
26244#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26245#[cfg_attr(test, assert_instr(vmovshdup))]
26246#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26247pub const fn _mm_mask_movehdup_ps(src: __m128, k: __mmask8, a: __m128) -> __m128 {
26248    unsafe {
26249        let mov = _mm_movehdup_ps(a);
26250        transmute(simd_select_bitmask(k, mov.as_f32x4(), src.as_f32x4()))
26251    }
26252}
26253
26254/// Duplicate odd-indexed single-precision (32-bit) floating-point elements from a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26255///
26256/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_movehdup_ps&expand=3845)
26257#[inline]
26258#[target_feature(enable = "avx512f,avx512vl")]
26259#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26260#[cfg_attr(test, assert_instr(vmovshdup))]
26261#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26262pub const fn _mm_maskz_movehdup_ps(k: __mmask8, a: __m128) -> __m128 {
26263    unsafe {
26264        let mov = _mm_movehdup_ps(a);
26265        transmute(simd_select_bitmask(k, mov.as_f32x4(), f32x4::ZERO))
26266    }
26267}
26268
26269/// Duplicate even-indexed double-precision (64-bit) floating-point elements from a, and store the results in dst.
26270///
26271/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_movedup_pd&expand=3843)
26272#[inline]
26273#[target_feature(enable = "avx512f")]
26274#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26275#[cfg_attr(test, assert_instr(vmovddup))]
26276#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26277pub const fn _mm512_movedup_pd(a: __m512d) -> __m512d {
26278    unsafe {
26279        let r: f64x8 = simd_shuffle!(a, a, [0, 0, 2, 2, 4, 4, 6, 6]);
26280        transmute(r)
26281    }
26282}
26283
26284/// Duplicate even-indexed double-precision (64-bit) floating-point elements from a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26285///
26286/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_movedup_pd&expand=3841)
26287#[inline]
26288#[target_feature(enable = "avx512f")]
26289#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26290#[cfg_attr(test, assert_instr(vmovddup))]
26291#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26292pub const fn _mm512_mask_movedup_pd(src: __m512d, k: __mmask8, a: __m512d) -> __m512d {
26293    unsafe {
26294        let mov: f64x8 = simd_shuffle!(a, a, [0, 0, 2, 2, 4, 4, 6, 6]);
26295        transmute(simd_select_bitmask(k, mov, src.as_f64x8()))
26296    }
26297}
26298
26299/// Duplicate even-indexed double-precision (64-bit) floating-point elements from a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26300///
26301/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_movedup_pd&expand=3842)
26302#[inline]
26303#[target_feature(enable = "avx512f")]
26304#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26305#[cfg_attr(test, assert_instr(vmovddup))]
26306#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26307pub const fn _mm512_maskz_movedup_pd(k: __mmask8, a: __m512d) -> __m512d {
26308    unsafe {
26309        let mov: f64x8 = simd_shuffle!(a, a, [0, 0, 2, 2, 4, 4, 6, 6]);
26310        transmute(simd_select_bitmask(k, mov, f64x8::ZERO))
26311    }
26312}
26313
26314/// Duplicate even-indexed double-precision (64-bit) floating-point elements from a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26315///
26316/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_movedup_pd&expand=3838)
26317#[inline]
26318#[target_feature(enable = "avx512f,avx512vl")]
26319#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26320#[cfg_attr(test, assert_instr(vmovddup))]
26321#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26322pub const fn _mm256_mask_movedup_pd(src: __m256d, k: __mmask8, a: __m256d) -> __m256d {
26323    unsafe {
26324        let mov = _mm256_movedup_pd(a);
26325        transmute(simd_select_bitmask(k, mov.as_f64x4(), src.as_f64x4()))
26326    }
26327}
26328
26329/// Duplicate even-indexed double-precision (64-bit) floating-point elements from a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26330///
26331/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_movedup_pd&expand=3839)
26332#[inline]
26333#[target_feature(enable = "avx512f,avx512vl")]
26334#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26335#[cfg_attr(test, assert_instr(vmovddup))]
26336#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26337pub const fn _mm256_maskz_movedup_pd(k: __mmask8, a: __m256d) -> __m256d {
26338    unsafe {
26339        let mov = _mm256_movedup_pd(a);
26340        transmute(simd_select_bitmask(k, mov.as_f64x4(), f64x4::ZERO))
26341    }
26342}
26343
26344/// Duplicate even-indexed double-precision (64-bit) floating-point elements from a, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26345///
26346/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_movedup_pd&expand=3835)
26347#[inline]
26348#[target_feature(enable = "avx512f,avx512vl")]
26349#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26350#[cfg_attr(test, assert_instr(vmovddup))]
26351#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26352pub const fn _mm_mask_movedup_pd(src: __m128d, k: __mmask8, a: __m128d) -> __m128d {
26353    unsafe {
26354        let mov = _mm_movedup_pd(a);
26355        transmute(simd_select_bitmask(k, mov.as_f64x2(), src.as_f64x2()))
26356    }
26357}
26358
26359/// Duplicate even-indexed double-precision (64-bit) floating-point elements from a, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26360///
26361/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_movedup_pd&expand=3836)
26362#[inline]
26363#[target_feature(enable = "avx512f,avx512vl")]
26364#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26365#[cfg_attr(test, assert_instr(vmovddup))]
26366#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26367pub const fn _mm_maskz_movedup_pd(k: __mmask8, a: __m128d) -> __m128d {
26368    unsafe {
26369        let mov = _mm_movedup_pd(a);
26370        transmute(simd_select_bitmask(k, mov.as_f64x2(), f64x2::ZERO))
26371    }
26372}
26373
26374/// Copy a to dst, then insert 128 bits (composed of 4 packed 32-bit integers) from b into dst at the location specified by imm8.
26375///
26376/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_inserti32x4&expand=3174)
26377#[inline]
26378#[target_feature(enable = "avx512f")]
26379#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26380#[cfg_attr(test, assert_instr(vinsertf32x4, IMM8 = 2))] //should be vinserti32x4
26381#[rustc_legacy_const_generics(2)]
26382#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26383pub const fn _mm512_inserti32x4<const IMM8: i32>(a: __m512i, b: __m128i) -> __m512i {
26384    unsafe {
26385        static_assert_uimm_bits!(IMM8, 2);
26386        let a = a.as_i32x16();
26387        let b = _mm512_castsi128_si512(b).as_i32x16();
26388        let ret: i32x16 = match IMM8 & 0b11 {
26389            0 => {
26390                simd_shuffle!(
26391                    a,
26392                    b,
26393                    [16, 17, 18, 19, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
26394                )
26395            }
26396            1 => {
26397                simd_shuffle!(
26398                    a,
26399                    b,
26400                    [0, 1, 2, 3, 16, 17, 18, 19, 8, 9, 10, 11, 12, 13, 14, 15],
26401                )
26402            }
26403            2 => {
26404                simd_shuffle!(
26405                    a,
26406                    b,
26407                    [0, 1, 2, 3, 4, 5, 6, 7, 16, 17, 18, 19, 12, 13, 14, 15],
26408                )
26409            }
26410            _ => {
26411                simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17, 18, 19])
26412            }
26413        };
26414        transmute(ret)
26415    }
26416}
26417
26418/// Copy a to tmp, then insert 128 bits (composed of 4 packed 32-bit integers) from b into tmp at the location specified by imm8. Store tmp to dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26419///
26420/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_inserti32x4&expand=3175)
26421#[inline]
26422#[target_feature(enable = "avx512f")]
26423#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26424#[cfg_attr(test, assert_instr(vinserti32x4, IMM8 = 2))]
26425#[rustc_legacy_const_generics(4)]
26426#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26427pub const fn _mm512_mask_inserti32x4<const IMM8: i32>(
26428    src: __m512i,
26429    k: __mmask16,
26430    a: __m512i,
26431    b: __m128i,
26432) -> __m512i {
26433    unsafe {
26434        static_assert_uimm_bits!(IMM8, 2);
26435        let r = _mm512_inserti32x4::<IMM8>(a, b);
26436        transmute(simd_select_bitmask(k, r.as_i32x16(), src.as_i32x16()))
26437    }
26438}
26439
26440/// Copy a to tmp, then insert 128 bits (composed of 4 packed 32-bit integers) from b into tmp at the location specified by imm8. Store tmp to dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26441///
26442/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_inserti32x4&expand=3176)
26443#[inline]
26444#[target_feature(enable = "avx512f")]
26445#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26446#[cfg_attr(test, assert_instr(vinserti32x4, IMM8 = 2))]
26447#[rustc_legacy_const_generics(3)]
26448#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26449pub const fn _mm512_maskz_inserti32x4<const IMM8: i32>(
26450    k: __mmask16,
26451    a: __m512i,
26452    b: __m128i,
26453) -> __m512i {
26454    unsafe {
26455        static_assert_uimm_bits!(IMM8, 2);
26456        let r = _mm512_inserti32x4::<IMM8>(a, b);
26457        transmute(simd_select_bitmask(k, r.as_i32x16(), i32x16::ZERO))
26458    }
26459}
26460
26461/// Copy a to dst, then insert 128 bits (composed of 4 packed 32-bit integers) from b into dst at the location specified by imm8.
26462///
26463/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_inserti32x4&expand=3171)
26464#[inline]
26465#[target_feature(enable = "avx512f,avx512vl")]
26466#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26467#[cfg_attr(
26468    test,
26469    assert_instr(vinsert, IMM8 = 1) //should be vinserti32x4
26470)]
26471#[rustc_legacy_const_generics(2)]
26472#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26473pub const fn _mm256_inserti32x4<const IMM8: i32>(a: __m256i, b: __m128i) -> __m256i {
26474    unsafe {
26475        static_assert_uimm_bits!(IMM8, 1);
26476        let a = a.as_i32x8();
26477        let b = _mm256_castsi128_si256(b).as_i32x8();
26478        let ret: i32x8 = match IMM8 & 0b1 {
26479            0 => simd_shuffle!(a, b, [8, 9, 10, 11, 4, 5, 6, 7]),
26480            _ => simd_shuffle!(a, b, [0, 1, 2, 3, 8, 9, 10, 11]),
26481        };
26482        transmute(ret)
26483    }
26484}
26485
26486/// Copy a to tmp, then insert 128 bits (composed of 4 packed 32-bit integers) from b into tmp at the location specified by imm8. Store tmp to dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26487///
26488/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_inserti32x4&expand=3172)
26489#[inline]
26490#[target_feature(enable = "avx512f,avx512vl")]
26491#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26492#[cfg_attr(test, assert_instr(vinserti32x4, IMM8 = 1))]
26493#[rustc_legacy_const_generics(4)]
26494#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26495pub const fn _mm256_mask_inserti32x4<const IMM8: i32>(
26496    src: __m256i,
26497    k: __mmask8,
26498    a: __m256i,
26499    b: __m128i,
26500) -> __m256i {
26501    unsafe {
26502        static_assert_uimm_bits!(IMM8, 1);
26503        let r = _mm256_inserti32x4::<IMM8>(a, b);
26504        transmute(simd_select_bitmask(k, r.as_i32x8(), src.as_i32x8()))
26505    }
26506}
26507
26508/// Copy a to tmp, then insert 128 bits (composed of 4 packed 32-bit integers) from b into tmp at the location specified by imm8. Store tmp to dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26509///
26510/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_inserti32x4&expand=3173)
26511#[inline]
26512#[target_feature(enable = "avx512f,avx512vl")]
26513#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26514#[cfg_attr(test, assert_instr(vinserti32x4, IMM8 = 1))]
26515#[rustc_legacy_const_generics(3)]
26516#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26517pub const fn _mm256_maskz_inserti32x4<const IMM8: i32>(
26518    k: __mmask8,
26519    a: __m256i,
26520    b: __m128i,
26521) -> __m256i {
26522    unsafe {
26523        static_assert_uimm_bits!(IMM8, 1);
26524        let r = _mm256_inserti32x4::<IMM8>(a, b);
26525        transmute(simd_select_bitmask(k, r.as_i32x8(), i32x8::ZERO))
26526    }
26527}
26528
26529/// Copy a to dst, then insert 256 bits (composed of 4 packed 64-bit integers) from b into dst at the location specified by imm8.
26530///
26531/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_inserti64x4&expand=3186)
26532#[inline]
26533#[target_feature(enable = "avx512f")]
26534#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26535#[cfg_attr(test, assert_instr(vinsertf64x4, IMM8 = 1))] //should be vinserti64x4
26536#[rustc_legacy_const_generics(2)]
26537#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26538pub const fn _mm512_inserti64x4<const IMM8: i32>(a: __m512i, b: __m256i) -> __m512i {
26539    unsafe {
26540        static_assert_uimm_bits!(IMM8, 1);
26541        let b = _mm512_castsi256_si512(b);
26542        match IMM8 & 0b1 {
26543            0 => simd_shuffle!(a, b, [8, 9, 10, 11, 4, 5, 6, 7]),
26544            _ => simd_shuffle!(a, b, [0, 1, 2, 3, 8, 9, 10, 11]),
26545        }
26546    }
26547}
26548
26549/// Copy a to tmp, then insert 256 bits (composed of 4 packed 64-bit integers) from b into tmp at the location specified by imm8. Store tmp to dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26550///
26551/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_inserti64x4&expand=3187)
26552#[inline]
26553#[target_feature(enable = "avx512f")]
26554#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26555#[cfg_attr(test, assert_instr(vinserti64x4, IMM8 = 1))]
26556#[rustc_legacy_const_generics(4)]
26557#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26558pub const fn _mm512_mask_inserti64x4<const IMM8: i32>(
26559    src: __m512i,
26560    k: __mmask8,
26561    a: __m512i,
26562    b: __m256i,
26563) -> __m512i {
26564    unsafe {
26565        static_assert_uimm_bits!(IMM8, 1);
26566        let r = _mm512_inserti64x4::<IMM8>(a, b);
26567        transmute(simd_select_bitmask(k, r.as_i64x8(), src.as_i64x8()))
26568    }
26569}
26570
26571/// Copy a to tmp, then insert 256 bits (composed of 4 packed 64-bit integers) from b into tmp at the location specified by imm8. Store tmp to dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26572///
26573/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_inserti64x4&expand=3188)
26574#[inline]
26575#[target_feature(enable = "avx512f")]
26576#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26577#[cfg_attr(test, assert_instr(vinserti64x4, IMM8 = 1))]
26578#[rustc_legacy_const_generics(3)]
26579#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26580pub const fn _mm512_maskz_inserti64x4<const IMM8: i32>(
26581    k: __mmask8,
26582    a: __m512i,
26583    b: __m256i,
26584) -> __m512i {
26585    unsafe {
26586        static_assert_uimm_bits!(IMM8, 1);
26587        let r = _mm512_inserti64x4::<IMM8>(a, b);
26588        transmute(simd_select_bitmask(k, r.as_i64x8(), i64x8::ZERO))
26589    }
26590}
26591
26592/// Copy a to dst, then insert 128 bits (composed of 4 packed single-precision (32-bit) floating-point elements) from b into dst at the location specified by imm8.
26593///
26594/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_insertf32x4&expand=3155)
26595#[inline]
26596#[target_feature(enable = "avx512f")]
26597#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26598#[cfg_attr(test, assert_instr(vinsertf32x4, IMM8 = 2))]
26599#[rustc_legacy_const_generics(2)]
26600#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26601pub const fn _mm512_insertf32x4<const IMM8: i32>(a: __m512, b: __m128) -> __m512 {
26602    unsafe {
26603        static_assert_uimm_bits!(IMM8, 2);
26604        let b = _mm512_castps128_ps512(b);
26605        match IMM8 & 0b11 {
26606            0 => {
26607                simd_shuffle!(
26608                    a,
26609                    b,
26610                    [16, 17, 18, 19, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
26611                )
26612            }
26613            1 => {
26614                simd_shuffle!(
26615                    a,
26616                    b,
26617                    [0, 1, 2, 3, 16, 17, 18, 19, 8, 9, 10, 11, 12, 13, 14, 15],
26618                )
26619            }
26620            2 => {
26621                simd_shuffle!(
26622                    a,
26623                    b,
26624                    [0, 1, 2, 3, 4, 5, 6, 7, 16, 17, 18, 19, 12, 13, 14, 15],
26625                )
26626            }
26627            _ => {
26628                simd_shuffle!(a, b, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 16, 17, 18, 19])
26629            }
26630        }
26631    }
26632}
26633
26634/// Copy a to tmp, then insert 128 bits (composed of 4 packed single-precision (32-bit) floating-point elements) from b into tmp at the location specified by imm8. Store tmp to dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26635///
26636/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_insertf32x4&expand=3156)
26637#[inline]
26638#[target_feature(enable = "avx512f")]
26639#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26640#[cfg_attr(test, assert_instr(vinsertf32x4, IMM8 = 2))]
26641#[rustc_legacy_const_generics(4)]
26642#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26643pub const fn _mm512_mask_insertf32x4<const IMM8: i32>(
26644    src: __m512,
26645    k: __mmask16,
26646    a: __m512,
26647    b: __m128,
26648) -> __m512 {
26649    unsafe {
26650        static_assert_uimm_bits!(IMM8, 2);
26651        let r = _mm512_insertf32x4::<IMM8>(a, b);
26652        transmute(simd_select_bitmask(k, r.as_f32x16(), src.as_f32x16()))
26653    }
26654}
26655
26656/// Copy a to tmp, then insert 128 bits (composed of 4 packed single-precision (32-bit) floating-point elements) from b into tmp at the location specified by imm8. Store tmp to dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26657///
26658/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_insertf32x4&expand=3157)
26659#[inline]
26660#[target_feature(enable = "avx512f")]
26661#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26662#[cfg_attr(test, assert_instr(vinsertf32x4, IMM8 = 2))]
26663#[rustc_legacy_const_generics(3)]
26664#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26665pub const fn _mm512_maskz_insertf32x4<const IMM8: i32>(
26666    k: __mmask16,
26667    a: __m512,
26668    b: __m128,
26669) -> __m512 {
26670    unsafe {
26671        static_assert_uimm_bits!(IMM8, 2);
26672        let r = _mm512_insertf32x4::<IMM8>(a, b);
26673        transmute(simd_select_bitmask(k, r.as_f32x16(), f32x16::ZERO))
26674    }
26675}
26676
26677/// Copy a to dst, then insert 128 bits (composed of 4 packed single-precision (32-bit) floating-point elements) from b into dst at the location specified by imm8.
26678///
26679/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_insertf32x4&expand=3152)
26680#[inline]
26681#[target_feature(enable = "avx512f,avx512vl")]
26682#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26683#[cfg_attr(
26684    test,
26685    assert_instr(vinsert, IMM8 = 1) //should be vinsertf32x4
26686)]
26687#[rustc_legacy_const_generics(2)]
26688#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26689pub const fn _mm256_insertf32x4<const IMM8: i32>(a: __m256, b: __m128) -> __m256 {
26690    unsafe {
26691        static_assert_uimm_bits!(IMM8, 1);
26692        let b = _mm256_castps128_ps256(b);
26693        match IMM8 & 0b1 {
26694            0 => simd_shuffle!(a, b, [8, 9, 10, 11, 4, 5, 6, 7]),
26695            _ => simd_shuffle!(a, b, [0, 1, 2, 3, 8, 9, 10, 11]),
26696        }
26697    }
26698}
26699
26700/// Copy a to tmp, then insert 128 bits (composed of 4 packed single-precision (32-bit) floating-point elements) from b into tmp at the location specified by imm8. Store tmp to dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26701///
26702/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_insertf32x4&expand=3153)
26703#[inline]
26704#[target_feature(enable = "avx512f,avx512vl")]
26705#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26706#[cfg_attr(test, assert_instr(vinsertf32x4, IMM8 = 1))]
26707#[rustc_legacy_const_generics(4)]
26708#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26709pub const fn _mm256_mask_insertf32x4<const IMM8: i32>(
26710    src: __m256,
26711    k: __mmask8,
26712    a: __m256,
26713    b: __m128,
26714) -> __m256 {
26715    unsafe {
26716        static_assert_uimm_bits!(IMM8, 1);
26717        let r = _mm256_insertf32x4::<IMM8>(a, b);
26718        transmute(simd_select_bitmask(k, r.as_f32x8(), src.as_f32x8()))
26719    }
26720}
26721
26722/// Copy a to tmp, then insert 128 bits (composed of 4 packed single-precision (32-bit) floating-point elements) from b into tmp at the location specified by imm8. Store tmp to dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26723///
26724/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_insertf32x4&expand=3154)
26725#[inline]
26726#[target_feature(enable = "avx512f,avx512vl")]
26727#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26728#[cfg_attr(test, assert_instr(vinsertf32x4, IMM8 = 1))]
26729#[rustc_legacy_const_generics(3)]
26730#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26731pub const fn _mm256_maskz_insertf32x4<const IMM8: i32>(
26732    k: __mmask8,
26733    a: __m256,
26734    b: __m128,
26735) -> __m256 {
26736    unsafe {
26737        static_assert_uimm_bits!(IMM8, 1);
26738        let r = _mm256_insertf32x4::<IMM8>(a, b);
26739        transmute(simd_select_bitmask(k, r.as_f32x8(), f32x8::ZERO))
26740    }
26741}
26742
26743/// Copy a to dst, then insert 256 bits (composed of 4 packed double-precision (64-bit) floating-point elements) from b into dst at the location specified by imm8.
26744///
26745/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_insertf64x4&expand=3167)
26746#[inline]
26747#[target_feature(enable = "avx512f")]
26748#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26749#[cfg_attr(test, assert_instr(vinsertf64x4, IMM8 = 1))]
26750#[rustc_legacy_const_generics(2)]
26751#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26752pub const fn _mm512_insertf64x4<const IMM8: i32>(a: __m512d, b: __m256d) -> __m512d {
26753    unsafe {
26754        static_assert_uimm_bits!(IMM8, 1);
26755        let b = _mm512_castpd256_pd512(b);
26756        match IMM8 & 0b1 {
26757            0 => simd_shuffle!(a, b, [8, 9, 10, 11, 4, 5, 6, 7]),
26758            _ => simd_shuffle!(a, b, [0, 1, 2, 3, 8, 9, 10, 11]),
26759        }
26760    }
26761}
26762
26763/// Copy a to tmp, then insert 256 bits (composed of 4 packed double-precision (64-bit) floating-point elements) from b into tmp at the location specified by imm8. Store tmp to dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26764///
26765/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_insertf64x4&expand=3168)
26766#[inline]
26767#[target_feature(enable = "avx512f")]
26768#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26769#[cfg_attr(test, assert_instr(vinsertf64x4, IMM8 = 1))]
26770#[rustc_legacy_const_generics(4)]
26771#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26772pub const fn _mm512_mask_insertf64x4<const IMM8: i32>(
26773    src: __m512d,
26774    k: __mmask8,
26775    a: __m512d,
26776    b: __m256d,
26777) -> __m512d {
26778    unsafe {
26779        static_assert_uimm_bits!(IMM8, 1);
26780        let r = _mm512_insertf64x4::<IMM8>(a, b);
26781        transmute(simd_select_bitmask(k, r.as_f64x8(), src.as_f64x8()))
26782    }
26783}
26784
26785/// Copy a to tmp, then insert 256 bits (composed of 4 packed double-precision (64-bit) floating-point elements) from b into tmp at the location specified by imm8. Store tmp to dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26786///
26787/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_insertf64x4&expand=3169)
26788#[inline]
26789#[target_feature(enable = "avx512f")]
26790#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26791#[cfg_attr(test, assert_instr(vinsertf64x4, IMM8 = 1))]
26792#[rustc_legacy_const_generics(3)]
26793#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26794pub const fn _mm512_maskz_insertf64x4<const IMM8: i32>(
26795    k: __mmask8,
26796    a: __m512d,
26797    b: __m256d,
26798) -> __m512d {
26799    unsafe {
26800        static_assert_uimm_bits!(IMM8, 1);
26801        let r = _mm512_insertf64x4::<IMM8>(a, b);
26802        transmute(simd_select_bitmask(k, r.as_f64x8(), f64x8::ZERO))
26803    }
26804}
26805
26806/// Unpack and interleave 32-bit integers from the high half of each 128-bit lane in a and b, and store the results in dst.
26807///
26808/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_unpackhi_epi32&expand=6021)
26809#[inline]
26810#[target_feature(enable = "avx512f")]
26811#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26812#[cfg_attr(test, assert_instr(vunpckhps))] //should be vpunpckhdq
26813#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26814pub const fn _mm512_unpackhi_epi32(a: __m512i, b: __m512i) -> __m512i {
26815    unsafe {
26816        let a = a.as_i32x16();
26817        let b = b.as_i32x16();
26818        #[rustfmt::skip]
26819        let r: i32x16 = simd_shuffle!(
26820            a, b,
26821            [ 2, 18, 3, 19,
26822              2 + 4, 18 + 4, 3 + 4, 19 + 4,
26823              2 + 8, 18 + 8, 3 + 8, 19 + 8,
26824              2 + 12, 18 + 12, 3 + 12, 19 + 12],
26825        );
26826        transmute(r)
26827    }
26828}
26829
26830/// Unpack and interleave 32-bit integers from the high half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26831///
26832/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_unpackhi_epi32&expand=6019)
26833#[inline]
26834#[target_feature(enable = "avx512f")]
26835#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26836#[cfg_attr(test, assert_instr(vpunpckhdq))]
26837#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26838pub const fn _mm512_mask_unpackhi_epi32(
26839    src: __m512i,
26840    k: __mmask16,
26841    a: __m512i,
26842    b: __m512i,
26843) -> __m512i {
26844    unsafe {
26845        let unpackhi = _mm512_unpackhi_epi32(a, b).as_i32x16();
26846        transmute(simd_select_bitmask(k, unpackhi, src.as_i32x16()))
26847    }
26848}
26849
26850/// Unpack and interleave 32-bit integers from the high half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26851///
26852/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_unpackhi_epi32&expand=6020)
26853#[inline]
26854#[target_feature(enable = "avx512f")]
26855#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26856#[cfg_attr(test, assert_instr(vpunpckhdq))]
26857#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26858pub const fn _mm512_maskz_unpackhi_epi32(k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
26859    unsafe {
26860        let unpackhi = _mm512_unpackhi_epi32(a, b).as_i32x16();
26861        transmute(simd_select_bitmask(k, unpackhi, i32x16::ZERO))
26862    }
26863}
26864
26865/// Unpack and interleave 32-bit integers from the high half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26866///
26867/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_unpackhi_epi32&expand=6016)
26868#[inline]
26869#[target_feature(enable = "avx512f,avx512vl")]
26870#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26871#[cfg_attr(test, assert_instr(vpunpckhdq))]
26872#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26873pub const fn _mm256_mask_unpackhi_epi32(
26874    src: __m256i,
26875    k: __mmask8,
26876    a: __m256i,
26877    b: __m256i,
26878) -> __m256i {
26879    unsafe {
26880        let unpackhi = _mm256_unpackhi_epi32(a, b).as_i32x8();
26881        transmute(simd_select_bitmask(k, unpackhi, src.as_i32x8()))
26882    }
26883}
26884
26885/// Unpack and interleave 32-bit integers from the high half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26886///
26887/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_unpackhi_epi32&expand=6017)
26888#[inline]
26889#[target_feature(enable = "avx512f,avx512vl")]
26890#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26891#[cfg_attr(test, assert_instr(vpunpckhdq))]
26892#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26893pub const fn _mm256_maskz_unpackhi_epi32(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
26894    unsafe {
26895        let unpackhi = _mm256_unpackhi_epi32(a, b).as_i32x8();
26896        transmute(simd_select_bitmask(k, unpackhi, i32x8::ZERO))
26897    }
26898}
26899
26900/// Unpack and interleave 32-bit integers from the high half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26901///
26902/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_unpackhi_epi32&expand=6013)
26903#[inline]
26904#[target_feature(enable = "avx512f,avx512vl")]
26905#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26906#[cfg_attr(test, assert_instr(vpunpckhdq))]
26907#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26908pub const fn _mm_mask_unpackhi_epi32(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
26909    unsafe {
26910        let unpackhi = _mm_unpackhi_epi32(a, b).as_i32x4();
26911        transmute(simd_select_bitmask(k, unpackhi, src.as_i32x4()))
26912    }
26913}
26914
26915/// Unpack and interleave 32-bit integers from the high half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26916///
26917/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_unpackhi_epi32&expand=6014)
26918#[inline]
26919#[target_feature(enable = "avx512f,avx512vl")]
26920#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26921#[cfg_attr(test, assert_instr(vpunpckhdq))]
26922#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26923pub const fn _mm_maskz_unpackhi_epi32(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
26924    unsafe {
26925        let unpackhi = _mm_unpackhi_epi32(a, b).as_i32x4();
26926        transmute(simd_select_bitmask(k, unpackhi, i32x4::ZERO))
26927    }
26928}
26929
26930/// Unpack and interleave 64-bit integers from the high half of each 128-bit lane in a and b, and store the results in dst.
26931///
26932/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_unpackhi_epi64&expand=6030)
26933#[inline]
26934#[target_feature(enable = "avx512f")]
26935#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26936#[cfg_attr(test, assert_instr(vunpckhpd))] //should be vpunpckhqdq
26937#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26938pub const fn _mm512_unpackhi_epi64(a: __m512i, b: __m512i) -> __m512i {
26939    unsafe { simd_shuffle!(a, b, [1, 9, 1 + 2, 9 + 2, 1 + 4, 9 + 4, 1 + 6, 9 + 6]) }
26940}
26941
26942/// Unpack and interleave 64-bit integers from the high half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26943///
26944/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_unpackhi_epi64&expand=6028)
26945#[inline]
26946#[target_feature(enable = "avx512f")]
26947#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26948#[cfg_attr(test, assert_instr(vpunpckhqdq))]
26949#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26950pub const fn _mm512_mask_unpackhi_epi64(
26951    src: __m512i,
26952    k: __mmask8,
26953    a: __m512i,
26954    b: __m512i,
26955) -> __m512i {
26956    unsafe {
26957        let unpackhi = _mm512_unpackhi_epi64(a, b).as_i64x8();
26958        transmute(simd_select_bitmask(k, unpackhi, src.as_i64x8()))
26959    }
26960}
26961
26962/// Unpack and interleave 64-bit integers from the high half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26963///
26964/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_unpackhi_epi64&expand=6029)
26965#[inline]
26966#[target_feature(enable = "avx512f")]
26967#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26968#[cfg_attr(test, assert_instr(vpunpckhqdq))]
26969#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26970pub const fn _mm512_maskz_unpackhi_epi64(k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
26971    unsafe {
26972        let unpackhi = _mm512_unpackhi_epi64(a, b).as_i64x8();
26973        transmute(simd_select_bitmask(k, unpackhi, i64x8::ZERO))
26974    }
26975}
26976
26977/// Unpack and interleave 64-bit integers from the high half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
26978///
26979/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_unpackhi_epi64&expand=6025)
26980#[inline]
26981#[target_feature(enable = "avx512f,avx512vl")]
26982#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
26983#[cfg_attr(test, assert_instr(vpunpckhqdq))]
26984#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
26985pub const fn _mm256_mask_unpackhi_epi64(
26986    src: __m256i,
26987    k: __mmask8,
26988    a: __m256i,
26989    b: __m256i,
26990) -> __m256i {
26991    unsafe {
26992        let unpackhi = _mm256_unpackhi_epi64(a, b).as_i64x4();
26993        transmute(simd_select_bitmask(k, unpackhi, src.as_i64x4()))
26994    }
26995}
26996
26997/// Unpack and interleave 64-bit integers from the high half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
26998///
26999/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_unpackhi_epi64&expand=6026)
27000#[inline]
27001#[target_feature(enable = "avx512f,avx512vl")]
27002#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27003#[cfg_attr(test, assert_instr(vpunpckhqdq))]
27004#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27005pub const fn _mm256_maskz_unpackhi_epi64(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
27006    unsafe {
27007        let unpackhi = _mm256_unpackhi_epi64(a, b).as_i64x4();
27008        transmute(simd_select_bitmask(k, unpackhi, i64x4::ZERO))
27009    }
27010}
27011
27012/// Unpack and interleave 64-bit integers from the high half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
27013///
27014/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_unpackhi_epi64&expand=6022)
27015#[inline]
27016#[target_feature(enable = "avx512f,avx512vl")]
27017#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27018#[cfg_attr(test, assert_instr(vpunpckhqdq))]
27019#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27020pub const fn _mm_mask_unpackhi_epi64(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
27021    unsafe {
27022        let unpackhi = _mm_unpackhi_epi64(a, b).as_i64x2();
27023        transmute(simd_select_bitmask(k, unpackhi, src.as_i64x2()))
27024    }
27025}
27026
27027/// Unpack and interleave 64-bit integers from the high half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
27028///
27029/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_unpackhi_epi64&expand=6023)
27030#[inline]
27031#[target_feature(enable = "avx512f,avx512vl")]
27032#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27033#[cfg_attr(test, assert_instr(vpunpckhqdq))]
27034#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27035pub const fn _mm_maskz_unpackhi_epi64(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
27036    unsafe {
27037        let unpackhi = _mm_unpackhi_epi64(a, b).as_i64x2();
27038        transmute(simd_select_bitmask(k, unpackhi, i64x2::ZERO))
27039    }
27040}
27041
27042/// Unpack and interleave single-precision (32-bit) floating-point elements from the high half of each 128-bit lane in a and b, and store the results in dst.
27043///
27044/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_unpackhi_ps&expand=6060)
27045#[inline]
27046#[target_feature(enable = "avx512f")]
27047#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27048#[cfg_attr(test, assert_instr(vunpckhps))]
27049#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27050pub const fn _mm512_unpackhi_ps(a: __m512, b: __m512) -> __m512 {
27051    unsafe {
27052        #[rustfmt::skip]
27053        simd_shuffle!(
27054            a, b,
27055            [ 2, 18, 3, 19,
27056              2 + 4, 18 + 4, 3 + 4, 19 + 4,
27057              2 + 8, 18 + 8, 3 + 8, 19 + 8,
27058              2 + 12, 18 + 12, 3 + 12, 19 + 12],
27059        )
27060    }
27061}
27062
27063/// Unpack and interleave single-precision (32-bit) floating-point elements from the high half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
27064///
27065/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_unpackhi_ps&expand=6058)
27066#[inline]
27067#[target_feature(enable = "avx512f")]
27068#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27069#[cfg_attr(test, assert_instr(vunpckhps))]
27070#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27071pub const fn _mm512_mask_unpackhi_ps(src: __m512, k: __mmask16, a: __m512, b: __m512) -> __m512 {
27072    unsafe {
27073        let unpackhi = _mm512_unpackhi_ps(a, b).as_f32x16();
27074        transmute(simd_select_bitmask(k, unpackhi, src.as_f32x16()))
27075    }
27076}
27077
27078/// Unpack and interleave single-precision (32-bit) floating-point elements from the high half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
27079///
27080/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_unpackhi_ps&expand=6059)
27081#[inline]
27082#[target_feature(enable = "avx512f")]
27083#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27084#[cfg_attr(test, assert_instr(vunpckhps))]
27085#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27086pub const fn _mm512_maskz_unpackhi_ps(k: __mmask16, a: __m512, b: __m512) -> __m512 {
27087    unsafe {
27088        let unpackhi = _mm512_unpackhi_ps(a, b).as_f32x16();
27089        transmute(simd_select_bitmask(k, unpackhi, f32x16::ZERO))
27090    }
27091}
27092
27093/// Unpack and interleave single-precision (32-bit) floating-point elements from the high half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
27094///
27095/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_unpackhi_ps&expand=6055)
27096#[inline]
27097#[target_feature(enable = "avx512f,avx512vl")]
27098#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27099#[cfg_attr(test, assert_instr(vunpckhps))]
27100#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27101pub const fn _mm256_mask_unpackhi_ps(src: __m256, k: __mmask8, a: __m256, b: __m256) -> __m256 {
27102    unsafe {
27103        let unpackhi = _mm256_unpackhi_ps(a, b).as_f32x8();
27104        transmute(simd_select_bitmask(k, unpackhi, src.as_f32x8()))
27105    }
27106}
27107
27108/// Unpack and interleave single-precision (32-bit) floating-point elements from the high half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
27109///
27110/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_unpackhi_ps&expand=6056)
27111#[inline]
27112#[target_feature(enable = "avx512f,avx512vl")]
27113#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27114#[cfg_attr(test, assert_instr(vunpckhps))]
27115#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27116pub const fn _mm256_maskz_unpackhi_ps(k: __mmask8, a: __m256, b: __m256) -> __m256 {
27117    unsafe {
27118        let unpackhi = _mm256_unpackhi_ps(a, b).as_f32x8();
27119        transmute(simd_select_bitmask(k, unpackhi, f32x8::ZERO))
27120    }
27121}
27122
27123/// Unpack and interleave single-precision (32-bit) floating-point elements from the high half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
27124///
27125/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_unpackhi_ps&expand=6052)
27126#[inline]
27127#[target_feature(enable = "avx512f,avx512vl")]
27128#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27129#[cfg_attr(test, assert_instr(vunpckhps))]
27130#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27131pub const fn _mm_mask_unpackhi_ps(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
27132    unsafe {
27133        let unpackhi = _mm_unpackhi_ps(a, b).as_f32x4();
27134        transmute(simd_select_bitmask(k, unpackhi, src.as_f32x4()))
27135    }
27136}
27137
27138/// Unpack and interleave single-precision (32-bit) floating-point elements from the high half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
27139///
27140/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_unpackhi_ps&expand=6053)
27141#[inline]
27142#[target_feature(enable = "avx512f,avx512vl")]
27143#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27144#[cfg_attr(test, assert_instr(vunpckhps))]
27145#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27146pub const fn _mm_maskz_unpackhi_ps(k: __mmask8, a: __m128, b: __m128) -> __m128 {
27147    unsafe {
27148        let unpackhi = _mm_unpackhi_ps(a, b).as_f32x4();
27149        transmute(simd_select_bitmask(k, unpackhi, f32x4::ZERO))
27150    }
27151}
27152
27153/// Unpack and interleave double-precision (64-bit) floating-point elements from the high half of each 128-bit lane in a and b, and store the results in dst.
27154///
27155/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_unpackhi_pd&expand=6048)
27156#[inline]
27157#[target_feature(enable = "avx512f")]
27158#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27159#[cfg_attr(test, assert_instr(vunpckhpd))]
27160#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27161pub const fn _mm512_unpackhi_pd(a: __m512d, b: __m512d) -> __m512d {
27162    unsafe { simd_shuffle!(a, b, [1, 9, 1 + 2, 9 + 2, 1 + 4, 9 + 4, 1 + 6, 9 + 6]) }
27163}
27164
27165/// Unpack and interleave double-precision (64-bit) floating-point elements from the high half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
27166///
27167/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_unpackhi_pd&expand=6046)
27168#[inline]
27169#[target_feature(enable = "avx512f")]
27170#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27171#[cfg_attr(test, assert_instr(vunpckhpd))]
27172#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27173pub const fn _mm512_mask_unpackhi_pd(src: __m512d, k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
27174    unsafe {
27175        let unpackhi = _mm512_unpackhi_pd(a, b).as_f64x8();
27176        transmute(simd_select_bitmask(k, unpackhi, src.as_f64x8()))
27177    }
27178}
27179
27180/// Unpack and interleave double-precision (64-bit) floating-point elements from the high half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
27181///
27182/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_unpackhi_pd&expand=6047)
27183#[inline]
27184#[target_feature(enable = "avx512f")]
27185#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27186#[cfg_attr(test, assert_instr(vunpckhpd))]
27187#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27188pub const fn _mm512_maskz_unpackhi_pd(k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
27189    unsafe {
27190        let unpackhi = _mm512_unpackhi_pd(a, b).as_f64x8();
27191        transmute(simd_select_bitmask(k, unpackhi, f64x8::ZERO))
27192    }
27193}
27194
27195/// Unpack and interleave double-precision (64-bit) floating-point elements from the high half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
27196///
27197/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_unpackhi_pd&expand=6043)
27198#[inline]
27199#[target_feature(enable = "avx512f,avx512vl")]
27200#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27201#[cfg_attr(test, assert_instr(vunpckhpd))]
27202#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27203pub const fn _mm256_mask_unpackhi_pd(src: __m256d, k: __mmask8, a: __m256d, b: __m256d) -> __m256d {
27204    unsafe {
27205        let unpackhi = _mm256_unpackhi_pd(a, b).as_f64x4();
27206        transmute(simd_select_bitmask(k, unpackhi, src.as_f64x4()))
27207    }
27208}
27209
27210/// Unpack and interleave double-precision (64-bit) floating-point elements from the high half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
27211///
27212/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_unpackhi_pd&expand=6044)
27213#[inline]
27214#[target_feature(enable = "avx512f,avx512vl")]
27215#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27216#[cfg_attr(test, assert_instr(vunpckhpd))]
27217#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27218pub const fn _mm256_maskz_unpackhi_pd(k: __mmask8, a: __m256d, b: __m256d) -> __m256d {
27219    unsafe {
27220        let unpackhi = _mm256_unpackhi_pd(a, b).as_f64x4();
27221        transmute(simd_select_bitmask(k, unpackhi, f64x4::ZERO))
27222    }
27223}
27224
27225/// Unpack and interleave double-precision (64-bit) floating-point elements from the high half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
27226///
27227/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_unpackhi_pd&expand=6040)
27228#[inline]
27229#[target_feature(enable = "avx512f,avx512vl")]
27230#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27231#[cfg_attr(test, assert_instr(vunpckhpd))]
27232#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27233pub const fn _mm_mask_unpackhi_pd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
27234    unsafe {
27235        let unpackhi = _mm_unpackhi_pd(a, b).as_f64x2();
27236        transmute(simd_select_bitmask(k, unpackhi, src.as_f64x2()))
27237    }
27238}
27239
27240/// Unpack and interleave double-precision (64-bit) floating-point elements from the high half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
27241///
27242/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_unpackhi_pd&expand=6041)
27243#[inline]
27244#[target_feature(enable = "avx512f,avx512vl")]
27245#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27246#[cfg_attr(test, assert_instr(vunpckhpd))]
27247#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27248pub const fn _mm_maskz_unpackhi_pd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
27249    unsafe {
27250        let unpackhi = _mm_unpackhi_pd(a, b).as_f64x2();
27251        transmute(simd_select_bitmask(k, unpackhi, f64x2::ZERO))
27252    }
27253}
27254
27255/// Unpack and interleave 32-bit integers from the low half of each 128-bit lane in a and b, and store the results in dst.
27256///
27257/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_unpacklo_epi32&expand=6078)
27258#[inline]
27259#[target_feature(enable = "avx512f")]
27260#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27261#[cfg_attr(test, assert_instr(vunpcklps))] //should be vpunpckldq
27262#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27263pub const fn _mm512_unpacklo_epi32(a: __m512i, b: __m512i) -> __m512i {
27264    unsafe {
27265        let a = a.as_i32x16();
27266        let b = b.as_i32x16();
27267        #[rustfmt::skip]
27268        let r: i32x16 = simd_shuffle!(
27269            a, b,
27270            [ 0, 16, 1, 17,
27271              0 + 4, 16 + 4, 1 + 4, 17 + 4,
27272              0 + 8, 16 + 8, 1 + 8, 17 + 8,
27273              0 + 12, 16 + 12, 1 + 12, 17 + 12],
27274        );
27275        transmute(r)
27276    }
27277}
27278
27279/// Unpack and interleave 32-bit integers from the low half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
27280///
27281/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_unpacklo_epi32&expand=6076)
27282#[inline]
27283#[target_feature(enable = "avx512f")]
27284#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27285#[cfg_attr(test, assert_instr(vpunpckldq))]
27286#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27287pub const fn _mm512_mask_unpacklo_epi32(
27288    src: __m512i,
27289    k: __mmask16,
27290    a: __m512i,
27291    b: __m512i,
27292) -> __m512i {
27293    unsafe {
27294        let unpacklo = _mm512_unpacklo_epi32(a, b).as_i32x16();
27295        transmute(simd_select_bitmask(k, unpacklo, src.as_i32x16()))
27296    }
27297}
27298
27299/// Unpack and interleave 32-bit integers from the low half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
27300///
27301/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_unpacklo_epi32&expand=6077)
27302#[inline]
27303#[target_feature(enable = "avx512f")]
27304#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27305#[cfg_attr(test, assert_instr(vpunpckldq))]
27306#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27307pub const fn _mm512_maskz_unpacklo_epi32(k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
27308    unsafe {
27309        let unpacklo = _mm512_unpacklo_epi32(a, b).as_i32x16();
27310        transmute(simd_select_bitmask(k, unpacklo, i32x16::ZERO))
27311    }
27312}
27313
27314/// Unpack and interleave 32-bit integers from the low half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
27315///
27316/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_unpacklo_epi32&expand=6073)
27317#[inline]
27318#[target_feature(enable = "avx512f,avx512vl")]
27319#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27320#[cfg_attr(test, assert_instr(vpunpckldq))]
27321#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27322pub const fn _mm256_mask_unpacklo_epi32(
27323    src: __m256i,
27324    k: __mmask8,
27325    a: __m256i,
27326    b: __m256i,
27327) -> __m256i {
27328    unsafe {
27329        let unpacklo = _mm256_unpacklo_epi32(a, b).as_i32x8();
27330        transmute(simd_select_bitmask(k, unpacklo, src.as_i32x8()))
27331    }
27332}
27333
27334/// Unpack and interleave 32-bit integers from the low half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
27335///
27336/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_unpacklo_epi32&expand=6074)
27337#[inline]
27338#[target_feature(enable = "avx512f,avx512vl")]
27339#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27340#[cfg_attr(test, assert_instr(vpunpckldq))]
27341#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27342pub const fn _mm256_maskz_unpacklo_epi32(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
27343    unsafe {
27344        let unpacklo = _mm256_unpacklo_epi32(a, b).as_i32x8();
27345        transmute(simd_select_bitmask(k, unpacklo, i32x8::ZERO))
27346    }
27347}
27348
27349/// Unpack and interleave 32-bit integers from the low half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
27350///
27351/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_unpacklo_epi32&expand=6070)
27352#[inline]
27353#[target_feature(enable = "avx512f,avx512vl")]
27354#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27355#[cfg_attr(test, assert_instr(vpunpckldq))]
27356#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27357pub const fn _mm_mask_unpacklo_epi32(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
27358    unsafe {
27359        let unpacklo = _mm_unpacklo_epi32(a, b).as_i32x4();
27360        transmute(simd_select_bitmask(k, unpacklo, src.as_i32x4()))
27361    }
27362}
27363
27364/// Unpack and interleave 32-bit integers from the low half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
27365///
27366/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_unpacklo_epi32&expand=6071)
27367#[inline]
27368#[target_feature(enable = "avx512f,avx512vl")]
27369#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27370#[cfg_attr(test, assert_instr(vpunpckldq))]
27371#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27372pub const fn _mm_maskz_unpacklo_epi32(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
27373    unsafe {
27374        let unpacklo = _mm_unpacklo_epi32(a, b).as_i32x4();
27375        transmute(simd_select_bitmask(k, unpacklo, i32x4::ZERO))
27376    }
27377}
27378
27379/// Unpack and interleave 64-bit integers from the low half of each 128-bit lane in a and b, and store the results in dst.
27380///
27381/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_unpacklo_epi64&expand=6087)
27382#[inline]
27383#[target_feature(enable = "avx512f")]
27384#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27385#[cfg_attr(test, assert_instr(vunpcklpd))] //should be vpunpcklqdq
27386#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27387pub const fn _mm512_unpacklo_epi64(a: __m512i, b: __m512i) -> __m512i {
27388    unsafe { simd_shuffle!(a, b, [0, 8, 0 + 2, 8 + 2, 0 + 4, 8 + 4, 0 + 6, 8 + 6]) }
27389}
27390
27391/// Unpack and interleave 64-bit integers from the low half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
27392///
27393/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_unpacklo_epi64&expand=6085)
27394#[inline]
27395#[target_feature(enable = "avx512f")]
27396#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27397#[cfg_attr(test, assert_instr(vpunpcklqdq))]
27398#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27399pub const fn _mm512_mask_unpacklo_epi64(
27400    src: __m512i,
27401    k: __mmask8,
27402    a: __m512i,
27403    b: __m512i,
27404) -> __m512i {
27405    unsafe {
27406        let unpacklo = _mm512_unpacklo_epi64(a, b).as_i64x8();
27407        transmute(simd_select_bitmask(k, unpacklo, src.as_i64x8()))
27408    }
27409}
27410
27411/// Unpack and interleave 64-bit integers from the low half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
27412///
27413/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_unpacklo_epi64&expand=6086)
27414#[inline]
27415#[target_feature(enable = "avx512f")]
27416#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27417#[cfg_attr(test, assert_instr(vpunpcklqdq))]
27418#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27419pub const fn _mm512_maskz_unpacklo_epi64(k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
27420    unsafe {
27421        let unpacklo = _mm512_unpacklo_epi64(a, b).as_i64x8();
27422        transmute(simd_select_bitmask(k, unpacklo, i64x8::ZERO))
27423    }
27424}
27425
27426/// Unpack and interleave 64-bit integers from the low half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
27427///
27428/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_unpacklo_epi64&expand=6082)
27429#[inline]
27430#[target_feature(enable = "avx512f,avx512vl")]
27431#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27432#[cfg_attr(test, assert_instr(vpunpcklqdq))]
27433#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27434pub const fn _mm256_mask_unpacklo_epi64(
27435    src: __m256i,
27436    k: __mmask8,
27437    a: __m256i,
27438    b: __m256i,
27439) -> __m256i {
27440    unsafe {
27441        let unpacklo = _mm256_unpacklo_epi64(a, b).as_i64x4();
27442        transmute(simd_select_bitmask(k, unpacklo, src.as_i64x4()))
27443    }
27444}
27445
27446/// Unpack and interleave 64-bit integers from the low half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
27447///
27448/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_unpacklo_epi64&expand=6083)
27449#[inline]
27450#[target_feature(enable = "avx512f,avx512vl")]
27451#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27452#[cfg_attr(test, assert_instr(vpunpcklqdq))]
27453#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27454pub const fn _mm256_maskz_unpacklo_epi64(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
27455    unsafe {
27456        let unpacklo = _mm256_unpacklo_epi64(a, b).as_i64x4();
27457        transmute(simd_select_bitmask(k, unpacklo, i64x4::ZERO))
27458    }
27459}
27460
27461/// Unpack and interleave 64-bit integers from the low half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
27462///
27463/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_unpacklo_epi64&expand=6079)
27464#[inline]
27465#[target_feature(enable = "avx512f,avx512vl")]
27466#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27467#[cfg_attr(test, assert_instr(vpunpcklqdq))]
27468#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27469pub const fn _mm_mask_unpacklo_epi64(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
27470    unsafe {
27471        let unpacklo = _mm_unpacklo_epi64(a, b).as_i64x2();
27472        transmute(simd_select_bitmask(k, unpacklo, src.as_i64x2()))
27473    }
27474}
27475
27476/// Unpack and interleave 64-bit integers from the low half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
27477///
27478/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_unpacklo_epi64&expand=6080)
27479#[inline]
27480#[target_feature(enable = "avx512f,avx512vl")]
27481#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27482#[cfg_attr(test, assert_instr(vpunpcklqdq))]
27483#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27484pub const fn _mm_maskz_unpacklo_epi64(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
27485    unsafe {
27486        let unpacklo = _mm_unpacklo_epi64(a, b).as_i64x2();
27487        transmute(simd_select_bitmask(k, unpacklo, i64x2::ZERO))
27488    }
27489}
27490
27491/// Unpack and interleave single-precision (32-bit) floating-point elements from the low half of each 128-bit lane in a and b, and store the results in dst.
27492///
27493/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_unpacklo_ps&expand=6117)
27494#[inline]
27495#[target_feature(enable = "avx512f")]
27496#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27497#[cfg_attr(test, assert_instr(vunpcklps))]
27498#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27499pub const fn _mm512_unpacklo_ps(a: __m512, b: __m512) -> __m512 {
27500    unsafe {
27501        #[rustfmt::skip]
27502        simd_shuffle!(a, b,
27503                       [ 0, 16, 1, 17,
27504                         0 + 4, 16 + 4, 1 + 4, 17 + 4,
27505                         0 + 8, 16 + 8, 1 + 8, 17 + 8,
27506                         0 + 12, 16 + 12, 1 + 12, 17 + 12],
27507        )
27508    }
27509}
27510
27511/// Unpack and interleave single-precision (32-bit) floating-point elements from the low half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
27512///
27513/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_unpacklo_ps&expand=6115)
27514#[inline]
27515#[target_feature(enable = "avx512f")]
27516#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27517#[cfg_attr(test, assert_instr(vunpcklps))]
27518#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27519pub const fn _mm512_mask_unpacklo_ps(src: __m512, k: __mmask16, a: __m512, b: __m512) -> __m512 {
27520    unsafe {
27521        let unpacklo = _mm512_unpacklo_ps(a, b).as_f32x16();
27522        transmute(simd_select_bitmask(k, unpacklo, src.as_f32x16()))
27523    }
27524}
27525
27526/// Unpack and interleave single-precision (32-bit) floating-point elements from the low half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
27527///
27528/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_unpacklo_ps&expand=6116)
27529#[inline]
27530#[target_feature(enable = "avx512f")]
27531#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27532#[cfg_attr(test, assert_instr(vunpcklps))]
27533#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27534pub const fn _mm512_maskz_unpacklo_ps(k: __mmask16, a: __m512, b: __m512) -> __m512 {
27535    unsafe {
27536        let unpacklo = _mm512_unpacklo_ps(a, b).as_f32x16();
27537        transmute(simd_select_bitmask(k, unpacklo, f32x16::ZERO))
27538    }
27539}
27540
27541/// Unpack and interleave single-precision (32-bit) floating-point elements from the low half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
27542///
27543/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_unpacklo_ps&expand=6112)
27544#[inline]
27545#[target_feature(enable = "avx512f,avx512vl")]
27546#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27547#[cfg_attr(test, assert_instr(vunpcklps))]
27548#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27549pub const fn _mm256_mask_unpacklo_ps(src: __m256, k: __mmask8, a: __m256, b: __m256) -> __m256 {
27550    unsafe {
27551        let unpacklo = _mm256_unpacklo_ps(a, b).as_f32x8();
27552        transmute(simd_select_bitmask(k, unpacklo, src.as_f32x8()))
27553    }
27554}
27555
27556/// Unpack and interleave single-precision (32-bit) floating-point elements from the low half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
27557///
27558/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_unpacklo_ps&expand=6113)
27559#[inline]
27560#[target_feature(enable = "avx512f,avx512vl")]
27561#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27562#[cfg_attr(test, assert_instr(vunpcklps))]
27563#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27564pub const fn _mm256_maskz_unpacklo_ps(k: __mmask8, a: __m256, b: __m256) -> __m256 {
27565    unsafe {
27566        let unpacklo = _mm256_unpacklo_ps(a, b).as_f32x8();
27567        transmute(simd_select_bitmask(k, unpacklo, f32x8::ZERO))
27568    }
27569}
27570
27571/// Unpack and interleave single-precision (32-bit) floating-point elements from the low half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
27572///
27573/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_unpacklo_ps&expand=6109)
27574#[inline]
27575#[target_feature(enable = "avx512f,avx512vl")]
27576#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27577#[cfg_attr(test, assert_instr(vunpcklps))]
27578#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27579pub const fn _mm_mask_unpacklo_ps(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
27580    unsafe {
27581        let unpacklo = _mm_unpacklo_ps(a, b).as_f32x4();
27582        transmute(simd_select_bitmask(k, unpacklo, src.as_f32x4()))
27583    }
27584}
27585
27586/// Unpack and interleave single-precision (32-bit) floating-point elements from the low half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
27587///
27588/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_unpacklo_ps&expand=6110)
27589#[inline]
27590#[target_feature(enable = "avx512f,avx512vl")]
27591#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27592#[cfg_attr(test, assert_instr(vunpcklps))]
27593#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27594pub const fn _mm_maskz_unpacklo_ps(k: __mmask8, a: __m128, b: __m128) -> __m128 {
27595    unsafe {
27596        let unpacklo = _mm_unpacklo_ps(a, b).as_f32x4();
27597        transmute(simd_select_bitmask(k, unpacklo, f32x4::ZERO))
27598    }
27599}
27600
27601/// Unpack and interleave double-precision (64-bit) floating-point elements from the low half of each 128-bit lane in a and b, and store the results in dst.
27602///
27603/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_unpacklo_pd&expand=6105)
27604#[inline]
27605#[target_feature(enable = "avx512f")]
27606#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27607#[cfg_attr(test, assert_instr(vunpcklpd))]
27608#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27609pub const fn _mm512_unpacklo_pd(a: __m512d, b: __m512d) -> __m512d {
27610    unsafe { simd_shuffle!(a, b, [0, 8, 0 + 2, 8 + 2, 0 + 4, 8 + 4, 0 + 6, 8 + 6]) }
27611}
27612
27613/// Unpack and interleave double-precision (64-bit) floating-point elements from the low half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
27614///
27615/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_unpacklo_pd&expand=6103)
27616#[inline]
27617#[target_feature(enable = "avx512f")]
27618#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27619#[cfg_attr(test, assert_instr(vunpcklpd))]
27620#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27621pub const fn _mm512_mask_unpacklo_pd(src: __m512d, k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
27622    unsafe {
27623        let unpacklo = _mm512_unpacklo_pd(a, b).as_f64x8();
27624        transmute(simd_select_bitmask(k, unpacklo, src.as_f64x8()))
27625    }
27626}
27627
27628/// Unpack and interleave double-precision (64-bit) floating-point elements from the low half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
27629///
27630/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_unpacklo_pd&expand=6104)
27631#[inline]
27632#[target_feature(enable = "avx512f")]
27633#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27634#[cfg_attr(test, assert_instr(vunpcklpd))]
27635#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27636pub const fn _mm512_maskz_unpacklo_pd(k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
27637    unsafe {
27638        let unpacklo = _mm512_unpacklo_pd(a, b).as_f64x8();
27639        transmute(simd_select_bitmask(k, unpacklo, f64x8::ZERO))
27640    }
27641}
27642
27643/// Unpack and interleave double-precision (64-bit) floating-point elements from the low half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
27644///
27645/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_unpacklo_pd&expand=6100)
27646#[inline]
27647#[target_feature(enable = "avx512f,avx512vl")]
27648#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27649#[cfg_attr(test, assert_instr(vunpcklpd))]
27650#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27651pub const fn _mm256_mask_unpacklo_pd(src: __m256d, k: __mmask8, a: __m256d, b: __m256d) -> __m256d {
27652    unsafe {
27653        let unpacklo = _mm256_unpacklo_pd(a, b).as_f64x4();
27654        transmute(simd_select_bitmask(k, unpacklo, src.as_f64x4()))
27655    }
27656}
27657
27658/// Unpack and interleave double-precision (64-bit) floating-point elements from the low half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
27659///
27660/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_unpacklo_pd&expand=6101)
27661#[inline]
27662#[target_feature(enable = "avx512f,avx512vl")]
27663#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27664#[cfg_attr(test, assert_instr(vunpcklpd))]
27665#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27666pub const fn _mm256_maskz_unpacklo_pd(k: __mmask8, a: __m256d, b: __m256d) -> __m256d {
27667    unsafe {
27668        let unpacklo = _mm256_unpacklo_pd(a, b).as_f64x4();
27669        transmute(simd_select_bitmask(k, unpacklo, f64x4::ZERO))
27670    }
27671}
27672
27673/// Unpack and interleave double-precision (64-bit) floating-point elements from the low half of each 128-bit lane in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
27674///
27675/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_unpacklo_pd&expand=6097)
27676#[inline]
27677#[target_feature(enable = "avx512f,avx512vl")]
27678#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27679#[cfg_attr(test, assert_instr(vunpcklpd))]
27680#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27681pub const fn _mm_mask_unpacklo_pd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
27682    unsafe {
27683        let unpacklo = _mm_unpacklo_pd(a, b).as_f64x2();
27684        transmute(simd_select_bitmask(k, unpacklo, src.as_f64x2()))
27685    }
27686}
27687
27688/// Unpack and interleave double-precision (64-bit) floating-point elements from the low half of each 128-bit lane in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
27689///
27690/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_unpacklo_pd&expand=6098)
27691#[inline]
27692#[target_feature(enable = "avx512f,avx512vl")]
27693#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27694#[cfg_attr(test, assert_instr(vunpcklpd))]
27695#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27696pub const fn _mm_maskz_unpacklo_pd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
27697    unsafe {
27698        let unpacklo = _mm_unpacklo_pd(a, b).as_f64x2();
27699        transmute(simd_select_bitmask(k, unpacklo, f64x2::ZERO))
27700    }
27701}
27702
27703/// Cast vector of type __m128 to type __m512; the upper 384 bits of the result are indeterminate.
27704///
27705/// In the Intel documentation, the upper bits are declared to be "undefined".
27706/// This is not equivalent to [`mem::MaybeUninit`]; instead, these bits are non-deterministically
27707/// set to some valid value. In practice, this is typically equivalent to [`mem::zeroed`].
27708///
27709/// This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27710///
27711/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_castps128_ps512&expand=621)
27712#[inline]
27713#[target_feature(enable = "avx512f")]
27714#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27715#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27716pub const fn _mm512_castps128_ps512(a: __m128) -> __m512 {
27717    unsafe {
27718        simd_shuffle!(
27719            a,
27720            _mm_undefined_ps(),
27721            [0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4],
27722        )
27723    }
27724}
27725
27726/// Cast vector of type __m256 to type __m512; the upper 256 bits of the result are indeterminate.
27727///
27728/// In the Intel documentation, the upper bits are declared to be "undefined".
27729/// This is not equivalent to [`mem::MaybeUninit`]; instead, these bits are non-deterministically
27730/// set to some valid value. In practice, this is typically equivalent to [`mem::zeroed`].
27731///
27732/// This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27733///
27734/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_castps256_ps512&expand=623)
27735#[inline]
27736#[target_feature(enable = "avx512f")]
27737#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27738#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27739pub const fn _mm512_castps256_ps512(a: __m256) -> __m512 {
27740    unsafe {
27741        simd_shuffle!(
27742            a,
27743            _mm256_undefined_ps(),
27744            [0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 8, 8, 8, 8, 8, 8],
27745        )
27746    }
27747}
27748
27749/// Cast vector of type __m128 to type __m512; the upper 384 bits of the result are zeroed. This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27750///
27751/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_zextps128_ps512&expand=6196)
27752#[inline]
27753#[target_feature(enable = "avx512f")]
27754#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27755#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27756pub const fn _mm512_zextps128_ps512(a: __m128) -> __m512 {
27757    unsafe {
27758        simd_shuffle!(
27759            a,
27760            _mm_set1_ps(0.),
27761            [0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4],
27762        )
27763    }
27764}
27765
27766/// Cast vector of type __m256 to type __m512; the upper 256 bits of the result are zeroed. This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27767///
27768/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_zextps256_ps512&expand=6197)
27769#[inline]
27770#[target_feature(enable = "avx512f")]
27771#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27772#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27773pub const fn _mm512_zextps256_ps512(a: __m256) -> __m512 {
27774    unsafe {
27775        simd_shuffle!(
27776            a,
27777            _mm256_set1_ps(0.),
27778            [0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 8, 8, 8, 8, 8, 8],
27779        )
27780    }
27781}
27782
27783/// Cast vector of type __m512 to type __m128. This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27784///
27785/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_castps512_ps128&expand=624)
27786#[inline]
27787#[target_feature(enable = "avx512f")]
27788#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27789#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27790pub const fn _mm512_castps512_ps128(a: __m512) -> __m128 {
27791    unsafe { simd_shuffle!(a, a, [0, 1, 2, 3]) }
27792}
27793
27794/// Cast vector of type __m512 to type __m256. This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27795///
27796/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_castps512_ps256&expand=625)
27797#[inline]
27798#[target_feature(enable = "avx512f")]
27799#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27800#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27801pub const fn _mm512_castps512_ps256(a: __m512) -> __m256 {
27802    unsafe { simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]) }
27803}
27804
27805/// Cast vector of type __m512 to type __m512d. This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27806///
27807/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_castps_pd&expand=616)
27808#[inline]
27809#[target_feature(enable = "avx512f")]
27810#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27811#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27812pub const fn _mm512_castps_pd(a: __m512) -> __m512d {
27813    unsafe { transmute(a) }
27814}
27815
27816/// Cast vector of type __m512 to type __m512i. This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27817///
27818/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_castps_si512&expand=619)
27819#[inline]
27820#[target_feature(enable = "avx512f")]
27821#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27822#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27823pub const fn _mm512_castps_si512(a: __m512) -> __m512i {
27824    unsafe { transmute(a) }
27825}
27826
27827/// Cast vector of type __m128d to type __m512d; the upper 384 bits of the result are indeterminate.
27828///
27829/// In the Intel documentation, the upper bits are declared to be "undefined".
27830/// This is not equivalent to [`mem::MaybeUninit`]; instead, these bits are non-deterministically
27831/// set to some valid value. In practice, this is typically equivalent to [`mem::zeroed`].
27832///
27833/// This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27834///
27835/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_castpd128_pd512&expand=609)
27836#[inline]
27837#[target_feature(enable = "avx512f")]
27838#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27839#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27840pub const fn _mm512_castpd128_pd512(a: __m128d) -> __m512d {
27841    unsafe { simd_shuffle!(a, _mm_undefined_pd(), [0, 1, 2, 2, 2, 2, 2, 2]) }
27842}
27843
27844/// Cast vector of type __m256d to type __m512d; the upper 256 bits of the result are indeterminate.
27845///
27846/// In the Intel documentation, the upper bits are declared to be "undefined".
27847/// This is not equivalent to [`mem::MaybeUninit`]; instead, these bits are non-deterministically
27848/// set to some valid value. In practice, this is typically equivalent to [`mem::zeroed`].
27849///
27850/// This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27851///
27852/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_castpd256_pd512&expand=611)
27853#[inline]
27854#[target_feature(enable = "avx512f")]
27855#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27856#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27857pub const fn _mm512_castpd256_pd512(a: __m256d) -> __m512d {
27858    unsafe { simd_shuffle!(a, _mm256_undefined_pd(), [0, 1, 2, 3, 4, 4, 4, 4]) }
27859}
27860
27861/// Cast vector of type __m128d to type __m512d; the upper 384 bits of the result are zeroed. This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27862///
27863/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_zextpd128_pd512&expand=6193)
27864#[inline]
27865#[target_feature(enable = "avx512f")]
27866#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27867#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27868pub const fn _mm512_zextpd128_pd512(a: __m128d) -> __m512d {
27869    unsafe { simd_shuffle!(a, _mm_set1_pd(0.), [0, 1, 2, 2, 2, 2, 2, 2]) }
27870}
27871
27872/// Cast vector of type __m256d to type __m512d; the upper 256 bits of the result are zeroed. This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27873///
27874/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_zextpd256_pd512&expand=6194)
27875#[inline]
27876#[target_feature(enable = "avx512f")]
27877#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27878#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27879pub const fn _mm512_zextpd256_pd512(a: __m256d) -> __m512d {
27880    unsafe { simd_shuffle!(a, _mm256_set1_pd(0.), [0, 1, 2, 3, 4, 4, 4, 4]) }
27881}
27882
27883/// Cast vector of type __m512d to type __m128d. This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27884///
27885/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_castpd512_pd128&expand=612)
27886#[inline]
27887#[target_feature(enable = "avx512f")]
27888#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27889#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27890pub const fn _mm512_castpd512_pd128(a: __m512d) -> __m128d {
27891    unsafe { simd_shuffle!(a, a, [0, 1]) }
27892}
27893
27894/// Cast vector of type __m512d to type __m256d. This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27895///
27896/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_castpd512_pd256&expand=613)
27897#[inline]
27898#[target_feature(enable = "avx512f")]
27899#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27900#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27901pub const fn _mm512_castpd512_pd256(a: __m512d) -> __m256d {
27902    unsafe { simd_shuffle!(a, a, [0, 1, 2, 3]) }
27903}
27904
27905/// Cast vector of type __m512d to type __m512. This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27906///
27907/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_castpd_ps&expand=604)
27908#[inline]
27909#[target_feature(enable = "avx512f")]
27910#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27911#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27912pub const fn _mm512_castpd_ps(a: __m512d) -> __m512 {
27913    unsafe { transmute(a) }
27914}
27915
27916/// Cast vector of type __m512d to type __m512i. This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27917///
27918/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_castpd_si512&expand=607)
27919#[inline]
27920#[target_feature(enable = "avx512f")]
27921#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27922#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27923pub const fn _mm512_castpd_si512(a: __m512d) -> __m512i {
27924    unsafe { transmute(a) }
27925}
27926
27927/// Cast vector of type __m128i to type __m512i; the upper 384 bits of the result are indeterminate.
27928///
27929/// In the Intel documentation, the upper bits are declared to be "undefined".
27930/// This is not equivalent to [`mem::MaybeUninit`]; instead, these bits are non-deterministically
27931/// set to some valid value. In practice, this is typically equivalent to [`mem::zeroed`].
27932///
27933/// This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27934///
27935/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_castsi128_si512&expand=629)
27936#[inline]
27937#[target_feature(enable = "avx512f")]
27938#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27939#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27940pub const fn _mm512_castsi128_si512(a: __m128i) -> __m512i {
27941    unsafe { simd_shuffle!(a, _mm_undefined_si128(), [0, 1, 2, 2, 2, 2, 2, 2]) }
27942}
27943
27944/// Cast vector of type __m256i to type __m512i; the upper 256 bits of the result are indeterminate.
27945///
27946/// In the Intel documentation, the upper bits are declared to be "undefined".
27947/// This is not equivalent to [`mem::MaybeUninit`]; instead, these bits are non-deterministically
27948/// set to some valid value. In practice, this is typically equivalent to [`mem::zeroed`].
27949///
27950/// This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27951///
27952/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_castsi256_si512&expand=633)
27953#[inline]
27954#[target_feature(enable = "avx512f")]
27955#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27956#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27957pub const fn _mm512_castsi256_si512(a: __m256i) -> __m512i {
27958    unsafe { simd_shuffle!(a, _mm256_undefined_si256(), [0, 1, 2, 3, 4, 4, 4, 4]) }
27959}
27960
27961/// Cast vector of type __m128i to type __m512i; the upper 384 bits of the result are zeroed. This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27962///
27963/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_zextsi128_si512&expand=6199)
27964#[inline]
27965#[target_feature(enable = "avx512f")]
27966#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27967#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27968pub const fn _mm512_zextsi128_si512(a: __m128i) -> __m512i {
27969    unsafe { simd_shuffle!(a, _mm_setzero_si128(), [0, 1, 2, 2, 2, 2, 2, 2]) }
27970}
27971
27972/// Cast vector of type __m256i to type __m512i; the upper 256 bits of the result are zeroed. This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27973///
27974/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_zextsi256_si512&expand=6200)
27975#[inline]
27976#[target_feature(enable = "avx512f")]
27977#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27978#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27979pub const fn _mm512_zextsi256_si512(a: __m256i) -> __m512i {
27980    unsafe { simd_shuffle!(a, _mm256_setzero_si256(), [0, 1, 2, 3, 4, 4, 4, 4]) }
27981}
27982
27983/// Cast vector of type __m512i to type __m128i. This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27984///
27985/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_castsi512_si128&expand=636)
27986#[inline]
27987#[target_feature(enable = "avx512f")]
27988#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
27989#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
27990pub const fn _mm512_castsi512_si128(a: __m512i) -> __m128i {
27991    unsafe { simd_shuffle!(a, a, [0, 1]) }
27992}
27993
27994/// Cast vector of type __m512i to type __m256i. This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
27995///
27996/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_castsi512_si256&expand=637)
27997#[inline]
27998#[target_feature(enable = "avx512f")]
27999#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28000#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28001pub const fn _mm512_castsi512_si256(a: __m512i) -> __m256i {
28002    unsafe { simd_shuffle!(a, a, [0, 1, 2, 3]) }
28003}
28004
28005/// Cast vector of type __m512i to type __m512. This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
28006///
28007/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_castsi512_ps&expand=635)
28008#[inline]
28009#[target_feature(enable = "avx512f")]
28010#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28011#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28012pub const fn _mm512_castsi512_ps(a: __m512i) -> __m512 {
28013    unsafe { transmute(a) }
28014}
28015
28016/// Cast vector of type __m512i to type __m512d. This intrinsic is only used for compilation and does not generate any instructions, thus it has zero latency.
28017///
28018/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_castsi512_pd&expand=634)
28019#[inline]
28020#[target_feature(enable = "avx512f")]
28021#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28022#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28023pub const fn _mm512_castsi512_pd(a: __m512i) -> __m512d {
28024    unsafe { transmute(a) }
28025}
28026
28027/// Copy the lower 32-bit integer in a to dst.
28028///
28029/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtsi512_si32&expand=1882)
28030#[inline]
28031#[target_feature(enable = "avx512f")]
28032#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28033#[cfg_attr(test, assert_instr(vmovd))]
28034#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28035pub const fn _mm512_cvtsi512_si32(a: __m512i) -> i32 {
28036    unsafe { simd_extract!(a.as_i32x16(), 0) }
28037}
28038
28039/// Copy the lower single-precision (32-bit) floating-point element of a to dst.
28040///
28041/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtss_f32)
28042#[inline]
28043#[target_feature(enable = "avx512f")]
28044#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28045#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28046pub const fn _mm512_cvtss_f32(a: __m512) -> f32 {
28047    unsafe { simd_extract!(a, 0) }
28048}
28049
28050/// Copy the lower double-precision (64-bit) floating-point element of a to dst.
28051///
28052/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtsd_f64)
28053#[inline]
28054#[target_feature(enable = "avx512f")]
28055#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28056#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28057pub const fn _mm512_cvtsd_f64(a: __m512d) -> f64 {
28058    unsafe { simd_extract!(a, 0) }
28059}
28060
28061/// Broadcast the low packed 32-bit integer from a to all elements of dst.
28062///
28063/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_broadcastd_epi32&expand=545)
28064#[inline]
28065#[target_feature(enable = "avx512f")]
28066#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28067#[cfg_attr(test, assert_instr(vbroadcast))] //should be vpbroadcastd
28068#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28069pub const fn _mm512_broadcastd_epi32(a: __m128i) -> __m512i {
28070    unsafe {
28071        let a = _mm512_castsi128_si512(a).as_i32x16();
28072        let ret: i32x16 = simd_shuffle!(a, a, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
28073        transmute(ret)
28074    }
28075}
28076
28077/// Broadcast the low packed 32-bit integer from a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
28078///
28079/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_broadcastd_epi32&expand=546)
28080#[inline]
28081#[target_feature(enable = "avx512f")]
28082#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28083#[cfg_attr(test, assert_instr(vpbroadcast))] //should be vpbroadcastd
28084#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28085pub const fn _mm512_mask_broadcastd_epi32(src: __m512i, k: __mmask16, a: __m128i) -> __m512i {
28086    unsafe {
28087        let broadcast = _mm512_broadcastd_epi32(a).as_i32x16();
28088        transmute(simd_select_bitmask(k, broadcast, src.as_i32x16()))
28089    }
28090}
28091
28092/// Broadcast the low packed 32-bit integer from a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
28093///
28094/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_broadcastd_epi32&expand=547)
28095#[inline]
28096#[target_feature(enable = "avx512f")]
28097#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28098#[cfg_attr(test, assert_instr(vpbroadcast))] //should be vpbroadcastd
28099#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28100pub const fn _mm512_maskz_broadcastd_epi32(k: __mmask16, a: __m128i) -> __m512i {
28101    unsafe {
28102        let broadcast = _mm512_broadcastd_epi32(a).as_i32x16();
28103        transmute(simd_select_bitmask(k, broadcast, i32x16::ZERO))
28104    }
28105}
28106
28107/// Broadcast the low packed 32-bit integer from a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
28108///
28109/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_broadcastd_epi32&expand=543)
28110#[inline]
28111#[target_feature(enable = "avx512f,avx512vl")]
28112#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28113#[cfg_attr(test, assert_instr(vpbroadcast))] //should be vpbroadcastd
28114#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28115pub const fn _mm256_mask_broadcastd_epi32(src: __m256i, k: __mmask8, a: __m128i) -> __m256i {
28116    unsafe {
28117        let broadcast = _mm256_broadcastd_epi32(a).as_i32x8();
28118        transmute(simd_select_bitmask(k, broadcast, src.as_i32x8()))
28119    }
28120}
28121
28122/// Broadcast the low packed 32-bit integer from a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
28123///
28124/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_broadcastd_epi32&expand=544)
28125#[inline]
28126#[target_feature(enable = "avx512f,avx512vl")]
28127#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28128#[cfg_attr(test, assert_instr(vpbroadcast))] //should be vpbroadcastd
28129#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28130pub const fn _mm256_maskz_broadcastd_epi32(k: __mmask8, a: __m128i) -> __m256i {
28131    unsafe {
28132        let broadcast = _mm256_broadcastd_epi32(a).as_i32x8();
28133        transmute(simd_select_bitmask(k, broadcast, i32x8::ZERO))
28134    }
28135}
28136
28137/// Broadcast the low packed 32-bit integer from a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
28138///
28139/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_broadcastd_epi32&expand=540)
28140#[inline]
28141#[target_feature(enable = "avx512f,avx512vl")]
28142#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28143#[cfg_attr(test, assert_instr(vpbroadcast))] //should be vpbroadcastd
28144#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28145pub const fn _mm_mask_broadcastd_epi32(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
28146    unsafe {
28147        let broadcast = _mm_broadcastd_epi32(a).as_i32x4();
28148        transmute(simd_select_bitmask(k, broadcast, src.as_i32x4()))
28149    }
28150}
28151
28152/// Broadcast the low packed 32-bit integer from a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
28153///
28154/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_broadcastd_epi32&expand=541)
28155#[inline]
28156#[target_feature(enable = "avx512f,avx512vl")]
28157#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28158#[cfg_attr(test, assert_instr(vpbroadcast))] //should be vpbroadcastd
28159#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28160pub const fn _mm_maskz_broadcastd_epi32(k: __mmask8, a: __m128i) -> __m128i {
28161    unsafe {
28162        let broadcast = _mm_broadcastd_epi32(a).as_i32x4();
28163        transmute(simd_select_bitmask(k, broadcast, i32x4::ZERO))
28164    }
28165}
28166
28167/// Broadcast the low packed 64-bit integer from a to all elements of dst.
28168///
28169/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_broadcastq_epi64&expand=560)
28170#[inline]
28171#[target_feature(enable = "avx512f")]
28172#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28173#[cfg_attr(test, assert_instr(vbroadcast))] //should be vpbroadcastq
28174#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28175pub const fn _mm512_broadcastq_epi64(a: __m128i) -> __m512i {
28176    unsafe { simd_shuffle!(a, a, [0, 0, 0, 0, 0, 0, 0, 0]) }
28177}
28178
28179/// Broadcast the low packed 64-bit integer from a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
28180///
28181/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_broadcastq_epi64&expand=561)
28182#[inline]
28183#[target_feature(enable = "avx512f")]
28184#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28185#[cfg_attr(test, assert_instr(vpbroadcast))] //should be vpbroadcastq
28186#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28187pub const fn _mm512_mask_broadcastq_epi64(src: __m512i, k: __mmask8, a: __m128i) -> __m512i {
28188    unsafe {
28189        let broadcast = _mm512_broadcastq_epi64(a).as_i64x8();
28190        transmute(simd_select_bitmask(k, broadcast, src.as_i64x8()))
28191    }
28192}
28193
28194/// Broadcast the low packed 64-bit integer from a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
28195///
28196/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_broadcastq_epi64&expand=562)
28197#[inline]
28198#[target_feature(enable = "avx512f")]
28199#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28200#[cfg_attr(test, assert_instr(vpbroadcast))] //should be vpbroadcastq
28201#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28202pub const fn _mm512_maskz_broadcastq_epi64(k: __mmask8, a: __m128i) -> __m512i {
28203    unsafe {
28204        let broadcast = _mm512_broadcastq_epi64(a).as_i64x8();
28205        transmute(simd_select_bitmask(k, broadcast, i64x8::ZERO))
28206    }
28207}
28208
28209/// Broadcast the low packed 64-bit integer from a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
28210///
28211/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_broadcastq_epi64&expand=558)
28212#[inline]
28213#[target_feature(enable = "avx512f,avx512vl")]
28214#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28215#[cfg_attr(test, assert_instr(vpbroadcast))] //should be vpbroadcastq
28216#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28217pub const fn _mm256_mask_broadcastq_epi64(src: __m256i, k: __mmask8, a: __m128i) -> __m256i {
28218    unsafe {
28219        let broadcast = _mm256_broadcastq_epi64(a).as_i64x4();
28220        transmute(simd_select_bitmask(k, broadcast, src.as_i64x4()))
28221    }
28222}
28223
28224/// Broadcast the low packed 64-bit integer from a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
28225///
28226/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_broadcastq_epi64&expand=559)
28227#[inline]
28228#[target_feature(enable = "avx512f,avx512vl")]
28229#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28230#[cfg_attr(test, assert_instr(vpbroadcast))] //should be vpbroadcastq
28231#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28232pub const fn _mm256_maskz_broadcastq_epi64(k: __mmask8, a: __m128i) -> __m256i {
28233    unsafe {
28234        let broadcast = _mm256_broadcastq_epi64(a).as_i64x4();
28235        transmute(simd_select_bitmask(k, broadcast, i64x4::ZERO))
28236    }
28237}
28238
28239/// Broadcast the low packed 64-bit integer from a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
28240///
28241/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_broadcastq_epi64&expand=555)
28242#[inline]
28243#[target_feature(enable = "avx512f,avx512vl")]
28244#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28245#[cfg_attr(test, assert_instr(vpbroadcast))] //should be vpbroadcastq
28246#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28247pub const fn _mm_mask_broadcastq_epi64(src: __m128i, k: __mmask8, a: __m128i) -> __m128i {
28248    unsafe {
28249        let broadcast = _mm_broadcastq_epi64(a).as_i64x2();
28250        transmute(simd_select_bitmask(k, broadcast, src.as_i64x2()))
28251    }
28252}
28253
28254/// Broadcast the low packed 64-bit integer from a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
28255///
28256/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_broadcastq_epi64&expand=556)
28257#[inline]
28258#[target_feature(enable = "avx512f,avx512vl")]
28259#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28260#[cfg_attr(test, assert_instr(vpbroadcast))] //should be vpbroadcastq
28261#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28262pub const fn _mm_maskz_broadcastq_epi64(k: __mmask8, a: __m128i) -> __m128i {
28263    unsafe {
28264        let broadcast = _mm_broadcastq_epi64(a).as_i64x2();
28265        transmute(simd_select_bitmask(k, broadcast, i64x2::ZERO))
28266    }
28267}
28268
28269/// Broadcast the low single-precision (32-bit) floating-point element from a to all elements of dst.
28270///
28271/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_broadcastss_ps&expand=578)
28272#[inline]
28273#[target_feature(enable = "avx512f")]
28274#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28275#[cfg_attr(test, assert_instr(vbroadcastss))]
28276#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28277pub const fn _mm512_broadcastss_ps(a: __m128) -> __m512 {
28278    unsafe { simd_shuffle!(a, a, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }
28279}
28280
28281/// Broadcast the low single-precision (32-bit) floating-point element from a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
28282///
28283/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_broadcastss_ps&expand=579)
28284#[inline]
28285#[target_feature(enable = "avx512f")]
28286#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28287#[cfg_attr(test, assert_instr(vbroadcastss))]
28288#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28289pub const fn _mm512_mask_broadcastss_ps(src: __m512, k: __mmask16, a: __m128) -> __m512 {
28290    unsafe {
28291        let broadcast = _mm512_broadcastss_ps(a).as_f32x16();
28292        transmute(simd_select_bitmask(k, broadcast, src.as_f32x16()))
28293    }
28294}
28295
28296/// Broadcast the low single-precision (32-bit) floating-point element from a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
28297///
28298/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_broadcastss_ps&expand=580)
28299#[inline]
28300#[target_feature(enable = "avx512f")]
28301#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28302#[cfg_attr(test, assert_instr(vbroadcastss))]
28303#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28304pub const fn _mm512_maskz_broadcastss_ps(k: __mmask16, a: __m128) -> __m512 {
28305    unsafe {
28306        let broadcast = _mm512_broadcastss_ps(a).as_f32x16();
28307        transmute(simd_select_bitmask(k, broadcast, f32x16::ZERO))
28308    }
28309}
28310
28311/// Broadcast the low single-precision (32-bit) floating-point element from a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
28312///
28313/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_broadcastss_ps&expand=576)
28314#[inline]
28315#[target_feature(enable = "avx512f,avx512vl")]
28316#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28317#[cfg_attr(test, assert_instr(vbroadcastss))]
28318#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28319pub const fn _mm256_mask_broadcastss_ps(src: __m256, k: __mmask8, a: __m128) -> __m256 {
28320    unsafe {
28321        let broadcast = _mm256_broadcastss_ps(a).as_f32x8();
28322        transmute(simd_select_bitmask(k, broadcast, src.as_f32x8()))
28323    }
28324}
28325
28326/// Broadcast the low single-precision (32-bit) floating-point element from a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
28327///
28328/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_broadcastss_ps&expand=577)
28329#[inline]
28330#[target_feature(enable = "avx512f,avx512vl")]
28331#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28332#[cfg_attr(test, assert_instr(vbroadcastss))]
28333#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28334pub const fn _mm256_maskz_broadcastss_ps(k: __mmask8, a: __m128) -> __m256 {
28335    unsafe {
28336        let broadcast = _mm256_broadcastss_ps(a).as_f32x8();
28337        transmute(simd_select_bitmask(k, broadcast, f32x8::ZERO))
28338    }
28339}
28340
28341/// Broadcast the low single-precision (32-bit) floating-point element from a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
28342///
28343/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_broadcastss_ps&expand=573)
28344#[inline]
28345#[target_feature(enable = "avx512f,avx512vl")]
28346#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28347#[cfg_attr(test, assert_instr(vbroadcastss))]
28348#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28349pub const fn _mm_mask_broadcastss_ps(src: __m128, k: __mmask8, a: __m128) -> __m128 {
28350    unsafe {
28351        let broadcast = _mm_broadcastss_ps(a).as_f32x4();
28352        transmute(simd_select_bitmask(k, broadcast, src.as_f32x4()))
28353    }
28354}
28355
28356/// Broadcast the low single-precision (32-bit) floating-point element from a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
28357///
28358/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_broadcastss_ps&expand=574)
28359#[inline]
28360#[target_feature(enable = "avx512f,avx512vl")]
28361#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28362#[cfg_attr(test, assert_instr(vbroadcastss))]
28363#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28364pub const fn _mm_maskz_broadcastss_ps(k: __mmask8, a: __m128) -> __m128 {
28365    unsafe {
28366        let broadcast = _mm_broadcastss_ps(a).as_f32x4();
28367        transmute(simd_select_bitmask(k, broadcast, f32x4::ZERO))
28368    }
28369}
28370
28371/// Broadcast the low double-precision (64-bit) floating-point element from a to all elements of dst.
28372///
28373/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_broadcastsd_pd&expand=567)
28374#[inline]
28375#[target_feature(enable = "avx512f")]
28376#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28377#[cfg_attr(test, assert_instr(vbroadcastsd))]
28378#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28379pub const fn _mm512_broadcastsd_pd(a: __m128d) -> __m512d {
28380    unsafe { simd_shuffle!(a, a, [0, 0, 0, 0, 0, 0, 0, 0]) }
28381}
28382
28383/// Broadcast the low double-precision (64-bit) floating-point element from a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
28384///
28385/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_broadcastsd_pd&expand=568)
28386#[inline]
28387#[target_feature(enable = "avx512f")]
28388#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28389#[cfg_attr(test, assert_instr(vbroadcastsd))]
28390#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28391pub const fn _mm512_mask_broadcastsd_pd(src: __m512d, k: __mmask8, a: __m128d) -> __m512d {
28392    unsafe {
28393        let broadcast = _mm512_broadcastsd_pd(a).as_f64x8();
28394        transmute(simd_select_bitmask(k, broadcast, src.as_f64x8()))
28395    }
28396}
28397
28398/// Broadcast the low double-precision (64-bit) floating-point element from a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
28399///
28400/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_broadcastsd_pd&expand=569)
28401#[inline]
28402#[target_feature(enable = "avx512f")]
28403#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28404#[cfg_attr(test, assert_instr(vbroadcastsd))]
28405#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28406pub const fn _mm512_maskz_broadcastsd_pd(k: __mmask8, a: __m128d) -> __m512d {
28407    unsafe {
28408        let broadcast = _mm512_broadcastsd_pd(a).as_f64x8();
28409        transmute(simd_select_bitmask(k, broadcast, f64x8::ZERO))
28410    }
28411}
28412
28413/// Broadcast the low double-precision (64-bit) floating-point element from a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
28414///
28415/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_broadcastsd_pd&expand=565)
28416#[inline]
28417#[target_feature(enable = "avx512f,avx512vl")]
28418#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28419#[cfg_attr(test, assert_instr(vbroadcastsd))]
28420#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28421pub const fn _mm256_mask_broadcastsd_pd(src: __m256d, k: __mmask8, a: __m128d) -> __m256d {
28422    unsafe {
28423        let broadcast = _mm256_broadcastsd_pd(a).as_f64x4();
28424        transmute(simd_select_bitmask(k, broadcast, src.as_f64x4()))
28425    }
28426}
28427
28428/// Broadcast the low double-precision (64-bit) floating-point element from a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
28429///
28430/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_broadcastsd_pd&expand=566)
28431#[inline]
28432#[target_feature(enable = "avx512f,avx512vl")]
28433#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28434#[cfg_attr(test, assert_instr(vbroadcastsd))]
28435#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28436pub const fn _mm256_maskz_broadcastsd_pd(k: __mmask8, a: __m128d) -> __m256d {
28437    unsafe {
28438        let broadcast = _mm256_broadcastsd_pd(a).as_f64x4();
28439        transmute(simd_select_bitmask(k, broadcast, f64x4::ZERO))
28440    }
28441}
28442
28443/// Broadcast the 4 packed 32-bit integers from a to all elements of dst.
28444///
28445/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_broadcast_i32x4&expand=510)
28446#[inline]
28447#[target_feature(enable = "avx512f")] //msvc: vbroadcasti32x4, linux: vshuf
28448#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28449#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28450pub const fn _mm512_broadcast_i32x4(a: __m128i) -> __m512i {
28451    unsafe {
28452        let a = a.as_i32x4();
28453        let ret: i32x16 = simd_shuffle!(a, a, [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]);
28454        transmute(ret)
28455    }
28456}
28457
28458/// Broadcast the 4 packed 32-bit integers from a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
28459///
28460/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_broadcast_i32x4&expand=511)
28461#[inline]
28462#[target_feature(enable = "avx512f")] //msvc: vbroadcasti32x4, linux: vshuf
28463#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28464#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28465pub const fn _mm512_mask_broadcast_i32x4(src: __m512i, k: __mmask16, a: __m128i) -> __m512i {
28466    unsafe {
28467        let broadcast = _mm512_broadcast_i32x4(a).as_i32x16();
28468        transmute(simd_select_bitmask(k, broadcast, src.as_i32x16()))
28469    }
28470}
28471
28472/// Broadcast the 4 packed 32-bit integers from a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
28473///
28474/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_broadcast_i32x4&expand=512)
28475#[inline]
28476#[target_feature(enable = "avx512f")] //msvc: vbroadcasti32x4, linux: vshuf
28477#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28478#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28479pub const fn _mm512_maskz_broadcast_i32x4(k: __mmask16, a: __m128i) -> __m512i {
28480    unsafe {
28481        let broadcast = _mm512_broadcast_i32x4(a).as_i32x16();
28482        transmute(simd_select_bitmask(k, broadcast, i32x16::ZERO))
28483    }
28484}
28485
28486/// Broadcast the 4 packed 32-bit integers from a to all elements of dst.
28487///
28488/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_broadcast_i32x4&expand=507)
28489#[inline]
28490#[target_feature(enable = "avx512f,avx512vl")] //msvc: vbroadcasti32x4, linux: vshuf
28491#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28492#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28493pub const fn _mm256_broadcast_i32x4(a: __m128i) -> __m256i {
28494    unsafe {
28495        let a = a.as_i32x4();
28496        let ret: i32x8 = simd_shuffle!(a, a, [0, 1, 2, 3, 0, 1, 2, 3]);
28497        transmute(ret)
28498    }
28499}
28500
28501/// Broadcast the 4 packed 32-bit integers from a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
28502///
28503/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_broadcast_i32x4&expand=508)
28504#[inline]
28505#[target_feature(enable = "avx512f,avx512vl")] //msvc: vbroadcasti32x4, linux: vshuf
28506#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28507#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28508pub const fn _mm256_mask_broadcast_i32x4(src: __m256i, k: __mmask8, a: __m128i) -> __m256i {
28509    unsafe {
28510        let broadcast = _mm256_broadcast_i32x4(a).as_i32x8();
28511        transmute(simd_select_bitmask(k, broadcast, src.as_i32x8()))
28512    }
28513}
28514
28515/// Broadcast the 4 packed 32-bit integers from a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
28516///
28517/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_broadcast_i32x4&expand=509)
28518#[inline]
28519#[target_feature(enable = "avx512f,avx512vl")] //msvc: vbroadcasti32x4, linux: vshuf
28520#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28521#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28522pub const fn _mm256_maskz_broadcast_i32x4(k: __mmask8, a: __m128i) -> __m256i {
28523    unsafe {
28524        let broadcast = _mm256_broadcast_i32x4(a).as_i32x8();
28525        transmute(simd_select_bitmask(k, broadcast, i32x8::ZERO))
28526    }
28527}
28528
28529/// Broadcast the 4 packed 64-bit integers from a to all elements of dst.
28530///
28531/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_broadcast_i64x4&expand=522)
28532#[inline]
28533#[target_feature(enable = "avx512f")] //msvc: vbroadcasti64x4, linux: vperm
28534#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28535#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28536pub const fn _mm512_broadcast_i64x4(a: __m256i) -> __m512i {
28537    unsafe { simd_shuffle!(a, a, [0, 1, 2, 3, 0, 1, 2, 3]) }
28538}
28539
28540/// Broadcast the 4 packed 64-bit integers from a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
28541///
28542/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_broadcast_i64x4&expand=523)
28543#[inline]
28544#[target_feature(enable = "avx512f")] //msvc: vbroadcasti64x4, linux: vperm
28545#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28546#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28547pub const fn _mm512_mask_broadcast_i64x4(src: __m512i, k: __mmask8, a: __m256i) -> __m512i {
28548    unsafe {
28549        let broadcast = _mm512_broadcast_i64x4(a).as_i64x8();
28550        transmute(simd_select_bitmask(k, broadcast, src.as_i64x8()))
28551    }
28552}
28553
28554/// Broadcast the 4 packed 64-bit integers from a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
28555///
28556/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_broadcast_i64x4&expand=524)
28557#[inline]
28558#[target_feature(enable = "avx512f")] //msvc: vbroadcasti64x4, linux: vperm
28559#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28560#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28561pub const fn _mm512_maskz_broadcast_i64x4(k: __mmask8, a: __m256i) -> __m512i {
28562    unsafe {
28563        let broadcast = _mm512_broadcast_i64x4(a).as_i64x8();
28564        transmute(simd_select_bitmask(k, broadcast, i64x8::ZERO))
28565    }
28566}
28567
28568/// Broadcast the 4 packed single-precision (32-bit) floating-point elements from a to all elements of dst.
28569///
28570/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_broadcast_f32x4&expand=483)
28571#[inline]
28572#[target_feature(enable = "avx512f")] //msvc: vbroadcastf32x4, linux: vshuf
28573#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28574#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28575pub const fn _mm512_broadcast_f32x4(a: __m128) -> __m512 {
28576    unsafe { simd_shuffle!(a, a, [0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]) }
28577}
28578
28579/// Broadcast the 4 packed single-precision (32-bit) floating-point elements from a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
28580///
28581/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_broadcast_f32x4&expand=484)
28582#[inline]
28583#[target_feature(enable = "avx512f")] //msvc: vbroadcastf32x4, linux: vshu
28584#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28585#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28586pub const fn _mm512_mask_broadcast_f32x4(src: __m512, k: __mmask16, a: __m128) -> __m512 {
28587    unsafe {
28588        let broadcast = _mm512_broadcast_f32x4(a).as_f32x16();
28589        transmute(simd_select_bitmask(k, broadcast, src.as_f32x16()))
28590    }
28591}
28592
28593/// Broadcast the 4 packed single-precision (32-bit) floating-point elements from a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
28594///
28595/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_broadcast_f32x4&expand=485)
28596#[inline]
28597#[target_feature(enable = "avx512f")] //msvc: vbroadcastf32x4, linux: vshu
28598#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28599#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28600pub const fn _mm512_maskz_broadcast_f32x4(k: __mmask16, a: __m128) -> __m512 {
28601    unsafe {
28602        let broadcast = _mm512_broadcast_f32x4(a).as_f32x16();
28603        transmute(simd_select_bitmask(k, broadcast, f32x16::ZERO))
28604    }
28605}
28606
28607/// Broadcast the 4 packed single-precision (32-bit) floating-point elements from a to all elements of dst.
28608///
28609/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_broadcast_f32x4&expand=480)
28610#[inline]
28611#[target_feature(enable = "avx512f,avx512vl")] //msvc: vbroadcastf32x4, linux: vshuf
28612#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28613#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28614pub const fn _mm256_broadcast_f32x4(a: __m128) -> __m256 {
28615    unsafe { simd_shuffle!(a, a, [0, 1, 2, 3, 0, 1, 2, 3]) }
28616}
28617
28618/// Broadcast the 4 packed single-precision (32-bit) floating-point elements from a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
28619///
28620/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_broadcast_f32x4&expand=481)
28621#[inline]
28622#[target_feature(enable = "avx512f,avx512vl")] //msvc: vbroadcastf32x4, linux: vshu
28623#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28624#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28625pub const fn _mm256_mask_broadcast_f32x4(src: __m256, k: __mmask8, a: __m128) -> __m256 {
28626    unsafe {
28627        let broadcast = _mm256_broadcast_f32x4(a).as_f32x8();
28628        transmute(simd_select_bitmask(k, broadcast, src.as_f32x8()))
28629    }
28630}
28631
28632/// Broadcast the 4 packed single-precision (32-bit) floating-point elements from a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
28633///
28634/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_broadcast_f32x4&expand=482)
28635#[inline]
28636#[target_feature(enable = "avx512f,avx512vl")] //msvc: vbroadcastf32x4, linux: vshu
28637#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28638#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28639pub const fn _mm256_maskz_broadcast_f32x4(k: __mmask8, a: __m128) -> __m256 {
28640    unsafe {
28641        let broadcast = _mm256_broadcast_f32x4(a).as_f32x8();
28642        transmute(simd_select_bitmask(k, broadcast, f32x8::ZERO))
28643    }
28644}
28645
28646/// Broadcast the 4 packed double-precision (64-bit) floating-point elements from a to all elements of dst.
28647///
28648/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_broadcast_f64x4&expand=495)
28649#[inline]
28650#[target_feature(enable = "avx512f")] //msvc: vbroadcastf64x4, linux: vperm
28651#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28652#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28653pub const fn _mm512_broadcast_f64x4(a: __m256d) -> __m512d {
28654    unsafe { simd_shuffle!(a, a, [0, 1, 2, 3, 0, 1, 2, 3]) }
28655}
28656
28657/// Broadcast the 4 packed double-precision (64-bit) floating-point elements from a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
28658///
28659/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_broadcast_f64x4&expand=496)
28660#[inline]
28661#[target_feature(enable = "avx512f")] //msvc: vbroadcastf64x4, linux: vper
28662#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28663#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28664pub const fn _mm512_mask_broadcast_f64x4(src: __m512d, k: __mmask8, a: __m256d) -> __m512d {
28665    unsafe {
28666        let broadcast = _mm512_broadcast_f64x4(a).as_f64x8();
28667        transmute(simd_select_bitmask(k, broadcast, src.as_f64x8()))
28668    }
28669}
28670
28671/// Broadcast the 4 packed double-precision (64-bit) floating-point elements from a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
28672///
28673/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_broadcast_f64x4&expand=497)
28674#[inline]
28675#[target_feature(enable = "avx512f")] //msvc: vbroadcastf64x4, linux: vper
28676#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28677#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28678pub const fn _mm512_maskz_broadcast_f64x4(k: __mmask8, a: __m256d) -> __m512d {
28679    unsafe {
28680        let broadcast = _mm512_broadcast_f64x4(a).as_f64x8();
28681        transmute(simd_select_bitmask(k, broadcast, f64x8::ZERO))
28682    }
28683}
28684
28685/// Blend packed 32-bit integers from a and b using control mask k, and store the results in dst.
28686///
28687/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_blend_epi32&expand=435)
28688#[inline]
28689#[target_feature(enable = "avx512f")]
28690#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28691#[cfg_attr(test, assert_instr(vmovdqa32))] //should be vpblendmd
28692#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28693pub const fn _mm512_mask_blend_epi32(k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
28694    unsafe { transmute(simd_select_bitmask(k, b.as_i32x16(), a.as_i32x16())) }
28695}
28696
28697/// Blend packed 32-bit integers from a and b using control mask k, and store the results in dst.
28698///
28699/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_blend_epi32&expand=434)
28700#[inline]
28701#[target_feature(enable = "avx512f,avx512vl")]
28702#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28703#[cfg_attr(test, assert_instr(vmovdqa32))] //should be vpblendmd
28704#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28705pub const fn _mm256_mask_blend_epi32(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
28706    unsafe { transmute(simd_select_bitmask(k, b.as_i32x8(), a.as_i32x8())) }
28707}
28708
28709/// Blend packed 32-bit integers from a and b using control mask k, and store the results in dst.
28710///
28711/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_blend_epi32&expand=432)
28712#[inline]
28713#[target_feature(enable = "avx512f,avx512vl")]
28714#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28715#[cfg_attr(test, assert_instr(vmovdqa32))] //should be vpblendmd
28716#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28717pub const fn _mm_mask_blend_epi32(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
28718    unsafe { transmute(simd_select_bitmask(k, b.as_i32x4(), a.as_i32x4())) }
28719}
28720
28721/// Blend packed 64-bit integers from a and b using control mask k, and store the results in dst.
28722///
28723/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_blend_epi64&expand=438)
28724#[inline]
28725#[target_feature(enable = "avx512f")]
28726#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28727#[cfg_attr(test, assert_instr(vmovdqa64))] //should be vpblendmq
28728#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28729pub const fn _mm512_mask_blend_epi64(k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
28730    unsafe { transmute(simd_select_bitmask(k, b.as_i64x8(), a.as_i64x8())) }
28731}
28732
28733/// Blend packed 64-bit integers from a and b using control mask k, and store the results in dst.
28734///
28735/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_blend_epi64&expand=437)
28736#[inline]
28737#[target_feature(enable = "avx512f,avx512vl")]
28738#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28739#[cfg_attr(test, assert_instr(vmovdqa64))] //should be vpblendmq
28740#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28741pub const fn _mm256_mask_blend_epi64(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
28742    unsafe { transmute(simd_select_bitmask(k, b.as_i64x4(), a.as_i64x4())) }
28743}
28744
28745/// Blend packed 64-bit integers from a and b using control mask k, and store the results in dst.
28746///
28747/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_blend_epi64&expand=436)
28748#[inline]
28749#[target_feature(enable = "avx512f,avx512vl")]
28750#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28751#[cfg_attr(test, assert_instr(vmovdqa64))] //should be vpblendmq
28752#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28753pub const fn _mm_mask_blend_epi64(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
28754    unsafe { transmute(simd_select_bitmask(k, b.as_i64x2(), a.as_i64x2())) }
28755}
28756
28757/// Blend packed single-precision (32-bit) floating-point elements from a and b using control mask k, and store the results in dst.
28758///
28759/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_blend_ps&expand=451)
28760#[inline]
28761#[target_feature(enable = "avx512f")]
28762#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28763#[cfg_attr(test, assert_instr(vmovaps))] //should be vpblendmps
28764#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28765pub const fn _mm512_mask_blend_ps(k: __mmask16, a: __m512, b: __m512) -> __m512 {
28766    unsafe { transmute(simd_select_bitmask(k, b.as_f32x16(), a.as_f32x16())) }
28767}
28768
28769/// Blend packed single-precision (32-bit) floating-point elements from a and b using control mask k, and store the results in dst.
28770///
28771/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_blend_ps&expand=450)
28772#[inline]
28773#[target_feature(enable = "avx512f,avx512vl")]
28774#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28775#[cfg_attr(test, assert_instr(vmovaps))] //should be vpblendmps
28776#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28777pub const fn _mm256_mask_blend_ps(k: __mmask8, a: __m256, b: __m256) -> __m256 {
28778    unsafe { transmute(simd_select_bitmask(k, b.as_f32x8(), a.as_f32x8())) }
28779}
28780
28781/// Blend packed single-precision (32-bit) floating-point elements from a and b using control mask k, and store the results in dst.
28782///
28783/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_blend_ps&expand=448)
28784#[inline]
28785#[target_feature(enable = "avx512f,avx512vl")]
28786#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28787#[cfg_attr(test, assert_instr(vmovaps))] //should be vpblendmps
28788#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28789pub const fn _mm_mask_blend_ps(k: __mmask8, a: __m128, b: __m128) -> __m128 {
28790    unsafe { transmute(simd_select_bitmask(k, b.as_f32x4(), a.as_f32x4())) }
28791}
28792
28793/// Blend packed double-precision (64-bit) floating-point elements from a and b using control mask k, and store the results in dst.
28794///
28795/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_blend_pd&expand=446)
28796#[inline]
28797#[target_feature(enable = "avx512f")]
28798#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28799#[cfg_attr(test, assert_instr(vmovapd))] //should be vpblendmpd
28800#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28801pub const fn _mm512_mask_blend_pd(k: __mmask8, a: __m512d, b: __m512d) -> __m512d {
28802    unsafe { transmute(simd_select_bitmask(k, b.as_f64x8(), a.as_f64x8())) }
28803}
28804
28805/// Blend packed double-precision (64-bit) floating-point elements from a and b using control mask k, and store the results in dst.
28806///
28807/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_blend_pd&expand=445)
28808#[inline]
28809#[target_feature(enable = "avx512f,avx512vl")]
28810#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28811#[cfg_attr(test, assert_instr(vmovapd))] //should be vpblendmpd
28812#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28813pub const fn _mm256_mask_blend_pd(k: __mmask8, a: __m256d, b: __m256d) -> __m256d {
28814    unsafe { transmute(simd_select_bitmask(k, b.as_f64x4(), a.as_f64x4())) }
28815}
28816
28817/// Blend packed double-precision (64-bit) floating-point elements from a and b using control mask k, and store the results in dst.
28818///
28819/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_blend_pd&expand=443)
28820#[inline]
28821#[target_feature(enable = "avx512f,avx512vl")]
28822#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28823#[cfg_attr(test, assert_instr(vmovapd))] //should be vpblendmpd
28824#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28825pub const fn _mm_mask_blend_pd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
28826    unsafe { transmute(simd_select_bitmask(k, b.as_f64x2(), a.as_f64x2())) }
28827}
28828
28829/// Concatenate a and b into a 128-byte immediate result, shift the result right by imm8 32-bit elements, and store the low 64 bytes (16 elements) in dst.
28830///
28831/// <div class="warning">Only lowest <strong>4 bits</strong> are used from the mask (shift at maximum by 60 bytes)!</div>
28832///
28833/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_alignr_epi32&expand=245)
28834#[inline]
28835#[target_feature(enable = "avx512f")]
28836#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28837#[cfg_attr(test, assert_instr(valignd, IMM8 = 1))]
28838#[rustc_legacy_const_generics(2)]
28839#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28840pub const fn _mm512_alignr_epi32<const IMM8: i32>(a: __m512i, b: __m512i) -> __m512i {
28841    unsafe {
28842        static_assert_uimm_bits!(IMM8, 8);
28843        let a = a.as_i32x16();
28844        let b = b.as_i32x16();
28845        let imm8: i32 = IMM8 % 16;
28846        let r: i32x16 = match imm8 {
28847            0 => simd_shuffle!(
28848                a,
28849                b,
28850                [
28851                    16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
28852                ],
28853            ),
28854            1 => simd_shuffle!(
28855                a,
28856                b,
28857                [
28858                    17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0,
28859                ],
28860            ),
28861            2 => simd_shuffle!(
28862                a,
28863                b,
28864                [18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1],
28865            ),
28866            3 => simd_shuffle!(
28867                a,
28868                b,
28869                [19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2],
28870            ),
28871            4 => simd_shuffle!(
28872                a,
28873                b,
28874                [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3],
28875            ),
28876            5 => simd_shuffle!(
28877                a,
28878                b,
28879                [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4],
28880            ),
28881            6 => simd_shuffle!(
28882                a,
28883                b,
28884                [22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 5],
28885            ),
28886            7 => simd_shuffle!(
28887                a,
28888                b,
28889                [23, 24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 5, 6],
28890            ),
28891            8 => simd_shuffle!(
28892                a,
28893                b,
28894                [24, 25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 5, 6, 7],
28895            ),
28896            9 => simd_shuffle!(
28897                a,
28898                b,
28899                [25, 26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 5, 6, 7, 8],
28900            ),
28901            10 => simd_shuffle!(a, b, [26, 27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
28902            11 => simd_shuffle!(a, b, [27, 28, 29, 30, 31, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]),
28903            12 => simd_shuffle!(a, b, [28, 29, 30, 31, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]),
28904            13 => simd_shuffle!(a, b, [29, 30, 31, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]),
28905            14 => simd_shuffle!(a, b, [30, 31, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]),
28906            15 => simd_shuffle!(a, b, [31, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]),
28907            _ => unreachable_unchecked(),
28908        };
28909        transmute(r)
28910    }
28911}
28912
28913/// Concatenate a and b into a 128-byte immediate result, shift the result right by imm8 32-bit elements, and store the low 64 bytes (16 elements) in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
28914///
28915/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_alignr_epi32&expand=246)
28916#[inline]
28917#[target_feature(enable = "avx512f")]
28918#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28919#[cfg_attr(test, assert_instr(valignd, IMM8 = 1))]
28920#[rustc_legacy_const_generics(4)]
28921#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28922pub const fn _mm512_mask_alignr_epi32<const IMM8: i32>(
28923    src: __m512i,
28924    k: __mmask16,
28925    a: __m512i,
28926    b: __m512i,
28927) -> __m512i {
28928    unsafe {
28929        static_assert_uimm_bits!(IMM8, 8);
28930        let r = _mm512_alignr_epi32::<IMM8>(a, b);
28931        transmute(simd_select_bitmask(k, r.as_i32x16(), src.as_i32x16()))
28932    }
28933}
28934
28935/// Concatenate a and b into a 128-byte immediate result, shift the result right by imm8 32-bit elements, and stores the low 64 bytes (16 elements) in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
28936///
28937/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_alignr_epi32&expand=247)
28938#[inline]
28939#[target_feature(enable = "avx512f")]
28940#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28941#[cfg_attr(test, assert_instr(valignd, IMM8 = 1))]
28942#[rustc_legacy_const_generics(3)]
28943#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28944pub const fn _mm512_maskz_alignr_epi32<const IMM8: i32>(
28945    k: __mmask16,
28946    a: __m512i,
28947    b: __m512i,
28948) -> __m512i {
28949    unsafe {
28950        static_assert_uimm_bits!(IMM8, 8);
28951        let r = _mm512_alignr_epi32::<IMM8>(a, b);
28952        transmute(simd_select_bitmask(k, r.as_i32x16(), i32x16::ZERO))
28953    }
28954}
28955
28956/// Concatenate a and b into a 64-byte immediate result, shift the result right by imm8 32-bit elements, and store the low 32 bytes (8 elements) in dst.
28957///
28958/// <div class="warning">Only lowest <strong>3 bits</strong> are used from the mask (shift at maximum by 28 bytes)!</div>
28959///
28960/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_alignr_epi32&expand=242)
28961#[inline]
28962#[target_feature(enable = "avx512f,avx512vl")]
28963#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28964#[cfg_attr(test, assert_instr(valignd, IMM8 = 1))]
28965#[rustc_legacy_const_generics(2)]
28966#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28967pub const fn _mm256_alignr_epi32<const IMM8: i32>(a: __m256i, b: __m256i) -> __m256i {
28968    unsafe {
28969        static_assert_uimm_bits!(IMM8, 8);
28970        let a = a.as_i32x8();
28971        let b = b.as_i32x8();
28972        let imm8: i32 = IMM8 % 8;
28973        let r: i32x8 = match imm8 {
28974            0 => simd_shuffle!(a, b, [8, 9, 10, 11, 12, 13, 14, 15]),
28975            1 => simd_shuffle!(a, b, [9, 10, 11, 12, 13, 14, 15, 0]),
28976            2 => simd_shuffle!(a, b, [10, 11, 12, 13, 14, 15, 0, 1]),
28977            3 => simd_shuffle!(a, b, [11, 12, 13, 14, 15, 0, 1, 2]),
28978            4 => simd_shuffle!(a, b, [12, 13, 14, 15, 0, 1, 2, 3]),
28979            5 => simd_shuffle!(a, b, [13, 14, 15, 0, 1, 2, 3, 4]),
28980            6 => simd_shuffle!(a, b, [14, 15, 0, 1, 2, 3, 4, 5]),
28981            7 => simd_shuffle!(a, b, [15, 0, 1, 2, 3, 4, 5, 6]),
28982            _ => unreachable_unchecked(),
28983        };
28984        transmute(r)
28985    }
28986}
28987
28988/// Concatenate a and b into a 64-byte immediate result, shift the result right by imm8 32-bit elements, and store the low 32 bytes (8 elements) in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
28989///
28990/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_alignr_epi32&expand=243)
28991#[inline]
28992#[target_feature(enable = "avx512f,avx512vl")]
28993#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
28994#[cfg_attr(test, assert_instr(valignd, IMM8 = 1))]
28995#[rustc_legacy_const_generics(4)]
28996#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
28997pub const fn _mm256_mask_alignr_epi32<const IMM8: i32>(
28998    src: __m256i,
28999    k: __mmask8,
29000    a: __m256i,
29001    b: __m256i,
29002) -> __m256i {
29003    unsafe {
29004        static_assert_uimm_bits!(IMM8, 8);
29005        let r = _mm256_alignr_epi32::<IMM8>(a, b);
29006        transmute(simd_select_bitmask(k, r.as_i32x8(), src.as_i32x8()))
29007    }
29008}
29009
29010/// Concatenate a and b into a 64-byte immediate result, shift the result right by imm8 32-bit elements, and store the low 32 bytes (8 elements) in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29011///
29012/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_alignr_epi32&expand=244)
29013#[inline]
29014#[target_feature(enable = "avx512f,avx512vl")]
29015#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29016#[cfg_attr(test, assert_instr(valignd, IMM8 = 1))]
29017#[rustc_legacy_const_generics(3)]
29018#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29019pub const fn _mm256_maskz_alignr_epi32<const IMM8: i32>(
29020    k: __mmask8,
29021    a: __m256i,
29022    b: __m256i,
29023) -> __m256i {
29024    unsafe {
29025        static_assert_uimm_bits!(IMM8, 8);
29026        let r = _mm256_alignr_epi32::<IMM8>(a, b);
29027        transmute(simd_select_bitmask(k, r.as_i32x8(), i32x8::ZERO))
29028    }
29029}
29030
29031/// Concatenate a and b into a 32-byte immediate result, shift the result right by imm8 32-bit elements, and store the low 16 bytes (4 elements) in dst.
29032///
29033/// <div class="warning">Only lowest <strong>2 bits</strong> are used from the mask (shift at maximum by 12 bytes)!</div>
29034///
29035/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_alignr_epi32&expand=239)
29036#[inline]
29037#[target_feature(enable = "avx512f,avx512vl")]
29038#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29039#[cfg_attr(test, assert_instr(vpalignr, IMM8 = 1))] //should be valignd
29040#[rustc_legacy_const_generics(2)]
29041#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29042pub const fn _mm_alignr_epi32<const IMM8: i32>(a: __m128i, b: __m128i) -> __m128i {
29043    unsafe {
29044        static_assert_uimm_bits!(IMM8, 8);
29045        let a = a.as_i32x4();
29046        let b = b.as_i32x4();
29047        let imm8: i32 = IMM8 % 4;
29048        let r: i32x4 = match imm8 {
29049            0 => simd_shuffle!(a, b, [4, 5, 6, 7]),
29050            1 => simd_shuffle!(a, b, [5, 6, 7, 0]),
29051            2 => simd_shuffle!(a, b, [6, 7, 0, 1]),
29052            3 => simd_shuffle!(a, b, [7, 0, 1, 2]),
29053            _ => unreachable_unchecked(),
29054        };
29055        transmute(r)
29056    }
29057}
29058
29059/// Concatenate a and b into a 32-byte immediate result, shift the result right by imm8 32-bit elements, and store the low 16 bytes (4 elements) in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29060///
29061/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_alignr_epi32&expand=240)
29062#[inline]
29063#[target_feature(enable = "avx512f,avx512vl")]
29064#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29065#[cfg_attr(test, assert_instr(valignd, IMM8 = 1))]
29066#[rustc_legacy_const_generics(4)]
29067#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29068pub const fn _mm_mask_alignr_epi32<const IMM8: i32>(
29069    src: __m128i,
29070    k: __mmask8,
29071    a: __m128i,
29072    b: __m128i,
29073) -> __m128i {
29074    unsafe {
29075        static_assert_uimm_bits!(IMM8, 8);
29076        let r = _mm_alignr_epi32::<IMM8>(a, b);
29077        transmute(simd_select_bitmask(k, r.as_i32x4(), src.as_i32x4()))
29078    }
29079}
29080
29081/// Concatenate a and b into a 32-byte immediate result, shift the result right by imm8 32-bit elements, and store the low 16 bytes (4 elements) in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29082///
29083/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_alignr_epi32&expand=241)
29084#[inline]
29085#[target_feature(enable = "avx512f,avx512vl")]
29086#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29087#[cfg_attr(test, assert_instr(valignd, IMM8 = 1))]
29088#[rustc_legacy_const_generics(3)]
29089#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29090pub const fn _mm_maskz_alignr_epi32<const IMM8: i32>(
29091    k: __mmask8,
29092    a: __m128i,
29093    b: __m128i,
29094) -> __m128i {
29095    unsafe {
29096        static_assert_uimm_bits!(IMM8, 8);
29097        let r = _mm_alignr_epi32::<IMM8>(a, b);
29098        transmute(simd_select_bitmask(k, r.as_i32x4(), i32x4::ZERO))
29099    }
29100}
29101
29102/// Concatenate a and b into a 128-byte immediate result, shift the result right by imm8 64-bit elements, and store the low 64 bytes (8 elements) in dst.
29103///
29104/// <div class="warning">Only lowest <strong>3 bits</strong> are used from the mask (shift at maximum by 56 bytes)!</div>
29105///
29106/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_alignr_epi64&expand=254)
29107#[inline]
29108#[target_feature(enable = "avx512f")]
29109#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29110#[cfg_attr(test, assert_instr(valignq, IMM8 = 1))]
29111#[rustc_legacy_const_generics(2)]
29112#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29113pub const fn _mm512_alignr_epi64<const IMM8: i32>(a: __m512i, b: __m512i) -> __m512i {
29114    unsafe {
29115        static_assert_uimm_bits!(IMM8, 8);
29116        let imm8: i32 = IMM8 % 8;
29117        let r: i64x8 = match imm8 {
29118            0 => simd_shuffle!(a, b, [8, 9, 10, 11, 12, 13, 14, 15]),
29119            1 => simd_shuffle!(a, b, [9, 10, 11, 12, 13, 14, 15, 0]),
29120            2 => simd_shuffle!(a, b, [10, 11, 12, 13, 14, 15, 0, 1]),
29121            3 => simd_shuffle!(a, b, [11, 12, 13, 14, 15, 0, 1, 2]),
29122            4 => simd_shuffle!(a, b, [12, 13, 14, 15, 0, 1, 2, 3]),
29123            5 => simd_shuffle!(a, b, [13, 14, 15, 0, 1, 2, 3, 4]),
29124            6 => simd_shuffle!(a, b, [14, 15, 0, 1, 2, 3, 4, 5]),
29125            7 => simd_shuffle!(a, b, [15, 0, 1, 2, 3, 4, 5, 6]),
29126            _ => unreachable_unchecked(),
29127        };
29128        transmute(r)
29129    }
29130}
29131
29132/// Concatenate a and b into a 128-byte immediate result, shift the result right by imm8 64-bit elements, and store the low 64 bytes (8 elements) in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29133///
29134/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_alignr_epi64&expand=255)
29135#[inline]
29136#[target_feature(enable = "avx512f")]
29137#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29138#[cfg_attr(test, assert_instr(valignq, IMM8 = 1))]
29139#[rustc_legacy_const_generics(4)]
29140#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29141pub const fn _mm512_mask_alignr_epi64<const IMM8: i32>(
29142    src: __m512i,
29143    k: __mmask8,
29144    a: __m512i,
29145    b: __m512i,
29146) -> __m512i {
29147    unsafe {
29148        static_assert_uimm_bits!(IMM8, 8);
29149        let r = _mm512_alignr_epi64::<IMM8>(a, b);
29150        transmute(simd_select_bitmask(k, r.as_i64x8(), src.as_i64x8()))
29151    }
29152}
29153
29154/// Concatenate a and b into a 128-byte immediate result, shift the result right by imm8 64-bit elements, and stores the low 64 bytes (8 elements) in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29155///
29156/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_alignr_epi64&expand=256)
29157#[inline]
29158#[target_feature(enable = "avx512f")]
29159#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29160#[cfg_attr(test, assert_instr(valignq, IMM8 = 1))]
29161#[rustc_legacy_const_generics(3)]
29162#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29163pub const fn _mm512_maskz_alignr_epi64<const IMM8: i32>(
29164    k: __mmask8,
29165    a: __m512i,
29166    b: __m512i,
29167) -> __m512i {
29168    unsafe {
29169        static_assert_uimm_bits!(IMM8, 8);
29170        let r = _mm512_alignr_epi64::<IMM8>(a, b);
29171        transmute(simd_select_bitmask(k, r.as_i64x8(), i64x8::ZERO))
29172    }
29173}
29174
29175/// Concatenate a and b into a 64-byte immediate result, shift the result right by imm8 64-bit elements, and store the low 32 bytes (4 elements) in dst.
29176///
29177/// <div class="warning">Only lowest <strong>2 bits</strong> are used from the mask (shift at maximum by 24 bytes)!</div>
29178///
29179/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_alignr_epi64&expand=251)
29180#[inline]
29181#[target_feature(enable = "avx512f,avx512vl")]
29182#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29183#[cfg_attr(test, assert_instr(valignq, IMM8 = 1))]
29184#[rustc_legacy_const_generics(2)]
29185#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29186pub const fn _mm256_alignr_epi64<const IMM8: i32>(a: __m256i, b: __m256i) -> __m256i {
29187    unsafe {
29188        static_assert_uimm_bits!(IMM8, 8);
29189        let imm8: i32 = IMM8 % 4;
29190        let r: i64x4 = match imm8 {
29191            0 => simd_shuffle!(a, b, [4, 5, 6, 7]),
29192            1 => simd_shuffle!(a, b, [5, 6, 7, 0]),
29193            2 => simd_shuffle!(a, b, [6, 7, 0, 1]),
29194            3 => simd_shuffle!(a, b, [7, 0, 1, 2]),
29195            _ => unreachable_unchecked(),
29196        };
29197        transmute(r)
29198    }
29199}
29200
29201/// Concatenate a and b into a 64-byte immediate result, shift the result right by imm8 64-bit elements, and store the low 32 bytes (4 elements) in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29202///
29203/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_alignr_epi64&expand=252)
29204#[inline]
29205#[target_feature(enable = "avx512f,avx512vl")]
29206#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29207#[cfg_attr(test, assert_instr(valignq, IMM8 = 1))]
29208#[rustc_legacy_const_generics(4)]
29209#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29210pub const fn _mm256_mask_alignr_epi64<const IMM8: i32>(
29211    src: __m256i,
29212    k: __mmask8,
29213    a: __m256i,
29214    b: __m256i,
29215) -> __m256i {
29216    unsafe {
29217        static_assert_uimm_bits!(IMM8, 8);
29218        let r = _mm256_alignr_epi64::<IMM8>(a, b);
29219        transmute(simd_select_bitmask(k, r.as_i64x4(), src.as_i64x4()))
29220    }
29221}
29222
29223/// Concatenate a and b into a 64-byte immediate result, shift the result right by imm8 64-bit elements, and store the low 32 bytes (4 elements) in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29224///
29225/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_alignr_epi64&expand=253)
29226#[inline]
29227#[target_feature(enable = "avx512f,avx512vl")]
29228#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29229#[cfg_attr(test, assert_instr(valignq, IMM8 = 1))]
29230#[rustc_legacy_const_generics(3)]
29231#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29232pub const fn _mm256_maskz_alignr_epi64<const IMM8: i32>(
29233    k: __mmask8,
29234    a: __m256i,
29235    b: __m256i,
29236) -> __m256i {
29237    unsafe {
29238        static_assert_uimm_bits!(IMM8, 8);
29239        let r = _mm256_alignr_epi64::<IMM8>(a, b);
29240        transmute(simd_select_bitmask(k, r.as_i64x4(), i64x4::ZERO))
29241    }
29242}
29243
29244/// Concatenate a and b into a 32-byte immediate result, shift the result right by imm8 64-bit elements, and store the low 16 bytes (2 elements) in dst.
29245///
29246/// <div class="warning">Only lowest <strong>bit</strong> is used from the mask (shift at maximum by 8 bytes)!</div>
29247///
29248/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_alignr_epi64&expand=248)
29249#[inline]
29250#[target_feature(enable = "avx512f,avx512vl")]
29251#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29252#[cfg_attr(test, assert_instr(vpalignr, IMM8 = 1))] //should be valignq
29253#[rustc_legacy_const_generics(2)]
29254#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29255pub const fn _mm_alignr_epi64<const IMM8: i32>(a: __m128i, b: __m128i) -> __m128i {
29256    unsafe {
29257        static_assert_uimm_bits!(IMM8, 8);
29258        let imm8: i32 = IMM8 % 2;
29259        let r: i64x2 = match imm8 {
29260            0 => simd_shuffle!(a, b, [2, 3]),
29261            1 => simd_shuffle!(a, b, [3, 0]),
29262            _ => unreachable_unchecked(),
29263        };
29264        transmute(r)
29265    }
29266}
29267
29268/// Concatenate a and b into a 32-byte immediate result, shift the result right by imm8 64-bit elements, and store the low 16 bytes (2 elements) in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29269///
29270/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_alignr_epi64&expand=249)
29271#[inline]
29272#[target_feature(enable = "avx512f,avx512vl")]
29273#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29274#[cfg_attr(test, assert_instr(valignq, IMM8 = 1))]
29275#[rustc_legacy_const_generics(4)]
29276#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29277pub const fn _mm_mask_alignr_epi64<const IMM8: i32>(
29278    src: __m128i,
29279    k: __mmask8,
29280    a: __m128i,
29281    b: __m128i,
29282) -> __m128i {
29283    unsafe {
29284        static_assert_uimm_bits!(IMM8, 8);
29285        let r = _mm_alignr_epi64::<IMM8>(a, b);
29286        transmute(simd_select_bitmask(k, r.as_i64x2(), src.as_i64x2()))
29287    }
29288}
29289
29290/// Concatenate a and b into a 32-byte immediate result, shift the result right by imm8 64-bit elements, and store the low 16 bytes (2 elements) in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29291///
29292/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_alignr_epi64&expand=250)
29293#[inline]
29294#[target_feature(enable = "avx512f,avx512vl")]
29295#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29296#[cfg_attr(test, assert_instr(valignq, IMM8 = 1))]
29297#[rustc_legacy_const_generics(3)]
29298#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29299pub const fn _mm_maskz_alignr_epi64<const IMM8: i32>(
29300    k: __mmask8,
29301    a: __m128i,
29302    b: __m128i,
29303) -> __m128i {
29304    unsafe {
29305        static_assert_uimm_bits!(IMM8, 8);
29306        let r = _mm_alignr_epi64::<IMM8>(a, b);
29307        transmute(simd_select_bitmask(k, r.as_i64x2(), i64x2::ZERO))
29308    }
29309}
29310
29311/// Compute the bitwise AND of packed 32-bit integers in a and b, and store the results in dst.
29312///
29313/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_and_epi32&expand=272)
29314#[inline]
29315#[target_feature(enable = "avx512f")]
29316#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29317#[cfg_attr(test, assert_instr(vpandq))] //should be vpandd, but generate vpandq
29318#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29319pub const fn _mm512_and_epi32(a: __m512i, b: __m512i) -> __m512i {
29320    unsafe { transmute(simd_and(a.as_i32x16(), b.as_i32x16())) }
29321}
29322
29323/// Performs element-by-element bitwise AND between packed 32-bit integer elements of a and b, storing the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29324///
29325/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_and_epi32&expand=273)
29326#[inline]
29327#[target_feature(enable = "avx512f")]
29328#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29329#[cfg_attr(test, assert_instr(vpandd))]
29330#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29331pub const fn _mm512_mask_and_epi32(src: __m512i, k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
29332    unsafe {
29333        let and = _mm512_and_epi32(a, b).as_i32x16();
29334        transmute(simd_select_bitmask(k, and, src.as_i32x16()))
29335    }
29336}
29337
29338/// Compute the bitwise AND of packed 32-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29339///
29340/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_and_epi32&expand=274)
29341#[inline]
29342#[target_feature(enable = "avx512f")]
29343#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29344#[cfg_attr(test, assert_instr(vpandd))]
29345#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29346pub const fn _mm512_maskz_and_epi32(k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
29347    unsafe {
29348        let and = _mm512_and_epi32(a, b).as_i32x16();
29349        transmute(simd_select_bitmask(k, and, i32x16::ZERO))
29350    }
29351}
29352
29353/// Performs element-by-element bitwise AND between packed 32-bit integer elements of a and b, storing the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29354///
29355/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_and_epi32&expand=270)
29356#[inline]
29357#[target_feature(enable = "avx512f,avx512vl")]
29358#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29359#[cfg_attr(test, assert_instr(vpandd))]
29360#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29361pub const fn _mm256_mask_and_epi32(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
29362    unsafe {
29363        let and = simd_and(a.as_i32x8(), b.as_i32x8());
29364        transmute(simd_select_bitmask(k, and, src.as_i32x8()))
29365    }
29366}
29367
29368/// Compute the bitwise AND of packed 32-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29369///
29370/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_and_epi32&expand=271)
29371#[inline]
29372#[target_feature(enable = "avx512f,avx512vl")]
29373#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29374#[cfg_attr(test, assert_instr(vpandd))]
29375#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29376pub const fn _mm256_maskz_and_epi32(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
29377    unsafe {
29378        let and = simd_and(a.as_i32x8(), b.as_i32x8());
29379        transmute(simd_select_bitmask(k, and, i32x8::ZERO))
29380    }
29381}
29382
29383/// Performs element-by-element bitwise AND between packed 32-bit integer elements of a and b, storing the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29384///
29385/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_and_epi32&expand=268)
29386#[inline]
29387#[target_feature(enable = "avx512f,avx512vl")]
29388#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29389#[cfg_attr(test, assert_instr(vpandd))]
29390#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29391pub const fn _mm_mask_and_epi32(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
29392    unsafe {
29393        let and = simd_and(a.as_i32x4(), b.as_i32x4());
29394        transmute(simd_select_bitmask(k, and, src.as_i32x4()))
29395    }
29396}
29397
29398/// Compute the bitwise AND of packed 32-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29399///
29400/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_and_epi32&expand=269)
29401#[inline]
29402#[target_feature(enable = "avx512f,avx512vl")]
29403#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29404#[cfg_attr(test, assert_instr(vpandd))]
29405#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29406pub const fn _mm_maskz_and_epi32(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
29407    unsafe {
29408        let and = simd_and(a.as_i32x4(), b.as_i32x4());
29409        transmute(simd_select_bitmask(k, and, i32x4::ZERO))
29410    }
29411}
29412
29413/// Compute the bitwise AND of 512 bits (composed of packed 64-bit integers) in a and b, and store the results in dst.
29414///
29415/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_and_epi64&expand=279)
29416#[inline]
29417#[target_feature(enable = "avx512f")]
29418#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29419#[cfg_attr(test, assert_instr(vpandq))]
29420#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29421pub const fn _mm512_and_epi64(a: __m512i, b: __m512i) -> __m512i {
29422    unsafe { transmute(simd_and(a.as_i64x8(), b.as_i64x8())) }
29423}
29424
29425/// Compute the bitwise AND of packed 64-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29426///
29427/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_and_epi64&expand=280)
29428#[inline]
29429#[target_feature(enable = "avx512f")]
29430#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29431#[cfg_attr(test, assert_instr(vpandq))]
29432#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29433pub const fn _mm512_mask_and_epi64(src: __m512i, k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
29434    unsafe {
29435        let and = _mm512_and_epi64(a, b).as_i64x8();
29436        transmute(simd_select_bitmask(k, and, src.as_i64x8()))
29437    }
29438}
29439
29440/// Compute the bitwise AND of packed 64-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29441///
29442/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_and_epi64&expand=281)
29443#[inline]
29444#[target_feature(enable = "avx512f")]
29445#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29446#[cfg_attr(test, assert_instr(vpandq))]
29447#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29448pub const fn _mm512_maskz_and_epi64(k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
29449    unsafe {
29450        let and = _mm512_and_epi64(a, b).as_i64x8();
29451        transmute(simd_select_bitmask(k, and, i64x8::ZERO))
29452    }
29453}
29454
29455/// Compute the bitwise AND of packed 64-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29456///
29457/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_and_epi64&expand=277)
29458#[inline]
29459#[target_feature(enable = "avx512f,avx512vl")]
29460#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29461#[cfg_attr(test, assert_instr(vpandq))]
29462#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29463pub const fn _mm256_mask_and_epi64(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
29464    unsafe {
29465        let and = simd_and(a.as_i64x4(), b.as_i64x4());
29466        transmute(simd_select_bitmask(k, and, src.as_i64x4()))
29467    }
29468}
29469
29470/// Compute the bitwise AND of packed 64-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29471///
29472/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_and_epi64&expand=278)
29473#[inline]
29474#[target_feature(enable = "avx512f,avx512vl")]
29475#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29476#[cfg_attr(test, assert_instr(vpandq))]
29477#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29478pub const fn _mm256_maskz_and_epi64(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
29479    unsafe {
29480        let and = simd_and(a.as_i64x4(), b.as_i64x4());
29481        transmute(simd_select_bitmask(k, and, i64x4::ZERO))
29482    }
29483}
29484
29485/// Compute the bitwise AND of packed 64-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29486///
29487/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_and_epi64&expand=275)
29488#[inline]
29489#[target_feature(enable = "avx512f,avx512vl")]
29490#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29491#[cfg_attr(test, assert_instr(vpandq))]
29492#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29493pub const fn _mm_mask_and_epi64(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
29494    unsafe {
29495        let and = simd_and(a.as_i64x2(), b.as_i64x2());
29496        transmute(simd_select_bitmask(k, and, src.as_i64x2()))
29497    }
29498}
29499
29500/// Compute the bitwise AND of packed 64-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29501///
29502/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_and_epi64&expand=276)
29503#[inline]
29504#[target_feature(enable = "avx512f,avx512vl")]
29505#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29506#[cfg_attr(test, assert_instr(vpandq))]
29507#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29508pub const fn _mm_maskz_and_epi64(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
29509    unsafe {
29510        let and = simd_and(a.as_i64x2(), b.as_i64x2());
29511        transmute(simd_select_bitmask(k, and, i64x2::ZERO))
29512    }
29513}
29514
29515/// Compute the bitwise AND of 512 bits (representing integer data) in a and b, and store the result in dst.
29516///
29517/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_and_si512&expand=302)
29518#[inline]
29519#[target_feature(enable = "avx512f")]
29520#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29521#[cfg_attr(test, assert_instr(vpandq))]
29522#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29523pub const fn _mm512_and_si512(a: __m512i, b: __m512i) -> __m512i {
29524    unsafe { transmute(simd_and(a.as_i32x16(), b.as_i32x16())) }
29525}
29526
29527/// Compute the bitwise OR of packed 32-bit integers in a and b, and store the results in dst.
29528///
29529/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_or_epi32&expand=4042)
29530#[inline]
29531#[target_feature(enable = "avx512f")]
29532#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29533#[cfg_attr(test, assert_instr(vporq))]
29534#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29535pub const fn _mm512_or_epi32(a: __m512i, b: __m512i) -> __m512i {
29536    unsafe { transmute(simd_or(a.as_i32x16(), b.as_i32x16())) }
29537}
29538
29539/// Compute the bitwise OR of packed 32-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29540///
29541/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_or_epi32&expand=4040)
29542#[inline]
29543#[target_feature(enable = "avx512f")]
29544#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29545#[cfg_attr(test, assert_instr(vpord))]
29546#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29547pub const fn _mm512_mask_or_epi32(src: __m512i, k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
29548    unsafe {
29549        let or = _mm512_or_epi32(a, b).as_i32x16();
29550        transmute(simd_select_bitmask(k, or, src.as_i32x16()))
29551    }
29552}
29553
29554/// Compute the bitwise OR of packed 32-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29555///
29556/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_or_epi32&expand=4041)
29557#[inline]
29558#[target_feature(enable = "avx512f")]
29559#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29560#[cfg_attr(test, assert_instr(vpord))]
29561#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29562pub const fn _mm512_maskz_or_epi32(k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
29563    unsafe {
29564        let or = _mm512_or_epi32(a, b).as_i32x16();
29565        transmute(simd_select_bitmask(k, or, i32x16::ZERO))
29566    }
29567}
29568
29569/// Compute the bitwise OR of packed 32-bit integers in a and b, and store the results in dst.
29570///
29571/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_or_epi32&expand=4039)
29572#[inline]
29573#[target_feature(enable = "avx512f,avx512vl")]
29574#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29575#[cfg_attr(test, assert_instr(vor))] //should be vpord
29576#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29577pub const fn _mm256_or_epi32(a: __m256i, b: __m256i) -> __m256i {
29578    unsafe { transmute(simd_or(a.as_i32x8(), b.as_i32x8())) }
29579}
29580
29581/// Compute the bitwise OR of packed 32-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29582///
29583/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_or_epi32&expand=4037)
29584#[inline]
29585#[target_feature(enable = "avx512f,avx512vl")]
29586#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29587#[cfg_attr(test, assert_instr(vpord))]
29588#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29589pub const fn _mm256_mask_or_epi32(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
29590    unsafe {
29591        let or = _mm256_or_epi32(a, b).as_i32x8();
29592        transmute(simd_select_bitmask(k, or, src.as_i32x8()))
29593    }
29594}
29595
29596/// Compute the bitwise OR of packed 32-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29597///
29598/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_or_epi32&expand=4038)
29599#[inline]
29600#[target_feature(enable = "avx512f,avx512vl")]
29601#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29602#[cfg_attr(test, assert_instr(vpord))]
29603#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29604pub const fn _mm256_maskz_or_epi32(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
29605    unsafe {
29606        let or = _mm256_or_epi32(a, b).as_i32x8();
29607        transmute(simd_select_bitmask(k, or, i32x8::ZERO))
29608    }
29609}
29610
29611/// Compute the bitwise OR of packed 32-bit integers in a and b, and store the results in dst.
29612///
29613/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_or_epi32&expand=4036)
29614#[inline]
29615#[target_feature(enable = "avx512f,avx512vl")]
29616#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29617#[cfg_attr(test, assert_instr(vor))] //should be vpord
29618#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29619pub const fn _mm_or_epi32(a: __m128i, b: __m128i) -> __m128i {
29620    unsafe { transmute(simd_or(a.as_i32x4(), b.as_i32x4())) }
29621}
29622
29623/// Compute the bitwise OR of packed 32-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29624///
29625/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_or_epi32&expand=4034)
29626#[inline]
29627#[target_feature(enable = "avx512f,avx512vl")]
29628#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29629#[cfg_attr(test, assert_instr(vpord))]
29630#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29631pub const fn _mm_mask_or_epi32(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
29632    unsafe {
29633        let or = _mm_or_epi32(a, b).as_i32x4();
29634        transmute(simd_select_bitmask(k, or, src.as_i32x4()))
29635    }
29636}
29637
29638/// Compute the bitwise OR of packed 32-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29639///
29640/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_or_epi32&expand=4035)
29641#[inline]
29642#[target_feature(enable = "avx512f,avx512vl")]
29643#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29644#[cfg_attr(test, assert_instr(vpord))]
29645#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29646pub const fn _mm_maskz_or_epi32(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
29647    unsafe {
29648        let or = _mm_or_epi32(a, b).as_i32x4();
29649        transmute(simd_select_bitmask(k, or, i32x4::ZERO))
29650    }
29651}
29652
29653/// Compute the bitwise OR of packed 64-bit integers in a and b, and store the resut in dst.
29654///
29655/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_or_epi64&expand=4051)
29656#[inline]
29657#[target_feature(enable = "avx512f")]
29658#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29659#[cfg_attr(test, assert_instr(vporq))]
29660#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29661pub const fn _mm512_or_epi64(a: __m512i, b: __m512i) -> __m512i {
29662    unsafe { transmute(simd_or(a.as_i64x8(), b.as_i64x8())) }
29663}
29664
29665/// Compute the bitwise OR of packed 64-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29666///
29667/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_or_epi64&expand=4049)
29668#[inline]
29669#[target_feature(enable = "avx512f")]
29670#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29671#[cfg_attr(test, assert_instr(vporq))]
29672#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29673pub const fn _mm512_mask_or_epi64(src: __m512i, k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
29674    unsafe {
29675        let or = _mm512_or_epi64(a, b).as_i64x8();
29676        transmute(simd_select_bitmask(k, or, src.as_i64x8()))
29677    }
29678}
29679
29680/// Compute the bitwise OR of packed 64-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29681///
29682/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_or_epi64&expand=4050)
29683#[inline]
29684#[target_feature(enable = "avx512f")]
29685#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29686#[cfg_attr(test, assert_instr(vporq))]
29687#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29688pub const fn _mm512_maskz_or_epi64(k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
29689    unsafe {
29690        let or = _mm512_or_epi64(a, b).as_i64x8();
29691        transmute(simd_select_bitmask(k, or, i64x8::ZERO))
29692    }
29693}
29694
29695/// Compute the bitwise OR of packed 64-bit integers in a and b, and store the resut in dst.
29696///
29697/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_or_epi64&expand=4048)
29698#[inline]
29699#[target_feature(enable = "avx512f,avx512vl")]
29700#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29701#[cfg_attr(test, assert_instr(vor))] //should be vporq
29702#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29703pub const fn _mm256_or_epi64(a: __m256i, b: __m256i) -> __m256i {
29704    unsafe { transmute(simd_or(a.as_i64x4(), b.as_i64x4())) }
29705}
29706
29707/// Compute the bitwise OR of packed 64-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29708///
29709/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_or_epi64&expand=4046)
29710#[inline]
29711#[target_feature(enable = "avx512f,avx512vl")]
29712#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29713#[cfg_attr(test, assert_instr(vporq))]
29714#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29715pub const fn _mm256_mask_or_epi64(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
29716    unsafe {
29717        let or = _mm256_or_epi64(a, b).as_i64x4();
29718        transmute(simd_select_bitmask(k, or, src.as_i64x4()))
29719    }
29720}
29721
29722/// Compute the bitwise OR of packed 64-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29723///
29724/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_or_epi64&expand=4047)
29725#[inline]
29726#[target_feature(enable = "avx512f,avx512vl")]
29727#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29728#[cfg_attr(test, assert_instr(vporq))]
29729#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29730pub const fn _mm256_maskz_or_epi64(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
29731    unsafe {
29732        let or = _mm256_or_epi64(a, b).as_i64x4();
29733        transmute(simd_select_bitmask(k, or, i64x4::ZERO))
29734    }
29735}
29736
29737/// Compute the bitwise OR of packed 64-bit integers in a and b, and store the resut in dst.
29738///
29739/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_or_epi64&expand=4045)
29740#[inline]
29741#[target_feature(enable = "avx512f,avx512vl")]
29742#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29743#[cfg_attr(test, assert_instr(vor))] //should be vporq
29744#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29745pub const fn _mm_or_epi64(a: __m128i, b: __m128i) -> __m128i {
29746    unsafe { transmute(simd_or(a.as_i64x2(), b.as_i64x2())) }
29747}
29748
29749/// Compute the bitwise OR of packed 64-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29750///
29751/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_or_epi64&expand=4043)
29752#[inline]
29753#[target_feature(enable = "avx512f,avx512vl")]
29754#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29755#[cfg_attr(test, assert_instr(vporq))]
29756#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29757pub const fn _mm_mask_or_epi64(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
29758    unsafe {
29759        let or = _mm_or_epi64(a, b).as_i64x2();
29760        transmute(simd_select_bitmask(k, or, src.as_i64x2()))
29761    }
29762}
29763
29764/// Compute the bitwise OR of packed 64-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29765///
29766/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_or_epi64&expand=4044)
29767#[inline]
29768#[target_feature(enable = "avx512f,avx512vl")]
29769#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29770#[cfg_attr(test, assert_instr(vporq))]
29771#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29772pub const fn _mm_maskz_or_epi64(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
29773    unsafe {
29774        let or = _mm_or_epi64(a, b).as_i64x2();
29775        transmute(simd_select_bitmask(k, or, i64x2::ZERO))
29776    }
29777}
29778
29779/// Compute the bitwise OR of 512 bits (representing integer data) in a and b, and store the result in dst.
29780///
29781/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_or_si512&expand=4072)
29782#[inline]
29783#[target_feature(enable = "avx512f")]
29784#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29785#[cfg_attr(test, assert_instr(vporq))]
29786#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29787pub const fn _mm512_or_si512(a: __m512i, b: __m512i) -> __m512i {
29788    unsafe { transmute(simd_or(a.as_i32x16(), b.as_i32x16())) }
29789}
29790
29791/// Compute the bitwise XOR of packed 32-bit integers in a and b, and store the results in dst.
29792///
29793/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_xor_epi32&expand=6142)
29794#[inline]
29795#[target_feature(enable = "avx512f")]
29796#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29797#[cfg_attr(test, assert_instr(vpxorq))] //should be vpxord
29798#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29799pub const fn _mm512_xor_epi32(a: __m512i, b: __m512i) -> __m512i {
29800    unsafe { transmute(simd_xor(a.as_i32x16(), b.as_i32x16())) }
29801}
29802
29803/// Compute the bitwise XOR of packed 32-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29804///
29805/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_xor_epi32&expand=6140)
29806#[inline]
29807#[target_feature(enable = "avx512f")]
29808#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29809#[cfg_attr(test, assert_instr(vpxord))]
29810#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29811pub const fn _mm512_mask_xor_epi32(src: __m512i, k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
29812    unsafe {
29813        let xor = _mm512_xor_epi32(a, b).as_i32x16();
29814        transmute(simd_select_bitmask(k, xor, src.as_i32x16()))
29815    }
29816}
29817
29818/// Compute the bitwise XOR of packed 32-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29819///
29820/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_xor_epi32&expand=6141)
29821#[inline]
29822#[target_feature(enable = "avx512f")]
29823#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29824#[cfg_attr(test, assert_instr(vpxord))]
29825#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29826pub const fn _mm512_maskz_xor_epi32(k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
29827    unsafe {
29828        let xor = _mm512_xor_epi32(a, b).as_i32x16();
29829        transmute(simd_select_bitmask(k, xor, i32x16::ZERO))
29830    }
29831}
29832
29833/// Compute the bitwise XOR of packed 32-bit integers in a and b, and store the results in dst.
29834///
29835/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_xor_epi32&expand=6139)
29836#[inline]
29837#[target_feature(enable = "avx512f,avx512vl")]
29838#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29839#[cfg_attr(test, assert_instr(vxor))] //should be vpxord
29840#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29841pub const fn _mm256_xor_epi32(a: __m256i, b: __m256i) -> __m256i {
29842    unsafe { transmute(simd_xor(a.as_i32x8(), b.as_i32x8())) }
29843}
29844
29845/// Compute the bitwise XOR of packed 32-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29846///
29847/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_xor_epi32&expand=6137)
29848#[inline]
29849#[target_feature(enable = "avx512f,avx512vl")]
29850#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29851#[cfg_attr(test, assert_instr(vpxord))]
29852#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29853pub const fn _mm256_mask_xor_epi32(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
29854    unsafe {
29855        let xor = _mm256_xor_epi32(a, b).as_i32x8();
29856        transmute(simd_select_bitmask(k, xor, src.as_i32x8()))
29857    }
29858}
29859
29860/// Compute the bitwise XOR of packed 32-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29861///
29862/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_xor_epi32&expand=6138)
29863#[inline]
29864#[target_feature(enable = "avx512f,avx512vl")]
29865#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29866#[cfg_attr(test, assert_instr(vpxord))]
29867#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29868pub const fn _mm256_maskz_xor_epi32(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
29869    unsafe {
29870        let xor = _mm256_xor_epi32(a, b).as_i32x8();
29871        transmute(simd_select_bitmask(k, xor, i32x8::ZERO))
29872    }
29873}
29874
29875/// Compute the bitwise XOR of packed 32-bit integers in a and b, and store the results in dst.
29876///
29877/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_xor_epi32&expand=6136)
29878#[inline]
29879#[target_feature(enable = "avx512f,avx512vl")]
29880#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29881#[cfg_attr(test, assert_instr(vxor))] //should be vpxord
29882#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29883pub const fn _mm_xor_epi32(a: __m128i, b: __m128i) -> __m128i {
29884    unsafe { transmute(simd_xor(a.as_i32x4(), b.as_i32x4())) }
29885}
29886
29887/// Compute the bitwise XOR of packed 32-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29888///
29889/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_xor_epi32&expand=6134)
29890#[inline]
29891#[target_feature(enable = "avx512f,avx512vl")]
29892#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29893#[cfg_attr(test, assert_instr(vpxord))]
29894#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29895pub const fn _mm_mask_xor_epi32(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
29896    unsafe {
29897        let xor = _mm_xor_epi32(a, b).as_i32x4();
29898        transmute(simd_select_bitmask(k, xor, src.as_i32x4()))
29899    }
29900}
29901
29902/// Compute the bitwise XOR of packed 32-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29903///
29904/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_xor_epi32&expand=6135)
29905#[inline]
29906#[target_feature(enable = "avx512f,avx512vl")]
29907#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29908#[cfg_attr(test, assert_instr(vpxord))]
29909#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29910pub const fn _mm_maskz_xor_epi32(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
29911    unsafe {
29912        let xor = _mm_xor_epi32(a, b).as_i32x4();
29913        transmute(simd_select_bitmask(k, xor, i32x4::ZERO))
29914    }
29915}
29916
29917/// Compute the bitwise XOR of packed 64-bit integers in a and b, and store the results in dst.
29918///
29919/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_xor_epi64&expand=6151)
29920#[inline]
29921#[target_feature(enable = "avx512f")]
29922#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29923#[cfg_attr(test, assert_instr(vpxorq))]
29924#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29925pub const fn _mm512_xor_epi64(a: __m512i, b: __m512i) -> __m512i {
29926    unsafe { transmute(simd_xor(a.as_i64x8(), b.as_i64x8())) }
29927}
29928
29929/// Compute the bitwise XOR of packed 64-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29930///
29931/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_xor_epi64&expand=6149)
29932#[inline]
29933#[target_feature(enable = "avx512f")]
29934#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29935#[cfg_attr(test, assert_instr(vpxorq))]
29936#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29937pub const fn _mm512_mask_xor_epi64(src: __m512i, k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
29938    unsafe {
29939        let xor = _mm512_xor_epi64(a, b).as_i64x8();
29940        transmute(simd_select_bitmask(k, xor, src.as_i64x8()))
29941    }
29942}
29943
29944/// Compute the bitwise XOR of packed 64-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29945///
29946/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_xor_epi64&expand=6150)
29947#[inline]
29948#[target_feature(enable = "avx512f")]
29949#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29950#[cfg_attr(test, assert_instr(vpxorq))]
29951#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29952pub const fn _mm512_maskz_xor_epi64(k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
29953    unsafe {
29954        let xor = _mm512_xor_epi64(a, b).as_i64x8();
29955        transmute(simd_select_bitmask(k, xor, i64x8::ZERO))
29956    }
29957}
29958
29959/// Compute the bitwise XOR of packed 64-bit integers in a and b, and store the results in dst.
29960///
29961/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_xor_epi64&expand=6148)
29962#[inline]
29963#[target_feature(enable = "avx512f,avx512vl")]
29964#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29965#[cfg_attr(test, assert_instr(vxor))] //should be vpxorq
29966#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29967pub const fn _mm256_xor_epi64(a: __m256i, b: __m256i) -> __m256i {
29968    unsafe { transmute(simd_xor(a.as_i64x4(), b.as_i64x4())) }
29969}
29970
29971/// Compute the bitwise XOR of packed 64-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
29972///
29973/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_xor_epi64&expand=6146)
29974#[inline]
29975#[target_feature(enable = "avx512f,avx512vl")]
29976#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29977#[cfg_attr(test, assert_instr(vpxorq))]
29978#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29979pub const fn _mm256_mask_xor_epi64(src: __m256i, k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
29980    unsafe {
29981        let xor = _mm256_xor_epi64(a, b).as_i64x4();
29982        transmute(simd_select_bitmask(k, xor, src.as_i64x4()))
29983    }
29984}
29985
29986/// Compute the bitwise XOR of packed 64-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
29987///
29988/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_xor_epi64&expand=6147)
29989#[inline]
29990#[target_feature(enable = "avx512f,avx512vl")]
29991#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
29992#[cfg_attr(test, assert_instr(vpxorq))]
29993#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
29994pub const fn _mm256_maskz_xor_epi64(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
29995    unsafe {
29996        let xor = _mm256_xor_epi64(a, b).as_i64x4();
29997        transmute(simd_select_bitmask(k, xor, i64x4::ZERO))
29998    }
29999}
30000
30001/// Compute the bitwise XOR of packed 64-bit integers in a and b, and store the results in dst.
30002///
30003/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_xor_epi64&expand=6145)
30004#[inline]
30005#[target_feature(enable = "avx512f,avx512vl")]
30006#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30007#[cfg_attr(test, assert_instr(vxor))] //should be vpxorq
30008#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30009pub const fn _mm_xor_epi64(a: __m128i, b: __m128i) -> __m128i {
30010    unsafe { transmute(simd_xor(a.as_i64x2(), b.as_i64x2())) }
30011}
30012
30013/// Compute the bitwise XOR of packed 64-bit integers in a and b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
30014///
30015/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_xor_epi64&expand=6143)
30016#[inline]
30017#[target_feature(enable = "avx512f,avx512vl")]
30018#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30019#[cfg_attr(test, assert_instr(vpxorq))]
30020#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30021pub const fn _mm_mask_xor_epi64(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
30022    unsafe {
30023        let xor = _mm_xor_epi64(a, b).as_i64x2();
30024        transmute(simd_select_bitmask(k, xor, src.as_i64x2()))
30025    }
30026}
30027
30028/// Compute the bitwise XOR of packed 64-bit integers in a and b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
30029///
30030/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_xor_epi64&expand=6144)
30031#[inline]
30032#[target_feature(enable = "avx512f,avx512vl")]
30033#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30034#[cfg_attr(test, assert_instr(vpxorq))]
30035#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30036pub const fn _mm_maskz_xor_epi64(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
30037    unsafe {
30038        let xor = _mm_xor_epi64(a, b).as_i64x2();
30039        transmute(simd_select_bitmask(k, xor, i64x2::ZERO))
30040    }
30041}
30042
30043/// Compute the bitwise XOR of 512 bits (representing integer data) in a and b, and store the result in dst.
30044///
30045/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_xor_si512&expand=6172)
30046#[inline]
30047#[target_feature(enable = "avx512f")]
30048#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30049#[cfg_attr(test, assert_instr(vpxorq))]
30050#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30051pub const fn _mm512_xor_si512(a: __m512i, b: __m512i) -> __m512i {
30052    unsafe { transmute(simd_xor(a.as_i32x16(), b.as_i32x16())) }
30053}
30054
30055/// Compute the bitwise NOT of packed 32-bit integers in a and then AND with b, and store the results in dst.
30056///
30057/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_andnot_epi32&expand=310)
30058#[inline]
30059#[target_feature(enable = "avx512f")]
30060#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30061#[cfg_attr(test, assert_instr(vpandnq))] //should be vpandnd
30062#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30063pub const fn _mm512_andnot_epi32(a: __m512i, b: __m512i) -> __m512i {
30064    _mm512_and_epi32(_mm512_xor_epi32(a, _mm512_set1_epi32(u32::MAX as i32)), b)
30065}
30066
30067/// Compute the bitwise NOT of packed 32-bit integers in a and then AND with b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
30068///
30069/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_andnot_epi32&expand=311)
30070#[inline]
30071#[target_feature(enable = "avx512f")]
30072#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30073#[cfg_attr(test, assert_instr(vpandnd))]
30074#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30075pub const fn _mm512_mask_andnot_epi32(
30076    src: __m512i,
30077    k: __mmask16,
30078    a: __m512i,
30079    b: __m512i,
30080) -> __m512i {
30081    unsafe {
30082        let andnot = _mm512_andnot_epi32(a, b).as_i32x16();
30083        transmute(simd_select_bitmask(k, andnot, src.as_i32x16()))
30084    }
30085}
30086
30087/// Compute the bitwise NOT of packed 32-bit integers in a and then AND with b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
30088///
30089/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_andnot_epi32&expand=312)
30090#[inline]
30091#[target_feature(enable = "avx512f")]
30092#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30093#[cfg_attr(test, assert_instr(vpandnd))]
30094#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30095pub const fn _mm512_maskz_andnot_epi32(k: __mmask16, a: __m512i, b: __m512i) -> __m512i {
30096    unsafe {
30097        let andnot = _mm512_andnot_epi32(a, b).as_i32x16();
30098        transmute(simd_select_bitmask(k, andnot, i32x16::ZERO))
30099    }
30100}
30101
30102/// Compute the bitwise NOT of packed 32-bit integers in a and then AND with b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
30103///
30104/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_andnot_epi32&expand=308)
30105#[inline]
30106#[target_feature(enable = "avx512f,avx512vl")]
30107#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30108#[cfg_attr(test, assert_instr(vpandnd))]
30109#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30110pub const fn _mm256_mask_andnot_epi32(
30111    src: __m256i,
30112    k: __mmask8,
30113    a: __m256i,
30114    b: __m256i,
30115) -> __m256i {
30116    unsafe {
30117        let not = _mm256_xor_epi32(a, _mm256_set1_epi32(u32::MAX as i32));
30118        let andnot = simd_and(not.as_i32x8(), b.as_i32x8());
30119        transmute(simd_select_bitmask(k, andnot, src.as_i32x8()))
30120    }
30121}
30122
30123/// Compute the bitwise NOT of packed 32-bit integers in a and then AND with b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
30124///
30125/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_andnot_epi32&expand=309)
30126#[inline]
30127#[target_feature(enable = "avx512f,avx512vl")]
30128#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30129#[cfg_attr(test, assert_instr(vpandnd))]
30130#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30131pub const fn _mm256_maskz_andnot_epi32(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
30132    unsafe {
30133        let not = _mm256_xor_epi32(a, _mm256_set1_epi32(u32::MAX as i32));
30134        let andnot = simd_and(not.as_i32x8(), b.as_i32x8());
30135        transmute(simd_select_bitmask(k, andnot, i32x8::ZERO))
30136    }
30137}
30138
30139/// Compute the bitwise NOT of packed 32-bit integers in a and then AND with b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
30140///
30141/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_andnot_epi32&expand=306)
30142#[inline]
30143#[target_feature(enable = "avx512f,avx512vl")]
30144#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30145#[cfg_attr(test, assert_instr(vpandnd))]
30146#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30147pub const fn _mm_mask_andnot_epi32(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
30148    unsafe {
30149        let not = _mm_xor_epi32(a, _mm_set1_epi32(u32::MAX as i32));
30150        let andnot = simd_and(not.as_i32x4(), b.as_i32x4());
30151        transmute(simd_select_bitmask(k, andnot, src.as_i32x4()))
30152    }
30153}
30154
30155/// Compute the bitwise NOT of packed 32-bit integers in a and then AND with b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
30156///
30157/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_andnot_epi32&expand=307)
30158#[inline]
30159#[target_feature(enable = "avx512f,avx512vl")]
30160#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30161#[cfg_attr(test, assert_instr(vpandnd))]
30162#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30163pub const fn _mm_maskz_andnot_epi32(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
30164    unsafe {
30165        let not = _mm_xor_epi32(a, _mm_set1_epi32(u32::MAX as i32));
30166        let andnot = simd_and(not.as_i32x4(), b.as_i32x4());
30167        transmute(simd_select_bitmask(k, andnot, i32x4::ZERO))
30168    }
30169}
30170
30171/// Compute the bitwise NOT of 512 bits (composed of packed 64-bit integers) in a and then AND with b, and store the results in dst.
30172///
30173/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_andnot_epi64&expand=317)
30174#[inline]
30175#[target_feature(enable = "avx512f")]
30176#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30177#[cfg_attr(test, assert_instr(vpandnq))] //should be vpandnd
30178#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30179pub const fn _mm512_andnot_epi64(a: __m512i, b: __m512i) -> __m512i {
30180    _mm512_and_epi64(_mm512_xor_epi64(a, _mm512_set1_epi64(u64::MAX as i64)), b)
30181}
30182
30183/// Compute the bitwise NOT of packed 64-bit integers in a and then AND with b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
30184///
30185/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_andnot_epi64&expand=318)
30186#[inline]
30187#[target_feature(enable = "avx512f")]
30188#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30189#[cfg_attr(test, assert_instr(vpandnq))]
30190#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30191pub const fn _mm512_mask_andnot_epi64(
30192    src: __m512i,
30193    k: __mmask8,
30194    a: __m512i,
30195    b: __m512i,
30196) -> __m512i {
30197    unsafe {
30198        let andnot = _mm512_andnot_epi64(a, b).as_i64x8();
30199        transmute(simd_select_bitmask(k, andnot, src.as_i64x8()))
30200    }
30201}
30202
30203/// Compute the bitwise NOT of packed 64-bit integers in a and then AND with b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
30204///
30205/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_andnot_epi64&expand=319)
30206#[inline]
30207#[target_feature(enable = "avx512f")]
30208#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30209#[cfg_attr(test, assert_instr(vpandnq))]
30210#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30211pub const fn _mm512_maskz_andnot_epi64(k: __mmask8, a: __m512i, b: __m512i) -> __m512i {
30212    unsafe {
30213        let andnot = _mm512_andnot_epi64(a, b).as_i64x8();
30214        transmute(simd_select_bitmask(k, andnot, i64x8::ZERO))
30215    }
30216}
30217
30218/// Compute the bitwise NOT of packed 64-bit integers in a and then AND with b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
30219///
30220/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_andnot_epi64&expand=315)
30221#[inline]
30222#[target_feature(enable = "avx512f,avx512vl")]
30223#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30224#[cfg_attr(test, assert_instr(vpandnq))]
30225#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30226pub const fn _mm256_mask_andnot_epi64(
30227    src: __m256i,
30228    k: __mmask8,
30229    a: __m256i,
30230    b: __m256i,
30231) -> __m256i {
30232    unsafe {
30233        let not = _mm256_xor_epi64(a, _mm256_set1_epi64x(u64::MAX as i64));
30234        let andnot = simd_and(not.as_i64x4(), b.as_i64x4());
30235        transmute(simd_select_bitmask(k, andnot, src.as_i64x4()))
30236    }
30237}
30238
30239/// Compute the bitwise NOT of packed 64-bit integers in a and then AND with b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
30240///
30241/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_andnot_epi64&expand=316)
30242#[inline]
30243#[target_feature(enable = "avx512f,avx512vl")]
30244#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30245#[cfg_attr(test, assert_instr(vpandnq))]
30246#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30247pub const fn _mm256_maskz_andnot_epi64(k: __mmask8, a: __m256i, b: __m256i) -> __m256i {
30248    unsafe {
30249        let not = _mm256_xor_epi64(a, _mm256_set1_epi64x(u64::MAX as i64));
30250        let andnot = simd_and(not.as_i64x4(), b.as_i64x4());
30251        transmute(simd_select_bitmask(k, andnot, i64x4::ZERO))
30252    }
30253}
30254
30255/// Compute the bitwise NOT of packed 64-bit integers in a and then AND with b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
30256///
30257/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_andnot_epi64&expand=313)
30258#[inline]
30259#[target_feature(enable = "avx512f,avx512vl")]
30260#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30261#[cfg_attr(test, assert_instr(vpandnq))]
30262#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30263pub const fn _mm_mask_andnot_epi64(src: __m128i, k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
30264    unsafe {
30265        let not = _mm_xor_epi64(a, _mm_set1_epi64x(u64::MAX as i64));
30266        let andnot = simd_and(not.as_i64x2(), b.as_i64x2());
30267        transmute(simd_select_bitmask(k, andnot, src.as_i64x2()))
30268    }
30269}
30270
30271/// Compute the bitwise NOT of packed 64-bit integers in a and then AND with b, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
30272///
30273/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_andnot_epi64&expand=314)
30274#[inline]
30275#[target_feature(enable = "avx512f,avx512vl")]
30276#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30277#[cfg_attr(test, assert_instr(vpandnq))]
30278#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30279pub const fn _mm_maskz_andnot_epi64(k: __mmask8, a: __m128i, b: __m128i) -> __m128i {
30280    unsafe {
30281        let not = _mm_xor_epi64(a, _mm_set1_epi64x(u64::MAX as i64));
30282        let andnot = simd_and(not.as_i64x2(), b.as_i64x2());
30283        transmute(simd_select_bitmask(k, andnot, i64x2::ZERO))
30284    }
30285}
30286
30287/// Compute the bitwise NOT of 512 bits (representing integer data) in a and then AND with b, and store the result in dst.
30288///
30289/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_andnot_si512&expand=340)
30290#[inline]
30291#[target_feature(enable = "avx512f")]
30292#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30293#[cfg_attr(test, assert_instr(vpandnq))]
30294#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30295pub const fn _mm512_andnot_si512(a: __m512i, b: __m512i) -> __m512i {
30296    _mm512_and_epi64(_mm512_xor_epi64(a, _mm512_set1_epi64(u64::MAX as i64)), b)
30297}
30298
30299/// Convert 16-bit mask a into an integer value, and store the result in dst.
30300///
30301/// [Intel's Documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_cvtmask16_u32)
30302#[inline]
30303#[target_feature(enable = "avx512f")]
30304#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30305#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30306pub const fn _cvtmask16_u32(a: __mmask16) -> u32 {
30307    a as u32
30308}
30309
30310/// Convert 32-bit integer value a to an 16-bit mask and store the result in dst.
30311///
30312/// [Intel's Documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_cvtu32_mask16)
30313#[inline]
30314#[target_feature(enable = "avx512f")]
30315#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30316#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30317pub const fn _cvtu32_mask16(a: u32) -> __mmask16 {
30318    a as __mmask16
30319}
30320
30321/// Compute the bitwise AND of 16-bit masks a and b, and store the result in k.
30322///
30323/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=kand_mask16&expand=3212)
30324#[inline]
30325#[target_feature(enable = "avx512f")]
30326#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30327#[cfg_attr(test, assert_instr(and))] // generate normal and code instead of kandw
30328#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30329pub const fn _kand_mask16(a: __mmask16, b: __mmask16) -> __mmask16 {
30330    a & b
30331}
30332
30333/// Compute the bitwise AND of 16-bit masks a and b, and store the result in k.
30334///
30335/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_kand&expand=3210)
30336#[inline]
30337#[target_feature(enable = "avx512f")]
30338#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30339#[cfg_attr(test, assert_instr(and))] // generate normal and code instead of kandw
30340#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30341pub const fn _mm512_kand(a: __mmask16, b: __mmask16) -> __mmask16 {
30342    a & b
30343}
30344
30345/// Compute the bitwise OR of 16-bit masks a and b, and store the result in k.
30346///
30347/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=kor_mask16&expand=3239)
30348#[inline]
30349#[target_feature(enable = "avx512f")]
30350#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30351#[cfg_attr(test, assert_instr(or))] // generate normal or code instead of korw
30352#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30353pub const fn _kor_mask16(a: __mmask16, b: __mmask16) -> __mmask16 {
30354    a | b
30355}
30356
30357/// Compute the bitwise OR of 16-bit masks a and b, and store the result in k.
30358///
30359/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_kor&expand=3237)
30360#[inline]
30361#[target_feature(enable = "avx512f")]
30362#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30363#[cfg_attr(test, assert_instr(or))] // generate normal or code instead of korw
30364#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30365pub const fn _mm512_kor(a: __mmask16, b: __mmask16) -> __mmask16 {
30366    a | b
30367}
30368
30369/// Compute the bitwise XOR of 16-bit masks a and b, and store the result in k.
30370///
30371/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=kxor_mask16&expand=3291)
30372#[inline]
30373#[target_feature(enable = "avx512f")]
30374#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30375#[cfg_attr(test, assert_instr(xor))] // generate normal xor code instead of kxorw
30376#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30377pub const fn _kxor_mask16(a: __mmask16, b: __mmask16) -> __mmask16 {
30378    a ^ b
30379}
30380
30381/// Compute the bitwise XOR of 16-bit masks a and b, and store the result in k.
30382///
30383/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_kxor&expand=3289)
30384#[inline]
30385#[target_feature(enable = "avx512f")]
30386#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30387#[cfg_attr(test, assert_instr(xor))] // generate normal xor code instead of kxorw
30388#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30389pub const fn _mm512_kxor(a: __mmask16, b: __mmask16) -> __mmask16 {
30390    a ^ b
30391}
30392
30393/// Compute the bitwise NOT of 16-bit mask a, and store the result in k.
30394///
30395/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=knot_mask16&expand=3233)
30396#[inline]
30397#[target_feature(enable = "avx512f")]
30398#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30399#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30400pub const fn _knot_mask16(a: __mmask16) -> __mmask16 {
30401    a ^ 0b11111111_11111111
30402}
30403
30404/// Compute the bitwise NOT of 16-bit mask a, and store the result in k.
30405///
30406/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_knot&expand=3231)
30407#[inline]
30408#[target_feature(enable = "avx512f")]
30409#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30410#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30411pub const fn _mm512_knot(a: __mmask16) -> __mmask16 {
30412    a ^ 0b11111111_11111111
30413}
30414
30415/// Compute the bitwise NOT of 16-bit masks a and then AND with b, and store the result in k.
30416///
30417/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=kandn_mask16&expand=3218)
30418#[inline]
30419#[target_feature(enable = "avx512f")]
30420#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30421#[cfg_attr(test, assert_instr(not))] // generate normal and, not code instead of kandnw
30422#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30423pub const fn _kandn_mask16(a: __mmask16, b: __mmask16) -> __mmask16 {
30424    _mm512_kand(_mm512_knot(a), b)
30425}
30426
30427/// Compute the bitwise NOT of 16-bit masks a and then AND with b, and store the result in k.
30428///
30429/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_kandn&expand=3216)
30430#[inline]
30431#[target_feature(enable = "avx512f")]
30432#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30433#[cfg_attr(test, assert_instr(not))] // generate normal and code instead of kandw
30434#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30435pub const fn _mm512_kandn(a: __mmask16, b: __mmask16) -> __mmask16 {
30436    _mm512_kand(_mm512_knot(a), b)
30437}
30438
30439/// Compute the bitwise XNOR of 16-bit masks a and b, and store the result in k.
30440///
30441/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=kxnor_mask16&expand=3285)
30442#[inline]
30443#[target_feature(enable = "avx512f")]
30444#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30445#[cfg_attr(test, assert_instr(xor))] // generate normal xor, not code instead of kxnorw
30446#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30447pub const fn _kxnor_mask16(a: __mmask16, b: __mmask16) -> __mmask16 {
30448    _mm512_knot(_mm512_kxor(a, b))
30449}
30450
30451/// Compute the bitwise XNOR of 16-bit masks a and b, and store the result in k.
30452///
30453/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_kxnor&expand=3283)
30454#[inline]
30455#[target_feature(enable = "avx512f")]
30456#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30457#[cfg_attr(test, assert_instr(xor))] // generate normal and code instead of kandw
30458#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30459pub const fn _mm512_kxnor(a: __mmask16, b: __mmask16) -> __mmask16 {
30460    _mm512_knot(_mm512_kxor(a, b))
30461}
30462
30463/// Compute the bitwise OR of 16-bit masks a and b. If the result is all zeros, store 1 in dst, otherwise
30464/// store 0 in dst. If the result is all ones, store 1 in all_ones, otherwise store 0 in all_ones.
30465///
30466/// [Intel's Documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_kortest_mask16_u8)
30467#[inline]
30468#[target_feature(enable = "avx512f")]
30469#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30470#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30471pub const unsafe fn _kortest_mask16_u8(a: __mmask16, b: __mmask16, all_ones: *mut u8) -> u8 {
30472    let tmp = _kor_mask16(a, b);
30473    *all_ones = (tmp == 0xffff) as u8;
30474    (tmp == 0) as u8
30475}
30476
30477/// Compute the bitwise OR of 16-bit masks a and b. If the result is all ones, store 1 in dst, otherwise
30478/// store 0 in dst.
30479///
30480/// [Intel's Documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_kortestc_mask16_u8)
30481#[inline]
30482#[target_feature(enable = "avx512f")]
30483#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30484#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30485pub const fn _kortestc_mask16_u8(a: __mmask16, b: __mmask16) -> u8 {
30486    (_kor_mask16(a, b) == 0xffff) as u8
30487}
30488
30489/// Compute the bitwise OR of 16-bit masks a and b. If the result is all zeros, store 1 in dst, otherwise
30490/// store 0 in dst.
30491///
30492/// [Intel's Documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_kortestz_mask16_u8)
30493#[inline]
30494#[target_feature(enable = "avx512f")]
30495#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30496#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30497pub const fn _kortestz_mask16_u8(a: __mmask16, b: __mmask16) -> u8 {
30498    (_kor_mask16(a, b) == 0) as u8
30499}
30500
30501/// Shift 16-bit mask a left by count bits while shifting in zeros, and store the result in dst.
30502///
30503/// [Intel's Documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_kshiftli_mask16)
30504#[inline]
30505#[target_feature(enable = "avx512f")]
30506#[rustc_legacy_const_generics(1)]
30507#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30508#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30509pub const fn _kshiftli_mask16<const COUNT: u32>(a: __mmask16) -> __mmask16 {
30510    a.unbounded_shl(COUNT)
30511}
30512
30513/// Shift 16-bit mask a right by count bits while shifting in zeros, and store the result in dst.
30514///
30515/// [Intel's Documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_kshiftri_mask16)
30516#[inline]
30517#[target_feature(enable = "avx512f")]
30518#[rustc_legacy_const_generics(1)]
30519#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30520#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30521pub const fn _kshiftri_mask16<const COUNT: u32>(a: __mmask16) -> __mmask16 {
30522    a.unbounded_shr(COUNT)
30523}
30524
30525/// Load 16-bit mask from memory
30526///
30527/// [Intel's Documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_load_mask16)
30528#[inline]
30529#[target_feature(enable = "avx512f")]
30530#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30531#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30532pub const unsafe fn _load_mask16(mem_addr: *const __mmask16) -> __mmask16 {
30533    *mem_addr
30534}
30535
30536/// Store 16-bit mask to memory
30537///
30538/// [Intel's Documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_store_mask16)
30539#[inline]
30540#[target_feature(enable = "avx512f")]
30541#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30542#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30543pub const unsafe fn _store_mask16(mem_addr: *mut __mmask16, a: __mmask16) {
30544    *mem_addr = a;
30545}
30546
30547/// Copy 16-bit mask a to k.
30548///
30549/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm512_kmov&expand=3228)
30550#[inline]
30551#[target_feature(enable = "avx512f")]
30552#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30553#[cfg_attr(test, assert_instr(mov))] // generate normal and code instead of kmovw
30554#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30555pub const fn _mm512_kmov(a: __mmask16) -> __mmask16 {
30556    a
30557}
30558
30559/// Converts integer mask into bitmask, storing the result in dst.
30560///
30561/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_int2mask&expand=3189)
30562#[inline]
30563#[target_feature(enable = "avx512f")] // generate normal and code instead of kmovw
30564#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30565#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30566pub const fn _mm512_int2mask(mask: i32) -> __mmask16 {
30567    mask as u16
30568}
30569
30570/// Converts bit mask k1 into an integer value, storing the results in dst.
30571///
30572/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask2int&expand=3544)
30573#[inline]
30574#[target_feature(enable = "avx512f")]
30575#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30576#[cfg_attr(test, assert_instr(mov))] // generate normal and code instead of kmovw
30577#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30578pub const fn _mm512_mask2int(k1: __mmask16) -> i32 {
30579    k1 as i32
30580}
30581
30582/// Unpack and interleave 8 bits from masks a and b, and store the 16-bit result in k.
30583///
30584/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_kunpackb&expand=3280)
30585#[inline]
30586#[target_feature(enable = "avx512f")]
30587#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30588#[cfg_attr(test, assert_instr(mov))] // generate normal and code instead of kunpckbw
30589#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30590pub const fn _mm512_kunpackb(a: __mmask16, b: __mmask16) -> __mmask16 {
30591    ((a & 0xff) << 8) | (b & 0xff)
30592}
30593
30594/// Performs bitwise OR between k1 and k2, storing the result in dst. CF flag is set if dst consists of all 1's.
30595///
30596/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_kortestc&expand=3247)
30597#[inline]
30598#[target_feature(enable = "avx512f")]
30599#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30600#[cfg_attr(test, assert_instr(cmp))] // generate normal and code instead of kortestw
30601#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30602pub const fn _mm512_kortestc(a: __mmask16, b: __mmask16) -> i32 {
30603    let r = (a | b) == 0b11111111_11111111;
30604    r as i32
30605}
30606
30607/// Performs bitwise OR between k1 and k2, storing the result in dst. ZF flag is set if dst is 0.
30608///
30609/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_kortestz)
30610#[inline]
30611#[target_feature(enable = "avx512f")]
30612#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30613#[cfg_attr(test, assert_instr(xor))] // generate normal and code instead of kortestw
30614#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30615pub const fn _mm512_kortestz(a: __mmask16, b: __mmask16) -> i32 {
30616    let r = (a | b) == 0;
30617    r as i32
30618}
30619
30620/// Compute the bitwise AND of packed 32-bit integers in a and b, producing intermediate 32-bit values, and set the corresponding bit in result mask k if the intermediate value is non-zero.
30621///
30622/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_test_epi32_mask&expand=5890)
30623#[inline]
30624#[target_feature(enable = "avx512f")]
30625#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30626#[cfg_attr(test, assert_instr(vptestmd))]
30627#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30628pub const fn _mm512_test_epi32_mask(a: __m512i, b: __m512i) -> __mmask16 {
30629    let and = _mm512_and_epi32(a, b);
30630    let zero = _mm512_setzero_si512();
30631    _mm512_cmpneq_epi32_mask(and, zero)
30632}
30633
30634/// Compute the bitwise AND of packed 32-bit integers in a and b, producing intermediate 32-bit values, and set the corresponding bit in result mask k (subject to writemask k) if the intermediate value is non-zero.
30635///
30636/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_test_epi32_mask&expand=5889)
30637#[inline]
30638#[target_feature(enable = "avx512f")]
30639#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30640#[cfg_attr(test, assert_instr(vptestmd))]
30641#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30642pub const fn _mm512_mask_test_epi32_mask(k: __mmask16, a: __m512i, b: __m512i) -> __mmask16 {
30643    let and = _mm512_and_epi32(a, b);
30644    let zero = _mm512_setzero_si512();
30645    _mm512_mask_cmpneq_epi32_mask(k, and, zero)
30646}
30647
30648/// Compute the bitwise AND of packed 32-bit integers in a and b, producing intermediate 32-bit values, and set the corresponding bit in result mask k if the intermediate value is non-zero.
30649///
30650/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_test_epi32_mask&expand=5888)
30651#[inline]
30652#[target_feature(enable = "avx512f,avx512vl")]
30653#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30654#[cfg_attr(test, assert_instr(vptestmd))]
30655#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30656pub const fn _mm256_test_epi32_mask(a: __m256i, b: __m256i) -> __mmask8 {
30657    let and = _mm256_and_si256(a, b);
30658    let zero = _mm256_setzero_si256();
30659    _mm256_cmpneq_epi32_mask(and, zero)
30660}
30661
30662/// Compute the bitwise AND of packed 32-bit integers in a and b, producing intermediate 32-bit values, and set the corresponding bit in result mask k (subject to writemask k) if the intermediate value is non-zero.
30663///
30664/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_test_epi32_mask&expand=5887)
30665#[inline]
30666#[target_feature(enable = "avx512f,avx512vl")]
30667#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30668#[cfg_attr(test, assert_instr(vptestmd))]
30669#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30670pub const fn _mm256_mask_test_epi32_mask(k: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
30671    let and = _mm256_and_si256(a, b);
30672    let zero = _mm256_setzero_si256();
30673    _mm256_mask_cmpneq_epi32_mask(k, and, zero)
30674}
30675
30676/// Compute the bitwise AND of packed 32-bit integers in a and b, producing intermediate 32-bit values, and set the corresponding bit in result mask k if the intermediate value is non-zero.
30677///
30678/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_test_epi32_mask&expand=5886)
30679#[inline]
30680#[target_feature(enable = "avx512f,avx512vl")]
30681#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30682#[cfg_attr(test, assert_instr(vptestmd))]
30683#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30684pub const fn _mm_test_epi32_mask(a: __m128i, b: __m128i) -> __mmask8 {
30685    let and = _mm_and_si128(a, b);
30686    let zero = _mm_setzero_si128();
30687    _mm_cmpneq_epi32_mask(and, zero)
30688}
30689
30690/// Compute the bitwise AND of packed 32-bit integers in a and b, producing intermediate 32-bit values, and set the corresponding bit in result mask k (subject to writemask k) if the intermediate value is non-zero.
30691///
30692/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_test_epi32_mask&expand=5885)
30693#[inline]
30694#[target_feature(enable = "avx512f,avx512vl")]
30695#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30696#[cfg_attr(test, assert_instr(vptestmd))]
30697#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30698pub const fn _mm_mask_test_epi32_mask(k: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
30699    let and = _mm_and_si128(a, b);
30700    let zero = _mm_setzero_si128();
30701    _mm_mask_cmpneq_epi32_mask(k, and, zero)
30702}
30703
30704/// Compute the bitwise AND of packed 64-bit integers in a and b, producing intermediate 64-bit values, and set the corresponding bit in result mask k if the intermediate value is non-zero.
30705///
30706/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_test_epi64_mask&expand=5896)
30707#[inline]
30708#[target_feature(enable = "avx512f")]
30709#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30710#[cfg_attr(test, assert_instr(vptestmq))]
30711#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30712pub const fn _mm512_test_epi64_mask(a: __m512i, b: __m512i) -> __mmask8 {
30713    let and = _mm512_and_epi64(a, b);
30714    let zero = _mm512_setzero_si512();
30715    _mm512_cmpneq_epi64_mask(and, zero)
30716}
30717
30718/// Compute the bitwise AND of packed 64-bit integers in a and b, producing intermediate 64-bit values, and set the corresponding bit in result mask k (subject to writemask k) if the intermediate value is non-zero.
30719///
30720/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_test_epi64_mask&expand=5895)
30721#[inline]
30722#[target_feature(enable = "avx512f")]
30723#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30724#[cfg_attr(test, assert_instr(vptestmq))]
30725#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30726pub const fn _mm512_mask_test_epi64_mask(k: __mmask8, a: __m512i, b: __m512i) -> __mmask8 {
30727    let and = _mm512_and_epi64(a, b);
30728    let zero = _mm512_setzero_si512();
30729    _mm512_mask_cmpneq_epi64_mask(k, and, zero)
30730}
30731
30732/// Compute the bitwise AND of packed 64-bit integers in a and b, producing intermediate 64-bit values, and set the corresponding bit in result mask k if the intermediate value is non-zero.
30733///
30734/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_test_epi64_mask&expand=5894)
30735#[inline]
30736#[target_feature(enable = "avx512f,avx512vl")]
30737#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30738#[cfg_attr(test, assert_instr(vptestmq))]
30739#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30740pub const fn _mm256_test_epi64_mask(a: __m256i, b: __m256i) -> __mmask8 {
30741    let and = _mm256_and_si256(a, b);
30742    let zero = _mm256_setzero_si256();
30743    _mm256_cmpneq_epi64_mask(and, zero)
30744}
30745
30746/// Compute the bitwise AND of packed 64-bit integers in a and b, producing intermediate 64-bit values, and set the corresponding bit in result mask k (subject to writemask k) if the intermediate value is non-zero.
30747///
30748/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_test_epi64_mask&expand=5893)
30749#[inline]
30750#[target_feature(enable = "avx512f,avx512vl")]
30751#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30752#[cfg_attr(test, assert_instr(vptestmq))]
30753#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30754pub const fn _mm256_mask_test_epi64_mask(k: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
30755    let and = _mm256_and_si256(a, b);
30756    let zero = _mm256_setzero_si256();
30757    _mm256_mask_cmpneq_epi64_mask(k, and, zero)
30758}
30759
30760/// Compute the bitwise AND of packed 64-bit integers in a and b, producing intermediate 64-bit values, and set the corresponding bit in result mask k if the intermediate value is non-zero.
30761///
30762/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_test_epi64_mask&expand=5892)
30763#[inline]
30764#[target_feature(enable = "avx512f,avx512vl")]
30765#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30766#[cfg_attr(test, assert_instr(vptestmq))]
30767#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30768pub const fn _mm_test_epi64_mask(a: __m128i, b: __m128i) -> __mmask8 {
30769    let and = _mm_and_si128(a, b);
30770    let zero = _mm_setzero_si128();
30771    _mm_cmpneq_epi64_mask(and, zero)
30772}
30773
30774/// Compute the bitwise AND of packed 64-bit integers in a and b, producing intermediate 64-bit values, and set the corresponding bit in result mask k (subject to writemask k) if the intermediate value is non-zero.
30775///
30776/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_test_epi64_mask&expand=5891)
30777#[inline]
30778#[target_feature(enable = "avx512f,avx512vl")]
30779#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30780#[cfg_attr(test, assert_instr(vptestmq))]
30781#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30782pub const fn _mm_mask_test_epi64_mask(k: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
30783    let and = _mm_and_si128(a, b);
30784    let zero = _mm_setzero_si128();
30785    _mm_mask_cmpneq_epi64_mask(k, and, zero)
30786}
30787
30788/// Compute the bitwise NAND of packed 32-bit integers in a and b, producing intermediate 32-bit values, and set the corresponding bit in result mask k if the intermediate value is zero.
30789///
30790/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_testn_epi32_mask&expand=5921)
30791#[inline]
30792#[target_feature(enable = "avx512f")]
30793#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30794#[cfg_attr(test, assert_instr(vptestnmd))]
30795#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30796pub const fn _mm512_testn_epi32_mask(a: __m512i, b: __m512i) -> __mmask16 {
30797    let and = _mm512_and_epi32(a, b);
30798    let zero = _mm512_setzero_si512();
30799    _mm512_cmpeq_epi32_mask(and, zero)
30800}
30801
30802/// Compute the bitwise NAND of packed 32-bit integers in a and b, producing intermediate 32-bit values, and set the corresponding bit in result mask k (subject to writemask k) if the intermediate value is zero.
30803///
30804/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_testn_epi32_mask&expand=5920)
30805#[inline]
30806#[target_feature(enable = "avx512f")]
30807#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30808#[cfg_attr(test, assert_instr(vptestnmd))]
30809#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30810pub const fn _mm512_mask_testn_epi32_mask(k: __mmask16, a: __m512i, b: __m512i) -> __mmask16 {
30811    let and = _mm512_and_epi32(a, b);
30812    let zero = _mm512_setzero_si512();
30813    _mm512_mask_cmpeq_epi32_mask(k, and, zero)
30814}
30815
30816/// Compute the bitwise NAND of packed 32-bit integers in a and b, producing intermediate 32-bit values, and set the corresponding bit in result mask k if the intermediate value is zero.
30817///
30818/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_testn_epi32_mask&expand=5919)
30819#[inline]
30820#[target_feature(enable = "avx512f,avx512vl")]
30821#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30822#[cfg_attr(test, assert_instr(vptestnmd))]
30823#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30824pub const fn _mm256_testn_epi32_mask(a: __m256i, b: __m256i) -> __mmask8 {
30825    let and = _mm256_and_si256(a, b);
30826    let zero = _mm256_setzero_si256();
30827    _mm256_cmpeq_epi32_mask(and, zero)
30828}
30829
30830/// Compute the bitwise NAND of packed 32-bit integers in a and b, producing intermediate 32-bit values, and set the corresponding bit in result mask k (subject to writemask k) if the intermediate value is zero.
30831///
30832/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_testn_epi32_mask&expand=5918)
30833#[inline]
30834#[target_feature(enable = "avx512f,avx512vl")]
30835#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30836#[cfg_attr(test, assert_instr(vptestnmd))]
30837#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30838pub const fn _mm256_mask_testn_epi32_mask(k: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
30839    let and = _mm256_and_si256(a, b);
30840    let zero = _mm256_setzero_si256();
30841    _mm256_mask_cmpeq_epi32_mask(k, and, zero)
30842}
30843
30844/// Compute the bitwise NAND of packed 32-bit integers in a and b, producing intermediate 32-bit values, and set the corresponding bit in result mask k if the intermediate value is zero.
30845///
30846/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_testn_epi32_mask&expand=5917)
30847#[inline]
30848#[target_feature(enable = "avx512f,avx512vl")]
30849#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30850#[cfg_attr(test, assert_instr(vptestnmd))]
30851#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30852pub const fn _mm_testn_epi32_mask(a: __m128i, b: __m128i) -> __mmask8 {
30853    let and = _mm_and_si128(a, b);
30854    let zero = _mm_setzero_si128();
30855    _mm_cmpeq_epi32_mask(and, zero)
30856}
30857
30858/// Compute the bitwise NAND of packed 32-bit integers in a and b, producing intermediate 32-bit values, and set the corresponding bit in result mask k (subject to writemask k) if the intermediate value is zero.
30859///
30860/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_testn_epi32_mask&expand=5916)
30861#[inline]
30862#[target_feature(enable = "avx512f,avx512vl")]
30863#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30864#[cfg_attr(test, assert_instr(vptestnmd))]
30865#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30866pub const fn _mm_mask_testn_epi32_mask(k: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
30867    let and = _mm_and_si128(a, b);
30868    let zero = _mm_setzero_si128();
30869    _mm_mask_cmpeq_epi32_mask(k, and, zero)
30870}
30871
30872/// Compute the bitwise NAND of packed 64-bit integers in a and b, producing intermediate 64-bit values, and set the corresponding bit in result mask k if the intermediate value is zero.
30873///
30874/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_testn_epi64_mask&expand=5927)
30875#[inline]
30876#[target_feature(enable = "avx512f")]
30877#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30878#[cfg_attr(test, assert_instr(vptestnmq))]
30879#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30880pub const fn _mm512_testn_epi64_mask(a: __m512i, b: __m512i) -> __mmask8 {
30881    let and = _mm512_and_epi64(a, b);
30882    let zero = _mm512_setzero_si512();
30883    _mm512_cmpeq_epi64_mask(and, zero)
30884}
30885
30886/// Compute the bitwise NAND of packed 64-bit integers in a and b, producing intermediate 64-bit values, and set the corresponding bit in result mask k (subject to writemask k) if the intermediate value is zero.
30887///
30888/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_testn_epi64_mask&expand=5926)
30889#[inline]
30890#[target_feature(enable = "avx512f")]
30891#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30892#[cfg_attr(test, assert_instr(vptestnmq))]
30893#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30894pub const fn _mm512_mask_testn_epi64_mask(k: __mmask8, a: __m512i, b: __m512i) -> __mmask8 {
30895    let and = _mm512_and_epi64(a, b);
30896    let zero = _mm512_setzero_si512();
30897    _mm512_mask_cmpeq_epi64_mask(k, and, zero)
30898}
30899
30900/// Compute the bitwise NAND of packed 64-bit integers in a and b, producing intermediate 64-bit values, and set the corresponding bit in result mask k if the intermediate value is zero.
30901///
30902/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_testn_epi64_mask&expand=5925)
30903#[inline]
30904#[target_feature(enable = "avx512f,avx512vl")]
30905#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30906#[cfg_attr(test, assert_instr(vptestnmq))]
30907#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30908pub const fn _mm256_testn_epi64_mask(a: __m256i, b: __m256i) -> __mmask8 {
30909    let and = _mm256_and_si256(a, b);
30910    let zero = _mm256_setzero_si256();
30911    _mm256_cmpeq_epi64_mask(and, zero)
30912}
30913
30914/// Compute the bitwise NAND of packed 64-bit integers in a and b, producing intermediate 64-bit values, and set the corresponding bit in result mask k (subject to writemask k) if the intermediate value is zero.
30915///
30916/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_testn_epi64_mask&expand=5924)
30917#[inline]
30918#[target_feature(enable = "avx512f,avx512vl")]
30919#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30920#[cfg_attr(test, assert_instr(vptestnmq))]
30921#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30922pub const fn _mm256_mask_testn_epi64_mask(k: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
30923    let and = _mm256_and_si256(a, b);
30924    let zero = _mm256_setzero_si256();
30925    _mm256_mask_cmpeq_epi64_mask(k, and, zero)
30926}
30927
30928/// Compute the bitwise NAND of packed 64-bit integers in a and b, producing intermediate 64-bit values, and set the corresponding bit in result mask k if the intermediate value is zero.
30929///
30930/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_testn_epi64_mask&expand=5923)
30931#[inline]
30932#[target_feature(enable = "avx512f,avx512vl")]
30933#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30934#[cfg_attr(test, assert_instr(vptestnmq))]
30935#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30936pub const fn _mm_testn_epi64_mask(a: __m128i, b: __m128i) -> __mmask8 {
30937    let and = _mm_and_si128(a, b);
30938    let zero = _mm_setzero_si128();
30939    _mm_cmpeq_epi64_mask(and, zero)
30940}
30941
30942/// Compute the bitwise NAND of packed 64-bit integers in a and b, producing intermediate 64-bit values, and set the corresponding bit in result mask k (subject to writemask k) if the intermediate value is zero.
30943///
30944/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_testn_epi64_mask&expand=5922)
30945#[inline]
30946#[target_feature(enable = "avx512f,avx512vl")]
30947#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30948#[cfg_attr(test, assert_instr(vptestnmq))]
30949#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
30950pub const fn _mm_mask_testn_epi64_mask(k: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
30951    let and = _mm_and_si128(a, b);
30952    let zero = _mm_setzero_si128();
30953    _mm_mask_cmpeq_epi64_mask(k, and, zero)
30954}
30955
30956/// Store 512-bits (composed of 16 packed single-precision (32-bit) floating-point elements) from a into memory using a non-temporal memory hint. mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
30957///
30958/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_stream_ps&expand=5671)
30959///
30960/// # Safety of non-temporal stores
30961///
30962/// After using this intrinsic, but before any other access to the memory that this intrinsic
30963/// mutates, a call to [`_mm_sfence`] must be performed by the thread that used the intrinsic. In
30964/// particular, functions that call this intrinsic should generally call `_mm_sfence` before they
30965/// return.
30966///
30967/// See [`_mm_sfence`] for details.
30968#[inline]
30969#[target_feature(enable = "avx512f")]
30970#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30971#[cfg_attr(test, assert_instr(vmovntps))]
30972#[allow(clippy::cast_ptr_alignment)]
30973pub unsafe fn _mm512_stream_ps(mem_addr: *mut f32, a: __m512) {
30974    // see #1541, we should use inline asm to be sure, because LangRef isn't clear enough
30975    crate::arch::asm!(
30976        vps!("vmovntps", ",{a}"),
30977        p = in(reg) mem_addr,
30978        a = in(zmm_reg) a,
30979        options(nostack, preserves_flags),
30980    );
30981}
30982
30983/// Store 512-bits (composed of 8 packed double-precision (64-bit) floating-point elements) from a into memory using a non-temporal memory hint. mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
30984///
30985/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_stream_pd&expand=5667)
30986///
30987/// # Safety of non-temporal stores
30988///
30989/// After using this intrinsic, but before any other access to the memory that this intrinsic
30990/// mutates, a call to [`_mm_sfence`] must be performed by the thread that used the intrinsic. In
30991/// particular, functions that call this intrinsic should generally call `_mm_sfence` before they
30992/// return.
30993///
30994/// See [`_mm_sfence`] for details.
30995#[inline]
30996#[target_feature(enable = "avx512f")]
30997#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
30998#[cfg_attr(test, assert_instr(vmovntpd))]
30999#[allow(clippy::cast_ptr_alignment)]
31000pub unsafe fn _mm512_stream_pd(mem_addr: *mut f64, a: __m512d) {
31001    // see #1541, we should use inline asm to be sure, because LangRef isn't clear enough
31002    crate::arch::asm!(
31003        vps!("vmovntpd", ",{a}"),
31004        p = in(reg) mem_addr,
31005        a = in(zmm_reg) a,
31006        options(nostack, preserves_flags),
31007    );
31008}
31009
31010/// Store 512-bits of integer data from a into memory using a non-temporal memory hint. mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
31011///
31012/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_stream_si512&expand=5675)
31013///
31014/// # Safety of non-temporal stores
31015///
31016/// After using this intrinsic, but before any other access to the memory that this intrinsic
31017/// mutates, a call to [`_mm_sfence`] must be performed by the thread that used the intrinsic. In
31018/// particular, functions that call this intrinsic should generally call `_mm_sfence` before they
31019/// return.
31020///
31021/// See [`_mm_sfence`] for details.
31022#[inline]
31023#[target_feature(enable = "avx512f")]
31024#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31025#[cfg_attr(test, assert_instr(vmovntdq))]
31026#[allow(clippy::cast_ptr_alignment)]
31027pub unsafe fn _mm512_stream_si512(mem_addr: *mut __m512i, a: __m512i) {
31028    // see #1541, we should use inline asm to be sure, because LangRef isn't clear enough
31029    crate::arch::asm!(
31030        vps!("vmovntdq", ",{a}"),
31031        p = in(reg) mem_addr,
31032        a = in(zmm_reg) a,
31033        options(nostack, preserves_flags),
31034    );
31035}
31036
31037/// Load 512-bits of integer data from memory into dst using a non-temporal memory hint. mem_addr
31038/// must be aligned on a 64-byte boundary or a general-protection exception may be generated. To
31039/// minimize caching, the data is flagged as non-temporal (unlikely to be used again soon)
31040///
31041/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_stream_load_si512)
31042#[inline]
31043#[target_feature(enable = "avx512f")]
31044#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31045pub unsafe fn _mm512_stream_load_si512(mem_addr: *const __m512i) -> __m512i {
31046    let dst: __m512i;
31047    crate::arch::asm!(
31048        vpl!("vmovntdqa {a}"),
31049        a = out(zmm_reg) dst,
31050        p = in(reg) mem_addr,
31051        options(pure, readonly, nostack, preserves_flags),
31052    );
31053    dst
31054}
31055
31056/// Sets packed 32-bit integers in `dst` with the supplied values.
31057///
31058/// [Intel's documentation]( https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_set_ps&expand=4931)
31059#[inline]
31060#[target_feature(enable = "avx512f")]
31061#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31062#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31063pub const fn _mm512_set_ps(
31064    e0: f32,
31065    e1: f32,
31066    e2: f32,
31067    e3: f32,
31068    e4: f32,
31069    e5: f32,
31070    e6: f32,
31071    e7: f32,
31072    e8: f32,
31073    e9: f32,
31074    e10: f32,
31075    e11: f32,
31076    e12: f32,
31077    e13: f32,
31078    e14: f32,
31079    e15: f32,
31080) -> __m512 {
31081    _mm512_setr_ps(
31082        e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0,
31083    )
31084}
31085
31086/// Sets packed 32-bit integers in `dst` with the supplied values in
31087/// reverse order.
31088///
31089/// [Intel's documentation]( https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_setr_ps&expand=5008)
31090#[inline]
31091#[target_feature(enable = "avx512f")]
31092#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31093#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31094pub const fn _mm512_setr_ps(
31095    e0: f32,
31096    e1: f32,
31097    e2: f32,
31098    e3: f32,
31099    e4: f32,
31100    e5: f32,
31101    e6: f32,
31102    e7: f32,
31103    e8: f32,
31104    e9: f32,
31105    e10: f32,
31106    e11: f32,
31107    e12: f32,
31108    e13: f32,
31109    e14: f32,
31110    e15: f32,
31111) -> __m512 {
31112    unsafe {
31113        let r = f32x16::new(
31114            e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15,
31115        );
31116        transmute(r)
31117    }
31118}
31119
31120/// Broadcast 64-bit float `a` to all elements of `dst`.
31121///
31122/// [Intel's documentation]( https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_set1_pd&expand=4975)
31123#[inline]
31124#[target_feature(enable = "avx512f")]
31125#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31126#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31127pub const fn _mm512_set1_pd(a: f64) -> __m512d {
31128    unsafe { transmute(f64x8::splat(a)) }
31129}
31130
31131/// Broadcast 32-bit float `a` to all elements of `dst`.
31132///
31133/// [Intel's documentation]( https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_set1_ps&expand=4981)
31134#[inline]
31135#[target_feature(enable = "avx512f")]
31136#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31137#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31138pub const fn _mm512_set1_ps(a: f32) -> __m512 {
31139    unsafe { transmute(f32x16::splat(a)) }
31140}
31141
31142/// Sets packed 32-bit integers in `dst` with the supplied values.
31143///
31144/// [Intel's documentation]( https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_set_epi32&expand=4908)
31145#[inline]
31146#[target_feature(enable = "avx512f")]
31147#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31148#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31149pub const fn _mm512_set_epi32(
31150    e15: i32,
31151    e14: i32,
31152    e13: i32,
31153    e12: i32,
31154    e11: i32,
31155    e10: i32,
31156    e9: i32,
31157    e8: i32,
31158    e7: i32,
31159    e6: i32,
31160    e5: i32,
31161    e4: i32,
31162    e3: i32,
31163    e2: i32,
31164    e1: i32,
31165    e0: i32,
31166) -> __m512i {
31167    _mm512_setr_epi32(
31168        e0, e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15,
31169    )
31170}
31171
31172/// Broadcast 8-bit integer a to all elements of dst.
31173///
31174/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_set1_epi8&expand=4972)
31175#[inline]
31176#[target_feature(enable = "avx512f")]
31177#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31178#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31179pub const fn _mm512_set1_epi8(a: i8) -> __m512i {
31180    unsafe { transmute(i8x64::splat(a)) }
31181}
31182
31183/// Broadcast the low packed 16-bit integer from a to all elements of dst.
31184///
31185/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_set1_epi16&expand=4944)
31186#[inline]
31187#[target_feature(enable = "avx512f")]
31188#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31189#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31190pub const fn _mm512_set1_epi16(a: i16) -> __m512i {
31191    unsafe { transmute(i16x32::splat(a)) }
31192}
31193
31194/// Broadcast 32-bit integer `a` to all elements of `dst`.
31195///
31196/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm512_set1_epi32)
31197#[inline]
31198#[target_feature(enable = "avx512f")]
31199#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31200#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31201pub const fn _mm512_set1_epi32(a: i32) -> __m512i {
31202    unsafe { transmute(i32x16::splat(a)) }
31203}
31204
31205/// Broadcast 32-bit integer a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
31206///
31207/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_set1_epi32&expand=4951)
31208#[inline]
31209#[target_feature(enable = "avx512f")]
31210#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31211#[cfg_attr(test, assert_instr(vpbroadcastd))]
31212#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31213pub const fn _mm512_mask_set1_epi32(src: __m512i, k: __mmask16, a: i32) -> __m512i {
31214    unsafe {
31215        let r = _mm512_set1_epi32(a).as_i32x16();
31216        transmute(simd_select_bitmask(k, r, src.as_i32x16()))
31217    }
31218}
31219
31220/// Broadcast 32-bit integer a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
31221///
31222/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_set1_epi32&expand=4952)
31223#[inline]
31224#[target_feature(enable = "avx512f")]
31225#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31226#[cfg_attr(test, assert_instr(vpbroadcastd))]
31227#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31228pub const fn _mm512_maskz_set1_epi32(k: __mmask16, a: i32) -> __m512i {
31229    unsafe {
31230        let r = _mm512_set1_epi32(a).as_i32x16();
31231        transmute(simd_select_bitmask(k, r, i32x16::ZERO))
31232    }
31233}
31234
31235/// Broadcast 32-bit integer a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
31236///
31237/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_set1_epi32&expand=4948)
31238#[inline]
31239#[target_feature(enable = "avx512f,avx512vl")]
31240#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31241#[cfg_attr(test, assert_instr(vpbroadcastd))]
31242#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31243pub const fn _mm256_mask_set1_epi32(src: __m256i, k: __mmask8, a: i32) -> __m256i {
31244    unsafe {
31245        let r = _mm256_set1_epi32(a).as_i32x8();
31246        transmute(simd_select_bitmask(k, r, src.as_i32x8()))
31247    }
31248}
31249
31250/// Broadcast 32-bit integer a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
31251///
31252/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_set1_epi32&expand=4949)
31253#[inline]
31254#[target_feature(enable = "avx512f,avx512vl")]
31255#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31256#[cfg_attr(test, assert_instr(vpbroadcastd))]
31257#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31258pub const fn _mm256_maskz_set1_epi32(k: __mmask8, a: i32) -> __m256i {
31259    unsafe {
31260        let r = _mm256_set1_epi32(a).as_i32x8();
31261        transmute(simd_select_bitmask(k, r, i32x8::ZERO))
31262    }
31263}
31264
31265/// Broadcast 32-bit integer a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
31266///
31267/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_set1_epi32&expand=4945)
31268#[inline]
31269#[target_feature(enable = "avx512f,avx512vl")]
31270#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31271#[cfg_attr(test, assert_instr(vpbroadcastd))]
31272#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31273pub const fn _mm_mask_set1_epi32(src: __m128i, k: __mmask8, a: i32) -> __m128i {
31274    unsafe {
31275        let r = _mm_set1_epi32(a).as_i32x4();
31276        transmute(simd_select_bitmask(k, r, src.as_i32x4()))
31277    }
31278}
31279
31280/// Broadcast 32-bit integer a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
31281///
31282/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_set1_epi32&expand=4946)
31283#[inline]
31284#[target_feature(enable = "avx512f,avx512vl")]
31285#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31286#[cfg_attr(test, assert_instr(vpbroadcastd))]
31287#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31288pub const fn _mm_maskz_set1_epi32(k: __mmask8, a: i32) -> __m128i {
31289    unsafe {
31290        let r = _mm_set1_epi32(a).as_i32x4();
31291        transmute(simd_select_bitmask(k, r, i32x4::ZERO))
31292    }
31293}
31294
31295/// Broadcast 64-bit integer `a` to all elements of `dst`.
31296///
31297/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_set1_epi64&expand=4961)
31298#[inline]
31299#[target_feature(enable = "avx512f")]
31300#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31301#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31302pub const fn _mm512_set1_epi64(a: i64) -> __m512i {
31303    unsafe { transmute(i64x8::splat(a)) }
31304}
31305
31306/// Broadcast 64-bit integer a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
31307///
31308/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_set1_epi64&expand=4959)
31309#[inline]
31310#[target_feature(enable = "avx512f")]
31311#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31312#[cfg_attr(test, assert_instr(vpbroadcastq))]
31313#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31314pub const fn _mm512_mask_set1_epi64(src: __m512i, k: __mmask8, a: i64) -> __m512i {
31315    unsafe {
31316        let r = _mm512_set1_epi64(a).as_i64x8();
31317        transmute(simd_select_bitmask(k, r, src.as_i64x8()))
31318    }
31319}
31320
31321/// Broadcast 64-bit integer a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
31322///
31323/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_set1_epi64&expand=4960)
31324#[inline]
31325#[target_feature(enable = "avx512f")]
31326#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31327#[cfg_attr(test, assert_instr(vpbroadcastq))]
31328#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31329pub const fn _mm512_maskz_set1_epi64(k: __mmask8, a: i64) -> __m512i {
31330    unsafe {
31331        let r = _mm512_set1_epi64(a).as_i64x8();
31332        transmute(simd_select_bitmask(k, r, i64x8::ZERO))
31333    }
31334}
31335
31336/// Broadcast 64-bit integer a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
31337///
31338/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_set1_epi64&expand=4957)
31339#[inline]
31340#[target_feature(enable = "avx512f,avx512vl")]
31341#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31342#[cfg_attr(test, assert_instr(vpbroadcastq))]
31343#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31344pub const fn _mm256_mask_set1_epi64(src: __m256i, k: __mmask8, a: i64) -> __m256i {
31345    unsafe {
31346        let r = _mm256_set1_epi64x(a).as_i64x4();
31347        transmute(simd_select_bitmask(k, r, src.as_i64x4()))
31348    }
31349}
31350
31351/// Broadcast 64-bit integer a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
31352///
31353/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_set1_epi64&expand=4958)
31354#[inline]
31355#[target_feature(enable = "avx512f,avx512vl")]
31356#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31357#[cfg_attr(test, assert_instr(vpbroadcastq))]
31358#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31359pub const fn _mm256_maskz_set1_epi64(k: __mmask8, a: i64) -> __m256i {
31360    unsafe {
31361        let r = _mm256_set1_epi64x(a).as_i64x4();
31362        transmute(simd_select_bitmask(k, r, i64x4::ZERO))
31363    }
31364}
31365
31366/// Broadcast 64-bit integer a to all elements of dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
31367///
31368/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_set1_epi64&expand=4954)
31369#[inline]
31370#[target_feature(enable = "avx512f,avx512vl")]
31371#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31372#[cfg_attr(test, assert_instr(vpbroadcastq))]
31373#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31374pub const fn _mm_mask_set1_epi64(src: __m128i, k: __mmask8, a: i64) -> __m128i {
31375    unsafe {
31376        let r = _mm_set1_epi64x(a).as_i64x2();
31377        transmute(simd_select_bitmask(k, r, src.as_i64x2()))
31378    }
31379}
31380
31381/// Broadcast 64-bit integer a to all elements of dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
31382///
31383/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_set1_epi64&expand=4955)
31384#[inline]
31385#[target_feature(enable = "avx512f,avx512vl")]
31386#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31387#[cfg_attr(test, assert_instr(vpbroadcastq))]
31388#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31389pub const fn _mm_maskz_set1_epi64(k: __mmask8, a: i64) -> __m128i {
31390    unsafe {
31391        let r = _mm_set1_epi64x(a).as_i64x2();
31392        transmute(simd_select_bitmask(k, r, i64x2::ZERO))
31393    }
31394}
31395
31396/// Set packed 64-bit integers in dst with the repeated 4 element sequence.
31397///
31398/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_set4_epi64&expand=4983)
31399#[inline]
31400#[target_feature(enable = "avx512f")]
31401#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31402#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31403pub const fn _mm512_set4_epi64(d: i64, c: i64, b: i64, a: i64) -> __m512i {
31404    _mm512_set_epi64(d, c, b, a, d, c, b, a)
31405}
31406
31407/// Set packed 64-bit integers in dst with the repeated 4 element sequence in reverse order.
31408///
31409/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_setr4_epi64&expand=5010)
31410#[inline]
31411#[target_feature(enable = "avx512f")]
31412#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31413#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
31414pub const fn _mm512_setr4_epi64(d: i64, c: i64, b: i64, a: i64) -> __m512i {
31415    _mm512_set_epi64(a, b, c, d, a, b, c, d)
31416}
31417
31418/// Compare packed single-precision (32-bit) floating-point elements in a and b for less-than, and store the results in mask vector k.
31419///
31420/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmplt_ps_mask&expand=1074)
31421#[inline]
31422#[target_feature(enable = "avx512f")]
31423#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31424#[cfg_attr(test, assert_instr(vcmp))] //should be vcmpps
31425pub fn _mm512_cmplt_ps_mask(a: __m512, b: __m512) -> __mmask16 {
31426    _mm512_cmp_ps_mask::<_CMP_LT_OS>(a, b)
31427}
31428
31429/// Compare packed single-precision (32-bit) floating-point elements in a and b for less-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31430///
31431/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmplt_ps_mask&expand=1075)
31432#[inline]
31433#[target_feature(enable = "avx512f")]
31434#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31435#[cfg_attr(test, assert_instr(vcmp))] //should be vcmpps
31436pub fn _mm512_mask_cmplt_ps_mask(k1: __mmask16, a: __m512, b: __m512) -> __mmask16 {
31437    _mm512_mask_cmp_ps_mask::<_CMP_LT_OS>(k1, a, b)
31438}
31439
31440/// Compare packed single-precision (32-bit) floating-point elements in a and b for not-less-than, and store the results in mask vector k.
31441///
31442/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpnlt_ps_mask&expand=1154)
31443#[inline]
31444#[target_feature(enable = "avx512f")]
31445#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31446#[cfg_attr(test, assert_instr(vcmp))] //should be vcmpps
31447pub fn _mm512_cmpnlt_ps_mask(a: __m512, b: __m512) -> __mmask16 {
31448    _mm512_cmp_ps_mask::<_CMP_NLT_US>(a, b)
31449}
31450
31451/// Compare packed single-precision (32-bit) floating-point elements in a and b for not-less-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31452///
31453/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpnlt_ps_mask&expand=1155)
31454#[inline]
31455#[target_feature(enable = "avx512f")]
31456#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31457#[cfg_attr(test, assert_instr(vcmp))] //should be vcmpps
31458pub fn _mm512_mask_cmpnlt_ps_mask(k1: __mmask16, a: __m512, b: __m512) -> __mmask16 {
31459    _mm512_mask_cmp_ps_mask::<_CMP_NLT_US>(k1, a, b)
31460}
31461
31462/// Compare packed single-precision (32-bit) floating-point elements in a and b for less-than-or-equal, and store the results in mask vector k.
31463///
31464/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmple_ps_mask&expand=1013)
31465#[inline]
31466#[target_feature(enable = "avx512f")]
31467#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31468#[cfg_attr(test, assert_instr(vcmp))] //should be vcmpps
31469pub fn _mm512_cmple_ps_mask(a: __m512, b: __m512) -> __mmask16 {
31470    _mm512_cmp_ps_mask::<_CMP_LE_OS>(a, b)
31471}
31472
31473/// Compare packed single-precision (32-bit) floating-point elements in a and b for less-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31474///
31475/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmple_ps_mask&expand=1014)
31476#[inline]
31477#[target_feature(enable = "avx512f")]
31478#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31479#[cfg_attr(test, assert_instr(vcmp))] //should be vcmpps
31480pub fn _mm512_mask_cmple_ps_mask(k1: __mmask16, a: __m512, b: __m512) -> __mmask16 {
31481    _mm512_mask_cmp_ps_mask::<_CMP_LE_OS>(k1, a, b)
31482}
31483
31484/// Compare packed single-precision (32-bit) floating-point elements in a and b for not-less-than-or-equal, and store the results in mask vector k.
31485///
31486/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpnle_ps_mask&expand=1146)
31487#[inline]
31488#[target_feature(enable = "avx512f")]
31489#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31490#[cfg_attr(test, assert_instr(vcmp))] //should be vcmpps
31491pub fn _mm512_cmpnle_ps_mask(a: __m512, b: __m512) -> __mmask16 {
31492    _mm512_cmp_ps_mask::<_CMP_NLE_US>(a, b)
31493}
31494
31495/// Compare packed single-precision (32-bit) floating-point elements in a and b for not-less-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31496///
31497/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpnle_ps_mask&expand=1147)
31498#[inline]
31499#[target_feature(enable = "avx512f")]
31500#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31501#[cfg_attr(test, assert_instr(vcmp))] //should be vcmpps
31502pub fn _mm512_mask_cmpnle_ps_mask(k1: __mmask16, a: __m512, b: __m512) -> __mmask16 {
31503    _mm512_mask_cmp_ps_mask::<_CMP_NLE_US>(k1, a, b)
31504}
31505
31506/// Compare packed single-precision (32-bit) floating-point elements in a and b for equality, and store the results in mask vector k.
31507///
31508/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpeq_ps_mask&expand=828)
31509#[inline]
31510#[target_feature(enable = "avx512f")]
31511#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31512#[cfg_attr(test, assert_instr(vcmp))] //should be vcmpps
31513pub fn _mm512_cmpeq_ps_mask(a: __m512, b: __m512) -> __mmask16 {
31514    _mm512_cmp_ps_mask::<_CMP_EQ_OQ>(a, b)
31515}
31516
31517/// Compare packed single-precision (32-bit) floating-point elements in a and b for equality, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31518///
31519/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpeq_ps_mask&expand=829)
31520#[inline]
31521#[target_feature(enable = "avx512f")]
31522#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31523#[cfg_attr(test, assert_instr(vcmp))] //should be vcmpps
31524pub fn _mm512_mask_cmpeq_ps_mask(k1: __mmask16, a: __m512, b: __m512) -> __mmask16 {
31525    _mm512_mask_cmp_ps_mask::<_CMP_EQ_OQ>(k1, a, b)
31526}
31527
31528/// Compare packed single-precision (32-bit) floating-point elements in a and b for not-equal, and store the results in mask vector k.
31529///
31530/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpneq_ps_mask&expand=1130)
31531#[inline]
31532#[target_feature(enable = "avx512f")]
31533#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31534#[cfg_attr(test, assert_instr(vcmp))] //should be vcmpps
31535pub fn _mm512_cmpneq_ps_mask(a: __m512, b: __m512) -> __mmask16 {
31536    _mm512_cmp_ps_mask::<_CMP_NEQ_UQ>(a, b)
31537}
31538
31539/// Compare packed single-precision (32-bit) floating-point elements in a and b for not-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31540///
31541/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpneq_ps_mask&expand=1131)
31542#[inline]
31543#[target_feature(enable = "avx512f")]
31544#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31545#[cfg_attr(test, assert_instr(vcmp))] //should be vcmpps
31546pub fn _mm512_mask_cmpneq_ps_mask(k1: __mmask16, a: __m512, b: __m512) -> __mmask16 {
31547    _mm512_mask_cmp_ps_mask::<_CMP_NEQ_UQ>(k1, a, b)
31548}
31549
31550/// Compare packed single-precision (32-bit) floating-point elements in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.
31551///
31552/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmp_ps_mask&expand=749)
31553#[inline]
31554#[target_feature(enable = "avx512f")]
31555#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31556#[rustc_legacy_const_generics(2)]
31557#[cfg_attr(test, assert_instr(vcmp, IMM8 = 0))]
31558pub fn _mm512_cmp_ps_mask<const IMM8: i32>(a: __m512, b: __m512) -> __mmask16 {
31559    unsafe {
31560        static_assert_uimm_bits!(IMM8, 5);
31561        let neg_one = -1;
31562        let a = a.as_f32x16();
31563        let b = b.as_f32x16();
31564        let r = vcmpps(a, b, IMM8, neg_one, _MM_FROUND_CUR_DIRECTION);
31565        r.cast_unsigned()
31566    }
31567}
31568
31569/// Compare packed single-precision (32-bit) floating-point elements in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31570///
31571/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmp_ps_mask&expand=750)
31572#[inline]
31573#[target_feature(enable = "avx512f")]
31574#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31575#[rustc_legacy_const_generics(3)]
31576#[cfg_attr(test, assert_instr(vcmp, IMM8 = 0))]
31577pub fn _mm512_mask_cmp_ps_mask<const IMM8: i32>(k1: __mmask16, a: __m512, b: __m512) -> __mmask16 {
31578    unsafe {
31579        static_assert_uimm_bits!(IMM8, 5);
31580        let a = a.as_f32x16();
31581        let b = b.as_f32x16();
31582        let r = vcmpps(a, b, IMM8, k1 as i16, _MM_FROUND_CUR_DIRECTION);
31583        r.cast_unsigned()
31584    }
31585}
31586
31587/// Compare packed single-precision (32-bit) floating-point elements in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.
31588///
31589/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmp_ps_mask&expand=747)
31590#[inline]
31591#[target_feature(enable = "avx512f,avx512vl")]
31592#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31593#[rustc_legacy_const_generics(2)]
31594#[cfg_attr(test, assert_instr(vcmp, IMM8 = 0))]
31595pub fn _mm256_cmp_ps_mask<const IMM8: i32>(a: __m256, b: __m256) -> __mmask8 {
31596    unsafe {
31597        static_assert_uimm_bits!(IMM8, 5);
31598        let neg_one = -1;
31599        let a = a.as_f32x8();
31600        let b = b.as_f32x8();
31601        let r = vcmpps256(a, b, IMM8, neg_one);
31602        r.cast_unsigned()
31603    }
31604}
31605
31606/// Compare packed single-precision (32-bit) floating-point elements in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31607///
31608/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmp_ps_mask&expand=748)
31609#[inline]
31610#[target_feature(enable = "avx512f,avx512vl")]
31611#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31612#[rustc_legacy_const_generics(3)]
31613#[cfg_attr(test, assert_instr(vcmp, IMM8 = 0))]
31614pub fn _mm256_mask_cmp_ps_mask<const IMM8: i32>(k1: __mmask8, a: __m256, b: __m256) -> __mmask8 {
31615    unsafe {
31616        static_assert_uimm_bits!(IMM8, 5);
31617        let a = a.as_f32x8();
31618        let b = b.as_f32x8();
31619        let r = vcmpps256(a, b, IMM8, k1 as i8);
31620        r.cast_unsigned()
31621    }
31622}
31623
31624/// Compare packed single-precision (32-bit) floating-point elements in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.
31625///
31626/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmp_ps_mask&expand=745)
31627#[inline]
31628#[target_feature(enable = "avx512f,avx512vl")]
31629#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31630#[rustc_legacy_const_generics(2)]
31631#[cfg_attr(test, assert_instr(vcmp, IMM8 = 0))]
31632pub fn _mm_cmp_ps_mask<const IMM8: i32>(a: __m128, b: __m128) -> __mmask8 {
31633    unsafe {
31634        static_assert_uimm_bits!(IMM8, 5);
31635        let neg_one = -1;
31636        let a = a.as_f32x4();
31637        let b = b.as_f32x4();
31638        let r = vcmpps128(a, b, IMM8, neg_one);
31639        r.cast_unsigned()
31640    }
31641}
31642
31643/// Compare packed single-precision (32-bit) floating-point elements in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31644///
31645/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmp_ps_mask&expand=746)
31646#[inline]
31647#[target_feature(enable = "avx512f,avx512vl")]
31648#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31649#[rustc_legacy_const_generics(3)]
31650#[cfg_attr(test, assert_instr(vcmp, IMM8 = 0))]
31651pub fn _mm_mask_cmp_ps_mask<const IMM8: i32>(k1: __mmask8, a: __m128, b: __m128) -> __mmask8 {
31652    unsafe {
31653        static_assert_uimm_bits!(IMM8, 5);
31654        let a = a.as_f32x4();
31655        let b = b.as_f32x4();
31656        let r = vcmpps128(a, b, IMM8, k1 as i8);
31657        r.cast_unsigned()
31658    }
31659}
31660
31661/// Compare packed single-precision (32-bit) floating-point elements in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.\
31662/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
31663///
31664/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmp_round_ps_mask&expand=753)
31665#[inline]
31666#[target_feature(enable = "avx512f")]
31667#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31668#[cfg_attr(test, assert_instr(vcmp, IMM5 = 0, SAE = 4))]
31669#[rustc_legacy_const_generics(2, 3)]
31670pub fn _mm512_cmp_round_ps_mask<const IMM5: i32, const SAE: i32>(
31671    a: __m512,
31672    b: __m512,
31673) -> __mmask16 {
31674    unsafe {
31675        static_assert_uimm_bits!(IMM5, 5);
31676        static_assert_mantissas_sae!(SAE);
31677        let neg_one = -1;
31678        let a = a.as_f32x16();
31679        let b = b.as_f32x16();
31680        let r = vcmpps(a, b, IMM5, neg_one, SAE);
31681        r.cast_unsigned()
31682    }
31683}
31684
31685/// Compare packed single-precision (32-bit) floating-point elements in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).\
31686/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
31687///
31688/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmp_round_ps_mask&expand=754)
31689#[inline]
31690#[target_feature(enable = "avx512f")]
31691#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31692#[cfg_attr(test, assert_instr(vcmp, IMM5 = 0, SAE = 4))]
31693#[rustc_legacy_const_generics(3, 4)]
31694pub fn _mm512_mask_cmp_round_ps_mask<const IMM5: i32, const SAE: i32>(
31695    m: __mmask16,
31696    a: __m512,
31697    b: __m512,
31698) -> __mmask16 {
31699    unsafe {
31700        static_assert_uimm_bits!(IMM5, 5);
31701        static_assert_mantissas_sae!(SAE);
31702        let a = a.as_f32x16();
31703        let b = b.as_f32x16();
31704        let r = vcmpps(a, b, IMM5, m as i16, SAE);
31705        r.cast_unsigned()
31706    }
31707}
31708
31709/// Compare packed single-precision (32-bit) floating-point elements in a and b to see if neither is NaN, and store the results in mask vector k.
31710///
31711/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpord_ps_mask&expand=1162)
31712#[inline]
31713#[target_feature(enable = "avx512f")]
31714#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31715#[cfg_attr(test, assert_instr(vcmp))] //should be vcmps
31716pub fn _mm512_cmpord_ps_mask(a: __m512, b: __m512) -> __mmask16 {
31717    _mm512_cmp_ps_mask::<_CMP_ORD_Q>(a, b)
31718}
31719
31720/// Compare packed single-precision (32-bit) floating-point elements in a and b to see if neither is NaN, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31721///
31722/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpord_ps_mask&expand=1163)
31723#[inline]
31724#[target_feature(enable = "avx512f")]
31725#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31726#[cfg_attr(test, assert_instr(vcmp))] //should be vcmpps
31727pub fn _mm512_mask_cmpord_ps_mask(k1: __mmask16, a: __m512, b: __m512) -> __mmask16 {
31728    _mm512_mask_cmp_ps_mask::<_CMP_ORD_Q>(k1, a, b)
31729}
31730
31731/// Compare packed single-precision (32-bit) floating-point elements in a and b to see if either is NaN, and store the results in mask vector k.
31732///
31733/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpunord_ps_mask&expand=1170)
31734#[inline]
31735#[target_feature(enable = "avx512f")]
31736#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31737#[cfg_attr(test, assert_instr(vcmp))] //should be vcmpps
31738pub fn _mm512_cmpunord_ps_mask(a: __m512, b: __m512) -> __mmask16 {
31739    _mm512_cmp_ps_mask::<_CMP_UNORD_Q>(a, b)
31740}
31741
31742/// Compare packed single-precision (32-bit) floating-point elements in a and b to see if either is NaN, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31743///
31744/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpunord_ps_mask&expand=1171)
31745#[inline]
31746#[target_feature(enable = "avx512f")]
31747#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31748#[cfg_attr(test, assert_instr(vcmp))] //should be vcmpps
31749pub fn _mm512_mask_cmpunord_ps_mask(k1: __mmask16, a: __m512, b: __m512) -> __mmask16 {
31750    _mm512_mask_cmp_ps_mask::<_CMP_UNORD_Q>(k1, a, b)
31751}
31752
31753/// Compare packed double-precision (64-bit) floating-point elements in a and b for less-than, and store the results in mask vector k.
31754///
31755/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmplt_pd_mask&expand=1071)
31756#[inline]
31757#[target_feature(enable = "avx512f")]
31758#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31759#[cfg_attr(test, assert_instr(vcmp))] //should be vcmppd
31760pub fn _mm512_cmplt_pd_mask(a: __m512d, b: __m512d) -> __mmask8 {
31761    _mm512_cmp_pd_mask::<_CMP_LT_OS>(a, b)
31762}
31763
31764/// Compare packed double-precision (64-bit) floating-point elements in a and b for less-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31765///
31766/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmplt_pd_mask&expand=1072)
31767#[inline]
31768#[target_feature(enable = "avx512f")]
31769#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31770#[cfg_attr(test, assert_instr(vcmp))] //should be vcmppd
31771pub fn _mm512_mask_cmplt_pd_mask(k1: __mmask8, a: __m512d, b: __m512d) -> __mmask8 {
31772    _mm512_mask_cmp_pd_mask::<_CMP_LT_OS>(k1, a, b)
31773}
31774
31775/// Compare packed double-precision (64-bit) floating-point elements in a and b for not-less-than, and store the results in mask vector k.
31776///
31777/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpnlt_pd_mask&expand=1151)
31778#[inline]
31779#[target_feature(enable = "avx512f")]
31780#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31781#[cfg_attr(test, assert_instr(vcmp))] //should be vcmppd
31782pub fn _mm512_cmpnlt_pd_mask(a: __m512d, b: __m512d) -> __mmask8 {
31783    _mm512_cmp_pd_mask::<_CMP_NLT_US>(a, b)
31784}
31785
31786/// Compare packed double-precision (64-bit) floating-point elements in a and b for not-less-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31787///
31788/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpnlt_pd_mask&expand=1152)
31789#[inline]
31790#[target_feature(enable = "avx512f")]
31791#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31792#[cfg_attr(test, assert_instr(vcmp))] //should be vcmppd
31793pub fn _mm512_mask_cmpnlt_pd_mask(m: __mmask8, a: __m512d, b: __m512d) -> __mmask8 {
31794    _mm512_mask_cmp_pd_mask::<_CMP_NLT_US>(m, a, b)
31795}
31796
31797/// Compare packed double-precision (64-bit) floating-point elements in a and b for less-than-or-equal, and store the results in mask vector k.
31798///
31799/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmple_pd_mask&expand=1010)
31800#[inline]
31801#[target_feature(enable = "avx512f")]
31802#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31803#[cfg_attr(test, assert_instr(vcmp))] //should be vcmppd
31804pub fn _mm512_cmple_pd_mask(a: __m512d, b: __m512d) -> __mmask8 {
31805    _mm512_cmp_pd_mask::<_CMP_LE_OS>(a, b)
31806}
31807
31808/// Compare packed double-precision (64-bit) floating-point elements in a and b for less-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31809///
31810/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmple_pd_mask&expand=1011)
31811#[inline]
31812#[target_feature(enable = "avx512f")]
31813#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31814#[cfg_attr(test, assert_instr(vcmp))] //should be vcmppd
31815pub fn _mm512_mask_cmple_pd_mask(k1: __mmask8, a: __m512d, b: __m512d) -> __mmask8 {
31816    _mm512_mask_cmp_pd_mask::<_CMP_LE_OS>(k1, a, b)
31817}
31818
31819/// Compare packed double-precision (64-bit) floating-point elements in a and b for not-less-than-or-equal, and store the results in mask vector k.
31820///
31821/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpnle_pd_mask&expand=1143)
31822#[inline]
31823#[target_feature(enable = "avx512f")]
31824#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31825#[cfg_attr(test, assert_instr(vcmp))] //should be vcmppd
31826pub fn _mm512_cmpnle_pd_mask(a: __m512d, b: __m512d) -> __mmask8 {
31827    _mm512_cmp_pd_mask::<_CMP_NLE_US>(a, b)
31828}
31829
31830/// Compare packed double-precision (64-bit) floating-point elements in a and b for not-less-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31831///
31832/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpnle_pd_mask&expand=1144)
31833#[inline]
31834#[target_feature(enable = "avx512f")]
31835#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31836#[cfg_attr(test, assert_instr(vcmp))] //should be vcmppd
31837pub fn _mm512_mask_cmpnle_pd_mask(k1: __mmask8, a: __m512d, b: __m512d) -> __mmask8 {
31838    _mm512_mask_cmp_pd_mask::<_CMP_NLE_US>(k1, a, b)
31839}
31840
31841/// Compare packed double-precision (64-bit) floating-point elements in a and b for equality, and store the results in mask vector k.
31842///
31843/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpeq_pd_mask&expand=822)
31844#[inline]
31845#[target_feature(enable = "avx512f")]
31846#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31847#[cfg_attr(test, assert_instr(vcmp))] //should be vcmppd
31848pub fn _mm512_cmpeq_pd_mask(a: __m512d, b: __m512d) -> __mmask8 {
31849    _mm512_cmp_pd_mask::<_CMP_EQ_OQ>(a, b)
31850}
31851
31852/// Compare packed double-precision (64-bit) floating-point elements in a and b for equality, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31853///
31854/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpeq_pd_mask&expand=823)
31855#[inline]
31856#[target_feature(enable = "avx512f")]
31857#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31858#[cfg_attr(test, assert_instr(vcmp))] //should be vcmppd
31859pub fn _mm512_mask_cmpeq_pd_mask(k1: __mmask8, a: __m512d, b: __m512d) -> __mmask8 {
31860    _mm512_mask_cmp_pd_mask::<_CMP_EQ_OQ>(k1, a, b)
31861}
31862
31863/// Compare packed double-precision (64-bit) floating-point elements in a and b for not-equal, and store the results in mask vector k.
31864///
31865/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpneq_pd_mask&expand=1127)
31866#[inline]
31867#[target_feature(enable = "avx512f")]
31868#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31869#[cfg_attr(test, assert_instr(vcmp))] //should be vcmppd
31870pub fn _mm512_cmpneq_pd_mask(a: __m512d, b: __m512d) -> __mmask8 {
31871    _mm512_cmp_pd_mask::<_CMP_NEQ_UQ>(a, b)
31872}
31873
31874/// Compare packed double-precision (64-bit) floating-point elements in a and b for not-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31875///
31876/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpneq_pd_mask&expand=1128)
31877#[inline]
31878#[target_feature(enable = "avx512f")]
31879#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31880#[cfg_attr(test, assert_instr(vcmp))] //should be vcmppd
31881pub fn _mm512_mask_cmpneq_pd_mask(k1: __mmask8, a: __m512d, b: __m512d) -> __mmask8 {
31882    _mm512_mask_cmp_pd_mask::<_CMP_NEQ_UQ>(k1, a, b)
31883}
31884
31885/// Compare packed double-precision (64-bit) floating-point elements in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.
31886///
31887/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmp_pd_mask&expand=741)
31888#[inline]
31889#[target_feature(enable = "avx512f")]
31890#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31891#[rustc_legacy_const_generics(2)]
31892#[cfg_attr(test, assert_instr(vcmp, IMM8 = 0))]
31893pub fn _mm512_cmp_pd_mask<const IMM8: i32>(a: __m512d, b: __m512d) -> __mmask8 {
31894    unsafe {
31895        static_assert_uimm_bits!(IMM8, 5);
31896        let neg_one = -1;
31897        let a = a.as_f64x8();
31898        let b = b.as_f64x8();
31899        let r = vcmppd(a, b, IMM8, neg_one, _MM_FROUND_CUR_DIRECTION);
31900        r.cast_unsigned()
31901    }
31902}
31903
31904/// Compare packed double-precision (64-bit) floating-point elements in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31905///
31906/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmp_pd_mask&expand=742)
31907#[inline]
31908#[target_feature(enable = "avx512f")]
31909#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31910#[rustc_legacy_const_generics(3)]
31911#[cfg_attr(test, assert_instr(vcmp, IMM8 = 0))]
31912pub fn _mm512_mask_cmp_pd_mask<const IMM8: i32>(k1: __mmask8, a: __m512d, b: __m512d) -> __mmask8 {
31913    unsafe {
31914        static_assert_uimm_bits!(IMM8, 5);
31915        let a = a.as_f64x8();
31916        let b = b.as_f64x8();
31917        let r = vcmppd(a, b, IMM8, k1 as i8, _MM_FROUND_CUR_DIRECTION);
31918        r.cast_unsigned()
31919    }
31920}
31921
31922/// Compare packed double-precision (64-bit) floating-point elements in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.
31923///
31924/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmp_pd_mask&expand=739)
31925#[inline]
31926#[target_feature(enable = "avx512f,avx512vl")]
31927#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31928#[rustc_legacy_const_generics(2)]
31929#[cfg_attr(test, assert_instr(vcmp, IMM8 = 0))]
31930pub fn _mm256_cmp_pd_mask<const IMM8: i32>(a: __m256d, b: __m256d) -> __mmask8 {
31931    unsafe {
31932        static_assert_uimm_bits!(IMM8, 5);
31933        let neg_one = -1;
31934        let a = a.as_f64x4();
31935        let b = b.as_f64x4();
31936        let r = vcmppd256(a, b, IMM8, neg_one);
31937        r.cast_unsigned()
31938    }
31939}
31940
31941/// Compare packed double-precision (64-bit) floating-point elements in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31942///
31943/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmp_pd_mask&expand=740)
31944#[inline]
31945#[target_feature(enable = "avx512f,avx512vl")]
31946#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31947#[rustc_legacy_const_generics(3)]
31948#[cfg_attr(test, assert_instr(vcmp, IMM8 = 0))]
31949pub fn _mm256_mask_cmp_pd_mask<const IMM8: i32>(k1: __mmask8, a: __m256d, b: __m256d) -> __mmask8 {
31950    unsafe {
31951        static_assert_uimm_bits!(IMM8, 5);
31952        let a = a.as_f64x4();
31953        let b = b.as_f64x4();
31954        let r = vcmppd256(a, b, IMM8, k1 as i8);
31955        r.cast_unsigned()
31956    }
31957}
31958
31959/// Compare packed double-precision (64-bit) floating-point elements in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.
31960///
31961/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmp_pd_mask&expand=737)
31962#[inline]
31963#[target_feature(enable = "avx512f,avx512vl")]
31964#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31965#[rustc_legacy_const_generics(2)]
31966#[cfg_attr(test, assert_instr(vcmp, IMM8 = 0))]
31967pub fn _mm_cmp_pd_mask<const IMM8: i32>(a: __m128d, b: __m128d) -> __mmask8 {
31968    unsafe {
31969        static_assert_uimm_bits!(IMM8, 5);
31970        let neg_one = -1;
31971        let a = a.as_f64x2();
31972        let b = b.as_f64x2();
31973        let r = vcmppd128(a, b, IMM8, neg_one);
31974        r.cast_unsigned()
31975    }
31976}
31977
31978/// Compare packed double-precision (64-bit) floating-point elements in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
31979///
31980/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmp_pd_mask&expand=738)
31981#[inline]
31982#[target_feature(enable = "avx512f,avx512vl")]
31983#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
31984#[rustc_legacy_const_generics(3)]
31985#[cfg_attr(test, assert_instr(vcmp, IMM8 = 0))]
31986pub fn _mm_mask_cmp_pd_mask<const IMM8: i32>(k1: __mmask8, a: __m128d, b: __m128d) -> __mmask8 {
31987    unsafe {
31988        static_assert_uimm_bits!(IMM8, 5);
31989        let a = a.as_f64x2();
31990        let b = b.as_f64x2();
31991        let r = vcmppd128(a, b, IMM8, k1 as i8);
31992        r.cast_unsigned()
31993    }
31994}
31995
31996/// Compare packed double-precision (64-bit) floating-point elements in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.\
31997/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
31998///
31999/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmp_round_pd_mask&expand=751)
32000#[inline]
32001#[target_feature(enable = "avx512f")]
32002#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32003#[cfg_attr(test, assert_instr(vcmp, IMM5 = 0, SAE = 4))]
32004#[rustc_legacy_const_generics(2, 3)]
32005pub fn _mm512_cmp_round_pd_mask<const IMM5: i32, const SAE: i32>(
32006    a: __m512d,
32007    b: __m512d,
32008) -> __mmask8 {
32009    unsafe {
32010        static_assert_uimm_bits!(IMM5, 5);
32011        static_assert_mantissas_sae!(SAE);
32012        let neg_one = -1;
32013        let a = a.as_f64x8();
32014        let b = b.as_f64x8();
32015        let r = vcmppd(a, b, IMM5, neg_one, SAE);
32016        r.cast_unsigned()
32017    }
32018}
32019
32020/// Compare packed double-precision (64-bit) floating-point elements in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).\
32021/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
32022///
32023/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmp_round_pd_mask&expand=752)
32024#[inline]
32025#[target_feature(enable = "avx512f")]
32026#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32027#[cfg_attr(test, assert_instr(vcmp, IMM5 = 0, SAE = 4))]
32028#[rustc_legacy_const_generics(3, 4)]
32029pub fn _mm512_mask_cmp_round_pd_mask<const IMM5: i32, const SAE: i32>(
32030    k1: __mmask8,
32031    a: __m512d,
32032    b: __m512d,
32033) -> __mmask8 {
32034    unsafe {
32035        static_assert_uimm_bits!(IMM5, 5);
32036        static_assert_mantissas_sae!(SAE);
32037        let a = a.as_f64x8();
32038        let b = b.as_f64x8();
32039        let r = vcmppd(a, b, IMM5, k1 as i8, SAE);
32040        r.cast_unsigned()
32041    }
32042}
32043
32044/// Compare packed double-precision (64-bit) floating-point elements in a and b to see if neither is NaN, and store the results in mask vector k.
32045///
32046/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpord_pd_mask&expand=1159)
32047#[inline]
32048#[target_feature(enable = "avx512f")]
32049#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32050#[cfg_attr(test, assert_instr(vcmp))] //should be vcmppd
32051pub fn _mm512_cmpord_pd_mask(a: __m512d, b: __m512d) -> __mmask8 {
32052    _mm512_cmp_pd_mask::<_CMP_ORD_Q>(a, b)
32053}
32054
32055/// Compare packed double-precision (64-bit) floating-point elements in a and b to see if neither is NaN, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32056///
32057/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpord_pd_mask&expand=1160)
32058#[inline]
32059#[target_feature(enable = "avx512f")]
32060#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32061#[cfg_attr(test, assert_instr(vcmp))] //should be vcmppd
32062pub fn _mm512_mask_cmpord_pd_mask(k1: __mmask8, a: __m512d, b: __m512d) -> __mmask8 {
32063    _mm512_mask_cmp_pd_mask::<_CMP_ORD_Q>(k1, a, b)
32064}
32065
32066/// Compare packed double-precision (64-bit) floating-point elements in a and b to see if either is NaN, and store the results in mask vector k.
32067///
32068/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpunord_pd_mask&expand=1167)
32069#[inline]
32070#[target_feature(enable = "avx512f")]
32071#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32072#[cfg_attr(test, assert_instr(vcmp))] //should be vcmppd
32073pub fn _mm512_cmpunord_pd_mask(a: __m512d, b: __m512d) -> __mmask8 {
32074    _mm512_cmp_pd_mask::<_CMP_UNORD_Q>(a, b)
32075}
32076
32077/// Compare packed double-precision (64-bit) floating-point elements in a and b to see if either is NaN, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32078///
32079/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpunord_pd_mask&expand=1168)
32080#[inline]
32081#[target_feature(enable = "avx512f")]
32082#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32083#[cfg_attr(test, assert_instr(vcmp))] //should be vcmppd
32084pub fn _mm512_mask_cmpunord_pd_mask(k1: __mmask8, a: __m512d, b: __m512d) -> __mmask8 {
32085    _mm512_mask_cmp_pd_mask::<_CMP_UNORD_Q>(k1, a, b)
32086}
32087
32088/// Compare the lower single-precision (32-bit) floating-point element in a and b based on the comparison operand specified by imm8, and store the result in mask vector k.
32089///
32090/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmp_ss_mask&expand=763)
32091#[inline]
32092#[target_feature(enable = "avx512f")]
32093#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32094#[rustc_legacy_const_generics(2)]
32095#[cfg_attr(test, assert_instr(vcmp, IMM8 = 0))]
32096pub fn _mm_cmp_ss_mask<const IMM8: i32>(a: __m128, b: __m128) -> __mmask8 {
32097    unsafe {
32098        static_assert_uimm_bits!(IMM8, 5);
32099        let neg_one = -1;
32100        let r = vcmpss(a, b, IMM8, neg_one, _MM_FROUND_CUR_DIRECTION);
32101        r.cast_unsigned()
32102    }
32103}
32104
32105/// Compare the lower single-precision (32-bit) floating-point element in a and b based on the comparison operand specified by imm8, and store the result in mask vector k using zeromask k1 (the element is zeroed out when mask bit 0 is not set).
32106///
32107/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmp_ss_mask&expand=764)
32108#[inline]
32109#[target_feature(enable = "avx512f")]
32110#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32111#[rustc_legacy_const_generics(3)]
32112#[cfg_attr(test, assert_instr(vcmp, IMM8 = 0))]
32113pub fn _mm_mask_cmp_ss_mask<const IMM8: i32>(k1: __mmask8, a: __m128, b: __m128) -> __mmask8 {
32114    unsafe {
32115        static_assert_uimm_bits!(IMM8, 5);
32116        let r = vcmpss(a, b, IMM8, k1 as i8, _MM_FROUND_CUR_DIRECTION);
32117        r.cast_unsigned()
32118    }
32119}
32120
32121/// Compare the lower single-precision (32-bit) floating-point element in a and b based on the comparison operand specified by imm8, and store the result in mask vector k.\
32122/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
32123///
32124/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmp_round_ss_mask&expand=757)
32125#[inline]
32126#[target_feature(enable = "avx512f")]
32127#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32128#[cfg_attr(test, assert_instr(vcmp, IMM5 = 0, SAE = 4))]
32129#[rustc_legacy_const_generics(2, 3)]
32130pub fn _mm_cmp_round_ss_mask<const IMM5: i32, const SAE: i32>(a: __m128, b: __m128) -> __mmask8 {
32131    unsafe {
32132        static_assert_uimm_bits!(IMM5, 5);
32133        static_assert_mantissas_sae!(SAE);
32134        let neg_one = -1;
32135        let r = vcmpss(a, b, IMM5, neg_one, SAE);
32136        r.cast_unsigned()
32137    }
32138}
32139
32140/// Compare the lower single-precision (32-bit) floating-point element in a and b based on the comparison operand specified by imm8, and store the result in mask vector k using zeromask k1 (the element is zeroed out when mask bit 0 is not seti).\
32141/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
32142///
32143/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmp_round_ss_mask&expand=758)
32144#[inline]
32145#[target_feature(enable = "avx512f")]
32146#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32147#[cfg_attr(test, assert_instr(vcmp, IMM5 = 0, SAE = 4))]
32148#[rustc_legacy_const_generics(3, 4)]
32149pub fn _mm_mask_cmp_round_ss_mask<const IMM5: i32, const SAE: i32>(
32150    k1: __mmask8,
32151    a: __m128,
32152    b: __m128,
32153) -> __mmask8 {
32154    unsafe {
32155        static_assert_uimm_bits!(IMM5, 5);
32156        static_assert_mantissas_sae!(SAE);
32157        let r = vcmpss(a, b, IMM5, k1 as i8, SAE);
32158        r.cast_unsigned()
32159    }
32160}
32161
32162/// Compare the lower double-precision (64-bit) floating-point element in a and b based on the comparison operand specified by imm8, and store the result in mask vector k.
32163///
32164/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmp_sd_mask&expand=760)
32165#[inline]
32166#[target_feature(enable = "avx512f")]
32167#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32168#[rustc_legacy_const_generics(2)]
32169#[cfg_attr(test, assert_instr(vcmp, IMM8 = 0))]
32170pub fn _mm_cmp_sd_mask<const IMM8: i32>(a: __m128d, b: __m128d) -> __mmask8 {
32171    unsafe {
32172        static_assert_uimm_bits!(IMM8, 5);
32173        let neg_one = -1;
32174        let r = vcmpsd(a, b, IMM8, neg_one, _MM_FROUND_CUR_DIRECTION);
32175        r.cast_unsigned()
32176    }
32177}
32178
32179/// Compare the lower double-precision (64-bit) floating-point element in a and b based on the comparison operand specified by imm8, and store the result in mask vector k using zeromask k1 (the element is zeroed out when mask bit 0 is not set).
32180///
32181/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmp_sd_mask&expand=761)
32182#[inline]
32183#[target_feature(enable = "avx512f")]
32184#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32185#[rustc_legacy_const_generics(3)]
32186#[cfg_attr(test, assert_instr(vcmp, IMM8 = 0))]
32187pub fn _mm_mask_cmp_sd_mask<const IMM8: i32>(k1: __mmask8, a: __m128d, b: __m128d) -> __mmask8 {
32188    unsafe {
32189        static_assert_uimm_bits!(IMM8, 5);
32190        let r = vcmpsd(a, b, IMM8, k1 as i8, _MM_FROUND_CUR_DIRECTION);
32191        r.cast_unsigned()
32192    }
32193}
32194
32195/// Compare the lower double-precision (64-bit) floating-point element in a and b based on the comparison operand specified by imm8, and store the result in mask vector k.\
32196/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
32197///
32198/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmp_round_sd_mask&expand=755)
32199#[inline]
32200#[target_feature(enable = "avx512f")]
32201#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32202#[cfg_attr(test, assert_instr(vcmp, IMM5 = 0, SAE = 4))]
32203#[rustc_legacy_const_generics(2, 3)]
32204pub fn _mm_cmp_round_sd_mask<const IMM5: i32, const SAE: i32>(a: __m128d, b: __m128d) -> __mmask8 {
32205    unsafe {
32206        static_assert_uimm_bits!(IMM5, 5);
32207        static_assert_mantissas_sae!(SAE);
32208        let neg_one = -1;
32209        let r = vcmpsd(a, b, IMM5, neg_one, SAE);
32210        r.cast_unsigned()
32211    }
32212}
32213
32214/// Compare the lower double-precision (64-bit) floating-point element in a and b based on the comparison operand specified by imm8, and store the result in mask vector k using zeromask k1 (the element is zeroed out when mask bit 0 is not set).\
32215/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
32216///
32217/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmp_round_sd_mask&expand=756)
32218#[inline]
32219#[target_feature(enable = "avx512f")]
32220#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32221#[cfg_attr(test, assert_instr(vcmp, IMM5 = 0, SAE = 4))]
32222#[rustc_legacy_const_generics(3, 4)]
32223pub fn _mm_mask_cmp_round_sd_mask<const IMM5: i32, const SAE: i32>(
32224    k1: __mmask8,
32225    a: __m128d,
32226    b: __m128d,
32227) -> __mmask8 {
32228    unsafe {
32229        static_assert_uimm_bits!(IMM5, 5);
32230        static_assert_mantissas_sae!(SAE);
32231        let r = vcmpsd(a, b, IMM5, k1 as i8, SAE);
32232        r.cast_unsigned()
32233    }
32234}
32235
32236/// Compare packed unsigned 32-bit integers in a and b for less-than, and store the results in mask vector k.
32237///
32238/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmplt_epu32_mask&expand=1056)
32239#[inline]
32240#[target_feature(enable = "avx512f")]
32241#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32242#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32243#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32244pub const fn _mm512_cmplt_epu32_mask(a: __m512i, b: __m512i) -> __mmask16 {
32245    unsafe { simd_bitmask::<u32x16, _>(simd_lt(a.as_u32x16(), b.as_u32x16())) }
32246}
32247
32248/// Compare packed unsigned 32-bit integers in a and b for less-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32249///
32250/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmplt_epu32_mask&expand=1057)
32251#[inline]
32252#[target_feature(enable = "avx512f")]
32253#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32254#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32255#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32256pub const fn _mm512_mask_cmplt_epu32_mask(k1: __mmask16, a: __m512i, b: __m512i) -> __mmask16 {
32257    _mm512_mask_cmp_epu32_mask::<_MM_CMPINT_LT>(k1, a, b)
32258}
32259
32260/// Compare packed unsigned 32-bit integers in a and b for less-than, and store the results in mask vector k.
32261///
32262/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmplt_epu32_mask&expand=1054)
32263#[inline]
32264#[target_feature(enable = "avx512f,avx512vl")]
32265#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32266#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32267#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32268pub const fn _mm256_cmplt_epu32_mask(a: __m256i, b: __m256i) -> __mmask8 {
32269    unsafe { simd_bitmask::<u32x8, _>(simd_lt(a.as_u32x8(), b.as_u32x8())) }
32270}
32271
32272/// Compare packed unsigned 32-bit integers in a and b for less-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32273///
32274/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmplt_epu32_mask&expand=1055)
32275#[inline]
32276#[target_feature(enable = "avx512f,avx512vl")]
32277#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32278#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32279#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32280pub const fn _mm256_mask_cmplt_epu32_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
32281    _mm256_mask_cmp_epu32_mask::<_MM_CMPINT_LT>(k1, a, b)
32282}
32283
32284/// Compare packed unsigned 32-bit integers in a and b for less-than, and store the results in mask vector k.
32285///
32286/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_epu32_mask&expand=1052)
32287#[inline]
32288#[target_feature(enable = "avx512f,avx512vl")]
32289#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32290#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32291#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32292pub const fn _mm_cmplt_epu32_mask(a: __m128i, b: __m128i) -> __mmask8 {
32293    unsafe { simd_bitmask::<u32x4, _>(simd_lt(a.as_u32x4(), b.as_u32x4())) }
32294}
32295
32296/// Compare packed unsigned 32-bit integers in a and b for less-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32297///
32298/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmplt_epu32_mask&expand=1053)
32299#[inline]
32300#[target_feature(enable = "avx512f,avx512vl")]
32301#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32302#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32303#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32304pub const fn _mm_mask_cmplt_epu32_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
32305    _mm_mask_cmp_epu32_mask::<_MM_CMPINT_LT>(k1, a, b)
32306}
32307
32308/// Compare packed unsigned 32-bit integers in a and b for greater-than, and store the results in mask vector k.
32309///
32310/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpgt_epu32_mask&expand=933)
32311#[inline]
32312#[target_feature(enable = "avx512f")]
32313#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32314#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32315#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32316pub const fn _mm512_cmpgt_epu32_mask(a: __m512i, b: __m512i) -> __mmask16 {
32317    unsafe { simd_bitmask::<u32x16, _>(simd_gt(a.as_u32x16(), b.as_u32x16())) }
32318}
32319
32320/// Compare packed unsigned 32-bit integers in a and b for greater-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32321///
32322/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpgt_epu32_mask&expand=934)
32323#[inline]
32324#[target_feature(enable = "avx512f")]
32325#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32326#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32327#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32328pub const fn _mm512_mask_cmpgt_epu32_mask(k1: __mmask16, a: __m512i, b: __m512i) -> __mmask16 {
32329    _mm512_mask_cmp_epu32_mask::<_MM_CMPINT_NLE>(k1, a, b)
32330}
32331
32332/// Compare packed unsigned 32-bit integers in a and b for greater-than, and store the results in mask vector k.
32333///
32334/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmpgt_epu32_mask&expand=931)
32335#[inline]
32336#[target_feature(enable = "avx512f,avx512vl")]
32337#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32338#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32339#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32340pub const fn _mm256_cmpgt_epu32_mask(a: __m256i, b: __m256i) -> __mmask8 {
32341    unsafe { simd_bitmask::<u32x8, _>(simd_gt(a.as_u32x8(), b.as_u32x8())) }
32342}
32343
32344/// Compare packed unsigned 32-bit integers in a and b for greater-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32345///
32346/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmpgt_epu32_mask&expand=932)
32347#[inline]
32348#[target_feature(enable = "avx512f,avx512vl")]
32349#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32350#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32351#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32352pub const fn _mm256_mask_cmpgt_epu32_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
32353    _mm256_mask_cmp_epu32_mask::<_MM_CMPINT_NLE>(k1, a, b)
32354}
32355
32356/// Compare packed unsigned 32-bit integers in a and b for greater-than, and store the results in mask vector k.
32357///
32358/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_epu32_mask&expand=929)
32359#[inline]
32360#[target_feature(enable = "avx512f,avx512vl")]
32361#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32362#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32363#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32364pub const fn _mm_cmpgt_epu32_mask(a: __m128i, b: __m128i) -> __mmask8 {
32365    unsafe { simd_bitmask::<u32x4, _>(simd_gt(a.as_u32x4(), b.as_u32x4())) }
32366}
32367
32368/// Compare packed unsigned 32-bit integers in a and b for greater-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32369///
32370/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmpgt_epu32_mask&expand=930)
32371#[inline]
32372#[target_feature(enable = "avx512f,avx512vl")]
32373#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32374#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32375#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32376pub const fn _mm_mask_cmpgt_epu32_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
32377    _mm_mask_cmp_epu32_mask::<_MM_CMPINT_NLE>(k1, a, b)
32378}
32379
32380/// Compare packed unsigned 32-bit integers in a and b for less-than-or-equal, and store the results in mask vector k.
32381///
32382/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmple_epu32_mask&expand=995)
32383#[inline]
32384#[target_feature(enable = "avx512f")]
32385#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32386#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32387#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32388pub const fn _mm512_cmple_epu32_mask(a: __m512i, b: __m512i) -> __mmask16 {
32389    unsafe { simd_bitmask::<u32x16, _>(simd_le(a.as_u32x16(), b.as_u32x16())) }
32390}
32391
32392/// Compare packed unsigned 32-bit integers in a and b for less-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32393///
32394/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmple_epu32_mask&expand=996)
32395#[inline]
32396#[target_feature(enable = "avx512f")]
32397#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32398#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32399#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32400pub const fn _mm512_mask_cmple_epu32_mask(k1: __mmask16, a: __m512i, b: __m512i) -> __mmask16 {
32401    _mm512_mask_cmp_epu32_mask::<_MM_CMPINT_LE>(k1, a, b)
32402}
32403
32404/// Compare packed unsigned 32-bit integers in a and b for less-than-or-equal, and store the results in mask vector k.
32405///
32406/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmple_epu32_mask&expand=993)
32407#[inline]
32408#[target_feature(enable = "avx512f,avx512vl")]
32409#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32410#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32411#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32412pub const fn _mm256_cmple_epu32_mask(a: __m256i, b: __m256i) -> __mmask8 {
32413    unsafe { simd_bitmask::<u32x8, _>(simd_le(a.as_u32x8(), b.as_u32x8())) }
32414}
32415
32416/// Compare packed unsigned 32-bit integers in a and b for less-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32417///
32418/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmple_epu32_mask&expand=994)
32419#[inline]
32420#[target_feature(enable = "avx512f,avx512vl")]
32421#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32422#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32423#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32424pub const fn _mm256_mask_cmple_epu32_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
32425    _mm256_mask_cmp_epu32_mask::<_MM_CMPINT_LE>(k1, a, b)
32426}
32427
32428/// Compare packed unsigned 32-bit integers in a and b for less-than-or-equal, and store the results in mask vector k.
32429///
32430/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmple_epu32_mask&expand=991)
32431#[inline]
32432#[target_feature(enable = "avx512f,avx512vl")]
32433#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32434#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32435#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32436pub const fn _mm_cmple_epu32_mask(a: __m128i, b: __m128i) -> __mmask8 {
32437    unsafe { simd_bitmask::<u32x4, _>(simd_le(a.as_u32x4(), b.as_u32x4())) }
32438}
32439
32440/// Compare packed unsigned 32-bit integers in a and b for less-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32441///
32442/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmple_epu32_mask&expand=992)
32443#[inline]
32444#[target_feature(enable = "avx512f,avx512vl")]
32445#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32446#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32447#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32448pub const fn _mm_mask_cmple_epu32_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
32449    _mm_mask_cmp_epu32_mask::<_MM_CMPINT_LE>(k1, a, b)
32450}
32451
32452/// Compare packed unsigned 32-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k.
32453///
32454/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpge_epu32_mask&expand=873)
32455#[inline]
32456#[target_feature(enable = "avx512f")]
32457#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32458#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32459#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32460pub const fn _mm512_cmpge_epu32_mask(a: __m512i, b: __m512i) -> __mmask16 {
32461    unsafe { simd_bitmask::<u32x16, _>(simd_ge(a.as_u32x16(), b.as_u32x16())) }
32462}
32463
32464/// Compare packed unsigned 32-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32465///
32466/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpge_epu32_mask&expand=874)
32467#[inline]
32468#[target_feature(enable = "avx512f")]
32469#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32470#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32471#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32472pub const fn _mm512_mask_cmpge_epu32_mask(k1: __mmask16, a: __m512i, b: __m512i) -> __mmask16 {
32473    _mm512_mask_cmp_epu32_mask::<_MM_CMPINT_NLT>(k1, a, b)
32474}
32475
32476/// Compare packed unsigned 32-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k.
32477///
32478/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmpge_epu32_mask&expand=871)
32479#[inline]
32480#[target_feature(enable = "avx512f,avx512vl")]
32481#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32482#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32483#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32484pub const fn _mm256_cmpge_epu32_mask(a: __m256i, b: __m256i) -> __mmask8 {
32485    unsafe { simd_bitmask::<u32x8, _>(simd_ge(a.as_u32x8(), b.as_u32x8())) }
32486}
32487
32488/// Compare packed unsigned 32-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32489///
32490/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmpge_epu32_mask&expand=872)
32491#[inline]
32492#[target_feature(enable = "avx512f,avx512vl")]
32493#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32494#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32495#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32496pub const fn _mm256_mask_cmpge_epu32_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
32497    _mm256_mask_cmp_epu32_mask::<_MM_CMPINT_NLT>(k1, a, b)
32498}
32499
32500/// Compare packed unsigned 32-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k.
32501///
32502/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpge_epu32_mask&expand=869)
32503#[inline]
32504#[target_feature(enable = "avx512f,avx512vl")]
32505#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32506#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32507#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32508pub const fn _mm_cmpge_epu32_mask(a: __m128i, b: __m128i) -> __mmask8 {
32509    unsafe { simd_bitmask::<u32x4, _>(simd_ge(a.as_u32x4(), b.as_u32x4())) }
32510}
32511
32512/// Compare packed unsigned 32-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32513///
32514/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmpge_epu32_mask&expand=870)
32515#[inline]
32516#[target_feature(enable = "avx512f,avx512vl")]
32517#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32518#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32519#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32520pub const fn _mm_mask_cmpge_epu32_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
32521    _mm_mask_cmp_epu32_mask::<_MM_CMPINT_NLT>(k1, a, b)
32522}
32523
32524/// Compare packed unsigned 32-bit integers in a and b for equality, and store the results in mask vector k.
32525///
32526/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpeq_epu32_mask&expand=807)
32527#[inline]
32528#[target_feature(enable = "avx512f")]
32529#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32530#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32531#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32532pub const fn _mm512_cmpeq_epu32_mask(a: __m512i, b: __m512i) -> __mmask16 {
32533    unsafe { simd_bitmask::<u32x16, _>(simd_eq(a.as_u32x16(), b.as_u32x16())) }
32534}
32535
32536/// Compare packed unsigned 32-bit integers in a and b for equality, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32537///
32538/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpeq_epu32_mask&expand=808)
32539#[inline]
32540#[target_feature(enable = "avx512f")]
32541#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32542#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32543#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32544pub const fn _mm512_mask_cmpeq_epu32_mask(k1: __mmask16, a: __m512i, b: __m512i) -> __mmask16 {
32545    _mm512_mask_cmp_epu32_mask::<_MM_CMPINT_EQ>(k1, a, b)
32546}
32547
32548/// Compare packed unsigned 32-bit integers in a and b for equality, and store the results in mask vector k.
32549///
32550/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmpeq_epu32_mask&expand=805)
32551#[inline]
32552#[target_feature(enable = "avx512f,avx512vl")]
32553#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32554#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32555#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32556pub const fn _mm256_cmpeq_epu32_mask(a: __m256i, b: __m256i) -> __mmask8 {
32557    unsafe { simd_bitmask::<u32x8, _>(simd_eq(a.as_u32x8(), b.as_u32x8())) }
32558}
32559
32560/// Compare packed unsigned 32-bit integers in a and b for equality, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32561///
32562/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmpeq_epu32_mask&expand=806)
32563#[inline]
32564#[target_feature(enable = "avx512f,avx512vl")]
32565#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32566#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32567#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32568pub const fn _mm256_mask_cmpeq_epu32_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
32569    _mm256_mask_cmp_epu32_mask::<_MM_CMPINT_EQ>(k1, a, b)
32570}
32571
32572/// Compare packed unsigned 32-bit integers in a and b for equality, and store the results in mask vector k.
32573///
32574/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_epu32_mask&expand=803)
32575#[inline]
32576#[target_feature(enable = "avx512f,avx512vl")]
32577#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32578#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32579#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32580pub const fn _mm_cmpeq_epu32_mask(a: __m128i, b: __m128i) -> __mmask8 {
32581    unsafe { simd_bitmask::<u32x4, _>(simd_eq(a.as_u32x4(), b.as_u32x4())) }
32582}
32583
32584/// Compare packed unsigned 32-bit integers in a and b for equality, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32585///
32586/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmpeq_epu32_mask&expand=804)
32587#[inline]
32588#[target_feature(enable = "avx512f,avx512vl")]
32589#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32590#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32591#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32592pub const fn _mm_mask_cmpeq_epu32_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
32593    _mm_mask_cmp_epu32_mask::<_MM_CMPINT_EQ>(k1, a, b)
32594}
32595
32596/// Compare packed unsigned 32-bit integers in a and b for not-equal, and store the results in mask vector k.
32597///
32598/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpneq_epu32_mask&expand=1112)
32599#[inline]
32600#[target_feature(enable = "avx512f")]
32601#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32602#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32603#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32604pub const fn _mm512_cmpneq_epu32_mask(a: __m512i, b: __m512i) -> __mmask16 {
32605    unsafe { simd_bitmask::<u32x16, _>(simd_ne(a.as_u32x16(), b.as_u32x16())) }
32606}
32607
32608/// Compare packed unsigned 32-bit integers in a and b for not-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32609///
32610/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpneq_epu32_mask&expand=1113)
32611#[inline]
32612#[target_feature(enable = "avx512f")]
32613#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32614#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32615#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32616pub const fn _mm512_mask_cmpneq_epu32_mask(k1: __mmask16, a: __m512i, b: __m512i) -> __mmask16 {
32617    _mm512_mask_cmp_epu32_mask::<_MM_CMPINT_NE>(k1, a, b)
32618}
32619
32620/// Compare packed unsigned 32-bit integers in a and b for not-equal, and store the results in mask vector k.
32621///
32622/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmpneq_epu32_mask&expand=1110)
32623#[inline]
32624#[target_feature(enable = "avx512f,avx512vl")]
32625#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32626#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32627#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32628pub const fn _mm256_cmpneq_epu32_mask(a: __m256i, b: __m256i) -> __mmask8 {
32629    unsafe { simd_bitmask::<u32x8, _>(simd_ne(a.as_u32x8(), b.as_u32x8())) }
32630}
32631
32632/// Compare packed unsigned 32-bit integers in a and b for not-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32633///
32634/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmpneq_epu32_mask&expand=1111)
32635#[inline]
32636#[target_feature(enable = "avx512f,avx512vl")]
32637#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32638#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32639#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32640pub const fn _mm256_mask_cmpneq_epu32_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
32641    _mm256_mask_cmp_epu32_mask::<_MM_CMPINT_NE>(k1, a, b)
32642}
32643
32644/// Compare packed unsigned 32-bit integers in a and b for not-equal, and store the results in mask vector k.
32645///
32646/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpneq_epu32_mask&expand=1108)
32647#[inline]
32648#[target_feature(enable = "avx512f,avx512vl")]
32649#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32650#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32651#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32652pub const fn _mm_cmpneq_epu32_mask(a: __m128i, b: __m128i) -> __mmask8 {
32653    unsafe { simd_bitmask::<u32x4, _>(simd_ne(a.as_u32x4(), b.as_u32x4())) }
32654}
32655
32656/// Compare packed unsigned 32-bit integers in a and b for not-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32657///
32658/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmpneq_epu32_mask&expand=1109)
32659#[inline]
32660#[target_feature(enable = "avx512f,avx512vl")]
32661#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32662#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpud
32663#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32664pub const fn _mm_mask_cmpneq_epu32_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
32665    _mm_mask_cmp_epu32_mask::<_MM_CMPINT_NE>(k1, a, b)
32666}
32667
32668/// Compare packed unsigned 32-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.
32669///
32670/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmp_epu32_mask&expand=721)
32671#[inline]
32672#[target_feature(enable = "avx512f")]
32673#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32674#[rustc_legacy_const_generics(2)]
32675#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
32676#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32677pub const fn _mm512_cmp_epu32_mask<const IMM3: _MM_CMPINT_ENUM>(
32678    a: __m512i,
32679    b: __m512i,
32680) -> __mmask16 {
32681    unsafe {
32682        static_assert_uimm_bits!(IMM3, 3);
32683        let a = a.as_u32x16();
32684        let b = b.as_u32x16();
32685        let r = match IMM3 {
32686            0 => simd_eq(a, b),
32687            1 => simd_lt(a, b),
32688            2 => simd_le(a, b),
32689            3 => i32x16::ZERO,
32690            4 => simd_ne(a, b),
32691            5 => simd_ge(a, b),
32692            6 => simd_gt(a, b),
32693            _ => i32x16::splat(-1),
32694        };
32695        simd_bitmask(r)
32696    }
32697}
32698
32699/// Compare packed unsigned 32-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32700///
32701/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmp_epu32_mask&expand=722)
32702#[inline]
32703#[target_feature(enable = "avx512f")]
32704#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32705#[rustc_legacy_const_generics(3)]
32706#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
32707#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32708pub const fn _mm512_mask_cmp_epu32_mask<const IMM3: _MM_CMPINT_ENUM>(
32709    k1: __mmask16,
32710    a: __m512i,
32711    b: __m512i,
32712) -> __mmask16 {
32713    unsafe {
32714        static_assert_uimm_bits!(IMM3, 3);
32715        let a = a.as_u32x16();
32716        let b = b.as_u32x16();
32717        let k1 = simd_select_bitmask(k1, i32x16::splat(-1), i32x16::ZERO);
32718        let r = match IMM3 {
32719            0 => simd_and(k1, simd_eq(a, b)),
32720            1 => simd_and(k1, simd_lt(a, b)),
32721            2 => simd_and(k1, simd_le(a, b)),
32722            3 => i32x16::ZERO,
32723            4 => simd_and(k1, simd_ne(a, b)),
32724            5 => simd_and(k1, simd_ge(a, b)),
32725            6 => simd_and(k1, simd_gt(a, b)),
32726            _ => k1,
32727        };
32728        simd_bitmask(r)
32729    }
32730}
32731
32732/// Compare packed unsigned 32-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.
32733///
32734/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmp_epu32_mask&expand=719)
32735#[inline]
32736#[target_feature(enable = "avx512f,avx512vl")]
32737#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32738#[rustc_legacy_const_generics(2)]
32739#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
32740#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32741pub const fn _mm256_cmp_epu32_mask<const IMM3: _MM_CMPINT_ENUM>(
32742    a: __m256i,
32743    b: __m256i,
32744) -> __mmask8 {
32745    unsafe {
32746        static_assert_uimm_bits!(IMM3, 3);
32747        let a = a.as_u32x8();
32748        let b = b.as_u32x8();
32749        let r = match IMM3 {
32750            0 => simd_eq(a, b),
32751            1 => simd_lt(a, b),
32752            2 => simd_le(a, b),
32753            3 => i32x8::ZERO,
32754            4 => simd_ne(a, b),
32755            5 => simd_ge(a, b),
32756            6 => simd_gt(a, b),
32757            _ => i32x8::splat(-1),
32758        };
32759        simd_bitmask(r)
32760    }
32761}
32762
32763/// Compare packed unsigned 32-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32764///
32765/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmp_epu32_mask&expand=720)
32766#[inline]
32767#[target_feature(enable = "avx512f,avx512vl")]
32768#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32769#[rustc_legacy_const_generics(3)]
32770#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
32771#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32772pub const fn _mm256_mask_cmp_epu32_mask<const IMM3: _MM_CMPINT_ENUM>(
32773    k1: __mmask8,
32774    a: __m256i,
32775    b: __m256i,
32776) -> __mmask8 {
32777    unsafe {
32778        static_assert_uimm_bits!(IMM3, 3);
32779        let a = a.as_u32x8();
32780        let b = b.as_u32x8();
32781        let k1 = simd_select_bitmask(k1, i32x8::splat(-1), i32x8::ZERO);
32782        let r = match IMM3 {
32783            0 => simd_and(k1, simd_eq(a, b)),
32784            1 => simd_and(k1, simd_lt(a, b)),
32785            2 => simd_and(k1, simd_le(a, b)),
32786            3 => i32x8::ZERO,
32787            4 => simd_and(k1, simd_ne(a, b)),
32788            5 => simd_and(k1, simd_ge(a, b)),
32789            6 => simd_and(k1, simd_gt(a, b)),
32790            _ => k1,
32791        };
32792        simd_bitmask(r)
32793    }
32794}
32795
32796/// Compare packed unsigned 32-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.
32797///
32798/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmp_epu32_mask&expand=717)
32799#[inline]
32800#[target_feature(enable = "avx512f,avx512vl")]
32801#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32802#[rustc_legacy_const_generics(2)]
32803#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
32804#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32805pub const fn _mm_cmp_epu32_mask<const IMM3: _MM_CMPINT_ENUM>(a: __m128i, b: __m128i) -> __mmask8 {
32806    unsafe {
32807        static_assert_uimm_bits!(IMM3, 3);
32808        let a = a.as_u32x4();
32809        let b = b.as_u32x4();
32810        let r = match IMM3 {
32811            0 => simd_eq(a, b),
32812            1 => simd_lt(a, b),
32813            2 => simd_le(a, b),
32814            3 => i32x4::ZERO,
32815            4 => simd_ne(a, b),
32816            5 => simd_ge(a, b),
32817            6 => simd_gt(a, b),
32818            _ => i32x4::splat(-1),
32819        };
32820        simd_bitmask(r)
32821    }
32822}
32823
32824/// Compare packed unsigned 32-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32825///
32826/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmp_epu32_mask&expand=718)
32827#[inline]
32828#[target_feature(enable = "avx512f,avx512vl")]
32829#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32830#[rustc_legacy_const_generics(3)]
32831#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
32832#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32833pub const fn _mm_mask_cmp_epu32_mask<const IMM3: _MM_CMPINT_ENUM>(
32834    k1: __mmask8,
32835    a: __m128i,
32836    b: __m128i,
32837) -> __mmask8 {
32838    unsafe {
32839        static_assert_uimm_bits!(IMM3, 3);
32840        let a = a.as_u32x4();
32841        let b = b.as_u32x4();
32842        let k1 = simd_select_bitmask(k1, i32x4::splat(-1), i32x4::ZERO);
32843        let r = match IMM3 {
32844            0 => simd_and(k1, simd_eq(a, b)),
32845            1 => simd_and(k1, simd_lt(a, b)),
32846            2 => simd_and(k1, simd_le(a, b)),
32847            3 => i32x4::ZERO,
32848            4 => simd_and(k1, simd_ne(a, b)),
32849            5 => simd_and(k1, simd_ge(a, b)),
32850            6 => simd_and(k1, simd_gt(a, b)),
32851            _ => k1,
32852        };
32853        simd_bitmask(r)
32854    }
32855}
32856
32857/// Compare packed signed 32-bit integers in a and b for less-than, and store the results in mask vector k.
32858///
32859/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmplt_epi32_mask&expand=1029)
32860#[inline]
32861#[target_feature(enable = "avx512f")]
32862#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32863#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
32864#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32865pub const fn _mm512_cmplt_epi32_mask(a: __m512i, b: __m512i) -> __mmask16 {
32866    unsafe { simd_bitmask::<i32x16, _>(simd_lt(a.as_i32x16(), b.as_i32x16())) }
32867}
32868
32869/// Compare packed signed 32-bit integers in a and b for less-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32870///
32871/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmplt_epi32_mask&expand=1031)
32872#[inline]
32873#[target_feature(enable = "avx512f")]
32874#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32875#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
32876#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32877pub const fn _mm512_mask_cmplt_epi32_mask(k1: __mmask16, a: __m512i, b: __m512i) -> __mmask16 {
32878    _mm512_mask_cmp_epi32_mask::<_MM_CMPINT_LT>(k1, a, b)
32879}
32880
32881/// Compare packed signed 32-bit integers in a and b for less-than, and store the results in mask vector k.
32882///
32883/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmplt_epi32_mask&expand=1027)
32884#[inline]
32885#[target_feature(enable = "avx512f,avx512vl")]
32886#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32887#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
32888#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32889pub const fn _mm256_cmplt_epi32_mask(a: __m256i, b: __m256i) -> __mmask8 {
32890    unsafe { simd_bitmask::<i32x8, _>(simd_lt(a.as_i32x8(), b.as_i32x8())) }
32891}
32892
32893/// Compare packed signed 32-bit integers in a and b for less-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32894///
32895/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmplt_epi32_mask&expand=1028)
32896#[inline]
32897#[target_feature(enable = "avx512f,avx512vl")]
32898#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32899#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
32900#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32901pub const fn _mm256_mask_cmplt_epi32_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
32902    _mm256_mask_cmp_epi32_mask::<_MM_CMPINT_LT>(k1, a, b)
32903}
32904
32905/// Compare packed signed 32-bit integers in a and b for less-than, and store the results in mask vector k.
32906///
32907/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_epi32_mask&expand=1025)
32908#[inline]
32909#[target_feature(enable = "avx512f,avx512vl")]
32910#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32911#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
32912#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32913pub const fn _mm_cmplt_epi32_mask(a: __m128i, b: __m128i) -> __mmask8 {
32914    unsafe { simd_bitmask::<i32x4, _>(simd_lt(a.as_i32x4(), b.as_i32x4())) }
32915}
32916
32917/// Compare packed signed 32-bit integers in a and b for less-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32918///
32919/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmplt_epi32_mask&expand=1026)
32920#[inline]
32921#[target_feature(enable = "avx512f,avx512vl")]
32922#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32923#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
32924#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32925pub const fn _mm_mask_cmplt_epi32_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
32926    _mm_mask_cmp_epi32_mask::<_MM_CMPINT_LT>(k1, a, b)
32927}
32928
32929/// Compare packed signed 32-bit integers in a and b for greater-than, and store the results in mask vector k.
32930///
32931/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpgt_epi32_mask&expand=905)
32932#[inline]
32933#[target_feature(enable = "avx512f")]
32934#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32935#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
32936#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32937pub const fn _mm512_cmpgt_epi32_mask(a: __m512i, b: __m512i) -> __mmask16 {
32938    unsafe { simd_bitmask::<i32x16, _>(simd_gt(a.as_i32x16(), b.as_i32x16())) }
32939}
32940
32941/// Compare packed signed 32-bit integers in a and b for greater-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32942///
32943/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpgt_epi32_mask&expand=906)
32944#[inline]
32945#[target_feature(enable = "avx512f")]
32946#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32947#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
32948#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32949pub const fn _mm512_mask_cmpgt_epi32_mask(k1: __mmask16, a: __m512i, b: __m512i) -> __mmask16 {
32950    _mm512_mask_cmp_epi32_mask::<_MM_CMPINT_NLE>(k1, a, b)
32951}
32952
32953/// Compare packed signed 32-bit integers in a and b for greater-than, and store the results in mask vector k.
32954///
32955/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmpgt_epi32_mask&expand=903)
32956#[inline]
32957#[target_feature(enable = "avx512f,avx512vl")]
32958#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32959#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
32960#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32961pub const fn _mm256_cmpgt_epi32_mask(a: __m256i, b: __m256i) -> __mmask8 {
32962    unsafe { simd_bitmask::<i32x8, _>(simd_gt(a.as_i32x8(), b.as_i32x8())) }
32963}
32964
32965/// Compare packed signed 32-bit integers in a and b for greater-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32966///
32967/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmpgt_epi32_mask&expand=904)
32968#[inline]
32969#[target_feature(enable = "avx512f,avx512vl")]
32970#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32971#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
32972#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32973pub const fn _mm256_mask_cmpgt_epi32_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
32974    _mm256_mask_cmp_epi32_mask::<_MM_CMPINT_NLE>(k1, a, b)
32975}
32976
32977/// Compare packed signed 32-bit integers in a and b for greater-than, and store the results in mask vector k.
32978///
32979/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_epi32_mask&expand=901)
32980#[inline]
32981#[target_feature(enable = "avx512f,avx512vl")]
32982#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32983#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
32984#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32985pub const fn _mm_cmpgt_epi32_mask(a: __m128i, b: __m128i) -> __mmask8 {
32986    unsafe { simd_bitmask::<i32x4, _>(simd_gt(a.as_i32x4(), b.as_i32x4())) }
32987}
32988
32989/// Compare packed signed 32-bit integers in a and b for greater-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
32990///
32991/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmpgt_epi32_mask&expand=902)
32992#[inline]
32993#[target_feature(enable = "avx512f,avx512vl")]
32994#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
32995#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
32996#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
32997pub const fn _mm_mask_cmpgt_epi32_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
32998    _mm_mask_cmp_epi32_mask::<_MM_CMPINT_NLE>(k1, a, b)
32999}
33000
33001/// Compare packed signed 32-bit integers in a and b for less-than-or-equal, and store the results in mask vector k.
33002///
33003/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmple_epi32_mask&expand=971)
33004#[inline]
33005#[target_feature(enable = "avx512f")]
33006#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33007#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33008#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33009pub const fn _mm512_cmple_epi32_mask(a: __m512i, b: __m512i) -> __mmask16 {
33010    unsafe { simd_bitmask::<i32x16, _>(simd_le(a.as_i32x16(), b.as_i32x16())) }
33011}
33012
33013/// Compare packed signed 32-bit integers in a and b for less-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33014///
33015/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmple_epi32_mask&expand=972)
33016#[inline]
33017#[target_feature(enable = "avx512f")]
33018#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33019#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33020#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33021pub const fn _mm512_mask_cmple_epi32_mask(k1: __mmask16, a: __m512i, b: __m512i) -> __mmask16 {
33022    _mm512_mask_cmp_epi32_mask::<_MM_CMPINT_LE>(k1, a, b)
33023}
33024
33025/// Compare packed signed 32-bit integers in a and b for less-than-or-equal, and store the results in mask vector k.
33026///
33027/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmple_epi32_mask&expand=969)
33028#[inline]
33029#[target_feature(enable = "avx512f,avx512vl")]
33030#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33031#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33032#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33033pub const fn _mm256_cmple_epi32_mask(a: __m256i, b: __m256i) -> __mmask8 {
33034    unsafe { simd_bitmask::<i32x8, _>(simd_le(a.as_i32x8(), b.as_i32x8())) }
33035}
33036
33037/// Compare packed signed 32-bit integers in a and b for less-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33038///
33039/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmple_epi32_mask&expand=970)
33040#[inline]
33041#[target_feature(enable = "avx512f,avx512vl")]
33042#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33043#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33044#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33045pub const fn _mm256_mask_cmple_epi32_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
33046    _mm256_mask_cmp_epi32_mask::<_MM_CMPINT_LE>(k1, a, b)
33047}
33048
33049/// Compare packed signed 32-bit integers in a and b for less-than-or-equal, and store the results in mask vector k.
33050///
33051/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmple_epi32_mask&expand=967)
33052#[inline]
33053#[target_feature(enable = "avx512f,avx512vl")]
33054#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33055#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33056#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33057pub const fn _mm_cmple_epi32_mask(a: __m128i, b: __m128i) -> __mmask8 {
33058    unsafe { simd_bitmask::<i32x4, _>(simd_le(a.as_i32x4(), b.as_i32x4())) }
33059}
33060
33061/// Compare packed signed 32-bit integers in a and b for less-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33062///
33063/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmple_epi32_mask&expand=968)
33064#[inline]
33065#[target_feature(enable = "avx512f,avx512vl")]
33066#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33067#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33068#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33069pub const fn _mm_mask_cmple_epi32_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
33070    _mm_mask_cmp_epi32_mask::<_MM_CMPINT_LE>(k1, a, b)
33071}
33072
33073/// Compare packed signed 32-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k.
33074///
33075/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpge_epi32_mask&expand=849)
33076#[inline]
33077#[target_feature(enable = "avx512f")]
33078#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33079#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33080#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33081pub const fn _mm512_cmpge_epi32_mask(a: __m512i, b: __m512i) -> __mmask16 {
33082    unsafe { simd_bitmask::<i32x16, _>(simd_ge(a.as_i32x16(), b.as_i32x16())) }
33083}
33084
33085/// Compare packed signed 32-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33086///
33087/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpge_epi32_mask&expand=850)
33088#[inline]
33089#[target_feature(enable = "avx512f")]
33090#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33091#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33092#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33093pub const fn _mm512_mask_cmpge_epi32_mask(k1: __mmask16, a: __m512i, b: __m512i) -> __mmask16 {
33094    _mm512_mask_cmp_epi32_mask::<_MM_CMPINT_NLT>(k1, a, b)
33095}
33096
33097/// Compare packed signed 32-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k.
33098///
33099/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmpge_epi32_mask&expand=847)
33100#[inline]
33101#[target_feature(enable = "avx512f,avx512vl")]
33102#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33103#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33104#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33105pub const fn _mm256_cmpge_epi32_mask(a: __m256i, b: __m256i) -> __mmask8 {
33106    unsafe { simd_bitmask::<i32x8, _>(simd_ge(a.as_i32x8(), b.as_i32x8())) }
33107}
33108
33109/// Compare packed signed 32-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33110///
33111/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmpge_epi32_mask&expand=848)
33112#[inline]
33113#[target_feature(enable = "avx512f,avx512vl")]
33114#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33115#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33116#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33117pub const fn _mm256_mask_cmpge_epi32_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
33118    _mm256_mask_cmp_epi32_mask::<_MM_CMPINT_NLT>(k1, a, b)
33119}
33120
33121/// Compare packed signed 32-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k.
33122///
33123/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpge_epi32_mask&expand=845)
33124#[inline]
33125#[target_feature(enable = "avx512f,avx512vl")]
33126#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33127#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33128#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33129pub const fn _mm_cmpge_epi32_mask(a: __m128i, b: __m128i) -> __mmask8 {
33130    unsafe { simd_bitmask::<i32x4, _>(simd_ge(a.as_i32x4(), b.as_i32x4())) }
33131}
33132
33133/// Compare packed signed 32-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33134///
33135/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmpge_epi32_mask&expand=846)
33136#[inline]
33137#[target_feature(enable = "avx512f,avx512vl")]
33138#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33139#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33140#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33141pub const fn _mm_mask_cmpge_epi32_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
33142    _mm_mask_cmp_epi32_mask::<_MM_CMPINT_NLT>(k1, a, b)
33143}
33144
33145/// Compare packed 32-bit integers in a and b for equality, and store the results in mask vector k.
33146///
33147/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpeq_epi32_mask&expand=779)
33148#[inline]
33149#[target_feature(enable = "avx512f")]
33150#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33151#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33152#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33153pub const fn _mm512_cmpeq_epi32_mask(a: __m512i, b: __m512i) -> __mmask16 {
33154    unsafe { simd_bitmask::<i32x16, _>(simd_eq(a.as_i32x16(), b.as_i32x16())) }
33155}
33156
33157/// Compare packed 32-bit integers in a and b for equality, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33158///
33159/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpeq_epi32_mask&expand=780)
33160#[inline]
33161#[target_feature(enable = "avx512f")]
33162#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33163#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33164#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33165pub const fn _mm512_mask_cmpeq_epi32_mask(k1: __mmask16, a: __m512i, b: __m512i) -> __mmask16 {
33166    _mm512_mask_cmp_epi32_mask::<_MM_CMPINT_EQ>(k1, a, b)
33167}
33168
33169/// Compare packed 32-bit integers in a and b for equality, and store the results in mask vector k.
33170///
33171/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmpeq_epi32_mask&expand=777)
33172#[inline]
33173#[target_feature(enable = "avx512f,avx512vl")]
33174#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33175#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33176#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33177pub const fn _mm256_cmpeq_epi32_mask(a: __m256i, b: __m256i) -> __mmask8 {
33178    unsafe { simd_bitmask::<i32x8, _>(simd_eq(a.as_i32x8(), b.as_i32x8())) }
33179}
33180
33181/// Compare packed 32-bit integers in a and b for equality, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33182///
33183/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmpeq_epi32_mask&expand=778)
33184#[inline]
33185#[target_feature(enable = "avx512f,avx512vl")]
33186#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33187#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33188#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33189pub const fn _mm256_mask_cmpeq_epi32_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
33190    _mm256_mask_cmp_epi32_mask::<_MM_CMPINT_EQ>(k1, a, b)
33191}
33192
33193/// Compare packed 32-bit integers in a and b for equality, and store the results in mask vector k.
33194///
33195/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_epi32_mask&expand=775)
33196#[inline]
33197#[target_feature(enable = "avx512f,avx512vl")]
33198#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33199#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33200#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33201pub const fn _mm_cmpeq_epi32_mask(a: __m128i, b: __m128i) -> __mmask8 {
33202    unsafe { simd_bitmask::<i32x4, _>(simd_eq(a.as_i32x4(), b.as_i32x4())) }
33203}
33204
33205/// Compare packed 32-bit integers in a and b for equality, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33206///
33207/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmpeq_epi32_mask&expand=776)
33208#[inline]
33209#[target_feature(enable = "avx512f,avx512vl")]
33210#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33211#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33212#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33213pub const fn _mm_mask_cmpeq_epi32_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
33214    _mm_mask_cmp_epi32_mask::<_MM_CMPINT_EQ>(k1, a, b)
33215}
33216
33217/// Compare packed 32-bit integers in a and b for not-equal, and store the results in mask vector k.
33218///
33219/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpneq_epi32_mask&expand=1088)
33220#[inline]
33221#[target_feature(enable = "avx512f")]
33222#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33223#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33224#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33225pub const fn _mm512_cmpneq_epi32_mask(a: __m512i, b: __m512i) -> __mmask16 {
33226    unsafe { simd_bitmask::<i32x16, _>(simd_ne(a.as_i32x16(), b.as_i32x16())) }
33227}
33228
33229/// Compare packed 32-bit integers in a and b for not-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33230///
33231/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpneq_epi32_mask&expand=1089)
33232#[inline]
33233#[target_feature(enable = "avx512f")]
33234#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33235#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33236#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33237pub const fn _mm512_mask_cmpneq_epi32_mask(k1: __mmask16, a: __m512i, b: __m512i) -> __mmask16 {
33238    _mm512_mask_cmp_epi32_mask::<_MM_CMPINT_NE>(k1, a, b)
33239}
33240
33241/// Compare packed 32-bit integers in a and b for not-equal, and store the results in mask vector k.
33242///
33243/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmpneq_epi32_mask&expand=1086)
33244#[inline]
33245#[target_feature(enable = "avx512f,avx512vl")]
33246#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33247#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33248#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33249pub const fn _mm256_cmpneq_epi32_mask(a: __m256i, b: __m256i) -> __mmask8 {
33250    unsafe { simd_bitmask::<i32x8, _>(simd_ne(a.as_i32x8(), b.as_i32x8())) }
33251}
33252
33253/// Compare packed 32-bit integers in a and b for not-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33254///
33255/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmpneq_epi32_mask&expand=1087)
33256#[inline]
33257#[target_feature(enable = "avx512f,avx512vl")]
33258#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33259#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33260#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33261pub const fn _mm256_mask_cmpneq_epi32_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
33262    _mm256_mask_cmp_epi32_mask::<_MM_CMPINT_NE>(k1, a, b)
33263}
33264
33265/// Compare packed 32-bit integers in a and b for not-equal, and store the results in mask vector k.
33266///
33267/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpneq_epi32_mask&expand=1084)
33268#[inline]
33269#[target_feature(enable = "avx512f,avx512vl")]
33270#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33271#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33272#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33273pub const fn _mm_cmpneq_epi32_mask(a: __m128i, b: __m128i) -> __mmask8 {
33274    unsafe { simd_bitmask::<i32x4, _>(simd_ne(a.as_i32x4(), b.as_i32x4())) }
33275}
33276
33277/// Compare packed 32-bit integers in a and b for not-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33278///
33279/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmpneq_epi32_mask&expand=1085)
33280#[inline]
33281#[target_feature(enable = "avx512f,avx512vl")]
33282#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33283#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpd
33284#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33285pub const fn _mm_mask_cmpneq_epi32_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
33286    _mm_mask_cmp_epi32_mask::<_MM_CMPINT_NE>(k1, a, b)
33287}
33288
33289/// Compare packed signed 32-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.
33290///
33291/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmp_epi32_mask&expand=697)
33292#[inline]
33293#[target_feature(enable = "avx512f")]
33294#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33295#[rustc_legacy_const_generics(2)]
33296#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
33297#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33298pub const fn _mm512_cmp_epi32_mask<const IMM3: _MM_CMPINT_ENUM>(
33299    a: __m512i,
33300    b: __m512i,
33301) -> __mmask16 {
33302    unsafe {
33303        static_assert_uimm_bits!(IMM3, 3);
33304        let a = a.as_i32x16();
33305        let b = b.as_i32x16();
33306        let r = match IMM3 {
33307            0 => simd_eq(a, b),
33308            1 => simd_lt(a, b),
33309            2 => simd_le(a, b),
33310            3 => i32x16::ZERO,
33311            4 => simd_ne(a, b),
33312            5 => simd_ge(a, b),
33313            6 => simd_gt(a, b),
33314            _ => i32x16::splat(-1),
33315        };
33316        simd_bitmask(r)
33317    }
33318}
33319
33320/// Compare packed signed 32-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33321///
33322/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmp_epi32_mask&expand=698)
33323#[inline]
33324#[target_feature(enable = "avx512f")]
33325#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33326#[rustc_legacy_const_generics(3)]
33327#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
33328#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33329pub const fn _mm512_mask_cmp_epi32_mask<const IMM3: _MM_CMPINT_ENUM>(
33330    k1: __mmask16,
33331    a: __m512i,
33332    b: __m512i,
33333) -> __mmask16 {
33334    unsafe {
33335        static_assert_uimm_bits!(IMM3, 3);
33336        let a = a.as_i32x16();
33337        let b = b.as_i32x16();
33338        let k1 = simd_select_bitmask(k1, i32x16::splat(-1), i32x16::ZERO);
33339        let r = match IMM3 {
33340            0 => simd_and(k1, simd_eq(a, b)),
33341            1 => simd_and(k1, simd_lt(a, b)),
33342            2 => simd_and(k1, simd_le(a, b)),
33343            3 => i32x16::ZERO,
33344            4 => simd_and(k1, simd_ne(a, b)),
33345            5 => simd_and(k1, simd_ge(a, b)),
33346            6 => simd_and(k1, simd_gt(a, b)),
33347            _ => k1,
33348        };
33349        simd_bitmask(r)
33350    }
33351}
33352
33353/// Compare packed signed 32-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.
33354///
33355/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=#text=_mm256_cmp_epi32_mask&expand=695)
33356#[inline]
33357#[target_feature(enable = "avx512f,avx512vl")]
33358#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33359#[rustc_legacy_const_generics(2)]
33360#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
33361#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33362pub const fn _mm256_cmp_epi32_mask<const IMM3: _MM_CMPINT_ENUM>(
33363    a: __m256i,
33364    b: __m256i,
33365) -> __mmask8 {
33366    unsafe {
33367        static_assert_uimm_bits!(IMM3, 3);
33368        let a = a.as_i32x8();
33369        let b = b.as_i32x8();
33370        let r = match IMM3 {
33371            0 => simd_eq(a, b),
33372            1 => simd_lt(a, b),
33373            2 => simd_le(a, b),
33374            3 => i32x8::ZERO,
33375            4 => simd_ne(a, b),
33376            5 => simd_ge(a, b),
33377            6 => simd_gt(a, b),
33378            _ => i32x8::splat(-1),
33379        };
33380        simd_bitmask(r)
33381    }
33382}
33383
33384/// Compare packed signed 32-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33385///
33386/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmp_epi32_mask&expand=696)
33387#[inline]
33388#[target_feature(enable = "avx512f,avx512vl")]
33389#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33390#[rustc_legacy_const_generics(3)]
33391#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
33392#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33393pub const fn _mm256_mask_cmp_epi32_mask<const IMM3: _MM_CMPINT_ENUM>(
33394    k1: __mmask8,
33395    a: __m256i,
33396    b: __m256i,
33397) -> __mmask8 {
33398    unsafe {
33399        static_assert_uimm_bits!(IMM3, 3);
33400        let a = a.as_i32x8();
33401        let b = b.as_i32x8();
33402        let k1 = simd_select_bitmask(k1, i32x8::splat(-1), i32x8::ZERO);
33403        let r = match IMM3 {
33404            0 => simd_and(k1, simd_eq(a, b)),
33405            1 => simd_and(k1, simd_lt(a, b)),
33406            2 => simd_and(k1, simd_le(a, b)),
33407            3 => i32x8::ZERO,
33408            4 => simd_and(k1, simd_ne(a, b)),
33409            5 => simd_and(k1, simd_ge(a, b)),
33410            6 => simd_and(k1, simd_gt(a, b)),
33411            _ => k1,
33412        };
33413        simd_bitmask(r)
33414    }
33415}
33416
33417/// Compare packed signed 32-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.
33418///
33419/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmp_epi32_mask&expand=693)
33420#[inline]
33421#[target_feature(enable = "avx512f,avx512vl")]
33422#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33423#[rustc_legacy_const_generics(2)]
33424#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
33425#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33426pub const fn _mm_cmp_epi32_mask<const IMM3: _MM_CMPINT_ENUM>(a: __m128i, b: __m128i) -> __mmask8 {
33427    unsafe {
33428        static_assert_uimm_bits!(IMM3, 3);
33429        let a = a.as_i32x4();
33430        let b = b.as_i32x4();
33431        let r = match IMM3 {
33432            0 => simd_eq(a, b),
33433            1 => simd_lt(a, b),
33434            2 => simd_le(a, b),
33435            3 => i32x4::ZERO,
33436            4 => simd_ne(a, b),
33437            5 => simd_ge(a, b),
33438            6 => simd_gt(a, b),
33439            _ => i32x4::splat(-1),
33440        };
33441        simd_bitmask(r)
33442    }
33443}
33444
33445/// Compare packed signed 32-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33446///
33447/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmp_epi32_mask&expand=694)
33448#[inline]
33449#[target_feature(enable = "avx512f,avx512vl")]
33450#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33451#[rustc_legacy_const_generics(3)]
33452#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
33453#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33454pub const fn _mm_mask_cmp_epi32_mask<const IMM3: _MM_CMPINT_ENUM>(
33455    k1: __mmask8,
33456    a: __m128i,
33457    b: __m128i,
33458) -> __mmask8 {
33459    unsafe {
33460        static_assert_uimm_bits!(IMM3, 3);
33461        let a = a.as_i32x4();
33462        let b = b.as_i32x4();
33463        let k1 = simd_select_bitmask(k1, i32x4::splat(-1), i32x4::ZERO);
33464        let r = match IMM3 {
33465            0 => simd_and(k1, simd_eq(a, b)),
33466            1 => simd_and(k1, simd_lt(a, b)),
33467            2 => simd_and(k1, simd_le(a, b)),
33468            3 => i32x4::ZERO,
33469            4 => simd_and(k1, simd_ne(a, b)),
33470            5 => simd_and(k1, simd_ge(a, b)),
33471            6 => simd_and(k1, simd_gt(a, b)),
33472            _ => k1,
33473        };
33474        simd_bitmask(r)
33475    }
33476}
33477
33478/// Compare packed unsigned 64-bit integers in a and b for less-than, and store the results in mask vector k.
33479///
33480/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmplt_epu64_mask&expand=1062)
33481#[inline]
33482#[target_feature(enable = "avx512f")]
33483#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33484#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33485#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33486pub const fn _mm512_cmplt_epu64_mask(a: __m512i, b: __m512i) -> __mmask8 {
33487    unsafe { simd_bitmask::<__m512i, _>(simd_lt(a.as_u64x8(), b.as_u64x8())) }
33488}
33489
33490/// Compare packed unsigned 64-bit integers in a and b for less-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33491///
33492/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmplt_epu64_mask&expand=1063)
33493#[inline]
33494#[target_feature(enable = "avx512f")]
33495#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33496#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33497#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33498pub const fn _mm512_mask_cmplt_epu64_mask(k1: __mmask8, a: __m512i, b: __m512i) -> __mmask8 {
33499    _mm512_mask_cmp_epu64_mask::<_MM_CMPINT_LT>(k1, a, b)
33500}
33501
33502/// Compare packed unsigned 64-bit integers in a and b for less-than, and store the results in mask vector k.
33503///
33504/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmplt_epu64_mask&expand=1060)
33505#[inline]
33506#[target_feature(enable = "avx512f,avx512vl")]
33507#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33508#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33509#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33510pub const fn _mm256_cmplt_epu64_mask(a: __m256i, b: __m256i) -> __mmask8 {
33511    unsafe { simd_bitmask::<__m256i, _>(simd_lt(a.as_u64x4(), b.as_u64x4())) }
33512}
33513
33514/// Compare packed unsigned 64-bit integers in a and b for less-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33515///
33516/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmplt_epu64_mask&expand=1061)
33517#[inline]
33518#[target_feature(enable = "avx512f,avx512vl")]
33519#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33520#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33521#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33522pub const fn _mm256_mask_cmplt_epu64_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
33523    _mm256_mask_cmp_epu64_mask::<_MM_CMPINT_LT>(k1, a, b)
33524}
33525
33526/// Compare packed unsigned 64-bit integers in a and b for less-than, and store the results in mask vector k.
33527///
33528/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_epu64_mask&expand=1058)
33529#[inline]
33530#[target_feature(enable = "avx512f,avx512vl")]
33531#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33532#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33533#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33534pub const fn _mm_cmplt_epu64_mask(a: __m128i, b: __m128i) -> __mmask8 {
33535    unsafe { simd_bitmask::<__m128i, _>(simd_lt(a.as_u64x2(), b.as_u64x2())) }
33536}
33537
33538/// Compare packed unsigned 64-bit integers in a and b for less-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33539///
33540/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmplt_epu64_mask&expand=1059)
33541#[inline]
33542#[target_feature(enable = "avx512f,avx512vl")]
33543#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33544#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33545#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33546pub const fn _mm_mask_cmplt_epu64_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
33547    _mm_mask_cmp_epu64_mask::<_MM_CMPINT_LT>(k1, a, b)
33548}
33549
33550/// Compare packed unsigned 64-bit integers in a and b for greater-than, and store the results in mask vector k.
33551///
33552/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpgt_epu64_mask&expand=939)
33553#[inline]
33554#[target_feature(enable = "avx512f")]
33555#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33556#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33557#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33558pub const fn _mm512_cmpgt_epu64_mask(a: __m512i, b: __m512i) -> __mmask8 {
33559    unsafe { simd_bitmask::<__m512i, _>(simd_gt(a.as_u64x8(), b.as_u64x8())) }
33560}
33561
33562/// Compare packed unsigned 64-bit integers in a and b for greater-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33563///
33564/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpgt_epu64_mask&expand=940)
33565#[inline]
33566#[target_feature(enable = "avx512f")]
33567#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33568#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33569#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33570pub const fn _mm512_mask_cmpgt_epu64_mask(k1: __mmask8, a: __m512i, b: __m512i) -> __mmask8 {
33571    _mm512_mask_cmp_epu64_mask::<_MM_CMPINT_NLE>(k1, a, b)
33572}
33573
33574/// Compare packed unsigned 64-bit integers in a and b for greater-than, and store the results in mask vector k.
33575///
33576/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmpgt_epu64_mask&expand=937)
33577#[inline]
33578#[target_feature(enable = "avx512f,avx512vl")]
33579#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33580#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33581#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33582pub const fn _mm256_cmpgt_epu64_mask(a: __m256i, b: __m256i) -> __mmask8 {
33583    unsafe { simd_bitmask::<__m256i, _>(simd_gt(a.as_u64x4(), b.as_u64x4())) }
33584}
33585
33586/// Compare packed unsigned 64-bit integers in a and b for greater-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33587///
33588/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmpgt_epu64_mask&expand=938)
33589#[inline]
33590#[target_feature(enable = "avx512f,avx512vl")]
33591#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33592#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33593#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33594pub const fn _mm256_mask_cmpgt_epu64_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
33595    _mm256_mask_cmp_epu64_mask::<_MM_CMPINT_NLE>(k1, a, b)
33596}
33597
33598/// Compare packed unsigned 64-bit integers in a and b for greater-than, and store the results in mask vector k.
33599///
33600/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_epu64_mask&expand=935)
33601#[inline]
33602#[target_feature(enable = "avx512f,avx512vl")]
33603#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33604#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33605#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33606pub const fn _mm_cmpgt_epu64_mask(a: __m128i, b: __m128i) -> __mmask8 {
33607    unsafe { simd_bitmask::<__m128i, _>(simd_gt(a.as_u64x2(), b.as_u64x2())) }
33608}
33609
33610/// Compare packed unsigned 64-bit integers in a and b for greater-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33611///
33612/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmpgt_epu64_mask&expand=936)
33613#[inline]
33614#[target_feature(enable = "avx512f,avx512vl")]
33615#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33616#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33617#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33618pub const fn _mm_mask_cmpgt_epu64_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
33619    _mm_mask_cmp_epu64_mask::<_MM_CMPINT_NLE>(k1, a, b)
33620}
33621
33622/// Compare packed unsigned 64-bit integers in a and b for less-than-or-equal, and store the results in mask vector k.
33623///
33624/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmple_epu64_mask&expand=1001)
33625#[inline]
33626#[target_feature(enable = "avx512f")]
33627#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33628#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33629#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33630pub const fn _mm512_cmple_epu64_mask(a: __m512i, b: __m512i) -> __mmask8 {
33631    unsafe { simd_bitmask::<__m512i, _>(simd_le(a.as_u64x8(), b.as_u64x8())) }
33632}
33633
33634/// Compare packed unsigned 64-bit integers in a and b for less-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33635///
33636/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmple_epu64_mask&expand=1002)
33637#[inline]
33638#[target_feature(enable = "avx512f")]
33639#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33640#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33641#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33642pub const fn _mm512_mask_cmple_epu64_mask(k1: __mmask8, a: __m512i, b: __m512i) -> __mmask8 {
33643    _mm512_mask_cmp_epu64_mask::<_MM_CMPINT_LE>(k1, a, b)
33644}
33645
33646/// Compare packed unsigned 64-bit integers in a and b for less-than-or-equal, and store the results in mask vector k.
33647///
33648/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmple_epu64_mask&expand=999)
33649#[inline]
33650#[target_feature(enable = "avx512f,avx512vl")]
33651#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33652#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33653#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33654pub const fn _mm256_cmple_epu64_mask(a: __m256i, b: __m256i) -> __mmask8 {
33655    unsafe { simd_bitmask::<__m256i, _>(simd_le(a.as_u64x4(), b.as_u64x4())) }
33656}
33657
33658/// Compare packed unsigned 64-bit integers in a and b for less-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33659///
33660/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmple_epu64_mask&expand=1000)
33661#[inline]
33662#[target_feature(enable = "avx512f,avx512vl")]
33663#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33664#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33665#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33666pub const fn _mm256_mask_cmple_epu64_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
33667    _mm256_mask_cmp_epu64_mask::<_MM_CMPINT_LE>(k1, a, b)
33668}
33669
33670/// Compare packed unsigned 64-bit integers in a and b for less-than-or-equal, and store the results in mask vector k.
33671///
33672/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmple_epu64_mask&expand=997)
33673#[inline]
33674#[target_feature(enable = "avx512f,avx512vl")]
33675#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33676#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33677#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33678pub const fn _mm_cmple_epu64_mask(a: __m128i, b: __m128i) -> __mmask8 {
33679    unsafe { simd_bitmask::<__m128i, _>(simd_le(a.as_u64x2(), b.as_u64x2())) }
33680}
33681
33682/// Compare packed unsigned 64-bit integers in a and b for less-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33683///
33684/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmple_epu64_mask&expand=998)
33685#[inline]
33686#[target_feature(enable = "avx512f,avx512vl")]
33687#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33688#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33689#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33690pub const fn _mm_mask_cmple_epu64_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
33691    _mm_mask_cmp_epu64_mask::<_MM_CMPINT_LE>(k1, a, b)
33692}
33693
33694/// Compare packed unsigned 64-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k.
33695///
33696/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpge_epu64_mask&expand=879)
33697#[inline]
33698#[target_feature(enable = "avx512f")]
33699#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33700#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33701#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33702pub const fn _mm512_cmpge_epu64_mask(a: __m512i, b: __m512i) -> __mmask8 {
33703    unsafe { simd_bitmask::<__m512i, _>(simd_ge(a.as_u64x8(), b.as_u64x8())) }
33704}
33705
33706/// Compare packed unsigned 64-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33707///
33708/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpge_epu64_mask&expand=880)
33709#[inline]
33710#[target_feature(enable = "avx512f")]
33711#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33712#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33713#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33714pub const fn _mm512_mask_cmpge_epu64_mask(k1: __mmask8, a: __m512i, b: __m512i) -> __mmask8 {
33715    _mm512_mask_cmp_epu64_mask::<_MM_CMPINT_NLT>(k1, a, b)
33716}
33717
33718/// Compare packed unsigned 64-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k.
33719///
33720/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmpge_epu64_mask&expand=877)
33721#[inline]
33722#[target_feature(enable = "avx512f,avx512vl")]
33723#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33724#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33725#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33726pub const fn _mm256_cmpge_epu64_mask(a: __m256i, b: __m256i) -> __mmask8 {
33727    unsafe { simd_bitmask::<__m256i, _>(simd_ge(a.as_u64x4(), b.as_u64x4())) }
33728}
33729
33730/// Compare packed unsigned 64-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33731///
33732/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmpge_epu64_mask&expand=878)
33733#[inline]
33734#[target_feature(enable = "avx512f,avx512vl")]
33735#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33736#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33737#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33738pub const fn _mm256_mask_cmpge_epu64_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
33739    _mm256_mask_cmp_epu64_mask::<_MM_CMPINT_NLT>(k1, a, b)
33740}
33741
33742/// Compare packed unsigned 64-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k.
33743///
33744/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpge_epu64_mask&expand=875)
33745#[inline]
33746#[target_feature(enable = "avx512f,avx512vl")]
33747#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33748#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33749#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33750pub const fn _mm_cmpge_epu64_mask(a: __m128i, b: __m128i) -> __mmask8 {
33751    unsafe { simd_bitmask::<__m128i, _>(simd_ge(a.as_u64x2(), b.as_u64x2())) }
33752}
33753
33754/// Compare packed unsigned 64-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33755///
33756/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmpge_epu64_mask&expand=876)
33757#[inline]
33758#[target_feature(enable = "avx512f,avx512vl")]
33759#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33760#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33761#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33762pub const fn _mm_mask_cmpge_epu64_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
33763    _mm_mask_cmp_epu64_mask::<_MM_CMPINT_NLT>(k1, a, b)
33764}
33765
33766/// Compare packed unsigned 64-bit integers in a and b for equality, and store the results in mask vector k.
33767///
33768/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpeq_epu64_mask&expand=813)
33769#[inline]
33770#[target_feature(enable = "avx512f")]
33771#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33772#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33773#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33774pub const fn _mm512_cmpeq_epu64_mask(a: __m512i, b: __m512i) -> __mmask8 {
33775    unsafe { simd_bitmask::<__m512i, _>(simd_eq(a.as_u64x8(), b.as_u64x8())) }
33776}
33777
33778/// Compare packed unsigned 64-bit integers in a and b for equality, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33779///
33780/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpeq_epu64_mask&expand=814)
33781#[inline]
33782#[target_feature(enable = "avx512f")]
33783#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33784#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33785#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33786pub const fn _mm512_mask_cmpeq_epu64_mask(k1: __mmask8, a: __m512i, b: __m512i) -> __mmask8 {
33787    _mm512_mask_cmp_epu64_mask::<_MM_CMPINT_EQ>(k1, a, b)
33788}
33789
33790/// Compare packed unsigned 64-bit integers in a and b for equality, and store the results in mask vector k.
33791///
33792/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmpeq_epu64_mask&expand=811)
33793#[inline]
33794#[target_feature(enable = "avx512f,avx512vl")]
33795#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33796#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33797#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33798pub const fn _mm256_cmpeq_epu64_mask(a: __m256i, b: __m256i) -> __mmask8 {
33799    unsafe { simd_bitmask::<__m256i, _>(simd_eq(a.as_u64x4(), b.as_u64x4())) }
33800}
33801
33802/// Compare packed unsigned 64-bit integers in a and b for equality, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33803///
33804/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmpeq_epu64_mask&expand=812)
33805#[inline]
33806#[target_feature(enable = "avx512f,avx512vl")]
33807#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33808#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33809#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33810pub const fn _mm256_mask_cmpeq_epu64_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
33811    _mm256_mask_cmp_epu64_mask::<_MM_CMPINT_EQ>(k1, a, b)
33812}
33813
33814/// Compare packed unsigned 64-bit integers in a and b for equality, and store the results in mask vector k.
33815///
33816/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_epu64_mask&expand=809)
33817#[inline]
33818#[target_feature(enable = "avx512f,avx512vl")]
33819#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33820#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33821#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33822pub const fn _mm_cmpeq_epu64_mask(a: __m128i, b: __m128i) -> __mmask8 {
33823    unsafe { simd_bitmask::<__m128i, _>(simd_eq(a.as_u64x2(), b.as_u64x2())) }
33824}
33825
33826/// Compare packed unsigned 64-bit integers in a and b for equality, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33827///
33828/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmpeq_epu64_mask&expand=810)
33829#[inline]
33830#[target_feature(enable = "avx512f,avx512vl")]
33831#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33832#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33833#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33834pub const fn _mm_mask_cmpeq_epu64_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
33835    _mm_mask_cmp_epu64_mask::<_MM_CMPINT_EQ>(k1, a, b)
33836}
33837
33838/// Compare packed unsigned 64-bit integers in a and b for not-equal, and store the results in mask vector k.
33839///
33840/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpneq_epu64_mask&expand=1118)
33841#[inline]
33842#[target_feature(enable = "avx512f")]
33843#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33844#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33845#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33846pub const fn _mm512_cmpneq_epu64_mask(a: __m512i, b: __m512i) -> __mmask8 {
33847    unsafe { simd_bitmask::<__m512i, _>(simd_ne(a.as_u64x8(), b.as_u64x8())) }
33848}
33849
33850/// Compare packed unsigned 64-bit integers in a and b for not-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33851///
33852/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpneq_epu64_mask&expand=1119)
33853#[inline]
33854#[target_feature(enable = "avx512f")]
33855#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33856#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33857#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33858pub const fn _mm512_mask_cmpneq_epu64_mask(k1: __mmask8, a: __m512i, b: __m512i) -> __mmask8 {
33859    _mm512_mask_cmp_epu64_mask::<_MM_CMPINT_NE>(k1, a, b)
33860}
33861
33862/// Compare packed unsigned 64-bit integers in a and b for not-equal, and store the results in mask vector k.
33863///
33864/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmpneq_epu64_mask&expand=1116)
33865#[inline]
33866#[target_feature(enable = "avx512f,avx512vl")]
33867#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33868#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33869#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33870pub const fn _mm256_cmpneq_epu64_mask(a: __m256i, b: __m256i) -> __mmask8 {
33871    unsafe { simd_bitmask::<__m256i, _>(simd_ne(a.as_u64x4(), b.as_u64x4())) }
33872}
33873
33874/// Compare packed unsigned 64-bit integers in a and b for not-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33875///
33876/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmpneq_epu64_mask&expand=1117)
33877#[inline]
33878#[target_feature(enable = "avx512f,avx512vl")]
33879#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33880#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33881#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33882pub const fn _mm256_mask_cmpneq_epu64_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
33883    _mm256_mask_cmp_epu64_mask::<_MM_CMPINT_NE>(k1, a, b)
33884}
33885
33886/// Compare packed unsigned 64-bit integers in a and b for not-equal, and store the results in mask vector k.
33887///
33888/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpneq_epu64_mask&expand=1114)
33889#[inline]
33890#[target_feature(enable = "avx512f,avx512vl")]
33891#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33892#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33893#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33894pub const fn _mm_cmpneq_epu64_mask(a: __m128i, b: __m128i) -> __mmask8 {
33895    unsafe { simd_bitmask::<__m128i, _>(simd_ne(a.as_u64x2(), b.as_u64x2())) }
33896}
33897
33898/// Compare packed unsigned 64-bit integers in a and b for not-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33899///
33900/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmpneq_epu64_mask&expand=1115)
33901#[inline]
33902#[target_feature(enable = "avx512f,avx512vl")]
33903#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33904#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpuq
33905#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33906pub const fn _mm_mask_cmpneq_epu64_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
33907    _mm_mask_cmp_epu64_mask::<_MM_CMPINT_NE>(k1, a, b)
33908}
33909
33910/// Compare packed unsigned 64-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.
33911///
33912/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmp_epu64_mask&expand=727)
33913#[inline]
33914#[target_feature(enable = "avx512f")]
33915#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33916#[rustc_legacy_const_generics(2)]
33917#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
33918#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33919pub const fn _mm512_cmp_epu64_mask<const IMM3: _MM_CMPINT_ENUM>(
33920    a: __m512i,
33921    b: __m512i,
33922) -> __mmask8 {
33923    unsafe {
33924        static_assert_uimm_bits!(IMM3, 3);
33925        let a = a.as_u64x8();
33926        let b = b.as_u64x8();
33927        let r = match IMM3 {
33928            0 => simd_eq(a, b),
33929            1 => simd_lt(a, b),
33930            2 => simd_le(a, b),
33931            3 => i64x8::ZERO,
33932            4 => simd_ne(a, b),
33933            5 => simd_ge(a, b),
33934            6 => simd_gt(a, b),
33935            _ => i64x8::splat(-1),
33936        };
33937        simd_bitmask(r)
33938    }
33939}
33940
33941/// Compare packed unsigned 64-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
33942///
33943/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmp_epu64_mask&expand=728)
33944#[inline]
33945#[target_feature(enable = "avx512f")]
33946#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33947#[rustc_legacy_const_generics(3)]
33948#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
33949#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33950pub const fn _mm512_mask_cmp_epu64_mask<const IMM3: _MM_CMPINT_ENUM>(
33951    k1: __mmask8,
33952    a: __m512i,
33953    b: __m512i,
33954) -> __mmask8 {
33955    unsafe {
33956        static_assert_uimm_bits!(IMM3, 3);
33957        let a = a.as_u64x8();
33958        let b = b.as_u64x8();
33959        let k1 = simd_select_bitmask(k1, i64x8::splat(-1), i64x8::ZERO);
33960        let r = match IMM3 {
33961            0 => simd_and(k1, simd_eq(a, b)),
33962            1 => simd_and(k1, simd_lt(a, b)),
33963            2 => simd_and(k1, simd_le(a, b)),
33964            3 => i64x8::ZERO,
33965            4 => simd_and(k1, simd_ne(a, b)),
33966            5 => simd_and(k1, simd_ge(a, b)),
33967            6 => simd_and(k1, simd_gt(a, b)),
33968            _ => k1,
33969        };
33970        simd_bitmask(r)
33971    }
33972}
33973
33974/// Compare packed unsigned 64-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.
33975///
33976/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmp_epu64_mask&expand=725)
33977#[inline]
33978#[target_feature(enable = "avx512f,avx512vl")]
33979#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
33980#[rustc_legacy_const_generics(2)]
33981#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
33982#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
33983pub const fn _mm256_cmp_epu64_mask<const IMM3: _MM_CMPINT_ENUM>(
33984    a: __m256i,
33985    b: __m256i,
33986) -> __mmask8 {
33987    unsafe {
33988        static_assert_uimm_bits!(IMM3, 3);
33989        let a = a.as_u64x4();
33990        let b = b.as_u64x4();
33991        let r = match IMM3 {
33992            0 => simd_eq(a, b),
33993            1 => simd_lt(a, b),
33994            2 => simd_le(a, b),
33995            3 => i64x4::ZERO,
33996            4 => simd_ne(a, b),
33997            5 => simd_ge(a, b),
33998            6 => simd_gt(a, b),
33999            _ => i64x4::splat(-1),
34000        };
34001        simd_bitmask(r)
34002    }
34003}
34004
34005/// Compare packed unsigned 64-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34006///
34007/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmp_epu64_mask&expand=726)
34008#[inline]
34009#[target_feature(enable = "avx512f,avx512vl")]
34010#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34011#[rustc_legacy_const_generics(3)]
34012#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
34013#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34014pub const fn _mm256_mask_cmp_epu64_mask<const IMM3: _MM_CMPINT_ENUM>(
34015    k1: __mmask8,
34016    a: __m256i,
34017    b: __m256i,
34018) -> __mmask8 {
34019    unsafe {
34020        static_assert_uimm_bits!(IMM3, 3);
34021        let a = a.as_u64x4();
34022        let b = b.as_u64x4();
34023        let k1 = simd_select_bitmask(k1, i64x4::splat(-1), i64x4::ZERO);
34024        let r = match IMM3 {
34025            0 => simd_and(k1, simd_eq(a, b)),
34026            1 => simd_and(k1, simd_lt(a, b)),
34027            2 => simd_and(k1, simd_le(a, b)),
34028            3 => i64x4::ZERO,
34029            4 => simd_and(k1, simd_ne(a, b)),
34030            5 => simd_and(k1, simd_ge(a, b)),
34031            6 => simd_and(k1, simd_gt(a, b)),
34032            _ => k1,
34033        };
34034        simd_bitmask(r)
34035    }
34036}
34037
34038/// Compare packed unsigned 64-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.
34039///
34040/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmp_epu64_mask&expand=723)
34041#[inline]
34042#[target_feature(enable = "avx512f,avx512vl")]
34043#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34044#[rustc_legacy_const_generics(2)]
34045#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
34046#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34047pub const fn _mm_cmp_epu64_mask<const IMM3: _MM_CMPINT_ENUM>(a: __m128i, b: __m128i) -> __mmask8 {
34048    unsafe {
34049        static_assert_uimm_bits!(IMM3, 3);
34050        let a = a.as_u64x2();
34051        let b = b.as_u64x2();
34052        let r = match IMM3 {
34053            0 => simd_eq(a, b),
34054            1 => simd_lt(a, b),
34055            2 => simd_le(a, b),
34056            3 => i64x2::ZERO,
34057            4 => simd_ne(a, b),
34058            5 => simd_ge(a, b),
34059            6 => simd_gt(a, b),
34060            _ => i64x2::splat(-1),
34061        };
34062        simd_bitmask(r)
34063    }
34064}
34065
34066/// Compare packed unsigned 64-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34067///
34068/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmp_epu64_mask&expand=724)
34069#[inline]
34070#[target_feature(enable = "avx512f,avx512vl")]
34071#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34072#[rustc_legacy_const_generics(3)]
34073#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
34074#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34075pub const fn _mm_mask_cmp_epu64_mask<const IMM3: _MM_CMPINT_ENUM>(
34076    k1: __mmask8,
34077    a: __m128i,
34078    b: __m128i,
34079) -> __mmask8 {
34080    unsafe {
34081        static_assert_uimm_bits!(IMM3, 3);
34082        let a = a.as_u64x2();
34083        let b = b.as_u64x2();
34084        let k1 = simd_select_bitmask(k1, i64x2::splat(-1), i64x2::ZERO);
34085        let r = match IMM3 {
34086            0 => simd_and(k1, simd_eq(a, b)),
34087            1 => simd_and(k1, simd_lt(a, b)),
34088            2 => simd_and(k1, simd_le(a, b)),
34089            3 => i64x2::ZERO,
34090            4 => simd_and(k1, simd_ne(a, b)),
34091            5 => simd_and(k1, simd_ge(a, b)),
34092            6 => simd_and(k1, simd_gt(a, b)),
34093            _ => k1,
34094        };
34095        simd_bitmask(r)
34096    }
34097}
34098
34099/// Compare packed signed 64-bit integers in a and b for less-than, and store the results in mask vector k.
34100///
34101/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmplt_epi64_mask&expand=1037)
34102#[inline]
34103#[target_feature(enable = "avx512f")]
34104#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34105#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34106#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34107pub const fn _mm512_cmplt_epi64_mask(a: __m512i, b: __m512i) -> __mmask8 {
34108    unsafe { simd_bitmask::<__m512i, _>(simd_lt(a.as_i64x8(), b.as_i64x8())) }
34109}
34110
34111/// Compare packed signed 64-bit integers in a and b for less-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34112///
34113/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmplt_epi64_mask&expand=1038)
34114#[inline]
34115#[target_feature(enable = "avx512f")]
34116#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34117#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34118#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34119pub const fn _mm512_mask_cmplt_epi64_mask(k1: __mmask8, a: __m512i, b: __m512i) -> __mmask8 {
34120    _mm512_mask_cmp_epi64_mask::<_MM_CMPINT_LT>(k1, a, b)
34121}
34122
34123/// Compare packed signed 64-bit integers in a and b for less-than, and store the results in mask vector k.
34124///
34125/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmplt_epi64_mask&expand=1035)
34126#[inline]
34127#[target_feature(enable = "avx512f,avx512vl")]
34128#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34129#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34130#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34131pub const fn _mm256_cmplt_epi64_mask(a: __m256i, b: __m256i) -> __mmask8 {
34132    unsafe { simd_bitmask::<__m256i, _>(simd_lt(a.as_i64x4(), b.as_i64x4())) }
34133}
34134
34135/// Compare packed signed 64-bit integers in a and b for less-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34136///
34137/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmplt_epi64_mask&expand=1036)
34138#[inline]
34139#[target_feature(enable = "avx512f,avx512vl")]
34140#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34141#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34142#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34143pub const fn _mm256_mask_cmplt_epi64_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
34144    _mm256_mask_cmp_epi64_mask::<_MM_CMPINT_LT>(k1, a, b)
34145}
34146
34147/// Compare packed signed 64-bit integers in a and b for less-than, and store the results in mask vector k.
34148///
34149/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_epi64_mask&expand=1033)
34150#[inline]
34151#[target_feature(enable = "avx512f,avx512vl")]
34152#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34153#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34154#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34155pub const fn _mm_cmplt_epi64_mask(a: __m128i, b: __m128i) -> __mmask8 {
34156    unsafe { simd_bitmask::<__m128i, _>(simd_lt(a.as_i64x2(), b.as_i64x2())) }
34157}
34158
34159/// Compare packed signed 64-bit integers in a and b for less-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34160///
34161/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmplt_epi64_mask&expand=1034)
34162#[inline]
34163#[target_feature(enable = "avx512f,avx512vl")]
34164#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34165#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34166#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34167pub const fn _mm_mask_cmplt_epi64_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
34168    _mm_mask_cmp_epi64_mask::<_MM_CMPINT_LT>(k1, a, b)
34169}
34170
34171/// Compare packed signed 64-bit integers in a and b for greater-than, and store the results in mask vector k.
34172///
34173/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpgt_epi64_mask&expand=913)
34174#[inline]
34175#[target_feature(enable = "avx512f")]
34176#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34177#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34178#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34179pub const fn _mm512_cmpgt_epi64_mask(a: __m512i, b: __m512i) -> __mmask8 {
34180    unsafe { simd_bitmask::<__m512i, _>(simd_gt(a.as_i64x8(), b.as_i64x8())) }
34181}
34182
34183/// Compare packed signed 64-bit integers in a and b for greater-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34184///
34185/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpgt_epi64_mask&expand=914)
34186#[inline]
34187#[target_feature(enable = "avx512f")]
34188#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34189#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34190#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34191pub const fn _mm512_mask_cmpgt_epi64_mask(k1: __mmask8, a: __m512i, b: __m512i) -> __mmask8 {
34192    _mm512_mask_cmp_epi64_mask::<_MM_CMPINT_NLE>(k1, a, b)
34193}
34194
34195/// Compare packed signed 64-bit integers in a and b for greater-than, and store the results in mask vector k.
34196///
34197/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmpgt_epi64_mask&expand=911)
34198#[inline]
34199#[target_feature(enable = "avx512f,avx512vl")]
34200#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34201#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34202#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34203pub const fn _mm256_cmpgt_epi64_mask(a: __m256i, b: __m256i) -> __mmask8 {
34204    unsafe { simd_bitmask::<__m256i, _>(simd_gt(a.as_i64x4(), b.as_i64x4())) }
34205}
34206
34207/// Compare packed signed 64-bit integers in a and b for greater-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34208///
34209/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmpgt_epi64_mask&expand=912)
34210#[inline]
34211#[target_feature(enable = "avx512f,avx512vl")]
34212#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34213#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34214#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34215pub const fn _mm256_mask_cmpgt_epi64_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
34216    _mm256_mask_cmp_epi64_mask::<_MM_CMPINT_NLE>(k1, a, b)
34217}
34218
34219/// Compare packed signed 64-bit integers in a and b for greater-than, and store the results in mask vector k.
34220///
34221/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_epi64_mask&expand=909)
34222#[inline]
34223#[target_feature(enable = "avx512f,avx512vl")]
34224#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34225#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34226#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34227pub const fn _mm_cmpgt_epi64_mask(a: __m128i, b: __m128i) -> __mmask8 {
34228    unsafe { simd_bitmask::<__m128i, _>(simd_gt(a.as_i64x2(), b.as_i64x2())) }
34229}
34230
34231/// Compare packed signed 64-bit integers in a and b for greater-than, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34232///
34233/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmpgt_epi64_mask&expand=910)
34234#[inline]
34235#[target_feature(enable = "avx512f,avx512vl")]
34236#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34237#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34238#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34239pub const fn _mm_mask_cmpgt_epi64_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
34240    _mm_mask_cmp_epi64_mask::<_MM_CMPINT_NLE>(k1, a, b)
34241}
34242
34243/// Compare packed signed 64-bit integers in a and b for less-than-or-equal, and store the results in mask vector k.
34244///
34245/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmple_epi64_mask&expand=977)
34246#[inline]
34247#[target_feature(enable = "avx512f")]
34248#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34249#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34250#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34251pub const fn _mm512_cmple_epi64_mask(a: __m512i, b: __m512i) -> __mmask8 {
34252    unsafe { simd_bitmask::<__m512i, _>(simd_le(a.as_i64x8(), b.as_i64x8())) }
34253}
34254
34255/// Compare packed signed 64-bit integers in a and b for less-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34256///
34257/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmple_epi64_mask&expand=978)
34258#[inline]
34259#[target_feature(enable = "avx512f")]
34260#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34261#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34262#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34263pub const fn _mm512_mask_cmple_epi64_mask(k1: __mmask8, a: __m512i, b: __m512i) -> __mmask8 {
34264    _mm512_mask_cmp_epi64_mask::<_MM_CMPINT_LE>(k1, a, b)
34265}
34266
34267/// Compare packed signed 64-bit integers in a and b for less-than-or-equal, and store the results in mask vector k.
34268///
34269/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmple_epi64_mask&expand=975)
34270#[inline]
34271#[target_feature(enable = "avx512f,avx512vl")]
34272#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34273#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34274#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34275pub const fn _mm256_cmple_epi64_mask(a: __m256i, b: __m256i) -> __mmask8 {
34276    unsafe { simd_bitmask::<__m256i, _>(simd_le(a.as_i64x4(), b.as_i64x4())) }
34277}
34278
34279/// Compare packed signed 64-bit integers in a and b for less-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34280///
34281/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmple_epi64_mask&expand=976)
34282#[inline]
34283#[target_feature(enable = "avx512f,avx512vl")]
34284#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34285#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34286#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34287pub const fn _mm256_mask_cmple_epi64_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
34288    _mm256_mask_cmp_epi64_mask::<_MM_CMPINT_LE>(k1, a, b)
34289}
34290
34291/// Compare packed signed 64-bit integers in a and b for less-than-or-equal, and store the results in mask vector k.
34292///
34293/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmple_epi64_mask&expand=973)
34294#[inline]
34295#[target_feature(enable = "avx512f,avx512vl")]
34296#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34297#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34298#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34299pub const fn _mm_cmple_epi64_mask(a: __m128i, b: __m128i) -> __mmask8 {
34300    unsafe { simd_bitmask::<__m128i, _>(simd_le(a.as_i64x2(), b.as_i64x2())) }
34301}
34302
34303/// Compare packed signed 64-bit integers in a and b for less-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34304///
34305/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmple_epi64_mask&expand=974)
34306#[inline]
34307#[target_feature(enable = "avx512f,avx512vl")]
34308#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34309#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34310#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34311pub const fn _mm_mask_cmple_epi64_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
34312    _mm_mask_cmp_epi64_mask::<_MM_CMPINT_LE>(k1, a, b)
34313}
34314
34315/// Compare packed signed 64-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k.
34316///
34317/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpge_epi64_mask&expand=855)
34318#[inline]
34319#[target_feature(enable = "avx512f")]
34320#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34321#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34322#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34323pub const fn _mm512_cmpge_epi64_mask(a: __m512i, b: __m512i) -> __mmask8 {
34324    unsafe { simd_bitmask::<__m512i, _>(simd_ge(a.as_i64x8(), b.as_i64x8())) }
34325}
34326
34327/// Compare packed signed 64-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34328///
34329/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpge_epi64_mask&expand=856)
34330#[inline]
34331#[target_feature(enable = "avx512f")]
34332#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34333#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34334#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34335pub const fn _mm512_mask_cmpge_epi64_mask(k1: __mmask8, a: __m512i, b: __m512i) -> __mmask8 {
34336    _mm512_mask_cmp_epi64_mask::<_MM_CMPINT_NLT>(k1, a, b)
34337}
34338
34339/// Compare packed signed 64-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k.
34340///
34341/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmpge_epi64_mask&expand=853)
34342#[inline]
34343#[target_feature(enable = "avx512f,avx512vl")]
34344#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34345#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34346#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34347pub const fn _mm256_cmpge_epi64_mask(a: __m256i, b: __m256i) -> __mmask8 {
34348    unsafe { simd_bitmask::<__m256i, _>(simd_ge(a.as_i64x4(), b.as_i64x4())) }
34349}
34350
34351/// Compare packed signed 64-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34352///
34353/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmpge_epi64_mask&expand=854)
34354#[inline]
34355#[target_feature(enable = "avx512f,avx512vl")]
34356#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34357#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34358#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34359pub const fn _mm256_mask_cmpge_epi64_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
34360    _mm256_mask_cmp_epi64_mask::<_MM_CMPINT_NLT>(k1, a, b)
34361}
34362
34363/// Compare packed signed 64-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k.
34364///
34365/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpge_epi64_mask&expand=851)
34366#[inline]
34367#[target_feature(enable = "avx512f,avx512vl")]
34368#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34369#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34370#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34371pub const fn _mm_cmpge_epi64_mask(a: __m128i, b: __m128i) -> __mmask8 {
34372    unsafe { simd_bitmask::<__m128i, _>(simd_ge(a.as_i64x2(), b.as_i64x2())) }
34373}
34374
34375/// Compare packed signed 64-bit integers in a and b for greater-than-or-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34376///
34377/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmpge_epi64_mask&expand=852)
34378#[inline]
34379#[target_feature(enable = "avx512f,avx512vl")]
34380#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34381#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34382#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34383pub const fn _mm_mask_cmpge_epi64_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
34384    _mm_mask_cmp_epi64_mask::<_MM_CMPINT_NLT>(k1, a, b)
34385}
34386
34387/// Compare packed 64-bit integers in a and b for equality, and store the results in mask vector k.
34388///
34389/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpeq_epi64_mask&expand=787)
34390#[inline]
34391#[target_feature(enable = "avx512f")]
34392#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34393#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34394#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34395pub const fn _mm512_cmpeq_epi64_mask(a: __m512i, b: __m512i) -> __mmask8 {
34396    unsafe { simd_bitmask::<__m512i, _>(simd_eq(a.as_i64x8(), b.as_i64x8())) }
34397}
34398
34399/// Compare packed 64-bit integers in a and b for equality, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34400///
34401/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpeq_epi64_mask&expand=788)
34402#[inline]
34403#[target_feature(enable = "avx512f")]
34404#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34405#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34406#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34407pub const fn _mm512_mask_cmpeq_epi64_mask(k1: __mmask8, a: __m512i, b: __m512i) -> __mmask8 {
34408    _mm512_mask_cmp_epi64_mask::<_MM_CMPINT_EQ>(k1, a, b)
34409}
34410
34411/// Compare packed 64-bit integers in a and b for equality, and store the results in mask vector k.
34412///
34413/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmpeq_epi64_mask&expand=785)
34414#[inline]
34415#[target_feature(enable = "avx512f,avx512vl")]
34416#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34417#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34418#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34419pub const fn _mm256_cmpeq_epi64_mask(a: __m256i, b: __m256i) -> __mmask8 {
34420    unsafe { simd_bitmask::<__m256i, _>(simd_eq(a.as_i64x4(), b.as_i64x4())) }
34421}
34422
34423/// Compare packed 64-bit integers in a and b for equality, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34424///
34425/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmpeq_epi64_mask&expand=786)
34426#[inline]
34427#[target_feature(enable = "avx512f,avx512vl")]
34428#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34429#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34430#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34431pub const fn _mm256_mask_cmpeq_epi64_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
34432    _mm256_mask_cmp_epi64_mask::<_MM_CMPINT_EQ>(k1, a, b)
34433}
34434
34435/// Compare packed 64-bit integers in a and b for equality, and store the results in mask vector k.
34436///
34437/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_epi64_mask&expand=783)
34438#[inline]
34439#[target_feature(enable = "avx512f,avx512vl")]
34440#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34441#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34442#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34443pub const fn _mm_cmpeq_epi64_mask(a: __m128i, b: __m128i) -> __mmask8 {
34444    unsafe { simd_bitmask::<__m128i, _>(simd_eq(a.as_i64x2(), b.as_i64x2())) }
34445}
34446
34447/// Compare packed 64-bit integers in a and b for equality, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34448///
34449/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmpeq_epi64_mask&expand=784)
34450#[inline]
34451#[target_feature(enable = "avx512f,avx512vl")]
34452#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34453#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34454#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34455pub const fn _mm_mask_cmpeq_epi64_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
34456    _mm_mask_cmp_epi64_mask::<_MM_CMPINT_EQ>(k1, a, b)
34457}
34458
34459/// Compare packed signed 64-bit integers in a and b for not-equal, and store the results in mask vector k.
34460///
34461/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmpneq_epi64_mask&expand=1094)
34462#[inline]
34463#[target_feature(enable = "avx512f")]
34464#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34465#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34466#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34467pub const fn _mm512_cmpneq_epi64_mask(a: __m512i, b: __m512i) -> __mmask8 {
34468    unsafe { simd_bitmask::<__m512i, _>(simd_ne(a.as_i64x8(), b.as_i64x8())) }
34469}
34470
34471/// Compare packed signed 64-bit integers in a and b for not-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34472///
34473/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmpneq_epi64_mask&expand=1095)
34474#[inline]
34475#[target_feature(enable = "avx512f")]
34476#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34477#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34478#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34479pub const fn _mm512_mask_cmpneq_epi64_mask(k1: __mmask8, a: __m512i, b: __m512i) -> __mmask8 {
34480    _mm512_mask_cmp_epi64_mask::<_MM_CMPINT_NE>(k1, a, b)
34481}
34482
34483/// Compare packed signed 64-bit integers in a and b for not-equal, and store the results in mask vector k.
34484///
34485/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmpneq_epi64_mask&expand=1092)
34486#[inline]
34487#[target_feature(enable = "avx512f,avx512vl")]
34488#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34489#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34490#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34491pub const fn _mm256_cmpneq_epi64_mask(a: __m256i, b: __m256i) -> __mmask8 {
34492    unsafe { simd_bitmask::<__m256i, _>(simd_ne(a.as_i64x4(), b.as_i64x4())) }
34493}
34494
34495/// Compare packed signed 64-bit integers in a and b for not-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34496///
34497/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmpneq_epi64_mask&expand=1093)
34498#[inline]
34499#[target_feature(enable = "avx512f,avx512vl")]
34500#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34501#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34502#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34503pub const fn _mm256_mask_cmpneq_epi64_mask(k1: __mmask8, a: __m256i, b: __m256i) -> __mmask8 {
34504    _mm256_mask_cmp_epi64_mask::<_MM_CMPINT_NE>(k1, a, b)
34505}
34506
34507/// Compare packed signed 64-bit integers in a and b for not-equal, and store the results in mask vector k.
34508///
34509/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpneq_epi64_mask&expand=1090)
34510#[inline]
34511#[target_feature(enable = "avx512f,avx512vl")]
34512#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34513#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34514#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34515pub const fn _mm_cmpneq_epi64_mask(a: __m128i, b: __m128i) -> __mmask8 {
34516    unsafe { simd_bitmask::<__m128i, _>(simd_ne(a.as_i64x2(), b.as_i64x2())) }
34517}
34518
34519/// Compare packed signed 64-bit integers in a and b for not-equal, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34520///
34521/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmpneq_epi64_mask&expand=1091)
34522#[inline]
34523#[target_feature(enable = "avx512f,avx512vl")]
34524#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34525#[cfg_attr(test, assert_instr(vpcmp))] //should be vpcmpq
34526#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34527pub const fn _mm_mask_cmpneq_epi64_mask(k1: __mmask8, a: __m128i, b: __m128i) -> __mmask8 {
34528    _mm_mask_cmp_epi64_mask::<_MM_CMPINT_NE>(k1, a, b)
34529}
34530
34531/// Compare packed signed 64-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.
34532///
34533/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cmp_epi64_mask&expand=703)
34534#[inline]
34535#[target_feature(enable = "avx512f")]
34536#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34537#[rustc_legacy_const_generics(2)]
34538#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
34539#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34540pub const fn _mm512_cmp_epi64_mask<const IMM3: _MM_CMPINT_ENUM>(
34541    a: __m512i,
34542    b: __m512i,
34543) -> __mmask8 {
34544    unsafe {
34545        static_assert_uimm_bits!(IMM3, 3);
34546        let a = a.as_i64x8();
34547        let b = b.as_i64x8();
34548        let r = match IMM3 {
34549            0 => simd_eq(a, b),
34550            1 => simd_lt(a, b),
34551            2 => simd_le(a, b),
34552            3 => i64x8::ZERO,
34553            4 => simd_ne(a, b),
34554            5 => simd_ge(a, b),
34555            6 => simd_gt(a, b),
34556            _ => i64x8::splat(-1),
34557        };
34558        simd_bitmask(r)
34559    }
34560}
34561
34562/// Compare packed signed 64-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34563///
34564/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cmp_epi64_mask&expand=704)
34565#[inline]
34566#[target_feature(enable = "avx512f")]
34567#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34568#[rustc_legacy_const_generics(3)]
34569#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
34570#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34571pub const fn _mm512_mask_cmp_epi64_mask<const IMM3: _MM_CMPINT_ENUM>(
34572    k1: __mmask8,
34573    a: __m512i,
34574    b: __m512i,
34575) -> __mmask8 {
34576    unsafe {
34577        static_assert_uimm_bits!(IMM3, 3);
34578        let a = a.as_i64x8();
34579        let b = b.as_i64x8();
34580        let k1 = simd_select_bitmask(k1, i64x8::splat(-1), i64x8::ZERO);
34581        let r = match IMM3 {
34582            0 => simd_and(k1, simd_eq(a, b)),
34583            1 => simd_and(k1, simd_lt(a, b)),
34584            2 => simd_and(k1, simd_le(a, b)),
34585            3 => i64x8::ZERO,
34586            4 => simd_and(k1, simd_ne(a, b)),
34587            5 => simd_and(k1, simd_ge(a, b)),
34588            6 => simd_and(k1, simd_gt(a, b)),
34589            _ => k1,
34590        };
34591        simd_bitmask(r)
34592    }
34593}
34594
34595/// Compare packed signed 64-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.
34596///
34597/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_cmp_epi64_mask&expand=701)
34598#[inline]
34599#[target_feature(enable = "avx512f,avx512vl")]
34600#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34601#[rustc_legacy_const_generics(2)]
34602#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
34603#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34604pub const fn _mm256_cmp_epi64_mask<const IMM3: _MM_CMPINT_ENUM>(
34605    a: __m256i,
34606    b: __m256i,
34607) -> __mmask8 {
34608    unsafe {
34609        static_assert_uimm_bits!(IMM3, 3);
34610        let a = a.as_i64x4();
34611        let b = b.as_i64x4();
34612        let r = match IMM3 {
34613            0 => simd_eq(a, b),
34614            1 => simd_lt(a, b),
34615            2 => simd_le(a, b),
34616            3 => i64x4::ZERO,
34617            4 => simd_ne(a, b),
34618            5 => simd_ge(a, b),
34619            6 => simd_gt(a, b),
34620            _ => i64x4::splat(-1),
34621        };
34622        simd_bitmask(r)
34623    }
34624}
34625
34626/// Compare packed signed 64-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34627///
34628/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cmp_epi64_mask&expand=702)
34629#[inline]
34630#[target_feature(enable = "avx512f,avx512vl")]
34631#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34632#[rustc_legacy_const_generics(3)]
34633#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
34634#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34635pub const fn _mm256_mask_cmp_epi64_mask<const IMM3: _MM_CMPINT_ENUM>(
34636    k1: __mmask8,
34637    a: __m256i,
34638    b: __m256i,
34639) -> __mmask8 {
34640    unsafe {
34641        static_assert_uimm_bits!(IMM3, 3);
34642        let a = a.as_i64x4();
34643        let b = b.as_i64x4();
34644        let k1 = simd_select_bitmask(k1, i64x4::splat(-1), i64x4::ZERO);
34645        let r = match IMM3 {
34646            0 => simd_and(k1, simd_eq(a, b)),
34647            1 => simd_and(k1, simd_lt(a, b)),
34648            2 => simd_and(k1, simd_le(a, b)),
34649            3 => i64x4::ZERO,
34650            4 => simd_and(k1, simd_ne(a, b)),
34651            5 => simd_and(k1, simd_ge(a, b)),
34652            6 => simd_and(k1, simd_gt(a, b)),
34653            _ => k1,
34654        };
34655        simd_bitmask(r)
34656    }
34657}
34658
34659/// Compare packed signed 64-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k.
34660///
34661/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmp_epi64_mask&expand=699)
34662#[inline]
34663#[target_feature(enable = "avx512f,avx512vl")]
34664#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34665#[rustc_legacy_const_generics(2)]
34666#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
34667#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34668pub const fn _mm_cmp_epi64_mask<const IMM3: _MM_CMPINT_ENUM>(a: __m128i, b: __m128i) -> __mmask8 {
34669    unsafe {
34670        static_assert_uimm_bits!(IMM3, 3);
34671        let a = a.as_i64x2();
34672        let b = b.as_i64x2();
34673        let r = match IMM3 {
34674            0 => simd_eq(a, b),
34675            1 => simd_lt(a, b),
34676            2 => simd_le(a, b),
34677            3 => i64x2::ZERO,
34678            4 => simd_ne(a, b),
34679            5 => simd_ge(a, b),
34680            6 => simd_gt(a, b),
34681            _ => i64x2::splat(-1),
34682        };
34683        simd_bitmask(r)
34684    }
34685}
34686
34687/// Compare packed signed 64-bit integers in a and b based on the comparison operand specified by imm8, and store the results in mask vector k using zeromask k1 (elements are zeroed out when the corresponding mask bit is not set).
34688///
34689/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cmp_epi64_mask&expand=700)
34690#[inline]
34691#[target_feature(enable = "avx512f,avx512vl")]
34692#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34693#[rustc_legacy_const_generics(3)]
34694#[cfg_attr(test, assert_instr(vpcmp, IMM3 = 0))]
34695#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34696pub const fn _mm_mask_cmp_epi64_mask<const IMM3: _MM_CMPINT_ENUM>(
34697    k1: __mmask8,
34698    a: __m128i,
34699    b: __m128i,
34700) -> __mmask8 {
34701    unsafe {
34702        static_assert_uimm_bits!(IMM3, 3);
34703        let a = a.as_i64x2();
34704        let b = b.as_i64x2();
34705        let k1 = simd_select_bitmask(k1, i64x2::splat(-1), i64x2::ZERO);
34706        let r = match IMM3 {
34707            0 => simd_and(k1, simd_eq(a, b)),
34708            1 => simd_and(k1, simd_lt(a, b)),
34709            2 => simd_and(k1, simd_le(a, b)),
34710            3 => i64x2::ZERO,
34711            4 => simd_and(k1, simd_ne(a, b)),
34712            5 => simd_and(k1, simd_ge(a, b)),
34713            6 => simd_and(k1, simd_gt(a, b)),
34714            _ => k1,
34715        };
34716        simd_bitmask(r)
34717    }
34718}
34719
34720/// Reduce the packed 32-bit integers in a by addition. Returns the sum of all elements in a.
34721///
34722/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_add_epi32&expand=4556)
34723#[inline]
34724#[target_feature(enable = "avx512f")]
34725#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34726#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34727pub const fn _mm512_reduce_add_epi32(a: __m512i) -> i32 {
34728    unsafe { simd_reduce_add_ordered(a.as_i32x16(), 0) }
34729}
34730
34731/// Reduce the packed 32-bit integers in a by addition using mask k. Returns the sum of all active elements in a.
34732///
34733/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_add_epi32&expand=4555)
34734#[inline]
34735#[target_feature(enable = "avx512f")]
34736#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34737#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34738pub const fn _mm512_mask_reduce_add_epi32(k: __mmask16, a: __m512i) -> i32 {
34739    unsafe { simd_reduce_add_ordered(simd_select_bitmask(k, a.as_i32x16(), i32x16::ZERO), 0) }
34740}
34741
34742/// Reduce the packed 64-bit integers in a by addition. Returns the sum of all elements in a.
34743///
34744/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_add_epi64&expand=4558)
34745#[inline]
34746#[target_feature(enable = "avx512f")]
34747#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34748#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34749pub const fn _mm512_reduce_add_epi64(a: __m512i) -> i64 {
34750    unsafe { simd_reduce_add_ordered(a.as_i64x8(), 0) }
34751}
34752
34753/// Reduce the packed 64-bit integers in a by addition using mask k. Returns the sum of all active elements in a.
34754///
34755/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_add_epi64&expand=4557)
34756#[inline]
34757#[target_feature(enable = "avx512f")]
34758#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34759#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34760pub const fn _mm512_mask_reduce_add_epi64(k: __mmask8, a: __m512i) -> i64 {
34761    unsafe { simd_reduce_add_ordered(simd_select_bitmask(k, a.as_i64x8(), i64x8::ZERO), 0) }
34762}
34763
34764/// Reduce the packed single-precision (32-bit) floating-point elements in a by addition. Returns the sum of all elements in a.
34765///
34766/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_add_ps&expand=4562)
34767#[inline]
34768#[target_feature(enable = "avx512f")]
34769#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34770#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34771pub const fn _mm512_reduce_add_ps(a: __m512) -> f32 {
34772    unsafe {
34773        // we have to use `simd_shuffle` here because `_mm512_extractf32x8_ps` is in AVX512DQ
34774        let a = _mm256_add_ps(
34775            simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]),
34776            simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]),
34777        );
34778        let a = _mm_add_ps(_mm256_extractf128_ps::<0>(a), _mm256_extractf128_ps::<1>(a));
34779        let a = _mm_add_ps(a, simd_shuffle!(a, a, [2, 3, 0, 1]));
34780        simd_extract!(a, 0, f32) + simd_extract!(a, 1, f32)
34781    }
34782}
34783
34784/// Reduce the packed single-precision (32-bit) floating-point elements in a by addition using mask k. Returns the sum of all active elements in a.
34785///
34786/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_add_ps&expand=4561)
34787#[inline]
34788#[target_feature(enable = "avx512f")]
34789#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34790#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34791pub const fn _mm512_mask_reduce_add_ps(k: __mmask16, a: __m512) -> f32 {
34792    unsafe { _mm512_reduce_add_ps(simd_select_bitmask(k, a, _mm512_setzero_ps())) }
34793}
34794
34795/// Reduce the packed double-precision (64-bit) floating-point elements in a by addition. Returns the sum of all elements in a.
34796///
34797/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_add_pd&expand=4560)
34798#[inline]
34799#[target_feature(enable = "avx512f")]
34800#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34801#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34802pub const fn _mm512_reduce_add_pd(a: __m512d) -> f64 {
34803    unsafe {
34804        let a = _mm256_add_pd(
34805            _mm512_extractf64x4_pd::<0>(a),
34806            _mm512_extractf64x4_pd::<1>(a),
34807        );
34808        let a = _mm_add_pd(_mm256_extractf128_pd::<0>(a), _mm256_extractf128_pd::<1>(a));
34809        simd_extract!(a, 0, f64) + simd_extract!(a, 1, f64)
34810    }
34811}
34812
34813/// Reduce the packed double-precision (64-bit) floating-point elements in a by addition using mask k. Returns the sum of all active elements in a.
34814///
34815/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_add_pd&expand=4559)
34816#[inline]
34817#[target_feature(enable = "avx512f")]
34818#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34819#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34820pub const fn _mm512_mask_reduce_add_pd(k: __mmask8, a: __m512d) -> f64 {
34821    unsafe { _mm512_reduce_add_pd(simd_select_bitmask(k, a, _mm512_setzero_pd())) }
34822}
34823
34824/// Reduce the packed 32-bit integers in a by multiplication. Returns the product of all elements in a.
34825///
34826/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_mul_epi32&expand=4600)
34827#[inline]
34828#[target_feature(enable = "avx512f")]
34829#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34830#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34831pub const fn _mm512_reduce_mul_epi32(a: __m512i) -> i32 {
34832    unsafe { simd_reduce_mul_ordered(a.as_i32x16(), 1) }
34833}
34834
34835/// Reduce the packed 32-bit integers in a by multiplication using mask k. Returns the product of all active elements in a.
34836///
34837/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_mul_epi32&expand=4599)
34838#[inline]
34839#[target_feature(enable = "avx512f")]
34840#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34841#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34842pub const fn _mm512_mask_reduce_mul_epi32(k: __mmask16, a: __m512i) -> i32 {
34843    unsafe {
34844        simd_reduce_mul_ordered(
34845            simd_select_bitmask(k, a.as_i32x16(), _mm512_set1_epi32(1).as_i32x16()),
34846            1,
34847        )
34848    }
34849}
34850
34851/// Reduce the packed 64-bit integers in a by multiplication. Returns the product of all elements in a.
34852///
34853/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_mul_epi64&expand=4602)
34854#[inline]
34855#[target_feature(enable = "avx512f")]
34856#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34857#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34858pub const fn _mm512_reduce_mul_epi64(a: __m512i) -> i64 {
34859    unsafe { simd_reduce_mul_ordered(a.as_i64x8(), 1) }
34860}
34861
34862/// Reduce the packed 64-bit integers in a by multiplication using mask k. Returns the product of all active elements in a.
34863///
34864/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_mul_epi64&expand=4601)
34865#[inline]
34866#[target_feature(enable = "avx512f")]
34867#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34868#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34869pub const fn _mm512_mask_reduce_mul_epi64(k: __mmask8, a: __m512i) -> i64 {
34870    unsafe {
34871        simd_reduce_mul_ordered(
34872            simd_select_bitmask(k, a.as_i64x8(), _mm512_set1_epi64(1).as_i64x8()),
34873            1,
34874        )
34875    }
34876}
34877
34878/// Reduce the packed single-precision (32-bit) floating-point elements in a by multiplication. Returns the product of all elements in a.
34879///
34880/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_mul_ps&expand=4606)
34881#[inline]
34882#[target_feature(enable = "avx512f")]
34883#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34884#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34885pub const fn _mm512_reduce_mul_ps(a: __m512) -> f32 {
34886    unsafe {
34887        // we have to use `simd_shuffle` here because `_mm512_extractf32x8_ps` is in AVX512DQ
34888        let a = _mm256_mul_ps(
34889            simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]),
34890            simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]),
34891        );
34892        let a = _mm_mul_ps(_mm256_extractf128_ps::<0>(a), _mm256_extractf128_ps::<1>(a));
34893        let a = _mm_mul_ps(a, simd_shuffle!(a, a, [2, 3, 0, 1]));
34894        simd_extract!(a, 0, f32) * simd_extract!(a, 1, f32)
34895    }
34896}
34897
34898/// Reduce the packed single-precision (32-bit) floating-point elements in a by multiplication using mask k. Returns the product of all active elements in a.
34899///
34900/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_mul_ps&expand=4605)
34901#[inline]
34902#[target_feature(enable = "avx512f")]
34903#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34904#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34905pub const fn _mm512_mask_reduce_mul_ps(k: __mmask16, a: __m512) -> f32 {
34906    unsafe { _mm512_reduce_mul_ps(simd_select_bitmask(k, a, _mm512_set1_ps(1.))) }
34907}
34908
34909/// Reduce the packed double-precision (64-bit) floating-point elements in a by multiplication. Returns the product of all elements in a.
34910///
34911/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_mul_pd&expand=4604)
34912#[inline]
34913#[target_feature(enable = "avx512f")]
34914#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34915#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34916pub const fn _mm512_reduce_mul_pd(a: __m512d) -> f64 {
34917    unsafe {
34918        let a = _mm256_mul_pd(
34919            _mm512_extractf64x4_pd::<0>(a),
34920            _mm512_extractf64x4_pd::<1>(a),
34921        );
34922        let a = _mm_mul_pd(_mm256_extractf128_pd::<0>(a), _mm256_extractf128_pd::<1>(a));
34923        simd_extract!(a, 0, f64) * simd_extract!(a, 1, f64)
34924    }
34925}
34926
34927/// Reduce the packed double-precision (64-bit) floating-point elements in a by multiplication using mask k. Returns the product of all active elements in a.
34928///
34929/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_mul_pd&expand=4603)
34930#[inline]
34931#[target_feature(enable = "avx512f")]
34932#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34933#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34934pub const fn _mm512_mask_reduce_mul_pd(k: __mmask8, a: __m512d) -> f64 {
34935    unsafe { _mm512_reduce_mul_pd(simd_select_bitmask(k, a, _mm512_set1_pd(1.))) }
34936}
34937
34938/// Reduce the packed signed 32-bit integers in a by maximum. Returns the maximum of all elements in a.
34939///
34940/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_max_epi32&expand=4576)
34941#[inline]
34942#[target_feature(enable = "avx512f")]
34943#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34944#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34945pub const fn _mm512_reduce_max_epi32(a: __m512i) -> i32 {
34946    unsafe { simd_reduce_max(a.as_i32x16()) }
34947}
34948
34949/// Reduce the packed signed 32-bit integers in a by maximum using mask k. Returns the maximum of all active elements in a.
34950///
34951/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_max_epi32&expand=4575)
34952#[inline]
34953#[target_feature(enable = "avx512f")]
34954#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34955#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34956pub const fn _mm512_mask_reduce_max_epi32(k: __mmask16, a: __m512i) -> i32 {
34957    unsafe {
34958        simd_reduce_max(simd_select_bitmask(
34959            k,
34960            a.as_i32x16(),
34961            i32x16::splat(i32::MIN),
34962        ))
34963    }
34964}
34965
34966/// Reduce the packed signed 64-bit integers in a by maximum. Returns the maximum of all elements in a.
34967///
34968/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_max_epi64&expand=4578)
34969#[inline]
34970#[target_feature(enable = "avx512f")]
34971#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34972#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34973pub const fn _mm512_reduce_max_epi64(a: __m512i) -> i64 {
34974    unsafe { simd_reduce_max(a.as_i64x8()) }
34975}
34976
34977/// Reduce the packed signed 64-bit integers in a by maximum using mask k. Returns the maximum of all active elements in a.
34978///
34979/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_max_epi64&expand=4577)
34980#[inline]
34981#[target_feature(enable = "avx512f")]
34982#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34983#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34984pub const fn _mm512_mask_reduce_max_epi64(k: __mmask8, a: __m512i) -> i64 {
34985    unsafe { simd_reduce_max(simd_select_bitmask(k, a.as_i64x8(), i64x8::splat(i64::MIN))) }
34986}
34987
34988/// Reduce the packed unsigned 32-bit integers in a by maximum. Returns the maximum of all elements in a.
34989///
34990/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_max_epu32&expand=4580)
34991#[inline]
34992#[target_feature(enable = "avx512f")]
34993#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
34994#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
34995pub const fn _mm512_reduce_max_epu32(a: __m512i) -> u32 {
34996    unsafe { simd_reduce_max(a.as_u32x16()) }
34997}
34998
34999/// Reduce the packed unsigned 32-bit integers in a by maximum using mask k. Returns the maximum of all active elements in a.
35000///
35001/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_max_epu32&expand=4579)
35002#[inline]
35003#[target_feature(enable = "avx512f")]
35004#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35005#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35006pub const fn _mm512_mask_reduce_max_epu32(k: __mmask16, a: __m512i) -> u32 {
35007    unsafe { simd_reduce_max(simd_select_bitmask(k, a.as_u32x16(), u32x16::ZERO)) }
35008}
35009
35010/// Reduce the packed unsigned 64-bit integers in a by maximum. Returns the maximum of all elements in a.
35011///
35012/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_max_epu64&expand=4582)
35013#[inline]
35014#[target_feature(enable = "avx512f")]
35015#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35016#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35017pub const fn _mm512_reduce_max_epu64(a: __m512i) -> u64 {
35018    unsafe { simd_reduce_max(a.as_u64x8()) }
35019}
35020
35021/// Reduce the packed unsigned 64-bit integers in a by maximum using mask k. Returns the maximum of all active elements in a.
35022///
35023/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_max_epu64&expand=4581)
35024#[inline]
35025#[target_feature(enable = "avx512f")]
35026#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35027#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35028pub const fn _mm512_mask_reduce_max_epu64(k: __mmask8, a: __m512i) -> u64 {
35029    unsafe { simd_reduce_max(simd_select_bitmask(k, a.as_u64x8(), u64x8::ZERO)) }
35030}
35031
35032/// Reduce the packed single-precision (32-bit) floating-point elements in a by maximum. Returns the maximum of all elements in a.
35033///
35034/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_max_ps&expand=4586)
35035#[inline]
35036#[target_feature(enable = "avx512f")]
35037#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35038pub fn _mm512_reduce_max_ps(a: __m512) -> f32 {
35039    unsafe {
35040        let a = _mm256_max_ps(
35041            simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]),
35042            simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]),
35043        );
35044        let a = _mm_max_ps(_mm256_extractf128_ps::<0>(a), _mm256_extractf128_ps::<1>(a));
35045        let a = _mm_max_ps(a, simd_shuffle!(a, a, [2, 3, 0, 1]));
35046        _mm_cvtss_f32(_mm_max_ss(a, _mm_movehdup_ps(a)))
35047    }
35048}
35049
35050/// Reduce the packed single-precision (32-bit) floating-point elements in a by maximum using mask k. Returns the maximum of all active elements in a.
35051///
35052/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_max_ps&expand=4585)
35053#[inline]
35054#[target_feature(enable = "avx512f")]
35055#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35056pub fn _mm512_mask_reduce_max_ps(k: __mmask16, a: __m512) -> f32 {
35057    _mm512_reduce_max_ps(_mm512_mask_mov_ps(_mm512_set1_ps(f32::MIN), k, a))
35058}
35059
35060/// Reduce the packed double-precision (64-bit) floating-point elements in a by maximum. Returns the maximum of all elements in a.
35061///
35062/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_max_pd&expand=4584)
35063#[inline]
35064#[target_feature(enable = "avx512f")]
35065#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35066pub fn _mm512_reduce_max_pd(a: __m512d) -> f64 {
35067    unsafe {
35068        let a = _mm256_max_pd(
35069            _mm512_extractf64x4_pd::<0>(a),
35070            _mm512_extractf64x4_pd::<1>(a),
35071        );
35072        let a = _mm_max_pd(_mm256_extractf128_pd::<0>(a), _mm256_extractf128_pd::<1>(a));
35073        _mm_cvtsd_f64(_mm_max_sd(a, simd_shuffle!(a, a, [1, 0])))
35074    }
35075}
35076
35077/// Reduce the packed double-precision (64-bit) floating-point elements in a by maximum using mask k. Returns the maximum of all active elements in a.
35078///
35079/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_max_pd&expand=4583)
35080#[inline]
35081#[target_feature(enable = "avx512f")]
35082#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35083pub fn _mm512_mask_reduce_max_pd(k: __mmask8, a: __m512d) -> f64 {
35084    _mm512_reduce_max_pd(_mm512_mask_mov_pd(_mm512_set1_pd(f64::MIN), k, a))
35085}
35086
35087/// Reduce the packed signed 32-bit integers in a by minimum. Returns the minimum of all elements in a.
35088///
35089/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_min_epi32&expand=4588)
35090#[inline]
35091#[target_feature(enable = "avx512f")]
35092#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35093#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35094pub const fn _mm512_reduce_min_epi32(a: __m512i) -> i32 {
35095    unsafe { simd_reduce_min(a.as_i32x16()) }
35096}
35097
35098/// Reduce the packed signed 32-bit integers in a by maximum using mask k. Returns the minimum of all active elements in a.
35099///
35100/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_min_epi32&expand=4587)
35101#[inline]
35102#[target_feature(enable = "avx512f")]
35103#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35104#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35105pub const fn _mm512_mask_reduce_min_epi32(k: __mmask16, a: __m512i) -> i32 {
35106    unsafe {
35107        simd_reduce_min(simd_select_bitmask(
35108            k,
35109            a.as_i32x16(),
35110            i32x16::splat(i32::MAX),
35111        ))
35112    }
35113}
35114
35115/// Reduce the packed signed 64-bit integers in a by minimum. Returns the minimum of all elements in a.
35116///
35117/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_min_epi64&expand=4590)
35118#[inline]
35119#[target_feature(enable = "avx512f")]
35120#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35121#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35122pub const fn _mm512_reduce_min_epi64(a: __m512i) -> i64 {
35123    unsafe { simd_reduce_min(a.as_i64x8()) }
35124}
35125
35126/// Reduce the packed signed 64-bit integers in a by maximum using mask k. Returns the minimum of all active elements in a.
35127///
35128/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_min_epi64&expand=4589)
35129#[inline]
35130#[target_feature(enable = "avx512f")]
35131#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35132#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35133pub const fn _mm512_mask_reduce_min_epi64(k: __mmask8, a: __m512i) -> i64 {
35134    unsafe { simd_reduce_min(simd_select_bitmask(k, a.as_i64x8(), i64x8::splat(i64::MAX))) }
35135}
35136
35137/// Reduce the packed unsigned 32-bit integers in a by minimum. Returns the minimum of all elements in a.
35138///
35139/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_min_epu32&expand=4592)
35140#[inline]
35141#[target_feature(enable = "avx512f")]
35142#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35143#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35144pub const fn _mm512_reduce_min_epu32(a: __m512i) -> u32 {
35145    unsafe { simd_reduce_min(a.as_u32x16()) }
35146}
35147
35148/// Reduce the packed unsigned 32-bit integers in a by maximum using mask k. Returns the minimum of all active elements in a.
35149///
35150/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_min_epu32&expand=4591)
35151#[inline]
35152#[target_feature(enable = "avx512f")]
35153#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35154#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35155pub const fn _mm512_mask_reduce_min_epu32(k: __mmask16, a: __m512i) -> u32 {
35156    unsafe {
35157        simd_reduce_min(simd_select_bitmask(
35158            k,
35159            a.as_u32x16(),
35160            u32x16::splat(u32::MAX),
35161        ))
35162    }
35163}
35164
35165/// Reduce the packed unsigned 64-bit integers in a by minimum. Returns the minimum of all elements in a.
35166///
35167/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_min_epu64&expand=4594)
35168#[inline]
35169#[target_feature(enable = "avx512f")]
35170#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35171#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35172pub const fn _mm512_reduce_min_epu64(a: __m512i) -> u64 {
35173    unsafe { simd_reduce_min(a.as_u64x8()) }
35174}
35175
35176/// Reduce the packed signed 64-bit integers in a by maximum using mask k. Returns the minimum of all active elements in a.
35177///
35178/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_min_epu64&expand=4589)
35179#[inline]
35180#[target_feature(enable = "avx512f")]
35181#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35182#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35183pub const fn _mm512_mask_reduce_min_epu64(k: __mmask8, a: __m512i) -> u64 {
35184    unsafe { simd_reduce_min(simd_select_bitmask(k, a.as_u64x8(), u64x8::splat(u64::MAX))) }
35185}
35186
35187/// Reduce the packed single-precision (32-bit) floating-point elements in a by minimum. Returns the minimum of all elements in a.
35188///
35189/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_min_ps&expand=4598)
35190#[inline]
35191#[target_feature(enable = "avx512f")]
35192#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35193pub fn _mm512_reduce_min_ps(a: __m512) -> f32 {
35194    unsafe {
35195        let a = _mm256_min_ps(
35196            simd_shuffle!(a, a, [0, 1, 2, 3, 4, 5, 6, 7]),
35197            simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]),
35198        );
35199        let a = _mm_min_ps(_mm256_extractf128_ps::<0>(a), _mm256_extractf128_ps::<1>(a));
35200        let a = _mm_min_ps(a, simd_shuffle!(a, a, [2, 3, 0, 1]));
35201        _mm_cvtss_f32(_mm_min_ss(a, _mm_movehdup_ps(a)))
35202    }
35203}
35204
35205/// Reduce the packed single-precision (32-bit) floating-point elements in a by maximum using mask k. Returns the minimum of all active elements in a.
35206///
35207/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_min_ps&expand=4597)
35208#[inline]
35209#[target_feature(enable = "avx512f")]
35210#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35211pub fn _mm512_mask_reduce_min_ps(k: __mmask16, a: __m512) -> f32 {
35212    _mm512_reduce_min_ps(_mm512_mask_mov_ps(_mm512_set1_ps(f32::MAX), k, a))
35213}
35214
35215/// Reduce the packed double-precision (64-bit) floating-point elements in a by minimum. Returns the minimum of all elements in a.
35216///
35217/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_min_pd&expand=4596)
35218#[inline]
35219#[target_feature(enable = "avx512f")]
35220#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35221pub fn _mm512_reduce_min_pd(a: __m512d) -> f64 {
35222    unsafe {
35223        let a = _mm256_min_pd(
35224            _mm512_extractf64x4_pd::<0>(a),
35225            _mm512_extractf64x4_pd::<1>(a),
35226        );
35227        let a = _mm_min_pd(_mm256_extractf128_pd::<0>(a), _mm256_extractf128_pd::<1>(a));
35228        _mm_cvtsd_f64(_mm_min_sd(a, simd_shuffle!(a, a, [1, 0])))
35229    }
35230}
35231
35232/// Reduce the packed double-precision (64-bit) floating-point elements in a by maximum using mask k. Returns the minimum of all active elements in a.
35233///
35234/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_min_pd&expand=4595)
35235#[inline]
35236#[target_feature(enable = "avx512f")]
35237#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35238pub fn _mm512_mask_reduce_min_pd(k: __mmask8, a: __m512d) -> f64 {
35239    _mm512_reduce_min_pd(_mm512_mask_mov_pd(_mm512_set1_pd(f64::MAX), k, a))
35240}
35241
35242/// Reduce the packed 32-bit integers in a by bitwise AND. Returns the bitwise AND of all elements in a.
35243///
35244/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_and_epi32&expand=4564)
35245#[inline]
35246#[target_feature(enable = "avx512f")]
35247#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35248#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35249pub const fn _mm512_reduce_and_epi32(a: __m512i) -> i32 {
35250    unsafe { simd_reduce_and(a.as_i32x16()) }
35251}
35252
35253/// Reduce the packed 32-bit integers in a by bitwise AND using mask k. Returns the bitwise AND of all active elements in a.
35254///
35255/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_and_epi32&expand=4563)
35256#[inline]
35257#[target_feature(enable = "avx512f")]
35258#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35259#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35260pub const fn _mm512_mask_reduce_and_epi32(k: __mmask16, a: __m512i) -> i32 {
35261    unsafe { simd_reduce_and(simd_select_bitmask(k, a.as_i32x16(), i32x16::splat(-1))) }
35262}
35263
35264/// Reduce the packed 64-bit integers in a by bitwise AND. Returns the bitwise AND of all elements in a.
35265///
35266/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_and_epi64&expand=4566)
35267#[inline]
35268#[target_feature(enable = "avx512f")]
35269#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35270#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35271pub const fn _mm512_reduce_and_epi64(a: __m512i) -> i64 {
35272    unsafe { simd_reduce_and(a.as_i64x8()) }
35273}
35274
35275/// Reduce the packed 64-bit integers in a by addition using mask k. Returns the sum of all active elements in a.
35276///
35277/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_and_epi64&expand=4557)
35278#[inline]
35279#[target_feature(enable = "avx512f")]
35280#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35281#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35282pub const fn _mm512_mask_reduce_and_epi64(k: __mmask8, a: __m512i) -> i64 {
35283    unsafe { simd_reduce_and(simd_select_bitmask(k, a.as_i64x8(), i64x8::splat(-1))) }
35284}
35285
35286/// Reduce the packed 32-bit integers in a by bitwise OR. Returns the bitwise OR of all elements in a.
35287///
35288/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_or_epi32&expand=4608)
35289#[inline]
35290#[target_feature(enable = "avx512f")]
35291#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35292#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35293pub const fn _mm512_reduce_or_epi32(a: __m512i) -> i32 {
35294    unsafe { simd_reduce_or(a.as_i32x16()) }
35295}
35296
35297/// Reduce the packed 32-bit integers in a by bitwise OR using mask k. Returns the bitwise OR of all active elements in a.
35298///
35299/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_or_epi32&expand=4607)
35300#[inline]
35301#[target_feature(enable = "avx512f")]
35302#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35303#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35304pub const fn _mm512_mask_reduce_or_epi32(k: __mmask16, a: __m512i) -> i32 {
35305    unsafe { simd_reduce_or(simd_select_bitmask(k, a.as_i32x16(), i32x16::ZERO)) }
35306}
35307
35308/// Reduce the packed 64-bit integers in a by bitwise OR. Returns the bitwise OR of all elements in a.
35309///
35310/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_reduce_or_epi64&expand=4610)
35311#[inline]
35312#[target_feature(enable = "avx512f")]
35313#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35314#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35315pub const fn _mm512_reduce_or_epi64(a: __m512i) -> i64 {
35316    unsafe { simd_reduce_or(a.as_i64x8()) }
35317}
35318
35319/// Reduce the packed 64-bit integers in a by bitwise OR using mask k. Returns the bitwise OR of all active elements in a.
35320///
35321/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_reduce_or_epi64&expand=4609)
35322#[inline]
35323#[target_feature(enable = "avx512f")]
35324#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35325#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35326pub const fn _mm512_mask_reduce_or_epi64(k: __mmask8, a: __m512i) -> i64 {
35327    unsafe { simd_reduce_or(simd_select_bitmask(k, a.as_i64x8(), i64x8::ZERO)) }
35328}
35329
35330/// Returns vector of type `__m512d` with indeterminate elements.
35331/// Despite using the word "undefined" (following Intel's naming scheme), this non-deterministically
35332/// picks some valid value and is not equivalent to [`mem::MaybeUninit`].
35333/// In practice, this is typically equivalent to [`mem::zeroed`].
35334///
35335/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_undefined_pd)
35336#[inline]
35337#[target_feature(enable = "avx512f")]
35338#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35339// This intrinsic has no corresponding instruction.
35340#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35341pub const fn _mm512_undefined_pd() -> __m512d {
35342    unsafe { const { mem::zeroed() } }
35343}
35344
35345/// Returns vector of type `__m512` with indeterminate elements.
35346/// Despite using the word "undefined" (following Intel's naming scheme), this non-deterministically
35347/// picks some valid value and is not equivalent to [`mem::MaybeUninit`].
35348/// In practice, this is typically equivalent to [`mem::zeroed`].
35349///
35350/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_undefined_ps)
35351#[inline]
35352#[target_feature(enable = "avx512f")]
35353#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35354// This intrinsic has no corresponding instruction.
35355#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35356pub const fn _mm512_undefined_ps() -> __m512 {
35357    unsafe { const { mem::zeroed() } }
35358}
35359
35360/// Return vector of type __m512i with indeterminate elements.
35361/// Despite using the word "undefined" (following Intel's naming scheme), this non-deterministically
35362/// picks some valid value and is not equivalent to [`mem::MaybeUninit`].
35363/// In practice, this is typically equivalent to [`mem::zeroed`].
35364///
35365/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_undefined_epi32&expand=5995)
35366#[inline]
35367#[target_feature(enable = "avx512f")]
35368#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35369// This intrinsic has no corresponding instruction.
35370#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35371pub const fn _mm512_undefined_epi32() -> __m512i {
35372    unsafe { const { mem::zeroed() } }
35373}
35374
35375/// Return vector of type __m512 with indeterminate elements.
35376/// Despite using the word "undefined" (following Intel's naming scheme), this non-deterministically
35377/// picks some valid value and is not equivalent to [`mem::MaybeUninit`].
35378/// In practice, this is typically equivalent to [`mem::zeroed`].
35379///
35380/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_undefined&expand=5994)
35381#[inline]
35382#[target_feature(enable = "avx512f")]
35383#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35384// This intrinsic has no corresponding instruction.
35385#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35386pub const fn _mm512_undefined() -> __m512 {
35387    unsafe { const { mem::zeroed() } }
35388}
35389
35390/// Load 512-bits (composed of 16 packed 32-bit integers) from memory into dst. mem_addr does not need to be aligned on any particular boundary.
35391///
35392/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_loadu_epi32&expand=3377)
35393#[inline]
35394#[target_feature(enable = "avx512f")]
35395#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35396#[cfg_attr(test, assert_instr(vmovups))] //should be vmovdqu32
35397#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35398pub const unsafe fn _mm512_loadu_epi32(mem_addr: *const i32) -> __m512i {
35399    ptr::read_unaligned(mem_addr as *const __m512i)
35400}
35401
35402/// Load 256-bits (composed of 8 packed 32-bit integers) from memory into dst. mem_addr does not need to be aligned on any particular boundary.
35403///
35404/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_loadu_epi32&expand=3374)
35405#[inline]
35406#[target_feature(enable = "avx512f,avx512vl")]
35407#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35408#[cfg_attr(test, assert_instr(vmovups))] //should be vmovdqu32
35409#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35410pub const unsafe fn _mm256_loadu_epi32(mem_addr: *const i32) -> __m256i {
35411    ptr::read_unaligned(mem_addr as *const __m256i)
35412}
35413
35414/// Load 128-bits (composed of 4 packed 32-bit integers) from memory into dst. mem_addr does not need to be aligned on any particular boundary.
35415///
35416/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadu_epi32&expand=3371)
35417#[inline]
35418#[target_feature(enable = "avx512f,avx512vl")]
35419#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35420#[cfg_attr(test, assert_instr(vmovups))] //should be vmovdqu32
35421#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35422pub const unsafe fn _mm_loadu_epi32(mem_addr: *const i32) -> __m128i {
35423    ptr::read_unaligned(mem_addr as *const __m128i)
35424}
35425
35426/// Convert packed 32-bit integers in a to packed 16-bit integers with truncation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35427///
35428/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepi32_storeu_epi16&expand=1460)
35429#[inline]
35430#[target_feature(enable = "avx512f")]
35431#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35432#[cfg_attr(test, assert_instr(vpmovdw))]
35433pub unsafe fn _mm512_mask_cvtepi32_storeu_epi16(mem_addr: *mut i16, k: __mmask16, a: __m512i) {
35434    vpmovdwmem(mem_addr.cast(), a.as_i32x16(), k);
35435}
35436
35437/// Convert packed 32-bit integers in a to packed 16-bit integers with truncation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35438///
35439/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepi32_storeu_epi16&expand=1462)
35440#[inline]
35441#[target_feature(enable = "avx512f,avx512vl")]
35442#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35443#[cfg_attr(test, assert_instr(vpmovdw))]
35444pub unsafe fn _mm256_mask_cvtepi32_storeu_epi16(mem_addr: *mut i16, k: __mmask8, a: __m256i) {
35445    vpmovdwmem256(mem_addr.cast(), a.as_i32x8(), k);
35446}
35447
35448/// Convert packed 32-bit integers in a to packed 16-bit integers with truncation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35449///
35450/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepi32_storeu_epi16&expand=1461)
35451#[inline]
35452#[target_feature(enable = "avx512f,avx512vl")]
35453#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35454#[cfg_attr(test, assert_instr(vpmovdw))]
35455pub unsafe fn _mm_mask_cvtepi32_storeu_epi16(mem_addr: *mut i16, k: __mmask8, a: __m128i) {
35456    vpmovdwmem128(mem_addr.cast(), a.as_i32x4(), k);
35457}
35458
35459/// Convert packed signed 32-bit integers in a to packed 16-bit integers with signed saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35460///
35461/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtsepi32_storeu_epi16&expand=1833)
35462#[inline]
35463#[target_feature(enable = "avx512f")]
35464#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35465#[cfg_attr(test, assert_instr(vpmovsdw))]
35466pub unsafe fn _mm512_mask_cvtsepi32_storeu_epi16(mem_addr: *mut i16, k: __mmask16, a: __m512i) {
35467    vpmovsdwmem(mem_addr.cast(), a.as_i32x16(), k);
35468}
35469
35470/// Convert packed signed 32-bit integers in a to packed 16-bit integers with signed saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35471///
35472/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtsepi32_storeu_epi16&expand=1832)
35473#[inline]
35474#[target_feature(enable = "avx512f,avx512vl")]
35475#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35476#[cfg_attr(test, assert_instr(vpmovsdw))]
35477pub unsafe fn _mm256_mask_cvtsepi32_storeu_epi16(mem_addr: *mut i16, k: __mmask8, a: __m256i) {
35478    vpmovsdwmem256(mem_addr.cast(), a.as_i32x8(), k);
35479}
35480
35481/// Convert packed signed 32-bit integers in a to packed 16-bit integers with signed saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35482///
35483/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtsepi32_storeu_epi16&expand=1831)
35484#[inline]
35485#[target_feature(enable = "avx512f,avx512vl")]
35486#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35487#[cfg_attr(test, assert_instr(vpmovsdw))]
35488pub unsafe fn _mm_mask_cvtsepi32_storeu_epi16(mem_addr: *mut i16, k: __mmask8, a: __m128i) {
35489    vpmovsdwmem128(mem_addr.cast(), a.as_i32x4(), k);
35490}
35491
35492/// Convert packed unsigned 32-bit integers in a to packed 16-bit integers with unsigned saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35493///
35494/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtusepi32_storeu_epi16&expand=2068)
35495#[inline]
35496#[target_feature(enable = "avx512f")]
35497#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35498#[cfg_attr(test, assert_instr(vpmovusdw))]
35499pub unsafe fn _mm512_mask_cvtusepi32_storeu_epi16(mem_addr: *mut i16, k: __mmask16, a: __m512i) {
35500    vpmovusdwmem(mem_addr.cast(), a.as_i32x16(), k);
35501}
35502
35503/// Convert packed unsigned 32-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35504///
35505/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtusepi32_storeu_epi16&expand=2067)
35506#[inline]
35507#[target_feature(enable = "avx512f,avx512vl")]
35508#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35509#[cfg_attr(test, assert_instr(vpmovusdw))]
35510pub unsafe fn _mm256_mask_cvtusepi32_storeu_epi16(mem_addr: *mut i16, k: __mmask8, a: __m256i) {
35511    vpmovusdwmem256(mem_addr.cast(), a.as_i32x8(), k);
35512}
35513
35514/// Convert packed unsigned 32-bit integers in a to packed unsigned 16-bit integers with unsigned saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35515///
35516/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtusepi32_storeu_epi16&expand=2066)
35517#[inline]
35518#[target_feature(enable = "avx512f,avx512vl")]
35519#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35520#[cfg_attr(test, assert_instr(vpmovusdw))]
35521pub unsafe fn _mm_mask_cvtusepi32_storeu_epi16(mem_addr: *mut i16, k: __mmask8, a: __m128i) {
35522    vpmovusdwmem128(mem_addr.cast(), a.as_i32x4(), k);
35523}
35524
35525/// Convert packed 32-bit integers in a to packed 8-bit integers with truncation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35526///
35527/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepi32_storeu_epi8&expand=1463)
35528#[inline]
35529#[target_feature(enable = "avx512f")]
35530#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35531#[cfg_attr(test, assert_instr(vpmovdb))]
35532pub unsafe fn _mm512_mask_cvtepi32_storeu_epi8(mem_addr: *mut i8, k: __mmask16, a: __m512i) {
35533    vpmovdbmem(mem_addr, a.as_i32x16(), k);
35534}
35535
35536/// Convert packed 32-bit integers in a to packed 8-bit integers with truncation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35537///
35538/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepi32_storeu_epi8&expand=1462)
35539#[inline]
35540#[target_feature(enable = "avx512f,avx512vl")]
35541#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35542#[cfg_attr(test, assert_instr(vpmovdb))]
35543pub unsafe fn _mm256_mask_cvtepi32_storeu_epi8(mem_addr: *mut i8, k: __mmask8, a: __m256i) {
35544    vpmovdbmem256(mem_addr, a.as_i32x8(), k);
35545}
35546
35547/// Convert packed 32-bit integers in a to packed 8-bit integers with truncation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35548///
35549/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepi32_storeu_epi8&expand=1461)
35550#[inline]
35551#[target_feature(enable = "avx512f,avx512vl")]
35552#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35553#[cfg_attr(test, assert_instr(vpmovdb))]
35554pub unsafe fn _mm_mask_cvtepi32_storeu_epi8(mem_addr: *mut i8, k: __mmask8, a: __m128i) {
35555    vpmovdbmem128(mem_addr, a.as_i32x4(), k);
35556}
35557
35558/// Convert packed signed 32-bit integers in a to packed 8-bit integers with signed saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35559///
35560/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtsepi32_storeu_epi8&expand=1836)
35561#[inline]
35562#[target_feature(enable = "avx512f")]
35563#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35564#[cfg_attr(test, assert_instr(vpmovsdb))]
35565pub unsafe fn _mm512_mask_cvtsepi32_storeu_epi8(mem_addr: *mut i8, k: __mmask16, a: __m512i) {
35566    vpmovsdbmem(mem_addr, a.as_i32x16(), k);
35567}
35568
35569/// Convert packed signed 32-bit integers in a to packed 8-bit integers with signed saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35570///
35571/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtsepi32_storeu_epi8&expand=1835)
35572#[inline]
35573#[target_feature(enable = "avx512f,avx512vl")]
35574#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35575#[cfg_attr(test, assert_instr(vpmovsdb))]
35576pub unsafe fn _mm256_mask_cvtsepi32_storeu_epi8(mem_addr: *mut i8, k: __mmask8, a: __m256i) {
35577    vpmovsdbmem256(mem_addr, a.as_i32x8(), k);
35578}
35579
35580/// Convert packed signed 32-bit integers in a to packed 8-bit integers with signed saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35581///
35582/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtsepi32_storeu_epi8&expand=1834)
35583#[inline]
35584#[target_feature(enable = "avx512f,avx512vl")]
35585#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35586#[cfg_attr(test, assert_instr(vpmovsdb))]
35587pub unsafe fn _mm_mask_cvtsepi32_storeu_epi8(mem_addr: *mut i8, k: __mmask8, a: __m128i) {
35588    vpmovsdbmem128(mem_addr, a.as_i32x4(), k);
35589}
35590
35591/// Convert packed unsigned 32-bit integers in a to packed 8-bit integers with unsigned saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35592///
35593/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtusepi32_storeu_epi8&expand=2071)
35594#[inline]
35595#[target_feature(enable = "avx512f")]
35596#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35597#[cfg_attr(test, assert_instr(vpmovusdb))]
35598pub unsafe fn _mm512_mask_cvtusepi32_storeu_epi8(mem_addr: *mut i8, k: __mmask16, a: __m512i) {
35599    vpmovusdbmem(mem_addr, a.as_i32x16(), k);
35600}
35601
35602/// Convert packed unsigned 32-bit integers in a to packed 8-bit integers with unsigned saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35603///
35604/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtusepi32_storeu_epi8&expand=2070)
35605#[inline]
35606#[target_feature(enable = "avx512f,avx512vl")]
35607#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35608#[cfg_attr(test, assert_instr(vpmovusdb))]
35609pub unsafe fn _mm256_mask_cvtusepi32_storeu_epi8(mem_addr: *mut i8, k: __mmask8, a: __m256i) {
35610    vpmovusdbmem256(mem_addr, a.as_i32x8(), k);
35611}
35612
35613/// Convert packed unsigned 32-bit integers in a to packed 8-bit integers with unsigned saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35614///
35615/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtusepi32_storeu_epi8&expand=2069)
35616#[inline]
35617#[target_feature(enable = "avx512f,avx512vl")]
35618#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35619#[cfg_attr(test, assert_instr(vpmovusdb))]
35620pub unsafe fn _mm_mask_cvtusepi32_storeu_epi8(mem_addr: *mut i8, k: __mmask8, a: __m128i) {
35621    vpmovusdbmem128(mem_addr, a.as_i32x4(), k);
35622}
35623
35624/// Convert packed 64-bit integers in a to packed 16-bit integers with truncation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35625///
35626/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepi64_storeu_epi16&expand=1513)
35627#[inline]
35628#[target_feature(enable = "avx512f")]
35629#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35630#[cfg_attr(test, assert_instr(vpmovqw))]
35631pub unsafe fn _mm512_mask_cvtepi64_storeu_epi16(mem_addr: *mut i16, k: __mmask8, a: __m512i) {
35632    vpmovqwmem(mem_addr.cast(), a.as_i64x8(), k);
35633}
35634
35635/// Convert packed 64-bit integers in a to packed 16-bit integers with truncation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35636///
35637/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepi64_storeu_epi16&expand=1512)
35638#[inline]
35639#[target_feature(enable = "avx512f,avx512vl")]
35640#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35641#[cfg_attr(test, assert_instr(vpmovqw))]
35642pub unsafe fn _mm256_mask_cvtepi64_storeu_epi16(mem_addr: *mut i16, k: __mmask8, a: __m256i) {
35643    vpmovqwmem256(mem_addr.cast(), a.as_i64x4(), k);
35644}
35645
35646/// Convert packed 64-bit integers in a to packed 16-bit integers with truncation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35647///
35648/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepi64_storeu_epi16&expand=1511)
35649#[inline]
35650#[target_feature(enable = "avx512f,avx512vl")]
35651#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35652#[cfg_attr(test, assert_instr(vpmovqw))]
35653pub unsafe fn _mm_mask_cvtepi64_storeu_epi16(mem_addr: *mut i16, k: __mmask8, a: __m128i) {
35654    vpmovqwmem128(mem_addr.cast(), a.as_i64x2(), k);
35655}
35656
35657/// Convert packed signed 64-bit integers in a to packed 16-bit integers with signed saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35658///
35659/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtsepi64_storeu_epi16&expand=1866)
35660#[inline]
35661#[target_feature(enable = "avx512f")]
35662#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35663#[cfg_attr(test, assert_instr(vpmovsqw))]
35664pub unsafe fn _mm512_mask_cvtsepi64_storeu_epi16(mem_addr: *mut i16, k: __mmask8, a: __m512i) {
35665    vpmovsqwmem(mem_addr.cast(), a.as_i64x8(), k);
35666}
35667
35668/// Convert packed signed 64-bit integers in a to packed 16-bit integers with signed saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35669///
35670/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtsepi64_storeu_epi16&expand=1865)
35671#[inline]
35672#[target_feature(enable = "avx512f,avx512vl")]
35673#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35674#[cfg_attr(test, assert_instr(vpmovsqw))]
35675pub unsafe fn _mm256_mask_cvtsepi64_storeu_epi16(mem_addr: *mut i16, k: __mmask8, a: __m256i) {
35676    vpmovsqwmem256(mem_addr.cast(), a.as_i64x4(), k);
35677}
35678
35679/// Convert packed signed 64-bit integers in a to packed 16-bit integers with signed saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35680///
35681/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtsepi64_storeu_epi16&expand=1864)
35682#[inline]
35683#[target_feature(enable = "avx512f,avx512vl")]
35684#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35685#[cfg_attr(test, assert_instr(vpmovsqw))]
35686pub unsafe fn _mm_mask_cvtsepi64_storeu_epi16(mem_addr: *mut i16, k: __mmask8, a: __m128i) {
35687    vpmovsqwmem128(mem_addr.cast(), a.as_i64x2(), k);
35688}
35689
35690/// Convert packed unsigned 64-bit integers in a to packed 16-bit integers with unsigned saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35691///
35692/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtusepi64_storeu_epi16&expand=2101)
35693#[inline]
35694#[target_feature(enable = "avx512f")]
35695#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35696#[cfg_attr(test, assert_instr(vpmovusqw))]
35697pub unsafe fn _mm512_mask_cvtusepi64_storeu_epi16(mem_addr: *mut i16, k: __mmask8, a: __m512i) {
35698    vpmovusqwmem(mem_addr.cast(), a.as_i64x8(), k);
35699}
35700
35701/// Convert packed unsigned 64-bit integers in a to packed 16-bit integers with unsigned saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35702///
35703/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtusepi64_storeu_epi16&expand=2100)
35704#[inline]
35705#[target_feature(enable = "avx512f,avx512vl")]
35706#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35707#[cfg_attr(test, assert_instr(vpmovusqw))]
35708pub unsafe fn _mm256_mask_cvtusepi64_storeu_epi16(mem_addr: *mut i16, k: __mmask8, a: __m256i) {
35709    vpmovusqwmem256(mem_addr.cast(), a.as_i64x4(), k);
35710}
35711
35712/// Convert packed unsigned 64-bit integers in a to packed 16-bit integers with unsigned saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35713///
35714/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtusepi64_storeu_epi16&expand=2099)
35715#[inline]
35716#[target_feature(enable = "avx512f,avx512vl")]
35717#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35718#[cfg_attr(test, assert_instr(vpmovusqw))]
35719pub unsafe fn _mm_mask_cvtusepi64_storeu_epi16(mem_addr: *mut i16, k: __mmask8, a: __m128i) {
35720    vpmovusqwmem128(mem_addr.cast(), a.as_i64x2(), k);
35721}
35722
35723/// Convert packed 64-bit integers in a to packed 8-bit integers with truncation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35724///
35725/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepi64_storeu_epi8&expand=1519)
35726#[inline]
35727#[target_feature(enable = "avx512f")]
35728#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35729#[cfg_attr(test, assert_instr(vpmovqb))]
35730pub unsafe fn _mm512_mask_cvtepi64_storeu_epi8(mem_addr: *mut i8, k: __mmask8, a: __m512i) {
35731    vpmovqbmem(mem_addr, a.as_i64x8(), k);
35732}
35733
35734/// Convert packed 64-bit integers in a to packed 8-bit integers with truncation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35735///
35736/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepi64_storeu_epi8&expand=1518)
35737#[inline]
35738#[target_feature(enable = "avx512f,avx512vl")]
35739#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35740#[cfg_attr(test, assert_instr(vpmovqb))]
35741pub unsafe fn _mm256_mask_cvtepi64_storeu_epi8(mem_addr: *mut i8, k: __mmask8, a: __m256i) {
35742    vpmovqbmem256(mem_addr, a.as_i64x4(), k);
35743}
35744
35745/// Convert packed 64-bit integers in a to packed 8-bit integers with truncation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35746///
35747/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepi64_storeu_epi8&expand=1517)
35748#[inline]
35749#[target_feature(enable = "avx512f,avx512vl")]
35750#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35751#[cfg_attr(test, assert_instr(vpmovqb))]
35752pub unsafe fn _mm_mask_cvtepi64_storeu_epi8(mem_addr: *mut i8, k: __mmask8, a: __m128i) {
35753    vpmovqbmem128(mem_addr, a.as_i64x2(), k);
35754}
35755
35756/// Convert packed signed 64-bit integers in a to packed 8-bit integers with signed saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35757///
35758/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtsepi64_storeu_epi8&expand=1872)
35759#[inline]
35760#[target_feature(enable = "avx512f")]
35761#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35762#[cfg_attr(test, assert_instr(vpmovsqb))]
35763pub unsafe fn _mm512_mask_cvtsepi64_storeu_epi8(mem_addr: *mut i8, k: __mmask8, a: __m512i) {
35764    vpmovsqbmem(mem_addr, a.as_i64x8(), k);
35765}
35766
35767/// Convert packed signed 64-bit integers in a to packed 8-bit integers with signed saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35768///
35769/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtsepi64_storeu_epi8&expand=1871)
35770#[inline]
35771#[target_feature(enable = "avx512f,avx512vl")]
35772#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35773#[cfg_attr(test, assert_instr(vpmovsqb))]
35774pub unsafe fn _mm256_mask_cvtsepi64_storeu_epi8(mem_addr: *mut i8, k: __mmask8, a: __m256i) {
35775    vpmovsqbmem256(mem_addr, a.as_i64x4(), k);
35776}
35777
35778/// Convert packed signed 64-bit integers in a to packed 8-bit integers with signed saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35779///
35780/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtsepi64_storeu_epi8&expand=1870)
35781#[inline]
35782#[target_feature(enable = "avx512f,avx512vl")]
35783#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35784#[cfg_attr(test, assert_instr(vpmovsqb))]
35785pub unsafe fn _mm_mask_cvtsepi64_storeu_epi8(mem_addr: *mut i8, k: __mmask8, a: __m128i) {
35786    vpmovsqbmem128(mem_addr, a.as_i64x2(), k);
35787}
35788
35789/// Convert packed unsigned 64-bit integers in a to packed 8-bit integers with unsigned saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35790///
35791/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtusepi64_storeu_epi8&expand=2107)
35792#[inline]
35793#[target_feature(enable = "avx512f")]
35794#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35795#[cfg_attr(test, assert_instr(vpmovusqb))]
35796pub unsafe fn _mm512_mask_cvtusepi64_storeu_epi8(mem_addr: *mut i8, k: __mmask8, a: __m512i) {
35797    vpmovusqbmem(mem_addr, a.as_i64x8(), k);
35798}
35799
35800/// Convert packed unsigned 64-bit integers in a to packed 8-bit integers with unsigned saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35801///
35802/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtusepi64_storeu_epi8&expand=2106)
35803#[inline]
35804#[target_feature(enable = "avx512f,avx512vl")]
35805#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35806#[cfg_attr(test, assert_instr(vpmovusqb))]
35807pub unsafe fn _mm256_mask_cvtusepi64_storeu_epi8(mem_addr: *mut i8, k: __mmask8, a: __m256i) {
35808    vpmovusqbmem256(mem_addr, a.as_i64x4(), k);
35809}
35810
35811/// Convert packed unsigned 64-bit integers in a to packed 8-bit integers with unsigned saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35812///
35813/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtusepi64_storeu_epi8&expand=2105)
35814#[inline]
35815#[target_feature(enable = "avx512f,avx512vl")]
35816#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35817#[cfg_attr(test, assert_instr(vpmovusqb))]
35818pub unsafe fn _mm_mask_cvtusepi64_storeu_epi8(mem_addr: *mut i8, k: __mmask8, a: __m128i) {
35819    vpmovusqbmem128(mem_addr, a.as_i64x2(), k);
35820}
35821
35822///Convert packed 64-bit integers in a to packed 32-bit integers with truncation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35823///
35824/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtepi64_storeu_epi32&expand=1516)
35825#[inline]
35826#[target_feature(enable = "avx512f")]
35827#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35828#[cfg_attr(test, assert_instr(vpmovqd))]
35829pub unsafe fn _mm512_mask_cvtepi64_storeu_epi32(mem_addr: *mut i32, k: __mmask8, a: __m512i) {
35830    vpmovqdmem(mem_addr.cast(), a.as_i64x8(), k);
35831}
35832
35833///Convert packed 64-bit integers in a to packed 32-bit integers with truncation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35834///
35835/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtepi64_storeu_epi32&expand=1515)
35836#[inline]
35837#[target_feature(enable = "avx512f,avx512vl")]
35838#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35839#[cfg_attr(test, assert_instr(vpmovqd))]
35840pub unsafe fn _mm256_mask_cvtepi64_storeu_epi32(mem_addr: *mut i32, k: __mmask8, a: __m256i) {
35841    vpmovqdmem256(mem_addr.cast(), a.as_i64x4(), k);
35842}
35843
35844///Convert packed 64-bit integers in a to packed 32-bit integers with truncation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35845///
35846/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtepi64_storeu_epi32&expand=1514)
35847#[inline]
35848#[target_feature(enable = "avx512f,avx512vl")]
35849#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35850#[cfg_attr(test, assert_instr(vpmovqd))]
35851pub unsafe fn _mm_mask_cvtepi64_storeu_epi32(mem_addr: *mut i32, k: __mmask8, a: __m128i) {
35852    vpmovqdmem128(mem_addr.cast(), a.as_i64x2(), k);
35853}
35854
35855/// Convert packed signed 64-bit integers in a to packed 32-bit integers with signed saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35856///
35857/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtsepi64_storeu_epi32&expand=1869)
35858#[inline]
35859#[target_feature(enable = "avx512f")]
35860#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35861#[cfg_attr(test, assert_instr(vpmovsqd))]
35862pub unsafe fn _mm512_mask_cvtsepi64_storeu_epi32(mem_addr: *mut i32, k: __mmask8, a: __m512i) {
35863    vpmovsqdmem(mem_addr.cast(), a.as_i64x8(), k);
35864}
35865
35866/// Convert packed signed 64-bit integers in a to packed 32-bit integers with signed saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35867///
35868/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtsepi64_storeu_epi32&expand=1868)
35869#[inline]
35870#[target_feature(enable = "avx512f,avx512vl")]
35871#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35872#[cfg_attr(test, assert_instr(vpmovsqd))]
35873pub unsafe fn _mm256_mask_cvtsepi64_storeu_epi32(mem_addr: *mut i32, k: __mmask8, a: __m256i) {
35874    vpmovsqdmem256(mem_addr.cast(), a.as_i64x4(), k);
35875}
35876
35877/// Convert packed signed 64-bit integers in a to packed 32-bit integers with signed saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35878///
35879/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtsepi64_storeu_epi32&expand=1867)
35880#[inline]
35881#[target_feature(enable = "avx512f,avx512vl")]
35882#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35883#[cfg_attr(test, assert_instr(vpmovsqd))]
35884pub unsafe fn _mm_mask_cvtsepi64_storeu_epi32(mem_addr: *mut i32, k: __mmask8, a: __m128i) {
35885    vpmovsqdmem128(mem_addr.cast(), a.as_i64x2(), k);
35886}
35887
35888/// Convert packed unsigned 64-bit integers in a to packed 32-bit integers with unsigned saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35889///
35890/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_cvtusepi64_storeu_epi32&expand=2104)
35891#[inline]
35892#[target_feature(enable = "avx512f")]
35893#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35894#[cfg_attr(test, assert_instr(vpmovusqd))]
35895pub unsafe fn _mm512_mask_cvtusepi64_storeu_epi32(mem_addr: *mut i32, k: __mmask8, a: __m512i) {
35896    vpmovusqdmem(mem_addr.cast(), a.as_i64x8(), k);
35897}
35898
35899/// Convert packed unsigned 64-bit integers in a to packed 32-bit integers with unsigned saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35900///
35901/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_cvtusepi64_storeu_epi32&expand=2103)
35902#[inline]
35903#[target_feature(enable = "avx512f,avx512vl")]
35904#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35905#[cfg_attr(test, assert_instr(vpmovusqd))]
35906pub unsafe fn _mm256_mask_cvtusepi64_storeu_epi32(mem_addr: *mut i32, k: __mmask8, a: __m256i) {
35907    vpmovusqdmem256(mem_addr.cast(), a.as_i64x4(), k);
35908}
35909
35910/// Convert packed unsigned 64-bit integers in a to packed 32-bit integers with unsigned saturation, and store the active results (those with their respective bit set in writemask k) to unaligned memory at base_addr.
35911///
35912/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_cvtusepi64_storeu_epi32&expand=2102)
35913#[inline]
35914#[target_feature(enable = "avx512f,avx512vl")]
35915#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35916#[cfg_attr(test, assert_instr(vpmovusqd))]
35917pub unsafe fn _mm_mask_cvtusepi64_storeu_epi32(mem_addr: *mut i32, k: __mmask8, a: __m128i) {
35918    vpmovusqdmem128(mem_addr.cast(), a.as_i64x2(), k);
35919}
35920
35921/// Store 512-bits (composed of 16 packed 32-bit integers) from a into memory. mem_addr does not need to be aligned on any particular boundary.
35922///
35923/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_storeu_epi32&expand=5628)
35924#[inline]
35925#[target_feature(enable = "avx512f")]
35926#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35927#[cfg_attr(test, assert_instr(vmovups))] //should be vmovdqu32
35928#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35929pub const unsafe fn _mm512_storeu_epi32(mem_addr: *mut i32, a: __m512i) {
35930    ptr::write_unaligned(mem_addr as *mut __m512i, a);
35931}
35932
35933/// Store 256-bits (composed of 8 packed 32-bit integers) from a into memory. mem_addr does not need to be aligned on any particular boundary.
35934///
35935/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_storeu_epi32&expand=5626)
35936#[inline]
35937#[target_feature(enable = "avx512f,avx512vl")]
35938#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35939#[cfg_attr(test, assert_instr(vmovups))] //should be vmovdqu32
35940#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35941pub const unsafe fn _mm256_storeu_epi32(mem_addr: *mut i32, a: __m256i) {
35942    ptr::write_unaligned(mem_addr as *mut __m256i, a);
35943}
35944
35945/// Store 128-bits (composed of 4 packed 32-bit integers) from a into memory. mem_addr does not need to be aligned on any particular boundary.
35946///
35947/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeu_epi32&expand=5624)
35948#[inline]
35949#[target_feature(enable = "avx512f,avx512vl")]
35950#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35951#[cfg_attr(test, assert_instr(vmovups))] //should be vmovdqu32
35952#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35953pub const unsafe fn _mm_storeu_epi32(mem_addr: *mut i32, a: __m128i) {
35954    ptr::write_unaligned(mem_addr as *mut __m128i, a);
35955}
35956
35957/// Load 512-bits (composed of 8 packed 64-bit integers) from memory into dst. mem_addr does not need to be aligned on any particular boundary.
35958///
35959/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_loadu_epi64&expand=3386)
35960#[inline]
35961#[target_feature(enable = "avx512f")]
35962#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35963#[cfg_attr(test, assert_instr(vmovups))] //should be vmovdqu64
35964#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35965pub const unsafe fn _mm512_loadu_epi64(mem_addr: *const i64) -> __m512i {
35966    ptr::read_unaligned(mem_addr as *const __m512i)
35967}
35968
35969/// Load 256-bits (composed of 4 packed 64-bit integers) from memory into dst. mem_addr does not need to be aligned on any particular boundary.
35970///
35971/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_loadu_epi64&expand=3383)
35972#[inline]
35973#[target_feature(enable = "avx512f,avx512vl")]
35974#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35975#[cfg_attr(test, assert_instr(vmovups))] //should be vmovdqu64
35976#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35977pub const unsafe fn _mm256_loadu_epi64(mem_addr: *const i64) -> __m256i {
35978    ptr::read_unaligned(mem_addr as *const __m256i)
35979}
35980
35981/// Load 128-bits (composed of 2 packed 64-bit integers) from memory into dst. mem_addr does not need to be aligned on any particular boundary.
35982///
35983/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadu_epi64&expand=3380)
35984#[inline]
35985#[target_feature(enable = "avx512f,avx512vl")]
35986#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35987#[cfg_attr(test, assert_instr(vmovups))] //should be vmovdqu64
35988#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
35989pub const unsafe fn _mm_loadu_epi64(mem_addr: *const i64) -> __m128i {
35990    ptr::read_unaligned(mem_addr as *const __m128i)
35991}
35992
35993/// Store 512-bits (composed of 8 packed 64-bit integers) from a into memory. mem_addr does not need to be aligned on any particular boundary.
35994///
35995/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_storeu_epi64&expand=5634)
35996#[inline]
35997#[target_feature(enable = "avx512f")]
35998#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
35999#[cfg_attr(test, assert_instr(vmovups))] //should be vmovdqu64
36000#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36001pub const unsafe fn _mm512_storeu_epi64(mem_addr: *mut i64, a: __m512i) {
36002    ptr::write_unaligned(mem_addr as *mut __m512i, a);
36003}
36004
36005/// Store 256-bits (composed of 4 packed 64-bit integers) from a into memory. mem_addr does not need to be aligned on any particular boundary.
36006///
36007/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_storeu_epi64&expand=5632)
36008#[inline]
36009#[target_feature(enable = "avx512f,avx512vl")]
36010#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36011#[cfg_attr(test, assert_instr(vmovups))] //should be vmovdqu64
36012#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36013pub const unsafe fn _mm256_storeu_epi64(mem_addr: *mut i64, a: __m256i) {
36014    ptr::write_unaligned(mem_addr as *mut __m256i, a);
36015}
36016
36017/// Store 128-bits (composed of 2 packed 64-bit integers) from a into memory. mem_addr does not need to be aligned on any particular boundary.
36018///
36019/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeu_epi64&expand=5630)
36020#[inline]
36021#[target_feature(enable = "avx512f,avx512vl")]
36022#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36023#[cfg_attr(test, assert_instr(vmovups))] //should be vmovdqu64
36024#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36025pub const unsafe fn _mm_storeu_epi64(mem_addr: *mut i64, a: __m128i) {
36026    ptr::write_unaligned(mem_addr as *mut __m128i, a);
36027}
36028
36029/// Load 512-bits of integer data from memory into dst. mem_addr does not need to be aligned on any particular boundary.
36030///
36031/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_loadu_si512&expand=3420)
36032#[inline]
36033#[target_feature(enable = "avx512f")]
36034#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36035#[cfg_attr(test, assert_instr(vmovups))] //should be vmovdqu32
36036#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36037pub const unsafe fn _mm512_loadu_si512(mem_addr: *const __m512i) -> __m512i {
36038    ptr::read_unaligned(mem_addr)
36039}
36040
36041/// Store 512-bits of integer data from a into memory. mem_addr does not need to be aligned on any particular boundary.
36042///
36043/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_storeu_si512&expand=5657)
36044#[inline]
36045#[target_feature(enable = "avx512f")]
36046#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36047#[cfg_attr(test, assert_instr(vmovups))] //should be vmovdqu32
36048#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36049pub const unsafe fn _mm512_storeu_si512(mem_addr: *mut __m512i, a: __m512i) {
36050    ptr::write_unaligned(mem_addr, a);
36051}
36052
36053/// Loads 512-bits (composed of 8 packed double-precision (64-bit)
36054/// floating-point elements) from memory into result.
36055/// `mem_addr` does not need to be aligned on any particular boundary.
36056///
36057/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_loadu_pd)
36058#[inline]
36059#[target_feature(enable = "avx512f")]
36060#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36061#[cfg_attr(test, assert_instr(vmovups))]
36062#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36063pub const unsafe fn _mm512_loadu_pd(mem_addr: *const f64) -> __m512d {
36064    ptr::read_unaligned(mem_addr as *const __m512d)
36065}
36066
36067/// Stores 512-bits (composed of 8 packed double-precision (64-bit)
36068/// floating-point elements) from `a` into memory.
36069/// `mem_addr` does not need to be aligned on any particular boundary.
36070///
36071/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_storeu_pd)
36072#[inline]
36073#[target_feature(enable = "avx512f")]
36074#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36075#[cfg_attr(test, assert_instr(vmovups))]
36076#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36077pub const unsafe fn _mm512_storeu_pd(mem_addr: *mut f64, a: __m512d) {
36078    ptr::write_unaligned(mem_addr as *mut __m512d, a);
36079}
36080
36081/// Loads 512-bits (composed of 16 packed single-precision (32-bit)
36082/// floating-point elements) from memory into result.
36083/// `mem_addr` does not need to be aligned on any particular boundary.
36084///
36085/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_loadu_ps)
36086#[inline]
36087#[target_feature(enable = "avx512f")]
36088#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36089#[cfg_attr(test, assert_instr(vmovups))]
36090#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36091pub const unsafe fn _mm512_loadu_ps(mem_addr: *const f32) -> __m512 {
36092    ptr::read_unaligned(mem_addr as *const __m512)
36093}
36094
36095/// Stores 512-bits (composed of 16 packed single-precision (32-bit)
36096/// floating-point elements) from `a` into memory.
36097/// `mem_addr` does not need to be aligned on any particular boundary.
36098///
36099/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_storeu_ps)
36100#[inline]
36101#[target_feature(enable = "avx512f")]
36102#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36103#[cfg_attr(test, assert_instr(vmovups))]
36104#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36105pub const unsafe fn _mm512_storeu_ps(mem_addr: *mut f32, a: __m512) {
36106    ptr::write_unaligned(mem_addr as *mut __m512, a);
36107}
36108
36109/// Load 512-bits of integer data from memory into dst. mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
36110///
36111/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_load_si512&expand=3345)
36112#[inline]
36113#[target_feature(enable = "avx512f")]
36114#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36115#[cfg_attr(
36116    all(test, not(all(target_arch = "x86", target_env = "msvc"))),
36117    assert_instr(vmovaps)
36118)] //should be vmovdqa32
36119#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36120pub const unsafe fn _mm512_load_si512(mem_addr: *const __m512i) -> __m512i {
36121    ptr::read(mem_addr)
36122}
36123
36124/// Store 512-bits of integer data from a into memory. mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
36125///
36126/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_store_si512&expand=5598)
36127#[inline]
36128#[target_feature(enable = "avx512f")]
36129#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36130#[cfg_attr(
36131    all(test, not(all(target_arch = "x86", target_env = "msvc"))),
36132    assert_instr(vmovaps)
36133)] //should be vmovdqa32
36134#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36135pub const unsafe fn _mm512_store_si512(mem_addr: *mut __m512i, a: __m512i) {
36136    ptr::write(mem_addr, a);
36137}
36138
36139/// Load 512-bits (composed of 16 packed 32-bit integers) from memory into dst. mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
36140///
36141/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_load_epi32&expand=3304)
36142#[inline]
36143#[target_feature(enable = "avx512f")]
36144#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36145#[cfg_attr(
36146    all(test, not(all(target_arch = "x86", target_env = "msvc"))),
36147    assert_instr(vmovaps)
36148)] //should be vmovdqa32
36149#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36150pub const unsafe fn _mm512_load_epi32(mem_addr: *const i32) -> __m512i {
36151    ptr::read(mem_addr as *const __m512i)
36152}
36153
36154/// Load 256-bits (composed of 8 packed 32-bit integers) from memory into dst. mem_addr must be aligned on a 32-byte boundary or a general-protection exception may be generated.
36155///
36156/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_load_epi32&expand=3301)
36157#[inline]
36158#[target_feature(enable = "avx512f,avx512vl")]
36159#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36160#[cfg_attr(
36161    all(test, not(all(target_arch = "x86", target_env = "msvc"))),
36162    assert_instr(vmovaps)
36163)] //should be vmovdqa32
36164#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36165pub const unsafe fn _mm256_load_epi32(mem_addr: *const i32) -> __m256i {
36166    ptr::read(mem_addr as *const __m256i)
36167}
36168
36169/// Load 128-bits (composed of 4 packed 32-bit integers) from memory into dst. mem_addr must be aligned on a 16-byte boundary or a general-protection exception may be generated.
36170///
36171/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_epi32&expand=3298)
36172#[inline]
36173#[target_feature(enable = "avx512f,avx512vl")]
36174#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36175#[cfg_attr(
36176    all(test, not(all(target_arch = "x86", target_env = "msvc"))),
36177    assert_instr(vmovaps)
36178)] //should be vmovdqa32
36179#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36180pub const unsafe fn _mm_load_epi32(mem_addr: *const i32) -> __m128i {
36181    ptr::read(mem_addr as *const __m128i)
36182}
36183
36184/// Store 512-bits (composed of 16 packed 32-bit integers) from a into memory. mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
36185///
36186/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_store_epi32&expand=5569)
36187#[inline]
36188#[target_feature(enable = "avx512f")]
36189#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36190#[cfg_attr(
36191    all(test, not(all(target_arch = "x86", target_env = "msvc"))),
36192    assert_instr(vmovaps)
36193)] //should be vmovdqa32
36194#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36195pub const unsafe fn _mm512_store_epi32(mem_addr: *mut i32, a: __m512i) {
36196    ptr::write(mem_addr as *mut __m512i, a);
36197}
36198
36199/// Store 256-bits (composed of 8 packed 32-bit integers) from a into memory. mem_addr must be aligned on a 32-byte boundary or a general-protection exception may be generated.
36200///
36201/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_store_epi32&expand=5567)
36202#[inline]
36203#[target_feature(enable = "avx512f,avx512vl")]
36204#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36205#[cfg_attr(
36206    all(test, not(all(target_arch = "x86", target_env = "msvc"))),
36207    assert_instr(vmovaps)
36208)] //should be vmovdqa32
36209#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36210pub const unsafe fn _mm256_store_epi32(mem_addr: *mut i32, a: __m256i) {
36211    ptr::write(mem_addr as *mut __m256i, a);
36212}
36213
36214/// Store 128-bits (composed of 4 packed 32-bit integers) from a into memory. mem_addr must be aligned on a 16-byte boundary or a general-protection exception may be generated.
36215///
36216/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store_epi32&expand=5565)
36217#[inline]
36218#[target_feature(enable = "avx512f,avx512vl")]
36219#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36220#[cfg_attr(
36221    all(test, not(all(target_arch = "x86", target_env = "msvc"))),
36222    assert_instr(vmovaps)
36223)] //should be vmovdqa32
36224#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36225pub const unsafe fn _mm_store_epi32(mem_addr: *mut i32, a: __m128i) {
36226    ptr::write(mem_addr as *mut __m128i, a);
36227}
36228
36229/// Load 512-bits (composed of 8 packed 64-bit integers) from memory into dst. mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
36230///
36231/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_load_epi64&expand=3313)
36232#[inline]
36233#[target_feature(enable = "avx512f")]
36234#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36235#[cfg_attr(
36236    all(test, not(all(target_arch = "x86", target_env = "msvc"))),
36237    assert_instr(vmovaps)
36238)] //should be vmovdqa64
36239#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36240pub const unsafe fn _mm512_load_epi64(mem_addr: *const i64) -> __m512i {
36241    ptr::read(mem_addr as *const __m512i)
36242}
36243
36244/// Load 256-bits (composed of 4 packed 64-bit integers) from memory into dst. mem_addr must be aligned on a 32-byte boundary or a general-protection exception may be generated.
36245///
36246/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_load_epi64&expand=3310)
36247#[inline]
36248#[target_feature(enable = "avx512f,avx512vl")]
36249#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36250#[cfg_attr(
36251    all(test, not(all(target_arch = "x86", target_env = "msvc"))),
36252    assert_instr(vmovaps)
36253)] //should be vmovdqa64
36254#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36255pub const unsafe fn _mm256_load_epi64(mem_addr: *const i64) -> __m256i {
36256    ptr::read(mem_addr as *const __m256i)
36257}
36258
36259/// Load 128-bits (composed of 2 packed 64-bit integers) from memory into dst. mem_addr must be aligned on a 16-byte boundary or a general-protection exception may be generated.
36260///
36261/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_epi64&expand=3307)
36262#[inline]
36263#[target_feature(enable = "avx512f,avx512vl")]
36264#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36265#[cfg_attr(
36266    all(test, not(all(target_arch = "x86", target_env = "msvc"))),
36267    assert_instr(vmovaps)
36268)] //should be vmovdqa64
36269#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36270pub const unsafe fn _mm_load_epi64(mem_addr: *const i64) -> __m128i {
36271    ptr::read(mem_addr as *const __m128i)
36272}
36273
36274/// Store 512-bits (composed of 8 packed 64-bit integers) from a into memory. mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
36275///
36276/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_store_epi64&expand=5575)
36277#[inline]
36278#[target_feature(enable = "avx512f")]
36279#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36280#[cfg_attr(
36281    all(test, not(all(target_arch = "x86", target_env = "msvc"))),
36282    assert_instr(vmovaps)
36283)] //should be vmovdqa64
36284#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36285pub const unsafe fn _mm512_store_epi64(mem_addr: *mut i64, a: __m512i) {
36286    ptr::write(mem_addr as *mut __m512i, a);
36287}
36288
36289/// Store 256-bits (composed of 4 packed 64-bit integers) from a into memory. mem_addr must be aligned on a 32-byte boundary or a general-protection exception may be generated.
36290///
36291/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_store_epi64&expand=5573)
36292#[inline]
36293#[target_feature(enable = "avx512f,avx512vl")]
36294#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36295#[cfg_attr(
36296    all(test, not(all(target_arch = "x86", target_env = "msvc"))),
36297    assert_instr(vmovaps)
36298)] //should be vmovdqa64
36299#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36300pub const unsafe fn _mm256_store_epi64(mem_addr: *mut i64, a: __m256i) {
36301    ptr::write(mem_addr as *mut __m256i, a);
36302}
36303
36304/// Store 128-bits (composed of 2 packed 64-bit integers) from a into memory. mem_addr must be aligned on a 16-byte boundary or a general-protection exception may be generated.
36305///
36306/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store_epi64&expand=5571)
36307#[inline]
36308#[target_feature(enable = "avx512f,avx512vl")]
36309#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36310#[cfg_attr(
36311    all(test, not(all(target_arch = "x86", target_env = "msvc"))),
36312    assert_instr(vmovaps)
36313)] //should be vmovdqa64
36314#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36315pub const unsafe fn _mm_store_epi64(mem_addr: *mut i64, a: __m128i) {
36316    ptr::write(mem_addr as *mut __m128i, a);
36317}
36318
36319/// Load 512-bits (composed of 16 packed single-precision (32-bit) floating-point elements) from memory into dst. mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
36320///
36321/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_load_ps&expand=3336)
36322#[inline]
36323#[target_feature(enable = "avx512f")]
36324#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36325#[cfg_attr(
36326    all(test, not(all(target_arch = "x86", target_env = "msvc"))),
36327    assert_instr(vmovaps)
36328)]
36329#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36330pub const unsafe fn _mm512_load_ps(mem_addr: *const f32) -> __m512 {
36331    ptr::read(mem_addr as *const __m512)
36332}
36333
36334/// Store 512-bits of integer data from a into memory. mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
36335///
36336/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_store_ps&expand=5592)
36337#[inline]
36338#[target_feature(enable = "avx512f")]
36339#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36340#[cfg_attr(
36341    all(test, not(all(target_arch = "x86", target_env = "msvc"))),
36342    assert_instr(vmovaps)
36343)]
36344#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36345pub const unsafe fn _mm512_store_ps(mem_addr: *mut f32, a: __m512) {
36346    ptr::write(mem_addr as *mut __m512, a);
36347}
36348
36349/// Load 512-bits (composed of 8 packed double-precision (64-bit) floating-point elements) from memory into dst. mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
36350///
36351/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_load_pd&expand=3326)
36352#[inline]
36353#[target_feature(enable = "avx512f")]
36354#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36355#[cfg_attr(
36356    all(test, not(all(target_arch = "x86", target_env = "msvc"))),
36357    assert_instr(vmovaps)
36358)] //should be vmovapd
36359#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36360pub const unsafe fn _mm512_load_pd(mem_addr: *const f64) -> __m512d {
36361    ptr::read(mem_addr as *const __m512d)
36362}
36363
36364/// Store 512-bits (composed of 8 packed double-precision (64-bit) floating-point elements) from a into memory. mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
36365///
36366/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_store_pd&expand=5585)
36367#[inline]
36368#[target_feature(enable = "avx512f")]
36369#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36370#[cfg_attr(
36371    all(test, not(all(target_arch = "x86", target_env = "msvc"))),
36372    assert_instr(vmovaps)
36373)] //should be vmovapd
36374#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36375pub const unsafe fn _mm512_store_pd(mem_addr: *mut f64, a: __m512d) {
36376    ptr::write(mem_addr as *mut __m512d, a);
36377}
36378
36379/// Load packed 32-bit integers from memory into dst using writemask k
36380/// (elements are copied from src when the corresponding mask bit is not set).
36381/// mem_addr does not need to be aligned on any particular boundary.
36382///
36383/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_loadu_epi32)
36384#[inline]
36385#[target_feature(enable = "avx512f")]
36386#[cfg_attr(test, assert_instr(vmovdqu32))]
36387#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36388#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36389pub const unsafe fn _mm512_mask_loadu_epi32(
36390    src: __m512i,
36391    k: __mmask16,
36392    mem_addr: *const i32,
36393) -> __m512i {
36394    let mask = simd_select_bitmask(k, i32x16::splat(!0), i32x16::ZERO);
36395    simd_masked_load!(SimdAlign::Unaligned, mask, mem_addr, src.as_i32x16()).as_m512i()
36396}
36397
36398/// Load packed 32-bit integers from memory into dst using zeromask k
36399/// (elements are zeroed out when the corresponding mask bit is not set).
36400/// mem_addr does not need to be aligned on any particular boundary.
36401///
36402/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_loadu_epi32)
36403#[inline]
36404#[target_feature(enable = "avx512f")]
36405#[cfg_attr(test, assert_instr(vmovdqu32))]
36406#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36407#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36408pub const unsafe fn _mm512_maskz_loadu_epi32(k: __mmask16, mem_addr: *const i32) -> __m512i {
36409    _mm512_mask_loadu_epi32(_mm512_setzero_si512(), k, mem_addr)
36410}
36411
36412/// Load packed 64-bit integers from memory into dst using writemask k
36413/// (elements are copied from src when the corresponding mask bit is not set).
36414/// mem_addr does not need to be aligned on any particular boundary.
36415///
36416/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_loadu_epi64)
36417#[inline]
36418#[target_feature(enable = "avx512f")]
36419#[cfg_attr(test, assert_instr(vmovdqu64))]
36420#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36421#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36422pub const unsafe fn _mm512_mask_loadu_epi64(
36423    src: __m512i,
36424    k: __mmask8,
36425    mem_addr: *const i64,
36426) -> __m512i {
36427    let mask = simd_select_bitmask(k, i64x8::splat(!0), i64x8::ZERO);
36428    simd_masked_load!(SimdAlign::Unaligned, mask, mem_addr, src.as_i64x8()).as_m512i()
36429}
36430
36431/// Load packed 64-bit integers from memory into dst using zeromask k
36432/// (elements are zeroed out when the corresponding mask bit is not set).
36433/// mem_addr does not need to be aligned on any particular boundary.
36434///
36435/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_loadu_epi64)
36436#[inline]
36437#[target_feature(enable = "avx512f")]
36438#[cfg_attr(test, assert_instr(vmovdqu64))]
36439#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36440#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36441pub const unsafe fn _mm512_maskz_loadu_epi64(k: __mmask8, mem_addr: *const i64) -> __m512i {
36442    _mm512_mask_loadu_epi64(_mm512_setzero_si512(), k, mem_addr)
36443}
36444
36445/// Load packed single-precision (32-bit) floating-point elements from memory into dst using writemask k
36446/// (elements are copied from src when the corresponding mask bit is not set).
36447/// mem_addr does not need to be aligned on any particular boundary.
36448///
36449/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_loadu_ps)
36450#[inline]
36451#[target_feature(enable = "avx512f")]
36452#[cfg_attr(test, assert_instr(vmovups))]
36453#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36454#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36455pub const unsafe fn _mm512_mask_loadu_ps(
36456    src: __m512,
36457    k: __mmask16,
36458    mem_addr: *const f32,
36459) -> __m512 {
36460    let mask = simd_select_bitmask(k, i32x16::splat(!0), i32x16::ZERO);
36461    simd_masked_load!(SimdAlign::Unaligned, mask, mem_addr, src.as_f32x16()).as_m512()
36462}
36463
36464/// Load packed single-precision (32-bit) floating-point elements from memory into dst using zeromask k
36465/// (elements are zeroed out when the corresponding mask bit is not set).
36466/// mem_addr does not need to be aligned on any particular boundary.
36467///
36468/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_loadu_ps)
36469#[inline]
36470#[target_feature(enable = "avx512f")]
36471#[cfg_attr(test, assert_instr(vmovups))]
36472#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36473#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36474pub const unsafe fn _mm512_maskz_loadu_ps(k: __mmask16, mem_addr: *const f32) -> __m512 {
36475    _mm512_mask_loadu_ps(_mm512_setzero_ps(), k, mem_addr)
36476}
36477
36478/// Load packed double-precision (64-bit) floating-point elements from memory into dst using writemask k
36479/// (elements are copied from src when the corresponding mask bit is not set).
36480/// mem_addr does not need to be aligned on any particular boundary.
36481///
36482/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_loadu_pd)
36483#[inline]
36484#[target_feature(enable = "avx512f")]
36485#[cfg_attr(test, assert_instr(vmovupd))]
36486#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36487#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36488pub const unsafe fn _mm512_mask_loadu_pd(
36489    src: __m512d,
36490    k: __mmask8,
36491    mem_addr: *const f64,
36492) -> __m512d {
36493    let mask = simd_select_bitmask(k, i64x8::splat(!0), i64x8::ZERO);
36494    simd_masked_load!(SimdAlign::Unaligned, mask, mem_addr, src.as_f64x8()).as_m512d()
36495}
36496
36497/// Load packed double-precision (64-bit) floating-point elements from memory into dst using zeromask k
36498/// (elements are zeroed out when the corresponding mask bit is not set).
36499/// mem_addr does not need to be aligned on any particular boundary.
36500///
36501/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_loadu_pd)
36502#[inline]
36503#[target_feature(enable = "avx512f")]
36504#[cfg_attr(test, assert_instr(vmovupd))]
36505#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36506#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36507pub const unsafe fn _mm512_maskz_loadu_pd(k: __mmask8, mem_addr: *const f64) -> __m512d {
36508    _mm512_mask_loadu_pd(_mm512_setzero_pd(), k, mem_addr)
36509}
36510
36511/// Load packed 32-bit integers from memory into dst using writemask k
36512/// (elements are copied from src when the corresponding mask bit is not set).
36513/// mem_addr does not need to be aligned on any particular boundary.
36514///
36515/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_loadu_epi32)
36516#[inline]
36517#[target_feature(enable = "avx512f,avx512vl")]
36518#[cfg_attr(test, assert_instr(vmovdqu32))]
36519#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36520#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36521pub const unsafe fn _mm256_mask_loadu_epi32(
36522    src: __m256i,
36523    k: __mmask8,
36524    mem_addr: *const i32,
36525) -> __m256i {
36526    let mask = simd_select_bitmask(k, i32x8::splat(!0), i32x8::ZERO);
36527    simd_masked_load!(SimdAlign::Unaligned, mask, mem_addr, src.as_i32x8()).as_m256i()
36528}
36529
36530/// Load packed 32-bit integers from memory into dst using zeromask k
36531/// (elements are zeroed out when the corresponding mask bit is not set).
36532/// mem_addr does not need to be aligned on any particular boundary.
36533///
36534/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_loadu_epi32)
36535#[inline]
36536#[target_feature(enable = "avx512f,avx512vl")]
36537#[cfg_attr(test, assert_instr(vmovdqu32))]
36538#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36539#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36540pub const unsafe fn _mm256_maskz_loadu_epi32(k: __mmask8, mem_addr: *const i32) -> __m256i {
36541    _mm256_mask_loadu_epi32(_mm256_setzero_si256(), k, mem_addr)
36542}
36543
36544/// Load packed 64-bit integers from memory into dst using writemask k
36545/// (elements are copied from src when the corresponding mask bit is not set).
36546/// mem_addr does not need to be aligned on any particular boundary.
36547///
36548/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_loadu_epi64)
36549#[inline]
36550#[target_feature(enable = "avx512f,avx512vl")]
36551#[cfg_attr(test, assert_instr(vmovdqu64))]
36552#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36553#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36554pub const unsafe fn _mm256_mask_loadu_epi64(
36555    src: __m256i,
36556    k: __mmask8,
36557    mem_addr: *const i64,
36558) -> __m256i {
36559    let mask = simd_select_bitmask(k, i64x4::splat(!0), i64x4::ZERO);
36560    simd_masked_load!(SimdAlign::Unaligned, mask, mem_addr, src.as_i64x4()).as_m256i()
36561}
36562
36563/// Load packed 64-bit integers from memory into dst using zeromask k
36564/// (elements are zeroed out when the corresponding mask bit is not set).
36565/// mem_addr does not need to be aligned on any particular boundary.
36566///
36567/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_loadu_epi64)
36568#[inline]
36569#[target_feature(enable = "avx512f,avx512vl")]
36570#[cfg_attr(test, assert_instr(vmovdqu64))]
36571#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36572#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36573pub const unsafe fn _mm256_maskz_loadu_epi64(k: __mmask8, mem_addr: *const i64) -> __m256i {
36574    _mm256_mask_loadu_epi64(_mm256_setzero_si256(), k, mem_addr)
36575}
36576
36577/// Load packed single-precision (32-bit) floating-point elements from memory into dst using writemask k
36578/// (elements are copied from src when the corresponding mask bit is not set).
36579/// mem_addr does not need to be aligned on any particular boundary.
36580///
36581/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_loadu_ps)
36582#[inline]
36583#[target_feature(enable = "avx512f,avx512vl")]
36584#[cfg_attr(test, assert_instr(vmovups))]
36585#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36586#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36587pub const unsafe fn _mm256_mask_loadu_ps(src: __m256, k: __mmask8, mem_addr: *const f32) -> __m256 {
36588    let mask = simd_select_bitmask(k, i32x8::splat(!0), i32x8::ZERO);
36589    simd_masked_load!(SimdAlign::Unaligned, mask, mem_addr, src.as_f32x8()).as_m256()
36590}
36591
36592/// Load packed single-precision (32-bit) floating-point elements from memory into dst using zeromask k
36593/// (elements are zeroed out when the corresponding mask bit is not set).
36594/// mem_addr does not need to be aligned on any particular boundary.
36595///
36596/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_loadu_ps)
36597#[inline]
36598#[target_feature(enable = "avx512f,avx512vl")]
36599#[cfg_attr(test, assert_instr(vmovups))]
36600#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36601#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36602pub const unsafe fn _mm256_maskz_loadu_ps(k: __mmask8, mem_addr: *const f32) -> __m256 {
36603    _mm256_mask_loadu_ps(_mm256_setzero_ps(), k, mem_addr)
36604}
36605
36606/// Load packed double-precision (64-bit) floating-point elements from memory into dst using writemask k
36607/// (elements are copied from src when the corresponding mask bit is not set).
36608/// mem_addr does not need to be aligned on any particular boundary.
36609///
36610/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_loadu_pd)
36611#[inline]
36612#[target_feature(enable = "avx512f,avx512vl")]
36613#[cfg_attr(test, assert_instr(vmovupd))]
36614#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36615#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36616pub const unsafe fn _mm256_mask_loadu_pd(
36617    src: __m256d,
36618    k: __mmask8,
36619    mem_addr: *const f64,
36620) -> __m256d {
36621    let mask = simd_select_bitmask(k, i64x4::splat(!0), i64x4::ZERO);
36622    simd_masked_load!(SimdAlign::Unaligned, mask, mem_addr, src.as_f64x4()).as_m256d()
36623}
36624
36625/// Load packed double-precision (64-bit) floating-point elements from memory into dst using zeromask k
36626/// (elements are zeroed out when the corresponding mask bit is not set).
36627/// mem_addr does not need to be aligned on any particular boundary.
36628///
36629/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_loadu_pd)
36630#[inline]
36631#[target_feature(enable = "avx512f,avx512vl")]
36632#[cfg_attr(test, assert_instr(vmovupd))]
36633#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36634#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36635pub const unsafe fn _mm256_maskz_loadu_pd(k: __mmask8, mem_addr: *const f64) -> __m256d {
36636    _mm256_mask_loadu_pd(_mm256_setzero_pd(), k, mem_addr)
36637}
36638
36639/// Load packed 32-bit integers from memory into dst using writemask k
36640/// (elements are copied from src when the corresponding mask bit is not set).
36641/// mem_addr does not need to be aligned on any particular boundary.
36642///
36643/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_loadu_epi32)
36644#[inline]
36645#[target_feature(enable = "avx512f,avx512vl")]
36646#[cfg_attr(test, assert_instr(vmovdqu32))]
36647#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36648#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36649pub const unsafe fn _mm_mask_loadu_epi32(
36650    src: __m128i,
36651    k: __mmask8,
36652    mem_addr: *const i32,
36653) -> __m128i {
36654    let mask = simd_select_bitmask(k, i32x4::splat(!0), i32x4::ZERO);
36655    simd_masked_load!(SimdAlign::Unaligned, mask, mem_addr, src.as_i32x4()).as_m128i()
36656}
36657
36658/// Load packed 32-bit integers from memory into dst using zeromask k
36659/// (elements are zeroed out when the corresponding mask bit is not set).
36660/// mem_addr does not need to be aligned on any particular boundary.
36661///
36662/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_loadu_epi32)
36663#[inline]
36664#[target_feature(enable = "avx512f,avx512vl")]
36665#[cfg_attr(test, assert_instr(vmovdqu32))]
36666#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36667#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36668pub const unsafe fn _mm_maskz_loadu_epi32(k: __mmask8, mem_addr: *const i32) -> __m128i {
36669    _mm_mask_loadu_epi32(_mm_setzero_si128(), k, mem_addr)
36670}
36671
36672/// Load packed 64-bit integers from memory into dst using writemask k
36673/// (elements are copied from src when the corresponding mask bit is not set).
36674/// mem_addr does not need to be aligned on any particular boundary.
36675///
36676/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_loadu_epi64)
36677#[inline]
36678#[target_feature(enable = "avx512f,avx512vl")]
36679#[cfg_attr(test, assert_instr(vmovdqu64))]
36680#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36681#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36682pub const unsafe fn _mm_mask_loadu_epi64(
36683    src: __m128i,
36684    k: __mmask8,
36685    mem_addr: *const i64,
36686) -> __m128i {
36687    let mask = simd_select_bitmask(k, i64x2::splat(!0), i64x2::ZERO);
36688    simd_masked_load!(SimdAlign::Unaligned, mask, mem_addr, src.as_i64x2()).as_m128i()
36689}
36690
36691/// Load packed 64-bit integers from memory into dst using zeromask k
36692/// (elements are zeroed out when the corresponding mask bit is not set).
36693/// mem_addr does not need to be aligned on any particular boundary.
36694///
36695/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_loadu_epi64)
36696#[inline]
36697#[target_feature(enable = "avx512f,avx512vl")]
36698#[cfg_attr(test, assert_instr(vmovdqu64))]
36699#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36700#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36701pub const unsafe fn _mm_maskz_loadu_epi64(k: __mmask8, mem_addr: *const i64) -> __m128i {
36702    _mm_mask_loadu_epi64(_mm_setzero_si128(), k, mem_addr)
36703}
36704
36705/// Load packed single-precision (32-bit) floating-point elements from memory into dst using writemask k
36706/// (elements are copied from src when the corresponding mask bit is not set).
36707/// mem_addr does not need to be aligned on any particular boundary.
36708///
36709/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_loadu_ps)
36710#[inline]
36711#[target_feature(enable = "avx512f,avx512vl")]
36712#[cfg_attr(test, assert_instr(vmovups))]
36713#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36714#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36715pub const unsafe fn _mm_mask_loadu_ps(src: __m128, k: __mmask8, mem_addr: *const f32) -> __m128 {
36716    let mask = simd_select_bitmask(k, i32x4::splat(!0), i32x4::ZERO);
36717    simd_masked_load!(SimdAlign::Unaligned, mask, mem_addr, src.as_f32x4()).as_m128()
36718}
36719
36720/// Load packed single-precision (32-bit) floating-point elements from memory into dst using zeromask k
36721/// (elements are zeroed out when the corresponding mask bit is not set).
36722/// mem_addr does not need to be aligned on any particular boundary.
36723///
36724/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_loadu_ps)
36725#[inline]
36726#[target_feature(enable = "avx512f,avx512vl")]
36727#[cfg_attr(test, assert_instr(vmovups))]
36728#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36729#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36730pub const unsafe fn _mm_maskz_loadu_ps(k: __mmask8, mem_addr: *const f32) -> __m128 {
36731    _mm_mask_loadu_ps(_mm_setzero_ps(), k, mem_addr)
36732}
36733
36734/// Load packed double-precision (64-bit) floating-point elements from memory into dst using writemask k
36735/// (elements are copied from src when the corresponding mask bit is not set).
36736/// mem_addr does not need to be aligned on any particular boundary.
36737///
36738/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_loadu_pd)
36739#[inline]
36740#[target_feature(enable = "avx512f,avx512vl")]
36741#[cfg_attr(test, assert_instr(vmovupd))]
36742#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36743#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36744pub const unsafe fn _mm_mask_loadu_pd(src: __m128d, k: __mmask8, mem_addr: *const f64) -> __m128d {
36745    let mask = simd_select_bitmask(k, i64x2::splat(!0), i64x2::ZERO);
36746    simd_masked_load!(SimdAlign::Unaligned, mask, mem_addr, src.as_f64x2()).as_m128d()
36747}
36748
36749/// Load packed double-precision (64-bit) floating-point elements from memory into dst using zeromask k
36750/// (elements are zeroed out when the corresponding mask bit is not set).
36751/// mem_addr does not need to be aligned on any particular boundary.
36752///
36753/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_loadu_pd)
36754#[inline]
36755#[target_feature(enable = "avx512f,avx512vl")]
36756#[cfg_attr(test, assert_instr(vmovupd))]
36757#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36758#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36759pub const unsafe fn _mm_maskz_loadu_pd(k: __mmask8, mem_addr: *const f64) -> __m128d {
36760    _mm_mask_loadu_pd(_mm_setzero_pd(), k, mem_addr)
36761}
36762
36763/// Load packed 32-bit integers from memory into dst using writemask k
36764/// (elements are copied from src when the corresponding mask bit is not set).
36765/// mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
36766///
36767/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_load_epi32)
36768#[inline]
36769#[target_feature(enable = "avx512f")]
36770#[cfg_attr(test, assert_instr(vmovdqa32))]
36771#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36772#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36773pub const unsafe fn _mm512_mask_load_epi32(
36774    src: __m512i,
36775    k: __mmask16,
36776    mem_addr: *const i32,
36777) -> __m512i {
36778    let mask = simd_select_bitmask(k, i32x16::splat(!0), i32x16::ZERO);
36779    simd_masked_load!(SimdAlign::Vector, mask, mem_addr, src.as_i32x16()).as_m512i()
36780}
36781
36782/// Load packed 32-bit integers from memory into dst using zeromask k
36783/// (elements are zeroed out when the corresponding mask bit is not set).
36784/// mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
36785///
36786/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_load_epi32)
36787#[inline]
36788#[target_feature(enable = "avx512f")]
36789#[cfg_attr(test, assert_instr(vmovdqa32))]
36790#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36791#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36792pub const unsafe fn _mm512_maskz_load_epi32(k: __mmask16, mem_addr: *const i32) -> __m512i {
36793    _mm512_mask_load_epi32(_mm512_setzero_si512(), k, mem_addr)
36794}
36795
36796/// Load packed 64-bit integers from memory into dst using writemask k
36797/// (elements are copied from src when the corresponding mask bit is not set).
36798/// mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
36799///
36800/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_load_epi64)
36801#[inline]
36802#[target_feature(enable = "avx512f")]
36803#[cfg_attr(test, assert_instr(vmovdqa64))]
36804#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36805#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36806pub const unsafe fn _mm512_mask_load_epi64(
36807    src: __m512i,
36808    k: __mmask8,
36809    mem_addr: *const i64,
36810) -> __m512i {
36811    let mask = simd_select_bitmask(k, i64x8::splat(!0), i64x8::ZERO);
36812    simd_masked_load!(SimdAlign::Vector, mask, mem_addr, src.as_i64x8()).as_m512i()
36813}
36814
36815/// Load packed 64-bit integers from memory into dst using zeromask k
36816/// (elements are zeroed out when the corresponding mask bit is not set).
36817/// mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
36818///
36819/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_load_epi64)
36820#[inline]
36821#[target_feature(enable = "avx512f")]
36822#[cfg_attr(test, assert_instr(vmovdqa64))]
36823#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36824#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36825pub const unsafe fn _mm512_maskz_load_epi64(k: __mmask8, mem_addr: *const i64) -> __m512i {
36826    _mm512_mask_load_epi64(_mm512_setzero_si512(), k, mem_addr)
36827}
36828
36829/// Load packed single-precision (32-bit) floating-point elements from memory into dst using writemask k
36830/// (elements are copied from src when the corresponding mask bit is not set).
36831/// mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
36832///
36833/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_load_ps)
36834#[inline]
36835#[target_feature(enable = "avx512f")]
36836#[cfg_attr(test, assert_instr(vmovaps))]
36837#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36838#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36839pub const unsafe fn _mm512_mask_load_ps(src: __m512, k: __mmask16, mem_addr: *const f32) -> __m512 {
36840    let mask = simd_select_bitmask(k, i32x16::splat(!0), i32x16::ZERO);
36841    simd_masked_load!(SimdAlign::Vector, mask, mem_addr, src.as_f32x16()).as_m512()
36842}
36843
36844/// Load packed single-precision (32-bit) floating-point elements from memory into dst using zeromask k
36845/// (elements are zeroed out when the corresponding mask bit is not set).
36846/// mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
36847///
36848/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_load_ps)
36849#[inline]
36850#[target_feature(enable = "avx512f")]
36851#[cfg_attr(test, assert_instr(vmovaps))]
36852#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36853#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36854pub const unsafe fn _mm512_maskz_load_ps(k: __mmask16, mem_addr: *const f32) -> __m512 {
36855    _mm512_mask_load_ps(_mm512_setzero_ps(), k, mem_addr)
36856}
36857
36858/// Load packed double-precision (64-bit) floating-point elements from memory into dst using writemask k
36859/// (elements are copied from src when the corresponding mask bit is not set).
36860/// mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
36861///
36862/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_load_pd)
36863#[inline]
36864#[target_feature(enable = "avx512f")]
36865#[cfg_attr(test, assert_instr(vmovapd))]
36866#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36867#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36868pub const unsafe fn _mm512_mask_load_pd(
36869    src: __m512d,
36870    k: __mmask8,
36871    mem_addr: *const f64,
36872) -> __m512d {
36873    let mask = simd_select_bitmask(k, i64x8::splat(!0), i64x8::ZERO);
36874    simd_masked_load!(SimdAlign::Vector, mask, mem_addr, src.as_f64x8()).as_m512d()
36875}
36876
36877/// Load packed double-precision (64-bit) floating-point elements from memory into dst using zeromask k
36878/// (elements are zeroed out when the corresponding mask bit is not set).
36879/// mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
36880///
36881/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_load_pd)
36882#[inline]
36883#[target_feature(enable = "avx512f")]
36884#[cfg_attr(test, assert_instr(vmovapd))]
36885#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36886#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36887pub const unsafe fn _mm512_maskz_load_pd(k: __mmask8, mem_addr: *const f64) -> __m512d {
36888    _mm512_mask_load_pd(_mm512_setzero_pd(), k, mem_addr)
36889}
36890
36891/// Load packed 32-bit integers from memory into dst using writemask k
36892/// (elements are copied from src when the corresponding mask bit is not set).
36893/// mem_addr must be aligned on a 32-byte boundary or a general-protection exception may be generated.
36894///
36895/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_load_epi32)
36896#[inline]
36897#[target_feature(enable = "avx512f,avx512vl")]
36898#[cfg_attr(test, assert_instr(vmovdqa32))]
36899#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36900#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36901pub const unsafe fn _mm256_mask_load_epi32(
36902    src: __m256i,
36903    k: __mmask8,
36904    mem_addr: *const i32,
36905) -> __m256i {
36906    let mask = simd_select_bitmask(k, i32x8::splat(!0), i32x8::ZERO);
36907    simd_masked_load!(SimdAlign::Vector, mask, mem_addr, src.as_i32x8()).as_m256i()
36908}
36909
36910/// Load packed 32-bit integers from memory into dst using zeromask k
36911/// (elements are zeroed out when the corresponding mask bit is not set).
36912/// mem_addr must be aligned on a 32-byte boundary or a general-protection exception may be generated.
36913///
36914/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_load_epi32)
36915#[inline]
36916#[target_feature(enable = "avx512f,avx512vl")]
36917#[cfg_attr(test, assert_instr(vmovdqa32))]
36918#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36919#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36920pub const unsafe fn _mm256_maskz_load_epi32(k: __mmask8, mem_addr: *const i32) -> __m256i {
36921    _mm256_mask_load_epi32(_mm256_setzero_si256(), k, mem_addr)
36922}
36923
36924/// Load packed 64-bit integers from memory into dst using writemask k
36925/// (elements are copied from src when the corresponding mask bit is not set).
36926/// mem_addr must be aligned on a 32-byte boundary or a general-protection exception may be generated.
36927///
36928/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_load_epi64)
36929#[inline]
36930#[target_feature(enable = "avx512f,avx512vl")]
36931#[cfg_attr(test, assert_instr(vmovdqa64))]
36932#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36933#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36934pub const unsafe fn _mm256_mask_load_epi64(
36935    src: __m256i,
36936    k: __mmask8,
36937    mem_addr: *const i64,
36938) -> __m256i {
36939    let mask = simd_select_bitmask(k, i64x4::splat(!0), i64x4::ZERO);
36940    simd_masked_load!(SimdAlign::Vector, mask, mem_addr, src.as_i64x4()).as_m256i()
36941}
36942
36943/// Load packed 64-bit integers from memory into dst using zeromask k
36944/// (elements are zeroed out when the corresponding mask bit is not set).
36945/// mem_addr must be aligned on a 32-byte boundary or a general-protection exception may be generated.
36946///
36947/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_load_epi64)
36948#[inline]
36949#[target_feature(enable = "avx512f,avx512vl")]
36950#[cfg_attr(test, assert_instr(vmovdqa64))]
36951#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36952#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36953pub const unsafe fn _mm256_maskz_load_epi64(k: __mmask8, mem_addr: *const i64) -> __m256i {
36954    _mm256_mask_load_epi64(_mm256_setzero_si256(), k, mem_addr)
36955}
36956
36957/// Load packed single-precision (32-bit) floating-point elements from memory into dst using writemask k
36958/// (elements are copied from src when the corresponding mask bit is not set).
36959/// mem_addr must be aligned on a 32-byte boundary or a general-protection exception may be generated.
36960///
36961/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_load_ps)
36962#[inline]
36963#[target_feature(enable = "avx512f,avx512vl")]
36964#[cfg_attr(test, assert_instr(vmovaps))]
36965#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36966#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36967pub const unsafe fn _mm256_mask_load_ps(src: __m256, k: __mmask8, mem_addr: *const f32) -> __m256 {
36968    let mask = simd_select_bitmask(k, i32x8::splat(!0), i32x8::ZERO);
36969    simd_masked_load!(SimdAlign::Vector, mask, mem_addr, src.as_f32x8()).as_m256()
36970}
36971
36972/// Load packed single-precision (32-bit) floating-point elements from memory into dst using zeromask k
36973/// (elements are zeroed out when the corresponding mask bit is not set).
36974/// mem_addr must be aligned on a 32-byte boundary or a general-protection exception may be generated.
36975///
36976/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_load_ps)
36977#[inline]
36978#[target_feature(enable = "avx512f,avx512vl")]
36979#[cfg_attr(test, assert_instr(vmovaps))]
36980#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36981#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36982pub const unsafe fn _mm256_maskz_load_ps(k: __mmask8, mem_addr: *const f32) -> __m256 {
36983    _mm256_mask_load_ps(_mm256_setzero_ps(), k, mem_addr)
36984}
36985
36986/// Load packed double-precision (64-bit) floating-point elements from memory into dst using writemask k
36987/// (elements are copied from src when the corresponding mask bit is not set).
36988/// mem_addr must be aligned on a 32-byte boundary or a general-protection exception may be generated.
36989///
36990/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_load_pd)
36991#[inline]
36992#[target_feature(enable = "avx512f,avx512vl")]
36993#[cfg_attr(test, assert_instr(vmovapd))]
36994#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
36995#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
36996pub const unsafe fn _mm256_mask_load_pd(
36997    src: __m256d,
36998    k: __mmask8,
36999    mem_addr: *const f64,
37000) -> __m256d {
37001    let mask = simd_select_bitmask(k, i64x4::splat(!0), i64x4::ZERO);
37002    simd_masked_load!(SimdAlign::Vector, mask, mem_addr, src.as_f64x4()).as_m256d()
37003}
37004
37005/// Load packed double-precision (64-bit) floating-point elements from memory into dst using zeromask k
37006/// (elements are zeroed out when the corresponding mask bit is not set).
37007/// mem_addr must be aligned on a 32-byte boundary or a general-protection exception may be generated.
37008///
37009/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_load_pd)
37010#[inline]
37011#[target_feature(enable = "avx512f,avx512vl")]
37012#[cfg_attr(test, assert_instr(vmovapd))]
37013#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37014#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37015pub const unsafe fn _mm256_maskz_load_pd(k: __mmask8, mem_addr: *const f64) -> __m256d {
37016    _mm256_mask_load_pd(_mm256_setzero_pd(), k, mem_addr)
37017}
37018
37019/// Load packed 32-bit integers from memory into dst using writemask k
37020/// (elements are copied from src when the corresponding mask bit is not set).
37021/// mem_addr must be aligned on a 16-byte boundary or a general-protection exception may be generated.
37022///
37023/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_load_epi32)
37024#[inline]
37025#[target_feature(enable = "avx512f,avx512vl")]
37026#[cfg_attr(test, assert_instr(vmovdqa32))]
37027#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37028#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37029pub const unsafe fn _mm_mask_load_epi32(
37030    src: __m128i,
37031    k: __mmask8,
37032    mem_addr: *const i32,
37033) -> __m128i {
37034    let mask = simd_select_bitmask(k, i32x4::splat(!0), i32x4::ZERO);
37035    simd_masked_load!(SimdAlign::Vector, mask, mem_addr, src.as_i32x4()).as_m128i()
37036}
37037
37038/// Load packed 32-bit integers from memory into dst using zeromask k
37039/// (elements are zeroed out when the corresponding mask bit is not set).
37040/// mem_addr must be aligned on a 16-byte boundary or a general-protection exception may be generated.
37041///
37042/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_load_epi32)
37043#[inline]
37044#[target_feature(enable = "avx512f,avx512vl")]
37045#[cfg_attr(test, assert_instr(vmovdqa32))]
37046#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37047#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37048pub const unsafe fn _mm_maskz_load_epi32(k: __mmask8, mem_addr: *const i32) -> __m128i {
37049    _mm_mask_load_epi32(_mm_setzero_si128(), k, mem_addr)
37050}
37051
37052/// Load packed 64-bit integers from memory into dst using writemask k
37053/// (elements are copied from src when the corresponding mask bit is not set).
37054/// mem_addr must be aligned on a 16-byte boundary or a general-protection exception may be generated.
37055///
37056/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_load_epi64)
37057#[inline]
37058#[target_feature(enable = "avx512f,avx512vl")]
37059#[cfg_attr(test, assert_instr(vmovdqa64))]
37060#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37061#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37062pub const unsafe fn _mm_mask_load_epi64(
37063    src: __m128i,
37064    k: __mmask8,
37065    mem_addr: *const i64,
37066) -> __m128i {
37067    let mask = simd_select_bitmask(k, i64x2::splat(!0), i64x2::ZERO);
37068    simd_masked_load!(SimdAlign::Vector, mask, mem_addr, src.as_i64x2()).as_m128i()
37069}
37070
37071/// Load packed 64-bit integers from memory into dst using zeromask k
37072/// (elements are zeroed out when the corresponding mask bit is not set).
37073/// mem_addr must be aligned on a 16-byte boundary or a general-protection exception may be generated.
37074///
37075/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_load_epi64)
37076#[inline]
37077#[target_feature(enable = "avx512f,avx512vl")]
37078#[cfg_attr(test, assert_instr(vmovdqa64))]
37079#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37080#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37081pub const unsafe fn _mm_maskz_load_epi64(k: __mmask8, mem_addr: *const i64) -> __m128i {
37082    _mm_mask_load_epi64(_mm_setzero_si128(), k, mem_addr)
37083}
37084
37085/// Load packed single-precision (32-bit) floating-point elements from memory into dst using writemask k
37086/// (elements are copied from src when the corresponding mask bit is not set).
37087/// mem_addr must be aligned on a 16-byte boundary or a general-protection exception may be generated.
37088///
37089/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_load_ps)
37090#[inline]
37091#[target_feature(enable = "avx512f,avx512vl")]
37092#[cfg_attr(test, assert_instr(vmovaps))]
37093#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37094#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37095pub const unsafe fn _mm_mask_load_ps(src: __m128, k: __mmask8, mem_addr: *const f32) -> __m128 {
37096    let mask = simd_select_bitmask(k, i32x4::splat(!0), i32x4::ZERO);
37097    simd_masked_load!(SimdAlign::Vector, mask, mem_addr, src.as_f32x4()).as_m128()
37098}
37099
37100/// Load packed single-precision (32-bit) floating-point elements from memory into dst using zeromask k
37101/// (elements are zeroed out when the corresponding mask bit is not set).
37102/// mem_addr must be aligned on a 16-byte boundary or a general-protection exception may be generated.
37103///
37104/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_load_ps)
37105#[inline]
37106#[target_feature(enable = "avx512f,avx512vl")]
37107#[cfg_attr(test, assert_instr(vmovaps))]
37108#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37109#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37110pub const unsafe fn _mm_maskz_load_ps(k: __mmask8, mem_addr: *const f32) -> __m128 {
37111    _mm_mask_load_ps(_mm_setzero_ps(), k, mem_addr)
37112}
37113
37114/// Load packed double-precision (64-bit) floating-point elements from memory into dst using writemask k
37115/// (elements are copied from src when the corresponding mask bit is not set).
37116/// mem_addr must be aligned on a 16-byte boundary or a general-protection exception may be generated.
37117///
37118/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_load_pd)
37119#[inline]
37120#[target_feature(enable = "avx512f,avx512vl")]
37121#[cfg_attr(test, assert_instr(vmovapd))]
37122#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37123#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37124pub const unsafe fn _mm_mask_load_pd(src: __m128d, k: __mmask8, mem_addr: *const f64) -> __m128d {
37125    let mask = simd_select_bitmask(k, i64x2::splat(!0), i64x2::ZERO);
37126    simd_masked_load!(SimdAlign::Vector, mask, mem_addr, src.as_f64x2()).as_m128d()
37127}
37128
37129/// Load packed double-precision (64-bit) floating-point elements from memory into dst using zeromask k
37130/// (elements are zeroed out when the corresponding mask bit is not set).
37131/// mem_addr must be aligned on a 16-byte boundary or a general-protection exception may be generated.
37132///
37133/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_load_pd)
37134#[inline]
37135#[target_feature(enable = "avx512f,avx512vl")]
37136#[cfg_attr(test, assert_instr(vmovapd))]
37137#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37138#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37139pub const unsafe fn _mm_maskz_load_pd(k: __mmask8, mem_addr: *const f64) -> __m128d {
37140    _mm_mask_load_pd(_mm_setzero_pd(), k, mem_addr)
37141}
37142
37143/// Load a single-precision (32-bit) floating-point element from memory into the lower element of dst
37144/// using writemask k (the element is copied from src when mask bit 0 is not set), and set the upper
37145/// 3 packed elements of dst to zero. mem_addr must be aligned on a 16-byte boundary or a general-protection
37146/// exception may be generated.
37147///
37148/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mask_load_ss)
37149#[inline]
37150#[cfg_attr(test, assert_instr(vmovss))]
37151#[target_feature(enable = "avx512f")]
37152#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37153pub unsafe fn _mm_mask_load_ss(src: __m128, k: __mmask8, mem_addr: *const f32) -> __m128 {
37154    let mut dst: __m128 = src;
37155    asm!(
37156        vpl!("vmovss {dst}{{{k}}}"),
37157        p = in(reg) mem_addr,
37158        k = in(kreg) k,
37159        dst = inout(xmm_reg) dst,
37160        options(pure, readonly, nostack, preserves_flags),
37161    );
37162    dst
37163}
37164
37165/// Load a single-precision (32-bit) floating-point element from memory into the lower element of dst
37166/// using zeromask k (the element is zeroed out when mask bit 0 is not set), and set the upper 3 packed
37167/// elements of dst to zero. mem_addr must be aligned on a 16-byte boundary or a general-protection
37168/// exception may be generated.
37169///
37170/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_maskz_load_ss)
37171#[inline]
37172#[cfg_attr(test, assert_instr(vmovss))]
37173#[target_feature(enable = "avx512f")]
37174#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37175pub unsafe fn _mm_maskz_load_ss(k: __mmask8, mem_addr: *const f32) -> __m128 {
37176    let mut dst: __m128;
37177    asm!(
37178        vpl!("vmovss {dst}{{{k}}} {{z}}"),
37179        p = in(reg) mem_addr,
37180        k = in(kreg) k,
37181        dst = out(xmm_reg) dst,
37182        options(pure, readonly, nostack, preserves_flags),
37183    );
37184    dst
37185}
37186
37187/// Load a double-precision (64-bit) floating-point element from memory into the lower element of dst
37188/// using writemask k (the element is copied from src when mask bit 0 is not set), and set the upper
37189/// element of dst to zero. mem_addr must be aligned on a 16-byte boundary or a general-protection
37190/// exception may be generated.
37191///
37192/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mask_load_sd)
37193#[inline]
37194#[cfg_attr(test, assert_instr(vmovsd))]
37195#[target_feature(enable = "avx512f")]
37196#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37197pub unsafe fn _mm_mask_load_sd(src: __m128d, k: __mmask8, mem_addr: *const f64) -> __m128d {
37198    let mut dst: __m128d = src;
37199    asm!(
37200        vpl!("vmovsd {dst}{{{k}}}"),
37201        p = in(reg) mem_addr,
37202        k = in(kreg) k,
37203        dst = inout(xmm_reg) dst,
37204        options(pure, readonly, nostack, preserves_flags),
37205    );
37206    dst
37207}
37208
37209/// Load a double-precision (64-bit) floating-point element from memory into the lower element of dst
37210/// using zeromask k (the element is zeroed out when mask bit 0 is not set), and set the upper element
37211/// of dst to zero. mem_addr must be aligned on a 16-byte boundary or a general-protection exception
37212/// may be generated.
37213///
37214/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_maskz_load_sd)
37215#[inline]
37216#[cfg_attr(test, assert_instr(vmovsd))]
37217#[target_feature(enable = "avx512f")]
37218#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37219pub unsafe fn _mm_maskz_load_sd(k: __mmask8, mem_addr: *const f64) -> __m128d {
37220    let mut dst: __m128d;
37221    asm!(
37222        vpl!("vmovsd {dst}{{{k}}} {{z}}"),
37223        p = in(reg) mem_addr,
37224        k = in(kreg) k,
37225        dst = out(xmm_reg) dst,
37226        options(pure, readonly, nostack, preserves_flags),
37227    );
37228    dst
37229}
37230
37231/// Store packed 32-bit integers from a into memory using writemask k.
37232/// mem_addr does not need to be aligned on any particular boundary.
37233///
37234/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_storeu_epi32)
37235#[inline]
37236#[target_feature(enable = "avx512f")]
37237#[cfg_attr(test, assert_instr(vmovdqu32))]
37238#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37239#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37240pub const unsafe fn _mm512_mask_storeu_epi32(mem_addr: *mut i32, mask: __mmask16, a: __m512i) {
37241    let mask = simd_select_bitmask(mask, i32x16::splat(!0), i32x16::ZERO);
37242    simd_masked_store!(SimdAlign::Unaligned, mask, mem_addr, a.as_i32x16());
37243}
37244
37245/// Store packed 64-bit integers from a into memory using writemask k.
37246/// mem_addr does not need to be aligned on any particular boundary.
37247///
37248/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_storeu_epi64)
37249#[inline]
37250#[target_feature(enable = "avx512f")]
37251#[cfg_attr(test, assert_instr(vmovdqu64))]
37252#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37253#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37254pub const unsafe fn _mm512_mask_storeu_epi64(mem_addr: *mut i64, mask: __mmask8, a: __m512i) {
37255    let mask = simd_select_bitmask(mask, i64x8::splat(!0), i64x8::ZERO);
37256    simd_masked_store!(SimdAlign::Unaligned, mask, mem_addr, a.as_i64x8());
37257}
37258
37259/// Store packed single-precision (32-bit) floating-point elements from a into memory using writemask k.
37260/// mem_addr does not need to be aligned on any particular boundary.
37261///
37262/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_storeu_ps)
37263#[inline]
37264#[target_feature(enable = "avx512f")]
37265#[cfg_attr(test, assert_instr(vmovups))]
37266#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37267#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37268pub const unsafe fn _mm512_mask_storeu_ps(mem_addr: *mut f32, mask: __mmask16, a: __m512) {
37269    let mask = simd_select_bitmask(mask, i32x16::splat(!0), i32x16::ZERO);
37270    simd_masked_store!(SimdAlign::Unaligned, mask, mem_addr, a.as_f32x16());
37271}
37272
37273/// Store packed double-precision (64-bit) floating-point elements from a into memory using writemask k.
37274/// mem_addr does not need to be aligned on any particular boundary.
37275///
37276/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_storeu_pd)
37277#[inline]
37278#[target_feature(enable = "avx512f")]
37279#[cfg_attr(test, assert_instr(vmovupd))]
37280#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37281#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37282pub const unsafe fn _mm512_mask_storeu_pd(mem_addr: *mut f64, mask: __mmask8, a: __m512d) {
37283    let mask = simd_select_bitmask(mask, i64x8::splat(!0), i64x8::ZERO);
37284    simd_masked_store!(SimdAlign::Unaligned, mask, mem_addr, a.as_f64x8());
37285}
37286
37287/// Store packed 32-bit integers from a into memory using writemask k.
37288/// mem_addr does not need to be aligned on any particular boundary.
37289///
37290/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_storeu_epi32)
37291#[inline]
37292#[target_feature(enable = "avx512f,avx512vl")]
37293#[cfg_attr(test, assert_instr(vmovdqu32))]
37294#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37295#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37296pub const unsafe fn _mm256_mask_storeu_epi32(mem_addr: *mut i32, mask: __mmask8, a: __m256i) {
37297    let mask = simd_select_bitmask(mask, i32x8::splat(!0), i32x8::ZERO);
37298    simd_masked_store!(SimdAlign::Unaligned, mask, mem_addr, a.as_i32x8());
37299}
37300
37301/// Store packed 64-bit integers from a into memory using writemask k.
37302/// mem_addr does not need to be aligned on any particular boundary.
37303///
37304/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_storeu_epi64)
37305#[inline]
37306#[target_feature(enable = "avx512f,avx512vl")]
37307#[cfg_attr(test, assert_instr(vmovdqu64))]
37308#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37309#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37310pub const unsafe fn _mm256_mask_storeu_epi64(mem_addr: *mut i64, mask: __mmask8, a: __m256i) {
37311    let mask = simd_select_bitmask(mask, i64x4::splat(!0), i64x4::ZERO);
37312    simd_masked_store!(SimdAlign::Unaligned, mask, mem_addr, a.as_i64x4());
37313}
37314
37315/// Store packed single-precision (32-bit) floating-point elements from a into memory using writemask k.
37316/// mem_addr does not need to be aligned on any particular boundary.
37317///
37318/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_storeu_ps)
37319#[inline]
37320#[target_feature(enable = "avx512f,avx512vl")]
37321#[cfg_attr(test, assert_instr(vmovups))]
37322#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37323#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37324pub const unsafe fn _mm256_mask_storeu_ps(mem_addr: *mut f32, mask: __mmask8, a: __m256) {
37325    let mask = simd_select_bitmask(mask, i32x8::splat(!0), i32x8::ZERO);
37326    simd_masked_store!(SimdAlign::Unaligned, mask, mem_addr, a.as_f32x8());
37327}
37328
37329/// Store packed double-precision (64-bit) floating-point elements from a into memory using writemask k.
37330/// mem_addr does not need to be aligned on any particular boundary.
37331///
37332/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_storeu_pd)
37333#[inline]
37334#[target_feature(enable = "avx512f,avx512vl")]
37335#[cfg_attr(test, assert_instr(vmovupd))]
37336#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37337#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37338pub const unsafe fn _mm256_mask_storeu_pd(mem_addr: *mut f64, mask: __mmask8, a: __m256d) {
37339    let mask = simd_select_bitmask(mask, i64x4::splat(!0), i64x4::ZERO);
37340    simd_masked_store!(SimdAlign::Unaligned, mask, mem_addr, a.as_f64x4());
37341}
37342
37343/// Store packed 32-bit integers from a into memory using writemask k.
37344/// mem_addr does not need to be aligned on any particular boundary.
37345///
37346/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_storeu_epi32)
37347#[inline]
37348#[target_feature(enable = "avx512f,avx512vl")]
37349#[cfg_attr(test, assert_instr(vmovdqu32))]
37350#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37351#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37352pub const unsafe fn _mm_mask_storeu_epi32(mem_addr: *mut i32, mask: __mmask8, a: __m128i) {
37353    let mask = simd_select_bitmask(mask, i32x4::splat(!0), i32x4::ZERO);
37354    simd_masked_store!(SimdAlign::Unaligned, mask, mem_addr, a.as_i32x4());
37355}
37356
37357/// Store packed 64-bit integers from a into memory using writemask k.
37358/// mem_addr does not need to be aligned on any particular boundary.
37359///
37360/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_storeu_epi64)
37361#[inline]
37362#[target_feature(enable = "avx512f,avx512vl")]
37363#[cfg_attr(test, assert_instr(vmovdqu64))]
37364#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37365#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37366pub const unsafe fn _mm_mask_storeu_epi64(mem_addr: *mut i64, mask: __mmask8, a: __m128i) {
37367    let mask = simd_select_bitmask(mask, i64x2::splat(!0), i64x2::ZERO);
37368    simd_masked_store!(SimdAlign::Unaligned, mask, mem_addr, a.as_i64x2());
37369}
37370
37371/// Store packed single-precision (32-bit) floating-point elements from a into memory using writemask k.
37372/// mem_addr does not need to be aligned on any particular boundary.
37373///
37374/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_storeu_ps)
37375#[inline]
37376#[target_feature(enable = "avx512f,avx512vl")]
37377#[cfg_attr(test, assert_instr(vmovups))]
37378#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37379#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37380pub const unsafe fn _mm_mask_storeu_ps(mem_addr: *mut f32, mask: __mmask8, a: __m128) {
37381    let mask = simd_select_bitmask(mask, i32x4::splat(!0), i32x4::ZERO);
37382    simd_masked_store!(SimdAlign::Unaligned, mask, mem_addr, a.as_f32x4());
37383}
37384
37385/// Store packed double-precision (64-bit) floating-point elements from a into memory using writemask k.
37386/// mem_addr does not need to be aligned on any particular boundary.
37387///
37388/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_storeu_pd)
37389#[inline]
37390#[target_feature(enable = "avx512f,avx512vl")]
37391#[cfg_attr(test, assert_instr(vmovupd))]
37392#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37393#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37394pub const unsafe fn _mm_mask_storeu_pd(mem_addr: *mut f64, mask: __mmask8, a: __m128d) {
37395    let mask = simd_select_bitmask(mask, i64x2::splat(!0), i64x2::ZERO);
37396    simd_masked_store!(SimdAlign::Unaligned, mask, mem_addr, a.as_f64x2());
37397}
37398
37399/// Store packed 32-bit integers from a into memory using writemask k.
37400/// mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
37401///
37402/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_store_epi32)
37403#[inline]
37404#[target_feature(enable = "avx512f")]
37405#[cfg_attr(test, assert_instr(vmovdqa32))]
37406#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37407#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37408pub const unsafe fn _mm512_mask_store_epi32(mem_addr: *mut i32, mask: __mmask16, a: __m512i) {
37409    let mask = simd_select_bitmask(mask, i32x16::splat(!0), i32x16::ZERO);
37410    simd_masked_store!(SimdAlign::Vector, mask, mem_addr, a.as_i32x16());
37411}
37412
37413/// Store packed 64-bit integers from a into memory using writemask k.
37414/// mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
37415///
37416/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_store_epi64)
37417#[inline]
37418#[target_feature(enable = "avx512f")]
37419#[cfg_attr(test, assert_instr(vmovdqa64))]
37420#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37421#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37422pub const unsafe fn _mm512_mask_store_epi64(mem_addr: *mut i64, mask: __mmask8, a: __m512i) {
37423    let mask = simd_select_bitmask(mask, i64x8::splat(!0), i64x8::ZERO);
37424    simd_masked_store!(SimdAlign::Vector, mask, mem_addr, a.as_i64x8());
37425}
37426
37427/// Store packed single-precision (32-bit) floating-point elements from a into memory using writemask k.
37428/// mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
37429///
37430/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_store_ps)
37431#[inline]
37432#[target_feature(enable = "avx512f")]
37433#[cfg_attr(test, assert_instr(vmovaps))]
37434#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37435#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37436pub const unsafe fn _mm512_mask_store_ps(mem_addr: *mut f32, mask: __mmask16, a: __m512) {
37437    let mask = simd_select_bitmask(mask, i32x16::splat(!0), i32x16::ZERO);
37438    simd_masked_store!(SimdAlign::Vector, mask, mem_addr, a.as_f32x16());
37439}
37440
37441/// Store packed double-precision (64-bit) floating-point elements from a into memory using writemask k.
37442/// mem_addr must be aligned on a 64-byte boundary or a general-protection exception may be generated.
37443///
37444/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_store_pd)
37445#[inline]
37446#[target_feature(enable = "avx512f")]
37447#[cfg_attr(test, assert_instr(vmovapd))]
37448#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37449#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37450pub const unsafe fn _mm512_mask_store_pd(mem_addr: *mut f64, mask: __mmask8, a: __m512d) {
37451    let mask = simd_select_bitmask(mask, i64x8::splat(!0), i64x8::ZERO);
37452    simd_masked_store!(SimdAlign::Vector, mask, mem_addr, a.as_f64x8());
37453}
37454
37455/// Store packed 32-bit integers from a into memory using writemask k.
37456/// mem_addr must be aligned on a 32-byte boundary or a general-protection exception may be generated.
37457///
37458/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_store_epi32)
37459#[inline]
37460#[target_feature(enable = "avx512f,avx512vl")]
37461#[cfg_attr(test, assert_instr(vmovdqa32))]
37462#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37463#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37464pub const unsafe fn _mm256_mask_store_epi32(mem_addr: *mut i32, mask: __mmask8, a: __m256i) {
37465    let mask = simd_select_bitmask(mask, i32x8::splat(!0), i32x8::ZERO);
37466    simd_masked_store!(SimdAlign::Vector, mask, mem_addr, a.as_i32x8());
37467}
37468
37469/// Store packed 64-bit integers from a into memory using writemask k.
37470/// mem_addr must be aligned on a 32-byte boundary or a general-protection exception may be generated.
37471///
37472/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_store_epi64)
37473#[inline]
37474#[target_feature(enable = "avx512f,avx512vl")]
37475#[cfg_attr(test, assert_instr(vmovdqa64))]
37476#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37477#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37478pub const unsafe fn _mm256_mask_store_epi64(mem_addr: *mut i64, mask: __mmask8, a: __m256i) {
37479    let mask = simd_select_bitmask(mask, i64x4::splat(!0), i64x4::ZERO);
37480    simd_masked_store!(SimdAlign::Vector, mask, mem_addr, a.as_i64x4());
37481}
37482
37483/// Store packed single-precision (32-bit) floating-point elements from a into memory using writemask k.
37484/// mem_addr must be aligned on a 32-byte boundary or a general-protection exception may be generated.
37485///
37486/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_store_ps)
37487#[inline]
37488#[target_feature(enable = "avx512f,avx512vl")]
37489#[cfg_attr(test, assert_instr(vmovaps))]
37490#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37491#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37492pub const unsafe fn _mm256_mask_store_ps(mem_addr: *mut f32, mask: __mmask8, a: __m256) {
37493    let mask = simd_select_bitmask(mask, i32x8::splat(!0), i32x8::ZERO);
37494    simd_masked_store!(SimdAlign::Vector, mask, mem_addr, a.as_f32x8());
37495}
37496
37497/// Store packed double-precision (64-bit) floating-point elements from a into memory using writemask k.
37498/// mem_addr must be aligned on a 32-byte boundary or a general-protection exception may be generated.
37499///
37500/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_store_pd)
37501#[inline]
37502#[target_feature(enable = "avx512f,avx512vl")]
37503#[cfg_attr(test, assert_instr(vmovapd))]
37504#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37505#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37506pub const unsafe fn _mm256_mask_store_pd(mem_addr: *mut f64, mask: __mmask8, a: __m256d) {
37507    let mask = simd_select_bitmask(mask, i64x4::splat(!0), i64x4::ZERO);
37508    simd_masked_store!(SimdAlign::Vector, mask, mem_addr, a.as_f64x4());
37509}
37510
37511/// Store packed 32-bit integers from a into memory using writemask k.
37512/// mem_addr must be aligned on a 16-byte boundary or a general-protection exception may be generated.
37513///
37514/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_store_epi32)
37515#[inline]
37516#[target_feature(enable = "avx512f,avx512vl")]
37517#[cfg_attr(test, assert_instr(vmovdqa32))]
37518#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37519#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37520pub const unsafe fn _mm_mask_store_epi32(mem_addr: *mut i32, mask: __mmask8, a: __m128i) {
37521    let mask = simd_select_bitmask(mask, i32x4::splat(!0), i32x4::ZERO);
37522    simd_masked_store!(SimdAlign::Vector, mask, mem_addr, a.as_i32x4());
37523}
37524
37525/// Store packed 64-bit integers from a into memory using writemask k.
37526/// mem_addr must be aligned on a 16-byte boundary or a general-protection exception may be generated.
37527///
37528/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_store_epi64)
37529#[inline]
37530#[target_feature(enable = "avx512f,avx512vl")]
37531#[cfg_attr(test, assert_instr(vmovdqa64))]
37532#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37533#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37534pub const unsafe fn _mm_mask_store_epi64(mem_addr: *mut i64, mask: __mmask8, a: __m128i) {
37535    let mask = simd_select_bitmask(mask, i64x2::splat(!0), i64x2::ZERO);
37536    simd_masked_store!(SimdAlign::Vector, mask, mem_addr, a.as_i64x2());
37537}
37538
37539/// Store packed single-precision (32-bit) floating-point elements from a into memory using writemask k.
37540/// mem_addr must be aligned on a 16-byte boundary or a general-protection exception may be generated.
37541///
37542/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_store_ps)
37543#[inline]
37544#[target_feature(enable = "avx512f,avx512vl")]
37545#[cfg_attr(test, assert_instr(vmovaps))]
37546#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37547#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37548pub const unsafe fn _mm_mask_store_ps(mem_addr: *mut f32, mask: __mmask8, a: __m128) {
37549    let mask = simd_select_bitmask(mask, i32x4::splat(!0), i32x4::ZERO);
37550    simd_masked_store!(SimdAlign::Vector, mask, mem_addr, a.as_f32x4());
37551}
37552
37553/// Store packed double-precision (64-bit) floating-point elements from a into memory using writemask k.
37554/// mem_addr must be aligned on a 16-byte boundary or a general-protection exception may be generated.
37555///
37556/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_store_pd)
37557#[inline]
37558#[target_feature(enable = "avx512f,avx512vl")]
37559#[cfg_attr(test, assert_instr(vmovapd))]
37560#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37561#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37562pub const unsafe fn _mm_mask_store_pd(mem_addr: *mut f64, mask: __mmask8, a: __m128d) {
37563    let mask = simd_select_bitmask(mask, i64x2::splat(!0), i64x2::ZERO);
37564    simd_masked_store!(SimdAlign::Vector, mask, mem_addr, a.as_f64x2());
37565}
37566
37567/// Store a single-precision (32-bit) floating-point element from a into memory using writemask k. mem_addr
37568/// must be aligned on a 16-byte boundary or a general-protection exception may be generated.
37569///
37570/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mask_store_ss)
37571#[inline]
37572#[cfg_attr(test, assert_instr(vmovss))]
37573#[target_feature(enable = "avx512f")]
37574#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37575pub unsafe fn _mm_mask_store_ss(mem_addr: *mut f32, k: __mmask8, a: __m128) {
37576    asm!(
37577        vps!("vmovss", "{{{k}}}, {a}"),
37578        p = in(reg) mem_addr,
37579        k = in(kreg) k,
37580        a = in(xmm_reg) a,
37581        options(nostack, preserves_flags),
37582    );
37583}
37584
37585/// Store a double-precision (64-bit) floating-point element from a into memory using writemask k. mem_addr
37586/// must be aligned on a 16-byte boundary or a general-protection exception may be generated.
37587///
37588/// [Intel's documentation](https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_mask_store_sd)
37589#[inline]
37590#[cfg_attr(test, assert_instr(vmovsd))]
37591#[target_feature(enable = "avx512f")]
37592#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37593pub unsafe fn _mm_mask_store_sd(mem_addr: *mut f64, k: __mmask8, a: __m128d) {
37594    asm!(
37595        vps!("vmovsd", "{{{k}}}, {a}"),
37596        p = in(reg) mem_addr,
37597        k = in(kreg) k,
37598        a = in(xmm_reg) a,
37599        options(nostack, preserves_flags),
37600    );
37601}
37602
37603/// Load contiguous active 32-bit integers from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
37604///
37605/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_expandloadu_epi32)
37606#[inline]
37607#[target_feature(enable = "avx512f")]
37608#[cfg_attr(test, assert_instr(vpexpandd))]
37609#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37610pub unsafe fn _mm512_mask_expandloadu_epi32(
37611    src: __m512i,
37612    k: __mmask16,
37613    mem_addr: *const i32,
37614) -> __m512i {
37615    transmute(expandloadd_512(mem_addr, src.as_i32x16(), k))
37616}
37617
37618/// Load contiguous active 32-bit integers from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
37619///
37620/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_expandloadu_epi32)
37621#[inline]
37622#[target_feature(enable = "avx512f")]
37623#[cfg_attr(test, assert_instr(vpexpandd))]
37624#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37625pub unsafe fn _mm512_maskz_expandloadu_epi32(k: __mmask16, mem_addr: *const i32) -> __m512i {
37626    _mm512_mask_expandloadu_epi32(_mm512_setzero_si512(), k, mem_addr)
37627}
37628
37629/// Load contiguous active 32-bit integers from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
37630///
37631/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_expandloadu_epi32)
37632#[inline]
37633#[target_feature(enable = "avx512f,avx512vl")]
37634#[cfg_attr(test, assert_instr(vpexpandd))]
37635#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37636pub unsafe fn _mm256_mask_expandloadu_epi32(
37637    src: __m256i,
37638    k: __mmask8,
37639    mem_addr: *const i32,
37640) -> __m256i {
37641    transmute(expandloadd_256(mem_addr, src.as_i32x8(), k))
37642}
37643
37644/// Load contiguous active 32-bit integers from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
37645///
37646/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_expandloadu_epi32)
37647#[inline]
37648#[target_feature(enable = "avx512f,avx512vl")]
37649#[cfg_attr(test, assert_instr(vpexpandd))]
37650#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37651pub unsafe fn _mm256_maskz_expandloadu_epi32(k: __mmask8, mem_addr: *const i32) -> __m256i {
37652    _mm256_mask_expandloadu_epi32(_mm256_setzero_si256(), k, mem_addr)
37653}
37654
37655/// Load contiguous active 32-bit integers from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
37656///
37657/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_expandloadu_epi32)
37658#[inline]
37659#[target_feature(enable = "avx512f,avx512vl")]
37660#[cfg_attr(test, assert_instr(vpexpandd))]
37661#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37662pub unsafe fn _mm_mask_expandloadu_epi32(
37663    src: __m128i,
37664    k: __mmask8,
37665    mem_addr: *const i32,
37666) -> __m128i {
37667    transmute(expandloadd_128(mem_addr, src.as_i32x4(), k))
37668}
37669
37670/// Load contiguous active 32-bit integers from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
37671///
37672/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_expandloadu_epi32)
37673#[inline]
37674#[target_feature(enable = "avx512f,avx512vl")]
37675#[cfg_attr(test, assert_instr(vpexpandd))]
37676#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37677pub unsafe fn _mm_maskz_expandloadu_epi32(k: __mmask8, mem_addr: *const i32) -> __m128i {
37678    _mm_mask_expandloadu_epi32(_mm_setzero_si128(), k, mem_addr)
37679}
37680
37681/// Load contiguous active 64-bit integers from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
37682///
37683/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_expandloadu_epi64)
37684#[inline]
37685#[target_feature(enable = "avx512f")]
37686#[cfg_attr(test, assert_instr(vpexpandq))]
37687#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37688pub unsafe fn _mm512_mask_expandloadu_epi64(
37689    src: __m512i,
37690    k: __mmask8,
37691    mem_addr: *const i64,
37692) -> __m512i {
37693    transmute(expandloadq_512(mem_addr, src.as_i64x8(), k))
37694}
37695
37696/// Load contiguous active 64-bit integers from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
37697///
37698/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_expandloadu_epi64)
37699#[inline]
37700#[target_feature(enable = "avx512f")]
37701#[cfg_attr(test, assert_instr(vpexpandq))]
37702#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37703pub unsafe fn _mm512_maskz_expandloadu_epi64(k: __mmask8, mem_addr: *const i64) -> __m512i {
37704    _mm512_mask_expandloadu_epi64(_mm512_setzero_si512(), k, mem_addr)
37705}
37706
37707/// Load contiguous active 64-bit integers from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
37708///
37709/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_expandloadu_epi64)
37710#[inline]
37711#[target_feature(enable = "avx512f,avx512vl")]
37712#[cfg_attr(test, assert_instr(vpexpandq))]
37713#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37714pub unsafe fn _mm256_mask_expandloadu_epi64(
37715    src: __m256i,
37716    k: __mmask8,
37717    mem_addr: *const i64,
37718) -> __m256i {
37719    transmute(expandloadq_256(mem_addr, src.as_i64x4(), k))
37720}
37721
37722/// Load contiguous active 64-bit integers from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
37723///
37724/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_expandloadu_epi64)
37725#[inline]
37726#[target_feature(enable = "avx512f,avx512vl")]
37727#[cfg_attr(test, assert_instr(vpexpandq))]
37728#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37729pub unsafe fn _mm256_maskz_expandloadu_epi64(k: __mmask8, mem_addr: *const i64) -> __m256i {
37730    _mm256_mask_expandloadu_epi64(_mm256_setzero_si256(), k, mem_addr)
37731}
37732
37733/// Load contiguous active 64-bit integers from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
37734///
37735/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_expandloadu_epi64)
37736#[inline]
37737#[target_feature(enable = "avx512f,avx512vl")]
37738#[cfg_attr(test, assert_instr(vpexpandq))]
37739#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37740pub unsafe fn _mm_mask_expandloadu_epi64(
37741    src: __m128i,
37742    k: __mmask8,
37743    mem_addr: *const i64,
37744) -> __m128i {
37745    transmute(expandloadq_128(mem_addr, src.as_i64x2(), k))
37746}
37747
37748/// Load contiguous active 64-bit integers from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
37749///
37750/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_expandloadu_epi64)
37751#[inline]
37752#[target_feature(enable = "avx512f,avx512vl")]
37753#[cfg_attr(test, assert_instr(vpexpandq))]
37754#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37755pub unsafe fn _mm_maskz_expandloadu_epi64(k: __mmask8, mem_addr: *const i64) -> __m128i {
37756    _mm_mask_expandloadu_epi64(_mm_setzero_si128(), k, mem_addr)
37757}
37758
37759/// Load contiguous active single-precision (32-bit) floating-point elements from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
37760///
37761/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_expandloadu_ps)
37762#[inline]
37763#[target_feature(enable = "avx512f")]
37764#[cfg_attr(test, assert_instr(vexpandps))]
37765#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37766pub unsafe fn _mm512_mask_expandloadu_ps(
37767    src: __m512,
37768    k: __mmask16,
37769    mem_addr: *const f32,
37770) -> __m512 {
37771    transmute(expandloadps_512(mem_addr, src.as_f32x16(), k))
37772}
37773
37774/// Load contiguous active single-precision (32-bit) floating-point elements from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
37775///
37776/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_expandloadu_ps)
37777#[inline]
37778#[target_feature(enable = "avx512f")]
37779#[cfg_attr(test, assert_instr(vexpandps))]
37780#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37781pub unsafe fn _mm512_maskz_expandloadu_ps(k: __mmask16, mem_addr: *const f32) -> __m512 {
37782    _mm512_mask_expandloadu_ps(_mm512_setzero_ps(), k, mem_addr)
37783}
37784
37785/// Load contiguous active single-precision (32-bit) floating-point elements from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
37786///
37787/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_expandloadu_ps)
37788#[inline]
37789#[target_feature(enable = "avx512f,avx512vl")]
37790#[cfg_attr(test, assert_instr(vexpandps))]
37791#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37792pub unsafe fn _mm256_mask_expandloadu_ps(src: __m256, k: __mmask8, mem_addr: *const f32) -> __m256 {
37793    transmute(expandloadps_256(mem_addr, src.as_f32x8(), k))
37794}
37795
37796/// Load contiguous active single-precision (32-bit) floating-point elements from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
37797///
37798/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_expandloadu_ps)
37799#[inline]
37800#[target_feature(enable = "avx512f,avx512vl")]
37801#[cfg_attr(test, assert_instr(vexpandps))]
37802#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37803pub unsafe fn _mm256_maskz_expandloadu_ps(k: __mmask8, mem_addr: *const f32) -> __m256 {
37804    _mm256_mask_expandloadu_ps(_mm256_setzero_ps(), k, mem_addr)
37805}
37806
37807/// Load contiguous active single-precision (32-bit) floating-point elements from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
37808///
37809/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_expandloadu_ps)
37810#[inline]
37811#[target_feature(enable = "avx512f,avx512vl")]
37812#[cfg_attr(test, assert_instr(vexpandps))]
37813#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37814pub unsafe fn _mm_mask_expandloadu_ps(src: __m128, k: __mmask8, mem_addr: *const f32) -> __m128 {
37815    transmute(expandloadps_128(mem_addr, src.as_f32x4(), k))
37816}
37817
37818/// Load contiguous active single-precision (32-bit) floating-point elements from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
37819///
37820/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_expandloadu_ps)
37821#[inline]
37822#[target_feature(enable = "avx512f,avx512vl")]
37823#[cfg_attr(test, assert_instr(vexpandps))]
37824#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37825pub unsafe fn _mm_maskz_expandloadu_ps(k: __mmask8, mem_addr: *const f32) -> __m128 {
37826    _mm_mask_expandloadu_ps(_mm_setzero_ps(), k, mem_addr)
37827}
37828
37829/// Load contiguous active double-precision (64-bit) floating-point elements from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
37830///
37831/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_mask_expandloadu_pd)
37832#[inline]
37833#[target_feature(enable = "avx512f")]
37834#[cfg_attr(test, assert_instr(vexpandpd))]
37835#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37836pub unsafe fn _mm512_mask_expandloadu_pd(
37837    src: __m512d,
37838    k: __mmask8,
37839    mem_addr: *const f64,
37840) -> __m512d {
37841    transmute(expandloadpd_512(mem_addr, src.as_f64x8(), k))
37842}
37843
37844/// Load contiguous active double-precision (64-bit) floating-point elements from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
37845///
37846/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_maskz_expandloadu_pd)
37847#[inline]
37848#[target_feature(enable = "avx512f")]
37849#[cfg_attr(test, assert_instr(vexpandpd))]
37850#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37851pub unsafe fn _mm512_maskz_expandloadu_pd(k: __mmask8, mem_addr: *const f64) -> __m512d {
37852    _mm512_mask_expandloadu_pd(_mm512_setzero_pd(), k, mem_addr)
37853}
37854
37855/// Load contiguous active double-precision (64-bit) floating-point elements from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
37856///
37857/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_mask_expandloadu_pd)
37858#[inline]
37859#[target_feature(enable = "avx512f,avx512vl")]
37860#[cfg_attr(test, assert_instr(vexpandpd))]
37861#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37862pub unsafe fn _mm256_mask_expandloadu_pd(
37863    src: __m256d,
37864    k: __mmask8,
37865    mem_addr: *const f64,
37866) -> __m256d {
37867    transmute(expandloadpd_256(mem_addr, src.as_f64x4(), k))
37868}
37869
37870/// Load contiguous active double-precision (64-bit) floating-point elements from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
37871///
37872/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_maskz_expandloadu_pd)
37873#[inline]
37874#[target_feature(enable = "avx512f,avx512vl")]
37875#[cfg_attr(test, assert_instr(vexpandpd))]
37876#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37877pub unsafe fn _mm256_maskz_expandloadu_pd(k: __mmask8, mem_addr: *const f64) -> __m256d {
37878    _mm256_mask_expandloadu_pd(_mm256_setzero_pd(), k, mem_addr)
37879}
37880
37881/// Load contiguous active double-precision (64-bit) floating-point elements from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
37882///
37883/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_expandloadu_pd)
37884#[inline]
37885#[target_feature(enable = "avx512f,avx512vl")]
37886#[cfg_attr(test, assert_instr(vexpandpd))]
37887#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37888pub unsafe fn _mm_mask_expandloadu_pd(src: __m128d, k: __mmask8, mem_addr: *const f64) -> __m128d {
37889    transmute(expandloadpd_128(mem_addr, src.as_f64x2(), k))
37890}
37891
37892/// Load contiguous active double-precision (64-bit) floating-point elements from unaligned memory at mem_addr (those with their respective bit set in mask k), and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
37893///
37894/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_expandloadu_pd)
37895#[inline]
37896#[target_feature(enable = "avx512f,avx512vl")]
37897#[cfg_attr(test, assert_instr(vexpandpd))]
37898#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37899pub unsafe fn _mm_maskz_expandloadu_pd(k: __mmask8, mem_addr: *const f64) -> __m128d {
37900    _mm_mask_expandloadu_pd(_mm_setzero_pd(), k, mem_addr)
37901}
37902
37903/// Set packed double-precision (64-bit) floating-point elements in dst with the supplied values in reverse order.
37904///
37905/// [Intel's documentation]( https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_setr_pd&expand=5002)
37906#[inline]
37907#[target_feature(enable = "avx512f")]
37908#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37909#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37910pub const fn _mm512_setr_pd(
37911    e0: f64,
37912    e1: f64,
37913    e2: f64,
37914    e3: f64,
37915    e4: f64,
37916    e5: f64,
37917    e6: f64,
37918    e7: f64,
37919) -> __m512d {
37920    unsafe {
37921        let r = f64x8::new(e0, e1, e2, e3, e4, e5, e6, e7);
37922        transmute(r)
37923    }
37924}
37925
37926/// Set packed double-precision (64-bit) floating-point elements in dst with the supplied values.
37927///
37928/// [Intel's documentation]( https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_set_pd&expand=4924)
37929#[inline]
37930#[target_feature(enable = "avx512f")]
37931#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37932#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37933pub const fn _mm512_set_pd(
37934    e0: f64,
37935    e1: f64,
37936    e2: f64,
37937    e3: f64,
37938    e4: f64,
37939    e5: f64,
37940    e6: f64,
37941    e7: f64,
37942) -> __m512d {
37943    _mm512_setr_pd(e7, e6, e5, e4, e3, e2, e1, e0)
37944}
37945
37946/// Move the lower single-precision (32-bit) floating-point element from b to the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
37947///
37948/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_move_ss&expand=3832)
37949#[inline]
37950#[target_feature(enable = "avx512f")]
37951#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37952#[cfg_attr(test, assert_instr(vmovss))]
37953#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37954pub const fn _mm_mask_move_ss(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
37955    unsafe {
37956        let extractsrc: f32 = simd_extract!(src, 0);
37957        let mut mov: f32 = extractsrc;
37958        if (k & 0b00000001) != 0 {
37959            mov = simd_extract!(b, 0);
37960        }
37961        simd_insert!(a, 0, mov)
37962    }
37963}
37964
37965/// Move the lower single-precision (32-bit) floating-point element from b to the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
37966///
37967/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_move_ss&expand=3833)
37968#[inline]
37969#[target_feature(enable = "avx512f")]
37970#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37971#[cfg_attr(test, assert_instr(vmovss))]
37972#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37973pub const fn _mm_maskz_move_ss(k: __mmask8, a: __m128, b: __m128) -> __m128 {
37974    unsafe {
37975        let mut mov: f32 = 0.;
37976        if (k & 0b00000001) != 0 {
37977            mov = simd_extract!(b, 0);
37978        }
37979        simd_insert!(a, 0, mov)
37980    }
37981}
37982
37983/// Move the lower double-precision (64-bit) floating-point element from b to the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
37984///
37985/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_move_sd&expand=3829)
37986#[inline]
37987#[target_feature(enable = "avx512f")]
37988#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
37989#[cfg_attr(test, assert_instr(vmovsd))]
37990#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
37991pub const fn _mm_mask_move_sd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
37992    unsafe {
37993        let extractsrc: f64 = simd_extract!(src, 0);
37994        let mut mov: f64 = extractsrc;
37995        if (k & 0b00000001) != 0 {
37996            mov = simd_extract!(b, 0);
37997        }
37998        simd_insert!(a, 0, mov)
37999    }
38000}
38001
38002/// Move the lower double-precision (64-bit) floating-point element from b to the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
38003///
38004/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_move_sd&expand=3830)
38005#[inline]
38006#[target_feature(enable = "avx512f")]
38007#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38008#[cfg_attr(test, assert_instr(vmovsd))]
38009#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
38010pub const fn _mm_maskz_move_sd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38011    unsafe {
38012        let mut mov: f64 = 0.;
38013        if (k & 0b00000001) != 0 {
38014            mov = simd_extract!(b, 0);
38015        }
38016        simd_insert!(a, 0, mov)
38017    }
38018}
38019
38020/// Add the lower single-precision (32-bit) floating-point element in a and b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
38021///
38022/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_add_ss&expand=159)
38023#[inline]
38024#[target_feature(enable = "avx512f")]
38025#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38026#[cfg_attr(test, assert_instr(vaddss))]
38027#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
38028pub const fn _mm_mask_add_ss(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
38029    unsafe {
38030        let extractsrc: f32 = simd_extract!(src, 0);
38031        let mut add: f32 = extractsrc;
38032        if (k & 0b00000001) != 0 {
38033            let extracta: f32 = simd_extract!(a, 0);
38034            let extractb: f32 = simd_extract!(b, 0);
38035            add = extracta + extractb;
38036        }
38037        simd_insert!(a, 0, add)
38038    }
38039}
38040
38041/// Add the lower single-precision (32-bit) floating-point element in a and b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
38042///
38043/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_add_ss&expand=160)
38044#[inline]
38045#[target_feature(enable = "avx512f")]
38046#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38047#[cfg_attr(test, assert_instr(vaddss))]
38048#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
38049pub const fn _mm_maskz_add_ss(k: __mmask8, a: __m128, b: __m128) -> __m128 {
38050    unsafe {
38051        let mut add: f32 = 0.;
38052        if (k & 0b00000001) != 0 {
38053            let extracta: f32 = simd_extract!(a, 0);
38054            let extractb: f32 = simd_extract!(b, 0);
38055            add = extracta + extractb;
38056        }
38057        simd_insert!(a, 0, add)
38058    }
38059}
38060
38061/// Add the lower double-precision (64-bit) floating-point element in a and b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
38062///
38063/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_add_sd&expand=155)
38064#[inline]
38065#[target_feature(enable = "avx512f")]
38066#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38067#[cfg_attr(test, assert_instr(vaddsd))]
38068#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
38069pub const fn _mm_mask_add_sd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38070    unsafe {
38071        let extractsrc: f64 = simd_extract!(src, 0);
38072        let mut add: f64 = extractsrc;
38073        if (k & 0b00000001) != 0 {
38074            let extracta: f64 = simd_extract!(a, 0);
38075            let extractb: f64 = simd_extract!(b, 0);
38076            add = extracta + extractb;
38077        }
38078        simd_insert!(a, 0, add)
38079    }
38080}
38081
38082/// Add the lower double-precision (64-bit) floating-point element in a and b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
38083///
38084/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_add_sd&expand=156)
38085#[inline]
38086#[target_feature(enable = "avx512f")]
38087#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38088#[cfg_attr(test, assert_instr(vaddsd))]
38089#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
38090pub const fn _mm_maskz_add_sd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38091    unsafe {
38092        let mut add: f64 = 0.;
38093        if (k & 0b00000001) != 0 {
38094            let extracta: f64 = simd_extract!(a, 0);
38095            let extractb: f64 = simd_extract!(b, 0);
38096            add = extracta + extractb;
38097        }
38098        simd_insert!(a, 0, add)
38099    }
38100}
38101
38102/// Subtract the lower single-precision (32-bit) floating-point element in b from the lower single-precision (32-bit) floating-point element in a, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
38103///
38104/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_sub_ss&expand=5750)
38105#[inline]
38106#[target_feature(enable = "avx512f")]
38107#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38108#[cfg_attr(test, assert_instr(vsubss))]
38109#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
38110pub const fn _mm_mask_sub_ss(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
38111    unsafe {
38112        let extractsrc: f32 = simd_extract!(src, 0);
38113        let mut add: f32 = extractsrc;
38114        if (k & 0b00000001) != 0 {
38115            let extracta: f32 = simd_extract!(a, 0);
38116            let extractb: f32 = simd_extract!(b, 0);
38117            add = extracta - extractb;
38118        }
38119        simd_insert!(a, 0, add)
38120    }
38121}
38122
38123/// Subtract the lower single-precision (32-bit) floating-point element in b from the lower single-precision (32-bit) floating-point element in a, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
38124///
38125/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_sub_ss&expand=5751)
38126#[inline]
38127#[target_feature(enable = "avx512f")]
38128#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38129#[cfg_attr(test, assert_instr(vsubss))]
38130#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
38131pub const fn _mm_maskz_sub_ss(k: __mmask8, a: __m128, b: __m128) -> __m128 {
38132    unsafe {
38133        let mut add: f32 = 0.;
38134        if (k & 0b00000001) != 0 {
38135            let extracta: f32 = simd_extract!(a, 0);
38136            let extractb: f32 = simd_extract!(b, 0);
38137            add = extracta - extractb;
38138        }
38139        simd_insert!(a, 0, add)
38140    }
38141}
38142
38143/// Subtract the lower double-precision (64-bit) floating-point element in b from the lower double-precision (64-bit) floating-point element in a, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
38144///
38145/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_sub_sd&expand=5746)
38146#[inline]
38147#[target_feature(enable = "avx512f")]
38148#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38149#[cfg_attr(test, assert_instr(vsubsd))]
38150#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
38151pub const fn _mm_mask_sub_sd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38152    unsafe {
38153        let extractsrc: f64 = simd_extract!(src, 0);
38154        let mut add: f64 = extractsrc;
38155        if (k & 0b00000001) != 0 {
38156            let extracta: f64 = simd_extract!(a, 0);
38157            let extractb: f64 = simd_extract!(b, 0);
38158            add = extracta - extractb;
38159        }
38160        simd_insert!(a, 0, add)
38161    }
38162}
38163
38164/// Subtract the lower double-precision (64-bit) floating-point element in b from the lower double-precision (64-bit) floating-point element in a, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
38165///
38166/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_sub_sd&expand=5747)
38167#[inline]
38168#[target_feature(enable = "avx512f")]
38169#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38170#[cfg_attr(test, assert_instr(vsubsd))]
38171#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
38172pub const fn _mm_maskz_sub_sd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38173    unsafe {
38174        let mut add: f64 = 0.;
38175        if (k & 0b00000001) != 0 {
38176            let extracta: f64 = simd_extract!(a, 0);
38177            let extractb: f64 = simd_extract!(b, 0);
38178            add = extracta - extractb;
38179        }
38180        simd_insert!(a, 0, add)
38181    }
38182}
38183
38184/// Multiply the lower single-precision (32-bit) floating-point element in a and b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
38185///
38186/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_mul_ss&expand=3950)
38187#[inline]
38188#[target_feature(enable = "avx512f")]
38189#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38190#[cfg_attr(test, assert_instr(vmulss))]
38191#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
38192pub const fn _mm_mask_mul_ss(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
38193    unsafe {
38194        let extractsrc: f32 = simd_extract!(src, 0);
38195        let mut add: f32 = extractsrc;
38196        if (k & 0b00000001) != 0 {
38197            let extracta: f32 = simd_extract!(a, 0);
38198            let extractb: f32 = simd_extract!(b, 0);
38199            add = extracta * extractb;
38200        }
38201        simd_insert!(a, 0, add)
38202    }
38203}
38204
38205/// Multiply the lower single-precision (32-bit) floating-point element in a and b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
38206///
38207/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_mul_ss&expand=3951)
38208#[inline]
38209#[target_feature(enable = "avx512f")]
38210#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38211#[cfg_attr(test, assert_instr(vmulss))]
38212#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
38213pub const fn _mm_maskz_mul_ss(k: __mmask8, a: __m128, b: __m128) -> __m128 {
38214    unsafe {
38215        let mut add: f32 = 0.;
38216        if (k & 0b00000001) != 0 {
38217            let extracta: f32 = simd_extract!(a, 0);
38218            let extractb: f32 = simd_extract!(b, 0);
38219            add = extracta * extractb;
38220        }
38221        simd_insert!(a, 0, add)
38222    }
38223}
38224
38225/// Multiply the lower double-precision (64-bit) floating-point element in a and b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
38226///
38227/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_mul_sd&expand=3947)
38228#[inline]
38229#[target_feature(enable = "avx512f")]
38230#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38231#[cfg_attr(test, assert_instr(vmulsd))]
38232#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
38233pub const fn _mm_mask_mul_sd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38234    unsafe {
38235        let extractsrc: f64 = simd_extract!(src, 0);
38236        let mut add: f64 = extractsrc;
38237        if (k & 0b00000001) != 0 {
38238            let extracta: f64 = simd_extract!(a, 0);
38239            let extractb: f64 = simd_extract!(b, 0);
38240            add = extracta * extractb;
38241        }
38242        simd_insert!(a, 0, add)
38243    }
38244}
38245
38246/// Multiply the lower double-precision (64-bit) floating-point element in a and b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
38247///
38248/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_mul_sd&expand=3948)
38249#[inline]
38250#[target_feature(enable = "avx512f")]
38251#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38252#[cfg_attr(test, assert_instr(vmulsd))]
38253#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
38254pub const fn _mm_maskz_mul_sd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38255    unsafe {
38256        let mut add: f64 = 0.;
38257        if (k & 0b00000001) != 0 {
38258            let extracta: f64 = simd_extract!(a, 0);
38259            let extractb: f64 = simd_extract!(b, 0);
38260            add = extracta * extractb;
38261        }
38262        simd_insert!(a, 0, add)
38263    }
38264}
38265
38266/// Divide the lower single-precision (32-bit) floating-point element in a by the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
38267///
38268/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_div_ss&expand=2181)
38269#[inline]
38270#[target_feature(enable = "avx512f")]
38271#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38272#[cfg_attr(test, assert_instr(vdivss))]
38273#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
38274pub const fn _mm_mask_div_ss(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
38275    unsafe {
38276        let extractsrc: f32 = simd_extract!(src, 0);
38277        let mut add: f32 = extractsrc;
38278        if (k & 0b00000001) != 0 {
38279            let extracta: f32 = simd_extract!(a, 0);
38280            let extractb: f32 = simd_extract!(b, 0);
38281            add = extracta / extractb;
38282        }
38283        simd_insert!(a, 0, add)
38284    }
38285}
38286
38287/// Divide the lower single-precision (32-bit) floating-point element in a by the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
38288///
38289/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_div_ss&expand=2182)
38290#[inline]
38291#[target_feature(enable = "avx512f")]
38292#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38293#[cfg_attr(test, assert_instr(vdivss))]
38294#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
38295pub const fn _mm_maskz_div_ss(k: __mmask8, a: __m128, b: __m128) -> __m128 {
38296    unsafe {
38297        let mut add: f32 = 0.;
38298        if (k & 0b00000001) != 0 {
38299            let extracta: f32 = simd_extract!(a, 0);
38300            let extractb: f32 = simd_extract!(b, 0);
38301            add = extracta / extractb;
38302        }
38303        simd_insert!(a, 0, add)
38304    }
38305}
38306
38307/// Divide the lower double-precision (64-bit) floating-point element in a by the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
38308///
38309/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_div_sd&expand=2178)
38310#[inline]
38311#[target_feature(enable = "avx512f")]
38312#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38313#[cfg_attr(test, assert_instr(vdivsd))]
38314#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
38315pub const fn _mm_mask_div_sd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38316    unsafe {
38317        let extractsrc: f64 = simd_extract!(src, 0);
38318        let mut add: f64 = extractsrc;
38319        if (k & 0b00000001) != 0 {
38320            let extracta: f64 = simd_extract!(a, 0);
38321            let extractb: f64 = simd_extract!(b, 0);
38322            add = extracta / extractb;
38323        }
38324        simd_insert!(a, 0, add)
38325    }
38326}
38327
38328/// Divide the lower double-precision (64-bit) floating-point element in a by the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
38329///
38330/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_div_sd&expand=2179)
38331#[inline]
38332#[target_feature(enable = "avx512f")]
38333#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38334#[cfg_attr(test, assert_instr(vdivsd))]
38335#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
38336pub const fn _mm_maskz_div_sd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38337    unsafe {
38338        let mut add: f64 = 0.;
38339        if (k & 0b00000001) != 0 {
38340            let extracta: f64 = simd_extract!(a, 0);
38341            let extractb: f64 = simd_extract!(b, 0);
38342            add = extracta / extractb;
38343        }
38344        simd_insert!(a, 0, add)
38345    }
38346}
38347
38348/// Compare the lower single-precision (32-bit) floating-point elements in a and b, store the maximum value in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
38349///
38350/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_max_ss&expand=3672)
38351#[inline]
38352#[target_feature(enable = "avx512f")]
38353#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38354#[cfg_attr(test, assert_instr(vmaxss))]
38355pub fn _mm_mask_max_ss(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
38356    unsafe {
38357        transmute(vmaxss(
38358            a.as_f32x4(),
38359            b.as_f32x4(),
38360            src.as_f32x4(),
38361            k,
38362            _MM_FROUND_CUR_DIRECTION,
38363        ))
38364    }
38365}
38366
38367/// Compare the lower single-precision (32-bit) floating-point elements in a and b, store the maximum value in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
38368///
38369/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_max_ss&expand=3673)
38370#[inline]
38371#[target_feature(enable = "avx512f")]
38372#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38373#[cfg_attr(test, assert_instr(vmaxss))]
38374pub fn _mm_maskz_max_ss(k: __mmask8, a: __m128, b: __m128) -> __m128 {
38375    unsafe {
38376        transmute(vmaxss(
38377            a.as_f32x4(),
38378            b.as_f32x4(),
38379            f32x4::ZERO,
38380            k,
38381            _MM_FROUND_CUR_DIRECTION,
38382        ))
38383    }
38384}
38385
38386/// Compare the lower double-precision (64-bit) floating-point elements in a and b, store the maximum value in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
38387///
38388/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_max_sd&expand=3669)
38389#[inline]
38390#[target_feature(enable = "avx512f")]
38391#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38392#[cfg_attr(test, assert_instr(vmaxsd))]
38393pub fn _mm_mask_max_sd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38394    unsafe {
38395        transmute(vmaxsd(
38396            a.as_f64x2(),
38397            b.as_f64x2(),
38398            src.as_f64x2(),
38399            k,
38400            _MM_FROUND_CUR_DIRECTION,
38401        ))
38402    }
38403}
38404
38405/// Compare the lower double-precision (64-bit) floating-point elements in a and b, store the maximum value in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
38406///
38407/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_max_sd&expand=3670)
38408#[inline]
38409#[target_feature(enable = "avx512f")]
38410#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38411#[cfg_attr(test, assert_instr(vmaxsd))]
38412pub fn _mm_maskz_max_sd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38413    unsafe {
38414        transmute(vmaxsd(
38415            a.as_f64x2(),
38416            b.as_f64x2(),
38417            f64x2::ZERO,
38418            k,
38419            _MM_FROUND_CUR_DIRECTION,
38420        ))
38421    }
38422}
38423
38424/// Compare the lower single-precision (32-bit) floating-point elements in a and b, store the minimum value in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
38425///
38426/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_min_ss&expand=3786)
38427#[inline]
38428#[target_feature(enable = "avx512f")]
38429#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38430#[cfg_attr(test, assert_instr(vminss))]
38431pub fn _mm_mask_min_ss(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
38432    unsafe {
38433        transmute(vminss(
38434            a.as_f32x4(),
38435            b.as_f32x4(),
38436            src.as_f32x4(),
38437            k,
38438            _MM_FROUND_CUR_DIRECTION,
38439        ))
38440    }
38441}
38442
38443/// Compare the lower single-precision (32-bit) floating-point elements in a and b, store the minimum value in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
38444///
38445/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_min_ss&expand=3787)
38446#[inline]
38447#[target_feature(enable = "avx512f")]
38448#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38449#[cfg_attr(test, assert_instr(vminss))]
38450pub fn _mm_maskz_min_ss(k: __mmask8, a: __m128, b: __m128) -> __m128 {
38451    unsafe {
38452        transmute(vminss(
38453            a.as_f32x4(),
38454            b.as_f32x4(),
38455            f32x4::ZERO,
38456            k,
38457            _MM_FROUND_CUR_DIRECTION,
38458        ))
38459    }
38460}
38461
38462/// Compare the lower double-precision (64-bit) floating-point elements in a and b, store the minimum value in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
38463///
38464/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_min_sd&expand=3783)
38465#[inline]
38466#[target_feature(enable = "avx512f")]
38467#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38468#[cfg_attr(test, assert_instr(vminsd))]
38469pub fn _mm_mask_min_sd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38470    unsafe {
38471        transmute(vminsd(
38472            a.as_f64x2(),
38473            b.as_f64x2(),
38474            src.as_f64x2(),
38475            k,
38476            _MM_FROUND_CUR_DIRECTION,
38477        ))
38478    }
38479}
38480
38481/// Compare the lower double-precision (64-bit) floating-point elements in a and b, store the minimum value in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
38482///
38483/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_min_sd&expand=3784)
38484#[inline]
38485#[target_feature(enable = "avx512f")]
38486#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38487#[cfg_attr(test, assert_instr(vminsd))]
38488pub fn _mm_maskz_min_sd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38489    unsafe {
38490        transmute(vminsd(
38491            a.as_f64x2(),
38492            b.as_f64x2(),
38493            f64x2::ZERO,
38494            k,
38495            _MM_FROUND_CUR_DIRECTION,
38496        ))
38497    }
38498}
38499
38500/// Compute the square root of the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
38501///
38502/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_sqrt_ss&expand=5387)
38503#[inline]
38504#[target_feature(enable = "avx512f")]
38505#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38506#[cfg_attr(test, assert_instr(vsqrtss))]
38507pub fn _mm_mask_sqrt_ss(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
38508    unsafe { vsqrtss(a, b, src, k, _MM_FROUND_CUR_DIRECTION) }
38509}
38510
38511/// Compute the square root of the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
38512///
38513/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_sqrt_ss&expand=5388)
38514#[inline]
38515#[target_feature(enable = "avx512f")]
38516#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38517#[cfg_attr(test, assert_instr(vsqrtss))]
38518pub fn _mm_maskz_sqrt_ss(k: __mmask8, a: __m128, b: __m128) -> __m128 {
38519    unsafe { vsqrtss(a, b, _mm_setzero_ps(), k, _MM_FROUND_CUR_DIRECTION) }
38520}
38521
38522/// Compute the square root of the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
38523///
38524/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_sqrt_sd&expand=5384)
38525#[inline]
38526#[target_feature(enable = "avx512f")]
38527#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38528#[cfg_attr(test, assert_instr(vsqrtsd))]
38529pub fn _mm_mask_sqrt_sd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38530    unsafe { vsqrtsd(a, b, src, k, _MM_FROUND_CUR_DIRECTION) }
38531}
38532
38533/// Compute the square root of the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
38534///
38535/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_sqrt_sd&expand=5385)
38536#[inline]
38537#[target_feature(enable = "avx512f")]
38538#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38539#[cfg_attr(test, assert_instr(vsqrtsd))]
38540pub fn _mm_maskz_sqrt_sd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38541    unsafe { vsqrtsd(a, b, _mm_setzero_pd(), k, _MM_FROUND_CUR_DIRECTION) }
38542}
38543
38544/// Compute the approximate reciprocal square root of the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst. The maximum relative error for this approximation is less than 2^-14.
38545///
38546/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_rsqrt14_ss&expand=4825)
38547#[inline]
38548#[target_feature(enable = "avx512f")]
38549#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38550#[cfg_attr(test, assert_instr(vrsqrt14ss))]
38551pub fn _mm_rsqrt14_ss(a: __m128, b: __m128) -> __m128 {
38552    unsafe { transmute(vrsqrt14ss(a.as_f32x4(), b.as_f32x4(), f32x4::ZERO, 0b1)) }
38553}
38554
38555/// Compute the approximate reciprocal square root of the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst. The maximum relative error for this approximation is less than 2^-14.
38556///
38557/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_rsqrt14_ss&expand=4823)
38558#[inline]
38559#[target_feature(enable = "avx512f")]
38560#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38561#[cfg_attr(test, assert_instr(vrsqrt14ss))]
38562pub fn _mm_mask_rsqrt14_ss(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
38563    unsafe { transmute(vrsqrt14ss(a.as_f32x4(), b.as_f32x4(), src.as_f32x4(), k)) }
38564}
38565
38566/// Compute the approximate reciprocal square root of the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst. The maximum relative error for this approximation is less than 2^-14.
38567///
38568/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_rsqrt14_ss&expand=4824)
38569#[inline]
38570#[target_feature(enable = "avx512f")]
38571#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38572#[cfg_attr(test, assert_instr(vrsqrt14ss))]
38573pub fn _mm_maskz_rsqrt14_ss(k: __mmask8, a: __m128, b: __m128) -> __m128 {
38574    unsafe { transmute(vrsqrt14ss(a.as_f32x4(), b.as_f32x4(), f32x4::ZERO, k)) }
38575}
38576
38577/// Compute the approximate reciprocal square root of the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst. The maximum relative error for this approximation is less than 2^-14.
38578///
38579/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_rsqrt14_sd&expand=4822)
38580#[inline]
38581#[target_feature(enable = "avx512f")]
38582#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38583#[cfg_attr(test, assert_instr(vrsqrt14sd))]
38584pub fn _mm_rsqrt14_sd(a: __m128d, b: __m128d) -> __m128d {
38585    unsafe { transmute(vrsqrt14sd(a.as_f64x2(), b.as_f64x2(), f64x2::ZERO, 0b1)) }
38586}
38587
38588/// Compute the approximate reciprocal square root of the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst. The maximum relative error for this approximation is less than 2^-14.
38589///
38590/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_rsqrt14_sd&expand=4820)
38591#[inline]
38592#[target_feature(enable = "avx512f")]
38593#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38594#[cfg_attr(test, assert_instr(vrsqrt14sd))]
38595pub fn _mm_mask_rsqrt14_sd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38596    unsafe { transmute(vrsqrt14sd(a.as_f64x2(), b.as_f64x2(), src.as_f64x2(), k)) }
38597}
38598
38599/// Compute the approximate reciprocal square root of the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst. The maximum relative error for this approximation is less than 2^-14.
38600///
38601/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_rsqrt14_sd&expand=4821)
38602#[inline]
38603#[target_feature(enable = "avx512f")]
38604#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38605#[cfg_attr(test, assert_instr(vrsqrt14sd))]
38606pub fn _mm_maskz_rsqrt14_sd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38607    unsafe { transmute(vrsqrt14sd(a.as_f64x2(), b.as_f64x2(), f64x2::ZERO, k)) }
38608}
38609
38610/// Compute the approximate reciprocal of the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst. The maximum relative error for this approximation is less than 2^-14.
38611///
38612/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_rcp14_ss&expand=4508)
38613#[inline]
38614#[target_feature(enable = "avx512f")]
38615#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38616#[cfg_attr(test, assert_instr(vrcp14ss))]
38617pub fn _mm_rcp14_ss(a: __m128, b: __m128) -> __m128 {
38618    unsafe { transmute(vrcp14ss(a.as_f32x4(), b.as_f32x4(), f32x4::ZERO, 0b1)) }
38619}
38620
38621/// Compute the approximate reciprocal of the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst. The maximum relative error for this approximation is less than 2^-14.
38622///
38623/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_rcp14_ss&expand=4506)
38624#[inline]
38625#[target_feature(enable = "avx512f")]
38626#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38627#[cfg_attr(test, assert_instr(vrcp14ss))]
38628pub fn _mm_mask_rcp14_ss(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
38629    unsafe { transmute(vrcp14ss(a.as_f32x4(), b.as_f32x4(), src.as_f32x4(), k)) }
38630}
38631
38632/// Compute the approximate reciprocal of the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst. The maximum relative error for this approximation is less than 2^-14.
38633///
38634/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_rcp14_ss&expand=4507)
38635#[inline]
38636#[target_feature(enable = "avx512f")]
38637#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38638#[cfg_attr(test, assert_instr(vrcp14ss))]
38639pub fn _mm_maskz_rcp14_ss(k: __mmask8, a: __m128, b: __m128) -> __m128 {
38640    unsafe { transmute(vrcp14ss(a.as_f32x4(), b.as_f32x4(), f32x4::ZERO, k)) }
38641}
38642
38643/// Compute the approximate reciprocal of the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst. The maximum relative error for this approximation is less than 2^-14.
38644///
38645/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_rcp14_sd&expand=4505)
38646#[inline]
38647#[target_feature(enable = "avx512f")]
38648#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38649#[cfg_attr(test, assert_instr(vrcp14sd))]
38650pub fn _mm_rcp14_sd(a: __m128d, b: __m128d) -> __m128d {
38651    unsafe { transmute(vrcp14sd(a.as_f64x2(), b.as_f64x2(), f64x2::ZERO, 0b1)) }
38652}
38653
38654/// Compute the approximate reciprocal of the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst. The maximum relative error for this approximation is less than 2^-14.
38655///
38656/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_rcp14_sd&expand=4503)
38657#[inline]
38658#[target_feature(enable = "avx512f")]
38659#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38660#[cfg_attr(test, assert_instr(vrcp14sd))]
38661pub fn _mm_mask_rcp14_sd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38662    unsafe { transmute(vrcp14sd(a.as_f64x2(), b.as_f64x2(), src.as_f64x2(), k)) }
38663}
38664
38665/// Compute the approximate reciprocal of the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst. The maximum relative error for this approximation is less than 2^-14.
38666///
38667/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_rcp14_sd&expand=4504)
38668#[inline]
38669#[target_feature(enable = "avx512f")]
38670#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38671#[cfg_attr(test, assert_instr(vrcp14sd))]
38672pub fn _mm_maskz_rcp14_sd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38673    unsafe { transmute(vrcp14sd(a.as_f64x2(), b.as_f64x2(), f64x2::ZERO, k)) }
38674}
38675
38676/// Convert the exponent of the lower single-precision (32-bit) floating-point element in b to a single-precision (32-bit) floating-point number representing the integer exponent, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst. This intrinsic essentially calculates floor(log2(x)) for the lower element.
38677///
38678/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_getexp_ss&expand=2862)
38679#[inline]
38680#[target_feature(enable = "avx512f")]
38681#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38682#[cfg_attr(test, assert_instr(vgetexpss))]
38683pub fn _mm_getexp_ss(a: __m128, b: __m128) -> __m128 {
38684    unsafe {
38685        transmute(vgetexpss(
38686            a.as_f32x4(),
38687            b.as_f32x4(),
38688            f32x4::ZERO,
38689            0b1,
38690            _MM_FROUND_NO_EXC,
38691        ))
38692    }
38693}
38694
38695/// Convert the exponent of the lower single-precision (32-bit) floating-point element in b to a single-precision (32-bit) floating-point number representing the integer exponent, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst. This intrinsic essentially calculates floor(log2(x)) for the lower element.
38696///
38697/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_getexp_ss&expand=2863)
38698#[inline]
38699#[target_feature(enable = "avx512f")]
38700#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38701#[cfg_attr(test, assert_instr(vgetexpss))]
38702pub fn _mm_mask_getexp_ss(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
38703    unsafe {
38704        transmute(vgetexpss(
38705            a.as_f32x4(),
38706            b.as_f32x4(),
38707            src.as_f32x4(),
38708            k,
38709            _MM_FROUND_NO_EXC,
38710        ))
38711    }
38712}
38713
38714/// Convert the exponent of the lower single-precision (32-bit) floating-point element in b to a single-precision (32-bit) floating-point number representing the integer exponent, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst. This intrinsic essentially calculates floor(log2(x)) for the lower element.
38715///
38716/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_getexp_ss&expand=2864)
38717#[inline]
38718#[target_feature(enable = "avx512f")]
38719#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38720#[cfg_attr(test, assert_instr(vgetexpss))]
38721pub fn _mm_maskz_getexp_ss(k: __mmask8, a: __m128, b: __m128) -> __m128 {
38722    unsafe {
38723        transmute(vgetexpss(
38724            a.as_f32x4(),
38725            b.as_f32x4(),
38726            f32x4::ZERO,
38727            k,
38728            _MM_FROUND_NO_EXC,
38729        ))
38730    }
38731}
38732
38733/// Convert the exponent of the lower double-precision (64-bit) floating-point element in b to a double-precision (64-bit) floating-point number representing the integer exponent, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst. This intrinsic essentially calculates floor(log2(x)) for the lower element.
38734///
38735/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_getexp_sd&expand=2859)
38736#[inline]
38737#[target_feature(enable = "avx512f")]
38738#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38739#[cfg_attr(test, assert_instr(vgetexpsd))]
38740pub fn _mm_getexp_sd(a: __m128d, b: __m128d) -> __m128d {
38741    unsafe {
38742        transmute(vgetexpsd(
38743            a.as_f64x2(),
38744            b.as_f64x2(),
38745            f64x2::ZERO,
38746            0b1,
38747            _MM_FROUND_NO_EXC,
38748        ))
38749    }
38750}
38751
38752/// Convert the exponent of the lower double-precision (64-bit) floating-point element in b to a double-precision (64-bit) floating-point number representing the integer exponent, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst. This intrinsic essentially calculates floor(log2(x)) for the lower element.
38753///
38754/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_getexp_sd&expand=2860)
38755#[inline]
38756#[target_feature(enable = "avx512f")]
38757#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38758#[cfg_attr(test, assert_instr(vgetexpsd))]
38759pub fn _mm_mask_getexp_sd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38760    unsafe {
38761        transmute(vgetexpsd(
38762            a.as_f64x2(),
38763            b.as_f64x2(),
38764            src.as_f64x2(),
38765            k,
38766            _MM_FROUND_NO_EXC,
38767        ))
38768    }
38769}
38770
38771/// Convert the exponent of the lower double-precision (64-bit) floating-point element in b to a double-precision (64-bit) floating-point number representing the integer exponent, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst. This intrinsic essentially calculates floor(log2(x)) for the lower element.
38772///
38773/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_getexp_sd&expand=2861)
38774#[inline]
38775#[target_feature(enable = "avx512f")]
38776#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38777#[cfg_attr(test, assert_instr(vgetexpsd))]
38778pub fn _mm_maskz_getexp_sd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
38779    unsafe {
38780        transmute(vgetexpsd(
38781            a.as_f64x2(),
38782            b.as_f64x2(),
38783            f64x2::ZERO,
38784            k,
38785            _MM_FROUND_NO_EXC,
38786        ))
38787    }
38788}
38789
38790/// Normalize the mantissas of the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
38791/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
38792///    _MM_MANT_NORM_1_2     // interval [1, 2)\
38793///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
38794///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
38795///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
38796/// The sign is determined by sc which can take the following values:\
38797///    _MM_MANT_SIGN_src     // sign = sign(src)\
38798///    _MM_MANT_SIGN_zero    // sign = 0\
38799///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1\
38800/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
38801///
38802/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_getmant_ss&expand=2898)
38803#[inline]
38804#[target_feature(enable = "avx512f")]
38805#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38806#[cfg_attr(test, assert_instr(vgetmantss, NORM = 0, SIGN = 0))]
38807#[rustc_legacy_const_generics(2, 3)]
38808pub fn _mm_getmant_ss<const NORM: _MM_MANTISSA_NORM_ENUM, const SIGN: _MM_MANTISSA_SIGN_ENUM>(
38809    a: __m128,
38810    b: __m128,
38811) -> __m128 {
38812    unsafe {
38813        static_assert_uimm_bits!(NORM, 4);
38814        static_assert_uimm_bits!(SIGN, 2);
38815        let a = a.as_f32x4();
38816        let b = b.as_f32x4();
38817        let r = vgetmantss(
38818            a,
38819            b,
38820            SIGN << 2 | NORM,
38821            f32x4::ZERO,
38822            0b1,
38823            _MM_FROUND_CUR_DIRECTION,
38824        );
38825        transmute(r)
38826    }
38827}
38828
38829/// Normalize the mantissas of the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
38830/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
38831///    _MM_MANT_NORM_1_2     // interval [1, 2)\
38832///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
38833///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
38834///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
38835/// The sign is determined by sc which can take the following values:\
38836///    _MM_MANT_SIGN_src     // sign = sign(src)\
38837///    _MM_MANT_SIGN_zero    // sign = 0\
38838///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1\
38839/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
38840///
38841/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_getmant_ss&expand=2899)
38842#[inline]
38843#[target_feature(enable = "avx512f")]
38844#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38845#[cfg_attr(test, assert_instr(vgetmantss, NORM = 0, SIGN = 0))]
38846#[rustc_legacy_const_generics(4, 5)]
38847pub fn _mm_mask_getmant_ss<
38848    const NORM: _MM_MANTISSA_NORM_ENUM,
38849    const SIGN: _MM_MANTISSA_SIGN_ENUM,
38850>(
38851    src: __m128,
38852    k: __mmask8,
38853    a: __m128,
38854    b: __m128,
38855) -> __m128 {
38856    unsafe {
38857        static_assert_uimm_bits!(NORM, 4);
38858        static_assert_uimm_bits!(SIGN, 2);
38859        let a = a.as_f32x4();
38860        let b = b.as_f32x4();
38861        let src = src.as_f32x4();
38862        let r = vgetmantss(a, b, SIGN << 2 | NORM, src, k, _MM_FROUND_CUR_DIRECTION);
38863        transmute(r)
38864    }
38865}
38866
38867/// Normalize the mantissas of the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
38868/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
38869///    _MM_MANT_NORM_1_2     // interval [1, 2)\
38870///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
38871///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
38872///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
38873/// The sign is determined by sc which can take the following values:\
38874///    _MM_MANT_SIGN_src     // sign = sign(src)\
38875///    _MM_MANT_SIGN_zero    // sign = 0\
38876///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1\
38877/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
38878///
38879/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_getmant_ss&expand=2900)
38880#[inline]
38881#[target_feature(enable = "avx512f")]
38882#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38883#[cfg_attr(test, assert_instr(vgetmantss, NORM = 0, SIGN = 0))]
38884#[rustc_legacy_const_generics(3, 4)]
38885pub fn _mm_maskz_getmant_ss<
38886    const NORM: _MM_MANTISSA_NORM_ENUM,
38887    const SIGN: _MM_MANTISSA_SIGN_ENUM,
38888>(
38889    k: __mmask8,
38890    a: __m128,
38891    b: __m128,
38892) -> __m128 {
38893    unsafe {
38894        static_assert_uimm_bits!(NORM, 4);
38895        static_assert_uimm_bits!(SIGN, 2);
38896        let a = a.as_f32x4();
38897        let b = b.as_f32x4();
38898        let r = vgetmantss(
38899            a,
38900            b,
38901            SIGN << 2 | NORM,
38902            f32x4::ZERO,
38903            k,
38904            _MM_FROUND_CUR_DIRECTION,
38905        );
38906        transmute(r)
38907    }
38908}
38909
38910/// Normalize the mantissas of the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
38911/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
38912///    _MM_MANT_NORM_1_2     // interval [1, 2)\
38913///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
38914///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
38915///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
38916/// The sign is determined by sc which can take the following values:\
38917///    _MM_MANT_SIGN_src     // sign = sign(src)\
38918///    _MM_MANT_SIGN_zero    // sign = 0\
38919///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1\
38920/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
38921///
38922/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_getmant_sd&expand=2895)
38923#[inline]
38924#[target_feature(enable = "avx512f")]
38925#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38926#[cfg_attr(test, assert_instr(vgetmantsd, NORM = 0, SIGN = 0))]
38927#[rustc_legacy_const_generics(2, 3)]
38928pub fn _mm_getmant_sd<const NORM: _MM_MANTISSA_NORM_ENUM, const SIGN: _MM_MANTISSA_SIGN_ENUM>(
38929    a: __m128d,
38930    b: __m128d,
38931) -> __m128d {
38932    unsafe {
38933        static_assert_uimm_bits!(NORM, 4);
38934        static_assert_uimm_bits!(SIGN, 2);
38935        let a = a.as_f64x2();
38936        let b = b.as_f64x2();
38937        let r = vgetmantsd(
38938            a,
38939            b,
38940            SIGN << 2 | NORM,
38941            f64x2::ZERO,
38942            0b1,
38943            _MM_FROUND_CUR_DIRECTION,
38944        );
38945        transmute(r)
38946    }
38947}
38948
38949/// Normalize the mantissas of the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
38950/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
38951///    _MM_MANT_NORM_1_2     // interval [1, 2)\
38952///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
38953///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
38954///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
38955/// The sign is determined by sc which can take the following values:\
38956///    _MM_MANT_SIGN_src     // sign = sign(src)\
38957///    _MM_MANT_SIGN_zero    // sign = 0\
38958///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1\
38959/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
38960///
38961/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_getmant_sd&expand=2896)
38962#[inline]
38963#[target_feature(enable = "avx512f")]
38964#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
38965#[cfg_attr(test, assert_instr(vgetmantsd, NORM = 0, SIGN = 0))]
38966#[rustc_legacy_const_generics(4, 5)]
38967pub fn _mm_mask_getmant_sd<
38968    const NORM: _MM_MANTISSA_NORM_ENUM,
38969    const SIGN: _MM_MANTISSA_SIGN_ENUM,
38970>(
38971    src: __m128d,
38972    k: __mmask8,
38973    a: __m128d,
38974    b: __m128d,
38975) -> __m128d {
38976    unsafe {
38977        static_assert_uimm_bits!(NORM, 4);
38978        static_assert_uimm_bits!(SIGN, 2);
38979        let a = a.as_f64x2();
38980        let b = b.as_f64x2();
38981        let src = src.as_f64x2();
38982        let r = vgetmantsd(a, b, SIGN << 2 | NORM, src, k, _MM_FROUND_CUR_DIRECTION);
38983        transmute(r)
38984    }
38985}
38986
38987/// Normalize the mantissas of the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
38988/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
38989///    _MM_MANT_NORM_1_2     // interval [1, 2)\
38990///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
38991///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
38992///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
38993/// The sign is determined by sc which can take the following values:\
38994///    _MM_MANT_SIGN_src     // sign = sign(src)\
38995///    _MM_MANT_SIGN_zero    // sign = 0\
38996///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1\
38997/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
38998///
38999/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_getmant_sd&expand=2897)
39000#[inline]
39001#[target_feature(enable = "avx512f")]
39002#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39003#[cfg_attr(test, assert_instr(vgetmantsd, NORM = 0, SIGN = 0))]
39004#[rustc_legacy_const_generics(3, 4)]
39005pub fn _mm_maskz_getmant_sd<
39006    const NORM: _MM_MANTISSA_NORM_ENUM,
39007    const SIGN: _MM_MANTISSA_SIGN_ENUM,
39008>(
39009    k: __mmask8,
39010    a: __m128d,
39011    b: __m128d,
39012) -> __m128d {
39013    unsafe {
39014        static_assert_uimm_bits!(NORM, 4);
39015        static_assert_uimm_bits!(SIGN, 2);
39016        let a = a.as_f64x2();
39017        let b = b.as_f64x2();
39018        let r = vgetmantsd(
39019            a,
39020            b,
39021            SIGN << 2 | NORM,
39022            f64x2::ZERO,
39023            k,
39024            _MM_FROUND_CUR_DIRECTION,
39025        );
39026        transmute(r)
39027    }
39028}
39029
39030/// Round the lower single-precision (32-bit) floating-point element in b to the number of fraction bits specified by imm8, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.\
39031/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
39032/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
39033/// * [`_MM_FROUND_TO_NEG_INF`] : round down
39034/// * [`_MM_FROUND_TO_POS_INF`] : round up
39035/// * [`_MM_FROUND_TO_ZERO`] : truncate
39036/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
39037///
39038/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_roundscale_ss&expand=4802)
39039#[inline]
39040#[target_feature(enable = "avx512f")]
39041#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39042#[cfg_attr(test, assert_instr(vrndscaless, IMM8 = 255))]
39043#[rustc_legacy_const_generics(2)]
39044pub fn _mm_roundscale_ss<const IMM8: i32>(a: __m128, b: __m128) -> __m128 {
39045    unsafe {
39046        static_assert_uimm_bits!(IMM8, 8);
39047        let a = a.as_f32x4();
39048        let b = b.as_f32x4();
39049        let r = vrndscaless(
39050            a,
39051            b,
39052            f32x4::ZERO,
39053            0b11111111,
39054            IMM8,
39055            _MM_FROUND_CUR_DIRECTION,
39056        );
39057        transmute(r)
39058    }
39059}
39060
39061/// Round the lower single-precision (32-bit) floating-point element in b to the number of fraction bits specified by imm8, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
39062/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
39063/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
39064/// * [`_MM_FROUND_TO_NEG_INF`] : round down
39065/// * [`_MM_FROUND_TO_POS_INF`] : round up
39066/// * [`_MM_FROUND_TO_ZERO`] : truncate
39067/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
39068///
39069/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_roundscale_ss&expand=4800)
39070#[inline]
39071#[target_feature(enable = "avx512f")]
39072#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39073#[cfg_attr(test, assert_instr(vrndscaless, IMM8 = 0))]
39074#[rustc_legacy_const_generics(4)]
39075pub fn _mm_mask_roundscale_ss<const IMM8: i32>(
39076    src: __m128,
39077    k: __mmask8,
39078    a: __m128,
39079    b: __m128,
39080) -> __m128 {
39081    unsafe {
39082        static_assert_uimm_bits!(IMM8, 8);
39083        let a = a.as_f32x4();
39084        let b = b.as_f32x4();
39085        let src = src.as_f32x4();
39086        let r = vrndscaless(a, b, src, k, IMM8, _MM_FROUND_CUR_DIRECTION);
39087        transmute(r)
39088    }
39089}
39090
39091/// Round the lower single-precision (32-bit) floating-point element in b to the number of fraction bits specified by imm8, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
39092/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
39093/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
39094/// * [`_MM_FROUND_TO_NEG_INF`] : round down
39095/// * [`_MM_FROUND_TO_POS_INF`] : round up
39096/// * [`_MM_FROUND_TO_ZERO`] : truncate
39097/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
39098///
39099/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_roundscale_ss&expand=4801)
39100#[inline]
39101#[target_feature(enable = "avx512f")]
39102#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39103#[cfg_attr(test, assert_instr(vrndscaless, IMM8 = 0))]
39104#[rustc_legacy_const_generics(3)]
39105pub fn _mm_maskz_roundscale_ss<const IMM8: i32>(k: __mmask8, a: __m128, b: __m128) -> __m128 {
39106    unsafe {
39107        static_assert_uimm_bits!(IMM8, 8);
39108        let a = a.as_f32x4();
39109        let b = b.as_f32x4();
39110        let r = vrndscaless(a, b, f32x4::ZERO, k, IMM8, _MM_FROUND_CUR_DIRECTION);
39111        transmute(r)
39112    }
39113}
39114
39115/// Round the lower double-precision (64-bit) floating-point element in b to the number of fraction bits specified by imm8, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.\
39116/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
39117/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
39118/// * [`_MM_FROUND_TO_NEG_INF`] : round down
39119/// * [`_MM_FROUND_TO_POS_INF`] : round up
39120/// * [`_MM_FROUND_TO_ZERO`] : truncate
39121/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
39122///
39123/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_roundscale_sd&expand=4799)
39124#[inline]
39125#[target_feature(enable = "avx512f")]
39126#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39127#[cfg_attr(test, assert_instr(vrndscalesd, IMM8 = 255))]
39128#[rustc_legacy_const_generics(2)]
39129pub fn _mm_roundscale_sd<const IMM8: i32>(a: __m128d, b: __m128d) -> __m128d {
39130    unsafe {
39131        static_assert_uimm_bits!(IMM8, 8);
39132        let a = a.as_f64x2();
39133        let b = b.as_f64x2();
39134        let r = vrndscalesd(
39135            a,
39136            b,
39137            f64x2::ZERO,
39138            0b11111111,
39139            IMM8,
39140            _MM_FROUND_CUR_DIRECTION,
39141        );
39142        transmute(r)
39143    }
39144}
39145
39146/// Round the lower double-precision (64-bit) floating-point element in b to the number of fraction bits specified by imm8, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
39147/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
39148/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
39149/// * [`_MM_FROUND_TO_NEG_INF`] : round down
39150/// * [`_MM_FROUND_TO_POS_INF`] : round up
39151/// * [`_MM_FROUND_TO_ZERO`] : truncate
39152/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
39153///
39154/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_roundscale_sd&expand=4797)
39155#[inline]
39156#[target_feature(enable = "avx512f")]
39157#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39158#[cfg_attr(test, assert_instr(vrndscalesd, IMM8 = 0))]
39159#[rustc_legacy_const_generics(4)]
39160pub fn _mm_mask_roundscale_sd<const IMM8: i32>(
39161    src: __m128d,
39162    k: __mmask8,
39163    a: __m128d,
39164    b: __m128d,
39165) -> __m128d {
39166    unsafe {
39167        static_assert_uimm_bits!(IMM8, 8);
39168        let a = a.as_f64x2();
39169        let b = b.as_f64x2();
39170        let src = src.as_f64x2();
39171        let r = vrndscalesd(a, b, src, k, IMM8, _MM_FROUND_CUR_DIRECTION);
39172        transmute(r)
39173    }
39174}
39175
39176/// Round the lower double-precision (64-bit) floating-point element in b to the number of fraction bits specified by imm8, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
39177/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
39178/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
39179/// * [`_MM_FROUND_TO_NEG_INF`] : round down
39180/// * [`_MM_FROUND_TO_POS_INF`] : round up
39181/// * [`_MM_FROUND_TO_ZERO`] : truncate
39182/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
39183///
39184/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_roundscale_sd&expand=4798)
39185#[inline]
39186#[target_feature(enable = "avx512f")]
39187#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39188#[cfg_attr(test, assert_instr(vrndscalesd, IMM8 = 0))]
39189#[rustc_legacy_const_generics(3)]
39190pub fn _mm_maskz_roundscale_sd<const IMM8: i32>(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
39191    unsafe {
39192        static_assert_uimm_bits!(IMM8, 8);
39193        let a = a.as_f64x2();
39194        let b = b.as_f64x2();
39195        let r = vrndscalesd(a, b, f64x2::ZERO, k, IMM8, _MM_FROUND_CUR_DIRECTION);
39196        transmute(r)
39197    }
39198}
39199
39200/// Scale the packed single-precision (32-bit) floating-point elements in a using values from b, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.
39201///
39202/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_scalef_ss&expand=4901)
39203#[inline]
39204#[target_feature(enable = "avx512f")]
39205#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39206#[cfg_attr(test, assert_instr(vscalefss))]
39207pub fn _mm_scalef_ss(a: __m128, b: __m128) -> __m128 {
39208    unsafe {
39209        let a = a.as_f32x4();
39210        let b = b.as_f32x4();
39211        transmute(vscalefss(
39212            a,
39213            b,
39214            f32x4::ZERO,
39215            0b11111111,
39216            _MM_FROUND_CUR_DIRECTION,
39217        ))
39218    }
39219}
39220
39221/// Scale the packed single-precision (32-bit) floating-point elements in a using values from b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
39222///
39223/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_scalef_ss&expand=4899)
39224#[inline]
39225#[target_feature(enable = "avx512f")]
39226#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39227#[cfg_attr(test, assert_instr(vscalefss))]
39228pub fn _mm_mask_scalef_ss(src: __m128, k: __mmask8, a: __m128, b: __m128) -> __m128 {
39229    unsafe {
39230        let a = a.as_f32x4();
39231        let b = b.as_f32x4();
39232        let src = src.as_f32x4();
39233        transmute(vscalefss(a, b, src, k, _MM_FROUND_CUR_DIRECTION))
39234    }
39235}
39236
39237/// Scale the packed single-precision (32-bit) floating-point elements in a using values from b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
39238///
39239/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_scalef_ss&expand=4900)
39240#[inline]
39241#[target_feature(enable = "avx512f")]
39242#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39243#[cfg_attr(test, assert_instr(vscalefss))]
39244pub fn _mm_maskz_scalef_ss(k: __mmask8, a: __m128, b: __m128) -> __m128 {
39245    unsafe {
39246        transmute(vscalefss(
39247            a.as_f32x4(),
39248            b.as_f32x4(),
39249            f32x4::ZERO,
39250            k,
39251            _MM_FROUND_CUR_DIRECTION,
39252        ))
39253    }
39254}
39255
39256/// Scale the packed double-precision (64-bit) floating-point elements in a using values from b, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.
39257///
39258/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_scalef_sd&expand=4898)
39259#[inline]
39260#[target_feature(enable = "avx512f")]
39261#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39262#[cfg_attr(test, assert_instr(vscalefsd))]
39263pub fn _mm_scalef_sd(a: __m128d, b: __m128d) -> __m128d {
39264    unsafe {
39265        transmute(vscalefsd(
39266            a.as_f64x2(),
39267            b.as_f64x2(),
39268            f64x2::ZERO,
39269            0b11111111,
39270            _MM_FROUND_CUR_DIRECTION,
39271        ))
39272    }
39273}
39274
39275/// Scale the packed double-precision (64-bit) floating-point elements in a using values from b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
39276///
39277/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_scalef_sd&expand=4896)
39278#[inline]
39279#[target_feature(enable = "avx512f")]
39280#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39281#[cfg_attr(test, assert_instr(vscalefsd))]
39282pub fn _mm_mask_scalef_sd(src: __m128d, k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
39283    unsafe {
39284        transmute(vscalefsd(
39285            a.as_f64x2(),
39286            b.as_f64x2(),
39287            src.as_f64x2(),
39288            k,
39289            _MM_FROUND_CUR_DIRECTION,
39290        ))
39291    }
39292}
39293
39294/// Scale the packed double-precision (64-bit) floating-point elements in a using values from b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
39295///
39296/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_scalef_sd&expand=4897)
39297#[inline]
39298#[target_feature(enable = "avx512f")]
39299#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39300#[cfg_attr(test, assert_instr(vscalefsd))]
39301pub fn _mm_maskz_scalef_sd(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
39302    unsafe {
39303        transmute(vscalefsd(
39304            a.as_f64x2(),
39305            b.as_f64x2(),
39306            f64x2::ZERO,
39307            k,
39308            _MM_FROUND_CUR_DIRECTION,
39309        ))
39310    }
39311}
39312
39313/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and add the intermediate result to the lower element in c. Store the result in the lower element of dst using writemask k (the element is copied from a when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
39314///
39315/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fmadd_ss&expand=2582)
39316#[inline]
39317#[target_feature(enable = "avx512f")]
39318#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39319#[cfg_attr(test, assert_instr(vfmadd))]
39320#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39321pub const fn _mm_mask_fmadd_ss(a: __m128, k: __mmask8, b: __m128, c: __m128) -> __m128 {
39322    unsafe {
39323        let mut fmadd: f32 = simd_extract!(a, 0);
39324        if (k & 0b00000001) != 0 {
39325            let extractb: f32 = simd_extract!(b, 0);
39326            let extractc: f32 = simd_extract!(c, 0);
39327            fmadd = fmaf32(fmadd, extractb, extractc);
39328        }
39329        simd_insert!(a, 0, fmadd)
39330    }
39331}
39332
39333/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and add the intermediate result to the lower element in c. Store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
39334///
39335/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fmadd_ss&expand=2584)
39336#[inline]
39337#[target_feature(enable = "avx512f")]
39338#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39339#[cfg_attr(test, assert_instr(vfmadd))]
39340#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39341pub const fn _mm_maskz_fmadd_ss(k: __mmask8, a: __m128, b: __m128, c: __m128) -> __m128 {
39342    unsafe {
39343        let mut fmadd: f32 = 0.;
39344        if (k & 0b00000001) != 0 {
39345            let extracta: f32 = simd_extract!(a, 0);
39346            let extractb: f32 = simd_extract!(b, 0);
39347            let extractc: f32 = simd_extract!(c, 0);
39348            fmadd = fmaf32(extracta, extractb, extractc);
39349        }
39350        simd_insert!(a, 0, fmadd)
39351    }
39352}
39353
39354/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and add the intermediate result to the lower element in c. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper 3 packed elements from c to the upper elements of dst.
39355///
39356/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask3_fmadd_ss&expand=2583)
39357#[inline]
39358#[target_feature(enable = "avx512f")]
39359#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39360#[cfg_attr(test, assert_instr(vfmadd))]
39361#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39362pub const fn _mm_mask3_fmadd_ss(a: __m128, b: __m128, c: __m128, k: __mmask8) -> __m128 {
39363    unsafe {
39364        let mut fmadd: f32 = simd_extract!(c, 0);
39365        if (k & 0b00000001) != 0 {
39366            let extracta: f32 = simd_extract!(a, 0);
39367            let extractb: f32 = simd_extract!(b, 0);
39368            fmadd = fmaf32(extracta, extractb, fmadd);
39369        }
39370        simd_insert!(c, 0, fmadd)
39371    }
39372}
39373
39374/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and add the intermediate result to the lower element in c. Store the result in the lower element of dst using writemask k (the element is copied from a when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
39375///
39376/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fmadd_sd&expand=2578)
39377#[inline]
39378#[target_feature(enable = "avx512f")]
39379#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39380#[cfg_attr(test, assert_instr(vfmadd))]
39381#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39382pub const fn _mm_mask_fmadd_sd(a: __m128d, k: __mmask8, b: __m128d, c: __m128d) -> __m128d {
39383    unsafe {
39384        let mut fmadd: f64 = simd_extract!(a, 0);
39385        if (k & 0b00000001) != 0 {
39386            let extractb: f64 = simd_extract!(b, 0);
39387            let extractc: f64 = simd_extract!(c, 0);
39388            fmadd = fmaf64(fmadd, extractb, extractc);
39389        }
39390        simd_insert!(a, 0, fmadd)
39391    }
39392}
39393
39394/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and add the intermediate result to the lower element in c. Store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
39395///
39396/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fmadd_sd&expand=2580)
39397#[inline]
39398#[target_feature(enable = "avx512f")]
39399#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39400#[cfg_attr(test, assert_instr(vfmadd))]
39401#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39402pub const fn _mm_maskz_fmadd_sd(k: __mmask8, a: __m128d, b: __m128d, c: __m128d) -> __m128d {
39403    unsafe {
39404        let mut fmadd: f64 = 0.;
39405        if (k & 0b00000001) != 0 {
39406            let extracta: f64 = simd_extract!(a, 0);
39407            let extractb: f64 = simd_extract!(b, 0);
39408            let extractc: f64 = simd_extract!(c, 0);
39409            fmadd = fmaf64(extracta, extractb, extractc);
39410        }
39411        simd_insert!(a, 0, fmadd)
39412    }
39413}
39414
39415/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and add the intermediate result to the lower element in c. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper element from c to the upper element of dst.
39416///
39417/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask3_fmadd_sd&expand=2579)
39418#[inline]
39419#[target_feature(enable = "avx512f")]
39420#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39421#[cfg_attr(test, assert_instr(vfmadd))]
39422#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39423pub const fn _mm_mask3_fmadd_sd(a: __m128d, b: __m128d, c: __m128d, k: __mmask8) -> __m128d {
39424    unsafe {
39425        let mut fmadd: f64 = simd_extract!(c, 0);
39426        if (k & 0b00000001) != 0 {
39427            let extracta: f64 = simd_extract!(a, 0);
39428            let extractb: f64 = simd_extract!(b, 0);
39429            fmadd = fmaf64(extracta, extractb, fmadd);
39430        }
39431        simd_insert!(c, 0, fmadd)
39432    }
39433}
39434
39435/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and subtract the lower element in c from the intermediate result. Store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.
39436///
39437/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fmsub_ss&expand=2668)
39438#[inline]
39439#[target_feature(enable = "avx512f")]
39440#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39441#[cfg_attr(test, assert_instr(vfmsub))]
39442#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39443pub const fn _mm_mask_fmsub_ss(a: __m128, k: __mmask8, b: __m128, c: __m128) -> __m128 {
39444    unsafe {
39445        let mut fmsub: f32 = simd_extract!(a, 0);
39446        if (k & 0b00000001) != 0 {
39447            let extractb: f32 = simd_extract!(b, 0);
39448            let extractc: f32 = simd_extract!(c, 0);
39449            let extractc = -extractc;
39450            fmsub = fmaf32(fmsub, extractb, extractc);
39451        }
39452        simd_insert!(a, 0, fmsub)
39453    }
39454}
39455
39456/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and subtract the lower element in c from the intermediate result. Store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
39457///
39458/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fmsub_ss&expand=2670)
39459#[inline]
39460#[target_feature(enable = "avx512f")]
39461#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39462#[cfg_attr(test, assert_instr(vfmsub))]
39463#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39464pub const fn _mm_maskz_fmsub_ss(k: __mmask8, a: __m128, b: __m128, c: __m128) -> __m128 {
39465    unsafe {
39466        let mut fmsub: f32 = 0.;
39467        if (k & 0b00000001) != 0 {
39468            let extracta: f32 = simd_extract!(a, 0);
39469            let extractb: f32 = simd_extract!(b, 0);
39470            let extractc: f32 = simd_extract!(c, 0);
39471            let extractc = -extractc;
39472            fmsub = fmaf32(extracta, extractb, extractc);
39473        }
39474        simd_insert!(a, 0, fmsub)
39475    }
39476}
39477
39478/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and subtract the lower element in c from the intermediate result. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper 3 packed elements from c to the upper elements of dst.
39479///
39480/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask3_fmsub_ss&expand=2669)
39481#[inline]
39482#[target_feature(enable = "avx512f")]
39483#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39484#[cfg_attr(test, assert_instr(vfmsub))]
39485#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39486pub const fn _mm_mask3_fmsub_ss(a: __m128, b: __m128, c: __m128, k: __mmask8) -> __m128 {
39487    unsafe {
39488        let mut fmsub: f32 = simd_extract!(c, 0);
39489        if (k & 0b00000001) != 0 {
39490            let extracta: f32 = simd_extract!(a, 0);
39491            let extractb: f32 = simd_extract!(b, 0);
39492            let extractc = -fmsub;
39493            fmsub = fmaf32(extracta, extractb, extractc);
39494        }
39495        simd_insert!(c, 0, fmsub)
39496    }
39497}
39498
39499/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and subtract the lower element in c from the intermediate result. Store the result in the lower element of dst using writemask k (the element is copied from a when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
39500///
39501/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fmsub_sd&expand=2664)
39502#[inline]
39503#[target_feature(enable = "avx512f")]
39504#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39505#[cfg_attr(test, assert_instr(vfmsub))]
39506#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39507pub const fn _mm_mask_fmsub_sd(a: __m128d, k: __mmask8, b: __m128d, c: __m128d) -> __m128d {
39508    unsafe {
39509        let mut fmsub: f64 = simd_extract!(a, 0);
39510        if (k & 0b00000001) != 0 {
39511            let extractb: f64 = simd_extract!(b, 0);
39512            let extractc: f64 = simd_extract!(c, 0);
39513            let extractc = -extractc;
39514            fmsub = fmaf64(fmsub, extractb, extractc);
39515        }
39516        simd_insert!(a, 0, fmsub)
39517    }
39518}
39519
39520/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and subtract the lower element in c from the intermediate result. Store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
39521///
39522/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fmsub_sd&expand=2666)
39523#[inline]
39524#[target_feature(enable = "avx512f")]
39525#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39526#[cfg_attr(test, assert_instr(vfmsub))]
39527#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39528pub const fn _mm_maskz_fmsub_sd(k: __mmask8, a: __m128d, b: __m128d, c: __m128d) -> __m128d {
39529    unsafe {
39530        let mut fmsub: f64 = 0.;
39531        if (k & 0b00000001) != 0 {
39532            let extracta: f64 = simd_extract!(a, 0);
39533            let extractb: f64 = simd_extract!(b, 0);
39534            let extractc: f64 = simd_extract!(c, 0);
39535            let extractc = -extractc;
39536            fmsub = fmaf64(extracta, extractb, extractc);
39537        }
39538        simd_insert!(a, 0, fmsub)
39539    }
39540}
39541
39542/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and subtract the lower element in c from the intermediate result. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper element from c to the upper element of dst.
39543///
39544/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask3_fmsub_sd&expand=2665)
39545#[inline]
39546#[target_feature(enable = "avx512f")]
39547#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39548#[cfg_attr(test, assert_instr(vfmsub))]
39549#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39550pub const fn _mm_mask3_fmsub_sd(a: __m128d, b: __m128d, c: __m128d, k: __mmask8) -> __m128d {
39551    unsafe {
39552        let mut fmsub: f64 = simd_extract!(c, 0);
39553        if (k & 0b00000001) != 0 {
39554            let extracta: f64 = simd_extract!(a, 0);
39555            let extractb: f64 = simd_extract!(b, 0);
39556            let extractc = -fmsub;
39557            fmsub = fmaf64(extracta, extractb, extractc);
39558        }
39559        simd_insert!(c, 0, fmsub)
39560    }
39561}
39562
39563/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and add the negated intermediate result to the lower element in c. Store the result in the lower element of dst using writemask k (the element is copied from a when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
39564///
39565/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fnmadd_ss&expand=2748)
39566#[inline]
39567#[target_feature(enable = "avx512f")]
39568#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39569#[cfg_attr(test, assert_instr(vfnmadd))]
39570#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39571pub const fn _mm_mask_fnmadd_ss(a: __m128, k: __mmask8, b: __m128, c: __m128) -> __m128 {
39572    unsafe {
39573        let mut fnmadd: f32 = simd_extract!(a, 0);
39574        if (k & 0b00000001) != 0 {
39575            let extracta = -fnmadd;
39576            let extractb: f32 = simd_extract!(b, 0);
39577            let extractc: f32 = simd_extract!(c, 0);
39578            fnmadd = fmaf32(extracta, extractb, extractc);
39579        }
39580        simd_insert!(a, 0, fnmadd)
39581    }
39582}
39583
39584/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and add the negated intermediate result to the lower element in c. Store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
39585///
39586/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fnmadd_ss&expand=2750)
39587#[inline]
39588#[target_feature(enable = "avx512f")]
39589#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39590#[cfg_attr(test, assert_instr(vfnmadd))]
39591#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39592pub const fn _mm_maskz_fnmadd_ss(k: __mmask8, a: __m128, b: __m128, c: __m128) -> __m128 {
39593    unsafe {
39594        let mut fnmadd: f32 = 0.;
39595        if (k & 0b00000001) != 0 {
39596            let extracta: f32 = simd_extract!(a, 0);
39597            let extracta = -extracta;
39598            let extractb: f32 = simd_extract!(b, 0);
39599            let extractc: f32 = simd_extract!(c, 0);
39600            fnmadd = fmaf32(extracta, extractb, extractc);
39601        }
39602        simd_insert!(a, 0, fnmadd)
39603    }
39604}
39605
39606/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and add the negated intermediate result to the lower element in c. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper 3 packed elements from c to the upper elements of dst.
39607///
39608/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask3_fnmadd_ss&expand=2749)
39609#[inline]
39610#[target_feature(enable = "avx512f")]
39611#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39612#[cfg_attr(test, assert_instr(vfnmadd))]
39613#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39614pub const fn _mm_mask3_fnmadd_ss(a: __m128, b: __m128, c: __m128, k: __mmask8) -> __m128 {
39615    unsafe {
39616        let mut fnmadd: f32 = simd_extract!(c, 0);
39617        if (k & 0b00000001) != 0 {
39618            let extracta: f32 = simd_extract!(a, 0);
39619            let extracta = -extracta;
39620            let extractb: f32 = simd_extract!(b, 0);
39621            fnmadd = fmaf32(extracta, extractb, fnmadd);
39622        }
39623        simd_insert!(c, 0, fnmadd)
39624    }
39625}
39626
39627/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and add the negated intermediate result to the lower element in c. Store the result in the lower element of dst using writemask k (the element is copied from a when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
39628///
39629/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fnmadd_sd&expand=2744)
39630#[inline]
39631#[target_feature(enable = "avx512f")]
39632#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39633#[cfg_attr(test, assert_instr(vfnmadd))]
39634#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39635pub const fn _mm_mask_fnmadd_sd(a: __m128d, k: __mmask8, b: __m128d, c: __m128d) -> __m128d {
39636    unsafe {
39637        let mut fnmadd: f64 = simd_extract!(a, 0);
39638        if (k & 0b00000001) != 0 {
39639            let extracta = -fnmadd;
39640            let extractb: f64 = simd_extract!(b, 0);
39641            let extractc: f64 = simd_extract!(c, 0);
39642            fnmadd = fmaf64(extracta, extractb, extractc);
39643        }
39644        simd_insert!(a, 0, fnmadd)
39645    }
39646}
39647
39648/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and add the negated intermediate result to the lower element in c. Store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
39649///
39650/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fnmadd_sd&expand=2746)
39651#[inline]
39652#[target_feature(enable = "avx512f")]
39653#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39654#[cfg_attr(test, assert_instr(vfnmadd))]
39655#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39656pub const fn _mm_maskz_fnmadd_sd(k: __mmask8, a: __m128d, b: __m128d, c: __m128d) -> __m128d {
39657    unsafe {
39658        let mut fnmadd: f64 = 0.;
39659        if (k & 0b00000001) != 0 {
39660            let extracta: f64 = simd_extract!(a, 0);
39661            let extracta = -extracta;
39662            let extractb: f64 = simd_extract!(b, 0);
39663            let extractc: f64 = simd_extract!(c, 0);
39664            fnmadd = fmaf64(extracta, extractb, extractc);
39665        }
39666        simd_insert!(a, 0, fnmadd)
39667    }
39668}
39669
39670/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and add the negated intermediate result to the lower element in c. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper element from c to the upper element of dst.
39671///
39672/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask3_fnmadd_sd&expand=2745)
39673#[inline]
39674#[target_feature(enable = "avx512f")]
39675#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39676#[cfg_attr(test, assert_instr(vfnmadd))]
39677#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39678pub const fn _mm_mask3_fnmadd_sd(a: __m128d, b: __m128d, c: __m128d, k: __mmask8) -> __m128d {
39679    unsafe {
39680        let mut fnmadd: f64 = simd_extract!(c, 0);
39681        if (k & 0b00000001) != 0 {
39682            let extracta: f64 = simd_extract!(a, 0);
39683            let extracta = -extracta;
39684            let extractb: f64 = simd_extract!(b, 0);
39685            fnmadd = fmaf64(extracta, extractb, fnmadd);
39686        }
39687        simd_insert!(c, 0, fnmadd)
39688    }
39689}
39690
39691/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and subtract the lower element in c from the negated intermediate result. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
39692///
39693/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fnmsub_ss&expand=2796)
39694#[inline]
39695#[target_feature(enable = "avx512f")]
39696#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39697#[cfg_attr(test, assert_instr(vfnmsub))]
39698#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39699pub const fn _mm_mask_fnmsub_ss(a: __m128, k: __mmask8, b: __m128, c: __m128) -> __m128 {
39700    unsafe {
39701        let mut fnmsub: f32 = simd_extract!(a, 0);
39702        if (k & 0b00000001) != 0 {
39703            let extracta = -fnmsub;
39704            let extractb: f32 = simd_extract!(b, 0);
39705            let extractc: f32 = simd_extract!(c, 0);
39706            let extractc = -extractc;
39707            fnmsub = fmaf32(extracta, extractb, extractc);
39708        }
39709        simd_insert!(a, 0, fnmsub)
39710    }
39711}
39712
39713/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and subtract the lower element in c from the negated intermediate result. Store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
39714///
39715/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fnmsub_ss&expand=2798)
39716#[inline]
39717#[target_feature(enable = "avx512f")]
39718#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39719#[cfg_attr(test, assert_instr(vfnmsub))]
39720#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39721pub const fn _mm_maskz_fnmsub_ss(k: __mmask8, a: __m128, b: __m128, c: __m128) -> __m128 {
39722    unsafe {
39723        let mut fnmsub: f32 = 0.;
39724        if (k & 0b00000001) != 0 {
39725            let extracta: f32 = simd_extract!(a, 0);
39726            let extracta = -extracta;
39727            let extractb: f32 = simd_extract!(b, 0);
39728            let extractc: f32 = simd_extract!(c, 0);
39729            let extractc = -extractc;
39730            fnmsub = fmaf32(extracta, extractb, extractc);
39731        }
39732        simd_insert!(a, 0, fnmsub)
39733    }
39734}
39735
39736/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and subtract the lower element in c from the negated intermediate result. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper 3 packed elements from c to the upper elements of dst.
39737///
39738/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask3_fnmsub_ss&expand=2797)
39739#[inline]
39740#[target_feature(enable = "avx512f")]
39741#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39742#[cfg_attr(test, assert_instr(vfnmsub))]
39743#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39744pub const fn _mm_mask3_fnmsub_ss(a: __m128, b: __m128, c: __m128, k: __mmask8) -> __m128 {
39745    unsafe {
39746        let mut fnmsub: f32 = simd_extract!(c, 0);
39747        if (k & 0b00000001) != 0 {
39748            let extracta: f32 = simd_extract!(a, 0);
39749            let extracta = -extracta;
39750            let extractb: f32 = simd_extract!(b, 0);
39751            let extractc = -fnmsub;
39752            fnmsub = fmaf32(extracta, extractb, extractc);
39753        }
39754        simd_insert!(c, 0, fnmsub)
39755    }
39756}
39757
39758/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and subtract the lower element in c from the negated intermediate result. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
39759///
39760/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fnmsub_sd&expand=2792)
39761#[inline]
39762#[target_feature(enable = "avx512f")]
39763#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39764#[cfg_attr(test, assert_instr(vfnmsub))]
39765#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39766pub const fn _mm_mask_fnmsub_sd(a: __m128d, k: __mmask8, b: __m128d, c: __m128d) -> __m128d {
39767    unsafe {
39768        let mut fnmsub: f64 = simd_extract!(a, 0);
39769        if (k & 0b00000001) != 0 {
39770            let extracta = -fnmsub;
39771            let extractb: f64 = simd_extract!(b, 0);
39772            let extractc: f64 = simd_extract!(c, 0);
39773            let extractc = -extractc;
39774            fnmsub = fmaf64(extracta, extractb, extractc);
39775        }
39776        simd_insert!(a, 0, fnmsub)
39777    }
39778}
39779
39780/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and subtract the lower element in c from the negated intermediate result. Store the result in dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
39781///
39782/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fnmsub_sd&expand=2794)
39783#[inline]
39784#[target_feature(enable = "avx512f")]
39785#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39786#[cfg_attr(test, assert_instr(vfnmsub))]
39787#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39788pub const fn _mm_maskz_fnmsub_sd(k: __mmask8, a: __m128d, b: __m128d, c: __m128d) -> __m128d {
39789    unsafe {
39790        let mut fnmsub: f64 = 0.;
39791        if (k & 0b00000001) != 0 {
39792            let extracta: f64 = simd_extract!(a, 0);
39793            let extracta = -extracta;
39794            let extractb: f64 = simd_extract!(b, 0);
39795            let extractc: f64 = simd_extract!(c, 0);
39796            let extractc = -extractc;
39797            fnmsub = fmaf64(extracta, extractb, extractc);
39798        }
39799        simd_insert!(a, 0, fnmsub)
39800    }
39801}
39802
39803/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and subtract the lower element in c from the negated intermediate result. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper element from c to the upper element of dst.
39804///
39805/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask3_fnmsub_sd&expand=2793)
39806#[inline]
39807#[target_feature(enable = "avx512f")]
39808#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39809#[cfg_attr(test, assert_instr(vfnmsub))]
39810#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
39811pub const fn _mm_mask3_fnmsub_sd(a: __m128d, b: __m128d, c: __m128d, k: __mmask8) -> __m128d {
39812    unsafe {
39813        let mut fnmsub: f64 = simd_extract!(c, 0);
39814        if (k & 0b00000001) != 0 {
39815            let extracta: f64 = simd_extract!(a, 0);
39816            let extracta = -extracta;
39817            let extractb: f64 = simd_extract!(b, 0);
39818            let extractc = -fnmsub;
39819            fnmsub = fmaf64(extracta, extractb, extractc);
39820        }
39821        simd_insert!(c, 0, fnmsub)
39822    }
39823}
39824
39825/// Add the lower single-precision (32-bit) floating-point element in a and b, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.\
39826///
39827/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
39828/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
39829/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
39830/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
39831/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
39832/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
39833///
39834/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_round_ss&expand=151)
39835#[inline]
39836#[target_feature(enable = "avx512f")]
39837#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39838#[cfg_attr(test, assert_instr(vaddss, ROUNDING = 8))]
39839#[rustc_legacy_const_generics(2)]
39840pub fn _mm_add_round_ss<const ROUNDING: i32>(a: __m128, b: __m128) -> __m128 {
39841    unsafe {
39842        static_assert_rounding!(ROUNDING);
39843        let a = a.as_f32x4();
39844        let b = b.as_f32x4();
39845        let r = vaddss(a, b, f32x4::ZERO, 0b1, ROUNDING);
39846        transmute(r)
39847    }
39848}
39849
39850/// Add the lower single-precision (32-bit) floating-point element in a and b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
39851///
39852/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
39853/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
39854/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
39855/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
39856/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
39857/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
39858///
39859/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_add_round_ss&expand=152)
39860#[inline]
39861#[target_feature(enable = "avx512f")]
39862#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39863#[cfg_attr(test, assert_instr(vaddss, ROUNDING = 8))]
39864#[rustc_legacy_const_generics(4)]
39865pub fn _mm_mask_add_round_ss<const ROUNDING: i32>(
39866    src: __m128,
39867    k: __mmask8,
39868    a: __m128,
39869    b: __m128,
39870) -> __m128 {
39871    unsafe {
39872        static_assert_rounding!(ROUNDING);
39873        let a = a.as_f32x4();
39874        let b = b.as_f32x4();
39875        let src = src.as_f32x4();
39876        let r = vaddss(a, b, src, k, ROUNDING);
39877        transmute(r)
39878    }
39879}
39880
39881/// Add the lower single-precision (32-bit) floating-point element in a and b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
39882///
39883/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
39884/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
39885/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
39886/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
39887/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
39888/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
39889///
39890/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_add_round_ss&expand=153)
39891#[inline]
39892#[target_feature(enable = "avx512f")]
39893#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39894#[cfg_attr(test, assert_instr(vaddss, ROUNDING = 8))]
39895#[rustc_legacy_const_generics(3)]
39896pub fn _mm_maskz_add_round_ss<const ROUNDING: i32>(k: __mmask8, a: __m128, b: __m128) -> __m128 {
39897    unsafe {
39898        static_assert_rounding!(ROUNDING);
39899        let a = a.as_f32x4();
39900        let b = b.as_f32x4();
39901        let r = vaddss(a, b, f32x4::ZERO, k, ROUNDING);
39902        transmute(r)
39903    }
39904}
39905
39906/// Add the lower double-precision (64-bit) floating-point element in a and b, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.\
39907///
39908/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
39909/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
39910/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
39911/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
39912/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
39913/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
39914///
39915/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_round_sd&expand=148)
39916#[inline]
39917#[target_feature(enable = "avx512f")]
39918#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39919#[cfg_attr(test, assert_instr(vaddsd, ROUNDING = 8))]
39920#[rustc_legacy_const_generics(2)]
39921pub fn _mm_add_round_sd<const ROUNDING: i32>(a: __m128d, b: __m128d) -> __m128d {
39922    unsafe {
39923        static_assert_rounding!(ROUNDING);
39924        let a = a.as_f64x2();
39925        let b = b.as_f64x2();
39926        let r = vaddsd(a, b, f64x2::ZERO, 0b1, ROUNDING);
39927        transmute(r)
39928    }
39929}
39930
39931/// Add the lower double-precision (64-bit) floating-point element in a and b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
39932///
39933/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
39934/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
39935/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
39936/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
39937/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
39938/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
39939///
39940/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_add_round_sd&expand=149)
39941#[inline]
39942#[target_feature(enable = "avx512f")]
39943#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39944#[cfg_attr(test, assert_instr(vaddsd, ROUNDING = 8))]
39945#[rustc_legacy_const_generics(4)]
39946pub fn _mm_mask_add_round_sd<const ROUNDING: i32>(
39947    src: __m128d,
39948    k: __mmask8,
39949    a: __m128d,
39950    b: __m128d,
39951) -> __m128d {
39952    unsafe {
39953        static_assert_rounding!(ROUNDING);
39954        let a = a.as_f64x2();
39955        let b = b.as_f64x2();
39956        let src = src.as_f64x2();
39957        let r = vaddsd(a, b, src, k, ROUNDING);
39958        transmute(r)
39959    }
39960}
39961
39962/// Add the lower double-precision (64-bit) floating-point element in a and b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
39963///
39964/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
39965/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
39966/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
39967/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
39968/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
39969/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
39970///
39971/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_add_round_sd&expand=150)
39972#[inline]
39973#[target_feature(enable = "avx512f")]
39974#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
39975#[cfg_attr(test, assert_instr(vaddsd, ROUNDING = 8))]
39976#[rustc_legacy_const_generics(3)]
39977pub fn _mm_maskz_add_round_sd<const ROUNDING: i32>(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
39978    unsafe {
39979        static_assert_rounding!(ROUNDING);
39980        let a = a.as_f64x2();
39981        let b = b.as_f64x2();
39982        let r = vaddsd(a, b, f64x2::ZERO, k, ROUNDING);
39983        transmute(r)
39984    }
39985}
39986
39987/// Subtract the lower single-precision (32-bit) floating-point element in b from the lower single-precision (32-bit) floating-point element in a, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.\
39988///
39989/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
39990/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
39991/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
39992/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
39993/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
39994/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
39995///
39996/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_sub_round_ss&expand=5745)
39997#[inline]
39998#[target_feature(enable = "avx512f")]
39999#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40000#[cfg_attr(test, assert_instr(vsubss, ROUNDING = 8))]
40001#[rustc_legacy_const_generics(2)]
40002pub fn _mm_sub_round_ss<const ROUNDING: i32>(a: __m128, b: __m128) -> __m128 {
40003    unsafe {
40004        static_assert_rounding!(ROUNDING);
40005        let a = a.as_f32x4();
40006        let b = b.as_f32x4();
40007        let r = vsubss(a, b, f32x4::ZERO, 0b1, ROUNDING);
40008        transmute(r)
40009    }
40010}
40011
40012/// Subtract the lower single-precision (32-bit) floating-point element in b from the lower single-precision (32-bit) floating-point element in a, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
40013///
40014/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40015/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40016/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40017/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40018/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40019/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40020///
40021/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_sub_round_ss&expand=5743)
40022#[inline]
40023#[target_feature(enable = "avx512f")]
40024#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40025#[cfg_attr(test, assert_instr(vsubss, ROUNDING = 8))]
40026#[rustc_legacy_const_generics(4)]
40027pub fn _mm_mask_sub_round_ss<const ROUNDING: i32>(
40028    src: __m128,
40029    k: __mmask8,
40030    a: __m128,
40031    b: __m128,
40032) -> __m128 {
40033    unsafe {
40034        static_assert_rounding!(ROUNDING);
40035        let a = a.as_f32x4();
40036        let b = b.as_f32x4();
40037        let src = src.as_f32x4();
40038        let r = vsubss(a, b, src, k, ROUNDING);
40039        transmute(r)
40040    }
40041}
40042
40043/// Subtract the lower single-precision (32-bit) floating-point element in b from the lower single-precision (32-bit) floating-point element in a, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
40044///
40045/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40046/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40047/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40048/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40049/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40050/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40051///
40052/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_sub_round_ss&expand=5744)
40053#[inline]
40054#[target_feature(enable = "avx512f")]
40055#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40056#[cfg_attr(test, assert_instr(vsubss, ROUNDING = 8))]
40057#[rustc_legacy_const_generics(3)]
40058pub fn _mm_maskz_sub_round_ss<const ROUNDING: i32>(k: __mmask8, a: __m128, b: __m128) -> __m128 {
40059    unsafe {
40060        static_assert_rounding!(ROUNDING);
40061        let a = a.as_f32x4();
40062        let b = b.as_f32x4();
40063        let r = vsubss(a, b, f32x4::ZERO, k, ROUNDING);
40064        transmute(r)
40065    }
40066}
40067
40068/// Subtract the lower double-precision (64-bit) floating-point element in b from the lower double-precision (64-bit) floating-point element in a, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.\
40069///
40070/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40071/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40072/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40073/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40074/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40075/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40076///
40077/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_sub_round_sd&expand=5742)
40078#[inline]
40079#[target_feature(enable = "avx512f")]
40080#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40081#[cfg_attr(test, assert_instr(vsubsd, ROUNDING = 8))]
40082#[rustc_legacy_const_generics(2)]
40083pub fn _mm_sub_round_sd<const ROUNDING: i32>(a: __m128d, b: __m128d) -> __m128d {
40084    unsafe {
40085        static_assert_rounding!(ROUNDING);
40086        let a = a.as_f64x2();
40087        let b = b.as_f64x2();
40088        let r = vsubsd(a, b, f64x2::ZERO, 0b1, ROUNDING);
40089        transmute(r)
40090    }
40091}
40092
40093/// Subtract the lower double-precision (64-bit) floating-point element in b from the lower double-precision (64-bit) floating-point element in a, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
40094///
40095/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40096/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40097/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40098/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40099/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40100/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40101///
40102/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_sub_round_sd&expand=5740)
40103#[inline]
40104#[target_feature(enable = "avx512f")]
40105#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40106#[cfg_attr(test, assert_instr(vsubsd, ROUNDING = 8))]
40107#[rustc_legacy_const_generics(4)]
40108pub fn _mm_mask_sub_round_sd<const ROUNDING: i32>(
40109    src: __m128d,
40110    k: __mmask8,
40111    a: __m128d,
40112    b: __m128d,
40113) -> __m128d {
40114    unsafe {
40115        static_assert_rounding!(ROUNDING);
40116        let a = a.as_f64x2();
40117        let b = b.as_f64x2();
40118        let src = src.as_f64x2();
40119        let r = vsubsd(a, b, src, k, ROUNDING);
40120        transmute(r)
40121    }
40122}
40123
40124/// Subtract the lower double-precision (64-bit) floating-point element in b from the lower double-precision (64-bit) floating-point element in a, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
40125///
40126/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40127/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40128/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40129/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40130/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40131/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40132///
40133/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_sub_round_sd&expand=5741)
40134#[inline]
40135#[target_feature(enable = "avx512f")]
40136#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40137#[cfg_attr(test, assert_instr(vsubsd, ROUNDING = 8))]
40138#[rustc_legacy_const_generics(3)]
40139pub fn _mm_maskz_sub_round_sd<const ROUNDING: i32>(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
40140    unsafe {
40141        static_assert_rounding!(ROUNDING);
40142        let a = a.as_f64x2();
40143        let b = b.as_f64x2();
40144        let r = vsubsd(a, b, f64x2::ZERO, k, ROUNDING);
40145        transmute(r)
40146    }
40147}
40148
40149/// Multiply the lower single-precision (32-bit) floating-point element in a and b, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.\
40150///
40151/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40152/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40153/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40154/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40155/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40156/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40157///
40158/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mul_round_ss&expand=3946)
40159#[inline]
40160#[target_feature(enable = "avx512f")]
40161#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40162#[cfg_attr(test, assert_instr(vmulss, ROUNDING = 8))]
40163#[rustc_legacy_const_generics(2)]
40164pub fn _mm_mul_round_ss<const ROUNDING: i32>(a: __m128, b: __m128) -> __m128 {
40165    unsafe {
40166        static_assert_rounding!(ROUNDING);
40167        let a = a.as_f32x4();
40168        let b = b.as_f32x4();
40169        let r = vmulss(a, b, f32x4::ZERO, 0b1, ROUNDING);
40170        transmute(r)
40171    }
40172}
40173
40174/// Multiply the lower single-precision (32-bit) floating-point element in a and b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
40175///
40176/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40177/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40178/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40179/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40180/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40181/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40182///
40183/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_mul_round_ss&expand=3944)
40184#[inline]
40185#[target_feature(enable = "avx512f")]
40186#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40187#[cfg_attr(test, assert_instr(vmulss, ROUNDING = 8))]
40188#[rustc_legacy_const_generics(4)]
40189pub fn _mm_mask_mul_round_ss<const ROUNDING: i32>(
40190    src: __m128,
40191    k: __mmask8,
40192    a: __m128,
40193    b: __m128,
40194) -> __m128 {
40195    unsafe {
40196        static_assert_rounding!(ROUNDING);
40197        let a = a.as_f32x4();
40198        let b = b.as_f32x4();
40199        let src = src.as_f32x4();
40200        let r = vmulss(a, b, src, k, ROUNDING);
40201        transmute(r)
40202    }
40203}
40204
40205/// Multiply the lower single-precision (32-bit) floating-point element in a and b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
40206///
40207/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40208/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40209/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40210/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40211/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40212/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40213///
40214/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_mul_round_ss&expand=3945)
40215#[inline]
40216#[target_feature(enable = "avx512f")]
40217#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40218#[cfg_attr(test, assert_instr(vmulss, ROUNDING = 8))]
40219#[rustc_legacy_const_generics(3)]
40220pub fn _mm_maskz_mul_round_ss<const ROUNDING: i32>(k: __mmask8, a: __m128, b: __m128) -> __m128 {
40221    unsafe {
40222        static_assert_rounding!(ROUNDING);
40223        let a = a.as_f32x4();
40224        let b = b.as_f32x4();
40225        let r = vmulss(a, b, f32x4::ZERO, k, ROUNDING);
40226        transmute(r)
40227    }
40228}
40229
40230/// Multiply the lower double-precision (64-bit) floating-point element in a and b, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.\
40231///
40232/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40233/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40234/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40235/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40236/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40237/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40238///
40239/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mul_round_sd&expand=3943)
40240#[inline]
40241#[target_feature(enable = "avx512f")]
40242#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40243#[cfg_attr(test, assert_instr(vmulsd, ROUNDING = 8))]
40244#[rustc_legacy_const_generics(2)]
40245pub fn _mm_mul_round_sd<const ROUNDING: i32>(a: __m128d, b: __m128d) -> __m128d {
40246    unsafe {
40247        static_assert_rounding!(ROUNDING);
40248        let a = a.as_f64x2();
40249        let b = b.as_f64x2();
40250        let r = vmulsd(a, b, f64x2::ZERO, 0b1, ROUNDING);
40251        transmute(r)
40252    }
40253}
40254
40255/// Multiply the lower double-precision (64-bit) floating-point element in a and b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
40256///
40257/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40258/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40259/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40260/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40261/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40262/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40263///
40264/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_mul_round_sd&expand=3941)
40265#[inline]
40266#[target_feature(enable = "avx512f")]
40267#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40268#[cfg_attr(test, assert_instr(vmulsd, ROUNDING = 8))]
40269#[rustc_legacy_const_generics(4)]
40270pub fn _mm_mask_mul_round_sd<const ROUNDING: i32>(
40271    src: __m128d,
40272    k: __mmask8,
40273    a: __m128d,
40274    b: __m128d,
40275) -> __m128d {
40276    unsafe {
40277        static_assert_rounding!(ROUNDING);
40278        let a = a.as_f64x2();
40279        let b = b.as_f64x2();
40280        let src = src.as_f64x2();
40281        let r = vmulsd(a, b, src, k, ROUNDING);
40282        transmute(r)
40283    }
40284}
40285
40286/// Multiply the lower double-precision (64-bit) floating-point element in a and b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
40287///
40288/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40289/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40290/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40291/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40292/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40293/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40294///
40295/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_mul_round_sd&expand=3942)
40296#[inline]
40297#[target_feature(enable = "avx512f")]
40298#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40299#[cfg_attr(test, assert_instr(vmulsd, ROUNDING = 8))]
40300#[rustc_legacy_const_generics(3)]
40301pub fn _mm_maskz_mul_round_sd<const ROUNDING: i32>(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
40302    unsafe {
40303        static_assert_rounding!(ROUNDING);
40304        let a = a.as_f64x2();
40305        let b = b.as_f64x2();
40306        let r = vmulsd(a, b, f64x2::ZERO, k, ROUNDING);
40307        transmute(r)
40308    }
40309}
40310
40311/// Divide the lower single-precision (32-bit) floating-point element in a by the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.\
40312///
40313/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40314/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40315/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40316/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40317/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40318/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40319///
40320/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_div_round_ss&expand=2174)
40321#[inline]
40322#[target_feature(enable = "avx512f")]
40323#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40324#[cfg_attr(test, assert_instr(vdivss, ROUNDING = 8))]
40325#[rustc_legacy_const_generics(2)]
40326pub fn _mm_div_round_ss<const ROUNDING: i32>(a: __m128, b: __m128) -> __m128 {
40327    unsafe {
40328        static_assert_rounding!(ROUNDING);
40329        let a = a.as_f32x4();
40330        let b = b.as_f32x4();
40331        let r = vdivss(a, b, f32x4::ZERO, 0b1, ROUNDING);
40332        transmute(r)
40333    }
40334}
40335
40336/// Divide the lower single-precision (32-bit) floating-point element in a by the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
40337///
40338/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40339/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40340/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40341/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40342/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40343/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40344///
40345/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_div_round_ss&expand=2175)
40346#[inline]
40347#[target_feature(enable = "avx512f")]
40348#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40349#[cfg_attr(test, assert_instr(vdivss, ROUNDING = 8))]
40350#[rustc_legacy_const_generics(4)]
40351pub fn _mm_mask_div_round_ss<const ROUNDING: i32>(
40352    src: __m128,
40353    k: __mmask8,
40354    a: __m128,
40355    b: __m128,
40356) -> __m128 {
40357    unsafe {
40358        static_assert_rounding!(ROUNDING);
40359        let a = a.as_f32x4();
40360        let b = b.as_f32x4();
40361        let src = src.as_f32x4();
40362        let r = vdivss(a, b, src, k, ROUNDING);
40363        transmute(r)
40364    }
40365}
40366
40367/// Divide the lower single-precision (32-bit) floating-point element in a by the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
40368///
40369/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40370/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40371/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40372/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40373/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40374/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40375///
40376/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_div_round_ss&expand=2176)
40377#[inline]
40378#[target_feature(enable = "avx512f")]
40379#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40380#[cfg_attr(test, assert_instr(vdivss, ROUNDING = 8))]
40381#[rustc_legacy_const_generics(3)]
40382pub fn _mm_maskz_div_round_ss<const ROUNDING: i32>(k: __mmask8, a: __m128, b: __m128) -> __m128 {
40383    unsafe {
40384        static_assert_rounding!(ROUNDING);
40385        let a = a.as_f32x4();
40386        let b = b.as_f32x4();
40387        let r = vdivss(a, b, f32x4::ZERO, k, ROUNDING);
40388        transmute(r)
40389    }
40390}
40391
40392/// Divide the lower double-precision (64-bit) floating-point element in a by the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.\
40393///
40394/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40395/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40396/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40397/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40398/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40399/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40400///
40401/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_div_round_sd&expand=2171)
40402#[inline]
40403#[target_feature(enable = "avx512f")]
40404#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40405#[cfg_attr(test, assert_instr(vdivsd, ROUNDING = 8))]
40406#[rustc_legacy_const_generics(2)]
40407pub fn _mm_div_round_sd<const ROUNDING: i32>(a: __m128d, b: __m128d) -> __m128d {
40408    unsafe {
40409        static_assert_rounding!(ROUNDING);
40410        let a = a.as_f64x2();
40411        let b = b.as_f64x2();
40412        let r = vdivsd(a, b, f64x2::ZERO, 0b1, ROUNDING);
40413        transmute(r)
40414    }
40415}
40416
40417/// Divide the lower double-precision (64-bit) floating-point element in a by the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
40418///
40419/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40420/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40421/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40422/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40423/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40424/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40425///
40426/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_div_round_sd&expand=2172)
40427#[inline]
40428#[target_feature(enable = "avx512f")]
40429#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40430#[cfg_attr(test, assert_instr(vdivsd, ROUNDING = 8))]
40431#[rustc_legacy_const_generics(4)]
40432pub fn _mm_mask_div_round_sd<const ROUNDING: i32>(
40433    src: __m128d,
40434    k: __mmask8,
40435    a: __m128d,
40436    b: __m128d,
40437) -> __m128d {
40438    unsafe {
40439        static_assert_rounding!(ROUNDING);
40440        let a = a.as_f64x2();
40441        let b = b.as_f64x2();
40442        let src = src.as_f64x2();
40443        let r = vdivsd(a, b, src, k, ROUNDING);
40444        transmute(r)
40445    }
40446}
40447
40448/// Divide the lower double-precision (64-bit) floating-point element in a by the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
40449///
40450/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40451/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40452/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40453/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40454/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40455/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40456///
40457/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_div_round_sd&expand=2173)
40458#[inline]
40459#[target_feature(enable = "avx512f")]
40460#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40461#[cfg_attr(test, assert_instr(vdivsd, ROUNDING = 8))]
40462#[rustc_legacy_const_generics(3)]
40463pub fn _mm_maskz_div_round_sd<const ROUNDING: i32>(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
40464    unsafe {
40465        static_assert_rounding!(ROUNDING);
40466        let a = a.as_f64x2();
40467        let b = b.as_f64x2();
40468        let r = vdivsd(a, b, f64x2::ZERO, k, ROUNDING);
40469        transmute(r)
40470    }
40471}
40472
40473/// Compare the lower single-precision (32-bit) floating-point elements in a and b, store the maximum value in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.\
40474/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
40475///
40476/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_max_round_ss&expand=3668)
40477#[inline]
40478#[target_feature(enable = "avx512f")]
40479#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40480#[cfg_attr(test, assert_instr(vmaxss, SAE = 8))]
40481#[rustc_legacy_const_generics(2)]
40482pub fn _mm_max_round_ss<const SAE: i32>(a: __m128, b: __m128) -> __m128 {
40483    unsafe {
40484        static_assert_sae!(SAE);
40485        let a = a.as_f32x4();
40486        let b = b.as_f32x4();
40487        let r = vmaxss(a, b, f32x4::ZERO, 0b1, SAE);
40488        transmute(r)
40489    }
40490}
40491
40492/// Compare the lower single-precision (32-bit) floating-point elements in a and b, store the maximum value in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
40493/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
40494///
40495/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mask_max_round_ss&expand=3672)
40496#[inline]
40497#[target_feature(enable = "avx512f")]
40498#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40499#[cfg_attr(test, assert_instr(vmaxss, SAE = 8))]
40500#[rustc_legacy_const_generics(4)]
40501pub fn _mm_mask_max_round_ss<const SAE: i32>(
40502    src: __m128,
40503    k: __mmask8,
40504    a: __m128,
40505    b: __m128,
40506) -> __m128 {
40507    unsafe {
40508        static_assert_sae!(SAE);
40509        let a = a.as_f32x4();
40510        let b = b.as_f32x4();
40511        let src = src.as_f32x4();
40512        let r = vmaxss(a, b, src, k, SAE);
40513        transmute(r)
40514    }
40515}
40516
40517/// Compare the lower single-precision (32-bit) floating-point elements in a and b, store the maximum value in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
40518/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
40519///
40520/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_max_round_ss&expand=3667)
40521#[inline]
40522#[target_feature(enable = "avx512f")]
40523#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40524#[cfg_attr(test, assert_instr(vmaxss, SAE = 8))]
40525#[rustc_legacy_const_generics(3)]
40526pub fn _mm_maskz_max_round_ss<const SAE: i32>(k: __mmask8, a: __m128, b: __m128) -> __m128 {
40527    unsafe {
40528        static_assert_sae!(SAE);
40529        let a = a.as_f32x4();
40530        let b = b.as_f32x4();
40531        let r = vmaxss(a, b, f32x4::ZERO, k, SAE);
40532        transmute(r)
40533    }
40534}
40535
40536/// Compare the lower double-precision (64-bit) floating-point elements in a and b, store the maximum value in the lower element of dst, and copy the upper element from a to the upper element of dst.\
40537/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
40538///
40539/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_max_round_sd&expand=3665)
40540#[inline]
40541#[target_feature(enable = "avx512f")]
40542#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40543#[cfg_attr(test, assert_instr(vmaxsd, SAE = 8))]
40544#[rustc_legacy_const_generics(2)]
40545pub fn _mm_max_round_sd<const SAE: i32>(a: __m128d, b: __m128d) -> __m128d {
40546    unsafe {
40547        static_assert_sae!(SAE);
40548        let a = a.as_f64x2();
40549        let b = b.as_f64x2();
40550        let r = vmaxsd(a, b, f64x2::ZERO, 0b1, SAE);
40551        transmute(r)
40552    }
40553}
40554
40555/// Compare the lower double-precision (64-bit) floating-point elements in a and b, store the maximum value in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
40556/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
40557///
40558/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_max_round_sd&expand=3663)
40559#[inline]
40560#[target_feature(enable = "avx512f")]
40561#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40562#[cfg_attr(test, assert_instr(vmaxsd, SAE = 8))]
40563#[rustc_legacy_const_generics(4)]
40564pub fn _mm_mask_max_round_sd<const SAE: i32>(
40565    src: __m128d,
40566    k: __mmask8,
40567    a: __m128d,
40568    b: __m128d,
40569) -> __m128d {
40570    unsafe {
40571        static_assert_sae!(SAE);
40572        let a = a.as_f64x2();
40573        let b = b.as_f64x2();
40574        let src = src.as_f64x2();
40575        let r = vmaxsd(a, b, src, k, SAE);
40576        transmute(r)
40577    }
40578}
40579
40580/// Compare the lower double-precision (64-bit) floating-point elements in a and b, store the maximum value in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
40581/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
40582///
40583/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskz_max_round_sd&expand=3670)
40584#[inline]
40585#[target_feature(enable = "avx512f")]
40586#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40587#[cfg_attr(test, assert_instr(vmaxsd, SAE = 8))]
40588#[rustc_legacy_const_generics(3)]
40589pub fn _mm_maskz_max_round_sd<const SAE: i32>(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
40590    unsafe {
40591        static_assert_sae!(SAE);
40592        let a = a.as_f64x2();
40593        let b = b.as_f64x2();
40594        let r = vmaxsd(a, b, f64x2::ZERO, k, SAE);
40595        transmute(r)
40596    }
40597}
40598
40599/// Compare the lower single-precision (32-bit) floating-point elements in a and b, store the minimum value in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.\
40600/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
40601///
40602/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_min_round_ss&expand=3782)
40603#[inline]
40604#[target_feature(enable = "avx512f")]
40605#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40606#[cfg_attr(test, assert_instr(vminss, SAE = 8))]
40607#[rustc_legacy_const_generics(2)]
40608pub fn _mm_min_round_ss<const SAE: i32>(a: __m128, b: __m128) -> __m128 {
40609    unsafe {
40610        static_assert_sae!(SAE);
40611        let a = a.as_f32x4();
40612        let b = b.as_f32x4();
40613        let r = vminss(a, b, f32x4::ZERO, 0b1, SAE);
40614        transmute(r)
40615    }
40616}
40617
40618/// Compare the lower single-precision (32-bit) floating-point elements in a and b, store the minimum value in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
40619/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
40620///
40621/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_min_round_ss&expand=3780)
40622#[inline]
40623#[target_feature(enable = "avx512f")]
40624#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40625#[cfg_attr(test, assert_instr(vminss, SAE = 8))]
40626#[rustc_legacy_const_generics(4)]
40627pub fn _mm_mask_min_round_ss<const SAE: i32>(
40628    src: __m128,
40629    k: __mmask8,
40630    a: __m128,
40631    b: __m128,
40632) -> __m128 {
40633    unsafe {
40634        static_assert_sae!(SAE);
40635        let a = a.as_f32x4();
40636        let b = b.as_f32x4();
40637        let src = src.as_f32x4();
40638        let r = vminss(a, b, src, k, SAE);
40639        transmute(r)
40640    }
40641}
40642
40643/// Compare the lower single-precision (32-bit) floating-point elements in a and b, store the minimum value in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
40644/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
40645///
40646/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_min_round_ss&expand=3781)
40647#[inline]
40648#[target_feature(enable = "avx512f")]
40649#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40650#[cfg_attr(test, assert_instr(vminss, SAE = 8))]
40651#[rustc_legacy_const_generics(3)]
40652pub fn _mm_maskz_min_round_ss<const SAE: i32>(k: __mmask8, a: __m128, b: __m128) -> __m128 {
40653    unsafe {
40654        static_assert_sae!(SAE);
40655        let a = a.as_f32x4();
40656        let b = b.as_f32x4();
40657        let r = vminss(a, b, f32x4::ZERO, k, SAE);
40658        transmute(r)
40659    }
40660}
40661
40662/// Compare the lower double-precision (64-bit) floating-point elements in a and b, store the minimum value in the lower element of dst , and copy the upper element from a to the upper element of dst.\
40663/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
40664///
40665/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_min_round_sd&expand=3779)
40666#[inline]
40667#[target_feature(enable = "avx512f")]
40668#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40669#[cfg_attr(test, assert_instr(vminsd, SAE = 8))]
40670#[rustc_legacy_const_generics(2)]
40671pub fn _mm_min_round_sd<const SAE: i32>(a: __m128d, b: __m128d) -> __m128d {
40672    unsafe {
40673        static_assert_sae!(SAE);
40674        let a = a.as_f64x2();
40675        let b = b.as_f64x2();
40676        let r = vminsd(a, b, f64x2::ZERO, 0b1, SAE);
40677        transmute(r)
40678    }
40679}
40680
40681/// Compare the lower double-precision (64-bit) floating-point elements in a and b, store the minimum value in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
40682/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
40683///
40684/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_min_round_sd&expand=3777)
40685#[inline]
40686#[target_feature(enable = "avx512f")]
40687#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40688#[cfg_attr(test, assert_instr(vminsd, SAE = 8))]
40689#[rustc_legacy_const_generics(4)]
40690pub fn _mm_mask_min_round_sd<const SAE: i32>(
40691    src: __m128d,
40692    k: __mmask8,
40693    a: __m128d,
40694    b: __m128d,
40695) -> __m128d {
40696    unsafe {
40697        static_assert_sae!(SAE);
40698        let a = a.as_f64x2();
40699        let b = b.as_f64x2();
40700        let src = src.as_f64x2();
40701        let r = vminsd(a, b, src, k, SAE);
40702        transmute(r)
40703    }
40704}
40705
40706/// Compare the lower double-precision (64-bit) floating-point elements in a and b, store the minimum value in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
40707/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
40708///
40709/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_min_round_sd&expand=3778)
40710#[inline]
40711#[target_feature(enable = "avx512f")]
40712#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40713#[cfg_attr(test, assert_instr(vminsd, SAE = 8))]
40714#[rustc_legacy_const_generics(3)]
40715pub fn _mm_maskz_min_round_sd<const SAE: i32>(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
40716    unsafe {
40717        static_assert_sae!(SAE);
40718        let a = a.as_f64x2();
40719        let b = b.as_f64x2();
40720        let r = vminsd(a, b, f64x2::ZERO, k, SAE);
40721        transmute(r)
40722    }
40723}
40724
40725/// Compute the square root of the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.\
40726///
40727/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40728/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40729/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40730/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40731/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40732/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40733///
40734/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_sqrt_round_ss&expand=5383)
40735#[inline]
40736#[target_feature(enable = "avx512f")]
40737#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40738#[cfg_attr(test, assert_instr(vsqrtss, ROUNDING = 8))]
40739#[rustc_legacy_const_generics(2)]
40740pub fn _mm_sqrt_round_ss<const ROUNDING: i32>(a: __m128, b: __m128) -> __m128 {
40741    unsafe {
40742        static_assert_rounding!(ROUNDING);
40743        vsqrtss(a, b, _mm_setzero_ps(), 0b1, ROUNDING)
40744    }
40745}
40746
40747/// Compute the square root of the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
40748///
40749/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40750/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40751/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40752/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40753/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40754/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40755///
40756/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_sqrt_round_ss&expand=5381)
40757#[inline]
40758#[target_feature(enable = "avx512f")]
40759#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40760#[cfg_attr(test, assert_instr(vsqrtss, ROUNDING = 8))]
40761#[rustc_legacy_const_generics(4)]
40762pub fn _mm_mask_sqrt_round_ss<const ROUNDING: i32>(
40763    src: __m128,
40764    k: __mmask8,
40765    a: __m128,
40766    b: __m128,
40767) -> __m128 {
40768    unsafe {
40769        static_assert_rounding!(ROUNDING);
40770        vsqrtss(a, b, src, k, ROUNDING)
40771    }
40772}
40773
40774/// Compute the square root of the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
40775///
40776/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40777/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40778/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40779/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40780/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40781/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40782///
40783/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_sqrt_round_ss&expand=5382)
40784#[inline]
40785#[target_feature(enable = "avx512f")]
40786#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40787#[cfg_attr(test, assert_instr(vsqrtss, ROUNDING = 8))]
40788#[rustc_legacy_const_generics(3)]
40789pub fn _mm_maskz_sqrt_round_ss<const ROUNDING: i32>(k: __mmask8, a: __m128, b: __m128) -> __m128 {
40790    unsafe {
40791        static_assert_rounding!(ROUNDING);
40792        vsqrtss(a, b, _mm_setzero_ps(), k, ROUNDING)
40793    }
40794}
40795
40796/// Compute the square root of the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.\
40797///
40798/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40799/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40800/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40801/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40802/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40803/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40804///
40805/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_sqrt_round_sd&expand=5380)
40806#[inline]
40807#[target_feature(enable = "avx512f")]
40808#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40809#[cfg_attr(test, assert_instr(vsqrtsd, ROUNDING = 8))]
40810#[rustc_legacy_const_generics(2)]
40811pub fn _mm_sqrt_round_sd<const ROUNDING: i32>(a: __m128d, b: __m128d) -> __m128d {
40812    unsafe {
40813        static_assert_rounding!(ROUNDING);
40814        vsqrtsd(a, b, _mm_setzero_pd(), 0b1, ROUNDING)
40815    }
40816}
40817
40818/// Compute the square root of the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
40819///
40820/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40821/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40822/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40823/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40824/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40825/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40826///
40827/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_sqrt_round_sd&expand=5378)
40828#[inline]
40829#[target_feature(enable = "avx512f")]
40830#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40831#[cfg_attr(test, assert_instr(vsqrtsd, ROUNDING = 8))]
40832#[rustc_legacy_const_generics(4)]
40833pub fn _mm_mask_sqrt_round_sd<const ROUNDING: i32>(
40834    src: __m128d,
40835    k: __mmask8,
40836    a: __m128d,
40837    b: __m128d,
40838) -> __m128d {
40839    unsafe {
40840        static_assert_rounding!(ROUNDING);
40841        vsqrtsd(a, b, src, k, ROUNDING)
40842    }
40843}
40844
40845/// Compute the square root of the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
40846///
40847/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
40848/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
40849/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
40850/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
40851/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
40852/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
40853///
40854/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_sqrt_round_sd&expand=5379)
40855#[inline]
40856#[target_feature(enable = "avx512f")]
40857#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40858#[cfg_attr(test, assert_instr(vsqrtsd, ROUNDING = 8))]
40859#[rustc_legacy_const_generics(3)]
40860pub fn _mm_maskz_sqrt_round_sd<const ROUNDING: i32>(
40861    k: __mmask8,
40862    a: __m128d,
40863    b: __m128d,
40864) -> __m128d {
40865    unsafe {
40866        static_assert_rounding!(ROUNDING);
40867        vsqrtsd(a, b, _mm_setzero_pd(), k, ROUNDING)
40868    }
40869}
40870
40871/// Convert the exponent of the lower single-precision (32-bit) floating-point element in b to a single-precision (32-bit) floating-point number representing the integer exponent, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst. This intrinsic essentially calculates floor(log2(x)) for the lower element.\
40872/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
40873///
40874/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_getexp_round_ss&expand=2856)
40875#[inline]
40876#[target_feature(enable = "avx512f")]
40877#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40878#[cfg_attr(test, assert_instr(vgetexpss, SAE = 8))]
40879#[rustc_legacy_const_generics(2)]
40880pub fn _mm_getexp_round_ss<const SAE: i32>(a: __m128, b: __m128) -> __m128 {
40881    unsafe {
40882        static_assert_sae!(SAE);
40883        let a = a.as_f32x4();
40884        let b = b.as_f32x4();
40885        let r = vgetexpss(a, b, f32x4::ZERO, 0b1, SAE);
40886        transmute(r)
40887    }
40888}
40889
40890/// Convert the exponent of the lower single-precision (32-bit) floating-point element in b to a single-precision (32-bit) floating-point number representing the integer exponent, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst. This intrinsic essentially calculates floor(log2(x)) for the lower element.\
40891/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
40892///
40893/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_getexp_round_ss&expand=2857)
40894#[inline]
40895#[target_feature(enable = "avx512f")]
40896#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40897#[cfg_attr(test, assert_instr(vgetexpss, SAE = 8))]
40898#[rustc_legacy_const_generics(4)]
40899pub fn _mm_mask_getexp_round_ss<const SAE: i32>(
40900    src: __m128,
40901    k: __mmask8,
40902    a: __m128,
40903    b: __m128,
40904) -> __m128 {
40905    unsafe {
40906        static_assert_sae!(SAE);
40907        let a = a.as_f32x4();
40908        let b = b.as_f32x4();
40909        let src = src.as_f32x4();
40910        let r = vgetexpss(a, b, src, k, SAE);
40911        transmute(r)
40912    }
40913}
40914
40915/// Convert the exponent of the lower single-precision (32-bit) floating-point element in b to a single-precision (32-bit) floating-point number representing the integer exponent, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst. This intrinsic essentially calculates floor(log2(x)) for the lower element.\
40916/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
40917///
40918/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_getexp_round_ss&expand=2858)
40919#[inline]
40920#[target_feature(enable = "avx512f")]
40921#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40922#[cfg_attr(test, assert_instr(vgetexpss, SAE = 8))]
40923#[rustc_legacy_const_generics(3)]
40924pub fn _mm_maskz_getexp_round_ss<const SAE: i32>(k: __mmask8, a: __m128, b: __m128) -> __m128 {
40925    unsafe {
40926        static_assert_sae!(SAE);
40927        let a = a.as_f32x4();
40928        let b = b.as_f32x4();
40929        let r = vgetexpss(a, b, f32x4::ZERO, k, SAE);
40930        transmute(r)
40931    }
40932}
40933
40934/// Convert the exponent of the lower double-precision (64-bit) floating-point element in b to a double-precision (64-bit) floating-point number representing the integer exponent, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst. This intrinsic essentially calculates floor(log2(x)) for the lower element.\
40935/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
40936///
40937/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_getexp_round_sd&expand=2853)
40938#[inline]
40939#[target_feature(enable = "avx512f")]
40940#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40941#[cfg_attr(test, assert_instr(vgetexpsd, SAE = 8))]
40942#[rustc_legacy_const_generics(2)]
40943pub fn _mm_getexp_round_sd<const SAE: i32>(a: __m128d, b: __m128d) -> __m128d {
40944    unsafe {
40945        static_assert_sae!(SAE);
40946        let a = a.as_f64x2();
40947        let b = b.as_f64x2();
40948        let r = vgetexpsd(a, b, f64x2::ZERO, 0b1, SAE);
40949        transmute(r)
40950    }
40951}
40952
40953/// Convert the exponent of the lower double-precision (64-bit) floating-point element in b to a double-precision (64-bit) floating-point number representing the integer exponent, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst. This intrinsic essentially calculates floor(log2(x)) for the lower element.\
40954/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
40955///
40956/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_getexp_round_sd&expand=2854)
40957#[inline]
40958#[target_feature(enable = "avx512f")]
40959#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40960#[cfg_attr(test, assert_instr(vgetexpsd, SAE = 8))]
40961#[rustc_legacy_const_generics(4)]
40962pub fn _mm_mask_getexp_round_sd<const SAE: i32>(
40963    src: __m128d,
40964    k: __mmask8,
40965    a: __m128d,
40966    b: __m128d,
40967) -> __m128d {
40968    unsafe {
40969        static_assert_sae!(SAE);
40970        let a = a.as_f64x2();
40971        let b = b.as_f64x2();
40972        let src = src.as_f64x2();
40973        let r = vgetexpsd(a, b, src, k, SAE);
40974        transmute(r)
40975    }
40976}
40977
40978/// Convert the exponent of the lower double-precision (64-bit) floating-point element in b to a double-precision (64-bit) floating-point number representing the integer exponent, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst. This intrinsic essentially calculates floor(log2(x)) for the lower element.\
40979/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
40980///
40981/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_getexp_round_sd&expand=2855)
40982#[inline]
40983#[target_feature(enable = "avx512f")]
40984#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
40985#[cfg_attr(test, assert_instr(vgetexpsd, SAE = 8))]
40986#[rustc_legacy_const_generics(3)]
40987pub fn _mm_maskz_getexp_round_sd<const SAE: i32>(k: __mmask8, a: __m128d, b: __m128d) -> __m128d {
40988    unsafe {
40989        static_assert_sae!(SAE);
40990        let a = a.as_f64x2();
40991        let b = b.as_f64x2();
40992        let r = vgetexpsd(a, b, f64x2::ZERO, k, SAE);
40993        transmute(r)
40994    }
40995}
40996
40997/// Normalize the mantissas of the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
40998/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
40999///    _MM_MANT_NORM_1_2     // interval [1, 2)\
41000///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
41001///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
41002///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
41003/// The sign is determined by sc which can take the following values:\
41004///    _MM_MANT_SIGN_src     // sign = sign(src)\
41005///    _MM_MANT_SIGN_zero    // sign = 0\
41006///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1\
41007/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
41008///
41009/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_getmant_round_ss&expand=2892)
41010#[inline]
41011#[target_feature(enable = "avx512f")]
41012#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41013#[cfg_attr(test, assert_instr(vgetmantss, NORM = 0, SIGN = 0, SAE = 4))]
41014#[rustc_legacy_const_generics(2, 3, 4)]
41015pub fn _mm_getmant_round_ss<
41016    const NORM: _MM_MANTISSA_NORM_ENUM,
41017    const SIGN: _MM_MANTISSA_SIGN_ENUM,
41018    const SAE: i32,
41019>(
41020    a: __m128,
41021    b: __m128,
41022) -> __m128 {
41023    unsafe {
41024        static_assert_uimm_bits!(NORM, 4);
41025        static_assert_uimm_bits!(SIGN, 2);
41026        static_assert_mantissas_sae!(SAE);
41027        let a = a.as_f32x4();
41028        let b = b.as_f32x4();
41029        let r = vgetmantss(a, b, SIGN << 2 | NORM, f32x4::ZERO, 0b1, SAE);
41030        transmute(r)
41031    }
41032}
41033
41034/// Normalize the mantissas of the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
41035/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
41036///    _MM_MANT_NORM_1_2     // interval [1, 2)\
41037///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
41038///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
41039///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
41040/// The sign is determined by sc which can take the following values:\
41041///    _MM_MANT_SIGN_src     // sign = sign(src)\
41042///    _MM_MANT_SIGN_zero    // sign = 0\
41043///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1\
41044/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
41045///
41046/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_getmant_round_ss&expand=2893)
41047#[inline]
41048#[target_feature(enable = "avx512f")]
41049#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41050#[cfg_attr(test, assert_instr(vgetmantss, NORM = 0, SIGN = 0, SAE = 4))]
41051#[rustc_legacy_const_generics(4, 5, 6)]
41052pub fn _mm_mask_getmant_round_ss<
41053    const NORM: _MM_MANTISSA_NORM_ENUM,
41054    const SIGN: _MM_MANTISSA_SIGN_ENUM,
41055    const SAE: i32,
41056>(
41057    src: __m128,
41058    k: __mmask8,
41059    a: __m128,
41060    b: __m128,
41061) -> __m128 {
41062    unsafe {
41063        static_assert_uimm_bits!(NORM, 4);
41064        static_assert_uimm_bits!(SIGN, 2);
41065        static_assert_mantissas_sae!(SAE);
41066        let a = a.as_f32x4();
41067        let b = b.as_f32x4();
41068        let src = src.as_f32x4();
41069        let r = vgetmantss(a, b, SIGN << 2 | NORM, src, k, SAE);
41070        transmute(r)
41071    }
41072}
41073
41074/// Normalize the mantissas of the lower single-precision (32-bit) floating-point element in b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
41075/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
41076///    _MM_MANT_NORM_1_2     // interval [1, 2)\
41077///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
41078///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
41079///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
41080/// The sign is determined by sc which can take the following values:\
41081///    _MM_MANT_SIGN_src     // sign = sign(src)\
41082///    _MM_MANT_SIGN_zero    // sign = 0\
41083///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1\
41084/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
41085///
41086/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_getmant_round_ss&expand=2894)
41087#[inline]
41088#[target_feature(enable = "avx512f")]
41089#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41090#[cfg_attr(test, assert_instr(vgetmantss, NORM = 0, SIGN = 0, SAE = 4))]
41091#[rustc_legacy_const_generics(3, 4, 5)]
41092pub fn _mm_maskz_getmant_round_ss<
41093    const NORM: _MM_MANTISSA_NORM_ENUM,
41094    const SIGN: _MM_MANTISSA_SIGN_ENUM,
41095    const SAE: i32,
41096>(
41097    k: __mmask8,
41098    a: __m128,
41099    b: __m128,
41100) -> __m128 {
41101    unsafe {
41102        static_assert_uimm_bits!(NORM, 4);
41103        static_assert_uimm_bits!(SIGN, 2);
41104        static_assert_mantissas_sae!(SAE);
41105        let a = a.as_f32x4();
41106        let b = b.as_f32x4();
41107        let r = vgetmantss(a, b, SIGN << 2 | NORM, f32x4::ZERO, k, SAE);
41108        transmute(r)
41109    }
41110}
41111
41112/// Normalize the mantissas of the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
41113/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
41114///    _MM_MANT_NORM_1_2     // interval [1, 2)\
41115///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
41116///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
41117///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
41118/// The sign is determined by sc which can take the following values:\
41119///    _MM_MANT_SIGN_src     // sign = sign(src)\
41120///    _MM_MANT_SIGN_zero    // sign = 0\
41121///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1\
41122/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
41123///
41124/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_getmant_round_sd&expand=2889)
41125#[inline]
41126#[target_feature(enable = "avx512f")]
41127#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41128#[cfg_attr(test, assert_instr(vgetmantsd, NORM = 0, SIGN = 0, SAE = 4))]
41129#[rustc_legacy_const_generics(2, 3, 4)]
41130pub fn _mm_getmant_round_sd<
41131    const NORM: _MM_MANTISSA_NORM_ENUM,
41132    const SIGN: _MM_MANTISSA_SIGN_ENUM,
41133    const SAE: i32,
41134>(
41135    a: __m128d,
41136    b: __m128d,
41137) -> __m128d {
41138    unsafe {
41139        static_assert_uimm_bits!(NORM, 4);
41140        static_assert_uimm_bits!(SIGN, 2);
41141        static_assert_mantissas_sae!(SAE);
41142        let a = a.as_f64x2();
41143        let b = b.as_f64x2();
41144        let r = vgetmantsd(a, b, SIGN << 2 | NORM, f64x2::ZERO, 0b1, SAE);
41145        transmute(r)
41146    }
41147}
41148
41149/// Normalize the mantissas of the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
41150/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
41151///    _MM_MANT_NORM_1_2     // interval [1, 2)\
41152///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
41153///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
41154///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
41155/// The sign is determined by sc which can take the following values:\
41156///    _MM_MANT_SIGN_src     // sign = sign(src)\
41157///    _MM_MANT_SIGN_zero    // sign = 0\
41158///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1\
41159/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
41160///
41161/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_getmant_round_sd&expand=2890)
41162#[inline]
41163#[target_feature(enable = "avx512f")]
41164#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41165#[cfg_attr(test, assert_instr(vgetmantsd, NORM = 0, SIGN = 0, SAE = 4))]
41166#[rustc_legacy_const_generics(4, 5, 6)]
41167pub fn _mm_mask_getmant_round_sd<
41168    const NORM: _MM_MANTISSA_NORM_ENUM,
41169    const SIGN: _MM_MANTISSA_SIGN_ENUM,
41170    const SAE: i32,
41171>(
41172    src: __m128d,
41173    k: __mmask8,
41174    a: __m128d,
41175    b: __m128d,
41176) -> __m128d {
41177    unsafe {
41178        static_assert_uimm_bits!(NORM, 4);
41179        static_assert_uimm_bits!(SIGN, 2);
41180        static_assert_mantissas_sae!(SAE);
41181        let a = a.as_f64x2();
41182        let b = b.as_f64x2();
41183        let src = src.as_f64x2();
41184        let r = vgetmantsd(a, b, SIGN << 2 | NORM, src, k, SAE);
41185        transmute(r)
41186    }
41187}
41188
41189/// Normalize the mantissas of the lower double-precision (64-bit) floating-point element in b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst. This intrinsic essentially calculates ±(2^k)*|x.significand|, where k depends on the interval range defined by interv and the sign depends on sc and the source sign.\
41190/// The mantissa is normalized to the interval specified by interv, which can take the following values:\
41191///    _MM_MANT_NORM_1_2     // interval [1, 2)\
41192///    _MM_MANT_NORM_p5_2    // interval [0.5, 2)\
41193///    _MM_MANT_NORM_p5_1    // interval [0.5, 1)\
41194///    _MM_MANT_NORM_p75_1p5 // interval [0.75, 1.5)\
41195/// The sign is determined by sc which can take the following values:\
41196///    _MM_MANT_SIGN_src     // sign = sign(src)\
41197///    _MM_MANT_SIGN_zero    // sign = 0\
41198///    _MM_MANT_SIGN_nan     // dst = NaN if sign(src) = 1\
41199/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
41200///
41201/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_getmant_round_sd&expand=2891)
41202#[inline]
41203#[target_feature(enable = "avx512f")]
41204#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41205#[cfg_attr(test, assert_instr(vgetmantsd, NORM = 0, SIGN = 0, SAE = 4))]
41206#[rustc_legacy_const_generics(3, 4, 5)]
41207pub fn _mm_maskz_getmant_round_sd<
41208    const NORM: _MM_MANTISSA_NORM_ENUM,
41209    const SIGN: _MM_MANTISSA_SIGN_ENUM,
41210    const SAE: i32,
41211>(
41212    k: __mmask8,
41213    a: __m128d,
41214    b: __m128d,
41215) -> __m128d {
41216    unsafe {
41217        static_assert_uimm_bits!(NORM, 4);
41218        static_assert_uimm_bits!(SIGN, 2);
41219        static_assert_mantissas_sae!(SAE);
41220        let a = a.as_f64x2();
41221        let b = b.as_f64x2();
41222        let r = vgetmantsd(a, b, SIGN << 2 | NORM, f64x2::ZERO, k, SAE);
41223        transmute(r)
41224    }
41225}
41226
41227/// Round the lower single-precision (32-bit) floating-point element in b to the number of fraction bits specified by imm8, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.\
41228/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
41229/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
41230/// * [`_MM_FROUND_TO_NEG_INF`] : round down
41231/// * [`_MM_FROUND_TO_POS_INF`] : round up
41232/// * [`_MM_FROUND_TO_ZERO`] : truncate
41233/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41234///
41235/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
41236/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_roundscale_round_ss&expand=4796)
41237#[inline]
41238#[target_feature(enable = "avx512f")]
41239#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41240#[cfg_attr(test, assert_instr(vrndscaless, IMM8 = 0, SAE = 8))]
41241#[rustc_legacy_const_generics(2, 3)]
41242pub fn _mm_roundscale_round_ss<const IMM8: i32, const SAE: i32>(a: __m128, b: __m128) -> __m128 {
41243    unsafe {
41244        static_assert_uimm_bits!(IMM8, 8);
41245        static_assert_mantissas_sae!(SAE);
41246        let a = a.as_f32x4();
41247        let b = b.as_f32x4();
41248        let r = vrndscaless(a, b, f32x4::ZERO, 0b11111111, IMM8, SAE);
41249        transmute(r)
41250    }
41251}
41252
41253/// Round the lower single-precision (32-bit) floating-point element in b to the number of fraction bits specified by imm8, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
41254/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
41255/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
41256/// * [`_MM_FROUND_TO_NEG_INF`] : round down
41257/// * [`_MM_FROUND_TO_POS_INF`] : round up
41258/// * [`_MM_FROUND_TO_ZERO`] : truncate
41259/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41260///
41261/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
41262/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_roundscale_round_ss&expand=4794)
41263#[inline]
41264#[target_feature(enable = "avx512f")]
41265#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41266#[cfg_attr(test, assert_instr(vrndscaless, IMM8 = 0, SAE = 8))]
41267#[rustc_legacy_const_generics(4, 5)]
41268pub fn _mm_mask_roundscale_round_ss<const IMM8: i32, const SAE: i32>(
41269    src: __m128,
41270    k: __mmask8,
41271    a: __m128,
41272    b: __m128,
41273) -> __m128 {
41274    unsafe {
41275        static_assert_uimm_bits!(IMM8, 8);
41276        static_assert_mantissas_sae!(SAE);
41277        let a = a.as_f32x4();
41278        let b = b.as_f32x4();
41279        let src = src.as_f32x4();
41280        let r = vrndscaless(a, b, src, k, IMM8, SAE);
41281        transmute(r)
41282    }
41283}
41284
41285/// Round the lower single-precision (32-bit) floating-point element in b to the number of fraction bits specified by imm8, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
41286/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
41287/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
41288/// * [`_MM_FROUND_TO_NEG_INF`] : round down
41289/// * [`_MM_FROUND_TO_POS_INF`] : round up
41290/// * [`_MM_FROUND_TO_ZERO`] : truncate
41291/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41292///
41293/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
41294/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_roundscale_round_ss&expand=4795)
41295#[inline]
41296#[target_feature(enable = "avx512f")]
41297#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41298#[cfg_attr(test, assert_instr(vrndscaless, IMM8 = 0, SAE = 8))]
41299#[rustc_legacy_const_generics(3, 4)]
41300pub fn _mm_maskz_roundscale_round_ss<const IMM8: i32, const SAE: i32>(
41301    k: __mmask8,
41302    a: __m128,
41303    b: __m128,
41304) -> __m128 {
41305    unsafe {
41306        static_assert_uimm_bits!(IMM8, 8);
41307        static_assert_mantissas_sae!(SAE);
41308        let a = a.as_f32x4();
41309        let b = b.as_f32x4();
41310        let r = vrndscaless(a, b, f32x4::ZERO, k, IMM8, SAE);
41311        transmute(r)
41312    }
41313}
41314
41315/// Round the lower double-precision (64-bit) floating-point element in b to the number of fraction bits specified by imm8, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.\
41316/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
41317/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
41318/// * [`_MM_FROUND_TO_NEG_INF`] : round down
41319/// * [`_MM_FROUND_TO_POS_INF`] : round up
41320/// * [`_MM_FROUND_TO_ZERO`] : truncate
41321/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41322///
41323/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
41324/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_roundscale_round_sd&expand=4793)
41325#[inline]
41326#[target_feature(enable = "avx512f")]
41327#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41328#[cfg_attr(test, assert_instr(vrndscalesd, IMM8 = 0, SAE = 8))]
41329#[rustc_legacy_const_generics(2, 3)]
41330pub fn _mm_roundscale_round_sd<const IMM8: i32, const SAE: i32>(a: __m128d, b: __m128d) -> __m128d {
41331    unsafe {
41332        static_assert_uimm_bits!(IMM8, 8);
41333        static_assert_mantissas_sae!(SAE);
41334        let a = a.as_f64x2();
41335        let b = b.as_f64x2();
41336        let r = vrndscalesd(a, b, f64x2::ZERO, 0b11111111, IMM8, SAE);
41337        transmute(r)
41338    }
41339}
41340
41341/// Round the lower double-precision (64-bit) floating-point element in b to the number of fraction bits specified by imm8, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
41342/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
41343/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
41344/// * [`_MM_FROUND_TO_NEG_INF`] : round down
41345/// * [`_MM_FROUND_TO_POS_INF`] : round up
41346/// * [`_MM_FROUND_TO_ZERO`] : truncate
41347/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41348///
41349/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
41350/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_roundscale_round_sd&expand=4791)
41351#[inline]
41352#[target_feature(enable = "avx512f")]
41353#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41354#[cfg_attr(test, assert_instr(vrndscalesd, IMM8 = 0, SAE = 8))]
41355#[rustc_legacy_const_generics(4, 5)]
41356pub fn _mm_mask_roundscale_round_sd<const IMM8: i32, const SAE: i32>(
41357    src: __m128d,
41358    k: __mmask8,
41359    a: __m128d,
41360    b: __m128d,
41361) -> __m128d {
41362    unsafe {
41363        static_assert_uimm_bits!(IMM8, 8);
41364        static_assert_mantissas_sae!(SAE);
41365        let a = a.as_f64x2();
41366        let b = b.as_f64x2();
41367        let src = src.as_f64x2();
41368        let r = vrndscalesd(a, b, src, k, IMM8, SAE);
41369        transmute(r)
41370    }
41371}
41372
41373/// Round the lower double-precision (64-bit) floating-point element in b to the number of fraction bits specified by imm8, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
41374/// Rounding is done according to the imm8\[2:0\] parameter, which can be one of:\
41375/// * [`_MM_FROUND_TO_NEAREST_INT`] : round to nearest
41376/// * [`_MM_FROUND_TO_NEG_INF`] : round down
41377/// * [`_MM_FROUND_TO_POS_INF`] : round up
41378/// * [`_MM_FROUND_TO_ZERO`] : truncate
41379/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41380///
41381/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
41382/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_roundscale_round_sd&expand=4792)
41383#[inline]
41384#[target_feature(enable = "avx512f")]
41385#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41386#[cfg_attr(test, assert_instr(vrndscalesd, IMM8 = 0, SAE = 8))]
41387#[rustc_legacy_const_generics(3, 4)]
41388pub fn _mm_maskz_roundscale_round_sd<const IMM8: i32, const SAE: i32>(
41389    k: __mmask8,
41390    a: __m128d,
41391    b: __m128d,
41392) -> __m128d {
41393    unsafe {
41394        static_assert_uimm_bits!(IMM8, 8);
41395        static_assert_mantissas_sae!(SAE);
41396        let a = a.as_f64x2();
41397        let b = b.as_f64x2();
41398        let r = vrndscalesd(a, b, f64x2::ZERO, k, IMM8, SAE);
41399        transmute(r)
41400    }
41401}
41402
41403/// Scale the packed single-precision (32-bit) floating-point elements in a using values from b, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.\
41404///
41405/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41406/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41407/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41408/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41409/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41410/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41411///
41412/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_scalef_round_ss&expand=4895)
41413#[inline]
41414#[target_feature(enable = "avx512f")]
41415#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41416#[cfg_attr(test, assert_instr(vscalefss, ROUNDING = 8))]
41417#[rustc_legacy_const_generics(2)]
41418pub fn _mm_scalef_round_ss<const ROUNDING: i32>(a: __m128, b: __m128) -> __m128 {
41419    unsafe {
41420        static_assert_rounding!(ROUNDING);
41421        let a = a.as_f32x4();
41422        let b = b.as_f32x4();
41423        let r = vscalefss(a, b, f32x4::ZERO, 0b11111111, ROUNDING);
41424        transmute(r)
41425    }
41426}
41427
41428/// Scale the packed single-precision (32-bit) floating-point elements in a using values from b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
41429///
41430/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41431/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41432/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41433/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41434/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41435/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41436///
41437/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_scalef_round_ss&expand=4893)
41438#[inline]
41439#[target_feature(enable = "avx512f")]
41440#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41441#[cfg_attr(test, assert_instr(vscalefss, ROUNDING = 8))]
41442#[rustc_legacy_const_generics(4)]
41443pub fn _mm_mask_scalef_round_ss<const ROUNDING: i32>(
41444    src: __m128,
41445    k: __mmask8,
41446    a: __m128,
41447    b: __m128,
41448) -> __m128 {
41449    unsafe {
41450        static_assert_rounding!(ROUNDING);
41451        let a = a.as_f32x4();
41452        let b = b.as_f32x4();
41453        let src = src.as_f32x4();
41454        let r = vscalefss(a, b, src, k, ROUNDING);
41455        transmute(r)
41456    }
41457}
41458
41459/// Scale the packed single-precision (32-bit) floating-point elements in a using values from b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
41460///
41461/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41462/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41463/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41464/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41465/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41466/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41467///
41468/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_scalef_round_ss&expand=4894)
41469#[inline]
41470#[target_feature(enable = "avx512f")]
41471#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41472#[cfg_attr(test, assert_instr(vscalefss, ROUNDING = 8))]
41473#[rustc_legacy_const_generics(3)]
41474pub fn _mm_maskz_scalef_round_ss<const ROUNDING: i32>(k: __mmask8, a: __m128, b: __m128) -> __m128 {
41475    unsafe {
41476        static_assert_rounding!(ROUNDING);
41477        let a = a.as_f32x4();
41478        let b = b.as_f32x4();
41479        let r = vscalefss(a, b, f32x4::ZERO, k, ROUNDING);
41480        transmute(r)
41481    }
41482}
41483
41484/// Scale the packed double-precision (64-bit) floating-point elements in a using values from b, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.\
41485///
41486/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41487/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41488/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41489/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41490/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41491/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41492///
41493/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_scalef_round_sd&expand=4892)
41494#[inline]
41495#[target_feature(enable = "avx512f")]
41496#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41497#[cfg_attr(test, assert_instr(vscalefsd, ROUNDING = 8))]
41498#[rustc_legacy_const_generics(2)]
41499pub fn _mm_scalef_round_sd<const ROUNDING: i32>(a: __m128d, b: __m128d) -> __m128d {
41500    unsafe {
41501        static_assert_rounding!(ROUNDING);
41502        let a = a.as_f64x2();
41503        let b = b.as_f64x2();
41504        let r = vscalefsd(a, b, f64x2::ZERO, 0b11111111, ROUNDING);
41505        transmute(r)
41506    }
41507}
41508
41509/// Scale the packed double-precision (64-bit) floating-point elements in a using values from b, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
41510///
41511/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41512/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41513/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41514/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41515/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41516/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41517///
41518/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_scalef_round_sd&expand=4890)
41519#[inline]
41520#[target_feature(enable = "avx512f")]
41521#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41522#[cfg_attr(test, assert_instr(vscalefsd, ROUNDING = 8))]
41523#[rustc_legacy_const_generics(4)]
41524pub fn _mm_mask_scalef_round_sd<const ROUNDING: i32>(
41525    src: __m128d,
41526    k: __mmask8,
41527    a: __m128d,
41528    b: __m128d,
41529) -> __m128d {
41530    unsafe {
41531        let a = a.as_f64x2();
41532        let b = b.as_f64x2();
41533        let src = src.as_f64x2();
41534        let r = vscalefsd(a, b, src, k, ROUNDING);
41535        transmute(r)
41536    }
41537}
41538
41539/// Scale the packed double-precision (64-bit) floating-point elements in a using values from b, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
41540///
41541/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41542/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41543/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41544/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41545/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41546/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41547///
41548/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_scalef_round_sd&expand=4891)
41549#[inline]
41550#[target_feature(enable = "avx512f")]
41551#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41552#[cfg_attr(test, assert_instr(vscalefsd, ROUNDING = 8))]
41553#[rustc_legacy_const_generics(3)]
41554pub fn _mm_maskz_scalef_round_sd<const ROUNDING: i32>(
41555    k: __mmask8,
41556    a: __m128d,
41557    b: __m128d,
41558) -> __m128d {
41559    unsafe {
41560        static_assert_rounding!(ROUNDING);
41561        let a = a.as_f64x2();
41562        let b = b.as_f64x2();
41563        let r = vscalefsd(a, b, f64x2::ZERO, k, ROUNDING);
41564        transmute(r)
41565    }
41566}
41567
41568/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and add the intermediate result to the lower element in c. Store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.\
41569///
41570/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41571/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41572/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41573/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41574/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41575/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41576///
41577/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_fmadd_round_ss&expand=2573)
41578#[inline]
41579#[target_feature(enable = "avx512f")]
41580#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41581#[cfg_attr(test, assert_instr(vfmadd, ROUNDING = 8))]
41582#[rustc_legacy_const_generics(3)]
41583pub fn _mm_fmadd_round_ss<const ROUNDING: i32>(a: __m128, b: __m128, c: __m128) -> __m128 {
41584    unsafe {
41585        static_assert_rounding!(ROUNDING);
41586        let extracta: f32 = simd_extract!(a, 0);
41587        let extractb: f32 = simd_extract!(b, 0);
41588        let extractc: f32 = simd_extract!(c, 0);
41589        let r = vfmaddssround(extracta, extractb, extractc, ROUNDING);
41590        simd_insert!(a, 0, r)
41591    }
41592}
41593
41594/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and add the intermediate result to the lower element in c. Store the result in the lower element of dst using writemask k (the element is copied from a when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
41595///
41596/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41597/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41598/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41599/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41600/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41601/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41602///
41603/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fmadd_round_ss&expand=2574)
41604#[inline]
41605#[target_feature(enable = "avx512f")]
41606#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41607#[cfg_attr(test, assert_instr(vfmadd, ROUNDING = 8))]
41608#[rustc_legacy_const_generics(4)]
41609pub fn _mm_mask_fmadd_round_ss<const ROUNDING: i32>(
41610    a: __m128,
41611    k: __mmask8,
41612    b: __m128,
41613    c: __m128,
41614) -> __m128 {
41615    unsafe {
41616        static_assert_rounding!(ROUNDING);
41617        let mut fmadd: f32 = simd_extract!(a, 0);
41618        if (k & 0b00000001) != 0 {
41619            let extractb: f32 = simd_extract!(b, 0);
41620            let extractc: f32 = simd_extract!(c, 0);
41621            fmadd = vfmaddssround(fmadd, extractb, extractc, ROUNDING);
41622        }
41623        simd_insert!(a, 0, fmadd)
41624    }
41625}
41626
41627/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and add the intermediate result to the lower element in c. Store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
41628///
41629/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41630/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41631/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41632/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41633/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41634/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41635///
41636/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fmadd_round_ss&expand=2576)
41637#[inline]
41638#[target_feature(enable = "avx512f")]
41639#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41640#[cfg_attr(test, assert_instr(vfmadd, ROUNDING = 8))]
41641#[rustc_legacy_const_generics(4)]
41642pub fn _mm_maskz_fmadd_round_ss<const ROUNDING: i32>(
41643    k: __mmask8,
41644    a: __m128,
41645    b: __m128,
41646    c: __m128,
41647) -> __m128 {
41648    unsafe {
41649        static_assert_rounding!(ROUNDING);
41650        let mut fmadd: f32 = 0.;
41651        if (k & 0b00000001) != 0 {
41652            let extracta: f32 = simd_extract!(a, 0);
41653            let extractb: f32 = simd_extract!(b, 0);
41654            let extractc: f32 = simd_extract!(c, 0);
41655            fmadd = vfmaddssround(extracta, extractb, extractc, ROUNDING);
41656        }
41657        simd_insert!(a, 0, fmadd)
41658    }
41659}
41660
41661/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and add the intermediate result to the lower element in c. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper 3 packed elements from c to the upper elements of dst.\
41662///
41663/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41664/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41665/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41666/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41667/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41668/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41669///
41670/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask3_fmadd_round_ss&expand=2575)
41671#[inline]
41672#[target_feature(enable = "avx512f")]
41673#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41674#[cfg_attr(test, assert_instr(vfmadd, ROUNDING = 8))]
41675#[rustc_legacy_const_generics(4)]
41676pub fn _mm_mask3_fmadd_round_ss<const ROUNDING: i32>(
41677    a: __m128,
41678    b: __m128,
41679    c: __m128,
41680    k: __mmask8,
41681) -> __m128 {
41682    unsafe {
41683        static_assert_rounding!(ROUNDING);
41684        let mut fmadd: f32 = simd_extract!(c, 0);
41685        if (k & 0b00000001) != 0 {
41686            let extracta: f32 = simd_extract!(a, 0);
41687            let extractb: f32 = simd_extract!(b, 0);
41688            fmadd = vfmaddssround(extracta, extractb, fmadd, ROUNDING);
41689        }
41690        simd_insert!(c, 0, fmadd)
41691    }
41692}
41693
41694/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and add the intermediate result to the lower element in c. Store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.\
41695///
41696/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41697/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41698/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41699/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41700/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41701/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41702///
41703/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_fmadd_round_sd&expand=2569)
41704#[inline]
41705#[target_feature(enable = "avx512f")]
41706#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41707#[cfg_attr(test, assert_instr(vfmadd, ROUNDING = 8))]
41708#[rustc_legacy_const_generics(3)]
41709pub fn _mm_fmadd_round_sd<const ROUNDING: i32>(a: __m128d, b: __m128d, c: __m128d) -> __m128d {
41710    unsafe {
41711        static_assert_rounding!(ROUNDING);
41712        let extracta: f64 = simd_extract!(a, 0);
41713        let extractb: f64 = simd_extract!(b, 0);
41714        let extractc: f64 = simd_extract!(c, 0);
41715        let fmadd = vfmaddsdround(extracta, extractb, extractc, ROUNDING);
41716        simd_insert!(a, 0, fmadd)
41717    }
41718}
41719
41720/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and add the intermediate result to the lower element in c. Store the result in the lower element of dst using writemask k (the element is copied from a when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
41721///
41722/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41723/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41724/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41725/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41726/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41727/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41728///
41729/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fmadd_round_sd&expand=2570)
41730#[inline]
41731#[target_feature(enable = "avx512f")]
41732#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41733#[cfg_attr(test, assert_instr(vfmadd, ROUNDING = 8))]
41734#[rustc_legacy_const_generics(4)]
41735pub fn _mm_mask_fmadd_round_sd<const ROUNDING: i32>(
41736    a: __m128d,
41737    k: __mmask8,
41738    b: __m128d,
41739    c: __m128d,
41740) -> __m128d {
41741    unsafe {
41742        static_assert_rounding!(ROUNDING);
41743        let mut fmadd: f64 = simd_extract!(a, 0);
41744        if (k & 0b00000001) != 0 {
41745            let extractb: f64 = simd_extract!(b, 0);
41746            let extractc: f64 = simd_extract!(c, 0);
41747            fmadd = vfmaddsdround(fmadd, extractb, extractc, ROUNDING);
41748        }
41749        simd_insert!(a, 0, fmadd)
41750    }
41751}
41752
41753/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and add the intermediate result to the lower element in c. Store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
41754///
41755/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41756/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41757/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41758/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41759/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41760/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41761///
41762/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fmadd_round_sd&expand=2572)
41763#[inline]
41764#[target_feature(enable = "avx512f")]
41765#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41766#[cfg_attr(test, assert_instr(vfmadd, ROUNDING = 8))]
41767#[rustc_legacy_const_generics(4)]
41768pub fn _mm_maskz_fmadd_round_sd<const ROUNDING: i32>(
41769    k: __mmask8,
41770    a: __m128d,
41771    b: __m128d,
41772    c: __m128d,
41773) -> __m128d {
41774    unsafe {
41775        static_assert_rounding!(ROUNDING);
41776        let mut fmadd: f64 = 0.;
41777        if (k & 0b00000001) != 0 {
41778            let extracta: f64 = simd_extract!(a, 0);
41779            let extractb: f64 = simd_extract!(b, 0);
41780            let extractc: f64 = simd_extract!(c, 0);
41781            fmadd = vfmaddsdround(extracta, extractb, extractc, ROUNDING);
41782        }
41783        simd_insert!(a, 0, fmadd)
41784    }
41785}
41786
41787/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and add the intermediate result to the lower element in c. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper element from c to the upper element of dst.\
41788///
41789/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41790/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41791/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41792/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41793/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41794/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41795///
41796/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask3_fmadd_round_sd&expand=2571)
41797#[inline]
41798#[target_feature(enable = "avx512f")]
41799#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41800#[cfg_attr(test, assert_instr(vfmadd, ROUNDING = 8))]
41801#[rustc_legacy_const_generics(4)]
41802pub fn _mm_mask3_fmadd_round_sd<const ROUNDING: i32>(
41803    a: __m128d,
41804    b: __m128d,
41805    c: __m128d,
41806    k: __mmask8,
41807) -> __m128d {
41808    unsafe {
41809        static_assert_rounding!(ROUNDING);
41810        let mut fmadd: f64 = simd_extract!(c, 0);
41811        if (k & 0b00000001) != 0 {
41812            let extracta: f64 = simd_extract!(a, 0);
41813            let extractb: f64 = simd_extract!(b, 0);
41814            fmadd = vfmaddsdround(extracta, extractb, fmadd, ROUNDING);
41815        }
41816        simd_insert!(c, 0, fmadd)
41817    }
41818}
41819
41820/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and subtract the lower element in c from the intermediate result. Store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.\
41821///
41822/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41823/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41824/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41825/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41826/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41827/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41828///
41829/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_fmsub_round_ss&expand=2659)
41830#[inline]
41831#[target_feature(enable = "avx512f")]
41832#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41833#[cfg_attr(test, assert_instr(vfmsub, ROUNDING = 8))]
41834#[rustc_legacy_const_generics(3)]
41835pub fn _mm_fmsub_round_ss<const ROUNDING: i32>(a: __m128, b: __m128, c: __m128) -> __m128 {
41836    unsafe {
41837        static_assert_rounding!(ROUNDING);
41838        let extracta: f32 = simd_extract!(a, 0);
41839        let extractb: f32 = simd_extract!(b, 0);
41840        let extractc: f32 = simd_extract!(c, 0);
41841        let extractc = -extractc;
41842        let fmsub = vfmaddssround(extracta, extractb, extractc, ROUNDING);
41843        simd_insert!(a, 0, fmsub)
41844    }
41845}
41846
41847/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and subtract the lower element in c from the intermediate result. Store the result in the lower element of dst using writemask k (the element is copied from a when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
41848///
41849/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41850/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41851/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41852/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41853/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41854/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41855///
41856/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fmsub_round_ss&expand=2660)
41857#[inline]
41858#[target_feature(enable = "avx512f")]
41859#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41860#[cfg_attr(test, assert_instr(vfmsub, ROUNDING = 8))]
41861#[rustc_legacy_const_generics(4)]
41862pub fn _mm_mask_fmsub_round_ss<const ROUNDING: i32>(
41863    a: __m128,
41864    k: __mmask8,
41865    b: __m128,
41866    c: __m128,
41867) -> __m128 {
41868    unsafe {
41869        static_assert_rounding!(ROUNDING);
41870        let mut fmsub: f32 = simd_extract!(a, 0);
41871        if (k & 0b00000001) != 0 {
41872            let extractb: f32 = simd_extract!(b, 0);
41873            let extractc: f32 = simd_extract!(c, 0);
41874            let extractc = -extractc;
41875            fmsub = vfmaddssround(fmsub, extractb, extractc, ROUNDING);
41876        }
41877        simd_insert!(a, 0, fmsub)
41878    }
41879}
41880
41881/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and subtract the lower element in c from the intermediate result. Store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
41882///
41883/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41884/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41885/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41886/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41887/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41888/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41889///
41890/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fmsub_round_ss&expand=2662)
41891#[inline]
41892#[target_feature(enable = "avx512f")]
41893#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41894#[cfg_attr(test, assert_instr(vfmsub, ROUNDING = 8))]
41895#[rustc_legacy_const_generics(4)]
41896pub fn _mm_maskz_fmsub_round_ss<const ROUNDING: i32>(
41897    k: __mmask8,
41898    a: __m128,
41899    b: __m128,
41900    c: __m128,
41901) -> __m128 {
41902    unsafe {
41903        static_assert_rounding!(ROUNDING);
41904        let mut fmsub: f32 = 0.;
41905        if (k & 0b00000001) != 0 {
41906            let extracta: f32 = simd_extract!(a, 0);
41907            let extractb: f32 = simd_extract!(b, 0);
41908            let extractc: f32 = simd_extract!(c, 0);
41909            let extractc = -extractc;
41910            fmsub = vfmaddssround(extracta, extractb, extractc, ROUNDING);
41911        }
41912        simd_insert!(a, 0, fmsub)
41913    }
41914}
41915
41916/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and subtract the lower element in c from the intermediate result. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper 3 packed elements from c to the upper elements of dst.\
41917///
41918/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41919/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41920/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41921/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41922/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41923/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41924///
41925/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask3_fmsub_round_ss&expand=2661)
41926#[inline]
41927#[target_feature(enable = "avx512f")]
41928#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41929#[cfg_attr(test, assert_instr(vfmsub, ROUNDING = 8))]
41930#[rustc_legacy_const_generics(4)]
41931pub fn _mm_mask3_fmsub_round_ss<const ROUNDING: i32>(
41932    a: __m128,
41933    b: __m128,
41934    c: __m128,
41935    k: __mmask8,
41936) -> __m128 {
41937    unsafe {
41938        static_assert_rounding!(ROUNDING);
41939        let mut fmsub: f32 = simd_extract!(c, 0);
41940        if (k & 0b00000001) != 0 {
41941            let extracta: f32 = simd_extract!(a, 0);
41942            let extractb: f32 = simd_extract!(b, 0);
41943            let extractc = -fmsub;
41944            fmsub = vfmaddssround(extracta, extractb, extractc, ROUNDING);
41945        }
41946        simd_insert!(c, 0, fmsub)
41947    }
41948}
41949
41950/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and subtract the lower element in c from the intermediate result. Store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.\
41951///
41952/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41953/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41954/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41955/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41956/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41957/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41958///
41959/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_fmsub_round_sd&expand=2655)
41960#[inline]
41961#[target_feature(enable = "avx512f")]
41962#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41963#[cfg_attr(test, assert_instr(vfmsub, ROUNDING = 8))]
41964#[rustc_legacy_const_generics(3)]
41965pub fn _mm_fmsub_round_sd<const ROUNDING: i32>(a: __m128d, b: __m128d, c: __m128d) -> __m128d {
41966    unsafe {
41967        static_assert_rounding!(ROUNDING);
41968        let extracta: f64 = simd_extract!(a, 0);
41969        let extractb: f64 = simd_extract!(b, 0);
41970        let extractc: f64 = simd_extract!(c, 0);
41971        let extractc = -extractc;
41972        let fmsub = vfmaddsdround(extracta, extractb, extractc, ROUNDING);
41973        simd_insert!(a, 0, fmsub)
41974    }
41975}
41976
41977/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and subtract the lower element in c from the intermediate result. Store the result in the lower element of dst using writemask k (the element is copied from a when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
41978///
41979/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
41980/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
41981/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
41982/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
41983/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
41984/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
41985///
41986/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fmsub_round_sd&expand=2656)
41987#[inline]
41988#[target_feature(enable = "avx512f")]
41989#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
41990#[cfg_attr(test, assert_instr(vfmsub, ROUNDING = 8))]
41991#[rustc_legacy_const_generics(4)]
41992pub fn _mm_mask_fmsub_round_sd<const ROUNDING: i32>(
41993    a: __m128d,
41994    k: __mmask8,
41995    b: __m128d,
41996    c: __m128d,
41997) -> __m128d {
41998    unsafe {
41999        static_assert_rounding!(ROUNDING);
42000        let mut fmsub: f64 = simd_extract!(a, 0);
42001        if (k & 0b00000001) != 0 {
42002            let extractb: f64 = simd_extract!(b, 0);
42003            let extractc: f64 = simd_extract!(c, 0);
42004            let extractc = -extractc;
42005            fmsub = vfmaddsdround(fmsub, extractb, extractc, ROUNDING);
42006        }
42007        simd_insert!(a, 0, fmsub)
42008    }
42009}
42010
42011/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and subtract the lower element in c from the intermediate result. Store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
42012///
42013/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
42014/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
42015/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
42016/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
42017/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
42018/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
42019///
42020/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fmsub_round_sd&expand=2658)
42021#[inline]
42022#[target_feature(enable = "avx512f")]
42023#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42024#[cfg_attr(test, assert_instr(vfmsub, ROUNDING = 8))]
42025#[rustc_legacy_const_generics(4)]
42026pub fn _mm_maskz_fmsub_round_sd<const ROUNDING: i32>(
42027    k: __mmask8,
42028    a: __m128d,
42029    b: __m128d,
42030    c: __m128d,
42031) -> __m128d {
42032    unsafe {
42033        static_assert_rounding!(ROUNDING);
42034        let mut fmsub: f64 = 0.;
42035        if (k & 0b00000001) != 0 {
42036            let extracta: f64 = simd_extract!(a, 0);
42037            let extractb: f64 = simd_extract!(b, 0);
42038            let extractc: f64 = simd_extract!(c, 0);
42039            let extractc = -extractc;
42040            fmsub = vfmaddsdround(extracta, extractb, extractc, ROUNDING);
42041        }
42042        simd_insert!(a, 0, fmsub)
42043    }
42044}
42045
42046/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and subtract the lower element in c from the intermediate result. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper element from c to the upper element of dst.\
42047///
42048/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
42049/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
42050/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
42051/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
42052/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
42053/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
42054///
42055/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask3_fmsub_round_sd&expand=2657)
42056#[inline]
42057#[target_feature(enable = "avx512f")]
42058#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42059#[cfg_attr(test, assert_instr(vfmsub, ROUNDING = 8))]
42060#[rustc_legacy_const_generics(4)]
42061pub fn _mm_mask3_fmsub_round_sd<const ROUNDING: i32>(
42062    a: __m128d,
42063    b: __m128d,
42064    c: __m128d,
42065    k: __mmask8,
42066) -> __m128d {
42067    unsafe {
42068        static_assert_rounding!(ROUNDING);
42069        let mut fmsub: f64 = simd_extract!(c, 0);
42070        if (k & 0b00000001) != 0 {
42071            let extracta: f64 = simd_extract!(a, 0);
42072            let extractb: f64 = simd_extract!(b, 0);
42073            let extractc = -fmsub;
42074            fmsub = vfmaddsdround(extracta, extractb, extractc, ROUNDING);
42075        }
42076        simd_insert!(c, 0, fmsub)
42077    }
42078}
42079
42080/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and add the negated intermediate result to the lower element in c. Store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.\
42081///
42082/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
42083/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
42084/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
42085/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
42086/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
42087/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
42088///
42089/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_fnmadd_round_ss&expand=2739)
42090#[inline]
42091#[target_feature(enable = "avx512f")]
42092#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42093#[cfg_attr(test, assert_instr(vfnmadd, ROUNDING = 8))]
42094#[rustc_legacy_const_generics(3)]
42095pub fn _mm_fnmadd_round_ss<const ROUNDING: i32>(a: __m128, b: __m128, c: __m128) -> __m128 {
42096    unsafe {
42097        static_assert_rounding!(ROUNDING);
42098        let extracta: f32 = simd_extract!(a, 0);
42099        let extracta = -extracta;
42100        let extractb: f32 = simd_extract!(b, 0);
42101        let extractc: f32 = simd_extract!(c, 0);
42102        let fnmadd = vfmaddssround(extracta, extractb, extractc, ROUNDING);
42103        simd_insert!(a, 0, fnmadd)
42104    }
42105}
42106
42107/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and add the negated intermediate result to the lower element in c. Store the result in the lower element of dst using writemask k (the element is copied from a when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
42108///
42109/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
42110/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
42111/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
42112/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
42113/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
42114/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
42115///
42116/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fnmadd_round_ss&expand=2740)
42117#[inline]
42118#[target_feature(enable = "avx512f")]
42119#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42120#[cfg_attr(test, assert_instr(vfnmadd, ROUNDING = 8))]
42121#[rustc_legacy_const_generics(4)]
42122pub fn _mm_mask_fnmadd_round_ss<const ROUNDING: i32>(
42123    a: __m128,
42124    k: __mmask8,
42125    b: __m128,
42126    c: __m128,
42127) -> __m128 {
42128    unsafe {
42129        static_assert_rounding!(ROUNDING);
42130        let mut fnmadd: f32 = simd_extract!(a, 0);
42131        if (k & 0b00000001) != 0 {
42132            let extracta = -fnmadd;
42133            let extractb: f32 = simd_extract!(b, 0);
42134            let extractc: f32 = simd_extract!(c, 0);
42135            fnmadd = vfmaddssround(extracta, extractb, extractc, ROUNDING);
42136        }
42137        simd_insert!(a, 0, fnmadd)
42138    }
42139}
42140
42141/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and add the negated intermediate result to the lower element in c. Store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
42142///
42143/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
42144/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
42145/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
42146/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
42147/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
42148/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
42149///
42150/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fnmadd_round_ss&expand=2742)
42151#[inline]
42152#[target_feature(enable = "avx512f")]
42153#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42154#[cfg_attr(test, assert_instr(vfnmadd, ROUNDING = 8))]
42155#[rustc_legacy_const_generics(4)]
42156pub fn _mm_maskz_fnmadd_round_ss<const ROUNDING: i32>(
42157    k: __mmask8,
42158    a: __m128,
42159    b: __m128,
42160    c: __m128,
42161) -> __m128 {
42162    unsafe {
42163        static_assert_rounding!(ROUNDING);
42164        let mut fnmadd: f32 = 0.;
42165        if (k & 0b00000001) != 0 {
42166            let extracta: f32 = simd_extract!(a, 0);
42167            let extracta = -extracta;
42168            let extractb: f32 = simd_extract!(b, 0);
42169            let extractc: f32 = simd_extract!(c, 0);
42170            fnmadd = vfmaddssround(extracta, extractb, extractc, ROUNDING);
42171        }
42172        simd_insert!(a, 0, fnmadd)
42173    }
42174}
42175
42176/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and add the negated intermediate result to the lower element in c. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper 3 packed elements from c to the upper elements of dst.\
42177///
42178/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
42179/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
42180/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
42181/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
42182/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
42183/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
42184///
42185/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask3_fnmadd_round_ss&expand=2741)
42186#[inline]
42187#[target_feature(enable = "avx512f")]
42188#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42189#[cfg_attr(test, assert_instr(vfnmadd, ROUNDING = 8))]
42190#[rustc_legacy_const_generics(4)]
42191pub fn _mm_mask3_fnmadd_round_ss<const ROUNDING: i32>(
42192    a: __m128,
42193    b: __m128,
42194    c: __m128,
42195    k: __mmask8,
42196) -> __m128 {
42197    unsafe {
42198        static_assert_rounding!(ROUNDING);
42199        let mut fnmadd: f32 = simd_extract!(c, 0);
42200        if (k & 0b00000001) != 0 {
42201            let extracta: f32 = simd_extract!(a, 0);
42202            let extracta = -extracta;
42203            let extractb: f32 = simd_extract!(b, 0);
42204            fnmadd = vfmaddssround(extracta, extractb, fnmadd, ROUNDING);
42205        }
42206        simd_insert!(c, 0, fnmadd)
42207    }
42208}
42209
42210/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and add the negated intermediate result to the lower element in c. Store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.\
42211///
42212/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
42213/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
42214/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
42215/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
42216/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
42217/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
42218///
42219/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_fnmadd_round_sd&expand=2735)
42220#[inline]
42221#[target_feature(enable = "avx512f")]
42222#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42223#[cfg_attr(test, assert_instr(vfnmadd, ROUNDING = 8))]
42224#[rustc_legacy_const_generics(3)]
42225pub fn _mm_fnmadd_round_sd<const ROUNDING: i32>(a: __m128d, b: __m128d, c: __m128d) -> __m128d {
42226    unsafe {
42227        static_assert_rounding!(ROUNDING);
42228        let extracta: f64 = simd_extract!(a, 0);
42229        let extracta = -extracta;
42230        let extractb: f64 = simd_extract!(b, 0);
42231        let extractc: f64 = simd_extract!(c, 0);
42232        let fnmadd = vfmaddsdround(extracta, extractb, extractc, ROUNDING);
42233        simd_insert!(a, 0, fnmadd)
42234    }
42235}
42236
42237/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and add the negated intermediate result to the lower element in c. Store the result in the lower element of dst using writemask k (the element is copied from a when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
42238///
42239/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
42240/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
42241/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
42242/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
42243/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
42244/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
42245///
42246/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fnmadd_round_sd&expand=2736)
42247#[inline]
42248#[target_feature(enable = "avx512f")]
42249#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42250#[cfg_attr(test, assert_instr(vfnmadd, ROUNDING = 8))]
42251#[rustc_legacy_const_generics(4)]
42252pub fn _mm_mask_fnmadd_round_sd<const ROUNDING: i32>(
42253    a: __m128d,
42254    k: __mmask8,
42255    b: __m128d,
42256    c: __m128d,
42257) -> __m128d {
42258    unsafe {
42259        static_assert_rounding!(ROUNDING);
42260        let mut fnmadd: f64 = simd_extract!(a, 0);
42261        if (k & 0b00000001) != 0 {
42262            let extracta = -fnmadd;
42263            let extractb: f64 = simd_extract!(b, 0);
42264            let extractc: f64 = simd_extract!(c, 0);
42265            fnmadd = vfmaddsdround(extracta, extractb, extractc, ROUNDING);
42266        }
42267        simd_insert!(a, 0, fnmadd)
42268    }
42269}
42270
42271/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and add the negated intermediate result to the lower element in c. Store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
42272///
42273/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
42274/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
42275/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
42276/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
42277/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
42278/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
42279///
42280/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fnmadd_round_sd&expand=2738)
42281#[inline]
42282#[target_feature(enable = "avx512f")]
42283#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42284#[cfg_attr(test, assert_instr(vfnmadd, ROUNDING = 8))]
42285#[rustc_legacy_const_generics(4)]
42286pub fn _mm_maskz_fnmadd_round_sd<const ROUNDING: i32>(
42287    k: __mmask8,
42288    a: __m128d,
42289    b: __m128d,
42290    c: __m128d,
42291) -> __m128d {
42292    unsafe {
42293        static_assert_rounding!(ROUNDING);
42294        let mut fnmadd: f64 = 0.;
42295        if (k & 0b00000001) != 0 {
42296            let extracta: f64 = simd_extract!(a, 0);
42297            let extracta = -extracta;
42298            let extractb: f64 = simd_extract!(b, 0);
42299            let extractc: f64 = simd_extract!(c, 0);
42300            fnmadd = vfmaddsdround(extracta, extractb, extractc, ROUNDING);
42301        }
42302        simd_insert!(a, 0, fnmadd)
42303    }
42304}
42305
42306/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and add the negated intermediate result to the lower element in c. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper element from c to the upper element of dst.\
42307///
42308/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
42309/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
42310/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
42311/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
42312/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
42313/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
42314///
42315/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask3_fnmadd_round_sd&expand=2737)
42316#[inline]
42317#[target_feature(enable = "avx512f")]
42318#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42319#[cfg_attr(test, assert_instr(vfnmadd, ROUNDING = 8))]
42320#[rustc_legacy_const_generics(4)]
42321pub fn _mm_mask3_fnmadd_round_sd<const ROUNDING: i32>(
42322    a: __m128d,
42323    b: __m128d,
42324    c: __m128d,
42325    k: __mmask8,
42326) -> __m128d {
42327    unsafe {
42328        static_assert_rounding!(ROUNDING);
42329        let mut fnmadd: f64 = simd_extract!(c, 0);
42330        if (k & 0b00000001) != 0 {
42331            let extracta: f64 = simd_extract!(a, 0);
42332            let extracta = -extracta;
42333            let extractb: f64 = simd_extract!(b, 0);
42334            fnmadd = vfmaddsdround(extracta, extractb, fnmadd, ROUNDING);
42335        }
42336        simd_insert!(c, 0, fnmadd)
42337    }
42338}
42339
42340/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, subtract the lower element in c from the negated intermediate result, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.\
42341///
42342/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
42343/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
42344/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
42345/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
42346/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
42347/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
42348///
42349/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_fnmsub_round_ss&expand=2787)
42350#[inline]
42351#[target_feature(enable = "avx512f")]
42352#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42353#[cfg_attr(test, assert_instr(vfnmsub, ROUNDING = 8))]
42354#[rustc_legacy_const_generics(3)]
42355pub fn _mm_fnmsub_round_ss<const ROUNDING: i32>(a: __m128, b: __m128, c: __m128) -> __m128 {
42356    unsafe {
42357        static_assert_rounding!(ROUNDING);
42358        let extracta: f32 = simd_extract!(a, 0);
42359        let extracta = -extracta;
42360        let extractb: f32 = simd_extract!(b, 0);
42361        let extractc: f32 = simd_extract!(c, 0);
42362        let extractc = -extractc;
42363        let fnmsub = vfmaddssround(extracta, extractb, extractc, ROUNDING);
42364        simd_insert!(a, 0, fnmsub)
42365    }
42366}
42367
42368/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and subtract the lower element in c from the negated intermediate result. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
42369///
42370/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
42371/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
42372/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
42373/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
42374/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
42375/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
42376///
42377/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fnmsub_round_ss&expand=2788)
42378#[inline]
42379#[target_feature(enable = "avx512f")]
42380#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42381#[cfg_attr(test, assert_instr(vfnmsub, ROUNDING = 8))]
42382#[rustc_legacy_const_generics(4)]
42383pub fn _mm_mask_fnmsub_round_ss<const ROUNDING: i32>(
42384    a: __m128,
42385    k: __mmask8,
42386    b: __m128,
42387    c: __m128,
42388) -> __m128 {
42389    unsafe {
42390        static_assert_rounding!(ROUNDING);
42391        let mut fnmsub: f32 = simd_extract!(a, 0);
42392        if (k & 0b00000001) != 0 {
42393            let extracta = -fnmsub;
42394            let extractb: f32 = simd_extract!(b, 0);
42395            let extractc: f32 = simd_extract!(c, 0);
42396            let extractc = -extractc;
42397            fnmsub = vfmaddssround(extracta, extractb, extractc, ROUNDING);
42398        }
42399        simd_insert!(a, 0, fnmsub)
42400    }
42401}
42402
42403/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, and subtract the lower element in c from the negated intermediate result. Store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
42404///
42405/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
42406/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
42407/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
42408/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
42409/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
42410/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
42411///
42412/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fnmsub_round_ss&expand=2790)
42413#[inline]
42414#[target_feature(enable = "avx512f")]
42415#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42416#[cfg_attr(test, assert_instr(vfnmsub, ROUNDING = 8))]
42417#[rustc_legacy_const_generics(4)]
42418pub fn _mm_maskz_fnmsub_round_ss<const ROUNDING: i32>(
42419    k: __mmask8,
42420    a: __m128,
42421    b: __m128,
42422    c: __m128,
42423) -> __m128 {
42424    unsafe {
42425        static_assert_rounding!(ROUNDING);
42426        let mut fnmsub: f32 = 0.;
42427        if (k & 0b00000001) != 0 {
42428            let extracta: f32 = simd_extract!(a, 0);
42429            let extracta = -extracta;
42430            let extractb: f32 = simd_extract!(b, 0);
42431            let extractc: f32 = simd_extract!(c, 0);
42432            let extractc = -extractc;
42433            fnmsub = vfmaddssround(extracta, extractb, extractc, ROUNDING);
42434        }
42435        simd_insert!(a, 0, fnmsub)
42436    }
42437}
42438
42439/// Multiply the lower single-precision (32-bit) floating-point elements in a and b, subtract the lower element in c from the negated intermediate result. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper 3 packed elements from c to the upper elements of dst.\
42440///
42441/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
42442/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
42443/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
42444/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
42445/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
42446/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
42447///
42448/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask3_fnmsub_round_ss&expand=2789)
42449#[inline]
42450#[target_feature(enable = "avx512f")]
42451#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42452#[cfg_attr(test, assert_instr(vfnmsub, ROUNDING = 8))]
42453#[rustc_legacy_const_generics(4)]
42454pub fn _mm_mask3_fnmsub_round_ss<const ROUNDING: i32>(
42455    a: __m128,
42456    b: __m128,
42457    c: __m128,
42458    k: __mmask8,
42459) -> __m128 {
42460    unsafe {
42461        static_assert_rounding!(ROUNDING);
42462        let mut fnmsub: f32 = simd_extract!(c, 0);
42463        if (k & 0b00000001) != 0 {
42464            let extracta: f32 = simd_extract!(a, 0);
42465            let extracta = -extracta;
42466            let extractb: f32 = simd_extract!(b, 0);
42467            let extractc = -fnmsub;
42468            fnmsub = vfmaddssround(extracta, extractb, extractc, ROUNDING);
42469        }
42470        simd_insert!(c, 0, fnmsub)
42471    }
42472}
42473
42474/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and subtract the lower element in c from the negated intermediate result. Store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.\
42475///
42476/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
42477/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
42478/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
42479/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
42480/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
42481/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
42482///
42483/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_fnmsub_round_sd&expand=2783)
42484#[inline]
42485#[target_feature(enable = "avx512f")]
42486#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42487#[cfg_attr(test, assert_instr(vfnmsub, ROUNDING = 8))]
42488#[rustc_legacy_const_generics(3)]
42489pub fn _mm_fnmsub_round_sd<const ROUNDING: i32>(a: __m128d, b: __m128d, c: __m128d) -> __m128d {
42490    unsafe {
42491        static_assert_rounding!(ROUNDING);
42492        let extracta: f64 = simd_extract!(a, 0);
42493        let extracta = -extracta;
42494        let extractb: f64 = simd_extract!(b, 0);
42495        let extractc: f64 = simd_extract!(c, 0);
42496        let extractc = -extractc;
42497        let fnmsub = vfmaddsdround(extracta, extractb, extractc, ROUNDING);
42498        simd_insert!(a, 0, fnmsub)
42499    }
42500}
42501
42502/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and subtract the lower element in c from the negated intermediate result. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
42503///
42504/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
42505/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
42506/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
42507/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
42508/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
42509/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
42510///
42511/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fnmsub_round_sd&expand=2784)
42512#[inline]
42513#[target_feature(enable = "avx512f")]
42514#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42515#[cfg_attr(test, assert_instr(vfnmsub, ROUNDING = 8))]
42516#[rustc_legacy_const_generics(4)]
42517pub fn _mm_mask_fnmsub_round_sd<const ROUNDING: i32>(
42518    a: __m128d,
42519    k: __mmask8,
42520    b: __m128d,
42521    c: __m128d,
42522) -> __m128d {
42523    unsafe {
42524        static_assert_rounding!(ROUNDING);
42525        let mut fnmsub: f64 = simd_extract!(a, 0);
42526        if (k & 0b00000001) != 0 {
42527            let extracta = -fnmsub;
42528            let extractb: f64 = simd_extract!(b, 0);
42529            let extractc: f64 = simd_extract!(c, 0);
42530            let extractc = -extractc;
42531            fnmsub = vfmaddsdround(extracta, extractb, extractc, ROUNDING);
42532        }
42533        simd_insert!(a, 0, fnmsub)
42534    }
42535}
42536
42537/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and subtract the lower element in c from the negated intermediate result. Store the result in dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
42538///
42539/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
42540/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
42541/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
42542/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
42543/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
42544/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
42545///
42546/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fnmsub_round_sd&expand=2786)
42547#[inline]
42548#[target_feature(enable = "avx512f")]
42549#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42550#[cfg_attr(test, assert_instr(vfnmsub, ROUNDING = 8))]
42551#[rustc_legacy_const_generics(4)]
42552pub fn _mm_maskz_fnmsub_round_sd<const ROUNDING: i32>(
42553    k: __mmask8,
42554    a: __m128d,
42555    b: __m128d,
42556    c: __m128d,
42557) -> __m128d {
42558    unsafe {
42559        static_assert_rounding!(ROUNDING);
42560        let mut fnmsub: f64 = 0.;
42561        if (k & 0b00000001) != 0 {
42562            let extracta: f64 = simd_extract!(a, 0);
42563            let extracta = -extracta;
42564            let extractb: f64 = simd_extract!(b, 0);
42565            let extractc: f64 = simd_extract!(c, 0);
42566            let extractc = -extractc;
42567            fnmsub = vfmaddsdround(extracta, extractb, extractc, ROUNDING);
42568        }
42569        simd_insert!(a, 0, fnmsub)
42570    }
42571}
42572
42573/// Multiply the lower double-precision (64-bit) floating-point elements in a and b, and subtract the lower element in c from the negated intermediate result. Store the result in the lower element of dst using writemask k (the element is copied from c when mask bit 0 is not set), and copy the upper element from c to the upper element of dst.\
42574///
42575/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
42576/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
42577/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
42578/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
42579/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
42580/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
42581///
42582/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask3_fnmsub_round_sd&expand=2785)
42583#[inline]
42584#[target_feature(enable = "avx512f")]
42585#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42586#[cfg_attr(test, assert_instr(vfnmsub, ROUNDING = 8))]
42587#[rustc_legacy_const_generics(4)]
42588pub fn _mm_mask3_fnmsub_round_sd<const ROUNDING: i32>(
42589    a: __m128d,
42590    b: __m128d,
42591    c: __m128d,
42592    k: __mmask8,
42593) -> __m128d {
42594    unsafe {
42595        static_assert_rounding!(ROUNDING);
42596        let mut fnmsub: f64 = simd_extract!(c, 0);
42597        if (k & 0b00000001) != 0 {
42598            let extracta: f64 = simd_extract!(a, 0);
42599            let extracta = -extracta;
42600            let extractb: f64 = simd_extract!(b, 0);
42601            let extractc = -fnmsub;
42602            fnmsub = vfmaddsdround(extracta, extractb, extractc, ROUNDING);
42603        }
42604        simd_insert!(c, 0, fnmsub)
42605    }
42606}
42607
42608/// Fix up the lower single-precision (32-bit) floating-point elements in a and b using the lower 32-bit integer in c, store the result in the lower element of dst, and copy the upper 3 packed elements from b to the upper elements of dst. imm8 is used to set the required flags reporting.
42609///
42610/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_fixupimm_ss&expand=2517)
42611#[inline]
42612#[target_feature(enable = "avx512f")]
42613#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42614#[cfg_attr(test, assert_instr(vfixupimmss, IMM8 = 0))]
42615#[rustc_legacy_const_generics(3)]
42616pub fn _mm_fixupimm_ss<const IMM8: i32>(a: __m128, b: __m128, c: __m128i) -> __m128 {
42617    unsafe {
42618        static_assert_uimm_bits!(IMM8, 8);
42619        let a = a.as_f32x4();
42620        let b = b.as_f32x4();
42621        let c = c.as_i32x4();
42622        let r = vfixupimmss(a, b, c, IMM8, 0b11111111, _MM_FROUND_CUR_DIRECTION);
42623        let fixupimm: f32 = simd_extract!(r, 0);
42624        let r = simd_insert!(b, 0, fixupimm);
42625        transmute(r)
42626    }
42627}
42628
42629/// Fix up the lower single-precision (32-bit) floating-point elements in a and b using the lower 32-bit integer in c, store the result in the lower element of dst using writemask k (the element is copied from a when mask bit 0 is not set), and copy the upper 3 packed elements from b to the upper elements of dst. imm8 is used to set the required flags reporting.
42630///
42631/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fixupimm_ss&expand=2518)
42632#[inline]
42633#[target_feature(enable = "avx512f")]
42634#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42635#[cfg_attr(test, assert_instr(vfixupimmss, IMM8 = 0))]
42636#[rustc_legacy_const_generics(4)]
42637pub fn _mm_mask_fixupimm_ss<const IMM8: i32>(
42638    a: __m128,
42639    k: __mmask8,
42640    b: __m128,
42641    c: __m128i,
42642) -> __m128 {
42643    unsafe {
42644        static_assert_uimm_bits!(IMM8, 8);
42645        let a = a.as_f32x4();
42646        let b = b.as_f32x4();
42647        let c = c.as_i32x4();
42648        let fixupimm = vfixupimmss(a, b, c, IMM8, k, _MM_FROUND_CUR_DIRECTION);
42649        let fixupimm: f32 = simd_extract!(fixupimm, 0);
42650        let r = simd_insert!(b, 0, fixupimm);
42651        transmute(r)
42652    }
42653}
42654
42655/// Fix up the lower single-precision (32-bit) floating-point elements in a and b using the lower 32-bit integer in c, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from b to the upper elements of dst. imm8 is used to set the required flags reporting.
42656///
42657/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fixupimm_ss&expand=2519)
42658#[inline]
42659#[target_feature(enable = "avx512f")]
42660#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42661#[cfg_attr(test, assert_instr(vfixupimmss, IMM8 = 0))]
42662#[rustc_legacy_const_generics(4)]
42663pub fn _mm_maskz_fixupimm_ss<const IMM8: i32>(
42664    k: __mmask8,
42665    a: __m128,
42666    b: __m128,
42667    c: __m128i,
42668) -> __m128 {
42669    unsafe {
42670        static_assert_uimm_bits!(IMM8, 8);
42671        let a = a.as_f32x4();
42672        let b = b.as_f32x4();
42673        let c = c.as_i32x4();
42674        let fixupimm = vfixupimmssz(a, b, c, IMM8, k, _MM_FROUND_CUR_DIRECTION);
42675        let fixupimm: f32 = simd_extract!(fixupimm, 0);
42676        let r = simd_insert!(b, 0, fixupimm);
42677        transmute(r)
42678    }
42679}
42680
42681/// Fix up the lower double-precision (64-bit) floating-point elements in a and b using the lower 64-bit integer in c, store the result in the lower element of dst, and copy the upper element from b to the upper element of dst. imm8 is used to set the required flags reporting.
42682///
42683/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_fixupimm_sd&expand=2514)
42684#[inline]
42685#[target_feature(enable = "avx512f")]
42686#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42687#[cfg_attr(test, assert_instr(vfixupimmsd, IMM8 = 0))]
42688#[rustc_legacy_const_generics(3)]
42689pub fn _mm_fixupimm_sd<const IMM8: i32>(a: __m128d, b: __m128d, c: __m128i) -> __m128d {
42690    unsafe {
42691        static_assert_uimm_bits!(IMM8, 8);
42692        let a = a.as_f64x2();
42693        let b = b.as_f64x2();
42694        let c = c.as_i64x2();
42695        let fixupimm = vfixupimmsd(a, b, c, IMM8, 0b11111111, _MM_FROUND_CUR_DIRECTION);
42696        let fixupimm: f64 = simd_extract!(fixupimm, 0);
42697        let r = simd_insert!(b, 0, fixupimm);
42698        transmute(r)
42699    }
42700}
42701
42702/// Fix up the lower double-precision (64-bit) floating-point elements in a and b using the lower 64-bit integer in c, store the result in the lower element of dst using writemask k (the element is copied from a when mask bit 0 is not set), and copy the upper element from b to the upper element of dst. imm8 is used to set the required flags reporting.
42703///
42704/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fixupimm_sd&expand=2515)
42705#[inline]
42706#[target_feature(enable = "avx512f")]
42707#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42708#[cfg_attr(test, assert_instr(vfixupimmsd, IMM8 = 0))]
42709#[rustc_legacy_const_generics(4)]
42710pub fn _mm_mask_fixupimm_sd<const IMM8: i32>(
42711    a: __m128d,
42712    k: __mmask8,
42713    b: __m128d,
42714    c: __m128i,
42715) -> __m128d {
42716    unsafe {
42717        static_assert_uimm_bits!(IMM8, 8);
42718        let a = a.as_f64x2();
42719        let b = b.as_f64x2();
42720        let c = c.as_i64x2();
42721        let fixupimm = vfixupimmsd(a, b, c, IMM8, k, _MM_FROUND_CUR_DIRECTION);
42722        let fixupimm: f64 = simd_extract!(fixupimm, 0);
42723        let r = simd_insert!(b, 0, fixupimm);
42724        transmute(r)
42725    }
42726}
42727
42728/// Fix up the lower double-precision (64-bit) floating-point elements in a and b using the lower 64-bit integer in c, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from b to the upper element of dst. imm8 is used to set the required flags reporting.
42729///
42730/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fixupimm_sd&expand=2516)
42731#[inline]
42732#[target_feature(enable = "avx512f")]
42733#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42734#[cfg_attr(test, assert_instr(vfixupimmsd, IMM8 = 0))]
42735#[rustc_legacy_const_generics(4)]
42736pub fn _mm_maskz_fixupimm_sd<const IMM8: i32>(
42737    k: __mmask8,
42738    a: __m128d,
42739    b: __m128d,
42740    c: __m128i,
42741) -> __m128d {
42742    unsafe {
42743        static_assert_uimm_bits!(IMM8, 8);
42744        let a = a.as_f64x2();
42745        let b = b.as_f64x2();
42746        let c = c.as_i64x2();
42747        let fixupimm = vfixupimmsdz(a, b, c, IMM8, k, _MM_FROUND_CUR_DIRECTION);
42748        let fixupimm: f64 = simd_extract!(fixupimm, 0);
42749        let r = simd_insert!(b, 0, fixupimm);
42750        transmute(r)
42751    }
42752}
42753
42754/// Fix up the lower single-precision (32-bit) floating-point elements in a and b using the lower 32-bit integer in c, store the result in the lower element of dst, and copy the upper 3 packed elements from b to the upper elements of dst. imm8 is used to set the required flags reporting.\
42755/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
42756///
42757/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_fixupimm_round_ss&expand=2511)
42758#[inline]
42759#[target_feature(enable = "avx512f")]
42760#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42761#[cfg_attr(test, assert_instr(vfixupimmss, IMM8 = 0, SAE = 8))]
42762#[rustc_legacy_const_generics(3, 4)]
42763pub fn _mm_fixupimm_round_ss<const IMM8: i32, const SAE: i32>(
42764    a: __m128,
42765    b: __m128,
42766    c: __m128i,
42767) -> __m128 {
42768    unsafe {
42769        static_assert_uimm_bits!(IMM8, 8);
42770        static_assert_mantissas_sae!(SAE);
42771        let a = a.as_f32x4();
42772        let b = b.as_f32x4();
42773        let c = c.as_i32x4();
42774        let r = vfixupimmss(a, b, c, IMM8, 0b11111111, SAE);
42775        let fixupimm: f32 = simd_extract!(r, 0);
42776        let r = simd_insert!(b, 0, fixupimm);
42777        transmute(r)
42778    }
42779}
42780
42781/// Fix up the lower single-precision (32-bit) floating-point elements in a and b using the lower 32-bit integer in c, store the result in the lower element of dst using writemask k (the element is copied from a when mask bit 0 is not set), and copy the upper 3 packed elements from b to the upper elements of dst. imm8 is used to set the required flags reporting.\
42782/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
42783///
42784/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fixupimm_round_ss&expand=2512)
42785#[inline]
42786#[target_feature(enable = "avx512f")]
42787#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42788#[cfg_attr(test, assert_instr(vfixupimmss, IMM8 = 0, SAE = 8))]
42789#[rustc_legacy_const_generics(4, 5)]
42790pub fn _mm_mask_fixupimm_round_ss<const IMM8: i32, const SAE: i32>(
42791    a: __m128,
42792    k: __mmask8,
42793    b: __m128,
42794    c: __m128i,
42795) -> __m128 {
42796    unsafe {
42797        static_assert_uimm_bits!(IMM8, 8);
42798        static_assert_mantissas_sae!(SAE);
42799        let a = a.as_f32x4();
42800        let b = b.as_f32x4();
42801        let c = c.as_i32x4();
42802        let r = vfixupimmss(a, b, c, IMM8, k, SAE);
42803        let fixupimm: f32 = simd_extract!(r, 0);
42804        let r = simd_insert!(b, 0, fixupimm);
42805        transmute(r)
42806    }
42807}
42808
42809/// Fix up the lower single-precision (32-bit) floating-point elements in a and b using the lower 32-bit integer in c, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from b to the upper elements of dst. imm8 is used to set the required flags reporting.\
42810/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
42811///
42812/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fixupimm_round_ss&expand=2513)
42813#[inline]
42814#[target_feature(enable = "avx512f")]
42815#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42816#[cfg_attr(test, assert_instr(vfixupimmss, IMM8 = 0, SAE = 8))]
42817#[rustc_legacy_const_generics(4, 5)]
42818pub fn _mm_maskz_fixupimm_round_ss<const IMM8: i32, const SAE: i32>(
42819    k: __mmask8,
42820    a: __m128,
42821    b: __m128,
42822    c: __m128i,
42823) -> __m128 {
42824    unsafe {
42825        static_assert_uimm_bits!(IMM8, 8);
42826        static_assert_mantissas_sae!(SAE);
42827        let a = a.as_f32x4();
42828        let b = b.as_f32x4();
42829        let c = c.as_i32x4();
42830        let r = vfixupimmssz(a, b, c, IMM8, k, SAE);
42831        let fixupimm: f32 = simd_extract!(r, 0);
42832        let r = simd_insert!(b, 0, fixupimm);
42833        transmute(r)
42834    }
42835}
42836
42837/// Fix up the lower double-precision (64-bit) floating-point elements in a and b using the lower 64-bit integer in c, store the result in the lower element of dst, and copy the upper element from b to the upper element of dst. imm8 is used to set the required flags reporting.\
42838/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
42839///
42840/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_fixupimm_round_sd&expand=2508)
42841#[inline]
42842#[target_feature(enable = "avx512f")]
42843#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42844#[cfg_attr(test, assert_instr(vfixupimmsd, IMM8 = 0, SAE = 8))]
42845#[rustc_legacy_const_generics(3, 4)]
42846pub fn _mm_fixupimm_round_sd<const IMM8: i32, const SAE: i32>(
42847    a: __m128d,
42848    b: __m128d,
42849    c: __m128i,
42850) -> __m128d {
42851    unsafe {
42852        static_assert_uimm_bits!(IMM8, 8);
42853        static_assert_mantissas_sae!(SAE);
42854        let a = a.as_f64x2();
42855        let b = b.as_f64x2();
42856        let c = c.as_i64x2();
42857        let r = vfixupimmsd(a, b, c, IMM8, 0b11111111, SAE);
42858        let fixupimm: f64 = simd_extract!(r, 0);
42859        let r = simd_insert!(b, 0, fixupimm);
42860        transmute(r)
42861    }
42862}
42863
42864/// Fix up the lower double-precision (64-bit) floating-point elements in a and b using the lower 64-bit integer in c, store the result in the lower element of dst using writemask k (the element is copied from a when mask bit 0 is not set), and copy the upper element from b to the upper element of dst. imm8 is used to set the required flags reporting.\
42865/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
42866///
42867/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_fixupimm_round_sd&expand=2509)
42868#[inline]
42869#[target_feature(enable = "avx512f")]
42870#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42871#[cfg_attr(test, assert_instr(vfixupimmsd, IMM8 = 0, SAE = 8))]
42872#[rustc_legacy_const_generics(4, 5)]
42873pub fn _mm_mask_fixupimm_round_sd<const IMM8: i32, const SAE: i32>(
42874    a: __m128d,
42875    k: __mmask8,
42876    b: __m128d,
42877    c: __m128i,
42878) -> __m128d {
42879    unsafe {
42880        static_assert_uimm_bits!(IMM8, 8);
42881        static_assert_mantissas_sae!(SAE);
42882        let a = a.as_f64x2();
42883        let b = b.as_f64x2();
42884        let c = c.as_i64x2();
42885        let r = vfixupimmsd(a, b, c, IMM8, k, SAE);
42886        let fixupimm: f64 = simd_extract!(r, 0);
42887        let r = simd_insert!(b, 0, fixupimm);
42888        transmute(r)
42889    }
42890}
42891
42892/// Fix up the lower double-precision (64-bit) floating-point elements in a and b using the lower 64-bit integer in c, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from b to the upper element of dst. imm8 is used to set the required flags reporting.\
42893/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
42894///
42895/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_fixupimm_round_sd&expand=2510)
42896#[inline]
42897#[target_feature(enable = "avx512f")]
42898#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42899#[cfg_attr(test, assert_instr(vfixupimmsd, IMM8 = 0, SAE = 8))]
42900#[rustc_legacy_const_generics(4, 5)]
42901pub fn _mm_maskz_fixupimm_round_sd<const IMM8: i32, const SAE: i32>(
42902    k: __mmask8,
42903    a: __m128d,
42904    b: __m128d,
42905    c: __m128i,
42906) -> __m128d {
42907    unsafe {
42908        static_assert_uimm_bits!(IMM8, 8);
42909        static_assert_mantissas_sae!(SAE);
42910        let a = a.as_f64x2();
42911        let b = b.as_f64x2();
42912        let c = c.as_i64x2();
42913        let r = vfixupimmsdz(a, b, c, IMM8, k, SAE);
42914        let fixupimm: f64 = simd_extract!(r, 0);
42915        let r = simd_insert!(b, 0, fixupimm);
42916        transmute(r)
42917    }
42918}
42919
42920/// Convert the lower single-precision (32-bit) floating-point element in b to a double-precision (64-bit) floating-point element, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
42921///
42922/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_cvtss_sd&expand=1896)
42923#[inline]
42924#[target_feature(enable = "avx512f")]
42925#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42926#[cfg_attr(test, assert_instr(vcvtss2sd))]
42927pub fn _mm_mask_cvtss_sd(src: __m128d, k: __mmask8, a: __m128d, b: __m128) -> __m128d {
42928    unsafe {
42929        transmute(vcvtss2sd(
42930            a.as_f64x2(),
42931            b.as_f32x4(),
42932            src.as_f64x2(),
42933            k,
42934            _MM_FROUND_CUR_DIRECTION,
42935        ))
42936    }
42937}
42938
42939/// Convert the lower single-precision (32-bit) floating-point element in b to a double-precision (64-bit) floating-point element, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.
42940///
42941/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_cvtss_sd&expand=1897)
42942#[inline]
42943#[target_feature(enable = "avx512f")]
42944#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42945#[cfg_attr(test, assert_instr(vcvtss2sd))]
42946pub fn _mm_maskz_cvtss_sd(k: __mmask8, a: __m128d, b: __m128) -> __m128d {
42947    unsafe {
42948        transmute(vcvtss2sd(
42949            a.as_f64x2(),
42950            b.as_f32x4(),
42951            f64x2::ZERO,
42952            k,
42953            _MM_FROUND_CUR_DIRECTION,
42954        ))
42955    }
42956}
42957
42958/// Convert the lower double-precision (64-bit) floating-point element in b to a single-precision (32-bit) floating-point element, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
42959///
42960/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_cvtsd_ss&expand=1797)
42961#[inline]
42962#[target_feature(enable = "avx512f")]
42963#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42964#[cfg_attr(test, assert_instr(vcvtsd2ss))]
42965pub fn _mm_mask_cvtsd_ss(src: __m128, k: __mmask8, a: __m128, b: __m128d) -> __m128 {
42966    unsafe {
42967        transmute(vcvtsd2ss(
42968            a.as_f32x4(),
42969            b.as_f64x2(),
42970            src.as_f32x4(),
42971            k,
42972            _MM_FROUND_CUR_DIRECTION,
42973        ))
42974    }
42975}
42976
42977/// Convert the lower double-precision (64-bit) floating-point element in b to a single-precision (32-bit) floating-point element, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.
42978///
42979/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_cvtsd_ss&expand=1798)
42980#[inline]
42981#[target_feature(enable = "avx512f")]
42982#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
42983#[cfg_attr(test, assert_instr(vcvtsd2ss))]
42984pub fn _mm_maskz_cvtsd_ss(k: __mmask8, a: __m128, b: __m128d) -> __m128 {
42985    unsafe {
42986        transmute(vcvtsd2ss(
42987            a.as_f32x4(),
42988            b.as_f64x2(),
42989            f32x4::ZERO,
42990            k,
42991            _MM_FROUND_CUR_DIRECTION,
42992        ))
42993    }
42994}
42995
42996/// Convert the lower single-precision (32-bit) floating-point element in b to a double-precision (64-bit) floating-point element, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.\
42997/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
42998///
42999/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvt_roundss_sd&expand=1371)
43000#[inline]
43001#[target_feature(enable = "avx512f")]
43002#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43003#[cfg_attr(test, assert_instr(vcvtss2sd, SAE = 8))]
43004#[rustc_legacy_const_generics(2)]
43005pub fn _mm_cvt_roundss_sd<const SAE: i32>(a: __m128d, b: __m128) -> __m128d {
43006    unsafe {
43007        static_assert_sae!(SAE);
43008        let a = a.as_f64x2();
43009        let b = b.as_f32x4();
43010        let r = vcvtss2sd(a, b, f64x2::ZERO, 0b11111111, SAE);
43011        transmute(r)
43012    }
43013}
43014
43015/// Convert the lower single-precision (32-bit) floating-point element in b to a double-precision (64-bit) floating-point element, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
43016/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
43017///
43018/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_cvt_roundss_sd&expand=1372)
43019#[inline]
43020#[target_feature(enable = "avx512f")]
43021#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43022#[cfg_attr(test, assert_instr(vcvtss2sd, SAE = 8))]
43023#[rustc_legacy_const_generics(4)]
43024pub fn _mm_mask_cvt_roundss_sd<const SAE: i32>(
43025    src: __m128d,
43026    k: __mmask8,
43027    a: __m128d,
43028    b: __m128,
43029) -> __m128d {
43030    unsafe {
43031        static_assert_sae!(SAE);
43032        let a = a.as_f64x2();
43033        let b = b.as_f32x4();
43034        let src = src.as_f64x2();
43035        let r = vcvtss2sd(a, b, src, k, SAE);
43036        transmute(r)
43037    }
43038}
43039
43040/// Convert the lower single-precision (32-bit) floating-point element in b to a double-precision (64-bit) floating-point element, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper element from a to the upper element of dst.\
43041/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
43042///
43043/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_cvt_roundss_sd&expand=1373)
43044#[inline]
43045#[target_feature(enable = "avx512f")]
43046#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43047#[cfg_attr(test, assert_instr(vcvtss2sd, SAE = 8))]
43048#[rustc_legacy_const_generics(3)]
43049pub fn _mm_maskz_cvt_roundss_sd<const SAE: i32>(k: __mmask8, a: __m128d, b: __m128) -> __m128d {
43050    unsafe {
43051        static_assert_sae!(SAE);
43052        let a = a.as_f64x2();
43053        let b = b.as_f32x4();
43054        let r = vcvtss2sd(a, b, f64x2::ZERO, k, SAE);
43055        transmute(r)
43056    }
43057}
43058
43059/// Convert the lower double-precision (64-bit) floating-point element in b to a single-precision (32-bit) floating-point element, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.\
43060/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
43061/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
43062/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
43063/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
43064/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
43065/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
43066///
43067/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvt_roundsd_ss&expand=1361)
43068#[inline]
43069#[target_feature(enable = "avx512f")]
43070#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43071#[cfg_attr(test, assert_instr(vcvtsd2ss, ROUNDING = 8))]
43072#[rustc_legacy_const_generics(2)]
43073pub fn _mm_cvt_roundsd_ss<const ROUNDING: i32>(a: __m128, b: __m128d) -> __m128 {
43074    unsafe {
43075        static_assert_rounding!(ROUNDING);
43076        let a = a.as_f32x4();
43077        let b = b.as_f64x2();
43078        let r = vcvtsd2ss(a, b, f32x4::ZERO, 0b11111111, ROUNDING);
43079        transmute(r)
43080    }
43081}
43082
43083/// Convert the lower double-precision (64-bit) floating-point element in b to a single-precision (32-bit) floating-point element, store the result in the lower element of dst using writemask k (the element is copied from src when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
43084/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
43085/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
43086/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
43087/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
43088/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
43089/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
43090///
43091/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mask_cvt_roundsd_ss&expand=1362)
43092#[inline]
43093#[target_feature(enable = "avx512f")]
43094#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43095#[cfg_attr(test, assert_instr(vcvtsd2ss, ROUNDING = 8))]
43096#[rustc_legacy_const_generics(4)]
43097pub fn _mm_mask_cvt_roundsd_ss<const ROUNDING: i32>(
43098    src: __m128,
43099    k: __mmask8,
43100    a: __m128,
43101    b: __m128d,
43102) -> __m128 {
43103    unsafe {
43104        static_assert_rounding!(ROUNDING);
43105        let a = a.as_f32x4();
43106        let b = b.as_f64x2();
43107        let src = src.as_f32x4();
43108        let r = vcvtsd2ss(a, b, src, k, ROUNDING);
43109        transmute(r)
43110    }
43111}
43112
43113/// Convert the lower double-precision (64-bit) floating-point element in b to a single-precision (32-bit) floating-point element, store the result in the lower element of dst using zeromask k (the element is zeroed out when mask bit 0 is not set), and copy the upper 3 packed elements from a to the upper elements of dst.\
43114/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
43115/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
43116/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
43117/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
43118/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
43119/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
43120///
43121/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_maskz_cvt_roundsd_ss&expand=1363)
43122#[inline]
43123#[target_feature(enable = "avx512f")]
43124#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43125#[cfg_attr(test, assert_instr(vcvtsd2ss, ROUNDING = 8))]
43126#[rustc_legacy_const_generics(3)]
43127pub fn _mm_maskz_cvt_roundsd_ss<const ROUNDING: i32>(k: __mmask8, a: __m128, b: __m128d) -> __m128 {
43128    unsafe {
43129        static_assert_rounding!(ROUNDING);
43130        let a = a.as_f32x4();
43131        let b = b.as_f64x2();
43132        let r = vcvtsd2ss(a, b, f32x4::ZERO, k, ROUNDING);
43133        transmute(r)
43134    }
43135}
43136
43137/// Convert the lower single-precision (32-bit) floating-point element in a to a 32-bit integer, and store the result in dst.\
43138/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
43139/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
43140/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
43141/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
43142/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
43143/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
43144///
43145/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvt_roundss_si32&expand=1374)
43146#[inline]
43147#[target_feature(enable = "avx512f")]
43148#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43149#[cfg_attr(test, assert_instr(vcvtss2si, ROUNDING = 8))]
43150#[rustc_legacy_const_generics(1)]
43151pub fn _mm_cvt_roundss_si32<const ROUNDING: i32>(a: __m128) -> i32 {
43152    unsafe {
43153        static_assert_rounding!(ROUNDING);
43154        let a = a.as_f32x4();
43155        vcvtss2si(a, ROUNDING)
43156    }
43157}
43158
43159/// Convert the lower single-precision (32-bit) floating-point element in a to a 32-bit integer, and store the result in dst.\
43160/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
43161/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
43162/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
43163/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
43164/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
43165/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
43166///
43167/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvt_roundss_i32&expand=1369)
43168#[inline]
43169#[target_feature(enable = "avx512f")]
43170#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43171#[cfg_attr(test, assert_instr(vcvtss2si, ROUNDING = 8))]
43172#[rustc_legacy_const_generics(1)]
43173pub fn _mm_cvt_roundss_i32<const ROUNDING: i32>(a: __m128) -> i32 {
43174    unsafe {
43175        static_assert_rounding!(ROUNDING);
43176        let a = a.as_f32x4();
43177        vcvtss2si(a, ROUNDING)
43178    }
43179}
43180
43181/// Convert the lower single-precision (32-bit) floating-point element in a to an unsigned 32-bit integer, and store the result in dst.\
43182/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
43183/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
43184/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
43185/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
43186/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
43187/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
43188///
43189/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvt_roundss_u32&expand=1376)
43190#[inline]
43191#[target_feature(enable = "avx512f")]
43192#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43193#[cfg_attr(test, assert_instr(vcvtss2usi, ROUNDING = 8))]
43194#[rustc_legacy_const_generics(1)]
43195pub fn _mm_cvt_roundss_u32<const ROUNDING: i32>(a: __m128) -> u32 {
43196    unsafe {
43197        static_assert_rounding!(ROUNDING);
43198        let a = a.as_f32x4();
43199        vcvtss2usi(a, ROUNDING)
43200    }
43201}
43202
43203/// Convert the lower single-precision (32-bit) floating-point element in a to a 32-bit integer, and store the result in dst.
43204///
43205/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvtss_i32&expand=1893)
43206#[inline]
43207#[target_feature(enable = "avx512f")]
43208#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43209#[cfg_attr(test, assert_instr(vcvtss2si))]
43210pub fn _mm_cvtss_i32(a: __m128) -> i32 {
43211    unsafe { vcvtss2si(a.as_f32x4(), _MM_FROUND_CUR_DIRECTION) }
43212}
43213
43214/// Convert the lower single-precision (32-bit) floating-point element in a to an unsigned 32-bit integer, and store the result in dst.
43215///
43216/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvtss_u32&expand=1901)
43217#[inline]
43218#[target_feature(enable = "avx512f")]
43219#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43220#[cfg_attr(test, assert_instr(vcvtss2usi))]
43221pub fn _mm_cvtss_u32(a: __m128) -> u32 {
43222    unsafe { vcvtss2usi(a.as_f32x4(), _MM_FROUND_CUR_DIRECTION) }
43223}
43224
43225/// Convert the lower double-precision (64-bit) floating-point element in a to a 32-bit integer, and store the result in dst.\
43226/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
43227/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
43228/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
43229/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
43230/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
43231/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
43232///
43233/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvt_roundsd_si32&expand=1359)
43234#[inline]
43235#[target_feature(enable = "avx512f")]
43236#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43237#[cfg_attr(test, assert_instr(vcvtsd2si, ROUNDING = 8))]
43238#[rustc_legacy_const_generics(1)]
43239pub fn _mm_cvt_roundsd_si32<const ROUNDING: i32>(a: __m128d) -> i32 {
43240    unsafe {
43241        static_assert_rounding!(ROUNDING);
43242        let a = a.as_f64x2();
43243        vcvtsd2si(a, ROUNDING)
43244    }
43245}
43246
43247/// Convert the lower single-precision (32-bit) floating-point element in a to a 32-bit integer, and store the result in dst.\
43248/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
43249/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
43250/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
43251/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
43252/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
43253/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
43254///
43255/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvt_roundsd_i32&expand=1357)
43256#[inline]
43257#[target_feature(enable = "avx512f")]
43258#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43259#[cfg_attr(test, assert_instr(vcvtsd2si, ROUNDING = 8))]
43260#[rustc_legacy_const_generics(1)]
43261pub fn _mm_cvt_roundsd_i32<const ROUNDING: i32>(a: __m128d) -> i32 {
43262    unsafe {
43263        static_assert_rounding!(ROUNDING);
43264        let a = a.as_f64x2();
43265        vcvtsd2si(a, ROUNDING)
43266    }
43267}
43268
43269/// Convert the lower double-precision (64-bit) floating-point element in a to an unsigned 32-bit integer, and store the result in dst.\
43270/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
43271/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
43272/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
43273/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
43274/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
43275/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
43276///
43277/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvt_roundsd_u32&expand=1364)
43278#[inline]
43279#[target_feature(enable = "avx512f")]
43280#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43281#[cfg_attr(test, assert_instr(vcvtsd2usi, ROUNDING = 8))]
43282#[rustc_legacy_const_generics(1)]
43283pub fn _mm_cvt_roundsd_u32<const ROUNDING: i32>(a: __m128d) -> u32 {
43284    unsafe {
43285        static_assert_rounding!(ROUNDING);
43286        let a = a.as_f64x2();
43287        vcvtsd2usi(a, ROUNDING)
43288    }
43289}
43290
43291/// Convert the lower double-precision (64-bit) floating-point element in a to a 32-bit integer, and store the result in dst.
43292///
43293/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvtsd_i32&expand=1791)
43294#[inline]
43295#[target_feature(enable = "avx512f")]
43296#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43297#[cfg_attr(test, assert_instr(vcvtsd2si))]
43298pub fn _mm_cvtsd_i32(a: __m128d) -> i32 {
43299    unsafe { vcvtsd2si(a.as_f64x2(), _MM_FROUND_CUR_DIRECTION) }
43300}
43301
43302/// Convert the lower double-precision (64-bit) floating-point element in a to an unsigned 32-bit integer, and store the result in dst.
43303///
43304/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvtsd_u32&expand=1799)
43305#[inline]
43306#[target_feature(enable = "avx512f")]
43307#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43308#[cfg_attr(test, assert_instr(vcvtsd2usi))]
43309pub fn _mm_cvtsd_u32(a: __m128d) -> u32 {
43310    unsafe { vcvtsd2usi(a.as_f64x2(), _MM_FROUND_CUR_DIRECTION) }
43311}
43312
43313/// Convert the signed 32-bit integer b to a single-precision (32-bit) floating-point element, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.\
43314///
43315/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
43316/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
43317/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
43318/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
43319/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
43320/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
43321///
43322/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvt_roundi32_ss&expand=1312)
43323#[inline]
43324#[target_feature(enable = "avx512f")]
43325#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43326#[cfg_attr(test, assert_instr(vcvtsi2ss, ROUNDING = 8))]
43327#[rustc_legacy_const_generics(2)]
43328pub fn _mm_cvt_roundi32_ss<const ROUNDING: i32>(a: __m128, b: i32) -> __m128 {
43329    unsafe {
43330        static_assert_rounding!(ROUNDING);
43331        let a = a.as_f32x4();
43332        let r = vcvtsi2ss(a, b, ROUNDING);
43333        transmute(r)
43334    }
43335}
43336
43337/// Convert the signed 32-bit integer b to a single-precision (32-bit) floating-point element, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.\
43338///
43339/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
43340/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
43341/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
43342/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
43343/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
43344/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
43345///
43346/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvt_roundsi32_ss&expand=1366)
43347#[inline]
43348#[target_feature(enable = "avx512f")]
43349#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43350#[cfg_attr(test, assert_instr(vcvtsi2ss, ROUNDING = 8))]
43351#[rustc_legacy_const_generics(2)]
43352pub fn _mm_cvt_roundsi32_ss<const ROUNDING: i32>(a: __m128, b: i32) -> __m128 {
43353    unsafe {
43354        static_assert_rounding!(ROUNDING);
43355        let a = a.as_f32x4();
43356        let r = vcvtsi2ss(a, b, ROUNDING);
43357        transmute(r)
43358    }
43359}
43360
43361/// Convert the unsigned 32-bit integer b to a single-precision (32-bit) floating-point element, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.\
43362/// Rounding is done according to the rounding\[3:0\] parameter, which can be one of:\
43363/// * [`_MM_FROUND_TO_NEAREST_INT`] | [`_MM_FROUND_NO_EXC`] : round to nearest and suppress exceptions
43364/// * [`_MM_FROUND_TO_NEG_INF`] | [`_MM_FROUND_NO_EXC`] : round down and suppress exceptions
43365/// * [`_MM_FROUND_TO_POS_INF`] | [`_MM_FROUND_NO_EXC`] : round up and suppress exceptions
43366/// * [`_MM_FROUND_TO_ZERO`] | [`_MM_FROUND_NO_EXC`] : truncate and suppress exceptions
43367/// * [`_MM_FROUND_CUR_DIRECTION`] : use `MXCSR.RC` - see [`_MM_SET_ROUNDING_MODE`]
43368///
43369/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvt_roundu32_ss&expand=1378)
43370#[inline]
43371#[target_feature(enable = "avx512f")]
43372#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43373#[cfg_attr(test, assert_instr(vcvtusi2ss, ROUNDING = 8))]
43374#[rustc_legacy_const_generics(2)]
43375pub fn _mm_cvt_roundu32_ss<const ROUNDING: i32>(a: __m128, b: u32) -> __m128 {
43376    unsafe {
43377        static_assert_rounding!(ROUNDING);
43378        let a = a.as_f32x4();
43379        let r = vcvtusi2ss(a, b, ROUNDING);
43380        transmute(r)
43381    }
43382}
43383
43384/// Convert the signed 32-bit integer b to a single-precision (32-bit) floating-point element, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.
43385///
43386/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvti32_ss&expand=1643)
43387#[inline]
43388#[target_feature(enable = "avx512f")]
43389#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43390#[cfg_attr(test, assert_instr(vcvtsi2ss))]
43391#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
43392pub const fn _mm_cvti32_ss(a: __m128, b: i32) -> __m128 {
43393    unsafe {
43394        let b = b as f32;
43395        simd_insert!(a, 0, b)
43396    }
43397}
43398
43399/// Convert the signed 32-bit integer b to a double-precision (64-bit) floating-point element, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.
43400///
43401/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvti32_sd&expand=1642)
43402#[inline]
43403#[target_feature(enable = "avx512f")]
43404#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43405#[cfg_attr(test, assert_instr(vcvtsi2sd))]
43406#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
43407pub const fn _mm_cvti32_sd(a: __m128d, b: i32) -> __m128d {
43408    unsafe {
43409        let b = b as f64;
43410        simd_insert!(a, 0, b)
43411    }
43412}
43413
43414/// Convert the lower single-precision (32-bit) floating-point element in a to a 32-bit integer with truncation, and store the result in dst.\
43415/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
43416///
43417/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvtt_roundss_si32&expand=1936)
43418#[inline]
43419#[target_feature(enable = "avx512f")]
43420#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43421#[cfg_attr(test, assert_instr(vcvttss2si, SAE = 8))]
43422#[rustc_legacy_const_generics(1)]
43423pub fn _mm_cvtt_roundss_si32<const SAE: i32>(a: __m128) -> i32 {
43424    unsafe {
43425        static_assert_sae!(SAE);
43426        let a = a.as_f32x4();
43427        vcvttss2si(a, SAE)
43428    }
43429}
43430
43431/// Convert the lower single-precision (32-bit) floating-point element in a to a 32-bit integer with truncation, and store the result in dst.\
43432/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
43433///
43434/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvtt_roundss_i32&expand=1934)
43435#[inline]
43436#[target_feature(enable = "avx512f")]
43437#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43438#[cfg_attr(test, assert_instr(vcvttss2si, SAE = 8))]
43439#[rustc_legacy_const_generics(1)]
43440pub fn _mm_cvtt_roundss_i32<const SAE: i32>(a: __m128) -> i32 {
43441    unsafe {
43442        static_assert_sae!(SAE);
43443        let a = a.as_f32x4();
43444        vcvttss2si(a, SAE)
43445    }
43446}
43447
43448/// Convert the lower single-precision (32-bit) floating-point element in a to an unsigned 32-bit integer with truncation, and store the result in dst.\
43449/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
43450///
43451/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvtt_roundss_u32&expand=1938)
43452#[inline]
43453#[target_feature(enable = "avx512f")]
43454#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43455#[cfg_attr(test, assert_instr(vcvttss2usi, SAE = 8))]
43456#[rustc_legacy_const_generics(1)]
43457pub fn _mm_cvtt_roundss_u32<const SAE: i32>(a: __m128) -> u32 {
43458    unsafe {
43459        static_assert_sae!(SAE);
43460        let a = a.as_f32x4();
43461        vcvttss2usi(a, SAE)
43462    }
43463}
43464
43465/// Convert the lower single-precision (32-bit) floating-point element in a to a 32-bit integer with truncation, and store the result in dst.
43466///
43467/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttss_i32&expand=2022)
43468#[inline]
43469#[target_feature(enable = "avx512f")]
43470#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43471#[cfg_attr(test, assert_instr(vcvttss2si))]
43472pub fn _mm_cvttss_i32(a: __m128) -> i32 {
43473    unsafe { vcvttss2si(a.as_f32x4(), _MM_FROUND_CUR_DIRECTION) }
43474}
43475
43476/// Convert the lower single-precision (32-bit) floating-point element in a to an unsigned 32-bit integer with truncation, and store the result in dst.
43477///
43478/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttss_u32&expand=2026)
43479#[inline]
43480#[target_feature(enable = "avx512f")]
43481#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43482#[cfg_attr(test, assert_instr(vcvttss2usi))]
43483pub fn _mm_cvttss_u32(a: __m128) -> u32 {
43484    unsafe { vcvttss2usi(a.as_f32x4(), _MM_FROUND_CUR_DIRECTION) }
43485}
43486
43487/// Convert the lower double-precision (64-bit) floating-point element in a to a 32-bit integer with truncation, and store the result in dst.\
43488/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
43489///
43490/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtt_roundsd_si32&expand=1930)
43491#[inline]
43492#[target_feature(enable = "avx512f")]
43493#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43494#[cfg_attr(test, assert_instr(vcvttsd2si, SAE = 8))]
43495#[rustc_legacy_const_generics(1)]
43496pub fn _mm_cvtt_roundsd_si32<const SAE: i32>(a: __m128d) -> i32 {
43497    unsafe {
43498        static_assert_sae!(SAE);
43499        let a = a.as_f64x2();
43500        vcvttsd2si(a, SAE)
43501    }
43502}
43503
43504/// Convert the lower double-precision (64-bit) floating-point element in a to a 32-bit integer with truncation, and store the result in dst.\
43505/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
43506///
43507/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtt_roundsd_i32&expand=1928)
43508#[inline]
43509#[target_feature(enable = "avx512f")]
43510#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43511#[cfg_attr(test, assert_instr(vcvttsd2si, SAE = 8))]
43512#[rustc_legacy_const_generics(1)]
43513pub fn _mm_cvtt_roundsd_i32<const SAE: i32>(a: __m128d) -> i32 {
43514    unsafe {
43515        static_assert_sae!(SAE);
43516        let a = a.as_f64x2();
43517        vcvttsd2si(a, SAE)
43518    }
43519}
43520
43521/// Convert the lower double-precision (64-bit) floating-point element in a to an unsigned 32-bit integer with truncation, and store the result in dst.\
43522/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
43523///
43524/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_cvtt_roundsd_u32&expand=1932)
43525#[inline]
43526#[target_feature(enable = "avx512f")]
43527#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43528#[cfg_attr(test, assert_instr(vcvttsd2usi, SAE = 8))]
43529#[rustc_legacy_const_generics(1)]
43530pub fn _mm_cvtt_roundsd_u32<const SAE: i32>(a: __m128d) -> u32 {
43531    unsafe {
43532        static_assert_sae!(SAE);
43533        let a = a.as_f64x2();
43534        vcvttsd2usi(a, SAE)
43535    }
43536}
43537
43538/// Convert the lower double-precision (64-bit) floating-point element in a to a 32-bit integer with truncation, and store the result in dst.
43539///
43540/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttsd_i32&expand=2015)
43541#[inline]
43542#[target_feature(enable = "avx512f")]
43543#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43544#[cfg_attr(test, assert_instr(vcvttsd2si))]
43545pub fn _mm_cvttsd_i32(a: __m128d) -> i32 {
43546    unsafe { vcvttsd2si(a.as_f64x2(), _MM_FROUND_CUR_DIRECTION) }
43547}
43548
43549/// Convert the lower double-precision (64-bit) floating-point element in a to an unsigned 32-bit integer with truncation, and store the result in dst.
43550///
43551/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttsd_u32&expand=2020)
43552#[inline]
43553#[target_feature(enable = "avx512f")]
43554#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43555#[cfg_attr(test, assert_instr(vcvttsd2usi))]
43556pub fn _mm_cvttsd_u32(a: __m128d) -> u32 {
43557    unsafe { vcvttsd2usi(a.as_f64x2(), _MM_FROUND_CUR_DIRECTION) }
43558}
43559
43560/// Convert the unsigned 32-bit integer b to a single-precision (32-bit) floating-point element, store the result in the lower element of dst, and copy the upper 3 packed elements from a to the upper elements of dst.
43561///
43562/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtu32_ss&expand=2032)
43563#[inline]
43564#[target_feature(enable = "avx512f")]
43565#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43566#[cfg_attr(test, assert_instr(vcvtusi2ss))]
43567#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
43568pub const fn _mm_cvtu32_ss(a: __m128, b: u32) -> __m128 {
43569    unsafe {
43570        let b = b as f32;
43571        simd_insert!(a, 0, b)
43572    }
43573}
43574
43575/// Convert the unsigned 32-bit integer b to a double-precision (64-bit) floating-point element, store the result in the lower element of dst, and copy the upper element from a to the upper element of dst.
43576///
43577/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtu32_sd&expand=2031)
43578#[inline]
43579#[target_feature(enable = "avx512f")]
43580#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43581#[cfg_attr(test, assert_instr(vcvtusi2sd))]
43582#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
43583pub const fn _mm_cvtu32_sd(a: __m128d, b: u32) -> __m128d {
43584    unsafe {
43585        let b = b as f64;
43586        simd_insert!(a, 0, b)
43587    }
43588}
43589
43590/// Compare the lower single-precision (32-bit) floating-point element in a and b based on the comparison operand specified by imm8, and return the boolean result (0 or 1).\
43591/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
43592///
43593/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comi_round_ss&expand=1175)
43594#[inline]
43595#[target_feature(enable = "avx512f")]
43596#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43597#[cfg_attr(test, assert_instr(vcmp, IMM5 = 5, SAE = 4))] //should be vcomiss
43598#[rustc_legacy_const_generics(2, 3)]
43599pub fn _mm_comi_round_ss<const IMM5: i32, const SAE: i32>(a: __m128, b: __m128) -> i32 {
43600    unsafe {
43601        static_assert_uimm_bits!(IMM5, 5);
43602        static_assert_mantissas_sae!(SAE);
43603        let a = a.as_f32x4();
43604        let b = b.as_f32x4();
43605        vcomiss(a, b, IMM5, SAE)
43606    }
43607}
43608
43609/// Compare the lower double-precision (64-bit) floating-point element in a and b based on the comparison operand specified by imm8, and return the boolean result (0 or 1).\
43610/// Exceptions can be suppressed by passing _MM_FROUND_NO_EXC in the sae parameter.
43611///
43612/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comi_round_sd&expand=1174)
43613#[inline]
43614#[target_feature(enable = "avx512f")]
43615#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43616#[cfg_attr(test, assert_instr(vcmp, IMM5 = 5, SAE = 4))] //should be vcomisd
43617#[rustc_legacy_const_generics(2, 3)]
43618pub fn _mm_comi_round_sd<const IMM5: i32, const SAE: i32>(a: __m128d, b: __m128d) -> i32 {
43619    unsafe {
43620        static_assert_uimm_bits!(IMM5, 5);
43621        static_assert_mantissas_sae!(SAE);
43622        let a = a.as_f64x2();
43623        let b = b.as_f64x2();
43624        vcomisd(a, b, IMM5, SAE)
43625    }
43626}
43627
43628/// Equal
43629#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43630pub const _MM_CMPINT_EQ: _MM_CMPINT_ENUM = 0x00;
43631/// Less-than
43632#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43633pub const _MM_CMPINT_LT: _MM_CMPINT_ENUM = 0x01;
43634/// Less-than-or-equal
43635#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43636pub const _MM_CMPINT_LE: _MM_CMPINT_ENUM = 0x02;
43637/// False
43638#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43639pub const _MM_CMPINT_FALSE: _MM_CMPINT_ENUM = 0x03;
43640/// Not-equal
43641#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43642pub const _MM_CMPINT_NE: _MM_CMPINT_ENUM = 0x04;
43643/// Not less-than
43644#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43645pub const _MM_CMPINT_NLT: _MM_CMPINT_ENUM = 0x05;
43646/// Not less-than-or-equal
43647#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43648pub const _MM_CMPINT_NLE: _MM_CMPINT_ENUM = 0x06;
43649/// True
43650#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43651pub const _MM_CMPINT_TRUE: _MM_CMPINT_ENUM = 0x07;
43652
43653/// interval [1, 2)
43654#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43655pub const _MM_MANT_NORM_1_2: _MM_MANTISSA_NORM_ENUM = 0x00;
43656/// interval [0.5, 2)
43657#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43658pub const _MM_MANT_NORM_P5_2: _MM_MANTISSA_NORM_ENUM = 0x01;
43659/// interval [0.5, 1)
43660#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43661pub const _MM_MANT_NORM_P5_1: _MM_MANTISSA_NORM_ENUM = 0x02;
43662/// interval [0.75, 1.5)
43663#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43664pub const _MM_MANT_NORM_P75_1P5: _MM_MANTISSA_NORM_ENUM = 0x03;
43665
43666/// sign = sign(SRC)
43667#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43668pub const _MM_MANT_SIGN_SRC: _MM_MANTISSA_SIGN_ENUM = 0x00;
43669/// sign = 0
43670#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43671pub const _MM_MANT_SIGN_ZERO: _MM_MANTISSA_SIGN_ENUM = 0x01;
43672/// DEST = NaN if sign(SRC) = 1
43673#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43674pub const _MM_MANT_SIGN_NAN: _MM_MANTISSA_SIGN_ENUM = 0x02;
43675
43676#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43677pub const _MM_PERM_AAAA: _MM_PERM_ENUM = 0x00;
43678#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43679pub const _MM_PERM_AAAB: _MM_PERM_ENUM = 0x01;
43680#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43681pub const _MM_PERM_AAAC: _MM_PERM_ENUM = 0x02;
43682#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43683pub const _MM_PERM_AAAD: _MM_PERM_ENUM = 0x03;
43684#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43685pub const _MM_PERM_AABA: _MM_PERM_ENUM = 0x04;
43686#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43687pub const _MM_PERM_AABB: _MM_PERM_ENUM = 0x05;
43688#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43689pub const _MM_PERM_AABC: _MM_PERM_ENUM = 0x06;
43690#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43691pub const _MM_PERM_AABD: _MM_PERM_ENUM = 0x07;
43692#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43693pub const _MM_PERM_AACA: _MM_PERM_ENUM = 0x08;
43694#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43695pub const _MM_PERM_AACB: _MM_PERM_ENUM = 0x09;
43696#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43697pub const _MM_PERM_AACC: _MM_PERM_ENUM = 0x0A;
43698#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43699pub const _MM_PERM_AACD: _MM_PERM_ENUM = 0x0B;
43700#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43701pub const _MM_PERM_AADA: _MM_PERM_ENUM = 0x0C;
43702#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43703pub const _MM_PERM_AADB: _MM_PERM_ENUM = 0x0D;
43704#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43705pub const _MM_PERM_AADC: _MM_PERM_ENUM = 0x0E;
43706#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43707pub const _MM_PERM_AADD: _MM_PERM_ENUM = 0x0F;
43708#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43709pub const _MM_PERM_ABAA: _MM_PERM_ENUM = 0x10;
43710#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43711pub const _MM_PERM_ABAB: _MM_PERM_ENUM = 0x11;
43712#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43713pub const _MM_PERM_ABAC: _MM_PERM_ENUM = 0x12;
43714#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43715pub const _MM_PERM_ABAD: _MM_PERM_ENUM = 0x13;
43716#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43717pub const _MM_PERM_ABBA: _MM_PERM_ENUM = 0x14;
43718#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43719pub const _MM_PERM_ABBB: _MM_PERM_ENUM = 0x15;
43720#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43721pub const _MM_PERM_ABBC: _MM_PERM_ENUM = 0x16;
43722#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43723pub const _MM_PERM_ABBD: _MM_PERM_ENUM = 0x17;
43724#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43725pub const _MM_PERM_ABCA: _MM_PERM_ENUM = 0x18;
43726#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43727pub const _MM_PERM_ABCB: _MM_PERM_ENUM = 0x19;
43728#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43729pub const _MM_PERM_ABCC: _MM_PERM_ENUM = 0x1A;
43730#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43731pub const _MM_PERM_ABCD: _MM_PERM_ENUM = 0x1B;
43732#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
43733pub const _MM_PERM_ABDA: _MM_PERM_ENUM = 0x1C;
43734#[stable(feature = "stdarch_x86_avx512", since = "1.89")]